# Text The system’s paragraph, on the second rung of the ink ladder. - Group: Display - Import: `import { Text } from '@misoto22/design'` - Page: https://ui.misoto22.com/components/text/ - Related: heading, article, markdown ## When to reach for it One paragraph, or one run of text, outside a reading column. A whole column of prose is an Article. ## Anatomy - **Box** (required) — The element `as` names — a
unless told otherwise. It carries the size, the tone and margin: 0, so the spacing between blocks belongs to the surface rather than to the paragraph. - **Type step** (required) — size, one of four: xs, sm, base and lead. lead is --fs-item, the bottom rung of the heading ladder, and is the standfirst that carries a piece. - **Ink step** (required) — tone, one of three, because the ink ladder has three rungs: body is --ink-2, strong is --ink, muted is --ink-3-aa. ## Best practices ### Do - Leave tone alone for body copy. The default is --ink-2 on purpose: a page whose paragraphs are all full-strength ink has spent the top of the ladder on its body text and has nothing left for the headings. - Use as="span" for a run inside a sentence. A
nested inside a
is not nesting — the HTML parser closes the outer one and you get two paragraphs and a broken layout. - Reach for size="lead" for the standfirst under a title, and stop there. It is --fs-item, the same step an in-card title uses; anything larger is a heading that has not admitted it. ### Don’t - Do not set spacing on it. Every Text is margin: 0, so a stack of them inside a plain
at --fs-item is invisible to a heading list. ## Accessibility - as changes the element and nothing else, so the markup can say what the content is without the look changing under it. - Every tone is an AA-safe rung; the muted step is --ink-3-aa rather than the translucent --ink-3. ## Text A paragraph, or a run of text that wants the system's voice. The step between `Article` and raw JSX. `Article` styles a whole reading column from element selectors and is the right answer for a post; this is for the single paragraph that is NOT in a column — a card's description, a dialog's explanation, the line under an empty state. The default tone is `body` (`--ink-2`), not `--ink`. A page whose paragraphs are all full-strength ink has spent the top of the ladder on its body copy and has nothing left for the headings, which is the single most common way a monochrome page loses its hierarchy. ### Props - `children` — `ReactNode`. - `size` — `TextSize` default `'base'`. Which rung of the type scale. See TextSize. - `tone` — `TextTone` default `'body'`. Which rung of the ink ladder. See TextTone. - `as` — `TextElement` default `'p'`. The element, and ONLY the element. Changing it changes what the markup means — a `span` inside a sentence, an `li` inside a list someone else opened — and changes nothing about the look. That separation is the whole point: the alternative is a `
` nested inside a `
`, which the HTML parser silently splits into two, or a paragraph faked out of a `