# Slipstream UI — LLM Documentation Index The AI-first React component library. 80 components, each shipping a machine-readable COMPONENT_MANIFEST; this directory mirrors those manifests as markdown. - Library docs: https://slipstreamui.com/docs - Manifest registry: https://slipstreamui.com/registry/all.json - Single-file corpus: https://slipstreamui.com/llms-full.txt - shadcn-compatible install: `npx shadcn@latest add https://slipstreamui.com/registry/.json` ## Core components (@slipstream-ui/core) — 63 - [Accordion](https://slipstreamui.com/llm/components/accordion.md) — Collapsible content sections with ARIA accordion semantics and keyboard navigation - [Alert](https://slipstreamui.com/llm/components/alert.md) — Inline alert for status messages with semantic variants (destructive, success, warning, info) - [AppShell](https://slipstreamui.com/llm/components/app-shell.md) — Application frame with a sectioned sidebar, sticky header and scrolling main; the sidebar becomes a left Drawer on small screens. - [AuthLayout](https://slipstreamui.com/llm/components/auth-layout.md) — Centered authentication surface: brand, title/description, form card and footer, with size presets. - [Autocomplete](https://slipstreamui.com/llm/components/autocomplete.md) — Free-text type-ahead input with a portalled listbox: static or async options, grouped headings, descriptions and custom rows. - [Avatar](https://slipstreamui.com/llm/components/avatar.md) — A user profile image component with fallback support and accessible image loading - [Badge](https://slipstreamui.com/llm/components/badge.md) — A small status indicator component for displaying tags, counts, or status information - [Block](https://slipstreamui.com/llm/components/block.md) — Semantic container (div by default, swappable element) — the structural counterpart to Text (p). - [Breadcrumb](https://slipstreamui.com/llm/components/breadcrumb.md) — Navigation breadcrumb trail with links and current-page indicator - [Button](https://slipstreamui.com/llm/components/button.md) — A clickable button component with variants for different visual styles and sizes - [ButtonGroup](https://slipstreamui.com/llm/components/button-group.md) — Joins buttons into one segmented control: adjacent borders collapse, middle corners square off, and only the outer corners stay rounded — a single outline around the group. - [Card](https://slipstreamui.com/llm/components/card.md) — A content container with header, body, and footer sections for grouping related information - [Checkbox](https://slipstreamui.com/llm/components/checkbox.md) — A native checkbox input styled to match the design system, plus CheckboxGroup for grouping related options under an accessible legend - [ConfirmDialog](https://slipstreamui.com/llm/components/confirm-dialog.md) — Accessible confirmation dialog with async pending state, destructive variant and cancellable actions, built on Dialog. - [DataTable](https://slipstreamui.com/llm/components/data-table.md) — Config-driven table: one component plus a columns config that owns shape, sorting, pagination, and row interaction. - [DatePicker](https://slipstreamui.com/llm/components/date-picker.md) — Native date field with an ISO-string contract, min/max passthrough and an optional clear button. - [Dialog](https://slipstreamui.com/llm/components/dialog.md) — Accessible modal dialog with focus trap/restore, backdrop and Escape dismissal, size presets, optional header/footer slots, a scrollable body, and opt-in fade motion. - [Drawer](https://slipstreamui.com/llm/components/drawer.md) — Edge sheet for secondary flows: slides from any side (sm/md/lg), with Dialog-grade modal semantics (portal, focus trap, Escape, focus restoration). - [EmptyState](https://slipstreamui.com/llm/components/empty-state.md) — Placeholder for empty collections, zero-result searches and unconfigured features, with title, description and action slots. - [Fieldset](https://slipstreamui.com/llm/components/fieldset.md) — Groups related form controls in a native fieldset with a legend, optional description, and an error slot. - [FileUpload](https://slipstreamui.com/llm/components/file-upload.md) — Drag-and-drop file picker with a removable file list and per-file progress bars. - [FilterBar](https://slipstreamui.com/llm/components/filter-bar.md) — List-page filter strip: search field, filter controls, reset affordance and trailing actions. - [Flex / FlexItem](https://slipstreamui.com/llm/components/flex.md) — Typed flexbox container (direction/align/justify/wrap/gap) with FlexItem for per-child grow/shrink/basis controls. - [Form](https://slipstreamui.com/llm/components/form.md) — Semantic form element with even-spacing layouts: stacked (default), bordered card, or inline row — native submit and validation untouched. - [FormField](https://slipstreamui.com/llm/components/form-field.md) — Label + control + hint/error in one unit with htmlFor, aria-describedby, and aria-invalid wiring applied automatically. - [FormLayout](https://slipstreamui.com/llm/components/form-layout.md) — Groups form fields with even, tokenized spacing: vertical stack, horizontal row, or 1-4 column grid, optionally as a semantic fieldset. - [Grid / GridItem](https://slipstreamui.com/llm/components/grid.md) — Typed CSS grid with column counts per breakpoint (literal utilities that survive purging), auto-fit min-column mode, and GridItem spans. - [Heading](https://slipstreamui.com/llm/components/heading.md) — Semantic heading (h1-h6) with a safe default scale and an optional visual-size override. - [Input](https://slipstreamui.com/llm/components/input.md) — A text input field with support for various input types and standard HTML input attributes - [InputGroup](https://slipstreamui.com/llm/components/input-group.md) — Composite input shell with flush left/right addons (icons, units, buttons) behind one outer outline; the nested field sheds its own border so the group reads as a single control. - [Label](https://slipstreamui.com/llm/components/label.md) — An accessible form label that associates with its control - [Link](https://slipstreamui.com/llm/components/link.md) — Inline link primitive with default/muted/underline/arrow/external variants, asChild router support and safe external handling. - [List / ListItem](https://slipstreamui.com/llm/components/list.md) — Semantic list (ul/li) for rows of related items: settings, results, nav — with leading/trailing slots, selection, and pressable rows. - [Menu](https://slipstreamui.com/llm/components/menu.md) — Dropdown menu with keyboard navigation, typeahead, and ARIA menu semantics - [MetricCard](https://slipstreamui.com/llm/components/metric-card.md) — KPI tile: label, value, directional delta (arrow + color) and supporting hint. - [PageHeader](https://slipstreamui.com/llm/components/page-header.md) — Standard page heading: optional breadcrumbs, level-1 title, description, right-aligned actions and a sub-row slot. - [Pagination](https://slipstreamui.com/llm/components/pagination.md) — Numeric pagination with prev/next and boundary jumps; accepts page/pageCount or currentPage/totalPages and derives the count (plus a Showing X-Y of Z summary) from total/pageSize. - [PasswordInput](https://slipstreamui.com/llm/components/password-input.md) — Password field with an accessible show/hide toggle (aria-pressed), built on Input. - [Popover](https://slipstreamui.com/llm/components/popover.md) — Floating panel anchored to a trigger with interactive content, closing on outside click and Escape - [Progress](https://slipstreamui.com/llm/components/progress.md) — A determinate progress bar with role=progressbar and exact value semantics - [Prose](https://slipstreamui.com/llm/components/prose.md) — Self-contained long-form typography for rendered markdown/MDX: headings, links, lists, code, tables, quotes and figures. - [Radio](https://slipstreamui.com/llm/components/radio.md) — Native radio buttons grouped for mutually exclusive choices, with an accessible fieldset/legend wrapper - [Search](https://slipstreamui.com/llm/components/search.md) — Select-with-search: type to filter a full-width dropdown of options, or arrow through the full set from an empty query. - [SectionHeading](https://slipstreamui.com/llm/components/section-heading.md) — Section heading block: eyebrow, title (level 2-4), description and actions, with left/center alignment and three sizes. - [Select](https://slipstreamui.com/llm/components/select.md) — Accessible select built on the native ``` ## Anti-patterns - **Don't put the primary action in the bar** — FilterBar is for narrowing; creation actions belong in PageHeader actions. ## Accessibility - **Search landmark**: Wraps controls in role=search; the search input is labelled by its placeholder ## Composition - Compose with **Select** — Filter controls render in children ```tsx setName(e.target.value)} /> setEmail(e.target.value)} /> ``` ### Card and inline variants ```tsx
…
``` ## Anti-patterns - **Don't nest forms** — Nested
elements are invalid HTML — browsers drop the inner form's submit association. Compose with FormLayout sections instead. - **Don't fight native validation blindly** — Passing noValidate means YOU own every error message — pair it with FormField error props or keep native validation on. ## Accessibility - **Native form semantics**: Renders — Enter-to-submit, browser validation, and autocomplete all work - **Even spacing is tokenized**: gap defaults to the md token and accepts exact pixels — rhythm stays consistent across forms ## Composition - Compose with **FormField** — Each field is a FormField; Form spaces them evenly ```tsx …
``` - Compose with **FormLayout** — Multi-column or grouped sections inside a form - Compose with **Button** — Submit button with type="submit" — native Enter handling comes free - Related: FormField, FormLayout, Fieldset, Input --- # FormField Label + control + hint/error in one unit with htmlFor, aria-describedby, and aria-invalid wiring applied automatically. > Import: `import { FormField } from '@slipstream-ui/core'` > Registry: https://slipstreamui.com/registry/form-field.json > Tier: molecule · Package: @slipstream-ui/core ## Design intent Every form control needs the same trio — label, hint or error, correct ARIA wiring — and hand-wiring it is where accessibility regressions start. FormField clones id/aria-describedby/aria-invalid onto a single-element child so the common case is one component and zero boilerplate. ## Props | Prop | Type | Default | Required | Description | |---|---|---|---|---| | id | `string` | — | yes | The control's id — shared with the label's htmlFor and the hint/error ids. | | label | `string` | — | yes | Visible label text (kept for screen readers even when labelHidden). | | hint | `string` | — | no | Helper text under the control, wired via aria-describedby. | | error | `string` | — | no | Validation error; replaces the hint, sets aria-invalid on the control, announced via role=alert. | | required | `boolean` | `false` | no | Renders the required marker next to the label. | | labelHidden | `boolean` | `false` | no | Keeps the label screen-reader visible but hides it visually (sr-only). | | trailing | `ReactNode` | — | no | Slot pinned to the far right of the label row (badge, link, action). | | tooltip | `string` | — | no | Info icon rendered after the label; opens a tooltip with this text. | | labelPlacement | `'top' | 'left'` | `top` | no | Stack the label above the control (default) or inline it to the left. | ## Examples ### Text input with hint The cloned child receives id, aria-describedby, and the label pairs via htmlFor. ```tsx ``` ### Error state Error replaces the hint, flips aria-invalid on the control, and announces via role=alert. ```tsx setEmail(e.target.value)} /> ``` ### Search-style field ```tsx ``` ## Anti-patterns - **Don't rely on placeholder as the label** — Placeholders disappear on input and fail color-contrast rules. FormField renders a real