Summary
Component docs (apps/www) have the right shape — props table, live demo playground, accessibility notes — but three gaps showed up in a practices audit.
Issues found
-
Props tables are hand-duplicated and can drift. Each component has a shadow props.ts file (e.g. apps/www/src/content/docs/components/button/props.ts) read by fumadocs-typescript's remarkAutoTypeTable (apps/www/source.config.ts:16-33,62) instead of being generated from the real component types. Comparing button/props.ts against the actual button.tsx:127-134 union already shows props omitted from the doc.
-
Accessibility sections are inconsistent. Present on Button, Dialog, Checkbox, Tabs, Select, Sidebar. Missing entirely on Combobox, Menu, ContextMenu, and DataView — notably the most complex component in the library has no accessibility documentation.
-
No per-component changelog. Only one repo-wide packages/raystack/CHANGELOG.md (changesets-generated), and it isn't linked or surfaced anywhere on the apps/www docs site. Consumers browsing a component's docs page have no way to see what changed for that component.
Suggested approach
- Generate props tables directly from the real component source, or add a CI check that diffs the shadow
props.ts files against the actual exported prop types so drift fails a build instead of shipping silently.
- Backfill Accessibility sections for combobox, menu, context-menu, and dataview.
- Surface per-component changelog entries on each docs page (even a filtered view of the existing changesets changelog would close most of the gap).
Notes
Found via a components.build practices audit (docs dimension).
Summary
Component docs (apps/www) have the right shape — props table, live demo playground, accessibility notes — but three gaps showed up in a practices audit.
Issues found
Props tables are hand-duplicated and can drift. Each component has a shadow
props.tsfile (e.g.apps/www/src/content/docs/components/button/props.ts) read by fumadocs-typescript'sremarkAutoTypeTable(apps/www/source.config.ts:16-33,62) instead of being generated from the real component types. Comparingbutton/props.tsagainst the actualbutton.tsx:127-134union already shows props omitted from the doc.Accessibility sections are inconsistent. Present on Button, Dialog, Checkbox, Tabs, Select, Sidebar. Missing entirely on Combobox, Menu, ContextMenu, and DataView — notably the most complex component in the library has no accessibility documentation.
No per-component changelog. Only one repo-wide
packages/raystack/CHANGELOG.md(changesets-generated), and it isn't linked or surfaced anywhere on the apps/www docs site. Consumers browsing a component's docs page have no way to see what changed for that component.Suggested approach
props.tsfiles against the actual exported prop types so drift fails a build instead of shipping silently.Notes
Found via a components.build practices audit (docs dimension).