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
@@ -1,46 +1,46 @@
1
- # Resizable
2
-
3
- Resizable wraps `react-resizable-panels` for split panes and workbench layouts.
4
-
5
- ## API
6
-
7
- ```tsx
8
- <ResizablePanelGroup direction="horizontal">
9
- <ResizablePanel defaultSize={30}>Sidebar</ResizablePanel>
10
- <ResizableHandle withHandle />
11
- <ResizablePanel defaultSize={70}>Content</ResizablePanel>
12
- </ResizablePanelGroup>
13
- ```
14
-
15
- ## Token Contract
16
-
17
- Resizable uses Banhaten border, focus, raised surface, radius, and icon sizing tokens.
18
-
19
- ## RTL
20
-
21
- Panel order follows DOM order. Use logical layout around the panel group for RTL shells.
22
-
23
- ## Accessibility
24
-
25
- `react-resizable-panels` provides keyboard-adjustable resize handles.
26
-
27
- ## Install
28
-
29
- ```bash
30
- npx banhaten add resizable
31
- ```
32
-
33
- ## Examples
34
-
35
- Primary registry example: `examples/resizable-demo.tsx`.
36
-
37
- Open the live component page or run `npx banhaten docs resizable` to inspect source files, install command, and examples.
38
-
39
- ## RTL Rules
40
-
41
- - `inheritsDirection`: true
42
- - `layout`: Panel order follows DOM order; use logical shell layout for RTL workspaces.
43
-
1
+ # Resizable
2
+
3
+ Resizable wraps `react-resizable-panels` for split panes and workbench layouts.
4
+
5
+ ## API
6
+
7
+ ```tsx
8
+ <ResizablePanelGroup direction="horizontal">
9
+ <ResizablePanel defaultSize={30}>Sidebar</ResizablePanel>
10
+ <ResizableHandle withHandle />
11
+ <ResizablePanel defaultSize={70}>Content</ResizablePanel>
12
+ </ResizablePanelGroup>
13
+ ```
14
+
15
+ ## Token Contract
16
+
17
+ Resizable uses Banhaten border, focus, raised surface, radius, and icon sizing tokens.
18
+
19
+ ## RTL
20
+
21
+ Panel order follows DOM order. Use logical layout around the panel group for RTL shells.
22
+
23
+ ## Accessibility
24
+
25
+ `react-resizable-panels` provides keyboard-adjustable resize handles.
26
+
27
+ ## Install
28
+
29
+ ```bash
30
+ npx banhaten add resizable
31
+ ```
32
+
33
+ ## Examples
34
+
35
+ Primary registry example: `examples/resizable-demo.tsx`.
36
+
37
+ Open the live component page or run `npx banhaten docs resizable` to inspect source files, install command, and examples.
38
+
39
+ ## RTL Rules
40
+
41
+ - `inheritsDirection`: true
42
+ - `layout`: Panel order follows DOM order; use logical shell layout for RTL workspaces.
43
+
44
44
  <!-- registry-contract:start -->
45
45
  ## Registry Contract
46
46
 
@@ -53,5 +53,5 @@ This table is generated from `registry/index.json`; edit the component-owned sou
53
53
  | `parts` | `ResizablePanelGroup`, `ResizablePanel`, `ResizableHandle` |
54
54
  | `registryDependencies` | None |
55
55
  | `features` | `horizontal panels`, `vertical panels`, `keyboard resize handle` |
56
- | `tokens` | `--bh-bg-raised`, `--bh-border-subtle`, `--bh-border-width-default`, `--bh-content-muted`, `--bh-radius-full`, `--bh-space-3xl-16`, `--bh-space-4xl-20`, `--bh-space-5xl-24`, `--bh-space-6xl-32`, `--bh-z-raised`, `--shadow-button-focus`, `--shadow-component-focus-ring` |
56
+ | `tokens` | `--bh-bg-raised`, `--bh-border-subtle`, `--bh-border-width-default`, `--bh-content-muted`, `--bh-radius-full`, `--bh-space-3xl-16`, `--bh-space-4xl-20`, `--bh-space-5xl-24`, `--bh-space-6xl-32`, `--bh-z-raised`, `--elevation-button-focus`, `--elevation-component-focus-ring` |
57
57
  <!-- registry-contract:end -->
@@ -0,0 +1,61 @@
1
+ # Rolling Count
2
+
3
+ `RollingCount` shows tabular figures where each changed character rolls into place like an odometer: the old glyph slides out as the new one slides in, up when a digit grows and down when it shrinks, with 9 to 0 continuing upward. Task List uses it for its progress counter and Approval Card for its step badge and countdown seconds.
4
+
5
+ ## API
6
+
7
+ ```tsx
8
+ import { RollingCount } from "@/components/ui/rolling-count"
9
+
10
+ <RollingCount value={`${done}/${total}`} aria-label={`${done} of ${total} done`} />
11
+ ```
12
+
13
+ | Prop | Type | Default | Description |
14
+ | --- | --- | --- | --- |
15
+ | `value` | `string` | – | Text to show. Only the characters that change roll; a value that grows a digit keeps the existing glyphs in place. |
16
+ | `aria-label` | `string` | `value` | What assistive technology reads instead of the plain value. |
17
+ | `dir` | `"ltr" \| "rtl"` | `"ltr"` | Glyph order. Stays left-to-right by default so values like 2/5 keep their order inside RTL copy. |
18
+
19
+ Any other `span` prop passes through.
20
+
21
+ ## Install
22
+
23
+ ```bash
24
+ npx banhaten add rolling-count
25
+ ```
26
+
27
+ ## Examples
28
+
29
+ Primary registry example: `examples/rolling-count-demo.tsx`.
30
+
31
+ ## Token Contract
32
+
33
+ Glyphs use tabular figures and inherit the surrounding type scale and color. Each roll runs on the `--bh-duration-slow` foundation duration with `--bh-easing-standard`, and a digit returns to plain text when its roll transition ends.
34
+
35
+ Covered source files: `components/rolling-count.tsx` and `components/rolling-count.css`.
36
+
37
+ ## RTL Rules
38
+
39
+ - Digits keep left-to-right order inside RTL copy, so separators such as 2/5 stay in reading order.
40
+ - The counter isolates its bidi context so it never reorders surrounding Arabic text.
41
+
42
+ ## Accessibility
43
+
44
+ Assistive technology reads the plain value, or `aria-label` when given, from a visually hidden span; the rolling glyphs are hidden from it. Under `prefers-reduced-motion` the roll collapses to an instant change.
45
+
46
+ <!-- registry-contract:start -->
47
+ ## Registry Contract
48
+
49
+ This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
50
+ `supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
51
+
52
+ | Field | Values |
53
+ | --- | --- |
54
+ | `supportedExports` | `components/rolling-count.tsx: RollingCount` |
55
+ | `parts` | `RollingCount` |
56
+ | `registryDependencies` | None |
57
+ | `props.value` | `string; default null; Text to show; each changed character rolls up or down into place.` |
58
+ | `props.aria-label` | `string; default null; What assistive technology reads instead of the value, for example 2 of 5 done.` |
59
+ | `props.dir` | `"ltr" \| "rtl"; default "ltr"; Glyph order. Stays left-to-right by default so values like 2/5 keep their order inside RTL copy.` |
60
+ | `tokens` | `--bh-duration-slow`, `--bh-easing-standard` |
61
+ <!-- registry-contract:end -->
@@ -1,53 +1,53 @@
1
- # Scroll Area
2
-
3
- Scroll Area wraps Radix ScrollArea with tokenized viewport, scrollbar, thumb, and corner styling.
4
-
5
- ## API
6
-
7
- ```tsx
8
- <ScrollArea className="h-48">
9
- <div>Scrollable content</div>
10
- </ScrollArea>
11
-
12
- <ScrollArea className="h-48" orientation="both">
13
- <div className="h-max w-max">Two-axis content</div>
14
- </ScrollArea>
15
- ```
16
-
17
- | Part | Purpose |
18
- | --- | --- |
19
- | `ScrollArea` | root and viewport; `orientation` accepts `vertical`, `horizontal`, or `both` |
20
- | `ScrollBar` | vertical or horizontal scrollbar |
21
-
22
- ## Token Contract
23
-
24
- Scroll Area uses Banhaten radius, border, and neutral thumb tokens.
25
-
26
- ## RTL
27
-
28
- Scroll Area inherits direction from its parent. Use logical padding inside the viewport content.
29
-
30
- ## Accessibility
31
-
32
- Use Scroll Area for visual scrollbars around already accessible content, not for hiding essential controls.
33
-
34
- ## Install
35
-
36
- ```bash
37
- npx banhaten add scroll-area
38
- ```
39
-
40
- ## Examples
41
-
42
- Primary registry example: `examples/scroll-area-demo.tsx`.
43
-
44
- Open the live component page or run `npx banhaten docs scroll-area` to inspect source files, install command, and examples.
45
-
46
- ## RTL Rules
47
-
48
- - `inheritsDirection`: true
49
- - `spacing`: Viewport content should use logical padding so scrollable regions mirror with document direction.
50
-
1
+ # Scroll Area
2
+
3
+ Scroll Area wraps Radix ScrollArea with tokenized viewport, scrollbar, thumb, and corner styling.
4
+
5
+ ## API
6
+
7
+ ```tsx
8
+ <ScrollArea className="h-48">
9
+ <div>Scrollable content</div>
10
+ </ScrollArea>
11
+
12
+ <ScrollArea className="h-48" orientation="both">
13
+ <div className="h-max w-max">Two-axis content</div>
14
+ </ScrollArea>
15
+ ```
16
+
17
+ | Part | Purpose |
18
+ | --- | --- |
19
+ | `ScrollArea` | root and viewport; `orientation` accepts `vertical`, `horizontal`, or `both` |
20
+ | `ScrollBar` | vertical or horizontal scrollbar |
21
+
22
+ ## Token Contract
23
+
24
+ Scroll Area uses Banhaten radius, border, and neutral thumb tokens.
25
+
26
+ ## RTL
27
+
28
+ Scroll Area inherits direction from its parent. Use logical padding inside the viewport content.
29
+
30
+ ## Accessibility
31
+
32
+ Use Scroll Area for visual scrollbars around already accessible content, not for hiding essential controls.
33
+
34
+ ## Install
35
+
36
+ ```bash
37
+ npx banhaten add scroll-area
38
+ ```
39
+
40
+ ## Examples
41
+
42
+ Primary registry example: `examples/scroll-area-demo.tsx`.
43
+
44
+ Open the live component page or run `npx banhaten docs scroll-area` to inspect source files, install command, and examples.
45
+
46
+ ## RTL Rules
47
+
48
+ - `inheritsDirection`: true
49
+ - `spacing`: Viewport content should use logical padding so scrollable regions mirror with document direction.
50
+
51
51
  <!-- registry-contract:start -->
52
52
  ## Registry Contract
53
53
 
@@ -60,5 +60,5 @@ This table is generated from `registry/index.json`; edit the component-owned sou
60
60
  | `parts` | `ScrollArea`, `ScrollBar` |
61
61
  | `registryDependencies` | None |
62
62
  | `features` | `vertical scrollbar`, `horizontal scrollbar`, `two-axis scrollbar composition`, `viewport clipping`, `keyboard-focusable viewport`, `viewportProps escape hatch` |
63
- | `tokens` | `--bh-border-default`, `--bh-radius-full`, `--bh-space-lg-10`, `--bh-space-xxs-2`, `--shadow-component-focus-ring` |
63
+ | `tokens` | `--bh-border-default`, `--bh-radius-full`, `--bh-space-lg-10`, `--bh-space-xxs-2`, `--elevation-component-focus-ring` |
64
64
  <!-- registry-contract:end -->
@@ -1,57 +1,57 @@
1
- # Segmented Control
2
-
3
- Segmented Control presents a small set of related choices on one connected, content-width surface. It is the preferred primitive for view, density, period, and numeric display choices such as “Cards per row”.
4
-
5
- Use Select or Radio Group when labels are long or the option set is large. Use Button Group when the items are actions rather than values.
6
-
7
- ## API
8
-
9
- Give the group an accessible name, give every item a stable value, and use `SegmentedControlLabel` only for non-interactive context.
10
-
11
- ```tsx
12
- <SegmentedControl
13
- aria-label="Cards per row"
14
- density="default"
15
- defaultValue="4"
16
- >
17
- <SegmentedControlLabel>Cards / row</SegmentedControlLabel>
18
- <SegmentedControlItem value="3">3</SegmentedControlItem>
19
- <SegmentedControlItem value="4">4</SegmentedControlItem>
20
- <SegmentedControlItem value="5">5</SegmentedControlItem>
21
- <SegmentedControlItem value="6">6</SegmentedControlItem>
22
- </SegmentedControl>
23
- ```
24
-
25
- The default density is `default` (36px). Use `compact` for 32px control rows and `comfortable` for 40px controls. Keep adjacent controls on the same density contract.
26
-
27
- ## Install
28
-
29
- ```bash
30
- npx banhaten add segmented-control
31
- ```
32
-
33
- ## Examples
34
-
35
- Primary registry example: `examples/segmented-control-demo.tsx`.
36
-
37
- The results-toolbar recipe demonstrates the labeled cards-per-row composition alongside a Select action.
38
-
39
- ## Token Contract
40
-
41
- Segmented Control reuses Button Group surface, divider, interaction, typography, and density tokens. Do not replace its height, padding, radius, color, or shadow with local literal values.
42
-
43
- Covered source files: `components/segmented-control.tsx` and its `button-group` registry dependency.
44
-
45
- ## RTL Rules
46
-
47
- - The group inherits document direction.
48
- - Content-width items and logical dividers follow inherited direction without alternate markup.
49
- - Horizontal arrow-key navigation resolves the computed direction through the underlying Toggle Group.
50
-
51
- ## Accessibility
52
-
53
- Provide `aria-label` on every Segmented Control. Items expose pressed state through the underlying Toggle Group, support single or multiple selection, and retain Home, End, and direction-aware arrow-key navigation. The label segment is descriptive and never focusable.
54
-
1
+ # Segmented Control
2
+
3
+ Segmented Control presents a small set of related choices on one connected, content-width surface. It is the preferred primitive for view, density, period, and numeric display choices such as “Cards per row”.
4
+
5
+ Use Select or Radio Group when labels are long or the option set is large. Use Button Group when the items are actions rather than values.
6
+
7
+ ## API
8
+
9
+ Give the group an accessible name, give every item a stable value, and use `SegmentedControlLabel` only for non-interactive context.
10
+
11
+ ```tsx
12
+ <SegmentedControl
13
+ aria-label="Cards per row"
14
+ density="default"
15
+ defaultValue="4"
16
+ >
17
+ <SegmentedControlLabel>Cards / row</SegmentedControlLabel>
18
+ <SegmentedControlItem value="3">3</SegmentedControlItem>
19
+ <SegmentedControlItem value="4">4</SegmentedControlItem>
20
+ <SegmentedControlItem value="5">5</SegmentedControlItem>
21
+ <SegmentedControlItem value="6">6</SegmentedControlItem>
22
+ </SegmentedControl>
23
+ ```
24
+
25
+ The default density is `default` (36px). Use `compact` for 32px control rows and `comfortable` for 40px controls. Keep adjacent controls on the same density contract.
26
+
27
+ ## Install
28
+
29
+ ```bash
30
+ npx banhaten add segmented-control
31
+ ```
32
+
33
+ ## Examples
34
+
35
+ Primary registry example: `examples/segmented-control-demo.tsx`.
36
+
37
+ The results-toolbar recipe demonstrates the labeled cards-per-row composition alongside a Select action.
38
+
39
+ ## Token Contract
40
+
41
+ Segmented Control reuses Button Group surface, divider, interaction, typography, and density tokens. Do not replace its height, padding, radius, color, or shadow with local literal values.
42
+
43
+ Covered source files: `components/segmented-control.tsx` and its `button-group` registry dependency.
44
+
45
+ ## RTL Rules
46
+
47
+ - The group inherits document direction.
48
+ - Content-width items and logical dividers follow inherited direction without alternate markup.
49
+ - Horizontal arrow-key navigation resolves the computed direction through the underlying Toggle Group.
50
+
51
+ ## Accessibility
52
+
53
+ Provide `aria-label` on every Segmented Control. Items expose pressed state through the underlying Toggle Group, support single or multiple selection, and retain Home, End, and direction-aware arrow-key navigation. The label segment is descriptive and never focusable.
54
+
55
55
  <!-- registry-contract:start -->
56
56
  ## Registry Contract
57
57
 
@@ -1,64 +1,67 @@
1
- # Select
2
-
3
- Select is a Radix Select-backed field and menu system. It supports default and soft trigger styles, md/lg sizing, error, filled and disabled states, menu surfaces, checkbox or check selection, and item media for text, icons, avatars, companies, payment methods, and status dots.
4
-
5
- ## API
6
-
7
- ```tsx
8
- <Select label="Country" placeholder="Choose country">
9
- <SelectMenuItem value="eg">Egypt</SelectMenuItem>
10
- <SelectMenuItem value="sa">Saudi Arabia</SelectMenuItem>
11
- </Select>
12
- ```
13
-
14
- | Prop | Type / values | Default | Notes |
15
- | --- | --- | --- | --- |
16
- | `variant` | `default`, `soft` | `default` | Selects the trigger surface. |
17
- | `size` | `lg`, `md` | `lg` | Selects the trigger height. |
18
- | `state` | `default`, `filled`, `error`, `disabled` | `default` | Selects the visual state. |
19
- | `itemType` | `default`, `icon`, `avatar`, `company`, `payment`, `dot` | `default` | Selects menu-item media. |
20
- | `selectionType` | `default`, `checkbox` | `default` | Selects the menu-item selection indicator. |
21
- | `hasInformationIcon` | `boolean` | `false` | Shows an information icon beside the field label. |
22
- | `hasLeadingIcon` | `boolean` | `false` | Set true to show the default user icon. |
23
- | `leadingIcon` | `ReactNode \| false` | `null` | A node enables the leading slot; false always removes it. |
24
- | `hasTrailingIcon` | `boolean` | `false` | Set true to show the default information icon inside the trigger. |
25
- | `trailingIcon` | `ReactNode \| false` | `null` | A node enables the trailing slot; false always removes it. |
26
- | `expandIcon` | `ReactNode \| false` | `chevron-down` | Replaces the expand icon, or removes it when false. |
27
-
28
- ## Migration
29
-
30
- Select now renders only its expand chevron when optional trigger-icon props are omitted. Add `hasLeadingIcon` or `hasTrailingIcon` to retain the previous default user or information icon. A supplied icon enables its slot, while explicit `false` always removes it.
31
-
32
- ## Token Contract
33
-
34
- Select consumes Banhaten field, trigger, menu, item, checkbox, status, avatar, payment, typography, spacing, border, radius, shadow, and focus tokens.
35
-
36
- ## RTL
37
-
38
- Values, labels, helper text, and menu item text use `text-start` and `dir="auto"`. Trigger icons and selected checks use logical placement so they mirror in RTL.
39
-
40
- ## Accessibility
41
-
42
- Radix provides listbox semantics, focus management, typeahead, selection state, and keyboard behavior. Use visible helper or error text for validation states.
43
-
44
- ## Install
45
-
46
- ```bash
47
- npx banhaten add select
48
- ```
49
-
50
- ## Examples
51
-
52
- Primary registry example: `examples/select-demo.tsx`.
53
-
54
- Open the live component page or run `npx banhaten docs select` to inspect source files, install command, and examples.
55
-
56
- ## RTL Rules
57
-
58
- - `inheritsDirection`: true
59
- - `textAlignment`: Uses text-start and dir="auto" for values, labels, helper text, and menu item text.
60
- - `spacing`: Uses logical padding, start/end positioning, and inherited flex direction so trigger icons and selected checks mirror in RTL.
61
-
1
+ # Select
2
+
3
+ Select is a Radix Select-backed field and menu system. It supports default and soft trigger styles, md/lg sizing, error, filled and disabled states, menu surfaces, checkbox or check selection, and item media for text, icons, avatars, companies, payment methods, and status dots.
4
+
5
+ ## API
6
+
7
+ ```tsx
8
+ <Select label="Country" placeholder="Choose country">
9
+ <SelectMenuItem value="eg">Egypt</SelectMenuItem>
10
+ <SelectMenuItem value="sa">Saudi Arabia</SelectMenuItem>
11
+ </Select>
12
+ ```
13
+
14
+ | Prop | Type / values | Default | Notes |
15
+ | --- | --- | --- | --- |
16
+ | `aria-label` | `string` | — | Gives a label-less trigger a stable purpose-based name. It is forwarded to the trigger, not the root. |
17
+ | `aria-labelledby` | `string` | — | Names the trigger from external text. It is forwarded to the trigger, not the root. |
18
+ | `variant` | `default`, `soft` | `default` | Selects the trigger surface. |
19
+ | `size` | `lg`, `md` | `lg` | Selects the trigger height. |
20
+ | `state` | `default`, `filled`, `error`, `disabled` | `default` | Selects the visual state. |
21
+ | `itemType` | `default`, `icon`, `avatar`, `company`, `payment`, `dot` | `default` | Selects menu-item media. |
22
+ | `selectionType` | `default`, `checkbox` | `default` | Selects the menu-item selection indicator. |
23
+ | `hasInformationIcon` | `boolean` | `false` | Shows an information icon beside the field label. |
24
+ | `hasLeadingIcon` | `boolean` | `false` | Set true to show the default user icon. |
25
+ | `leadingIcon` | `ReactNode \| false` | `null` | A node enables the leading slot; false always removes it. |
26
+ | `hasTrailingIcon` | `boolean` | `false` | Set true to show the default information icon inside the trigger. |
27
+ | `trailingIcon` | `ReactNode \| false` | `null` | A node enables the trailing slot; false always removes it. |
28
+ | `expandIcon` | `ReactNode \| false` | `chevron-down` | Replaces the expand icon, or removes it when false. |
29
+ | `triggerProps` | `React.ComponentProps<"button">` | — | Advanced trigger attributes, spread last so matching values override top-level trigger defaults. |
30
+
31
+ ## Migration
32
+
33
+ Select now renders only its expand chevron when optional trigger-icon props are omitted. Add `hasLeadingIcon` or `hasTrailingIcon` to retain the previous default user or information icon. A supplied icon enables its slot, while explicit `false` always removes it.
34
+
35
+ ## Token Contract
36
+
37
+ Select consumes Banhaten field, trigger, menu, item, checkbox, status, avatar, payment, typography, spacing, border, radius, shadow, and focus tokens.
38
+
39
+ ## RTL
40
+
41
+ Values, labels, helper text, and menu item text use `text-start` and `dir="auto"`. Trigger icons and selected checks use logical placement so they mirror in RTL.
42
+
43
+ ## Accessibility
44
+
45
+ Radix provides listbox semantics, focus management, typeahead, selection state, and keyboard behavior. Every Select needs a stable name that describes its purpose rather than its current value. Prefer a visible `label`; for a visually label-less control, pass `aria-label`, `aria-labelledby`, a text `label` with `hasLabel={false}`, or associate an external `<label>` through `triggerId`. Top-level ARIA naming props are forwarded to the trigger. `triggerProps` remains the advanced override path. Do not rely on `value` or `placeholder` as the control name. Use visible helper or error text for validation states.
46
+
47
+ ## Install
48
+
49
+ ```bash
50
+ npx banhaten add select
51
+ ```
52
+
53
+ ## Examples
54
+
55
+ Primary registry example: `examples/select-demo.tsx`.
56
+
57
+ Open the live component page or run `npx banhaten docs select` to inspect source files, install command, and examples.
58
+
59
+ ## RTL Rules
60
+
61
+ - `inheritsDirection`: true
62
+ - `textAlignment`: Uses text-start and dir="auto" for values, labels, helper text, and menu item text.
63
+ - `spacing`: Uses logical padding, start/end positioning, and inherited flex direction so trigger icons and selected checks mirror in RTL.
64
+
62
65
  <!-- registry-contract:start -->
63
66
  ## Registry Contract
64
67
 
@@ -70,6 +73,8 @@ This table is generated from `registry/index.json`; edit the component-owned sou
70
73
  | `supportedExports` | `components/select-content.tsx: SelectIcon, SelectItemAvatar, SelectItemCompanyLogo, SelectItemPaymentIcon, SelectItemStatusDot, getDefaultSelectItemMedia`, `components/select.tsx: Select, SelectCheckboxIndicator, SelectHelperText, SelectItemAvatar, SelectItemCompanyLogo, SelectItemPaymentIcon, SelectItemStatusDot, SelectLabel, SelectMenu, SelectMenuItem, SelectRoot, SelectTrigger, selectMenu, selectMenuItem, selectRoot, selectTrigger` |
71
74
  | `parts` | `Select`, `SelectRoot`, `SelectLabel`, `SelectTrigger`, `SelectHelperText`, `SelectMenu`, `SelectMenuItem`, `SelectCheckboxIndicator`, `SelectItemAvatar`, `SelectItemCompanyLogo`, `SelectItemPaymentIcon`, `SelectItemStatusDot` |
72
75
  | `registryDependencies` | None |
76
+ | `props.aria-label` | `string; default null; Provides a stable purpose-based accessible name for a label-less Select and is forwarded to its trigger.` |
77
+ | `props.aria-labelledby` | `string; default null; Names a label-less Select trigger from external text without placing the relationship on the inert root.` |
73
78
  | `props.density` | `"compact" \| "default" \| "comfortable"; default "default"; Preferred cross-component sizing contract. Overrides the legacy size prop with 32px, 36px, or 40px control heights.` |
74
79
  | `props.hasInformationIcon` | `boolean; default false; Shows an information icon beside the field label.` |
75
80
  | `props.hasLeadingIcon` | `boolean; default false; Shows the default user leading icon when no leadingIcon is supplied.` |
@@ -77,11 +82,12 @@ This table is generated from `registry/index.json`; edit the component-owned sou
77
82
  | `props.hasTrailingIcon` | `boolean; default false; Shows the default information trailing icon when no trailingIcon is supplied.` |
78
83
  | `props.trailingIcon` | `React.ReactNode \| false; default null; Supplies and enables a custom trailing icon; false always removes the trailing slot.` |
79
84
  | `props.expandIcon` | `React.ReactNode \| false; default "chevron-down"; Uses the default expand chevron when omitted, accepts a replacement node, and hides the slot when false.` |
85
+ | `props.triggerProps` | `React.ComponentProps<"button">; default null; Forwards advanced trigger attributes and is spread last, so matching attributes override the top-level trigger defaults.` |
80
86
  | `densities` | `compact`, `default`, `comfortable` |
81
87
  | `itemTypes` | `default`, `icon`, `avatar`, `company`, `payment`, `dot` |
82
88
  | `selectionTypes` | `default`, `checkbox` |
83
89
  | `sizes` | `lg`, `md`, `comfortable` |
84
90
  | `states` | `default`, `filled`, `error`, `disabled` |
85
- | `tokens` | `--bh-bg-accent-blue-default`, `--bh-bg-accent-blue-soft`, `--bh-bg-accent-purple-soft`, `--bh-bg-accent-red-default`, `--bh-bg-always-white`, `--bh-bg-brand-default`, `--bh-bg-danger-default`, `--bh-bg-default`, `--bh-bg-disabled`, `--bh-bg-info-default`, `--bh-bg-neutral-default`, `--bh-bg-success-default`, `--bh-bg-warning-default`, `--bh-border-disabled`, `--bh-border-input`, `--bh-border-subtle`, `--bh-border-width-default`, `--bh-content-accent-blue-strong`, `--bh-content-accent-purple-default`, `--bh-content-danger-default`, `--bh-content-default`, `--bh-content-disabled`, `--bh-content-muted`, `--bh-content-on-color`, `--bh-content-subtle`, `--bh-font-weight-semibold`, `--bh-icon-stroke-200`, `--bh-icon-stroke-220`, `--bh-interactive-checkbox-default`, `--bh-opacity-60`, `--bh-radius-full`, `--bh-select-avatar-font-size`, `--bh-select-check-color`, `--bh-select-checkbox-border`, `--bh-select-checkbox-icon-size`, `--bh-select-checkbox-radius`, `--bh-select-checkbox-size`, `--bh-select-company-icon-size`, `--bh-select-content-gap`, `--bh-select-field-gap`, `--bh-select-icon-size`, `--bh-select-icon-slot-size`, `--bh-select-item-check-offset`, `--bh-select-item-content-padding`, `--bh-select-item-gap`, `--bh-select-item-hover-bg`, `--bh-select-item-min-height`, `--bh-select-item-padding-x`, `--bh-select-item-radius`, `--bh-select-item-selected-padding-end`, `--bh-select-item-value-padding-x`, `--bh-select-label-gap`, `--bh-select-media-inset`, `--bh-select-menu-bg`, `--bh-select-menu-list-gap`, `--bh-select-menu-offset`, `--bh-select-menu-padding-y`, `--bh-select-menu-radius`, `--bh-select-menu-width`, `--bh-select-payment-height`, `--bh-select-payment-mark-offset`, `--bh-select-payment-mark-size`, `--bh-select-payment-radius`, `--bh-select-payment-width`, `--bh-select-status-dot-size`, `--bh-select-trigger-bg`, `--bh-select-trigger-bg-disabled`, `--bh-select-trigger-bg-soft`, `--bh-select-trigger-border`, `--bh-select-trigger-border-current`, `--bh-select-trigger-border-disabled`, `--bh-select-trigger-border-error`, `--bh-select-trigger-border-focus`, `--bh-select-trigger-gap`, `--bh-select-trigger-icon-color`, `--bh-select-trigger-padding-x`, `--bh-select-trigger-padding-y-comfortable`, `--bh-select-trigger-padding-y-lg`, `--bh-select-trigger-padding-y-md`, `--bh-select-trigger-radius`, `--bh-select-value-padding-inline`, `--bh-select-width`, `--bh-space-md-8`, `--bh-space-xxxs-1`, `--bh-text-body-2xs-regular-font-size`, `--bh-text-body-2xs-regular-font-weight`, `--bh-text-body-2xs-regular-letter-spacing`, `--bh-text-body-2xs-regular-line-height`, `--bh-text-body-md-regular-font-size`, `--bh-text-body-md-regular-font-weight`, `--bh-text-body-md-regular-letter-spacing`, `--bh-text-body-md-regular-line-height`, `--bh-text-body-sm-medium-font-size`, `--bh-text-body-sm-medium-font-weight`, `--bh-text-body-sm-medium-letter-spacing`, `--bh-text-body-sm-medium-line-height`, `--bh-text-body-xs-medium-font-size`, `--bh-text-body-xs-medium-font-weight`, `--bh-text-body-xs-medium-letter-spacing`, `--bh-text-body-xs-medium-line-height`, `--bh-text-body-xs-regular-font-size`, `--bh-text-body-xs-regular-font-weight`, `--bh-text-body-xs-regular-letter-spacing`, `--bh-text-body-xs-regular-line-height`, `--bh-z-popover`, `--shadow-component-default`, `--shadow-select-checkbox`, `--shadow-select-danger-focus-ring`, `--shadow-select-focus-ring`, `--shadow-select-menu`, `--shadow-select-trigger` |
91
+ | `tokens` | `--bh-bg-accent-blue-default`, `--bh-bg-accent-blue-soft`, `--bh-bg-accent-purple-soft`, `--bh-bg-accent-red-default`, `--bh-bg-always-white`, `--bh-bg-brand-default`, `--bh-bg-danger-default`, `--bh-bg-default`, `--bh-bg-disabled`, `--bh-bg-info-default`, `--bh-bg-neutral-default`, `--bh-bg-success-default`, `--bh-bg-warning-default`, `--bh-border-disabled`, `--bh-border-input`, `--bh-border-subtle`, `--bh-border-width-default`, `--bh-content-accent-blue-strong`, `--bh-content-accent-purple-default`, `--bh-content-danger-default`, `--bh-content-default`, `--bh-content-disabled`, `--bh-content-muted`, `--bh-content-subtle`, `--bh-font-weight-semibold`, `--bh-icon-size-default`, `--bh-icon-stroke-200`, `--bh-icon-stroke-220`, `--bh-interactive-checkbox-content`, `--bh-interactive-checkbox-default`, `--bh-opacity-60`, `--bh-radius-full`, `--bh-select-avatar-font-size`, `--bh-select-check-color`, `--bh-select-checkbox-border`, `--bh-select-checkbox-icon-size`, `--bh-select-checkbox-radius`, `--bh-select-checkbox-size`, `--bh-select-company-icon-size`, `--bh-select-content-gap`, `--bh-select-field-gap`, `--bh-select-icon-size`, `--bh-select-icon-slot-size`, `--bh-select-item-check-offset`, `--bh-select-item-content-padding`, `--bh-select-item-gap`, `--bh-select-item-hover-bg`, `--bh-select-item-min-height`, `--bh-select-item-padding-x`, `--bh-select-item-radius`, `--bh-select-item-selected-padding-end`, `--bh-select-item-value-padding-x`, `--bh-select-label-gap`, `--bh-select-media-inset`, `--bh-select-menu-bg`, `--bh-select-menu-list-gap`, `--bh-select-menu-offset`, `--bh-select-menu-padding-y`, `--bh-select-menu-radius`, `--bh-select-menu-width`, `--bh-select-payment-height`, `--bh-select-payment-mark-offset`, `--bh-select-payment-mark-size`, `--bh-select-payment-radius`, `--bh-select-payment-width`, `--bh-select-status-dot-size`, `--bh-select-trigger-bg`, `--bh-select-trigger-bg-disabled`, `--bh-select-trigger-bg-soft`, `--bh-select-trigger-border`, `--bh-select-trigger-border-current`, `--bh-select-trigger-border-disabled`, `--bh-select-trigger-border-error`, `--bh-select-trigger-border-focus`, `--bh-select-trigger-gap`, `--bh-select-trigger-icon-color`, `--bh-select-trigger-padding-x`, `--bh-select-trigger-padding-y-comfortable`, `--bh-select-trigger-padding-y-lg`, `--bh-select-trigger-padding-y-md`, `--bh-select-trigger-radius`, `--bh-select-value-padding-inline`, `--bh-select-width`, `--bh-space-md-8`, `--bh-space-xxxs-1`, `--bh-text-body-2xs-regular-font-size`, `--bh-text-body-2xs-regular-font-weight`, `--bh-text-body-2xs-regular-letter-spacing`, `--bh-text-body-2xs-regular-line-height`, `--bh-text-body-md-regular-font-size`, `--bh-text-body-md-regular-font-weight`, `--bh-text-body-md-regular-letter-spacing`, `--bh-text-body-md-regular-line-height`, `--bh-text-body-sm-medium-font-size`, `--bh-text-body-sm-medium-font-weight`, `--bh-text-body-sm-medium-letter-spacing`, `--bh-text-body-sm-medium-line-height`, `--bh-text-body-xs-medium-font-size`, `--bh-text-body-xs-medium-font-weight`, `--bh-text-body-xs-medium-letter-spacing`, `--bh-text-body-xs-medium-line-height`, `--bh-text-body-xs-regular-font-size`, `--bh-text-body-xs-regular-font-weight`, `--bh-text-body-xs-regular-letter-spacing`, `--bh-text-body-xs-regular-line-height`, `--bh-z-popover`, `--elevation-component-default`, `--elevation-select-checkbox`, `--elevation-select-danger-focus-ring`, `--elevation-select-focus-ring`, `--elevation-select-menu`, `--elevation-select-trigger` |
86
92
  | `variants` | `default`, `soft` |
87
93
  <!-- registry-contract:end -->