Skip to content

The kit

Component gallery

All 19 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)

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

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

Data

Generic <DataTable> on TanStack Table + Virtual. Sort, filter, column visibility, resizing, virtualization, URL state sync.

Sort columns, filter rows, toggle visibility, and resize column widths. Virtualization is active even on this small dataset — try adding thousands of rows.

8 rowsShowing 0 of 8 in viewport

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