banhaten 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/CONTRIBUTING.md +44 -0
  3. package/README.md +65 -13
  4. package/SECURITY.md +15 -0
  5. package/banhaten.config.example.json +0 -2
  6. package/docs/design-system/README.md +9 -0
  7. package/docs/design-system/adoption-quality-remediation.md +87 -0
  8. package/docs/design-system/agent-usage.md +13 -0
  9. package/docs/design-system/appearance-presets.md +6 -1
  10. package/docs/design-system/component-docs-pattern.md +81 -0
  11. package/docs/design-system/component-token-consistency-audit.md +13 -3
  12. package/docs/design-system/components/README.md +3 -2
  13. package/docs/design-system/components/accordion.md +16 -0
  14. package/docs/design-system/components/activity-feed.md +15 -1
  15. package/docs/design-system/components/alert-dialog.md +17 -0
  16. package/docs/design-system/components/alert.md +46 -14
  17. package/docs/design-system/components/aspect-ratio.md +15 -0
  18. package/docs/design-system/components/attribute.md +16 -0
  19. package/docs/design-system/components/autocomplete.md +19 -0
  20. package/docs/design-system/components/avatar.md +18 -0
  21. package/docs/design-system/components/badge.md +19 -0
  22. package/docs/design-system/components/banner.md +15 -1
  23. package/docs/design-system/components/breadcrumbs.md +14 -0
  24. package/docs/design-system/components/button-group.md +34 -0
  25. package/docs/design-system/components/button.md +18 -0
  26. package/docs/design-system/components/card.md +18 -1
  27. package/docs/design-system/components/carousel.md +20 -3
  28. package/docs/design-system/components/catalog-components.md +15 -1
  29. package/docs/design-system/components/chart.md +15 -0
  30. package/docs/design-system/components/checkbox.md +16 -0
  31. package/docs/design-system/components/collapsible.md +15 -0
  32. package/docs/design-system/components/command.md +15 -0
  33. package/docs/design-system/components/context-menu.md +15 -0
  34. package/docs/design-system/components/date-picker.md +21 -1
  35. package/docs/design-system/components/divider.md +16 -0
  36. package/docs/design-system/components/empty-state.md +17 -0
  37. package/docs/design-system/components/field.md +17 -0
  38. package/docs/design-system/components/file-upload.md +14 -0
  39. package/docs/design-system/components/hover-card.md +15 -0
  40. package/docs/design-system/components/input-group.md +17 -0
  41. package/docs/design-system/components/input-otp.md +18 -0
  42. package/docs/design-system/components/input.md +43 -7
  43. package/docs/design-system/components/item.md +72 -0
  44. package/docs/design-system/components/kbd.md +18 -0
  45. package/docs/design-system/components/label.md +16 -0
  46. package/docs/design-system/components/menu.md +17 -0
  47. package/docs/design-system/components/menubar.md +15 -0
  48. package/docs/design-system/components/modal.md +25 -4
  49. package/docs/design-system/components/native-select.md +18 -0
  50. package/docs/design-system/components/navigation-menu.md +15 -0
  51. package/docs/design-system/components/onboarding-step-list-item.md +15 -1
  52. package/docs/design-system/components/page-header.md +15 -1
  53. package/docs/design-system/components/pagination.md +30 -8
  54. package/docs/design-system/components/popover.md +19 -0
  55. package/docs/design-system/components/progress-slider.md +18 -0
  56. package/docs/design-system/components/progress.md +17 -0
  57. package/docs/design-system/components/radio-card.md +16 -0
  58. package/docs/design-system/components/radio-group.md +17 -0
  59. package/docs/design-system/components/resizable.md +15 -0
  60. package/docs/design-system/components/scroll-area.md +15 -0
  61. package/docs/design-system/components/segmented-control.md +71 -0
  62. package/docs/design-system/components/select.md +44 -7
  63. package/docs/design-system/components/sheet.md +17 -0
  64. package/docs/design-system/components/sidebar.md +15 -0
  65. package/docs/design-system/components/skeleton.md +18 -0
  66. package/docs/design-system/components/slideout.md +14 -0
  67. package/docs/design-system/components/slider.md +20 -0
  68. package/docs/design-system/components/social-button.md +21 -3
  69. package/docs/design-system/components/spinner.md +16 -0
  70. package/docs/design-system/components/steps.md +14 -0
  71. package/docs/design-system/components/table.md +15 -1
  72. package/docs/design-system/components/tabs.md +17 -0
  73. package/docs/design-system/components/tag.md +17 -0
  74. package/docs/design-system/components/textarea.md +16 -0
  75. package/docs/design-system/components/timeline.md +14 -0
  76. package/docs/design-system/components/toast.md +17 -0
  77. package/docs/design-system/components/toggle.md +17 -0
  78. package/docs/design-system/components/toolbar.md +21 -1
  79. package/docs/design-system/components/tooltip.md +18 -1
  80. package/docs/design-system/density-and-elevation.md +44 -0
  81. package/docs/design-system/direction-and-localization.md +23 -0
  82. package/docs/design-system/form-recipes.md +73 -0
  83. package/docs/design-system/gap-promotion-policy.md +21 -0
  84. package/docs/design-system/gap-promotion-report.md +166 -0
  85. package/docs/design-system/installation.md +68 -0
  86. package/docs/design-system/launch-comparison-shadcn.md +98 -0
  87. package/docs/design-system/registry-and-cli.md +30 -7
  88. package/docs/design-system/release-policy.md +30 -0
  89. package/docs/design-system/roadmap.md +14 -0
  90. package/docs/design-system/support-matrix.md +23 -0
  91. package/docs/design-system/tabs.md +1 -1
  92. package/docs/design-system/token-governance.md +23 -1
  93. package/package.json +29 -15
  94. package/registry/component-contract.json +40 -0
  95. package/registry/components/alert-dialog.tsx +1 -1
  96. package/registry/components/alert.tsx +86 -65
  97. package/registry/components/autocomplete.tsx +23 -9
  98. package/registry/components/avatar.tsx +7 -7
  99. package/registry/components/badge.tsx +1 -1
  100. package/registry/components/button-group.tsx +321 -4
  101. package/registry/components/button.tsx +38 -17
  102. package/registry/components/card.tsx +68 -59
  103. package/registry/components/carousel.tsx +53 -5
  104. package/registry/components/chart.tsx +36 -3
  105. package/registry/components/checkbox.tsx +3 -3
  106. package/registry/components/collapsible.tsx +1 -1
  107. package/registry/components/command.tsx +1 -1
  108. package/registry/components/context-menu.tsx +1 -1
  109. package/registry/components/date-picker.tsx +245 -104
  110. package/registry/components/expanded/ActivityFeed.tsx +6 -15
  111. package/registry/components/expanded/Banner.tsx +3 -3
  112. package/registry/components/expanded/Breadcrumbs.tsx +5 -5
  113. package/registry/components/expanded/CatalogComponentsShowcase.tsx +13 -13
  114. package/registry/components/expanded/CatalogDivider.tsx +1 -1
  115. package/registry/components/expanded/EmptyState.tsx +1 -1
  116. package/registry/components/expanded/FileUpload.tsx +9 -2
  117. package/registry/components/expanded/OnboardingStepListItem.tsx +2 -4
  118. package/registry/components/expanded/PageHeader.tsx +13 -13
  119. package/registry/components/expanded/Slideout.tsx +15 -415
  120. package/registry/components/expanded/Steps.tsx +4 -4
  121. package/registry/components/expanded/Table.tsx +116 -69
  122. package/registry/components/expanded/Timeline.tsx +3 -3
  123. package/registry/components/expanded/activityFeed.css +1 -1
  124. package/registry/components/expanded/breadcrumbs.css +1 -1
  125. package/registry/components/expanded/divider.css +1 -1
  126. package/registry/components/expanded/emptyState.css +1 -1
  127. package/registry/components/expanded/fileUpload.css +6 -6
  128. package/registry/components/expanded/slideout.css +9 -685
  129. package/registry/components/expanded/steps.css +3 -3
  130. package/registry/components/expanded/table.css +2 -2
  131. package/registry/components/expanded/timeline.css +2 -2
  132. package/registry/components/input-content.ts +1 -0
  133. package/registry/components/input-otp.tsx +13 -3
  134. package/registry/components/input.tsx +68 -43
  135. package/registry/components/item.tsx +189 -0
  136. package/registry/components/kbd.tsx +111 -4
  137. package/registry/components/menu.tsx +31 -245
  138. package/registry/components/menubar.tsx +1 -1
  139. package/registry/components/modal.tsx +142 -102
  140. package/registry/components/native-select.tsx +2 -2
  141. package/registry/components/pagination.tsx +80 -58
  142. package/registry/components/popover.tsx +162 -664
  143. package/registry/components/radio-card.tsx +116 -87
  144. package/registry/components/segmented-control.tsx +87 -0
  145. package/registry/components/select-content.tsx +2 -2
  146. package/registry/components/select.tsx +52 -16
  147. package/registry/components/sheet.tsx +1 -1
  148. package/registry/components/sidebar.tsx +1 -1
  149. package/registry/components/skeleton.css +0 -3
  150. package/registry/components/social-button.tsx +47 -25
  151. package/registry/components/spinner.tsx +18 -55
  152. package/registry/components/tabs.css +1 -1
  153. package/registry/components/tabs.tsx +8 -4
  154. package/registry/components/tag.tsx +2 -2
  155. package/registry/components/textarea.tsx +3 -3
  156. package/registry/components/toast.tsx +16 -11
  157. package/registry/components/toggle.tsx +2 -2
  158. package/registry/components/toolbar.tsx +89 -17
  159. package/registry/components/tooltip.tsx +1 -1
  160. package/registry/examples/alert-demo.tsx +25 -5
  161. package/registry/examples/attribute-demo.tsx +1 -1
  162. package/registry/examples/autocomplete-demo.tsx +3 -3
  163. package/registry/examples/avatar-demo.tsx +7 -7
  164. package/registry/examples/badge-demo.tsx +1 -1
  165. package/registry/examples/button-demo.tsx +6 -6
  166. package/registry/examples/button-group-demo.tsx +23 -2
  167. package/registry/examples/card-demo.tsx +46 -8
  168. package/registry/examples/carousel-demo.tsx +20 -2
  169. package/registry/examples/chart-demo.tsx +1 -1
  170. package/registry/examples/checkbox-demo.tsx +5 -5
  171. package/registry/examples/collection-filter-bar-demo.tsx +135 -0
  172. package/registry/examples/command-demo.tsx +3 -3
  173. package/registry/examples/{expanded/command-bar-demo.tsx → command-palette-demo.tsx} +5 -15
  174. package/registry/examples/context-menu-demo.tsx +1 -1
  175. package/registry/examples/control-density-contract-demo.tsx +61 -0
  176. package/registry/examples/date-picker-demo.tsx +12 -12
  177. package/registry/examples/divider-demo.tsx +3 -3
  178. package/registry/examples/expanded/banner-demo.tsx +1 -1
  179. package/registry/examples/expanded/breadcrumbs-demo.tsx +1 -1
  180. package/registry/examples/expanded/empty-state-demo.tsx +1 -1
  181. package/registry/examples/expanded/file-upload-demo.tsx +1 -1
  182. package/registry/examples/expanded/onboarding-step-demo.tsx +1 -1
  183. package/registry/examples/expanded/slideout-demo.tsx +2 -2
  184. package/registry/examples/expanded/steps-demo.tsx +1 -1
  185. package/registry/examples/expanded/tabs-demo.tsx +1 -1
  186. package/registry/examples/expanded/timeline-demo.tsx +1 -1
  187. package/registry/examples/hover-card-demo.tsx +2 -2
  188. package/registry/examples/input-demo.tsx +6 -6
  189. package/registry/examples/input-otp-demo.tsx +4 -4
  190. package/registry/examples/item-demo.tsx +46 -0
  191. package/registry/examples/kbd-demo.tsx +1 -1
  192. package/registry/examples/label-demo.tsx +1 -1
  193. package/registry/examples/menu-demo.tsx +1 -1
  194. package/registry/examples/modal-demo.tsx +67 -9
  195. package/registry/examples/navigation-menu-demo.tsx +1 -1
  196. package/registry/examples/pagination-demo.tsx +6 -3
  197. package/registry/examples/popover-demo.tsx +19 -19
  198. package/registry/examples/progress-demo.tsx +1 -1
  199. package/registry/examples/progress-slider-demo.tsx +1 -1
  200. package/registry/examples/radio-card-demo.tsx +4 -4
  201. package/registry/examples/radio-group-demo.tsx +2 -2
  202. package/registry/examples/resizable-demo.tsx +1 -1
  203. package/registry/examples/results-toolbar-demo.tsx +44 -0
  204. package/registry/examples/scroll-area-demo.tsx +3 -3
  205. package/registry/examples/segmented-control-demo.tsx +39 -0
  206. package/registry/examples/select-demo.tsx +1 -1
  207. package/registry/examples/sidebar-demo.tsx +1 -1
  208. package/registry/examples/slider-demo.tsx +3 -3
  209. package/registry/examples/social-button-demo.tsx +18 -8
  210. package/registry/examples/spinner-demo.tsx +13 -13
  211. package/registry/examples/tabs-demo.tsx +1 -1
  212. package/registry/examples/tag-demo.tsx +1 -1
  213. package/registry/examples/textarea-demo.tsx +4 -4
  214. package/registry/examples/toast-demo.tsx +1 -1
  215. package/registry/examples/toggle-demo.tsx +6 -6
  216. package/registry/examples/tooltip-demo.tsx +4 -4
  217. package/registry/guidance/USAGE.md +27 -0
  218. package/registry/hooks/use-direction.ts +193 -13
  219. package/registry/index.json +5311 -377
  220. package/registry/styles/globals.css +2440 -4061
  221. package/registry.json +119 -149
  222. package/schema/config.schema.json +11 -8
  223. package/schema/registry.schema.json +150 -45
  224. package/schema/tokens.schema.json +134 -34
  225. package/src/cli/command-line.js +194 -0
  226. package/src/cli/config-editors.js +9 -0
  227. package/src/cli/doctor.js +399 -0
  228. package/src/cli/file-transaction.js +295 -0
  229. package/src/cli/global-css.js +153 -0
  230. package/src/cli/index.js +567 -1613
  231. package/src/cli/install-plan.js +592 -0
  232. package/src/cli/install-receipt.js +171 -0
  233. package/src/cli/jsonc.js +203 -0
  234. package/src/cli/package-install-state.js +254 -0
  235. package/src/cli/package-manager.js +238 -0
  236. package/src/cli/package-plan.js +185 -0
  237. package/src/cli/package-version.js +97 -0
  238. package/src/cli/registry-query.js +207 -0
  239. package/src/cli/reporting.js +55 -0
  240. package/src/cli/schema-validation.js +19 -0
  241. package/src/cli/source-scanner.js +686 -0
  242. package/src/cli/vite-config.js +478 -0
  243. package/tokens/banhaten.tokens.json +4312 -309
  244. package/docs/design-system/components/command-bar.md +0 -57
  245. package/registry/components/expanded/BannerBoard.tsx +0 -225
  246. package/registry/components/expanded/CatalogTag.tsx +0 -85
  247. package/registry/components/expanded/CommandBar.tsx +0 -386
  248. package/registry/components/expanded/IconExplorer.tsx +0 -612
  249. package/registry/components/expanded/TimelineShowcase.tsx +0 -158
  250. package/registry/components/expanded/commandBar.css +0 -470
  251. package/registry/components/expanded/iconExplorer.css +0 -764
  252. package/registry/components/expanded/iconPacks.ts +0 -866
  253. package/registry/components/expanded/tag.css +0 -148
  254. package/registry/examples/expanded/icons-demo.tsx +0 -5
  255. package/tokens/Color mode.zip +0 -0
  256. package/tokens/Numbers.zip +0 -0
  257. package/tokens/Radius.zip +0 -0
  258. package/tokens/Theme.zip +0 -0
package/registry.json CHANGED
@@ -10,6 +10,7 @@
10
10
  "description": "Banhaten base utilities, direction hook, and generated token stylesheet required by registry components.",
11
11
  "author": "Ahmad Galal",
12
12
  "dependencies": [
13
+ "@fontsource/ibm-plex-sans-arabic@^5.2.9",
13
14
  "@fontsource/inter@^5.2.8",
14
15
  "class-variance-authority@^0.7.1",
15
16
  "clsx@^2.1.1",
@@ -26,6 +27,11 @@
26
27
  "type": "registry:hook",
27
28
  "target": "@hooks/use-direction.ts"
28
29
  },
30
+ {
31
+ "path": "registry/guidance/USAGE.md",
32
+ "type": "registry:file",
33
+ "target": ".banhaten/USAGE.md"
34
+ },
29
35
  {
30
36
  "path": "registry/styles/globals.css",
31
37
  "type": "registry:style",
@@ -172,7 +178,8 @@
172
178
  "description": "Accessible button primitive with semantic variants, size scale, loading composition, and RTL-safe icon behavior.",
173
179
  "author": "Ahmad Galal",
174
180
  "registryDependencies": [
175
- "base"
181
+ "base",
182
+ "spinner"
176
183
  ],
177
184
  "dependencies": [
178
185
  "@radix-ui/react-slot@^1.2.3",
@@ -183,11 +190,6 @@
183
190
  "path": "registry/components/button.tsx",
184
191
  "type": "registry:component",
185
192
  "target": "@ui/button.tsx"
186
- },
187
- {
188
- "path": "registry/components/spinner.tsx",
189
- "type": "registry:component",
190
- "target": "@ui/spinner.tsx"
191
193
  }
192
194
  ]
193
195
  },
@@ -264,7 +266,7 @@
264
266
  "name": "button-group",
265
267
  "type": "registry:component",
266
268
  "title": "Button Group",
267
- "description": "Connected Button Group primitive with seven-item default and icon-only layouts, md/sm/xs size scale, reusable surface shadow, dividers, RTL-safe content spacing, native hover/focus/pressed styling, and active/disabled states.",
269
+ "description": "Connected Button Group and Toggle Group primitives with semantic control density, fixed or content-width items, reusable surface styling, RTL-safe spacing, and accessible pressed states.",
268
270
  "author": "Ahmad Galal",
269
271
  "registryDependencies": [
270
272
  "base"
@@ -281,6 +283,25 @@
281
283
  }
282
284
  ]
283
285
  },
286
+ {
287
+ "name": "segmented-control",
288
+ "type": "registry:component",
289
+ "title": "Segmented Control",
290
+ "description": "Content-width single or multiple selection control with semantic density, an optional non-interactive label segment, keyboard navigation, pressed states, and RTL support.",
291
+ "author": "Ahmad Galal",
292
+ "registryDependencies": [
293
+ "base",
294
+ "button-group"
295
+ ],
296
+ "dependencies": [],
297
+ "files": [
298
+ {
299
+ "path": "registry/components/segmented-control.tsx",
300
+ "type": "registry:component",
301
+ "target": "@ui/segmented-control.tsx"
302
+ }
303
+ ]
304
+ },
284
305
  {
285
306
  "name": "toggle",
286
307
  "type": "registry:component",
@@ -292,7 +313,8 @@
292
313
  ],
293
314
  "dependencies": [
294
315
  "@radix-ui/react-switch@^1.3.0",
295
- "class-variance-authority@^0.7.1"
316
+ "class-variance-authority@^0.7.1",
317
+ "lucide-react@^1.17.0"
296
318
  ],
297
319
  "files": [
298
320
  {
@@ -416,17 +438,10 @@
416
438
  "description": "Token-built popover primitive with click, focus, and hover-capable triggers, positioned content, optional arrow, alignment and offset controls, close affordance, small to large surfaces, and RTL-safe composition.",
417
439
  "author": "Ahmad Galal",
418
440
  "registryDependencies": [
419
- "base",
420
- "badge",
421
- "button",
422
- "checkbox",
423
- "input",
424
- "menu",
425
- "select",
426
- "toggle"
441
+ "base"
427
442
  ],
428
443
  "dependencies": [
429
- "@radix-ui/react-slot@^1.2.3",
444
+ "@radix-ui/react-popover@^1.1.19",
430
445
  "class-variance-authority@^0.7.1",
431
446
  "lucide-react@^1.17.0"
432
447
  ],
@@ -518,7 +533,8 @@
518
533
  ],
519
534
  "dependencies": [
520
535
  "@radix-ui/react-checkbox@^1.3.3",
521
- "class-variance-authority@^0.7.1"
536
+ "class-variance-authority@^0.7.1",
537
+ "lucide-react@^1.17.0"
522
538
  ],
523
539
  "files": [
524
540
  {
@@ -579,7 +595,8 @@
579
595
  "base"
580
596
  ],
581
597
  "dependencies": [
582
- "class-variance-authority@^0.7.1"
598
+ "class-variance-authority@^0.7.1",
599
+ "lucide-react@^1.17.0"
583
600
  ],
584
601
  "files": [
585
602
  {
@@ -613,13 +630,14 @@
613
630
  "name": "pagination",
614
631
  "type": "registry:component",
615
632
  "title": "Pagination",
616
- "description": "Figma-matched pagination primitive with numeric, simple, and summary layouts, soft and ghost styles, exact 32px controls, caption variants, and RTL labels.",
633
+ "description": "Figma-matched pagination primitive with numeric, simple, and summary layouts, soft and ghost styles, exact 32px controls, caption variants, and explicit localized messages.",
617
634
  "author": "Ahmad Galal",
618
635
  "registryDependencies": [
619
636
  "base"
620
637
  ],
621
638
  "dependencies": [
622
- "class-variance-authority@^0.7.1"
639
+ "class-variance-authority@^0.7.1",
640
+ "lucide-react@^1.17.0"
623
641
  ],
624
642
  "files": [
625
643
  {
@@ -636,7 +654,8 @@
636
654
  "description": "Figma Filter Toolbar primitive with eight filter/action styles, search fields, select triggers, icon actions, chips, selected-count badges, desktop/mobile wrapping, and RTL-safe composition.",
637
655
  "author": "Ahmad Galal",
638
656
  "registryDependencies": [
639
- "base"
657
+ "base",
658
+ "kbd"
640
659
  ],
641
660
  "dependencies": [
642
661
  "@radix-ui/react-slot@^1.2.3",
@@ -655,14 +674,15 @@
655
674
  "name": "social-button",
656
675
  "type": "registry:component",
657
676
  "title": "Social Button",
658
- "description": "Social sign-in button primitive with Figma-matched platform styles, solid and outlined variants, icon-only mode, native focus-visible styling, and RTL labels.",
677
+ "description": "Social sign-in button primitive with Figma-matched platform styles, solid and outlined variants, icon-only mode, native focus-visible styling, and explicit localized messages.",
659
678
  "author": "Ahmad Galal",
660
679
  "registryDependencies": [
661
680
  "base"
662
681
  ],
663
682
  "dependencies": [
664
683
  "@radix-ui/react-slot@^1.2.3",
665
- "class-variance-authority@^0.7.1"
684
+ "class-variance-authority@^0.7.1",
685
+ "lucide-react@^1.17.0"
666
686
  ],
667
687
  "files": [
668
688
  {
@@ -676,13 +696,15 @@
676
696
  "name": "input",
677
697
  "type": "registry:component",
678
698
  "title": "Input",
679
- "description": "Figma-matched input field with labels, helper and error text, add-ons, shortcuts, tags, dropdown/button/quantity adornments, default and soft styles, md/lg sizes, and RTL states.",
699
+ "description": "Tokenized input field with semantic control density, labels, helper and error text, explicit icons, shared keyboard shortcuts, add-ons, tags, default and soft styles, and RTL states.",
680
700
  "author": "Ahmad Galal",
681
701
  "registryDependencies": [
682
- "base"
702
+ "base",
703
+ "kbd"
683
704
  ],
684
705
  "dependencies": [
685
- "class-variance-authority@^0.7.1"
706
+ "class-variance-authority@^0.7.1",
707
+ "lucide-react@^1.17.0"
686
708
  ],
687
709
  "files": [
688
710
  {
@@ -744,7 +766,7 @@
744
766
  "name": "kbd",
745
767
  "type": "registry:component",
746
768
  "title": "Kbd",
747
- "description": "Keyboard hint primitive for shortcuts, command rows, and form help text with tokenized border, soft surface, and body-xs typography.",
769
+ "description": "Keyboard key and platform-aware shortcut primitives for search fields, command rows, and help text with shared tokenized surfaces.",
748
770
  "author": "Ahmad Galal",
749
771
  "registryDependencies": [
750
772
  "base"
@@ -760,6 +782,27 @@
760
782
  }
761
783
  ]
762
784
  },
785
+ {
786
+ "name": "item",
787
+ "type": "registry:component",
788
+ "title": "Item",
789
+ "description": "Composable Banhaten list item with media, content, title, description, actions, grouping, separators, three surface variants, three sizes, and RTL-safe logical layout.",
790
+ "author": "Ahmad Galal",
791
+ "registryDependencies": [
792
+ "base"
793
+ ],
794
+ "dependencies": [
795
+ "@radix-ui/react-slot@^1.2.3",
796
+ "class-variance-authority@^0.7.1"
797
+ ],
798
+ "files": [
799
+ {
800
+ "path": "registry/components/item.tsx",
801
+ "type": "registry:component",
802
+ "target": "@ui/item.tsx"
803
+ }
804
+ ]
805
+ },
763
806
  {
764
807
  "name": "field",
765
808
  "type": "registry:component",
@@ -806,7 +849,7 @@
806
849
  "name": "select",
807
850
  "type": "registry:component",
808
851
  "title": "Select",
809
- "description": "Radix Select-backed, Figma-matched select field and menu item primitives with default and soft trigger styles, lg/md sizes, error/filled/disabled states, menu surface, checkbox and check selection, and item media for text, icons, avatars, company, payment, and status dots.",
852
+ "description": "Radix Select-backed field and menu primitives with semantic control density, default and soft trigger styles, error/filled/disabled states, checkbox and check selection, and rich item media.",
810
853
  "author": "Ahmad Galal",
811
854
  "registryDependencies": [
812
855
  "base"
@@ -965,6 +1008,7 @@
965
1008
  "registryDependencies": [
966
1009
  "base",
967
1010
  "input",
1011
+ "popover",
968
1012
  "select",
969
1013
  "tag"
970
1014
  ],
@@ -983,10 +1027,11 @@
983
1027
  "name": "date-picker",
984
1028
  "type": "registry:component",
985
1029
  "title": "Date Picker",
986
- "description": "Figma-matched Calendar, Range Calendar, Date Picker, and Date Range Picker suite with single, month/year, double calendar, preset list, open/closed, time row, range selection, and RTL use cases.",
1030
+ "description": "Calendar, Range Calendar, Date Picker, and Date Range Picker suite with semantic trigger density, explicit calendar affordances, presets, time, range selection, and RTL support.",
987
1031
  "author": "Ahmad Galal",
988
1032
  "registryDependencies": [
989
- "base"
1033
+ "base",
1034
+ "popover"
990
1035
  ],
991
1036
  "dependencies": [
992
1037
  "class-variance-authority@^0.7.1",
@@ -1078,7 +1123,8 @@
1078
1123
  "base"
1079
1124
  ],
1080
1125
  "dependencies": [
1081
- "class-variance-authority@^0.7.1"
1126
+ "class-variance-authority@^0.7.1",
1127
+ "lucide-react@^1.17.0"
1082
1128
  ],
1083
1129
  "files": [
1084
1130
  {
@@ -1190,7 +1236,8 @@
1190
1236
  "base"
1191
1237
  ],
1192
1238
  "dependencies": [
1193
- "class-variance-authority@^0.7.1"
1239
+ "class-variance-authority@^0.7.1",
1240
+ "lucide-react@^1.17.0"
1194
1241
  ],
1195
1242
  "files": [
1196
1243
  {
@@ -1211,7 +1258,9 @@
1211
1258
  "button",
1212
1259
  "input"
1213
1260
  ],
1214
- "dependencies": [],
1261
+ "dependencies": [
1262
+ "lucide-react@^1.17.0"
1263
+ ],
1215
1264
  "files": [
1216
1265
  {
1217
1266
  "path": "registry/components/expanded/banner.css",
@@ -1222,11 +1271,6 @@
1222
1271
  "path": "registry/components/expanded/Banner.tsx",
1223
1272
  "type": "registry:component",
1224
1273
  "target": "@ui/expanded/Banner.tsx"
1225
- },
1226
- {
1227
- "path": "registry/components/expanded/BannerBoard.tsx",
1228
- "type": "registry:component",
1229
- "target": "@ui/expanded/BannerBoard.tsx"
1230
1274
  }
1231
1275
  ]
1232
1276
  },
@@ -1234,26 +1278,20 @@
1234
1278
  "name": "catalog-components",
1235
1279
  "type": "registry:block",
1236
1280
  "title": "Catalog Components",
1237
- "description": "Expanded catalog showcase with breadcrumbs, catalog-only content dividers, catalog tag previews, file upload states, and table previews.",
1281
+ "description": "Expanded catalog showcase with breadcrumbs, catalog-only content dividers, tag previews, file upload states, and table previews.",
1238
1282
  "author": "Ahmad Galal",
1239
1283
  "registryDependencies": [
1240
1284
  "base",
1241
- "button"
1285
+ "breadcrumbs",
1286
+ "button",
1287
+ "file-upload",
1288
+ "table",
1289
+ "tag"
1242
1290
  ],
1243
1291
  "dependencies": [
1244
1292
  "lucide-react@^1.17.0"
1245
1293
  ],
1246
1294
  "files": [
1247
- {
1248
- "path": "registry/components/expanded/breadcrumbs.css",
1249
- "type": "registry:style",
1250
- "target": "@ui/expanded/breadcrumbs.css"
1251
- },
1252
- {
1253
- "path": "registry/components/expanded/Breadcrumbs.tsx",
1254
- "type": "registry:component",
1255
- "target": "@ui/expanded/Breadcrumbs.tsx"
1256
- },
1257
1295
  {
1258
1296
  "path": "registry/components/expanded/catalogComponentsShowcase.css",
1259
1297
  "type": "registry:style",
@@ -1273,36 +1311,6 @@
1273
1311
  "path": "registry/components/expanded/CatalogDivider.tsx",
1274
1312
  "type": "registry:component",
1275
1313
  "target": "@ui/expanded/CatalogDivider.tsx"
1276
- },
1277
- {
1278
- "path": "registry/components/expanded/fileUpload.css",
1279
- "type": "registry:style",
1280
- "target": "@ui/expanded/fileUpload.css"
1281
- },
1282
- {
1283
- "path": "registry/components/expanded/FileUpload.tsx",
1284
- "type": "registry:component",
1285
- "target": "@ui/expanded/FileUpload.tsx"
1286
- },
1287
- {
1288
- "path": "registry/components/expanded/table.css",
1289
- "type": "registry:style",
1290
- "target": "@ui/expanded/table.css"
1291
- },
1292
- {
1293
- "path": "registry/components/expanded/Table.tsx",
1294
- "type": "registry:component",
1295
- "target": "@ui/expanded/Table.tsx"
1296
- },
1297
- {
1298
- "path": "registry/components/expanded/tag.css",
1299
- "type": "registry:style",
1300
- "target": "@ui/expanded/tag.css"
1301
- },
1302
- {
1303
- "path": "registry/components/expanded/CatalogTag.tsx",
1304
- "type": "registry:component",
1305
- "target": "@ui/expanded/CatalogTag.tsx"
1306
1314
  }
1307
1315
  ]
1308
1316
  },
@@ -1315,7 +1323,9 @@
1315
1323
  "registryDependencies": [
1316
1324
  "base"
1317
1325
  ],
1318
- "dependencies": [],
1326
+ "dependencies": [
1327
+ "lucide-react@^1.17.0"
1328
+ ],
1319
1329
  "files": [
1320
1330
  {
1321
1331
  "path": "registry/components/expanded/breadcrumbs.css",
@@ -1363,11 +1373,20 @@
1363
1373
  "author": "Ahmad Galal",
1364
1374
  "registryDependencies": [
1365
1375
  "base",
1366
- "toolbar",
1376
+ "avatar",
1377
+ "badge",
1378
+ "button",
1379
+ "checkbox",
1367
1380
  "pagination",
1368
- "spinner"
1381
+ "progress",
1382
+ "spinner",
1383
+ "tag",
1384
+ "toggle",
1385
+ "toolbar"
1386
+ ],
1387
+ "dependencies": [
1388
+ "lucide-react@^1.17.0"
1369
1389
  ],
1370
- "dependencies": [],
1371
1390
  "files": [
1372
1391
  {
1373
1392
  "path": "registry/components/expanded/table.css",
@@ -1381,32 +1400,6 @@
1381
1400
  }
1382
1401
  ]
1383
1402
  },
1384
- {
1385
- "name": "command-bar",
1386
- "type": "registry:block",
1387
- "title": "Command Bar",
1388
- "description": "Expanded command bar composition for default, recent, results, and empty command-palette states across desktop, mobile, LTR, and RTL.",
1389
- "author": "Ahmad Galal",
1390
- "registryDependencies": [
1391
- "base",
1392
- "button"
1393
- ],
1394
- "dependencies": [
1395
- "lucide-react@^1.17.0"
1396
- ],
1397
- "files": [
1398
- {
1399
- "path": "registry/components/expanded/commandBar.css",
1400
- "type": "registry:style",
1401
- "target": "@ui/expanded/commandBar.css"
1402
- },
1403
- {
1404
- "path": "registry/components/expanded/CommandBar.tsx",
1405
- "type": "registry:component",
1406
- "target": "@ui/expanded/CommandBar.tsx"
1407
- }
1408
- ]
1409
- },
1410
1403
  {
1411
1404
  "name": "empty-state",
1412
1405
  "type": "registry:block",
@@ -1433,34 +1426,6 @@
1433
1426
  }
1434
1427
  ]
1435
1428
  },
1436
- {
1437
- "name": "icons",
1438
- "type": "registry:block",
1439
- "title": "Icons",
1440
- "description": "Expanded icon explorer for open-source icon pack review, semantic mapping, shortlist comparison, and Iconify catalog inspection.",
1441
- "author": "Ahmad Galal",
1442
- "registryDependencies": [
1443
- "base"
1444
- ],
1445
- "dependencies": [],
1446
- "files": [
1447
- {
1448
- "path": "registry/components/expanded/iconExplorer.css",
1449
- "type": "registry:style",
1450
- "target": "@ui/expanded/iconExplorer.css"
1451
- },
1452
- {
1453
- "path": "registry/components/expanded/iconPacks.ts",
1454
- "type": "registry:component",
1455
- "target": "@ui/expanded/iconPacks.ts"
1456
- },
1457
- {
1458
- "path": "registry/components/expanded/IconExplorer.tsx",
1459
- "type": "registry:component",
1460
- "target": "@ui/expanded/IconExplorer.tsx"
1461
- }
1462
- ]
1463
- },
1464
1429
  {
1465
1430
  "name": "onboarding-step",
1466
1431
  "type": "registry:block",
@@ -1470,7 +1435,9 @@
1470
1435
  "registryDependencies": [
1471
1436
  "base"
1472
1437
  ],
1473
- "dependencies": [],
1438
+ "dependencies": [
1439
+ "lucide-react@^1.17.0"
1440
+ ],
1474
1441
  "files": [
1475
1442
  {
1476
1443
  "path": "registry/components/expanded/onboardingStepListItem.css",
@@ -1494,7 +1461,9 @@
1494
1461
  "base",
1495
1462
  "tabs"
1496
1463
  ],
1497
- "dependencies": [],
1464
+ "dependencies": [
1465
+ "lucide-react@^1.17.0"
1466
+ ],
1498
1467
  "files": [
1499
1468
  {
1500
1469
  "path": "registry/components/expanded/pageHeader.css",
@@ -1517,7 +1486,9 @@
1517
1486
  "registryDependencies": [
1518
1487
  "base"
1519
1488
  ],
1520
- "dependencies": [],
1489
+ "dependencies": [
1490
+ "lucide-react@^1.17.0"
1491
+ ],
1521
1492
  "files": [
1522
1493
  {
1523
1494
  "path": "registry/components/expanded/slideout.css",
@@ -1541,7 +1512,9 @@
1541
1512
  "base",
1542
1513
  "button"
1543
1514
  ],
1544
- "dependencies": [],
1515
+ "dependencies": [
1516
+ "lucide-react@^1.17.0"
1517
+ ],
1545
1518
  "files": [
1546
1519
  {
1547
1520
  "path": "registry/components/expanded/steps.css",
@@ -1589,7 +1562,9 @@
1589
1562
  "registryDependencies": [
1590
1563
  "base"
1591
1564
  ],
1592
- "dependencies": [],
1565
+ "dependencies": [
1566
+ "lucide-react@^1.17.0"
1567
+ ],
1593
1568
  "files": [
1594
1569
  {
1595
1570
  "path": "registry/components/expanded/timeline.css",
@@ -1600,11 +1575,6 @@
1600
1575
  "path": "registry/components/expanded/Timeline.tsx",
1601
1576
  "type": "registry:component",
1602
1577
  "target": "@ui/expanded/Timeline.tsx"
1603
- },
1604
- {
1605
- "path": "registry/components/expanded/TimelineShowcase.tsx",
1606
- "type": "registry:component",
1607
- "target": "@ui/expanded/TimelineShowcase.tsx"
1608
1578
  }
1609
1579
  ]
1610
1580
  }
@@ -3,43 +3,46 @@
3
3
  "$id": "urn:banhaten:schema:config",
4
4
  "title": "Banhaten CLI config",
5
5
  "type": "object",
6
+ "required": ["tailwind", "aliases"],
6
7
  "additionalProperties": false,
7
8
  "properties": {
8
9
  "$schema": {
9
10
  "type": "string"
10
11
  },
11
- "style": {
12
- "type": "string",
13
- "default": "default"
14
- },
15
- "tsx": {
16
- "type": "boolean",
17
- "default": true
18
- },
19
12
  "tailwind": {
20
13
  "type": "object",
14
+ "required": ["css"],
21
15
  "additionalProperties": false,
22
16
  "properties": {
23
17
  "css": {
24
18
  "type": "string",
19
+ "minLength": 1,
20
+ "pattern": "^\\S(?:.*\\S)?$",
25
21
  "description": "Path to the global CSS file that imports Tailwind and receives Banhaten tokens."
26
22
  }
27
23
  }
28
24
  },
29
25
  "aliases": {
30
26
  "type": "object",
27
+ "required": ["ui", "utils", "hooks"],
31
28
  "additionalProperties": false,
32
29
  "properties": {
33
30
  "ui": {
34
31
  "type": "string",
32
+ "minLength": 1,
33
+ "pattern": "^\\S(?:.*\\S)?$",
35
34
  "description": "Import alias where Banhaten UI components are installed."
36
35
  },
37
36
  "utils": {
38
37
  "type": "string",
38
+ "minLength": 1,
39
+ "pattern": "^\\S(?:.*\\S)?$",
39
40
  "description": "Import alias for the cn utility file."
40
41
  },
41
42
  "hooks": {
42
43
  "type": "string",
44
+ "minLength": 1,
45
+ "pattern": "^\\S(?:.*\\S)?$",
43
46
  "description": "Import alias for generated hooks."
44
47
  }
45
48
  }