Purpose: Guidelines for organizing and structuring components in Figma for seamless WDS integration.
Referenced by: Mode B (Custom Design System) workflows
Figma components should mirror WDS component structure to enable seamless synchronization and specification generation.
Figma Component → WDS Component Specification → React Implementation
Recommended Figma file organization:
Design System File (Figma)
├── 📄 Cover (project info)
├── 🎨 Foundation
│ ├── Colors
│ ├── Typography
│ ├── Spacing
│ └── Effects
├── ⚛️ Components
│ ├── Buttons
│ ├── Inputs
│ ├── Cards
│ └── [other component types]
└── 📱 Examples
└── Component usage examples
Benefits:
Pattern: [ComponentType]/[ComponentName]
Examples:
Button/Primary
Button/Secondary
Button/Ghost
Input/Text
Input/Email
Card/Profile
Card/Content
Rules:
Every component must have:
Description
Variants
Auto Layout
Example Description:
Button Primary [btn-001]
Primary action button for main user actions.
Use for: Submit forms, confirm actions, proceed to next step.
WDS Component: Button.primary [btn-001]
Use Figma's variant properties:
Property 1: Type (variant)
Property 2: Size
Property 3: State
Property 4: Icon (optional)
Result: Figma generates all combinations automatically
Format: Property=Value
Examples:
Type=Primary, Size=Medium, State=Default
Type=Primary, Size=Medium, State=Hover
Type=Secondary, Size=Large, State=Disabled
Benefits:
Interactive Components (Buttons, Links):
Form Components (Inputs, Selects):
Feedback Components (Alerts, Toasts):
Document state changes:
Hover:
Active:
Disabled:
Loading:
Map Figma variables to WDS tokens:
Colors:
Figma Variable → WDS Token
primary/500 → color-primary-500
gray/900 → color-gray-900
success/600 → color-success-600
Typography:
Figma Style → WDS Token
Text/Display → text-display
Text/Heading-1 → text-heading-1
Text/Body → text-body
Spacing:
Figma Variable → WDS Token
spacing/2 → spacing-2
spacing/4 → spacing-4
spacing/8 → spacing-8
Effects:
Figma Effect → WDS Token
shadow/sm → shadow-sm
shadow/md → shadow-md
radius/md → radius-md
[Component Name] [component-id]
**Purpose:** [Brief description]
**When to use:**
- [Use case 1]
- [Use case 2]
**When not to use:**
- [Anti-pattern 1]
- [Anti-pattern 2]
**WDS Component:** [ComponentType].[variant] [component-id]
**Variants:** [List of variants]
**States:** [List of states]
**Size:** [Available sizes]
**Accessibility:**
- [ARIA attributes]
- [Keyboard support]
- [Screen reader behavior]
Example:
Button Primary [btn-001]
**Purpose:** Trigger primary actions in the interface
**When to use:**
- Submit forms
- Confirm important actions
- Proceed to next step
- Primary call-to-action
**When not to use:**
- Secondary actions (use Button Secondary)
- Destructive actions (use Button Destructive)
- Navigation (use Link component)
**WDS Component:** Button.primary [btn-001]
**Variants:** primary, secondary, ghost, outline
**States:** default, hover, active, disabled, loading
**Size:** small, medium, large
**Accessibility:**
- role="button"
- aria-disabled when disabled
- aria-busy when loading
- Keyboard: Enter/Space to activate
Use consistent spacing values:
Auto Layout Settings:
Set appropriate constraints:
Buttons:
Inputs:
Cards:
Best practices:
Overridable Properties:
Non-Overridable:
Add WDS component ID to Figma:
In component description:
Button Primary [btn-001]
In component name:
Button/Primary [btn-001]
Benefits:
Figma generates unique node IDs:
Format:
figma://file/[file-id]/node/[node-id]
How to get node ID:
Store in WDS:
# D-Design-System/figma-mappings.md
Button [btn-001] → figma://file/abc123/node/456:789
Input [inp-001] → figma://file/abc123/node/456:790
When component is created/updated in Figma:
When specification is updated in WDS:
Note: This is semi-automated. Full automation requires Figma API write access.
Wrong:
Background: #2563eb (hardcoded hex)
Padding: 16px (hardcoded value)
Right:
Background: primary/600 (variable)
Padding: spacing/4 (variable)
Wrong:
Right:
Wrong:
btn-primary
ButtonSecondary
button_ghost
Right:
Button/Primary
Button/Secondary
Button/Ghost
Wrong:
Right:
Wrong:
Button Primary
(no component ID)
Right:
Button Primary [btn-001]
(clear WDS mapping)
Component Name: Button/Primary [btn-001]
Description:
Button Primary [btn-001]
Primary action button for main user actions.
WDS Component: Button.primary [btn-001]
Variants: primary, secondary, ghost, outline
States: default, hover, active, disabled, loading
Sizes: small, medium, large
Variants:
Type=Primary, Size=Medium, State=Default
Type=Primary, Size=Medium, State=Hover
Type=Primary, Size=Medium, State=Active
Type=Primary, Size=Medium, State=Disabled
Type=Primary, Size=Large, State=Default
[... all combinations]
Properties:
Component Name: Input/Text [inp-001]
Description:
Input Text [inp-001]
Text input field for user data entry.
WDS Component: Input.text [inp-001]
States: default, focus, filled, disabled, error, success
Variants:
State=Default
State=Focus
State=Filled
State=Disabled
State=Error
State=Success
Properties:
figma-mcp-integration.mdfigma-designer-guide.mdtoken-architecture.mdcomponent-boundaries.mdThis structure enables seamless Figma ↔ WDS integration and maintains design system consistency across tools.