Typography Components
Text
The primary component for rendering all text content. It provides props to control typographic properties like size, weight, color, and alignment.
Basic usage
Text renders paragraph text with default styling.
Compose interfaces with VaneUI components. Text provides consistent typography across your application.
<Text>Compose interfaces with VaneUI components. Text provides consistent typography across your application.</Text>Sizes
Text comes in different sizes: xs, sm, md (default), lg, xl.
Extra small text
Small text for captions
Medium text (default)
Large text for emphasis
Extra large text
<Col> <Text xs>Extra small text</Text> <Text sm>Small text for captions</Text> <Text>Medium text (default)</Text> <Text lg>Large text for emphasis</Text> <Text xl>Extra large text</Text></Col>Appearances
Text supports explicit color appearances: primary, accent, secondary, tertiary, success, danger, warning, info. Use these to override the default inheritAppearance behavior.
Primary text for important content
Accent text for highlights
Secondary text for supporting content
Tertiary text for muted content
Success text for positive feedback
Danger text for errors or warnings
Warning text for cautionary messages
Info text for informational content
<Col> <Text primary>Primary text for important content</Text> <Text accent>Accent text for highlights</Text> <Text secondary>Secondary text for supporting content</Text> <Text tertiary>Tertiary text for muted content</Text> <Text success>Success text for positive feedback</Text> <Text danger>Danger text for errors or warnings</Text> <Text warning>Warning text for cautionary messages</Text> <Text info>Info text for informational content</Text></Col>Variants
Text never paints a background, so the variant does one thing here: it picks which colour of the appearance the text is painted in. outline, the default, uses the appearance's own colour, for text on a plain surface. filled uses the "on this fill" colour, for text 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> <Text info>outline info, on the page surface</Text> <Text danger>outline danger, on the page surface</Text> <Card info filled> <Text info filled>filled info, on a matching filled Card</Text> </Card> <Card danger filled> <Text danger filled>filled danger, on a matching filled Card</Text> </Card></Col>Use filled on a plain page and the text takes the colour meant to sit on the fill, which is close to the page itself. Wrap it in a matching surface, or leave the default inheritAppearance on and let it take the colour from whatever it sits in.
Inherit appearance (default)
Text defaults to the inheritAppearance appearance: it picks up its color from the parent via CSS cascade instead of applying its own. Set an explicit appearance to override.
Inherited Primary
This text inherits primary from the Card.
Inherited Success
Inherits success color automatically.
On a plain surface
Inherits the Card's own colour.
Explicit danger overrides inherit.
<Row flexWrap itemsStretch> <Card primary filled> <Text fontBold>Inherited Primary</Text> <Text>This text inherits primary from the Card.</Text> </Card> <Card success filled> <Text fontBold>Inherited Success</Text> <Text>Inherits success color automatically.</Text> </Card> <Card border secondary> <Text fontBold>On a plain surface</Text> <Text>Inherits the Card's own colour.</Text> <Text danger>Explicit danger overrides inherit.</Text> </Card></Row>An explicit appearance stops inheriting, so it has to read on the surface it lands on. Inside a filled Card, <Text danger> resolves to the outline danger colour, which is close in weight to the filled surface behind it.
Font weights
Control weight with fontThin, fontExtralight, fontLight, fontNormal, fontMedium, fontSemibold, fontBold, fontExtrabold, fontBlack.
Thin weight
Light weight
Normal weight
Medium weight
Semibold weight
Bold weight
Extra bold weight
Black weight
<Col> <Text fontThin>Thin weight</Text> <Text fontLight>Light weight</Text> <Text fontNormal>Normal weight</Text> <Text fontMedium>Medium weight</Text> <Text fontSemibold>Semibold weight</Text> <Text fontBold>Bold weight</Text> <Text fontExtrabold>Extra bold weight</Text> <Text fontBlack>Black weight</Text></Col>Font families
Switch font family with fontSans (default), fontSerif, fontMono.
Sans-serif font (default)
Serif font for editorial content
Monospace for code or technical content
<Col> <Text fontSans>Sans-serif font (default)</Text> <Text fontSerif>Serif font for editorial content</Text> <Text fontMono>Monospace for code or technical content</Text></Col>Italic, underline, line-through
Italic text for quotes or terms
Underlined text for emphasis
Line-through for deleted content
<Col> <Text italic>Italic text for quotes or terms</Text> <Text underline>Underlined text for emphasis</Text> <Text lineThrough>Line-through for deleted content</Text></Col>Text transform
Use uppercase, lowercase, capitalize.
Uppercase for labels
LOWERCASE NORMALIZED
capitalized words example
<Col> <Text uppercase>Uppercase for labels</Text> <Text lowercase>LOWERCASE NORMALIZED</Text> <Text capitalize>capitalized words example</Text></Col>Text alignment
Align text with textLeft (default), textCenter, textRight, textJustify. Text defaults to wFit, so set wFull to see alignment effects across the container.
Left aligned (default)
Center aligned
Right aligned
Justified text spreads to fill the line, distributing extra space between words across the full container width.
<Col> <Text wFull>Left aligned (default)</Text> <Text wFull textCenter>Center aligned</Text> <Text wFull textRight>Right aligned</Text> <Text wFull textJustify>Justified text spreads to fill the line, distributing extra space between words across the full container width.</Text></Col>Truncate and line clamp
Use truncate for single-line ellipsis, or lineClamp2/lineClamp3/lineClamp4/lineClamp5 for multi-line clamping.
Truncated single line of text that will be cut off with an ellipsis when it exceeds the container width.
Clamped to two lines. This release note covers the new size props, the revised default appearances, and the spacing changes that now scale with the size prop across every typography component in the library.
Clamped to three lines. The migration guide walks through each change in detail, from the renamed appearance props to the updated default margins, and explains how to update your existing components step by step so nothing renders differently after you upgrade to the latest version.
<Col> <Text wFull truncate>Truncated single line of text that will be cut off with an ellipsis when it exceeds the container width.</Text> <Text wFull lineClamp2>Clamped to two lines. This release note covers the new size props, the revised default appearances, and the spacing changes that now scale with the size prop across every typography component in the library.</Text> <Text wFull lineClamp3>Clamped to three lines. The migration guide walks through each change in detail, from the renamed appearance props to the updated default margins, and explains how to update your existing components step by step so nothing renders differently after you upgrade to the latest version.</Text></Col>Word break
Control how long unbreakable strings behave when they would overflow the container. breakWords wraps a long word onto the next line (overflow-wrap: break-word), breakAll breaks between any two characters, breakKeep prevents breaks in CJK text, and breakNormal resets to the default. This is the opposite of truncate: instead of hiding the overflow, the text wraps to fit.
Default: https://vaneui.com/docs/typography-components/text overflows.
breakWords: https://vaneui.com/docs/typography-components/text wraps.
breakAll: https://vaneui.com/docs/typography-components/text wraps.
<Col> <Text className="w-48 border border-gray-300 p-2"> Default: https://vaneui.com/docs/typography-components/text overflows. </Text> <Text breakWords className="w-48 border border-gray-300 p-2"> breakWords: https://vaneui.com/docs/typography-components/text wraps. </Text> <Text breakAll className="w-48 border border-gray-300 p-2"> breakAll: https://vaneui.com/docs/typography-components/text wraps. </Text></Col>Letter spacing
Control letter spacing with trackingTighter, trackingTight, trackingNormal, trackingWide, trackingWider, trackingWidest. Text defaults to a compact -0.011em tracking; trackingNormal resets it to 0.
Tighter letter spacing
Tight letter spacing
Normal letter spacing (default)
Wide letter spacing
Wider letter spacing
Widest letter spacing
<Col> <Text trackingTighter>Tighter letter spacing</Text> <Text trackingTight>Tight letter spacing</Text> <Text trackingNormal>Normal letter spacing (default)</Text> <Text trackingWide>Wide letter spacing</Text> <Text trackingWider>Wider letter spacing</Text> <Text trackingWidest>Widest letter spacing</Text></Col>Margins
Block typography (Text, Title, SectionTitle, PageTitle, Blockquote) accepts size-driven margin props: margin (all sides), marginX, marginY, marginT, and marginB. Text defaults to noMargin, so opt in where you need vertical rhythm outside a gap-based layout. The margin scales with the size prop. Side props compose: marginT marginB applies both. noMargin resets and wins.
No margin (default), sits flush.
Margin above and below, scales with size.
Another flush line.
<Col noGap> <Text>No margin (default), sits flush.</Text> <Text marginT marginB>Margin above and below, scales with size.</Text> <Text>Another flush line.</Text></Col>Text in context
Combining text properties for real-world use cases.
Product Title
Category • 4.5 ★ (128 reviews)
High-quality component library for building modern web applications with React and TypeScript.
$99.00
<Col> <Card> <Text lg fontBold>Product Title</Text> <Text secondary>Category • 4.5 ★ (128 reviews)</Text> <Text>High-quality component library for building modern web applications with React and TypeScript.</Text> <Text sm primary fontSemibold>$99.00</Text> </Card></Col>Text 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 |
More in Typography Components