1 / 23
Workshop Guide

React + Storybook
with Claude Code

Build your first component system using AI — no coding experience needed.

25 attendees Windows machines ~90 minutes Complete beginners
Today's plan

What we'll do today

Four phases from zero to a live component browser — all guided by AI.

🛠️
Phase 1
Install Node.js, Git for Windows, and Claude Code
~25 min
📁
Phase 2
Create a project folder and let Claude set up React
~15 min
✏️
Phase 3
Describe components in plain English — Claude builds them
~30 min
👀
Phase 4
Launch Storybook and browse your component library
~15 min
0
Before you arrive

Set up your Anthropic account

Claude Code needs a paid Claude subscription to work. Do this at home to save time on workshop day.

  • 1Go to claude.ai in your browser
  • 2Create an account with your email
  • 3Upgrade to Claude Pro or Max (paid plan required)
  • 4Note your email and password — you'll need them on the day
💡 Ask your facilitator if the workshop provides a shared API key — this means everyone can use one account.
🔑
claude.ai
Create account → Upgrade plan → Save your login

Phase 01

Install the Tools

Three installs, done in order. Each one only takes a few minutes.

Node.js Git for Windows Claude Code
1
Step 1 of 4

Install Node.js

The engine that powers React and Storybook on your machine.

  • 1Open your browser and go to nodejs.org
  • 2Click the big green "LTS" download button
  • 3Run the downloaded file — click Next through all screens
  • 4Close all terminal windows when done
💡 LTS = Long Term Support — this is the stable, recommended version.
Verify it worked — open PowerShell and type:
PS> node --version
You should see v22.x.x or similar. Any number 18 or above is fine.
⚠️ Open a new PowerShell window after installing. The old one won't recognise Node.js yet.
2
Step 2 of 4

Install Git for Windows

Claude Code uses this as a background shell tool on Windows — no git knowledge needed, no version control involved.

  • 1Go to git-scm.com and click "Download for Windows"
  • 2Run the installer — click Next through every screen
  • 3Keep all the default options — don't change anything
  • 4Click Finish — you're done
🐚
Why do we need this?
Claude Code on Windows runs commands through Git Bash — a small Unix shell — internally. Without it, Claude Code simply can't run. Think of it as the wiring behind the walls — you'll never directly touch it.
⚠️ When the installer asks about line endings, keep the default option. Don't change it.
3
Step 3 of 4

Install Claude Code

Two ways to install — try WinGet first. If it fails, use the npm fallback below.

Option A — Recommended
WinGet (Windows package manager)
Install command — in PowerShell:
PS> winget install Anthropic.ClaudeCode
  • 1Open PowerShell from the Start menu
  • 2Paste the command, press Enter
  • 3If asked to agree to source terms, type Y and Enter
  • 4Close PowerShell, open a new one
Option B — Fallback
npm (uses Node.js from Step 1)
If WinGet fails, run in PowerShell:
PS> npm install -g @anthropic-ai/claude-code
This uses Node.js (installed in Step 1) and works when WinGet has certificate or network issues.
Verify either method worked:
PS> claude --version
⚠️ Must be lowercase claude — capital C won't work.
4
Step 4 of 4

Log in to Claude Code

Connect Claude Code to your Anthropic account. This only needs to be done once.

  • 1In PowerShell, type claude and press Enter
  • 2Claude Code will show a URL — copy it and open in your browser
  • 3Log in with your Anthropic account (from Step 0)
  • 4Click Authorize in the browser
  • 5Return to PowerShell — you'll see a welcome message
💡 Your login is saved — you won't need to do this again on this machine.
Launch Claude Code:
PS> claude
✅ Phase 1 complete!
All three tools are installed and ready. Take a short break before moving to Phase 2.

Phase 02

Create Your Project

Make a folder, launch Claude Code inside it, and let the AI scaffold React + Vite + Tailwind for you.

Create folder Vite + React + TypeScript Tailwind CSS
5
Step 5

Create your project folder

All your component code will live in one folder on your Desktop. Then launch Claude Code inside it.

In PowerShell, run these one at a time:
PS> cd Desktop
PS> mkdir my-components
PS> cd my-components
PS> claude
When you see the Claude Code prompt appear, you're inside your project folder and ready to go.
💡 PowerShell tip: Press Windows key, type PowerShell, press Enter to open it.
📁
Desktop → my-components
Your whole project lives inside this one folder. Claude Code runs from here.
6
Step 6

Set up Vite, React and Tailwind CSS

Two prompts inside Claude Code — one for the project scaffold, one for Tailwind. Run them one at a time.

Prompt 1 — scaffold the project:
Create a new Vite + React project with TypeScript in this folder using npm create vite@latest. Use the react-ts template. Install all dependencies. Don't ask questions, just do it.
Prompt 2 — install Tailwind CSS:
Install and configure Tailwind CSS in this Vite + React project. Add it to the Vite config and import it in the main CSS file. Make sure it's ready to use in components.
What gets installed
Vite
Fast build tool & dev server
⚛️
React + TypeScript
Component framework with types
🎨
Tailwind CSS
Utility classes for styling components
⚠️ Wait for Prompt 1 to fully finish before typing Prompt 2.

Phase 03

Build 20 Components

A real component system in three tiers — atomic primitives first, then molecules that combine them, then compound components with subparts.

10 Primitives 5 Molecules 5 Compound
7
Step 7 · Part 1 of 8
Primitives 1 – 3 / 10

Atomic building blocks

Type each prompt one at a time in Claude Code. Wait for each to finish before moving on.

01
🔵 Button
Design a Button component. Four variants: primary (solid, brand color), secondary (outlined, neutral border), ghost (transparent, gets a soft background on hover), and danger (red, for destructive actions). Three sizes — sm, md, lg — with proportional padding and font size. Show variations with a left icon, right icon, loading spinner (replaces the icon), disabled appearance (reduced opacity), and full-width. Subtle hover lift, clear focus ring.
02
🟢 Input
Design an Input field. Sizes: sm, md, lg. Five states: default (neutral border), hover (slightly darker border), focused (accent-colored ring around the field), disabled (muted background, reduced opacity), readonly (subtle background tint), and error (red border, optional red message below). Support optional left and right icons inside the field — icon color shifts to match the current state.
03
🟡 Badge
Design a Badge component for status labels. Five semantic variants — success (green), warning (amber), danger (red), info (blue), neutral (gray) — each with a subtle tinted background and matching darker text. Two sizes: sm (tight padding) and md (a bit more breathing room). Two shapes: pill (fully rounded ends) and square (small corner radius). Optional small dot indicator before the text in the same accent color.
7
Step 7 · Part 2 of 8
Primitives 4 – 6 / 10

Identity & selection

Components for representing people and capturing single-choice inputs.

04
👤 Avatar
Design an Avatar component. Five sizes — xs, sm, md, lg, xl — with matching font sizes for initials. Two shapes: circle (default) and square (small radius). When no image is provided, fall back gracefully to initials on a soft colored background. Optional status dot in the bottom-right corner — online (green), offline (gray), away (amber) — with a thin white ring around it for separation.
05
☑️ Checkbox
Design a Checkbox component. Sizes: sm, md, lg. Five states: unchecked (just border), checked (filled with accent color, white check icon), indeterminate (filled, with a minus icon instead of check), disabled (muted), and focused (accent ring around the box). Subtle scale-in animation on the icon when toggling. Optional label beside the box, with the entire row clickable.
06
🔘 Radio
Design a Radio component along with a RadioGroup container. States: unselected (just border), selected (border with a filled inner dot in accent color), disabled (muted), and focused (accent ring around the outer circle). Subtle scale-in transition for the inner dot when selected. RadioGroup supports horizontal or vertical layout with consistent spacing. Each option clickable across the whole row.
7
Step 7 · Part 3 of 8
Primitives 7 – 9 / 10

Toggles & feedback

Toggle states, loading indicators, and contextual help.

07
🔀 Switch
Design a Switch (toggle) component. Sizes: sm, md, lg with proportional thumb and track. States: off (neutral gray track, thumb left), on (accent-colored track, thumb right), disabled (muted), focused (accent ring around the track). Smooth thumb slide and color transition (~200ms) between states. Optional text label can sit on the left or right side of the switch.
08
⏳ Spinner
Design a Spinner for loading states. Sizes: sm, md, lg, xl. Three visual variants: circle (a classic spinning arc with a transparent gap, rotating continuously), dots (three small dots bouncing in sequence), and pulse (a single circle scaling in and out). Spinner color matches the current text color by default but can be overridden. Smooth, continuous animation.
09
💬 Tooltip
Design a Tooltip that appears on hover above (or beside) any element. Four positions: top, bottom, left, right. A dark rounded rectangle with light text and a small triangular arrow pointing toward the trigger. Subtle fade-in with a slight position shift on appear (~150ms). Has a small offset gap from the trigger so it doesn't sit flush against it.
7
Step 7 · Part 4 of 8
Primitives 10 / 10

Last primitive — structure

One last building block to separate sections, then on to molecules.

10
➖ Divider
Design a Divider for separating content. Two orientations: horizontal (full width) and vertical (full height). Three line styles: solid, dashed, and dotted, all in a soft neutral color. Optional centered label — when present, the line breaks around it with consistent spacing on each side. The label uses smaller, muted text.
Primitives complete — 10 of 10
You've built the foundation. Now combine them into molecules.
7
Step 7 · Part 5 of 8
Molecules 11 – 13 / 5

Combinations of primitives

Each molecule uses one or more primitives from the previous tier — a richer visual unit composed from the building blocks.

11
🔍 SearchBar
Design a SearchBar built on top of the Input primitive. A magnifying-glass icon sits on the left in muted gray, a clear (X) button appears on the right only when there's text (with a subtle hover state), and an optional keyboard shortcut hint (e.g. ⌘K) sits on the far right inside a small rounded chip. Placeholder text is muted gray. Sizes: sm, md, lg.
12
📋 FormField
Design a FormField wrapper that groups a label, input, and helper text together. Label above (medium weight) with a red asterisk after it when the field is required. The input child renders in the middle. Below sits either helper text (small, muted gray) or an error message (small, red) — the error replaces the helper when present, and the label color shifts to red. Consistent vertical spacing between all three pieces.
13
🃏 Card
Design a Card — a contained surface for grouping related content. Optional header with a bold title, smaller muted subtitle below, and an action area on the right (e.g. a menu icon). Body for main content. Optional footer for action buttons, separated by a subtle divider. Padding variants: sm, md, lg. A clickable variant lifts subtly on hover with a slightly stronger shadow.
7
Step 7 · Part 6 of 8
Molecules 14 – 15 / 5

Notifications & labels

Two more molecules to round out the middle tier.

14
🚨 Alert
Design an Alert for inline notifications. Four variants — info (blue), success (green), warning (amber), danger (red) — each with a tinted background and a matching icon (info circle, checkmark, warning triangle, alert octagon). Layout: icon on the left, then a bold title with message body below it, an optional close (X) button in the top right, and an optional action button (text link or small button) on the right.
15
🏷️ Tag
Design a Tag — a small inline element for labels or filters. Text in the middle, optional leading icon on the left, and an optional removable (X) button on the right with a subtle hover state. Color variants matching the Badge system (success, warning, danger, info, neutral) — provide both subtle (tinted background) and solid (filled) treatments. Sizes: sm, md. Pill-shaped with rounded ends.
Molecules complete — 5 of 5
Foundation and combinations done. Now to compound components.
7
Step 7 · Part 7 of 8
Compound Components 16 – 18 / 5

Components with subparts

Compound components have multiple visual parts that work together — designed as a coordinated set.

16
🪟 Modal
Design a Modal with three subparts: Modal.Header (with title and a close X button on the right), Modal.Body (main content area), and Modal.Footer (right-aligned action buttons, separated from the body by a subtle divider). Sizes: sm, md, lg, xl. Sits centered on a dimmed semi-transparent backdrop. Smooth scale-and-fade in on open, fade out on close. Rounded corners with a soft shadow.
17
📑 Tabs
Design Tabs with three subparts: Tabs.List (the row of tab buttons), Tabs.Tab (an individual tab), and Tabs.Panel (the content area below). Three variants: underline (active tab has an accent bottom border that slides between tabs), pill (active tab has a filled accent background), and enclosed (tabs sit in a bordered container with the active tab connected to the panel below). Clear active/inactive states, hover state for inactive tabs, focus ring for keyboard users.
18
📚 Accordion
Design an Accordion with three subparts: Accordion.Item (one row), Accordion.Trigger (the clickable header with label and chevron icon), and Accordion.Content (the collapsible body). Two states per item: collapsed (only trigger visible, chevron points down) and expanded (content visible, chevron rotated 180° to point up). Smooth height animation when expanding. Subtle divider between adjacent items. Trigger has hover and focus states.
7
Step 7 · Part 8 of 8
Compound Components 19 – 20 / 5

Menus & data

The final two compound components — for choices and structured data.

19
⤵️ Dropdown
Design a Dropdown menu with five subparts: Dropdown.Trigger (button that opens it), Dropdown.Menu (the floating panel), Dropdown.Item (a menu option), Dropdown.Separator (thin line between groups), and Dropdown.Label (small uppercase muted label for grouping). Menu has soft shadow, rounded corners, subtle fade-in. Items show hover (light background) and selected (check icon on right) states. Items support an optional leading icon and a trailing shortcut hint in muted text. A danger variant has red text.
20
📊 DataTable
Design a DataTable with subparts: Table (container), Table.Header (sticky top row), Table.HeaderCell (with optional sort arrow that flips between ascending/descending), Table.Body, Table.Row (with hover state), and Table.Cell. Variants: default (row borders), striped (alternating row backgrounds), and borderless. Loading state shows shimmering skeleton rows. Empty state shows a centered icon with a friendly message when there's no data.
All 20 components designed
Now let's see them all together in Storybook.

Phase 04

See It in Storybook

Launch a visual browser for all your components — click through them, change variants, and see everything live in the browser.

Install Storybook Create stories Open browser
8
Step 8 — Final step

Launch Storybook

Ask Claude to install Storybook and create story files for every component — then open it in your browser.

Type this prompt in Claude Code:
Install Storybook and create a story file for every component we built — all 10 primitives, 5 molecules, and 5 compound components. Organize the sidebar by tier (Primitives → Molecules → Compound). For each component, create stories showing every variant, size, and state we designed. Then start Storybook.
Claude will install everything, create the story files, and launch the dev server. Wait until it says "Storybook started."
Then open your browser and go to:
http://localhost:6006
What you'll see
A sidebar lists every component. Click one to see it live. Use the Controls panel at the bottom to change variants — primary, secondary, danger, and more.
💡 If Storybook doesn't open automatically, just type the URL into Chrome or Edge manually.
🎉

You built a component system!

From zero to a live React component library with Storybook — all guided by Claude Code in plain English. No prior coding experience required.

React + Storybook Workshop • Claude Code • 2026