Skip to content

Heading

Typography component for headings with consistent sizing. Supports 6 levels with optional semantic override.

Also known as: title, headline, header text, h1-h6

View in Storybook

When to use

  • Rendering page, section, or card titles with consistent typography.
  • When you need visual size independent of the semantic HTML level.

Import

tsx
import { Heading } from '@vacano/ui'

Usage

tsx
<Heading>Frontend Radio</Heading>

Levels

Each level maps to a font size: h1 (32px), h2 (24px), h3 (18px), h4 (16px), h5 (14px), h6 (12px).

tsx
<Heading level={1}>Heading 1</Heading>
<Heading level={2}>Heading 2</Heading>
<Heading level={3}>Heading 3</Heading>
<Heading level={4}>Heading 4</Heading>
<Heading level={5}>Heading 5</Heading>
<Heading level={6}>Heading 6</Heading>

Semantic override

Use as to render a different HTML tag while keeping the visual size from level.

tsx
{/* Looks like h1 (32px), but renders as <h3> for SEO */}
<Heading level={1} as={3}>Large but semantic h3</Heading>

{/* Looks like h4 (16px), but renders as <h2> */}
<Heading level={4} as={2}>Small but semantic h2</Heading>

Props

PropTypeDefaultDescription
childrenReactNoderequiredHeading text
level1 | 2 | 3 | 4 | 5 | 63Visual size level
as1 | 2 | 3 | 4 | 5 | 6-Override HTML tag (h1-h6). Defaults to level value
refRef<HTMLHeadingElement>-Forwarded ref
classNamestring-CSS class name

Size reference

LevelFont sizeLine height
132px1.2
224px1.25
318px1.3
416px1.4
514px1.4
612px1.5
  • Overline - Eyebrow label, often placed above Heading

Released under the MIT License.