@fts/spinnerIndeterminate activity indicator for in-place work. Page and section loads should use Skeleton instead.
@fts/buttonThe action primitive: five variants, five sizes, asChild slot, and a width-stable loading state.
@fts/inputText input with focus ring, token styling, and aria-invalid error styling. Wrap in Field for label + error wiring.
@fts/textareaMulti-line input that grows with content, capped at a sane height.
@fts/labelAccessible form label (Radix).
@fts/checkboxCheckbox with checked and indeterminate states (Radix).
@fts/radio-groupPick one of a few visible options (Radix). More than five options wants a Select.
@fts/switchOn/off toggle for settings that apply immediately (Radix).
@fts/selectDropdown selection styled like Input, with groups, labels, and keyboard support (Radix).
@fts/tabsUnderline-style tabs — the one tab treatment used everywhere (Radix).
@fts/badgeSmall label token with the full semantic tone set (brand, neutral, success, warning, danger, info) and an optional dot.
@fts/cardSurface container with Header/Title/Description/Content/Footer.
@fts/separatorHairline divider (Radix).
@fts/kbdKeyboard shortcut hint.
@fts/skeletonLoading placeholder; respects reduced motion.
@fts/avatarImage avatar with automatic initials fallback. One style, three sizes (Radix).
@fts/progressDeterminate progress bar. Unknown durations want a Spinner (Radix).
@fts/alertInline callout with semantic tones and correct live-region roles: info/success announce, warning/danger interrupt.
@fts/tablePlain table primitives — the single source of the FTS table look. DataTable builds on these.
@fts/breadcrumbWhere-am-I trail; the last item is the current page.
@fts/tooltipInverted-surface tooltip for labeling icon-only controls. Never hides essential information (Radix).
@fts/popoverAnchored floating panel for filters, pickers, and small forms (Radix).
@fts/dropdown-menuAction menu with checkbox/radio items, submenus, shortcuts, and a danger treatment for destructive items (Radix).
@fts/dialogModal dialog with scrim, pop-in motion, and scroll containment (Radix).
@fts/alert-dialogInterruptive confirmation: no X, no outside-click dismiss — the user must choose. Prefer the ConfirmDialog composite (Radix).
@fts/sheetEdge-anchored drawer for nav, filters, and side detail. Four sides, slide motion (Radix Dialog).
@fts/toasttoast() function + Toaster viewport. At most three on screen, calm durations, swipe to dismiss, action support (Radix).
@fts/theme-providerLight/dark/system theme context with a pre-hydration ThemeScript (no flash), cross-tab sync, and OS following. No dependencies.
@fts/theme-toggleLight/dark switch button. Requires ThemeProvider.