Skip to content

The kit

Component gallery

All 25 components across 14 categories, rendered live in the current theme. Toggle the theme in the header to see any of them flip. Open a component for its light + dark side-by-side, variant matrix and source.

Primitives

Button, Input, Label, Card, Table, Badge — every primitive in one place, every variant on screen.

Button

Input + Label

Badge

DefaultSecondaryDestructiveOutline

Card

Card title
Card description goes here.

Card content — any React node can go here.

Table

A simple data table demo.
NameStatusRole
AliceActiveAdmin
BobInvitedMember
CarolPendingViewer

Form controls

Select, Checkbox, Radio group, Switch, Slider, Textarea — every input on Base UI primitives.

60

Advanced inputs

Toggle, Toggle group, Number field, Toolbar, Sheet, Rating, Tag input, Input OTP.

Toggle

Toggle group

Toolbar

Rating

astroreact

Sheet (drawer)

File upload

Drag files here or browse

Max 5.0 MB per file

Date picker, Date range picker, Time picker, Color picker, Editable, Password input, Clipboard, Toggle group (segmented).

Date picker

Date range picker

Color picker

Editable (click to rename)

Production API key

Toggle group — segmented (sliding indicator)

Navigation & menus

Combobox, Command palette (⌘K), Navigation menu, Menubar, Stepper.

Command palette

Navigation menu

Menubar

Stepper

  1. Account
  2. 2Profile
  3. 3Review

Compound components

Modal dialog on Base UI primitive — accessible, dismissible by ESC + backdrop.

Tabbed panels on Base UI Tabs primitive.

Overview
A summary of your project status.

Everything looks good. No action required.

Transient notification using Base UI Toast primitive + createToastManager.

Compound form on Base UI Field + react-hook-form + Zod. Single island because compound state.

We'll never share your email with anyone.

Minimum 8 characters.

Overlays

Tooltip, Popover, Alert dialog, Hover card, Context menu — all on Base UI portals.

Right-click me

Disclosure & layout

Accordion, Collapsible, Avatar, Skeleton, Separator, Scroll area, Aspect ratio.

Accordion

An issue-driven web scaffold on Astro + React + Base UI.

Collapsible

Avatar

APIN

Skeleton

Separator

DocsGalleryDemos

Scroll area

Aspect ratio (16:9)

16 : 9

Resizable master-detail panes on @zag-js/splitter (ADR 0009 — Base UI ships no equivalent). Drag or arrow-key resize, per-panel min/max size.

Drag the handle, or focus it and press the arrow keys (Home/End jump to the min/max) — a common master-detail layout primitive.

Navigation

  • Overview
  • Resources
  • Settings

Detail pane

Content on this side resizes as the left pane grows or shrinks, clamped to each panel's min/max size.

Feedback & status

Breadcrumb, Pagination, Alert, Spinner, Meter, Kbd, Description list, Empty state, Error state.

Breadcrumb

Alert

Meter

Disk usage

Spinner

Loading…

Kbd

Press K to search

Pagination

Description list

Plan
Pro
Seats
12 of 20
Renews
2026-07-01

Empty state

No issues yet

When you file your first issue it'll show up here.

Error state

Flashbar

3 elementos guardados.
Una nueva versión está disponible.

Bottom-anchored, dismissible bulk-action toolbar — the "N items selected" pattern. Data-source agnostic: plugs into DataTable row selection or any other list.

Select one or more rows — a bottom-anchored bar appears with the selection count and bulk actions, dismissible without acting.

  • Invoice #1042
  • Invoice #1043
  • Invoice #1044
  • Invoice #1045

Data

One field definition (money, status, date, select…) drives DataTable cell rendering, PropertyFilter widgets, Form fields, and description-list rows — instead of wiring each surface by hand.

One fieldDefs object (ROADMAP Epic 24) drives every surface below — a DataTable column, a Form field, a description-list row, and a PropertyFilter property — for amount, status, and category.

PropertyFilter (surface 4) → DataTable (surface 1)

5 rowsShowing 0 of 5 in viewport

description-list (surface 3)

Amount
$4,820.00
Status
Paid
Category
Hardware
Created
January 14, 2026

Form (surface 2) — edit the selected order

Generic <DataTable> on TanStack Table + Virtual. Sort, filter, column visibility/pinning, resizing, virtualization, URL state sync, row selection + ActionBar, per-column filters, expandable rows, summary row, localStorage-persisted visibility, and a server-driven `request` contract wired through useListing.

Structured token filtering (PropertyFilter) feeds the table; then sort, pin, per-column filter, expand a row for detail, select rows for bulk actions, resize widths, and export. Virtualization is active even on this small dataset.

8 of 8Totals →
8 rowsShowing 0 of 8 in viewport

Icon/label button with a loading state while an async export function runs, then downloads the resolved Blob. Standalone — pairs with DataTable's `onExport` prop but composes into any export flow.

Click to run a (simulated) async export — the button shows a loading spinner, then the browser downloads the resolved file.

KPIs & charts

Tremor-Raw-style: KpiCard, Metric, ProgressBar, Tracker, Callout, Divider. CSS-var-themed, dark-mode-flip.

Monthly Revenue

$42,80012.3%vs. last month

Active Users

3,2042.1%vs. last month

Uptime

99.7%0.1%30-day average

Storage usage

Documents68%
Media34%
Backups91%

Service uptime — last 30 days

96.7%

OperationalDegradedOutage

Callout variants

Information

This is a default callout with neutral styling.

Success

Your changes have been saved successfully.

Warning

Storage is approaching its limit. Consider upgrading your plan.

Error

Failed to connect to the data source. Check your credentials.


or continue with

Themed Recharts wrappers (Line, Bar, Area, Donut). Colors come from --chart-1..5 CSS vars.

LineChart

BarChart

AreaChart

DonutChart

Motion

LazyMotion + domAnimation pattern with strict mode. Motion code is in a separate lazy chunk.

PWA

InstallButton + UpdateToast — driven by virtual:pwa-register events through Nano Stores.

Simulate the global PWA signals. The install button and update toast are mounted in BaseLayout — trigger them here to see them appear.

Extras & data-viz

Tree view, Timeline, Bar list, Sparkline, Gauge.

Tree view

Timeline

  1. Issue filed

    09:14

    FeedbackFAB pre-filled diagnostics.

  2. PR opened

    09:41

    forja implemented, centinela validated.

  3. Merged & deployed

    10:02

    Issue closed automatically.

Bar list

/gallery
1,840
/docs
1,210
/demos
760
/blog
320

Sparkline

Gauge

Inceptor reporting

Throw an error inside an island — get a pre-filled GitHub issue with stack trace, component path, URL, and UA.

No error — click the button to trigger the boundary.

Report an issue

Show diagnostics

Environment

 

Console errors

 

Failed requests