@thangnqdev/ui 0.2.1 → 0.2.2

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.
Files changed (190) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +144 -142
  3. package/bin/cli.js +125 -125
  4. package/dist/bento/index.cjs.map +1 -1
  5. package/dist/bento/index.js +2 -2
  6. package/dist/buttons/index.cjs.map +1 -1
  7. package/dist/buttons/index.js +3 -3
  8. package/dist/{chunk-77KTYOMQ.js → chunk-2OXZK6IP.js} +3 -3
  9. package/dist/chunk-2OXZK6IP.js.map +1 -0
  10. package/dist/{chunk-4CRFNALF.js → chunk-4GNFT2ZJ.js} +7 -7
  11. package/dist/chunk-4GNFT2ZJ.js.map +1 -0
  12. package/dist/{chunk-2YJBW4E2.js → chunk-4S6L5V7X.js} +2 -2
  13. package/dist/chunk-4S6L5V7X.js.map +1 -0
  14. package/dist/{chunk-I2FQBMVW.js → chunk-66VWUJEI.js} +3 -3
  15. package/dist/chunk-66VWUJEI.js.map +1 -0
  16. package/dist/{chunk-YOCGBORV.js → chunk-7NMB2Y64.js} +4 -4
  17. package/dist/chunk-7NMB2Y64.js.map +1 -0
  18. package/dist/{chunk-V52JOSDF.js → chunk-A7P3O5Z5.js} +3 -3
  19. package/dist/chunk-A7P3O5Z5.js.map +1 -0
  20. package/dist/{chunk-ME4XILG5.js → chunk-ATYGDTMK.js} +5 -5
  21. package/dist/chunk-ATYGDTMK.js.map +1 -0
  22. package/dist/{chunk-S6XJMYME.js → chunk-C4SUXMI3.js} +3 -3
  23. package/dist/chunk-C4SUXMI3.js.map +1 -0
  24. package/dist/{chunk-EXFR2BFJ.js → chunk-DUPPPGXY.js} +7 -7
  25. package/dist/chunk-DUPPPGXY.js.map +1 -0
  26. package/dist/{chunk-I5O2WCGF.js → chunk-EU2LPUYP.js} +3 -3
  27. package/dist/chunk-EU2LPUYP.js.map +1 -0
  28. package/dist/{chunk-D7FB3TCA.js → chunk-GXI2H5XA.js} +3 -3
  29. package/dist/chunk-GXI2H5XA.js.map +1 -0
  30. package/dist/{chunk-ADO3SVUA.js → chunk-IABPUCAQ.js} +2 -2
  31. package/dist/chunk-IABPUCAQ.js.map +1 -0
  32. package/dist/{chunk-PC5SZFZC.js → chunk-JOKEKOP3.js} +8 -8
  33. package/dist/chunk-JOKEKOP3.js.map +1 -0
  34. package/dist/{chunk-GXWB6BSY.js → chunk-KUQWUTZA.js} +4 -4
  35. package/dist/chunk-KUQWUTZA.js.map +1 -0
  36. package/dist/{chunk-ZEDXARXW.js → chunk-U3J4UPV3.js} +2 -2
  37. package/dist/chunk-U3J4UPV3.js.map +1 -0
  38. package/dist/{chunk-DSEL7ELZ.js → chunk-VE2PNSDQ.js} +4 -4
  39. package/dist/chunk-VE2PNSDQ.js.map +1 -0
  40. package/dist/{chunk-YJ64RI7J.js → chunk-WAFHC4DQ.js} +3 -3
  41. package/dist/chunk-WAFHC4DQ.js.map +1 -0
  42. package/dist/{chunk-W5WNWTQC.js → chunk-YJ67WYVW.js} +5 -5
  43. package/dist/chunk-YJ67WYVW.js.map +1 -0
  44. package/dist/{chunk-4MS6ZHFQ.js → chunk-Z427NPMU.js} +7 -7
  45. package/dist/chunk-Z427NPMU.js.map +1 -0
  46. package/dist/core/index.cjs +4 -4
  47. package/dist/core/index.cjs.map +1 -1
  48. package/dist/core/index.js +2 -2
  49. package/dist/data-display/index.cjs.map +1 -1
  50. package/dist/data-display/index.js +5 -5
  51. package/dist/feedback/index.cjs.map +1 -1
  52. package/dist/feedback/index.js +2 -2
  53. package/dist/forms/index.cjs.map +1 -1
  54. package/dist/forms/index.js +8 -8
  55. package/dist/glass/index.cjs.map +1 -1
  56. package/dist/glass/index.js +2 -2
  57. package/dist/index.cjs +4 -4
  58. package/dist/index.cjs.map +1 -1
  59. package/dist/index.js +19 -19
  60. package/dist/layout/index.cjs.map +1 -1
  61. package/dist/layout/index.js +2 -2
  62. package/dist/navigation/index.cjs.map +1 -1
  63. package/dist/navigation/index.js +6 -6
  64. package/dist/overlays/index.cjs.map +1 -1
  65. package/dist/overlays/index.js +7 -7
  66. package/dist/reset.css +45 -45
  67. package/dist/tokens.css +11 -11
  68. package/dist/typography/index.cjs.map +1 -1
  69. package/dist/typography/index.js +4 -4
  70. package/llms.txt +3 -3
  71. package/package.json +165 -165
  72. package/scripts/postinstall.js +125 -125
  73. package/src/bento/BentoCard.tsx +140 -140
  74. package/src/bento/BentoGrid.tsx +50 -50
  75. package/src/bento/index.ts +2 -2
  76. package/src/bento/tokens.css +46 -46
  77. package/src/buttons/Button.tsx +104 -104
  78. package/src/buttons/ButtonGroup.tsx +43 -43
  79. package/src/buttons/IconButton.tsx +79 -79
  80. package/src/buttons/SplitButton.tsx +186 -186
  81. package/src/buttons/ToggleButton.tsx +157 -157
  82. package/src/buttons/index.ts +5 -5
  83. package/src/buttons/tokens.css +6 -6
  84. package/src/core/ThemeProvider.tsx +133 -133
  85. package/src/core/index.ts +2 -2
  86. package/src/core/tokens.css +134 -134
  87. package/src/data-display/Accordion.tsx +147 -147
  88. package/src/data-display/Avatar.tsx +134 -134
  89. package/src/data-display/Card.tsx +112 -112
  90. package/src/data-display/Chip.tsx +74 -74
  91. package/src/data-display/DataTablePro.tsx +534 -534
  92. package/src/data-display/StatCard.tsx +60 -60
  93. package/src/data-display/Table.tsx +74 -74
  94. package/src/data-display/Timeline.tsx +62 -62
  95. package/src/data-display/TreeView.tsx +279 -279
  96. package/src/data-display/tokens.css +4 -4
  97. package/src/feedback/Alert.tsx +80 -80
  98. package/src/feedback/EmptyState.tsx +45 -45
  99. package/src/feedback/Skeleton.tsx +66 -66
  100. package/src/feedback/Spinner.tsx +65 -65
  101. package/src/feedback/index.ts +5 -5
  102. package/src/feedback/tokens.css +4 -4
  103. package/src/forms/Checkbox.tsx +149 -149
  104. package/src/forms/CheckboxGroup.tsx +76 -76
  105. package/src/forms/Combobox.tsx +512 -512
  106. package/src/forms/DatePicker.tsx +784 -784
  107. package/src/forms/FileUpload.tsx +266 -266
  108. package/src/forms/FormField.tsx +115 -115
  109. package/src/forms/Input.tsx +151 -151
  110. package/src/forms/NumberInput.tsx +262 -262
  111. package/src/forms/PasswordInput.tsx +35 -35
  112. package/src/forms/PinInput.tsx +139 -139
  113. package/src/forms/Radio.tsx +142 -142
  114. package/src/forms/RangeSlider.tsx +237 -237
  115. package/src/forms/SearchInput.tsx +34 -34
  116. package/src/forms/Select.tsx +103 -103
  117. package/src/forms/Slider.tsx +85 -85
  118. package/src/forms/Textarea.tsx +114 -114
  119. package/src/forms/tokens.css +6 -6
  120. package/src/glass/GlassButton.tsx +59 -59
  121. package/src/glass/GlassCard.tsx +71 -71
  122. package/src/glass/index.ts +3 -3
  123. package/src/glass/tokens.css +81 -81
  124. package/src/index.ts +26 -26
  125. package/src/layout/AspectRatio.tsx +39 -39
  126. package/src/layout/Container.tsx +53 -53
  127. package/src/layout/Divider.tsx +61 -61
  128. package/src/layout/Flex.tsx +79 -79
  129. package/src/layout/Grid.tsx +124 -124
  130. package/src/layout/PageLayout.tsx +59 -59
  131. package/src/layout/Section.tsx +47 -47
  132. package/src/layout/Spacer.tsx +30 -30
  133. package/src/layout/Stack.tsx +88 -88
  134. package/src/layout/tokens.css +8 -8
  135. package/src/navigation/Breadcrumb.tsx +73 -73
  136. package/src/navigation/CommandPalette.tsx +142 -142
  137. package/src/navigation/DropdownMenu.tsx +244 -244
  138. package/src/navigation/Pagination.tsx +114 -114
  139. package/src/navigation/Stepper.tsx +93 -93
  140. package/src/navigation/Tabs.tsx +265 -265
  141. package/src/navigation/index.ts +6 -6
  142. package/src/navigation/tokens.css +4 -4
  143. package/src/overlays/AlertDialog.tsx +63 -63
  144. package/src/overlays/BottomSheet.tsx +143 -143
  145. package/src/overlays/ContextMenu.tsx +161 -161
  146. package/src/overlays/Drawer.tsx +160 -160
  147. package/src/overlays/FocusTrap.tsx +122 -122
  148. package/src/overlays/Modal.tsx +296 -296
  149. package/src/overlays/Popover.tsx +156 -156
  150. package/src/overlays/Portal.tsx +23 -23
  151. package/src/overlays/Toast.tsx +175 -175
  152. package/src/overlays/Tooltip.tsx +125 -125
  153. package/src/overlays/tokens.css +8 -8
  154. package/src/registry/components.ts +1368 -1368
  155. package/src/styles/components.css +39 -39
  156. package/src/styles/index.css +5 -5
  157. package/src/styles/reset.css +45 -45
  158. package/src/styles/tokens.css +11 -11
  159. package/src/typography/Blockquote.tsx +32 -32
  160. package/src/typography/Code.tsx +89 -89
  161. package/src/typography/Heading.tsx +56 -56
  162. package/src/typography/Kbd.tsx +25 -25
  163. package/src/typography/Label.tsx +47 -47
  164. package/src/typography/Link.tsx +56 -56
  165. package/src/typography/Text.tsx +62 -62
  166. package/src/typography/index.ts +7 -7
  167. package/src/typography/tokens.css +5 -5
  168. package/src/utils/cn.ts +6 -6
  169. package/src/utils/scroll-lock.ts +19 -19
  170. package/src/utils/useControllableState.ts +54 -54
  171. package/ui-contract.json +1 -1
  172. package/dist/chunk-2YJBW4E2.js.map +0 -1
  173. package/dist/chunk-4CRFNALF.js.map +0 -1
  174. package/dist/chunk-4MS6ZHFQ.js.map +0 -1
  175. package/dist/chunk-77KTYOMQ.js.map +0 -1
  176. package/dist/chunk-ADO3SVUA.js.map +0 -1
  177. package/dist/chunk-D7FB3TCA.js.map +0 -1
  178. package/dist/chunk-DSEL7ELZ.js.map +0 -1
  179. package/dist/chunk-EXFR2BFJ.js.map +0 -1
  180. package/dist/chunk-GXWB6BSY.js.map +0 -1
  181. package/dist/chunk-I2FQBMVW.js.map +0 -1
  182. package/dist/chunk-I5O2WCGF.js.map +0 -1
  183. package/dist/chunk-ME4XILG5.js.map +0 -1
  184. package/dist/chunk-PC5SZFZC.js.map +0 -1
  185. package/dist/chunk-S6XJMYME.js.map +0 -1
  186. package/dist/chunk-V52JOSDF.js.map +0 -1
  187. package/dist/chunk-W5WNWTQC.js.map +0 -1
  188. package/dist/chunk-YJ64RI7J.js.map +0 -1
  189. package/dist/chunk-YOCGBORV.js.map +0 -1
  190. package/dist/chunk-ZEDXARXW.js.map +0 -1
@@ -1,1368 +1,1368 @@
1
- export interface ComponentMeta {
2
- name: string;
3
- module:
4
- | 'core'
5
- | 'layout'
6
- | 'typography'
7
- | 'buttons'
8
- | 'forms'
9
- | 'overlays'
10
- | 'navigation'
11
- | 'data-display'
12
- | 'feedback'
13
- | 'glass'
14
- | 'bento';
15
- category: 'Foundation' | 'Primitives' | 'Composite' | 'Advanced' | 'Visual';
16
- status: 'stable' | 'beta' | 'experimental' | 'deprecated';
17
- accessibility: 'verified' | 'supported' | 'native' | 'none';
18
- description: string;
19
- since: string;
20
- props?: Record<string, string>;
21
- }
22
-
23
- export const COMPONENT_REGISTRY: ComponentMeta[] = [
24
- // Core & Layout
25
- {
26
- name: 'ThemeProvider',
27
- module: 'core',
28
- category: 'Foundation',
29
- status: 'stable',
30
- accessibility: 'native',
31
- description: 'System-aware dark/light theme context provider with localStorage synchronization.',
32
- since: '0.1.0',
33
- props: { defaultTheme: "'dark' | 'light' | 'system'", storageKey: 'string', children: 'ReactNode' },
34
- },
35
- {
36
- name: 'useTheme',
37
- module: 'core',
38
- category: 'Foundation',
39
- status: 'stable',
40
- accessibility: 'native',
41
- description: 'Hook returning theme state, resolved theme, and setter functions.',
42
- since: '0.1.0',
43
- },
44
- {
45
- name: 'cn',
46
- module: 'core',
47
- category: 'Foundation',
48
- status: 'stable',
49
- accessibility: 'native',
50
- description: 'Tailwind CSS class merging utility combining clsx and tailwind-merge.',
51
- since: '0.1.0',
52
- },
53
- {
54
- name: 'Container',
55
- module: 'layout',
56
- category: 'Primitives',
57
- status: 'stable',
58
- accessibility: 'native',
59
- description: 'Max-width constrained responsive wrapper.',
60
- since: '0.1.0',
61
- props: { size: "'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'fluid'", padding: "'none' | 'sm' | 'md' | 'lg'" },
62
- },
63
- {
64
- name: 'Stack',
65
- module: 'layout',
66
- category: 'Primitives',
67
- status: 'stable',
68
- accessibility: 'native',
69
- description: 'Flexbox layout stack with configurable direction, gap, and alignment.',
70
- since: '0.1.0',
71
- },
72
- {
73
- name: 'HStack',
74
- module: 'layout',
75
- category: 'Primitives',
76
- status: 'stable',
77
- accessibility: 'native',
78
- description: 'Horizontal flexbox stack.',
79
- since: '0.1.0',
80
- },
81
- {
82
- name: 'VStack',
83
- module: 'layout',
84
- category: 'Primitives',
85
- status: 'stable',
86
- accessibility: 'native',
87
- description: 'Vertical flexbox stack.',
88
- since: '0.1.0',
89
- },
90
- {
91
- name: 'Grid',
92
- module: 'layout',
93
- category: 'Primitives',
94
- status: 'stable',
95
- accessibility: 'native',
96
- description: 'CSS grid container with responsive column breakpoints.',
97
- since: '0.1.0',
98
- },
99
- {
100
- name: 'GridItem',
101
- module: 'layout',
102
- category: 'Primitives',
103
- status: 'stable',
104
- accessibility: 'native',
105
- description: 'Grid child with colSpan and rowSpan props.',
106
- since: '0.1.0',
107
- },
108
- {
109
- name: 'Flex',
110
- module: 'layout',
111
- category: 'Primitives',
112
- status: 'stable',
113
- accessibility: 'native',
114
- description: 'Generic flex container.',
115
- since: '0.1.0',
116
- },
117
- {
118
- name: 'Divider',
119
- module: 'layout',
120
- category: 'Primitives',
121
- status: 'stable',
122
- accessibility: 'native',
123
- description: 'Visual separation line with optional label.',
124
- since: '0.1.0',
125
- },
126
- {
127
- name: 'Spacer',
128
- module: 'layout',
129
- category: 'Primitives',
130
- status: 'stable',
131
- accessibility: 'native',
132
- description: 'Flexible spacer taking up remaining flex space.',
133
- since: '0.1.0',
134
- },
135
- {
136
- name: 'AspectRatio',
137
- module: 'layout',
138
- category: 'Primitives',
139
- status: 'stable',
140
- accessibility: 'native',
141
- description: 'Container enforcing a specific aspect ratio.',
142
- since: '0.1.0',
143
- },
144
- {
145
- name: 'PageLayout',
146
- module: 'layout',
147
- category: 'Composite',
148
- status: 'stable',
149
- accessibility: 'native',
150
- description: 'Top-level shell layout with header, sidebar, and content areas.',
151
- since: '0.1.0',
152
- },
153
- {
154
- name: 'PageHeader',
155
- module: 'layout',
156
- category: 'Composite',
157
- status: 'stable',
158
- accessibility: 'native',
159
- description: 'Header container for page title, actions, and breadcrumb.',
160
- since: '0.1.0',
161
- },
162
- {
163
- name: 'PageSidebar',
164
- module: 'layout',
165
- category: 'Composite',
166
- status: 'stable',
167
- accessibility: 'native',
168
- description: 'Sidebar navigation panel with collapse support.',
169
- since: '0.1.0',
170
- },
171
- {
172
- name: 'ScrollArea',
173
- module: 'layout',
174
- category: 'Primitives',
175
- status: 'stable',
176
- accessibility: 'native',
177
- description: 'Custom styled scrollable container.',
178
- since: '0.1.0',
179
- },
180
-
181
- // Typography
182
- {
183
- name: 'Heading',
184
- module: 'typography',
185
- category: 'Primitives',
186
- status: 'stable',
187
- accessibility: 'native',
188
- description: 'Polymorphic heading primitive with optical tracking.',
189
- since: '0.1.0',
190
- props: { as: "'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'div' | 'span'", size: "'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'" },
191
- },
192
- {
193
- name: 'Text',
194
- module: 'typography',
195
- category: 'Primitives',
196
- status: 'stable',
197
- accessibility: 'native',
198
- description: 'Body text primitive with editorial hierarchy variants.',
199
- since: '0.1.0',
200
- },
201
- {
202
- name: 'Label',
203
- module: 'typography',
204
- category: 'Primitives',
205
- status: 'stable',
206
- accessibility: 'native',
207
- description: 'Accessible form label with required indicator.',
208
- since: '0.1.0',
209
- },
210
- {
211
- name: 'Link',
212
- module: 'typography',
213
- category: 'Primitives',
214
- status: 'stable',
215
- accessibility: 'native',
216
- description: 'Anchor element with underline animations and external link handling.',
217
- since: '0.1.0',
218
- },
219
- {
220
- name: 'Code',
221
- module: 'typography',
222
- category: 'Primitives',
223
- status: 'stable',
224
- accessibility: 'native',
225
- description: 'Inline monospace code badge.',
226
- since: '0.1.0',
227
- },
228
- {
229
- name: 'CodeBlock',
230
- module: 'typography',
231
- category: 'Composite',
232
- status: 'stable',
233
- accessibility: 'native',
234
- description: 'Multi-line code snippet with syntax highlighting and copy-to-clipboard button.',
235
- since: '0.1.0',
236
- },
237
- {
238
- name: 'Blockquote',
239
- module: 'typography',
240
- category: 'Primitives',
241
- status: 'stable',
242
- accessibility: 'native',
243
- description: 'Stylized editorial quote with author citation.',
244
- since: '0.1.0',
245
- },
246
- {
247
- name: 'Kbd',
248
- module: 'typography',
249
- category: 'Primitives',
250
- status: 'stable',
251
- accessibility: 'native',
252
- description: 'Keyboard key badge with optical shadow.',
253
- since: '0.1.0',
254
- },
255
-
256
- // Buttons
257
- {
258
- name: 'Button',
259
- module: 'buttons',
260
- category: 'Primitives',
261
- status: 'stable',
262
- accessibility: 'verified',
263
- description: 'Interactive button with micro-interactions, loading spinners, and optical states.',
264
- since: '0.1.0',
265
- props: { variant: "'primary' | 'secondary' | 'outline' | 'ghost' | 'danger' | 'link' | 'glass'", size: "'xs' | 'sm' | 'md' | 'lg' | 'xl'", loading: 'boolean' },
266
- },
267
- {
268
- name: 'IconButton',
269
- module: 'buttons',
270
- category: 'Primitives',
271
- status: 'stable',
272
- accessibility: 'verified',
273
- description: 'Square or round icon button with mandatory aria-label.',
274
- since: '0.1.0',
275
- },
276
- {
277
- name: 'ButtonGroup',
278
- module: 'buttons',
279
- category: 'Primitives',
280
- status: 'stable',
281
- accessibility: 'verified',
282
- description: 'Connected group of action buttons.',
283
- since: '0.1.0',
284
- },
285
- {
286
- name: 'ToggleButton',
287
- module: 'buttons',
288
- category: 'Primitives',
289
- status: 'stable',
290
- accessibility: 'verified',
291
- description: 'Two-state button with pressed state.',
292
- since: '0.1.0',
293
- },
294
- {
295
- name: 'ToggleGroup',
296
- module: 'buttons',
297
- category: 'Primitives',
298
- status: 'stable',
299
- accessibility: 'verified',
300
- description: 'Single or multi-select group of toggle buttons.',
301
- since: '0.1.0',
302
- },
303
- {
304
- name: 'SplitButton',
305
- module: 'buttons',
306
- category: 'Composite',
307
- status: 'stable',
308
- accessibility: 'verified',
309
- description: 'Dual-action button with primary click and dropdown arrow menu.',
310
- since: '0.1.0',
311
- },
312
-
313
- // Forms
314
- {
315
- name: 'FormField',
316
- module: 'forms',
317
- category: 'Foundation',
318
- status: 'stable',
319
- accessibility: 'verified',
320
- description: 'Accessible form field context orchestrating label, input, helper text, and error states.',
321
- since: '0.1.0',
322
- },
323
- {
324
- name: 'FormLabel',
325
- module: 'forms',
326
- category: 'Primitives',
327
- status: 'stable',
328
- accessibility: 'verified',
329
- description: 'Label linked automatically to FormField id.',
330
- since: '0.1.0',
331
- },
332
- {
333
- name: 'FormHelperText',
334
- module: 'forms',
335
- category: 'Primitives',
336
- status: 'stable',
337
- accessibility: 'verified',
338
- description: 'Descriptive helper text linked to aria-describedby.',
339
- since: '0.1.0',
340
- },
341
- {
342
- name: 'FormErrorMessage',
343
- module: 'forms',
344
- category: 'Primitives',
345
- status: 'stable',
346
- accessibility: 'verified',
347
- description: 'Error message linked to aria-describedby with role=alert.',
348
- since: '0.1.0',
349
- },
350
- {
351
- name: 'Input',
352
- module: 'forms',
353
- category: 'Primitives',
354
- status: 'stable',
355
- accessibility: 'verified',
356
- description: 'Text input with leading/trailing icons and glass focus rings.',
357
- since: '0.1.0',
358
- },
359
- {
360
- name: 'SearchInput',
361
- module: 'forms',
362
- category: 'Composite',
363
- status: 'stable',
364
- accessibility: 'verified',
365
- description: 'Input with search icon and one-click clear button.',
366
- since: '0.1.0',
367
- },
368
- {
369
- name: 'PasswordInput',
370
- module: 'forms',
371
- category: 'Composite',
372
- status: 'stable',
373
- accessibility: 'verified',
374
- description: 'Password input with toggleable visibility eye button.',
375
- since: '0.1.0',
376
- },
377
- {
378
- name: 'Textarea',
379
- module: 'forms',
380
- category: 'Primitives',
381
- status: 'stable',
382
- accessibility: 'verified',
383
- description: 'Multi-line textarea with auto-resize option.',
384
- since: '0.1.0',
385
- },
386
- {
387
- name: 'Select',
388
- module: 'forms',
389
- category: 'Primitives',
390
- status: 'stable',
391
- accessibility: 'verified',
392
- description: 'Native select dropdown with styled Chevron icon and FormField integration.',
393
- since: '0.1.0',
394
- },
395
- {
396
- name: 'Checkbox',
397
- module: 'forms',
398
- category: 'Primitives',
399
- status: 'stable',
400
- accessibility: 'verified',
401
- description: 'Controlled and uncontrolled checkbox with indeterminate support and full WAI-ARIA compliance.',
402
- since: '0.1.0',
403
- props: { checked: 'boolean', defaultChecked: 'boolean', indeterminate: 'boolean', onCheckedChange: '(checked: boolean) => void' },
404
- },
405
- {
406
- name: 'CheckboxGroup',
407
- module: 'forms',
408
- category: 'Primitives',
409
- status: 'stable',
410
- accessibility: 'verified',
411
- description: 'Group container for related checkboxes.',
412
- since: '0.1.0',
413
- },
414
- {
415
- name: 'Radio',
416
- module: 'forms',
417
- category: 'Primitives',
418
- status: 'stable',
419
- accessibility: 'verified',
420
- description: 'Accessible radio button with animated selection dot.',
421
- since: '0.1.0',
422
- },
423
- {
424
- name: 'RadioGroup',
425
- module: 'forms',
426
- category: 'Primitives',
427
- status: 'stable',
428
- accessibility: 'verified',
429
- description: 'Radio group with keyboard arrow navigation.',
430
- since: '0.1.0',
431
- },
432
- {
433
- name: 'Switch',
434
- module: 'forms',
435
- category: 'Primitives',
436
- status: 'stable',
437
- accessibility: 'verified',
438
- description: 'iOS-inspired spatial toggle switch with smooth physics and role=switch.',
439
- since: '0.1.0',
440
- },
441
- {
442
- name: 'Slider',
443
- module: 'forms',
444
- category: 'Primitives',
445
- status: 'stable',
446
- accessibility: 'verified',
447
- description: 'Single-value track slider with live fill and tooltips.',
448
- since: '0.1.0',
449
- },
450
- {
451
- name: 'RangeSlider',
452
- module: 'forms',
453
- category: 'Primitives',
454
- status: 'stable',
455
- accessibility: 'verified',
456
- description: 'Dual-thumb range slider with pointer capture and WAI-ARIA slider roles.',
457
- since: '0.1.0',
458
- props: { min: 'number', max: 'number', step: 'number', value: '[number, number]', defaultValue: '[number, number]', onChange: '(val: [number, number]) => void' },
459
- },
460
- {
461
- name: 'PinInput',
462
- module: 'forms',
463
- category: 'Composite',
464
- status: 'stable',
465
- accessibility: 'verified',
466
- description: 'Multi-digit OTP/PIN code input with paste handling and arrow key navigation.',
467
- since: '0.1.0',
468
- },
469
- {
470
- name: 'DatePicker',
471
- module: 'forms',
472
- category: 'Composite',
473
- status: 'stable',
474
- accessibility: 'verified',
475
- description: 'Calendar date picker popover with quick presets and min/max restrictions.',
476
- since: '0.1.0',
477
- },
478
- {
479
- name: 'DateRangePicker',
480
- module: 'forms',
481
- category: 'Composite',
482
- status: 'stable',
483
- accessibility: 'verified',
484
- description: 'Dual date range picker with live span highlight.',
485
- since: '0.1.0',
486
- },
487
- {
488
- name: 'TimePicker',
489
- module: 'forms',
490
- category: 'Composite',
491
- status: 'stable',
492
- accessibility: 'verified',
493
- description: 'Time selector supporting 12h (AM/PM) and 24h formats with parent controlled sync.',
494
- since: '0.1.0',
495
- props: { value: 'string', defaultValue: 'string', format: "'12h' | '24h'", onChange: '(time: string) => void' },
496
- },
497
- {
498
- name: 'Combobox',
499
- module: 'forms',
500
- category: 'Composite',
501
- status: 'stable',
502
- accessibility: 'verified',
503
- description: 'Searchable autocomplete dropdown with keyboard navigation and active descendant ARIA roles.',
504
- since: '0.1.0',
505
- props: { options: 'ComboboxOption[]', value: 'string', onChange: '(val: string) => void', searchPlaceholder: 'string' },
506
- },
507
- {
508
- name: 'MultiSelect',
509
- module: 'forms',
510
- category: 'Composite',
511
- status: 'beta',
512
- accessibility: 'supported',
513
- description: 'Multi-tag selector with search filtering, keyboard navigation, and removable chips.',
514
- since: '0.1.0',
515
- },
516
- {
517
- name: 'FileUpload',
518
- module: 'forms',
519
- category: 'Advanced',
520
- status: 'stable',
521
- accessibility: 'verified',
522
- description: 'Drag-and-drop file upload zone with file preview, progress bars, and validation.',
523
- since: '0.1.0',
524
- },
525
- {
526
- name: 'NumberInput',
527
- module: 'forms',
528
- category: 'Composite',
529
- status: 'stable',
530
- accessibility: 'verified',
531
- description: 'Numeric input with stepper buttons, clamping, and formatters.',
532
- since: '0.1.0',
533
- },
534
- {
535
- name: 'CurrencyInput',
536
- module: 'forms',
537
- category: 'Composite',
538
- status: 'stable',
539
- accessibility: 'verified',
540
- description: 'Currency formatted input with currency symbol adornment.',
541
- since: '0.1.0',
542
- },
543
- {
544
- name: 'MaskedInput',
545
- module: 'forms',
546
- category: 'Composite',
547
- status: 'stable',
548
- accessibility: 'verified',
549
- description: 'Input with format pattern mask (e.g. phone, credit card).',
550
- since: '0.1.0',
551
- },
552
-
553
- // Overlays
554
- {
555
- name: 'Portal',
556
- module: 'overlays',
557
- category: 'Foundation',
558
- status: 'stable',
559
- accessibility: 'native',
560
- description: 'Mounts overlay children at document.body.',
561
- since: '0.1.0',
562
- },
563
- {
564
- name: 'FocusTrap',
565
- module: 'overlays',
566
- category: 'Foundation',
567
- status: 'stable',
568
- accessibility: 'verified',
569
- description: 'Traps keyboard Tab navigation inside container and restores focus upon exit.',
570
- since: '0.1.0',
571
- },
572
- {
573
- name: 'Modal',
574
- module: 'overlays',
575
- category: 'Primitives',
576
- status: 'stable',
577
- accessibility: 'verified',
578
- description: 'Accessible modal dialog with focus trapping, scroll lock reference counting, and ARIA auto-linking.',
579
- since: '0.1.0',
580
- props: { isOpen: 'boolean', onClose: '() => void', closeOnEsc: 'boolean', closeOnOverlayClick: 'boolean' },
581
- },
582
- {
583
- name: 'ModalOverlay',
584
- module: 'overlays',
585
- category: 'Primitives',
586
- status: 'stable',
587
- accessibility: 'verified',
588
- description: 'Backdrop for modal dialogs.',
589
- since: '0.1.0',
590
- },
591
- {
592
- name: 'ModalContent',
593
- module: 'overlays',
594
- category: 'Primitives',
595
- status: 'stable',
596
- accessibility: 'verified',
597
- description: 'Content box for modal dialogs.',
598
- since: '0.1.0',
599
- },
600
- {
601
- name: 'ModalHeader',
602
- module: 'overlays',
603
- category: 'Primitives',
604
- status: 'stable',
605
- accessibility: 'verified',
606
- description: 'Header container for modal dialogs.',
607
- since: '0.1.0',
608
- },
609
- {
610
- name: 'ModalTitle',
611
- module: 'overlays',
612
- category: 'Primitives',
613
- status: 'stable',
614
- accessibility: 'verified',
615
- description: 'Title linked automatically to modal aria-labelledby.',
616
- since: '0.1.0',
617
- },
618
- {
619
- name: 'ModalDescription',
620
- module: 'overlays',
621
- category: 'Primitives',
622
- status: 'stable',
623
- accessibility: 'verified',
624
- description: 'Description linked automatically to modal aria-describedby.',
625
- since: '0.1.0',
626
- },
627
- {
628
- name: 'ModalBody',
629
- module: 'overlays',
630
- category: 'Primitives',
631
- status: 'stable',
632
- accessibility: 'verified',
633
- description: 'Main body for modal dialogs.',
634
- since: '0.1.0',
635
- },
636
- {
637
- name: 'ModalFooter',
638
- module: 'overlays',
639
- category: 'Primitives',
640
- status: 'stable',
641
- accessibility: 'verified',
642
- description: 'Action footer for modal dialogs.',
643
- since: '0.1.0',
644
- },
645
- {
646
- name: 'ModalCloseButton',
647
- module: 'overlays',
648
- category: 'Primitives',
649
- status: 'stable',
650
- accessibility: 'verified',
651
- description: 'Top-right close button for modal dialogs.',
652
- since: '0.1.0',
653
- },
654
- {
655
- name: 'AlertDialog',
656
- module: 'overlays',
657
- category: 'Composite',
658
- status: 'stable',
659
- accessibility: 'verified',
660
- description: 'Confirmation alert dialog with role=alertdialog and primary/danger confirm action.',
661
- since: '0.1.0',
662
- },
663
- {
664
- name: 'Drawer',
665
- module: 'overlays',
666
- category: 'Primitives',
667
- status: 'stable',
668
- accessibility: 'verified',
669
- description: 'Side or bottom drawer sheet with focus trap, scroll lock, and slide animation.',
670
- since: '0.1.0',
671
- props: { isOpen: 'boolean', onClose: '() => void', placement: "'right' | 'left' | 'top' | 'bottom'" },
672
- },
673
- {
674
- name: 'DrawerHeader',
675
- module: 'overlays',
676
- category: 'Primitives',
677
- status: 'stable',
678
- accessibility: 'verified',
679
- description: 'Header container for drawer sheets.',
680
- since: '0.1.0',
681
- },
682
- {
683
- name: 'DrawerBody',
684
- module: 'overlays',
685
- category: 'Primitives',
686
- status: 'stable',
687
- accessibility: 'verified',
688
- description: 'Body container for drawer sheets.',
689
- since: '0.1.0',
690
- },
691
- {
692
- name: 'DrawerFooter',
693
- module: 'overlays',
694
- category: 'Primitives',
695
- status: 'stable',
696
- accessibility: 'verified',
697
- description: 'Footer container for drawer sheets.',
698
- since: '0.1.0',
699
- },
700
- {
701
- name: 'Tooltip',
702
- module: 'overlays',
703
- category: 'Primitives',
704
- status: 'stable',
705
- accessibility: 'verified',
706
- description: 'Micro tooltip with hover delays and role=tooltip.',
707
- since: '0.1.0',
708
- },
709
- {
710
- name: 'Popover',
711
- module: 'overlays',
712
- category: 'Primitives',
713
- status: 'stable',
714
- accessibility: 'verified',
715
- description: 'Floating popover anchor with outside click detection.',
716
- since: '0.1.0',
717
- },
718
- {
719
- name: 'Toast',
720
- module: 'overlays',
721
- category: 'Composite',
722
- status: 'stable',
723
- accessibility: 'verified',
724
- description: 'Floating toast notification with status variants and progress bar.',
725
- since: '0.1.0',
726
- },
727
- {
728
- name: 'ToasterProvider',
729
- module: 'overlays',
730
- category: 'Foundation',
731
- status: 'stable',
732
- accessibility: 'verified',
733
- description: 'Context provider managing toast notifications queue.',
734
- since: '0.1.0',
735
- },
736
- {
737
- name: 'useToast',
738
- module: 'overlays',
739
- category: 'Foundation',
740
- status: 'stable',
741
- accessibility: 'verified',
742
- description: 'Hook to trigger toasts: { toast, dismiss, toasts }.',
743
- since: '0.1.0',
744
- },
745
- {
746
- name: 'BottomSheet',
747
- module: 'overlays',
748
- category: 'Primitives',
749
- status: 'stable',
750
- accessibility: 'verified',
751
- description: 'Mobile drawer sheet with drag handle and scroll lock.',
752
- since: '0.1.0',
753
- },
754
- {
755
- name: 'BottomSheetHeader',
756
- module: 'overlays',
757
- category: 'Primitives',
758
- status: 'stable',
759
- accessibility: 'verified',
760
- description: 'Header container for bottom sheet.',
761
- since: '0.1.0',
762
- },
763
- {
764
- name: 'BottomSheetBody',
765
- module: 'overlays',
766
- category: 'Primitives',
767
- status: 'stable',
768
- accessibility: 'verified',
769
- description: 'Body container for bottom sheet.',
770
- since: '0.1.0',
771
- },
772
- {
773
- name: 'BottomSheetFooter',
774
- module: 'overlays',
775
- category: 'Primitives',
776
- status: 'stable',
777
- accessibility: 'verified',
778
- description: 'Footer container for bottom sheet.',
779
- since: '0.1.0',
780
- },
781
- {
782
- name: 'ContextMenu',
783
- module: 'overlays',
784
- category: 'Composite',
785
- status: 'stable',
786
- accessibility: 'verified',
787
- description: 'Right-click context menu with keyboard navigation and portal positioning.',
788
- since: '0.1.0',
789
- },
790
- {
791
- name: 'ContextMenuItem',
792
- module: 'overlays',
793
- category: 'Composite',
794
- status: 'stable',
795
- accessibility: 'verified',
796
- description: 'Item inside context menu with shortcut badges.',
797
- since: '0.1.0',
798
- },
799
- {
800
- name: 'ContextMenuSeparator',
801
- module: 'overlays',
802
- category: 'Composite',
803
- status: 'stable',
804
- accessibility: 'verified',
805
- description: 'Separator line in context menu.',
806
- since: '0.1.0',
807
- },
808
- {
809
- name: 'HoverCard',
810
- module: 'overlays',
811
- category: 'Composite',
812
- status: 'stable',
813
- accessibility: 'verified',
814
- description: 'Preview card appearing when hovering over trigger with delay.',
815
- since: '0.1.0',
816
- },
817
-
818
- // Navigation
819
- {
820
- name: 'Tabs',
821
- module: 'navigation',
822
- category: 'Primitives',
823
- status: 'stable',
824
- accessibility: 'verified',
825
- description: 'Accessible tab system with keyboard arrow navigation, roving tabIndex, and auto-linked tab/panel IDs.',
826
- since: '0.1.0',
827
- props: { defaultValue: 'string', value: 'string', onValueChange: '(val: string) => void', variant: "'pills' | 'line' | 'enclosed'", orientation: "'horizontal' | 'vertical'" },
828
- },
829
- {
830
- name: 'TabsList',
831
- module: 'navigation',
832
- category: 'Primitives',
833
- status: 'stable',
834
- accessibility: 'verified',
835
- description: 'Container for tab triggers with role=tablist.',
836
- since: '0.1.0',
837
- },
838
- {
839
- name: 'TabsTrigger',
840
- module: 'navigation',
841
- category: 'Primitives',
842
- status: 'stable',
843
- accessibility: 'verified',
844
- description: 'Tab trigger button with roving tabIndex and role=tab.',
845
- since: '0.1.0',
846
- },
847
- {
848
- name: 'TabsContent',
849
- module: 'navigation',
850
- category: 'Primitives',
851
- status: 'stable',
852
- accessibility: 'verified',
853
- description: 'Tab panel content with role=tabpanel and aria-labelledby.',
854
- since: '0.1.0',
855
- },
856
- {
857
- name: 'Breadcrumb',
858
- module: 'navigation',
859
- category: 'Primitives',
860
- status: 'stable',
861
- accessibility: 'verified',
862
- description: 'Breadcrumb navigation trail with role=navigation.',
863
- since: '0.1.0',
864
- },
865
- {
866
- name: 'BreadcrumbItem',
867
- module: 'navigation',
868
- category: 'Primitives',
869
- status: 'stable',
870
- accessibility: 'verified',
871
- description: 'Single item in breadcrumb trail.',
872
- since: '0.1.0',
873
- },
874
- {
875
- name: 'BreadcrumbLink',
876
- module: 'navigation',
877
- category: 'Primitives',
878
- status: 'stable',
879
- accessibility: 'verified',
880
- description: 'Clickable breadcrumb link.',
881
- since: '0.1.0',
882
- },
883
- {
884
- name: 'BreadcrumbPage',
885
- module: 'navigation',
886
- category: 'Primitives',
887
- status: 'stable',
888
- accessibility: 'verified',
889
- description: 'Current active breadcrumb page with aria-current=page.',
890
- since: '0.1.0',
891
- },
892
- {
893
- name: 'BreadcrumbSeparator',
894
- module: 'navigation',
895
- category: 'Primitives',
896
- status: 'stable',
897
- accessibility: 'verified',
898
- description: 'Separator icon between breadcrumb items.',
899
- since: '0.1.0',
900
- },
901
- {
902
- name: 'Pagination',
903
- module: 'navigation',
904
- category: 'Composite',
905
- status: 'stable',
906
- accessibility: 'verified',
907
- description: 'Pagination controls with page numbers, ellipsis, and prev/next buttons.',
908
- since: '0.1.0',
909
- },
910
- {
911
- name: 'Stepper',
912
- module: 'navigation',
913
- category: 'Composite',
914
- status: 'stable',
915
- accessibility: 'verified',
916
- description: 'Multi-step process indicator with completed, active, and upcoming steps.',
917
- since: '0.1.0',
918
- },
919
- {
920
- name: 'DropdownMenu',
921
- module: 'navigation',
922
- category: 'Composite',
923
- status: 'stable',
924
- accessibility: 'verified',
925
- description: 'Contextual dropdown menu with keyboard arrow navigation and role=menu.',
926
- since: '0.1.0',
927
- },
928
- {
929
- name: 'DropdownMenuTrigger',
930
- module: 'navigation',
931
- category: 'Composite',
932
- status: 'stable',
933
- accessibility: 'verified',
934
- description: 'Trigger button for dropdown menu.',
935
- since: '0.1.0',
936
- },
937
- {
938
- name: 'DropdownMenuContent',
939
- module: 'navigation',
940
- category: 'Composite',
941
- status: 'stable',
942
- accessibility: 'verified',
943
- description: 'Menu list container with role=menu.',
944
- since: '0.1.0',
945
- },
946
- {
947
- name: 'DropdownMenuItem',
948
- module: 'navigation',
949
- category: 'Composite',
950
- status: 'stable',
951
- accessibility: 'verified',
952
- description: 'Interactive item in dropdown menu with role=menuitem.',
953
- since: '0.1.0',
954
- },
955
- {
956
- name: 'DropdownMenuSeparator',
957
- module: 'navigation',
958
- category: 'Composite',
959
- status: 'stable',
960
- accessibility: 'verified',
961
- description: 'Divider in dropdown menu.',
962
- since: '0.1.0',
963
- },
964
- {
965
- name: 'DropdownMenuLabel',
966
- module: 'navigation',
967
- category: 'Composite',
968
- status: 'stable',
969
- accessibility: 'verified',
970
- description: 'Group label in dropdown menu.',
971
- since: '0.1.0',
972
- },
973
- {
974
- name: 'CommandPalette',
975
- module: 'navigation',
976
- category: 'Advanced',
977
- status: 'stable',
978
- accessibility: 'verified',
979
- description: 'Spotlight-style ⌘K global command palette with search filtering.',
980
- since: '0.1.0',
981
- },
982
-
983
- // Data Display
984
- {
985
- name: 'Card',
986
- module: 'data-display',
987
- category: 'Primitives',
988
- status: 'stable',
989
- accessibility: 'native',
990
- description: 'Glass-morphic and solid card container.',
991
- since: '0.1.0',
992
- },
993
- {
994
- name: 'CardHeader',
995
- module: 'data-display',
996
- category: 'Primitives',
997
- status: 'stable',
998
- accessibility: 'native',
999
- description: 'Card top header section.',
1000
- since: '0.1.0',
1001
- },
1002
- {
1003
- name: 'CardTitle',
1004
- module: 'data-display',
1005
- category: 'Primitives',
1006
- status: 'stable',
1007
- accessibility: 'native',
1008
- description: 'Card title heading.',
1009
- since: '0.1.0',
1010
- },
1011
- {
1012
- name: 'CardDescription',
1013
- module: 'data-display',
1014
- category: 'Primitives',
1015
- status: 'stable',
1016
- accessibility: 'native',
1017
- description: 'Card secondary description text.',
1018
- since: '0.1.0',
1019
- },
1020
- {
1021
- name: 'CardContent',
1022
- module: 'data-display',
1023
- category: 'Primitives',
1024
- status: 'stable',
1025
- accessibility: 'native',
1026
- description: 'Card body content section.',
1027
- since: '0.1.0',
1028
- },
1029
- {
1030
- name: 'CardFooter',
1031
- module: 'data-display',
1032
- category: 'Primitives',
1033
- status: 'stable',
1034
- accessibility: 'native',
1035
- description: 'Card bottom action section.',
1036
- since: '0.1.0',
1037
- },
1038
- {
1039
- name: 'Table',
1040
- module: 'data-display',
1041
- category: 'Primitives',
1042
- status: 'stable',
1043
- accessibility: 'native',
1044
- description: 'HTML5 semantic table container.',
1045
- since: '0.1.0',
1046
- },
1047
- {
1048
- name: 'TableHeader',
1049
- module: 'data-display',
1050
- category: 'Primitives',
1051
- status: 'stable',
1052
- accessibility: 'native',
1053
- description: 'Table thead element.',
1054
- since: '0.1.0',
1055
- },
1056
- {
1057
- name: 'TableBody',
1058
- module: 'data-display',
1059
- category: 'Primitives',
1060
- status: 'stable',
1061
- accessibility: 'native',
1062
- description: 'Table tbody element.',
1063
- since: '0.1.0',
1064
- },
1065
- {
1066
- name: 'TableFooter',
1067
- module: 'data-display',
1068
- category: 'Primitives',
1069
- status: 'stable',
1070
- accessibility: 'native',
1071
- description: 'Table tfoot element.',
1072
- since: '0.1.0',
1073
- },
1074
- {
1075
- name: 'TableRow',
1076
- module: 'data-display',
1077
- category: 'Primitives',
1078
- status: 'stable',
1079
- accessibility: 'native',
1080
- description: 'Table tr element.',
1081
- since: '0.1.0',
1082
- },
1083
- {
1084
- name: 'TableHead',
1085
- module: 'data-display',
1086
- category: 'Primitives',
1087
- status: 'stable',
1088
- accessibility: 'native',
1089
- description: 'Table th element.',
1090
- since: '0.1.0',
1091
- },
1092
- {
1093
- name: 'TableCell',
1094
- module: 'data-display',
1095
- category: 'Primitives',
1096
- status: 'stable',
1097
- accessibility: 'native',
1098
- description: 'Table td element.',
1099
- since: '0.1.0',
1100
- },
1101
- {
1102
- name: 'TableCaption',
1103
- module: 'data-display',
1104
- category: 'Primitives',
1105
- status: 'stable',
1106
- accessibility: 'native',
1107
- description: 'Table caption element.',
1108
- since: '0.1.0',
1109
- },
1110
- {
1111
- name: 'Avatar',
1112
- module: 'data-display',
1113
- category: 'Primitives',
1114
- status: 'stable',
1115
- accessibility: 'native',
1116
- description: 'User avatar image with fallback initials and status badge indicator.',
1117
- since: '0.1.0',
1118
- },
1119
- {
1120
- name: 'AvatarGroup',
1121
- module: 'data-display',
1122
- category: 'Primitives',
1123
- status: 'stable',
1124
- accessibility: 'native',
1125
- description: 'Stacked group of avatars with overflow counter.',
1126
- since: '0.1.0',
1127
- },
1128
- {
1129
- name: 'Accordion',
1130
- module: 'data-display',
1131
- category: 'Composite',
1132
- status: 'stable',
1133
- accessibility: 'verified',
1134
- description: 'Collapsible accordion with single/multiple expansion modes and smooth height animation.',
1135
- since: '0.1.0',
1136
- },
1137
- {
1138
- name: 'AccordionItem',
1139
- module: 'data-display',
1140
- category: 'Composite',
1141
- status: 'stable',
1142
- accessibility: 'verified',
1143
- description: 'Single collapsible accordion item.',
1144
- since: '0.1.0',
1145
- },
1146
- {
1147
- name: 'AccordionTrigger',
1148
- module: 'data-display',
1149
- category: 'Composite',
1150
- status: 'stable',
1151
- accessibility: 'verified',
1152
- description: 'Header button triggering accordion collapse/expand.',
1153
- since: '0.1.0',
1154
- },
1155
- {
1156
- name: 'AccordionContent',
1157
- module: 'data-display',
1158
- category: 'Composite',
1159
- status: 'stable',
1160
- accessibility: 'verified',
1161
- description: 'Collapsible body content.',
1162
- since: '0.1.0',
1163
- },
1164
- {
1165
- name: 'Chip',
1166
- module: 'data-display',
1167
- category: 'Primitives',
1168
- status: 'stable',
1169
- accessibility: 'verified',
1170
- description: 'Interactive tag or badge with removable button.',
1171
- since: '0.1.0',
1172
- },
1173
- {
1174
- name: 'StatCard',
1175
- module: 'data-display',
1176
- category: 'Composite',
1177
- status: 'stable',
1178
- accessibility: 'native',
1179
- description: 'Dashboard metric card with trend indicators and sparklines.',
1180
- since: '0.1.0',
1181
- },
1182
- {
1183
- name: 'Timeline',
1184
- module: 'data-display',
1185
- category: 'Composite',
1186
- status: 'stable',
1187
- accessibility: 'native',
1188
- description: 'Chronological timeline of events with icons and connecting rails.',
1189
- since: '0.1.0',
1190
- },
1191
- {
1192
- name: 'DataTablePro',
1193
- module: 'data-display',
1194
- category: 'Advanced',
1195
- status: 'stable',
1196
- accessibility: 'verified',
1197
- description: 'Enterprise data table with sorting, search accessors, pagination clamp, cross-page selection, CSV export, and server-mode support.',
1198
- since: '0.1.0',
1199
- props: {
1200
- data: 'TData[]',
1201
- columns: 'ColumnDef<TData>[]',
1202
- keyExtractor: '(row: TData) => string',
1203
- searchable: 'boolean',
1204
- selectable: 'boolean',
1205
- manualPagination: 'boolean',
1206
- manualSorting: 'boolean',
1207
- manualFiltering: 'boolean',
1208
- },
1209
- },
1210
- {
1211
- name: 'TreeView',
1212
- module: 'data-display',
1213
- category: 'Advanced',
1214
- status: 'stable',
1215
- accessibility: 'verified',
1216
- description: 'Hierarchical tree view with full WAI-ARIA keyboard navigation and expand/collapse states.',
1217
- since: '0.1.0',
1218
- props: { data: 'TreeItem[]', selectedId: 'string', onSelect: '(item: TreeItem) => void' },
1219
- },
1220
- {
1221
- name: 'Carousel',
1222
- module: 'data-display',
1223
- category: 'Composite',
1224
- status: 'stable',
1225
- accessibility: 'verified',
1226
- description: 'Sliding carousel with touch swipe, arrow navigation, and dot indicators.',
1227
- since: '0.1.0',
1228
- },
1229
-
1230
- // Feedback
1231
- {
1232
- name: 'Spinner',
1233
- module: 'feedback',
1234
- category: 'Primitives',
1235
- status: 'stable',
1236
- accessibility: 'verified',
1237
- description: 'Loading spinner with role=status and size variants.',
1238
- since: '0.1.0',
1239
- },
1240
- {
1241
- name: 'Skeleton',
1242
- module: 'feedback',
1243
- category: 'Primitives',
1244
- status: 'stable',
1245
- accessibility: 'native',
1246
- description: 'Animated shimmering placeholder for loading states.',
1247
- since: '0.1.0',
1248
- },
1249
- {
1250
- name: 'SkeletonText',
1251
- module: 'feedback',
1252
- category: 'Primitives',
1253
- status: 'stable',
1254
- accessibility: 'native',
1255
- description: 'Multi-line text skeleton.',
1256
- since: '0.1.0',
1257
- },
1258
- {
1259
- name: 'SkeletonCircle',
1260
- module: 'feedback',
1261
- category: 'Primitives',
1262
- status: 'stable',
1263
- accessibility: 'native',
1264
- description: 'Circular skeleton for avatar placeholders.',
1265
- since: '0.1.0',
1266
- },
1267
- {
1268
- name: 'ProgressBar',
1269
- module: 'feedback',
1270
- category: 'Primitives',
1271
- status: 'stable',
1272
- accessibility: 'verified',
1273
- description: 'Linear progress bar with role=progressbar and value announcements.',
1274
- since: '0.1.0',
1275
- },
1276
- {
1277
- name: 'CircularProgress',
1278
- module: 'feedback',
1279
- category: 'Primitives',
1280
- status: 'stable',
1281
- accessibility: 'verified',
1282
- description: 'Radial SVG progress indicator.',
1283
- since: '0.1.0',
1284
- },
1285
- {
1286
- name: 'Alert',
1287
- module: 'feedback',
1288
- category: 'Composite',
1289
- status: 'stable',
1290
- accessibility: 'verified',
1291
- description: 'Contextual feedback alert with status icons and role=alert.',
1292
- since: '0.1.0',
1293
- },
1294
- {
1295
- name: 'AlertTitle',
1296
- module: 'feedback',
1297
- category: 'Composite',
1298
- status: 'stable',
1299
- accessibility: 'verified',
1300
- description: 'Alert heading title.',
1301
- since: '0.1.0',
1302
- },
1303
- {
1304
- name: 'AlertDescription',
1305
- module: 'feedback',
1306
- category: 'Composite',
1307
- status: 'stable',
1308
- accessibility: 'verified',
1309
- description: 'Alert message body.',
1310
- since: '0.1.0',
1311
- },
1312
- {
1313
- name: 'EmptyState',
1314
- module: 'feedback',
1315
- category: 'Composite',
1316
- status: 'stable',
1317
- accessibility: 'native',
1318
- description: 'Placeholder view for empty data tables, lists, or search results.',
1319
- since: '0.1.0',
1320
- },
1321
-
1322
- // Glass & Bento
1323
- {
1324
- name: 'GlassCard',
1325
- module: 'glass',
1326
- category: 'Visual',
1327
- status: 'stable',
1328
- accessibility: 'native',
1329
- description: 'Spatial backdrop-filter blur card with dynamic border sheen.',
1330
- since: '0.1.0',
1331
- },
1332
- {
1333
- name: 'GlassButton',
1334
- module: 'glass',
1335
- category: 'Visual',
1336
- status: 'stable',
1337
- accessibility: 'verified',
1338
- description: 'Translucent glass button with optical reflections.',
1339
- since: '0.1.0',
1340
- },
1341
- {
1342
- name: 'GlassBadge',
1343
- module: 'glass',
1344
- category: 'Visual',
1345
- status: 'stable',
1346
- accessibility: 'native',
1347
- description: 'Pill badge with glass backdrop effect.',
1348
- since: '0.1.0',
1349
- },
1350
- {
1351
- name: 'BentoGrid',
1352
- module: 'bento',
1353
- category: 'Visual',
1354
- status: 'stable',
1355
- accessibility: 'native',
1356
- description: 'Editorial bento layout grid container.',
1357
- since: '0.1.0',
1358
- },
1359
- {
1360
- name: 'BentoCard',
1361
- module: 'bento',
1362
- category: 'Visual',
1363
- status: 'stable',
1364
- accessibility: 'native',
1365
- description: 'Bento tile with graphic highlights and responsive spans.',
1366
- since: '0.1.0',
1367
- },
1368
- ];
1
+ export interface ComponentMeta {
2
+ name: string;
3
+ module:
4
+ | 'core'
5
+ | 'layout'
6
+ | 'typography'
7
+ | 'buttons'
8
+ | 'forms'
9
+ | 'overlays'
10
+ | 'navigation'
11
+ | 'data-display'
12
+ | 'feedback'
13
+ | 'glass'
14
+ | 'bento';
15
+ category: 'Foundation' | 'Primitives' | 'Composite' | 'Advanced' | 'Visual';
16
+ status: 'stable' | 'beta' | 'experimental' | 'deprecated';
17
+ accessibility: 'verified' | 'supported' | 'native' | 'none';
18
+ description: string;
19
+ since: string;
20
+ props?: Record<string, string>;
21
+ }
22
+
23
+ export const COMPONENT_REGISTRY: ComponentMeta[] = [
24
+ // Core & Layout
25
+ {
26
+ name: 'ThemeProvider',
27
+ module: 'core',
28
+ category: 'Foundation',
29
+ status: 'stable',
30
+ accessibility: 'native',
31
+ description: 'System-aware dark/light theme context provider with a light default and localStorage synchronization.',
32
+ since: '0.1.0',
33
+ props: { defaultTheme: "'dark' | 'light' | 'system' (default: 'light')", storageKey: 'string', children: 'ReactNode' },
34
+ },
35
+ {
36
+ name: 'useTheme',
37
+ module: 'core',
38
+ category: 'Foundation',
39
+ status: 'stable',
40
+ accessibility: 'native',
41
+ description: 'Hook returning theme state, resolved theme, and setter functions.',
42
+ since: '0.1.0',
43
+ },
44
+ {
45
+ name: 'cn',
46
+ module: 'core',
47
+ category: 'Foundation',
48
+ status: 'stable',
49
+ accessibility: 'native',
50
+ description: 'Tailwind CSS class merging utility combining clsx and tailwind-merge.',
51
+ since: '0.1.0',
52
+ },
53
+ {
54
+ name: 'Container',
55
+ module: 'layout',
56
+ category: 'Primitives',
57
+ status: 'stable',
58
+ accessibility: 'native',
59
+ description: 'Max-width constrained responsive wrapper.',
60
+ since: '0.1.0',
61
+ props: { size: "'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'fluid'", padding: "'none' | 'sm' | 'md' | 'lg'" },
62
+ },
63
+ {
64
+ name: 'Stack',
65
+ module: 'layout',
66
+ category: 'Primitives',
67
+ status: 'stable',
68
+ accessibility: 'native',
69
+ description: 'Flexbox layout stack with configurable direction, gap, and alignment.',
70
+ since: '0.1.0',
71
+ },
72
+ {
73
+ name: 'HStack',
74
+ module: 'layout',
75
+ category: 'Primitives',
76
+ status: 'stable',
77
+ accessibility: 'native',
78
+ description: 'Horizontal flexbox stack.',
79
+ since: '0.1.0',
80
+ },
81
+ {
82
+ name: 'VStack',
83
+ module: 'layout',
84
+ category: 'Primitives',
85
+ status: 'stable',
86
+ accessibility: 'native',
87
+ description: 'Vertical flexbox stack.',
88
+ since: '0.1.0',
89
+ },
90
+ {
91
+ name: 'Grid',
92
+ module: 'layout',
93
+ category: 'Primitives',
94
+ status: 'stable',
95
+ accessibility: 'native',
96
+ description: 'CSS grid container with responsive column breakpoints.',
97
+ since: '0.1.0',
98
+ },
99
+ {
100
+ name: 'GridItem',
101
+ module: 'layout',
102
+ category: 'Primitives',
103
+ status: 'stable',
104
+ accessibility: 'native',
105
+ description: 'Grid child with colSpan and rowSpan props.',
106
+ since: '0.1.0',
107
+ },
108
+ {
109
+ name: 'Flex',
110
+ module: 'layout',
111
+ category: 'Primitives',
112
+ status: 'stable',
113
+ accessibility: 'native',
114
+ description: 'Generic flex container.',
115
+ since: '0.1.0',
116
+ },
117
+ {
118
+ name: 'Divider',
119
+ module: 'layout',
120
+ category: 'Primitives',
121
+ status: 'stable',
122
+ accessibility: 'native',
123
+ description: 'Visual separation line with optional label.',
124
+ since: '0.1.0',
125
+ },
126
+ {
127
+ name: 'Spacer',
128
+ module: 'layout',
129
+ category: 'Primitives',
130
+ status: 'stable',
131
+ accessibility: 'native',
132
+ description: 'Flexible spacer taking up remaining flex space.',
133
+ since: '0.1.0',
134
+ },
135
+ {
136
+ name: 'AspectRatio',
137
+ module: 'layout',
138
+ category: 'Primitives',
139
+ status: 'stable',
140
+ accessibility: 'native',
141
+ description: 'Container enforcing a specific aspect ratio.',
142
+ since: '0.1.0',
143
+ },
144
+ {
145
+ name: 'PageLayout',
146
+ module: 'layout',
147
+ category: 'Composite',
148
+ status: 'stable',
149
+ accessibility: 'native',
150
+ description: 'Top-level shell layout with header, sidebar, and content areas.',
151
+ since: '0.1.0',
152
+ },
153
+ {
154
+ name: 'PageHeader',
155
+ module: 'layout',
156
+ category: 'Composite',
157
+ status: 'stable',
158
+ accessibility: 'native',
159
+ description: 'Header container for page title, actions, and breadcrumb.',
160
+ since: '0.1.0',
161
+ },
162
+ {
163
+ name: 'PageSidebar',
164
+ module: 'layout',
165
+ category: 'Composite',
166
+ status: 'stable',
167
+ accessibility: 'native',
168
+ description: 'Sidebar navigation panel with collapse support.',
169
+ since: '0.1.0',
170
+ },
171
+ {
172
+ name: 'ScrollArea',
173
+ module: 'layout',
174
+ category: 'Primitives',
175
+ status: 'stable',
176
+ accessibility: 'native',
177
+ description: 'Custom styled scrollable container.',
178
+ since: '0.1.0',
179
+ },
180
+
181
+ // Typography
182
+ {
183
+ name: 'Heading',
184
+ module: 'typography',
185
+ category: 'Primitives',
186
+ status: 'stable',
187
+ accessibility: 'native',
188
+ description: 'Polymorphic heading primitive with optical tracking.',
189
+ since: '0.1.0',
190
+ props: { as: "'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'div' | 'span'", size: "'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'" },
191
+ },
192
+ {
193
+ name: 'Text',
194
+ module: 'typography',
195
+ category: 'Primitives',
196
+ status: 'stable',
197
+ accessibility: 'native',
198
+ description: 'Body text primitive with editorial hierarchy variants.',
199
+ since: '0.1.0',
200
+ },
201
+ {
202
+ name: 'Label',
203
+ module: 'typography',
204
+ category: 'Primitives',
205
+ status: 'stable',
206
+ accessibility: 'native',
207
+ description: 'Accessible form label with required indicator.',
208
+ since: '0.1.0',
209
+ },
210
+ {
211
+ name: 'Link',
212
+ module: 'typography',
213
+ category: 'Primitives',
214
+ status: 'stable',
215
+ accessibility: 'native',
216
+ description: 'Anchor element with underline animations and external link handling.',
217
+ since: '0.1.0',
218
+ },
219
+ {
220
+ name: 'Code',
221
+ module: 'typography',
222
+ category: 'Primitives',
223
+ status: 'stable',
224
+ accessibility: 'native',
225
+ description: 'Inline monospace code badge.',
226
+ since: '0.1.0',
227
+ },
228
+ {
229
+ name: 'CodeBlock',
230
+ module: 'typography',
231
+ category: 'Composite',
232
+ status: 'stable',
233
+ accessibility: 'native',
234
+ description: 'Multi-line code snippet with syntax highlighting and copy-to-clipboard button.',
235
+ since: '0.1.0',
236
+ },
237
+ {
238
+ name: 'Blockquote',
239
+ module: 'typography',
240
+ category: 'Primitives',
241
+ status: 'stable',
242
+ accessibility: 'native',
243
+ description: 'Stylized editorial quote with author citation.',
244
+ since: '0.1.0',
245
+ },
246
+ {
247
+ name: 'Kbd',
248
+ module: 'typography',
249
+ category: 'Primitives',
250
+ status: 'stable',
251
+ accessibility: 'native',
252
+ description: 'Keyboard key badge with optical shadow.',
253
+ since: '0.1.0',
254
+ },
255
+
256
+ // Buttons
257
+ {
258
+ name: 'Button',
259
+ module: 'buttons',
260
+ category: 'Primitives',
261
+ status: 'stable',
262
+ accessibility: 'verified',
263
+ description: 'Interactive button with micro-interactions, loading spinners, and optical states.',
264
+ since: '0.1.0',
265
+ props: { variant: "'primary' | 'secondary' | 'outline' | 'ghost' | 'danger' | 'link' | 'glass'", size: "'xs' | 'sm' | 'md' | 'lg' | 'xl'", loading: 'boolean' },
266
+ },
267
+ {
268
+ name: 'IconButton',
269
+ module: 'buttons',
270
+ category: 'Primitives',
271
+ status: 'stable',
272
+ accessibility: 'verified',
273
+ description: 'Square or round icon button with mandatory aria-label.',
274
+ since: '0.1.0',
275
+ },
276
+ {
277
+ name: 'ButtonGroup',
278
+ module: 'buttons',
279
+ category: 'Primitives',
280
+ status: 'stable',
281
+ accessibility: 'verified',
282
+ description: 'Connected group of action buttons.',
283
+ since: '0.1.0',
284
+ },
285
+ {
286
+ name: 'ToggleButton',
287
+ module: 'buttons',
288
+ category: 'Primitives',
289
+ status: 'stable',
290
+ accessibility: 'verified',
291
+ description: 'Two-state button with pressed state.',
292
+ since: '0.1.0',
293
+ },
294
+ {
295
+ name: 'ToggleGroup',
296
+ module: 'buttons',
297
+ category: 'Primitives',
298
+ status: 'stable',
299
+ accessibility: 'verified',
300
+ description: 'Single or multi-select group of toggle buttons.',
301
+ since: '0.1.0',
302
+ },
303
+ {
304
+ name: 'SplitButton',
305
+ module: 'buttons',
306
+ category: 'Composite',
307
+ status: 'stable',
308
+ accessibility: 'verified',
309
+ description: 'Dual-action button with primary click and dropdown arrow menu.',
310
+ since: '0.1.0',
311
+ },
312
+
313
+ // Forms
314
+ {
315
+ name: 'FormField',
316
+ module: 'forms',
317
+ category: 'Foundation',
318
+ status: 'stable',
319
+ accessibility: 'verified',
320
+ description: 'Accessible form field context orchestrating label, input, helper text, and error states.',
321
+ since: '0.1.0',
322
+ },
323
+ {
324
+ name: 'FormLabel',
325
+ module: 'forms',
326
+ category: 'Primitives',
327
+ status: 'stable',
328
+ accessibility: 'verified',
329
+ description: 'Label linked automatically to FormField id.',
330
+ since: '0.1.0',
331
+ },
332
+ {
333
+ name: 'FormHelperText',
334
+ module: 'forms',
335
+ category: 'Primitives',
336
+ status: 'stable',
337
+ accessibility: 'verified',
338
+ description: 'Descriptive helper text linked to aria-describedby.',
339
+ since: '0.1.0',
340
+ },
341
+ {
342
+ name: 'FormErrorMessage',
343
+ module: 'forms',
344
+ category: 'Primitives',
345
+ status: 'stable',
346
+ accessibility: 'verified',
347
+ description: 'Error message linked to aria-describedby with role=alert.',
348
+ since: '0.1.0',
349
+ },
350
+ {
351
+ name: 'Input',
352
+ module: 'forms',
353
+ category: 'Primitives',
354
+ status: 'stable',
355
+ accessibility: 'verified',
356
+ description: 'Text input with leading/trailing icons and glass focus rings.',
357
+ since: '0.1.0',
358
+ },
359
+ {
360
+ name: 'SearchInput',
361
+ module: 'forms',
362
+ category: 'Composite',
363
+ status: 'stable',
364
+ accessibility: 'verified',
365
+ description: 'Input with search icon and one-click clear button.',
366
+ since: '0.1.0',
367
+ },
368
+ {
369
+ name: 'PasswordInput',
370
+ module: 'forms',
371
+ category: 'Composite',
372
+ status: 'stable',
373
+ accessibility: 'verified',
374
+ description: 'Password input with toggleable visibility eye button.',
375
+ since: '0.1.0',
376
+ },
377
+ {
378
+ name: 'Textarea',
379
+ module: 'forms',
380
+ category: 'Primitives',
381
+ status: 'stable',
382
+ accessibility: 'verified',
383
+ description: 'Multi-line textarea with auto-resize option.',
384
+ since: '0.1.0',
385
+ },
386
+ {
387
+ name: 'Select',
388
+ module: 'forms',
389
+ category: 'Primitives',
390
+ status: 'stable',
391
+ accessibility: 'verified',
392
+ description: 'Native select dropdown with styled Chevron icon and FormField integration.',
393
+ since: '0.1.0',
394
+ },
395
+ {
396
+ name: 'Checkbox',
397
+ module: 'forms',
398
+ category: 'Primitives',
399
+ status: 'stable',
400
+ accessibility: 'verified',
401
+ description: 'Controlled and uncontrolled checkbox with indeterminate support and full WAI-ARIA compliance.',
402
+ since: '0.1.0',
403
+ props: { checked: 'boolean', defaultChecked: 'boolean', indeterminate: 'boolean', onCheckedChange: '(checked: boolean) => void' },
404
+ },
405
+ {
406
+ name: 'CheckboxGroup',
407
+ module: 'forms',
408
+ category: 'Primitives',
409
+ status: 'stable',
410
+ accessibility: 'verified',
411
+ description: 'Group container for related checkboxes.',
412
+ since: '0.1.0',
413
+ },
414
+ {
415
+ name: 'Radio',
416
+ module: 'forms',
417
+ category: 'Primitives',
418
+ status: 'stable',
419
+ accessibility: 'verified',
420
+ description: 'Accessible radio button with animated selection dot.',
421
+ since: '0.1.0',
422
+ },
423
+ {
424
+ name: 'RadioGroup',
425
+ module: 'forms',
426
+ category: 'Primitives',
427
+ status: 'stable',
428
+ accessibility: 'verified',
429
+ description: 'Radio group with keyboard arrow navigation.',
430
+ since: '0.1.0',
431
+ },
432
+ {
433
+ name: 'Switch',
434
+ module: 'forms',
435
+ category: 'Primitives',
436
+ status: 'stable',
437
+ accessibility: 'verified',
438
+ description: 'iOS-inspired spatial toggle switch with smooth physics and role=switch.',
439
+ since: '0.1.0',
440
+ },
441
+ {
442
+ name: 'Slider',
443
+ module: 'forms',
444
+ category: 'Primitives',
445
+ status: 'stable',
446
+ accessibility: 'verified',
447
+ description: 'Single-value track slider with live fill and tooltips.',
448
+ since: '0.1.0',
449
+ },
450
+ {
451
+ name: 'RangeSlider',
452
+ module: 'forms',
453
+ category: 'Primitives',
454
+ status: 'stable',
455
+ accessibility: 'verified',
456
+ description: 'Dual-thumb range slider with pointer capture and WAI-ARIA slider roles.',
457
+ since: '0.1.0',
458
+ props: { min: 'number', max: 'number', step: 'number', value: '[number, number]', defaultValue: '[number, number]', onChange: '(val: [number, number]) => void' },
459
+ },
460
+ {
461
+ name: 'PinInput',
462
+ module: 'forms',
463
+ category: 'Composite',
464
+ status: 'stable',
465
+ accessibility: 'verified',
466
+ description: 'Multi-digit OTP/PIN code input with paste handling and arrow key navigation.',
467
+ since: '0.1.0',
468
+ },
469
+ {
470
+ name: 'DatePicker',
471
+ module: 'forms',
472
+ category: 'Composite',
473
+ status: 'stable',
474
+ accessibility: 'verified',
475
+ description: 'Calendar date picker popover with quick presets and min/max restrictions.',
476
+ since: '0.1.0',
477
+ },
478
+ {
479
+ name: 'DateRangePicker',
480
+ module: 'forms',
481
+ category: 'Composite',
482
+ status: 'stable',
483
+ accessibility: 'verified',
484
+ description: 'Dual date range picker with live span highlight.',
485
+ since: '0.1.0',
486
+ },
487
+ {
488
+ name: 'TimePicker',
489
+ module: 'forms',
490
+ category: 'Composite',
491
+ status: 'stable',
492
+ accessibility: 'verified',
493
+ description: 'Time selector supporting 12h (AM/PM) and 24h formats with parent controlled sync.',
494
+ since: '0.1.0',
495
+ props: { value: 'string', defaultValue: 'string', format: "'12h' | '24h'", onChange: '(time: string) => void' },
496
+ },
497
+ {
498
+ name: 'Combobox',
499
+ module: 'forms',
500
+ category: 'Composite',
501
+ status: 'stable',
502
+ accessibility: 'verified',
503
+ description: 'Searchable autocomplete dropdown with keyboard navigation and active descendant ARIA roles.',
504
+ since: '0.1.0',
505
+ props: { options: 'ComboboxOption[]', value: 'string', onChange: '(val: string) => void', searchPlaceholder: 'string' },
506
+ },
507
+ {
508
+ name: 'MultiSelect',
509
+ module: 'forms',
510
+ category: 'Composite',
511
+ status: 'beta',
512
+ accessibility: 'supported',
513
+ description: 'Multi-tag selector with search filtering, keyboard navigation, and removable chips.',
514
+ since: '0.1.0',
515
+ },
516
+ {
517
+ name: 'FileUpload',
518
+ module: 'forms',
519
+ category: 'Advanced',
520
+ status: 'stable',
521
+ accessibility: 'verified',
522
+ description: 'Drag-and-drop file upload zone with file preview, progress bars, and validation.',
523
+ since: '0.1.0',
524
+ },
525
+ {
526
+ name: 'NumberInput',
527
+ module: 'forms',
528
+ category: 'Composite',
529
+ status: 'stable',
530
+ accessibility: 'verified',
531
+ description: 'Numeric input with stepper buttons, clamping, and formatters.',
532
+ since: '0.1.0',
533
+ },
534
+ {
535
+ name: 'CurrencyInput',
536
+ module: 'forms',
537
+ category: 'Composite',
538
+ status: 'stable',
539
+ accessibility: 'verified',
540
+ description: 'Currency formatted input with currency symbol adornment.',
541
+ since: '0.1.0',
542
+ },
543
+ {
544
+ name: 'MaskedInput',
545
+ module: 'forms',
546
+ category: 'Composite',
547
+ status: 'stable',
548
+ accessibility: 'verified',
549
+ description: 'Input with format pattern mask (e.g. phone, credit card).',
550
+ since: '0.1.0',
551
+ },
552
+
553
+ // Overlays
554
+ {
555
+ name: 'Portal',
556
+ module: 'overlays',
557
+ category: 'Foundation',
558
+ status: 'stable',
559
+ accessibility: 'native',
560
+ description: 'Mounts overlay children at document.body.',
561
+ since: '0.1.0',
562
+ },
563
+ {
564
+ name: 'FocusTrap',
565
+ module: 'overlays',
566
+ category: 'Foundation',
567
+ status: 'stable',
568
+ accessibility: 'verified',
569
+ description: 'Traps keyboard Tab navigation inside container and restores focus upon exit.',
570
+ since: '0.1.0',
571
+ },
572
+ {
573
+ name: 'Modal',
574
+ module: 'overlays',
575
+ category: 'Primitives',
576
+ status: 'stable',
577
+ accessibility: 'verified',
578
+ description: 'Accessible modal dialog with focus trapping, scroll lock reference counting, and ARIA auto-linking.',
579
+ since: '0.1.0',
580
+ props: { isOpen: 'boolean', onClose: '() => void', closeOnEsc: 'boolean', closeOnOverlayClick: 'boolean' },
581
+ },
582
+ {
583
+ name: 'ModalOverlay',
584
+ module: 'overlays',
585
+ category: 'Primitives',
586
+ status: 'stable',
587
+ accessibility: 'verified',
588
+ description: 'Backdrop for modal dialogs.',
589
+ since: '0.1.0',
590
+ },
591
+ {
592
+ name: 'ModalContent',
593
+ module: 'overlays',
594
+ category: 'Primitives',
595
+ status: 'stable',
596
+ accessibility: 'verified',
597
+ description: 'Content box for modal dialogs.',
598
+ since: '0.1.0',
599
+ },
600
+ {
601
+ name: 'ModalHeader',
602
+ module: 'overlays',
603
+ category: 'Primitives',
604
+ status: 'stable',
605
+ accessibility: 'verified',
606
+ description: 'Header container for modal dialogs.',
607
+ since: '0.1.0',
608
+ },
609
+ {
610
+ name: 'ModalTitle',
611
+ module: 'overlays',
612
+ category: 'Primitives',
613
+ status: 'stable',
614
+ accessibility: 'verified',
615
+ description: 'Title linked automatically to modal aria-labelledby.',
616
+ since: '0.1.0',
617
+ },
618
+ {
619
+ name: 'ModalDescription',
620
+ module: 'overlays',
621
+ category: 'Primitives',
622
+ status: 'stable',
623
+ accessibility: 'verified',
624
+ description: 'Description linked automatically to modal aria-describedby.',
625
+ since: '0.1.0',
626
+ },
627
+ {
628
+ name: 'ModalBody',
629
+ module: 'overlays',
630
+ category: 'Primitives',
631
+ status: 'stable',
632
+ accessibility: 'verified',
633
+ description: 'Main body for modal dialogs.',
634
+ since: '0.1.0',
635
+ },
636
+ {
637
+ name: 'ModalFooter',
638
+ module: 'overlays',
639
+ category: 'Primitives',
640
+ status: 'stable',
641
+ accessibility: 'verified',
642
+ description: 'Action footer for modal dialogs.',
643
+ since: '0.1.0',
644
+ },
645
+ {
646
+ name: 'ModalCloseButton',
647
+ module: 'overlays',
648
+ category: 'Primitives',
649
+ status: 'stable',
650
+ accessibility: 'verified',
651
+ description: 'Top-right close button for modal dialogs.',
652
+ since: '0.1.0',
653
+ },
654
+ {
655
+ name: 'AlertDialog',
656
+ module: 'overlays',
657
+ category: 'Composite',
658
+ status: 'stable',
659
+ accessibility: 'verified',
660
+ description: 'Confirmation alert dialog with role=alertdialog and primary/danger confirm action.',
661
+ since: '0.1.0',
662
+ },
663
+ {
664
+ name: 'Drawer',
665
+ module: 'overlays',
666
+ category: 'Primitives',
667
+ status: 'stable',
668
+ accessibility: 'verified',
669
+ description: 'Side or bottom drawer sheet with focus trap, scroll lock, and slide animation.',
670
+ since: '0.1.0',
671
+ props: { isOpen: 'boolean', onClose: '() => void', placement: "'right' | 'left' | 'top' | 'bottom'" },
672
+ },
673
+ {
674
+ name: 'DrawerHeader',
675
+ module: 'overlays',
676
+ category: 'Primitives',
677
+ status: 'stable',
678
+ accessibility: 'verified',
679
+ description: 'Header container for drawer sheets.',
680
+ since: '0.1.0',
681
+ },
682
+ {
683
+ name: 'DrawerBody',
684
+ module: 'overlays',
685
+ category: 'Primitives',
686
+ status: 'stable',
687
+ accessibility: 'verified',
688
+ description: 'Body container for drawer sheets.',
689
+ since: '0.1.0',
690
+ },
691
+ {
692
+ name: 'DrawerFooter',
693
+ module: 'overlays',
694
+ category: 'Primitives',
695
+ status: 'stable',
696
+ accessibility: 'verified',
697
+ description: 'Footer container for drawer sheets.',
698
+ since: '0.1.0',
699
+ },
700
+ {
701
+ name: 'Tooltip',
702
+ module: 'overlays',
703
+ category: 'Primitives',
704
+ status: 'stable',
705
+ accessibility: 'verified',
706
+ description: 'Micro tooltip with hover delays and role=tooltip.',
707
+ since: '0.1.0',
708
+ },
709
+ {
710
+ name: 'Popover',
711
+ module: 'overlays',
712
+ category: 'Primitives',
713
+ status: 'stable',
714
+ accessibility: 'verified',
715
+ description: 'Floating popover anchor with outside click detection.',
716
+ since: '0.1.0',
717
+ },
718
+ {
719
+ name: 'Toast',
720
+ module: 'overlays',
721
+ category: 'Composite',
722
+ status: 'stable',
723
+ accessibility: 'verified',
724
+ description: 'Floating toast notification with status variants and progress bar.',
725
+ since: '0.1.0',
726
+ },
727
+ {
728
+ name: 'ToasterProvider',
729
+ module: 'overlays',
730
+ category: 'Foundation',
731
+ status: 'stable',
732
+ accessibility: 'verified',
733
+ description: 'Context provider managing toast notifications queue.',
734
+ since: '0.1.0',
735
+ },
736
+ {
737
+ name: 'useToast',
738
+ module: 'overlays',
739
+ category: 'Foundation',
740
+ status: 'stable',
741
+ accessibility: 'verified',
742
+ description: 'Hook to trigger toasts: { toast, dismiss, toasts }.',
743
+ since: '0.1.0',
744
+ },
745
+ {
746
+ name: 'BottomSheet',
747
+ module: 'overlays',
748
+ category: 'Primitives',
749
+ status: 'stable',
750
+ accessibility: 'verified',
751
+ description: 'Mobile drawer sheet with drag handle and scroll lock.',
752
+ since: '0.1.0',
753
+ },
754
+ {
755
+ name: 'BottomSheetHeader',
756
+ module: 'overlays',
757
+ category: 'Primitives',
758
+ status: 'stable',
759
+ accessibility: 'verified',
760
+ description: 'Header container for bottom sheet.',
761
+ since: '0.1.0',
762
+ },
763
+ {
764
+ name: 'BottomSheetBody',
765
+ module: 'overlays',
766
+ category: 'Primitives',
767
+ status: 'stable',
768
+ accessibility: 'verified',
769
+ description: 'Body container for bottom sheet.',
770
+ since: '0.1.0',
771
+ },
772
+ {
773
+ name: 'BottomSheetFooter',
774
+ module: 'overlays',
775
+ category: 'Primitives',
776
+ status: 'stable',
777
+ accessibility: 'verified',
778
+ description: 'Footer container for bottom sheet.',
779
+ since: '0.1.0',
780
+ },
781
+ {
782
+ name: 'ContextMenu',
783
+ module: 'overlays',
784
+ category: 'Composite',
785
+ status: 'stable',
786
+ accessibility: 'verified',
787
+ description: 'Right-click context menu with keyboard navigation and portal positioning.',
788
+ since: '0.1.0',
789
+ },
790
+ {
791
+ name: 'ContextMenuItem',
792
+ module: 'overlays',
793
+ category: 'Composite',
794
+ status: 'stable',
795
+ accessibility: 'verified',
796
+ description: 'Item inside context menu with shortcut badges.',
797
+ since: '0.1.0',
798
+ },
799
+ {
800
+ name: 'ContextMenuSeparator',
801
+ module: 'overlays',
802
+ category: 'Composite',
803
+ status: 'stable',
804
+ accessibility: 'verified',
805
+ description: 'Separator line in context menu.',
806
+ since: '0.1.0',
807
+ },
808
+ {
809
+ name: 'HoverCard',
810
+ module: 'overlays',
811
+ category: 'Composite',
812
+ status: 'stable',
813
+ accessibility: 'verified',
814
+ description: 'Preview card appearing when hovering over trigger with delay.',
815
+ since: '0.1.0',
816
+ },
817
+
818
+ // Navigation
819
+ {
820
+ name: 'Tabs',
821
+ module: 'navigation',
822
+ category: 'Primitives',
823
+ status: 'stable',
824
+ accessibility: 'verified',
825
+ description: 'Accessible tab system with keyboard arrow navigation, roving tabIndex, and auto-linked tab/panel IDs.',
826
+ since: '0.1.0',
827
+ props: { defaultValue: 'string', value: 'string', onValueChange: '(val: string) => void', variant: "'pills' | 'line' | 'enclosed'", orientation: "'horizontal' | 'vertical'" },
828
+ },
829
+ {
830
+ name: 'TabsList',
831
+ module: 'navigation',
832
+ category: 'Primitives',
833
+ status: 'stable',
834
+ accessibility: 'verified',
835
+ description: 'Container for tab triggers with role=tablist.',
836
+ since: '0.1.0',
837
+ },
838
+ {
839
+ name: 'TabsTrigger',
840
+ module: 'navigation',
841
+ category: 'Primitives',
842
+ status: 'stable',
843
+ accessibility: 'verified',
844
+ description: 'Tab trigger button with roving tabIndex and role=tab.',
845
+ since: '0.1.0',
846
+ },
847
+ {
848
+ name: 'TabsContent',
849
+ module: 'navigation',
850
+ category: 'Primitives',
851
+ status: 'stable',
852
+ accessibility: 'verified',
853
+ description: 'Tab panel content with role=tabpanel and aria-labelledby.',
854
+ since: '0.1.0',
855
+ },
856
+ {
857
+ name: 'Breadcrumb',
858
+ module: 'navigation',
859
+ category: 'Primitives',
860
+ status: 'stable',
861
+ accessibility: 'verified',
862
+ description: 'Breadcrumb navigation trail with role=navigation.',
863
+ since: '0.1.0',
864
+ },
865
+ {
866
+ name: 'BreadcrumbItem',
867
+ module: 'navigation',
868
+ category: 'Primitives',
869
+ status: 'stable',
870
+ accessibility: 'verified',
871
+ description: 'Single item in breadcrumb trail.',
872
+ since: '0.1.0',
873
+ },
874
+ {
875
+ name: 'BreadcrumbLink',
876
+ module: 'navigation',
877
+ category: 'Primitives',
878
+ status: 'stable',
879
+ accessibility: 'verified',
880
+ description: 'Clickable breadcrumb link.',
881
+ since: '0.1.0',
882
+ },
883
+ {
884
+ name: 'BreadcrumbPage',
885
+ module: 'navigation',
886
+ category: 'Primitives',
887
+ status: 'stable',
888
+ accessibility: 'verified',
889
+ description: 'Current active breadcrumb page with aria-current=page.',
890
+ since: '0.1.0',
891
+ },
892
+ {
893
+ name: 'BreadcrumbSeparator',
894
+ module: 'navigation',
895
+ category: 'Primitives',
896
+ status: 'stable',
897
+ accessibility: 'verified',
898
+ description: 'Separator icon between breadcrumb items.',
899
+ since: '0.1.0',
900
+ },
901
+ {
902
+ name: 'Pagination',
903
+ module: 'navigation',
904
+ category: 'Composite',
905
+ status: 'stable',
906
+ accessibility: 'verified',
907
+ description: 'Pagination controls with page numbers, ellipsis, and prev/next buttons.',
908
+ since: '0.1.0',
909
+ },
910
+ {
911
+ name: 'Stepper',
912
+ module: 'navigation',
913
+ category: 'Composite',
914
+ status: 'stable',
915
+ accessibility: 'verified',
916
+ description: 'Multi-step process indicator with completed, active, and upcoming steps.',
917
+ since: '0.1.0',
918
+ },
919
+ {
920
+ name: 'DropdownMenu',
921
+ module: 'navigation',
922
+ category: 'Composite',
923
+ status: 'stable',
924
+ accessibility: 'verified',
925
+ description: 'Contextual dropdown menu with keyboard arrow navigation and role=menu.',
926
+ since: '0.1.0',
927
+ },
928
+ {
929
+ name: 'DropdownMenuTrigger',
930
+ module: 'navigation',
931
+ category: 'Composite',
932
+ status: 'stable',
933
+ accessibility: 'verified',
934
+ description: 'Trigger button for dropdown menu.',
935
+ since: '0.1.0',
936
+ },
937
+ {
938
+ name: 'DropdownMenuContent',
939
+ module: 'navigation',
940
+ category: 'Composite',
941
+ status: 'stable',
942
+ accessibility: 'verified',
943
+ description: 'Menu list container with role=menu.',
944
+ since: '0.1.0',
945
+ },
946
+ {
947
+ name: 'DropdownMenuItem',
948
+ module: 'navigation',
949
+ category: 'Composite',
950
+ status: 'stable',
951
+ accessibility: 'verified',
952
+ description: 'Interactive item in dropdown menu with role=menuitem.',
953
+ since: '0.1.0',
954
+ },
955
+ {
956
+ name: 'DropdownMenuSeparator',
957
+ module: 'navigation',
958
+ category: 'Composite',
959
+ status: 'stable',
960
+ accessibility: 'verified',
961
+ description: 'Divider in dropdown menu.',
962
+ since: '0.1.0',
963
+ },
964
+ {
965
+ name: 'DropdownMenuLabel',
966
+ module: 'navigation',
967
+ category: 'Composite',
968
+ status: 'stable',
969
+ accessibility: 'verified',
970
+ description: 'Group label in dropdown menu.',
971
+ since: '0.1.0',
972
+ },
973
+ {
974
+ name: 'CommandPalette',
975
+ module: 'navigation',
976
+ category: 'Advanced',
977
+ status: 'stable',
978
+ accessibility: 'verified',
979
+ description: 'Spotlight-style ⌘K global command palette with search filtering.',
980
+ since: '0.1.0',
981
+ },
982
+
983
+ // Data Display
984
+ {
985
+ name: 'Card',
986
+ module: 'data-display',
987
+ category: 'Primitives',
988
+ status: 'stable',
989
+ accessibility: 'native',
990
+ description: 'Glass-morphic and solid card container.',
991
+ since: '0.1.0',
992
+ },
993
+ {
994
+ name: 'CardHeader',
995
+ module: 'data-display',
996
+ category: 'Primitives',
997
+ status: 'stable',
998
+ accessibility: 'native',
999
+ description: 'Card top header section.',
1000
+ since: '0.1.0',
1001
+ },
1002
+ {
1003
+ name: 'CardTitle',
1004
+ module: 'data-display',
1005
+ category: 'Primitives',
1006
+ status: 'stable',
1007
+ accessibility: 'native',
1008
+ description: 'Card title heading.',
1009
+ since: '0.1.0',
1010
+ },
1011
+ {
1012
+ name: 'CardDescription',
1013
+ module: 'data-display',
1014
+ category: 'Primitives',
1015
+ status: 'stable',
1016
+ accessibility: 'native',
1017
+ description: 'Card secondary description text.',
1018
+ since: '0.1.0',
1019
+ },
1020
+ {
1021
+ name: 'CardContent',
1022
+ module: 'data-display',
1023
+ category: 'Primitives',
1024
+ status: 'stable',
1025
+ accessibility: 'native',
1026
+ description: 'Card body content section.',
1027
+ since: '0.1.0',
1028
+ },
1029
+ {
1030
+ name: 'CardFooter',
1031
+ module: 'data-display',
1032
+ category: 'Primitives',
1033
+ status: 'stable',
1034
+ accessibility: 'native',
1035
+ description: 'Card bottom action section.',
1036
+ since: '0.1.0',
1037
+ },
1038
+ {
1039
+ name: 'Table',
1040
+ module: 'data-display',
1041
+ category: 'Primitives',
1042
+ status: 'stable',
1043
+ accessibility: 'native',
1044
+ description: 'HTML5 semantic table container.',
1045
+ since: '0.1.0',
1046
+ },
1047
+ {
1048
+ name: 'TableHeader',
1049
+ module: 'data-display',
1050
+ category: 'Primitives',
1051
+ status: 'stable',
1052
+ accessibility: 'native',
1053
+ description: 'Table thead element.',
1054
+ since: '0.1.0',
1055
+ },
1056
+ {
1057
+ name: 'TableBody',
1058
+ module: 'data-display',
1059
+ category: 'Primitives',
1060
+ status: 'stable',
1061
+ accessibility: 'native',
1062
+ description: 'Table tbody element.',
1063
+ since: '0.1.0',
1064
+ },
1065
+ {
1066
+ name: 'TableFooter',
1067
+ module: 'data-display',
1068
+ category: 'Primitives',
1069
+ status: 'stable',
1070
+ accessibility: 'native',
1071
+ description: 'Table tfoot element.',
1072
+ since: '0.1.0',
1073
+ },
1074
+ {
1075
+ name: 'TableRow',
1076
+ module: 'data-display',
1077
+ category: 'Primitives',
1078
+ status: 'stable',
1079
+ accessibility: 'native',
1080
+ description: 'Table tr element.',
1081
+ since: '0.1.0',
1082
+ },
1083
+ {
1084
+ name: 'TableHead',
1085
+ module: 'data-display',
1086
+ category: 'Primitives',
1087
+ status: 'stable',
1088
+ accessibility: 'native',
1089
+ description: 'Table th element.',
1090
+ since: '0.1.0',
1091
+ },
1092
+ {
1093
+ name: 'TableCell',
1094
+ module: 'data-display',
1095
+ category: 'Primitives',
1096
+ status: 'stable',
1097
+ accessibility: 'native',
1098
+ description: 'Table td element.',
1099
+ since: '0.1.0',
1100
+ },
1101
+ {
1102
+ name: 'TableCaption',
1103
+ module: 'data-display',
1104
+ category: 'Primitives',
1105
+ status: 'stable',
1106
+ accessibility: 'native',
1107
+ description: 'Table caption element.',
1108
+ since: '0.1.0',
1109
+ },
1110
+ {
1111
+ name: 'Avatar',
1112
+ module: 'data-display',
1113
+ category: 'Primitives',
1114
+ status: 'stable',
1115
+ accessibility: 'native',
1116
+ description: 'User avatar image with fallback initials and status badge indicator.',
1117
+ since: '0.1.0',
1118
+ },
1119
+ {
1120
+ name: 'AvatarGroup',
1121
+ module: 'data-display',
1122
+ category: 'Primitives',
1123
+ status: 'stable',
1124
+ accessibility: 'native',
1125
+ description: 'Stacked group of avatars with overflow counter.',
1126
+ since: '0.1.0',
1127
+ },
1128
+ {
1129
+ name: 'Accordion',
1130
+ module: 'data-display',
1131
+ category: 'Composite',
1132
+ status: 'stable',
1133
+ accessibility: 'verified',
1134
+ description: 'Collapsible accordion with single/multiple expansion modes and smooth height animation.',
1135
+ since: '0.1.0',
1136
+ },
1137
+ {
1138
+ name: 'AccordionItem',
1139
+ module: 'data-display',
1140
+ category: 'Composite',
1141
+ status: 'stable',
1142
+ accessibility: 'verified',
1143
+ description: 'Single collapsible accordion item.',
1144
+ since: '0.1.0',
1145
+ },
1146
+ {
1147
+ name: 'AccordionTrigger',
1148
+ module: 'data-display',
1149
+ category: 'Composite',
1150
+ status: 'stable',
1151
+ accessibility: 'verified',
1152
+ description: 'Header button triggering accordion collapse/expand.',
1153
+ since: '0.1.0',
1154
+ },
1155
+ {
1156
+ name: 'AccordionContent',
1157
+ module: 'data-display',
1158
+ category: 'Composite',
1159
+ status: 'stable',
1160
+ accessibility: 'verified',
1161
+ description: 'Collapsible body content.',
1162
+ since: '0.1.0',
1163
+ },
1164
+ {
1165
+ name: 'Chip',
1166
+ module: 'data-display',
1167
+ category: 'Primitives',
1168
+ status: 'stable',
1169
+ accessibility: 'verified',
1170
+ description: 'Interactive tag or badge with removable button.',
1171
+ since: '0.1.0',
1172
+ },
1173
+ {
1174
+ name: 'StatCard',
1175
+ module: 'data-display',
1176
+ category: 'Composite',
1177
+ status: 'stable',
1178
+ accessibility: 'native',
1179
+ description: 'Dashboard metric card with trend indicators and sparklines.',
1180
+ since: '0.1.0',
1181
+ },
1182
+ {
1183
+ name: 'Timeline',
1184
+ module: 'data-display',
1185
+ category: 'Composite',
1186
+ status: 'stable',
1187
+ accessibility: 'native',
1188
+ description: 'Chronological timeline of events with icons and connecting rails.',
1189
+ since: '0.1.0',
1190
+ },
1191
+ {
1192
+ name: 'DataTablePro',
1193
+ module: 'data-display',
1194
+ category: 'Advanced',
1195
+ status: 'stable',
1196
+ accessibility: 'verified',
1197
+ description: 'Enterprise data table with sorting, search accessors, pagination clamp, cross-page selection, CSV export, and server-mode support.',
1198
+ since: '0.1.0',
1199
+ props: {
1200
+ data: 'TData[]',
1201
+ columns: 'ColumnDef<TData>[]',
1202
+ keyExtractor: '(row: TData) => string',
1203
+ searchable: 'boolean',
1204
+ selectable: 'boolean',
1205
+ manualPagination: 'boolean',
1206
+ manualSorting: 'boolean',
1207
+ manualFiltering: 'boolean',
1208
+ },
1209
+ },
1210
+ {
1211
+ name: 'TreeView',
1212
+ module: 'data-display',
1213
+ category: 'Advanced',
1214
+ status: 'stable',
1215
+ accessibility: 'verified',
1216
+ description: 'Hierarchical tree view with full WAI-ARIA keyboard navigation and expand/collapse states.',
1217
+ since: '0.1.0',
1218
+ props: { data: 'TreeItem[]', selectedId: 'string', onSelect: '(item: TreeItem) => void' },
1219
+ },
1220
+ {
1221
+ name: 'Carousel',
1222
+ module: 'data-display',
1223
+ category: 'Composite',
1224
+ status: 'stable',
1225
+ accessibility: 'verified',
1226
+ description: 'Sliding carousel with touch swipe, arrow navigation, and dot indicators.',
1227
+ since: '0.1.0',
1228
+ },
1229
+
1230
+ // Feedback
1231
+ {
1232
+ name: 'Spinner',
1233
+ module: 'feedback',
1234
+ category: 'Primitives',
1235
+ status: 'stable',
1236
+ accessibility: 'verified',
1237
+ description: 'Loading spinner with role=status and size variants.',
1238
+ since: '0.1.0',
1239
+ },
1240
+ {
1241
+ name: 'Skeleton',
1242
+ module: 'feedback',
1243
+ category: 'Primitives',
1244
+ status: 'stable',
1245
+ accessibility: 'native',
1246
+ description: 'Animated shimmering placeholder for loading states.',
1247
+ since: '0.1.0',
1248
+ },
1249
+ {
1250
+ name: 'SkeletonText',
1251
+ module: 'feedback',
1252
+ category: 'Primitives',
1253
+ status: 'stable',
1254
+ accessibility: 'native',
1255
+ description: 'Multi-line text skeleton.',
1256
+ since: '0.1.0',
1257
+ },
1258
+ {
1259
+ name: 'SkeletonCircle',
1260
+ module: 'feedback',
1261
+ category: 'Primitives',
1262
+ status: 'stable',
1263
+ accessibility: 'native',
1264
+ description: 'Circular skeleton for avatar placeholders.',
1265
+ since: '0.1.0',
1266
+ },
1267
+ {
1268
+ name: 'ProgressBar',
1269
+ module: 'feedback',
1270
+ category: 'Primitives',
1271
+ status: 'stable',
1272
+ accessibility: 'verified',
1273
+ description: 'Linear progress bar with role=progressbar and value announcements.',
1274
+ since: '0.1.0',
1275
+ },
1276
+ {
1277
+ name: 'CircularProgress',
1278
+ module: 'feedback',
1279
+ category: 'Primitives',
1280
+ status: 'stable',
1281
+ accessibility: 'verified',
1282
+ description: 'Radial SVG progress indicator.',
1283
+ since: '0.1.0',
1284
+ },
1285
+ {
1286
+ name: 'Alert',
1287
+ module: 'feedback',
1288
+ category: 'Composite',
1289
+ status: 'stable',
1290
+ accessibility: 'verified',
1291
+ description: 'Contextual feedback alert with status icons and role=alert.',
1292
+ since: '0.1.0',
1293
+ },
1294
+ {
1295
+ name: 'AlertTitle',
1296
+ module: 'feedback',
1297
+ category: 'Composite',
1298
+ status: 'stable',
1299
+ accessibility: 'verified',
1300
+ description: 'Alert heading title.',
1301
+ since: '0.1.0',
1302
+ },
1303
+ {
1304
+ name: 'AlertDescription',
1305
+ module: 'feedback',
1306
+ category: 'Composite',
1307
+ status: 'stable',
1308
+ accessibility: 'verified',
1309
+ description: 'Alert message body.',
1310
+ since: '0.1.0',
1311
+ },
1312
+ {
1313
+ name: 'EmptyState',
1314
+ module: 'feedback',
1315
+ category: 'Composite',
1316
+ status: 'stable',
1317
+ accessibility: 'native',
1318
+ description: 'Placeholder view for empty data tables, lists, or search results.',
1319
+ since: '0.1.0',
1320
+ },
1321
+
1322
+ // Glass & Bento
1323
+ {
1324
+ name: 'GlassCard',
1325
+ module: 'glass',
1326
+ category: 'Visual',
1327
+ status: 'stable',
1328
+ accessibility: 'native',
1329
+ description: 'Spatial backdrop-filter blur card with dynamic border sheen.',
1330
+ since: '0.1.0',
1331
+ },
1332
+ {
1333
+ name: 'GlassButton',
1334
+ module: 'glass',
1335
+ category: 'Visual',
1336
+ status: 'stable',
1337
+ accessibility: 'verified',
1338
+ description: 'Translucent glass button with optical reflections.',
1339
+ since: '0.1.0',
1340
+ },
1341
+ {
1342
+ name: 'GlassBadge',
1343
+ module: 'glass',
1344
+ category: 'Visual',
1345
+ status: 'stable',
1346
+ accessibility: 'native',
1347
+ description: 'Pill badge with glass backdrop effect.',
1348
+ since: '0.1.0',
1349
+ },
1350
+ {
1351
+ name: 'BentoGrid',
1352
+ module: 'bento',
1353
+ category: 'Visual',
1354
+ status: 'stable',
1355
+ accessibility: 'native',
1356
+ description: 'Editorial bento layout grid container.',
1357
+ since: '0.1.0',
1358
+ },
1359
+ {
1360
+ name: 'BentoCard',
1361
+ module: 'bento',
1362
+ category: 'Visual',
1363
+ status: 'stable',
1364
+ accessibility: 'native',
1365
+ description: 'Bento tile with graphic highlights and responsive spans.',
1366
+ since: '0.1.0',
1367
+ },
1368
+ ];