Skip to content

feat(ui): Storybook 10 + Button/Input primitives (U0.5b)#413

Merged
OBenner merged 1 commit into
developfrom
claude/ui-storybook-u05b
Jul 12, 2026
Merged

feat(ui): Storybook 10 + Button/Input primitives (U0.5b)#413
OBenner merged 1 commit into
developfrom
claude/ui-storybook-u05b

Conversation

@OBenner

@OBenner OBenner commented Jul 12, 2026

Copy link
Copy Markdown
Owner

What

Completes U0.5: the shared design system gets a Storybook and the remaining foundational primitives.

  • Button — the mockup's header-action button (default + primary variants, :focus-visible ring, disabled state). Input — the field style with a visible focus ring. Both forward rest attributes like Badge/Kbd (feat(ui): extract shared Badge + Kbd primitives (U0.5) #411 review convention).
  • Storybook 10 (@storybook/react-vite) in libs/ui: preview imports the design tokens and adds a light/dark toolbar driving the same <html data-theme> mechanism as ThemeProvider. 16 stories across Badge / Button / Input / Kbd and KanbanBoard / BoardView / BoardSkeleton / TaskDetail (the board fixture lives in __fixtures__/sample-tasks.ts so CSF doesn't treat it as a story).
  • npm run storybook / build-storybook in libs/ui. No CI job added in this PR — deliberately keeping the change dep-only while its lockfile impact is watched.

Lockfile safety (the known hoisted-lockfile CI risk)

Regenerated from develop's baseline. Verified against develop's lockfile: typescript/@types/react placements byte-identical, zero new nesting under apps/* — the Storybook tree is hoisted-only additions. Locally validated against a CI-exact environment (clean npm ci --ignore-scripts + the apps/frontend/node_modules → root symlink the CI action creates): frontend typecheck PASS, libs/ui typecheck PASS, storybook build PASS.

Note: the full local vitest run has a pre-existing tmp-dir race (pristine develop fails ~10 random tests locally; each passes in isolation) — flagged as a separate task; CI is the gate here.

Verified live

Storybook UI renders all 16 stories; the theme toolbar switches data-theme (dark card background = dark token); BoardView story is interactive (search/filter work inside the story).

🤖 Generated with Claude Code

Completes U0.5: the shared design system now has a Storybook and the
remaining foundational primitives.

- Button primitive: the mockup's header-action button (default +
  primary variants, focus-visible ring, disabled state); Input: the
  field style with visible focus ring. Both forward rest attributes
  like Badge/Kbd.
- Storybook 10 (@storybook/react-vite) in libs/ui: main.ts + preview
  with the design tokens and a light/dark toolbar driving the same
  <html data-theme> mechanism as ThemeProvider. 16 stories across
  Badge/Button/Input/Kbd and KanbanBoard/BoardView/BoardSkeleton/
  TaskDetail (board fixture extracted to __fixtures__/sample-tasks so
  CSF doesn't treat it as a story).
- scripts: npm run storybook / build-storybook in libs/ui.

Lockfile safety (the known hoisted-lockfile CI risk): regenerated from
develop's baseline; typescript/@types/react placements byte-identical
to develop, zero new nesting under apps/* — the Storybook tree is
hoisted-only. Validated against a CI-exact environment (clean npm ci
--ignore-scripts + the apps/frontend node_modules symlink): frontend
typecheck PASS, libs/ui typecheck PASS, storybook build PASS. Full
local vitest has a pre-existing tmp-dir race (pristine develop fails
10 random tests locally; flagged separately) — CI is the gate.

Verified live: Storybook UI renders all stories, theme toolbar switches
data-theme (dark card bg = dark token), BoardView story interactive.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Oleg Miagkov <mrobenner@gmail.com>
@coderabbitai

coderabbitai Bot commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@OBenner, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 20 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: c4a2301f-6f54-450f-b4a7-b86b66ab6933

📥 Commits

Reviewing files that changed from the base of the PR and between e873cab and b121507.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json, !**/package-lock.json
📒 Files selected for processing (18)
  • libs/ui/.gitignore
  • libs/ui/.storybook/main.ts
  • libs/ui/.storybook/preview.tsx
  • libs/ui/package.json
  • libs/ui/src/index.ts
  • libs/ui/src/primitives/Badge.stories.tsx
  • libs/ui/src/primitives/Button.css
  • libs/ui/src/primitives/Button.stories.tsx
  • libs/ui/src/primitives/Button.tsx
  • libs/ui/src/primitives/Input.css
  • libs/ui/src/primitives/Input.stories.tsx
  • libs/ui/src/primitives/Input.tsx
  • libs/ui/src/primitives/Kbd.stories.tsx
  • libs/ui/src/screens/BoardSkeleton.stories.tsx
  • libs/ui/src/screens/BoardView.stories.tsx
  • libs/ui/src/screens/KanbanBoard.stories.tsx
  • libs/ui/src/screens/TaskDetail.stories.tsx
  • libs/ui/src/screens/__fixtures__/sample-tasks.ts
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/ui-storybook-u05b

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@sonarqubecloud

Copy link
Copy Markdown

@OBenner OBenner merged commit 4aa2449 into develop Jul 12, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant