Folder convention
Reference: where a widget's component, schema, story, fixtures and parity spec live.
packages/ui/src/<component>/
<component>.tsx the widget (Tailwind only, data-slot on parts the parity spec compares)
<component>.schema.ts Zod schema for the block's data
<component>.stories.tsx Storybook story using the fixtures
<component>.test.tsx behaviour tests
fixtures/<fixture>.json Block JSON captured from live ({ id, type, data, display })
tools/parity/widgets/<widget-id>/
widget.ts parity spec: live sources, parts, behaviours, masks
extract.ts live DOM or captured JSON -> fixture
widget.parity.ts parity(spec)
live.har.zip recorded live traffic (HTML, CSS, JS, images, API) for offline replay
live.json recording time (the frozen clock)
stubs/*.json optional API responses that override the HAR<widget-id> is the tracker id (one per live widget variant, e.g. article-list-sidebar-must-watch); <component> is the React component it renders through (e.g. article-list). Several widget ids can share a component.