334 lines
7.8 KiB
Markdown
334 lines
7.8 KiB
Markdown
# Freya's Design System Guide
|
|
|
|
**When to load:** When Phase 7 (Design System) is enabled and component questions arise
|
|
|
|
---
|
|
|
|
## Core Principle
|
|
|
|
**Design systems grow organically - discover components through actual work, never create speculatively.**
|
|
|
|
---
|
|
|
|
## Three Design System Modes
|
|
|
|
### Mode A: No Design System
|
|
**What it means:**
|
|
- All components stay page-specific
|
|
- No component extraction
|
|
- AI/dev team handles consistency
|
|
- Faster for simple projects
|
|
|
|
**When this workflow doesn't run:**
|
|
- Phase 7 is disabled
|
|
- Components reference page context only
|
|
|
|
**Agent behavior:**
|
|
- Create components as page-specific
|
|
- Use clear, descriptive class names
|
|
- No need to think about reusability
|
|
|
|
---
|
|
|
|
### Mode B: Custom Figma Design System
|
|
**What it means:**
|
|
- Designer defines components in Figma
|
|
- Components extracted as discovered during Phase 4
|
|
- Figma MCP endpoints for integration
|
|
- Component IDs link spec ↔ Figma
|
|
|
|
**Workflow:**
|
|
1. Designer creates component in Figma
|
|
2. Component discovered during page design
|
|
3. Agent links to Figma via Component ID
|
|
4. Specification references Figma source
|
|
|
|
**See:** `../../workflows/6-asset-generation/workflow-figma.md`
|
|
|
|
---
|
|
|
|
### Mode C: Component Library Design System
|
|
**What it means:**
|
|
- Uses shadcn/Radix/similar library
|
|
- Library chosen during setup
|
|
- Components mapped to library defaults
|
|
- Variants customized as needed
|
|
|
|
**Workflow:**
|
|
1. Component needed during page design
|
|
2. Check if library has it (button, input, card, etc.)
|
|
3. Map to library component
|
|
4. Document customizations (if any)
|
|
|
|
---
|
|
|
|
## The Design System Router
|
|
|
|
**Runs automatically during Phase 4 component specification**
|
|
|
|
**For each component:**
|
|
1. Check: Design system enabled? (Mode B or C)
|
|
2. If NO → Create page-specific, continue
|
|
3. If YES → Call design-system-router.md
|
|
|
|
**Router asks:**
|
|
- Is this component new?
|
|
- Is there a similar component?
|
|
- Should we create new or use/extend existing?
|
|
|
|
**See:** `../../workflows/7-design-system/design-system-router.md`
|
|
|
|
---
|
|
|
|
## Never Create Components Speculatively
|
|
|
|
### ❌ Wrong Approach
|
|
"Let me create a full component library upfront..."
|
|
|
|
**Why bad:**
|
|
- You don't know what you'll actually need
|
|
- Over-engineering
|
|
- Wasted effort on unused components
|
|
|
|
---
|
|
|
|
### ✅ Right Approach
|
|
"I'm designing the landing page hero... oh, I need a button."
|
|
|
|
**Process:**
|
|
1. Design the button for this specific page
|
|
2. When another page needs a button → Opportunity!
|
|
3. Assess: Similar enough to extract?
|
|
4. Extract to Design System if makes sense
|
|
|
|
**Result:** Components emerge from real needs.
|
|
|
|
---
|
|
|
|
## Opportunity/Risk Assessment
|
|
|
|
**When similar component exists, run assessment:**
|
|
|
|
**See:** `../../workflows/7-design-system/assessment/`
|
|
|
|
**7 Micro-Steps:**
|
|
1. Scan existing components
|
|
2. Compare attributes (visual, behavior, states)
|
|
3. Calculate similarity score
|
|
4. Identify opportunities (reuse, consistency)
|
|
5. Identify risks (divergence, complexity)
|
|
6. Present decision to designer
|
|
7. Execute decision
|
|
|
|
**Outcomes:**
|
|
- **Use existing** - Component is close enough
|
|
- **Create variant** - Extend existing with new state
|
|
- **Create new** - Too different, warrants separate component
|
|
- **Update existing** - Existing is too narrow, expand it
|
|
|
|
---
|
|
|
|
## Foundation First
|
|
|
|
**Before any components:**
|
|
|
|
### 1. Design Tokens
|
|
```
|
|
Design tokens = the DNA of your design system
|
|
|
|
Colors:
|
|
- Primary, secondary, accent
|
|
- Neutral scale (50-900)
|
|
- Semantic (success, warning, error, info)
|
|
|
|
Typography:
|
|
- Font families
|
|
- Font scales (h1-h6, body, caption)
|
|
- Font weights
|
|
- Line heights
|
|
|
|
Spacing:
|
|
- Spacing scale (xs, sm, md, lg, xl)
|
|
- Layout scales
|
|
|
|
Effects:
|
|
- Border radius scale
|
|
- Shadow scale
|
|
- Transitions
|
|
```
|
|
|
|
**Why first:** Tokens ensure consistency across all components.
|
|
|
|
---
|
|
|
|
### 2. Atomic Design Structure
|
|
|
|
**Organize from simple → complex:**
|
|
|
|
```
|
|
atoms/
|
|
├── button.md
|
|
├── input.md
|
|
├── label.md
|
|
├── icon.md
|
|
└── badge.md
|
|
|
|
molecules/
|
|
├── form-field.md (label + input + error)
|
|
├── card.md (container + content)
|
|
└── search-box.md (input + button + icon)
|
|
|
|
organisms/
|
|
├── header.md (logo + nav + search + user-menu)
|
|
├── feature-section.md (headline + cards + cta)
|
|
└── form.md (multiple form-fields + submit)
|
|
```
|
|
|
|
**Why this structure:** Clear dependencies, easy to understand, scales well.
|
|
|
|
---
|
|
|
|
## Component Operations
|
|
|
|
**See:** `../../workflows/7-design-system/operations/`
|
|
|
|
### 1. Initialize Design System
|
|
**First component triggers auto-initialization**
|
|
- Creates folder structure
|
|
- Creates design-tokens.md
|
|
- Creates component-library-config.md (if Mode C)
|
|
|
|
### 2. Create New Component
|
|
- Defines component specification
|
|
- Assigns Component ID
|
|
- Documents states and variants
|
|
- Notes where used
|
|
|
|
### 3. Add Variant
|
|
- Extends existing component
|
|
- Documents variant trigger
|
|
- Updates component spec
|
|
|
|
### 4. Update Component
|
|
- Modifies existing definition
|
|
- Increments version
|
|
- Documents change rationale
|
|
|
|
---
|
|
|
|
## Component Specification Template
|
|
|
|
```markdown
|
|
# [Component Name] [COMP-001]
|
|
|
|
**Type:** [Atom|Molecule|Organism]
|
|
**Library:** [shadcn Button|Custom|N/A]
|
|
**Figma:** [Link if Mode B]
|
|
|
|
## Purpose
|
|
[What job does this component do?]
|
|
|
|
## Variants
|
|
- variant-name: [When to use]
|
|
- variant-name: [When to use]
|
|
|
|
## States
|
|
- default
|
|
- hover
|
|
- active
|
|
- disabled
|
|
- loading (if applicable)
|
|
- error (if applicable)
|
|
|
|
## Props/Attributes
|
|
| Prop | Type | Default | Description |
|
|
|------|------|---------|-------------|
|
|
| size | sm\|md\|lg | md | Button size |
|
|
| variant | primary\|secondary | primary | Visual style |
|
|
|
|
## Styling
|
|
[Design tokens or Figma reference]
|
|
|
|
## Used In
|
|
- [Page name] ([Component purpose in context])
|
|
- [Page name] ([Component purpose in context])
|
|
|
|
## Version History
|
|
- v1.0.0 (2024-01-01): Initial creation
|
|
```
|
|
|
|
---
|
|
|
|
## Integration with Phase 4
|
|
|
|
**Phase 4 (UX Design) → Phase 7 (Design System) flow:**
|
|
|
|
```
|
|
User creates page specification
|
|
├── Component 1: Button
|
|
│ ├── Check: Design system enabled?
|
|
│ ├── YES → Router checks existing components
|
|
│ ├── Similar button found → Opportunity/Risk Assessment
|
|
│ └── Decision: Use existing primary button variant
|
|
├── Component 2: Input
|
|
│ ├── Check: Design system enabled?
|
|
│ ├── YES → Router checks existing components
|
|
│ ├── No similar input → Create new
|
|
│ └── Add to Design System
|
|
└── Component 3: Custom illustration
|
|
├── Check: Design system enabled?
|
|
└── NO extraction (one-off asset)
|
|
```
|
|
|
|
**Result:**
|
|
- Page spec contains references + page-specific content
|
|
- Design System contains component definitions
|
|
- Clean separation maintained
|
|
|
|
---
|
|
|
|
## Common Mistakes
|
|
|
|
### ❌ Creating Library Before Designing
|
|
"Let me make 50 components upfront..."
|
|
- **Instead:** Design pages, extract components as needed
|
|
|
|
### ❌ Over-Abstracting Too Early
|
|
"This button might need 10 variants someday..."
|
|
- **Instead:** Start simple, add variants when actually needed
|
|
|
|
### ❌ Forcing Reuse
|
|
"I'll make this work even though it's awkward..."
|
|
- **Instead:** Sometimes a new component is better than a forced variant
|
|
|
|
### ❌ No Design Tokens
|
|
"I'll define colors per component..."
|
|
- **Instead:** Tokens first, components second
|
|
|
|
---
|
|
|
|
## Quality Checklist
|
|
|
|
Before marking a component "complete":
|
|
|
|
- [ ] **Clear purpose** - What job does it do?
|
|
- [ ] **Design tokens** - Uses tokens, not hard-coded values?
|
|
- [ ] **All states** - Default, hover, active, disabled documented?
|
|
- [ ] **Variants** - Each variant has clear use case?
|
|
- [ ] **Reusability** - Can be used in multiple contexts?
|
|
- [ ] **Documentation** - Specification is complete?
|
|
- [ ] **Examples** - Shows where it's actually used?
|
|
|
|
---
|
|
|
|
## Related Resources
|
|
|
|
- **Phase 7 Workflow:** `../../workflows/7-design-system/`
|
|
- **Figma Integration:** `../../workflows/6-asset-generation/workflow-figma.md`
|
|
- **Shared Knowledge:** `../design-system/` (tokens, naming, states, validation, boundaries)
|
|
|
|
---
|
|
|
|
*Components emerge from real needs. Design systems grow organically.*
|
|
|