banhaten 0.4.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 -100
  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 -245
  16. package/docs/design-system/component-quality-audit-2026-08-20.md +225 -225
  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 +97 -97
  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 +88 -88
  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 +176 -175
  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 -81
  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 +114 -60
  55. package/docs/design-system/components/item.md +59 -59
  56. package/docs/design-system/components/kbd.md +51 -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 +110 -99
  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 -65
  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 -74
  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 -59
  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 -454
  130. package/registry/components/autocomplete.tsx +598 -651
  131. package/registry/components/avatar.tsx +385 -385
  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 -1289
  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 -60
  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 -260
  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 -135
  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 -606
  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 -979
  193. package/registry/components/item.tsx +189 -189
  194. package/registry/components/kbd.tsx +246 -245
  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 -560
  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 -676
  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 -1230
  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 -235
  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 -12
  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 -101
  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 +1403 -155
  325. package/registry/styles/globals.css +946 -1088
  326. package/registry.json +361 -8
  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 +306 -192
package/registry.json CHANGED
@@ -27,6 +27,26 @@
27
27
  "type": "registry:hook",
28
28
  "target": "@hooks/use-direction.ts"
29
29
  },
30
+ {
31
+ "path": "registry/hooks/use-controllable-state.ts",
32
+ "type": "registry:hook",
33
+ "target": "@hooks/use-controllable-state.ts"
34
+ },
35
+ {
36
+ "path": "registry/hooks/use-listbox-navigation.ts",
37
+ "type": "registry:hook",
38
+ "target": "@hooks/use-listbox-navigation.ts"
39
+ },
40
+ {
41
+ "path": "registry/hooks/use-motion-end.ts",
42
+ "type": "registry:hook",
43
+ "target": "@hooks/use-motion-end.ts"
44
+ },
45
+ {
46
+ "path": "registry/hooks/use-reduced-motion.ts",
47
+ "type": "registry:hook",
48
+ "target": "@hooks/use-reduced-motion.ts"
49
+ },
30
50
  {
31
51
  "path": "registry/guidance/USAGE.md",
32
52
  "type": "registry:file",
@@ -224,19 +244,98 @@
224
244
  "name": "chart",
225
245
  "type": "registry:component",
226
246
  "title": "Chart",
227
- "description": "Recharts wrapper with Banhaten chart color tokens, responsive container, tooltip content, legend content, and config-driven color variables.",
247
+ "description": "Eight token-driven ECharts families and 18 ready-made chart blocks, with responsive SVG rendering, theme-aware typography, tooltips, legends, brushes, and compatible Recharts wrappers.",
228
248
  "author": "Ahmad Galal",
229
249
  "registryDependencies": [
230
- "base"
250
+ "base",
251
+ "button",
252
+ "progress"
231
253
  ],
232
254
  "dependencies": [
233
- "recharts@^3.9.2"
255
+ "recharts@^3.9.2",
256
+ "echarts@^6.1.0",
257
+ "lucide-react@^1.17.0"
234
258
  ],
235
259
  "files": [
236
260
  {
237
261
  "path": "registry/components/chart.tsx",
238
262
  "type": "registry:component",
239
263
  "target": "@ui/chart.tsx"
264
+ },
265
+ {
266
+ "path": "registry/guidance/charts.LICENSE.txt",
267
+ "type": "registry:file",
268
+ "target": "@ui/charts.LICENSE.txt"
269
+ },
270
+ {
271
+ "path": "registry/components/chart-block-data.ts",
272
+ "type": "registry:component",
273
+ "target": "@ui/chart-block-data.ts"
274
+ },
275
+ {
276
+ "path": "registry/components/chart-block.css",
277
+ "type": "registry:style",
278
+ "target": "@ui/chart-block.css"
279
+ },
280
+ {
281
+ "path": "registry/components/chart-block.tsx",
282
+ "type": "registry:component",
283
+ "target": "@ui/chart-block.tsx"
284
+ },
285
+ {
286
+ "path": "registry/components/chart-interactions.ts",
287
+ "type": "registry:component",
288
+ "target": "@ui/chart-interactions.ts"
289
+ },
290
+ {
291
+ "path": "registry/components/chart-options.cartesian.ts",
292
+ "type": "registry:component",
293
+ "target": "@ui/chart-options.cartesian.ts"
294
+ },
295
+ {
296
+ "path": "registry/components/chart-options.paint.ts",
297
+ "type": "registry:component",
298
+ "target": "@ui/chart-options.paint.ts"
299
+ },
300
+ {
301
+ "path": "registry/components/chart-options.parts.ts",
302
+ "type": "registry:component",
303
+ "target": "@ui/chart-options.parts.ts"
304
+ },
305
+ {
306
+ "path": "registry/components/chart-options.radial.ts",
307
+ "type": "registry:component",
308
+ "target": "@ui/chart-options.radial.ts"
309
+ },
310
+ {
311
+ "path": "registry/components/chart-options.ts",
312
+ "type": "registry:component",
313
+ "target": "@ui/chart-options.ts"
314
+ },
315
+ {
316
+ "path": "registry/components/chart-options.types.ts",
317
+ "type": "registry:component",
318
+ "target": "@ui/chart-options.types.ts"
319
+ },
320
+ {
321
+ "path": "registry/components/data-chart.tsx",
322
+ "type": "registry:component",
323
+ "target": "@ui/data-chart.tsx"
324
+ },
325
+ {
326
+ "path": "registry/components/echart-theme.ts",
327
+ "type": "registry:component",
328
+ "target": "@ui/echart-theme.ts"
329
+ },
330
+ {
331
+ "path": "registry/components/echart.css",
332
+ "type": "registry:style",
333
+ "target": "@ui/echart.css"
334
+ },
335
+ {
336
+ "path": "registry/components/echart.tsx",
337
+ "type": "registry:component",
338
+ "target": "@ui/echart.tsx"
240
339
  }
241
340
  ]
242
341
  },
@@ -548,7 +647,7 @@
548
647
  "name": "collapsible",
549
648
  "type": "registry:component",
550
649
  "title": "Collapsible",
551
- "description": "Radix Collapsible wrapper for disclosure sections with tokenized trigger, icon rotation, and content slots.",
650
+ "description": "Radix Collapsible wrapper for disclosure sections with tokenized trigger, icon rotation, content slots, and an unstyled animated panel.",
552
651
  "author": "Ahmad Galal",
553
652
  "registryDependencies": [
554
653
  "base"
@@ -656,7 +755,7 @@
656
755
  "name": "toolbar",
657
756
  "type": "registry:component",
658
757
  "title": "Toolbar",
659
- "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.",
758
+ "description": "Figma Filter Toolbar layout primitive with native Tab-order group semantics, eight filter/action styles, search fields, select triggers, icon actions, chips, selected-count badges, desktop/mobile wrapping, and RTL-safe composition.",
660
759
  "author": "Ahmad Galal",
661
760
  "registryDependencies": [
662
761
  "base",
@@ -701,7 +800,7 @@
701
800
  "name": "input",
702
801
  "type": "registry:component",
703
802
  "title": "Input",
704
- "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.",
803
+ "description": "Tokenized input field with native quantity stepping, action-button contracts, semantic control density, labels, helper and error text, icons, shortcuts, add-ons, tags, default and soft styles, and RTL states.",
705
804
  "author": "Ahmad Galal",
706
805
  "registryDependencies": [
707
806
  "base",
@@ -925,7 +1024,7 @@
925
1024
  "name": "sidebar",
926
1025
  "type": "registry:component",
927
1026
  "title": "Sidebar",
928
- "description": "Figma-aligned application sidebar with 280px expanded and 48px collapsed shells, brand and workspace headers, search and actions, default/avatar/nested/tree menu variants, badges, group actions, user footers, controlled state, tooltips, logical placement, and RTL mirroring.",
1027
+ "description": "Figma-aligned application sidebar with a tokenized 900px minimum height, staged motion between 280px expanded and 48px collapsed shells, brand and workspace headers, search and actions, default/avatar/nested/tree menu variants, badges, group actions, user footers with hover identity previews, controlled state, tooltips, logical placement, and RTL mirroring.",
929
1028
  "author": "Ahmad Galal",
930
1029
  "registryDependencies": [
931
1030
  "base",
@@ -1490,7 +1589,7 @@
1490
1589
  "name": "page-header",
1491
1590
  "type": "registry:block",
1492
1591
  "title": "Page Header",
1493
- "description": "Expanded page header composition with breadcrumbs, metadata, description copy, action groups, responsive layout, and optional local tabs.",
1592
+ "description": "Expanded page header composition with breadcrumbs, metadata, description copy, action groups, responsive layout, and content-safe scrollable local tabs.",
1494
1593
  "author": "Ahmad Galal",
1495
1594
  "registryDependencies": [
1496
1595
  "base",
@@ -1615,6 +1714,260 @@
1615
1714
  "target": "@ui/expanded/Timeline.tsx"
1616
1715
  }
1617
1716
  ]
1717
+ },
1718
+ {
1719
+ "name": "shimmer-text",
1720
+ "type": "registry:component",
1721
+ "title": "Shimmer Text",
1722
+ "description": "Text with a soft brightness valley sweeping through it in reading direction, for labels of work in progress such as syncing, reading, or thinking.",
1723
+ "author": "Ahmad Galal",
1724
+ "registryDependencies": [
1725
+ "base"
1726
+ ],
1727
+ "dependencies": [],
1728
+ "files": [
1729
+ {
1730
+ "path": "registry/components/shimmer-text.css",
1731
+ "type": "registry:style",
1732
+ "target": "@ui/shimmer-text.css"
1733
+ },
1734
+ {
1735
+ "path": "registry/components/shimmer-text.tsx",
1736
+ "type": "registry:component",
1737
+ "target": "@ui/shimmer-text.tsx"
1738
+ }
1739
+ ]
1740
+ },
1741
+ {
1742
+ "name": "thinking-state",
1743
+ "type": "registry:component",
1744
+ "title": "Thinking State",
1745
+ "description": "Minimal shimmering status label that signals an agent is working before its first token arrives.",
1746
+ "author": "Ahmad Galal",
1747
+ "registryDependencies": [
1748
+ "base",
1749
+ "shimmer-text"
1750
+ ],
1751
+ "dependencies": [],
1752
+ "files": [
1753
+ {
1754
+ "path": "registry/components/thinking-state.css",
1755
+ "type": "registry:style",
1756
+ "target": "@ui/thinking-state.css"
1757
+ },
1758
+ {
1759
+ "path": "registry/components/thinking-state.tsx",
1760
+ "type": "registry:component",
1761
+ "target": "@ui/thinking-state.tsx"
1762
+ }
1763
+ ]
1764
+ },
1765
+ {
1766
+ "name": "thinking-reasoning",
1767
+ "type": "registry:component",
1768
+ "title": "Thinking Reasoning",
1769
+ "description": "Animated, collapsible reasoning block: a shimmering label reveals sentences as they arrive, auto-scrolls behind soft fades, then folds into a Thought for Ns summary that unfolds on demand.",
1770
+ "author": "Ahmad Galal",
1771
+ "registryDependencies": [
1772
+ "base",
1773
+ "collapsible",
1774
+ "shimmer-text"
1775
+ ],
1776
+ "dependencies": [
1777
+ "lucide-react@^1.17.0"
1778
+ ],
1779
+ "files": [
1780
+ {
1781
+ "path": "registry/components/thinking-reasoning.css",
1782
+ "type": "registry:style",
1783
+ "target": "@ui/thinking-reasoning.css"
1784
+ },
1785
+ {
1786
+ "path": "registry/components/thinking-reasoning.tsx",
1787
+ "type": "registry:component",
1788
+ "target": "@ui/thinking-reasoning.tsx"
1789
+ }
1790
+ ]
1791
+ },
1792
+ {
1793
+ "name": "streaming-text",
1794
+ "type": "registry:component",
1795
+ "title": "Streaming Text",
1796
+ "description": "Token-by-token text with a slim caret that stays solid while streaming and blinks once the response is complete, plus a useTypewriter hook that reveals a finished text locally.",
1797
+ "author": "Ahmad Galal",
1798
+ "registryDependencies": [
1799
+ "base"
1800
+ ],
1801
+ "dependencies": [],
1802
+ "files": [
1803
+ {
1804
+ "path": "registry/components/streaming-text.css",
1805
+ "type": "registry:style",
1806
+ "target": "@ui/streaming-text.css"
1807
+ },
1808
+ {
1809
+ "path": "registry/components/streaming-text.tsx",
1810
+ "type": "registry:component",
1811
+ "target": "@ui/streaming-text.tsx"
1812
+ }
1813
+ ]
1814
+ },
1815
+ {
1816
+ "name": "inline-citations",
1817
+ "type": "registry:component",
1818
+ "title": "Inline Citations",
1819
+ "description": "Prose composed with superscript citation marks that link to numbered sources and reveal the reference name on hover, plus a compact source list with host and external-link affordance.",
1820
+ "author": "Ahmad Galal",
1821
+ "registryDependencies": [
1822
+ "base",
1823
+ "tooltip"
1824
+ ],
1825
+ "dependencies": [
1826
+ "lucide-react@^1.17.0"
1827
+ ],
1828
+ "files": [
1829
+ {
1830
+ "path": "registry/components/inline-citations.css",
1831
+ "type": "registry:style",
1832
+ "target": "@ui/inline-citations.css"
1833
+ },
1834
+ {
1835
+ "path": "registry/components/inline-citations.tsx",
1836
+ "type": "registry:component",
1837
+ "target": "@ui/inline-citations.tsx"
1838
+ }
1839
+ ]
1840
+ },
1841
+ {
1842
+ "name": "rolling-count",
1843
+ "type": "registry:component",
1844
+ "title": "Rolling Count",
1845
+ "description": "Tabular figures that roll each changed character into place like an odometer while assistive technology reads the plain value.",
1846
+ "author": "Ahmad Galal",
1847
+ "registryDependencies": [
1848
+ "base"
1849
+ ],
1850
+ "dependencies": [],
1851
+ "files": [
1852
+ {
1853
+ "path": "registry/components/rolling-count.css",
1854
+ "type": "registry:style",
1855
+ "target": "@ui/rolling-count.css"
1856
+ },
1857
+ {
1858
+ "path": "registry/components/rolling-count.tsx",
1859
+ "type": "registry:component",
1860
+ "target": "@ui/rolling-count.tsx"
1861
+ }
1862
+ ]
1863
+ },
1864
+ {
1865
+ "name": "task-list",
1866
+ "type": "registry:component",
1867
+ "title": "Task List",
1868
+ "description": "Collapsible agent progress tracker with pending, active, and done rows, a header icon that moves from list to pie to check, and rolling counters, plus parts that compose static and folded lists.",
1869
+ "author": "Ahmad Galal",
1870
+ "registryDependencies": [
1871
+ "base",
1872
+ "collapsible",
1873
+ "rolling-count",
1874
+ "shimmer-text"
1875
+ ],
1876
+ "dependencies": [
1877
+ "lucide-react@^1.17.0"
1878
+ ],
1879
+ "files": [
1880
+ {
1881
+ "path": "registry/components/task-list.css",
1882
+ "type": "registry:style",
1883
+ "target": "@ui/task-list.css"
1884
+ },
1885
+ {
1886
+ "path": "registry/components/task-list.tsx",
1887
+ "type": "registry:component",
1888
+ "target": "@ui/task-list.tsx"
1889
+ }
1890
+ ]
1891
+ },
1892
+ {
1893
+ "name": "agent-input",
1894
+ "type": "registry:component",
1895
+ "title": "Agent Input",
1896
+ "description": "Composable AI prompt field with an auto-growing editor, slash-command skill palette, skill and attachment chips, an add menu for files, skills, and models, prompt enhancement with a sweeping ring, and a send action.",
1897
+ "author": "Ahmad Galal",
1898
+ "registryDependencies": [
1899
+ "base",
1900
+ "button",
1901
+ "menu",
1902
+ "shimmer-text",
1903
+ "spinner",
1904
+ "tag"
1905
+ ],
1906
+ "dependencies": [
1907
+ "lucide-react@^1.17.0"
1908
+ ],
1909
+ "files": [
1910
+ {
1911
+ "path": "registry/components/agent-input.css",
1912
+ "type": "registry:style",
1913
+ "target": "@ui/agent-input.css"
1914
+ },
1915
+ {
1916
+ "path": "registry/components/agent-input.tsx",
1917
+ "type": "registry:component",
1918
+ "target": "@ui/agent-input.tsx"
1919
+ },
1920
+ {
1921
+ "path": "registry/components/agent-input-parts.tsx",
1922
+ "type": "registry:component",
1923
+ "target": "@ui/agent-input-parts.tsx"
1924
+ },
1925
+ {
1926
+ "path": "registry/components/agent-input-state.ts",
1927
+ "type": "registry:component",
1928
+ "target": "@ui/agent-input-state.ts"
1929
+ }
1930
+ ]
1931
+ },
1932
+ {
1933
+ "name": "approval-card",
1934
+ "type": "registry:component",
1935
+ "title": "Approval Card",
1936
+ "description": "Human-in-the-loop decision cards that pause the agent: ApprovalQuestions for up to a few questions, ApprovalCommand to approve a shell command, and ApprovalPlan to green-light a short plan with an optional auto-approve countdown, all built on the ApprovalFrame shell for custom decisions.",
1937
+ "author": "Ahmad Galal",
1938
+ "registryDependencies": [
1939
+ "base",
1940
+ "button",
1941
+ "kbd",
1942
+ "rolling-count",
1943
+ "task-list",
1944
+ "tooltip"
1945
+ ],
1946
+ "dependencies": [
1947
+ "lucide-react@^1.17.0"
1948
+ ],
1949
+ "files": [
1950
+ {
1951
+ "path": "registry/components/approval-card.css",
1952
+ "type": "registry:style",
1953
+ "target": "@ui/approval-card.css"
1954
+ },
1955
+ {
1956
+ "path": "registry/components/approval-card.tsx",
1957
+ "type": "registry:component",
1958
+ "target": "@ui/approval-card.tsx"
1959
+ },
1960
+ {
1961
+ "path": "registry/components/approval-frame.tsx",
1962
+ "type": "registry:component",
1963
+ "target": "@ui/approval-frame.tsx"
1964
+ },
1965
+ {
1966
+ "path": "registry/components/approval-questions.tsx",
1967
+ "type": "registry:component",
1968
+ "target": "@ui/approval-questions.tsx"
1969
+ }
1970
+ ]
1618
1971
  }
1619
1972
  ]
1620
1973
  }
@@ -1,51 +1,51 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "urn:banhaten:schema:config",
4
- "title": "Banhaten CLI config",
5
- "type": "object",
6
- "required": ["tailwind", "aliases"],
7
- "additionalProperties": false,
8
- "properties": {
9
- "$schema": {
10
- "type": "string"
11
- },
12
- "tailwind": {
13
- "type": "object",
14
- "required": ["css"],
15
- "additionalProperties": false,
16
- "properties": {
17
- "css": {
18
- "type": "string",
19
- "minLength": 1,
20
- "pattern": "^\\S(?:.*\\S)?$",
21
- "description": "Path to the global CSS file that imports Tailwind and receives Banhaten tokens."
22
- }
23
- }
24
- },
25
- "aliases": {
26
- "type": "object",
27
- "required": ["ui", "utils", "hooks"],
28
- "additionalProperties": false,
29
- "properties": {
30
- "ui": {
31
- "type": "string",
32
- "minLength": 1,
33
- "pattern": "^\\S(?:.*\\S)?$",
34
- "description": "Import alias where Banhaten UI components are installed."
35
- },
36
- "utils": {
37
- "type": "string",
38
- "minLength": 1,
39
- "pattern": "^\\S(?:.*\\S)?$",
40
- "description": "Import alias for the cn utility file."
41
- },
42
- "hooks": {
43
- "type": "string",
44
- "minLength": 1,
45
- "pattern": "^\\S(?:.*\\S)?$",
46
- "description": "Import alias for generated hooks."
47
- }
48
- }
49
- }
50
- }
51
- }
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "urn:banhaten:schema:config",
4
+ "title": "Banhaten CLI config",
5
+ "type": "object",
6
+ "required": ["tailwind", "aliases"],
7
+ "additionalProperties": false,
8
+ "properties": {
9
+ "$schema": {
10
+ "type": "string"
11
+ },
12
+ "tailwind": {
13
+ "type": "object",
14
+ "required": ["css"],
15
+ "additionalProperties": false,
16
+ "properties": {
17
+ "css": {
18
+ "type": "string",
19
+ "minLength": 1,
20
+ "pattern": "^\\S(?:.*\\S)?$",
21
+ "description": "Path to the global CSS file that imports Tailwind and receives Banhaten tokens."
22
+ }
23
+ }
24
+ },
25
+ "aliases": {
26
+ "type": "object",
27
+ "required": ["ui", "utils", "hooks"],
28
+ "additionalProperties": false,
29
+ "properties": {
30
+ "ui": {
31
+ "type": "string",
32
+ "minLength": 1,
33
+ "pattern": "^\\S(?:.*\\S)?$",
34
+ "description": "Import alias where Banhaten UI components are installed."
35
+ },
36
+ "utils": {
37
+ "type": "string",
38
+ "minLength": 1,
39
+ "pattern": "^\\S(?:.*\\S)?$",
40
+ "description": "Import alias for the cn utility file."
41
+ },
42
+ "hooks": {
43
+ "type": "string",
44
+ "minLength": 1,
45
+ "pattern": "^\\S(?:.*\\S)?$",
46
+ "description": "Import alias for generated hooks."
47
+ }
48
+ }
49
+ }
50
+ }
51
+ }