Wrap the HTML a Markdown or rich-text renderer gives you in Prose: headings, paragraphs, lists, links, quotes, code, tables, rules and images take the scale without classes of their own.
import { Heading, Prose, Text } from "@booleanpress/ui/typography"
export function HelpArticle({ html }: { html: string }) {
return (
<>
<Heading level={1}>Moving to a new mailer</Heading>
<Text size="lg" tone="muted">What changes, and what stays the same.</Text>
<Prose dangerouslySetInnerHTML={{ __html: html }} />
</>
)
}
The scale is the visual target's documentation, in Inter: h1 30/36 regular, h2 20/28, h3 18/28, h4 16/24, h5 14/21 and h6 12/18 medium, in the heading colour; running text in Prose is 16/24 and text in components 14/21. Inside Prose, paragraphs are 16 px apart, headings sit 4 px above their text with 56, 32 or 24 px above them, list items are 6 px apart, and links are underlined.
Heading renders h1 to h6 from level (2 by default); size draws it at another level's size, so the outline and the look can differ. Text renders a p (asChild for a span) with size xs, sm (default), base or lg, a tone and a weight. Blockquote and InlineCode match Prose's quotes and code. Prose styles every heading, list and link inside it, so keep other components beside it rather than inside.