Typography Components
SectionTitle
A component for rendering headings of major sections within a page. It helps to create a clear and accessible document structure.
Basic usage
SectionTitle renders an <h2> heading for major section headings. It defaults to fontSemibold weight, fontHeading font family, inheritAppearance appearance, and left-aligned text.
Getting Started
<SectionTitle>Getting Started</SectionTitle>Sizes
Section titles come in five sizes: xs, sm, md (default), lg, xl.
Extra Small Section Title
Small Section Title
Medium Section Title (default)
Large Section Title
Extra Large Section Title
<Col> <SectionTitle xs>Extra Small Section Title</SectionTitle> <SectionTitle sm>Small Section Title</SectionTitle> <SectionTitle>Medium Section Title (default)</SectionTitle> <SectionTitle lg>Large Section Title</SectionTitle> <SectionTitle xl>Extra Large Section Title</SectionTitle></Col>Appearances
By default, SectionTitle uses the inheritAppearance appearance: it inherits color from its parent. Use explicit appearances like primary, secondary, success, warning, danger, info to override.
Primary Section Title
Secondary Section Title
Success Section Title
Warning Section Title
Danger Section Title
Info Section Title
<Col> <SectionTitle primary>Primary Section Title</SectionTitle> <SectionTitle secondary>Secondary Section Title</SectionTitle> <SectionTitle success>Success Section Title</SectionTitle> <SectionTitle warning>Warning Section Title</SectionTitle> <SectionTitle danger>Danger Section Title</SectionTitle> <SectionTitle info>Info Section Title</SectionTitle></Col>Variants
Headings never paint a background, so the variant only picks which colour of the appearance the heading is painted in. outline, the default, uses the appearance's own colour. filled uses the "on this fill" colour, for a heading sitting on a filled surface of the same appearance.
outline info, on the page surface
outline danger, on the page surface
filled info, on a matching filled Card
filled danger, on a matching filled Card
<Col> <SectionTitle info>outline info, on the page surface</SectionTitle> <SectionTitle danger>outline danger, on the page surface</SectionTitle> <Card info filled> <SectionTitle info filled>filled info, on a matching filled Card</SectionTitle> </Card> <Card danger filled> <SectionTitle danger filled>filled danger, on a matching filled Card</SectionTitle> </Card></Col>PageTitle vs SectionTitle vs Title
Three heading components for a clean semantic hierarchy.
Page Heading (h1)
Section Heading (h2)
Subsection Heading (h3)
<Col> <PageTitle>Page Heading (h1)</PageTitle> <SectionTitle>Section Heading (h2)</SectionTitle> <Title>Subsection Heading (h3)</Title></Col>Font weights
SectionTitle is fontSemibold by default. Override with any weight prop: fontThin, fontExtralight, fontLight, fontNormal, fontMedium, fontSemibold, fontBold, fontExtrabold, fontBlack.
Light Section Title
Normal Section Title
Medium Section Title
Semibold Section Title (default)
Bold Section Title
Black Section Title
<Col> <SectionTitle fontLight>Light Section Title</SectionTitle> <SectionTitle fontNormal>Normal Section Title</SectionTitle> <SectionTitle fontMedium>Medium Section Title</SectionTitle> <SectionTitle>Semibold Section Title (default)</SectionTitle> <SectionTitle fontBold>Bold Section Title</SectionTitle> <SectionTitle fontBlack>Black Section Title</SectionTitle></Col>Font families
Switch between fontSans, fontSerif, and fontMono font families.
Sans-serif Section Title
Serif Section Title
Monospace Section Title
<Col> <SectionTitle fontSans>Sans-serif Section Title</SectionTitle> <SectionTitle fontSerif>Serif Section Title</SectionTitle> <SectionTitle fontMono>Monospace Section Title</SectionTitle></Col>Italic
Use the italic prop for italic emphasis.
Italic Section Title
<SectionTitle italic>Italic Section Title</SectionTitle>Uppercase
Use the uppercase prop to render the title in all caps.
Uppercase Section Title
<SectionTitle uppercase>Uppercase Section Title</SectionTitle>Text alignment
SectionTitle is left-aligned by default. Use textCenter, textRight, or textJustify to change alignment.
Left Aligned (default)
Center Aligned
Right Aligned
<Col> <SectionTitle>Left Aligned (default)</SectionTitle> <SectionTitle textCenter>Center Aligned</SectionTitle> <SectionTitle textRight>Right Aligned</SectionTitle></Col>Custom HTML tag
Override the rendered tag with the tag prop when the visual style of SectionTitle is wanted but a different semantic level is required.
Rendered as h1
Rendered as h2 (default)
Rendered as h3
Rendered as h4
<Col> <SectionTitle tag="h1">Rendered as h1</SectionTitle> <SectionTitle>Rendered as h2 (default)</SectionTitle> <SectionTitle tag="h3">Rendered as h3</SectionTitle> <SectionTitle tag="h4">Rendered as h4</SectionTitle></Col>SectionTitle in a Section
SectionTitle is designed to head a <Section>. Use them together so the visual structure matches the semantic outline.
Installation
Install VaneUI using npm or yarn.
Usage
Import components and start building.
<Col> <Section> <SectionTitle>Installation</SectionTitle> <Text>Install VaneUI using npm or yarn.</Text> </Section> <Section> <SectionTitle>Usage</SectionTitle> <Text>Import components and start building.</Text> </Section></Col>SectionTitle in context
Section titles work well with other typography components in cards.
Product Features
Everything you need to build modern applications.
Performance
Optimized for speed and efficiency.
Accessibility
Built with ARIA best practices.
<Card> <SectionTitle lg primary>Product Features</SectionTitle> <Text secondary>Everything you need to build modern applications.</Text> <SectionTitle sm>Performance</SectionTitle> <Text>Optimized for speed and efficiency.</Text> <SectionTitle sm>Accessibility</SectionTitle> <Text>Built with ARIA best practices.</Text></Card>Section header pattern
Combine SectionTitle with Divider and content for a structured section.
Getting Started
Follow the steps below to set up your project.
Configuration
Customize the settings to match your requirements.
<Col> <SectionTitle primary>Getting Started</SectionTitle> <Divider /> <Text>Follow the steps below to set up your project.</Text> <SectionTitle primary>Configuration</SectionTitle> <Divider /> <Text>Customize the settings to match your requirements.</Text></Col>SectionTitle Props
| Prop | Category | Default | Description |
|---|---|---|---|
accent | Appearance | Accent color appearance (rose) | |
danger | Appearance | Danger color appearance (red) | |
info | Appearance | Info color appearance (cyan) | |
inheritAppearance | Appearance | ✓ | Inherit appearance from parent — suppresses own data-appearance/data-variant, uses parent's CSS variables |
primary | Appearance | Primary color appearance (gray) | |
secondary | Appearance | Secondary color appearance (gray) | |
success | Appearance | Success color appearance (green) | |
tertiary | Appearance | Tertiary color appearance | |
warning | Appearance | Warning color appearance (amber) | |
fontHeading | Font Family | ✓ | Heading font family (defaults to sans, customizable via --font-heading) — emits font-heading |
fontMono | Font Family | Monospace font family — emits font-mono | |
fontSans | Font Family | Sans-serif font family (default) — emits font-sans | |
fontSerif | Font Family | Serif font family — emits font-serif | |
italic | Font Style | Italic font style | |
notItalic | Font Style | Not italic (normal) font style | |
fontBlack | Font Weight | Black font weight (900) — emits font-black | |
fontBold | Font Weight | Bold font weight (700) — emits font-bold | |
fontExtrabold | Font Weight | Extra bold font weight (800) — emits font-extrabold | |
fontExtralight | Font Weight | Extra light font weight (200) — emits font-extralight | |
fontLight | Font Weight | Light font weight (300) — emits font-light | |
fontMedium | Font Weight | Medium font weight (500) — emits font-medium | |
fontNormal | Font Weight | Normal font weight (400) — emits font-normal | |
fontSemibold | Font Weight | ✓ | Semibold font weight (600) — emits font-semibold |
fontThin | Font Weight | Thin font weight (100) — emits font-thin | |
inheritColor | Inherit Color | Inherit text color from parent via CSS variable cascade (suppresses data-appearance emission) | |
noInheritColor | Inherit Color | Keep own text color; do not inherit from parent | |
inheritSize | Inherit Size | Inherit font-size and line-height from the nearest parent typography element | |
noInheritSize | Inherit Size | Keep own font-size; do not inherit from parent | |
trackingNormal | Letter Spacing | Normal letter spacing (0) | |
trackingTight | Letter Spacing | Tight letter spacing (-0.025em) | |
trackingTighter | Letter Spacing | Tighter letter spacing (-0.05em) | |
trackingWide | Letter Spacing | Wide letter spacing (0.025em) | |
trackingWider | Letter Spacing | Wider letter spacing (0.05em) | |
trackingWidest | Letter Spacing | Widest letter spacing (0.1em) | |
margin | Margin | Enable margin on all sides | |
marginB | Margin | Enable only bottom margin | |
marginT | Margin | Enable only top margin | |
marginX | Margin | Enable only horizontal (inline) margin | |
marginY | Margin | Enable only vertical (block) margin | |
noMargin | Margin | Disable margin (reset to 0) | |
lg | Size | Large size | |
md | Size | ✓ | Medium size (default) |
sm | Size | Small size | |
xl | Size | Extra large size | |
xs | Size | Extra small size | |
textCenter | Text Align | Align text to center | |
textEnd | Text Align | Align text to the reading-direction end (right in LTR, left in RTL) | |
textJustify | Text Align | Justify text | |
textLeft | Text Align | ✓ | Align text to left (physical side, does not flip under RTL) |
textRight | Text Align | Align text to right (physical side, does not flip under RTL) | |
textStart | Text Align | Align text to the reading-direction start (left in LTR, right in RTL) | |
lineThrough | Text Decoration | Add strikethrough/line-through decoration across text | |
noUnderline | Text Decoration | Remove ALL text-decoration — underline, line-through, and overline (text-decoration: none) | |
overline | Text Decoration | Add overline decoration above text | |
underline | Text Decoration | Add underline decoration below text | |
capitalize | Text Transform | Capitalize first letter of each word | |
lowercase | Text Transform | Transform text to lowercase | |
normalCase | Text Transform | Normal text case (no transformation) | |
uppercase | Text Transform | Transform text to uppercase | |
lineClamp2 | Truncate | Truncate at 2 lines with ellipsis | |
lineClamp3 | Truncate | Truncate at 3 lines with ellipsis | |
lineClamp4 | Truncate | Truncate at 4 lines with ellipsis | |
lineClamp5 | Truncate | Truncate at 5 lines with ellipsis | |
noTruncate | Truncate | Remove truncation | |
truncate | Truncate | Single line truncation with ellipsis | |
filled | Variant | Filled variant - solid background with contrasting text color | |
ghost | Variant | Ghost variant - transparent background, no border, appearance-colored text, tinted hover background | |
outline | Variant | ✓ | Outline variant - transparent background with border and colored text (default) |
breakAll | Word Break | Break between any two characters - word-break: break-all | |
breakKeep | Word Break | Do not break CJK text - word-break: keep-all | |
breakNormal | Word Break | Reset breaking - overflow-wrap and word-break normal | |
breakWords | Word Break | Break long words to prevent overflow - overflow-wrap: break-word |
Layout & utility props (gap, padding, hide, items, justify, ...) — documented on Common Props
| Prop | Category | Default | Description |
|---|---|---|---|
cursorDefault | Cursor | Default cursor - standard arrow | |
cursorMove | Cursor | Move cursor - indicates draggable element | |
cursorNone | Cursor | No cursor - hides the cursor | |
cursorNotAllowed | Cursor | Not-allowed cursor - indicates disabled state | |
cursorPointer | Cursor | Pointer cursor - indicates clickable element | |
cursorText | Cursor | Text cursor - indicates selectable text | |
cursorWait | Cursor | Wait cursor - indicates loading/processing | |
block | Display | Block display - takes full width, new line | |
contents | Display | Contents display - element's box is removed, children display as if parent didn't exist | |
flex | Display | Flex display - flexbox container | |
grid | Display | Grid display - CSS grid container | |
hidden | Display | Hidden display - element is not visible | |
inline | Display | Inline display - flows with text | |
inlineBlock | Display | Inline-block display - inline but with block properties | |
inlineFlex | Display | Inline-flex display - inline flexbox container | |
inlineGrid | Display | Inline-grid display - inline grid container | |
table | Display | Table display - behaves like table element | |
tableCell | Display | Table-cell display - behaves like td element | |
hAuto | Height | Set height to auto | |
hFit | Height | Set height to fit-content | |
hFull | Height | Set height to 100% | |
hScreen | Height | Set height to 100vh (viewport height), removes max-height constraint | |
desktopHide | Hide | Hide element on desktop devices and below (max-desktop: 80rem) | |
mobileHide | Hide | Hide element on mobile devices and below (max-mobile: 48rem) | |
tabletHide | Hide | Hide element on tablet devices and below (max-tablet: 64rem) | |
itemsBaseline | Items | Align items to baseline | |
itemsCenter | Items | Align items to center | |
itemsEnd | Items | Align items to end (bottom/right) | |
itemsStart | Items | Align items to start (top/left) | |
itemsStretch | Items | Stretch items to fill container | |
justifyAround | Justify | Distribute items with space around them | |
justifyBaseline | Justify | Align items along their baseline on main axis | |
justifyBetween | Justify | Distribute items with space between them | |
justifyCenter | Justify | Center items along the main axis | |
justifyEnd | Justify | Pack items toward the end of the main axis | |
justifyEvenly | Justify | Distribute items with equal space around them | |
justifyStart | Justify | Pack items toward the start of the main axis | |
justifyStretch | Justify | Stretch items to fill the main axis | |
overflowAuto | Overflow | Auto overflow - show scrollbars if needed | |
overflowClip | Overflow | Clip overflow - hard clip without scrollbars | |
overflowHidden | Overflow | Hidden overflow - clip content without scrollbars | |
overflowScroll | Overflow | Scroll overflow - always show scrollbars | |
overflowVisible | Overflow | Visible overflow - content extends beyond bounds | |
overflowXAuto | Overflow | Auto overflow on X-axis only | |
overflowXClip | Overflow | Clip overflow on X-axis only | |
overflowXHidden | Overflow | Hidden overflow on X-axis only | |
overflowXScroll | Overflow | Scroll overflow on X-axis only | |
overflowXVisible | Overflow | Visible overflow on X-axis only | |
overflowYAuto | Overflow | Auto overflow on Y-axis only | |
overflowYClip | Overflow | Clip overflow on Y-axis only | |
overflowYHidden | Overflow | Hidden overflow on Y-axis only | |
overflowYScroll | Overflow | Scroll overflow on Y-axis only | |
overflowYVisible | Overflow | Visible overflow on Y-axis only | |
absolute | Position | Absolute positioning | |
fixed | Position | Fixed positioning | |
relative | Position | Relative positioning | |
static | Position | Static positioning | |
sticky | Position | Sticky positioning | |
responsiveSizing | Responsive Sizing | ✓ | Enable responsive sizing - uses breakpoint-specific classes for font size, padding, and gap |
whitespaceBreakSpaces | Whitespace | Preserve whitespace incl. trailing spaces, wrap text (white-space: break-spaces) | |
whitespaceNormal | Whitespace | Normal wrapping - default browser behavior | |
whitespaceNowrap | Whitespace | No wrap - text stays on single line | |
whitespacePre | Whitespace | Preserve whitespace and line breaks | |
whitespacePreLine | Whitespace | Preserve line breaks, collapse spaces, wrap text | |
whitespacePreWrap | Whitespace | Preserve whitespace, wrap text | |
wAuto | Width | Set width to auto | |
wFit | Width | ✓ | Set width to fit-content |
wFull | Width | Set width to 100% | |
wScreen | Width | Set width to 100vw (viewport width), removes max-width constraint |