Purpose: Step-by-step instructions for designers creating components in Figma for WDS projects.
Audience: Visual designers, UX designers, design system maintainers
File structure:
[Project Name] Design System
├── 📄 Cover
├── 🎨 Foundation
│ ├── Colors
│ ├── Typography
│ ├── Spacing
│ └── Effects
├── ⚛️ Components
│ ├── Buttons
│ ├── Inputs
│ ├── Cards
│ └── [more types]
└── 📱 Examples
Tips:
Create Figma variables:
Colors:
Collection: Colors
├── primary/50
├── primary/100
├── primary/500
├── primary/600
├── gray/50
├── gray/900
└── [more colors]
Spacing:
Collection: Spacing
├── spacing/1 = 4px
├── spacing/2 = 8px
├── spacing/4 = 16px
├── spacing/6 = 24px
└── [more spacing]
Typography:
Styles: Typography
├── Display/Large
├── Heading/1
├── Heading/2
├── Body/Regular
└── [more styles]
1. Create Base Frame
Frame name: Button/Primary [btn-001]
Size: Hug contents (width), Fixed 44px (height)
Auto Layout: Horizontal
Padding: 16px (horizontal), 12px (vertical)
Gap: 8px
2. Add Content
├── Icon (optional)
│ └── Size: 20x20px
└── Text
└── Style: Body/Medium
└── Content: "Button Text"
3. Apply Design Tokens
Background: primary/600 (variable)
Text Color: white (variable)
Border Radius: 8px
4. Create Component
Select frame → Create Component
Name: Button/Primary [btn-001]
In component description field:
Button Primary [btn-001]
Primary action button for main user actions.
**When to use:**
- Submit forms
- Confirm actions
- Proceed to next step
**When not to use:**
- Secondary actions (use Button/Secondary)
- Navigation (use Link component)
**WDS Component:** Button.primary [btn-001]
**Variants:** primary, secondary, ghost
**States:** default, hover, active, disabled, loading
**Sizes:** small, medium, large
**Accessibility:**
- role="button"
- aria-disabled when disabled
- Keyboard: Enter/Space to activate
Select component → Add variant property:
Property 1: Type
Values: Primary, Secondary, Ghost, Outline
Property 2: Size
Values: Small, Medium, Large
Property 3: State
Values: Default, Hover, Active, Disabled, Loading
Type=Primary, Size=Medium, State=Default:
Background: primary/600
Text: white
Padding: 16px × 12px
Type=Primary, Size=Medium, State=Hover:
Background: primary/700 (darker)
Text: white
Scale: 1.02 (slightly larger)
Type=Primary, Size=Medium, State=Active:
Background: primary/800 (darkest)
Text: white
Scale: 0.98 (slightly smaller)
Type=Primary, Size=Medium, State=Disabled:
Background: gray/300
Text: gray/500
Opacity: 0.6
Cursor: not-allowed
Type=Primary, Size=Medium, State=Loading:
Background: primary/600
Text: white
Add: Spinner icon
Opacity: 0.8
Small:
Padding: 12px × 8px
Text: Body/Small
Icon: 16x16px
Height: 36px
Medium (default):
Padding: 16px × 12px
Text: Body/Medium
Icon: 20x20px
Height: 44px
Large:
Padding: 20px × 16px
Text: Body/Large
Icon: 24x24px
Height: 52px
Create a documentation frame:
Frame: Button States Documentation
├── Default
│ └── Normal appearance
├── Hover
│ └── Background darker, slight scale
├── Active
│ └── Background darkest, scale down
├── Disabled
│ └── Grayed out, reduced opacity
└── Loading
└── Spinner, disabled interaction
Add annotations:
1. Select component in Figma
2. Right-click → "Copy link to selection"
3. Extract node ID from URL:
URL: https://www.figma.com/file/abc123/Design-System?node-id=456:789
File ID: abc123
Node ID: 456:789
Full reference: figma://file/abc123/node/456:789
4. Add to WDS mapping file:
# D-Design-System/figma-mappings.md
Button [btn-001] → figma://file/abc123/node/456:789
1. Create component in Figma (steps above)
2. Notify WDS system:
figma-mappings.md3. Generate WDS specification:
4. Verify sync:
If Figma MCP is configured:
1. Create/update component in Figma
2. Run MCP sync command:
# In WDS project
wds figma sync Button/Primary
3. MCP will:
4. Review generated spec:
When updating a component:
1. Update in Figma:
2. Sync to WDS:
3. Notify team:
Track component changes:
In Figma:
In WDS:
## Version History
**Created:** 2024-12-09
**Last Updated:** 2024-12-15
**Changes:**
- 2024-12-09: Created component
- 2024-12-12: Added loading state
- 2024-12-15: Updated hover animation
1. Use Design Tokens
2. Document Thoroughly
3. Maintain Consistency
4. Test Instances
5. Keep Organized
1. Hardcode Values
2. Detach Instances
3. Skip Documentation
4. Ignore States
5. Break Naming Conventions
1. Research:
2. Design:
3. Document:
4. Sync:
5. Test:
1. Assess:
2. Add Variant:
3. Update Documentation:
4. Sync:
1. Plan Change:
2. Update Component:
3. Sync to WDS:
4. Verify:
Problem: MCP can't read component
Solutions:
Problem: Some variants missing in WDS
Solutions:
Problem: Hardcoded values instead of variables
Solutions:
Problem: Updates break instance overrides
Solutions:
data/design-system/figma-component-structure.mddata/design-system/token-architecture.mddata/design-system/component-boundaries.mdfigma-mcp-integration.mdFollowing this guide ensures your Figma components integrate seamlessly with WDS and maintain design system consistency.