Component reference and live examples.
Props and variants for key components.
| Prop | Type | Default | Description |
|---|---|---|---|
variant | "default" | "destructive" | "outline" | "secondary" | "amber" | "ghost" | "link" | "default" | Visual style of the button |
size | "default" | "sm" | "lg" | "icon" | "default" | Button size |
asChild | boolean | false | Merge props onto child element instead of rendering a <button> |
| Prop | Type | Default | Description |
|---|---|---|---|
variant | "default" | "secondary" | "destructive" | "outline" | "success" | "warning" | "error" | "default" | Visual style and color of the badge |
| Prop | Type | Default | Description |
|---|---|---|---|
interactive | boolean | false | Adds hover border, shadow lift, and press-down effect |
| Prop | Type | Default | Description |
|---|---|---|---|
type | string | — | HTML input type (text, email, password, etc.) |
className | string | — | Additional classes. Uses border-2 and focus:ring by default. |
| Prop | Type | Default | Description |
|---|---|---|---|
error | boolean | false | Applies error styling to label and child inputs |
id | string | — | Custom id — auto-generated if not provided |
| Prop | Type | Default | Description |
|---|---|---|---|
options | { value: string; label: string }[] | — | List of selectable options |
value | string | string[] | — | Currently selected value(s) |
onValueChange | (value) => void | — | Callback when selection changes |
multiple | boolean | false | Enable multi-select mode |
placeholder | string | "Select..." | Text shown when nothing is selected |
searchPlaceholder | string | "Search..." | Placeholder inside the search input |
emptyMessage | string | "No results found." | Message when no options match the search |
| Prop | Type | Default | Description |
|---|---|---|---|
columns | ColumnDef<TData>[] | — | TanStack Table column definitions |
data | TData[] | — | Array of row data |
toolbar | ReactNode | — | Optional toolbar rendered above the table |
| Prop | Type | Default | Description |
|---|---|---|---|
date | Date | — | Currently selected date |
onDateChange | (date: Date | undefined) => void | — | Callback when a date is selected |
placeholder | string | "Pick a date" | Text shown when no date is selected |
| Prop | Type | Default | Description |
|---|---|---|---|
value | string | — | Current search string |
onChange | (value: string) => void | — | Callback when the search value changes |
placeholder | string | "Search..." | Input placeholder text |
shortcut | string | — | Optional keyboard shortcut hint (e.g. "/") |
onClear | () => void | — | Optional callback when the clear button is clicked |
| Prop | Type | Default | Description |
|---|---|---|---|
gap | "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "md" | Vertical spacing between children |
align | "start" | "center" | "end" | "stretch" | "stretch" | Cross-axis alignment |
asChild | boolean | false | Merge props onto child element |
| Prop | Type | Default | Description |
|---|---|---|---|
gap | "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "sm" | Spacing between items |
align | "start" | "center" | "end" | "baseline" | "center" | Cross-axis alignment |
justify | "start" | "center" | "end" | "between" | "start" | Main-axis justification |
wrap | boolean | true | Allow items to wrap to the next line |
| Prop | Type | Default | Description |
|---|---|---|---|
columns | 1 | 2 | 3 | 4 | 5 | 6 | "auto-fill" | "auto-fit" | 1 | Number of columns or auto layout mode |
gap | "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "md" | Gap between grid cells |
minChildWidth | string | — | Minimum child width for auto modes (e.g. "280px") |
| Prop | Type | Default | Description |
|---|---|---|---|
max | "sm" | "md" | "lg" | "xl" | "2xl" | "full" | "2xl" | Maximum width constraint |
padding | boolean | true | Apply responsive horizontal padding |
| Prop | Type | Default | Description |
|---|---|---|---|
variant | "default" | "destructive" | "success" | "warning" | "default" | Visual style and color of the alert |
| Prop | Type | Default | Description |
|---|---|---|---|
size | "sm" | "default" | "lg" | "default" | Spinner diameter |
| Prop | Type | Default | Description |
|---|---|---|---|
children | ReactNode | — | Compose with EmptyIcon, EmptyTitle, EmptyDescription, EmptyAction |
| Prop | Type | Default | Description |
|---|---|---|---|
children | ReactNode | — | Compose with FormSectionHeader, FormSectionTitle, FormSectionDescription, FormSectionContent |
| Prop | Type | Default | Description |
|---|---|---|---|
layout | "stack" | "grid" | "stack" | Layout mode — "grid" renders a responsive two-column grid |
| Prop | Type | Default | Description |
|---|---|---|---|
title | string | — | Metric label displayed above the value |
value | string | — | Primary metric value |
change | string | — | Optional delta text (e.g. "+12.5%") |
changeType | "positive" | "negative" | "neutral" | "neutral" | Color of the change text |
icon | ComponentType | — | Optional icon component rendered top-right |
| Prop | Type | Default | Description |
|---|---|---|---|
href | string | — | Navigation link URL |
icon | ComponentType | — | Icon component rendered before the label |
active | boolean | false | Highlights the item as the current page |
Raw palette, semantic tokens, and status colors.
Every typographic component with sample text.
H1H2H3H4PThis is a paragraph of body text used across the interface.
LeadLead text for introductions and summaries.
LargeSmallMutedMuted secondary text for descriptions.
Codeconst x = 42;MonoStatus indicators and labels.
Individual form elements and input types.
Please enter a valid email address.
Structured form layout with sections and validation.
Content containers with optional interactivity.
Card content goes here. This is a simple example of a card layout.
This card responds to hover with a subtle visual change.
Content for card 1.
Content for card 2.
Content for card 3.
Tables, accordions, and tabbed content.
| Name | Role | Status | |
|---|---|---|---|
| Alex Chen | alex@example.com | Engineering | Active |
| Sarah Kim | sarah@example.com | Design | Active |
| James Wilson | james@example.com | Product | Pending |
| Maria Garcia | maria@example.com | Engineering | Active |
| David Park | david@example.com | Marketing | Inactive |
| Alex Chen | alex@example.com | Engineering | Active | |
| Sarah Kim | sarah@example.com | Design | Active | |
| James Wilson | james@example.com | Product | Pending | |
| Maria Garcia | maria@example.com | Engineering | Active | |
| David Park | david@example.com | Marketing | Inactive |
Overview content with project summary and key metrics.
Alerts, progress indicators, and loading states.
Try adjusting your search or filters to find what you're looking for.
Dialogs, sheets, popovers, tooltips, and menus.
Composable layout components for spacing and alignment.
This page uses Center max="xl" for its main content area.
Keyboard hints, avatars, separators, and more.