VaneUI

VaneUI

Typography Components

Text

The primary component for rendering all text content. It provides props to control typographic properties like size, weight, color, and alignment.

SourceEdit this page

Basic usage

Text renders paragraph text with default styling.

Compose interfaces with VaneUI components. Text provides consistent typography across your application.

react-icon
<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

react-icon
<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

react-icon
<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

react-icon
<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.

react-icon
<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

react-icon
<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

react-icon
<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

react-icon
<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

react-icon
<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.

react-icon
<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.

react-icon
<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.

react-icon
<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

react-icon
<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.

react-icon
<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

react-icon
<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

PropCategoryDefaultDescription
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
PropCategoryDefaultDescription
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