@hirobius/design-system 0.18.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONSUMING.md +150 -0
- package/DESIGN.md +220 -0
- package/README.md +14 -2
- package/dist/chunks/{activity-feed-C8_e-Btq.js → activity-feed-DIMeUJpW.js} +4907 -2912
- package/dist/chunks/{form-DnGRy27o.js → form-BvNNnJ0t.js} +2 -2
- package/dist/form.js +5 -5
- package/dist/hirobius-ui.js +1986 -2529
- package/dist/icons.js +53 -0
- package/dist/manifest.js +15 -14
- package/dist/patterns.js +292 -101
- package/dist/static.css +3 -3
- package/dist/styles.css +1 -1
- package/dist/tokens.css +1 -1
- package/dist/types/src/app/components/alert-dialog.d.ts +9 -1
- package/dist/types/src/app/components/alert.d.ts +4 -0
- package/dist/types/src/app/components/avatar.d.ts +4 -0
- package/dist/types/src/app/components/badge.d.ts +4 -0
- package/dist/types/src/app/components/box.d.ts +5 -0
- package/dist/types/src/app/components/breadcrumb.d.ts +4 -0
- package/dist/types/src/app/components/button-group.d.ts +4 -0
- package/dist/types/src/app/components/button.d.ts +3 -0
- package/dist/types/src/app/components/card.d.ts +9 -0
- package/dist/types/src/app/components/checkbox.d.ts +4 -0
- package/dist/types/src/app/components/combobox.d.ts +10 -0
- package/dist/types/src/app/components/command-palette.d.ts +3 -1
- package/dist/types/src/app/components/container.d.ts +5 -0
- package/dist/types/src/app/components/context-menu.d.ts +25 -2
- package/dist/types/src/app/components/data-table-section.d.ts +45 -0
- package/dist/types/src/app/components/destructive-section.d.ts +32 -0
- package/dist/types/src/app/components/dialog.d.ts +20 -2
- package/dist/types/src/app/components/disclosure.d.ts +3 -0
- package/dist/types/src/app/components/divider.d.ts +4 -0
- package/dist/types/src/app/components/empty-state.d.ts +4 -0
- package/dist/types/src/app/components/field.d.ts +4 -0
- package/dist/types/src/app/components/form-actions.d.ts +26 -0
- package/dist/types/src/app/components/grid.d.ts +4 -0
- package/dist/types/src/app/components/hds-tooltip.d.ts +14 -2
- package/dist/types/src/app/components/hover-card.d.ts +16 -1
- package/dist/types/src/app/components/icon.d.ts +4 -0
- package/dist/types/src/app/components/inline-link.d.ts +4 -0
- package/dist/types/src/app/components/input.d.ts +5 -0
- package/dist/types/src/app/components/kbd.d.ts +3 -0
- package/dist/types/src/app/components/menu.d.ts +26 -2
- package/dist/types/src/app/components/metric-tiles.d.ts +40 -0
- package/dist/types/src/app/components/page-header.d.ts +34 -0
- package/dist/types/src/app/components/pagination.d.ts +3 -0
- package/dist/types/src/app/components/popover.d.ts +14 -2
- package/dist/types/src/app/components/progress.d.ts +4 -0
- package/dist/types/src/app/components/radio.d.ts +5 -0
- package/dist/types/src/app/components/select.d.ts +16 -0
- package/dist/types/src/app/components/skeleton.d.ts +4 -0
- package/dist/types/src/app/components/slider.d.ts +3 -0
- package/dist/types/src/app/components/spinner.d.ts +4 -0
- package/dist/types/src/app/components/stack.d.ts +4 -0
- package/dist/types/src/app/components/stat.d.ts +4 -0
- package/dist/types/src/app/components/status-tile.d.ts +4 -0
- package/dist/types/src/app/components/table.d.ts +36 -4
- package/dist/types/src/app/components/tabs.d.ts +4 -0
- package/dist/types/src/app/components/tag.d.ts +3 -0
- package/dist/types/src/app/components/text.d.ts +4 -0
- package/dist/types/src/app/components/textarea.d.ts +3 -0
- package/dist/types/src/app/components/toast.d.ts +4 -0
- package/dist/types/src/app/components/toggle.d.ts +4 -0
- package/dist/types/src/app/components/tooltip.d.ts +1 -1
- package/dist/types/src/app/components/visually-hidden.d.ts +3 -0
- package/dist/types/src/app/context/hds-portal.d.ts +52 -0
- package/dist/types/src/app/context/hds-theme.d.ts +10 -0
- package/dist/types/src/app/data/manifest-types.d.ts +27 -0
- package/dist/types/src/app/design-system/generated-token-refs.d.ts +2 -0
- package/dist/types/src/icons.d.ts +13 -0
- package/dist/types/src/index.d.ts +20 -1
- package/dist/types/src/patterns.d.ts +5 -0
- package/dist/variables.css +4 -0
- package/docs/CONSUMING.md +758 -0
- package/hirobius.tokens.json +17 -0
- package/llms.txt +261 -0
- package/package.json +21 -4
- package/public/hds-manifest.json +1545 -89
- package/public/llms/components.txt +1090 -0
- package/public/llms/layout.txt +54 -0
- package/public/llms/scroll.txt +22 -0
- package/public/llms/tokens.txt +32 -0
- package/public/llms-full.txt +1561 -0
- package/public/llms.txt +261 -0
- package/src/app/data/component-api.json +6156 -0
|
@@ -0,0 +1,1090 @@
|
|
|
1
|
+
# Hirobius Design System - components slice
|
|
2
|
+
|
|
3
|
+
See `public/llms.txt` for the index. Generated from the same sections as llms.txt.
|
|
4
|
+
|
|
5
|
+
## Component Inventory (Source Of Truth)
|
|
6
|
+
|
|
7
|
+
This file intentionally does not embed the full component list to avoid duplication and excess context.
|
|
8
|
+
|
|
9
|
+
- Canonical inventory + metadata: read `public/hds-manifest.json`.
|
|
10
|
+
- If you see references to `public/manifest.json`, treat it as an optional alias; in this repo prefer `public/hds-manifest.json`.
|
|
11
|
+
|
|
12
|
+
## Component API (Source Of Truth)
|
|
13
|
+
|
|
14
|
+
This file intentionally does not embed prop tables or long-form API docs.
|
|
15
|
+
|
|
16
|
+
- Detailed prop types, unions, defaults, and descriptions: read `src/app/data/component-api.json`.
|
|
17
|
+
- Runtime behavior: read the actual component source under `src/app/components/` (and associated styles).
|
|
18
|
+
|
|
19
|
+
## Component Props Digest
|
|
20
|
+
|
|
21
|
+
Compact: name, first line of description, then prop: type = default. Full detail in `src/app/data/component-api.json`.
|
|
22
|
+
|
|
23
|
+
### ActivityFeed
|
|
24
|
+
ActivityFeed — chronological system event log. Renders a list of activity events using white space as the sole separator. No dividers, no borders between items…
|
|
25
|
+
- events: ActivityEvent[] = [ { id: 'evt-001', title: 'File Uploade…
|
|
26
|
+
|
|
27
|
+
### Alert
|
|
28
|
+
Alert - compact feedback surface with contextual severity.
|
|
29
|
+
- children: ReactNode
|
|
30
|
+
- title: string
|
|
31
|
+
- tone: 'success' | 'danger' | 'warning' | 'info' = info
|
|
32
|
+
|
|
33
|
+
### AlertDialog
|
|
34
|
+
AlertDialog root + parts. Controlled via `open`/`onOpenChange`, or uncontrolled with `defaultOpen`.
|
|
35
|
+
- children: React.ReactNode
|
|
36
|
+
- defaultOpen: boolean
|
|
37
|
+
- onOpenChange: ((open: boolean) => void)
|
|
38
|
+
- open: boolean
|
|
39
|
+
|
|
40
|
+
### AspectRatio
|
|
41
|
+
Locks its single child to the given width-to-height `ratio` so media reserves its box up front and never causes layout shift while it loads.
|
|
42
|
+
- asChild: boolean
|
|
43
|
+
- ratio: number = 1
|
|
44
|
+
|
|
45
|
+
### AssetImg
|
|
46
|
+
AssetImg - responsive asset frame with fallback placeholder handling. Contexts: default, lightbox, and detail.
|
|
47
|
+
- alt: string
|
|
48
|
+
- className: string
|
|
49
|
+
- context: 'default' | 'lightbox' | 'detail' = default
|
|
50
|
+
- draggable: boolean = false
|
|
51
|
+
- expandable: boolean = true
|
|
52
|
+
- expandLabel: string
|
|
53
|
+
- isDark: boolean = false
|
|
54
|
+
- loading: "lazy" | "eager" = lazy
|
|
55
|
+
- naturalHeight: number
|
|
56
|
+
- naturalWidth: number
|
|
57
|
+
- onClick: ((e: MouseEvent<Element, MouseEvent>) => void)
|
|
58
|
+
- onMouseDown: ((e: MouseEvent<Element, MouseEvent>) => void)
|
|
59
|
+
- onMouseLeave: ((e: MouseEvent<Element, MouseEvent>) => void)
|
|
60
|
+
- onMouseMove: ((e: MouseEvent<Element, MouseEvent>) => void)
|
|
61
|
+
- onMouseUp: ((e: MouseEvent<Element, MouseEvent>) => void)
|
|
62
|
+
- src: string
|
|
63
|
+
- style: CSSProperties = {}
|
|
64
|
+
- title: string
|
|
65
|
+
|
|
66
|
+
### Avatar
|
|
67
|
+
Circular avatar. Renders the image when available, else initials from `alt`.
|
|
68
|
+
- alt: string
|
|
69
|
+
- initials: string
|
|
70
|
+
- size: "sm" | "md" | "lg" | null
|
|
71
|
+
- src: string
|
|
72
|
+
|
|
73
|
+
### AvatarGroup
|
|
74
|
+
Renders up to `max` overlapping avatars followed by a `+N` overflow chip.
|
|
75
|
+
- children: ReactNode
|
|
76
|
+
- max: number
|
|
77
|
+
- size: "sm" | "md" | "lg" | null
|
|
78
|
+
|
|
79
|
+
### Badge
|
|
80
|
+
Compact metadata/status chip. Tone is the only styling input.
|
|
81
|
+
- as: ElementType<any, keyof IntrinsicElements> = span
|
|
82
|
+
- tone: "neutral" | "danger" | "success" | "warning" | "info" | "inProgress" | null
|
|
83
|
+
|
|
84
|
+
### Bleed
|
|
85
|
+
Bleed — controlled negative-margin full-bleed within a padded container. Every Layout reference: https://every-layout.dev/layouts/the-stack/ (bleed is the inve…
|
|
86
|
+
- amount: 'tight' | 'normal' | 'inset' | 'spacious' = normal
|
|
87
|
+
- as: ElementType<any, keyof IntrinsicElements> = div
|
|
88
|
+
- axis: 'x' | 'y' | 'both' = x
|
|
89
|
+
- children: ReactNode
|
|
90
|
+
- className: string
|
|
91
|
+
- style: CSSProperties
|
|
92
|
+
|
|
93
|
+
### Blockquote
|
|
94
|
+
A quoted passage; pass `cite` for the source URL and `attribution` for a byline.
|
|
95
|
+
- attribution: ReactNode
|
|
96
|
+
- size: "sm" | "md" | "lg" | null
|
|
97
|
+
|
|
98
|
+
### Box
|
|
99
|
+
Box — polymorphic layout primitive with a token-first `sx` engine. `sx` is a deliberate SUBSET of MUI's sx — not all of CSS-in-JS is a feature: - Spacing short…
|
|
100
|
+
- as: ElementType<any, keyof IntrinsicElements> = div
|
|
101
|
+
- children: ReactNode
|
|
102
|
+
- sx: SxObject
|
|
103
|
+
|
|
104
|
+
### Breadcrumb
|
|
105
|
+
Breadcrumb trail. Links route through the HDS router seam (plain anchors with no router, client-side nav when a router adapter is provided). The final item is …
|
|
106
|
+
- items: BreadcrumbItem[]
|
|
107
|
+
- label: string = Breadcrumb
|
|
108
|
+
|
|
109
|
+
### Button
|
|
110
|
+
Triggers an action when activated.
|
|
111
|
+
- asChild: boolean = false
|
|
112
|
+
- disabled: boolean
|
|
113
|
+
- iconLeft: ReactNode
|
|
114
|
+
- iconOnly: boolean = false
|
|
115
|
+
- iconRight: ReactNode
|
|
116
|
+
- label: string
|
|
117
|
+
- loading: boolean = false
|
|
118
|
+
- size: "sm" | "md" | "lg" | null
|
|
119
|
+
- tone: "neutral" | "danger" | "success" | "warning" | "info" | null
|
|
120
|
+
- variant: "primary" | "secondary" | "tertiary" | null
|
|
121
|
+
|
|
122
|
+
### ButtonGroup
|
|
123
|
+
Groups Button (or button-like) children into a single attached segment.
|
|
124
|
+
- orientation: "horizontal" | "vertical" | null
|
|
125
|
+
|
|
126
|
+
### Calendar
|
|
127
|
+
Renders an accessible month grid; compose it inside a Popover for the date inputs.
|
|
128
|
+
|
|
129
|
+
### Callout
|
|
130
|
+
Tone-driven side-rule callout for status, quotes, hypotheses.
|
|
131
|
+
- italic: boolean = false
|
|
132
|
+
- tone: 'accent' | 'info' | 'success' | 'warning' | 'danger' = info
|
|
133
|
+
|
|
134
|
+
### Card
|
|
135
|
+
Tagged per-export, not on the file block: this module exports eight components and a file-level @figma would hand all eight this one node.
|
|
136
|
+
- as: ElementType<any, keyof IntrinsicElements>
|
|
137
|
+
- bordered: boolean = false
|
|
138
|
+
- gap: GapOption = tight
|
|
139
|
+
- noPadding: boolean = false
|
|
140
|
+
- padding: PaddingOption = component
|
|
141
|
+
- tone: 'neutral' | 'danger' | 'success' | 'warning' | 'info' = neutral
|
|
142
|
+
- variant: 'default' | 'accent' = default
|
|
143
|
+
|
|
144
|
+
### CardBody
|
|
145
|
+
Card — surface container with slot anatomy (12d-card-anatomy). Slot anatomy (DESIGN.md §"Card Anatomy"). Status, progress, and metadata are layout-bearing — th…
|
|
146
|
+
|
|
147
|
+
### CardDescription
|
|
148
|
+
Card — surface container with slot anatomy (12d-card-anatomy). Slot anatomy (DESIGN.md §"Card Anatomy"). Status, progress, and metadata are layout-bearing — th…
|
|
149
|
+
|
|
150
|
+
### CardFooter
|
|
151
|
+
Card — surface container with slot anatomy (12d-card-anatomy). Slot anatomy (DESIGN.md §"Card Anatomy"). Status, progress, and metadata are layout-bearing — th…
|
|
152
|
+
|
|
153
|
+
### CardHeader
|
|
154
|
+
Card — surface container with slot anatomy (12d-card-anatomy). Slot anatomy (DESIGN.md §"Card Anatomy"). Status, progress, and metadata are layout-bearing — th…
|
|
155
|
+
- metadata: ReactNode
|
|
156
|
+
|
|
157
|
+
### CardMetric
|
|
158
|
+
Card.Metric — one uppercase label, a large value and an optional sub-line inside a Card.
|
|
159
|
+
- label: ReactNode
|
|
160
|
+
- sub: ReactNode
|
|
161
|
+
- tone: 'neutral' | 'danger' | 'success' | 'warning' | 'info' = neutral
|
|
162
|
+
- value: ReactNode
|
|
163
|
+
|
|
164
|
+
### CardProgress
|
|
165
|
+
Card — surface container with slot anatomy (12d-card-anatomy). Slot anatomy (DESIGN.md §"Card Anatomy"). Status, progress, and metadata are layout-bearing — th…
|
|
166
|
+
- label: ReactNode
|
|
167
|
+
- max: number = 100
|
|
168
|
+
- tone: 'neutral' | 'danger' | 'success' | 'warning' | 'info' = neutral
|
|
169
|
+
- value: number
|
|
170
|
+
|
|
171
|
+
### CardTitle
|
|
172
|
+
Card — surface container with slot anatomy (12d-card-anatomy). Slot anatomy (DESIGN.md §"Card Anatomy"). Status, progress, and metadata are layout-bearing — th…
|
|
173
|
+
|
|
174
|
+
### Carousel
|
|
175
|
+
Renders children as a snap-scrolling track with Prev/Next scroll buttons.
|
|
176
|
+
- ariaLabel: string = Carousel
|
|
177
|
+
- children: ReactNode
|
|
178
|
+
- showControls: boolean = true
|
|
179
|
+
|
|
180
|
+
### Center
|
|
181
|
+
Center — max-width column, auto-centered horizontally. Every Layout reference: https://every-layout.dev/layouts/center/
|
|
182
|
+
- as: ElementType<any, keyof IntrinsicElements> = div
|
|
183
|
+
- children: ReactNode
|
|
184
|
+
- className: string
|
|
185
|
+
- gutter: 'tight' | 'normal' | 'inset' | 'spacious'
|
|
186
|
+
- maxWidth: 'content' | 'max' = content
|
|
187
|
+
- style: CSSProperties
|
|
188
|
+
|
|
189
|
+
### Checkbox
|
|
190
|
+
Checkbox — custom-drawn checkbox with check / indeterminate glyph.
|
|
191
|
+
- checked: boolean
|
|
192
|
+
- indeterminate: boolean = false
|
|
193
|
+
- label: string
|
|
194
|
+
- onChange: (v: boolean) => void
|
|
195
|
+
|
|
196
|
+
### CinematicLink
|
|
197
|
+
CinematicLink - cinematic editorial link treatment for portfolio surfaces.
|
|
198
|
+
- children: string
|
|
199
|
+
- href: string
|
|
200
|
+
|
|
201
|
+
### CircularProgress
|
|
202
|
+
A circular progress ring; pass `value`/`max` or set `indeterminate`.
|
|
203
|
+
- indeterminate: boolean = false
|
|
204
|
+
- label: string
|
|
205
|
+
- max: number = 100
|
|
206
|
+
- size: "sm" | "md" | "lg" = md
|
|
207
|
+
- tone: "neutral" | "danger" | "success" | "warning" | "info" | null
|
|
208
|
+
- value: number = 0
|
|
209
|
+
|
|
210
|
+
### Cluster
|
|
211
|
+
Cluster — wrapping horizontal group with even gaps. Every Layout reference: https://every-layout.dev/layouts/cluster/
|
|
212
|
+
- align: 'start' | 'center' | 'end' | 'stretch' = center
|
|
213
|
+
- as: ElementType<any, keyof IntrinsicElements> = div
|
|
214
|
+
- children: ReactNode
|
|
215
|
+
- className: string
|
|
216
|
+
- gap: 'tight' | 'normal' | 'inset' | 'spacious' = tight
|
|
217
|
+
- justify: 'start' | 'center' | 'end' | 'space-between' = start
|
|
218
|
+
- style: CSSProperties
|
|
219
|
+
|
|
220
|
+
### CodeBlock
|
|
221
|
+
CodeBlock - code display with copy button and optional collapsible toggle.
|
|
222
|
+
- className: string
|
|
223
|
+
- code: string
|
|
224
|
+
- collapsible: boolean = false
|
|
225
|
+
- defaultExpanded: boolean = false
|
|
226
|
+
- filename: string
|
|
227
|
+
- language: string
|
|
228
|
+
- truncateFromStart: boolean = false
|
|
229
|
+
- variant: "inline" | "block" = block
|
|
230
|
+
|
|
231
|
+
### Combobox
|
|
232
|
+
Combobox — searchable single-select (Popover + filtered listbox). A select-with-search built on the HDS Popover. The trigger shows the current selection; openi…
|
|
233
|
+
- aria-label: string
|
|
234
|
+
- className: string
|
|
235
|
+
- disabled: boolean = false
|
|
236
|
+
- emptyMessage: string = No results
|
|
237
|
+
- onChange: (value: string) => void
|
|
238
|
+
- options: ComboboxOption[]
|
|
239
|
+
- placeholder: string = Select…
|
|
240
|
+
- searchPlaceholder: string = Search…
|
|
241
|
+
- value: string | null
|
|
242
|
+
|
|
243
|
+
### CommandPalette
|
|
244
|
+
Mountable trigger + dialog. Drop into header slot; component manages its own open state and Cmd-K / Ctrl-K global keybinding.
|
|
245
|
+
- className: string
|
|
246
|
+
|
|
247
|
+
### ComponentInstanceMatrix
|
|
248
|
+
ComponentInstanceMatrix — responsive specimen matrix for variant and state parity.
|
|
249
|
+
- componentName: string
|
|
250
|
+
- dimensionX: string
|
|
251
|
+
- dimensionY: string
|
|
252
|
+
- freezeRowState: boolean = false
|
|
253
|
+
- isMobile: boolean
|
|
254
|
+
- renderInstance: (rowKey: string, columnKey: string) => ReactNode
|
|
255
|
+
- rowLabelTone: "primary" | "secondary" = primary
|
|
256
|
+
- rowLabelWidth: number = 120
|
|
257
|
+
- title: string
|
|
258
|
+
|
|
259
|
+
### Container
|
|
260
|
+
Container — semantic width-constrained layout. Centers content horizontally and applies semantic max-width constraints. - maxWidth options: 'content' (760px pr…
|
|
261
|
+
- children: ReactNode
|
|
262
|
+
- className: string
|
|
263
|
+
- maxWidth: 'content' | 'max' = max
|
|
264
|
+
- padding: string = var(--semantic-space-surface-padding)
|
|
265
|
+
- style: CSSProperties
|
|
266
|
+
|
|
267
|
+
### ContextMenu
|
|
268
|
+
ContextMenu root + parts. Wrap the right-clickable area in `ContextMenu.Trigger`. Controlled via `onOpenChange`.
|
|
269
|
+
- children: React.ReactNode
|
|
270
|
+
- dir: ("ltr" | "rtl")
|
|
271
|
+
- modal: boolean
|
|
272
|
+
- onOpenChange: ((open: boolean) => void)
|
|
273
|
+
- open: boolean
|
|
274
|
+
|
|
275
|
+
### Cover
|
|
276
|
+
Cover — vertical shell with an auto-centered main region. Every Layout reference: https://every-layout.dev/layouts/cover/
|
|
277
|
+
- as: ElementType<any, keyof IntrinsicElements> = div
|
|
278
|
+
- centerSlot: ReactNode
|
|
279
|
+
- children: ReactNode
|
|
280
|
+
- className: string
|
|
281
|
+
- footer: ReactNode
|
|
282
|
+
- gap: 'tight' | 'normal' | 'inset' | 'spacious' = normal
|
|
283
|
+
- header: ReactNode
|
|
284
|
+
- minHeight: string = 100svh
|
|
285
|
+
- style: CSSProperties
|
|
286
|
+
|
|
287
|
+
### DataTableSection
|
|
288
|
+
Section heading and toolbar over a `Table`. Row actions are consumer nodes in a trailing column, the table scrolls horizontally on narrow widths without a `min…
|
|
289
|
+
- actionsLabel: string = Actions
|
|
290
|
+
- columns: TableColumn[]
|
|
291
|
+
- emptyDescription: ReactNode
|
|
292
|
+
- emptyTitle: ReactNode = Nothing here yet
|
|
293
|
+
- level: 2 | 3 | 4 | 5 | 6 = 2
|
|
294
|
+
- rows: DataTableSectionRow[]
|
|
295
|
+
- title: ReactNode
|
|
296
|
+
- toolbar: ReactNode
|
|
297
|
+
|
|
298
|
+
### DateInput
|
|
299
|
+
Text field + calendar popover for picking a single date.
|
|
300
|
+
- aria-label: string
|
|
301
|
+
- disabled: boolean = false
|
|
302
|
+
- displayFormat: string = yyyy-MM-dd
|
|
303
|
+
- id: string
|
|
304
|
+
- onChange: ((date: Date) => void) | undefined
|
|
305
|
+
- placeholder: string
|
|
306
|
+
- value: Date
|
|
307
|
+
|
|
308
|
+
### DateRangeInput
|
|
309
|
+
DateRangeInput — date-range field composing the existing Popover with Calendar in range mode, so picking a start/end date reads as one overlay pattern with Com…
|
|
310
|
+
- aria-label: string
|
|
311
|
+
- disabled: boolean = false
|
|
312
|
+
- displayFormat: string = yyyy-MM-dd
|
|
313
|
+
- id: string
|
|
314
|
+
- numberOfMonths: number = 2
|
|
315
|
+
- onChange: ((range: DateRange) => void) | undefined
|
|
316
|
+
- placeholder: string = Select date range
|
|
317
|
+
- value: DateRange
|
|
318
|
+
|
|
319
|
+
### DateTimeInput
|
|
320
|
+
Text date field + calendar popover, paired with a native time field, producing one Date.
|
|
321
|
+
- aria-label: string
|
|
322
|
+
- dateFormat: string = yyyy-MM-dd
|
|
323
|
+
- disabled: boolean = false
|
|
324
|
+
- id: string
|
|
325
|
+
- onChange: ((date: Date) => void) | undefined
|
|
326
|
+
- value: Date
|
|
327
|
+
|
|
328
|
+
### DestructiveSection
|
|
329
|
+
Titled danger zone: a title, an explanation, and one danger `Button` that opens an `AlertDialog`. Pressing the button never runs the action; only the dialog's …
|
|
330
|
+
- actionLabel: ReactNode
|
|
331
|
+
- cancelLabel: string = Cancel
|
|
332
|
+
- confirmBody: ReactNode
|
|
333
|
+
- confirmLabel: string
|
|
334
|
+
- description: ReactNode
|
|
335
|
+
- level: 2 | 3 | 4 | 5 | 6 = 2
|
|
336
|
+
- onConfirm: () => void
|
|
337
|
+
- title: ReactNode
|
|
338
|
+
|
|
339
|
+
### Dialog
|
|
340
|
+
Tagged per-export, not on the file block: this module exports ten components and a file-level @figma would hand all ten this one node.
|
|
341
|
+
- children: ReactNode
|
|
342
|
+
- defaultOpen: boolean
|
|
343
|
+
- modal: boolean
|
|
344
|
+
- onOpenChange: ((open: boolean) => void)
|
|
345
|
+
- open: boolean
|
|
346
|
+
|
|
347
|
+
### DialogClose
|
|
348
|
+
Dialog — modal dialog (shadcn baseline, compound parts). shadcn-baseline implementation (8s-7): Radix Dialog primitive (@radix-ui/react-dialog) themed with rol…
|
|
349
|
+
- asChild: boolean
|
|
350
|
+
|
|
351
|
+
### DialogContent
|
|
352
|
+
Dialog — modal dialog (shadcn baseline, compound parts). shadcn-baseline implementation (8s-7): Radix Dialog primitive (@radix-ui/react-dialog) themed with rol…
|
|
353
|
+
- asChild: boolean
|
|
354
|
+
- container: HTMLElement | null
|
|
355
|
+
- forceMount: true
|
|
356
|
+
- hideClose: boolean = false
|
|
357
|
+
- onCloseAutoFocus: ((event: Event) => void)
|
|
358
|
+
- onEscapeKeyDown: ((event: KeyboardEvent) => void)
|
|
359
|
+
- onFocusOutside: ((event: CustomEvent<{ originalEvent: FocusEvent; }>) => void)
|
|
360
|
+
- onInteractOutside: ((event: CustomEvent<{ originalEvent: PointerEvent; }> | CustomEvent<{ original…
|
|
361
|
+
- onOpenAutoFocus: ((event: Event) => void)
|
|
362
|
+
- onPointerDownOutside: ((event: CustomEvent<{ originalEvent: PointerEvent; }>) => void)
|
|
363
|
+
|
|
364
|
+
### DialogDescription
|
|
365
|
+
Dialog — modal dialog (shadcn baseline, compound parts). shadcn-baseline implementation (8s-7): Radix Dialog primitive (@radix-ui/react-dialog) themed with rol…
|
|
366
|
+
- asChild: boolean
|
|
367
|
+
|
|
368
|
+
### DialogFooter
|
|
369
|
+
Dialog — modal dialog (shadcn baseline, compound parts). shadcn-baseline implementation (8s-7): Radix Dialog primitive (@radix-ui/react-dialog) themed with rol…
|
|
370
|
+
|
|
371
|
+
### DialogHeader
|
|
372
|
+
Dialog — modal dialog (shadcn baseline, compound parts). shadcn-baseline implementation (8s-7): Radix Dialog primitive (@radix-ui/react-dialog) themed with rol…
|
|
373
|
+
|
|
374
|
+
### DialogOverlay
|
|
375
|
+
Dialog — modal dialog (shadcn baseline, compound parts). shadcn-baseline implementation (8s-7): Radix Dialog primitive (@radix-ui/react-dialog) themed with rol…
|
|
376
|
+
- asChild: boolean
|
|
377
|
+
- forceMount: true
|
|
378
|
+
|
|
379
|
+
### DialogPortal
|
|
380
|
+
Dialog — modal dialog (shadcn baseline, compound parts). shadcn-baseline implementation (8s-7): Radix Dialog primitive (@radix-ui/react-dialog) themed with rol…
|
|
381
|
+
- children: React.ReactNode
|
|
382
|
+
- container: Element | DocumentFragment | null
|
|
383
|
+
- forceMount: true
|
|
384
|
+
|
|
385
|
+
### DialogTitle
|
|
386
|
+
Dialog — modal dialog (shadcn baseline, compound parts). shadcn-baseline implementation (8s-7): Radix Dialog primitive (@radix-ui/react-dialog) themed with rol…
|
|
387
|
+
- asChild: boolean
|
|
388
|
+
|
|
389
|
+
### DialogTrigger
|
|
390
|
+
Dialog — modal dialog (shadcn baseline, compound parts). shadcn-baseline implementation (8s-7): Radix Dialog primitive (@radix-ui/react-dialog) themed with rol…
|
|
391
|
+
- asChild: boolean
|
|
392
|
+
|
|
393
|
+
### Disclosure
|
|
394
|
+
Disclosure - compact disclosure surface for optional explanatory content.
|
|
395
|
+
- accent: boolean = false
|
|
396
|
+
- children: ReactNode
|
|
397
|
+
- className: string
|
|
398
|
+
- contentStyle: CSSProperties
|
|
399
|
+
- defaultOpen: boolean = false
|
|
400
|
+
- label: ReactNode
|
|
401
|
+
- onOpenChange: ((open: boolean) => void)
|
|
402
|
+
- open: boolean
|
|
403
|
+
- triggerStyle: CSSProperties
|
|
404
|
+
- variant: 'panel' | 'nav' | 'card' = panel
|
|
405
|
+
|
|
406
|
+
### Divider
|
|
407
|
+
Divider — semantic separator between content regions.
|
|
408
|
+
- orientation: "horizontal" | "vertical" | null = horizontal
|
|
409
|
+
- spacing: string | number
|
|
410
|
+
- strong: boolean
|
|
411
|
+
- variant: "strong" | "default" | null
|
|
412
|
+
|
|
413
|
+
### DocLinkCard
|
|
414
|
+
DocLinkCard - navigation card for editorial and documentation cross-links.
|
|
415
|
+
- accent: boolean = false
|
|
416
|
+
- affordance: "up-right" | "right" | "left" = up-right
|
|
417
|
+
- description: string
|
|
418
|
+
- disabled: boolean = false
|
|
419
|
+
- href: string
|
|
420
|
+
- icon: LucideIcon
|
|
421
|
+
- meta: string
|
|
422
|
+
- metaStyle: "caption" | "ui" = caption
|
|
423
|
+
- title: string
|
|
424
|
+
- variant: "feature" | "pager" = feature
|
|
425
|
+
|
|
426
|
+
### EmptyState
|
|
427
|
+
EmptyState — consistent no-data placeholder for lists, grids, and sections.
|
|
428
|
+
- className: string
|
|
429
|
+
- description: ReactNode
|
|
430
|
+
- title: ReactNode
|
|
431
|
+
|
|
432
|
+
### Field
|
|
433
|
+
Caption label paired with a value — used in metadata grids and read-only forms.
|
|
434
|
+
- children: React.ReactNode
|
|
435
|
+
- label: string
|
|
436
|
+
- mono: boolean | null
|
|
437
|
+
- tone: "neutral" | "danger" | "success" | "warning" | "info" | null
|
|
438
|
+
- value: ReactNode
|
|
439
|
+
|
|
440
|
+
### FileInput
|
|
441
|
+
A dashed dropzone that opens the native file picker or accepts a drag-and-drop.
|
|
442
|
+
- accept: string
|
|
443
|
+
- disabled: boolean
|
|
444
|
+
- label: ReactNode = Click to upload or drag and drop
|
|
445
|
+
- multiple: boolean
|
|
446
|
+
- onFiles: ((files: File[]) => void)
|
|
447
|
+
|
|
448
|
+
### Form
|
|
449
|
+
Styled `<form>` with consistent vertical field rhythm. Tagged per-export: FormField and FormFieldShell share this module and have no Figma node, so a file-leve…
|
|
450
|
+
|
|
451
|
+
### FormActions
|
|
452
|
+
Form footer with one fixed order: destructive (far left, if any), then secondary, then primary last and right-most. Gap is the tight layout token.
|
|
453
|
+
- destructive: ReactNode
|
|
454
|
+
- primary: ReactNode
|
|
455
|
+
- secondary: ReactNode
|
|
456
|
+
- sticky: boolean = false
|
|
457
|
+
|
|
458
|
+
### FormField
|
|
459
|
+
Label + description + error wrapper that wires the a11y relationships onto its single child control via cloneElement. Validation-library agnostic — pass `error…
|
|
460
|
+
- children: ReactElement<any, string | JSXElementConstructor<any>>
|
|
461
|
+
- className: string
|
|
462
|
+
- description: string
|
|
463
|
+
- error: string
|
|
464
|
+
- htmlFor: string
|
|
465
|
+
- label: string
|
|
466
|
+
- required: boolean = false
|
|
467
|
+
|
|
468
|
+
### FormFieldShell
|
|
469
|
+
Presentational label + control slot + helper/error markup. Renders `children` verbatim — it does NOT clone — so it is safe to use with controls that own a call…
|
|
470
|
+
- children: ReactNode
|
|
471
|
+
- className: string
|
|
472
|
+
- controlId: string
|
|
473
|
+
- description: string
|
|
474
|
+
- error: string
|
|
475
|
+
- label: string
|
|
476
|
+
- required: boolean = false
|
|
477
|
+
|
|
478
|
+
### FoundationSwatch
|
|
479
|
+
FoundationSwatch - governed foundation specimen for color and semantic role previews.
|
|
480
|
+
- background: string
|
|
481
|
+
- bordered: boolean = false
|
|
482
|
+
- details: string[]
|
|
483
|
+
- foreground: string = var(--semantic-color-content-primary)
|
|
484
|
+
- hidePreviewLabel: boolean = false
|
|
485
|
+
- label: string
|
|
486
|
+
- note: ReactNode
|
|
487
|
+
- previewPosition: 'bottom-left' | 'top-left' | 'center' = center
|
|
488
|
+
- specimen: ReactNode
|
|
489
|
+
- swatchVar: string
|
|
490
|
+
- tokenDisplayPreset: 'depth1' | 'depth2' | 'full' = depth2
|
|
491
|
+
- tokenPath: string
|
|
492
|
+
- value: string
|
|
493
|
+
|
|
494
|
+
### Frame
|
|
495
|
+
Frame — aspect-ratio-locked, token-clipped media box. Every Layout reference: https://every-layout.dev/layouts/frame/
|
|
496
|
+
- as: ElementType<any, keyof IntrinsicElements> = div
|
|
497
|
+
- children: ReactNode
|
|
498
|
+
- className: string
|
|
499
|
+
- radius: 'none' | 'sm' | 'md' | 'full' = md
|
|
500
|
+
- ratio: number = 16 / 9
|
|
501
|
+
- style: CSSProperties
|
|
502
|
+
|
|
503
|
+
### Grid
|
|
504
|
+
Grid — responsive grid composition primitive. Enforces semantic gap and column values. No arbitrary CSS grid. - layout='fixed': responsive base (collapses via …
|
|
505
|
+
- as: ElementType<any, keyof IntrinsicElements> = div
|
|
506
|
+
- children: ReactNode
|
|
507
|
+
- className: string
|
|
508
|
+
- columns: number = 12
|
|
509
|
+
- gap: 'tight' | 'normal' | 'inset' | 'spacious' = inset
|
|
510
|
+
- layout: 'fixed' | 'auto-fit' = fixed
|
|
511
|
+
- style: CSSProperties
|
|
512
|
+
- subgrid: boolean = false
|
|
513
|
+
|
|
514
|
+
### HdsDocsShell
|
|
515
|
+
HdsDocsShell — three-region docs shell (left nav rail, content, right TOC rail), driven by grid columns that default to 0 and are set per breakpoint. hds#280 s…
|
|
516
|
+
- children: ReactNode
|
|
517
|
+
- className: string
|
|
518
|
+
- leftRail: ReactNode
|
|
519
|
+
- rightRail: ReactNode
|
|
520
|
+
- style: CSSProperties
|
|
521
|
+
- topOffset: string = 0px
|
|
522
|
+
|
|
523
|
+
### HdsThemeProvider
|
|
524
|
+
Renders a `data-hds` scope wrapper that carries the four theming dials as root attributes + CSS vars, and exposes them to `useHdsTheme()`.
|
|
525
|
+
- as: ElementType<any, keyof IntrinsicElements> = div
|
|
526
|
+
- brand: string
|
|
527
|
+
- children: React.ReactNode
|
|
528
|
+
- className: string
|
|
529
|
+
- density: 'comfortable' | 'compact'
|
|
530
|
+
- fontFamily: string
|
|
531
|
+
- fontFamilyMono: string
|
|
532
|
+
- style: CSSProperties
|
|
533
|
+
- theme: 'light' | 'dark'
|
|
534
|
+
|
|
535
|
+
### HeadingStack
|
|
536
|
+
HeadingStack — enforced vertical rhythm for heading + subheading pairs. Automatically handles gap and secondary color, preventing manual stacking. - Heading le…
|
|
537
|
+
- as: ElementType = div
|
|
538
|
+
- gap: HdsHeadingGap = px8
|
|
539
|
+
- heading: string
|
|
540
|
+
- headingAs: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'
|
|
541
|
+
- level: HdsHeadingLevel
|
|
542
|
+
- subheading: string
|
|
543
|
+
- subheadingAs: 'p' | 'div' | 'span' = p
|
|
544
|
+
|
|
545
|
+
### HoverCard
|
|
546
|
+
HoverCard root + parts. Controlled via `open`/`onOpenChange`, or uncontrolled with `defaultOpen`; tune timing with `openDelay`/`closeDelay`.
|
|
547
|
+
- children: React.ReactNode
|
|
548
|
+
- closeDelay: number
|
|
549
|
+
- defaultOpen: boolean
|
|
550
|
+
- onOpenChange: ((open: boolean) => void)
|
|
551
|
+
- open: boolean
|
|
552
|
+
- openDelay: number
|
|
553
|
+
|
|
554
|
+
### Icon
|
|
555
|
+
Icon — semantic icon wrapper for Lucide icons.
|
|
556
|
+
- aria-hidden: boolean | "true" | "false" = true
|
|
557
|
+
- className: string
|
|
558
|
+
- color: string = currentColor
|
|
559
|
+
- icon: LucideIcon
|
|
560
|
+
- size: IconSize = small
|
|
561
|
+
- style: CSSProperties
|
|
562
|
+
- weight: "fill" | "bold" | "light" | "thin" | "regular" | "duotone"
|
|
563
|
+
|
|
564
|
+
### IconButton
|
|
565
|
+
IconButton ” icon-only action trigger built on the shared Button primitive.
|
|
566
|
+
- aria-label: string
|
|
567
|
+
- asChild: boolean
|
|
568
|
+
- disabled: boolean
|
|
569
|
+
- icon: LucideIcon
|
|
570
|
+
- iconColor: string
|
|
571
|
+
- iconLeft: ReactNode
|
|
572
|
+
- iconRight: ReactNode
|
|
573
|
+
- iconSize: IconSize
|
|
574
|
+
- label: string
|
|
575
|
+
- loading: boolean
|
|
576
|
+
- size: "sm" | "md" | "lg"
|
|
577
|
+
- tone: "neutral" | "danger" | "success" | "warning" | "info" | null
|
|
578
|
+
- variant: "primary" | "secondary" | "tertiary" | null
|
|
579
|
+
|
|
580
|
+
### InlineCode
|
|
581
|
+
InlineCode — inline code chip for token paths, file paths, and code-adjacent prose.
|
|
582
|
+
- children: ReactNode
|
|
583
|
+
- compact: boolean
|
|
584
|
+
- copyable: boolean = false
|
|
585
|
+
- density: "comfortable" | "compact" | null
|
|
586
|
+
- style: CSSProperties
|
|
587
|
+
|
|
588
|
+
### InlineLink
|
|
589
|
+
InlineLink ” inline navigation and external-link primitive for body copy.
|
|
590
|
+
- children: ReactNode
|
|
591
|
+
- externalIcon: boolean = true
|
|
592
|
+
- href: string
|
|
593
|
+
|
|
594
|
+
### Input
|
|
595
|
+
Input — text field primitive with label, helper, and error slots.
|
|
596
|
+
- className: string
|
|
597
|
+
- disabled: boolean
|
|
598
|
+
- error: boolean
|
|
599
|
+
- errorMessage: string
|
|
600
|
+
- helperText: string
|
|
601
|
+
- inputClassName: string
|
|
602
|
+
- label: string
|
|
603
|
+
- leadingVisual: ReactNode
|
|
604
|
+
- loading: boolean = false
|
|
605
|
+
- size: InputSize = md
|
|
606
|
+
- textStyle: "body" | "mono" = body
|
|
607
|
+
- trailingVisual: ReactNode
|
|
608
|
+
- type: 'text' | 'email' | 'password' | 'search' | 'tel' | 'url' | 'number' = text
|
|
609
|
+
|
|
610
|
+
### InputGroup
|
|
611
|
+
A single-line input with optional `leading`/`trailing` adornments.
|
|
612
|
+
- className: string
|
|
613
|
+
- leading: ReactNode
|
|
614
|
+
- size: "sm" | "md" | "lg" | null
|
|
615
|
+
- trailing: ReactNode
|
|
616
|
+
|
|
617
|
+
### Kbd
|
|
618
|
+
Renders a keyboard key or shortcut token, e.g. `<Kbd>⌘K</Kbd>`.
|
|
619
|
+
- size: "sm" | "md" | "lg" | null
|
|
620
|
+
|
|
621
|
+
### Lightbox
|
|
622
|
+
Lightbox — full-bleed image viewer built on Radix Dialog. Full-bleed image viewer built on Radix Dialog (raw primitives, not the card `Dialog` wrapper — a ligh…
|
|
623
|
+
- alt: string
|
|
624
|
+
- caption: string
|
|
625
|
+
- captionHref: string
|
|
626
|
+
- captionLabel: string
|
|
627
|
+
- naturalHeight: number
|
|
628
|
+
- naturalWidth: number
|
|
629
|
+
- onClose: () => void
|
|
630
|
+
- open: boolean
|
|
631
|
+
- src: string
|
|
632
|
+
|
|
633
|
+
### Menu
|
|
634
|
+
Menu root + parts. Controlled via `open`/`onOpenChange`, or uncontrolled with `defaultOpen`.
|
|
635
|
+
- children: React.ReactNode
|
|
636
|
+
- defaultOpen: boolean
|
|
637
|
+
- dir: ("ltr" | "rtl")
|
|
638
|
+
- modal: boolean
|
|
639
|
+
- onOpenChange: ((open: boolean) => void)
|
|
640
|
+
- open: boolean
|
|
641
|
+
|
|
642
|
+
### MetadataList
|
|
643
|
+
Renders object metadata as a semantic `<dl>` of term/description pairs.
|
|
644
|
+
- footer: ReactNode
|
|
645
|
+
- items: MetadataListItem[]
|
|
646
|
+
- orientation: "horizontal" | "vertical" | null = vertical
|
|
647
|
+
- variant: "plain" | "divided" = plain
|
|
648
|
+
|
|
649
|
+
### MetricTile
|
|
650
|
+
One metric tile: eyebrow label, `heading2` value, caption sub line, on a raised surface at one fixed min-height. Wraps `Card.Metric` (the sibling with the eyeb…
|
|
651
|
+
- label: ReactNode
|
|
652
|
+
- sub: ReactNode
|
|
653
|
+
- tone: 'neutral' | 'success' | 'warning' | 'danger' | 'info' = neutral
|
|
654
|
+
- value: ReactNode
|
|
655
|
+
|
|
656
|
+
### MetricTiles
|
|
657
|
+
A row of `MetricTile`s. The grid has `min(tiles, 4)` columns, so three tiles fill three columns and never leave an empty fourth. The default for any row of hea…
|
|
658
|
+
- children: ReactNode
|
|
659
|
+
|
|
660
|
+
### MultiSelector
|
|
661
|
+
MultiSelector — multi-select dropdown composing the existing Popover with a checkbox option list, so choosing several values from a fixed set reads as one over…
|
|
662
|
+
- className: string
|
|
663
|
+
- disabled: boolean = false
|
|
664
|
+
- onChange: (next: string[]) => void
|
|
665
|
+
- options: MultiSelectorOption[]
|
|
666
|
+
- placeholder: string = Select…
|
|
667
|
+
- value: string[]
|
|
668
|
+
|
|
669
|
+
### NavGroup
|
|
670
|
+
NavGroup - labeled navigation group for stacks of nav items.
|
|
671
|
+
- children: ReactNode
|
|
672
|
+
- className: string
|
|
673
|
+
- collapsible: boolean = false
|
|
674
|
+
- contentStyle: CSSProperties
|
|
675
|
+
- getExact: ((item: NavItem) => boolean)
|
|
676
|
+
- items: NavItem[]
|
|
677
|
+
- label: string
|
|
678
|
+
- level: NavLevel = section
|
|
679
|
+
- onNavigate: (() => void)
|
|
680
|
+
- style: CSSProperties
|
|
681
|
+
- variant: 'side' | 'toc' = side
|
|
682
|
+
|
|
683
|
+
### NavItem
|
|
684
|
+
NavItem - navigation row primitive for sidebars, table of contents, and list navigation.
|
|
685
|
+
- active: boolean = false
|
|
686
|
+
- disabled: boolean = false
|
|
687
|
+
- label: string
|
|
688
|
+
- level: NavLevel = root
|
|
689
|
+
- onNavigate: ((event: MouseEvent<HTMLAnchorElement, MouseEvent>) => void)
|
|
690
|
+
- variant: NavVariant = side
|
|
691
|
+
|
|
692
|
+
### OverflowList
|
|
693
|
+
Renders up to `max` children followed by a `+N` overflow chip (or custom node).
|
|
694
|
+
- children: ReactNode
|
|
695
|
+
- max: number
|
|
696
|
+
- renderOverflow: ((count: number) => ReactNode)
|
|
697
|
+
|
|
698
|
+
### Page
|
|
699
|
+
Page — standard page shell. Wraps page content in Container (width constraint) and applies the canonical vertical padding so content breathes against the viewp…
|
|
700
|
+
- children: ReactNode
|
|
701
|
+
- className: string
|
|
702
|
+
- maxWidth: 'content' | 'max' = max
|
|
703
|
+
- paddingY: 'default' | 'compact' | 'none' = default
|
|
704
|
+
- style: CSSProperties
|
|
705
|
+
|
|
706
|
+
### PageHeader
|
|
707
|
+
Screen header: breadcrumb slot, the title at the one canonical page-title size (`heading2`), a status slot and an actions slot. Every screen has exactly one. `…
|
|
708
|
+
- actions: ReactNode
|
|
709
|
+
- breadcrumb: ReactNode
|
|
710
|
+
- level: PageHeaderLevel = 1
|
|
711
|
+
- status: ReactNode
|
|
712
|
+
- title: ReactNode
|
|
713
|
+
|
|
714
|
+
### Pagination
|
|
715
|
+
Paged navigation with first/last anchors, sibling pages, and ellipses.
|
|
716
|
+
- count: number
|
|
717
|
+
- label: string = Pagination
|
|
718
|
+
- onPageChange: (page: number) => void
|
|
719
|
+
- page: number
|
|
720
|
+
- siblingCount: number = 1
|
|
721
|
+
|
|
722
|
+
### Pin
|
|
723
|
+
Pin — sticky-pin an element within its scroll region.
|
|
724
|
+
- as: ElementType<any, keyof IntrinsicElements> = div
|
|
725
|
+
- children: ReactNode
|
|
726
|
+
- className: string
|
|
727
|
+
- style: CSSProperties
|
|
728
|
+
- top: string = 0
|
|
729
|
+
|
|
730
|
+
### Popover
|
|
731
|
+
Popover root + parts. Controlled via `open`/`onOpenChange`, or uncontrolled with `defaultOpen`.
|
|
732
|
+
- children: React.ReactNode
|
|
733
|
+
- defaultOpen: boolean
|
|
734
|
+
- modal: boolean
|
|
735
|
+
- onOpenChange: ((open: boolean) => void)
|
|
736
|
+
- open: boolean
|
|
737
|
+
|
|
738
|
+
### Progress
|
|
739
|
+
Linear progress. Determinate when `value` is a number, else indeterminate.
|
|
740
|
+
- label: string = Progress
|
|
741
|
+
- size: "sm" | "md" | "lg" | null
|
|
742
|
+
- value: number | null = null
|
|
743
|
+
|
|
744
|
+
### Radio
|
|
745
|
+
Radio — radio button with animated selection indicator.
|
|
746
|
+
- checked: boolean
|
|
747
|
+
- label: string
|
|
748
|
+
- onChange: (v: boolean) => void
|
|
749
|
+
|
|
750
|
+
### Reveal
|
|
751
|
+
Reveal — reveal-on-scroll primitive via CSS scroll-driven animation.
|
|
752
|
+
- animation: 'fade' | 'fade-up' | 'fade-down' | 'scale' = fade-up
|
|
753
|
+
- as: ElementType<any, keyof IntrinsicElements> = div
|
|
754
|
+
- children: ReactNode
|
|
755
|
+
- className: string
|
|
756
|
+
- style: CSSProperties
|
|
757
|
+
|
|
758
|
+
### SegmentedControl
|
|
759
|
+
SegmentedControl " segmented selection input for compact mutually-exclusive choices. The active×hover×pressed×disabled×secondary state matrix is expressed thro…
|
|
760
|
+
- aria-label: string
|
|
761
|
+
- fullWidth: boolean = false
|
|
762
|
+
- label: string
|
|
763
|
+
- onChange: (value: string) => void
|
|
764
|
+
- options: HdsSegmentedOption[]
|
|
765
|
+
- railPadding: Padding<string | number>
|
|
766
|
+
- segmentPaddingX: PaddingLeft<string | number>
|
|
767
|
+
- size: NonNullable<"sm" | "md" | null> | undefined = md
|
|
768
|
+
- value: string
|
|
769
|
+
- variant: NonNullable<"primary" | "secondary" | null> | undefined = primary
|
|
770
|
+
|
|
771
|
+
### Select
|
|
772
|
+
Select — dropdown selector built on Radix Select (ADR-001 Radix convention). Radix owns the listbox a11y contract: managed focus + active-descendant, typeahead…
|
|
773
|
+
- container: HTMLElement | null
|
|
774
|
+
- label: string
|
|
775
|
+
- onChange: (v: string) => void
|
|
776
|
+
- options: { value: string; label: string; }[]
|
|
777
|
+
- showLabel: boolean = true
|
|
778
|
+
- value: string
|
|
779
|
+
|
|
780
|
+
### SelectableCard
|
|
781
|
+
A card-shaped single checkbox — click or activate to toggle selection.
|
|
782
|
+
- disabled: boolean
|
|
783
|
+
- onSelectedChange: ((selected: boolean) => void)
|
|
784
|
+
- selected: boolean = false
|
|
785
|
+
|
|
786
|
+
### SideNav
|
|
787
|
+
SideNav - sidebar navigation row primitive. Two levels: root — top-level section link. Full-width row using the shared nav label type style. nested — child pag…
|
|
788
|
+
- active: boolean = false
|
|
789
|
+
- disabled: boolean = false
|
|
790
|
+
- href: string
|
|
791
|
+
- indent: number | boolean = 0
|
|
792
|
+
- label: string
|
|
793
|
+
- level: 'root' | 'nested' = nested
|
|
794
|
+
- onNavigate: ((event: MouseEvent<HTMLAnchorElement, MouseEvent>) => void)
|
|
795
|
+
- titleLabel: boolean = false
|
|
796
|
+
|
|
797
|
+
### Sidebar
|
|
798
|
+
Sidebar — fixed-width rail beside fluid content, no media query. Every Layout reference: https://every-layout.dev/layouts/sidebar/
|
|
799
|
+
- as: ElementType<any, keyof IntrinsicElements> = div
|
|
800
|
+
- children: [ReactNode, ReactNode]
|
|
801
|
+
- className: string
|
|
802
|
+
- contentMin: string = 50%
|
|
803
|
+
- gap: 'tight' | 'normal' | 'inset' | 'spacious' = normal
|
|
804
|
+
- side: 'start' | 'end' = start
|
|
805
|
+
- sideWidth: string = 16rem
|
|
806
|
+
- style: CSSProperties
|
|
807
|
+
|
|
808
|
+
### Skeleton
|
|
809
|
+
Decorative loading placeholder. Marked aria-hidden — announce the loading state on the surrounding region (e.g. aria-busy) rather than per skeleton.
|
|
810
|
+
- height: string | number
|
|
811
|
+
- variant: "text" | "rectangular" | "circular" | null = rectangular
|
|
812
|
+
- width: string | number
|
|
813
|
+
|
|
814
|
+
### Sketch
|
|
815
|
+
Sketch — shared shell for generative canvases and WebGL sketches.
|
|
816
|
+
- children: ReactNode
|
|
817
|
+
- controls: ReactNode
|
|
818
|
+
- title: string
|
|
819
|
+
|
|
820
|
+
### Slider
|
|
821
|
+
Slider — range slider with label and value display.
|
|
822
|
+
- label: string
|
|
823
|
+
- max: number
|
|
824
|
+
- min: number
|
|
825
|
+
- onChange: (v: number) => void
|
|
826
|
+
- step: number = 1
|
|
827
|
+
- value: number
|
|
828
|
+
|
|
829
|
+
### Spinner
|
|
830
|
+
Indeterminate spinner. Inherits the surrounding text color via currentColor.
|
|
831
|
+
- label: string = Loading
|
|
832
|
+
- size: "sm" | "md" | "lg" | null
|
|
833
|
+
|
|
834
|
+
### Stack
|
|
835
|
+
Stack — one-dimensional layout primitive.
|
|
836
|
+
- align: 'start' | 'center' | 'end' | 'stretch'
|
|
837
|
+
- as: ElementType<any, keyof IntrinsicElements> = div
|
|
838
|
+
- children: ReactNode
|
|
839
|
+
- className: string
|
|
840
|
+
- direction: "row" | "column" = column
|
|
841
|
+
- gap: GapOption = tight
|
|
842
|
+
- justify: 'start' | 'center' | 'end' | 'space-between'
|
|
843
|
+
- style: CSSProperties
|
|
844
|
+
- wrap: FlexWrap
|
|
845
|
+
|
|
846
|
+
### StackedCardRail
|
|
847
|
+
StackedCardRail — horizontally-scrolling stacked card carousel. Scroll mechanism: vertical scroll on an absolutely-positioned inner container is mapped to hori…
|
|
848
|
+
- cards: StackedCardRailCard[]
|
|
849
|
+
|
|
850
|
+
### Stat
|
|
851
|
+
Headline metric — large value, uppercase caption label, optional sub-line.
|
|
852
|
+
- label: string
|
|
853
|
+
- sub: ReactNode
|
|
854
|
+
- tone: "neutral" | "danger" | "success" | "warning" | "info" | null
|
|
855
|
+
- value: ReactNode
|
|
856
|
+
|
|
857
|
+
### StatusDot
|
|
858
|
+
A small solid dot conveying a semantic status via `tone`.
|
|
859
|
+
- label: string
|
|
860
|
+
- size: "sm" | "md" | "lg" | null
|
|
861
|
+
- tone: "neutral" | "danger" | "success" | "warning" | "info" | "inProgress" | null
|
|
862
|
+
|
|
863
|
+
### StatusListItem
|
|
864
|
+
Status dot + title row with optional muted notes and trailing slot (e.g. badge).
|
|
865
|
+
- notes: ReactNode[]
|
|
866
|
+
- title: ReactNode
|
|
867
|
+
- tone: "neutral" | "danger" | "success" | "warning" | "info" | null
|
|
868
|
+
- trailing: ReactNode
|
|
869
|
+
|
|
870
|
+
### StatusTile
|
|
871
|
+
Block-layout sibling of StatusListItem. Renders a raised surface tile with title, optional muted notes, and a trailing slot for a badge or affordance. Status c…
|
|
872
|
+
- notes: ReactNode[]
|
|
873
|
+
- title: ReactNode
|
|
874
|
+
- tone: 'success' | 'warning' | 'danger' | 'info' | 'neutral' = neutral
|
|
875
|
+
- trailing: ReactNode
|
|
876
|
+
|
|
877
|
+
### Stepper
|
|
878
|
+
Step indicator for multi-step flows. Purely presentational — no navigation.
|
|
879
|
+
- activeStep: number
|
|
880
|
+
- orientation: "horizontal" | "vertical" = horizontal
|
|
881
|
+
- steps: Step[]
|
|
882
|
+
|
|
883
|
+
### StepperField
|
|
884
|
+
StepperField ” numeric input with decrement/increment controls. Classification baseline: Material Design, Chakra UI, and Ant Design treat steppers as numeric i…
|
|
885
|
+
- inputStep: number
|
|
886
|
+
- label: string
|
|
887
|
+
- max: number
|
|
888
|
+
- min: number
|
|
889
|
+
- onChange: (value: number) => void
|
|
890
|
+
- precision: number
|
|
891
|
+
- step: number
|
|
892
|
+
- value: number
|
|
893
|
+
|
|
894
|
+
### Surface
|
|
895
|
+
Surface — governed inset surface primitive. Enforces the "Surface Inset" rule: backgrounds MUST have internal padding. - Default padding: px24 (cards) | px16 (…
|
|
896
|
+
- as: ElementType<any, keyof IntrinsicElements> = div
|
|
897
|
+
- children: ReactNode
|
|
898
|
+
- className: string
|
|
899
|
+
- overflow: Overflow
|
|
900
|
+
- padding: PaddingOption = component
|
|
901
|
+
- shadow: boolean = false
|
|
902
|
+
- style: CSSProperties
|
|
903
|
+
- theme: "light" | "dark"
|
|
904
|
+
|
|
905
|
+
### Switcher
|
|
906
|
+
Switcher — flips a row to a column below a width threshold, no media query. Every Layout reference: https://every-layout.dev/layouts/the-switcher/
|
|
907
|
+
- as: ElementType<any, keyof IntrinsicElements> = div
|
|
908
|
+
- children: ReactNode
|
|
909
|
+
- className: string
|
|
910
|
+
- gap: 'tight' | 'normal' | 'inset' | 'spacious' = normal
|
|
911
|
+
- limit: number
|
|
912
|
+
- style: CSSProperties
|
|
913
|
+
- threshold: string = 30rem
|
|
914
|
+
|
|
915
|
+
### Table
|
|
916
|
+
Table - structured data table primitive for documentation and compact UI matrices.
|
|
917
|
+
- caption: ReactNode
|
|
918
|
+
- captionAction: ReactNode
|
|
919
|
+
- columns: TableColumn[]
|
|
920
|
+
- density: 'compact' | 'comfortable'
|
|
921
|
+
- description: ReactNode
|
|
922
|
+
- flush: boolean = false
|
|
923
|
+
- labelledBy: string
|
|
924
|
+
- minWidth: string | number
|
|
925
|
+
- rows: TableRow[]
|
|
926
|
+
- stickyHeader: boolean = false
|
|
927
|
+
|
|
928
|
+
### Tabs
|
|
929
|
+
The tab set itself. Tagged here rather than in the file block because TabsList and TabsContent share this module and have no Figma node of their own — a file-l…
|
|
930
|
+
- activationMode: "automatic" | "manual"
|
|
931
|
+
- asChild: boolean
|
|
932
|
+
- defaultValue: string
|
|
933
|
+
- dir: ("ltr" | "rtl")
|
|
934
|
+
- onValueChange: ((value: string) => void)
|
|
935
|
+
- orientation: "horizontal" | "vertical"
|
|
936
|
+
- value: string
|
|
937
|
+
|
|
938
|
+
### TabsContent
|
|
939
|
+
Tabs — Radix-backed underline tabs (Root, List, Trigger, Content). Underline pattern math: - TabsList carries `border-b border-border/40` (the divider, half-st…
|
|
940
|
+
- asChild: boolean
|
|
941
|
+
- forceMount: true
|
|
942
|
+
- value: string
|
|
943
|
+
|
|
944
|
+
### TabsList
|
|
945
|
+
Tabs — Radix-backed underline tabs (Root, List, Trigger, Content). Underline pattern math: - TabsList carries `border-b border-border/40` (the divider, half-st…
|
|
946
|
+
- asChild: boolean
|
|
947
|
+
- loop: boolean
|
|
948
|
+
|
|
949
|
+
### TabsTrigger
|
|
950
|
+
Tabs — Radix-backed underline tabs (Root, List, Trigger, Content). Underline pattern math: - TabsList carries `border-b border-border/40` (the divider, half-st…
|
|
951
|
+
- asChild: boolean
|
|
952
|
+
- value: string
|
|
953
|
+
|
|
954
|
+
### Tag
|
|
955
|
+
Tag — interactive filter and category chip. The outer <button> carries the accessible 44px hit target directly via the size token while the inner pill keeps th…
|
|
956
|
+
- active: boolean = false
|
|
957
|
+
- children: ReactNode
|
|
958
|
+
|
|
959
|
+
### Text
|
|
960
|
+
Text — polymorphic typography primitive spanning the full HDS type ramp.
|
|
961
|
+
- as: "symbol" | "object" | "map" | "filter" | "title" | "a" | "button" | "div" | "fo… = defaultTagMap[variant]
|
|
962
|
+
- children: ReactNode
|
|
963
|
+
- className: string
|
|
964
|
+
- style: CSSProperties
|
|
965
|
+
- variant: TextVariant
|
|
966
|
+
|
|
967
|
+
### TextLockup
|
|
968
|
+
TextLockup - governed title-and-description pairing primitive.
|
|
969
|
+
- align: 'left' | 'center' = left
|
|
970
|
+
- as: ElementType = div
|
|
971
|
+
- description: ReactNode
|
|
972
|
+
- descriptionAs: 'div' | 'p' | 'span' = div
|
|
973
|
+
- eyebrow: string
|
|
974
|
+
- id: string
|
|
975
|
+
- size: 'hero' | 'heroXl' | 'section' | 'metric' | 'detail' | 'numbered'
|
|
976
|
+
- title: string
|
|
977
|
+
- titleAs: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span'
|
|
978
|
+
|
|
979
|
+
### Textarea
|
|
980
|
+
Textarea — multi-line text field primitive with label, helper, and error slots. Mirrors Input's shell + token skin as a native `<textarea>`. Figma parity: the …
|
|
981
|
+
- className: string
|
|
982
|
+
- disabled: boolean
|
|
983
|
+
- error: boolean
|
|
984
|
+
- errorMessage: string
|
|
985
|
+
- helperText: string
|
|
986
|
+
- label: string
|
|
987
|
+
- resize: TextareaResize = vertical
|
|
988
|
+
- textareaClassName: string
|
|
989
|
+
|
|
990
|
+
### TileGrid
|
|
991
|
+
Auto-fill responsive grid for status/micro tiles. Wraps tile children in a one-line grid declaration so pages don't repeat the auto-fill minmax recipe.
|
|
992
|
+
- gap: "sm" | "md" | "xs" = sm
|
|
993
|
+
- minTileWidth: string = 260px
|
|
994
|
+
|
|
995
|
+
### TimeInput
|
|
996
|
+
A native time field skinned with HDS input chrome. Value is a `HH:mm` string.
|
|
997
|
+
- size: "sm" | "md" | "lg" | null
|
|
998
|
+
|
|
999
|
+
### Timestamp
|
|
1000
|
+
Presents a date/time with a machine-readable `dateTime` for accessibility.
|
|
1001
|
+
- date: string | number | Date
|
|
1002
|
+
- format: 'date' | 'time' | 'datetime' | 'relative' = datetime
|
|
1003
|
+
- locale: string
|
|
1004
|
+
- now: string | number | Date
|
|
1005
|
+
|
|
1006
|
+
### ToastProvider
|
|
1007
|
+
Provider + viewport for the toast system. Wrap the app root once.
|
|
1008
|
+
- children: React.ReactNode
|
|
1009
|
+
- duration: number = 5000
|
|
1010
|
+
- swipeDirection: SwipeDirection = right
|
|
1011
|
+
|
|
1012
|
+
### Toggle
|
|
1013
|
+
Toggle — boolean on/off toggle with animated thumb.
|
|
1014
|
+
- checked: boolean
|
|
1015
|
+
- label: string
|
|
1016
|
+
- onChange: (v: boolean) => void
|
|
1017
|
+
|
|
1018
|
+
### ToggleButton
|
|
1019
|
+
A single two-state toggle button exposing a native `aria-pressed` contract — use for one independent on/off control such as bold, mute, or pin.
|
|
1020
|
+
- asChild: boolean
|
|
1021
|
+
- defaultPressed: boolean
|
|
1022
|
+
- onPressedChange: ((pressed: boolean) => void)
|
|
1023
|
+
- pressed: boolean
|
|
1024
|
+
- size: "sm" | "md" | "lg" | null
|
|
1025
|
+
- variant: "secondary" | "ghost" | null
|
|
1026
|
+
|
|
1027
|
+
### Token
|
|
1028
|
+
Token - reflective token specimen for unified node-based token views. The `variant` axis (node | diagram — diagram is a deprecated alias that resolves to the s…
|
|
1029
|
+
- accentColor: string
|
|
1030
|
+
- aria-label: string
|
|
1031
|
+
- className: string
|
|
1032
|
+
- description: ReactNode
|
|
1033
|
+
- fullWidth: boolean
|
|
1034
|
+
- isSelected: boolean
|
|
1035
|
+
- isSourceNode: boolean
|
|
1036
|
+
- label: string
|
|
1037
|
+
- leadingSlot: ReactNode
|
|
1038
|
+
- nodeRef: ((el: HTMLElement | null) => void)
|
|
1039
|
+
- nowrap: boolean
|
|
1040
|
+
- onClick: (() => void) | (() => void)
|
|
1041
|
+
- pathDisplayDepth: number
|
|
1042
|
+
- pathDisplayLeadingDot: boolean
|
|
1043
|
+
- pathDisplayMode: "full" | "compressed"
|
|
1044
|
+
- rawValue: ReactNode
|
|
1045
|
+
- swatchVar: string
|
|
1046
|
+
- tokenPath: string
|
|
1047
|
+
- truncateFromStart: boolean
|
|
1048
|
+
- value: string
|
|
1049
|
+
- variant: "node" | "diagram"
|
|
1050
|
+
|
|
1051
|
+
### Tokenizer
|
|
1052
|
+
A bordered field of Tag chips followed by a text input for adding more.
|
|
1053
|
+
- className: string
|
|
1054
|
+
- disabled: boolean
|
|
1055
|
+
- onChange: (next: string[]) => void
|
|
1056
|
+
- placeholder: string
|
|
1057
|
+
- value: string[]
|
|
1058
|
+
|
|
1059
|
+
### Toolbar
|
|
1060
|
+
Toolbar root. Groups related controls with a single roving tab-stop. Supports the native `orientation` prop (`horizontal` | `vertical`).
|
|
1061
|
+
- asChild: boolean
|
|
1062
|
+
- dir: ("ltr" | "rtl")
|
|
1063
|
+
- loop: boolean
|
|
1064
|
+
- orientation: "horizontal" | "vertical"
|
|
1065
|
+
|
|
1066
|
+
### Tooltip
|
|
1067
|
+
Tooltip root. Bakes in the Radix Provider so a single `<Tooltip>` is self-contained — no app-level provider required. Controlled via `open`/`onOpenChange`, or …
|
|
1068
|
+
- children: React.ReactNode
|
|
1069
|
+
- defaultOpen: boolean
|
|
1070
|
+
- delayDuration: number
|
|
1071
|
+
- disableHoverableContent: boolean
|
|
1072
|
+
- onOpenChange: ((open: boolean) => void)
|
|
1073
|
+
- open: boolean
|
|
1074
|
+
|
|
1075
|
+
### TopNav
|
|
1076
|
+
Top navigation bar with brand, nav, and trailing action slots.
|
|
1077
|
+
- brand: ReactNode
|
|
1078
|
+
- children: ReactNode
|
|
1079
|
+
- sticky: boolean
|
|
1080
|
+
- trailing: ReactNode
|
|
1081
|
+
|
|
1082
|
+
### TreeList
|
|
1083
|
+
Renders a hierarchical `role="tree"` list; nodes with children get an expand/collapse toggle.
|
|
1084
|
+
- defaultExpandedIds: string[]
|
|
1085
|
+
- items: TreeNode[]
|
|
1086
|
+
- onSelect: ((id: string) => void)
|
|
1087
|
+
|
|
1088
|
+
### VisuallyHidden
|
|
1089
|
+
Renders its children off-screen (Tailwind `sr-only`) so they are announced by screen readers without occupying visual space — e.g. a text label for an icon-onl…
|
|
1090
|
+
- as: ElementType<any, keyof IntrinsicElements> = span
|