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
package/CHANGELOG.md
CHANGED
|
@@ -1,139 +1,177 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable Banhaten changes are recorded here. Releases follow the policy in `docs/design-system/release-policy.md`.
|
|
4
|
-
|
|
5
|
-
## Unreleased
|
|
6
|
-
|
|
7
|
-
## 0.
|
|
8
|
-
|
|
9
|
-
### Added
|
|
10
|
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
- `
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
- `
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
-
|
|
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
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
-
|
|
106
|
-
-
|
|
107
|
-
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
-
|
|
120
|
-
-
|
|
121
|
-
-
|
|
122
|
-
-
|
|
123
|
-
|
|
124
|
-
### Fixed
|
|
125
|
-
|
|
126
|
-
-
|
|
127
|
-
-
|
|
128
|
-
-
|
|
129
|
-
|
|
130
|
-
### Migration
|
|
131
|
-
|
|
132
|
-
-
|
|
133
|
-
-
|
|
134
|
-
-
|
|
135
|
-
- Run `npx banhaten
|
|
136
|
-
|
|
137
|
-
## 0.
|
|
138
|
-
|
|
139
|
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable Banhaten changes are recorded here. Releases follow the policy in `docs/design-system/release-policy.md`.
|
|
4
|
+
|
|
5
|
+
## Unreleased
|
|
6
|
+
|
|
7
|
+
## 0.6.0 - 2026-10-28
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- Sidebar `size="comfortable"` on `SidebarProvider` for application shells with 40px navigation rows. While expanded it uses 40px rows 8px apart, body-md labels, 16px shell padding, a 24px section gap, a heading-md brand, and 20px group labels. The collapsed rail and the default size are unchanged.
|
|
12
|
+
- `SidebarHeaderBrand` accepts `subtitle` for a stacked module line and `logo={false}` for a text-only brand.
|
|
13
|
+
- `SidebarFooterUser variant="card"` renders the signed-in user as an inset tinted block. Every footer variant accepts `avatar={false}` and `trailingIcon={false}`, and `SidebarFooter divider={false}` drops the top rule.
|
|
14
|
+
- Sidebar tokens `--bh-sidebar-group-label-content`, `--bh-sidebar-user-card-bg`, `--bh-sidebar-user-card-bg-hover`, and seven `--bh-sidebar-comfortable-*` dimensions.
|
|
15
|
+
- `AppHeader`, the workspace bar above page content in a sidebar shell, with `AppHeaderStart`, `AppHeaderEnd`, `AppHeaderSearch`, and `AppHeaderAction`. The bar is 72px with 24px padding and gaps. Actions are flush with their 24px icon or label at rest and keep a 40px pointer target; `size="sm"` text actions reserve 32px for a language code.
|
|
16
|
+
- Breadcrumbs `size="sm"` for a 14/20 trail with a 12px separator, and the `--bh-breadcrumbs-current-content` token for the current item color. App Header sets it to its subtle location color.
|
|
17
|
+
- Table `size="comfortable"` follows Table item 1.2: 44px headers in body-sm medium on the table-header fill, 64px rows with 8px cells and body-md text, no row dividers, and a 12px radius. `sm` and `lg` are unchanged.
|
|
18
|
+
- The owned table elements take the same spec through `TableRoot size="comfortable"`, and the new `TableContainer` frames them with a 12px radius and a border drawn inside the edge. Without a size they stay unstyled.
|
|
19
|
+
- Line + subline table cells from Table item 1.2 (`hasCaption`): `text`, `brandLogoText`, `payment`, and `image` items accept `caption`, as `avatarText` already did. The caption is body-2xs in `content/subtle` directly under the label, so the pair fills 40px of a 56px `lg` row. DataTable search also matches captions.
|
|
20
|
+
- `TableCellText` gives owned `TableCell`s the same line + subline content, with `caption`, a `leading` icon or avatar 6px before the text, and `tone` and `weight` for the label. Long labels and captions end in an ellipsis inside the cell. Table tokens `--bh-table-caption-content` and `--bh-table-cell-text-gap`.
|
|
21
|
+
- `TableCellLink`, a flush text action for a cell label that opens a record. It keeps the cell text style, underlines on hover and focus, and draws its focus ring outside the clipped text. It renders a button, or its child with `asChild`. Table now lists `@radix-ui/react-slot` as a direct dependency.
|
|
22
|
+
|
|
23
|
+
- PageHeader `size="comfortable"` for the page heading inside an app shell whose header carries the breadcrumbs.
|
|
24
|
+
- No block padding; 8px between title and description, 24px between copy and actions, 12px between actions.
|
|
25
|
+
- 40px action Buttons with a 160px minimum width (176px for primary Buttons), and no icon or tabs unless passed.
|
|
26
|
+
- New tokens `--bh-page-header-comfortable-action-min-width` and `--bh-page-header-comfortable-primary-action-min-width`.
|
|
27
|
+
- `actions` also accepts your own nodes, `description` accepts inline content, and `children` add supporting content, such as a status badge, under the description.
|
|
28
|
+
- Button renders `data-variant` with its variant (`default` for primary), so containers can style actions by variant.
|
|
29
|
+
- Tabs `size="comfortable"` for view navigation in an app page: underline tabs 48px tall and 8px apart, the active indicator drawn inside the tab, and no divider under the row. Segment and rounded tabs render it like `md`.
|
|
30
|
+
- Card and CardSurface `size="comfortable"` for panels in an app shell: the same surface and 1px inset edge with a 12px radius (`--bh-card-comfortable-radius`) instead of the library card's 16px. Both render `data-size`.
|
|
31
|
+
- Alert `icon` replaces the status icon, and `descriptionColor="default"` sets the description in `content/default`, as the ATS360 frames do.
|
|
32
|
+
- Menu `MenuRadioGroup` and `MenuRadioItem` for menus that set one value, such as a display time zone: items are `menuitemradio` with `aria-checked`, the chosen one shows a trailing check, and choosing one calls the group's `onValueChange`. They also render in `MenuPreview`.
|
|
33
|
+
|
|
34
|
+
### Changed
|
|
35
|
+
|
|
36
|
+
- Attribute `density="comfortable"` is now the app-shell detail row: no row padding, rows 16px apart, a body-sm label in a 176px column (`--bh-attribute-comfortable-label-width`) and 16px before the value, aligned to the top. It rendered like `default` before.
|
|
37
|
+
- Alert descriptions use the status colour from the library (`content/{status}/default`) instead of the strong title colour, and an expandable Alert with a description now uses the expanded layout without actions, as the library allows with Actions Links off. Before, it fell back to the compact layout and hid the description.
|
|
38
|
+
- Input `md` and `lg` text starts 12px from the field edge, as in the library Input frame: 8px content padding plus a 4px value inset, with trailing icons 8px from the edge. It was 10px in `lg` and 8px in `md`. New tokens `--bh-input-content-padding-x` and `--bh-input-value-inset`; `comfortable` is unchanged.
|
|
39
|
+
- Input and Select docs explain the 320px default width, the library frame width, and how to make a field fill its form column.
|
|
40
|
+
- Table `lg` rows use body-md (15/24) text, as the Figma `lg` cells do; `sm` keeps body-sm.
|
|
41
|
+
- Table `avatarText` names, and the labels of `brandLogoText`, `payment`, `image`, and `file` items, use medium weight, as in Figma; `avatarText` names were semibold. The `avatarText` caption moves from `content/default` with a 1px gap to `content/subtle` with no gap.
|
|
42
|
+
- Badge draws its border inside the side padding, as the library's inside stroke does, so a badge is its label plus 8px (12px at `lg`) on each side. Each side padding subtracts the border width (1px, or `--bh-badge-outline-border-width` for `outline`); badges were 2px wider than the library, and outline badges 3px. Heights are unchanged.
|
|
43
|
+
- Sidebar `size="comfortable"` draws the expanded rail's 1px stroke inside on all four sides, an outline inset by its width in `--bh-sidebar-border`, instead of an end border, as the ATS360 shell frames do. It takes no width and stays visible above the header and footer fills; the collapsed rail keeps the end border.
|
|
44
|
+
|
|
45
|
+
## 0.5.0 - 2026-10-16
|
|
46
|
+
|
|
47
|
+
### Added
|
|
48
|
+
|
|
49
|
+
- ECharts-backed `DataChart`, `EChart`, and `ChartBlock` APIs with eight chart families, 18 example blocks, token-driven themes, and interactive legends, tooltips, and brush controls. Existing Recharts wrappers remain supported.
|
|
50
|
+
- AI conversation components built only from Banhaten primitives and tokens: `ThinkingState`, `ThinkingReasoning`, `StreamingText` with a `useTypewriter` hook for local reveals, `InlineCitations` composed from `CitationProse` and `CitationMark`, `TaskList` with `TaskListRoot`, `TaskListHeader`, `TaskListItems`, and `TaskListPreview` parts for static and folded lists, `AgentInput`, and the approval cards (`ApprovalQuestions`, `ApprovalCommand`, `ApprovalPlan`) with the `ApprovalFrame` shell they share for custom decisions, each with registry metadata, documentation, examples, playground pages, and tests.
|
|
51
|
+
- `ShimmerText` for labels of work in progress and `RollingCount` for counts that roll each changed digit into place, general-purpose components the AI conversation components build on, each with registry metadata, documentation, examples, playground pages, and tests.
|
|
52
|
+
- Foundation motion tokens `--bh-duration-moderate`, `--bh-duration-slow`, `--bh-duration-slower`, and `--bh-easing-emphasized`; component tokens for the reasoning block, streaming caret, citation marks, agent input, shimmer text, and task list; and a `--bh-font-family-mono` family for command blocks.
|
|
53
|
+
- Shared hooks installed with the base files: `use-motion-end` runs script work after the CSS motion it waits for instead of after copied timings, `use-controllable-state` backs controlled and uncontrolled props, `use-reduced-motion` follows the user's motion setting, and `use-listbox-navigation` gives Autocomplete and the Agent Input skill palette one keyboard model.
|
|
54
|
+
- `CollapsiblePanel`, an unstyled Collapsible part that animates its height open and closed, and `asChild` support on `CollapsibleTrigger` for components with their own disclosure design.
|
|
55
|
+
- Registry file entries accept `"internal": true`. An internal module installs and compiles with its component, but its exports stay out of the supported import contract, so a large component can be split into modules without publishing them.
|
|
56
|
+
|
|
57
|
+
### Changed
|
|
58
|
+
|
|
59
|
+
- Autocomplete moves the active option to the first enabled match when filtering removes the one that was active, instead of leaving no option active.
|
|
60
|
+
- Input quantity steppers now update values using native number-input constraints and change events; button and dropdown compositions expose native action props.
|
|
61
|
+
- Public depth tokens use the `--elevation-*` namespace, with seven numbered steps and semantic component aliases. Token graphs rebind at nested theme boundaries.
|
|
62
|
+
- Sidebar collapse uses staged transitions and dedicated motion tokens.
|
|
63
|
+
|
|
64
|
+
### Fixed
|
|
65
|
+
|
|
66
|
+
- CLI writes detect concurrent edits before replacing consumer files.
|
|
67
|
+
- Checked indicators retain contrast in dark themes; label-less Selects receive accessible names; Input exposes required semantics; Toolbar defaults to group semantics.
|
|
68
|
+
- Breadcrumbs, keyboard shortcuts, Page Header, Tabs, and Table improve content direction, overflow handling, and pagination sizing.
|
|
69
|
+
- Packed-artifact validation invokes npm directly through Node on Windows, avoiding the `spawn EINVAL` failure from launching `npm.cmd`.
|
|
70
|
+
- Refreshed dependency resolutions for runtime and playground security fixes; Windows token-security fixtures use directory junctions, and browser tests include the Windows autofill workaround.
|
|
71
|
+
|
|
72
|
+
### Migration
|
|
73
|
+
|
|
74
|
+
- Replace `--shadow-xs`, `--shadow-sm`, `--shadow-md`, `--shadow-lg`, `--shadow-xl`, `--shadow-2xl`, and `--shadow-3xl` with `--elevation-01` through `--elevation-07`, respectively. Rename semantic `--shadow-*` references and overrides to their corresponding `--elevation-*` names; the old token names are no longer published.
|
|
75
|
+
- Run `npx banhaten@0.5.0 diff` before `npx banhaten@0.5.0 update`. Review customized component files and token overrides before using `--force`.
|
|
76
|
+
- Updating `chart` adds an `echarts` dependency alongside `recharts`; run the package-manager install command printed by the CLI. Existing Recharts compositions continue to work.
|
|
77
|
+
- Quantity Input now renders a number input with working steppers. Review custom click handlers to avoid applying a second increment, and call `preventDefault()` in a stepper handler when overriding the built-in step.
|
|
78
|
+
|
|
79
|
+
## 0.4.0 - 2026-08-22
|
|
80
|
+
|
|
81
|
+
### Added
|
|
82
|
+
|
|
83
|
+
- A Figma-aligned Sidebar composition with brand and workspace headers, header and group actions, menu badges, nested and tree navigation, user footers, rail tooltips, controlled state, and documented expanded, collapsed, LTR, and RTL variants.
|
|
84
|
+
- `Shortcut`, a compact combined keyboard-chord primitive for inputs and constrained action rows, alongside the existing separated-keycap `KbdShortcut` API.
|
|
85
|
+
- A Test Lab V2 playground with scenario navigation, a focused inspector, state-comparison boards, responsive previews, and browser coverage for the new QA workflow.
|
|
86
|
+
- Noto Sans Arabic as the default Arabic playground font, with the previous Arabic font options retained.
|
|
87
|
+
|
|
88
|
+
### Changed
|
|
89
|
+
|
|
90
|
+
- The default brand theme is now monochrome `gray`; `blue` remains available as an explicit alternate theme.
|
|
91
|
+
- Elevation now publishes the complete seven-level Figma scale as `--elevation-01` through `--elevation-07`, with dedicated reviewed light and dark values and updated token documentation.
|
|
92
|
+
- Shared icon and icon-slot geometry is tokenized across controls, navigation, feedback, and data-display components for more consistent alignment.
|
|
93
|
+
- Sidebar defaults now use a 280px expanded shell and a 48px collapsed rail, with logical placement and spacing throughout.
|
|
94
|
+
- Button now publishes `success`, `warning`, and `link` as canonical variants across its catalog, documentation, examples, and playground.
|
|
95
|
+
|
|
96
|
+
### Fixed
|
|
97
|
+
|
|
98
|
+
- `MenuItem.onSelect` now exposes Radix's `(event: Event) => void` contract without intersecting React's unrelated DOM selection handler, so explicit annotations and prevent-default multi-select flows compile correctly.
|
|
99
|
+
- Sidebar focus, tooltip, collapse, nesting, active-state, narrow-layout, and RTL behavior across both controlled and uncontrolled compositions.
|
|
100
|
+
- Component icon sizing, spacing, and state styling across Alert, Avatar, Button Group, Date Picker, Input, Item, Menu, Pagination, Select, Tag, Toolbar, and expanded compositions.
|
|
101
|
+
- Playground token enforcement now uses explicit Banhaten shadow variables in every Test Lab surface.
|
|
102
|
+
|
|
103
|
+
### Migration
|
|
104
|
+
|
|
105
|
+
- To retain the previous blue default, set `data-theme="blue"` on the themed root; roots without `data-theme` now resolve to gray.
|
|
106
|
+
- Review custom Sidebar shells before updating because the canonical expanded and collapsed widths and the recommended header, menu, and footer composition have changed. Run `npx banhaten diff sidebar` before `npx banhaten update sidebar`, and use `--force` only after reviewing local generated-file changes.
|
|
107
|
+
- Button's `destructive` and `soft-destructive` values remain accepted as deprecated compatibility aliases; migrate to `danger` and `soft-danger`, respectively.
|
|
108
|
+
|
|
109
|
+
## 0.3.0 - 2026-08-21
|
|
110
|
+
|
|
111
|
+
### Added
|
|
112
|
+
|
|
113
|
+
- `ActivityHeatmap`, a token-only expanded component with five intensity levels, accessible summary semantics, responsive overflow, inherited RTL behavior, registry metadata, documentation, and an installable example.
|
|
114
|
+
- Public `CardSurface`, semantic table-element exports, and `ProgressSteps` APIs for owned product composition without bypassing Banhaten primitives.
|
|
115
|
+
- An AST-backed component-ownership gate plus route-wide accessibility, inherited-RTL containment, and deterministic visual-regression coverage for every component page.
|
|
116
|
+
|
|
117
|
+
### Changed
|
|
118
|
+
|
|
119
|
+
- Expanded components and all 38 audited playground backgrounds now compose Banhaten-owned controls; Alert, Page Header, and Slideout declare their new Button and Breadcrumbs registry dependencies.
|
|
120
|
+
- Direction inheritance, narrow-layout containment, focus behavior, and machine-readable RTL contracts were completed across the 68-component catalog.
|
|
121
|
+
- Elevation and color-mode sources were consolidated around shared semantic effects, and the canonical contrast audit was expanded to 910 passing scenarios.
|
|
122
|
+
- Page Header accepts `headingLevel`; Timeline labels and captions accept React nodes; horizontal timelines are keyboard-scrollable and standalone `TimelineItem` semantics are now caller-controlled.
|
|
123
|
+
|
|
124
|
+
### Fixed
|
|
125
|
+
|
|
126
|
+
- ARIA ownership, naming, focus, landmark, and relationship defects across Date Picker, Select, Command, Tabs, Field, Table, Menu, Carousel, Sidebar, Slideout, Timeline, and composed documentation examples.
|
|
127
|
+
- Contrast failures across component states and themes, including focus indicators, selected states, badges, tags, alerts, banners, toggles, social buttons, and tables.
|
|
128
|
+
- Inherited-RTL and 324px containment defects in activity, navigation, form, data-display, and expanded layout components.
|
|
129
|
+
|
|
130
|
+
### Migration
|
|
131
|
+
|
|
132
|
+
- `SidebarInset` now renders a neutral `div` instead of an implicit `main`. When the inset is the page landmark, render your own `<main>` through `<SidebarInset asChild><main>...</main></SidebarInset>`.
|
|
133
|
+
- `Slideout` is an explicitly named presentational region. Use `Sheet` or `Modal` when the experience requires a portal, overlay, focus trap, Escape dismissal, and focus return.
|
|
134
|
+
- A standalone `TimelineItem` no longer assumes `role="listitem"`; use it inside `Timeline` or pass an explicit role when composing your own list.
|
|
135
|
+
- Run `npx banhaten diff` before `npx banhaten update`, then review locally customized generated files before using `--force`.
|
|
136
|
+
|
|
137
|
+
## 0.2.0 - 2026-08-08
|
|
138
|
+
|
|
139
|
+
### Added
|
|
140
|
+
|
|
141
|
+
- Canonical JSON-driven token generation and strict component token enforcement.
|
|
142
|
+
- Color Contrast documentation covering every audited theme, mode, foreground, and background scenario.
|
|
143
|
+
- Item and Toggle Group primitives, inherited direction context, Arabic font installation, and named categorical chart tokens.
|
|
144
|
+
- Receipt-backed CLI drift protection, unified diffs, and isolated compilation for every registry component.
|
|
145
|
+
- Documentation search, token search/copy, stable component and pattern separation, and dedicated lab navigation.
|
|
146
|
+
- `SegmentedControl` and `KbdShortcut` primitives with accessibility, RTL, registry metadata, examples, and tests.
|
|
147
|
+
- Semantic `compact`, `default`, and `comfortable` density across Button, Input, Select, DatePicker, ButtonGroup, SegmentedControl, and Toolbar controls.
|
|
148
|
+
- Canonical collection-filter, results-toolbar, and control-density recipes with accessibility and visual-regression coverage.
|
|
149
|
+
- Install-time coding-agent guidance, a read-only `banhaten doctor` adoption audit, and recurring-gap promotion reporting.
|
|
150
|
+
|
|
151
|
+
### Changed
|
|
152
|
+
|
|
153
|
+
- Production components no longer invent demo content, fake actions, or fixed sample dates.
|
|
154
|
+
- Input and Select no longer invent optional leading, information, or trailing icons when those props are omitted; explicit flags retain the previous built-in adornments.
|
|
155
|
+
- Registry component metadata now publishes machine-readable prop types, rendered defaults, and descriptions for optional visual slots.
|
|
156
|
+
- Registry component token metadata is generated from source references.
|
|
157
|
+
- Pagination, OTP, Carousel, Alert, and Toast direction behavior now resolves from explicit props, provider context, or the nearest document boundary.
|
|
158
|
+
- The default appearance keeps blue brand roles but now composes all neutral surfaces, borders, content, and interaction roles from the reviewed gray ramp in light and dark modes.
|
|
159
|
+
- Registry metadata now declares capability defaults, recommended uses, avoid guidance, recipes, and deprecated props instead of inferring defaults from array order.
|
|
160
|
+
- Toolbar controls default to the shared 36px density; use `density="comfortable"` for the previous 40px toolbar height.
|
|
161
|
+
|
|
162
|
+
### Fixed
|
|
163
|
+
|
|
164
|
+
- Undefined token references, raw component values, inaccessible progress semantics, no-op controls, and the Arabic Pagination “Previous” label.
|
|
165
|
+
- Documentation section anchors, narrow Input preview overflow, Popover arrow sizing, Slideout icon geometry, and playground bundle chunking.
|
|
166
|
+
- High-severity playground advisories in Nano ID, PostCSS, and Undici through patched lockfile versions.
|
|
167
|
+
|
|
168
|
+
### Migration
|
|
169
|
+
|
|
170
|
+
- Prefer `density` over legacy component-specific sizes when controls share a row. Legacy size props continue to work.
|
|
171
|
+
- Replace Input `hasLeadingIcon` and `hasInformationIcon` with explicit `leadingIcon`/`trailingIcon`, or use `showAtSign`/`showInfo` for those exact affordances. The legacy flags remain supported for this deprecation window.
|
|
172
|
+
- Replace single-glyph Input shortcuts with `shortcutKeys={["Mod", "K"]}` or `KbdShortcut` for platform-aware keycaps.
|
|
173
|
+
- Run `npx banhaten init` to install `.banhaten/USAGE.md`, then run `npx banhaten doctor` and `npx banhaten diff` before updating consumer components.
|
|
174
|
+
|
|
175
|
+
## 0.1.3
|
|
176
|
+
|
|
177
|
+
- Pre-launch registry and documentation baseline.
|
package/CONTRIBUTING.md
CHANGED
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
# Contributing to Banhaten
|
|
2
|
-
|
|
3
|
-
## Local checks
|
|
4
|
-
|
|
5
|
-
Use Node 18.18 or newer, install the root and playground dependencies, then run:
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npm run check
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
The full check validates schemas, CLI behavior, token generation, token-only component styling, registry mirrors, isolated installs, documentation coverage, browser tests, and the production bundle.
|
|
12
|
-
|
|
13
|
-
## Component rules
|
|
14
|
-
|
|
15
|
-
- Build component styling from canonical `--bh-*` and `--elevation-*` tokens. Add
|
|
16
|
-
new values to the component's own fragment under
|
|
17
|
-
`tokens/source/components/<id>/`, or to a foundation fragment when several
|
|
18
|
-
components share them, before using them in component source.
|
|
19
|
-
- Keep product copy, sample dates, and product actions in examples rather than production defaults.
|
|
20
|
-
- Preserve inherited direction and use logical CSS properties. Test both LTR and RTL keyboard behavior.
|
|
21
|
-
- Use native semantics or proven accessible primitives, and document the public API, examples, tokens, RTL behavior, and accessibility contract.
|
|
22
|
-
- Keep stable primitives in Components, larger compositions in Patterns, and experiments in Lab. A family built for one product surface, such as AI conversation, may have its own group; the general-purpose primitives it relies on still go in Components.
|
|
23
|
-
- Split a component that nears 1,000 lines into modules by concern. Mark the modules that only serve its public module `"internal": true` in its catalog entry so the split does not publish them.
|
|
24
|
-
|
|
25
|
-
## Generated artifacts
|
|
26
|
-
|
|
27
|
-
Edit the owned fragments under `tokens/source/` for structured tokens and
|
|
28
|
-
aliases, and edit `registry/catalog/components/<id>.json` for component registry
|
|
29
|
-
metadata. `tokens/banhaten.tokens.json` and `registry/index.json` are compiled
|
|
30
|
-
publication artifacts. Edit `tokens/banhaten.utilities.css` for authored
|
|
31
|
-
Tailwind mappings, keyframes, global rules, accessibility rules, and typography
|
|
32
|
-
utilities. The generated `registry/styles/globals.css` is rebuilt from the
|
|
33
|
-
compiled token catalog and that authored CSS source.
|
|
34
|
-
|
|
35
|
-
After token or registry metadata changes, run:
|
|
36
|
-
|
|
37
|
-
```bash
|
|
38
|
-
npm run tokens:build
|
|
39
|
-
npm run components:tokens:metadata -- --write
|
|
40
|
-
npm run registry:export
|
|
41
|
-
npm run docs:normalize
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Do not hand-edit `tokens/banhaten.tokens.json`, `registry/index.json`,
|
|
45
|
-
`registry/styles/globals.css`, `registry.json`, or generated registry contract
|
|
46
|
-
tables.
|
|
1
|
+
# Contributing to Banhaten
|
|
2
|
+
|
|
3
|
+
## Local checks
|
|
4
|
+
|
|
5
|
+
Use Node 18.18 or newer, install the root and playground dependencies, then run:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm run check
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
The full check validates schemas, CLI behavior, token generation, token-only component styling, registry mirrors, isolated installs, documentation coverage, browser tests, and the production bundle.
|
|
12
|
+
|
|
13
|
+
## Component rules
|
|
14
|
+
|
|
15
|
+
- Build component styling from canonical `--bh-*` and `--elevation-*` tokens. Add
|
|
16
|
+
new values to the component's own fragment under
|
|
17
|
+
`tokens/source/components/<id>/`, or to a foundation fragment when several
|
|
18
|
+
components share them, before using them in component source.
|
|
19
|
+
- Keep product copy, sample dates, and product actions in examples rather than production defaults.
|
|
20
|
+
- Preserve inherited direction and use logical CSS properties. Test both LTR and RTL keyboard behavior.
|
|
21
|
+
- Use native semantics or proven accessible primitives, and document the public API, examples, tokens, RTL behavior, and accessibility contract.
|
|
22
|
+
- Keep stable primitives in Components, larger compositions in Patterns, and experiments in Lab. A family built for one product surface, such as AI conversation, may have its own group; the general-purpose primitives it relies on still go in Components.
|
|
23
|
+
- Split a component that nears 1,000 lines into modules by concern. Mark the modules that only serve its public module `"internal": true` in its catalog entry so the split does not publish them.
|
|
24
|
+
|
|
25
|
+
## Generated artifacts
|
|
26
|
+
|
|
27
|
+
Edit the owned fragments under `tokens/source/` for structured tokens and
|
|
28
|
+
aliases, and edit `registry/catalog/components/<id>.json` for component registry
|
|
29
|
+
metadata. `tokens/banhaten.tokens.json` and `registry/index.json` are compiled
|
|
30
|
+
publication artifacts. Edit `tokens/banhaten.utilities.css` for authored
|
|
31
|
+
Tailwind mappings, keyframes, global rules, accessibility rules, and typography
|
|
32
|
+
utilities. The generated `registry/styles/globals.css` is rebuilt from the
|
|
33
|
+
compiled token catalog and that authored CSS source.
|
|
34
|
+
|
|
35
|
+
After token or registry metadata changes, run:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm run tokens:build
|
|
39
|
+
npm run components:tokens:metadata -- --write
|
|
40
|
+
npm run registry:export
|
|
41
|
+
npm run docs:normalize
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Do not hand-edit `tokens/banhaten.tokens.json`, `registry/index.json`,
|
|
45
|
+
`registry/styles/globals.css`, `registry.json`, or generated registry contract
|
|
46
|
+
tables.
|