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,244 +1,245 @@
|
|
|
1
|
-
# Component Implementation and Ownership Audit
|
|
2
|
-
|
|
3
|
-
Audit date: 2026-08-20
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
- Native
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
- No
|
|
93
|
-
- No
|
|
94
|
-
- No
|
|
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
|
-
|
|
|
125
|
-
|
|
|
126
|
-
|
|
|
127
|
-
|
|
|
128
|
-
|
|
|
129
|
-
| Radio
|
|
130
|
-
|
|
|
131
|
-
|
|
|
132
|
-
|
|
|
133
|
-
|
|
|
134
|
-
|
|
|
135
|
-
| Input
|
|
136
|
-
|
|
|
137
|
-
|
|
|
138
|
-
|
|
|
139
|
-
|
|
|
140
|
-
|
|
|
141
|
-
|
|
|
142
|
-
|
|
|
143
|
-
|
|
|
144
|
-
|
|
|
145
|
-
|
|
|
146
|
-
|
|
|
147
|
-
|
|
|
148
|
-
|
|
|
149
|
-
|
|
|
150
|
-
|
|
|
151
|
-
|
|
|
152
|
-
| Progress
|
|
153
|
-
|
|
|
154
|
-
|
|
|
155
|
-
|
|
|
156
|
-
|
|
|
157
|
-
|
|
|
158
|
-
| Activity
|
|
159
|
-
|
|
|
160
|
-
|
|
|
161
|
-
|
|
|
162
|
-
|
|
|
163
|
-
|
|
|
164
|
-
|
|
|
165
|
-
|
|
|
166
|
-
|
|
|
167
|
-
|
|
|
168
|
-
|
|
|
169
|
-
|
|
|
170
|
-
|
|
|
171
|
-
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
- **68 of 68**
|
|
177
|
-
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
-
|
|
187
|
-
-
|
|
188
|
-
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
|
210
|
-
|
|
|
211
|
-
|
|
|
212
|
-
|
|
|
213
|
-
|
|
|
214
|
-
|
|
|
215
|
-
|
|
|
216
|
-
|
|
|
217
|
-
|
|
|
218
|
-
|
|
|
219
|
-
|
|
|
220
|
-
|
|
|
221
|
-
|
|
|
222
|
-
|
|
|
223
|
-
|
|
|
224
|
-
|
|
|
225
|
-
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
-
|
|
241
|
-
-
|
|
242
|
-
-
|
|
243
|
-
-
|
|
244
|
-
-
|
|
1
|
+
# Component Implementation and Ownership Audit
|
|
2
|
+
|
|
3
|
+
Audit date: 2026-08-20
|
|
4
|
+
|
|
5
|
+
Remediation status: complete for the requested 96 component-ownership gaps
|
|
6
|
+
|
|
7
|
+
## Executive status
|
|
8
|
+
|
|
9
|
+
The requested component-gap remediation is complete.
|
|
10
|
+
|
|
11
|
+
- **96 of 96 requested issues are closed.**
|
|
12
|
+
- All **94 background component-kind gaps** were replaced with Banhaten-owned components or compositions and removed from scenario metadata.
|
|
13
|
+
- The two untracked ownership violations were fixed:
|
|
14
|
+
- Activity Heatmap period controls now use Segmented Control in the live page, copyable example, and customer-activity background.
|
|
15
|
+
- Scroll Area alternatives now use the Banhaten Scroll Area API and no longer import Radix directly.
|
|
16
|
+
- All **38 of 38 audited backgrounds** now pass the enforced component-only consumer rule.
|
|
17
|
+
- Those backgrounds contain **zero native button, input, select, textarea, or table roots**.
|
|
18
|
+
- Playground consumer source contains **zero direct imports from the restricted UI-vendor set**.
|
|
19
|
+
- A new AST-based ownership gate prevents those regressions from returning.
|
|
20
|
+
|
|
21
|
+
This is a pass for the requested component-ownership scope. The subsequent full component-quality audit also closed the five expanded-component primitive-reuse notes, so there are no known visible-control ownership exceptions in the component catalog. It is not a claim that every reference background is visually complete: **100 non-component fidelity gaps remain** and are tracked separately.
|
|
22
|
+
|
|
23
|
+
## Before and after
|
|
24
|
+
|
|
25
|
+
| Measure | Before | Current | Status |
|
|
26
|
+
| --- | ---: | ---: | --- |
|
|
27
|
+
| Requested ownership issues | 96 | 0 open | Pass |
|
|
28
|
+
| Background component-kind gaps | 94 | 0 | Pass |
|
|
29
|
+
| Missing-component gaps | 47 | 0 | Pass |
|
|
30
|
+
| Component approximations | 47 | 0 | Pass |
|
|
31
|
+
| Strict component-only backgrounds | 2 of 38 | 38 of 38 | Pass |
|
|
32
|
+
| Native control/table roots in audited backgrounds | 27 | 0 | Pass |
|
|
33
|
+
| Activity Heatmap raw period-control usages | 3 surfaces | 0 | Pass |
|
|
34
|
+
| Scroll Area direct Radix consumer imports | 1 page | 0 | Pass |
|
|
35
|
+
| Automated ownership boundary | Absent | Enforced in playground test and root check | Pass |
|
|
36
|
+
| Non-component visual gaps | 100 | 100 | Outside this remediation |
|
|
37
|
+
|
|
38
|
+
The remaining visual-gap inventory is:
|
|
39
|
+
|
|
40
|
+
| Gap kind | Count |
|
|
41
|
+
| --- | ---: |
|
|
42
|
+
| Layout/composition fidelity | 47 |
|
|
43
|
+
| Icon assets | 20 |
|
|
44
|
+
| Image assets | 20 |
|
|
45
|
+
| Tokens | 13 |
|
|
46
|
+
| **Total** | **100** |
|
|
47
|
+
|
|
48
|
+
## What changed
|
|
49
|
+
|
|
50
|
+
### Ownership violations
|
|
51
|
+
|
|
52
|
+
- [ActivityHeatmapPage.tsx](../../playground/src/pages/new-components/ActivityHeatmapPage.tsx) now composes SegmentedControl and SegmentedControlItem in both published code and the live example.
|
|
53
|
+
- [customer-activity-dashboard/index.tsx](../../playground/src/app/backgrounds/customer-activity-dashboard/index.tsx) uses the same owned segmented-control contract.
|
|
54
|
+
- [ScrollAreaPage.tsx](../../playground/src/pages/ScrollAreaPage.tsx) no longer imports or assembles Radix primitives.
|
|
55
|
+
- [scroll-area.tsx](../../registry/components/scroll-area.tsx) now exposes vertical, horizontal, and combined orientation behavior through the Banhaten API.
|
|
56
|
+
|
|
57
|
+
### Reusable APIs promoted to close repeated gaps
|
|
58
|
+
|
|
59
|
+
- [table-elements.tsx](../../registry/components/table-elements.tsx) adds Banhaten-owned semantic table and data-surface elements.
|
|
60
|
+
- [card.tsx](../../registry/components/card.tsx) adds CardSurface for product-specific card composition without redrawing a card shell.
|
|
61
|
+
- [sidebar.tsx](../../registry/components/sidebar.tsx) supports standalone owned sidebar surfaces while preserving provider-aware behavior for interactive sidebar parts.
|
|
62
|
+
- [Steps.tsx](../../registry/components/expanded/Steps.tsx) adds ProgressSteps with bar and marker variants.
|
|
63
|
+
- [Timeline.tsx](../../registry/components/expanded/Timeline.tsx) accepts richer label/caption content and local styling hooks needed by migrated flows.
|
|
64
|
+
|
|
65
|
+
### Background migrations
|
|
66
|
+
|
|
67
|
+
The 38 reference backgrounds were audited and migrated as a complete set. The repeated replacements include:
|
|
68
|
+
|
|
69
|
+
- Native buttons to Button, Button Group, Segmented Control, or the relevant owned action component.
|
|
70
|
+
- Handcrafted switches to Toggle.
|
|
71
|
+
- Native inputs/selects/textareas to the matching Banhaten form owner.
|
|
72
|
+
- Native data tables and ARIA table shells to TableRoot or DataTableSurface compositions.
|
|
73
|
+
- Handcrafted cards to CardSurface.
|
|
74
|
+
- Root application sidebars to Sidebar.
|
|
75
|
+
- Custom progress bars, numbered setup flows, and status tracks to ProgressSteps, Steps, or Timeline.
|
|
76
|
+
- Product chips and variables to Tag, Badge, and Avatar composition.
|
|
77
|
+
|
|
78
|
+
Component-gap metadata and component-gap DOM markers were removed only after the corresponding implementations migrated and passed type, unit, build, and browser checks.
|
|
79
|
+
|
|
80
|
+
## Enforced ownership boundary
|
|
81
|
+
|
|
82
|
+
The ownership rule is layer-aware:
|
|
83
|
+
|
|
84
|
+
1. **Registry foundation layer:** Native HTML and declared behavior libraries may be used inside the Banhaten component that owns and publishes that behavior.
|
|
85
|
+
2. **Expanded registry layer:** Higher-level components should compose Banhaten primitives whenever an equivalent owner exists.
|
|
86
|
+
3. **Consumer layer:** Backgrounds, examples, and copyable documentation must use Banhaten components for interactive controls. Passive semantic/layout HTML remains allowed.
|
|
87
|
+
4. **Public integration exceptions:** Recharts remains an intentional extension surface of Chart. No such exception exists for direct Radix, cmdk, Embla, react-resizable-panels, or Sonner imports in playground consumers.
|
|
88
|
+
5. **Test fixtures:** Native elements may be used when a test specifically needs a fixture and does not publish that fixture as product guidance.
|
|
89
|
+
|
|
90
|
+
[component-ownership.test.mjs](../../playground/src/test/component-ownership.test.mjs) now enforces:
|
|
91
|
+
|
|
92
|
+
- No direct playground consumer imports from Radix, cmdk, Embla, react-resizable-panels, or Sonner.
|
|
93
|
+
- No native button, input, select, textarea, or table roots in any background implementation.
|
|
94
|
+
- No component-kind background gap metadata.
|
|
95
|
+
- No raw controls or direct restricted-vendor imports in the copyable Activity Heatmap and Scroll Area pages.
|
|
96
|
+
|
|
97
|
+
The gate runs first in the playground test pipeline and is also available from the repository root as components:ownership:check.
|
|
98
|
+
|
|
99
|
+
## Component-by-component status
|
|
100
|
+
|
|
101
|
+
All 68 catalog components remain owned, buildable, installable, documented, token-validated, and runtime-export validated. The status below focuses on implementation ownership after remediation.
|
|
102
|
+
|
|
103
|
+
| Component | Status | Ownership note |
|
|
104
|
+
| --- | --- | --- |
|
|
105
|
+
| Accordion | Pass | Owned declared Radix wrapper. |
|
|
106
|
+
| Aspect Ratio | Pass | Owned declared Radix wrapper. |
|
|
107
|
+
| Avatar | Pass | Owned declared Radix wrapper. |
|
|
108
|
+
| Badge | Pass | Owned Slot/CVA primitive. |
|
|
109
|
+
| Tag | Pass | Canonical owned tag/chip owner. |
|
|
110
|
+
| Attribute | Pass | Owned structural key/value composition. |
|
|
111
|
+
| Button | Pass | Canonical action owner. |
|
|
112
|
+
| Card | Pass | Owned card family; CardSurface now covers custom card shells. |
|
|
113
|
+
| Chart | Pass — integration | Banhaten owns container, tooltip, legend, and tokens; Recharts children are the documented public extension. |
|
|
114
|
+
| Carousel | Pass — integration | Owned declared Embla behavior with Banhaten controls. |
|
|
115
|
+
| Button Group | Pass | Canonical connected action/toggle owner. |
|
|
116
|
+
| Segmented Control | Pass | Owned mutually exclusive control composed from Button Group. |
|
|
117
|
+
| Toggle | Pass | Owned declared switch behavior. |
|
|
118
|
+
| Menu | Pass | Owned declared Radix menu implementation. |
|
|
119
|
+
| Menubar | Pass | Owned declared Radix menubar implementation. |
|
|
120
|
+
| Command | Pass — integration | Owned cmdk-backed command surface. |
|
|
121
|
+
| Context Menu | Pass | Owned declared Radix context-menu implementation. |
|
|
122
|
+
| Tooltip | Pass | Owned declared Radix tooltip implementation. |
|
|
123
|
+
| Popover | Pass | Owned declared Radix popover implementation. |
|
|
124
|
+
| Hover Card | Pass | Owned declared Radix hover-card implementation. |
|
|
125
|
+
| Modal | Pass | Owned declared dialog behavior and action composition. |
|
|
126
|
+
| Alert Dialog | Pass | Owned declared alert-dialog behavior with Banhaten actions. |
|
|
127
|
+
| Checkbox | Pass | Owned checkbox and checkbox-card behavior. |
|
|
128
|
+
| Collapsible | Pass | Owned declared collapsible implementation. |
|
|
129
|
+
| Radio Group | Pass | Canonical owned radio-group owner. |
|
|
130
|
+
| Radio Card | Pass | Canonical owned radio-card owner. |
|
|
131
|
+
| Divider | Pass | Owned structural separator. |
|
|
132
|
+
| Pagination | Pass | Canonical pagination owner. |
|
|
133
|
+
| Toolbar | Pass | Owned search, action, filter, and select-trigger family. |
|
|
134
|
+
| Social Button | Pass | Owned provider-action primitive. |
|
|
135
|
+
| Input | Pass | Canonical input owner. |
|
|
136
|
+
| Input Group | Pass | Owned grouped input and inline-action surface. |
|
|
137
|
+
| Label | Pass | Owned declared label implementation. |
|
|
138
|
+
| Kbd | Pass | Owned keyboard-hint primitive. |
|
|
139
|
+
| Item | Pass | Owned Slot-based row composition. |
|
|
140
|
+
| Field | Pass | Owned field composition using Label. |
|
|
141
|
+
| Input OTP | Pass | Owned OTP slot and form behavior. |
|
|
142
|
+
| Select | Pass | Owned declared select and rich menu-item surfaces. |
|
|
143
|
+
| Native Select | Pass | Canonical native-select owner. |
|
|
144
|
+
| Sheet | Pass | Owned edge-panel dialog behavior. |
|
|
145
|
+
| Sidebar | Pass | Canonical provider-aware and standalone sidebar owner. |
|
|
146
|
+
| Navigation Menu | Pass | Owned declared navigation-menu implementation. |
|
|
147
|
+
| Scroll Area | Pass | Owned orientation API; direct consumer Radix usage removed. |
|
|
148
|
+
| Resizable | Pass — integration | Owned react-resizable-panels wrapper. |
|
|
149
|
+
| Autocomplete | Pass | Composes Input, Popover, Select, and Tag. |
|
|
150
|
+
| Date Picker | Pass | Owned calendar behavior composed with Banhaten primitives. |
|
|
151
|
+
| Slider | Pass | Owned declared slider implementation. |
|
|
152
|
+
| Progress | Pass | Owned read-only progress primitive. |
|
|
153
|
+
| Progress Slider | Pass | Owned declared interactive progress control. |
|
|
154
|
+
| Textarea | Pass | Canonical textarea owner. |
|
|
155
|
+
| Skeleton | Pass | Owned loading-placeholder family. |
|
|
156
|
+
| Spinner | Pass | Owned loading indicator. |
|
|
157
|
+
| Toast | Pass — integration | Owned Sonner-backed feedback API and token layer. |
|
|
158
|
+
| Activity Feed | Pass | Owned activity composition using Banhaten actions. |
|
|
159
|
+
| Activity Heatmap | Pass | Owned heatmap; period controls now use Segmented Control everywhere published. |
|
|
160
|
+
| Alert | Pass | Canonical alert owner. |
|
|
161
|
+
| Banner | Pass | Composes Banhaten Button and Input. |
|
|
162
|
+
| Catalog Components | Pass | Publishable owned composition; catalog divider actions use Button and the bundle has a dedicated docs page. |
|
|
163
|
+
| Breadcrumbs | Pass | Canonical breadcrumb navigation owner. |
|
|
164
|
+
| File Upload | Pass | Hidden native file input is the valid owned platform hook; all visible browse/retry actions use Button. |
|
|
165
|
+
| Table | Pass | Semantic table surface closes consumer gaps; visible actions use Button and selection/meter semantics are owned. |
|
|
166
|
+
| Empty State | Pass | Uses Banhaten actions, including link composition. |
|
|
167
|
+
| Onboarding Step | Pass | Owned presentational step row. |
|
|
168
|
+
| Page Header | Pass | Composes Breadcrumbs, Tabs, and Button with explicit heading-level and landmark contracts. |
|
|
169
|
+
| Slideout | Pass | Explicitly documented as a named presentational region and composes Button actions; it no longer claims incomplete dialog behavior. |
|
|
170
|
+
| Steps | Pass | Owns standard, horizontal, vertical, and ProgressSteps compositions. |
|
|
171
|
+
| Tabs | Pass | Owned declared tabs implementation. |
|
|
172
|
+
| Timeline | Pass | Owned timeline composition with richer content hooks. |
|
|
173
|
+
|
|
174
|
+
Component summary:
|
|
175
|
+
|
|
176
|
+
- **68 of 68** catalog entries pass build, publication, docs, tokens, and isolated-install validation.
|
|
177
|
+
- **68 of 68** have no open primitive-reuse or visible-control ownership note in this audit.
|
|
178
|
+
- The only native interactive element in the expanded layer is File Upload's hidden `input[type=file]`, which is the owning platform behavior rather than a visible consumer bypass.
|
|
179
|
+
|
|
180
|
+
## Remaining work outside the 96 gaps
|
|
181
|
+
|
|
182
|
+
### Visual fidelity backlog
|
|
183
|
+
|
|
184
|
+
The remaining 100 gaps are non-component concerns. The current promotion report identifies four recurring candidate families:
|
|
185
|
+
|
|
186
|
+
- Workspace shell/layout composition.
|
|
187
|
+
- Icon assets.
|
|
188
|
+
- Elevation treatment.
|
|
189
|
+
- Avatar/image assets.
|
|
190
|
+
|
|
191
|
+
See [gap-promotion-report.md](./gap-promotion-report.md) for the generated detail.
|
|
192
|
+
|
|
193
|
+
### Component-quality closure
|
|
194
|
+
|
|
195
|
+
The former internal primitive-reuse notes are closed: Catalog Divider, File Upload, Table, Page Header, Slideout, and Alert use owned visible actions, while Page Header also composes Breadcrumbs. Slideout is deliberately a named presentational region rather than an incomplete dialog; modal interaction remains owned by Sheet and Modal.
|
|
196
|
+
|
|
197
|
+
The full route audit now covers all component pages with strict Axe, inherited RTL, 324px document containment, and deterministic Chromium base-card screenshots. Contrast is also clean at 910 of 910 scenarios.
|
|
198
|
+
|
|
199
|
+
### Structural hotspots
|
|
200
|
+
|
|
201
|
+
The largest implementation units remain Date Picker, expanded Table, Input, Menu, Select, and Modal. They pass current checks, but splitting helpers/state from public component modules would reduce future change risk.
|
|
202
|
+
|
|
203
|
+
### Test depth
|
|
204
|
+
|
|
205
|
+
Every component route has uniform Axe, inherited-RTL, 324px containment, documentation, and visual-baseline coverage. Deep interaction-specific keyboard and focus assertions remain intentionally component-specific because their behavior contracts differ.
|
|
206
|
+
|
|
207
|
+
## Verification results
|
|
208
|
+
|
|
209
|
+
| Gate | Result | Evidence |
|
|
210
|
+
| --- | --- | --- |
|
|
211
|
+
| Component ownership | Pass | 38 backgrounds; zero component gaps; zero native controls; zero restricted direct consumer UI-vendor imports. |
|
|
212
|
+
| Background metadata | Pass | 38 scenarios and 100 remaining non-component gaps are internally consistent. |
|
|
213
|
+
| Gap promotion report | Pass | Current with 4 candidates across 38 backgrounds. |
|
|
214
|
+
| TypeScript | Pass | Playground typecheck completed with no errors. |
|
|
215
|
+
| Unit/component tests | Pass | 8 Vitest files and 205 tests. |
|
|
216
|
+
| Documentation coverage | Pass | 68 registry-backed pages; zero pending rollout pages and zero aliases. |
|
|
217
|
+
| Production build | Pass | Vite transformed 3,350 modules and bundle budget passed. |
|
|
218
|
+
| Browser suite | Pass | 389 Playwright tests passed across Chromium, Firefox, and WebKit; 4 engine-deduplicated checks skipped by design. |
|
|
219
|
+
| Registry validation | Pass | 68 catalogs and 113 mirrors; all 68 packed component installs compiled and exported correctly. |
|
|
220
|
+
| Token ownership | Pass | 91 owned token sources; 161 component/example files; metadata current for all 68 components. |
|
|
221
|
+
| Package artifact | Pass | 300 packed files; 96-file registry closure; 72 examples; CLI smoke for all 68 installs. |
|
|
222
|
+
| Documentation contracts | Pass | Markdown checks passed for all 68 components. |
|
|
223
|
+
| Accessibility/RTL/containment | Pass | 69 of 69 component UI routes pass strict Axe and inherited-RTL containment at 324px. |
|
|
224
|
+
| Contrast | Pass | 910 of 910 canonical scenarios pass. |
|
|
225
|
+
| Visual regression | Pass | 69 of 69 canonical Chromium base-card baselines reproduce cleanly. |
|
|
226
|
+
| Patch hygiene | Pass | Git diff whitespace/error check is clean. |
|
|
227
|
+
|
|
228
|
+
Registry and package checks used an isolated npm cache under /tmp because the user-level npm cache contains root-owned entries. The user cache was not changed.
|
|
229
|
+
|
|
230
|
+
## Final verdict
|
|
231
|
+
|
|
232
|
+
**Pass for the requested 96 component-ownership gaps.**
|
|
233
|
+
|
|
234
|
+
The audited backgrounds and the two named copyable-documentation violations now use Banhaten-owned components, and the invariant is protected by an automated gate. The remaining 100 tracked gaps are visual/layout/token/asset work, not missing or approximated components.
|
|
235
|
+
|
|
236
|
+
The component catalog is also clean under the broader implementation-quality audit. The remaining 100 tracked gaps are background visual/layout/token/asset fidelity work, not missing, approximated, or bypassed components. This distinction keeps the ownership result reliable without treating the separate background-fidelity backlog as component debt.
|
|
237
|
+
|
|
238
|
+
## Audit scope
|
|
239
|
+
|
|
240
|
+
- Repository: /Users/ahmadgalal/Downloads/Work/Banhaten-design-system
|
|
241
|
+
- Canonical surface: 68 registry catalog entries.
|
|
242
|
+
- Consumer remediation surface: all 38 background implementations and scenario descriptors, plus the Activity Heatmap and Scroll Area copyable pages.
|
|
243
|
+
- Generated artifacts validated: registry indexes, runtime mirrors, token metadata, component docs contracts, background catalog, and gap-promotion report.
|
|
244
|
+
- Verification environments: TypeScript, Vitest, Vite production build, isolated packed installs, and Playwright on Chromium, Firefox, and WebKit.
|
|
245
|
+
- Existing unrelated dirty-tree changes were preserved.
|