Skip to content
THE COMPONENT LIBRARY
Skip to content

Component reference

Prose

Long-form editorial content with shared typography.

Preview

Live preview

Changes apply to this preview only.

Why a shared design system wins

A design system is a contract. It fixes the vocabulary before teams write screens, so a button means the same thing on the web, in the playground and in the native application. The contract is made of tokens, components and documented behaviour.

Read the token pipeline first, then the component rules. The data-pimolu-theme and data-pimolu-style attributes are the only switches a consumer needs.

What the wrapper covers

  • Headings from h1 to h6
  • Paragraphs, strong, emphasis and links
  • Ordered lists, unordered lists and nested lists
  • Blockquotes, inline code and labelled code blocks
  • Tables with captions, dividers, images and figure captions

Release checklist

  1. Run pnpm build:all so the preset assets exist.
  2. Run the React tests and the web-style tests.
  3. Check the page in light and dark, in all six presets.

Automated tests secure behaviour, not visual quality. Open the page and look at it.

Install

pnpm add @pimolu/react
pnpm add -D @pimolu/web-styles

# then, at the root of the app
import "@pimolu/web-styles/styles.css";

Press Ctrl + K in the playground to jump between component pages.

Token summary

The semantic tokens every article inherits.
TokenLightDark
foregroundslate.950slate.50
surfaceslate.50slate.900
primaryindigo.600indigo.400

An original Pimolu emblem study in a lavender architectural studio.
Images stay fluid and inherit the same radius as the surrounding surfaces.

Inline details

Nested lists keep their markers. A link inside a paragraph is underlined, and inline code stays monospaced without breaking the line height.

  • Tokens
    • Primitive colours and spacing
    • Semantic aliases
  • Components
    • Web styles
    • React source

Last reviewed on 21 October 2026 by the documentation group.

Width adapts to the available space

More examples

Different configurations and compositions using the real Pimolu API. Each preview runs independently and follows the site appearance.

Technical release note

Semantic article content with headings, inline code, a list and a quotation.

Open preview

Sizes

sm, md and lg set the base font size; the headings and spacing scale with it because they are expressed in em.

Open preview

Short excerpt

The wrapper can be used for a comment, a note or an excerpt without changing any global element styles.

Open preview

Usage

Use Prose for content flow while keeping controls as real Pimolu components.

API reference

Generated from the public TypeScript declarations. Native HTML attributes are inherited where the component extends them; this reference includes Pimolu props and selected common native attributes.

PimoluProseProps

Type source
PimoluProseProps public API
NameTypeDefaultDescription
asElementType | undefined"div"Element rendered by the wrapper. Defaults to "div".
sizePimoluProseSize | undefined"md"Base text size. Defaults to "md".
childrenRequiredReactNode—Public Pimolu prop; see the source declaration for details.
classNamestring | undefined—Public Pimolu prop; see the source declaration for details.
defaultValuestring | number | readonly string[] | undefined—Standard React/HTML attribute.
styleCSSProperties | undefined—Standard React/HTML attribute.
aria-labelstring | undefined—Defines a string value that labels the current element.
onChangeChangeEventHandler<HTMLElement, Element> | undefined—Standard React/HTML attribute.
onClickMouseEventHandler<HTMLElement> | undefined—Standard React/HTML attribute.
as

ElementType | undefined

Default: "div"

Element rendered by the wrapper. Defaults to "div".

size

PimoluProseSize | undefined

Default: "md"

Base text size. Defaults to "md".

childrenRequired

ReactNode

No default extracted.

Public Pimolu prop; see the source declaration for details.

className

string | undefined

No default extracted.

Public Pimolu prop; see the source declaration for details.

defaultValue

string | number | readonly string[] | undefined

No default extracted.

Standard React/HTML attribute.

style

CSSProperties | undefined

No default extracted.

Standard React/HTML attribute.

aria-label

string | undefined

No default extracted.

Defines a string value that labels the current element.

onChange

ChangeEventHandler<HTMLElement, Element> | undefined

No default extracted.

Standard React/HTML attribute.

onClick

MouseEventHandler<HTMLElement> | undefined

No default extracted.

Standard React/HTML attribute.

Accessibility

  • Maintain heading order and meaningful link text, and verify code/table overflow at narrow widths.
Read the accessibility guide →