Ships the component-preview coverage campaign for issue #64: preview stories now span every eligible library and component — 580 stories across 14 libraries (from 42), with 2,320 static preview pages and 580 rendered screenshots.
Coverage
| Library | Coverage | Notes |
|---|---|---|
| radix-ui | 30/30 | rendered from the radix-ui package |
| shadcn-ui | 65/65 | vendored registry recipes; Toast, Typeset, and Questionnaire implemented in-module where the registry has no recipe |
| base-ui | 37/37 | |
| react-aria | 54/54 | |
| ark-ui | 52/52 | |
| mantine | 178/178 | core plus charts, dates, schedule, notifications, and the extension stack |
| mui | 114/128 | the other 14 are MUI X Pro/Premium under commercial licenses — explicit gaps, never faked |
| headless-ui | 16/16 | |
| intent-ui | 6/6 | open-source library components only |
| reui | 6/6 | free MIT components on the real dnd-kit / headless-tree engines |
| elevenlabs-ui | 6/6 | deterministic still frames where the real parts are rAF/WebGL animations |
| starwind-ui | 6/6 | |
| webcoreui | 4/4 | |
| web-awesome | 6/6 | MIT Core web components in React |
react-bits (MIT + Commons Clause) and Aceternity UI (proprietary Aceternity License) forbid source redistribution, so their components stay preview-unavailable with documentation links. Every shipped story sits behind a recorded granted reuse permission naming the library's actual license page.
Gates
scripts/check-story.mjsvalidates each story batch: permission record, documented component names, scenes, render-key ↔ story parity, and installed dependencies.- A catalogue-wide coverage test requires every documented component to have either a story or a named, justified gap.
npm testgreen end to end: build (2,320 static preview pages) → 580 screenshots → themed-render and MCP Apps widget verifications → 143/143 tests.
Integration notes
- Story runs land as per-library modules merged in
data/preview-storiesandcomponents/preview-stories; large libraries arrive in batches under one slug. - Library stylesheets (Mantine stack, webcoreui Sass, Web Awesome) load with the preview routes only. webcoreui's one upstream type bug is kept out of the compile by a narrow local barrel (
lib/webcoreui-react.ts). - MUI X community packages plus
@mui/x-chatback the mui stories; Pro/Premium imports are gated by license. - The screenshot renderer waits on the themed canvas and fonts rather than network quiet (third-party assets can stall
networkidleforever), and falls back to a viewport capture with a loud log if one full-page capture misbehaves. - Merged
origin/mainin; the tool layer keeps main's per-component verification/install/dependency anatomy and adds thepreviewpayload and image blocks on top. - The
/mcpanswer anatomy and the docs agents guide document thepreviewpayload (themed URL, screenshot, rendered source, explicit gaps). - The screenshot renderer waits on rendered state (themed canvas + fonts) instead of network quiet, so third-party assets can never stall a capture.