Components

Every export in @youspot/ui, with usage. See them rendered on the collage and the theme proof.

Button

Primary, secondary, destructive, and quiet actions with pending spinner.

TextField

Labeled text input with description and validation error slots.

TextArea

Labeled multiline input with description and validation error slots.

MentionInput

Type @ to mention someone.

TextArea whose trigger character opens a filtered suggestion list; picking one writes the mention at the caret. Reach for it over TextArea when the prose has to name records the app knows about — people, companies, saved assets — and you need the pick as data, not just the typed string.

NumberField

Numeric input with increment and decrement steppers.

Checkbox

Single checkbox with indeterminate state; CheckboxGroup for labeled sets.

CheckboxGroup

Channels
Where should updates land?

Labeled group of checkboxes with shared description and validation.

RadioGroup

Plan

Single-choice group, vertical or horizontal.

Switch

On/off toggle with label, description, and validation slots.

Slider

60

Single or range slider with live output value.

Select

Object type

Picker over a dropdown listbox; SelectItem and SelectSection for options.

ComboBox

Autocomplete input over a filtered listbox.

Form

Stacked form wrapper wiring React Aria validation.

DateField

Follow up on
8242026

Segmented date input; TimeField for times.

TimeField

At
––––AM

Segmented time input on the DateField chassis.

Calendar

Event date, August 2026

26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5

Month grid with keyboard navigation; RangeCalendar for spans.

RangeCalendar

Trip dates, August 2026

26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5

Two-ended month grid selecting a contiguous span.

DatePicker

Due date

Date field with a calendar popover.

DateRangePicker

Travel window

Start and end date fields with a range calendar popover.

Card

Pro plan

Everything in Free, plus unlimited objects.

$19 per month, billed yearly.

Generic surface: Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter.

Badge

ActiveDefaultInfoWaitingChurnedOutline

Static status pill with semantic color variants.

Alert

Inline callout with icon slot, title, and description; status variants.

Skeleton

Pulsing placeholder for a layout whose shape you already know, so nothing jumps when the data lands. SkeletonLine, SkeletonCircle and SkeletonText compose it; SkeletonCardList, SkeletonTable, SkeletonRows, SkeletonToolbar and SkeletonPanel are the whole shapes. Wrap a region in SkeletonBlock so it announces itself once instead of not at all. Stops animating under reduce-motion.

Spinner

Loading

The wait for something whose shape you do not know yet — a submit, a panel fetching. Prefer Skeleton when the layout is known, and Shimmer for a model working in a transcript. Same arc as Loader and Button's pending state.

Kbd

Open search withK

Keyboard key cap; KbdGroup for chords.

AspectRatio

16/9

Locks a child to a ratio; images and videos cover the box.

Item

Gmail

cesar@youspot.com · synced 2m ago

Media / content / actions row primitive for lists and settings.

ButtonGroup

Attaches adjacent buttons into one segmented control.

ToggleButton

Pressable on/off button; ToggleButtonGroup for single or multiple selection.

ProgressBar

Importing contacts42%

Determinate or indeterminate progress with label and value.

Meter

Storage 72%

Gauge that shifts success → warning → destructive as it fills.

Toast

Note savedLinked to Alice Chen.
Added to your brainDana Whitfield is now yours.
Couldn't save your changesThe backend didn't answer.
Sync moved to the backgroundWe'll tell you when it lands.
Hydrating your Second Brain#455 in queue

Sonner underneath, our markup on top: it owns the stack, the timers and the announcements; we own every pixel. Mount ToastRegion once at the app root and call toast() from anywhere. Five tones, each a pastel wash of its own colour stirred into the app's cream — default, success, destructive, info, and loading, which spins and should usually be given no timeout.

Sheet

Side panel over a scrim; Drawer is the bottom placement.

AlertDialog

Blocking confirm dialog with cancel and confirm actions.

Table

Alice ChenAcmeCTO2h ago
Ben OrtizGlobexFounderYesterday
Chloe ParkInitechHead of Sales3d ago
Dev PatelHooliPMLast week

Sortable, selectable, resizable data grid: Table, TableHeader, Column, TableBody, Row, Cell.

Pagination

Page controls with sibling window and gaps.

BreadcrumbList

  1. Brain
  2. People
  3. Alice Chen

React Aria breadcrumb trail; the layout Breadcrumbs stays the data-driven server-safe one.

StatTile

Objects
1,284
+18 this weekin your Second Brain
Connections
12.9K
across every source
Credits
250
−12 today

One number, named: label, auto-compacted value, optional delta and hint. The right form when a measure has no shape worth drawing.

Sidebar

Collapsible app rail: provider, header, groups, menu buttons with injected links, nested sub-menus that fly out once collapsed, badges, off-canvas below the mobile breakpoint, trigger, inset.

TopBar

Y
The page renders below the bar.

The app's stable frame: brand, destinations with a shared active pill, search, and the account, the same on every page. `inset` sits over the page beside a sidebar card; `full` spans the window with the sidebar below it. Sets --topbar-row-h, --tabstrip-h and their sum as CSS variables, so a second row costs no measurement and no re-render.

TabStrip

The active tab is connected to the surface below it.

Browser-style tabs for the top bar's second row. Each tab is a remembered location rather than a document; a pinned tab shrinks to its glyph and shows no close control, and middle-click closes.

Topbar

  1. Feedback surveys
  2. Agent AI NPS Survey

The rail's other half: a sticky bar across the content column carrying where you are on the left, and on the right the tools that are the same on every page — search, icon actions with badges, then the account. Pairs with SidebarInset; it does not span the rail.

ErrorState

Page or inline failure surface: title, detail, error message and digest, retry and home actions.

Banner

Working on hydrating your Second Brain. #455 in queue

One full-bleed line about the whole session, not the page — impersonation, an unreachable backend, a job still running. Alert is the in-page box; this is the strip under the top bar. Dismissible only if you pass onDismiss.

DataState

Loading, empty, error or the thing itself, decided once from a Query status. A failure always outranks emptiness, so a list never claims to be empty when the request actually failed. Wraps children in an ErrorBoundary.

ErrorBoundary

Rendering fine. Press the button to crash this subtree.

Catches render errors below it and shows ErrorState with a reset; resetKeys clear it.

NotFoundState

The 404 preset of ErrorState, muted tone.

OfflineState

The offline preset of ErrorState; useOnline() reports connectivity.

Carousel

1
2
3
4
5

Embla-powered slides with previous/next controls and arrow-key navigation.

Chart

Recharts inside a tokenized container: chart-1…5 colors, tooltip and legend in contract tokens.

DataTable

Alice ChenAcmeCTO14
Ben OrtizGlobexFounder9
Chloe ParkInitechHead of Sales22
Dev PatelHooliPM3

TanStack Table over the React Aria Table: column defs, sorting, optional pagination.

InfiniteDataTable

Loaded
40
Credits shown
9,980

Virtualized table over an infinite query: server-driven sort, scroll-to-load-more, disclosure rows, loading/empty/error states.

ColumnFilterButton

Name

No filter applied.

Column-header filter popover for text, facets, numbers, and dates. The host owns the applied value; the button shows whether the column is filtered.

AnimatedNumber

1,284

A number that tweens to its new value when it changes; still under reduced motion.

InputOTP

One-time-code input with slots, groups, and separators.

Resizable

Brain
Chat

Draggable panel groups with an optional grip handle.

ContextMenu

Right-click me

Right-click menu anchored at the pointer; a Menu in a Popover, so keyboard users get it via the item's own actions.

Menubar

Toolbar of menu triggers with arrow-key movement between menus.

HoverCard

Rich hover/focus card on the Tooltip chassis — non-interactive content by design.

Tabs

Objects render as rows.

Tab list with panels.

TagGroup

Statuses
Active
Waiting
New
Archived

Tags with semantic colors, selection, and removal.

Menu

Dropdown menu with sections, submenus, and shortcuts.

Modal

Centered modal over a blurred scrim.

Popover

Anchored floating panel.

Tooltip

Hover and focus tooltip.

Disclosure

Expandable section; DisclosureGroup for accordions.

ListBox

Alice Chen
Priya Patel
Acme

Selectable list with sections; DropdownItem for menus and selects.