Every component and state exported from the visual packages. If something is exported and not on this page, that is a bug — see apps/gallery/README.md.

Button

Link mode

Heading

Heading level 1

Heading level 2

Heading level 3

Heading level 4

Heading level 5
Heading level 6

Default

Muted

Primary

Success

Destructive

Level 1, sized like a level 4

Badge

default
secondary
outline
success
destructive
warning
info
success-solid
destructive-solid
warning-solid
info-solid
Default size
Small size
Disabled

Icon

defaultmutedprimarysuccessdestructivewarninginfoaccent
xssmmdlgxl

Spinner

xssmmdlgxl

Input / TextArea / FormField

Markdown

Heading 1

Heading 2

Regular paragraph text with bold, italic, and inline code.

  • Bulleted list item one
  • Bulleted list item two

A blockquote for emphasis.

Column AColumn B
12

An external link opens in a new tab by default.

SectionHeading

Eyebrow text

Section heading title

Supporting description copy goes here.

FeatureCard

Fast

A short description of this feature.

Secure

A short description of this feature.

Card

Minimal card

Only the two required props plus a description.

Active card with metrics

Active, favorited, and carrying metric slots.

Active
14Issues
2.0.0Version
Repository

Grid variant

Grid variant, with a principal assigned.

Andy Chen
Principal

Detail variant

Repository narrative

Detail variant, with markdown body and aside actions.

Notes

  • First point
  • Second point

CodeBlock

greet.ts
export function greet(name: string) {
  return `Hello, ${name}`;
}

Panel

Static panel

Panel body content.

Toggle the header to collapse this.

HeroSplit

previewPosition="end" (default)

Subtitle line

HeroSplit title

Preview on the right -- the default previewPosition="end".

Operational
Preview slot

previewPosition="start"

Subtitle line

HeroSplit title

Preview on the left -- previewPosition="start" mirrors the layout.

Preview slot

previewVariant="overlay"

Subtitle line

HeroSplit title

previewVariant="overlay" -- the preview fills the section as a full-bleed background behind a single text column, with a scrim for contrast.

FormInput

Last typed value: (nothing yet)

LabelValue

Small
A single-line value
Medium
A single-line value
Large
A single-line value
Multi-line
Line one Line two Line three
Empty (placeholder)
Secret
tena••••••••••••••••••••
Password
••••••••••

TreeView

name:"@turbo-client-systems/ui"
version:"2.0.0"

AccountMenu

With photo, no alert -- click to open

Initials fallback, with an alert

No name/email -- generic glyph fallback

AuthHeader

The primary header for an authenticated app -- logo, an optional center slot (e.g. search), and an account slot (typically AccountMenu). Sticky by default, unlike Header.

Acme
Page content below the auth header

Hero

Eyebrow text

This is where a tagline goes

A sentence or two backing up the headline above.

Section

variant="default"

variant="alt"

variant="hero"

variant="cta"

variant="transparent"

layout="default" item A
item B
item C
layout="flexBetween" item A
item B
item C
layout="flexCenter" item A
item B
item C
layout="grid" item A
item B
item C
layout="twoColumn" item A
item B
item C
layout="stack" item A
item B
item C
container="default"
container="narrow"
container="compact"
container="full"

spacing="default"

spacing="large"

spacing="none"

MainLayout

Page content goes here

Toaster

Toaster is mounted once, at the root layout -- these buttons fire a real toast via the imperative toast() call; watch the bottom-right corner.

position -- each box below has its own contained Toaster (a CSS transform makes it a containing block for the toast's fixed positioning, so it stays inside the box instead of covering the real page)

position="corner"

position="mid"

position="banner"

FloatingActionButton

Drag it anywhere -- on release it snaps to whichever corner it's closest to, Vercel-toolbar style. A plain click (no real drag) opens the panel instead. Look for it floating over the whole page right now -- it's also this gallery's actual settings trigger, mounted once, below.

Theme (@turbo-client-systems/theme)

ThemeProvider is mounted once at the gallery's root layout. SettingsOverlay is a ready-made modal over it -- mode switching plus a color picker per token, primary/secondary first. The floating button in the corner of the page (see FloatingActionButton above) opens the same overlay -- drag it out of the way, or click it.

ContactForm (@turbo-client-systems/forms)

Working endpoint

Failing endpoint -- fill in the fields and submit to see the submitError banner

extraFields -- caller-defined fields, included in the submission with zero code changes on either end

ContactFormFields (@turbo-client-systems/forms)

Field-level validation errors

ContactFormSuccess (@turbo-client-systems/forms)

Thank You!

Your message has been received. We'll get back to you soon.

ContentPage (@turbo-client-systems/content-page)

Privacy Policy

The standard shape for a legal or long-form content page.

Last updated

20 August 2026

What we collect

A paragraph describing what gets collected.

How we use it

A paragraph describing how it gets used.

Back to home

WikiPageClient (@turbo-client-systems/docs-wiki)

Demo Wiki

A two-page demo manifest -- a real one comes from the build-wiki CLI.

docs/README.md

Welcome

This is a demo wiki. See the Guides page.

RoadmapPageClient (@turbo-client-systems/roadmap)

Roadmap

A demo roadmap.

Building the thing, one phase at a time.

Seed
2
Alpha
3
Beta

Milestones

1

Seed

Completed

Already shipped.

1 / 1 Steps100%
2

Alpha

In Progress

Building the foundation.

1 / 3 Steps33%
  • Core engine#1In Progress

    The mechanism the rest of the product runs on.

3

Beta

Planned

Open to real users.

0 / 1 Steps0%

Request Board

Ideas that haven't been scoped yet.

  • Dark mode toggle

    A manual override for the system-preference default.

UserStoriesPageClient (@turbo-client-systems/user-stories)

User Stories

Who it's for, not just what's next.

What This Is For

Every story here traces back to a persona's actual problem, not a feature someone thought was neat.

Who We're Building For

Click a persona to filter the stories below
MoSCoW PriorityClick a priority to filter the stories below
  • The demo doesn't show anything useful without it.
  • Expected soon, not blocking today.
  • Worth having, not urgent.
  • A deliberate, permanent no.

Every Story

4 stories
  • Prove it, don't promise it#42

    As Andy, I want to see proof at every turn, so I never have to take a vendor's word for it.

  • Keep an audit trailnot yet filed

    As Andy, I want a history of what changed and when, so I can answer questions later without re-deriving them.

  • Get through it fastnot yet filed

    As Eric, I want the fastest path through whatever's mine.

  • Custom branding on every exportnot yet filed

    As Eric, I want to put our logo on every exported document, even though it doesn't change what the document proves.