@maestro-js/components 1.0.0-alpha.18 → 1.0.0-alpha.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 (56) hide show
  1. package/commands/add.ts +1 -16
  2. package/dist/components.json +1 -1
  3. package/dist/index.js +1 -14
  4. package/package.json +5 -5
  5. package/registry.json +790 -598
  6. package/scripts/build.ts +4 -11
  7. package/src/components/alert-dialog.tsx +3 -3
  8. package/src/components/avatar.tsx +1 -1
  9. package/src/components/button-link.tsx +0 -3
  10. package/src/components/button.tsx +0 -4
  11. package/src/components/checkbox.tsx +7 -7
  12. package/src/components/chip.tsx +7 -7
  13. package/src/components/container.tsx +3 -3
  14. package/src/components/dialog.tsx +7 -21
  15. package/src/components/disclosure.tsx +1 -1
  16. package/src/components/drawer.tsx +5 -19
  17. package/src/components/form.tsx +5 -27
  18. package/src/components/helpers/form-field.tsx +8 -7
  19. package/src/components/helpers/get-button-classes.ts +23 -23
  20. package/src/components/helpers/headless-button.tsx +1 -1
  21. package/src/components/inline-alert.tsx +3 -3
  22. package/src/components/labeled-value.tsx +2 -2
  23. package/src/components/menu.tsx +26 -60
  24. package/src/components/month-day-input.tsx +1 -2
  25. package/src/components/multiselect.tsx +70 -74
  26. package/src/components/radio.tsx +8 -8
  27. package/src/components/select.tsx +8 -9
  28. package/src/components/stepper.tsx +6 -6
  29. package/src/components/switch.tsx +7 -7
  30. package/src/components/tabs.tsx +1 -1
  31. package/src/components/tag-field.tsx +3 -3
  32. package/src/components/text-area.tsx +1 -1
  33. package/src/components/text-field.tsx +1 -4
  34. package/src/components/toast.tsx +6 -6
  35. package/src/components/toggle-button-group.tsx +2 -2
  36. package/src/utils/icons.d.ts +1 -2
  37. package/src/utils/use-tab-indicator.ts +9 -9
  38. package/src/components/date-range.tsx +0 -138
  39. package/src/components/optional-link.tsx +0 -15
  40. package/src/components/table/headless-templated-row-table.ts +0 -550
  41. package/src/components/table/index.tsx +0 -41
  42. package/src/components/table/server-table.ts +0 -143
  43. package/src/components/table/table-actions.tsx +0 -76
  44. package/src/components/table/table-container.tsx +0 -173
  45. package/src/components/table/table-container.type-test.ts +0 -155
  46. package/src/components/table/table-filters/date-range-filter.tsx +0 -227
  47. package/src/components/table/table-filters/select-filter.tsx +0 -211
  48. package/src/components/table/table-filters/sort.tsx +0 -85
  49. package/src/components/table/table-primitives.tsx +0 -226
  50. package/src/components/table/table-toolbar.tsx +0 -300
  51. package/src/components/table/table-types.ts +0 -61
  52. package/src/components/table/use-client-table.ts +0 -157
  53. package/src/components/table/use-client-table.type-test.ts +0 -217
  54. package/src/components/table/use-server-table.ts +0 -192
  55. package/src/components/table/use-server-table.type-test.ts +0 -174
  56. package/src/utils/use-query-state.ts +0 -626
package/registry.json CHANGED
@@ -1,248 +1,56 @@
1
1
  [
2
2
  {
3
- "name": "tw",
4
- "title": "TW",
5
- "description": "Tailwind CSS class merging and render-prop composition utility.",
3
+ "name": "button",
4
+ "title": "Button",
5
+ "description": "A polymorphic button with variants, colors, sizes, shapes, toggle state, and built-in async click handling with a delayed spinner.",
6
6
  "files": [
7
7
  {
8
- "path": "src/utils/tw.ts",
9
- "type": "utils"
10
- }
11
- ]
12
- },
13
- {
14
- "name": "compose-refs",
15
- "title": "Compose Refs",
16
- "description": "Merges multiple React refs into a single callback ref.",
17
- "files": [
8
+ "path": "src/components/button.tsx",
9
+ "type": "components"
10
+ },
18
11
  {
19
- "path": "src/utils/compose-refs.ts",
20
- "type": "utils"
21
- }
22
- ]
23
- },
24
- {
25
- "name": "use-render-props",
26
- "title": "Use Render Props",
27
- "description": "Hook for resolving render-prop style className and children.",
28
- "files": [
12
+ "path": "src/components/icon.tsx",
13
+ "type": "components"
14
+ },
29
15
  {
30
- "path": "src/utils/use-render-props.ts",
31
- "type": "utils"
32
- }
33
- ]
34
- },
35
- {
36
- "name": "colors",
37
- "title": "Colors",
38
- "description": "Color constants and variant mapping utilities.",
39
- "files": [
16
+ "path": "src/components/spinner.tsx",
17
+ "type": "components"
18
+ },
40
19
  {
41
- "path": "src/utils/colors.ts",
42
- "type": "utils"
43
- }
44
- ]
45
- },
46
- {
47
- "name": "file-input-utils",
48
- "title": "File Input Utils",
49
- "description": "File handling, preview generation, and form submission utilities for file inputs.",
50
- "files": [
20
+ "path": "src/components/helpers/button-context.ts",
21
+ "type": "components/helpers"
22
+ },
51
23
  {
52
- "path": "src/utils/file-input.ts",
53
- "type": "utils"
54
- }
55
- ]
56
- },
57
- {
58
- "name": "use-spin-delay",
59
- "title": "Use Spin Delay",
60
- "description": "Hook that delays showing a spinner to avoid flashes on fast operations.",
61
- "files": [
24
+ "path": "src/components/helpers/get-button-classes.ts",
25
+ "type": "components/helpers"
26
+ },
62
27
  {
63
- "path": "src/utils/use-spin-delay.ts",
28
+ "path": "src/components/helpers/headless-button.tsx",
29
+ "type": "components/helpers"
30
+ },
31
+ {
32
+ "path": "src/utils/compose-refs.ts",
64
33
  "type": "utils"
65
- }
66
- ]
67
- },
68
- {
69
- "name": "use-number-input",
70
- "title": "Use Number Input",
71
- "description": "Hook for parsing and formatting numeric input values.",
72
- "files": [
34
+ },
73
35
  {
74
- "path": "src/utils/use-number-input.ts",
36
+ "path": "src/utils/tw.ts",
75
37
  "type": "utils"
76
- }
77
- ]
78
- },
79
- {
80
- "name": "use-prevent-default",
81
- "title": "Use Prevent Default",
82
- "description": "Hook that prevents the default event behavior via a stable callback.",
83
- "dependencies": [
84
- "use-stable-accessor"
85
- ],
86
- "files": [
38
+ },
87
39
  {
88
40
  "path": "src/utils/use-prevent-default.ts",
89
41
  "type": "utils"
90
- }
91
- ]
92
- },
93
- {
94
- "name": "use-stable-accessor",
95
- "title": "Use Stable Accessor",
96
- "description": "Hook that wraps a value in a stable ref-backed accessor function.",
97
- "files": [
42
+ },
98
43
  {
99
- "path": "src/utils/use-stable-accessor.ts",
44
+ "path": "src/utils/use-render-props.ts",
100
45
  "type": "utils"
101
- }
102
- ]
103
- },
104
- {
105
- "name": "use-tab-indicator",
106
- "title": "Use Tab Indicator",
107
- "description": "Hook that positions an animated indicator under the active tab.",
108
- "files": [
46
+ },
109
47
  {
110
- "path": "src/utils/use-tab-indicator.ts",
48
+ "path": "src/utils/use-spin-delay.ts",
111
49
  "type": "utils"
112
- }
113
- ]
114
- },
115
- {
116
- "name": "form-field",
117
- "title": "Form Field",
118
- "description": "Label, description, and error message wrapper for form inputs.",
119
- "dependencies": [
120
- "tw"
121
- ],
122
- "files": [
123
- {
124
- "path": "src/components/helpers/form-field.tsx",
125
- "type": "components/helpers"
126
- }
127
- ]
128
- },
129
- {
130
- "name": "animated-popover",
131
- "title": "Animated Popover",
132
- "description": "A popover with enter/exit CSS transitions.",
133
- "dependencies": [
134
- "tw"
135
- ],
136
- "files": [
137
- {
138
- "path": "src/components/helpers/animated-popover.tsx",
139
- "type": "components/helpers"
140
- }
141
- ]
142
- },
143
- {
144
- "name": "headless-button",
145
- "title": "Headless Button",
146
- "description": "An unstyled polymorphic button with ref forwarding and render props.",
147
- "dependencies": [
148
- "compose-refs",
149
- "use-render-props"
150
- ],
151
- "files": [
152
- {
153
- "path": "src/components/helpers/headless-button.tsx",
154
- "type": "components/helpers"
155
- }
156
- ]
157
- },
158
- {
159
- "name": "get-button-classes",
160
- "title": "Get Button Classes",
161
- "description": "Returns Tailwind class strings for button variant, color, size, and shape.",
162
- "dependencies": [
163
- "tw"
164
- ],
165
- "files": [
166
- {
167
- "path": "src/components/helpers/get-button-classes.ts",
168
- "type": "components/helpers"
169
- }
170
- ]
171
- },
172
- {
173
- "name": "spinner",
174
- "title": "Spinner",
175
- "description": "An SVG loading spinner with size and color variants.",
176
- "dependencies": [
177
- "tw"
178
- ],
179
- "files": [
180
- {
181
- "path": "src/components/spinner.tsx",
182
- "type": "components"
183
- }
184
- ]
185
- },
186
- {
187
- "name": "button-context",
188
- "title": "Button Context",
189
- "description": "React context for sharing button group variant and size to child buttons.",
190
- "dependencies": [
191
- "get-button-classes"
192
- ],
193
- "files": [
194
- {
195
- "path": "src/components/helpers/button-context.ts",
196
- "type": "components/helpers"
197
- }
198
- ]
199
- },
200
- {
201
- "name": "calendar-month-year-picker",
202
- "title": "Calendar Month Year Picker",
203
- "description": "Month and year navigation controls for date picker calendars.",
204
- "dependencies": [
205
- "tw"
206
- ],
207
- "files": [
208
- {
209
- "path": "src/components/helpers/calendar-month-year-picker.tsx",
210
- "type": "components/helpers"
211
- }
212
- ]
213
- },
214
- {
215
- "name": "pdf-dist",
216
- "title": "PDF Dist",
217
- "description": "Client-side PDF.js worker initialization.",
218
- "files": [
219
- {
220
- "path": "src/components/helpers/pdf-dist.client.ts",
221
- "type": "components/helpers"
222
- }
223
- ]
224
- },
225
- {
226
- "name": "button",
227
- "title": "Button",
228
- "description": "A polymorphic button with variants, colors, sizes, shapes, toggle state, and built-in async click handling with a delayed spinner.",
229
- "dependencies": [
230
- "tw",
231
- "spinner",
232
- "button-context",
233
- "get-button-classes",
234
- "headless-button",
235
- "compose-refs",
236
- "use-prevent-default",
237
- "use-render-props",
238
- "use-spin-delay",
239
- "use-stable-accessor",
240
- "icon"
241
- ],
242
- "files": [
50
+ },
243
51
  {
244
- "path": "src/components/button.tsx",
245
- "type": "components"
52
+ "path": "src/utils/use-stable-accessor.ts",
53
+ "type": "utils"
246
54
  }
247
55
  ]
248
56
  },
@@ -261,13 +69,14 @@
261
69
  "name": "headless-file-input",
262
70
  "title": "Headless File Input",
263
71
  "description": "A headless file input with drag-and-drop, multiple file support, controlled/uncontrolled state, file preview, and form submission for both files and URLs.",
264
- "dependencies": [
265
- "compose-refs"
266
- ],
267
72
  "files": [
268
73
  {
269
74
  "path": "src/components/headless-file-input.tsx",
270
75
  "type": "components"
76
+ },
77
+ {
78
+ "path": "src/utils/compose-refs.ts",
79
+ "type": "utils"
271
80
  }
272
81
  ]
273
82
  },
@@ -275,18 +84,34 @@
275
84
  "name": "button-link",
276
85
  "title": "Button Link",
277
86
  "description": "A React Router Link styled as a button with variants, colors, sizes, shapes, and a loading spinner for pending navigation.",
278
- "dependencies": [
279
- "tw",
280
- "spinner",
281
- "button-context",
282
- "get-button-classes",
283
- "use-spin-delay",
284
- "icon"
285
- ],
286
87
  "files": [
287
88
  {
288
89
  "path": "src/components/button-link.tsx",
289
90
  "type": "components"
91
+ },
92
+ {
93
+ "path": "src/components/icon.tsx",
94
+ "type": "components"
95
+ },
96
+ {
97
+ "path": "src/components/spinner.tsx",
98
+ "type": "components"
99
+ },
100
+ {
101
+ "path": "src/components/helpers/button-context.ts",
102
+ "type": "components/helpers"
103
+ },
104
+ {
105
+ "path": "src/components/helpers/get-button-classes.ts",
106
+ "type": "components/helpers"
107
+ },
108
+ {
109
+ "path": "src/utils/tw.ts",
110
+ "type": "utils"
111
+ },
112
+ {
113
+ "path": "src/utils/use-spin-delay.ts",
114
+ "type": "utils"
290
115
  }
291
116
  ]
292
117
  },
@@ -294,13 +119,14 @@
294
119
  "name": "button-group",
295
120
  "title": "Button Group",
296
121
  "description": "A container for grouping buttons with configurable orientation, alignment, sizing, and full-width support.",
297
- "dependencies": [
298
- "tw"
299
- ],
300
122
  "files": [
301
123
  {
302
124
  "path": "src/components/button-group.tsx",
303
125
  "type": "components"
126
+ },
127
+ {
128
+ "path": "src/utils/tw.ts",
129
+ "type": "utils"
304
130
  }
305
131
  ]
306
132
  },
@@ -308,14 +134,18 @@
308
134
  "name": "toggle-button-group",
309
135
  "title": "Toggle Button Group",
310
136
  "description": "A radio-style group of toggle buttons with horizontal/vertical layout, keyboard navigation, and size variants.",
311
- "dependencies": [
312
- "tw",
313
- "get-button-classes"
314
- ],
315
137
  "files": [
316
138
  {
317
139
  "path": "src/components/toggle-button-group.tsx",
318
140
  "type": "components"
141
+ },
142
+ {
143
+ "path": "src/components/helpers/get-button-classes.ts",
144
+ "type": "components/helpers"
145
+ },
146
+ {
147
+ "path": "src/utils/tw.ts",
148
+ "type": "utils"
319
149
  }
320
150
  ]
321
151
  },
@@ -323,17 +153,30 @@
323
153
  "name": "date-picker",
324
154
  "title": "Date Picker",
325
155
  "description": "An accessible date picker with calendar popup, month/year navigation, form validation integration, and ISO date string handling.",
326
- "dependencies": [
327
- "tw",
328
- "animated-popover",
329
- "calendar-month-year-picker",
330
- "form-field",
331
- "icon"
332
- ],
333
156
  "files": [
334
157
  {
335
158
  "path": "src/components/date-picker.tsx",
336
159
  "type": "components"
160
+ },
161
+ {
162
+ "path": "src/components/icon.tsx",
163
+ "type": "components"
164
+ },
165
+ {
166
+ "path": "src/components/helpers/animated-popover.tsx",
167
+ "type": "components/helpers"
168
+ },
169
+ {
170
+ "path": "src/components/helpers/calendar-month-year-picker.tsx",
171
+ "type": "components/helpers"
172
+ },
173
+ {
174
+ "path": "src/components/helpers/form-field.tsx",
175
+ "type": "components/helpers"
176
+ },
177
+ {
178
+ "path": "src/utils/tw.ts",
179
+ "type": "utils"
337
180
  }
338
181
  ]
339
182
  },
@@ -341,17 +184,30 @@
341
184
  "name": "text-field",
342
185
  "title": "Text Field",
343
186
  "description": "A text input with type variants (email, password, url, etc.), trailing addon support, shape options, form validation integration, and accessible labeling.",
344
- "dependencies": [
345
- "tw",
346
- "form-field",
347
- "headless-button",
348
- "compose-refs",
349
- "use-render-props"
350
- ],
351
187
  "files": [
352
188
  {
353
189
  "path": "src/components/text-field.tsx",
354
190
  "type": "components"
191
+ },
192
+ {
193
+ "path": "src/components/helpers/form-field.tsx",
194
+ "type": "components/helpers"
195
+ },
196
+ {
197
+ "path": "src/components/helpers/headless-button.tsx",
198
+ "type": "components/helpers"
199
+ },
200
+ {
201
+ "path": "src/utils/compose-refs.ts",
202
+ "type": "utils"
203
+ },
204
+ {
205
+ "path": "src/utils/tw.ts",
206
+ "type": "utils"
207
+ },
208
+ {
209
+ "path": "src/utils/use-render-props.ts",
210
+ "type": "utils"
355
211
  }
356
212
  ]
357
213
  },
@@ -359,14 +215,18 @@
359
215
  "name": "text-area",
360
216
  "title": "Text Area",
361
217
  "description": "A multi-line text input with auto-resize, min/max rows, resize control, form validation integration, and accessible labeling.",
362
- "dependencies": [
363
- "tw",
364
- "form-field"
365
- ],
366
218
  "files": [
367
219
  {
368
220
  "path": "src/components/text-area.tsx",
369
221
  "type": "components"
222
+ },
223
+ {
224
+ "path": "src/components/helpers/form-field.tsx",
225
+ "type": "components/helpers"
226
+ },
227
+ {
228
+ "path": "src/utils/tw.ts",
229
+ "type": "utils"
370
230
  }
371
231
  ]
372
232
  },
@@ -374,15 +234,22 @@
374
234
  "name": "number-field",
375
235
  "title": "Number Field",
376
236
  "description": "A numeric input with min/max/step constraints, Intl.NumberFormat formatting, form validation integration, and accessible labeling.",
377
- "dependencies": [
378
- "tw",
379
- "form-field",
380
- "use-number-input"
381
- ],
382
237
  "files": [
383
238
  {
384
239
  "path": "src/components/number-field.tsx",
385
240
  "type": "components"
241
+ },
242
+ {
243
+ "path": "src/components/helpers/form-field.tsx",
244
+ "type": "components/helpers"
245
+ },
246
+ {
247
+ "path": "src/utils/tw.ts",
248
+ "type": "utils"
249
+ },
250
+ {
251
+ "path": "src/utils/use-number-input.ts",
252
+ "type": "utils"
386
253
  }
387
254
  ]
388
255
  },
@@ -390,15 +257,22 @@
390
257
  "name": "currency-field",
391
258
  "title": "Currency Field",
392
259
  "description": "A dollar/cents currency input with Intl.NumberFormat formatting, cents-to-dollars conversion, form validation integration, and accessible labeling.",
393
- "dependencies": [
394
- "tw",
395
- "form-field",
396
- "use-number-input"
397
- ],
398
260
  "files": [
399
261
  {
400
262
  "path": "src/components/currency-field.tsx",
401
263
  "type": "components"
264
+ },
265
+ {
266
+ "path": "src/components/helpers/form-field.tsx",
267
+ "type": "components/helpers"
268
+ },
269
+ {
270
+ "path": "src/utils/tw.ts",
271
+ "type": "utils"
272
+ },
273
+ {
274
+ "path": "src/utils/use-number-input.ts",
275
+ "type": "utils"
402
276
  }
403
277
  ]
404
278
  },
@@ -406,15 +280,22 @@
406
280
  "name": "percentage-field",
407
281
  "title": "Percentage Field",
408
282
  "description": "A percentage input with integer/decimal unit conversion, Intl.NumberFormat percent formatting, form validation integration, and accessible labeling.",
409
- "dependencies": [
410
- "tw",
411
- "form-field",
412
- "use-number-input"
413
- ],
414
283
  "files": [
415
284
  {
416
285
  "path": "src/components/percentage-field.tsx",
417
286
  "type": "components"
287
+ },
288
+ {
289
+ "path": "src/components/helpers/form-field.tsx",
290
+ "type": "components/helpers"
291
+ },
292
+ {
293
+ "path": "src/utils/tw.ts",
294
+ "type": "utils"
295
+ },
296
+ {
297
+ "path": "src/utils/use-number-input.ts",
298
+ "type": "utils"
418
299
  }
419
300
  ]
420
301
  },
@@ -422,14 +303,18 @@
422
303
  "name": "phone-number-field",
423
304
  "title": "Phone Number Field",
424
305
  "description": "A phone number input with auto-formatting for US/CA/international numbers, form validation integration, and accessible labeling.",
425
- "dependencies": [
426
- "tw",
427
- "form-field"
428
- ],
429
306
  "files": [
430
307
  {
431
308
  "path": "src/components/phone-number-field.tsx",
432
309
  "type": "components"
310
+ },
311
+ {
312
+ "path": "src/components/helpers/form-field.tsx",
313
+ "type": "components/helpers"
314
+ },
315
+ {
316
+ "path": "src/utils/tw.ts",
317
+ "type": "utils"
433
318
  }
434
319
  ]
435
320
  },
@@ -437,15 +322,22 @@
437
322
  "name": "tag-field",
438
323
  "title": "Tag Field",
439
324
  "description": "A string tag input with custom separators, duplicate prevention, tag validation/transformation, max tag limits, and form integration.",
440
- "dependencies": [
441
- "tw",
442
- "form-field",
443
- "icon"
444
- ],
445
325
  "files": [
446
326
  {
447
327
  "path": "src/components/tag-field.tsx",
448
328
  "type": "components"
329
+ },
330
+ {
331
+ "path": "src/components/icon.tsx",
332
+ "type": "components"
333
+ },
334
+ {
335
+ "path": "src/components/helpers/form-field.tsx",
336
+ "type": "components/helpers"
337
+ },
338
+ {
339
+ "path": "src/utils/tw.ts",
340
+ "type": "utils"
449
341
  }
450
342
  ]
451
343
  },
@@ -453,15 +345,22 @@
453
345
  "name": "numeric-tag-field",
454
346
  "title": "Numeric Tag Field",
455
347
  "description": "A tag input for numeric values with min/max bounds, duplicate prevention, tag validation/transformation, and form integration.",
456
- "dependencies": [
457
- "tw",
458
- "form-field",
459
- "icon"
460
- ],
461
348
  "files": [
462
349
  {
463
350
  "path": "src/components/numeric-tag-field.tsx",
464
351
  "type": "components"
352
+ },
353
+ {
354
+ "path": "src/components/icon.tsx",
355
+ "type": "components"
356
+ },
357
+ {
358
+ "path": "src/components/helpers/form-field.tsx",
359
+ "type": "components/helpers"
360
+ },
361
+ {
362
+ "path": "src/utils/tw.ts",
363
+ "type": "utils"
465
364
  }
466
365
  ]
467
366
  },
@@ -469,14 +368,18 @@
469
368
  "name": "date-input",
470
369
  "title": "Date Input",
471
370
  "description": "An accessible inline date field (no popup) with min/max constraints, form validation integration, and ISO date string handling.",
472
- "dependencies": [
473
- "tw",
474
- "form-field"
475
- ],
476
371
  "files": [
477
372
  {
478
373
  "path": "src/components/date-input.tsx",
479
374
  "type": "components"
375
+ },
376
+ {
377
+ "path": "src/components/helpers/form-field.tsx",
378
+ "type": "components/helpers"
379
+ },
380
+ {
381
+ "path": "src/utils/tw.ts",
382
+ "type": "utils"
480
383
  }
481
384
  ]
482
385
  },
@@ -484,16 +387,26 @@
484
387
  "name": "date-range-picker",
485
388
  "title": "Date Range Picker",
486
389
  "description": "An accessible date range picker with dual calendar popover, preset ranges, form validation integration, and ISO date string handling.",
487
- "dependencies": [
488
- "tw",
489
- "animated-popover",
490
- "form-field",
491
- "icon"
492
- ],
493
390
  "files": [
494
391
  {
495
392
  "path": "src/components/date-range-picker.tsx",
496
393
  "type": "components"
394
+ },
395
+ {
396
+ "path": "src/components/icon.tsx",
397
+ "type": "components"
398
+ },
399
+ {
400
+ "path": "src/components/helpers/animated-popover.tsx",
401
+ "type": "components/helpers"
402
+ },
403
+ {
404
+ "path": "src/components/helpers/form-field.tsx",
405
+ "type": "components/helpers"
406
+ },
407
+ {
408
+ "path": "src/utils/tw.ts",
409
+ "type": "utils"
497
410
  }
498
411
  ]
499
412
  },
@@ -501,17 +414,30 @@
501
414
  "name": "date-time-picker",
502
415
  "title": "Date Time Picker",
503
416
  "description": "An accessible combined date and time picker with calendar popup, month/year navigation, 12/24-hour format, form validation integration, and ISO datetime string handling.",
504
- "dependencies": [
505
- "tw",
506
- "animated-popover",
507
- "calendar-month-year-picker",
508
- "form-field",
509
- "icon"
510
- ],
511
417
  "files": [
512
418
  {
513
419
  "path": "src/components/date-time-picker.tsx",
514
420
  "type": "components"
421
+ },
422
+ {
423
+ "path": "src/components/icon.tsx",
424
+ "type": "components"
425
+ },
426
+ {
427
+ "path": "src/components/helpers/animated-popover.tsx",
428
+ "type": "components/helpers"
429
+ },
430
+ {
431
+ "path": "src/components/helpers/calendar-month-year-picker.tsx",
432
+ "type": "components/helpers"
433
+ },
434
+ {
435
+ "path": "src/components/helpers/form-field.tsx",
436
+ "type": "components/helpers"
437
+ },
438
+ {
439
+ "path": "src/utils/tw.ts",
440
+ "type": "utils"
515
441
  }
516
442
  ]
517
443
  },
@@ -519,14 +445,18 @@
519
445
  "name": "time-input",
520
446
  "title": "Time Input",
521
447
  "description": "An accessible time picker with 12/24-hour format, min/max constraints, form validation integration, and ISO time string handling.",
522
- "dependencies": [
523
- "tw",
524
- "form-field"
525
- ],
526
448
  "files": [
527
449
  {
528
450
  "path": "src/components/time-input.tsx",
529
451
  "type": "components"
452
+ },
453
+ {
454
+ "path": "src/components/helpers/form-field.tsx",
455
+ "type": "components/helpers"
456
+ },
457
+ {
458
+ "path": "src/utils/tw.ts",
459
+ "type": "utils"
530
460
  }
531
461
  ]
532
462
  },
@@ -534,14 +464,18 @@
534
464
  "name": "month-day-input",
535
465
  "title": "Month Day Input",
536
466
  "description": "An accessible month-day input (--MM-DD format) with year segment hidden, form validation integration, and ISO month-day string handling.",
537
- "dependencies": [
538
- "tw",
539
- "form-field"
540
- ],
541
467
  "files": [
542
468
  {
543
469
  "path": "src/components/month-day-input.tsx",
544
470
  "type": "components"
471
+ },
472
+ {
473
+ "path": "src/components/helpers/form-field.tsx",
474
+ "type": "components/helpers"
475
+ },
476
+ {
477
+ "path": "src/utils/tw.ts",
478
+ "type": "utils"
545
479
  }
546
480
  ]
547
481
  },
@@ -549,14 +483,18 @@
549
483
  "name": "year-month-input",
550
484
  "title": "Year Month Input",
551
485
  "description": "An accessible year-month input (YYYY-MM format) with day segment hidden, form validation integration, and ISO year-month string handling.",
552
- "dependencies": [
553
- "tw",
554
- "form-field"
555
- ],
556
486
  "files": [
557
487
  {
558
488
  "path": "src/components/year-month-input.tsx",
559
489
  "type": "components"
490
+ },
491
+ {
492
+ "path": "src/components/helpers/form-field.tsx",
493
+ "type": "components/helpers"
494
+ },
495
+ {
496
+ "path": "src/utils/tw.ts",
497
+ "type": "utils"
560
498
  }
561
499
  ]
562
500
  },
@@ -564,17 +502,30 @@
564
502
  "name": "select",
565
503
  "title": "Select",
566
504
  "description": "A single-select dropdown with colored options, custom rendering, keyboard navigation, form validation integration, and accessible labeling.",
567
- "dependencies": [
568
- "tw",
569
- "animated-popover",
570
- "form-field",
571
- "colors",
572
- "icon"
573
- ],
574
505
  "files": [
575
506
  {
576
507
  "path": "src/components/select.tsx",
577
508
  "type": "components"
509
+ },
510
+ {
511
+ "path": "src/components/icon.tsx",
512
+ "type": "components"
513
+ },
514
+ {
515
+ "path": "src/components/helpers/animated-popover.tsx",
516
+ "type": "components/helpers"
517
+ },
518
+ {
519
+ "path": "src/components/helpers/form-field.tsx",
520
+ "type": "components/helpers"
521
+ },
522
+ {
523
+ "path": "src/utils/colors.ts",
524
+ "type": "utils"
525
+ },
526
+ {
527
+ "path": "src/utils/tw.ts",
528
+ "type": "utils"
578
529
  }
579
530
  ]
580
531
  },
@@ -582,18 +533,34 @@
582
533
  "name": "boolean-select",
583
534
  "title": "Boolean Select",
584
535
  "description": "A Yes/No dropdown with optional null state, customizable labels, and form validation integration. Built on the Select component.",
585
- "dependencies": [
586
- "tw",
587
- "animated-popover",
588
- "form-field",
589
- "colors",
590
- "icon",
591
- "select"
592
- ],
593
536
  "files": [
594
537
  {
595
538
  "path": "src/components/boolean-select.tsx",
596
539
  "type": "components"
540
+ },
541
+ {
542
+ "path": "src/components/icon.tsx",
543
+ "type": "components"
544
+ },
545
+ {
546
+ "path": "src/components/select.tsx",
547
+ "type": "components"
548
+ },
549
+ {
550
+ "path": "src/components/helpers/animated-popover.tsx",
551
+ "type": "components/helpers"
552
+ },
553
+ {
554
+ "path": "src/components/helpers/form-field.tsx",
555
+ "type": "components/helpers"
556
+ },
557
+ {
558
+ "path": "src/utils/colors.ts",
559
+ "type": "utils"
560
+ },
561
+ {
562
+ "path": "src/utils/tw.ts",
563
+ "type": "utils"
597
564
  }
598
565
  ]
599
566
  },
@@ -601,17 +568,30 @@
601
568
  "name": "autocomplete",
602
569
  "title": "Autocomplete",
603
570
  "description": "A searchable single-select dropdown with matchSorter filtering, colored options, custom rendering, form validation integration, and accessible labeling.",
604
- "dependencies": [
605
- "tw",
606
- "animated-popover",
607
- "form-field",
608
- "colors",
609
- "icon"
610
- ],
611
571
  "files": [
612
572
  {
613
- "path": "src/components/autocomplete.tsx",
614
- "type": "components"
573
+ "path": "src/components/autocomplete.tsx",
574
+ "type": "components"
575
+ },
576
+ {
577
+ "path": "src/components/icon.tsx",
578
+ "type": "components"
579
+ },
580
+ {
581
+ "path": "src/components/helpers/animated-popover.tsx",
582
+ "type": "components/helpers"
583
+ },
584
+ {
585
+ "path": "src/components/helpers/form-field.tsx",
586
+ "type": "components/helpers"
587
+ },
588
+ {
589
+ "path": "src/utils/colors.ts",
590
+ "type": "utils"
591
+ },
592
+ {
593
+ "path": "src/utils/tw.ts",
594
+ "type": "utils"
615
595
  }
616
596
  ]
617
597
  },
@@ -619,16 +599,26 @@
619
599
  "name": "autosuggest",
620
600
  "title": "Autosuggest",
621
601
  "description": "A text input with suggestions that allows custom (non-option) values, matchSorter filtering, form validation integration, and accessible labeling.",
622
- "dependencies": [
623
- "tw",
624
- "animated-popover",
625
- "form-field",
626
- "icon"
627
- ],
628
602
  "files": [
629
603
  {
630
604
  "path": "src/components/autosuggest.tsx",
631
605
  "type": "components"
606
+ },
607
+ {
608
+ "path": "src/components/icon.tsx",
609
+ "type": "components"
610
+ },
611
+ {
612
+ "path": "src/components/helpers/animated-popover.tsx",
613
+ "type": "components/helpers"
614
+ },
615
+ {
616
+ "path": "src/components/helpers/form-field.tsx",
617
+ "type": "components/helpers"
618
+ },
619
+ {
620
+ "path": "src/utils/tw.ts",
621
+ "type": "utils"
632
622
  }
633
623
  ]
634
624
  },
@@ -636,19 +626,35 @@
636
626
  "name": "multiselect",
637
627
  "title": "Multiselect",
638
628
  "description": "A multi-select dropdown with chip display, optional select all, colored options, custom rendering, form validation integration, and accessible labeling.",
639
- "dependencies": [
640
- "tw",
641
- "animated-popover",
642
- "form-field",
643
- "colors",
644
- "compose-refs",
645
- "icon"
646
- ],
647
629
  "files": [
648
630
  {
649
631
  "path": "src/components/multiselect.tsx",
650
632
  "type": "components"
651
633
  },
634
+ {
635
+ "path": "src/components/icon.tsx",
636
+ "type": "components"
637
+ },
638
+ {
639
+ "path": "src/components/helpers/animated-popover.tsx",
640
+ "type": "components/helpers"
641
+ },
642
+ {
643
+ "path": "src/components/helpers/form-field.tsx",
644
+ "type": "components/helpers"
645
+ },
646
+ {
647
+ "path": "src/utils/colors.ts",
648
+ "type": "utils"
649
+ },
650
+ {
651
+ "path": "src/utils/compose-refs.ts",
652
+ "type": "utils"
653
+ },
654
+ {
655
+ "path": "src/utils/tw.ts",
656
+ "type": "utils"
657
+ },
652
658
  {
653
659
  "path": "src/utils/use-element-size.ts",
654
660
  "type": "utils"
@@ -659,17 +665,30 @@
659
665
  "name": "multicomplete",
660
666
  "title": "Multicomplete",
661
667
  "description": "A multi-select with search filtering, colored chips, matchSorter filtering, custom rendering, form validation integration, and accessible labeling.",
662
- "dependencies": [
663
- "tw",
664
- "animated-popover",
665
- "form-field",
666
- "colors",
667
- "icon"
668
- ],
669
668
  "files": [
670
669
  {
671
670
  "path": "src/components/multicomplete.tsx",
672
671
  "type": "components"
672
+ },
673
+ {
674
+ "path": "src/components/icon.tsx",
675
+ "type": "components"
676
+ },
677
+ {
678
+ "path": "src/components/helpers/animated-popover.tsx",
679
+ "type": "components/helpers"
680
+ },
681
+ {
682
+ "path": "src/components/helpers/form-field.tsx",
683
+ "type": "components/helpers"
684
+ },
685
+ {
686
+ "path": "src/utils/colors.ts",
687
+ "type": "utils"
688
+ },
689
+ {
690
+ "path": "src/utils/tw.ts",
691
+ "type": "utils"
673
692
  }
674
693
  ]
675
694
  },
@@ -677,16 +696,26 @@
677
696
  "name": "multisuggest",
678
697
  "title": "Multisuggest",
679
698
  "description": "A multi-select autocomplete with suggestions that allows adding custom values not in the options list, chip display, matchSorter filtering, form validation integration, and accessible labeling.",
680
- "dependencies": [
681
- "tw",
682
- "animated-popover",
683
- "form-field",
684
- "icon"
685
- ],
686
699
  "files": [
687
700
  {
688
701
  "path": "src/components/multisuggest.tsx",
689
702
  "type": "components"
703
+ },
704
+ {
705
+ "path": "src/components/icon.tsx",
706
+ "type": "components"
707
+ },
708
+ {
709
+ "path": "src/components/helpers/animated-popover.tsx",
710
+ "type": "components/helpers"
711
+ },
712
+ {
713
+ "path": "src/components/helpers/form-field.tsx",
714
+ "type": "components/helpers"
715
+ },
716
+ {
717
+ "path": "src/utils/tw.ts",
718
+ "type": "utils"
690
719
  }
691
720
  ]
692
721
  },
@@ -694,15 +723,22 @@
694
723
  "name": "checkbox",
695
724
  "title": "Checkbox",
696
725
  "description": "A single checkbox with plain and labeled variants, indeterminate state support, form validation integration, and accessible keyboard navigation.",
697
- "dependencies": [
698
- "tw",
699
- "form-field",
700
- "icon"
701
- ],
702
726
  "files": [
703
727
  {
704
728
  "path": "src/components/checkbox.tsx",
705
729
  "type": "components"
730
+ },
731
+ {
732
+ "path": "src/components/icon.tsx",
733
+ "type": "components"
734
+ },
735
+ {
736
+ "path": "src/components/helpers/form-field.tsx",
737
+ "type": "components/helpers"
738
+ },
739
+ {
740
+ "path": "src/utils/tw.ts",
741
+ "type": "utils"
706
742
  }
707
743
  ]
708
744
  },
@@ -710,16 +746,26 @@
710
746
  "name": "checkbox-group",
711
747
  "title": "Checkbox Group",
712
748
  "description": "A group of checkboxes with select all, min/max selection constraints, horizontal/vertical orientation, form validation integration, and accessible labeling.",
713
- "dependencies": [
714
- "tw",
715
- "form-field",
716
- "icon",
717
- "checkbox"
718
- ],
719
749
  "files": [
720
750
  {
721
751
  "path": "src/components/checkbox-group.tsx",
722
752
  "type": "components"
753
+ },
754
+ {
755
+ "path": "src/components/checkbox.tsx",
756
+ "type": "components"
757
+ },
758
+ {
759
+ "path": "src/components/icon.tsx",
760
+ "type": "components"
761
+ },
762
+ {
763
+ "path": "src/components/helpers/form-field.tsx",
764
+ "type": "components/helpers"
765
+ },
766
+ {
767
+ "path": "src/utils/tw.ts",
768
+ "type": "utils"
723
769
  }
724
770
  ]
725
771
  },
@@ -727,13 +773,14 @@
727
773
  "name": "radio",
728
774
  "title": "Radio",
729
775
  "description": "A single radio option with plain and labeled variants, optional description text, and accessible keyboard navigation.",
730
- "dependencies": [
731
- "tw"
732
- ],
733
776
  "files": [
734
777
  {
735
778
  "path": "src/components/radio.tsx",
736
779
  "type": "components"
780
+ },
781
+ {
782
+ "path": "src/utils/tw.ts",
783
+ "type": "utils"
737
784
  }
738
785
  ]
739
786
  },
@@ -741,14 +788,18 @@
741
788
  "name": "radio-group",
742
789
  "title": "Radio Group",
743
790
  "description": "A mutually exclusive radio group with horizontal/vertical/grid orientation, form validation integration, and accessible labeling.",
744
- "dependencies": [
745
- "tw",
746
- "form-field"
747
- ],
748
791
  "files": [
749
792
  {
750
793
  "path": "src/components/radio-group.tsx",
751
794
  "type": "components"
795
+ },
796
+ {
797
+ "path": "src/components/helpers/form-field.tsx",
798
+ "type": "components/helpers"
799
+ },
800
+ {
801
+ "path": "src/utils/tw.ts",
802
+ "type": "utils"
752
803
  }
753
804
  ]
754
805
  },
@@ -756,14 +807,18 @@
756
807
  "name": "switch",
757
808
  "title": "Switch",
758
809
  "description": "A boolean toggle switch with plain and labeled variants, description text, label positioning, form validation integration, and accessible keyboard navigation.",
759
- "dependencies": [
760
- "tw",
761
- "form-field"
762
- ],
763
810
  "files": [
764
811
  {
765
812
  "path": "src/components/switch.tsx",
766
813
  "type": "components"
814
+ },
815
+ {
816
+ "path": "src/components/helpers/form-field.tsx",
817
+ "type": "components/helpers"
818
+ },
819
+ {
820
+ "path": "src/utils/tw.ts",
821
+ "type": "utils"
767
822
  }
768
823
  ]
769
824
  },
@@ -771,18 +826,34 @@
771
826
  "name": "file-input",
772
827
  "title": "File Input",
773
828
  "description": "A single file upload with drag-and-drop zone, file type and size validation, custom preview rendering, form validation integration, and accessible labeling.",
774
- "dependencies": [
775
- "tw",
776
- "form-field",
777
- "compose-refs",
778
- "file-input-utils",
779
- "icon",
780
- "headless-file-input"
781
- ],
782
829
  "files": [
783
830
  {
784
831
  "path": "src/components/file-input.tsx",
785
832
  "type": "components"
833
+ },
834
+ {
835
+ "path": "src/components/headless-file-input.tsx",
836
+ "type": "components"
837
+ },
838
+ {
839
+ "path": "src/components/icon.tsx",
840
+ "type": "components"
841
+ },
842
+ {
843
+ "path": "src/components/helpers/form-field.tsx",
844
+ "type": "components/helpers"
845
+ },
846
+ {
847
+ "path": "src/utils/compose-refs.ts",
848
+ "type": "utils"
849
+ },
850
+ {
851
+ "path": "src/utils/file-input.ts",
852
+ "type": "utils"
853
+ },
854
+ {
855
+ "path": "src/utils/tw.ts",
856
+ "type": "utils"
786
857
  }
787
858
  ]
788
859
  },
@@ -790,18 +861,34 @@
790
861
  "name": "multi-file-input",
791
862
  "title": "Multi File Input",
792
863
  "description": "A multi-file upload with drag-and-drop zone, file list display, per-file type and size validation, max file count, form validation integration, and accessible labeling.",
793
- "dependencies": [
794
- "tw",
795
- "form-field",
796
- "compose-refs",
797
- "file-input-utils",
798
- "icon",
799
- "headless-file-input"
800
- ],
801
864
  "files": [
802
865
  {
803
866
  "path": "src/components/multi-file-input.tsx",
804
867
  "type": "components"
868
+ },
869
+ {
870
+ "path": "src/components/headless-file-input.tsx",
871
+ "type": "components"
872
+ },
873
+ {
874
+ "path": "src/components/icon.tsx",
875
+ "type": "components"
876
+ },
877
+ {
878
+ "path": "src/components/helpers/form-field.tsx",
879
+ "type": "components/helpers"
880
+ },
881
+ {
882
+ "path": "src/utils/compose-refs.ts",
883
+ "type": "utils"
884
+ },
885
+ {
886
+ "path": "src/utils/file-input.ts",
887
+ "type": "utils"
888
+ },
889
+ {
890
+ "path": "src/utils/tw.ts",
891
+ "type": "utils"
805
892
  }
806
893
  ]
807
894
  },
@@ -809,18 +896,34 @@
809
896
  "name": "image-input",
810
897
  "title": "Image Input",
811
898
  "description": "A single image upload with drag-and-drop zone, image preview with gradient overlay, file type and size validation, custom preview rendering, form validation integration, and accessible labeling.",
812
- "dependencies": [
813
- "tw",
814
- "form-field",
815
- "compose-refs",
816
- "file-input-utils",
817
- "icon",
818
- "headless-file-input"
819
- ],
820
899
  "files": [
821
900
  {
822
901
  "path": "src/components/image-input.tsx",
823
902
  "type": "components"
903
+ },
904
+ {
905
+ "path": "src/components/headless-file-input.tsx",
906
+ "type": "components"
907
+ },
908
+ {
909
+ "path": "src/components/icon.tsx",
910
+ "type": "components"
911
+ },
912
+ {
913
+ "path": "src/components/helpers/form-field.tsx",
914
+ "type": "components/helpers"
915
+ },
916
+ {
917
+ "path": "src/utils/compose-refs.ts",
918
+ "type": "utils"
919
+ },
920
+ {
921
+ "path": "src/utils/file-input.ts",
922
+ "type": "utils"
923
+ },
924
+ {
925
+ "path": "src/utils/tw.ts",
926
+ "type": "utils"
824
927
  }
825
928
  ]
826
929
  },
@@ -828,18 +931,34 @@
828
931
  "name": "multi-image-input",
829
932
  "title": "Multi Image Input",
830
933
  "description": "A multi-image upload with grid display, drag-and-drop, optional reordering, per-image type and size validation, max image count, custom preview rendering, form validation integration, and accessible labeling.",
831
- "dependencies": [
832
- "tw",
833
- "form-field",
834
- "compose-refs",
835
- "file-input-utils",
836
- "icon",
837
- "headless-file-input"
838
- ],
839
934
  "files": [
840
935
  {
841
936
  "path": "src/components/multi-image-input.tsx",
842
937
  "type": "components"
938
+ },
939
+ {
940
+ "path": "src/components/headless-file-input.tsx",
941
+ "type": "components"
942
+ },
943
+ {
944
+ "path": "src/components/icon.tsx",
945
+ "type": "components"
946
+ },
947
+ {
948
+ "path": "src/components/helpers/form-field.tsx",
949
+ "type": "components/helpers"
950
+ },
951
+ {
952
+ "path": "src/utils/compose-refs.ts",
953
+ "type": "utils"
954
+ },
955
+ {
956
+ "path": "src/utils/file-input.ts",
957
+ "type": "utils"
958
+ },
959
+ {
960
+ "path": "src/utils/tw.ts",
961
+ "type": "utils"
843
962
  }
844
963
  ]
845
964
  },
@@ -847,21 +966,46 @@
847
966
  "name": "pdf-input",
848
967
  "title": "PDF Input",
849
968
  "description": "A single PDF upload with drag-and-drop zone, PDF preview using the Pdf component, file size validation, custom preview rendering, form validation integration, and accessible labeling.",
850
- "dependencies": [
851
- "tw",
852
- "form-field",
853
- "compose-refs",
854
- "file-input-utils",
855
- "pdf-dist",
856
- "icon",
857
- "headless-file-input",
858
- "pdf",
859
- "use-pagination"
860
- ],
861
969
  "files": [
862
970
  {
863
- "path": "src/components/pdf-input.tsx",
864
- "type": "components"
971
+ "path": "src/components/pdf-input.tsx",
972
+ "type": "components"
973
+ },
974
+ {
975
+ "path": "src/components/headless-file-input.tsx",
976
+ "type": "components"
977
+ },
978
+ {
979
+ "path": "src/components/icon.tsx",
980
+ "type": "components"
981
+ },
982
+ {
983
+ "path": "src/components/pdf.tsx",
984
+ "type": "components"
985
+ },
986
+ {
987
+ "path": "src/components/helpers/form-field.tsx",
988
+ "type": "components/helpers"
989
+ },
990
+ {
991
+ "path": "src/utils/compose-refs.ts",
992
+ "type": "utils"
993
+ },
994
+ {
995
+ "path": "src/utils/file-input.ts",
996
+ "type": "utils"
997
+ },
998
+ {
999
+ "path": "src/utils/tw.ts",
1000
+ "type": "utils"
1001
+ },
1002
+ {
1003
+ "path": "src/utils/use-pagination.ts",
1004
+ "type": "utils"
1005
+ },
1006
+ {
1007
+ "path": "src/components/helpers/pdf-dist.client.ts",
1008
+ "type": "components/helpers"
865
1009
  }
866
1010
  ]
867
1011
  },
@@ -869,17 +1013,30 @@
869
1013
  "name": "dialog",
870
1014
  "title": "Dialog",
871
1015
  "description": "A centered modal dialog with size variants, animated entry/exit, close button, and accessible keyboard navigation.",
872
- "dependencies": [
873
- "tw",
874
- "headless-button",
875
- "compose-refs",
876
- "use-render-props",
877
- "icon"
878
- ],
879
1016
  "files": [
880
1017
  {
881
1018
  "path": "src/components/dialog.tsx",
882
1019
  "type": "components"
1020
+ },
1021
+ {
1022
+ "path": "src/components/icon.tsx",
1023
+ "type": "components"
1024
+ },
1025
+ {
1026
+ "path": "src/components/helpers/headless-button.tsx",
1027
+ "type": "components/helpers"
1028
+ },
1029
+ {
1030
+ "path": "src/utils/compose-refs.ts",
1031
+ "type": "utils"
1032
+ },
1033
+ {
1034
+ "path": "src/utils/tw.ts",
1035
+ "type": "utils"
1036
+ },
1037
+ {
1038
+ "path": "src/utils/use-render-props.ts",
1039
+ "type": "utils"
883
1040
  }
884
1041
  ]
885
1042
  },
@@ -887,17 +1044,30 @@
887
1044
  "name": "drawer",
888
1045
  "title": "Drawer",
889
1046
  "description": "A slide-out drawer built on vaul with left/right/top/bottom positioning, drag-to-dismiss, size variants, actions slot, and close button.",
890
- "dependencies": [
891
- "tw",
892
- "headless-button",
893
- "compose-refs",
894
- "use-render-props",
895
- "icon"
896
- ],
897
1047
  "files": [
898
1048
  {
899
1049
  "path": "src/components/drawer.tsx",
900
1050
  "type": "components"
1051
+ },
1052
+ {
1053
+ "path": "src/components/icon.tsx",
1054
+ "type": "components"
1055
+ },
1056
+ {
1057
+ "path": "src/components/helpers/headless-button.tsx",
1058
+ "type": "components/helpers"
1059
+ },
1060
+ {
1061
+ "path": "src/utils/compose-refs.ts",
1062
+ "type": "utils"
1063
+ },
1064
+ {
1065
+ "path": "src/utils/tw.ts",
1066
+ "type": "utils"
1067
+ },
1068
+ {
1069
+ "path": "src/utils/use-render-props.ts",
1070
+ "type": "utils"
901
1071
  }
902
1072
  ]
903
1073
  },
@@ -905,25 +1075,62 @@
905
1075
  "name": "alert-dialog",
906
1076
  "title": "Alert Dialog",
907
1077
  "description": "An alert modal with 5 variants (info/positive/warning/negative/notice), icon display, animated entry/exit, cancel button, and accessible keyboard navigation.",
908
- "dependencies": [
909
- "tw",
910
- "spinner",
911
- "button-context",
912
- "get-button-classes",
913
- "headless-button",
914
- "compose-refs",
915
- "use-prevent-default",
916
- "use-render-props",
917
- "use-spin-delay",
918
- "use-stable-accessor",
919
- "icon",
920
- "button-group",
921
- "button"
922
- ],
923
1078
  "files": [
924
1079
  {
925
1080
  "path": "src/components/alert-dialog.tsx",
926
1081
  "type": "components"
1082
+ },
1083
+ {
1084
+ "path": "src/components/button-group.tsx",
1085
+ "type": "components"
1086
+ },
1087
+ {
1088
+ "path": "src/components/button.tsx",
1089
+ "type": "components"
1090
+ },
1091
+ {
1092
+ "path": "src/components/icon.tsx",
1093
+ "type": "components"
1094
+ },
1095
+ {
1096
+ "path": "src/components/spinner.tsx",
1097
+ "type": "components"
1098
+ },
1099
+ {
1100
+ "path": "src/components/helpers/button-context.ts",
1101
+ "type": "components/helpers"
1102
+ },
1103
+ {
1104
+ "path": "src/components/helpers/get-button-classes.ts",
1105
+ "type": "components/helpers"
1106
+ },
1107
+ {
1108
+ "path": "src/components/helpers/headless-button.tsx",
1109
+ "type": "components/helpers"
1110
+ },
1111
+ {
1112
+ "path": "src/utils/compose-refs.ts",
1113
+ "type": "utils"
1114
+ },
1115
+ {
1116
+ "path": "src/utils/tw.ts",
1117
+ "type": "utils"
1118
+ },
1119
+ {
1120
+ "path": "src/utils/use-prevent-default.ts",
1121
+ "type": "utils"
1122
+ },
1123
+ {
1124
+ "path": "src/utils/use-render-props.ts",
1125
+ "type": "utils"
1126
+ },
1127
+ {
1128
+ "path": "src/utils/use-spin-delay.ts",
1129
+ "type": "utils"
1130
+ },
1131
+ {
1132
+ "path": "src/utils/use-stable-accessor.ts",
1133
+ "type": "utils"
927
1134
  }
928
1135
  ]
929
1136
  },
@@ -931,14 +1138,18 @@
931
1138
  "name": "menu",
932
1139
  "title": "Menu",
933
1140
  "description": "A dropdown menu with keyboard navigation, groups, link items, separator support, and accessible ARIA attributes.",
934
- "dependencies": [
935
- "tw",
936
- "animated-popover"
937
- ],
938
1141
  "files": [
939
1142
  {
940
1143
  "path": "src/components/menu.tsx",
941
1144
  "type": "components"
1145
+ },
1146
+ {
1147
+ "path": "src/components/helpers/animated-popover.tsx",
1148
+ "type": "components/helpers"
1149
+ },
1150
+ {
1151
+ "path": "src/utils/tw.ts",
1152
+ "type": "utils"
942
1153
  }
943
1154
  ]
944
1155
  },
@@ -946,14 +1157,18 @@
946
1157
  "name": "tabs",
947
1158
  "title": "Tabs",
948
1159
  "description": "A tab group with animated underline indicator, color variants (blue/forest/sand/dune), keyboard navigation, and accessible ARIA attributes.",
949
- "dependencies": [
950
- "tw",
951
- "use-tab-indicator"
952
- ],
953
1160
  "files": [
954
1161
  {
955
1162
  "path": "src/components/tabs.tsx",
956
1163
  "type": "components"
1164
+ },
1165
+ {
1166
+ "path": "src/utils/tw.ts",
1167
+ "type": "utils"
1168
+ },
1169
+ {
1170
+ "path": "src/utils/use-tab-indicator.ts",
1171
+ "type": "utils"
957
1172
  }
958
1173
  ]
959
1174
  },
@@ -961,14 +1176,18 @@
961
1176
  "name": "link-tabs",
962
1177
  "title": "Link Tabs",
963
1178
  "description": "Router-based tab navigation with animated underline indicator, color variants (blue/forest/sand/dune), and accessible ARIA attributes.",
964
- "dependencies": [
965
- "tw",
966
- "use-tab-indicator"
967
- ],
968
1179
  "files": [
969
1180
  {
970
1181
  "path": "src/components/link-tabs.tsx",
971
1182
  "type": "components"
1183
+ },
1184
+ {
1185
+ "path": "src/utils/tw.ts",
1186
+ "type": "utils"
1187
+ },
1188
+ {
1189
+ "path": "src/utils/use-tab-indicator.ts",
1190
+ "type": "utils"
972
1191
  }
973
1192
  ]
974
1193
  },
@@ -976,14 +1195,18 @@
976
1195
  "name": "stepper",
977
1196
  "title": "Stepper",
978
1197
  "description": "A step indicator with horizontal/vertical orientation, error/completed states, connecting lines, and accessible progress semantics.",
979
- "dependencies": [
980
- "tw",
981
- "icon"
982
- ],
983
1198
  "files": [
984
1199
  {
985
1200
  "path": "src/components/stepper.tsx",
986
1201
  "type": "components"
1202
+ },
1203
+ {
1204
+ "path": "src/components/icon.tsx",
1205
+ "type": "components"
1206
+ },
1207
+ {
1208
+ "path": "src/utils/tw.ts",
1209
+ "type": "utils"
987
1210
  }
988
1211
  ]
989
1212
  },
@@ -991,13 +1214,14 @@
991
1214
  "name": "avatar",
992
1215
  "title": "Avatar",
993
1216
  "description": "A user profile image with initials fallback, shape variants (circle/rounded/square), and error handling for broken image sources.",
994
- "dependencies": [
995
- "tw"
996
- ],
997
1217
  "files": [
998
1218
  {
999
1219
  "path": "src/components/avatar.tsx",
1000
1220
  "type": "components"
1221
+ },
1222
+ {
1223
+ "path": "src/utils/tw.ts",
1224
+ "type": "utils"
1001
1225
  }
1002
1226
  ]
1003
1227
  },
@@ -1005,14 +1229,18 @@
1005
1229
  "name": "chip",
1006
1230
  "title": "Chip",
1007
1231
  "description": "An inline badge with optional remove button, color variants, size options, light/dark color modes, and a clickable ChipButton variant.",
1008
- "dependencies": [
1009
- "tw",
1010
- "icon"
1011
- ],
1012
1232
  "files": [
1013
1233
  {
1014
1234
  "path": "src/components/chip.tsx",
1015
1235
  "type": "components"
1236
+ },
1237
+ {
1238
+ "path": "src/components/icon.tsx",
1239
+ "type": "components"
1240
+ },
1241
+ {
1242
+ "path": "src/utils/tw.ts",
1243
+ "type": "utils"
1016
1244
  }
1017
1245
  ]
1018
1246
  },
@@ -1020,20 +1248,30 @@
1020
1248
  "name": "enum-chip",
1021
1249
  "title": "Enum Chip",
1022
1250
  "description": "A colored chip for enum values with automatic color assignment based on option index or string hash.",
1023
- "dependencies": [
1024
- "tw",
1025
- "colors",
1026
- "icon",
1027
- "chip"
1028
- ],
1029
1251
  "files": [
1030
1252
  {
1031
1253
  "path": "src/components/enum-chip.tsx",
1032
1254
  "type": "components"
1033
1255
  },
1256
+ {
1257
+ "path": "src/components/chip.tsx",
1258
+ "type": "components"
1259
+ },
1260
+ {
1261
+ "path": "src/components/icon.tsx",
1262
+ "type": "components"
1263
+ },
1264
+ {
1265
+ "path": "src/utils/colors.ts",
1266
+ "type": "utils"
1267
+ },
1034
1268
  {
1035
1269
  "path": "src/utils/enum-colors.ts",
1036
1270
  "type": "utils"
1271
+ },
1272
+ {
1273
+ "path": "src/utils/tw.ts",
1274
+ "type": "utils"
1037
1275
  }
1038
1276
  ]
1039
1277
  },
@@ -1041,13 +1279,14 @@
1041
1279
  "name": "img",
1042
1280
  "title": "Img",
1043
1281
  "description": "An image element with object-fit variants (cover, contain, fill, none, scale-down) and shape variants (rounded, rectangle, circle).",
1044
- "dependencies": [
1045
- "tw"
1046
- ],
1047
1282
  "files": [
1048
1283
  {
1049
1284
  "path": "src/components/img.tsx",
1050
1285
  "type": "components"
1286
+ },
1287
+ {
1288
+ "path": "src/utils/tw.ts",
1289
+ "type": "utils"
1051
1290
  }
1052
1291
  ]
1053
1292
  },
@@ -1055,13 +1294,14 @@
1055
1294
  "name": "labeled-value",
1056
1295
  "title": "Labeled Value",
1057
1296
  "description": "A read-only display component with smart type detection for strings, numbers, booleans, dates, times, durations, and ranges, with configurable label orientation and alignment.",
1058
- "dependencies": [
1059
- "tw"
1060
- ],
1061
1297
  "files": [
1062
1298
  {
1063
1299
  "path": "src/components/labeled-value.tsx",
1064
1300
  "type": "components"
1301
+ },
1302
+ {
1303
+ "path": "src/utils/tw.ts",
1304
+ "type": "utils"
1065
1305
  }
1066
1306
  ]
1067
1307
  },
@@ -1069,14 +1309,18 @@
1069
1309
  "name": "inline-alert",
1070
1310
  "title": "Inline Alert",
1071
1311
  "description": "An inline notification with 5 variants (info/positive/warning/negative/notice), default icons per variant, optional title, description, and actions slot.",
1072
- "dependencies": [
1073
- "tw",
1074
- "icon"
1075
- ],
1076
1312
  "files": [
1077
1313
  {
1078
1314
  "path": "src/components/inline-alert.tsx",
1079
1315
  "type": "components"
1316
+ },
1317
+ {
1318
+ "path": "src/components/icon.tsx",
1319
+ "type": "components"
1320
+ },
1321
+ {
1322
+ "path": "src/utils/tw.ts",
1323
+ "type": "utils"
1080
1324
  }
1081
1325
  ]
1082
1326
  },
@@ -1084,16 +1328,26 @@
1084
1328
  "name": "pdf",
1085
1329
  "title": "Pdf",
1086
1330
  "description": "A PDF viewer with canvas-based rendering via pdfjs-dist, pagination controls with page navigation, and responsive width handling.",
1087
- "dependencies": [
1088
- "tw",
1089
- "pdf-dist",
1090
- "icon",
1091
- "use-pagination"
1092
- ],
1093
1331
  "files": [
1094
1332
  {
1095
1333
  "path": "src/components/pdf.tsx",
1096
1334
  "type": "components"
1335
+ },
1336
+ {
1337
+ "path": "src/components/icon.tsx",
1338
+ "type": "components"
1339
+ },
1340
+ {
1341
+ "path": "src/utils/tw.ts",
1342
+ "type": "utils"
1343
+ },
1344
+ {
1345
+ "path": "src/utils/use-pagination.ts",
1346
+ "type": "utils"
1347
+ },
1348
+ {
1349
+ "path": "src/components/helpers/pdf-dist.client.ts",
1350
+ "type": "components/helpers"
1097
1351
  }
1098
1352
  ]
1099
1353
  },
@@ -1101,13 +1355,14 @@
1101
1355
  "name": "container",
1102
1356
  "title": "Container",
1103
1357
  "description": "A layout wrapper with padding, border, and elevation variants. Includes ContainerSection with label/actions header, and a plain Section component.",
1104
- "dependencies": [
1105
- "tw"
1106
- ],
1107
1358
  "files": [
1108
1359
  {
1109
1360
  "path": "src/components/container.tsx",
1110
1361
  "type": "components"
1362
+ },
1363
+ {
1364
+ "path": "src/utils/tw.ts",
1365
+ "type": "utils"
1111
1366
  }
1112
1367
  ]
1113
1368
  },
@@ -1115,15 +1370,22 @@
1115
1370
  "name": "disclosure",
1116
1371
  "title": "Disclosure",
1117
1372
  "description": "A collapsible section with size variants, animated expand/collapse, chevron indicator, and accordion group support via React Aria.",
1118
- "dependencies": [
1119
- "tw",
1120
- "icon",
1121
- "container"
1122
- ],
1123
1373
  "files": [
1124
1374
  {
1125
1375
  "path": "src/components/disclosure.tsx",
1126
1376
  "type": "components"
1377
+ },
1378
+ {
1379
+ "path": "src/components/container.tsx",
1380
+ "type": "components"
1381
+ },
1382
+ {
1383
+ "path": "src/components/icon.tsx",
1384
+ "type": "components"
1385
+ },
1386
+ {
1387
+ "path": "src/utils/tw.ts",
1388
+ "type": "utils"
1127
1389
  }
1128
1390
  ]
1129
1391
  },
@@ -1153,99 +1415,29 @@
1153
1415
  "name": "toast",
1154
1416
  "title": "Toast",
1155
1417
  "description": "A toast notification system with 5 variants (info/positive/warning/negative/notice), auto-dismiss timeout, close button, and slide-in animation. Includes ToastRegion (render once at app root) and showToast function.",
1156
- "dependencies": [
1157
- "tw",
1158
- "headless-button",
1159
- "compose-refs",
1160
- "use-render-props",
1161
- "icon"
1162
- ],
1163
1418
  "files": [
1164
1419
  {
1165
1420
  "path": "src/components/toast.tsx",
1166
1421
  "type": "components"
1167
- }
1168
- ]
1169
- },
1170
- {
1171
- "name": "table",
1172
- "title": "Table",
1173
- "description": "Composable data table with client-side and server-side modes, search, filtering, sorting, pagination, and row selection.",
1174
- "files": [
1175
- {
1176
- "path": "src/components/table/index.tsx",
1177
- "type": "components/table"
1178
- },
1179
- {
1180
- "path": "src/components/table/table-types.ts",
1181
- "type": "components/table"
1182
- },
1183
- {
1184
- "path": "src/components/table/table-primitives.tsx",
1185
- "type": "components/table"
1186
- },
1187
- {
1188
- "path": "src/components/table/table-actions.tsx",
1189
- "type": "components/table"
1190
- },
1191
- {
1192
- "path": "src/components/table/table-container.tsx",
1193
- "type": "components/table"
1194
- },
1195
- {
1196
- "path": "src/components/table/table-toolbar.tsx",
1197
- "type": "components/table"
1198
- },
1199
- {
1200
- "path": "src/components/table/headless-templated-row-table.ts",
1201
- "type": "components/table"
1202
- },
1203
- {
1204
- "path": "src/components/table/use-client-table.ts",
1205
- "type": "components/table"
1206
- },
1207
- {
1208
- "path": "src/components/table/use-server-table.ts",
1209
- "type": "components/table"
1210
- },
1211
- {
1212
- "path": "src/components/table/server-table.ts",
1213
- "type": "components/table"
1214
- },
1215
- {
1216
- "path": "src/components/table/table-container.type-test.ts",
1217
- "type": "components/table"
1218
- },
1219
- {
1220
- "path": "src/components/table/use-client-table.type-test.ts",
1221
- "type": "components/table"
1222
- },
1223
- {
1224
- "path": "src/components/table/use-server-table.type-test.ts",
1225
- "type": "components/table"
1226
- },
1227
- {
1228
- "path": "src/components/table/table-filters/select-filter.tsx",
1229
- "type": "components/table/table-filters"
1230
1422
  },
1231
1423
  {
1232
- "path": "src/components/table/table-filters/sort.tsx",
1233
- "type": "components/table/table-filters"
1424
+ "path": "src/components/icon.tsx",
1425
+ "type": "components"
1234
1426
  },
1235
1427
  {
1236
- "path": "src/components/table/table-filters/date-range-filter.tsx",
1237
- "type": "components/table/table-filters"
1428
+ "path": "src/components/helpers/headless-button.tsx",
1429
+ "type": "components/helpers"
1238
1430
  },
1239
1431
  {
1240
- "path": "src/components/optional-link.tsx",
1241
- "type": "components"
1432
+ "path": "src/utils/compose-refs.ts",
1433
+ "type": "utils"
1242
1434
  },
1243
1435
  {
1244
- "path": "src/components/date-range.tsx",
1245
- "type": "components"
1436
+ "path": "src/utils/tw.ts",
1437
+ "type": "utils"
1246
1438
  },
1247
1439
  {
1248
- "path": "src/utils/use-query-state.ts",
1440
+ "path": "src/utils/use-render-props.ts",
1249
1441
  "type": "utils"
1250
1442
  }
1251
1443
  ]