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.
- package/CHANGELOG.md +139 -100
- package/CONTRIBUTING.md +46 -44
- package/README.md +192 -190
- package/SECURITY.md +15 -15
- package/banhaten.config.example.json +11 -11
- package/docs/design-spacing.md +13 -0
- package/docs/design-system/README.md +22 -20
- package/docs/design-system/adoption-quality-remediation.md +87 -87
- package/docs/design-system/agent-usage.md +13 -13
- package/docs/design-system/appearance-presets.md +189 -189
- package/docs/design-system/appearances/default.md +94 -94
- package/docs/design-system/appearances/rounded.md +95 -95
- package/docs/design-system/appearances/sharp.md +95 -95
- package/docs/design-system/component-docs-pattern.md +81 -81
- package/docs/design-system/component-implementation-ownership-audit.md +245 -245
- package/docs/design-system/component-quality-audit-2026-08-20.md +225 -225
- package/docs/design-system/component-showcase-consistency-report.md +219 -219
- package/docs/design-system/component-token-consistency-audit.md +173 -173
- package/docs/design-system/components/README.md +90 -76
- package/docs/design-system/components/accordion.md +53 -53
- package/docs/design-system/components/activity-feed.md +94 -94
- package/docs/design-system/components/activity-heatmap.md +57 -57
- package/docs/design-system/components/agent-input.md +85 -0
- package/docs/design-system/components/alert-dialog.md +72 -72
- package/docs/design-system/components/alert.md +97 -97
- package/docs/design-system/components/approval-card.md +134 -0
- package/docs/design-system/components/aspect-ratio.md +45 -45
- package/docs/design-system/components/attribute.md +88 -88
- package/docs/design-system/components/autocomplete.md +75 -75
- package/docs/design-system/components/avatar.md +54 -54
- package/docs/design-system/components/badge.md +54 -54
- package/docs/design-system/components/banner.md +87 -87
- package/docs/design-system/components/breadcrumbs.md +176 -175
- package/docs/design-system/components/button-group.md +98 -98
- package/docs/design-system/components/button.md +83 -80
- package/docs/design-system/components/card.md +88 -88
- package/docs/design-system/components/carousel.md +46 -46
- package/docs/design-system/components/catalog-components.md +47 -47
- package/docs/design-system/components/chart.md +95 -24
- package/docs/design-system/components/checkbox.md +54 -54
- package/docs/design-system/components/collapsible.md +67 -53
- package/docs/design-system/components/command.md +62 -62
- package/docs/design-system/components/context-menu.md +46 -46
- package/docs/design-system/components/date-picker.md +81 -81
- package/docs/design-system/components/divider.md +102 -102
- package/docs/design-system/components/empty-state.md +56 -56
- package/docs/design-system/components/field.md +70 -70
- package/docs/design-system/components/file-upload.md +187 -187
- package/docs/design-system/components/hover-card.md +48 -48
- package/docs/design-system/components/icons.md +48 -48
- package/docs/design-system/components/inline-citations.md +93 -0
- package/docs/design-system/components/input-group.md +58 -58
- package/docs/design-system/components/input-otp.md +56 -56
- package/docs/design-system/components/input.md +114 -60
- package/docs/design-system/components/item.md +59 -59
- package/docs/design-system/components/kbd.md +51 -49
- package/docs/design-system/components/label.md +49 -49
- package/docs/design-system/components/menu.md +71 -61
- package/docs/design-system/components/menubar.md +47 -47
- package/docs/design-system/components/modal.md +105 -105
- package/docs/design-system/components/native-select.md +54 -54
- package/docs/design-system/components/navigation-menu.md +50 -50
- package/docs/design-system/components/onboarding-step-list-item.md +82 -82
- package/docs/design-system/components/page-header.md +93 -86
- package/docs/design-system/components/pagination.md +57 -57
- package/docs/design-system/components/popover.md +60 -60
- package/docs/design-system/components/progress-slider.md +50 -50
- package/docs/design-system/components/progress.md +76 -76
- package/docs/design-system/components/radio-card.md +51 -51
- package/docs/design-system/components/radio-group.md +57 -57
- package/docs/design-system/components/resizable.md +44 -44
- package/docs/design-system/components/rolling-count.md +61 -0
- package/docs/design-system/components/scroll-area.md +51 -51
- package/docs/design-system/components/segmented-control.md +54 -54
- package/docs/design-system/components/select.md +68 -62
- package/docs/design-system/components/sheet.md +67 -67
- package/docs/design-system/components/shimmer-text.md +67 -0
- package/docs/design-system/components/sidebar.md +110 -99
- package/docs/design-system/components/skeleton.md +75 -75
- package/docs/design-system/components/slideout.md +65 -65
- package/docs/design-system/components/slider.md +63 -63
- package/docs/design-system/components/social-button.md +50 -50
- package/docs/design-system/components/spinner.md +62 -62
- package/docs/design-system/components/steps.md +65 -65
- package/docs/design-system/components/streaming-text.md +82 -0
- package/docs/design-system/components/table.md +419 -414
- package/docs/design-system/components/tabs.md +59 -55
- package/docs/design-system/components/tag.md +80 -80
- package/docs/design-system/components/task-list.md +95 -0
- package/docs/design-system/components/textarea.md +50 -50
- package/docs/design-system/components/thinking-reasoning.md +72 -0
- package/docs/design-system/components/thinking-state.md +67 -0
- package/docs/design-system/components/timeline.md +83 -83
- package/docs/design-system/components/toast.md +58 -58
- package/docs/design-system/components/toggle.md +81 -81
- package/docs/design-system/components/toolbar.md +92 -87
- package/docs/design-system/components/tooltip.md +94 -92
- package/docs/design-system/components/typography.md +18 -18
- package/docs/design-system/density-and-elevation.md +65 -65
- package/docs/design-system/design-system-test-missing-items.md +368 -368
- package/docs/design-system/direction-and-localization.md +23 -23
- package/docs/design-system/form-recipes.md +73 -73
- package/docs/design-system/gap-promotion-policy.md +21 -21
- package/docs/design-system/icons.md +74 -74
- package/docs/design-system/installation.md +70 -68
- package/docs/design-system/launch-comparison-shadcn.md +98 -98
- package/docs/design-system/registry-and-cli.md +64 -64
- package/docs/design-system/release-policy.md +30 -30
- package/docs/design-system/roadmap.md +14 -14
- package/docs/design-system/support-matrix.md +23 -23
- package/docs/design-system/tabs.md +54 -53
- package/docs/design-system/template-gap-audit.md +32 -0
- package/docs/design-system/templates.md +59 -0
- package/docs/design-system/token-governance.md +72 -59
- package/package.json +98 -98
- package/registry/component-contract.json +40 -40
- package/registry/components/accordion.tsx +155 -155
- package/registry/components/agent-input-parts.tsx +552 -0
- package/registry/components/agent-input-state.ts +156 -0
- package/registry/components/agent-input.css +307 -0
- package/registry/components/agent-input.tsx +382 -0
- package/registry/components/alert-dialog.tsx +297 -297
- package/registry/components/alert.tsx +293 -293
- package/registry/components/approval-card.css +409 -0
- package/registry/components/approval-card.tsx +401 -0
- package/registry/components/approval-frame.tsx +108 -0
- package/registry/components/approval-questions.tsx +559 -0
- package/registry/components/aspect-ratio.tsx +30 -30
- package/registry/components/attribute.tsx +454 -454
- package/registry/components/autocomplete.tsx +598 -651
- package/registry/components/avatar.tsx +385 -385
- package/registry/components/badge.tsx +629 -629
- package/registry/components/button-group.tsx +565 -565
- package/registry/components/button.tsx +127 -123
- package/registry/components/card.tsx +638 -638
- package/registry/components/carousel.tsx +296 -296
- package/registry/components/chart-block-data.ts +177 -0
- package/registry/components/chart-block.css +171 -0
- package/registry/components/chart-block.tsx +260 -0
- package/registry/components/chart-interactions.ts +123 -0
- package/registry/components/chart-options.cartesian.ts +162 -0
- package/registry/components/chart-options.paint.ts +99 -0
- package/registry/components/chart-options.parts.ts +72 -0
- package/registry/components/chart-options.radial.ts +109 -0
- package/registry/components/chart-options.ts +44 -0
- package/registry/components/chart-options.types.ts +67 -0
- package/registry/components/chart.tsx +203 -203
- package/registry/components/checkbox.tsx +247 -247
- package/registry/components/collapsible.tsx +109 -69
- package/registry/components/command.tsx +208 -208
- package/registry/components/context-menu.tsx +236 -236
- package/registry/components/data-chart.tsx +40 -0
- package/registry/components/date-picker.tsx +1289 -1289
- package/registry/components/echart-theme.ts +246 -0
- package/registry/components/echart.css +49 -0
- package/registry/components/echart.tsx +178 -0
- package/registry/components/expanded/ActivityFeed.tsx +227 -227
- package/registry/components/expanded/ActivityHeatmap.tsx +64 -64
- package/registry/components/expanded/Banner.tsx +179 -179
- package/registry/components/expanded/Breadcrumbs.tsx +131 -131
- package/registry/components/expanded/CatalogComponentsShowcase.tsx +205 -205
- package/registry/components/expanded/CatalogDivider.tsx +49 -49
- package/registry/components/expanded/EmptyState.tsx +155 -155
- package/registry/components/expanded/FileUpload.tsx +543 -543
- package/registry/components/expanded/OnboardingStepListItem.tsx +60 -60
- package/registry/components/expanded/PageHeader.tsx +179 -166
- package/registry/components/expanded/Slideout.tsx +108 -108
- package/registry/components/expanded/Steps.tsx +402 -402
- package/registry/components/expanded/Table.tsx +1092 -1071
- package/registry/components/expanded/Timeline.tsx +203 -203
- package/registry/components/expanded/activityFeed.css +248 -248
- package/registry/components/expanded/activityHeatmap.css +66 -66
- package/registry/components/expanded/banner.css +260 -260
- package/registry/components/expanded/breadcrumbs.css +140 -140
- package/registry/components/expanded/catalogComponentsShowcase.css +87 -87
- package/registry/components/expanded/divider.css +75 -75
- package/registry/components/expanded/emptyState.css +111 -111
- package/registry/components/expanded/fileUpload.css +457 -457
- package/registry/components/expanded/onboardingStepListItem.css +135 -135
- package/registry/components/expanded/pageHeader.css +248 -290
- package/registry/components/expanded/slideout.css +276 -276
- package/registry/components/expanded/steps.css +356 -356
- package/registry/components/expanded/table.css +606 -606
- package/registry/components/expanded/timeline.css +286 -286
- package/registry/components/field.tsx +283 -283
- package/registry/components/hover-card.tsx +48 -48
- package/registry/components/inline-citations.css +126 -0
- package/registry/components/inline-citations.tsx +292 -0
- package/registry/components/input-content.ts +107 -107
- package/registry/components/input-group.tsx +130 -130
- package/registry/components/input-otp.tsx +584 -584
- package/registry/components/input.tsx +990 -979
- package/registry/components/item.tsx +189 -189
- package/registry/components/kbd.tsx +246 -245
- package/registry/components/label.tsx +78 -78
- package/registry/components/menu.tsx +978 -986
- package/registry/components/menubar.tsx +226 -226
- package/registry/components/modal.tsx +872 -872
- package/registry/components/native-select.tsx +205 -205
- package/registry/components/navigation-menu.tsx +171 -171
- package/registry/components/pagination.css +36 -36
- package/registry/components/pagination.tsx +560 -560
- package/registry/components/popover.tsx +338 -338
- package/registry/components/progress-slider.tsx +216 -216
- package/registry/components/radio-card.tsx +676 -676
- package/registry/components/radio-group.tsx +570 -570
- package/registry/components/resizable.tsx +108 -108
- package/registry/components/rolling-count.css +37 -0
- package/registry/components/rolling-count.tsx +110 -0
- package/registry/components/scroll-area.tsx +91 -91
- package/registry/components/segmented-control.tsx +87 -87
- package/registry/components/select-content.tsx +218 -218
- package/registry/components/select.tsx +937 -932
- package/registry/components/sheet.tsx +305 -305
- package/registry/components/shimmer-text.css +69 -0
- package/registry/components/shimmer-text.tsx +43 -0
- package/registry/components/sidebar.tsx +1433 -1230
- package/registry/components/skeleton.css +54 -54
- package/registry/components/skeleton.tsx +482 -482
- package/registry/components/slider.tsx +380 -380
- package/registry/components/social-button.tsx +387 -387
- package/registry/components/spinner.tsx +78 -78
- package/registry/components/streaming-text.css +45 -0
- package/registry/components/streaming-text.tsx +165 -0
- package/registry/components/table-elements.tsx +128 -128
- package/registry/components/tabs.css +222 -218
- package/registry/components/tabs.tsx +241 -241
- package/registry/components/tag.tsx +423 -423
- package/registry/components/task-list.css +328 -0
- package/registry/components/task-list.tsx +429 -0
- package/registry/components/textarea.tsx +610 -610
- package/registry/components/thinking-reasoning.css +178 -0
- package/registry/components/thinking-reasoning.tsx +253 -0
- package/registry/components/thinking-state.css +8 -0
- package/registry/components/thinking-state.tsx +46 -0
- package/registry/components/toast.tsx +136 -136
- package/registry/components/toggle.tsx +256 -256
- package/registry/components/toolbar.tsx +539 -539
- package/registry/components/tooltip.tsx +433 -431
- package/registry/examples/agent-input-demo.tsx +90 -0
- package/registry/examples/alert-demo.tsx +34 -34
- package/registry/examples/alert-dialog-demo.tsx +42 -42
- package/registry/examples/approval-card-demo.tsx +83 -0
- package/registry/examples/aspect-ratio-demo.tsx +11 -11
- package/registry/examples/attribute-demo.tsx +65 -65
- package/registry/examples/autocomplete-demo.tsx +109 -109
- package/registry/examples/avatar-demo.tsx +132 -132
- package/registry/examples/badge-demo.tsx +69 -69
- package/registry/examples/button-demo.tsx +86 -83
- package/registry/examples/button-group-demo.tsx +63 -63
- package/registry/examples/card-demo.tsx +86 -86
- package/registry/examples/carousel-demo.tsx +43 -43
- package/registry/examples/chart-block-demo.tsx +5 -0
- package/registry/examples/chart-demo.tsx +18 -33
- package/registry/examples/checkbox-demo.tsx +62 -62
- package/registry/examples/collapsible-demo.tsx +16 -16
- package/registry/examples/collection-filter-bar-demo.tsx +135 -135
- package/registry/examples/command-demo.tsx +42 -42
- package/registry/examples/command-palette-demo.tsx +235 -235
- package/registry/examples/context-menu-demo.tsx +29 -29
- package/registry/examples/control-density-contract-demo.tsx +65 -61
- package/registry/examples/date-picker-demo.tsx +127 -127
- package/registry/examples/divider-demo.tsx +17 -17
- package/registry/examples/expanded/activity-heatmap-demo.tsx +29 -29
- package/registry/examples/expanded/banner-demo.tsx +48 -48
- package/registry/examples/expanded/breadcrumbs-demo.tsx +59 -59
- package/registry/examples/expanded/empty-state-demo.tsx +39 -39
- package/registry/examples/expanded/file-upload-demo.tsx +60 -60
- package/registry/examples/expanded/onboarding-step-demo.tsx +11 -11
- package/registry/examples/expanded/slideout-demo.tsx +15 -15
- package/registry/examples/expanded/steps-demo.tsx +29 -29
- package/registry/examples/expanded/tabs-demo.tsx +13 -13
- package/registry/examples/expanded/timeline-demo.tsx +18 -18
- package/registry/examples/field-demo.tsx +51 -51
- package/registry/examples/hover-card-demo.tsx +23 -23
- package/registry/examples/inline-citations-demo.tsx +31 -0
- package/registry/examples/input-actions-demo.tsx +36 -0
- package/registry/examples/input-demo.tsx +87 -87
- package/registry/examples/input-group-demo.tsx +16 -16
- package/registry/examples/input-otp-demo.tsx +72 -72
- package/registry/examples/item-demo.tsx +46 -46
- package/registry/examples/kbd-demo.tsx +12 -12
- package/registry/examples/label-demo.tsx +20 -20
- package/registry/examples/menu-demo.tsx +122 -122
- package/registry/examples/menubar-demo.tsx +34 -34
- package/registry/examples/modal-demo.tsx +74 -74
- package/registry/examples/native-select-demo.tsx +16 -16
- package/registry/examples/navigation-menu-demo.tsx +29 -29
- package/registry/examples/pagination-demo.tsx +20 -20
- package/registry/examples/popover-demo.tsx +547 -546
- package/registry/examples/progress-demo.tsx +37 -37
- package/registry/examples/progress-slider-demo.tsx +29 -29
- package/registry/examples/radio-card-demo.tsx +51 -51
- package/registry/examples/radio-group-demo.tsx +62 -62
- package/registry/examples/resizable-demo.tsx +22 -22
- package/registry/examples/results-toolbar-demo.tsx +44 -44
- package/registry/examples/rolling-count-demo.tsx +39 -0
- package/registry/examples/scroll-area-demo.tsx +15 -15
- package/registry/examples/segmented-control-demo.tsx +39 -39
- package/registry/examples/select-demo.tsx +87 -87
- package/registry/examples/sheet-demo.tsx +47 -47
- package/registry/examples/shimmer-text-demo.tsx +20 -0
- package/registry/examples/sidebar-demo.tsx +101 -101
- package/registry/examples/slider-demo.tsx +31 -31
- package/registry/examples/social-button-demo.tsx +61 -61
- package/registry/examples/spinner-demo.tsx +59 -59
- package/registry/examples/streaming-text-demo.tsx +28 -0
- package/registry/examples/tabs-demo.tsx +13 -13
- package/registry/examples/tag-demo.tsx +29 -29
- package/registry/examples/task-list-demo.tsx +74 -0
- package/registry/examples/textarea-demo.tsx +79 -79
- package/registry/examples/thinking-reasoning-demo.tsx +74 -0
- package/registry/examples/thinking-state-demo.tsx +13 -0
- package/registry/examples/toast-demo.tsx +35 -35
- package/registry/examples/toggle-demo.tsx +59 -59
- package/registry/examples/tooltip-demo.tsx +115 -115
- package/registry/guidance/USAGE.md +27 -27
- package/registry/guidance/charts.LICENSE.txt +24 -0
- package/registry/hooks/use-controllable-state.ts +33 -0
- package/registry/hooks/use-direction.ts +207 -207
- package/registry/hooks/use-listbox-navigation.ts +73 -0
- package/registry/hooks/use-motion-end.ts +55 -0
- package/registry/hooks/use-reduced-motion.ts +28 -0
- package/registry/index.json +1403 -155
- package/registry/styles/globals.css +946 -1088
- package/registry.json +361 -8
- package/schema/config.schema.json +51 -51
- package/schema/registry.schema.json +194 -190
- package/schema/tokens.schema.json +167 -163
- package/src/cli/command-line.js +194 -194
- package/src/cli/config-editors.js +9 -9
- package/src/cli/doctor.js +399 -399
- package/src/cli/file-transaction.js +302 -295
- package/src/cli/global-css.js +153 -153
- package/src/cli/index.js +1002 -1009
- package/src/cli/install-plan.js +592 -592
- package/src/cli/install-receipt.js +171 -171
- package/src/cli/jsonc.js +203 -203
- package/src/cli/package-install-state.js +254 -254
- package/src/cli/package-manager.js +238 -238
- package/src/cli/package-plan.js +185 -185
- package/src/cli/package-version.js +97 -97
- package/src/cli/registry-query.js +207 -207
- package/src/cli/reporting.js +55 -55
- package/src/cli/schema-validation.js +19 -19
- package/src/cli/source-scanner.js +686 -686
- package/src/cli/vite-config.js +478 -478
- package/tokens/banhaten.tokens.json +306 -192
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
# Command
|
|
2
|
-
|
|
3
|
-
Command is a cmdk-backed command menu with search input, grouped results, keyboard navigation, shortcuts, separators, and empty state.
|
|
4
|
-
|
|
5
|
-
## API
|
|
6
|
-
|
|
7
|
-
```tsx
|
|
8
|
-
<Command>
|
|
9
|
-
<CommandInput />
|
|
10
|
-
<CommandList>
|
|
11
|
-
<CommandEmpty>No results found.</CommandEmpty>
|
|
12
|
-
<CommandGroup heading="Pages">
|
|
13
|
-
<CommandItem value="profile">
|
|
14
|
-
Profile
|
|
15
|
-
<CommandShortcut>⌘P</CommandShortcut>
|
|
16
|
-
</CommandItem>
|
|
17
|
-
</CommandGroup>
|
|
18
|
-
</CommandList>
|
|
19
|
-
</Command>
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
| Part | Purpose |
|
|
23
|
-
| --- | --- |
|
|
24
|
-
| `Command` | cmdk root |
|
|
25
|
-
| `CommandInput` | search input |
|
|
26
|
-
| `CommandList` | result list |
|
|
27
|
-
| `CommandEmpty` | empty state |
|
|
28
|
-
| `CommandGroup` | grouped results |
|
|
29
|
-
| `CommandItem` | selectable command |
|
|
30
|
-
| `CommandSeparator`, `CommandShortcut` | supporting row UI |
|
|
31
|
-
|
|
32
|
-
## Token Contract
|
|
33
|
-
|
|
34
|
-
Command uses Banhaten raised surface, menu shadow, border, ghost hover, body typography, muted content, and radius tokens.
|
|
35
|
-
|
|
36
|
-
## RTL
|
|
37
|
-
|
|
38
|
-
Command inherits direction. Labels and shortcuts use logical spacing.
|
|
39
|
-
|
|
40
|
-
## Accessibility
|
|
41
|
-
|
|
42
|
-
cmdk handles keyboard navigation and selection. Provide stable `value` props for dynamic items.
|
|
43
|
-
|
|
44
|
-
## Install
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
npx banhaten add command
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## Examples
|
|
51
|
-
|
|
52
|
-
Primary registry example: `examples/command-demo.tsx`.
|
|
53
|
-
|
|
54
|
-
Open the live component page or run `npx banhaten docs command` to inspect source files, install command, and examples.
|
|
55
|
-
|
|
56
|
-
## RTL Rules
|
|
57
|
-
|
|
58
|
-
- `inheritsDirection`: true
|
|
59
|
-
- `spacing`: Command rows and shortcuts use logical spacing so shortcut placement mirrors naturally.
|
|
60
|
-
- `textDirection`: Command copy inherits document direction; individual row labels can use dir="auto" when needed.
|
|
61
|
-
|
|
1
|
+
# Command
|
|
2
|
+
|
|
3
|
+
Command is a cmdk-backed command menu with search input, grouped results, keyboard navigation, shortcuts, separators, and empty state.
|
|
4
|
+
|
|
5
|
+
## API
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
<Command>
|
|
9
|
+
<CommandInput />
|
|
10
|
+
<CommandList>
|
|
11
|
+
<CommandEmpty>No results found.</CommandEmpty>
|
|
12
|
+
<CommandGroup heading="Pages">
|
|
13
|
+
<CommandItem value="profile">
|
|
14
|
+
Profile
|
|
15
|
+
<CommandShortcut>⌘P</CommandShortcut>
|
|
16
|
+
</CommandItem>
|
|
17
|
+
</CommandGroup>
|
|
18
|
+
</CommandList>
|
|
19
|
+
</Command>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
| Part | Purpose |
|
|
23
|
+
| --- | --- |
|
|
24
|
+
| `Command` | cmdk root |
|
|
25
|
+
| `CommandInput` | search input |
|
|
26
|
+
| `CommandList` | result list |
|
|
27
|
+
| `CommandEmpty` | empty state |
|
|
28
|
+
| `CommandGroup` | grouped results |
|
|
29
|
+
| `CommandItem` | selectable command |
|
|
30
|
+
| `CommandSeparator`, `CommandShortcut` | supporting row UI |
|
|
31
|
+
|
|
32
|
+
## Token Contract
|
|
33
|
+
|
|
34
|
+
Command uses Banhaten raised surface, menu shadow, border, ghost hover, body typography, muted content, and radius tokens.
|
|
35
|
+
|
|
36
|
+
## RTL
|
|
37
|
+
|
|
38
|
+
Command inherits direction. Labels and shortcuts use logical spacing.
|
|
39
|
+
|
|
40
|
+
## Accessibility
|
|
41
|
+
|
|
42
|
+
cmdk handles keyboard navigation and selection. Provide stable `value` props for dynamic items.
|
|
43
|
+
|
|
44
|
+
## Install
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npx banhaten add command
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Examples
|
|
51
|
+
|
|
52
|
+
Primary registry example: `examples/command-demo.tsx`.
|
|
53
|
+
|
|
54
|
+
Open the live component page or run `npx banhaten docs command` to inspect source files, install command, and examples.
|
|
55
|
+
|
|
56
|
+
## RTL Rules
|
|
57
|
+
|
|
58
|
+
- `inheritsDirection`: true
|
|
59
|
+
- `spacing`: Command rows and shortcuts use logical spacing so shortcut placement mirrors naturally.
|
|
60
|
+
- `textDirection`: Command copy inherits document direction; individual row labels can use dir="auto" when needed.
|
|
61
|
+
|
|
62
62
|
<!-- registry-contract:start -->
|
|
63
63
|
## Registry Contract
|
|
64
64
|
|
|
@@ -71,5 +71,5 @@ This table is generated from `registry/index.json`; edit the component-owned sou
|
|
|
71
71
|
| `parts` | `Command`, `CommandInput`, `CommandList`, `CommandEmpty`, `CommandGroup`, `CommandItem`, `CommandSeparator`, `CommandShortcut` |
|
|
72
72
|
| `registryDependencies` | None |
|
|
73
73
|
| `features` | `search filtering`, `keyboard navigation`, `grouped results`, `shortcut slot`, `empty state` |
|
|
74
|
-
| `tokens` | `--bh-bg-raised`, `--bh-border-subtle`, `--bh-border-width-default`, `--bh-content-default`, `--bh-content-disabled`, `--bh-content-muted`, `--bh-content-subtle`, `--bh-icon-stroke-200`, `--bh-interactive-ghost-hover`, `--bh-radius-2xl-12`, `--bh-radius-lg-8`, `--bh-space-19xl-384`, `--bh-space-3xl-16`, `--bh-space-5xl-24`, `--bh-space-8xl-48`, `--bh-space-md-8`, `--bh-space-sm-6`, `--bh-space-xs-4`, `--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-sm-regular-font-size`, `--bh-text-body-sm-regular-font-weight`, `--bh-text-body-sm-regular-letter-spacing`, `--bh-text-body-sm-regular-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`, `--
|
|
74
|
+
| `tokens` | `--bh-bg-raised`, `--bh-border-subtle`, `--bh-border-width-default`, `--bh-content-default`, `--bh-content-disabled`, `--bh-content-muted`, `--bh-content-subtle`, `--bh-icon-stroke-200`, `--bh-interactive-ghost-hover`, `--bh-radius-2xl-12`, `--bh-radius-lg-8`, `--bh-space-19xl-384`, `--bh-space-3xl-16`, `--bh-space-5xl-24`, `--bh-space-8xl-48`, `--bh-space-md-8`, `--bh-space-sm-6`, `--bh-space-xs-4`, `--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-sm-regular-font-size`, `--bh-text-body-sm-regular-font-weight`, `--bh-text-body-sm-regular-letter-spacing`, `--bh-text-body-sm-regular-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`, `--elevation-menu` |
|
|
75
75
|
<!-- registry-contract:end -->
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
# Context Menu
|
|
2
|
-
|
|
3
|
-
Context Menu wraps Radix ContextMenu for right-click actions with labels, separators, submenus, checkboxes, radios, and shortcuts.
|
|
4
|
-
|
|
5
|
-
## API
|
|
6
|
-
|
|
7
|
-
```tsx
|
|
8
|
-
<ContextMenu>
|
|
9
|
-
<ContextMenuTrigger>Right click</ContextMenuTrigger>
|
|
10
|
-
<ContextMenuContent>
|
|
11
|
-
<ContextMenuItem>Open</ContextMenuItem>
|
|
12
|
-
</ContextMenuContent>
|
|
13
|
-
</ContextMenu>
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
## Token Contract
|
|
17
|
-
|
|
18
|
-
Context Menu reuses Banhaten menu width, item height, raised surface, hover, shadow, spacing, and typography tokens.
|
|
19
|
-
|
|
20
|
-
## RTL
|
|
21
|
-
|
|
22
|
-
Items and shortcuts use logical spacing. Directional submenu icons flip in RTL.
|
|
23
|
-
|
|
24
|
-
## Accessibility
|
|
25
|
-
|
|
26
|
-
Radix manages keyboard navigation, focus movement, item state, and submenu behavior.
|
|
27
|
-
|
|
28
|
-
## Install
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
npx banhaten add context-menu
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
## Examples
|
|
35
|
-
|
|
36
|
-
Primary registry example: `examples/context-menu-demo.tsx`.
|
|
37
|
-
|
|
38
|
-
Open the live component page or run `npx banhaten docs context-menu` to inspect source files, install command, and examples.
|
|
39
|
-
|
|
40
|
-
## RTL Rules
|
|
41
|
-
|
|
42
|
-
- `inheritsDirection`: true
|
|
43
|
-
- `directionalIconFlip`: Submenu chevrons flip in RTL.
|
|
44
|
-
- `spacing`: Items and shortcuts use logical spacing.
|
|
45
|
-
|
|
1
|
+
# Context Menu
|
|
2
|
+
|
|
3
|
+
Context Menu wraps Radix ContextMenu for right-click actions with labels, separators, submenus, checkboxes, radios, and shortcuts.
|
|
4
|
+
|
|
5
|
+
## API
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
<ContextMenu>
|
|
9
|
+
<ContextMenuTrigger>Right click</ContextMenuTrigger>
|
|
10
|
+
<ContextMenuContent>
|
|
11
|
+
<ContextMenuItem>Open</ContextMenuItem>
|
|
12
|
+
</ContextMenuContent>
|
|
13
|
+
</ContextMenu>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Token Contract
|
|
17
|
+
|
|
18
|
+
Context Menu reuses Banhaten menu width, item height, raised surface, hover, shadow, spacing, and typography tokens.
|
|
19
|
+
|
|
20
|
+
## RTL
|
|
21
|
+
|
|
22
|
+
Items and shortcuts use logical spacing. Directional submenu icons flip in RTL.
|
|
23
|
+
|
|
24
|
+
## Accessibility
|
|
25
|
+
|
|
26
|
+
Radix manages keyboard navigation, focus movement, item state, and submenu behavior.
|
|
27
|
+
|
|
28
|
+
## Install
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npx banhaten add context-menu
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Examples
|
|
35
|
+
|
|
36
|
+
Primary registry example: `examples/context-menu-demo.tsx`.
|
|
37
|
+
|
|
38
|
+
Open the live component page or run `npx banhaten docs context-menu` to inspect source files, install command, and examples.
|
|
39
|
+
|
|
40
|
+
## RTL Rules
|
|
41
|
+
|
|
42
|
+
- `inheritsDirection`: true
|
|
43
|
+
- `directionalIconFlip`: Submenu chevrons flip in RTL.
|
|
44
|
+
- `spacing`: Items and shortcuts use logical spacing.
|
|
45
|
+
|
|
46
46
|
<!-- registry-contract:start -->
|
|
47
47
|
## Registry Contract
|
|
48
48
|
|
|
@@ -55,5 +55,5 @@ This table is generated from `registry/index.json`; edit the component-owned sou
|
|
|
55
55
|
| `parts` | `ContextMenu`, `ContextMenuTrigger`, `ContextMenuContent`, `ContextMenuItem`, `ContextMenuCheckboxItem`, `ContextMenuRadioItem`, `ContextMenuLabel`, `ContextMenuSeparator`, `ContextMenuShortcut`, `ContextMenuSub`, `ContextMenuSubTrigger`, `ContextMenuSubContent` |
|
|
56
56
|
| `registryDependencies` | None |
|
|
57
57
|
| `features` | `right click trigger`, `submenus`, `checkbox items`, `radio items`, `shortcuts` |
|
|
58
|
-
| `tokens` | `--bh-bg-raised`, `--bh-border-subtle`, `--bh-border-width-default`, `--bh-content-default`, `--bh-content-disabled`, `--bh-content-muted`, `--bh-menu-item-default-height`, `--bh-menu-item-hover-bg`, `--bh-menu-width`, `--bh-radius-md-6`, `--bh-radius-xl-10`, `--bh-space-3xl-16`, `--bh-space-5xl-24`, `--bh-space-8xl-48`, `--bh-space-md-8`, `--bh-space-sm-6`, `--bh-space-xs-4`, `--bh-text-body-sm-regular-font-size`, `--bh-text-body-sm-regular-font-weight`, `--bh-text-body-sm-regular-letter-spacing`, `--bh-text-body-sm-regular-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-z-popover`, `--
|
|
58
|
+
| `tokens` | `--bh-bg-raised`, `--bh-border-subtle`, `--bh-border-width-default`, `--bh-content-default`, `--bh-content-disabled`, `--bh-content-muted`, `--bh-menu-item-default-height`, `--bh-menu-item-hover-bg`, `--bh-menu-width`, `--bh-radius-md-6`, `--bh-radius-xl-10`, `--bh-space-3xl-16`, `--bh-space-5xl-24`, `--bh-space-8xl-48`, `--bh-space-md-8`, `--bh-space-sm-6`, `--bh-space-xs-4`, `--bh-text-body-sm-regular-font-size`, `--bh-text-body-sm-regular-font-weight`, `--bh-text-body-sm-regular-letter-spacing`, `--bh-text-body-sm-regular-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-z-popover`, `--elevation-menu` |
|
|
59
59
|
<!-- registry-contract:end -->
|
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
# Date Picker
|
|
2
|
-
|
|
3
|
-
Date Picker is the calendar and range-selection suite for Banhaten forms. It covers single calendars, month/year views, double calendars, preset lists, date-picker triggers, date-range pickers, open/closed states, time rows, and RTL use cases.
|
|
4
|
-
|
|
5
|
-
## Install
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npx banhaten add date-picker
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## Anatomy
|
|
12
|
-
|
|
13
|
-
- `Calendar`: single calendar surface with day and month/year views.
|
|
14
|
-
- `RangeCalendar`: single or double range calendar with optional preset list.
|
|
15
|
-
- `DatePicker`: trigger plus single-date calendar surface.
|
|
16
|
-
- `DateRangePicker`: trigger plus range calendar surface.
|
|
17
|
-
- `DatePickerTrigger`: standalone tokenized trigger.
|
|
18
|
-
|
|
19
|
-
Trigger and previous/next navigation glyphs are 18px inside 20px slots. Smaller title chevrons and calendar indicators keep their component-specific sizes.
|
|
20
|
-
|
|
21
|
-
## Example
|
|
22
|
-
|
|
23
|
-
```tsx
|
|
24
|
-
import { DatePicker, DateRangePicker } from "@/components/ui/date-picker"
|
|
25
|
-
|
|
26
|
-
export function Example() {
|
|
27
|
-
return (
|
|
28
|
-
<div className="grid gap-4">
|
|
29
|
-
<DatePicker defaultOpen />
|
|
30
|
-
<DateRangePicker type="double" />
|
|
31
|
-
</div>
|
|
32
|
-
)
|
|
33
|
-
}
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## Variants
|
|
37
|
-
|
|
38
|
-
| API | Values |
|
|
39
|
-
| --- | --- |
|
|
40
|
-
| `Calendar view` | `days`, `month-year` |
|
|
41
|
-
| `RangeCalendar type` | `single`, `double`, `double-with-presets` |
|
|
42
|
-
| `DatePicker state` | `open`, `closed` |
|
|
43
|
-
| `dir` | inherited, `ltr`, `rtl` |
|
|
44
|
-
|
|
45
|
-
## RTL
|
|
46
|
-
|
|
47
|
-
The trigger, calendar header, preset list, day cells, range fill, and time rows use logical spacing and borders. Range endpoints keep their visual start/end rounding in both LTR and RTL.
|
|
48
|
-
|
|
49
|
-
## API
|
|
50
|
-
|
|
51
|
-
Supported runtime exports: `Calendar`, `DatePicker`, `DatePickerTrigger`, `DateRangePicker`, `RangeCalendar`, `calendarSurface`, `pickerTrigger`, `addDays`, `addMonths`, `formatCalendarDate`, `formatCalendarRange`, `formatMonthTitle`, `getCalendarCells`, `getCalendarDayState`, `getCalendarKeyboardTarget`, `getNextRange`, `isAfterOrSameDay`, `isBeforeDay`, `isBeforeOrSameDay`, `isSameDay`, `isSameMonth`, `normalizeRange`, `startOfDay`, `startOfMonth`, `toCalendarDateId`.
|
|
52
|
-
|
|
53
|
-
| Contract | Values |
|
|
54
|
-
| --- | --- |
|
|
55
|
-
| `modes` | `single-calendar`, `single-month-year`, `double-calendar`, `double-calendar-with-presets`, `single-range-calendar`, `date-picker`, `date-range-picker` |
|
|
56
|
-
| `states` | `open`, `closed` |
|
|
57
|
-
|
|
58
|
-
## Examples
|
|
59
|
-
|
|
60
|
-
Primary registry example: `examples/date-picker-demo.tsx`.
|
|
61
|
-
|
|
62
|
-
Open the live component page or run `npx banhaten docs date-picker` to inspect source files, install command, and examples.
|
|
63
|
-
|
|
64
|
-
## Token Contract
|
|
65
|
-
|
|
66
|
-
Component styles must resolve through Banhaten semantic tokens, component aliases, or documented exception-ledger values.
|
|
67
|
-
Do not add raw colors, pixel values, opacity utilities, z-index values, durations, or shadow literals directly to component source.
|
|
68
|
-
Covered source files: `components/date-picker.tsx`, `components/date-picker-state.ts`.
|
|
69
|
-
|
|
70
|
-
## RTL Rules
|
|
71
|
-
|
|
72
|
-
- `inheritsDirection`: true
|
|
73
|
-
- `triggerLayout`: The trigger uses inherited direction so the calendar icon and value mirror naturally.
|
|
74
|
-
- `calendarLayout`: Calendar headers, range presets, date cells, and time rows use logical borders, spacing, and text alignment for LTR and RTL surfaces.
|
|
75
|
-
- `rangeSelection`: Range fill uses logical start/end rounding for week edges and keeps selected endpoints tokenized with brand colors.
|
|
76
|
-
|
|
77
|
-
## Accessibility
|
|
78
|
-
|
|
79
|
-
Keep native semantics, accessible names, keyboard reachability, focus-visible treatment, and status/error announcements intact when composing this component.
|
|
80
|
-
|
|
1
|
+
# Date Picker
|
|
2
|
+
|
|
3
|
+
Date Picker is the calendar and range-selection suite for Banhaten forms. It covers single calendars, month/year views, double calendars, preset lists, date-picker triggers, date-range pickers, open/closed states, time rows, and RTL use cases.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx banhaten add date-picker
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Anatomy
|
|
12
|
+
|
|
13
|
+
- `Calendar`: single calendar surface with day and month/year views.
|
|
14
|
+
- `RangeCalendar`: single or double range calendar with optional preset list.
|
|
15
|
+
- `DatePicker`: trigger plus single-date calendar surface.
|
|
16
|
+
- `DateRangePicker`: trigger plus range calendar surface.
|
|
17
|
+
- `DatePickerTrigger`: standalone tokenized trigger.
|
|
18
|
+
|
|
19
|
+
Trigger and previous/next navigation glyphs are 18px inside 20px slots. Smaller title chevrons and calendar indicators keep their component-specific sizes.
|
|
20
|
+
|
|
21
|
+
## Example
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
import { DatePicker, DateRangePicker } from "@/components/ui/date-picker"
|
|
25
|
+
|
|
26
|
+
export function Example() {
|
|
27
|
+
return (
|
|
28
|
+
<div className="grid gap-4">
|
|
29
|
+
<DatePicker defaultOpen />
|
|
30
|
+
<DateRangePicker type="double" />
|
|
31
|
+
</div>
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Variants
|
|
37
|
+
|
|
38
|
+
| API | Values |
|
|
39
|
+
| --- | --- |
|
|
40
|
+
| `Calendar view` | `days`, `month-year` |
|
|
41
|
+
| `RangeCalendar type` | `single`, `double`, `double-with-presets` |
|
|
42
|
+
| `DatePicker state` | `open`, `closed` |
|
|
43
|
+
| `dir` | inherited, `ltr`, `rtl` |
|
|
44
|
+
|
|
45
|
+
## RTL
|
|
46
|
+
|
|
47
|
+
The trigger, calendar header, preset list, day cells, range fill, and time rows use logical spacing and borders. Range endpoints keep their visual start/end rounding in both LTR and RTL.
|
|
48
|
+
|
|
49
|
+
## API
|
|
50
|
+
|
|
51
|
+
Supported runtime exports: `Calendar`, `DatePicker`, `DatePickerTrigger`, `DateRangePicker`, `RangeCalendar`, `calendarSurface`, `pickerTrigger`, `addDays`, `addMonths`, `formatCalendarDate`, `formatCalendarRange`, `formatMonthTitle`, `getCalendarCells`, `getCalendarDayState`, `getCalendarKeyboardTarget`, `getNextRange`, `isAfterOrSameDay`, `isBeforeDay`, `isBeforeOrSameDay`, `isSameDay`, `isSameMonth`, `normalizeRange`, `startOfDay`, `startOfMonth`, `toCalendarDateId`.
|
|
52
|
+
|
|
53
|
+
| Contract | Values |
|
|
54
|
+
| --- | --- |
|
|
55
|
+
| `modes` | `single-calendar`, `single-month-year`, `double-calendar`, `double-calendar-with-presets`, `single-range-calendar`, `date-picker`, `date-range-picker` |
|
|
56
|
+
| `states` | `open`, `closed` |
|
|
57
|
+
|
|
58
|
+
## Examples
|
|
59
|
+
|
|
60
|
+
Primary registry example: `examples/date-picker-demo.tsx`.
|
|
61
|
+
|
|
62
|
+
Open the live component page or run `npx banhaten docs date-picker` to inspect source files, install command, and examples.
|
|
63
|
+
|
|
64
|
+
## Token Contract
|
|
65
|
+
|
|
66
|
+
Component styles must resolve through Banhaten semantic tokens, component aliases, or documented exception-ledger values.
|
|
67
|
+
Do not add raw colors, pixel values, opacity utilities, z-index values, durations, or shadow literals directly to component source.
|
|
68
|
+
Covered source files: `components/date-picker.tsx`, `components/date-picker-state.ts`.
|
|
69
|
+
|
|
70
|
+
## RTL Rules
|
|
71
|
+
|
|
72
|
+
- `inheritsDirection`: true
|
|
73
|
+
- `triggerLayout`: The trigger uses inherited direction so the calendar icon and value mirror naturally.
|
|
74
|
+
- `calendarLayout`: Calendar headers, range presets, date cells, and time rows use logical borders, spacing, and text alignment for LTR and RTL surfaces.
|
|
75
|
+
- `rangeSelection`: Range fill uses logical start/end rounding for week edges and keeps selected endpoints tokenized with brand colors.
|
|
76
|
+
|
|
77
|
+
## Accessibility
|
|
78
|
+
|
|
79
|
+
Keep native semantics, accessible names, keyboard reachability, focus-visible treatment, and status/error announcements intact when composing this component.
|
|
80
|
+
|
|
81
81
|
<!-- registry-contract:start -->
|
|
82
82
|
## Registry Contract
|
|
83
83
|
|
|
@@ -95,5 +95,5 @@ This table is generated from `registry/index.json`; edit the component-owned sou
|
|
|
95
95
|
| `densities` | `compact`, `default`, `comfortable` |
|
|
96
96
|
| `modes` | `single-calendar`, `single-month-year`, `double-calendar`, `double-calendar-with-presets`, `single-range-calendar`, `date-picker`, `date-range-picker` |
|
|
97
97
|
| `states` | `open`, `closed` |
|
|
98
|
-
| `tokens` | `--bh-bg-brand-bold`, `--bh-bg-brand-subtle`, `--bh-bg-default`, `--bh-bg-default-hover`, `--bh-bg-raised`, `--bh-border-disabled`, `--bh-border-focus`, `--bh-border-input`, `--bh-border-subtle`, `--bh-border-width-default`, `--bh-button-sm-height`, `--bh-button-xs-height`, `--bh-content-brand-default`, `--bh-content-brand-strong`, `--bh-content-default`, `--bh-content-disabled`, `--bh-content-muted`, `--bh-content-on-brand`, `--bh-content-subtle`, `--bh-control-default`, `--bh-date-day-cell-height`, `--bh-date-event-dot-offset-bottom`, `--bh-date-event-dot-size`, `--bh-date-list-item-height`, `--bh-date-month-year-item-height`, `--bh-date-month-year-list-top`, `--bh-date-month-year-list-width`, `--bh-date-month-year-spacer-height`, `--bh-date-nav-button-size`, `--bh-date-nav-icon-size`, `--bh-date-nav-icon-slot-size`, `--bh-date-picker-width`, `--bh-date-presets-width`, `--bh-date-range-month-width`, `--bh-date-range-surface-max-width`, `--bh-date-surface-border`, `--bh-date-surface-width-calendar`, `--bh-date-surface-width-picker`, `--bh-date-time-input-min-height`, `--bh-date-title-chevron-size`, `--bh-date-title-height`, `--bh-date-trigger-border`, `--bh-date-trigger-
|
|
98
|
+
| `tokens` | `--bh-bg-brand-bold`, `--bh-bg-brand-subtle`, `--bh-bg-default`, `--bh-bg-default-hover`, `--bh-bg-raised`, `--bh-border-disabled`, `--bh-border-focus`, `--bh-border-input`, `--bh-border-subtle`, `--bh-border-width-default`, `--bh-button-sm-height`, `--bh-button-xs-height`, `--bh-content-brand-default`, `--bh-content-brand-strong`, `--bh-content-default`, `--bh-content-disabled`, `--bh-content-muted`, `--bh-content-on-brand`, `--bh-content-subtle`, `--bh-control-default`, `--bh-date-day-cell-height`, `--bh-date-event-dot-offset-bottom`, `--bh-date-event-dot-size`, `--bh-date-list-item-height`, `--bh-date-month-year-item-height`, `--bh-date-month-year-list-top`, `--bh-date-month-year-list-width`, `--bh-date-month-year-spacer-height`, `--bh-date-nav-button-size`, `--bh-date-nav-icon-size`, `--bh-date-nav-icon-slot-size`, `--bh-date-picker-width`, `--bh-date-presets-width`, `--bh-date-range-month-width`, `--bh-date-range-surface-max-width`, `--bh-date-surface-border`, `--bh-date-surface-width-calendar`, `--bh-date-surface-width-picker`, `--bh-date-time-input-min-height`, `--bh-date-title-chevron-size`, `--bh-date-title-height`, `--bh-date-trigger-border`, `--bh-date-trigger-elevation`, `--bh-date-trigger-height`, `--bh-date-trigger-icon-size`, `--bh-date-trigger-icon-slot-size`, `--bh-date-trigger-width`, `--bh-icon-stroke-180`, `--bh-interactive-ghost-hover`, `--bh-interactive-input-default`, `--bh-interactive-input-disabled`, `--bh-interactive-soft-default`, `--bh-interactive-soft-hover`, `--bh-opacity-0`, `--bh-radius-2xl-12`, `--bh-radius-full`, `--bh-radius-lg-8`, `--bh-radius-md-6`, `--bh-radius-sm-4`, `--bh-space-3xl-16`, `--bh-space-5xl-24`, `--bh-space-lg-10`, `--bh-space-md-8`, `--bh-space-sm-6`, `--bh-space-xl-12`, `--bh-space-xs-4`, `--bh-space-xxs-2`, `--bh-text-body-2xs-medium-font-size`, `--bh-text-body-2xs-medium-font-weight`, `--bh-text-body-2xs-medium-letter-spacing`, `--bh-text-body-2xs-medium-line-height`, `--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-medium-font-size`, `--bh-text-body-md-medium-font-weight`, `--bh-text-body-md-medium-letter-spacing`, `--bh-text-body-md-medium-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-z-raised`, `--elevation-button-focus`, `--elevation-component-default`, `--elevation-date-month-year-list`, `--elevation-date-surface`, `--elevation-date-time-input`, `--elevation-input-focus-ring` |
|
|
99
99
|
<!-- registry-contract:end -->
|
|
@@ -1,105 +1,105 @@
|
|
|
1
|
-
# Divider
|
|
2
|
-
|
|
3
|
-
Dividers, also called separators, separate related content without creating a new surface. `Divider` is the canonical separator primitive for plain horizontal and vertical rules.
|
|
4
|
-
|
|
5
|
-
Figma reference: `Divider`, node `165:3111`.
|
|
6
|
-
|
|
7
|
-
## Variants
|
|
8
|
-
|
|
9
|
-
The component defines these variants:
|
|
10
|
-
|
|
11
|
-
| Direction | Type |
|
|
12
|
-
| --- | --- |
|
|
13
|
-
| `horizontal` | `solid`, `dotted` |
|
|
14
|
-
| `vertical` | `solid`, `dotted` |
|
|
15
|
-
|
|
16
|
-
## API
|
|
17
|
-
|
|
18
|
-
Use semantic names in code even if the Figma variant labels are title-cased.
|
|
19
|
-
|
|
20
|
-
```ts
|
|
21
|
-
type DividerDirection = "horizontal" | "vertical";
|
|
22
|
-
type DividerType = "solid" | "dotted";
|
|
23
|
-
|
|
24
|
-
type DividerProps = {
|
|
25
|
-
direction?: DividerDirection;
|
|
26
|
-
type?: DividerType;
|
|
27
|
-
decorative?: boolean;
|
|
28
|
-
};
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Layout
|
|
32
|
-
|
|
33
|
-
- Horizontal dividers render as a `1px` high rule with the Figma component length.
|
|
34
|
-
- Vertical dividers render as a `1px` wide rule with the same tokenized length.
|
|
35
|
-
- Dotted dividers use a 2px dash/gap rhythm from the number scale.
|
|
36
|
-
- Direction does not require a separate RTL prop; plain separators are direction-neutral.
|
|
37
|
-
|
|
38
|
-
## Tokens
|
|
39
|
-
|
|
40
|
-
Dividers should consume existing semantic tokens:
|
|
41
|
-
|
|
42
|
-
```ts
|
|
43
|
-
export const dividerTokens = {
|
|
44
|
-
ruleColor: "border.subtle",
|
|
45
|
-
strokeWidth: "space.xxxs-1",
|
|
46
|
-
dash: "space.xxs-2",
|
|
47
|
-
length: "space.15xl-224",
|
|
48
|
-
};
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
Do not hard-code the Figma fallback values in component code. The current Figma fallback for the rule is `rgba(55, 83, 122, 0.13)`, but the implementation should resolve through `border.subtle`.
|
|
52
|
-
|
|
53
|
-
## Accessibility
|
|
54
|
-
|
|
55
|
-
- Decorative divider lines should be hidden from assistive technology.
|
|
56
|
-
- A standalone semantic separator may render as `<hr />` or `role="separator"` when it conveys structure.
|
|
57
|
-
- Do not use the divider as the only indicator of a required grouping if the grouping needs a visible heading.
|
|
58
|
-
|
|
59
|
-
## Usage
|
|
60
|
-
|
|
61
|
-
```tsx
|
|
62
|
-
<Divider />
|
|
63
|
-
<Divider type="dotted" />
|
|
64
|
-
<Divider direction="vertical" />
|
|
65
|
-
<Divider decorative />
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## Preset Impact
|
|
69
|
-
|
|
70
|
-
- `default`: quiet 1px rule using `border.subtle`.
|
|
71
|
-
- `rounded`: same rule weight; surrounding compositions may use softer radius tokens.
|
|
72
|
-
- `sharp`: same rule weight; surrounding compositions may use square or near-square containers.
|
|
73
|
-
|
|
74
|
-
## Implementation Notes
|
|
75
|
-
|
|
76
|
-
- Prefer `border-top` or a 1px block rule instead of a filled rectangle.
|
|
77
|
-
- Use `border-style: dashed` for the Figma dotted variant unless the platform has a distinct dotted token or renderer.
|
|
78
|
-
- Compose labeled section breaks outside `Divider`; the core primitive should stay a small separator.
|
|
79
|
-
|
|
80
|
-
## Install
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
npx banhaten add divider
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
## Examples
|
|
87
|
-
|
|
88
|
-
Primary registry example: `examples/divider-demo.tsx`.
|
|
89
|
-
|
|
90
|
-
Open the live component page or run `npx banhaten docs divider` to inspect source files, install command, and examples.
|
|
91
|
-
|
|
92
|
-
## Token Contract
|
|
93
|
-
|
|
94
|
-
Component styles must resolve through Banhaten semantic tokens, component aliases, or documented exception-ledger values.
|
|
95
|
-
Do not add raw colors, pixel values, opacity utilities, z-index values, durations, or shadow literals directly to component source.
|
|
96
|
-
Covered source files: `components/divider.tsx`.
|
|
97
|
-
|
|
98
|
-
## RTL Rules
|
|
99
|
-
|
|
100
|
-
- `inheritsDirection`: false
|
|
101
|
-
- `geometry`: Direction maps to component orientation, not document text direction.
|
|
102
|
-
|
|
1
|
+
# Divider
|
|
2
|
+
|
|
3
|
+
Dividers, also called separators, separate related content without creating a new surface. `Divider` is the canonical separator primitive for plain horizontal and vertical rules.
|
|
4
|
+
|
|
5
|
+
Figma reference: `Divider`, node `165:3111`.
|
|
6
|
+
|
|
7
|
+
## Variants
|
|
8
|
+
|
|
9
|
+
The component defines these variants:
|
|
10
|
+
|
|
11
|
+
| Direction | Type |
|
|
12
|
+
| --- | --- |
|
|
13
|
+
| `horizontal` | `solid`, `dotted` |
|
|
14
|
+
| `vertical` | `solid`, `dotted` |
|
|
15
|
+
|
|
16
|
+
## API
|
|
17
|
+
|
|
18
|
+
Use semantic names in code even if the Figma variant labels are title-cased.
|
|
19
|
+
|
|
20
|
+
```ts
|
|
21
|
+
type DividerDirection = "horizontal" | "vertical";
|
|
22
|
+
type DividerType = "solid" | "dotted";
|
|
23
|
+
|
|
24
|
+
type DividerProps = {
|
|
25
|
+
direction?: DividerDirection;
|
|
26
|
+
type?: DividerType;
|
|
27
|
+
decorative?: boolean;
|
|
28
|
+
};
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Layout
|
|
32
|
+
|
|
33
|
+
- Horizontal dividers render as a `1px` high rule with the Figma component length.
|
|
34
|
+
- Vertical dividers render as a `1px` wide rule with the same tokenized length.
|
|
35
|
+
- Dotted dividers use a 2px dash/gap rhythm from the number scale.
|
|
36
|
+
- Direction does not require a separate RTL prop; plain separators are direction-neutral.
|
|
37
|
+
|
|
38
|
+
## Tokens
|
|
39
|
+
|
|
40
|
+
Dividers should consume existing semantic tokens:
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
export const dividerTokens = {
|
|
44
|
+
ruleColor: "border.subtle",
|
|
45
|
+
strokeWidth: "space.xxxs-1",
|
|
46
|
+
dash: "space.xxs-2",
|
|
47
|
+
length: "space.15xl-224",
|
|
48
|
+
};
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Do not hard-code the Figma fallback values in component code. The current Figma fallback for the rule is `rgba(55, 83, 122, 0.13)`, but the implementation should resolve through `border.subtle`.
|
|
52
|
+
|
|
53
|
+
## Accessibility
|
|
54
|
+
|
|
55
|
+
- Decorative divider lines should be hidden from assistive technology.
|
|
56
|
+
- A standalone semantic separator may render as `<hr />` or `role="separator"` when it conveys structure.
|
|
57
|
+
- Do not use the divider as the only indicator of a required grouping if the grouping needs a visible heading.
|
|
58
|
+
|
|
59
|
+
## Usage
|
|
60
|
+
|
|
61
|
+
```tsx
|
|
62
|
+
<Divider />
|
|
63
|
+
<Divider type="dotted" />
|
|
64
|
+
<Divider direction="vertical" />
|
|
65
|
+
<Divider decorative />
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Preset Impact
|
|
69
|
+
|
|
70
|
+
- `default`: quiet 1px rule using `border.subtle`.
|
|
71
|
+
- `rounded`: same rule weight; surrounding compositions may use softer radius tokens.
|
|
72
|
+
- `sharp`: same rule weight; surrounding compositions may use square or near-square containers.
|
|
73
|
+
|
|
74
|
+
## Implementation Notes
|
|
75
|
+
|
|
76
|
+
- Prefer `border-top` or a 1px block rule instead of a filled rectangle.
|
|
77
|
+
- Use `border-style: dashed` for the Figma dotted variant unless the platform has a distinct dotted token or renderer.
|
|
78
|
+
- Compose labeled section breaks outside `Divider`; the core primitive should stay a small separator.
|
|
79
|
+
|
|
80
|
+
## Install
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
npx banhaten add divider
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Examples
|
|
87
|
+
|
|
88
|
+
Primary registry example: `examples/divider-demo.tsx`.
|
|
89
|
+
|
|
90
|
+
Open the live component page or run `npx banhaten docs divider` to inspect source files, install command, and examples.
|
|
91
|
+
|
|
92
|
+
## Token Contract
|
|
93
|
+
|
|
94
|
+
Component styles must resolve through Banhaten semantic tokens, component aliases, or documented exception-ledger values.
|
|
95
|
+
Do not add raw colors, pixel values, opacity utilities, z-index values, durations, or shadow literals directly to component source.
|
|
96
|
+
Covered source files: `components/divider.tsx`.
|
|
97
|
+
|
|
98
|
+
## RTL Rules
|
|
99
|
+
|
|
100
|
+
- `inheritsDirection`: false
|
|
101
|
+
- `geometry`: Direction maps to component orientation, not document text direction.
|
|
102
|
+
|
|
103
103
|
<!-- registry-contract:start -->
|
|
104
104
|
## Registry Contract
|
|
105
105
|
|