banhaten 0.5.0 → 0.6.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 +177 -139
- package/CONTRIBUTING.md +46 -46
- package/README.md +192 -192
- package/SECURITY.md +15 -15
- package/banhaten.config.example.json +11 -11
- package/docs/design-spacing.md +13 -13
- package/docs/design-system/README.md +22 -22
- package/docs/design-system/adoption-quality-remediation.md +87 -87
- package/docs/design-system/agent-usage.md +13 -13
- package/docs/design-system/appearance-presets.md +189 -189
- package/docs/design-system/appearances/default.md +94 -94
- package/docs/design-system/appearances/rounded.md +95 -95
- package/docs/design-system/appearances/sharp.md +95 -95
- package/docs/design-system/component-docs-pattern.md +81 -81
- package/docs/design-system/component-implementation-ownership-audit.md +245 -245
- package/docs/design-system/component-quality-audit-2026-08-20.md +225 -225
- package/docs/design-system/component-showcase-consistency-report.md +219 -219
- package/docs/design-system/component-token-consistency-audit.md +173 -173
- package/docs/design-system/components/README.md +91 -90
- package/docs/design-system/components/accordion.md +52 -52
- package/docs/design-system/components/activity-feed.md +93 -93
- package/docs/design-system/components/activity-heatmap.md +56 -56
- package/docs/design-system/components/alert-dialog.md +71 -71
- package/docs/design-system/components/alert.md +103 -97
- package/docs/design-system/components/app-header.md +97 -0
- package/docs/design-system/components/aspect-ratio.md +45 -45
- package/docs/design-system/components/attribute.md +101 -89
- package/docs/design-system/components/autocomplete.md +75 -75
- package/docs/design-system/components/avatar.md +53 -53
- package/docs/design-system/components/badge.md +55 -55
- package/docs/design-system/components/banner.md +86 -86
- package/docs/design-system/components/breadcrumbs.md +181 -177
- package/docs/design-system/components/button-group.md +97 -97
- package/docs/design-system/components/button.md +80 -80
- package/docs/design-system/components/card.md +102 -88
- package/docs/design-system/components/carousel.md +46 -46
- package/docs/design-system/components/catalog-components.md +46 -46
- package/docs/design-system/components/checkbox.md +53 -53
- package/docs/design-system/components/collapsible.md +63 -63
- package/docs/design-system/components/command.md +61 -61
- package/docs/design-system/components/context-menu.md +45 -45
- package/docs/design-system/components/date-picker.md +80 -80
- 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 +186 -186
- package/docs/design-system/components/hover-card.md +47 -47
- package/docs/design-system/components/icons.md +48 -48
- package/docs/design-system/components/input-group.md +57 -57
- package/docs/design-system/components/input-otp.md +56 -56
- package/docs/design-system/components/input.md +111 -109
- package/docs/design-system/components/item.md +58 -58
- package/docs/design-system/components/kbd.md +49 -49
- package/docs/design-system/components/label.md +49 -49
- package/docs/design-system/components/menu.md +94 -73
- package/docs/design-system/components/menubar.md +46 -46
- package/docs/design-system/components/modal.md +104 -104
- package/docs/design-system/components/native-select.md +53 -53
- package/docs/design-system/components/navigation-menu.md +49 -49
- package/docs/design-system/components/onboarding-step-list-item.md +81 -81
- package/docs/design-system/components/page-header.md +127 -93
- package/docs/design-system/components/pagination.md +56 -56
- package/docs/design-system/components/popover.md +59 -59
- package/docs/design-system/components/progress-slider.md +49 -49
- package/docs/design-system/components/progress.md +76 -76
- package/docs/design-system/components/radio-card.md +50 -50
- package/docs/design-system/components/radio-group.md +56 -56
- package/docs/design-system/components/resizable.md +43 -43
- package/docs/design-system/components/scroll-area.md +50 -50
- package/docs/design-system/components/segmented-control.md +54 -54
- package/docs/design-system/components/select.md +68 -64
- package/docs/design-system/components/sheet.md +66 -66
- package/docs/design-system/components/sidebar.md +167 -111
- package/docs/design-system/components/skeleton.md +74 -74
- package/docs/design-system/components/slideout.md +64 -64
- package/docs/design-system/components/slider.md +62 -62
- package/docs/design-system/components/social-button.md +49 -49
- package/docs/design-system/components/spinner.md +62 -62
- package/docs/design-system/components/steps.md +65 -65
- package/docs/design-system/components/table.md +499 -422
- package/docs/design-system/components/tabs.md +74 -59
- package/docs/design-system/components/tag.md +79 -79
- package/docs/design-system/components/textarea.md +49 -49
- package/docs/design-system/components/timeline.md +82 -82
- package/docs/design-system/components/toast.md +57 -57
- package/docs/design-system/components/toggle.md +80 -80
- package/docs/design-system/components/toolbar.md +89 -89
- package/docs/design-system/components/tooltip.md +92 -92
- package/docs/design-system/components/typography.md +18 -18
- package/docs/design-system/density-and-elevation.md +65 -65
- package/docs/design-system/design-system-test-missing-items.md +368 -368
- package/docs/design-system/direction-and-localization.md +23 -23
- package/docs/design-system/form-recipes.md +73 -73
- package/docs/design-system/gap-promotion-policy.md +21 -21
- package/docs/design-system/icons.md +74 -74
- package/docs/design-system/installation.md +70 -70
- 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 -54
- package/docs/design-system/template-gap-audit.md +32 -32
- package/docs/design-system/templates.md +59 -59
- package/docs/design-system/token-governance.md +72 -72
- package/package.json +98 -98
- package/registry/component-contract.json +40 -40
- package/registry/components/accordion.tsx +155 -155
- package/registry/components/alert-dialog.tsx +297 -297
- package/registry/components/alert.tsx +309 -293
- package/registry/components/app-header.tsx +151 -0
- package/registry/components/aspect-ratio.tsx +30 -30
- package/registry/components/attribute.tsx +489 -454
- package/registry/components/autocomplete.tsx +598 -598
- package/registry/components/avatar.tsx +385 -385
- package/registry/components/badge.tsx +630 -629
- package/registry/components/button-group.tsx +565 -565
- package/registry/components/button.tsx +128 -127
- package/registry/components/card.tsx +651 -638
- package/registry/components/carousel.tsx +296 -296
- package/registry/components/chart.tsx +203 -203
- package/registry/components/checkbox.tsx +247 -247
- package/registry/components/collapsible.tsx +109 -109
- package/registry/components/command.tsx +208 -208
- package/registry/components/context-menu.tsx +236 -236
- package/registry/components/date-picker.tsx +1289 -1289
- 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 +135 -131
- package/registry/components/expanded/CatalogComponentsShowcase.tsx +205 -205
- package/registry/components/expanded/CatalogDivider.tsx +49 -49
- package/registry/components/expanded/EmptyState.tsx +155 -155
- package/registry/components/expanded/FileUpload.tsx +543 -543
- package/registry/components/expanded/OnboardingStepListItem.tsx +60 -60
- package/registry/components/expanded/PageHeader.tsx +209 -179
- package/registry/components/expanded/Slideout.tsx +108 -108
- package/registry/components/expanded/Steps.tsx +402 -402
- package/registry/components/expanded/Table.tsx +1109 -1092
- package/registry/components/expanded/Timeline.tsx +203 -203
- package/registry/components/expanded/activityFeed.css +248 -248
- package/registry/components/expanded/activityHeatmap.css +66 -66
- package/registry/components/expanded/banner.css +260 -260
- package/registry/components/expanded/breadcrumbs.css +157 -140
- package/registry/components/expanded/catalogComponentsShowcase.css +87 -87
- package/registry/components/expanded/divider.css +75 -75
- package/registry/components/expanded/emptyState.css +111 -111
- package/registry/components/expanded/fileUpload.css +457 -457
- package/registry/components/expanded/onboardingStepListItem.css +135 -135
- package/registry/components/expanded/pageHeader.css +284 -248
- package/registry/components/expanded/slideout.css +276 -276
- package/registry/components/expanded/steps.css +356 -356
- package/registry/components/expanded/table.css +655 -606
- package/registry/components/expanded/timeline.css +286 -286
- package/registry/components/field.tsx +283 -283
- package/registry/components/hover-card.tsx +48 -48
- package/registry/components/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 +992 -990
- package/registry/components/item.tsx +189 -189
- package/registry/components/kbd.tsx +246 -246
- package/registry/components/label.tsx +78 -78
- package/registry/components/menu.tsx +1091 -978
- package/registry/components/menubar.tsx +226 -226
- package/registry/components/modal.tsx +872 -872
- package/registry/components/native-select.tsx +205 -205
- package/registry/components/navigation-menu.tsx +171 -171
- package/registry/components/pagination.css +36 -36
- package/registry/components/pagination.tsx +560 -560
- package/registry/components/popover.tsx +338 -338
- package/registry/components/progress-slider.tsx +216 -216
- package/registry/components/radio-card.tsx +676 -676
- package/registry/components/radio-group.tsx +570 -570
- package/registry/components/resizable.tsx +108 -108
- package/registry/components/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 -937
- package/registry/components/sheet.tsx +305 -305
- package/registry/components/sidebar.tsx +1535 -1433
- 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/table-elements.tsx +287 -128
- package/registry/components/tabs.css +246 -222
- package/registry/components/tabs.tsx +245 -241
- package/registry/components/tag.tsx +423 -423
- package/registry/components/textarea.tsx +610 -610
- 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 -433
- package/registry/examples/alert-demo.tsx +34 -34
- package/registry/examples/alert-dialog-demo.tsx +42 -42
- package/registry/examples/app-header-demo.tsx +40 -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 -86
- 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-demo.tsx +18 -18
- package/registry/examples/checkbox-demo.tsx +62 -62
- package/registry/examples/collapsible-demo.tsx +16 -16
- package/registry/examples/collection-filter-bar-demo.tsx +135 -135
- package/registry/examples/command-demo.tsx +42 -42
- package/registry/examples/command-palette-demo.tsx +235 -235
- package/registry/examples/context-menu-demo.tsx +29 -29
- package/registry/examples/control-density-contract-demo.tsx +65 -65
- 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/input-actions-demo.tsx +36 -36
- package/registry/examples/input-demo.tsx +87 -87
- package/registry/examples/input-group-demo.tsx +16 -16
- package/registry/examples/input-otp-demo.tsx +72 -72
- package/registry/examples/item-demo.tsx +46 -46
- package/registry/examples/kbd-demo.tsx +12 -12
- package/registry/examples/label-demo.tsx +20 -20
- package/registry/examples/menu-demo.tsx +122 -122
- package/registry/examples/menubar-demo.tsx +34 -34
- package/registry/examples/modal-demo.tsx +74 -74
- package/registry/examples/native-select-demo.tsx +16 -16
- package/registry/examples/navigation-menu-demo.tsx +29 -29
- package/registry/examples/pagination-demo.tsx +20 -20
- package/registry/examples/popover-demo.tsx +547 -547
- 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/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/sidebar-demo.tsx +101 -101
- package/registry/examples/slider-demo.tsx +31 -31
- package/registry/examples/social-button-demo.tsx +61 -61
- package/registry/examples/spinner-demo.tsx +59 -59
- package/registry/examples/tabs-demo.tsx +13 -13
- package/registry/examples/tag-demo.tsx +29 -29
- package/registry/examples/textarea-demo.tsx +79 -79
- 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/hooks/use-direction.ts +207 -207
- package/registry/index.json +387 -17
- package/registry/styles/globals.css +46 -0
- package/registry.json +24 -2
- package/schema/config.schema.json +51 -51
- package/schema/registry.schema.json +194 -194
- package/schema/tokens.schema.json +167 -167
- 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 -302
- package/src/cli/global-css.js +153 -153
- package/src/cli/index.js +1002 -1002
- 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 +184 -0
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
# Progress
|
|
2
|
-
|
|
3
|
-
Progress is a read-only progress meter for upload, setup, usage, and completion states. It supports top label, bottom label, helper-only, and inline indicator layouts, two track sizes, helper text, optional label text, an information icon, a spinner indicator, and inherited LTR/RTL direction.
|
|
4
|
-
|
|
5
|
-
The implementation follows the Figma progress components at `Design system 3.0 Copy / Progress` (`177:7992`) and `Progress Label` (`177:8141`).
|
|
6
|
-
|
|
7
|
-
## API
|
|
8
|
-
|
|
9
|
-
```tsx
|
|
10
|
-
<Progress
|
|
11
|
-
aria-label="Upload progress"
|
|
12
|
-
helperText="Preparing the final file"
|
|
13
|
-
label="Upload"
|
|
14
|
-
optional="(Optional)"
|
|
15
|
-
showInfo
|
|
16
|
-
showSpinner
|
|
17
|
-
value={40}
|
|
18
|
-
/>
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## Variants
|
|
22
|
-
|
|
23
|
-
| Prop | Values |
|
|
24
|
-
| --- | --- |
|
|
25
|
-
| `size` | `lg`, `sm` |
|
|
26
|
-
| `labelPosition` | `top`, `bottom`, `none`, `inline` |
|
|
27
|
-
| `value` | number clamped between `min` and `max` |
|
|
28
|
-
| `showIndicator` | `boolean` |
|
|
29
|
-
| `showInfo` | `boolean` |
|
|
30
|
-
| `showSpinner` | `boolean` |
|
|
31
|
-
|
|
32
|
-
## Tokens
|
|
33
|
-
|
|
34
|
-
Progress uses existing Banhaten tokens only:
|
|
35
|
-
|
|
36
|
-
| Part | Token |
|
|
37
|
-
| --- | --- |
|
|
38
|
-
| Fill | `--bh-interactive-indicator-default` |
|
|
39
|
-
| Track | `--bh-bg-neutral-soft` |
|
|
40
|
-
| Radius | `--bh-radius-full` |
|
|
41
|
-
| Label | `--bh-text-body-xs-medium-*`, `--bh-content-default` |
|
|
42
|
-
| Optional and indicator | `--bh-text-body-xs-regular-*`, `--bh-text-body-2xs-regular-*`, `--bh-content-subtle` |
|
|
43
|
-
| Track height | `--bh-space-md-8`, `--bh-space-xs-4` |
|
|
44
|
-
|
|
45
|
-
## RTL
|
|
46
|
-
|
|
47
|
-
Progress inherits `dir` from its parent. The fill is anchored to the logical start edge, so LTR fills from the left and RTL fills from the right. Text nodes use `dir="auto"` and tokenized body styles.
|
|
48
|
-
|
|
49
|
-
## Install
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
npx banhaten add progress
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## Examples
|
|
56
|
-
|
|
57
|
-
Primary registry example: `examples/progress-demo.tsx`.
|
|
58
|
-
|
|
59
|
-
Open the live component page or run `npx banhaten docs progress` to inspect source files, install command, and examples.
|
|
60
|
-
|
|
61
|
-
## Token Contract
|
|
62
|
-
|
|
63
|
-
Component styles must resolve through Banhaten semantic tokens, component aliases, or documented exception-ledger values.
|
|
64
|
-
Do not add raw colors, pixel values, opacity utilities, z-index values, durations, or shadow literals directly to component source.
|
|
65
|
-
Covered source files: `components/progress.tsx`.
|
|
66
|
-
|
|
67
|
-
## RTL Rules
|
|
68
|
-
|
|
69
|
-
- `inheritsDirection`: true
|
|
70
|
-
- `valueDirection`: The fill is anchored with logical start positioning, so LTR fills from left and RTL fills from right.
|
|
71
|
-
- `spacing`: Label, optional text, indicator, and helper copy use inherited direction, logical text alignment, and tokenized gaps.
|
|
72
|
-
|
|
73
|
-
## Accessibility
|
|
74
|
-
|
|
75
|
-
Keep native semantics, accessible names, keyboard reachability, focus-visible treatment, and status/error announcements intact when composing this component.
|
|
76
|
-
|
|
1
|
+
# Progress
|
|
2
|
+
|
|
3
|
+
Progress is a read-only progress meter for upload, setup, usage, and completion states. It supports top label, bottom label, helper-only, and inline indicator layouts, two track sizes, helper text, optional label text, an information icon, a spinner indicator, and inherited LTR/RTL direction.
|
|
4
|
+
|
|
5
|
+
The implementation follows the Figma progress components at `Design system 3.0 Copy / Progress` (`177:7992`) and `Progress Label` (`177:8141`).
|
|
6
|
+
|
|
7
|
+
## API
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
<Progress
|
|
11
|
+
aria-label="Upload progress"
|
|
12
|
+
helperText="Preparing the final file"
|
|
13
|
+
label="Upload"
|
|
14
|
+
optional="(Optional)"
|
|
15
|
+
showInfo
|
|
16
|
+
showSpinner
|
|
17
|
+
value={40}
|
|
18
|
+
/>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Variants
|
|
22
|
+
|
|
23
|
+
| Prop | Values |
|
|
24
|
+
| --- | --- |
|
|
25
|
+
| `size` | `lg`, `sm` |
|
|
26
|
+
| `labelPosition` | `top`, `bottom`, `none`, `inline` |
|
|
27
|
+
| `value` | number clamped between `min` and `max` |
|
|
28
|
+
| `showIndicator` | `boolean` |
|
|
29
|
+
| `showInfo` | `boolean` |
|
|
30
|
+
| `showSpinner` | `boolean` |
|
|
31
|
+
|
|
32
|
+
## Tokens
|
|
33
|
+
|
|
34
|
+
Progress uses existing Banhaten tokens only:
|
|
35
|
+
|
|
36
|
+
| Part | Token |
|
|
37
|
+
| --- | --- |
|
|
38
|
+
| Fill | `--bh-interactive-indicator-default` |
|
|
39
|
+
| Track | `--bh-bg-neutral-soft` |
|
|
40
|
+
| Radius | `--bh-radius-full` |
|
|
41
|
+
| Label | `--bh-text-body-xs-medium-*`, `--bh-content-default` |
|
|
42
|
+
| Optional and indicator | `--bh-text-body-xs-regular-*`, `--bh-text-body-2xs-regular-*`, `--bh-content-subtle` |
|
|
43
|
+
| Track height | `--bh-space-md-8`, `--bh-space-xs-4` |
|
|
44
|
+
|
|
45
|
+
## RTL
|
|
46
|
+
|
|
47
|
+
Progress inherits `dir` from its parent. The fill is anchored to the logical start edge, so LTR fills from the left and RTL fills from the right. Text nodes use `dir="auto"` and tokenized body styles.
|
|
48
|
+
|
|
49
|
+
## Install
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
npx banhaten add progress
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Examples
|
|
56
|
+
|
|
57
|
+
Primary registry example: `examples/progress-demo.tsx`.
|
|
58
|
+
|
|
59
|
+
Open the live component page or run `npx banhaten docs progress` to inspect source files, install command, and examples.
|
|
60
|
+
|
|
61
|
+
## Token Contract
|
|
62
|
+
|
|
63
|
+
Component styles must resolve through Banhaten semantic tokens, component aliases, or documented exception-ledger values.
|
|
64
|
+
Do not add raw colors, pixel values, opacity utilities, z-index values, durations, or shadow literals directly to component source.
|
|
65
|
+
Covered source files: `components/progress.tsx`.
|
|
66
|
+
|
|
67
|
+
## RTL Rules
|
|
68
|
+
|
|
69
|
+
- `inheritsDirection`: true
|
|
70
|
+
- `valueDirection`: The fill is anchored with logical start positioning, so LTR fills from left and RTL fills from right.
|
|
71
|
+
- `spacing`: Label, optional text, indicator, and helper copy use inherited direction, logical text alignment, and tokenized gaps.
|
|
72
|
+
|
|
73
|
+
## Accessibility
|
|
74
|
+
|
|
75
|
+
Keep native semantics, accessible names, keyboard reachability, focus-visible treatment, and status/error announcements intact when composing this component.
|
|
76
|
+
|
|
77
77
|
<!-- registry-contract:start -->
|
|
78
78
|
## Registry Contract
|
|
79
79
|
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
# Radio Card
|
|
2
|
-
|
|
3
|
-
Radio Card is a Figma-matched option card for richer single-choice selections. It supports icon, payment, avatar, company, support-label, icon-radio-left, icon-radio-right, and label-only layouts across default, active, disabled, LTR, and RTL states.
|
|
4
|
-
|
|
5
|
-
## API
|
|
6
|
-
|
|
7
|
-
```tsx
|
|
8
|
-
<RadioCard
|
|
9
|
-
title="Business"
|
|
10
|
-
description="For teams and advanced permissions."
|
|
11
|
-
type="with-icon"
|
|
12
|
-
/>
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
| Prop | Values |
|
|
16
|
-
| --- | --- |
|
|
17
|
-
| `type` | `with-icon`, `icon-radio-right`, `payment`, `with-avatar`, `company-icon`, `icon-radio-left`, `radio-label` |
|
|
18
|
-
| `state` | `default`, `active`, `disabled` |
|
|
19
|
-
| `dir` | `ltr`, `rtl` |
|
|
20
|
-
|
|
21
|
-
## Token Contract
|
|
22
|
-
|
|
23
|
-
Radio Card consumes Banhaten card spacing, border, radius, shadow, typography, radio-control, hover, active, disabled, and semantic content tokens.
|
|
24
|
-
|
|
25
|
-
## RTL
|
|
26
|
-
|
|
27
|
-
Radio Card follows the explicit Figma RTL ordering for each card type. Text nodes render in RTL and right alignment where the variant requires physical RTL composition.
|
|
28
|
-
|
|
29
|
-
## Accessibility
|
|
30
|
-
|
|
31
|
-
Use Radio Card inside a semantic radio group or connect it to a native radio input in product code. Do not rely on the visual active state alone for form submission.
|
|
32
|
-
|
|
33
|
-
## Install
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
npx banhaten add radio-card
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Examples
|
|
40
|
-
|
|
41
|
-
Primary registry example: `examples/radio-card-demo.tsx`.
|
|
42
|
-
|
|
43
|
-
Open the live component page or run `npx banhaten docs radio-card` to inspect source files, install command, and examples.
|
|
44
|
-
|
|
45
|
-
## RTL Rules
|
|
46
|
-
|
|
47
|
-
- `inheritsDirection`: false
|
|
48
|
-
- `layout`: Uses the explicit Figma RTL physical order while text nodes use RTL direction and right alignment.
|
|
49
|
-
- `spacing`: Company icon and icon-radio-left RTL variants use the Figma 12px card gap; other variants use the 10px card gap.
|
|
50
|
-
|
|
1
|
+
# Radio Card
|
|
2
|
+
|
|
3
|
+
Radio Card is a Figma-matched option card for richer single-choice selections. It supports icon, payment, avatar, company, support-label, icon-radio-left, icon-radio-right, and label-only layouts across default, active, disabled, LTR, and RTL states.
|
|
4
|
+
|
|
5
|
+
## API
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
<RadioCard
|
|
9
|
+
title="Business"
|
|
10
|
+
description="For teams and advanced permissions."
|
|
11
|
+
type="with-icon"
|
|
12
|
+
/>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
| Prop | Values |
|
|
16
|
+
| --- | --- |
|
|
17
|
+
| `type` | `with-icon`, `icon-radio-right`, `payment`, `with-avatar`, `company-icon`, `icon-radio-left`, `radio-label` |
|
|
18
|
+
| `state` | `default`, `active`, `disabled` |
|
|
19
|
+
| `dir` | `ltr`, `rtl` |
|
|
20
|
+
|
|
21
|
+
## Token Contract
|
|
22
|
+
|
|
23
|
+
Radio Card consumes Banhaten card spacing, border, radius, shadow, typography, radio-control, hover, active, disabled, and semantic content tokens.
|
|
24
|
+
|
|
25
|
+
## RTL
|
|
26
|
+
|
|
27
|
+
Radio Card follows the explicit Figma RTL ordering for each card type. Text nodes render in RTL and right alignment where the variant requires physical RTL composition.
|
|
28
|
+
|
|
29
|
+
## Accessibility
|
|
30
|
+
|
|
31
|
+
Use Radio Card inside a semantic radio group or connect it to a native radio input in product code. Do not rely on the visual active state alone for form submission.
|
|
32
|
+
|
|
33
|
+
## Install
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npx banhaten add radio-card
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Examples
|
|
40
|
+
|
|
41
|
+
Primary registry example: `examples/radio-card-demo.tsx`.
|
|
42
|
+
|
|
43
|
+
Open the live component page or run `npx banhaten docs radio-card` to inspect source files, install command, and examples.
|
|
44
|
+
|
|
45
|
+
## RTL Rules
|
|
46
|
+
|
|
47
|
+
- `inheritsDirection`: false
|
|
48
|
+
- `layout`: Uses the explicit Figma RTL physical order while text nodes use RTL direction and right alignment.
|
|
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
51
|
<!-- registry-contract:start -->
|
|
52
52
|
## Registry Contract
|
|
53
53
|
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
# Radio Group
|
|
2
|
-
|
|
3
|
-
Radio Group is the native-input single-choice primitive. It includes `Radio`, `RadioField`, `RadioGroup`, and `RadioGroupItem` for grouped labels, descriptions, errors, disabled state, controlled or uncontrolled values, and horizontal or vertical layout.
|
|
4
|
-
|
|
5
|
-
## API
|
|
6
|
-
|
|
7
|
-
```tsx
|
|
8
|
-
<RadioGroup
|
|
9
|
-
label="Billing interval"
|
|
10
|
-
defaultValue="monthly"
|
|
11
|
-
orientation="vertical"
|
|
12
|
-
>
|
|
13
|
-
<RadioGroupItem value="monthly" label="Monthly" />
|
|
14
|
-
<RadioGroupItem value="annual" label="Annual" />
|
|
15
|
-
</RadioGroup>
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
| Prop | Values |
|
|
19
|
-
| --- | --- |
|
|
20
|
-
| `value`, `defaultValue` | controlled or uncontrolled value |
|
|
21
|
-
| `orientation` | `vertical`, `horizontal` |
|
|
22
|
-
| `state` | `default`, `error`, `disabled` |
|
|
23
|
-
| `label`, `description`, `errorMessage` | `ReactNode` |
|
|
24
|
-
| `controlPosition` | `start`, `end` on field/item rows |
|
|
25
|
-
|
|
26
|
-
## Token Contract
|
|
27
|
-
|
|
28
|
-
Radio Group uses Banhaten radio control, field gap, group spacing, text, helper, error, disabled, border, and focus tokens.
|
|
29
|
-
|
|
30
|
-
## RTL
|
|
31
|
-
|
|
32
|
-
`RadioField` and `RadioGroupItem` use logical start/end control placement. Labels, descriptions, and error text use `dir="auto"` and tokenized typography.
|
|
33
|
-
|
|
34
|
-
## Accessibility
|
|
35
|
-
|
|
36
|
-
The group uses `fieldset`, shared native radio names, label wrapping, and platform keyboard behavior. Provide visible error text when the group is invalid.
|
|
37
|
-
|
|
38
|
-
## Install
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
npx banhaten add radio-group
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
## Examples
|
|
45
|
-
|
|
46
|
-
Primary registry example: `examples/radio-group-demo.tsx`.
|
|
47
|
-
|
|
48
|
-
Open the live component page or run `npx banhaten docs radio-group` to inspect source files, install command, and examples.
|
|
49
|
-
|
|
50
|
-
## RTL Rules
|
|
51
|
-
|
|
52
|
-
- `inheritsDirection`: true
|
|
53
|
-
- `controlPlacement`: RadioField and RadioGroupItem use start/end control placement so the radio mirrors correctly in RTL.
|
|
54
|
-
- `textDirection`: Group labels, item labels, descriptions, and error text use dir="auto" with tokenized body typography.
|
|
55
|
-
- `semantics`: Uses native radio inputs with a shared group name, fieldset grouping, and label wrapping for platform keyboard and form behavior.
|
|
56
|
-
|
|
1
|
+
# Radio Group
|
|
2
|
+
|
|
3
|
+
Radio Group is the native-input single-choice primitive. It includes `Radio`, `RadioField`, `RadioGroup`, and `RadioGroupItem` for grouped labels, descriptions, errors, disabled state, controlled or uncontrolled values, and horizontal or vertical layout.
|
|
4
|
+
|
|
5
|
+
## API
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
<RadioGroup
|
|
9
|
+
label="Billing interval"
|
|
10
|
+
defaultValue="monthly"
|
|
11
|
+
orientation="vertical"
|
|
12
|
+
>
|
|
13
|
+
<RadioGroupItem value="monthly" label="Monthly" />
|
|
14
|
+
<RadioGroupItem value="annual" label="Annual" />
|
|
15
|
+
</RadioGroup>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
| Prop | Values |
|
|
19
|
+
| --- | --- |
|
|
20
|
+
| `value`, `defaultValue` | controlled or uncontrolled value |
|
|
21
|
+
| `orientation` | `vertical`, `horizontal` |
|
|
22
|
+
| `state` | `default`, `error`, `disabled` |
|
|
23
|
+
| `label`, `description`, `errorMessage` | `ReactNode` |
|
|
24
|
+
| `controlPosition` | `start`, `end` on field/item rows |
|
|
25
|
+
|
|
26
|
+
## Token Contract
|
|
27
|
+
|
|
28
|
+
Radio Group uses Banhaten radio control, field gap, group spacing, text, helper, error, disabled, border, and focus tokens.
|
|
29
|
+
|
|
30
|
+
## RTL
|
|
31
|
+
|
|
32
|
+
`RadioField` and `RadioGroupItem` use logical start/end control placement. Labels, descriptions, and error text use `dir="auto"` and tokenized typography.
|
|
33
|
+
|
|
34
|
+
## Accessibility
|
|
35
|
+
|
|
36
|
+
The group uses `fieldset`, shared native radio names, label wrapping, and platform keyboard behavior. Provide visible error text when the group is invalid.
|
|
37
|
+
|
|
38
|
+
## Install
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npx banhaten add radio-group
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Examples
|
|
45
|
+
|
|
46
|
+
Primary registry example: `examples/radio-group-demo.tsx`.
|
|
47
|
+
|
|
48
|
+
Open the live component page or run `npx banhaten docs radio-group` to inspect source files, install command, and examples.
|
|
49
|
+
|
|
50
|
+
## RTL Rules
|
|
51
|
+
|
|
52
|
+
- `inheritsDirection`: true
|
|
53
|
+
- `controlPlacement`: RadioField and RadioGroupItem use start/end control placement so the radio mirrors correctly in RTL.
|
|
54
|
+
- `textDirection`: Group labels, item labels, descriptions, and error text use dir="auto" with tokenized body typography.
|
|
55
|
+
- `semantics`: Uses native radio inputs with a shared group name, fieldset grouping, and label wrapping for platform keyboard and form behavior.
|
|
56
|
+
|
|
57
57
|
<!-- registry-contract:start -->
|
|
58
58
|
## Registry Contract
|
|
59
59
|
|
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
# Resizable
|
|
2
|
-
|
|
3
|
-
Resizable wraps `react-resizable-panels` for split panes and workbench layouts.
|
|
4
|
-
|
|
5
|
-
## API
|
|
6
|
-
|
|
7
|
-
```tsx
|
|
8
|
-
<ResizablePanelGroup direction="horizontal">
|
|
9
|
-
<ResizablePanel defaultSize={30}>Sidebar</ResizablePanel>
|
|
10
|
-
<ResizableHandle withHandle />
|
|
11
|
-
<ResizablePanel defaultSize={70}>Content</ResizablePanel>
|
|
12
|
-
</ResizablePanelGroup>
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## Token Contract
|
|
16
|
-
|
|
17
|
-
Resizable uses Banhaten border, focus, raised surface, radius, and icon sizing tokens.
|
|
18
|
-
|
|
19
|
-
## RTL
|
|
20
|
-
|
|
21
|
-
Panel order follows DOM order. Use logical layout around the panel group for RTL shells.
|
|
22
|
-
|
|
23
|
-
## Accessibility
|
|
24
|
-
|
|
25
|
-
`react-resizable-panels` provides keyboard-adjustable resize handles.
|
|
26
|
-
|
|
27
|
-
## Install
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
npx banhaten add resizable
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Examples
|
|
34
|
-
|
|
35
|
-
Primary registry example: `examples/resizable-demo.tsx`.
|
|
36
|
-
|
|
37
|
-
Open the live component page or run `npx banhaten docs resizable` to inspect source files, install command, and examples.
|
|
38
|
-
|
|
39
|
-
## RTL Rules
|
|
40
|
-
|
|
41
|
-
- `inheritsDirection`: true
|
|
42
|
-
- `layout`: Panel order follows DOM order; use logical shell layout for RTL workspaces.
|
|
43
|
-
|
|
1
|
+
# Resizable
|
|
2
|
+
|
|
3
|
+
Resizable wraps `react-resizable-panels` for split panes and workbench layouts.
|
|
4
|
+
|
|
5
|
+
## API
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
<ResizablePanelGroup direction="horizontal">
|
|
9
|
+
<ResizablePanel defaultSize={30}>Sidebar</ResizablePanel>
|
|
10
|
+
<ResizableHandle withHandle />
|
|
11
|
+
<ResizablePanel defaultSize={70}>Content</ResizablePanel>
|
|
12
|
+
</ResizablePanelGroup>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Token Contract
|
|
16
|
+
|
|
17
|
+
Resizable uses Banhaten border, focus, raised surface, radius, and icon sizing tokens.
|
|
18
|
+
|
|
19
|
+
## RTL
|
|
20
|
+
|
|
21
|
+
Panel order follows DOM order. Use logical layout around the panel group for RTL shells.
|
|
22
|
+
|
|
23
|
+
## Accessibility
|
|
24
|
+
|
|
25
|
+
`react-resizable-panels` provides keyboard-adjustable resize handles.
|
|
26
|
+
|
|
27
|
+
## Install
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npx banhaten add resizable
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Examples
|
|
34
|
+
|
|
35
|
+
Primary registry example: `examples/resizable-demo.tsx`.
|
|
36
|
+
|
|
37
|
+
Open the live component page or run `npx banhaten docs resizable` to inspect source files, install command, and examples.
|
|
38
|
+
|
|
39
|
+
## RTL Rules
|
|
40
|
+
|
|
41
|
+
- `inheritsDirection`: true
|
|
42
|
+
- `layout`: Panel order follows DOM order; use logical shell layout for RTL workspaces.
|
|
43
|
+
|
|
44
44
|
<!-- registry-contract:start -->
|
|
45
45
|
## Registry Contract
|
|
46
46
|
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
# Scroll Area
|
|
2
|
-
|
|
3
|
-
Scroll Area wraps Radix ScrollArea with tokenized viewport, scrollbar, thumb, and corner styling.
|
|
4
|
-
|
|
5
|
-
## API
|
|
6
|
-
|
|
7
|
-
```tsx
|
|
8
|
-
<ScrollArea className="h-48">
|
|
9
|
-
<div>Scrollable content</div>
|
|
10
|
-
</ScrollArea>
|
|
11
|
-
|
|
12
|
-
<ScrollArea className="h-48" orientation="both">
|
|
13
|
-
<div className="h-max w-max">Two-axis content</div>
|
|
14
|
-
</ScrollArea>
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
| Part | Purpose |
|
|
18
|
-
| --- | --- |
|
|
19
|
-
| `ScrollArea` | root and viewport; `orientation` accepts `vertical`, `horizontal`, or `both` |
|
|
20
|
-
| `ScrollBar` | vertical or horizontal scrollbar |
|
|
21
|
-
|
|
22
|
-
## Token Contract
|
|
23
|
-
|
|
24
|
-
Scroll Area uses Banhaten radius, border, and neutral thumb tokens.
|
|
25
|
-
|
|
26
|
-
## RTL
|
|
27
|
-
|
|
28
|
-
Scroll Area inherits direction from its parent. Use logical padding inside the viewport content.
|
|
29
|
-
|
|
30
|
-
## Accessibility
|
|
31
|
-
|
|
32
|
-
Use Scroll Area for visual scrollbars around already accessible content, not for hiding essential controls.
|
|
33
|
-
|
|
34
|
-
## Install
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
npx banhaten add scroll-area
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
## Examples
|
|
41
|
-
|
|
42
|
-
Primary registry example: `examples/scroll-area-demo.tsx`.
|
|
43
|
-
|
|
44
|
-
Open the live component page or run `npx banhaten docs scroll-area` to inspect source files, install command, and examples.
|
|
45
|
-
|
|
46
|
-
## RTL Rules
|
|
47
|
-
|
|
48
|
-
- `inheritsDirection`: true
|
|
49
|
-
- `spacing`: Viewport content should use logical padding so scrollable regions mirror with document direction.
|
|
50
|
-
|
|
1
|
+
# Scroll Area
|
|
2
|
+
|
|
3
|
+
Scroll Area wraps Radix ScrollArea with tokenized viewport, scrollbar, thumb, and corner styling.
|
|
4
|
+
|
|
5
|
+
## API
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
<ScrollArea className="h-48">
|
|
9
|
+
<div>Scrollable content</div>
|
|
10
|
+
</ScrollArea>
|
|
11
|
+
|
|
12
|
+
<ScrollArea className="h-48" orientation="both">
|
|
13
|
+
<div className="h-max w-max">Two-axis content</div>
|
|
14
|
+
</ScrollArea>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
| Part | Purpose |
|
|
18
|
+
| --- | --- |
|
|
19
|
+
| `ScrollArea` | root and viewport; `orientation` accepts `vertical`, `horizontal`, or `both` |
|
|
20
|
+
| `ScrollBar` | vertical or horizontal scrollbar |
|
|
21
|
+
|
|
22
|
+
## Token Contract
|
|
23
|
+
|
|
24
|
+
Scroll Area uses Banhaten radius, border, and neutral thumb tokens.
|
|
25
|
+
|
|
26
|
+
## RTL
|
|
27
|
+
|
|
28
|
+
Scroll Area inherits direction from its parent. Use logical padding inside the viewport content.
|
|
29
|
+
|
|
30
|
+
## Accessibility
|
|
31
|
+
|
|
32
|
+
Use Scroll Area for visual scrollbars around already accessible content, not for hiding essential controls.
|
|
33
|
+
|
|
34
|
+
## Install
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npx banhaten add scroll-area
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Examples
|
|
41
|
+
|
|
42
|
+
Primary registry example: `examples/scroll-area-demo.tsx`.
|
|
43
|
+
|
|
44
|
+
Open the live component page or run `npx banhaten docs scroll-area` to inspect source files, install command, and examples.
|
|
45
|
+
|
|
46
|
+
## RTL Rules
|
|
47
|
+
|
|
48
|
+
- `inheritsDirection`: true
|
|
49
|
+
- `spacing`: Viewport content should use logical padding so scrollable regions mirror with document direction.
|
|
50
|
+
|
|
51
51
|
<!-- registry-contract:start -->
|
|
52
52
|
## Registry Contract
|
|
53
53
|
|