Layout
Container, Stack, Cluster, Grid, Section and Surface primitives that compose any page without custom layout CSS.
35 components. Each page shows live examples with their HTML, the guidance from the README, the API read from the CSS, component tokens with their light and dark values, and the contrast pairs the build verified. Generated from components/manifest.json.
Container, Stack, Cluster, Grid, Section and Surface primitives that compose any page without custom layout CSS.
Tone (muted, subtle, human, digital) and reading measure for running copy — combine with the .type-* size classes instead of writing inline color or max-width.
One class that styles long-form HTML — articles, Markdown output, CMS content — with the full typographic system.
Wraps one form control with its label, hint and error message; Fieldset groups related controls under a legend.
One class for text inputs, textareas and selects, with a ≥3:1 control boundary, visible focus ring, and invalid/disabled/read-only states.
beta
A text input that suggests options as you type — accent-insensitive filtering, arrow-key navigation and a result count for screen readers, via membrane.js.
Checkbox and radio controls drawn in the brand style, inside a clickable .mp-choice label row with optional description.
An on/off toggle for settings that take effect immediately — a native checkbox with role="switch".
A contained unit — overline, serif title, body, footer, optional media — with standard, featured and flat variants and an accessible whole-card link.
A pill that names a topic or category, colored by register — human (terracotta), digital (teal) or neutral. Can be a link, a toggle, or removable.
A compact, uppercase, non-interactive label for status and metadata — info, success, warning, error, or a register tone.
A person as a warm-filtered photo or Fraunces initials; digital tone uses monospace for bots and systems. Groups overlap.
Blockquote with attribution in Fraunces italic; the pull variant renders the brand's signature phrases large and centered.
Inline code, keyboard keys, and always-dark code blocks with gate-checked syntax colors that also style Prism and highlight.js output.
A fading hairline between sections — or a full-width solid rule inside panels. Prefer whitespace first.
Data tables with a quiet uppercase header, tabular numerals, end-aligned numbers, compact/striped/interactive variants and a scrolling frame.
A headline metric — label, Fraunces numeral, and a delta whose arrow (trend) and color (sentiment) are set independently.
beta
A figure shell (title, legend, caption) and a CSS bar list — single, multi-series or stacked — colored by the validated --color-chart-* palette, with every value printed.
Sizes and colors an inline line-icon SVG from the --size-icon-* tokens (20/24/32/48px) and the register/status text colors.
An inline message about state — info, success, warning, error — or a human-register editorial note, with optional icon and actions.
Native <progress> bars (determinate or indeterminate, three sizes, register tones) and a spinner for short unmeasured waits.
Placeholder text lines, circles and blocks that hold a layout's shape while content loads; they pulse in place under reduced motion.
What a view shows before it has content — icon on a warm wash, Fraunces title, one sentence of guidance and the next action.
beta
A brief, polite confirmation of something the person just did — one live region per page, MembranePalette.toast() or a data-mp-toast button, auto-dismissed unless it's an error.
A short inverse-colored hint shown on hover and keyboard focus — CSS-only, hoverable, Escape-dismissible with membrane.js.
A modal built on native <dialog> — focus trapping, Escape and the backdrop come from the browser; header, body and footer slots.
Sticky translucent site header with brand, uppercase links (aria-current marks the active page) and an actions slot; collapses by its own width.
The path from site root to the current page, as an ordered list with decorative separators and aria-current on the last item.
WAI-ARIA tabs — underline or pill (segmented) style; aria-selected drives the visuals, membrane.js adds click and arrow-key behavior.
Expandable sections on native <details>/<summary> — no script, keyboard-ready, exclusive with a shared name, animated where supported.
Numbered page links with previous/next; aria-current marks the current page (teal pill), and narrow containers collapse to previous · current · next.
Progress through an ordered sequence — course modules, onboarding, a multi-page form — vertical or horizontal, with complete, current and upcoming steps.
beta
A list of actions in a native popover — opened by a popovertarget button, light-dismissed by the browser, arrow-key navigable with membrane.js.