banhaten 0.1.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +45 -0
- package/CONTRIBUTING.md +44 -0
- package/README.md +65 -13
- package/SECURITY.md +15 -0
- package/banhaten.config.example.json +0 -2
- package/docs/design-system/README.md +9 -0
- package/docs/design-system/adoption-quality-remediation.md +87 -0
- package/docs/design-system/agent-usage.md +13 -0
- package/docs/design-system/appearance-presets.md +6 -1
- package/docs/design-system/component-docs-pattern.md +81 -0
- package/docs/design-system/component-token-consistency-audit.md +13 -3
- package/docs/design-system/components/README.md +3 -2
- package/docs/design-system/components/accordion.md +16 -0
- package/docs/design-system/components/activity-feed.md +15 -1
- package/docs/design-system/components/alert-dialog.md +17 -0
- package/docs/design-system/components/alert.md +46 -14
- package/docs/design-system/components/aspect-ratio.md +15 -0
- package/docs/design-system/components/attribute.md +16 -0
- package/docs/design-system/components/autocomplete.md +19 -0
- package/docs/design-system/components/avatar.md +18 -0
- package/docs/design-system/components/badge.md +19 -0
- package/docs/design-system/components/banner.md +15 -1
- package/docs/design-system/components/breadcrumbs.md +14 -0
- package/docs/design-system/components/button-group.md +34 -0
- package/docs/design-system/components/button.md +18 -0
- package/docs/design-system/components/card.md +18 -1
- package/docs/design-system/components/carousel.md +20 -3
- package/docs/design-system/components/catalog-components.md +15 -1
- package/docs/design-system/components/chart.md +15 -0
- package/docs/design-system/components/checkbox.md +16 -0
- package/docs/design-system/components/collapsible.md +15 -0
- package/docs/design-system/components/command.md +15 -0
- package/docs/design-system/components/context-menu.md +15 -0
- package/docs/design-system/components/date-picker.md +21 -1
- package/docs/design-system/components/divider.md +16 -0
- package/docs/design-system/components/empty-state.md +17 -0
- package/docs/design-system/components/field.md +17 -0
- package/docs/design-system/components/file-upload.md +14 -0
- package/docs/design-system/components/hover-card.md +15 -0
- package/docs/design-system/components/input-group.md +17 -0
- package/docs/design-system/components/input-otp.md +18 -0
- package/docs/design-system/components/input.md +43 -7
- package/docs/design-system/components/item.md +72 -0
- package/docs/design-system/components/kbd.md +18 -0
- package/docs/design-system/components/label.md +16 -0
- package/docs/design-system/components/menu.md +17 -0
- package/docs/design-system/components/menubar.md +15 -0
- package/docs/design-system/components/modal.md +25 -4
- package/docs/design-system/components/native-select.md +18 -0
- package/docs/design-system/components/navigation-menu.md +15 -0
- package/docs/design-system/components/onboarding-step-list-item.md +15 -1
- package/docs/design-system/components/page-header.md +15 -1
- package/docs/design-system/components/pagination.md +30 -8
- package/docs/design-system/components/popover.md +19 -0
- package/docs/design-system/components/progress-slider.md +18 -0
- package/docs/design-system/components/progress.md +17 -0
- package/docs/design-system/components/radio-card.md +16 -0
- package/docs/design-system/components/radio-group.md +17 -0
- package/docs/design-system/components/resizable.md +15 -0
- package/docs/design-system/components/scroll-area.md +15 -0
- package/docs/design-system/components/segmented-control.md +71 -0
- package/docs/design-system/components/select.md +44 -7
- package/docs/design-system/components/sheet.md +17 -0
- package/docs/design-system/components/sidebar.md +15 -0
- package/docs/design-system/components/skeleton.md +18 -0
- package/docs/design-system/components/slideout.md +14 -0
- package/docs/design-system/components/slider.md +20 -0
- package/docs/design-system/components/social-button.md +21 -3
- package/docs/design-system/components/spinner.md +16 -0
- package/docs/design-system/components/steps.md +14 -0
- package/docs/design-system/components/table.md +15 -1
- package/docs/design-system/components/tabs.md +17 -0
- package/docs/design-system/components/tag.md +17 -0
- package/docs/design-system/components/textarea.md +16 -0
- package/docs/design-system/components/timeline.md +14 -0
- package/docs/design-system/components/toast.md +17 -0
- package/docs/design-system/components/toggle.md +17 -0
- package/docs/design-system/components/toolbar.md +21 -1
- package/docs/design-system/components/tooltip.md +18 -1
- package/docs/design-system/density-and-elevation.md +44 -0
- package/docs/design-system/direction-and-localization.md +23 -0
- package/docs/design-system/form-recipes.md +73 -0
- package/docs/design-system/gap-promotion-policy.md +21 -0
- package/docs/design-system/gap-promotion-report.md +166 -0
- package/docs/design-system/installation.md +68 -0
- package/docs/design-system/launch-comparison-shadcn.md +98 -0
- package/docs/design-system/registry-and-cli.md +30 -7
- package/docs/design-system/release-policy.md +30 -0
- package/docs/design-system/roadmap.md +14 -0
- package/docs/design-system/support-matrix.md +23 -0
- package/docs/design-system/tabs.md +1 -1
- package/docs/design-system/token-governance.md +23 -1
- package/package.json +29 -15
- package/registry/component-contract.json +40 -0
- package/registry/components/alert-dialog.tsx +1 -1
- package/registry/components/alert.tsx +86 -65
- package/registry/components/autocomplete.tsx +23 -9
- package/registry/components/avatar.tsx +7 -7
- package/registry/components/badge.tsx +1 -1
- package/registry/components/button-group.tsx +321 -4
- package/registry/components/button.tsx +38 -17
- package/registry/components/card.tsx +68 -59
- package/registry/components/carousel.tsx +53 -5
- package/registry/components/chart.tsx +36 -3
- package/registry/components/checkbox.tsx +3 -3
- package/registry/components/collapsible.tsx +1 -1
- package/registry/components/command.tsx +1 -1
- package/registry/components/context-menu.tsx +1 -1
- package/registry/components/date-picker.tsx +245 -104
- package/registry/components/expanded/ActivityFeed.tsx +6 -15
- package/registry/components/expanded/Banner.tsx +3 -3
- package/registry/components/expanded/Breadcrumbs.tsx +5 -5
- package/registry/components/expanded/CatalogComponentsShowcase.tsx +13 -13
- package/registry/components/expanded/CatalogDivider.tsx +1 -1
- package/registry/components/expanded/EmptyState.tsx +1 -1
- package/registry/components/expanded/FileUpload.tsx +9 -2
- package/registry/components/expanded/OnboardingStepListItem.tsx +2 -4
- package/registry/components/expanded/PageHeader.tsx +13 -13
- package/registry/components/expanded/Slideout.tsx +15 -415
- package/registry/components/expanded/Steps.tsx +4 -4
- package/registry/components/expanded/Table.tsx +116 -69
- package/registry/components/expanded/Timeline.tsx +3 -3
- package/registry/components/expanded/activityFeed.css +1 -1
- package/registry/components/expanded/breadcrumbs.css +1 -1
- package/registry/components/expanded/divider.css +1 -1
- package/registry/components/expanded/emptyState.css +1 -1
- package/registry/components/expanded/fileUpload.css +6 -6
- package/registry/components/expanded/slideout.css +9 -685
- package/registry/components/expanded/steps.css +3 -3
- package/registry/components/expanded/table.css +2 -2
- package/registry/components/expanded/timeline.css +2 -2
- package/registry/components/input-content.ts +1 -0
- package/registry/components/input-otp.tsx +13 -3
- package/registry/components/input.tsx +68 -43
- package/registry/components/item.tsx +189 -0
- package/registry/components/kbd.tsx +111 -4
- package/registry/components/menu.tsx +31 -245
- package/registry/components/menubar.tsx +1 -1
- package/registry/components/modal.tsx +142 -102
- package/registry/components/native-select.tsx +2 -2
- package/registry/components/pagination.tsx +80 -58
- package/registry/components/popover.tsx +162 -664
- package/registry/components/radio-card.tsx +116 -87
- package/registry/components/segmented-control.tsx +87 -0
- package/registry/components/select-content.tsx +2 -2
- package/registry/components/select.tsx +52 -16
- package/registry/components/sheet.tsx +1 -1
- package/registry/components/sidebar.tsx +1 -1
- package/registry/components/skeleton.css +0 -3
- package/registry/components/social-button.tsx +47 -25
- package/registry/components/spinner.tsx +18 -55
- package/registry/components/tabs.css +1 -1
- package/registry/components/tabs.tsx +8 -4
- package/registry/components/tag.tsx +2 -2
- package/registry/components/textarea.tsx +3 -3
- package/registry/components/toast.tsx +16 -11
- package/registry/components/toggle.tsx +2 -2
- package/registry/components/toolbar.tsx +89 -17
- package/registry/components/tooltip.tsx +1 -1
- package/registry/examples/alert-demo.tsx +25 -5
- package/registry/examples/attribute-demo.tsx +1 -1
- package/registry/examples/autocomplete-demo.tsx +3 -3
- package/registry/examples/avatar-demo.tsx +7 -7
- package/registry/examples/badge-demo.tsx +1 -1
- package/registry/examples/button-demo.tsx +6 -6
- package/registry/examples/button-group-demo.tsx +23 -2
- package/registry/examples/card-demo.tsx +46 -8
- package/registry/examples/carousel-demo.tsx +20 -2
- package/registry/examples/chart-demo.tsx +1 -1
- package/registry/examples/checkbox-demo.tsx +5 -5
- package/registry/examples/collection-filter-bar-demo.tsx +135 -0
- package/registry/examples/command-demo.tsx +3 -3
- package/registry/examples/{expanded/command-bar-demo.tsx → command-palette-demo.tsx} +5 -15
- package/registry/examples/context-menu-demo.tsx +1 -1
- package/registry/examples/control-density-contract-demo.tsx +61 -0
- package/registry/examples/date-picker-demo.tsx +12 -12
- package/registry/examples/divider-demo.tsx +3 -3
- package/registry/examples/expanded/banner-demo.tsx +1 -1
- package/registry/examples/expanded/breadcrumbs-demo.tsx +1 -1
- package/registry/examples/expanded/empty-state-demo.tsx +1 -1
- package/registry/examples/expanded/file-upload-demo.tsx +1 -1
- package/registry/examples/expanded/onboarding-step-demo.tsx +1 -1
- package/registry/examples/expanded/slideout-demo.tsx +2 -2
- package/registry/examples/expanded/steps-demo.tsx +1 -1
- package/registry/examples/expanded/tabs-demo.tsx +1 -1
- package/registry/examples/expanded/timeline-demo.tsx +1 -1
- package/registry/examples/hover-card-demo.tsx +2 -2
- package/registry/examples/input-demo.tsx +6 -6
- package/registry/examples/input-otp-demo.tsx +4 -4
- package/registry/examples/item-demo.tsx +46 -0
- package/registry/examples/kbd-demo.tsx +1 -1
- package/registry/examples/label-demo.tsx +1 -1
- package/registry/examples/menu-demo.tsx +1 -1
- package/registry/examples/modal-demo.tsx +67 -9
- package/registry/examples/navigation-menu-demo.tsx +1 -1
- package/registry/examples/pagination-demo.tsx +6 -3
- package/registry/examples/popover-demo.tsx +19 -19
- package/registry/examples/progress-demo.tsx +1 -1
- package/registry/examples/progress-slider-demo.tsx +1 -1
- package/registry/examples/radio-card-demo.tsx +4 -4
- package/registry/examples/radio-group-demo.tsx +2 -2
- package/registry/examples/resizable-demo.tsx +1 -1
- package/registry/examples/results-toolbar-demo.tsx +44 -0
- package/registry/examples/scroll-area-demo.tsx +3 -3
- package/registry/examples/segmented-control-demo.tsx +39 -0
- package/registry/examples/select-demo.tsx +1 -1
- package/registry/examples/sidebar-demo.tsx +1 -1
- package/registry/examples/slider-demo.tsx +3 -3
- package/registry/examples/social-button-demo.tsx +18 -8
- package/registry/examples/spinner-demo.tsx +13 -13
- package/registry/examples/tabs-demo.tsx +1 -1
- package/registry/examples/tag-demo.tsx +1 -1
- package/registry/examples/textarea-demo.tsx +4 -4
- package/registry/examples/toast-demo.tsx +1 -1
- package/registry/examples/toggle-demo.tsx +6 -6
- package/registry/examples/tooltip-demo.tsx +4 -4
- package/registry/guidance/USAGE.md +27 -0
- package/registry/hooks/use-direction.ts +193 -13
- package/registry/index.json +5311 -377
- package/registry/styles/globals.css +2440 -4061
- package/registry.json +119 -149
- package/schema/config.schema.json +11 -8
- package/schema/registry.schema.json +150 -45
- package/schema/tokens.schema.json +134 -34
- package/src/cli/command-line.js +194 -0
- package/src/cli/config-editors.js +9 -0
- package/src/cli/doctor.js +399 -0
- package/src/cli/file-transaction.js +295 -0
- package/src/cli/global-css.js +153 -0
- package/src/cli/index.js +567 -1613
- package/src/cli/install-plan.js +592 -0
- package/src/cli/install-receipt.js +171 -0
- package/src/cli/jsonc.js +203 -0
- package/src/cli/package-install-state.js +254 -0
- package/src/cli/package-manager.js +238 -0
- package/src/cli/package-plan.js +185 -0
- package/src/cli/package-version.js +97 -0
- package/src/cli/registry-query.js +207 -0
- package/src/cli/reporting.js +55 -0
- package/src/cli/schema-validation.js +19 -0
- package/src/cli/source-scanner.js +686 -0
- package/src/cli/vite-config.js +478 -0
- package/tokens/banhaten.tokens.json +4312 -309
- package/docs/design-system/components/command-bar.md +0 -57
- package/registry/components/expanded/BannerBoard.tsx +0 -225
- package/registry/components/expanded/CatalogTag.tsx +0 -85
- package/registry/components/expanded/CommandBar.tsx +0 -386
- package/registry/components/expanded/IconExplorer.tsx +0 -612
- package/registry/components/expanded/TimelineShowcase.tsx +0 -158
- package/registry/components/expanded/commandBar.css +0 -470
- package/registry/components/expanded/iconExplorer.css +0 -764
- package/registry/components/expanded/iconPacks.ts +0 -866
- package/registry/components/expanded/tag.css +0 -148
- package/registry/examples/expanded/icons-demo.tsx +0 -5
- package/tokens/Color mode.zip +0 -0
- package/tokens/Numbers.zip +0 -0
- package/tokens/Radius.zip +0 -0
- package/tokens/Theme.zip +0 -0
|
@@ -17,36 +17,49 @@ The implementation covers the Alert matrix from Figma:
|
|
|
17
17
|
## API
|
|
18
18
|
|
|
19
19
|
```tsx
|
|
20
|
-
<Alert status="danger" />
|
|
21
|
-
<Alert
|
|
20
|
+
<Alert status="danger" title="Unable to save" />
|
|
21
|
+
<Alert
|
|
22
|
+
actions={[{ label: "عرض التفاصيل", onClick: openDetails }]}
|
|
23
|
+
status="success"
|
|
24
|
+
isExpandable
|
|
25
|
+
dir="rtl"
|
|
26
|
+
title="تم الحفظ"
|
|
27
|
+
/>
|
|
22
28
|
```
|
|
23
29
|
|
|
24
30
|
| Prop | Default |
|
|
25
31
|
| --- | --- |
|
|
26
|
-
| `status` | `
|
|
27
|
-
| `isExpandable` | `false
|
|
28
|
-
| `dir` |
|
|
29
|
-
| `title` |
|
|
30
|
-
| `description` |
|
|
31
|
-
| `
|
|
32
|
-
| `
|
|
33
|
-
| `
|
|
32
|
+
| `status` | `neutral` |
|
|
33
|
+
| `isExpandable` | `false`; requires at least one visible action |
|
|
34
|
+
| `dir` | inherited |
|
|
35
|
+
| `title` | none |
|
|
36
|
+
| `description` | none |
|
|
37
|
+
| `messages` | English close-button message; accepts partial localized overrides |
|
|
38
|
+
| `closeLabel` | overrides `messages.close` |
|
|
39
|
+
| `actions` | none |
|
|
40
|
+
| `showActions` | auto when actions exist |
|
|
41
|
+
| `showCloseButton` | auto when `onClose` exists |
|
|
34
42
|
| `onClose` | none |
|
|
35
43
|
|
|
36
44
|
## Pixel Rules
|
|
37
45
|
|
|
38
46
|
- Compact alerts are `470px` wide and `56px` tall with `16px` padding.
|
|
39
|
-
- Expandable alerts are `500px` wide
|
|
47
|
+
- Expandable alerts are `500px` wide, content-sized, and use `20px 16px` padding.
|
|
48
|
+
- `isExpandable` falls back to the compact layout when no action is visible.
|
|
40
49
|
- Compact rows use `8px` radius; expandable rows use `10px` radius.
|
|
41
50
|
- Status icons and close controls are `20px`; the close glyph is `16px`.
|
|
42
51
|
- Compact content uses `8px` between icon and title.
|
|
52
|
+
- Expanded titles align to the block-start edge of the status icon.
|
|
43
53
|
- Expandable content uses `12px` between icon, copy, close, and action rows.
|
|
54
|
+
- The description-to-actions gap remains exactly `12px` as copy wraps.
|
|
55
|
+
- Expanded action rows retain `20px` of block-end padding.
|
|
56
|
+
- Expanded height grows with title and description content; direction does not select a height.
|
|
44
57
|
- Titles use `15px / 24px` medium text.
|
|
45
58
|
- Descriptions use `14px / 20px` regular text at `80%` opacity.
|
|
46
59
|
|
|
47
60
|
## Token Contract
|
|
48
61
|
|
|
49
|
-
The component consumes Banhaten semantic tokens and component aliases. Do not hard-code Figma fallback literals in component source; promote any Figma value into `
|
|
62
|
+
The component consumes Banhaten semantic tokens and component aliases. Do not hard-code Figma fallback literals in component source; promote any Figma value into its owned `tokens/source/` fragment as a `--bh-*` token or alias first.
|
|
50
63
|
|
|
51
64
|
- Backgrounds: `--bh-bg-danger-subtle`, `--bh-bg-success-subtle`, `--bh-bg-warning-subtle`, `--bh-bg-info-subtle`, `--bh-bg-neutral-subtle`
|
|
52
65
|
- Borders: `--bh-border-danger-subtle`, `--bh-border-success-subtle`, `--bh-border-warning-subtle`, `--bh-border-info-subtle`, `--bh-border-subtle`, `--bh-border-default`
|
|
@@ -58,7 +71,10 @@ The component consumes Banhaten semantic tokens and component aliases. Do not ha
|
|
|
58
71
|
|
|
59
72
|
- The close affordance is a real button.
|
|
60
73
|
- Action links are rendered as real buttons to support product actions.
|
|
61
|
-
-
|
|
74
|
+
- Warning and danger use `role="alert"`; other statuses use `role="status"` unless overridden.
|
|
75
|
+
- `dir` inherits by default and controls visual and reading direction only.
|
|
76
|
+
- The close button keeps its English default under RTL. Pass `closeLabel` or `messages` for localized accessibility copy.
|
|
77
|
+
- Product copy and action behavior are always explicit; the component does not ship demo text or no-op controls.
|
|
62
78
|
|
|
63
79
|
## Install
|
|
64
80
|
|
|
@@ -74,6 +90,22 @@ Open the live component page or run `npx banhaten docs alert` to inspect source
|
|
|
74
90
|
|
|
75
91
|
## RTL Rules
|
|
76
92
|
|
|
77
|
-
- `inheritsDirection`:
|
|
93
|
+
- `inheritsDirection`: true
|
|
94
|
+
- `messages`: Direction does not select the close-button language. Pass closeLabel or messages explicitly.
|
|
78
95
|
- `textAlignment`: Uses dir="auto" on title and description while the root dir prop mirrors icon, action, and close placement.
|
|
79
96
|
- `spacing`: Uses flexbox, gap, and logical direction so compact and expandable RTL layouts match the Figma matrix.
|
|
97
|
+
|
|
98
|
+
<!-- registry-contract:start -->
|
|
99
|
+
## Registry Contract
|
|
100
|
+
|
|
101
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
102
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
103
|
+
|
|
104
|
+
| Field | Values |
|
|
105
|
+
| --- | --- |
|
|
106
|
+
| `supportedExports` | `components/alert.tsx: Alert, alertVariants, arabicAlertMessages` |
|
|
107
|
+
| `parts` | `Alert` |
|
|
108
|
+
| `registryDependencies` | None |
|
|
109
|
+
| `tokens` | `--bh-alert-compact-height`, `--bh-alert-compact-padding`, `--bh-alert-compact-radius`, `--bh-alert-compact-width`, `--bh-alert-expanded-padding-x`, `--bh-alert-expanded-padding-y`, `--bh-alert-expanded-radius`, `--bh-alert-expanded-width`, `--bh-alert-icon-size`, `--bh-bg-danger-subtle`, `--bh-bg-info-subtle`, `--bh-bg-neutral-subtle`, `--bh-bg-success-subtle`, `--bh-bg-warning-subtle`, `--bh-border-danger-subtle`, `--bh-border-default`, `--bh-border-info-subtle`, `--bh-border-subtle`, `--bh-border-success-subtle`, `--bh-border-warning-subtle`, `--bh-border-width-default`, `--bh-content-brand-default`, `--bh-content-brand-strong`, `--bh-content-danger-default`, `--bh-content-danger-strong`, `--bh-content-default`, `--bh-content-subtle`, `--bh-content-success-default`, `--bh-content-success-strong`, `--bh-content-warning-default`, `--bh-content-warning-strong`, `--bh-font-family`, `--bh-font-weight-medium`, `--bh-font-weight-regular`, `--bh-icon-stroke-225`, `--bh-opacity-80`, `--bh-radius-full`, `--bh-space-3xl-16`, `--bh-space-md-8`, `--bh-space-xl-12`, `--bh-space-xs-4`, `--bh-space-xxs-2`, `--bh-text-base-letter-spacing`, `--bh-text-body-md-medium-font-size`, `--bh-text-body-md-medium-letter-spacing`, `--bh-text-body-md-medium-line-height`, `--bh-text-body-md-underline-font-size`, `--bh-text-body-md-underline-font-weight`, `--bh-text-body-md-underline-letter-spacing`, `--bh-text-body-md-underline-line-height`, `--bh-text-body-sm-regular-font-size`, `--bh-text-body-sm-regular-letter-spacing`, `--bh-text-body-sm-regular-line-height`, `--shadow-button-focus` |
|
|
110
|
+
| `variants` | `danger`, `success`, `warning`, `info`, `neutral` |
|
|
111
|
+
<!-- registry-contract:end -->
|
|
@@ -42,3 +42,18 @@ Open the live component page or run `npx banhaten docs aspect-ratio` to inspect
|
|
|
42
42
|
|
|
43
43
|
- `inheritsDirection`: false
|
|
44
44
|
- `geometry`: Aspect Ratio controls media geometry and does not alter text direction.
|
|
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/aspect-ratio.tsx: AspectRatio` |
|
|
55
|
+
| `parts` | `AspectRatio` |
|
|
56
|
+
| `registryDependencies` | None |
|
|
57
|
+
| `features` | `fixed media ratios`, `preview surfaces`, `responsive sizing` |
|
|
58
|
+
| `tokens` | `--bh-bg-neutral-subtle`, `--bh-radius-xl-10` |
|
|
59
|
+
<!-- registry-contract:end -->
|
|
@@ -85,3 +85,19 @@ Covered source files: `components/attribute.tsx`.
|
|
|
85
85
|
## Accessibility
|
|
86
86
|
|
|
87
87
|
Keep native semantics, accessible names, keyboard reachability, focus-visible treatment, and status/error announcements intact when composing this component.
|
|
88
|
+
|
|
89
|
+
<!-- registry-contract:start -->
|
|
90
|
+
## Registry Contract
|
|
91
|
+
|
|
92
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
93
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
94
|
+
|
|
95
|
+
| Field | Values |
|
|
96
|
+
| --- | --- |
|
|
97
|
+
| `supportedExports` | `components/attribute.tsx: AttributeCard, AttributeHeader, AttributeItem, AttributeLabel, AttributeList, AttributeValue, attributeCardVariants, attributeHeaderVariants, attributeItemVariants, attributeLabelVariants, attributeListVariants, attributeValueVariants` |
|
|
98
|
+
| `parts` | `AttributeCard`, `AttributeHeader`, `AttributeList`, `AttributeItem`, `AttributeLabel`, `AttributeValue` |
|
|
99
|
+
| `registryDependencies` | None |
|
|
100
|
+
| `densities` | `compact`, `default`, `comfortable` |
|
|
101
|
+
| `layouts` | `inline`, `end`, `stacked`, `two-column` |
|
|
102
|
+
| `tokens` | `--bh-attribute-header-icon-size`, `--bh-attribute-header-icon-size-lg`, `--bh-attribute-label-width`, `--bh-bg-default`, `--bh-bg-neutral-soft`, `--bh-border-subtle`, `--bh-content-default`, `--bh-content-subtle`, `--bh-radius-2xl-12`, `--bh-radius-full`, `--bh-radius-lg-8`, `--bh-space-3xl-16`, `--bh-space-4xl-20`, `--bh-space-5xl-24`, `--bh-space-6xl-32`, `--bh-space-md-8`, `--bh-space-sm-6`, `--bh-space-xl-12`, `--bh-space-xs-4`, `--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-text-heading-sm-medium-font-size`, `--bh-text-heading-sm-medium-font-weight`, `--bh-text-heading-sm-medium-letter-spacing`, `--bh-text-heading-sm-medium-line-height` |
|
|
103
|
+
<!-- registry-contract:end -->
|
|
@@ -72,3 +72,22 @@ Open the live component page or run `npx banhaten docs autocomplete` to inspect
|
|
|
72
72
|
- `composition`: Uses the existing Input field, Select menu and menu item rows, and Tag chips instead of introducing new visual primitives.
|
|
73
73
|
- `spacing`: Uses logical positioning, logical gaps, and inherited direction so the input, menu rows, checks, helper text, and selected tags mirror naturally.
|
|
74
74
|
- `textDirection`: Labels, option text, helper text, and tag labels use dir="auto" through the composed primitives.
|
|
75
|
+
|
|
76
|
+
<!-- registry-contract:start -->
|
|
77
|
+
## Registry Contract
|
|
78
|
+
|
|
79
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
80
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
81
|
+
|
|
82
|
+
| Field | Values |
|
|
83
|
+
| --- | --- |
|
|
84
|
+
| `supportedExports` | `components/autocomplete.tsx: Autocomplete, defaultFilterOptions` |
|
|
85
|
+
| `parts` | `Autocomplete` |
|
|
86
|
+
| `registryDependencies` | `input`, `popover`, `select`, `tag` |
|
|
87
|
+
| `features` | `filtering`, `keyboard navigation`, `controlled value`, `controlled input value`, `controlled open state`, `selected tags`, `empty state` |
|
|
88
|
+
| `modes` | `single`, `multiple` |
|
|
89
|
+
| `sizes` | `md`, `lg` |
|
|
90
|
+
| `states` | `default`, `filled`, `error`, `disabled` |
|
|
91
|
+
| `tokens` | `--bh-autocomplete-menu-max-height`, `--bh-content-subtle`, `--bh-icon-stroke-225`, `--bh-input-icon-size`, `--bh-input-width`, `--bh-select-item-hover-bg`, `--bh-select-item-padding-x`, `--bh-select-menu-width`, `--bh-select-width`, `--bh-space-18xl-320`, `--bh-space-md-8`, `--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` |
|
|
92
|
+
| `variants` | `default`, `soft` |
|
|
93
|
+
<!-- registry-contract:end -->
|
|
@@ -50,3 +50,21 @@ Open the live component page or run `npx banhaten docs avatar` to inspect source
|
|
|
50
50
|
- `inheritsDirection`: true
|
|
51
51
|
- `groupOverlap`: Uses logical -ms spacing so overlap reverses naturally in RTL.
|
|
52
52
|
- `badgePlacement`: Status dots use logical end/bottom positioning; avatar actions use logical end/top positioning.
|
|
53
|
+
|
|
54
|
+
<!-- registry-contract:start -->
|
|
55
|
+
## Registry Contract
|
|
56
|
+
|
|
57
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
58
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
59
|
+
|
|
60
|
+
| Field | Values |
|
|
61
|
+
| --- | --- |
|
|
62
|
+
| `supportedExports` | `components/avatar.tsx: Avatar, AvatarAction, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarIcon, AvatarImage, AvatarStatus, avatarActionVariants, avatarStatusVariants, avatarVariants` |
|
|
63
|
+
| `parts` | `Avatar`, `AvatarImage`, `AvatarFallback`, `AvatarIcon`, `AvatarBadge`, `AvatarStatus`, `AvatarAction`, `AvatarGroup`, `AvatarGroupCount` |
|
|
64
|
+
| `registryDependencies` | None |
|
|
65
|
+
| `actions` | `custom`, `edit`, `verified`, `remove` |
|
|
66
|
+
| `forms` | `circular`, `rounded` |
|
|
67
|
+
| `sizes` | `2xs`, `xs`, `sm`, `md`, `lg`, `xl`, `2xl`, `3xl`, `4xl` |
|
|
68
|
+
| `statusColors` | `offline`, `busy`, `blocked`, `available`, `away` |
|
|
69
|
+
| `tokens` | `--bh-avatar-action-icon-size`, `--bh-avatar-action-icon-size-2xl`, `--bh-avatar-action-icon-size-3xl`, `--bh-avatar-action-icon-size-4xl`, `--bh-avatar-action-icon-size-large`, `--bh-avatar-action-icon-size-medium`, `--bh-avatar-action-icon-size-small`, `--bh-avatar-action-icon-size-tiny`, `--bh-avatar-action-icon-size-xlarge`, `--bh-avatar-action-icon-size-xsmall`, `--bh-avatar-action-size`, `--bh-avatar-action-size-2xl`, `--bh-avatar-action-size-3xl`, `--bh-avatar-action-size-4xl`, `--bh-avatar-action-size-large`, `--bh-avatar-action-size-medium`, `--bh-avatar-action-size-small`, `--bh-avatar-action-size-tiny`, `--bh-avatar-action-size-xlarge`, `--bh-avatar-action-size-xsmall`, `--bh-avatar-fallback-font-size-2xl`, `--bh-avatar-fallback-font-size-2xs`, `--bh-avatar-fallback-font-size-3xl`, `--bh-avatar-fallback-font-size-4xl`, `--bh-avatar-fallback-font-size-lg`, `--bh-avatar-fallback-font-size-md`, `--bh-avatar-fallback-font-size-sm`, `--bh-avatar-fallback-font-size-xl`, `--bh-avatar-fallback-font-size-xs`, `--bh-avatar-fallback-size`, `--bh-avatar-icon-size`, `--bh-avatar-icon-size-2xl`, `--bh-avatar-icon-size-2xs`, `--bh-avatar-icon-size-3xl`, `--bh-avatar-icon-size-4xl`, `--bh-avatar-icon-size-lg`, `--bh-avatar-icon-size-md`, `--bh-avatar-icon-size-sm`, `--bh-avatar-icon-size-xl`, `--bh-avatar-icon-size-xs`, `--bh-avatar-radius`, `--bh-avatar-size`, `--bh-avatar-size-2xl`, `--bh-avatar-size-2xs`, `--bh-avatar-size-3xl`, `--bh-avatar-size-4xl`, `--bh-avatar-size-lg`, `--bh-avatar-size-md`, `--bh-avatar-size-sm`, `--bh-avatar-size-xl`, `--bh-avatar-size-xs`, `--bh-avatar-status-ring`, `--bh-avatar-status-ring-default`, `--bh-avatar-status-ring-thin`, `--bh-avatar-status-size`, `--bh-avatar-status-size-large`, `--bh-avatar-status-size-medium`, `--bh-avatar-status-size-small`, `--bh-avatar-status-size-tiny`, `--bh-avatar-status-size-xlarge`, `--bh-avatar-status-size-xsmall`, `--bh-bg-accent-golden-default`, `--bh-bg-accent-red-default`, `--bh-bg-accent-sky-base`, `--bh-bg-default`, `--bh-bg-neutral-default`, `--bh-bg-neutral-medium`, `--bh-bg-neutral-subtle`, `--bh-bg-success-default`, `--bh-border-width-default`, `--bh-content-on-brand`, `--bh-content-subtle`, `--bh-font-weight-semibold`, `--bh-icon-stroke-210`, `--bh-icon-stroke-240`, `--bh-icon-stroke-260`, `--bh-icon-stroke-280`, `--bh-interactive-brand-default`, `--bh-interactive-danger-default`, `--bh-radius-full`, `--bh-radius-lg-8`, `--bh-space-md-8`, `--bh-space-none`, `--bh-space-xl-12`, `--bh-space-xxs-2`, `--bh-text-body-sm-medium-font-size`, `--shadow-avatar-badge` |
|
|
70
|
+
<!-- registry-contract:end -->
|
|
@@ -51,3 +51,22 @@ Open the live component page or run `npx banhaten docs badge` to inspect source
|
|
|
51
51
|
- `directionalIconFlip`: Use data-rtl-flip="true" on arrows that should mirror.
|
|
52
52
|
- `textDirection`: Uses dir="auto" by default for short Arabic and English labels.
|
|
53
53
|
- `legacyVariants`: The previous variant prop is still accepted as a compatibility shim.
|
|
54
|
+
|
|
55
|
+
<!-- registry-contract:start -->
|
|
56
|
+
## Registry Contract
|
|
57
|
+
|
|
58
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
59
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
60
|
+
|
|
61
|
+
| Field | Values |
|
|
62
|
+
| --- | --- |
|
|
63
|
+
| `supportedExports` | `components/badge.tsx: Badge, badgeVariants` |
|
|
64
|
+
| `parts` | `Badge` |
|
|
65
|
+
| `registryDependencies` | None |
|
|
66
|
+
| `colors` | `neutral`, `blue`, `green`, `amber`, `danger`, `purple`, `fuchsia`, `rose`, `sky`, `golden` |
|
|
67
|
+
| `options` | `splitAction` |
|
|
68
|
+
| `sizes` | `sm`, `lg` |
|
|
69
|
+
| `styles` | `light`, `outline`, `solid` |
|
|
70
|
+
| `tokens` | `--bh-badge-focus-ring-width`, `--bh-badge-outline-border-width`, `--bh-bg-accent-amber-default`, `--bh-bg-accent-amber-subtle`, `--bh-bg-accent-blue-default`, `--bh-bg-accent-blue-subtle`, `--bh-bg-accent-fuchsia-default`, `--bh-bg-accent-fuchsia-subtle`, `--bh-bg-accent-golden-default`, `--bh-bg-accent-golden-subtle`, `--bh-bg-accent-green-default`, `--bh-bg-accent-green-subtle`, `--bh-bg-accent-purple-default`, `--bh-bg-accent-purple-subtle`, `--bh-bg-accent-red-default`, `--bh-bg-accent-red-subtle`, `--bh-bg-accent-rose-default`, `--bh-bg-accent-rose-subtle`, `--bh-bg-accent-sky-base`, `--bh-bg-accent-sky-subtle`, `--bh-bg-neutral-default`, `--bh-bg-neutral-subtle`, `--bh-border-accent-amber-strong`, `--bh-border-accent-amber-subtle`, `--bh-border-accent-blue-strong`, `--bh-border-accent-blue-subtle`, `--bh-border-accent-fuchsia-strong`, `--bh-border-accent-fuchsia-subtle`, `--bh-border-accent-golden-strong`, `--bh-border-accent-golden-subtle`, `--bh-border-accent-green-strong`, `--bh-border-accent-green-subtle`, `--bh-border-accent-purple-strong`, `--bh-border-accent-purple-subtle`, `--bh-border-accent-red-strong`, `--bh-border-accent-red-subtle`, `--bh-border-accent-rose-strong`, `--bh-border-accent-rose-subtle`, `--bh-border-accent-sky-strong`, `--bh-border-accent-sky-subtle`, `--bh-border-default`, `--bh-border-focus`, `--bh-border-focus-danger`, `--bh-border-strong`, `--bh-border-subtle`, `--bh-content-accent-amber-default`, `--bh-content-accent-amber-strong`, `--bh-content-accent-blue-default`, `--bh-content-accent-blue-strong`, `--bh-content-accent-fuchsia-default`, `--bh-content-accent-fuchsia-strong`, `--bh-content-accent-golden-default`, `--bh-content-accent-golden-strong`, `--bh-content-accent-green-default`, `--bh-content-accent-green-strong`, `--bh-content-accent-purple-default`, `--bh-content-accent-purple-strong`, `--bh-content-accent-red-default`, `--bh-content-accent-red-strong`, `--bh-content-accent-rose-default`, `--bh-content-accent-rose-strong`, `--bh-content-accent-sky-default`, `--bh-content-accent-sky-strong`, `--bh-content-default`, `--bh-content-link`, `--bh-content-muted`, `--bh-content-on-color`, `--bh-content-on-light`, `--bh-content-subtle`, `--bh-interactive-ghost-default`, `--bh-opacity-35`, `--bh-radius-full`, `--bh-radius-xs-2`, `--bh-space-2xl-14`, `--bh-space-3xl-16`, `--bh-space-5xl-24`, `--bh-space-md-8`, `--bh-space-none`, `--bh-space-sm-6`, `--bh-space-xl-12`, `--bh-space-xs-4`, `--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-semibold-font-weight`, `--bh-text-body-3xs-medium-font-size`, `--bh-text-body-3xs-medium-font-weight`, `--bh-text-body-3xs-medium-letter-spacing`, `--bh-text-body-3xs-medium-line-height`, `--bh-text-body-3xs-semibold-font-weight` |
|
|
71
|
+
| `types` | `default`, `leading-icon`, `trailing-icon`, `dot`, `flag` |
|
|
72
|
+
<!-- registry-contract:end -->
|
|
@@ -53,7 +53,7 @@ The implementation covers the Banner matrix from Figma:
|
|
|
53
53
|
|
|
54
54
|
## Token Contract
|
|
55
55
|
|
|
56
|
-
The component consumes Banhaten semantic tokens and component aliases. Do not hard-code Figma fallback literals in component source; promote any Figma value into `
|
|
56
|
+
The component consumes Banhaten semantic tokens and component aliases. Do not hard-code Figma fallback literals in component source; promote any Figma value into its owned `tokens/source/` fragment as a `--bh-*` token or alias first.
|
|
57
57
|
|
|
58
58
|
- Backgrounds: `--bh-bg-brand-default`, `--bh-bg-brand-soft`, `--bh-bg-muted`, `--bh-bg-always-white`
|
|
59
59
|
- Content: `--bh-content-default`, `--bh-content-inverse`, `--bh-content-link`, `--bh-content-muted`, `--bh-content-subtle`
|
|
@@ -83,3 +83,17 @@ Open the live component page or run `npx banhaten docs banner` to inspect source
|
|
|
83
83
|
## RTL Rules
|
|
84
84
|
|
|
85
85
|
This component has no special RTL contract beyond inherited document direction and logical spacing.
|
|
86
|
+
|
|
87
|
+
<!-- registry-contract:start -->
|
|
88
|
+
## Registry Contract
|
|
89
|
+
|
|
90
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
91
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
92
|
+
|
|
93
|
+
| Field | Values |
|
|
94
|
+
| --- | --- |
|
|
95
|
+
| `supportedExports` | `components/expanded/Banner.tsx: Banner` |
|
|
96
|
+
| `parts` | `Banner` |
|
|
97
|
+
| `registryDependencies` | `button`, `input` |
|
|
98
|
+
| `tokens` | `--bh-bg-brand-default`, `--bh-bg-brand-soft`, `--bh-bg-muted`, `--bh-border-subtle`, `--bh-content-default`, `--bh-content-inverse`, `--bh-content-link`, `--bh-content-subtle`, `--bh-font-family`, `--bh-font-weight-regular`, `--bh-font-weight-semibold`, `--bh-icon-stroke-210`, `--bh-icon-stroke-225`, `--bh-input-width`, `--bh-radius-xl-10`, `--bh-space-3xl-16`, `--bh-space-4xl-20`, `--bh-space-8xl-48`, `--bh-space-lg-10`, `--bh-space-md-8`, `--bh-space-xl-12`, `--bh-space-xs-4`, `--bh-space-xxs-2`, `--bh-space-xxxs-1`, `--bh-text-body-2xs-medium-font-size`, `--bh-text-body-2xs-medium-font-weight`, `--bh-text-body-2xs-medium-line-height`, `--bh-text-body-lg-medium-font-size`, `--bh-text-body-lg-medium-font-weight`, `--bh-text-body-lg-medium-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`, `--shadow-component-default` |
|
|
99
|
+
<!-- registry-contract:end -->
|
|
@@ -172,3 +172,17 @@ Covered source files: `components/expanded/breadcrumbs.css`, `components/expande
|
|
|
172
172
|
## RTL Rules
|
|
173
173
|
|
|
174
174
|
This component has no special RTL contract beyond inherited document direction and logical spacing.
|
|
175
|
+
|
|
176
|
+
<!-- registry-contract:start -->
|
|
177
|
+
## Registry Contract
|
|
178
|
+
|
|
179
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
180
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
181
|
+
|
|
182
|
+
| Field | Values |
|
|
183
|
+
| --- | --- |
|
|
184
|
+
| `supportedExports` | `components/expanded/Breadcrumbs.tsx: BreadcrumbFolderIcon, BreadcrumbHomeIcon, Breadcrumbs` |
|
|
185
|
+
| `parts` | `Breadcrumbs` |
|
|
186
|
+
| `registryDependencies` | None |
|
|
187
|
+
| `tokens` | `--bh-bg-raised`, `--bh-border-focus`, `--bh-border-subtle`, `--bh-content-default`, `--bh-content-subtle`, `--bh-focus-ring-width`, `--bh-font-family`, `--bh-font-weight-medium`, `--bh-icon-stroke-190`, `--bh-icon-stroke-200`, `--bh-icon-stroke-225`, `--bh-interactive-ghost-hover`, `--bh-radius-lg-8`, `--bh-radius-sm-4`, `--bh-space-3xl-16`, `--bh-space-4xl-20`, `--bh-space-6xl-32`, `--bh-space-md-8`, `--bh-space-xl-12`, `--bh-space-xs-4`, `--bh-space-xxs-2`, `--bh-space-xxxs-1`, `--bh-text-base-letter-spacing`, `--bh-text-body-2xs-regular-line-height`, `--bh-text-body-md-font-size`, `--bh-text-body-md-line-height` |
|
|
188
|
+
<!-- registry-contract:end -->
|
|
@@ -23,6 +23,16 @@ Use `ButtonGroup` as the connected container and `ButtonGroupItem` for each acti
|
|
|
23
23
|
</ButtonGroup>
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
+
Use `ToggleGroup` when the connected controls own a single or multiple pressed-value model. It includes controlled and uncontrolled state plus Home, End, and direction-aware arrow-key focus movement.
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
<ToggleGroup aria-label="Text alignment" defaultValue="start">
|
|
30
|
+
<ToggleGroupItem value="start">Start</ToggleGroupItem>
|
|
31
|
+
<ToggleGroupItem value="center">Center</ToggleGroupItem>
|
|
32
|
+
<ToggleGroupItem value="end">End</ToggleGroupItem>
|
|
33
|
+
</ToggleGroup>
|
|
34
|
+
```
|
|
35
|
+
|
|
26
36
|
## Variants
|
|
27
37
|
|
|
28
38
|
| Prop | Values |
|
|
@@ -31,6 +41,9 @@ Use `ButtonGroup` as the connected container and `ButtonGroupItem` for each acti
|
|
|
31
41
|
| `mode` | `default`, `iconOnly` |
|
|
32
42
|
| `ButtonGroupItem aria-pressed` | `true`, `false` |
|
|
33
43
|
| `ButtonGroupItem disabled` | `boolean` |
|
|
44
|
+
| `ToggleGroup type` | `single`, `multiple` |
|
|
45
|
+
| `ToggleGroup value`, `defaultValue` | `string`, `string[]` |
|
|
46
|
+
| `ToggleGroupItem value` | `string` |
|
|
34
47
|
|
|
35
48
|
Interaction styling is applied through native CSS pseudo states: `:hover`, `:active`, `:focus-visible`, `:disabled`, and `aria-pressed="true"`.
|
|
36
49
|
|
|
@@ -81,3 +94,24 @@ Covered source files: `components/button-group.tsx`.
|
|
|
81
94
|
## Accessibility
|
|
82
95
|
|
|
83
96
|
This component relies on `@radix-ui/react-slot` for its base accessibility behavior. Keep required labels, titles, descriptions, and focusable trigger/content relationships intact when composing it.
|
|
97
|
+
|
|
98
|
+
<!-- registry-contract:start -->
|
|
99
|
+
## Registry Contract
|
|
100
|
+
|
|
101
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
102
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
103
|
+
|
|
104
|
+
| Field | Values |
|
|
105
|
+
| --- | --- |
|
|
106
|
+
| `supportedExports` | `components/button-group.tsx: ButtonGroup, ButtonGroupItem, ButtonGroupLabel, ToggleGroup, ToggleGroupItem, buttonGroupItemVariants, buttonGroupLabelVariants, buttonGroupVariants` |
|
|
107
|
+
| `parts` | `ButtonGroup`, `ButtonGroupItem`, `ButtonGroupLabel`, `ToggleGroup`, `ToggleGroupItem` |
|
|
108
|
+
| `registryDependencies` | None |
|
|
109
|
+
| `props.density` | `"compact" \| "default" \| "comfortable"; default "comfortable"; Preferred cross-component sizing contract. Maps to legacy xs, sm, or md group sizes.` |
|
|
110
|
+
| `props.itemWidth` | `"fixed" \| "content"; default "fixed"; Uses the reviewed fixed matrix widths or lets each text item hug its content.` |
|
|
111
|
+
| `densities` | `compact`, `default`, `comfortable` |
|
|
112
|
+
| `modes` | `default`, `iconOnly` |
|
|
113
|
+
| `selectionTypes` | `single`, `multiple` |
|
|
114
|
+
| `sizes` | `md`, `sm`, `xs` |
|
|
115
|
+
| `tokens` | `--bh-border-width-default`, `--bh-button-group-bg`, `--bh-button-group-border`, `--bh-button-group-content`, `--bh-button-group-content-active`, `--bh-button-group-content-disabled`, `--bh-button-group-divider`, `--bh-button-group-icon-size`, `--bh-button-group-item-active-bg`, `--bh-button-group-item-bg`, `--bh-button-group-item-disabled-bg`, `--bh-button-group-item-hover-bg`, `--bh-button-group-item-pressed-bg`, `--bh-button-group-label-padding-x`, `--bh-button-group-md-gap`, `--bh-button-group-md-height`, `--bh-button-group-md-icon-padding-x`, `--bh-button-group-md-item-rtl-width`, `--bh-button-group-md-item-width`, `--bh-button-group-md-padding-x`, `--bh-button-group-radius`, `--bh-button-group-sm-gap`, `--bh-button-group-sm-height`, `--bh-button-group-sm-icon-padding-x`, `--bh-button-group-sm-item-rtl-width`, `--bh-button-group-sm-item-width`, `--bh-button-group-sm-padding-x`, `--bh-button-group-xs-gap`, `--bh-button-group-xs-height`, `--bh-button-group-xs-icon-padding-x`, `--bh-button-group-xs-item-rtl-width`, `--bh-button-group-xs-item-width`, `--bh-button-group-xs-padding-x`, `--bh-text-button-font-size`, `--bh-text-button-font-weight`, `--bh-text-button-letter-spacing`, `--bh-text-button-line-height`, `--bh-z-raised`, `--shadow-button-group`, `--shadow-button-group-focus`, `--shadow-component-default` |
|
|
116
|
+
| `widths` | `fixed`, `content` |
|
|
117
|
+
<!-- registry-contract:end -->
|
|
@@ -75,3 +75,21 @@ Button consumes semantic interaction, content, border, radius, typography, spaci
|
|
|
75
75
|
```bash
|
|
76
76
|
npx banhaten add button
|
|
77
77
|
```
|
|
78
|
+
|
|
79
|
+
<!-- registry-contract:start -->
|
|
80
|
+
## Registry Contract
|
|
81
|
+
|
|
82
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
83
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
84
|
+
|
|
85
|
+
| Field | Values |
|
|
86
|
+
| --- | --- |
|
|
87
|
+
| `supportedExports` | `components/button.tsx: Button, buttonVariants` |
|
|
88
|
+
| `parts` | `Button` |
|
|
89
|
+
| `registryDependencies` | `spinner` |
|
|
90
|
+
| `props.density` | `"compact" \| "default" \| "comfortable"; default "comfortable"; Preferred cross-component sizing contract. Maps to legacy xs, sm, or default sizes while preserving icon-only sizing.` |
|
|
91
|
+
| `densities` | `compact`, `default`, `comfortable` |
|
|
92
|
+
| `sizes` | `xs`, `sm`, `default`, `lg`, `xl`, `icon-xs`, `icon-sm`, `icon`, `icon-lg`, `icon-xl` |
|
|
93
|
+
| `tokens` | `--bh-bg-always-white`, `--bh-bg-success-bold`, `--bh-bg-success-default`, `--bh-bg-success-strong`, `--bh-bg-warning-bold`, `--bh-bg-warning-default`, `--bh-bg-warning-strong`, `--bh-border-brand-strong`, `--bh-border-danger-strong`, `--bh-border-default`, `--bh-border-disabled`, `--bh-border-focus`, `--bh-border-width-default`, `--bh-button-gap`, `--bh-button-gap-xs`, `--bh-button-icon-offset`, `--bh-button-icon-size`, `--bh-button-label-padding-x`, `--bh-button-lg-height`, `--bh-button-lg-padding-x`, `--bh-button-lg-padding-y`, `--bh-button-md-height`, `--bh-button-md-padding-x`, `--bh-button-secondary-border`, `--bh-button-secondary-focus-border`, `--bh-button-sm-height`, `--bh-button-sm-padding-x`, `--bh-button-sm-padding-y`, `--bh-button-xl-height`, `--bh-button-xl-padding-y`, `--bh-button-xs-height`, `--bh-button-xs-padding-x`, `--bh-content-brand-default`, `--bh-content-danger-default`, `--bh-content-default`, `--bh-content-disabled`, `--bh-content-on-brand`, `--bh-content-on-color`, `--bh-content-on-light`, `--bh-control-default`, `--bh-interactive-brand-default`, `--bh-interactive-brand-disabled`, `--bh-interactive-brand-hover`, `--bh-interactive-brand-pressed`, `--bh-interactive-danger-default`, `--bh-interactive-danger-disabled`, `--bh-interactive-danger-hover`, `--bh-interactive-danger-pressed`, `--bh-interactive-danger-soft-default`, `--bh-interactive-danger-soft-disabled`, `--bh-interactive-danger-soft-hover`, `--bh-interactive-danger-soft-pressed`, `--bh-interactive-ghost-default`, `--bh-interactive-ghost-disabled`, `--bh-interactive-ghost-hover`, `--bh-interactive-ghost-pressed`, `--bh-interactive-outlined-default`, `--bh-interactive-outlined-disabled`, `--bh-interactive-outlined-hover`, `--bh-interactive-outlined-pressed`, `--bh-interactive-secondary-default`, `--bh-interactive-secondary-disabled`, `--bh-interactive-secondary-hover`, `--bh-interactive-secondary-pressed`, `--bh-interactive-soft-default`, `--bh-interactive-soft-disabled`, `--bh-interactive-soft-hover`, `--bh-interactive-soft-pressed`, `--bh-opacity-30`, `--bh-space-none`, `--bh-text-button-font-size`, `--bh-text-button-font-weight`, `--bh-text-button-letter-spacing`, `--bh-text-button-line-height`, `--shadow-button-danger-focus`, `--shadow-button-focus`, `--shadow-button-raised`, `--shadow-button-secondary`, `--shadow-button-secondary-focus`, `--shadow-button-soft` |
|
|
94
|
+
| `variants` | `default`, `secondary`, `soft`, `outline`, `ghost`, `ghost-primary`, `danger`, `soft-danger`, `white` |
|
|
95
|
+
<!-- registry-contract:end -->
|
|
@@ -48,7 +48,7 @@ Card uses logical spacing, inherited direction, and `dir="auto"` copy wrappers s
|
|
|
48
48
|
|
|
49
49
|
## API
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
Supported runtime exports: `Card`, `CardActions`, `CardFooter`, `CardMedia`, `cardVariants`.
|
|
52
52
|
|
|
53
53
|
| Contract | Values |
|
|
54
54
|
| --- | --- |
|
|
@@ -76,3 +76,20 @@ Covered source files: `components/card.tsx`, `assets/images/art-01.jpg`.
|
|
|
76
76
|
## Accessibility
|
|
77
77
|
|
|
78
78
|
Keep native semantics, accessible names, keyboard reachability, focus-visible treatment, and status/error announcements intact when composing this component.
|
|
79
|
+
|
|
80
|
+
<!-- registry-contract:start -->
|
|
81
|
+
## Registry Contract
|
|
82
|
+
|
|
83
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
84
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
85
|
+
|
|
86
|
+
| Field | Values |
|
|
87
|
+
| --- | --- |
|
|
88
|
+
| `supportedExports` | `components/card.tsx: Card, CardActions, CardFooter, CardMedia, cardVariants` |
|
|
89
|
+
| `parts` | `Card`, `CardMedia`, `CardFooter`, `CardActions` |
|
|
90
|
+
| `registryDependencies` | `button` |
|
|
91
|
+
| `breakpoints` | `desktop`, `mobile` |
|
|
92
|
+
| `orientations` | `vertical`, `horizontal` |
|
|
93
|
+
| `tokens` | `--bh-bg-accent-green-subtle`, `--bh-bg-accent-sky-subtle`, `--bh-bg-neutral-subtle`, `--bh-bg-raised`, `--bh-border-subtle`, `--bh-border-width-default`, `--bh-card-actions-max-width`, `--bh-card-bg`, `--bh-card-border`, `--bh-card-content-padding`, `--bh-card-desktop-content-padding`, `--bh-card-desktop-full-height`, `--bh-card-desktop-horizontal-padding`, `--bh-card-desktop-media-height`, `--bh-card-full-height`, `--bh-card-horizontal-media-width`, `--bh-card-horizontal-min-height`, `--bh-card-horizontal-padding`, `--bh-card-horizontal-width`, `--bh-card-media-height`, `--bh-card-media-overlay`, `--bh-card-mobile-content-padding`, `--bh-card-mobile-full-height`, `--bh-card-mobile-horizontal-padding`, `--bh-card-mobile-media-height`, `--bh-card-more-icon-size`, `--bh-card-more-size`, `--bh-card-radius`, `--bh-card-vertical-width`, `--bh-content-default`, `--bh-content-on-color`, `--bh-content-subtle`, `--bh-control-default`, `--bh-interactive-ghost-hover`, `--bh-radius-3xl-16`, `--bh-space-3xl-16`, `--bh-space-5xl-24`, `--bh-space-6xl-32`, `--bh-space-md-8`, `--bh-space-xl-12`, `--bh-space-xxs-2`, `--bh-text-body-lg-regular-font-size`, `--bh-text-body-lg-regular-font-weight`, `--bh-text-body-lg-regular-letter-spacing`, `--bh-text-body-lg-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-heading-sm-semibold-font-size`, `--bh-text-heading-sm-semibold-font-weight`, `--bh-text-heading-sm-semibold-letter-spacing`, `--bh-text-heading-sm-semibold-line-height`, `--shadow-button-focus` |
|
|
94
|
+
| `types` | `leading-image`, `trailing-image`, `full-image` |
|
|
95
|
+
<!-- registry-contract:end -->
|
|
@@ -5,7 +5,7 @@ Carousel is an Embla-backed carousel with content, item, previous, and next cont
|
|
|
5
5
|
## API
|
|
6
6
|
|
|
7
7
|
```tsx
|
|
8
|
-
<Carousel>
|
|
8
|
+
<Carousel messages={{ previousSlide: "Previous item", nextSlide: "Next item" }}>
|
|
9
9
|
<CarouselContent>
|
|
10
10
|
<CarouselItem>Slide</CarouselItem>
|
|
11
11
|
</CarouselContent>
|
|
@@ -20,11 +20,11 @@ Carousel controls use Banhaten Button tokens, spacing, radius, and directional i
|
|
|
20
20
|
|
|
21
21
|
## RTL
|
|
22
22
|
|
|
23
|
-
Directional icons flip in RTL. Set Embla options through `opts` when you need a custom direction strategy.
|
|
23
|
+
Directional icons flip in RTL. Direction does not select a language; pass `messages` on `Carousel` or `aria-label` on an individual control. Set Embla options through `opts` when you need a custom direction strategy.
|
|
24
24
|
|
|
25
25
|
## Accessibility
|
|
26
26
|
|
|
27
|
-
Carousel exposes a region and button
|
|
27
|
+
Carousel exposes a region and English button-label defaults for previous and next controls. `messages` accepts partial localized overrides, while a control's direct `aria-label` has highest precedence.
|
|
28
28
|
|
|
29
29
|
## Install
|
|
30
30
|
|
|
@@ -42,3 +42,20 @@ Open the live component page or run `npx banhaten docs carousel` to inspect sour
|
|
|
42
42
|
|
|
43
43
|
- `inheritsDirection`: true
|
|
44
44
|
- `directionalIconFlip`: Previous and next arrow icons flip in RTL.
|
|
45
|
+
- `messages`: Direction does not select language. Pass messages or direct aria-label overrides for localized control names.
|
|
46
|
+
|
|
47
|
+
<!-- registry-contract:start -->
|
|
48
|
+
## Registry Contract
|
|
49
|
+
|
|
50
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
51
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
52
|
+
|
|
53
|
+
| Field | Values |
|
|
54
|
+
| --- | --- |
|
|
55
|
+
| `supportedExports` | `components/carousel.tsx: Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, arabicCarouselMessages` |
|
|
56
|
+
| `parts` | `Carousel`, `CarouselContent`, `CarouselItem`, `CarouselPrevious`, `CarouselNext` |
|
|
57
|
+
| `registryDependencies` | `button` |
|
|
58
|
+
| `features` | `Embla API`, `previous and next controls`, `plugin support` |
|
|
59
|
+
| `orientations` | `horizontal`, `vertical` |
|
|
60
|
+
| `tokens` | `--bh-radius-full`, `--bh-space-3xl-16`, `--bh-space-7xl-40`, `--bh-space-8xl-48` |
|
|
61
|
+
<!-- registry-contract:end -->
|
|
@@ -12,7 +12,7 @@ Catalog Components is an expanded-tier showcase bundle for catalog-style product
|
|
|
12
12
|
| --- | --- |
|
|
13
13
|
| `Breadcrumbs` | expanded breadcrumbs component |
|
|
14
14
|
| `CatalogContentDivider`, `CatalogDivider` | catalog divider visuals |
|
|
15
|
-
| `
|
|
15
|
+
| `Tag` | core tag component, previewed in the showcase |
|
|
16
16
|
| `FileUpload` | expanded upload states |
|
|
17
17
|
| `Table` | expanded table preview |
|
|
18
18
|
|
|
@@ -43,3 +43,17 @@ Open the live component page or run `npx banhaten docs catalog-components` to in
|
|
|
43
43
|
## RTL Rules
|
|
44
44
|
|
|
45
45
|
This component has no special RTL contract beyond inherited document direction and logical spacing.
|
|
46
|
+
|
|
47
|
+
<!-- registry-contract:start -->
|
|
48
|
+
## Registry Contract
|
|
49
|
+
|
|
50
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
51
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
52
|
+
|
|
53
|
+
| Field | Values |
|
|
54
|
+
| --- | --- |
|
|
55
|
+
| `supportedExports` | `components/expanded/CatalogComponentsShowcase.tsx: CatalogComponentsShowcase`, `components/expanded/CatalogDivider.tsx: CatalogContentDivider, CatalogDivider` |
|
|
56
|
+
| `parts` | `CatalogContentDivider`, `CatalogDivider`, `CatalogComponentsShowcase` |
|
|
57
|
+
| `registryDependencies` | `breadcrumbs`, `button`, `file-upload`, `table`, `tag` |
|
|
58
|
+
| `tokens` | `--bh-bg-raised`, `--bh-border-focus`, `--bh-border-subtle`, `--bh-catalog-file-grid-max`, `--bh-catalog-file-grid-min`, `--bh-catalog-file-preview-max`, `--bh-catalog-file-preview-min`, `--bh-content-default`, `--bh-content-muted`, `--bh-content-subtle`, `--bh-control-default`, `--bh-focus-ring-width`, `--bh-font-family`, `--bh-font-weight-medium`, `--bh-font-weight-regular`, `--bh-interactive-ghost-hover`, `--bh-interactive-soft-default`, `--bh-opacity-65`, `--bh-radius-lg-8`, `--bh-space-2xl-14`, `--bh-space-3xl-16`, `--bh-space-4xl-20`, `--bh-space-5xl-24`, `--bh-space-6xl-32`, `--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-space-xxxs-1`, `--bh-text-base-letter-spacing`, `--bh-text-body-md-font-size`, `--bh-text-body-md-line-height`, `--bh-text-body-sm-regular-line-height`, `--bh-text-body-xs-regular-font-size`, `--bh-text-heading-xs-semibold-font-size`, `--bh-text-heading-xs-semibold-font-weight`, `--bh-text-heading-xs-semibold-line-height`, `--shadow-component-default` |
|
|
59
|
+
<!-- registry-contract:end -->
|
|
@@ -41,3 +41,18 @@ Open the live component page or run `npx banhaten docs chart` to inspect source
|
|
|
41
41
|
|
|
42
42
|
- `inheritsDirection`: true
|
|
43
43
|
- `layout`: Chart labels and legends should use logical layout; chart geometry is controlled by Recharts.
|
|
44
|
+
|
|
45
|
+
<!-- registry-contract:start -->
|
|
46
|
+
## Registry Contract
|
|
47
|
+
|
|
48
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
49
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
50
|
+
|
|
51
|
+
| Field | Values |
|
|
52
|
+
| --- | --- |
|
|
53
|
+
| `supportedExports` | `components/chart.tsx: ChartContainer, ChartLegend, ChartLegendContent, ChartTooltip, ChartTooltipContent` |
|
|
54
|
+
| `parts` | `ChartContainer`, `ChartTooltip`, `ChartTooltipContent`, `ChartLegend`, `ChartLegendContent` |
|
|
55
|
+
| `registryDependencies` | None |
|
|
56
|
+
| `features` | `responsive container`, `tooltip content`, `legend content`, `config colors` |
|
|
57
|
+
| `tokens` | `--bh-bg-neutral-subtle`, `--bh-bg-raised`, `--bh-border-subtle`, `--bh-chart-categorical-aqua`, `--bh-chart-categorical-brand`, `--bh-chart-categorical-danger`, `--bh-chart-categorical-fuchsia`, `--bh-chart-categorical-information`, `--bh-chart-categorical-purple`, `--bh-chart-categorical-success`, `--bh-chart-categorical-warning`, `--bh-content-default`, `--bh-content-muted`, `--bh-content-subtle`, `--bh-radius-full`, `--bh-radius-lg-8`, `--bh-space-17xl-288`, `--bh-space-19xl-384`, `--bh-space-3xl-16`, `--bh-space-md-8`, `--bh-space-sm-6`, `--bh-space-xl-12`, `--bh-space-xs-4`, `--bh-text-body-xs-medium-font-size`, `--bh-text-body-xs-medium-font-weight`, `--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`, `--shadow-popover` |
|
|
58
|
+
<!-- registry-contract:end -->
|
|
@@ -50,3 +50,19 @@ Open the live component page or run `npx banhaten docs checkbox` to inspect sour
|
|
|
50
50
|
- `inheritsDirection`: true
|
|
51
51
|
- `controlPlacement`: The card uses start/end control placement so the checkbox mirrors correctly in RTL.
|
|
52
52
|
- `textDirection`: Labels and descriptions use dir="auto" and tokenized body-md/body-sm typography.
|
|
53
|
+
|
|
54
|
+
<!-- registry-contract:start -->
|
|
55
|
+
## Registry Contract
|
|
56
|
+
|
|
57
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
58
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
59
|
+
|
|
60
|
+
| Field | Values |
|
|
61
|
+
| --- | --- |
|
|
62
|
+
| `supportedExports` | `components/checkbox.tsx: Checkbox, CheckboxCard, checkboxCardVariants, checkboxVariants` |
|
|
63
|
+
| `parts` | `Checkbox`, `CheckboxCard` |
|
|
64
|
+
| `registryDependencies` | None |
|
|
65
|
+
| `cardPositions` | `start`, `end` |
|
|
66
|
+
| `states` | `unchecked`, `checked`, `indeterminate`, `selected`, `disabled` |
|
|
67
|
+
| `tokens` | `--bh-bg-default`, `--bh-bg-disabled`, `--bh-bg-raised`, `--bh-bg-raised-hover`, `--bh-border-brand-strong`, `--bh-border-disabled`, `--bh-border-input`, `--bh-border-subtle`, `--bh-border-width-default`, `--bh-checkbox-card-border`, `--bh-checkbox-card-border-width`, `--bh-checkbox-card-border-width-active`, `--bh-checkbox-card-border-width-current`, `--bh-checkbox-card-content-gap`, `--bh-checkbox-card-gap`, `--bh-checkbox-card-label-gap`, `--bh-checkbox-card-media-icon-size`, `--bh-checkbox-card-padding`, `--bh-checkbox-card-radius`, `--bh-checkbox-card-text-gap`, `--bh-checkbox-card-width`, `--bh-checkbox-control-border`, `--bh-checkbox-control-radius`, `--bh-checkbox-control-size`, `--bh-checkbox-icon-size`, `--bh-checkbox-root-size`, `--bh-content-default`, `--bh-content-disabled`, `--bh-content-on-color`, `--bh-content-subtle`, `--bh-icon-stroke-300`, `--bh-interactive-checkbox-default`, `--bh-interactive-checkbox-hover`, `--bh-opacity-60`, `--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-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`, `--shadow-checkbox-card`, `--shadow-checkbox-card-focus`, `--shadow-checkbox-control`, `--shadow-checkbox-focus`, `--shadow-component-default` |
|
|
68
|
+
<!-- registry-contract:end -->
|
|
@@ -46,3 +46,18 @@ Open the live component page or run `npx banhaten docs collapsible` to inspect s
|
|
|
46
46
|
- `inheritsDirection`: true
|
|
47
47
|
- `textAlignment`: Trigger and content use logical text alignment and inherit direction.
|
|
48
48
|
- `spacing`: Icon and label spacing uses flex gap so it mirrors with document direction.
|
|
49
|
+
|
|
50
|
+
<!-- registry-contract:start -->
|
|
51
|
+
## Registry Contract
|
|
52
|
+
|
|
53
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
54
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
55
|
+
|
|
56
|
+
| Field | Values |
|
|
57
|
+
| --- | --- |
|
|
58
|
+
| `supportedExports` | `components/collapsible.tsx: Collapsible, CollapsibleContent, CollapsibleTrigger` |
|
|
59
|
+
| `parts` | `Collapsible`, `CollapsibleTrigger`, `CollapsibleContent` |
|
|
60
|
+
| `registryDependencies` | None |
|
|
61
|
+
| `features` | `controlled state`, `uncontrolled state`, `keyboard trigger`, `RTL` |
|
|
62
|
+
| `tokens` | `--bh-content-default`, `--bh-content-subtle`, `--bh-icon-stroke-200`, `--bh-interactive-ghost-hover`, `--bh-radius-lg-8`, `--bh-space-3xl-16`, `--bh-space-lg-10`, `--bh-space-md-8`, `--bh-space-xl-12`, `--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-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`, `--shadow-button-focus` |
|
|
63
|
+
<!-- registry-contract:end -->
|
|
@@ -58,3 +58,18 @@ Open the live component page or run `npx banhaten docs command` to inspect sourc
|
|
|
58
58
|
- `inheritsDirection`: true
|
|
59
59
|
- `spacing`: Command rows and shortcuts use logical spacing so shortcut placement mirrors naturally.
|
|
60
60
|
- `textDirection`: Command copy inherits document direction; individual row labels can use dir="auto" when needed.
|
|
61
|
+
|
|
62
|
+
<!-- registry-contract:start -->
|
|
63
|
+
## Registry Contract
|
|
64
|
+
|
|
65
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
66
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
67
|
+
|
|
68
|
+
| Field | Values |
|
|
69
|
+
| --- | --- |
|
|
70
|
+
| `supportedExports` | `components/command.tsx: Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut` |
|
|
71
|
+
| `parts` | `Command`, `CommandInput`, `CommandList`, `CommandEmpty`, `CommandGroup`, `CommandItem`, `CommandSeparator`, `CommandShortcut` |
|
|
72
|
+
| `registryDependencies` | None |
|
|
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`, `--shadow-menu` |
|
|
75
|
+
<!-- registry-contract:end -->
|
|
@@ -42,3 +42,18 @@ Open the live component page or run `npx banhaten docs context-menu` to inspect
|
|
|
42
42
|
- `inheritsDirection`: true
|
|
43
43
|
- `directionalIconFlip`: Submenu chevrons flip in RTL.
|
|
44
44
|
- `spacing`: Items and shortcuts use logical spacing.
|
|
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/context-menu.tsx: ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger` |
|
|
55
|
+
| `parts` | `ContextMenu`, `ContextMenuTrigger`, `ContextMenuContent`, `ContextMenuItem`, `ContextMenuCheckboxItem`, `ContextMenuRadioItem`, `ContextMenuLabel`, `ContextMenuSeparator`, `ContextMenuShortcut`, `ContextMenuSub`, `ContextMenuSubTrigger`, `ContextMenuSubContent` |
|
|
56
|
+
| `registryDependencies` | None |
|
|
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`, `--shadow-menu` |
|
|
59
|
+
<!-- registry-contract:end -->
|
|
@@ -46,7 +46,7 @@ The trigger, calendar header, preset list, day cells, range fill, and time rows
|
|
|
46
46
|
|
|
47
47
|
## API
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
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`.
|
|
50
50
|
|
|
51
51
|
| Contract | Values |
|
|
52
52
|
| --- | --- |
|
|
@@ -75,3 +75,23 @@ Covered source files: `components/date-picker.tsx`, `components/date-picker-stat
|
|
|
75
75
|
## Accessibility
|
|
76
76
|
|
|
77
77
|
Keep native semantics, accessible names, keyboard reachability, focus-visible treatment, and status/error announcements intact when composing this component.
|
|
78
|
+
|
|
79
|
+
<!-- registry-contract:start -->
|
|
80
|
+
## Registry Contract
|
|
81
|
+
|
|
82
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
83
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
84
|
+
|
|
85
|
+
| Field | Values |
|
|
86
|
+
| --- | --- |
|
|
87
|
+
| `supportedExports` | `components/date-picker.tsx: Calendar, DatePicker, DatePickerTrigger, DateRangePicker, RangeCalendar, calendarSurface, pickerTrigger`, `components/date-picker-state.ts: addDays, addMonths, formatCalendarDate, formatCalendarRange, formatMonthTitle, getCalendarCells, getCalendarDayState, getCalendarKeyboardTarget, getNextRange, isAfterOrSameDay, isBeforeDay, isBeforeOrSameDay, isSameDay, isSameMonth, normalizeRange, startOfDay, startOfMonth, toCalendarDateId` |
|
|
88
|
+
| `parts` | `Calendar`, `RangeCalendar`, `DatePicker`, `DateRangePicker`, `DatePickerTrigger` |
|
|
89
|
+
| `registryDependencies` | `popover` |
|
|
90
|
+
| `props.density` | `"compact" \| "default" \| "comfortable"; default "comfortable"; Aligns DatePicker and DateRangePicker triggers to the shared 32px, 36px, or 40px control contract.` |
|
|
91
|
+
| `props.icon` | `React.ReactNode; default "calendar"; Uses the calendar icon by default or accepts an explicit replacement node.` |
|
|
92
|
+
| `props.triggerProps` | `React.ComponentProps<"button">; default null; Forwards accessible trigger attributes such as id and aria-label without replacing DatePicker geometry.` |
|
|
93
|
+
| `densities` | `compact`, `default`, `comfortable` |
|
|
94
|
+
| `modes` | `single-calendar`, `single-month-year`, `double-calendar`, `double-calendar-with-presets`, `single-range-calendar`, `date-picker`, `date-range-picker` |
|
|
95
|
+
| `states` | `open`, `closed` |
|
|
96
|
+
| `tokens` | `--bh-bg-brand-default`, `--bh-bg-brand-subtle`, `--bh-bg-default`, `--bh-bg-default-hover`, `--bh-bg-raised`, `--bh-border-disabled`, `--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-color`, `--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-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-height`, `--bh-date-trigger-icon-size`, `--bh-date-trigger-shadow`, `--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`, `--shadow-button-focus`, `--shadow-component-default`, `--shadow-date-month-year-list`, `--shadow-date-surface`, `--shadow-date-time-input`, `--shadow-input-focus-ring` |
|
|
97
|
+
<!-- registry-contract:end -->
|