banhaten 0.1.3 → 0.3.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 +73 -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-implementation-ownership-audit.md +244 -0
- package/docs/design-system/component-quality-audit-2026-08-20.md +223 -0
- package/docs/design-system/component-showcase-consistency-report.md +2 -0
- package/docs/design-system/component-token-consistency-audit.md +13 -3
- package/docs/design-system/components/README.md +4 -2
- package/docs/design-system/components/accordion.md +16 -0
- package/docs/design-system/components/activity-feed.md +17 -1
- package/docs/design-system/components/activity-heatmap.md +73 -0
- 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 +19 -1
- package/docs/design-system/components/breadcrumbs.md +17 -0
- package/docs/design-system/components/button-group.md +35 -0
- package/docs/design-system/components/button.md +18 -0
- package/docs/design-system/components/card.md +26 -1
- package/docs/design-system/components/carousel.md +20 -3
- package/docs/design-system/components/catalog-components.md +18 -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 +18 -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 +16 -1
- package/docs/design-system/components/page-header.md +17 -1
- package/docs/design-system/components/pagination.md +31 -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 +20 -1
- 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 +17 -0
- package/docs/design-system/components/skeleton.md +18 -0
- package/docs/design-system/components/slideout.md +17 -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 +19 -0
- package/docs/design-system/components/table.md +36 -4
- 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 +17 -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 +61 -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 +100 -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 +30 -15
- package/registry/component-contract.json +40 -0
- package/registry/components/alert-dialog.tsx +2 -2
- package/registry/components/alert.tsx +101 -76
- package/registry/components/autocomplete.tsx +23 -9
- package/registry/components/avatar.tsx +14 -10
- package/registry/components/badge.tsx +18 -18
- package/registry/components/button-group.tsx +324 -5
- package/registry/components/button.tsx +38 -17
- package/registry/components/card.tsx +87 -62
- package/registry/components/carousel.tsx +67 -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 +38 -4
- package/registry/components/context-menu.tsx +1 -1
- package/registry/components/date-picker.tsx +312 -135
- package/registry/components/expanded/ActivityFeed.tsx +9 -22
- package/registry/components/expanded/ActivityHeatmap.tsx +64 -0
- package/registry/components/expanded/Banner.tsx +3 -4
- package/registry/components/expanded/Breadcrumbs.tsx +8 -5
- package/registry/components/expanded/CatalogComponentsShowcase.tsx +16 -17
- package/registry/components/expanded/CatalogDivider.tsx +4 -3
- package/registry/components/expanded/EmptyState.tsx +1 -1
- package/registry/components/expanded/FileUpload.tsx +16 -7
- package/registry/components/expanded/OnboardingStepListItem.tsx +2 -6
- package/registry/components/expanded/PageHeader.tsx +47 -56
- package/registry/components/expanded/Slideout.tsx +29 -424
- package/registry/components/expanded/Steps.tsx +151 -13
- package/registry/components/expanded/Table.tsx +161 -82
- package/registry/components/expanded/Timeline.tsx +14 -27
- package/registry/components/expanded/activityFeed.css +9 -9
- package/registry/components/expanded/activityHeatmap.css +66 -0
- package/registry/components/expanded/banner.css +21 -11
- package/registry/components/expanded/breadcrumbs.css +2 -2
- package/registry/components/expanded/divider.css +1 -1
- package/registry/components/expanded/emptyState.css +1 -1
- package/registry/components/expanded/fileUpload.css +7 -7
- package/registry/components/expanded/onboardingStepListItem.css +2 -2
- package/registry/components/expanded/pageHeader.css +14 -11
- package/registry/components/expanded/slideout.css +10 -690
- package/registry/components/expanded/steps.css +78 -15
- package/registry/components/expanded/table.css +60 -69
- package/registry/components/expanded/timeline.css +19 -18
- package/registry/components/field.tsx +61 -8
- 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 +87 -251
- package/registry/components/menubar.tsx +1 -1
- package/registry/components/modal.tsx +143 -103
- package/registry/components/native-select.tsx +2 -2
- package/registry/components/navigation-menu.tsx +1 -1
- package/registry/components/pagination.css +36 -0
- package/registry/components/pagination.tsx +88 -64
- package/registry/components/popover.tsx +162 -664
- package/registry/components/progress-slider.tsx +1 -1
- package/registry/components/radio-card.tsx +116 -87
- package/registry/components/resizable.tsx +36 -2
- package/registry/components/scroll-area.tsx +30 -6
- package/registry/components/segmented-control.tsx +87 -0
- package/registry/components/select-content.tsx +2 -2
- package/registry/components/select.tsx +86 -27
- package/registry/components/sheet.tsx +1 -1
- package/registry/components/sidebar.tsx +12 -6
- package/registry/components/skeleton.css +0 -3
- package/registry/components/social-button.tsx +59 -30
- package/registry/components/spinner.tsx +18 -55
- package/registry/components/table-elements.tsx +128 -0
- package/registry/components/tabs.css +1 -1
- package/registry/components/tabs.tsx +13 -14
- package/registry/components/tag.tsx +3 -3
- package/registry/components/textarea.tsx +3 -3
- package/registry/components/toast.tsx +16 -11
- package/registry/components/toggle.tsx +4 -4
- package/registry/components/toolbar.tsx +94 -22
- package/registry/components/tooltip.tsx +2 -2
- 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 +14 -11
- 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/activity-heatmap-demo.tsx +29 -0
- package/registry/examples/expanded/banner-demo.tsx +1 -1
- package/registry/examples/expanded/breadcrumbs-demo.tsx +4 -4
- 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 +10 -7
- 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 +5 -3
- 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 +5668 -375
- package/registry/styles/globals.css +2404 -3999
- package/registry.json +156 -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 +4444 -331
- 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
|
@@ -38,7 +38,7 @@ Code uses lowercase semantic state values: `finished`, `active`, and `inactive`.
|
|
|
38
38
|
|
|
39
39
|
## Token Contract
|
|
40
40
|
|
|
41
|
-
The component consumes Banhaten semantic tokens and component aliases. Do not hard-code Figma fallback literals in component source; promote any Figma value into `
|
|
41
|
+
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.
|
|
42
42
|
|
|
43
43
|
- Backgrounds: `--bh-bg-raised`
|
|
44
44
|
- Borders: `--bh-border-brand-strong`, `--bh-border-default`
|
|
@@ -78,3 +78,18 @@ Open the live component page or run `npx banhaten docs onboarding-step` to inspe
|
|
|
78
78
|
## RTL Rules
|
|
79
79
|
|
|
80
80
|
This component has no special RTL contract beyond inherited document direction and logical spacing.
|
|
81
|
+
|
|
82
|
+
<!-- registry-contract:start -->
|
|
83
|
+
## Registry Contract
|
|
84
|
+
|
|
85
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
86
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
87
|
+
|
|
88
|
+
| Field | Values |
|
|
89
|
+
| --- | --- |
|
|
90
|
+
| `supportedExports` | `components/expanded/OnboardingStepListItem.tsx: OnboardingStepListItem` |
|
|
91
|
+
| `parts` | `OnboardingStepListItem` |
|
|
92
|
+
| `registryDependencies` | None |
|
|
93
|
+
| `states` | `finished`, `active`, `inactive` |
|
|
94
|
+
| `tokens` | `--bh-bg-raised`, `--bh-border-brand-strong`, `--bh-border-default`, `--bh-content-brand-default`, `--bh-content-default`, `--bh-content-subtle`, `--bh-content-success-default`, `--bh-control-default`, `--bh-font-family`, `--bh-icon-stroke-225`, `--bh-space-17xl-288`, `--bh-space-2xl-14`, `--bh-space-4xl-20`, `--bh-space-5xl-24`, `--bh-space-7xl-40`, `--bh-space-lg-10`, `--bh-space-md-8`, `--bh-space-xl-12`, `--bh-space-xxs-2`, `--bh-space-xxxs-1`, `--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` |
|
|
95
|
+
<!-- registry-contract:end -->
|
|
@@ -42,7 +42,7 @@ The implementation follows the Figma hierarchy:
|
|
|
42
42
|
|
|
43
43
|
## Token Contract
|
|
44
44
|
|
|
45
|
-
The component consumes Banhaten semantic tokens and component aliases. Do not hard-code Figma fallback literals in component source; promote any Figma value into `
|
|
45
|
+
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.
|
|
46
46
|
|
|
47
47
|
- Borders: `--bh-border-default`
|
|
48
48
|
- Content: `--bh-content-brand-default`, `--bh-content-default`, `--bh-content-heading`, `--bh-content-muted`, `--bh-content-subtle`
|
|
@@ -82,3 +82,19 @@ Open the live component page or run `npx banhaten docs page-header` to inspect s
|
|
|
82
82
|
## RTL Rules
|
|
83
83
|
|
|
84
84
|
This component has no special RTL contract beyond inherited document direction and logical spacing.
|
|
85
|
+
|
|
86
|
+
<!-- registry-contract:start -->
|
|
87
|
+
## Registry Contract
|
|
88
|
+
|
|
89
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
90
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
91
|
+
|
|
92
|
+
| Field | Values |
|
|
93
|
+
| --- | --- |
|
|
94
|
+
| `supportedExports` | `components/expanded/PageHeader.tsx: PageHeader` |
|
|
95
|
+
| `parts` | `PageHeader` |
|
|
96
|
+
| `registryDependencies` | `breadcrumbs`, `button`, `tabs` |
|
|
97
|
+
| `modes` | `breadcrumbs`, `metadata`, `description`, `actions`, `tabs` |
|
|
98
|
+
| `states` | `default`, `without-icon`, `without-actions`, `without-tabs` |
|
|
99
|
+
| `tokens` | `--bh-bg-raised`, `--bh-border-default`, `--bh-content-brand-default`, `--bh-content-default`, `--bh-content-muted`, `--bh-content-subtle`, `--bh-control-default`, `--bh-focus-ring-width`, `--bh-font-family`, `--bh-icon-stroke-190`, `--bh-interactive-secondary-default`, `--bh-opacity-muted`, `--bh-space-2xl-14`, `--bh-space-3xl-16`, `--bh-space-4xl-20`, `--bh-space-5xl-24`, `--bh-space-6xl-32`, `--bh-space-7xl-40`, `--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-regular-font-size`, `--bh-text-body-2xs-regular-font-weight`, `--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-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-md-semibold-font-size`, `--bh-text-heading-md-semibold-font-weight`, `--bh-text-heading-md-semibold-line-height`, `--shadow-button-secondary` |
|
|
100
|
+
<!-- registry-contract:end -->
|
|
@@ -1,21 +1,27 @@
|
|
|
1
1
|
# Pagination
|
|
2
2
|
|
|
3
|
-
Pagination navigates paged result sets, tables, and long lists. It supports numeric, simple, and summary layouts, soft and ghost styles, exact control geometry, captions, and
|
|
3
|
+
Pagination navigates paged result sets, tables, and long lists. It supports numeric, simple, and summary layouts, soft and ghost styles, exact control geometry, captions, RTL layout, and explicit localized messages.
|
|
4
4
|
|
|
5
5
|
## API
|
|
6
6
|
|
|
7
7
|
```tsx
|
|
8
|
-
<Pagination page={3}
|
|
9
|
-
<Pagination
|
|
8
|
+
<Pagination page={3} pages={[1, 2, 3, "ellipsis", 12]} type="numeric" />
|
|
9
|
+
<Pagination
|
|
10
|
+
dir="rtl"
|
|
11
|
+
messages={{ previous: "הקודם", next: "הבא" }}
|
|
12
|
+
page={2}
|
|
13
|
+
type="summary"
|
|
14
|
+
/>
|
|
10
15
|
```
|
|
11
16
|
|
|
12
17
|
| Prop | Values | Default |
|
|
13
18
|
| --- | --- | --- |
|
|
14
19
|
| `type` | `numeric`, `simple`, `summary` | `numeric` |
|
|
15
20
|
| `variant` | `soft`, `ghost` | `soft` |
|
|
16
|
-
| `page` | number | `
|
|
17
|
-
| `
|
|
18
|
-
| `
|
|
21
|
+
| `page` | number | `2` |
|
|
22
|
+
| `pages` | page numbers, page descriptors, `ellipsis` | built-in demo sequence |
|
|
23
|
+
| `messages` | partial localized message catalog | English defaults |
|
|
24
|
+
| `caption`, `summary`, previous/next label and ARIA props | direct overrides | matching message value |
|
|
19
25
|
|
|
20
26
|
## Token Contract
|
|
21
27
|
|
|
@@ -23,7 +29,7 @@ Pagination uses Banhaten control height, radius, border, background, content, fo
|
|
|
23
29
|
|
|
24
30
|
## RTL
|
|
25
31
|
|
|
26
|
-
Passing `dir="rtl"`
|
|
32
|
+
Passing `dir="rtl"` mirrors previous/next directional icons with `data-rtl-flip="true"` and leaves the selected message catalog unchanged. Use `arabicPaginationMessages` or product-owned messages when the locale is Arabic.
|
|
27
33
|
|
|
28
34
|
## Accessibility
|
|
29
35
|
|
|
@@ -44,6 +50,23 @@ Open the live component page or run `npx banhaten docs pagination` to inspect so
|
|
|
44
50
|
## RTL Rules
|
|
45
51
|
|
|
46
52
|
- `inheritsDirection`: true
|
|
47
|
-
- `
|
|
53
|
+
- `messages`: Direction does not select language. English defaults are stable; pass messages for Arabic, Hebrew, Persian, Urdu, or another locale.
|
|
48
54
|
- `directionalIconFlip`: Inline Figma arrow vectors use data-rtl-flip="true" so previous and next controls mirror in RTL.
|
|
49
55
|
- `spacing`: Uses logical flex direction, gap, and text direction so English and Arabic captions align naturally.
|
|
56
|
+
|
|
57
|
+
<!-- registry-contract:start -->
|
|
58
|
+
## Registry Contract
|
|
59
|
+
|
|
60
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
61
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
62
|
+
|
|
63
|
+
| Field | Values |
|
|
64
|
+
| --- | --- |
|
|
65
|
+
| `supportedExports` | `components/pagination.tsx: Pagination, arabicPaginationMessages, paginationControlVariants, paginationItemVariants, paginationVariants` |
|
|
66
|
+
| `parts` | `Pagination` |
|
|
67
|
+
| `registryDependencies` | None |
|
|
68
|
+
| `features` | `container-aware compact numeric pages`, `contained horizontal control scrolling`, `wrapping captions and summaries` |
|
|
69
|
+
| `tokens` | `--bh-border-brand-strong`, `--bh-content-disabled`, `--bh-icon-stroke-225`, `--bh-pagination-action-gap`, `--bh-pagination-active-bg`, `--bh-pagination-active-border`, `--bh-pagination-active-content`, `--bh-pagination-caption-content`, `--bh-pagination-caption-font-weight`, `--bh-pagination-caption-width`, `--bh-pagination-control-content`, `--bh-pagination-control-gap`, `--bh-pagination-control-ghost-bg`, `--bh-pagination-control-ghost-hover`, `--bh-pagination-control-ghost-pressed`, `--bh-pagination-control-label-padding-x`, `--bh-pagination-control-label-rtl-padding-x`, `--bh-pagination-control-soft-bg`, `--bh-pagination-control-soft-hover`, `--bh-pagination-control-soft-pressed`, `--bh-pagination-control-text-gap`, `--bh-pagination-control-text-padding-x`, `--bh-pagination-control-text-rtl-gap`, `--bh-pagination-control-text-rtl-padding-x`, `--bh-pagination-font-size`, `--bh-pagination-icon-size`, `--bh-pagination-item-size`, `--bh-pagination-label-font-weight`, `--bh-pagination-letter-spacing`, `--bh-pagination-line-height`, `--bh-pagination-numeric-width`, `--bh-pagination-page-bg`, `--bh-pagination-page-content`, `--bh-pagination-page-gap`, `--bh-pagination-page-hover`, `--bh-pagination-page-pressed`, `--bh-pagination-radius`, `--bh-pagination-root-gap`, `--bh-pagination-simple-width`, `--bh-space-md-8`, `--shadow-pagination-active`, `--shadow-pagination-control`, `--shadow-pagination-focus` |
|
|
70
|
+
| `types` | `numeric`, `simple`, `summary` |
|
|
71
|
+
| `variants` | `soft`, `ghost` |
|
|
72
|
+
<!-- registry-contract:end -->
|
|
@@ -56,3 +56,22 @@ Open the live component page or run `npx banhaten docs popover` to inspect sourc
|
|
|
56
56
|
- `alignment`: Top and bottom alignments use logical start/end so the panel edge and arrow align correctly in LTR and RTL.
|
|
57
57
|
- `spacing`: Uses logical layout and Banhaten spacing tokens for headers, bodies, footers, arrows, and trigger gaps.
|
|
58
58
|
- `textDirection`: Title and description slots use dir="auto" while product content can inherit the nearest direction.
|
|
59
|
+
|
|
60
|
+
<!-- registry-contract:start -->
|
|
61
|
+
## Registry Contract
|
|
62
|
+
|
|
63
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
64
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
65
|
+
|
|
66
|
+
| Field | Values |
|
|
67
|
+
| --- | --- |
|
|
68
|
+
| `supportedExports` | `components/popover.tsx: Popover, PopoverAnchor, PopoverBody, PopoverClose, PopoverContent, PopoverDescription, PopoverFooter, PopoverHeader, PopoverRoot, PopoverTitle, PopoverTrigger, popoverContentVariants` |
|
|
69
|
+
| `parts` | `Popover`, `PopoverRoot`, `PopoverAnchor`, `PopoverTrigger`, `PopoverContent`, `PopoverHeader`, `PopoverTitle`, `PopoverDescription`, `PopoverBody`, `PopoverFooter`, `PopoverClose` |
|
|
70
|
+
| `registryDependencies` | None |
|
|
71
|
+
| `alignments` | `start`, `center`, `end` |
|
|
72
|
+
| `features` | `filter popover`, `settings popover`, `actions popover`, `focus trigger`, `text link trigger`, `icon button trigger`, `optional arrow`, `RTL` |
|
|
73
|
+
| `offsets` | `tight`, `default`, `loose` |
|
|
74
|
+
| `sides` | `top`, `right`, `bottom`, `left` |
|
|
75
|
+
| `sizes` | `sm`, `md`, `lg`, `auto` |
|
|
76
|
+
| `tokens` | `--bh-content-default`, `--bh-content-disabled`, `--bh-content-subtle`, `--bh-control-default`, `--bh-font-family`, `--bh-icon-stroke-200`, `--bh-interactive-ghost-hover`, `--bh-popover-arrow-depth`, `--bh-popover-arrow-width`, `--bh-popover-bg`, `--bh-popover-body-gap`, `--bh-popover-border`, `--bh-popover-close-icon-size`, `--bh-popover-close-size`, `--bh-popover-content-gap`, `--bh-popover-footer-gap`, `--bh-popover-header-gap`, `--bh-popover-lg-width`, `--bh-popover-max-width`, `--bh-popover-md-width`, `--bh-popover-offset`, `--bh-popover-offset-default`, `--bh-popover-offset-loose`, `--bh-popover-offset-tight`, `--bh-popover-padding`, `--bh-popover-radius`, `--bh-popover-sm-width`, `--bh-popover-trigger-gap`, `--bh-radius-full`, `--bh-text-base-letter-spacing`, `--bh-text-body-sm-medium-font-size`, `--bh-text-body-sm-medium-font-weight`, `--bh-text-body-sm-medium-letter-spacing`, `--bh-text-body-sm-medium-line-height`, `--bh-text-body-xs-regular-font-size`, `--bh-text-body-xs-regular-font-weight`, `--bh-text-body-xs-regular-letter-spacing`, `--bh-text-body-xs-regular-line-height`, `--bh-z-popover`, `--shadow-button-focus`, `--shadow-popover` |
|
|
77
|
+
<!-- registry-contract:end -->
|
|
@@ -46,3 +46,21 @@ Open the live component page or run `npx banhaten docs progress-slider` to inspe
|
|
|
46
46
|
- `inheritsDirection`: true
|
|
47
47
|
- `valueDirection`: Radix Slider handles direction and keyboard behavior through the inherited dir attribute; the fill stays anchored to the logical start edge.
|
|
48
48
|
- `spacing`: Uses tokenized pill geometry and logical direction through Radix.
|
|
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/progress-slider.tsx: ProgressSlider, progressSliderVariants` |
|
|
59
|
+
| `parts` | `ProgressSlider` |
|
|
60
|
+
| `registryDependencies` | None |
|
|
61
|
+
| `features` | `start-anchored fill`, `grip handle`, `ticks` |
|
|
62
|
+
| `sizes` | `default`, `lg` |
|
|
63
|
+
| `states` | `default`, `disabled` |
|
|
64
|
+
| `tokens` | `--bh-bg-brand-soft`, `--bh-bg-brand-subtle`, `--bh-bg-danger-soft`, `--bh-bg-danger-subtle`, `--bh-bg-neutral-soft`, `--bh-bg-neutral-subtle`, `--bh-bg-success-soft`, `--bh-bg-success-subtle`, `--bh-bg-warning-soft`, `--bh-bg-warning-subtle`, `--bh-border-brand-strong`, `--bh-border-brand-subtle`, `--bh-border-danger-strong`, `--bh-border-danger-subtle`, `--bh-border-strong`, `--bh-border-subtle`, `--bh-border-success-strong`, `--bh-border-success-subtle`, `--bh-border-warning-strong`, `--bh-border-warning-subtle`, `--bh-content-disabled`, `--bh-opacity-60`, `--bh-progress-slider-border-width-current`, `--bh-progress-slider-border-width-lg`, `--bh-progress-slider-border-width-md`, `--bh-progress-slider-fill-bg`, `--bh-progress-slider-fill-border`, `--bh-progress-slider-grip-bg`, `--bh-progress-slider-grip-height-current`, `--bh-progress-slider-grip-height-lg`, `--bh-progress-slider-grip-height-md`, `--bh-progress-slider-grip-width`, `--bh-progress-slider-handle-width-current`, `--bh-progress-slider-handle-width-lg`, `--bh-progress-slider-handle-width-md`, `--bh-progress-slider-height-current`, `--bh-progress-slider-height-lg`, `--bh-progress-slider-height-md`, `--bh-progress-slider-radius`, `--bh-progress-slider-tick-bg`, `--bh-progress-slider-tick-gap`, `--bh-progress-slider-tick-padding`, `--bh-progress-slider-tick-size`, `--bh-progress-slider-track-bg`, `--bh-progress-slider-width-current`, `--bh-progress-slider-width-lg`, `--bh-progress-slider-width-md`, `--bh-radius-full`, `--bh-z-overlay`, `--bh-z-popover`, `--bh-z-raised`, `--shadow-progress-slider-thumb-focus` |
|
|
65
|
+
| `tones` | `brand`, `neutral`, `success`, `warning`, `danger` |
|
|
66
|
+
<!-- registry-contract:end -->
|
|
@@ -73,3 +73,20 @@ Covered source files: `components/progress.tsx`.
|
|
|
73
73
|
## Accessibility
|
|
74
74
|
|
|
75
75
|
Keep native semantics, accessible names, keyboard reachability, focus-visible treatment, and status/error announcements intact when composing this component.
|
|
76
|
+
|
|
77
|
+
<!-- registry-contract:start -->
|
|
78
|
+
## Registry Contract
|
|
79
|
+
|
|
80
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
81
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
82
|
+
|
|
83
|
+
| Field | Values |
|
|
84
|
+
| --- | --- |
|
|
85
|
+
| `supportedExports` | `components/progress.tsx: Progress, progressTrackVariants, progressVariants` |
|
|
86
|
+
| `parts` | `Progress` |
|
|
87
|
+
| `registryDependencies` | None |
|
|
88
|
+
| `features` | `progressbar semantics`, `helper text`, `optional label text`, `info icon`, `spinner indicator`, `logical start fill` |
|
|
89
|
+
| `labelPositions` | `top`, `bottom`, `none`, `inline` |
|
|
90
|
+
| `sizes` | `sm`, `lg` |
|
|
91
|
+
| `tokens` | `--bh-bg-neutral-soft`, `--bh-content-default`, `--bh-content-muted`, `--bh-content-subtle`, `--bh-interactive-indicator-default`, `--bh-progress-gap`, `--bh-progress-indicator-size`, `--bh-progress-track-height-current`, `--bh-radius-full`, `--bh-space-3xl-16`, `--bh-space-md-8`, `--bh-space-sm-6`, `--bh-space-xs-4`, `--bh-space-xxs-2`, `--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-xs-medium-font-size`, `--bh-text-body-xs-medium-font-weight`, `--bh-text-body-xs-medium-letter-spacing`, `--bh-text-body-xs-medium-line-height`, `--bh-text-body-xs-regular-font-size`, `--bh-text-body-xs-regular-font-weight`, `--bh-text-body-xs-regular-letter-spacing`, `--bh-text-body-xs-regular-line-height` |
|
|
92
|
+
<!-- registry-contract:end -->
|
|
@@ -47,3 +47,19 @@ Open the live component page or run `npx banhaten docs radio-card` to inspect so
|
|
|
47
47
|
- `inheritsDirection`: false
|
|
48
48
|
- `layout`: Uses the explicit Figma RTL physical order while text nodes use RTL direction and right alignment.
|
|
49
49
|
- `spacing`: Company icon and icon-radio-left RTL variants use the Figma 12px card gap; other variants use the 10px card gap.
|
|
50
|
+
|
|
51
|
+
<!-- registry-contract:start -->
|
|
52
|
+
## Registry Contract
|
|
53
|
+
|
|
54
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
55
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
56
|
+
|
|
57
|
+
| Field | Values |
|
|
58
|
+
| --- | --- |
|
|
59
|
+
| `supportedExports` | `components/radio-card.tsx: RadioCard, radioCardVariants` |
|
|
60
|
+
| `parts` | `RadioCard` |
|
|
61
|
+
| `registryDependencies` | None |
|
|
62
|
+
| `states` | `default`, `active`, `disabled` |
|
|
63
|
+
| `tokens` | `--bh-bg-accent-blue-soft`, `--bh-bg-accent-purple-soft`, `--bh-bg-always-white`, `--bh-bg-neutral-subtle`, `--bh-bg-raised`, `--bh-bg-raised-hover`, `--bh-border-brand-strong`, `--bh-border-default`, `--bh-border-disabled`, `--bh-border-input`, `--bh-border-subtle`, `--bh-border-width-default`, `--bh-content-default`, `--bh-content-disabled`, `--bh-content-subtle`, `--bh-icon-stroke-180`, `--bh-icon-stroke-200`, `--bh-interactive-radiobutton-default`, `--bh-opacity-disabled-media`, `--bh-radio-card-bg`, `--bh-radio-card-border`, `--bh-radio-card-border-width`, `--bh-radio-card-border-width-active`, `--bh-radio-card-company-mark-color`, `--bh-radio-card-payment-height`, `--bh-radio-card-payment-logo-color`, `--bh-radio-card-payment-logo-height`, `--bh-radio-card-payment-logo-width`, `--bh-radio-card-payment-width`, `--bh-radio-card-width`, `--bh-radio-control-border`, `--bh-radius-full`, `--bh-radius-md-6`, `--bh-radius-xl-10`, `--bh-space-3xl-16`, `--bh-space-4xl-20`, `--bh-space-5xl-24`, `--bh-space-7xl-40`, `--bh-space-lg-10`, `--bh-space-sm-6`, `--bh-space-xl-12`, `--bh-space-xs-4`, `--bh-space-xxs-2`, `--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-component-default`, `--shadow-radio-card`, `--shadow-radio-card-current`, `--shadow-radio-card-disabled`, `--shadow-radio-control` |
|
|
64
|
+
| `types` | `with-icon`, `icon-radio-right`, `payment`, `with-avatar`, `company-icon`, `icon-radio-left`, `radio-label` |
|
|
65
|
+
<!-- registry-contract:end -->
|
|
@@ -53,3 +53,20 @@ Open the live component page or run `npx banhaten docs radio-group` to inspect s
|
|
|
53
53
|
- `controlPlacement`: RadioField and RadioGroupItem use start/end control placement so the radio mirrors correctly in RTL.
|
|
54
54
|
- `textDirection`: Group labels, item labels, descriptions, and error text use dir="auto" with tokenized body typography.
|
|
55
55
|
- `semantics`: Uses native radio inputs with a shared group name, fieldset grouping, and label wrapping for platform keyboard and form behavior.
|
|
56
|
+
|
|
57
|
+
<!-- registry-contract:start -->
|
|
58
|
+
## Registry Contract
|
|
59
|
+
|
|
60
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
61
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
62
|
+
|
|
63
|
+
| Field | Values |
|
|
64
|
+
| --- | --- |
|
|
65
|
+
| `supportedExports` | `components/radio-group.tsx: Radio, RadioField, RadioGroup, RadioGroupItem, radioControl, radioField, radioGroupItems, radioGroupRoot, radioRoot` |
|
|
66
|
+
| `parts` | `Radio`, `RadioField`, `RadioGroup`, `RadioGroupItem` |
|
|
67
|
+
| `registryDependencies` | None |
|
|
68
|
+
| `controlPositions` | `start`, `end` |
|
|
69
|
+
| `orientations` | `vertical`, `horizontal` |
|
|
70
|
+
| `states` | `default`, `error`, `disabled` |
|
|
71
|
+
| `tokens` | `--bh-bg-always-white`, `--bh-bg-default`, `--bh-bg-disabled`, `--bh-border-brand-strong`, `--bh-border-danger-strong`, `--bh-border-disabled`, `--bh-border-input`, `--bh-border-width-default`, `--bh-content-danger-default`, `--bh-content-default`, `--bh-content-disabled`, `--bh-content-subtle`, `--bh-interactive-radiobutton-default`, `--bh-opacity-0`, `--bh-opacity-100`, `--bh-radio-control-border`, `--bh-radio-group-message-max-width`, `--bh-radius-full`, `--bh-space-3xl-16`, `--bh-space-4xl-20`, `--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-md-medium-font-weight`, `--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-regular-font-size`, `--bh-text-body-xs-regular-font-weight`, `--bh-text-body-xs-regular-letter-spacing`, `--bh-text-body-xs-regular-line-height`, `--bh-z-raised`, `--shadow-button-focus`, `--shadow-radio-control` |
|
|
72
|
+
<!-- registry-contract:end -->
|
|
@@ -40,3 +40,18 @@ Open the live component page or run `npx banhaten docs resizable` to inspect sou
|
|
|
40
40
|
|
|
41
41
|
- `inheritsDirection`: true
|
|
42
42
|
- `layout`: Panel order follows DOM order; use logical shell layout for RTL workspaces.
|
|
43
|
+
|
|
44
|
+
<!-- registry-contract:start -->
|
|
45
|
+
## Registry Contract
|
|
46
|
+
|
|
47
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
48
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
49
|
+
|
|
50
|
+
| Field | Values |
|
|
51
|
+
| --- | --- |
|
|
52
|
+
| `supportedExports` | `components/resizable.tsx: ResizableHandle, ResizablePanel, ResizablePanelGroup` |
|
|
53
|
+
| `parts` | `ResizablePanelGroup`, `ResizablePanel`, `ResizableHandle` |
|
|
54
|
+
| `registryDependencies` | None |
|
|
55
|
+
| `features` | `horizontal panels`, `vertical panels`, `keyboard resize handle` |
|
|
56
|
+
| `tokens` | `--bh-bg-raised`, `--bh-border-subtle`, `--bh-border-width-default`, `--bh-content-muted`, `--bh-radius-full`, `--bh-space-3xl-16`, `--bh-space-4xl-20`, `--bh-space-5xl-24`, `--bh-space-6xl-32`, `--bh-z-raised`, `--shadow-button-focus`, `--shadow-component-focus-ring` |
|
|
57
|
+
<!-- registry-contract:end -->
|
|
@@ -8,11 +8,15 @@ Scroll Area wraps Radix ScrollArea with tokenized viewport, scrollbar, thumb, an
|
|
|
8
8
|
<ScrollArea className="h-48">
|
|
9
9
|
<div>Scrollable content</div>
|
|
10
10
|
</ScrollArea>
|
|
11
|
+
|
|
12
|
+
<ScrollArea className="h-48" orientation="both">
|
|
13
|
+
<div className="h-max w-max">Two-axis content</div>
|
|
14
|
+
</ScrollArea>
|
|
11
15
|
```
|
|
12
16
|
|
|
13
17
|
| Part | Purpose |
|
|
14
18
|
| --- | --- |
|
|
15
|
-
| `ScrollArea` | root and viewport |
|
|
19
|
+
| `ScrollArea` | root and viewport; `orientation` accepts `vertical`, `horizontal`, or `both` |
|
|
16
20
|
| `ScrollBar` | vertical or horizontal scrollbar |
|
|
17
21
|
|
|
18
22
|
## Token Contract
|
|
@@ -43,3 +47,18 @@ Open the live component page or run `npx banhaten docs scroll-area` to inspect s
|
|
|
43
47
|
|
|
44
48
|
- `inheritsDirection`: true
|
|
45
49
|
- `spacing`: Viewport content should use logical padding so scrollable regions mirror with document direction.
|
|
50
|
+
|
|
51
|
+
<!-- registry-contract:start -->
|
|
52
|
+
## Registry Contract
|
|
53
|
+
|
|
54
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
55
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
56
|
+
|
|
57
|
+
| Field | Values |
|
|
58
|
+
| --- | --- |
|
|
59
|
+
| `supportedExports` | `components/scroll-area.tsx: ScrollArea, ScrollBar` |
|
|
60
|
+
| `parts` | `ScrollArea`, `ScrollBar` |
|
|
61
|
+
| `registryDependencies` | None |
|
|
62
|
+
| `features` | `vertical scrollbar`, `horizontal scrollbar`, `two-axis scrollbar composition`, `viewport clipping`, `keyboard-focusable viewport`, `viewportProps escape hatch` |
|
|
63
|
+
| `tokens` | `--bh-border-default`, `--bh-radius-full`, `--bh-space-lg-10`, `--bh-space-xxs-2`, `--shadow-component-focus-ring` |
|
|
64
|
+
<!-- registry-contract:end -->
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Segmented Control
|
|
2
|
+
|
|
3
|
+
Segmented Control presents a small set of related choices on one connected, content-width surface. It is the preferred primitive for view, density, period, and numeric display choices such as “Cards per row”.
|
|
4
|
+
|
|
5
|
+
Use Select or Radio Group when labels are long or the option set is large. Use Button Group when the items are actions rather than values.
|
|
6
|
+
|
|
7
|
+
## API
|
|
8
|
+
|
|
9
|
+
Give the group an accessible name, give every item a stable value, and use `SegmentedControlLabel` only for non-interactive context.
|
|
10
|
+
|
|
11
|
+
```tsx
|
|
12
|
+
<SegmentedControl
|
|
13
|
+
aria-label="Cards per row"
|
|
14
|
+
density="default"
|
|
15
|
+
defaultValue="4"
|
|
16
|
+
>
|
|
17
|
+
<SegmentedControlLabel>Cards / row</SegmentedControlLabel>
|
|
18
|
+
<SegmentedControlItem value="3">3</SegmentedControlItem>
|
|
19
|
+
<SegmentedControlItem value="4">4</SegmentedControlItem>
|
|
20
|
+
<SegmentedControlItem value="5">5</SegmentedControlItem>
|
|
21
|
+
<SegmentedControlItem value="6">6</SegmentedControlItem>
|
|
22
|
+
</SegmentedControl>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The default density is `default` (36px). Use `compact` for 32px control rows and `comfortable` for 40px controls. Keep adjacent controls on the same density contract.
|
|
26
|
+
|
|
27
|
+
## Install
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npx banhaten add segmented-control
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Examples
|
|
34
|
+
|
|
35
|
+
Primary registry example: `examples/segmented-control-demo.tsx`.
|
|
36
|
+
|
|
37
|
+
The results-toolbar recipe demonstrates the labeled cards-per-row composition alongside a Select action.
|
|
38
|
+
|
|
39
|
+
## Token Contract
|
|
40
|
+
|
|
41
|
+
Segmented Control reuses Button Group surface, divider, interaction, typography, and density tokens. Do not replace its height, padding, radius, color, or shadow with local literal values.
|
|
42
|
+
|
|
43
|
+
Covered source files: `components/segmented-control.tsx` and its `button-group` registry dependency.
|
|
44
|
+
|
|
45
|
+
## RTL Rules
|
|
46
|
+
|
|
47
|
+
- The group inherits document direction.
|
|
48
|
+
- Content-width items and logical dividers follow inherited direction without alternate markup.
|
|
49
|
+
- Horizontal arrow-key navigation resolves the computed direction through the underlying Toggle Group.
|
|
50
|
+
|
|
51
|
+
## Accessibility
|
|
52
|
+
|
|
53
|
+
Provide `aria-label` on every Segmented Control. Items expose pressed state through the underlying Toggle Group, support single or multiple selection, and retain Home, End, and direction-aware arrow-key navigation. The label segment is descriptive and never focusable.
|
|
54
|
+
|
|
55
|
+
<!-- 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/segmented-control.tsx: SegmentedControl, SegmentedControlItem, SegmentedControlLabel` |
|
|
64
|
+
| `parts` | `SegmentedControl`, `SegmentedControlItem`, `SegmentedControlLabel` |
|
|
65
|
+
| `registryDependencies` | `button-group` |
|
|
66
|
+
| `props.density` | `"compact" \| "default" \| "comfortable"; default "default"; Uses the shared 32px, 36px, or 40px control height contract.` |
|
|
67
|
+
| `props.type` | `"single" \| "multiple"; default "single"; Controls whether one or multiple item values may be active.` |
|
|
68
|
+
| `props.aria-label` | `string; default null; Required accessible name for the complete selection group.` |
|
|
69
|
+
| `densities` | `compact`, `default`, `comfortable` |
|
|
70
|
+
| `selectionTypes` | `single`, `multiple` |
|
|
71
|
+
<!-- registry-contract:end -->
|
|
@@ -11,13 +11,23 @@ Select is a Radix Select-backed field and menu system. It supports default and s
|
|
|
11
11
|
</Select>
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-
| Prop |
|
|
15
|
-
| --- | --- |
|
|
16
|
-
| `variant` | `default`, `soft` |
|
|
17
|
-
| `size` | `lg`, `md` |
|
|
18
|
-
| `state` | `default`, `filled`, `error`, `disabled` |
|
|
19
|
-
| `itemType` | `default`, `icon`, `avatar`, `company`, `payment`, `dot` |
|
|
20
|
-
| `selectionType` | `default`, `checkbox` |
|
|
14
|
+
| Prop | Type / values | Default | Notes |
|
|
15
|
+
| --- | --- | --- | --- |
|
|
16
|
+
| `variant` | `default`, `soft` | `default` | Selects the trigger surface. |
|
|
17
|
+
| `size` | `lg`, `md` | `lg` | Selects the trigger height. |
|
|
18
|
+
| `state` | `default`, `filled`, `error`, `disabled` | `default` | Selects the visual state. |
|
|
19
|
+
| `itemType` | `default`, `icon`, `avatar`, `company`, `payment`, `dot` | `default` | Selects menu-item media. |
|
|
20
|
+
| `selectionType` | `default`, `checkbox` | `default` | Selects the menu-item selection indicator. |
|
|
21
|
+
| `hasInformationIcon` | `boolean` | `false` | Shows an information icon beside the field label. |
|
|
22
|
+
| `hasLeadingIcon` | `boolean` | `false` | Set true to show the default user icon. |
|
|
23
|
+
| `leadingIcon` | `ReactNode \| false` | `null` | A node enables the leading slot; false always removes it. |
|
|
24
|
+
| `hasTrailingIcon` | `boolean` | `false` | Set true to show the default information icon inside the trigger. |
|
|
25
|
+
| `trailingIcon` | `ReactNode \| false` | `null` | A node enables the trailing slot; false always removes it. |
|
|
26
|
+
| `expandIcon` | `ReactNode \| false` | `chevron-down` | Replaces the expand icon, or removes it when false. |
|
|
27
|
+
|
|
28
|
+
## Migration
|
|
29
|
+
|
|
30
|
+
Select now renders only its expand chevron when optional trigger-icon props are omitted. Add `hasLeadingIcon` or `hasTrailingIcon` to retain the previous default user or information icon. A supplied icon enables its slot, while explicit `false` always removes it.
|
|
21
31
|
|
|
22
32
|
## Token Contract
|
|
23
33
|
|
|
@@ -48,3 +58,30 @@ Open the live component page or run `npx banhaten docs select` to inspect source
|
|
|
48
58
|
- `inheritsDirection`: true
|
|
49
59
|
- `textAlignment`: Uses text-start and dir="auto" for values, labels, helper text, and menu item text.
|
|
50
60
|
- `spacing`: Uses logical padding, start/end positioning, and inherited flex direction so trigger icons and selected checks mirror in RTL.
|
|
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/select-content.tsx: SelectIcon, SelectItemAvatar, SelectItemCompanyLogo, SelectItemPaymentIcon, SelectItemStatusDot, getDefaultSelectItemMedia`, `components/select.tsx: Select, SelectCheckboxIndicator, SelectHelperText, SelectItemAvatar, SelectItemCompanyLogo, SelectItemPaymentIcon, SelectItemStatusDot, SelectLabel, SelectMenu, SelectMenuItem, SelectRoot, SelectTrigger, selectMenu, selectMenuItem, selectRoot, selectTrigger` |
|
|
71
|
+
| `parts` | `Select`, `SelectRoot`, `SelectLabel`, `SelectTrigger`, `SelectHelperText`, `SelectMenu`, `SelectMenuItem`, `SelectCheckboxIndicator`, `SelectItemAvatar`, `SelectItemCompanyLogo`, `SelectItemPaymentIcon`, `SelectItemStatusDot` |
|
|
72
|
+
| `registryDependencies` | None |
|
|
73
|
+
| `props.density` | `"compact" \| "default" \| "comfortable"; default "default"; Preferred cross-component sizing contract. Overrides the legacy size prop with 32px, 36px, or 40px control heights.` |
|
|
74
|
+
| `props.hasInformationIcon` | `boolean; default false; Shows an information icon beside the field label.` |
|
|
75
|
+
| `props.hasLeadingIcon` | `boolean; default false; Shows the default user leading icon when no leadingIcon is supplied.` |
|
|
76
|
+
| `props.leadingIcon` | `React.ReactNode \| false; default null; Supplies and enables a custom leading icon; false always removes the leading slot.` |
|
|
77
|
+
| `props.hasTrailingIcon` | `boolean; default false; Shows the default information trailing icon when no trailingIcon is supplied.` |
|
|
78
|
+
| `props.trailingIcon` | `React.ReactNode \| false; default null; Supplies and enables a custom trailing icon; false always removes the trailing slot.` |
|
|
79
|
+
| `props.expandIcon` | `React.ReactNode \| false; default "chevron-down"; Uses the default expand chevron when omitted, accepts a replacement node, and hides the slot when false.` |
|
|
80
|
+
| `densities` | `compact`, `default`, `comfortable` |
|
|
81
|
+
| `itemTypes` | `default`, `icon`, `avatar`, `company`, `payment`, `dot` |
|
|
82
|
+
| `selectionTypes` | `default`, `checkbox` |
|
|
83
|
+
| `sizes` | `lg`, `md`, `comfortable` |
|
|
84
|
+
| `states` | `default`, `filled`, `error`, `disabled` |
|
|
85
|
+
| `tokens` | `--bh-bg-accent-blue-default`, `--bh-bg-accent-blue-soft`, `--bh-bg-accent-purple-soft`, `--bh-bg-accent-red-default`, `--bh-bg-always-white`, `--bh-bg-brand-default`, `--bh-bg-danger-default`, `--bh-bg-default`, `--bh-bg-disabled`, `--bh-bg-info-default`, `--bh-bg-neutral-default`, `--bh-bg-success-default`, `--bh-bg-warning-default`, `--bh-border-disabled`, `--bh-border-input`, `--bh-border-subtle`, `--bh-border-width-default`, `--bh-content-accent-blue-strong`, `--bh-content-accent-purple-default`, `--bh-content-danger-default`, `--bh-content-default`, `--bh-content-disabled`, `--bh-content-muted`, `--bh-content-on-color`, `--bh-content-subtle`, `--bh-font-weight-semibold`, `--bh-icon-stroke-200`, `--bh-icon-stroke-220`, `--bh-interactive-checkbox-default`, `--bh-opacity-60`, `--bh-radius-full`, `--bh-select-avatar-font-size`, `--bh-select-check-color`, `--bh-select-checkbox-border`, `--bh-select-checkbox-icon-size`, `--bh-select-checkbox-radius`, `--bh-select-checkbox-size`, `--bh-select-company-icon-size`, `--bh-select-content-gap`, `--bh-select-field-gap`, `--bh-select-icon-size`, `--bh-select-icon-slot-size`, `--bh-select-item-check-offset`, `--bh-select-item-content-padding`, `--bh-select-item-gap`, `--bh-select-item-hover-bg`, `--bh-select-item-min-height`, `--bh-select-item-padding-x`, `--bh-select-item-radius`, `--bh-select-item-selected-padding-end`, `--bh-select-item-value-padding-x`, `--bh-select-label-gap`, `--bh-select-media-inset`, `--bh-select-menu-bg`, `--bh-select-menu-list-gap`, `--bh-select-menu-offset`, `--bh-select-menu-padding-y`, `--bh-select-menu-radius`, `--bh-select-menu-width`, `--bh-select-payment-height`, `--bh-select-payment-mark-offset`, `--bh-select-payment-mark-size`, `--bh-select-payment-radius`, `--bh-select-payment-width`, `--bh-select-status-dot-size`, `--bh-select-trigger-bg`, `--bh-select-trigger-bg-disabled`, `--bh-select-trigger-bg-soft`, `--bh-select-trigger-border`, `--bh-select-trigger-border-current`, `--bh-select-trigger-border-disabled`, `--bh-select-trigger-border-error`, `--bh-select-trigger-border-focus`, `--bh-select-trigger-gap`, `--bh-select-trigger-icon-color`, `--bh-select-trigger-padding-x`, `--bh-select-trigger-padding-y-comfortable`, `--bh-select-trigger-padding-y-lg`, `--bh-select-trigger-padding-y-md`, `--bh-select-trigger-radius`, `--bh-select-value-padding-inline`, `--bh-select-width`, `--bh-space-md-8`, `--bh-space-xxxs-1`, `--bh-text-body-2xs-regular-font-size`, `--bh-text-body-2xs-regular-font-weight`, `--bh-text-body-2xs-regular-letter-spacing`, `--bh-text-body-2xs-regular-line-height`, `--bh-text-body-md-regular-font-size`, `--bh-text-body-md-regular-font-weight`, `--bh-text-body-md-regular-letter-spacing`, `--bh-text-body-md-regular-line-height`, `--bh-text-body-sm-medium-font-size`, `--bh-text-body-sm-medium-font-weight`, `--bh-text-body-sm-medium-letter-spacing`, `--bh-text-body-sm-medium-line-height`, `--bh-text-body-xs-medium-font-size`, `--bh-text-body-xs-medium-font-weight`, `--bh-text-body-xs-medium-letter-spacing`, `--bh-text-body-xs-medium-line-height`, `--bh-text-body-xs-regular-font-size`, `--bh-text-body-xs-regular-font-weight`, `--bh-text-body-xs-regular-letter-spacing`, `--bh-text-body-xs-regular-line-height`, `--bh-z-popover`, `--shadow-component-default`, `--shadow-select-checkbox`, `--shadow-select-danger-focus-ring`, `--shadow-select-focus-ring`, `--shadow-select-menu`, `--shadow-select-trigger` |
|
|
86
|
+
| `variants` | `default`, `soft` |
|
|
87
|
+
<!-- registry-contract:end -->
|
|
@@ -63,3 +63,20 @@ Open the live component page or run `npx banhaten docs sheet` to inspect source
|
|
|
63
63
|
- `placement`: Use side="start" and side="end" for logical placement; CSS start/end edges mirror under RTL.
|
|
64
64
|
- `textDirection`: Title and description use dir="auto" for Arabic and English copy.
|
|
65
65
|
- `semantics`: Radix Dialog handles modal semantics, focus trapping, and dismissal.
|
|
66
|
+
|
|
67
|
+
<!-- registry-contract:start -->
|
|
68
|
+
## Registry Contract
|
|
69
|
+
|
|
70
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
71
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
72
|
+
|
|
73
|
+
| Field | Values |
|
|
74
|
+
| --- | --- |
|
|
75
|
+
| `supportedExports` | `components/sheet.tsx: Sheet, SheetBody, SheetClose, SheetCloseButton, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, sheetContentVariants` |
|
|
76
|
+
| `parts` | `Sheet`, `SheetTrigger`, `SheetContent`, `SheetHeader`, `SheetTitle`, `SheetDescription`, `SheetBody`, `SheetFooter`, `SheetClose`, `SheetCloseButton`, `SheetOverlay`, `SheetPortal` |
|
|
77
|
+
| `registryDependencies` | None |
|
|
78
|
+
| `features` | `focus trap`, `outside dismissal`, `Escape dismissal`, `logical sides`, `scrollable body`, `footer actions` |
|
|
79
|
+
| `sides` | `start`, `end`, `top`, `bottom` |
|
|
80
|
+
| `sizes` | `sm`, `default`, `lg` |
|
|
81
|
+
| `tokens` | `--bh-bg-backdrop`, `--bh-bg-raised`, `--bh-border-subtle`, `--bh-content-default`, `--bh-content-subtle`, `--bh-icon-stroke-200`, `--bh-interactive-ghost-hover`, `--bh-radius-2xl-12`, `--bh-radius-full`, `--bh-space-12xl-128`, `--bh-space-16xl-256`, `--bh-space-17xl-288`, `--bh-space-19xl-384`, `--bh-space-3xl-16`, `--bh-space-4xl-20`, `--bh-space-5xl-24`, `--bh-space-6xl-32`, `--bh-space-8xl-48`, `--bh-space-9xl-64`, `--bh-space-lg-10`, `--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`, `--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`, `--bh-z-overlay`, `--shadow-button-focus`, `--shadow-component-default` |
|
|
82
|
+
<!-- registry-contract:end -->
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Sidebar is a composable app navigation surface with collapse state, grouped menu items, logical start/end placement, and generated `--bh-sidebar-*` tokens.
|
|
4
4
|
|
|
5
|
+
`Sidebar` can also render as a standalone static navigation surface. Use `SidebarProvider` whenever collapse controls or provider-aware menu parts are present.
|
|
6
|
+
|
|
5
7
|
## API
|
|
6
8
|
|
|
7
9
|
```tsx
|
|
@@ -66,3 +68,18 @@ Open the live component page or run `npx banhaten docs sidebar` to inspect sourc
|
|
|
66
68
|
- `inheritsDirection`: true
|
|
67
69
|
- `placement`: Use side="start" or side="end" with dir on SidebarProvider for logical placement.
|
|
68
70
|
- `spacing`: Menu item icon and label spacing uses flex gaps and logical text alignment.
|
|
71
|
+
|
|
72
|
+
<!-- registry-contract:start -->
|
|
73
|
+
## Registry Contract
|
|
74
|
+
|
|
75
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
76
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
77
|
+
|
|
78
|
+
| Field | Values |
|
|
79
|
+
| --- | --- |
|
|
80
|
+
| `supportedExports` | `components/sidebar.tsx: Sidebar, SidebarBody, SidebarFooter, SidebarGroup, SidebarGroupLabel, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarProvider, SidebarRail, SidebarToggle, SidebarTrigger` |
|
|
81
|
+
| `parts` | `SidebarProvider`, `Sidebar`, `SidebarHeader`, `SidebarBody`, `SidebarFooter`, `SidebarGroup`, `SidebarGroupLabel`, `SidebarMenu`, `SidebarMenuItem`, `SidebarMenuButton`, `SidebarToggle`, `SidebarTrigger`, `SidebarInset`, `SidebarRail` |
|
|
82
|
+
| `registryDependencies` | None |
|
|
83
|
+
| `features` | `standalone static surface`, `controlled collapse`, `uncontrolled collapse`, `group labels`, `icon-only collapsed state`, `logical side placement` |
|
|
84
|
+
| `tokens` | `--bh-content-default`, `--bh-content-muted`, `--bh-content-subtle`, `--bh-icon-stroke-200`, `--bh-interactive-ghost-hover`, `--bh-radius-lg-8`, `--bh-sidebar-bg`, `--bh-sidebar-bg-collapsed`, `--bh-sidebar-border`, `--bh-sidebar-icon-size`, `--bh-sidebar-item-bg-active`, `--bh-sidebar-item-bg-hover`, `--bh-sidebar-item-content`, `--bh-sidebar-item-content-active`, `--bh-sidebar-item-gap`, `--bh-sidebar-item-height`, `--bh-sidebar-item-padding-x`, `--bh-sidebar-padding`, `--bh-sidebar-rail-width`, `--bh-sidebar-width`, `--bh-sidebar-width-collapsed`, `--bh-space-19xl-384`, `--bh-space-5xl-24`, `--bh-space-md-8`, `--bh-space-xl-12`, `--bh-space-xs-4`, `--bh-text-body-sm-medium-font-size`, `--bh-text-body-sm-medium-font-weight`, `--bh-text-body-sm-medium-letter-spacing`, `--bh-text-body-sm-medium-line-height`, `--bh-text-body-xs-medium-font-size`, `--bh-text-body-xs-medium-font-weight`, `--bh-text-body-xs-medium-letter-spacing`, `--bh-text-body-xs-medium-line-height`, `--shadow-button-focus`, `--shadow-sidebar` |
|
|
85
|
+
<!-- registry-contract:end -->
|
|
@@ -71,3 +71,21 @@ Open the live component page or run `npx banhaten docs skeleton` to inspect sour
|
|
|
71
71
|
## Accessibility
|
|
72
72
|
|
|
73
73
|
Keep native semantics, accessible names, keyboard reachability, focus-visible treatment, and status/error announcements intact when composing this component.
|
|
74
|
+
|
|
75
|
+
<!-- registry-contract:start -->
|
|
76
|
+
## Registry Contract
|
|
77
|
+
|
|
78
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
79
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
80
|
+
|
|
81
|
+
| Field | Values |
|
|
82
|
+
| --- | --- |
|
|
83
|
+
| `supportedExports` | `components/skeleton.tsx: Skeleton, SkeletonAvatar, SkeletonButton, SkeletonCard, SkeletonForm, SkeletonInput, SkeletonList, SkeletonTable, SkeletonText, skeletonVariants` |
|
|
84
|
+
| `parts` | `Skeleton`, `SkeletonText`, `SkeletonAvatar`, `SkeletonButton`, `SkeletonInput`, `SkeletonCard`, `SkeletonList`, `SkeletonTable`, `SkeletonForm` |
|
|
85
|
+
| `registryDependencies` | None |
|
|
86
|
+
| `features` | `shimmer animation`, `reduced motion`, `text lines`, `avatar placeholders`, `button placeholders`, `input placeholders`, `card placeholders`, `list placeholders`, `table placeholders`, `form placeholders` |
|
|
87
|
+
| `shapes` | `block`, `text`, `circle` |
|
|
88
|
+
| `sizes` | `xs`, `sm`, `md`, `lg`, `xl` |
|
|
89
|
+
| `tokens` | `--bh-alpha-alpha-transparent`, `--bh-bg-brand-soft`, `--bh-bg-brand-subtle`, `--bh-bg-default`, `--bh-bg-default-hover`, `--bh-bg-muted`, `--bh-bg-raised`, `--bh-bg-raised-subtle`, `--bh-bg-subtle`, `--bh-border-default`, `--bh-border-subtle`, `--bh-button-lg-height`, `--bh-button-md-height`, `--bh-button-sm-height`, `--bh-button-xl-height`, `--bh-card-desktop-content-padding`, `--bh-control-default`, `--bh-radius-full`, `--bh-radius-lg-8`, `--bh-radius-md-6`, `--bh-radius-xl-10`, `--bh-skeleton-bg`, `--bh-skeleton-duration`, `--bh-skeleton-height`, `--bh-skeleton-highlight`, `--bh-skeleton-radius`, `--bh-skeleton-shimmer-width`, `--bh-skeleton-table-columns`, `--bh-skeleton-width`, `--bh-space-11xl-96`, `--bh-space-12xl-128`, `--bh-space-13xl-160`, `--bh-space-14xl-192`, `--bh-space-3xl-16`, `--bh-space-4xl-20`, `--bh-space-5xl-24`, `--bh-space-6xl-32`, `--bh-space-7xl-40`, `--bh-space-8xl-48`, `--bh-space-9xl-64`, `--bh-space-md-8`, `--bh-space-sm-6`, `--bh-space-xl-12`, `--bh-space-xs-4`, `--bh-text-body-md-regular-line-height`, `--shadow-component-default` |
|
|
90
|
+
| `tones` | `default`, `subtle`, `surface`, `brand` |
|
|
91
|
+
<!-- registry-contract:end -->
|
|
@@ -61,3 +61,20 @@ Covered source files: `components/expanded/slideout.css`, `components/expanded/S
|
|
|
61
61
|
## RTL Rules
|
|
62
62
|
|
|
63
63
|
This component has no special RTL contract beyond inherited document direction and logical spacing.
|
|
64
|
+
|
|
65
|
+
<!-- registry-contract:start -->
|
|
66
|
+
## Registry Contract
|
|
67
|
+
|
|
68
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
69
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
70
|
+
|
|
71
|
+
| Field | Values |
|
|
72
|
+
| --- | --- |
|
|
73
|
+
| `supportedExports` | `components/expanded/Slideout.tsx: Slideout` |
|
|
74
|
+
| `parts` | `Slideout` |
|
|
75
|
+
| `registryDependencies` | `button` |
|
|
76
|
+
| `modes` | `desktop`, `mobile` |
|
|
77
|
+
| `sizes` | `small`, `medium`, `large` |
|
|
78
|
+
| `states` | `header-action`, `footer-actions`, `without-footer`, `primary-only` |
|
|
79
|
+
| `tokens` | `--bh-bg-default`, `--bh-bg-dim`, `--bh-bg-muted`, `--bh-bg-neutral-medium`, `--bh-bg-neutral-subtle`, `--bh-bg-raised`, `--bh-border-default`, `--bh-border-input`, `--bh-border-subtle`, `--bh-content-brand-default`, `--bh-content-default`, `--bh-content-link`, `--bh-content-on-brand`, `--bh-content-on-color`, `--bh-content-subtle`, `--bh-content-success-default`, `--bh-control-default`, `--bh-font-family`, `--bh-font-weight-medium`, `--bh-icon-stroke-220`, `--bh-interactive-brand-default`, `--bh-interactive-ghost-hover`, `--bh-radius-2xl-12`, `--bh-radius-full`, `--bh-radius-lg-8`, `--bh-space-11xl-96`, `--bh-space-12xl-128`, `--bh-space-18xl-320`, `--bh-space-19xl-384`, `--bh-space-2xl-14`, `--bh-space-3xl-16`, `--bh-space-4xl-20`, `--bh-space-5xl-24`, `--bh-space-6xl-32`, `--bh-space-7xl-40`, `--bh-space-9xl-64`, `--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-body-md-medium-line-height`, `--bh-text-body-md-regular-font-size`, `--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-line-height`, `--bh-text-heading-xs-medium-font-size`, `--bh-text-heading-xs-medium-line-height`, `--shadow-button-raised`, `--shadow-button-soft`, `--shadow-component-default` |
|
|
80
|
+
<!-- registry-contract:end -->
|
|
@@ -59,3 +59,23 @@ Covered source files: `components/slider.tsx`.
|
|
|
59
59
|
## Accessibility
|
|
60
60
|
|
|
61
61
|
This component relies on `@radix-ui/react-slider` for its base accessibility behavior. Keep required labels, titles, descriptions, and focusable trigger/content relationships intact when composing it.
|
|
62
|
+
|
|
63
|
+
<!-- registry-contract:start -->
|
|
64
|
+
## Registry Contract
|
|
65
|
+
|
|
66
|
+
This table is generated from `registry/index.json`; edit the component-owned source under `registry/catalog/components/`, not this table or the compiled index.
|
|
67
|
+
`supportedExports` is the exhaustive runtime import contract grouped by source module. `parts` is an ordered, non-exhaustive anatomy list.
|
|
68
|
+
|
|
69
|
+
| Field | Values |
|
|
70
|
+
| --- | --- |
|
|
71
|
+
| `supportedExports` | `components/slider.tsx: Slider, sliderVariants` |
|
|
72
|
+
| `parts` | `Slider` |
|
|
73
|
+
| `registryDependencies` | None |
|
|
74
|
+
| `features` | `ticks`, `text indicators`, `tooltip indicators`, `thumb grip`, `pill variant`, `vertical orientation` |
|
|
75
|
+
| `indicators` | `none`, `lower-text`, `upper-text`, `lower-tooltip`, `upper-tooltip` |
|
|
76
|
+
| `sizes` | `sm`, `default`, `lg` |
|
|
77
|
+
| `states` | `default`, `disabled` |
|
|
78
|
+
| `tokens` | `--bh-bg-always-white`, `--bh-bg-brand-soft`, `--bh-bg-brand-subtle`, `--bh-bg-danger-default`, `--bh-bg-danger-soft`, `--bh-bg-danger-subtle`, `--bh-bg-default`, `--bh-bg-disabled`, `--bh-bg-neutral-bold`, `--bh-bg-neutral-soft`, `--bh-bg-neutral-subtle`, `--bh-bg-raised`, `--bh-bg-success-default`, `--bh-bg-success-soft`, `--bh-bg-success-subtle`, `--bh-bg-warning-default`, `--bh-bg-warning-soft`, `--bh-bg-warning-subtle`, `--bh-border-brand-strong`, `--bh-border-brand-subtle`, `--bh-border-danger-strong`, `--bh-border-danger-subtle`, `--bh-border-disabled`, `--bh-border-strong`, `--bh-border-subtle`, `--bh-border-success-strong`, `--bh-border-success-subtle`, `--bh-border-warning-strong`, `--bh-border-warning-subtle`, `--bh-content-default`, `--bh-content-disabled`, `--bh-content-subtle`, `--bh-interactive-indicator-default`, `--bh-opacity-60`, `--bh-radius-full`, `--bh-radius-md-6`, `--bh-slider-indicator-gap`, `--bh-slider-pill-height`, `--bh-slider-pill-radius`, `--bh-slider-pill-thumb-border-width`, `--bh-slider-pill-thumb-width`, `--bh-slider-pill-track-bg`, `--bh-slider-range-bg`, `--bh-slider-thumb-bg`, `--bh-slider-thumb-grip-bg`, `--bh-slider-thumb-grip-width`, `--bh-slider-thumb-pill-bg`, `--bh-slider-thumb-pill-border`, `--bh-slider-thumb-radius`, `--bh-slider-thumb-ring-bg`, `--bh-slider-thumb-ring-width-current`, `--bh-slider-thumb-ring-width-lg`, `--bh-slider-thumb-ring-width-md`, `--bh-slider-thumb-ring-width-sm`, `--bh-slider-thumb-size-current`, `--bh-slider-thumb-size-lg`, `--bh-slider-thumb-size-md`, `--bh-slider-thumb-size-sm`, `--bh-slider-tick-bg`, `--bh-slider-tick-gap`, `--bh-slider-tick-size`, `--bh-slider-track-bg`, `--bh-slider-track-radius`, `--bh-slider-track-size-current`, `--bh-slider-track-size-lg`, `--bh-slider-track-size-md`, `--bh-slider-track-size-sm`, `--bh-slider-vertical-height`, `--bh-slider-width`, `--bh-space-6xl-32`, `--bh-space-lg-10`, `--bh-space-md-8`, `--bh-space-sm-6`, `--bh-space-xl-12`, `--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-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-z-base`, `--bh-z-overlay`, `--bh-z-popover`, `--bh-z-raised`, `--shadow-slider-thumb`, `--shadow-slider-thumb-focus`, `--shadow-slider-tooltip` |
|
|
79
|
+
| `tones` | `brand`, `neutral`, `success`, `warning`, `danger` |
|
|
80
|
+
| `valueModes` | `single`, `range`, `multi-thumb` |
|
|
81
|
+
<!-- registry-contract:end -->
|