Storybook
Use the Renderer manager control to run the same stable story id with the zero-config Cratis built-in renderer, Material UI, PrimeReact 11, or PrimeReact 10. Changing renderer replaces the composed preview iframe. The manager preserves the current story id when the target preview contains it, but component-local state, unsaved control changes, open overlays, and in-progress interactions are reset by that remount.
Use the Appearance toolbar to compare the maintained baseline in light and dark modes with a representative product-owned token mapping. Every renderer preview owns its provider and theme boundary while preserving strict profile validation and Core fallback for slots outside the selected adapter’s profile. Stories load the same prefixed, layered, no-Preflight Cratis CSS contract as the published package.
PrimeReact 10 and 11 are built as separate preview projects because their incompatible primereact peer majors must never enter one dependency graph. Each preview verifies the exact upstream version resolved from the checked-in adapter matrix. The PrimeReact 11 preview is a bounded test fixture: it uses PrimeReact’s public contexts and the adapter’s non-secret boolean setup attestation without mounting the real license manager. Components and this Storybook do not receive, read, store, log, serialize, bundle, or proxy a license key.
Every story module also generates an autodocs page from the public component types and TSDoc. CI validates the metadata-discovered adapter inventory, type-checks the configuration, asserts peer-major isolation, builds and compares every preview index, then runs every discovered stable story in Playwright Chromium under baseline light and dark modes for the built-in renderer and every metadata-discovered public adapter. The current V4 inventory is four previews × 277 stories × two appearances: 2,216 story/appearance/axe cases, with zero story or renderer exclusions. Generated preview indexes identify the exact stories; #217 tracks replacing release-snapshot count constants with generated reviewable inventories. Private adapters such as Plain are excluded from composition. Each play() interaction runs, and Accessibility-addon axe violations are errors. This is a browser component-test gate, not a claim of universal browser or assistive-technology conformance; keyboard, focus, busy, empty, invalid, disabled, open-overlay, and responsive states still require deliberate story coverage and release review.