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.
Files changed (348) hide show
  1. package/CHANGELOG.md +139 -73
  2. package/CONTRIBUTING.md +46 -44
  3. package/README.md +192 -190
  4. package/SECURITY.md +15 -15
  5. package/banhaten.config.example.json +11 -11
  6. package/docs/design-spacing.md +13 -0
  7. package/docs/design-system/README.md +22 -20
  8. package/docs/design-system/adoption-quality-remediation.md +87 -87
  9. package/docs/design-system/agent-usage.md +13 -13
  10. package/docs/design-system/appearance-presets.md +189 -189
  11. package/docs/design-system/appearances/default.md +94 -94
  12. package/docs/design-system/appearances/rounded.md +95 -95
  13. package/docs/design-system/appearances/sharp.md +95 -95
  14. package/docs/design-system/component-docs-pattern.md +81 -81
  15. package/docs/design-system/component-implementation-ownership-audit.md +245 -244
  16. package/docs/design-system/component-quality-audit-2026-08-20.md +225 -223
  17. package/docs/design-system/component-showcase-consistency-report.md +219 -219
  18. package/docs/design-system/component-token-consistency-audit.md +173 -173
  19. package/docs/design-system/components/README.md +90 -76
  20. package/docs/design-system/components/accordion.md +53 -53
  21. package/docs/design-system/components/activity-feed.md +94 -94
  22. package/docs/design-system/components/activity-heatmap.md +57 -57
  23. package/docs/design-system/components/agent-input.md +85 -0
  24. package/docs/design-system/components/alert-dialog.md +72 -72
  25. package/docs/design-system/components/alert.md +98 -98
  26. package/docs/design-system/components/approval-card.md +134 -0
  27. package/docs/design-system/components/aspect-ratio.md +45 -45
  28. package/docs/design-system/components/attribute.md +89 -89
  29. package/docs/design-system/components/autocomplete.md +75 -75
  30. package/docs/design-system/components/avatar.md +54 -54
  31. package/docs/design-system/components/badge.md +54 -54
  32. package/docs/design-system/components/banner.md +87 -87
  33. package/docs/design-system/components/breadcrumbs.md +177 -176
  34. package/docs/design-system/components/button-group.md +98 -98
  35. package/docs/design-system/components/button.md +83 -80
  36. package/docs/design-system/components/card.md +88 -88
  37. package/docs/design-system/components/carousel.md +46 -46
  38. package/docs/design-system/components/catalog-components.md +47 -47
  39. package/docs/design-system/components/chart.md +95 -24
  40. package/docs/design-system/components/checkbox.md +54 -54
  41. package/docs/design-system/components/collapsible.md +67 -53
  42. package/docs/design-system/components/command.md +62 -62
  43. package/docs/design-system/components/context-menu.md +46 -46
  44. package/docs/design-system/components/date-picker.md +81 -79
  45. package/docs/design-system/components/divider.md +102 -102
  46. package/docs/design-system/components/empty-state.md +56 -56
  47. package/docs/design-system/components/field.md +70 -70
  48. package/docs/design-system/components/file-upload.md +187 -187
  49. package/docs/design-system/components/hover-card.md +48 -48
  50. package/docs/design-system/components/icons.md +48 -48
  51. package/docs/design-system/components/inline-citations.md +93 -0
  52. package/docs/design-system/components/input-group.md +58 -58
  53. package/docs/design-system/components/input-otp.md +56 -56
  54. package/docs/design-system/components/input.md +117 -61
  55. package/docs/design-system/components/item.md +59 -57
  56. package/docs/design-system/components/kbd.md +54 -49
  57. package/docs/design-system/components/label.md +49 -49
  58. package/docs/design-system/components/menu.md +71 -61
  59. package/docs/design-system/components/menubar.md +47 -47
  60. package/docs/design-system/components/modal.md +105 -105
  61. package/docs/design-system/components/native-select.md +54 -54
  62. package/docs/design-system/components/navigation-menu.md +50 -50
  63. package/docs/design-system/components/onboarding-step-list-item.md +82 -82
  64. package/docs/design-system/components/page-header.md +93 -86
  65. package/docs/design-system/components/pagination.md +57 -57
  66. package/docs/design-system/components/popover.md +60 -60
  67. package/docs/design-system/components/progress-slider.md +50 -50
  68. package/docs/design-system/components/progress.md +76 -76
  69. package/docs/design-system/components/radio-card.md +51 -51
  70. package/docs/design-system/components/radio-group.md +57 -57
  71. package/docs/design-system/components/resizable.md +44 -44
  72. package/docs/design-system/components/rolling-count.md +61 -0
  73. package/docs/design-system/components/scroll-area.md +51 -51
  74. package/docs/design-system/components/segmented-control.md +54 -54
  75. package/docs/design-system/components/select.md +68 -62
  76. package/docs/design-system/components/sheet.md +67 -67
  77. package/docs/design-system/components/shimmer-text.md +67 -0
  78. package/docs/design-system/components/sidebar.md +127 -76
  79. package/docs/design-system/components/skeleton.md +75 -75
  80. package/docs/design-system/components/slideout.md +65 -65
  81. package/docs/design-system/components/slider.md +63 -63
  82. package/docs/design-system/components/social-button.md +50 -50
  83. package/docs/design-system/components/spinner.md +62 -62
  84. package/docs/design-system/components/steps.md +65 -65
  85. package/docs/design-system/components/streaming-text.md +82 -0
  86. package/docs/design-system/components/table.md +419 -414
  87. package/docs/design-system/components/tabs.md +59 -55
  88. package/docs/design-system/components/tag.md +80 -80
  89. package/docs/design-system/components/task-list.md +95 -0
  90. package/docs/design-system/components/textarea.md +50 -50
  91. package/docs/design-system/components/thinking-reasoning.md +72 -0
  92. package/docs/design-system/components/thinking-state.md +67 -0
  93. package/docs/design-system/components/timeline.md +83 -83
  94. package/docs/design-system/components/toast.md +58 -58
  95. package/docs/design-system/components/toggle.md +81 -81
  96. package/docs/design-system/components/toolbar.md +92 -87
  97. package/docs/design-system/components/tooltip.md +94 -92
  98. package/docs/design-system/components/typography.md +18 -18
  99. package/docs/design-system/density-and-elevation.md +65 -61
  100. package/docs/design-system/design-system-test-missing-items.md +368 -368
  101. package/docs/design-system/direction-and-localization.md +23 -23
  102. package/docs/design-system/form-recipes.md +73 -73
  103. package/docs/design-system/gap-promotion-policy.md +21 -21
  104. package/docs/design-system/icons.md +74 -69
  105. package/docs/design-system/installation.md +70 -68
  106. package/docs/design-system/launch-comparison-shadcn.md +98 -98
  107. package/docs/design-system/registry-and-cli.md +64 -64
  108. package/docs/design-system/release-policy.md +30 -30
  109. package/docs/design-system/roadmap.md +14 -14
  110. package/docs/design-system/support-matrix.md +23 -23
  111. package/docs/design-system/tabs.md +54 -53
  112. package/docs/design-system/template-gap-audit.md +32 -0
  113. package/docs/design-system/templates.md +59 -0
  114. package/docs/design-system/token-governance.md +72 -60
  115. package/package.json +98 -98
  116. package/registry/component-contract.json +40 -40
  117. package/registry/components/accordion.tsx +155 -155
  118. package/registry/components/agent-input-parts.tsx +552 -0
  119. package/registry/components/agent-input-state.ts +156 -0
  120. package/registry/components/agent-input.css +307 -0
  121. package/registry/components/agent-input.tsx +382 -0
  122. package/registry/components/alert-dialog.tsx +297 -297
  123. package/registry/components/alert.tsx +293 -293
  124. package/registry/components/approval-card.css +409 -0
  125. package/registry/components/approval-card.tsx +401 -0
  126. package/registry/components/approval-frame.tsx +108 -0
  127. package/registry/components/approval-questions.tsx +559 -0
  128. package/registry/components/aspect-ratio.tsx +30 -30
  129. package/registry/components/attribute.tsx +454 -448
  130. package/registry/components/autocomplete.tsx +598 -651
  131. package/registry/components/avatar.tsx +385 -381
  132. package/registry/components/badge.tsx +629 -629
  133. package/registry/components/button-group.tsx +565 -565
  134. package/registry/components/button.tsx +127 -123
  135. package/registry/components/card.tsx +638 -638
  136. package/registry/components/carousel.tsx +296 -296
  137. package/registry/components/chart-block-data.ts +177 -0
  138. package/registry/components/chart-block.css +171 -0
  139. package/registry/components/chart-block.tsx +260 -0
  140. package/registry/components/chart-interactions.ts +123 -0
  141. package/registry/components/chart-options.cartesian.ts +162 -0
  142. package/registry/components/chart-options.paint.ts +99 -0
  143. package/registry/components/chart-options.parts.ts +72 -0
  144. package/registry/components/chart-options.radial.ts +109 -0
  145. package/registry/components/chart-options.ts +44 -0
  146. package/registry/components/chart-options.types.ts +67 -0
  147. package/registry/components/chart.tsx +203 -203
  148. package/registry/components/checkbox.tsx +247 -247
  149. package/registry/components/collapsible.tsx +109 -69
  150. package/registry/components/command.tsx +208 -208
  151. package/registry/components/context-menu.tsx +236 -236
  152. package/registry/components/data-chart.tsx +40 -0
  153. package/registry/components/date-picker.tsx +1289 -1277
  154. package/registry/components/echart-theme.ts +246 -0
  155. package/registry/components/echart.css +49 -0
  156. package/registry/components/echart.tsx +178 -0
  157. package/registry/components/expanded/ActivityFeed.tsx +227 -227
  158. package/registry/components/expanded/ActivityHeatmap.tsx +64 -64
  159. package/registry/components/expanded/Banner.tsx +179 -179
  160. package/registry/components/expanded/Breadcrumbs.tsx +131 -131
  161. package/registry/components/expanded/CatalogComponentsShowcase.tsx +205 -205
  162. package/registry/components/expanded/CatalogDivider.tsx +49 -49
  163. package/registry/components/expanded/EmptyState.tsx +155 -155
  164. package/registry/components/expanded/FileUpload.tsx +543 -543
  165. package/registry/components/expanded/OnboardingStepListItem.tsx +60 -59
  166. package/registry/components/expanded/PageHeader.tsx +179 -166
  167. package/registry/components/expanded/Slideout.tsx +108 -108
  168. package/registry/components/expanded/Steps.tsx +402 -402
  169. package/registry/components/expanded/Table.tsx +1092 -1071
  170. package/registry/components/expanded/Timeline.tsx +203 -203
  171. package/registry/components/expanded/activityFeed.css +248 -248
  172. package/registry/components/expanded/activityHeatmap.css +66 -66
  173. package/registry/components/expanded/banner.css +260 -255
  174. package/registry/components/expanded/breadcrumbs.css +140 -140
  175. package/registry/components/expanded/catalogComponentsShowcase.css +87 -87
  176. package/registry/components/expanded/divider.css +75 -75
  177. package/registry/components/expanded/emptyState.css +111 -111
  178. package/registry/components/expanded/fileUpload.css +457 -457
  179. package/registry/components/expanded/onboardingStepListItem.css +135 -126
  180. package/registry/components/expanded/pageHeader.css +248 -290
  181. package/registry/components/expanded/slideout.css +276 -276
  182. package/registry/components/expanded/steps.css +356 -356
  183. package/registry/components/expanded/table.css +606 -603
  184. package/registry/components/expanded/timeline.css +286 -286
  185. package/registry/components/field.tsx +283 -283
  186. package/registry/components/hover-card.tsx +48 -48
  187. package/registry/components/inline-citations.css +126 -0
  188. package/registry/components/inline-citations.tsx +292 -0
  189. package/registry/components/input-content.ts +107 -107
  190. package/registry/components/input-group.tsx +130 -130
  191. package/registry/components/input-otp.tsx +584 -584
  192. package/registry/components/input.tsx +990 -972
  193. package/registry/components/item.tsx +189 -189
  194. package/registry/components/kbd.tsx +246 -151
  195. package/registry/components/label.tsx +78 -78
  196. package/registry/components/menu.tsx +978 -986
  197. package/registry/components/menubar.tsx +226 -226
  198. package/registry/components/modal.tsx +872 -872
  199. package/registry/components/native-select.tsx +205 -205
  200. package/registry/components/navigation-menu.tsx +171 -171
  201. package/registry/components/pagination.css +36 -36
  202. package/registry/components/pagination.tsx +560 -555
  203. package/registry/components/popover.tsx +338 -338
  204. package/registry/components/progress-slider.tsx +216 -216
  205. package/registry/components/radio-card.tsx +676 -677
  206. package/registry/components/radio-group.tsx +570 -570
  207. package/registry/components/resizable.tsx +108 -108
  208. package/registry/components/rolling-count.css +37 -0
  209. package/registry/components/rolling-count.tsx +110 -0
  210. package/registry/components/scroll-area.tsx +91 -91
  211. package/registry/components/segmented-control.tsx +87 -87
  212. package/registry/components/select-content.tsx +218 -218
  213. package/registry/components/select.tsx +937 -932
  214. package/registry/components/sheet.tsx +305 -305
  215. package/registry/components/shimmer-text.css +69 -0
  216. package/registry/components/shimmer-text.tsx +43 -0
  217. package/registry/components/sidebar.tsx +1433 -358
  218. package/registry/components/skeleton.css +54 -54
  219. package/registry/components/skeleton.tsx +482 -482
  220. package/registry/components/slider.tsx +380 -380
  221. package/registry/components/social-button.tsx +387 -387
  222. package/registry/components/spinner.tsx +78 -78
  223. package/registry/components/streaming-text.css +45 -0
  224. package/registry/components/streaming-text.tsx +165 -0
  225. package/registry/components/table-elements.tsx +128 -128
  226. package/registry/components/tabs.css +222 -218
  227. package/registry/components/tabs.tsx +241 -241
  228. package/registry/components/tag.tsx +423 -423
  229. package/registry/components/task-list.css +328 -0
  230. package/registry/components/task-list.tsx +429 -0
  231. package/registry/components/textarea.tsx +610 -610
  232. package/registry/components/thinking-reasoning.css +178 -0
  233. package/registry/components/thinking-reasoning.tsx +253 -0
  234. package/registry/components/thinking-state.css +8 -0
  235. package/registry/components/thinking-state.tsx +46 -0
  236. package/registry/components/toast.tsx +136 -136
  237. package/registry/components/toggle.tsx +256 -256
  238. package/registry/components/toolbar.tsx +539 -539
  239. package/registry/components/tooltip.tsx +433 -431
  240. package/registry/examples/agent-input-demo.tsx +90 -0
  241. package/registry/examples/alert-demo.tsx +34 -34
  242. package/registry/examples/alert-dialog-demo.tsx +42 -42
  243. package/registry/examples/approval-card-demo.tsx +83 -0
  244. package/registry/examples/aspect-ratio-demo.tsx +11 -11
  245. package/registry/examples/attribute-demo.tsx +65 -65
  246. package/registry/examples/autocomplete-demo.tsx +109 -109
  247. package/registry/examples/avatar-demo.tsx +132 -132
  248. package/registry/examples/badge-demo.tsx +69 -69
  249. package/registry/examples/button-demo.tsx +86 -83
  250. package/registry/examples/button-group-demo.tsx +63 -63
  251. package/registry/examples/card-demo.tsx +86 -86
  252. package/registry/examples/carousel-demo.tsx +43 -43
  253. package/registry/examples/chart-block-demo.tsx +5 -0
  254. package/registry/examples/chart-demo.tsx +18 -33
  255. package/registry/examples/checkbox-demo.tsx +62 -62
  256. package/registry/examples/collapsible-demo.tsx +16 -16
  257. package/registry/examples/collection-filter-bar-demo.tsx +135 -135
  258. package/registry/examples/command-demo.tsx +42 -42
  259. package/registry/examples/command-palette-demo.tsx +235 -236
  260. package/registry/examples/context-menu-demo.tsx +29 -29
  261. package/registry/examples/control-density-contract-demo.tsx +65 -61
  262. package/registry/examples/date-picker-demo.tsx +127 -127
  263. package/registry/examples/divider-demo.tsx +17 -17
  264. package/registry/examples/expanded/activity-heatmap-demo.tsx +29 -29
  265. package/registry/examples/expanded/banner-demo.tsx +48 -48
  266. package/registry/examples/expanded/breadcrumbs-demo.tsx +59 -59
  267. package/registry/examples/expanded/empty-state-demo.tsx +39 -39
  268. package/registry/examples/expanded/file-upload-demo.tsx +60 -60
  269. package/registry/examples/expanded/onboarding-step-demo.tsx +11 -11
  270. package/registry/examples/expanded/slideout-demo.tsx +15 -15
  271. package/registry/examples/expanded/steps-demo.tsx +29 -29
  272. package/registry/examples/expanded/tabs-demo.tsx +13 -13
  273. package/registry/examples/expanded/timeline-demo.tsx +18 -18
  274. package/registry/examples/field-demo.tsx +51 -51
  275. package/registry/examples/hover-card-demo.tsx +23 -23
  276. package/registry/examples/inline-citations-demo.tsx +31 -0
  277. package/registry/examples/input-actions-demo.tsx +36 -0
  278. package/registry/examples/input-demo.tsx +87 -87
  279. package/registry/examples/input-group-demo.tsx +16 -16
  280. package/registry/examples/input-otp-demo.tsx +72 -72
  281. package/registry/examples/item-demo.tsx +46 -46
  282. package/registry/examples/kbd-demo.tsx +12 -11
  283. package/registry/examples/label-demo.tsx +20 -20
  284. package/registry/examples/menu-demo.tsx +122 -122
  285. package/registry/examples/menubar-demo.tsx +34 -34
  286. package/registry/examples/modal-demo.tsx +74 -74
  287. package/registry/examples/native-select-demo.tsx +16 -16
  288. package/registry/examples/navigation-menu-demo.tsx +29 -29
  289. package/registry/examples/pagination-demo.tsx +20 -20
  290. package/registry/examples/popover-demo.tsx +547 -546
  291. package/registry/examples/progress-demo.tsx +37 -37
  292. package/registry/examples/progress-slider-demo.tsx +29 -29
  293. package/registry/examples/radio-card-demo.tsx +51 -51
  294. package/registry/examples/radio-group-demo.tsx +62 -62
  295. package/registry/examples/resizable-demo.tsx +22 -22
  296. package/registry/examples/results-toolbar-demo.tsx +44 -44
  297. package/registry/examples/rolling-count-demo.tsx +39 -0
  298. package/registry/examples/scroll-area-demo.tsx +15 -15
  299. package/registry/examples/segmented-control-demo.tsx +39 -39
  300. package/registry/examples/select-demo.tsx +87 -87
  301. package/registry/examples/sheet-demo.tsx +47 -47
  302. package/registry/examples/shimmer-text-demo.tsx +20 -0
  303. package/registry/examples/sidebar-demo.tsx +101 -57
  304. package/registry/examples/slider-demo.tsx +31 -31
  305. package/registry/examples/social-button-demo.tsx +61 -61
  306. package/registry/examples/spinner-demo.tsx +59 -59
  307. package/registry/examples/streaming-text-demo.tsx +28 -0
  308. package/registry/examples/tabs-demo.tsx +13 -13
  309. package/registry/examples/tag-demo.tsx +29 -29
  310. package/registry/examples/task-list-demo.tsx +74 -0
  311. package/registry/examples/textarea-demo.tsx +79 -79
  312. package/registry/examples/thinking-reasoning-demo.tsx +74 -0
  313. package/registry/examples/thinking-state-demo.tsx +13 -0
  314. package/registry/examples/toast-demo.tsx +35 -35
  315. package/registry/examples/toggle-demo.tsx +59 -59
  316. package/registry/examples/tooltip-demo.tsx +115 -115
  317. package/registry/guidance/USAGE.md +27 -27
  318. package/registry/guidance/charts.LICENSE.txt +24 -0
  319. package/registry/hooks/use-controllable-state.ts +33 -0
  320. package/registry/hooks/use-direction.ts +207 -207
  321. package/registry/hooks/use-listbox-navigation.ts +73 -0
  322. package/registry/hooks/use-motion-end.ts +55 -0
  323. package/registry/hooks/use-reduced-motion.ts +28 -0
  324. package/registry/index.json +1634 -184
  325. package/registry/styles/globals.css +1462 -1570
  326. package/registry.json +364 -10
  327. package/schema/config.schema.json +51 -51
  328. package/schema/registry.schema.json +194 -190
  329. package/schema/tokens.schema.json +167 -163
  330. package/src/cli/command-line.js +194 -194
  331. package/src/cli/config-editors.js +9 -9
  332. package/src/cli/doctor.js +399 -399
  333. package/src/cli/file-transaction.js +302 -295
  334. package/src/cli/global-css.js +153 -153
  335. package/src/cli/index.js +1002 -1009
  336. package/src/cli/install-plan.js +592 -592
  337. package/src/cli/install-receipt.js +171 -171
  338. package/src/cli/jsonc.js +203 -203
  339. package/src/cli/package-install-state.js +254 -254
  340. package/src/cli/package-manager.js +238 -238
  341. package/src/cli/package-plan.js +185 -185
  342. package/src/cli/package-version.js +97 -97
  343. package/src/cli/registry-query.js +207 -207
  344. package/src/cli/reporting.js +55 -55
  345. package/src/cli/schema-validation.js +19 -19
  346. package/src/cli/source-scanner.js +686 -686
  347. package/src/cli/vite-config.js +478 -478
  348. package/tokens/banhaten.tokens.json +458 -224
@@ -1,219 +1,219 @@
1
- # Component Showcase Consistency Report
2
-
3
- Date: 2026-06-16
4
-
5
- > **Status refresh — 2026-08-20:** This file preserves the June baseline and its recommendations. The rollout described below is now complete: all 68 registry entries have dedicated pages using the shared component-doc shell, Base and Alternatives coverage, normalized Markdown contracts, and either live Anatomy or an explicit no-single-root exemption. `catalog-components` now has a dedicated public page; there are zero pending pages and zero bundle aliases. See [Component Implementation Quality Audit — Final Status](./component-quality-audit-2026-08-20.md) for the current component-by-component verdict and verification results.
6
-
7
- ## Purpose
8
-
9
- This report audits how registry-backed Banhaten components are presented across the playground and docs. The immediate question was whether `Button` is the most complete example and whether the rest of the components should be made consistent with it.
10
-
11
- ## Short Answer
12
-
13
- `Button` is the strongest content baseline, but it is not ready to be copied as the implementation template.
14
-
15
- Use `Button` as the reference for what a complete component page should explain: install, usage, examples, composition, API, RTL, states, variants, sizes, and token/effect readouts. Use the shared `RegistryComponentDocs` renderer as the scalable page skeleton, then attach optional deep reference sections when the component needs visual matrices, state grids, size scales, or token readouts.
16
-
17
- ## Checks Run
18
-
19
- - `npm exec -- tsc -p tsconfig.json --noEmit` from `playground` passed.
20
- - `npm --prefix playground run test:docs` passed.
21
- - Component docs coverage audit passed for 41 registry-backed pages.
22
- - `catalog-components` is intentionally covered as a registry bundle alias.
23
- - `npm run registry:check` passed.
24
- - Registry mirrors and expanded ownership match across 149 files.
25
-
26
- ## Current Inventory
27
-
28
- - Registry items: 42 total.
29
- - Core items: 28.
30
- - Expanded items: 14.
31
- - Playground pages: 41 registry-backed pages plus 1 bundle-only registry item.
32
- - Pages using shared `RegistryComponentDocs`: 32.
33
- - Interactive inspector sections rendered on component pages: 0. The previous custom inspector panels and shared inspector helper were removed from the playground.
34
- - Bespoke pages with hand-authored docs navigation: 9.
35
- - Components with markdown docs in `docs/design-system/components` or known top-level docs: 27 of 42.
36
- - Components with registry RTL metadata: 27 of 42.
37
-
38
- ## Recommended Standard
39
-
40
- Every public component page should use this consistent pattern:
41
-
42
- 1. Page header with short component purpose.
43
- 2. Above-the-fold live preview:
44
- - Small title and concise subtitle.
45
- - The real component visible immediately without scrolling past long prose.
46
- - A vertical stack of example cards so wide components, such as tables, do not get squeezed into a two-column preview.
47
- - English/LTR example first, then Arabic/RTL directly below it for every component where direction, copy, icon placement, or layout can change.
48
- 3. Shared registry docs:
49
- - Preview
50
- - Installation
51
- - Usage
52
- - Examples
53
- - Composition
54
- - API Reference
55
- - RTL Behavior
56
- - Live Variants
57
- 4. Visual reference, state matrix, size scale, placement matrix, or token reference rendered from live components when deeper inspection is useful.
58
- 5. No interactive inspector section in the component page body.
59
- 6. Registry metadata that matches the real source, example, and playground spec.
60
- 7. Markdown docs linked from the component docs index when the component is public.
61
- 8. Tests that catch missing docs routes, registry mirror drift, and obvious source/metadata drift.
62
-
63
- ## Button Baseline Audit
64
-
65
- ### What Button Does Well
66
-
67
- `Button` is currently the most complete component page by depth. It has:
68
-
69
- - Installation, usage, example, composition, API, RTL, visual reference, size scale, state matrix, and shadow reference sections.
70
- - Rich examples for variants, sizes, icons, loading, `asChild`, and RTL.
71
- - Token readouts for fill, text, stroke, effects, geometry, and typography.
72
- - Registry demo coverage for variants, text sizes, icon sizes, icon placement, loading, and RTL.
73
-
74
- ### What Button Is Missing Or Inconsistent
75
-
76
- - Registry size metadata now matches the implementation and examples, including `xl` and `icon-xl`.
77
- - Source supports compatibility variants that are not part of the visible registry contract: `destructive`, `soft-destructive`, `success`, `warning`, and `link`. Decide whether these are public aliases, deprecated aliases, or should be removed.
78
- - Button now has a component markdown page and is listed in the component docs index.
79
- - The interactive inspector has been removed from the Button page, matching the new page direction.
80
- - The page is a high-quality bespoke file rather than a scalable shared template. Copying it component by component would increase drift.
81
- - Test coverage only smoke-renders a basic Button. It does not assert the variant/size contract, `asChild`, loading composition, icon sizing, or source/metadata parity.
82
-
83
- ### Verdict
84
-
85
- Button should be the content-quality model, not the code-shape model. Its opening preview, registry size metadata, and component markdown docs now match the proposed standard. The remaining work is the source-supported alias policy and a metadata parity check.
86
-
87
- ## Presentation Families
88
-
89
- | Family | Components | Current read |
90
- | --- | --- | --- |
91
- | Bespoke rich docs plus deep reference | Button, Attribute, Card, Toggle, Modal, Toolbar, Slider, Progress, Alert | Most complete editorially, but highest drift risk because docs are hand-authored per page. Inspector sections should stay removed. |
92
- | Shared registry docs plus live reference examples | Accordion, Avatar, Badge, Button Group, Checkbox, Date Picker, Divider, Input, Menu, Pagination, Progress Slider, Radio Card, Radio Group, Select, Social Button, Tag, Textarea | Best scalable direction. These already get consistent docs structure from the shared renderer and should add early examples where missing. |
93
- | Shared registry docs plus expanded custom page | Activity Feed, Banner, Breadcrumbs, Command Bar, File Upload, Onboarding Step, Page Header, Slideout, Steps, Table, Tabs, Timeline | Consistent shell, but registry metadata is under-specified for capabilities and RTL. Expanded/core contract needs a decision. |
94
- | Shared docs only or custom examples | Tooltip, Spinner, Icons | Acceptable for Spinner and maybe Icons. Tooltip should keep a placement/pointer matrix rather than an inspector. |
95
- | Bundle-only registry item | Catalog Components | No direct playground page. This is fine if it remains an internal bundle alias; otherwise it needs a public docs page or should be marked as non-public. |
96
-
97
- ## Component-by-Component Status
98
-
99
- | Component | Status | Current presentation | Recommendation |
100
- | --- | --- | --- | --- |
101
- | Accordion | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. |
102
- | Activity Feed | Expanded | Shared docs plus expanded custom page | Add registry capability and RTL metadata. Decide whether it is production or showcase. |
103
- | Alert | Core | Bespoke rich docs plus deep reference | Strong page. Migrate structure into shared standard or extract page data. |
104
- | Attribute | Core | Bespoke rich docs plus deep reference | Strong page. Migrate to shared standard; keep detailed slot/composition examples. |
105
- | Avatar | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. |
106
- | Badge | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. |
107
- | Banner | Expanded | Shared docs plus expanded custom page | Add capability and RTL metadata. Promotion candidate for feedback components. |
108
- | Breadcrumbs | Expanded | Shared docs plus expanded custom page | Add capability and RTL metadata. Promotion candidate with Page Header. |
109
- | Button | Core | Bespoke baseline | Treat as content baseline. Keep the new above-the-fold examples; resolve variant alias policy and parity tests. |
110
- | Button Group | Core | Shared docs plus live reference | Good scalable page. Already has markdown docs. |
111
- | Card | Core | Bespoke rich docs plus deep reference | Strong page. Migrate to shared standard; preserve image/layout coverage. |
112
- | Checkbox | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. |
113
- | Command Bar | Expanded | Shared docs plus expanded custom page | Add capability and RTL metadata. Clarify keyboard/search contract before promotion. |
114
- | Date Picker | Core | Shared docs plus live reference | Good scalable page. Keep as shared-docs example for complex form components. |
115
- | Divider | Core | Shared docs plus live reference | Good. Simple component can keep a lighter visual reference. |
116
- | File Upload | Expanded | Shared docs plus expanded custom page | Add accessibility/error/queue contract before core promotion. |
117
- | Icons | Expanded/foundation | Shared docs/explorer only | Treat as foundation tooling, not a normal component. Keep top-level docs or move into components index intentionally. |
118
- | Input | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. |
119
- | Menu | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. Confirm trigger/anchoring expectations. |
120
- | Modal | Core | Bespoke rich docs plus deep reference | Strong page. Migrate to shared standard; preserve ConfirmModal guardrail docs. |
121
- | Onboarding Step | Expanded | Shared docs plus expanded custom page | Add capability and RTL metadata. Rename docs/page consistently around `onboarding-step` vs `onboarding-step-list-item`. |
122
- | Page Header | Expanded | Shared docs plus expanded custom page | Add capability and RTL metadata. Likely app composition pattern, not primitive. |
123
- | Pagination | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. |
124
- | Progress | Core | Bespoke rich docs plus deep reference | Strong page. Migrate to shared standard; preserve label/RTL fill coverage. |
125
- | Progress Slider | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. |
126
- | Radio Card | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. Clarify explicit RTL behavior in docs. |
127
- | Radio Group | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. |
128
- | Select | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. Good candidate for metadata parity tests because it has many item types. |
129
- | Slideout | Expanded | Shared docs plus expanded custom page | Add focus/portal/mobile contract before core promotion. |
130
- | Slider | Core | Bespoke rich docs plus deep reference | Strong page. Migrate to shared standard; preserve value mode and indicator examples. |
131
- | Social Button | Core | Shared docs plus live reference | Keep template. Add markdown docs if public and document provider-color exceptions. |
132
- | Spinner | Core | Shared docs only | Probably acceptable as a simple primitive. Add markdown docs or explicitly mark as helper primitive. |
133
- | Steps | Expanded | Shared docs plus expanded custom page | Add capability and RTL metadata. Promotion candidate. |
134
- | Table | Expanded | Shared docs plus expanded custom page | Add capability and RTL metadata. Clarify Table vs DataTable public contract. |
135
- | Tabs | Expanded | Shared docs plus expanded custom page | Move or link top-level `docs/design-system/tabs.md` from the component index. Promotion candidate. |
136
- | Tag | Core | Shared docs plus live reference | Good scalable page. Already has markdown docs. |
137
- | Textarea | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. |
138
- | Timeline | Expanded | Shared docs plus expanded custom page | Add capability and RTL metadata. Clarify event/progress variants before promotion. |
139
- | Toggle | Core | Bespoke rich docs plus deep reference | Strong page. Migrate to shared standard; preserve labeled field composition. |
140
- | Toolbar | Core | Bespoke rich docs plus deep reference | Strong page. Migrate to shared standard; preserve responsive/filter examples. |
141
- | Tooltip | Core | Shared docs plus custom pointer examples | Keep the placement matrix as the equivalent deep reference. Already has markdown docs. |
142
- | Catalog Components | Expanded bundle | No playground page | Mark private/bundle-only, keep alias coverage, or create a real public docs page. |
143
-
144
- ## Cross-Cutting Gaps
145
-
146
- ### P0: Fix Contract Drift
147
-
148
- - Decide the public/deprecated status of Button compatibility variants: `destructive`, `soft-destructive`, `success`, `warning`, and `link`.
149
- - Add a parity check that compares registry metadata values against obvious exported spec/example usage for variants and sizes.
150
-
151
- ### P0: Pick One Page Standard
152
-
153
- Adopt this as the canonical implementation pattern:
154
-
155
- - Above-the-fold hero preview that shows the component immediately after the title/subtitle.
156
- - Early stacked examples: English/LTR first, Arabic/RTL directly below when the component can reasonably render Arabic copy or direction-aware layout.
157
- - Shared `RegistryComponentDocs` for the common docs surface.
158
- - Optional "Deep Reference" section for state matrices, size scales, pointer matrices, token readouts, and layout grids.
159
-
160
- This keeps the consistency of the shared renderer while preserving the richness of Button/Slider/Modal-style pages.
161
-
162
- ### P1: Normalize Markdown Docs
163
-
164
- The component docs index currently covers only part of the registry surface. Public components missing component markdown docs are:
165
-
166
- - Accordion
167
- - Avatar
168
- - Badge
169
- - Checkbox
170
- - Input
171
- - Menu
172
- - Pagination
173
- - Progress Slider
174
- - Radio Card
175
- - Radio Group
176
- - Select
177
- - Social Button
178
- - Spinner
179
- - Textarea
180
- - Catalog Components, if public
181
-
182
- Tabs and Icons have top-level docs, but not under `docs/design-system/components`. Either link them explicitly from the component index or move them under the components directory.
183
-
184
- ### P1: Fill Expanded Metadata
185
-
186
- Expanded components often show RTL and multiple states in demos, but their registry metadata does not expose RTL or capability keys. Add metadata for:
187
-
188
- - Activity Feed
189
- - Banner
190
- - Breadcrumbs
191
- - Command Bar
192
- - File Upload
193
- - Onboarding Step
194
- - Page Header
195
- - Slideout
196
- - Steps
197
- - Table
198
- - Tabs
199
- - Timeline
200
-
201
- This makes the shared API/RTL sections truthful instead of generic.
202
-
203
- ### P1: Define Simple-Component Exceptions
204
-
205
- Spinner probably does not need a deep reference section. Icons is closer to foundation tooling than a reusable component primitive. These exceptions should be explicit so they do not look accidentally incomplete.
206
-
207
- ### P2: Migrate Bespoke Pages Gradually
208
-
209
- Do not rewrite the best pages all at once. Start with one or two:
210
-
211
- 1. Button: fix metadata and use it to define the standard.
212
- 2. Alert or Progress: migrate a smaller bespoke rich page to validate the shared-plus-reference pattern.
213
- 3. Modal or Slider: migrate a complex page once the pattern feels stable.
214
-
215
- ## Suggested Decision
216
-
217
- Make Button the quality bar, but make `above-the-fold examples + RegistryComponentDocs + optional Deep Reference` the page architecture. Then measure every component against that architecture.
218
-
219
- That gives us a consistent system without losing the parts that make the Button page valuable.
1
+ # Component Showcase Consistency Report
2
+
3
+ Date: 2026-06-16
4
+
5
+ > **Status refresh — 2026-08-20:** This file preserves the June baseline and its recommendations. The rollout described below is now complete: all 68 registry entries have dedicated pages using the shared component-doc shell, Base and Alternatives coverage, normalized Markdown contracts, and either live Anatomy or an explicit no-single-root exemption. `catalog-components` now has a dedicated public page; there are zero pending pages and zero bundle aliases. See [Component Implementation Quality Audit — Final Status](./component-quality-audit-2026-08-20.md) for the current component-by-component verdict and verification results.
6
+
7
+ ## Purpose
8
+
9
+ This report audits how registry-backed Banhaten components are presented across the playground and docs. The immediate question was whether `Button` is the most complete example and whether the rest of the components should be made consistent with it.
10
+
11
+ ## Short Answer
12
+
13
+ `Button` is the strongest content baseline, but it is not ready to be copied as the implementation template.
14
+
15
+ Use `Button` as the reference for what a complete component page should explain: install, usage, examples, composition, API, RTL, states, variants, sizes, and token/effect readouts. Use the shared `RegistryComponentDocs` renderer as the scalable page skeleton, then attach optional deep reference sections when the component needs visual matrices, state grids, size scales, or token readouts.
16
+
17
+ ## Checks Run
18
+
19
+ - `npm exec -- tsc -p tsconfig.json --noEmit` from `playground` passed.
20
+ - `npm --prefix playground run test:docs` passed.
21
+ - Component docs coverage audit passed for 41 registry-backed pages.
22
+ - `catalog-components` is intentionally covered as a registry bundle alias.
23
+ - `npm run registry:check` passed.
24
+ - Registry mirrors and expanded ownership match across 149 files.
25
+
26
+ ## Current Inventory
27
+
28
+ - Registry items: 42 total.
29
+ - Core items: 28.
30
+ - Expanded items: 14.
31
+ - Playground pages: 41 registry-backed pages plus 1 bundle-only registry item.
32
+ - Pages using shared `RegistryComponentDocs`: 32.
33
+ - Interactive inspector sections rendered on component pages: 0. The previous custom inspector panels and shared inspector helper were removed from the playground.
34
+ - Bespoke pages with hand-authored docs navigation: 9.
35
+ - Components with markdown docs in `docs/design-system/components` or known top-level docs: 27 of 42.
36
+ - Components with registry RTL metadata: 27 of 42.
37
+
38
+ ## Recommended Standard
39
+
40
+ Every public component page should use this consistent pattern:
41
+
42
+ 1. Page header with short component purpose.
43
+ 2. Above-the-fold live preview:
44
+ - Small title and concise subtitle.
45
+ - The real component visible immediately without scrolling past long prose.
46
+ - A vertical stack of example cards so wide components, such as tables, do not get squeezed into a two-column preview.
47
+ - English/LTR example first, then Arabic/RTL directly below it for every component where direction, copy, icon placement, or layout can change.
48
+ 3. Shared registry docs:
49
+ - Preview
50
+ - Installation
51
+ - Usage
52
+ - Examples
53
+ - Composition
54
+ - API Reference
55
+ - RTL Behavior
56
+ - Live Variants
57
+ 4. Visual reference, state matrix, size scale, placement matrix, or token reference rendered from live components when deeper inspection is useful.
58
+ 5. No interactive inspector section in the component page body.
59
+ 6. Registry metadata that matches the real source, example, and playground spec.
60
+ 7. Markdown docs linked from the component docs index when the component is public.
61
+ 8. Tests that catch missing docs routes, registry mirror drift, and obvious source/metadata drift.
62
+
63
+ ## Button Baseline Audit
64
+
65
+ ### What Button Does Well
66
+
67
+ `Button` is currently the most complete component page by depth. It has:
68
+
69
+ - Installation, usage, example, composition, API, RTL, visual reference, size scale, state matrix, and shadow reference sections.
70
+ - Rich examples for variants, sizes, icons, loading, `asChild`, and RTL.
71
+ - Token readouts for fill, text, stroke, effects, geometry, and typography.
72
+ - Registry demo coverage for variants, text sizes, icon sizes, icon placement, loading, and RTL.
73
+
74
+ ### What Button Is Missing Or Inconsistent
75
+
76
+ - Registry size metadata now matches the implementation and examples, including `xl` and `icon-xl`.
77
+ - The visible contract now publishes `success`, `warning`, and `link` as canonical variants. `destructive` and `soft-destructive` remain documented compatibility aliases for `danger` and `soft-danger`.
78
+ - Button now has a component markdown page and is listed in the component docs index.
79
+ - The interactive inspector has been removed from the Button page, matching the new page direction.
80
+ - The page is a high-quality bespoke file rather than a scalable shared template. Copying it component by component would increase drift.
81
+ - Focused parity coverage now locks Button's runtime variant union, canonical catalog/index/spec values, manual API and example lists, distinct recipes, and exact compatibility aliases. Broader behavior such as `asChild`, loading composition, and icon sizing remains covered by shared component and browser checks rather than this focused contract test.
82
+
83
+ ### Verdict
84
+
85
+ Button should be the content-quality model, not the code-shape model. Its opening preview, registry metadata, canonical variant policy, component markdown docs, and source parity check now match the proposed standard.
86
+
87
+ ## Presentation Families
88
+
89
+ | Family | Components | Current read |
90
+ | --- | --- | --- |
91
+ | Bespoke rich docs plus deep reference | Button, Attribute, Card, Toggle, Modal, Toolbar, Slider, Progress, Alert | Most complete editorially, but highest drift risk because docs are hand-authored per page. Inspector sections should stay removed. |
92
+ | Shared registry docs plus live reference examples | Accordion, Avatar, Badge, Button Group, Checkbox, Date Picker, Divider, Input, Menu, Pagination, Progress Slider, Radio Card, Radio Group, Select, Social Button, Tag, Textarea | Best scalable direction. These already get consistent docs structure from the shared renderer and should add early examples where missing. |
93
+ | Shared registry docs plus expanded custom page | Activity Feed, Banner, Breadcrumbs, Command Bar, File Upload, Onboarding Step, Page Header, Slideout, Steps, Table, Tabs, Timeline | Consistent shell, but registry metadata is under-specified for capabilities and RTL. Expanded/core contract needs a decision. |
94
+ | Shared docs only or custom examples | Tooltip, Spinner, Icons | Acceptable for Spinner and maybe Icons. Tooltip should keep a placement/pointer matrix rather than an inspector. |
95
+ | Bundle-only registry item | Catalog Components | No direct playground page. This is fine if it remains an internal bundle alias; otherwise it needs a public docs page or should be marked as non-public. |
96
+
97
+ ## Component-by-Component Status
98
+
99
+ | Component | Status | Current presentation | Recommendation |
100
+ | --- | --- | --- | --- |
101
+ | Accordion | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. |
102
+ | Activity Feed | Expanded | Shared docs plus expanded custom page | Add registry capability and RTL metadata. Decide whether it is production or showcase. |
103
+ | Alert | Core | Bespoke rich docs plus deep reference | Strong page. Migrate structure into shared standard or extract page data. |
104
+ | Attribute | Core | Bespoke rich docs plus deep reference | Strong page. Migrate to shared standard; keep detailed slot/composition examples. |
105
+ | Avatar | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. |
106
+ | Badge | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. |
107
+ | Banner | Expanded | Shared docs plus expanded custom page | Add capability and RTL metadata. Promotion candidate for feedback components. |
108
+ | Breadcrumbs | Expanded | Shared docs plus expanded custom page | Add capability and RTL metadata. Promotion candidate with Page Header. |
109
+ | Button | Core | Bespoke baseline | Treat as content baseline. Keep the new above-the-fold examples; resolve variant alias policy and parity tests. |
110
+ | Button Group | Core | Shared docs plus live reference | Good scalable page. Already has markdown docs. |
111
+ | Card | Core | Bespoke rich docs plus deep reference | Strong page. Migrate to shared standard; preserve image/layout coverage. |
112
+ | Checkbox | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. |
113
+ | Command Bar | Expanded | Shared docs plus expanded custom page | Add capability and RTL metadata. Clarify keyboard/search contract before promotion. |
114
+ | Date Picker | Core | Shared docs plus live reference | Good scalable page. Keep as shared-docs example for complex form components. |
115
+ | Divider | Core | Shared docs plus live reference | Good. Simple component can keep a lighter visual reference. |
116
+ | File Upload | Expanded | Shared docs plus expanded custom page | Add accessibility/error/queue contract before core promotion. |
117
+ | Icons | Expanded/foundation | Shared docs/explorer only | Treat as foundation tooling, not a normal component. Keep top-level docs or move into components index intentionally. |
118
+ | Input | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. |
119
+ | Menu | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. Confirm trigger/anchoring expectations. |
120
+ | Modal | Core | Bespoke rich docs plus deep reference | Strong page. Migrate to shared standard; preserve ConfirmModal guardrail docs. |
121
+ | Onboarding Step | Expanded | Shared docs plus expanded custom page | Add capability and RTL metadata. Rename docs/page consistently around `onboarding-step` vs `onboarding-step-list-item`. |
122
+ | Page Header | Expanded | Shared docs plus expanded custom page | Add capability and RTL metadata. Likely app composition pattern, not primitive. |
123
+ | Pagination | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. |
124
+ | Progress | Core | Bespoke rich docs plus deep reference | Strong page. Migrate to shared standard; preserve label/RTL fill coverage. |
125
+ | Progress Slider | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. |
126
+ | Radio Card | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. Clarify explicit RTL behavior in docs. |
127
+ | Radio Group | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. |
128
+ | Select | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. Good candidate for metadata parity tests because it has many item types. |
129
+ | Slideout | Expanded | Shared docs plus expanded custom page | Add focus/portal/mobile contract before core promotion. |
130
+ | Slider | Core | Bespoke rich docs plus deep reference | Strong page. Migrate to shared standard; preserve value mode and indicator examples. |
131
+ | Social Button | Core | Shared docs plus live reference | Keep template. Add markdown docs if public and document provider-color exceptions. |
132
+ | Spinner | Core | Shared docs only | Probably acceptable as a simple primitive. Add markdown docs or explicitly mark as helper primitive. |
133
+ | Steps | Expanded | Shared docs plus expanded custom page | Add capability and RTL metadata. Promotion candidate. |
134
+ | Table | Expanded | Shared docs plus expanded custom page | Add capability and RTL metadata. Clarify Table vs DataTable public contract. |
135
+ | Tabs | Expanded | Shared docs plus expanded custom page | Move or link top-level `docs/design-system/tabs.md` from the component index. Promotion candidate. |
136
+ | Tag | Core | Shared docs plus live reference | Good scalable page. Already has markdown docs. |
137
+ | Textarea | Core | Shared docs plus live reference | Keep template. Add markdown docs if public. |
138
+ | Timeline | Expanded | Shared docs plus expanded custom page | Add capability and RTL metadata. Clarify event/progress variants before promotion. |
139
+ | Toggle | Core | Bespoke rich docs plus deep reference | Strong page. Migrate to shared standard; preserve labeled field composition. |
140
+ | Toolbar | Core | Bespoke rich docs plus deep reference | Strong page. Migrate to shared standard; preserve responsive/filter examples. |
141
+ | Tooltip | Core | Shared docs plus custom pointer examples | Keep the placement matrix as the equivalent deep reference. Already has markdown docs. |
142
+ | Catalog Components | Expanded bundle | No playground page | Mark private/bundle-only, keep alias coverage, or create a real public docs page. |
143
+
144
+ ## Cross-Cutting Gaps
145
+
146
+ ### P0: Fix Contract Drift
147
+
148
+ - Button's variant policy is resolved: `success`, `warning`, and `link` are canonical; `destructive` and `soft-destructive` are deprecated aliases for `danger` and `soft-danger`.
149
+ - Button now has a focused parity check across its runtime types, registry metadata, generated index, playground spec, Markdown API, and examples. Apply that pattern to other components when drift is found.
150
+
151
+ ### P0: Pick One Page Standard
152
+
153
+ Adopt this as the canonical implementation pattern:
154
+
155
+ - Above-the-fold hero preview that shows the component immediately after the title/subtitle.
156
+ - Early stacked examples: English/LTR first, Arabic/RTL directly below when the component can reasonably render Arabic copy or direction-aware layout.
157
+ - Shared `RegistryComponentDocs` for the common docs surface.
158
+ - Optional "Deep Reference" section for state matrices, size scales, pointer matrices, token readouts, and layout grids.
159
+
160
+ This keeps the consistency of the shared renderer while preserving the richness of Button/Slider/Modal-style pages.
161
+
162
+ ### P1: Normalize Markdown Docs
163
+
164
+ The component docs index currently covers only part of the registry surface. Public components missing component markdown docs are:
165
+
166
+ - Accordion
167
+ - Avatar
168
+ - Badge
169
+ - Checkbox
170
+ - Input
171
+ - Menu
172
+ - Pagination
173
+ - Progress Slider
174
+ - Radio Card
175
+ - Radio Group
176
+ - Select
177
+ - Social Button
178
+ - Spinner
179
+ - Textarea
180
+ - Catalog Components, if public
181
+
182
+ Tabs and Icons have top-level docs, but not under `docs/design-system/components`. Either link them explicitly from the component index or move them under the components directory.
183
+
184
+ ### P1: Fill Expanded Metadata
185
+
186
+ Expanded components often show RTL and multiple states in demos, but their registry metadata does not expose RTL or capability keys. Add metadata for:
187
+
188
+ - Activity Feed
189
+ - Banner
190
+ - Breadcrumbs
191
+ - Command Bar
192
+ - File Upload
193
+ - Onboarding Step
194
+ - Page Header
195
+ - Slideout
196
+ - Steps
197
+ - Table
198
+ - Tabs
199
+ - Timeline
200
+
201
+ This makes the shared API/RTL sections truthful instead of generic.
202
+
203
+ ### P1: Define Simple-Component Exceptions
204
+
205
+ Spinner probably does not need a deep reference section. Icons is closer to foundation tooling than a reusable component primitive. These exceptions should be explicit so they do not look accidentally incomplete.
206
+
207
+ ### P2: Migrate Bespoke Pages Gradually
208
+
209
+ Do not rewrite the best pages all at once. Start with one or two:
210
+
211
+ 1. Button: fix metadata and use it to define the standard.
212
+ 2. Alert or Progress: migrate a smaller bespoke rich page to validate the shared-plus-reference pattern.
213
+ 3. Modal or Slider: migrate a complex page once the pattern feels stable.
214
+
215
+ ## Suggested Decision
216
+
217
+ Make Button the quality bar, but make `above-the-fold examples + RegistryComponentDocs + optional Deep Reference` the page architecture. Then measure every component against that architecture.
218
+
219
+ That gives us a consistent system without losing the parts that make the Button page valuable.