https://framer.com/m/TextPro-UO8yfD.js

Io / UI Basics / TextPro

TextPro

TextPro renders text against the theme type scale rather than a fixed size, and handles truncation and alignment. Reach for it inside components and slots — page headings stay native so the document outline survives.

Content8 type steps5 weightstruncation

Examples

Live specimens for every control the component exposes.

Default

Content is a plain string rendered at the Body step in the theme font.

The quick brown fox

Type scale

styles picks one of the eight steps defined in the theme fontJSON, so text tracks the system rather than a hardcoded size.

H1

H1

LargeTitle

LargeTitle

Title

Title

Headline

Headline

Body

Body

Callout

Callout

Detail

Detail

Tiny

Tiny

Weight

weight maps to the theme font-weight tokens rather than raw numbers.

light

light

regular

regular

medium

medium

semibold

semibold

bold

bold

Colour

color takes a theme token, so text inverts correctly with the surface in dark mode.

Sample

Text/text-color

Sample

Text/text-secondary

Sample

Core/primary

Sample

Semantic/warning

Alignment

With sysAlign off, align controls the text inside a container wider than the line.

Aligned

align left

Aligned

align center

Aligned

align right

Truncation

truncate caps the text at a line count and adds an ellipsis, keeping cards on a grid.

A single line that runs past the edge of its container

truncate 1

Two lines of copy that run past the edge of the container before being cut

truncate 2

Full copy wraps as far as it needs to inside the container

no truncation

Sizing

sizing decides whether the text fills its container or shrinks to its content.

Hugs its content

fit

Fills the container

fill

Props

The controls exposed on the instance panel.

PropTypeBehaviour
contentstringThe text to render.
itemslotA rich-text or component child rendered in place of content.
stylesenumTheme type step: H1 · LargeTitle · Title · Headline · Body · Callout · Detail · Tiny.
weightenumlight · regular · medium · semibold · bold, from the theme weights.
colorcolorText colour. Takes a theme token.
sizingenumfill stretches to the container, fit hugs the content.
sysAlignbooleanUse the system default alignment instead of the align prop.
alignenumleft · center · right, when sysAlign is off.
truncatenumberLine count before an ellipsis. 0 disables truncation.
PropTypeBehaviour
contentstringThe text to render.
itemslotA rich-text or component child rendered in place of content.
stylesenumTheme type step: H1 · LargeTitle · Title · Headline · Body · Callout · Detail · Tiny.
weightenumlight · regular · medium · semibold · bold, from the theme weights.
colorcolorText colour. Takes a theme token.
sizingenumfill stretches to the container, fit hugs the content.
sysAlignbooleanUse the system default alignment instead of the align prop.
alignenumleft · center · right, when sysAlign is off.
truncatenumberLine count before an ellipsis. 0 disables truncation.

Usage

Guidance carried over from the component definition.

Reach for TextPro

Text must follow the theme type scale rather than a fixed size.

Multi-line copy needs an ellipsis at a set line count.

A slot needs consistently styled rich-text content.

Text should fill or hug its container on demand.

Reach for something else

The text is a page heading — native text keeps the h1/h2 outline.

The text must be editable inline on the canvas.

You need per-character or per-word text animation.

Io — UI Basics

Every specimen above is a live component instance. Colour, type and radius resolve from the project theme tokens.

io

An experiment in what a design system becomes when AI can consume it.

© 2026 io

Contact me

Create a free website with Framer, the website builder loved by startups, designers and agencies.