Storybook had lapsed relative to the app: preview only wrapped MessagesProvider, so Top and every create-flow page story threw; @storybook/addon-docs was missing so autodocs tags did nothing; fonts/viewports didn’t match the DS; and several components and wizard screens had no stories.
This PR brings preview, config, coverage, and story hygiene in line with the current app in one change.
Changes
Preview / config
.storybook/preview.js now wraps MessagesProvider → AuthModalProvider → CreateFlowProvider (same stack as tests/utils/test-utils.tsx)
Dark canvas default; Figma/Tailwind viewports sm 430 / md 640 / lg 1024 / xl 1440
Fonts: Inter + Bricolage Grotesque + Space Grotesk CSS variables (matching app/layout.tsx)
Add @storybook/addon-docs and @storybook/addon-a11y; drop no-op webpackFinal
Remove dead storybook:github / storybook:build:github scripts and orphan .storybook/vitest.setup.js
Coverage
New stories: InputLabel, ListItem, Accordion
New create-flow page stories: Conflict management, Membership methods, Community structure, Core values, Published stakeholders
Move RailLockupAndInfoBox to stories/create-flow/
Delete duplicate HeroBannerSystem stories
Hygiene
Unify page titles under Pages/Create Flow/…
Drop duplicate MessagesProvider wrappers (Share, AddCustomField)
CSF3 conversion for remaining Template.bind() files
Wire argTypes from lib/propNormalization.ts*_OPTIONS where those consts exist
Token classes instead of story-local Inter/hex fallbacks (Vertical, InlineTextButton, Login)
Update .cursor/rules/storybook.mdc to match the above
How to Test
npm run storybook
Open Components/Navigation/Top (or Header) — should mount without useAuthModal errors
Open Pages/Create Flow/Conflict management (and Community structure / Core values) — should mount without useCreateFlow errors
Open Components/Buttons/Button → Docs tab — autodocs should render
Viewport toolbar: sm 430 / md 640 / lg 1024 / xl 1440
Canvas default should be dark; Inter / Bricolage / Space Grotesk should load
npm run storybook:build (already run locally — succeeded)
Notes
npx tsc --noEmit passed. npm run knip still reports pre-existing unused seedDataRoot in prisma/seed/seedDataPaths.ts (unrelated).
AskOrganizer stories keep a hardcoded variant list so use-case-detail is not dropped (ASK_ORGANIZER_VARIANT_OPTIONS omits it).
Published-stakeholders story stubs /stakeholders fetch to an empty list; add/resend is not fully exercised.
Not in this PR: remaining hardcoded argTypes on older stories, Storybook CI, or converting every story to TypeScript.
## Overview
Storybook had lapsed relative to the app: preview only wrapped `MessagesProvider`, so `Top` and every create-flow page story threw; `@storybook/addon-docs` was missing so `autodocs` tags did nothing; fonts/viewports didn’t match the DS; and several components and wizard screens had no stories.
This PR brings preview, config, coverage, and story hygiene in line with the current app in one change.
## Changes
**Preview / config**
- `.storybook/preview.js` now wraps `MessagesProvider` → `AuthModalProvider` → `CreateFlowProvider` (same stack as `tests/utils/test-utils.tsx`)
- Dark canvas default; Figma/Tailwind viewports `sm` 430 / `md` 640 / `lg` 1024 / `xl` 1440
- Fonts: Inter + Bricolage Grotesque + Space Grotesk CSS variables (matching `app/layout.tsx`)
- Add `@storybook/addon-docs` and `@storybook/addon-a11y`; drop no-op `webpackFinal`
- Remove dead `storybook:github` / `storybook:build:github` scripts and orphan `.storybook/vitest.setup.js`
**Coverage**
- New stories: `InputLabel`, `ListItem`, `Accordion`
- New create-flow page stories: Conflict management, Membership methods, Community structure, Core values, Published stakeholders
- Move `RailLockupAndInfoBox` to `stories/create-flow/`
- Delete duplicate `HeroBannerSystem` stories
**Hygiene**
- Unify page titles under `Pages/Create Flow/…`
- Drop duplicate `MessagesProvider` wrappers (Share, AddCustomField)
- CSF3 conversion for remaining `Template.bind()` files
- Wire `argTypes` from `lib/propNormalization.ts` `*_OPTIONS` where those consts exist
- Token classes instead of story-local Inter/hex fallbacks (Vertical, InlineTextButton, Login)
- Update `.cursor/rules/storybook.mdc` to match the above
## How to Test
1. `npm run storybook`
2. Open **Components/Navigation/Top** (or Header) — should mount without `useAuthModal` errors
3. Open **Pages/Create Flow/Conflict management** (and Community structure / Core values) — should mount without `useCreateFlow` errors
4. Open **Components/Buttons/Button** → **Docs** tab — autodocs should render
5. Viewport toolbar: `sm` 430 / `md` 640 / `lg` 1024 / `xl` 1440
6. Canvas default should be dark; Inter / Bricolage / Space Grotesk should load
7. `npm run storybook:build` (already run locally — succeeded)
## Notes
- `npx tsc --noEmit` passed. `npm run knip` still reports pre-existing unused `seedDataRoot` in `prisma/seed/seedDataPaths.ts` (unrelated).
- `AskOrganizer` stories keep a hardcoded variant list so `use-case-detail` is not dropped (`ASK_ORGANIZER_VARIANT_OPTIONS` omits it).
- Published-stakeholders story stubs `/stakeholders` fetch to an empty list; add/resend is not fully exercised.
- Not in this PR: remaining hardcoded `argTypes` on older stories, Storybook CI, or converting every story to TypeScript.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Overview
Storybook had lapsed relative to the app: preview only wrapped
MessagesProvider, soTopand every create-flow page story threw;@storybook/addon-docswas missing soautodocstags did nothing; fonts/viewports didn’t match the DS; and several components and wizard screens had no stories.This PR brings preview, config, coverage, and story hygiene in line with the current app in one change.
Changes
Preview / config
.storybook/preview.jsnow wrapsMessagesProvider→AuthModalProvider→CreateFlowProvider(same stack astests/utils/test-utils.tsx)sm430 /md640 /lg1024 /xl1440app/layout.tsx)@storybook/addon-docsand@storybook/addon-a11y; drop no-opwebpackFinalstorybook:github/storybook:build:githubscripts and orphan.storybook/vitest.setup.jsCoverage
InputLabel,ListItem,AccordionRailLockupAndInfoBoxtostories/create-flow/HeroBannerSystemstoriesHygiene
Pages/Create Flow/…MessagesProviderwrappers (Share, AddCustomField)Template.bind()filesargTypesfromlib/propNormalization.ts*_OPTIONSwhere those consts exist.cursor/rules/storybook.mdcto match the aboveHow to Test
npm run storybookuseAuthModalerrorsuseCreateFlowerrorssm430 /md640 /lg1024 /xl1440npm run storybook:build(already run locally — succeeded)Notes
npx tsc --noEmitpassed.npm run knipstill reports pre-existing unusedseedDataRootinprisma/seed/seedDataPaths.ts(unrelated).AskOrganizerstories keep a hardcoded variant list souse-case-detailis not dropped (ASK_ORGANIZER_VARIANT_OPTIONSomits it)./stakeholdersfetch to an empty list; add/resend is not fully exercised.argTypeson older stories, Storybook CI, or converting every story to TypeScript.