banhaten 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +139 -73
- package/CONTRIBUTING.md +46 -44
- package/README.md +192 -190
- package/SECURITY.md +15 -15
- package/banhaten.config.example.json +11 -11
- package/docs/design-spacing.md +13 -0
- package/docs/design-system/README.md +22 -20
- package/docs/design-system/adoption-quality-remediation.md +87 -87
- package/docs/design-system/agent-usage.md +13 -13
- package/docs/design-system/appearance-presets.md +189 -189
- package/docs/design-system/appearances/default.md +94 -94
- package/docs/design-system/appearances/rounded.md +95 -95
- package/docs/design-system/appearances/sharp.md +95 -95
- package/docs/design-system/component-docs-pattern.md +81 -81
- package/docs/design-system/component-implementation-ownership-audit.md +245 -244
- package/docs/design-system/component-quality-audit-2026-08-20.md +225 -223
- package/docs/design-system/component-showcase-consistency-report.md +219 -219
- package/docs/design-system/component-token-consistency-audit.md +173 -173
- package/docs/design-system/components/README.md +90 -76
- package/docs/design-system/components/accordion.md +53 -53
- package/docs/design-system/components/activity-feed.md +94 -94
- package/docs/design-system/components/activity-heatmap.md +57 -57
- package/docs/design-system/components/agent-input.md +85 -0
- package/docs/design-system/components/alert-dialog.md +72 -72
- package/docs/design-system/components/alert.md +98 -98
- package/docs/design-system/components/approval-card.md +134 -0
- package/docs/design-system/components/aspect-ratio.md +45 -45
- package/docs/design-system/components/attribute.md +89 -89
- package/docs/design-system/components/autocomplete.md +75 -75
- package/docs/design-system/components/avatar.md +54 -54
- package/docs/design-system/components/badge.md +54 -54
- package/docs/design-system/components/banner.md +87 -87
- package/docs/design-system/components/breadcrumbs.md +177 -176
- package/docs/design-system/components/button-group.md +98 -98
- package/docs/design-system/components/button.md +83 -80
- package/docs/design-system/components/card.md +88 -88
- package/docs/design-system/components/carousel.md +46 -46
- package/docs/design-system/components/catalog-components.md +47 -47
- package/docs/design-system/components/chart.md +95 -24
- package/docs/design-system/components/checkbox.md +54 -54
- package/docs/design-system/components/collapsible.md +67 -53
- package/docs/design-system/components/command.md +62 -62
- package/docs/design-system/components/context-menu.md +46 -46
- package/docs/design-system/components/date-picker.md +81 -79
- package/docs/design-system/components/divider.md +102 -102
- package/docs/design-system/components/empty-state.md +56 -56
- package/docs/design-system/components/field.md +70 -70
- package/docs/design-system/components/file-upload.md +187 -187
- package/docs/design-system/components/hover-card.md +48 -48
- package/docs/design-system/components/icons.md +48 -48
- package/docs/design-system/components/inline-citations.md +93 -0
- package/docs/design-system/components/input-group.md +58 -58
- package/docs/design-system/components/input-otp.md +56 -56
- package/docs/design-system/components/input.md +117 -61
- package/docs/design-system/components/item.md +59 -57
- package/docs/design-system/components/kbd.md +54 -49
- package/docs/design-system/components/label.md +49 -49
- package/docs/design-system/components/menu.md +71 -61
- package/docs/design-system/components/menubar.md +47 -47
- package/docs/design-system/components/modal.md +105 -105
- package/docs/design-system/components/native-select.md +54 -54
- package/docs/design-system/components/navigation-menu.md +50 -50
- package/docs/design-system/components/onboarding-step-list-item.md +82 -82
- package/docs/design-system/components/page-header.md +93 -86
- package/docs/design-system/components/pagination.md +57 -57
- package/docs/design-system/components/popover.md +60 -60
- package/docs/design-system/components/progress-slider.md +50 -50
- package/docs/design-system/components/progress.md +76 -76
- package/docs/design-system/components/radio-card.md +51 -51
- package/docs/design-system/components/radio-group.md +57 -57
- package/docs/design-system/components/resizable.md +44 -44
- package/docs/design-system/components/rolling-count.md +61 -0
- package/docs/design-system/components/scroll-area.md +51 -51
- package/docs/design-system/components/segmented-control.md +54 -54
- package/docs/design-system/components/select.md +68 -62
- package/docs/design-system/components/sheet.md +67 -67
- package/docs/design-system/components/shimmer-text.md +67 -0
- package/docs/design-system/components/sidebar.md +127 -76
- package/docs/design-system/components/skeleton.md +75 -75
- package/docs/design-system/components/slideout.md +65 -65
- package/docs/design-system/components/slider.md +63 -63
- package/docs/design-system/components/social-button.md +50 -50
- package/docs/design-system/components/spinner.md +62 -62
- package/docs/design-system/components/steps.md +65 -65
- package/docs/design-system/components/streaming-text.md +82 -0
- package/docs/design-system/components/table.md +419 -414
- package/docs/design-system/components/tabs.md +59 -55
- package/docs/design-system/components/tag.md +80 -80
- package/docs/design-system/components/task-list.md +95 -0
- package/docs/design-system/components/textarea.md +50 -50
- package/docs/design-system/components/thinking-reasoning.md +72 -0
- package/docs/design-system/components/thinking-state.md +67 -0
- package/docs/design-system/components/timeline.md +83 -83
- package/docs/design-system/components/toast.md +58 -58
- package/docs/design-system/components/toggle.md +81 -81
- package/docs/design-system/components/toolbar.md +92 -87
- package/docs/design-system/components/tooltip.md +94 -92
- package/docs/design-system/components/typography.md +18 -18
- package/docs/design-system/density-and-elevation.md +65 -61
- package/docs/design-system/design-system-test-missing-items.md +368 -368
- package/docs/design-system/direction-and-localization.md +23 -23
- package/docs/design-system/form-recipes.md +73 -73
- package/docs/design-system/gap-promotion-policy.md +21 -21
- package/docs/design-system/icons.md +74 -69
- package/docs/design-system/installation.md +70 -68
- package/docs/design-system/launch-comparison-shadcn.md +98 -98
- package/docs/design-system/registry-and-cli.md +64 -64
- package/docs/design-system/release-policy.md +30 -30
- package/docs/design-system/roadmap.md +14 -14
- package/docs/design-system/support-matrix.md +23 -23
- package/docs/design-system/tabs.md +54 -53
- package/docs/design-system/template-gap-audit.md +32 -0
- package/docs/design-system/templates.md +59 -0
- package/docs/design-system/token-governance.md +72 -60
- package/package.json +98 -98
- package/registry/component-contract.json +40 -40
- package/registry/components/accordion.tsx +155 -155
- package/registry/components/agent-input-parts.tsx +552 -0
- package/registry/components/agent-input-state.ts +156 -0
- package/registry/components/agent-input.css +307 -0
- package/registry/components/agent-input.tsx +382 -0
- package/registry/components/alert-dialog.tsx +297 -297
- package/registry/components/alert.tsx +293 -293
- package/registry/components/approval-card.css +409 -0
- package/registry/components/approval-card.tsx +401 -0
- package/registry/components/approval-frame.tsx +108 -0
- package/registry/components/approval-questions.tsx +559 -0
- package/registry/components/aspect-ratio.tsx +30 -30
- package/registry/components/attribute.tsx +454 -448
- package/registry/components/autocomplete.tsx +598 -651
- package/registry/components/avatar.tsx +385 -381
- package/registry/components/badge.tsx +629 -629
- package/registry/components/button-group.tsx +565 -565
- package/registry/components/button.tsx +127 -123
- package/registry/components/card.tsx +638 -638
- package/registry/components/carousel.tsx +296 -296
- package/registry/components/chart-block-data.ts +177 -0
- package/registry/components/chart-block.css +171 -0
- package/registry/components/chart-block.tsx +260 -0
- package/registry/components/chart-interactions.ts +123 -0
- package/registry/components/chart-options.cartesian.ts +162 -0
- package/registry/components/chart-options.paint.ts +99 -0
- package/registry/components/chart-options.parts.ts +72 -0
- package/registry/components/chart-options.radial.ts +109 -0
- package/registry/components/chart-options.ts +44 -0
- package/registry/components/chart-options.types.ts +67 -0
- package/registry/components/chart.tsx +203 -203
- package/registry/components/checkbox.tsx +247 -247
- package/registry/components/collapsible.tsx +109 -69
- package/registry/components/command.tsx +208 -208
- package/registry/components/context-menu.tsx +236 -236
- package/registry/components/data-chart.tsx +40 -0
- package/registry/components/date-picker.tsx +1289 -1277
- package/registry/components/echart-theme.ts +246 -0
- package/registry/components/echart.css +49 -0
- package/registry/components/echart.tsx +178 -0
- package/registry/components/expanded/ActivityFeed.tsx +227 -227
- package/registry/components/expanded/ActivityHeatmap.tsx +64 -64
- package/registry/components/expanded/Banner.tsx +179 -179
- package/registry/components/expanded/Breadcrumbs.tsx +131 -131
- package/registry/components/expanded/CatalogComponentsShowcase.tsx +205 -205
- package/registry/components/expanded/CatalogDivider.tsx +49 -49
- package/registry/components/expanded/EmptyState.tsx +155 -155
- package/registry/components/expanded/FileUpload.tsx +543 -543
- package/registry/components/expanded/OnboardingStepListItem.tsx +60 -59
- package/registry/components/expanded/PageHeader.tsx +179 -166
- package/registry/components/expanded/Slideout.tsx +108 -108
- package/registry/components/expanded/Steps.tsx +402 -402
- package/registry/components/expanded/Table.tsx +1092 -1071
- package/registry/components/expanded/Timeline.tsx +203 -203
- package/registry/components/expanded/activityFeed.css +248 -248
- package/registry/components/expanded/activityHeatmap.css +66 -66
- package/registry/components/expanded/banner.css +260 -255
- package/registry/components/expanded/breadcrumbs.css +140 -140
- package/registry/components/expanded/catalogComponentsShowcase.css +87 -87
- package/registry/components/expanded/divider.css +75 -75
- package/registry/components/expanded/emptyState.css +111 -111
- package/registry/components/expanded/fileUpload.css +457 -457
- package/registry/components/expanded/onboardingStepListItem.css +135 -126
- package/registry/components/expanded/pageHeader.css +248 -290
- package/registry/components/expanded/slideout.css +276 -276
- package/registry/components/expanded/steps.css +356 -356
- package/registry/components/expanded/table.css +606 -603
- package/registry/components/expanded/timeline.css +286 -286
- package/registry/components/field.tsx +283 -283
- package/registry/components/hover-card.tsx +48 -48
- package/registry/components/inline-citations.css +126 -0
- package/registry/components/inline-citations.tsx +292 -0
- package/registry/components/input-content.ts +107 -107
- package/registry/components/input-group.tsx +130 -130
- package/registry/components/input-otp.tsx +584 -584
- package/registry/components/input.tsx +990 -972
- package/registry/components/item.tsx +189 -189
- package/registry/components/kbd.tsx +246 -151
- package/registry/components/label.tsx +78 -78
- package/registry/components/menu.tsx +978 -986
- package/registry/components/menubar.tsx +226 -226
- package/registry/components/modal.tsx +872 -872
- package/registry/components/native-select.tsx +205 -205
- package/registry/components/navigation-menu.tsx +171 -171
- package/registry/components/pagination.css +36 -36
- package/registry/components/pagination.tsx +560 -555
- package/registry/components/popover.tsx +338 -338
- package/registry/components/progress-slider.tsx +216 -216
- package/registry/components/radio-card.tsx +676 -677
- package/registry/components/radio-group.tsx +570 -570
- package/registry/components/resizable.tsx +108 -108
- package/registry/components/rolling-count.css +37 -0
- package/registry/components/rolling-count.tsx +110 -0
- package/registry/components/scroll-area.tsx +91 -91
- package/registry/components/segmented-control.tsx +87 -87
- package/registry/components/select-content.tsx +218 -218
- package/registry/components/select.tsx +937 -932
- package/registry/components/sheet.tsx +305 -305
- package/registry/components/shimmer-text.css +69 -0
- package/registry/components/shimmer-text.tsx +43 -0
- package/registry/components/sidebar.tsx +1433 -358
- package/registry/components/skeleton.css +54 -54
- package/registry/components/skeleton.tsx +482 -482
- package/registry/components/slider.tsx +380 -380
- package/registry/components/social-button.tsx +387 -387
- package/registry/components/spinner.tsx +78 -78
- package/registry/components/streaming-text.css +45 -0
- package/registry/components/streaming-text.tsx +165 -0
- package/registry/components/table-elements.tsx +128 -128
- package/registry/components/tabs.css +222 -218
- package/registry/components/tabs.tsx +241 -241
- package/registry/components/tag.tsx +423 -423
- package/registry/components/task-list.css +328 -0
- package/registry/components/task-list.tsx +429 -0
- package/registry/components/textarea.tsx +610 -610
- package/registry/components/thinking-reasoning.css +178 -0
- package/registry/components/thinking-reasoning.tsx +253 -0
- package/registry/components/thinking-state.css +8 -0
- package/registry/components/thinking-state.tsx +46 -0
- package/registry/components/toast.tsx +136 -136
- package/registry/components/toggle.tsx +256 -256
- package/registry/components/toolbar.tsx +539 -539
- package/registry/components/tooltip.tsx +433 -431
- package/registry/examples/agent-input-demo.tsx +90 -0
- package/registry/examples/alert-demo.tsx +34 -34
- package/registry/examples/alert-dialog-demo.tsx +42 -42
- package/registry/examples/approval-card-demo.tsx +83 -0
- package/registry/examples/aspect-ratio-demo.tsx +11 -11
- package/registry/examples/attribute-demo.tsx +65 -65
- package/registry/examples/autocomplete-demo.tsx +109 -109
- package/registry/examples/avatar-demo.tsx +132 -132
- package/registry/examples/badge-demo.tsx +69 -69
- package/registry/examples/button-demo.tsx +86 -83
- package/registry/examples/button-group-demo.tsx +63 -63
- package/registry/examples/card-demo.tsx +86 -86
- package/registry/examples/carousel-demo.tsx +43 -43
- package/registry/examples/chart-block-demo.tsx +5 -0
- package/registry/examples/chart-demo.tsx +18 -33
- package/registry/examples/checkbox-demo.tsx +62 -62
- package/registry/examples/collapsible-demo.tsx +16 -16
- package/registry/examples/collection-filter-bar-demo.tsx +135 -135
- package/registry/examples/command-demo.tsx +42 -42
- package/registry/examples/command-palette-demo.tsx +235 -236
- package/registry/examples/context-menu-demo.tsx +29 -29
- package/registry/examples/control-density-contract-demo.tsx +65 -61
- package/registry/examples/date-picker-demo.tsx +127 -127
- package/registry/examples/divider-demo.tsx +17 -17
- package/registry/examples/expanded/activity-heatmap-demo.tsx +29 -29
- package/registry/examples/expanded/banner-demo.tsx +48 -48
- package/registry/examples/expanded/breadcrumbs-demo.tsx +59 -59
- package/registry/examples/expanded/empty-state-demo.tsx +39 -39
- package/registry/examples/expanded/file-upload-demo.tsx +60 -60
- package/registry/examples/expanded/onboarding-step-demo.tsx +11 -11
- package/registry/examples/expanded/slideout-demo.tsx +15 -15
- package/registry/examples/expanded/steps-demo.tsx +29 -29
- package/registry/examples/expanded/tabs-demo.tsx +13 -13
- package/registry/examples/expanded/timeline-demo.tsx +18 -18
- package/registry/examples/field-demo.tsx +51 -51
- package/registry/examples/hover-card-demo.tsx +23 -23
- package/registry/examples/inline-citations-demo.tsx +31 -0
- package/registry/examples/input-actions-demo.tsx +36 -0
- package/registry/examples/input-demo.tsx +87 -87
- package/registry/examples/input-group-demo.tsx +16 -16
- package/registry/examples/input-otp-demo.tsx +72 -72
- package/registry/examples/item-demo.tsx +46 -46
- package/registry/examples/kbd-demo.tsx +12 -11
- package/registry/examples/label-demo.tsx +20 -20
- package/registry/examples/menu-demo.tsx +122 -122
- package/registry/examples/menubar-demo.tsx +34 -34
- package/registry/examples/modal-demo.tsx +74 -74
- package/registry/examples/native-select-demo.tsx +16 -16
- package/registry/examples/navigation-menu-demo.tsx +29 -29
- package/registry/examples/pagination-demo.tsx +20 -20
- package/registry/examples/popover-demo.tsx +547 -546
- package/registry/examples/progress-demo.tsx +37 -37
- package/registry/examples/progress-slider-demo.tsx +29 -29
- package/registry/examples/radio-card-demo.tsx +51 -51
- package/registry/examples/radio-group-demo.tsx +62 -62
- package/registry/examples/resizable-demo.tsx +22 -22
- package/registry/examples/results-toolbar-demo.tsx +44 -44
- package/registry/examples/rolling-count-demo.tsx +39 -0
- package/registry/examples/scroll-area-demo.tsx +15 -15
- package/registry/examples/segmented-control-demo.tsx +39 -39
- package/registry/examples/select-demo.tsx +87 -87
- package/registry/examples/sheet-demo.tsx +47 -47
- package/registry/examples/shimmer-text-demo.tsx +20 -0
- package/registry/examples/sidebar-demo.tsx +101 -57
- package/registry/examples/slider-demo.tsx +31 -31
- package/registry/examples/social-button-demo.tsx +61 -61
- package/registry/examples/spinner-demo.tsx +59 -59
- package/registry/examples/streaming-text-demo.tsx +28 -0
- package/registry/examples/tabs-demo.tsx +13 -13
- package/registry/examples/tag-demo.tsx +29 -29
- package/registry/examples/task-list-demo.tsx +74 -0
- package/registry/examples/textarea-demo.tsx +79 -79
- package/registry/examples/thinking-reasoning-demo.tsx +74 -0
- package/registry/examples/thinking-state-demo.tsx +13 -0
- package/registry/examples/toast-demo.tsx +35 -35
- package/registry/examples/toggle-demo.tsx +59 -59
- package/registry/examples/tooltip-demo.tsx +115 -115
- package/registry/guidance/USAGE.md +27 -27
- package/registry/guidance/charts.LICENSE.txt +24 -0
- package/registry/hooks/use-controllable-state.ts +33 -0
- package/registry/hooks/use-direction.ts +207 -207
- package/registry/hooks/use-listbox-navigation.ts +73 -0
- package/registry/hooks/use-motion-end.ts +55 -0
- package/registry/hooks/use-reduced-motion.ts +28 -0
- package/registry/index.json +1634 -184
- package/registry/styles/globals.css +1462 -1570
- package/registry.json +364 -10
- package/schema/config.schema.json +51 -51
- package/schema/registry.schema.json +194 -190
- package/schema/tokens.schema.json +167 -163
- package/src/cli/command-line.js +194 -194
- package/src/cli/config-editors.js +9 -9
- package/src/cli/doctor.js +399 -399
- package/src/cli/file-transaction.js +302 -295
- package/src/cli/global-css.js +153 -153
- package/src/cli/index.js +1002 -1009
- package/src/cli/install-plan.js +592 -592
- package/src/cli/install-receipt.js +171 -171
- package/src/cli/jsonc.js +203 -203
- package/src/cli/package-install-state.js +254 -254
- package/src/cli/package-manager.js +238 -238
- package/src/cli/package-plan.js +185 -185
- package/src/cli/package-version.js +97 -97
- package/src/cli/registry-query.js +207 -207
- package/src/cli/reporting.js +55 -55
- package/src/cli/schema-validation.js +19 -19
- package/src/cli/source-scanner.js +686 -686
- package/src/cli/vite-config.js +478 -478
- package/tokens/banhaten.tokens.json +458 -224
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
# Navigation Menu
|
|
2
|
-
|
|
3
|
-
Navigation Menu wraps Radix NavigationMenu for top navigation with trigger, content, link, viewport, and indicator parts.
|
|
4
|
-
|
|
5
|
-
## API
|
|
6
|
-
|
|
7
|
-
```tsx
|
|
8
|
-
<NavigationMenu>
|
|
9
|
-
<NavigationMenuList>
|
|
10
|
-
<NavigationMenuItem>
|
|
11
|
-
<NavigationMenuTrigger>Product</NavigationMenuTrigger>
|
|
12
|
-
<NavigationMenuContent>
|
|
13
|
-
<NavigationMenuLink href="#">Components</NavigationMenuLink>
|
|
14
|
-
</NavigationMenuContent>
|
|
15
|
-
</NavigationMenuItem>
|
|
16
|
-
</NavigationMenuList>
|
|
17
|
-
<NavigationMenuViewport />
|
|
18
|
-
</NavigationMenu>
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## Token Contract
|
|
22
|
-
|
|
23
|
-
Navigation Menu uses Banhaten ghost hover, soft active state, raised content, popover shadow, radius, and body typography tokens.
|
|
24
|
-
|
|
25
|
-
## RTL
|
|
26
|
-
|
|
27
|
-
The list and content inherit direction. Links use logical text alignment.
|
|
28
|
-
|
|
29
|
-
## Accessibility
|
|
30
|
-
|
|
31
|
-
Radix handles trigger relationships, viewport sizing, keyboard navigation, and focus.
|
|
32
|
-
|
|
33
|
-
## Install
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
npx banhaten add navigation-menu
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Examples
|
|
40
|
-
|
|
41
|
-
Primary registry example: `examples/navigation-menu-demo.tsx`.
|
|
42
|
-
|
|
43
|
-
Open the live component page or run `npx banhaten docs navigation-menu` to inspect source files, install command, and examples.
|
|
44
|
-
|
|
45
|
-
## RTL Rules
|
|
46
|
-
|
|
47
|
-
- `inheritsDirection`: true
|
|
48
|
-
- `spacing`: Triggers, links, and content use logical layout and inherited direction.
|
|
49
|
-
|
|
1
|
+
# Navigation Menu
|
|
2
|
+
|
|
3
|
+
Navigation Menu wraps Radix NavigationMenu for top navigation with trigger, content, link, viewport, and indicator parts.
|
|
4
|
+
|
|
5
|
+
## API
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
<NavigationMenu>
|
|
9
|
+
<NavigationMenuList>
|
|
10
|
+
<NavigationMenuItem>
|
|
11
|
+
<NavigationMenuTrigger>Product</NavigationMenuTrigger>
|
|
12
|
+
<NavigationMenuContent>
|
|
13
|
+
<NavigationMenuLink href="#">Components</NavigationMenuLink>
|
|
14
|
+
</NavigationMenuContent>
|
|
15
|
+
</NavigationMenuItem>
|
|
16
|
+
</NavigationMenuList>
|
|
17
|
+
<NavigationMenuViewport />
|
|
18
|
+
</NavigationMenu>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Token Contract
|
|
22
|
+
|
|
23
|
+
Navigation Menu uses Banhaten ghost hover, soft active state, raised content, popover shadow, radius, and body typography tokens.
|
|
24
|
+
|
|
25
|
+
## RTL
|
|
26
|
+
|
|
27
|
+
The list and content inherit direction. Links use logical text alignment.
|
|
28
|
+
|
|
29
|
+
## Accessibility
|
|
30
|
+
|
|
31
|
+
Radix handles trigger relationships, viewport sizing, keyboard navigation, and focus.
|
|
32
|
+
|
|
33
|
+
## Install
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npx banhaten add navigation-menu
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Examples
|
|
40
|
+
|
|
41
|
+
Primary registry example: `examples/navigation-menu-demo.tsx`.
|
|
42
|
+
|
|
43
|
+
Open the live component page or run `npx banhaten docs navigation-menu` to inspect source files, install command, and examples.
|
|
44
|
+
|
|
45
|
+
## RTL Rules
|
|
46
|
+
|
|
47
|
+
- `inheritsDirection`: true
|
|
48
|
+
- `spacing`: Triggers, links, and content use logical layout and inherited direction.
|
|
49
|
+
|
|
50
50
|
<!-- registry-contract:start -->
|
|
51
51
|
## Registry Contract
|
|
52
52
|
|
|
@@ -59,5 +59,5 @@ This table is generated from `registry/index.json`; edit the component-owned sou
|
|
|
59
59
|
| `parts` | `NavigationMenu`, `NavigationMenuList`, `NavigationMenuItem`, `NavigationMenuTrigger`, `NavigationMenuContent`, `NavigationMenuLink`, `NavigationMenuViewport`, `NavigationMenuIndicator` |
|
|
60
60
|
| `registryDependencies` | None |
|
|
61
61
|
| `features` | `top navigation`, `viewport`, `indicator`, `dropdown content` |
|
|
62
|
-
| `tokens` | `--bh-bg-raised`, `--bh-border-subtle`, `--bh-border-width-default`, `--bh-content-default`, `--bh-content-disabled`, `--bh-interactive-ghost-hover`, `--bh-interactive-soft-default`, `--bh-radius-2xl-12`, `--bh-radius-lg-8`, `--bh-radius-sm-4`, `--bh-space-19xl-384`, `--bh-space-3xl-16`, `--bh-space-7xl-40`, `--bh-space-lg-10`, `--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-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-z-popover`, `--bh-z-raised`, `--
|
|
62
|
+
| `tokens` | `--bh-bg-raised`, `--bh-border-subtle`, `--bh-border-width-default`, `--bh-content-default`, `--bh-content-disabled`, `--bh-interactive-ghost-hover`, `--bh-interactive-soft-default`, `--bh-radius-2xl-12`, `--bh-radius-lg-8`, `--bh-radius-sm-4`, `--bh-space-19xl-384`, `--bh-space-3xl-16`, `--bh-space-7xl-40`, `--bh-space-lg-10`, `--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-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-z-popover`, `--bh-z-raised`, `--elevation-popover` |
|
|
63
63
|
<!-- registry-contract:end -->
|
|
@@ -1,84 +1,84 @@
|
|
|
1
|
-
# Onboarding Step List Item
|
|
2
|
-
|
|
3
|
-
`OnboardingStepListItem` renders one vertical progress-list row for onboarding, setup, or guided task flows. It should be composed into a list by the parent flow, which controls line visibility for first and last items.
|
|
4
|
-
|
|
5
|
-
Figma reference: `OnboardingStepListItem`, node `587:27227`.
|
|
6
|
-
|
|
7
|
-
## Variants
|
|
8
|
-
|
|
9
|
-
The Figma component defines these variants:
|
|
10
|
-
|
|
11
|
-
| State | Direction |
|
|
12
|
-
| --- | --- |
|
|
13
|
-
| `Finished` | LTR and RTL |
|
|
14
|
-
| `Active` | LTR and RTL |
|
|
15
|
-
| `inactive` | LTR and RTL |
|
|
16
|
-
|
|
17
|
-
Code uses lowercase semantic state values: `finished`, `active`, and `inactive`.
|
|
18
|
-
|
|
19
|
-
## API
|
|
20
|
-
|
|
21
|
-
```tsx
|
|
22
|
-
<OnboardingStepListItem
|
|
23
|
-
state="finished"
|
|
24
|
-
label="Label"
|
|
25
|
-
dir="ltr"
|
|
26
|
-
showLeadingLine
|
|
27
|
-
showTrailingLine
|
|
28
|
-
/>
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
| Prop | Values | Default |
|
|
32
|
-
| --- | --- | --- |
|
|
33
|
-
| `state` | `finished`, `active`, `inactive` | `finished` |
|
|
34
|
-
| `label` | `string` | `Label` |
|
|
35
|
-
| `dir` | `ltr`, `rtl` | `ltr` |
|
|
36
|
-
| `showLeadingLine` | `boolean` | `true` |
|
|
37
|
-
| `showTrailingLine` | `boolean` | `true` |
|
|
38
|
-
|
|
39
|
-
## Token Contract
|
|
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 its owned `tokens/source/` fragment as a `--bh-*` token or alias first.
|
|
42
|
-
|
|
43
|
-
- Backgrounds: `--bh-bg-raised`
|
|
44
|
-
- Borders: `--bh-border-brand-strong`, `--bh-border-default`
|
|
45
|
-
- Content: `--bh-content-brand-default`, `--bh-content-default`, `--bh-content-subtle`, `--bh-content-success-default`
|
|
46
|
-
- Shape: `--bh-control-default`
|
|
47
|
-
- Space: `--bh-space-lg-10`, `--bh-space-xl-12`
|
|
48
|
-
|
|
49
|
-
## Pixel Rules
|
|
50
|
-
|
|
51
|
-
- The row is `280px` wide and `40px` tall.
|
|
52
|
-
- Padding is `8px 12px` with a `10px` gap between the line wrap and label.
|
|
53
|
-
- Text uses Inter Medium `15px / 24px` with zero letter spacing.
|
|
54
|
-
- The line wrap is `24px` square.
|
|
55
|
-
- Finished uses
|
|
56
|
-
- Active uses a `2px x 20px` brand line, a default border, white raised fill, `8px` radius, and component shadow.
|
|
57
|
-
- Inactive uses a `2px x 40px` default connector line and subtle content color.
|
|
58
|
-
- RTL mirrors visual order through `dir="rtl"` and right-aligns the label.
|
|
59
|
-
|
|
60
|
-
## Accessibility
|
|
61
|
-
|
|
62
|
-
- Connector lines and the finished icon are decorative in this primitive and are hidden from assistive technology.
|
|
63
|
-
- Parent onboarding lists should expose the overall progress semantics, current step, and completion status.
|
|
64
|
-
- Keep labels as real text and avoid using this row as the only status announcement.
|
|
65
|
-
|
|
66
|
-
## Install
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
npx banhaten add onboarding-step
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
## Examples
|
|
73
|
-
|
|
74
|
-
Primary registry example: `examples/expanded/onboarding-step-demo.tsx`.
|
|
75
|
-
|
|
76
|
-
Open the live component page or run `npx banhaten docs onboarding-step` to inspect source files, install command, and examples.
|
|
77
|
-
|
|
78
|
-
## RTL Rules
|
|
79
|
-
|
|
80
|
-
This component has no special RTL contract beyond inherited document direction and logical spacing.
|
|
81
|
-
|
|
1
|
+
# Onboarding Step List Item
|
|
2
|
+
|
|
3
|
+
`OnboardingStepListItem` renders one vertical progress-list row for onboarding, setup, or guided task flows. It should be composed into a list by the parent flow, which controls line visibility for first and last items.
|
|
4
|
+
|
|
5
|
+
Figma reference: `OnboardingStepListItem`, node `587:27227`.
|
|
6
|
+
|
|
7
|
+
## Variants
|
|
8
|
+
|
|
9
|
+
The Figma component defines these variants:
|
|
10
|
+
|
|
11
|
+
| State | Direction |
|
|
12
|
+
| --- | --- |
|
|
13
|
+
| `Finished` | LTR and RTL |
|
|
14
|
+
| `Active` | LTR and RTL |
|
|
15
|
+
| `inactive` | LTR and RTL |
|
|
16
|
+
|
|
17
|
+
Code uses lowercase semantic state values: `finished`, `active`, and `inactive`.
|
|
18
|
+
|
|
19
|
+
## API
|
|
20
|
+
|
|
21
|
+
```tsx
|
|
22
|
+
<OnboardingStepListItem
|
|
23
|
+
state="finished"
|
|
24
|
+
label="Label"
|
|
25
|
+
dir="ltr"
|
|
26
|
+
showLeadingLine
|
|
27
|
+
showTrailingLine
|
|
28
|
+
/>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
| Prop | Values | Default |
|
|
32
|
+
| --- | --- | --- |
|
|
33
|
+
| `state` | `finished`, `active`, `inactive` | `finished` |
|
|
34
|
+
| `label` | `string` | `Label` |
|
|
35
|
+
| `dir` | `ltr`, `rtl` | `ltr` |
|
|
36
|
+
| `showLeadingLine` | `boolean` | `true` |
|
|
37
|
+
| `showTrailingLine` | `boolean` | `true` |
|
|
38
|
+
|
|
39
|
+
## Token Contract
|
|
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 its owned `tokens/source/` fragment as a `--bh-*` token or alias first.
|
|
42
|
+
|
|
43
|
+
- Backgrounds: `--bh-bg-raised`
|
|
44
|
+
- Borders: `--bh-border-brand-strong`, `--bh-border-default`
|
|
45
|
+
- Content: `--bh-content-brand-default`, `--bh-content-default`, `--bh-content-subtle`, `--bh-content-success-default`
|
|
46
|
+
- Shape: `--bh-control-default`
|
|
47
|
+
- Space: `--bh-space-lg-10`, `--bh-space-xl-12`
|
|
48
|
+
|
|
49
|
+
## Pixel Rules
|
|
50
|
+
|
|
51
|
+
- The row is `280px` wide and `40px` tall.
|
|
52
|
+
- Padding is `8px 12px` with a `10px` gap between the line wrap and label.
|
|
53
|
+
- Text uses Inter Medium `15px / 24px` with zero letter spacing.
|
|
54
|
+
- The line wrap is `24px` square.
|
|
55
|
+
- Finished uses an `18px` success check-circle glyph in a `20px` slot with `2px` default connector lines.
|
|
56
|
+
- Active uses a `2px x 20px` brand line, a default border, white raised fill, `8px` radius, and component shadow.
|
|
57
|
+
- Inactive uses a `2px x 40px` default connector line and subtle content color.
|
|
58
|
+
- RTL mirrors visual order through `dir="rtl"` and right-aligns the label.
|
|
59
|
+
|
|
60
|
+
## Accessibility
|
|
61
|
+
|
|
62
|
+
- Connector lines and the finished icon are decorative in this primitive and are hidden from assistive technology.
|
|
63
|
+
- Parent onboarding lists should expose the overall progress semantics, current step, and completion status.
|
|
64
|
+
- Keep labels as real text and avoid using this row as the only status announcement.
|
|
65
|
+
|
|
66
|
+
## Install
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
npx banhaten add onboarding-step
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Examples
|
|
73
|
+
|
|
74
|
+
Primary registry example: `examples/expanded/onboarding-step-demo.tsx`.
|
|
75
|
+
|
|
76
|
+
Open the live component page or run `npx banhaten docs onboarding-step` to inspect source files, install command, and examples.
|
|
77
|
+
|
|
78
|
+
## RTL Rules
|
|
79
|
+
|
|
80
|
+
This component has no special RTL contract beyond inherited document direction and logical spacing.
|
|
81
|
+
|
|
82
82
|
<!-- registry-contract:start -->
|
|
83
83
|
## Registry Contract
|
|
84
84
|
|
|
@@ -91,5 +91,5 @@ This table is generated from `registry/index.json`; edit the component-owned sou
|
|
|
91
91
|
| `parts` | `OnboardingStepListItem` |
|
|
92
92
|
| `registryDependencies` | None |
|
|
93
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-
|
|
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-size-default`, `--bh-icon-slot-size-default`, `--bh-icon-stroke-225`, `--bh-space-17xl-288`, `--bh-space-2xl-14`, `--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`, `--elevation-component-default` |
|
|
95
95
|
<!-- registry-contract:end -->
|
|
@@ -1,88 +1,94 @@
|
|
|
1
|
-
# Page Header
|
|
2
|
-
|
|
3
|
-
Page headers introduce a page or section with optional hierarchy, title metadata, actions, description, and local tabs.
|
|
4
|
-
|
|
5
|
-
Figma reference: `Page Header`, node `1154:2816` in `Design system 3.0 Copy`.
|
|
6
|
-
|
|
7
|
-
## API
|
|
8
|
-
|
|
9
|
-
```tsx
|
|
10
|
-
<PageHeader
|
|
11
|
-
title="Section Tile"
|
|
12
|
-
metaInfo="Meta info"
|
|
13
|
-
description="Section description"
|
|
14
|
-
breadcrumbs={[{ label: "Home" }, { label: "Home" }]}
|
|
15
|
-
actions={[{ label: "Button" }, { label: "Button" }]}
|
|
16
|
-
tabs={{ items: ["Tab item", "Tab item", "Tab item"] }}
|
|
17
|
-
/>
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
| Prop | Type | Default |
|
|
21
|
-
| --- | --- | --- |
|
|
22
|
-
| `title` | `string` | `Section Tile` |
|
|
23
|
-
| `metaInfo` | `string` | `Meta info` |
|
|
24
|
-
| `description` | `string` | `Section description` |
|
|
25
|
-
| `icon` | `ReactNode` or `false` | home icon |
|
|
26
|
-
| `breadcrumbs` | `PageHeaderBreadcrumb[]` or `false` | four `Home` items |
|
|
27
|
-
| `actions` | `PageHeaderAction[]` or `false` | four `Button` actions |
|
|
28
|
-
| `tabs` | `PageHeaderTabs` or `false` | underline `Tabs` |
|
|
29
|
-
| `
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
##
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
##
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
1
|
+
# Page Header
|
|
2
|
+
|
|
3
|
+
Page headers introduce a page or section with optional hierarchy, title metadata, actions, description, and local tabs.
|
|
4
|
+
|
|
5
|
+
Figma reference: `Page Header`, node `1154:2816` in `Design system 3.0 Copy`.
|
|
6
|
+
|
|
7
|
+
## API
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
<PageHeader
|
|
11
|
+
title="Section Tile"
|
|
12
|
+
metaInfo="Meta info"
|
|
13
|
+
description="Section description"
|
|
14
|
+
breadcrumbs={[{ label: "Home" }, { label: "Home" }]}
|
|
15
|
+
actions={[{ label: "Button" }, { label: "Button" }]}
|
|
16
|
+
tabs={{ items: ["Tab item", "Tab item", "Tab item"] }}
|
|
17
|
+
/>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
| Prop | Type | Default |
|
|
21
|
+
| --- | --- | --- |
|
|
22
|
+
| `title` | `string` | `Section Tile` |
|
|
23
|
+
| `metaInfo` | `string` | `Meta info` |
|
|
24
|
+
| `description` | `string` | `Section description` |
|
|
25
|
+
| `icon` | `ReactNode` or `false` | home icon |
|
|
26
|
+
| `breadcrumbs` | `PageHeaderBreadcrumb[]` or `false` | four `Home` items |
|
|
27
|
+
| `actions` | `PageHeaderAction[]` or `false` | four `Button` actions |
|
|
28
|
+
| `tabs` | `PageHeaderTabs` or `false` | underline `Tabs` |
|
|
29
|
+
| `tabs.fullWidth` | `boolean` | `true`; set `false` for content-width triggers |
|
|
30
|
+
| `dir` | `ltr` or `rtl` | `ltr` |
|
|
31
|
+
|
|
32
|
+
## Structure
|
|
33
|
+
|
|
34
|
+
The implementation follows the Figma hierarchy:
|
|
35
|
+
|
|
36
|
+
- Breadcrumb navigation above the section body.
|
|
37
|
+
- Title row with optional icon, title, and meta text.
|
|
38
|
+
- Action group aligned to the end of the title row.
|
|
39
|
+
- Optional body description below the title row.
|
|
40
|
+
- Underline `Tabs` spanning the full header width. Triggers take equal shares by default and can opt into content width with `tabs.fullWidth: false`.
|
|
41
|
+
|
|
42
|
+
The title and description each resolve their own content direction. This keeps punctuation attached to the content when its script opposes the surrounding page direction, without changing the mirrored header layout.
|
|
43
|
+
|
|
44
|
+
`PageHeader` reuses the existing `Button` and `Tabs` components instead of duplicating their behavior or visual contracts. Action descriptors render as `secondary`, default-density Buttons; PageHeader owns only their grouping and placement.
|
|
45
|
+
|
|
46
|
+
Breadcrumb items retain Breadcrumbs' icon-slot contract: populated slots use the canonical icon geometry, while empty slots collapse instead of reserving space inside the header.
|
|
47
|
+
|
|
48
|
+
## Token Contract
|
|
49
|
+
|
|
50
|
+
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.
|
|
51
|
+
|
|
52
|
+
- Content: `--bh-content-brand-default`, `--bh-content-default`, `--bh-content-heading`, `--bh-content-muted`, `--bh-content-subtle`
|
|
53
|
+
- Actions inherit Button's secondary surface, border, typography, focus, and disabled tokens instead of redeclaring them in PageHeader.
|
|
54
|
+
- Breadcrumb icon visibility and geometry remain owned by Breadcrumbs.
|
|
55
|
+
|
|
56
|
+
## Pixel Rules
|
|
57
|
+
|
|
58
|
+
- Header root is vertically padded by `20px`.
|
|
59
|
+
- Breadcrumb and body text use `15px / 24px`.
|
|
60
|
+
- Title uses `24px / 28px` at weight `600`.
|
|
61
|
+
- Meta text uses `12px / 16px`.
|
|
62
|
+
- Title row and action group are separated by `40px`.
|
|
63
|
+
- Populated breadcrumb icon slots remain `20px`; empty slots collapse to `0px`.
|
|
64
|
+
- Actions use Button's `secondary`, `density="default"` contract (`36px` high, resolving to `sm`); PageHeader owns only action-group placement and gap.
|
|
65
|
+
- Tabs use the existing `underline`, `md`, `fullWidth` treatment by default. Full-width triggers keep equal shares while labels fit; both full and content-width modes preserve intrinsic label width and scroll horizontally when the row is narrower than its labels.
|
|
66
|
+
|
|
67
|
+
## Accessibility
|
|
68
|
+
|
|
69
|
+
- Breadcrumbs render as `<nav aria-label="Breadcrumb">` with an ordered list.
|
|
70
|
+
- Mark the current breadcrumb with `current: true` so it receives `aria-current="page"`.
|
|
71
|
+
- Separators are decorative and hidden from assistive technology.
|
|
72
|
+
- Action items render as real buttons or anchors.
|
|
73
|
+
- Action focus and disabled states come from Button; breadcrumb focus remains visible for keyboard users.
|
|
74
|
+
- Tab labels remain complete and non-overlapping; constrained rows scroll locally instead of truncating or painting one label over another.
|
|
75
|
+
|
|
76
|
+
## Install
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
npx banhaten add page-header
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Examples
|
|
83
|
+
|
|
84
|
+
Primary registry example: `examples/expanded/page-header-demo.tsx`.
|
|
85
|
+
|
|
86
|
+
Open the live component page or run `npx banhaten docs page-header` to inspect source files, install command, and examples.
|
|
87
|
+
|
|
88
|
+
## RTL Rules
|
|
89
|
+
|
|
90
|
+
The header layout inherits document direction and uses logical spacing. The title and description independently use `dir="auto"`, so Latin copy in an RTL header (and Arabic copy in an LTR header) keeps neutral punctuation at its content end while breadcrumbs, actions, metadata, and tabs retain the header direction. Horizontal tab overflow follows that inherited direction without changing or truncating label copy.
|
|
91
|
+
|
|
86
92
|
<!-- registry-contract:start -->
|
|
87
93
|
## Registry Contract
|
|
88
94
|
|
|
@@ -94,7 +100,8 @@ This table is generated from `registry/index.json`; edit the component-owned sou
|
|
|
94
100
|
| `supportedExports` | `components/expanded/PageHeader.tsx: PageHeader` |
|
|
95
101
|
| `parts` | `PageHeader` |
|
|
96
102
|
| `registryDependencies` | `breadcrumbs`, `button`, `tabs` |
|
|
103
|
+
| `features` | `Breadcrumb-owned icon-slot visibility`, `Button-owned default-density secondary action styling`, `content-safe horizontal tab overflow`, `full-width tab opt-out` |
|
|
97
104
|
| `modes` | `breadcrumbs`, `metadata`, `description`, `actions`, `tabs` |
|
|
98
105
|
| `states` | `default`, `without-icon`, `without-actions`, `without-tabs` |
|
|
99
|
-
| `tokens` | `--bh-
|
|
106
|
+
| `tokens` | `--bh-button-label-padding-x`, `--bh-content-brand-default`, `--bh-content-default`, `--bh-content-muted`, `--bh-content-subtle`, `--bh-focus-ring-width`, `--bh-font-family`, `--bh-icon-stroke-190`, `--bh-space-2xl-14`, `--bh-space-3xl-16`, `--bh-space-4xl-20`, `--bh-space-5xl-24`, `--bh-space-7xl-40`, `--bh-space-lg-10`, `--bh-space-md-8`, `--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-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` |
|
|
100
107
|
<!-- registry-contract:end -->
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
# Pagination
|
|
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, RTL layout, and explicit localized messages.
|
|
4
|
-
|
|
5
|
-
## API
|
|
6
|
-
|
|
7
|
-
```tsx
|
|
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
|
-
/>
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
| Prop | Values | Default |
|
|
18
|
-
| --- | --- | --- |
|
|
19
|
-
| `type` | `numeric`, `simple`, `summary` | `numeric` |
|
|
20
|
-
| `variant` | `soft`, `ghost` | `soft` |
|
|
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 |
|
|
25
|
-
|
|
26
|
-
## Token Contract
|
|
27
|
-
|
|
28
|
-
Pagination uses Banhaten control height, radius, border, background, content, focus, icon, caption, and
|
|
29
|
-
|
|
30
|
-
## RTL
|
|
31
|
-
|
|
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.
|
|
33
|
-
|
|
34
|
-
## Accessibility
|
|
35
|
-
|
|
36
|
-
Wrap pagination in a navigation landmark with a descriptive label. Current page controls should expose current state, and previous/next buttons should have readable labels.
|
|
37
|
-
|
|
38
|
-
## Install
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
npx banhaten add pagination
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
## Examples
|
|
45
|
-
|
|
46
|
-
Primary registry example: `examples/pagination-demo.tsx`.
|
|
47
|
-
|
|
48
|
-
Open the live component page or run `npx banhaten docs pagination` to inspect source files, install command, and examples.
|
|
49
|
-
|
|
50
|
-
## RTL Rules
|
|
51
|
-
|
|
52
|
-
- `inheritsDirection`: true
|
|
53
|
-
- `messages`: Direction does not select language. English defaults are stable; pass messages for Arabic, Hebrew, Persian, Urdu, or another locale.
|
|
54
|
-
- `directionalIconFlip`: Inline Figma arrow vectors use data-rtl-flip="true" so previous and next controls mirror in RTL.
|
|
55
|
-
- `spacing`: Uses logical flex direction, gap, and text direction so English and Arabic captions align naturally.
|
|
56
|
-
|
|
1
|
+
# Pagination
|
|
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, RTL layout, and explicit localized messages.
|
|
4
|
+
|
|
5
|
+
## API
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
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
|
+
/>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
| Prop | Values | Default |
|
|
18
|
+
| --- | --- | --- |
|
|
19
|
+
| `type` | `numeric`, `simple`, `summary` | `numeric` |
|
|
20
|
+
| `variant` | `soft`, `ghost` | `soft` |
|
|
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 |
|
|
25
|
+
|
|
26
|
+
## Token Contract
|
|
27
|
+
|
|
28
|
+
Pagination uses Banhaten control height, radius, border, background, content, focus, icon, caption, and elevation tokens. Previous/next glyphs are 18px inside 20px slots.
|
|
29
|
+
|
|
30
|
+
## RTL
|
|
31
|
+
|
|
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.
|
|
33
|
+
|
|
34
|
+
## Accessibility
|
|
35
|
+
|
|
36
|
+
Wrap pagination in a navigation landmark with a descriptive label. Current page controls should expose current state, and previous/next buttons should have readable labels.
|
|
37
|
+
|
|
38
|
+
## Install
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npx banhaten add pagination
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Examples
|
|
45
|
+
|
|
46
|
+
Primary registry example: `examples/pagination-demo.tsx`.
|
|
47
|
+
|
|
48
|
+
Open the live component page or run `npx banhaten docs pagination` to inspect source files, install command, and examples.
|
|
49
|
+
|
|
50
|
+
## RTL Rules
|
|
51
|
+
|
|
52
|
+
- `inheritsDirection`: true
|
|
53
|
+
- `messages`: Direction does not select language. English defaults are stable; pass messages for Arabic, Hebrew, Persian, Urdu, or another locale.
|
|
54
|
+
- `directionalIconFlip`: Inline Figma arrow vectors use data-rtl-flip="true" so previous and next controls mirror in RTL.
|
|
55
|
+
- `spacing`: Uses logical flex direction, gap, and text direction so English and Arabic captions align naturally.
|
|
56
|
+
|
|
57
57
|
<!-- registry-contract:start -->
|
|
58
58
|
## Registry Contract
|
|
59
59
|
|
|
@@ -66,7 +66,7 @@ This table is generated from `registry/index.json`; edit the component-owned sou
|
|
|
66
66
|
| `parts` | `Pagination` |
|
|
67
67
|
| `registryDependencies` | None |
|
|
68
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`, `--
|
|
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-icon-slot-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`, `--elevation-pagination-active`, `--elevation-pagination-control`, `--elevation-pagination-focus` |
|
|
70
70
|
| `types` | `numeric`, `simple`, `summary` |
|
|
71
71
|
| `variants` | `soft`, `ghost` |
|
|
72
72
|
<!-- registry-contract:end -->
|