banhaten 0.3.0 → 0.5.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 (348) hide show
  1. package/CHANGELOG.md +139 -73
  2. package/CONTRIBUTING.md +46 -44
  3. package/README.md +192 -190
  4. package/SECURITY.md +15 -15
  5. package/banhaten.config.example.json +11 -11
  6. package/docs/design-spacing.md +13 -0
  7. package/docs/design-system/README.md +22 -20
  8. package/docs/design-system/adoption-quality-remediation.md +87 -87
  9. package/docs/design-system/agent-usage.md +13 -13
  10. package/docs/design-system/appearance-presets.md +189 -189
  11. package/docs/design-system/appearances/default.md +94 -94
  12. package/docs/design-system/appearances/rounded.md +95 -95
  13. package/docs/design-system/appearances/sharp.md +95 -95
  14. package/docs/design-system/component-docs-pattern.md +81 -81
  15. package/docs/design-system/component-implementation-ownership-audit.md +245 -244
  16. package/docs/design-system/component-quality-audit-2026-08-20.md +225 -223
  17. package/docs/design-system/component-showcase-consistency-report.md +219 -219
  18. package/docs/design-system/component-token-consistency-audit.md +173 -173
  19. package/docs/design-system/components/README.md +90 -76
  20. package/docs/design-system/components/accordion.md +53 -53
  21. package/docs/design-system/components/activity-feed.md +94 -94
  22. package/docs/design-system/components/activity-heatmap.md +57 -57
  23. package/docs/design-system/components/agent-input.md +85 -0
  24. package/docs/design-system/components/alert-dialog.md +72 -72
  25. package/docs/design-system/components/alert.md +98 -98
  26. package/docs/design-system/components/approval-card.md +134 -0
  27. package/docs/design-system/components/aspect-ratio.md +45 -45
  28. package/docs/design-system/components/attribute.md +89 -89
  29. package/docs/design-system/components/autocomplete.md +75 -75
  30. package/docs/design-system/components/avatar.md +54 -54
  31. package/docs/design-system/components/badge.md +54 -54
  32. package/docs/design-system/components/banner.md +87 -87
  33. package/docs/design-system/components/breadcrumbs.md +177 -176
  34. package/docs/design-system/components/button-group.md +98 -98
  35. package/docs/design-system/components/button.md +83 -80
  36. package/docs/design-system/components/card.md +88 -88
  37. package/docs/design-system/components/carousel.md +46 -46
  38. package/docs/design-system/components/catalog-components.md +47 -47
  39. package/docs/design-system/components/chart.md +95 -24
  40. package/docs/design-system/components/checkbox.md +54 -54
  41. package/docs/design-system/components/collapsible.md +67 -53
  42. package/docs/design-system/components/command.md +62 -62
  43. package/docs/design-system/components/context-menu.md +46 -46
  44. package/docs/design-system/components/date-picker.md +81 -79
  45. package/docs/design-system/components/divider.md +102 -102
  46. package/docs/design-system/components/empty-state.md +56 -56
  47. package/docs/design-system/components/field.md +70 -70
  48. package/docs/design-system/components/file-upload.md +187 -187
  49. package/docs/design-system/components/hover-card.md +48 -48
  50. package/docs/design-system/components/icons.md +48 -48
  51. package/docs/design-system/components/inline-citations.md +93 -0
  52. package/docs/design-system/components/input-group.md +58 -58
  53. package/docs/design-system/components/input-otp.md +56 -56
  54. package/docs/design-system/components/input.md +117 -61
  55. package/docs/design-system/components/item.md +59 -57
  56. package/docs/design-system/components/kbd.md +54 -49
  57. package/docs/design-system/components/label.md +49 -49
  58. package/docs/design-system/components/menu.md +71 -61
  59. package/docs/design-system/components/menubar.md +47 -47
  60. package/docs/design-system/components/modal.md +105 -105
  61. package/docs/design-system/components/native-select.md +54 -54
  62. package/docs/design-system/components/navigation-menu.md +50 -50
  63. package/docs/design-system/components/onboarding-step-list-item.md +82 -82
  64. package/docs/design-system/components/page-header.md +93 -86
  65. package/docs/design-system/components/pagination.md +57 -57
  66. package/docs/design-system/components/popover.md +60 -60
  67. package/docs/design-system/components/progress-slider.md +50 -50
  68. package/docs/design-system/components/progress.md +76 -76
  69. package/docs/design-system/components/radio-card.md +51 -51
  70. package/docs/design-system/components/radio-group.md +57 -57
  71. package/docs/design-system/components/resizable.md +44 -44
  72. package/docs/design-system/components/rolling-count.md +61 -0
  73. package/docs/design-system/components/scroll-area.md +51 -51
  74. package/docs/design-system/components/segmented-control.md +54 -54
  75. package/docs/design-system/components/select.md +68 -62
  76. package/docs/design-system/components/sheet.md +67 -67
  77. package/docs/design-system/components/shimmer-text.md +67 -0
  78. package/docs/design-system/components/sidebar.md +127 -76
  79. package/docs/design-system/components/skeleton.md +75 -75
  80. package/docs/design-system/components/slideout.md +65 -65
  81. package/docs/design-system/components/slider.md +63 -63
  82. package/docs/design-system/components/social-button.md +50 -50
  83. package/docs/design-system/components/spinner.md +62 -62
  84. package/docs/design-system/components/steps.md +65 -65
  85. package/docs/design-system/components/streaming-text.md +82 -0
  86. package/docs/design-system/components/table.md +419 -414
  87. package/docs/design-system/components/tabs.md +59 -55
  88. package/docs/design-system/components/tag.md +80 -80
  89. package/docs/design-system/components/task-list.md +95 -0
  90. package/docs/design-system/components/textarea.md +50 -50
  91. package/docs/design-system/components/thinking-reasoning.md +72 -0
  92. package/docs/design-system/components/thinking-state.md +67 -0
  93. package/docs/design-system/components/timeline.md +83 -83
  94. package/docs/design-system/components/toast.md +58 -58
  95. package/docs/design-system/components/toggle.md +81 -81
  96. package/docs/design-system/components/toolbar.md +92 -87
  97. package/docs/design-system/components/tooltip.md +94 -92
  98. package/docs/design-system/components/typography.md +18 -18
  99. package/docs/design-system/density-and-elevation.md +65 -61
  100. package/docs/design-system/design-system-test-missing-items.md +368 -368
  101. package/docs/design-system/direction-and-localization.md +23 -23
  102. package/docs/design-system/form-recipes.md +73 -73
  103. package/docs/design-system/gap-promotion-policy.md +21 -21
  104. package/docs/design-system/icons.md +74 -69
  105. package/docs/design-system/installation.md +70 -68
  106. package/docs/design-system/launch-comparison-shadcn.md +98 -98
  107. package/docs/design-system/registry-and-cli.md +64 -64
  108. package/docs/design-system/release-policy.md +30 -30
  109. package/docs/design-system/roadmap.md +14 -14
  110. package/docs/design-system/support-matrix.md +23 -23
  111. package/docs/design-system/tabs.md +54 -53
  112. package/docs/design-system/template-gap-audit.md +32 -0
  113. package/docs/design-system/templates.md +59 -0
  114. package/docs/design-system/token-governance.md +72 -60
  115. package/package.json +98 -98
  116. package/registry/component-contract.json +40 -40
  117. package/registry/components/accordion.tsx +155 -155
  118. package/registry/components/agent-input-parts.tsx +552 -0
  119. package/registry/components/agent-input-state.ts +156 -0
  120. package/registry/components/agent-input.css +307 -0
  121. package/registry/components/agent-input.tsx +382 -0
  122. package/registry/components/alert-dialog.tsx +297 -297
  123. package/registry/components/alert.tsx +293 -293
  124. package/registry/components/approval-card.css +409 -0
  125. package/registry/components/approval-card.tsx +401 -0
  126. package/registry/components/approval-frame.tsx +108 -0
  127. package/registry/components/approval-questions.tsx +559 -0
  128. package/registry/components/aspect-ratio.tsx +30 -30
  129. package/registry/components/attribute.tsx +454 -448
  130. package/registry/components/autocomplete.tsx +598 -651
  131. package/registry/components/avatar.tsx +385 -381
  132. package/registry/components/badge.tsx +629 -629
  133. package/registry/components/button-group.tsx +565 -565
  134. package/registry/components/button.tsx +127 -123
  135. package/registry/components/card.tsx +638 -638
  136. package/registry/components/carousel.tsx +296 -296
  137. package/registry/components/chart-block-data.ts +177 -0
  138. package/registry/components/chart-block.css +171 -0
  139. package/registry/components/chart-block.tsx +260 -0
  140. package/registry/components/chart-interactions.ts +123 -0
  141. package/registry/components/chart-options.cartesian.ts +162 -0
  142. package/registry/components/chart-options.paint.ts +99 -0
  143. package/registry/components/chart-options.parts.ts +72 -0
  144. package/registry/components/chart-options.radial.ts +109 -0
  145. package/registry/components/chart-options.ts +44 -0
  146. package/registry/components/chart-options.types.ts +67 -0
  147. package/registry/components/chart.tsx +203 -203
  148. package/registry/components/checkbox.tsx +247 -247
  149. package/registry/components/collapsible.tsx +109 -69
  150. package/registry/components/command.tsx +208 -208
  151. package/registry/components/context-menu.tsx +236 -236
  152. package/registry/components/data-chart.tsx +40 -0
  153. package/registry/components/date-picker.tsx +1289 -1277
  154. package/registry/components/echart-theme.ts +246 -0
  155. package/registry/components/echart.css +49 -0
  156. package/registry/components/echart.tsx +178 -0
  157. package/registry/components/expanded/ActivityFeed.tsx +227 -227
  158. package/registry/components/expanded/ActivityHeatmap.tsx +64 -64
  159. package/registry/components/expanded/Banner.tsx +179 -179
  160. package/registry/components/expanded/Breadcrumbs.tsx +131 -131
  161. package/registry/components/expanded/CatalogComponentsShowcase.tsx +205 -205
  162. package/registry/components/expanded/CatalogDivider.tsx +49 -49
  163. package/registry/components/expanded/EmptyState.tsx +155 -155
  164. package/registry/components/expanded/FileUpload.tsx +543 -543
  165. package/registry/components/expanded/OnboardingStepListItem.tsx +60 -59
  166. package/registry/components/expanded/PageHeader.tsx +179 -166
  167. package/registry/components/expanded/Slideout.tsx +108 -108
  168. package/registry/components/expanded/Steps.tsx +402 -402
  169. package/registry/components/expanded/Table.tsx +1092 -1071
  170. package/registry/components/expanded/Timeline.tsx +203 -203
  171. package/registry/components/expanded/activityFeed.css +248 -248
  172. package/registry/components/expanded/activityHeatmap.css +66 -66
  173. package/registry/components/expanded/banner.css +260 -255
  174. package/registry/components/expanded/breadcrumbs.css +140 -140
  175. package/registry/components/expanded/catalogComponentsShowcase.css +87 -87
  176. package/registry/components/expanded/divider.css +75 -75
  177. package/registry/components/expanded/emptyState.css +111 -111
  178. package/registry/components/expanded/fileUpload.css +457 -457
  179. package/registry/components/expanded/onboardingStepListItem.css +135 -126
  180. package/registry/components/expanded/pageHeader.css +248 -290
  181. package/registry/components/expanded/slideout.css +276 -276
  182. package/registry/components/expanded/steps.css +356 -356
  183. package/registry/components/expanded/table.css +606 -603
  184. package/registry/components/expanded/timeline.css +286 -286
  185. package/registry/components/field.tsx +283 -283
  186. package/registry/components/hover-card.tsx +48 -48
  187. package/registry/components/inline-citations.css +126 -0
  188. package/registry/components/inline-citations.tsx +292 -0
  189. package/registry/components/input-content.ts +107 -107
  190. package/registry/components/input-group.tsx +130 -130
  191. package/registry/components/input-otp.tsx +584 -584
  192. package/registry/components/input.tsx +990 -972
  193. package/registry/components/item.tsx +189 -189
  194. package/registry/components/kbd.tsx +246 -151
  195. package/registry/components/label.tsx +78 -78
  196. package/registry/components/menu.tsx +978 -986
  197. package/registry/components/menubar.tsx +226 -226
  198. package/registry/components/modal.tsx +872 -872
  199. package/registry/components/native-select.tsx +205 -205
  200. package/registry/components/navigation-menu.tsx +171 -171
  201. package/registry/components/pagination.css +36 -36
  202. package/registry/components/pagination.tsx +560 -555
  203. package/registry/components/popover.tsx +338 -338
  204. package/registry/components/progress-slider.tsx +216 -216
  205. package/registry/components/radio-card.tsx +676 -677
  206. package/registry/components/radio-group.tsx +570 -570
  207. package/registry/components/resizable.tsx +108 -108
  208. package/registry/components/rolling-count.css +37 -0
  209. package/registry/components/rolling-count.tsx +110 -0
  210. package/registry/components/scroll-area.tsx +91 -91
  211. package/registry/components/segmented-control.tsx +87 -87
  212. package/registry/components/select-content.tsx +218 -218
  213. package/registry/components/select.tsx +937 -932
  214. package/registry/components/sheet.tsx +305 -305
  215. package/registry/components/shimmer-text.css +69 -0
  216. package/registry/components/shimmer-text.tsx +43 -0
  217. package/registry/components/sidebar.tsx +1433 -358
  218. package/registry/components/skeleton.css +54 -54
  219. package/registry/components/skeleton.tsx +482 -482
  220. package/registry/components/slider.tsx +380 -380
  221. package/registry/components/social-button.tsx +387 -387
  222. package/registry/components/spinner.tsx +78 -78
  223. package/registry/components/streaming-text.css +45 -0
  224. package/registry/components/streaming-text.tsx +165 -0
  225. package/registry/components/table-elements.tsx +128 -128
  226. package/registry/components/tabs.css +222 -218
  227. package/registry/components/tabs.tsx +241 -241
  228. package/registry/components/tag.tsx +423 -423
  229. package/registry/components/task-list.css +328 -0
  230. package/registry/components/task-list.tsx +429 -0
  231. package/registry/components/textarea.tsx +610 -610
  232. package/registry/components/thinking-reasoning.css +178 -0
  233. package/registry/components/thinking-reasoning.tsx +253 -0
  234. package/registry/components/thinking-state.css +8 -0
  235. package/registry/components/thinking-state.tsx +46 -0
  236. package/registry/components/toast.tsx +136 -136
  237. package/registry/components/toggle.tsx +256 -256
  238. package/registry/components/toolbar.tsx +539 -539
  239. package/registry/components/tooltip.tsx +433 -431
  240. package/registry/examples/agent-input-demo.tsx +90 -0
  241. package/registry/examples/alert-demo.tsx +34 -34
  242. package/registry/examples/alert-dialog-demo.tsx +42 -42
  243. package/registry/examples/approval-card-demo.tsx +83 -0
  244. package/registry/examples/aspect-ratio-demo.tsx +11 -11
  245. package/registry/examples/attribute-demo.tsx +65 -65
  246. package/registry/examples/autocomplete-demo.tsx +109 -109
  247. package/registry/examples/avatar-demo.tsx +132 -132
  248. package/registry/examples/badge-demo.tsx +69 -69
  249. package/registry/examples/button-demo.tsx +86 -83
  250. package/registry/examples/button-group-demo.tsx +63 -63
  251. package/registry/examples/card-demo.tsx +86 -86
  252. package/registry/examples/carousel-demo.tsx +43 -43
  253. package/registry/examples/chart-block-demo.tsx +5 -0
  254. package/registry/examples/chart-demo.tsx +18 -33
  255. package/registry/examples/checkbox-demo.tsx +62 -62
  256. package/registry/examples/collapsible-demo.tsx +16 -16
  257. package/registry/examples/collection-filter-bar-demo.tsx +135 -135
  258. package/registry/examples/command-demo.tsx +42 -42
  259. package/registry/examples/command-palette-demo.tsx +235 -236
  260. package/registry/examples/context-menu-demo.tsx +29 -29
  261. package/registry/examples/control-density-contract-demo.tsx +65 -61
  262. package/registry/examples/date-picker-demo.tsx +127 -127
  263. package/registry/examples/divider-demo.tsx +17 -17
  264. package/registry/examples/expanded/activity-heatmap-demo.tsx +29 -29
  265. package/registry/examples/expanded/banner-demo.tsx +48 -48
  266. package/registry/examples/expanded/breadcrumbs-demo.tsx +59 -59
  267. package/registry/examples/expanded/empty-state-demo.tsx +39 -39
  268. package/registry/examples/expanded/file-upload-demo.tsx +60 -60
  269. package/registry/examples/expanded/onboarding-step-demo.tsx +11 -11
  270. package/registry/examples/expanded/slideout-demo.tsx +15 -15
  271. package/registry/examples/expanded/steps-demo.tsx +29 -29
  272. package/registry/examples/expanded/tabs-demo.tsx +13 -13
  273. package/registry/examples/expanded/timeline-demo.tsx +18 -18
  274. package/registry/examples/field-demo.tsx +51 -51
  275. package/registry/examples/hover-card-demo.tsx +23 -23
  276. package/registry/examples/inline-citations-demo.tsx +31 -0
  277. package/registry/examples/input-actions-demo.tsx +36 -0
  278. package/registry/examples/input-demo.tsx +87 -87
  279. package/registry/examples/input-group-demo.tsx +16 -16
  280. package/registry/examples/input-otp-demo.tsx +72 -72
  281. package/registry/examples/item-demo.tsx +46 -46
  282. package/registry/examples/kbd-demo.tsx +12 -11
  283. package/registry/examples/label-demo.tsx +20 -20
  284. package/registry/examples/menu-demo.tsx +122 -122
  285. package/registry/examples/menubar-demo.tsx +34 -34
  286. package/registry/examples/modal-demo.tsx +74 -74
  287. package/registry/examples/native-select-demo.tsx +16 -16
  288. package/registry/examples/navigation-menu-demo.tsx +29 -29
  289. package/registry/examples/pagination-demo.tsx +20 -20
  290. package/registry/examples/popover-demo.tsx +547 -546
  291. package/registry/examples/progress-demo.tsx +37 -37
  292. package/registry/examples/progress-slider-demo.tsx +29 -29
  293. package/registry/examples/radio-card-demo.tsx +51 -51
  294. package/registry/examples/radio-group-demo.tsx +62 -62
  295. package/registry/examples/resizable-demo.tsx +22 -22
  296. package/registry/examples/results-toolbar-demo.tsx +44 -44
  297. package/registry/examples/rolling-count-demo.tsx +39 -0
  298. package/registry/examples/scroll-area-demo.tsx +15 -15
  299. package/registry/examples/segmented-control-demo.tsx +39 -39
  300. package/registry/examples/select-demo.tsx +87 -87
  301. package/registry/examples/sheet-demo.tsx +47 -47
  302. package/registry/examples/shimmer-text-demo.tsx +20 -0
  303. package/registry/examples/sidebar-demo.tsx +101 -57
  304. package/registry/examples/slider-demo.tsx +31 -31
  305. package/registry/examples/social-button-demo.tsx +61 -61
  306. package/registry/examples/spinner-demo.tsx +59 -59
  307. package/registry/examples/streaming-text-demo.tsx +28 -0
  308. package/registry/examples/tabs-demo.tsx +13 -13
  309. package/registry/examples/tag-demo.tsx +29 -29
  310. package/registry/examples/task-list-demo.tsx +74 -0
  311. package/registry/examples/textarea-demo.tsx +79 -79
  312. package/registry/examples/thinking-reasoning-demo.tsx +74 -0
  313. package/registry/examples/thinking-state-demo.tsx +13 -0
  314. package/registry/examples/toast-demo.tsx +35 -35
  315. package/registry/examples/toggle-demo.tsx +59 -59
  316. package/registry/examples/tooltip-demo.tsx +115 -115
  317. package/registry/guidance/USAGE.md +27 -27
  318. package/registry/guidance/charts.LICENSE.txt +24 -0
  319. package/registry/hooks/use-controllable-state.ts +33 -0
  320. package/registry/hooks/use-direction.ts +207 -207
  321. package/registry/hooks/use-listbox-navigation.ts +73 -0
  322. package/registry/hooks/use-motion-end.ts +55 -0
  323. package/registry/hooks/use-reduced-motion.ts +28 -0
  324. package/registry/index.json +1634 -184
  325. package/registry/styles/globals.css +1462 -1570
  326. package/registry.json +364 -10
  327. package/schema/config.schema.json +51 -51
  328. package/schema/registry.schema.json +194 -190
  329. package/schema/tokens.schema.json +167 -163
  330. package/src/cli/command-line.js +194 -194
  331. package/src/cli/config-editors.js +9 -9
  332. package/src/cli/doctor.js +399 -399
  333. package/src/cli/file-transaction.js +302 -295
  334. package/src/cli/global-css.js +153 -153
  335. package/src/cli/index.js +1002 -1009
  336. package/src/cli/install-plan.js +592 -592
  337. package/src/cli/install-receipt.js +171 -171
  338. package/src/cli/jsonc.js +203 -203
  339. package/src/cli/package-install-state.js +254 -254
  340. package/src/cli/package-manager.js +238 -238
  341. package/src/cli/package-plan.js +185 -185
  342. package/src/cli/package-version.js +97 -97
  343. package/src/cli/registry-query.js +207 -207
  344. package/src/cli/reporting.js +55 -55
  345. package/src/cli/schema-validation.js +19 -19
  346. package/src/cli/source-scanner.js +686 -686
  347. package/src/cli/vite-config.js +478 -478
  348. package/tokens/banhaten.tokens.json +458 -224
@@ -0,0 +1,32 @@
1
+ # Template Gap Audit
2
+
3
+ Last updated: 2026-08-23
4
+
5
+ This audit records repeated friction encountered while composing the 60-template catalog. It does not automatically promote every local composition into a component. Candidates should pass the roadmap's reuse, accessibility, direction, and API-stability gates.
6
+
7
+ ## Prioritized findings
8
+
9
+ | Priority | Missing capability | Evidence from the catalog | Current workaround | Recommended ownership |
10
+ | --- | --- | --- | --- | --- |
11
+ | P1 | Responsive app-shell and layout primitives | Nearly every dashboard, settings, data, and operations page needed the same container, split-pane, metric-grid, and responsive collapse rules | Local CSS grids using spacing and surface tokens | Add documented `Container`, `Stack`, `Cluster`, `Grid`, and `AppShell` layout patterns plus breakpoint/container tokens |
12
+ | P1 | Stat / KPI card pattern | Executive, product, sales, commerce, finance, campaign, and widget designs repeat label/value/change anatomy | Local Card composition with Badge and trend icon | Promote a `StatCard` pattern with value, comparison, intent, sparkline slot, loading state, and RTL-safe trend semantics |
13
+ | P1 | Key-value and summary rows | Checkout, billing, profile, resource detail, transfers, and review flows need dense label/value groupings | Card, Attribute, Divider, and bespoke rows | Add a responsive `DescriptionList` / `SummaryList` pattern with actions, status, truncation, and stacked mode |
14
+ | P1 | Data-visualization recipes | Dashboards and finance screens repeatedly need sparklines, time series, funnels, comparison bars, legends, and no-data states | Raw Recharts composition inside ChartContainer | Publish chart recipes and defaults for sparkline, KPI trend, time series, bar comparison, funnel, legend, tooltip, empty, and loading states |
15
+ | P1 | Amount and currency field | Send money, FX quote, wallets, savings, billing, and checkout all need amount, currency, decimal, and locale behavior | Generic Input plus nearby Badge/Button | Add an `AmountInput` pattern with currency selector, precision rules, localized formatting, min/max, fees, and RTL QA |
16
+ | P2 | Structured commerce form recipes | Checkout and billing need address, card, delivery, tax, and order-summary structures | Generic Input, Checkbox, Card, and Divider composition | Document `AddressForm`, `PaymentMethod`, and `OrderSummary` patterns before considering dedicated components |
17
+ | P2 | Schedule and board patterns | Schedule planner, editorial calendar, hiring pipeline, project board, and room planner could only approximate their core layouts | Cards and lists arranged in local grids | Add accessible calendar/schedule and board patterns with keyboard navigation, overflow, selection, drag alternatives, and mobile behavior |
18
+ | P2 | Rich text and message composer | Shared inbox, conversation, email campaign, and content workflows need recipients, formatting, attachments, variables, and send state | Textarea, Toolbar, Tag, File Upload, and Button assembled locally | Define a `Composer` pattern with slots for recipients, toolbar, variable chips, attachments, drafts, validation, and send status |
19
+ | P2 | Media and asset browser | Product detail and content library need aspect-ratio thumbnails, selection, metadata, upload progress, and preview | Card, Aspect Ratio, File Upload, and generic image assets | Add `MediaCard`, selectable asset grid, and preview-detail patterns; keep storage and transformation product-owned |
20
+ | P2 | Status and health summary | Infrastructure, incidents, shipment, integrations, and widgets repeat status icon, message, metric, and history anatomy | Badge, Alert, Progress, and local icon wrappers | Add `StatusSummary` and `ServiceHealthRow` patterns with severity, timestamp, trend, actions, and accessible non-color cues |
21
+ | P3 | Map and spatial slot guidance | Shipment tracking and room planning cannot express a real map or floor plan with current components | List/detail summaries only | Document a neutral map/canvas host contract and overlay controls; keep the mapping engine and spatial assets outside the design system |
22
+ | P3 | Product illustration and empty-state asset guidance | Authentication, onboarding, commerce, and zero-data moments need richer owned visuals | One existing abstract image plus icon-led Empty State | Define approved illustration ratios, theming, cropping, alt-text, and loading rules; maintain real assets separately from component code |
23
+
24
+ ## What is not missing
25
+
26
+ Table, File Upload, Empty State, ChartContainer, Page Header, Steps, Sidebar, Modal, Tabs, Toolbar, and the core form controls already provide useful foundations. The friction above is primarily at the composition, recipe, and responsive-layout layers; duplicating those existing primitives would make the system harder to maintain.
27
+
28
+ ## Suggested sequence
29
+
30
+ 1. Stabilize layout primitives, StatCard, SummaryList, chart recipes, and AmountInput because they recur across the largest number of templates.
31
+ 2. Validate commerce forms, schedules/boards, Composer, media browser, and status summaries in two real product flows each.
32
+ 3. Keep map engines and illustration assets as integration guidance unless repeated product usage reveals a stable design-system API.
@@ -0,0 +1,59 @@
1
+ # Templates
2
+
3
+ Templates are Banhaten's composition tier: reusable page, flow, and widget starting points assembled from the existing token and component contracts. They sit above Components and Patterns, and below product-specific implementation.
4
+
5
+ The live catalog is available at `#templates` in the playground. It uses a text-first, single-column directory so full application screens are not compressed into competing thumbnails. Search, category, and type filters lead to a dedicated hash route for each template, where one design is shown at full content width with previous/next navigation, composition notes, and starter-code copying. Templates are examples rather than stable registry packages; product data, routing, validation, and domain behavior remain application-owned.
6
+
7
+ ## Tier boundaries
8
+
9
+ | Tier | Purpose | Examples |
10
+ | --- | --- | --- |
11
+ | Tokens | Visual decisions and modes | Color, type, spacing, radius, elevation |
12
+ | Components | Reusable interaction primitives | Button, Input, Table, Modal, Chart |
13
+ | Patterns | Repeated task-level combinations | Page Header, File Upload, Empty State, Steps |
14
+ | Templates | Page, flow, and widget starting points | Checkout, analytics dashboard, exchange-rate widget |
15
+ | Lab | Screenshot-driven visual and quality experiments | Background tests and comparison workspaces |
16
+
17
+ Templates do not introduce a second visual language. Every surface, border, state, radius, type style, spacing decision, and shadow resolves through Banhaten's semantic tokens or an existing component contract.
18
+
19
+ ## Research basis
20
+
21
+ The catalog uses the breadth and taxonomy of established libraries as research inputs, without copying their styling or exact layouts:
22
+
23
+ - [shadcn/ui Blocks](https://ui.shadcn.com/blocks) separates larger dashboard, authentication, and sidebar compositions from individual components.
24
+ - [Tailwind Plus Application UI](https://tailwindcss.com/plus/ui-blocks/application-ui), [Ecommerce](https://tailwindcss.com/plus/ui-blocks/ecommerce), and marketing collections cover task-specific sections and screens.
25
+ - [Material UI Templates](https://mui.com/material-ui/getting-started/templates/) includes sign-in, checkout, CRUD, dashboard, and marketing starting points.
26
+ - [Carbon Patterns](https://carbondesignsystem.com/patterns/overview/) defines patterns as reusable combinations that help users complete goals and flows.
27
+ - [Shopify App Home patterns](https://shopify.dev/docs/api/app-home/patterns) distinguishes full-page templates from smaller compositions.
28
+ - [Ant Design](https://ant.design/docs/spec/overview/) demonstrates both base components and business-oriented examples.
29
+
30
+ ## Catalog inventory
31
+
32
+ | Category | Type | Included templates |
33
+ | --- | --- | --- |
34
+ | Authentication | Flow | Centered sign in, Split sign in, Create account, Invite acceptance, Password recovery, Two-step verification |
35
+ | Dashboards | Page | Executive overview, Product analytics, Sales pulse, Support operations, Infrastructure health, Team workload |
36
+ | Finance | Flow | Wallet overview, Send money, Foreign exchange quote, Crypto portfolio, Card controls, Savings plan |
37
+ | Commerce | Page | Storefront overview, Product detail, Catalog manager, Cart summary, Checkout flow, Order tracking |
38
+ | Data | Page | Resource index, Resource detail, Data source browser, Import mapping, Audit log, Approval queue |
39
+ | Collaboration | Page | Team directory, Activity center, Shared inbox, Conversation detail, Project board, Meeting agenda |
40
+ | Operations | Page | Shipment tracking, Schedule planner, Incident response, Hiring pipeline, Benefits enrollment, Room planner |
41
+ | Settings & Admin | Page | Profile settings, Security settings, Billing settings, Notification preferences, Workspace members, Integrations hub |
42
+ | Marketing & Content | Page | Campaign overview, Email composer, Editorial calendar, Content library, Launch checklist, Customer story |
43
+ | Widgets | Widget | Metric comparison, Conversion funnel, Task progress, Exchange rate, Server status, Recent transactions |
44
+
45
+ Total: 60 templates across 10 categories.
46
+
47
+ ## Quality contract
48
+
49
+ - A template must remain legible in LTR and RTL and in light and dark modes.
50
+ - The catalog must show template names and descriptions as a directory; full template canvases appear only on their dedicated pages.
51
+ - Template chrome and previews use Banhaten tokens; raw colors, bespoke shadows, and copied external CSS are not allowed.
52
+ - Inputs and other form controls inherit Banhaten's default `lg` density. Compact controls are reserved for genuinely constrained desktop tables and toolbars, never as a way to squeeze a template into its preview.
53
+ - Product imagery must come from a real owned asset. Icons use the supported icon family.
54
+ - Visible controls in the gallery's main journey work: search, filters, pagination, preview, close, mode selection, and copy.
55
+ - Repeated composition friction is recorded in the [template gap audit](./template-gap-audit.md) before a new component or pattern is proposed.
56
+
57
+ ## Promotion path
58
+
59
+ A template can become an installable `registry:block` only after it has a stable public composition API, realistic data and empty/loading/error states, accessibility and direction tests, documentation, and evidence of reuse in more than one product context. Until then, the catalog remains an exploration and adoption aid rather than generated source ownership.
@@ -1,60 +1,72 @@
1
- # Token Governance
2
-
3
- Banhaten components must be built from Banhaten tokens. Component source may use:
4
-
5
- - Generated `--bh-*` semantic tokens.
6
- - System, typography, effect, and component variables compiled from their owned
7
- fragments under `tokens/source/` into the published `cssVariables` contract.
8
- - shadcn alias bridge variables such as `--background`, `--foreground`, and `--ring` only when they point back to Banhaten tokens.
9
- - Documented exception-ledger values when the value is external, brand-owned, or required by a third-party primitive API.
10
-
11
- Do not add raw component styling literals directly to `registry/components`:
12
-
13
- - Raw color literals.
14
- - Raw `px`, `rem`, or `ms` values outside approved media-query breakpoints.
15
- - Raw opacity utilities such as `opacity-0` or `opacity-100`.
16
- - Raw z-index, ring width, duration, icon size, or compact spacing utilities.
17
- - Component-local `color-mix()` percentages.
18
- - Legacy `--ds-*` fallbacks.
19
-
20
- `npm run tokens:check` enforces the generated CSS contract and component token usage.
21
-
22
- Structured tokens and aliases are authored in the domain and component-owned
23
- fragments under `tokens/source/`. `tokens/banhaten.tokens.json` is output-only
24
- and deterministically compiled from that manifest. Authored Tailwind mappings,
25
- keyframes, global and accessibility rules, and typography utilities live in
26
- `tokens/banhaten.utilities.css`. The distributable
27
- `registry/styles/globals.css` is regenerated from the compiled token catalog and
28
- that authored CSS source.
29
-
30
- The generator emits the complete default-theme graph once, then emits only declarations whose values differ for each alternate theme. Dark mode and alternate themes inherit unchanged scoped aliases through the cascade. This keeps the live graph auditable without duplicating identical declarations.
31
-
32
- The default appearance deliberately composes two concerns: `blue` owns brand
33
- roles and `gray` owns the neutral ramp. As a result, default product surfaces
34
- are achromatic, while links, focus states, and primary actions remain blue.
35
- `cssContract.defaultTheme` and `cssContract.defaultNeutralTheme` record that
36
- composition. `npm run tokens:build` synchronizes it into the authored default
37
- theme and semantic color-mode values before compiling the public artifacts.
38
- Alternate brand themes keep their reviewed neutral ramps unless their source is
39
- explicitly changed.
40
-
41
- Color values are design-owned. The generated Color Contrast page reports failing combinations and recommendations, but automation must not silently change source colors. A color change requires an explicit design review and regeneration of the contrast baseline.
42
-
43
- ## Exception Ledger
44
-
45
- The following exceptions are allowed only in token generation or documented alias source, not directly in component implementation:
46
-
47
- | Exception | Reason | Owner |
48
- | --- | --- | --- |
49
- | Social provider marks | Apple, Facebook, Google, LinkedIn, Twitter, and WhatsApp colors and icon geometry must preserve provider identity; color must still flow through `currentColor` and Banhaten social variables. | Component alias source and social button source |
50
- | Payment or illustrative mark geometry | Some Figma-matched marks use fractional geometry that cannot be expressed cleanly through the global spacing scale. | Component alias source |
51
- | Effect and shadow stops | The supplied token zips do not include effect tokens, so component shadow aliases document those values. | Component alias source |
52
- | Media-query breakpoints | CSS custom properties are not reliable in media-query conditions. | Component CSS with local comment |
53
- | Radix numeric offsets | Some Radix APIs require JavaScript numbers instead of CSS variables; comments must pair each number with its matching token. | Component source |
54
- | Expanded composition widths | Larger app compositions may expose public layout aliases or documentation-only layout aliases. | Expanded component docs |
55
-
56
- If a new literal is needed, add it to an alias or the exception ledger before using it.
57
-
58
- ## Public Override Surface
59
-
60
- Stable override points are CSS variables emitted in `registry/styles/globals.css`. Prefer overriding component aliases rather than editing installed component source. Product teams should use local wrapper components for behavior and keep Banhaten files generated-owned.
1
+ # Token Governance
2
+
3
+ Banhaten components must be built from Banhaten tokens. Component source may use:
4
+
5
+ - Generated `--bh-*` semantic tokens.
6
+ - System, typography, effect, and component variables compiled from their owned
7
+ fragments under `tokens/source/` into the published `cssVariables` contract.
8
+ - shadcn alias bridge variables such as `--background`, `--foreground`, and `--ring` only when they point back to Banhaten tokens.
9
+ - Documented exception-ledger values when the value is external, brand-owned, or required by a third-party primitive API.
10
+
11
+ Do not add raw component styling literals directly to `registry/components`:
12
+
13
+ - Raw color literals.
14
+ - Raw `px`, `rem`, or `ms` values outside approved media-query breakpoints.
15
+ - Raw opacity utilities such as `opacity-0` or `opacity-100`.
16
+ - Raw z-index, ring width, duration, icon size, or compact spacing utilities.
17
+ - Component-local `color-mix()` percentages.
18
+ - Legacy `--ds-*` fallbacks.
19
+
20
+ `npm run tokens:check` enforces the public token schema, generated CSS contract,
21
+ and component token usage. `schema/tokens.schema.json#/$defs/cssVariableName`
22
+ owns the naming rule for published variables and alias targets: `--bh-*` and
23
+ `--elevation-*`. The compiler, CSS generator, component metadata scanner, and CSS
24
+ reference checks share that contract through `scripts/token-schema.mjs`.
25
+ Compilation and direct CSS generation validate the full catalog before comparing
26
+ or writing artifacts, so schema failures stop both `tokens:check` and
27
+ `contracts:check`.
28
+
29
+ Structured tokens and aliases are authored in the domain and component-owned
30
+ fragments under `tokens/source/`. `tokens/banhaten.tokens.json` is output-only
31
+ and deterministically compiled from that manifest. Authored Tailwind mappings,
32
+ keyframes, global and accessibility rules, and typography utilities live in
33
+ `tokens/banhaten.utilities.css`. The distributable
34
+ `registry/styles/globals.css` is regenerated from the compiled token catalog and
35
+ that authored CSS source.
36
+
37
+ Each theme boundary emits its complete palette, semantic aliases, effects, and
38
+ dependent component aliases. Dark mode rebinds the semantic and component graph
39
+ both on `.dark` elements and on themed descendants. CSS custom properties inherit
40
+ computed values, so identical `var()` declarations must be repeated at these
41
+ boundaries to resolve against the local theme. Other typography and layout tokens
42
+ retain their existing inheritance behavior. The token contract check verifies
43
+ these graphs for every supported light and dark theme scope.
44
+
45
+ The default appearance uses `gray` for both brand roles and the neutral ramp.
46
+ As a result, product surfaces, links, focus states, and primary actions are
47
+ monochrome by default. `cssContract.defaultTheme` and
48
+ `cssContract.defaultNeutralTheme` record that composition. `npm run
49
+ tokens:build` synchronizes it into the authored default theme and semantic
50
+ color-mode values before compiling the public artifacts. Alternate brand themes
51
+ keep their reviewed neutral ramps unless their source is explicitly changed.
52
+
53
+ Color values are design-owned. The generated Color Contrast page reports failing combinations and recommendations, but automation must not silently change source colors. A color change requires an explicit design review and regeneration of the contrast baseline.
54
+
55
+ ## Exception Ledger
56
+
57
+ The following exceptions are allowed only in token generation or documented alias source, not directly in component implementation:
58
+
59
+ | Exception | Reason | Owner |
60
+ | --- | --- | --- |
61
+ | Social provider marks | Apple, Facebook, Google, LinkedIn, Twitter, and WhatsApp colors and icon geometry must preserve provider identity; color must still flow through `currentColor` and Banhaten social variables. | Component alias source and social button source |
62
+ | Payment or illustrative mark geometry | Some Figma-matched marks use fractional geometry that cannot be expressed cleanly through the global spacing scale. | Component alias source |
63
+ | Effect and shadow stops | The supplied token zips do not include effect tokens, so component shadow aliases document those values. | Component alias source |
64
+ | Media-query breakpoints | CSS custom properties are not reliable in media-query conditions. | Component CSS with local comment |
65
+ | Radix numeric offsets | Some Radix APIs require JavaScript numbers instead of CSS variables; comments must pair each number with its matching token. | Component source |
66
+ | Expanded composition widths | Larger app compositions may expose public layout aliases or documentation-only layout aliases. | Expanded component docs |
67
+
68
+ If a new literal is needed, add it to an alias or the exception ledger before using it.
69
+
70
+ ## Public Override Surface
71
+
72
+ Stable override points are CSS variables emitted in `registry/styles/globals.css`. Prefer overriding component aliases rather than editing installed component source. Product teams should use local wrapper components for behavior and keep Banhaten files generated-owned.
package/package.json CHANGED
@@ -1,98 +1,98 @@
1
- {
2
- "name": "banhaten",
3
- "version": "0.3.0",
4
- "description": "Banhaten design system: an Arabic and English-first React design system with shadcn-style component installation.",
5
- "type": "module",
6
- "bin": {
7
- "banhaten": "src/cli/index.js"
8
- },
9
- "files": [
10
- "src",
11
- "registry/index.json",
12
- "registry/component-contract.json",
13
- "registry/components",
14
- "registry/examples",
15
- "registry/guidance",
16
- "registry/hooks",
17
- "registry/styles",
18
- "registry/utils",
19
- "registry/assets/activity-feed-avatar.png",
20
- "registry/assets/avatars/avatar-01.jpg",
21
- "registry/assets/images/art-01.jpg",
22
- "registry.json",
23
- "tokens/banhaten.tokens.json",
24
- "schema",
25
- "docs",
26
- "banhaten.config.example.json",
27
- "README.md",
28
- "CHANGELOG.md",
29
- "CONTRIBUTING.md",
30
- "SECURITY.md",
31
- "LICENSE"
32
- ],
33
- "scripts": {
34
- "build": "npm --prefix playground ci --include=dev --include=optional && npm --prefix playground run build",
35
- "build:railway": "npm --prefix playground ci --include=dev --include=optional && npm --prefix playground run build:railway",
36
- "start": "node playground/scripts/serve-static.mjs playground/dist",
37
- "check": "node --check src/cli/index.js && node --check src/cli/command-line.js && node --check src/cli/doctor.js && node --check src/cli/config-editors.js && node --check src/cli/source-scanner.js && node --check src/cli/jsonc.js && node --check src/cli/vite-config.js && node --check src/cli/install-plan.js && node --check src/cli/install-receipt.js && node --check src/cli/package-install-state.js && node --check src/cli/package-manager.js && node --check src/cli/package-plan.js && node --check src/cli/package-version.js && node --check scripts/compile-token-catalog.mjs && node --check scripts/sync-default-theme-neutral-values.mjs && node --check scripts/token-catalog-test.mjs && node --check scripts/registry-catalog.mjs && node --check scripts/generate-registry-index.mjs && node --check scripts/generate-shadcn-registry.mjs && node --check scripts/normalize-component-docs.mjs && node --check scripts/package-artifact.mjs && node --check scripts/check-package-contents.mjs && node --check scripts/select-react-compatibility.mjs && npm run contracts:check && npm run cli:test && npm run tokens:check && npm run components:ownership:check && npm run registry:check && npm run docs:check && npm run package:check && npm run playground:build && npm run playground:test:browser && npm run playground:audit",
38
- "contracts:check": "node scripts/validate-contracts.mjs",
39
- "cli:test": "node scripts/cli-argument-test.mjs && node scripts/cli-dependency-test.mjs && node scripts/cli-install-plan-test.mjs && node scripts/cli-integration-test.mjs && node scripts/cli-doctor-test.mjs",
40
- "playground:build": "npm --prefix playground run build",
41
- "playground:dev": "npm --prefix playground run dev",
42
- "playground:test": "npm --prefix playground run test",
43
- "playground:test:browser": "npm --prefix playground run test:browser",
44
- "playground:audit": "npm --prefix playground audit --audit-level=high",
45
- "package:check": "node scripts/generate-registry-index.mjs --check && node scripts/compile-token-catalog.mjs --check && node scripts/check-package-contents.mjs",
46
- "registry:build": "node scripts/generate-registry-index.mjs --write",
47
- "registry:check": "node scripts/generate-registry-index.mjs --check && node scripts/check-registry-mirrors.mjs && node scripts/generate-shadcn-registry.mjs --check && node scripts/registry-runtime-exports-test.mjs && node scripts/check-isolated-registry-installs.mjs --packed",
48
- "registry:export": "node scripts/generate-registry-index.mjs --write && node scripts/generate-shadcn-registry.mjs --write",
49
- "registry:exports": "node scripts/check-isolated-registry-installs.mjs --write-exports",
50
- "registry:sync": "node scripts/check-registry-mirrors.mjs --write",
51
- "components:tokens:check": "node scripts/check-component-token-usage.mjs",
52
- "components:ownership:check": "npm --prefix playground run test:ownership",
53
- "components:tokens:metadata": "node scripts/sync-component-token-metadata.mjs",
54
- "docs:check": "node scripts/check-component-docs.mjs && node scripts/normalize-component-docs.mjs",
55
- "docs:normalize": "node scripts/normalize-component-docs.mjs --write",
56
- "smoke": "node src/cli/index.js list",
57
- "tokens:aliases:check": "node scripts/sync-default-theme-neutral-values.mjs",
58
- "tokens:aliases:sync": "node scripts/sync-default-theme-neutral-values.mjs --write",
59
- "tokens:build": "npm run tokens:aliases:sync && node scripts/compile-token-catalog.mjs --write && node scripts/generate-token-css.mjs --write",
60
- "tokens:check": "npm run tokens:aliases:check && node scripts/compile-token-catalog.mjs --check && node scripts/token-catalog-test.mjs && node scripts/generate-token-css.mjs --check && node scripts/check-token-css-reproducibility.mjs && node scripts/check-token-contract.mjs && npm run components:tokens:check && npm run components:tokens:metadata"
61
- },
62
- "engines": {
63
- "node": ">=18.18"
64
- },
65
- "peerDependencies": {
66
- "react": "^18.2.0 || ^19.0.0",
67
- "react-dom": "^18.2.0 || ^19.0.0",
68
- "tailwindcss": "^4.0.0"
69
- },
70
- "keywords": [
71
- "banhaten",
72
- "design-system",
73
- "react",
74
- "shadcn",
75
- "rtl",
76
- "arabic",
77
- "components"
78
- ],
79
- "license": "MIT",
80
- "repository": {
81
- "type": "git",
82
- "url": "git+https://github.com/AhmadGalal85/Banhaten-design-system.git"
83
- },
84
- "bugs": {
85
- "url": "https://github.com/AhmadGalal85/Banhaten-design-system/issues"
86
- },
87
- "homepage": "https://github.com/AhmadGalal85/Banhaten-design-system/tree/main/docs",
88
- "directories": {
89
- "doc": "docs"
90
- },
91
- "author": "Ahmad Galal",
92
- "dependencies": {
93
- "ajv": "^8.20.0",
94
- "minimatch": "^10.2.5",
95
- "semver": "^7.8.5",
96
- "yaml": "^2.9.0"
97
- }
98
- }
1
+ {
2
+ "name": "banhaten",
3
+ "version": "0.5.0",
4
+ "description": "Banhaten design system: an Arabic and English-first React design system with shadcn-style component installation.",
5
+ "type": "module",
6
+ "bin": {
7
+ "banhaten": "src/cli/index.js"
8
+ },
9
+ "files": [
10
+ "src",
11
+ "registry/index.json",
12
+ "registry/component-contract.json",
13
+ "registry/components",
14
+ "registry/examples",
15
+ "registry/guidance",
16
+ "registry/hooks",
17
+ "registry/styles",
18
+ "registry/utils",
19
+ "registry/assets/activity-feed-avatar.png",
20
+ "registry/assets/avatars/avatar-01.jpg",
21
+ "registry/assets/images/art-01.jpg",
22
+ "registry.json",
23
+ "tokens/banhaten.tokens.json",
24
+ "schema",
25
+ "docs",
26
+ "banhaten.config.example.json",
27
+ "README.md",
28
+ "CHANGELOG.md",
29
+ "CONTRIBUTING.md",
30
+ "SECURITY.md",
31
+ "LICENSE"
32
+ ],
33
+ "scripts": {
34
+ "build": "npm --prefix playground ci --include=dev --include=optional && npm --prefix playground run build",
35
+ "build:railway": "npm --prefix playground ci --include=dev --include=optional && npm --prefix playground run build:railway",
36
+ "start": "node playground/scripts/serve-static.mjs playground/dist",
37
+ "check": "node --check src/cli/index.js && node --check src/cli/command-line.js && node --check src/cli/doctor.js && node --check src/cli/config-editors.js && node --check src/cli/source-scanner.js && node --check src/cli/jsonc.js && node --check src/cli/vite-config.js && node --check src/cli/install-plan.js && node --check src/cli/install-receipt.js && node --check src/cli/package-install-state.js && node --check src/cli/package-manager.js && node --check src/cli/package-plan.js && node --check src/cli/package-version.js && node --check scripts/compile-token-catalog.mjs && node --check scripts/sync-default-theme-neutral-values.mjs && node --check scripts/token-catalog-test.mjs && node --check scripts/registry-catalog.mjs && node --check scripts/generate-registry-index.mjs && node --check scripts/generate-shadcn-registry.mjs && node --check scripts/normalize-component-docs.mjs && node --check scripts/package-artifact.mjs && node --check scripts/check-package-contents.mjs && node --check scripts/select-react-compatibility.mjs && npm run contracts:check && npm run cli:test && npm run tokens:check && npm run components:ownership:check && npm run registry:check && npm run docs:check && npm run package:check && npm run playground:build && npm run playground:test:browser && npm run playground:audit",
38
+ "contracts:check": "node scripts/validate-contracts.mjs",
39
+ "cli:test": "node scripts/cli-argument-test.mjs && node scripts/cli-file-transaction-test.mjs && node scripts/cli-dependency-test.mjs && node scripts/cli-install-plan-test.mjs && node scripts/cli-integration-test.mjs && node scripts/cli-doctor-test.mjs",
40
+ "playground:build": "npm --prefix playground run build",
41
+ "playground:dev": "npm --prefix playground run dev",
42
+ "playground:test": "npm --prefix playground run test",
43
+ "playground:test:browser": "npm --prefix playground run test:browser",
44
+ "playground:audit": "npm --prefix playground audit --audit-level=high",
45
+ "package:check": "node scripts/generate-registry-index.mjs --check && node scripts/compile-token-catalog.mjs --check && node scripts/check-package-contents.mjs",
46
+ "registry:build": "node scripts/generate-registry-index.mjs --write",
47
+ "registry:check": "node scripts/generate-registry-index.mjs --check && node scripts/check-registry-mirrors.mjs && node scripts/generate-shadcn-registry.mjs --check && node scripts/registry-runtime-exports-test.mjs && node scripts/check-isolated-registry-installs.mjs --packed",
48
+ "registry:export": "node scripts/generate-registry-index.mjs --write && node scripts/generate-shadcn-registry.mjs --write",
49
+ "registry:exports": "node scripts/check-isolated-registry-installs.mjs --write-exports",
50
+ "registry:sync": "node scripts/check-registry-mirrors.mjs --write",
51
+ "components:tokens:check": "node scripts/check-component-token-usage.mjs",
52
+ "components:ownership:check": "npm --prefix playground run test:ownership",
53
+ "components:tokens:metadata": "node scripts/sync-component-token-metadata.mjs",
54
+ "docs:check": "node scripts/check-component-docs.mjs && node scripts/normalize-component-docs.mjs",
55
+ "docs:normalize": "node scripts/normalize-component-docs.mjs --write",
56
+ "smoke": "node src/cli/index.js list",
57
+ "tokens:aliases:check": "node scripts/sync-default-theme-neutral-values.mjs",
58
+ "tokens:aliases:sync": "node scripts/sync-default-theme-neutral-values.mjs --write",
59
+ "tokens:build": "npm run tokens:aliases:sync && node scripts/compile-token-catalog.mjs --write && node scripts/generate-token-css.mjs --write",
60
+ "tokens:check": "npm run tokens:aliases:check && node scripts/compile-token-catalog.mjs --check && node scripts/token-catalog-test.mjs && node scripts/generate-token-css.mjs --check && node scripts/check-token-css-reproducibility.mjs && node scripts/check-token-contract.mjs && npm run components:tokens:check && npm run components:tokens:metadata"
61
+ },
62
+ "engines": {
63
+ "node": ">=18.18"
64
+ },
65
+ "peerDependencies": {
66
+ "react": "^18.2.0 || ^19.0.0",
67
+ "react-dom": "^18.2.0 || ^19.0.0",
68
+ "tailwindcss": "^4.0.0"
69
+ },
70
+ "keywords": [
71
+ "banhaten",
72
+ "design-system",
73
+ "react",
74
+ "shadcn",
75
+ "rtl",
76
+ "arabic",
77
+ "components"
78
+ ],
79
+ "license": "MIT",
80
+ "repository": {
81
+ "type": "git",
82
+ "url": "git+https://github.com/AhmadGalal85/Banhaten-design-system.git"
83
+ },
84
+ "bugs": {
85
+ "url": "https://github.com/AhmadGalal85/Banhaten-design-system/issues"
86
+ },
87
+ "homepage": "https://github.com/AhmadGalal85/Banhaten-design-system/tree/main/docs",
88
+ "directories": {
89
+ "doc": "docs"
90
+ },
91
+ "author": "Ahmad Galal",
92
+ "dependencies": {
93
+ "ajv": "^8.20.0",
94
+ "minimatch": "^10.2.5",
95
+ "semver": "^7.8.5",
96
+ "yaml": "^2.9.0"
97
+ }
98
+ }
@@ -1,40 +1,40 @@
1
- {
2
- "capabilities": {
3
- "actions": "Actions",
4
- "alignments": "Alignments",
5
- "breakpoints": "Breakpoints",
6
- "cardPositions": "Card Positions",
7
- "colors": "Colors",
8
- "controlPositions": "Control Positions",
9
- "densities": "Densities",
10
- "directions": "Directions",
11
- "features": "Features",
12
- "forms": "Forms",
13
- "indicators": "Indicators",
14
- "intents": "Intents",
15
- "itemKinds": "Item Kinds",
16
- "itemTypes": "Item Types",
17
- "kinds": "Kinds",
18
- "labelPositions": "Label Positions",
19
- "layouts": "Layouts",
20
- "modes": "Modes",
21
- "offsets": "Offsets",
22
- "options": "Options",
23
- "orientations": "Orientations",
24
- "platforms": "Platforms",
25
- "pointerPositions": "Pointer Positions",
26
- "selectionTypes": "Selection Types",
27
- "shapes": "Shapes",
28
- "sides": "Sides",
29
- "sizes": "Sizes",
30
- "states": "States",
31
- "statusColors": "Status Colors",
32
- "styles": "Styles",
33
- "tokens": "Tokens",
34
- "tones": "Tones",
35
- "types": "Types",
36
- "valueModes": "Value Modes",
37
- "variants": "Variants",
38
- "widths": "Widths"
39
- }
40
- }
1
+ {
2
+ "capabilities": {
3
+ "actions": "Actions",
4
+ "alignments": "Alignments",
5
+ "breakpoints": "Breakpoints",
6
+ "cardPositions": "Card Positions",
7
+ "colors": "Colors",
8
+ "controlPositions": "Control Positions",
9
+ "densities": "Densities",
10
+ "directions": "Directions",
11
+ "features": "Features",
12
+ "forms": "Forms",
13
+ "indicators": "Indicators",
14
+ "intents": "Intents",
15
+ "itemKinds": "Item Kinds",
16
+ "itemTypes": "Item Types",
17
+ "kinds": "Kinds",
18
+ "labelPositions": "Label Positions",
19
+ "layouts": "Layouts",
20
+ "modes": "Modes",
21
+ "offsets": "Offsets",
22
+ "options": "Options",
23
+ "orientations": "Orientations",
24
+ "platforms": "Platforms",
25
+ "pointerPositions": "Pointer Positions",
26
+ "selectionTypes": "Selection Types",
27
+ "shapes": "Shapes",
28
+ "sides": "Sides",
29
+ "sizes": "Sizes",
30
+ "states": "States",
31
+ "statusColors": "Status Colors",
32
+ "styles": "Styles",
33
+ "tokens": "Tokens",
34
+ "tones": "Tones",
35
+ "types": "Types",
36
+ "valueModes": "Value Modes",
37
+ "variants": "Variants",
38
+ "widths": "Widths"
39
+ }
40
+ }