448 lines
10 KiB
Markdown
448 lines
10 KiB
Markdown
# Design System Layers
|
|
|
|
Comprehensive guide to all layers of a professional design system. Use this as a reference when extracting design patterns from references or creating new design systems.
|
|
|
|
## Visual Foundation
|
|
|
|
### Colors
|
|
|
|
**Extract and document:**
|
|
|
|
- **Primary colors**: Main brand colors (usually 1-2 colors with 50-900 shades)
|
|
- **Secondary colors**: Supporting colors for variety
|
|
- **Neutral colors**: Grays for text, borders, backgrounds (50-900 shades)
|
|
- **Semantic colors**: Success (green), Error (red), Warning (yellow), Info (blue)
|
|
- **Surface colors**: Page background, card background, overlays
|
|
- **Text colors**: Primary text, secondary text, disabled text, link colors
|
|
|
|
**Usage context for each color:**
|
|
- When to use primary vs secondary
|
|
- Text color on different backgrounds
|
|
- Hover/active state colors
|
|
- Focus ring colors
|
|
|
|
**Accessibility requirements:**
|
|
- Text on background must meet WCAG AA (4.5:1 for body, 3:1 for large text)
|
|
- Interactive elements need sufficient contrast
|
|
- Focus indicators must be clearly visible
|
|
|
|
**Color psychology considerations:**
|
|
- What emotions do these colors evoke?
|
|
- Industry appropriateness
|
|
- Cultural considerations
|
|
|
|
### Typography
|
|
|
|
**Font families:**
|
|
- Heading font (display/decorative)
|
|
- Body font (readable, clear)
|
|
- Monospace font (for code)
|
|
- Fallback fonts for each
|
|
|
|
**Type scale (size, weight, line-height, letter-spacing):**
|
|
- H1 - Page titles (3-4rem, bold, tight line-height)
|
|
- H2 - Section headings (2-2.5rem, bold/semibold)
|
|
- H3 - Subsection headings (1.5-2rem, semibold)
|
|
- H4 - Component headings (1.25-1.5rem, medium/semibold)
|
|
- H5 - Small headings (1.125-1.25rem, medium)
|
|
- Body Large - Emphasis text (1.125rem, regular)
|
|
- Body - Default text (1rem, regular, 1.6 line-height)
|
|
- Body Small - Supporting text (0.875rem, regular)
|
|
- Caption - Metadata/labels (0.75rem, regular, tight)
|
|
|
|
**Hierarchy rules:**
|
|
- When to use each heading level
|
|
- Maximum heading levels per page
|
|
- Spacing between headings
|
|
|
|
**Responsive typography:**
|
|
- How sizes scale across breakpoints
|
|
- Fluid typography formulas if applicable
|
|
|
|
### Spacing System
|
|
|
|
**Base unit**: 4px or 8px (most common)
|
|
|
|
**Scale**: 0, 0.25rem, 0.5rem, 0.75rem, 1rem, 1.25rem, 1.5rem, 2rem, 2.5rem, 3rem, 4rem, 5rem, 6rem, 8rem
|
|
|
|
**Application:**
|
|
- Component internal padding
|
|
- Margins between elements
|
|
- Grid/layout gutters
|
|
- Section spacing
|
|
|
|
**Rhythm principles:**
|
|
- Consistent vertical rhythm
|
|
- Proportional relationships
|
|
- Optical adjustments when needed
|
|
|
|
### Shadows & Elevation
|
|
|
|
**Elevation scale (0-5):**
|
|
- **0**: Flat (no shadow)
|
|
- **1**: Subtle lift (sm shadow) - hoverable cards
|
|
- **2**: Raised (md shadow) - default cards
|
|
- **3**: Floating (lg shadow) - dropdown menus
|
|
- **4**: Overlay (xl shadow) - modals
|
|
- **5**: Maximum (2xl shadow) - important overlays
|
|
|
|
**Shadow specifications:**
|
|
- Y-offset, blur, spread, color with alpha
|
|
- Multiple shadows for depth
|
|
- Colored shadows for brand personality
|
|
|
|
**When to use each level:**
|
|
- Default state vs hover state
|
|
- Static vs interactive elements
|
|
- Context-appropriate elevation
|
|
|
|
## Layout & Structure
|
|
|
|
### Grid System
|
|
|
|
**Container:**
|
|
- Max-width per breakpoint
|
|
- Horizontal padding/margins
|
|
- Centering behavior
|
|
|
|
**Grid specifications:**
|
|
- Number of columns (typically 12)
|
|
- Gutter width
|
|
- Responsive behavior
|
|
- Subgrids for nested layouts
|
|
|
|
**Breakpoints:**
|
|
- Mobile: 320px-767px
|
|
- Tablet: 768px-1023px
|
|
- Desktop: 1024px-1439px
|
|
- Wide: 1440px+
|
|
|
|
### Layout Patterns
|
|
|
|
**Common patterns to document:**
|
|
- Single column (mobile-first)
|
|
- Two column (sidebar + main)
|
|
- Three column (sidebar + main + aside)
|
|
- Grid layouts (cards, galleries)
|
|
- Asymmetric layouts
|
|
|
|
**Content flow:**
|
|
- Reading order
|
|
- Visual hierarchy
|
|
- Whitespace usage
|
|
|
|
## Component Architecture
|
|
|
|
### Button Components
|
|
|
|
**Variants:**
|
|
- **Primary**: Main actions (solid background, primary color)
|
|
- **Secondary**: Alternative actions (outlined or muted background)
|
|
- **Ghost/Text**: Subtle actions (transparent, colored text)
|
|
- **Destructive**: Dangerous actions (red, warning indicators)
|
|
|
|
**Sizes:**
|
|
- Small: Tight spaces, secondary actions
|
|
- Medium: Default size
|
|
- Large: Hero sections, primary CTAs
|
|
|
|
**States:**
|
|
- Default: Base appearance
|
|
- Hover: Cursor feedback (darker/lighter, shadow)
|
|
- Active: Click feedback (even darker, inset shadow)
|
|
- Focus: Keyboard navigation (outline/ring)
|
|
- Disabled: Not interactive (reduced opacity, no hover)
|
|
- Loading: Spinner + disabled state
|
|
|
|
**Anatomy:**
|
|
- Padding (horizontal and vertical)
|
|
- Border radius
|
|
- Font size and weight
|
|
- Icon spacing if applicable
|
|
- Minimum touch target (44x44px mobile)
|
|
|
|
### Input Components
|
|
|
|
**Text input variants:**
|
|
- Default
|
|
- With icon (leading/trailing)
|
|
- With helper text
|
|
- With error message
|
|
|
|
**States:**
|
|
- Empty
|
|
- Filled
|
|
- Focus
|
|
- Error
|
|
- Disabled
|
|
- Read-only
|
|
|
|
**Validation:**
|
|
- Error styling (red border, error icon)
|
|
- Success styling (green border, check icon)
|
|
- Inline validation timing
|
|
|
|
### Card Components
|
|
|
|
**Anatomy:**
|
|
- Padding
|
|
- Border/shadow
|
|
- Border radius
|
|
- Background color
|
|
|
|
**Variants:**
|
|
- Basic (content only)
|
|
- With image (header image)
|
|
- With actions (buttons/links)
|
|
- Interactive (clickable)
|
|
|
|
**States:**
|
|
- Default
|
|
- Hover (if interactive)
|
|
- Active/Selected
|
|
|
|
### Navigation Components
|
|
|
|
**Navbar:**
|
|
- Logo placement and sizing
|
|
- Navigation items layout
|
|
- Mobile hamburger menu
|
|
- Sticky/fixed behavior
|
|
|
|
**Tabs:**
|
|
- Active/inactive states
|
|
- Underline/background indicator
|
|
- Spacing between tabs
|
|
|
|
**Breadcrumbs:**
|
|
- Separator style
|
|
- Link vs text
|
|
- Truncation on mobile
|
|
|
|
### Form Components
|
|
|
|
**Checkbox:**
|
|
- Checked/unchecked/indeterminate
|
|
- Size and spacing
|
|
- Label alignment
|
|
|
|
**Radio buttons:**
|
|
- Similar to checkbox
|
|
- Group spacing
|
|
|
|
**Select dropdown:**
|
|
- Trigger appearance
|
|
- Dropdown menu styling
|
|
- Selected state
|
|
- Multi-select behavior
|
|
|
|
**Toggle switch:**
|
|
- On/off states
|
|
- Size variants
|
|
- Label placement
|
|
|
|
## Motion & Interaction
|
|
|
|
### Animation Principles
|
|
|
|
**Duration scale:**
|
|
- Fast (150ms): Small changes, micro-interactions
|
|
- Normal (250ms): Default transitions
|
|
- Slow (350ms): Complex animations, page transitions
|
|
|
|
**Easing functions:**
|
|
- **Ease-out**: Accelerate then decelerate (default)
|
|
- **Ease-in**: Start slow, accelerate
|
|
- **Ease-in-out**: Smooth start and end
|
|
- **Linear**: Constant speed (loading indicators)
|
|
|
|
**Animation types:**
|
|
- **Fade**: Opacity changes
|
|
- **Slide**: Position changes
|
|
- **Scale**: Size changes
|
|
- **Rotate**: Transform rotations
|
|
- **Combined**: Multiple properties
|
|
|
|
### Interaction Patterns
|
|
|
|
**Hover feedback:**
|
|
- Color change
|
|
- Shadow elevation
|
|
- Scale (subtle, 102-105%)
|
|
- Underline for links
|
|
|
|
**Click/tap feedback:**
|
|
- Slight scale down (98%)
|
|
- Darker color
|
|
- Ripple effect (Material Design)
|
|
|
|
**Loading states:**
|
|
- Skeleton screens (preserve layout)
|
|
- Spinners (for small areas)
|
|
- Progress bars (known duration)
|
|
|
|
**Transition patterns:**
|
|
- Page transitions (fade/slide)
|
|
- Modal appearances (scale + fade)
|
|
- Drawer slides (slide from edge)
|
|
- Toast notifications (slide from top/bottom)
|
|
|
|
## Accessibility Standards
|
|
|
|
### WCAG 2.1 Level AA Requirements
|
|
|
|
**Color contrast:**
|
|
- Body text (16px-): 4.5:1 minimum
|
|
- Large text (18px+ regular, 14px+ bold): 3:1 minimum
|
|
- UI components: 3:1 minimum
|
|
|
|
**Focus indicators:**
|
|
- Visible outline or ring
|
|
- Minimum 2px width
|
|
- High contrast with background
|
|
- Not relying on color alone
|
|
|
|
**Keyboard navigation:**
|
|
- All interactive elements keyboard accessible
|
|
- Logical tab order
|
|
- Skip links for long navigation
|
|
- Escape key closes modals/dropdowns
|
|
|
|
**Screen reader support:**
|
|
- Semantic HTML elements
|
|
- ARIA labels for icons
|
|
- ARIA live regions for dynamic content
|
|
- Alt text for images
|
|
|
|
**Touch targets:**
|
|
- Minimum 44x44px (iOS guideline)
|
|
- Sufficient spacing between targets
|
|
- Larger on mobile devices
|
|
|
|
### Best Practices
|
|
|
|
**Forms:**
|
|
- Labels associated with inputs
|
|
- Error messages clearly identified
|
|
- Required field indicators
|
|
|
|
**Images:**
|
|
- Descriptive alt text
|
|
- Decorative images have empty alt
|
|
- Complex images have extended descriptions
|
|
|
|
**Tables:**
|
|
- Table headers (th) properly used
|
|
- Caption or aria-label for context
|
|
- Sortable columns clearly indicated
|
|
|
|
## Content & Voice
|
|
|
|
### Writing Guidelines
|
|
|
|
**Voice characteristics:**
|
|
- Tone: Professional, friendly, helpful, etc.
|
|
- Personality: Formal vs casual
|
|
- Brand values reflected
|
|
|
|
**Microcopy patterns:**
|
|
- Button labels: Verb-first, action-oriented ("Get Started", "Save Changes")
|
|
- Error messages: Clear, helpful, actionable
|
|
- Success messages: Positive, confirmatory
|
|
- Empty states: Encouraging, guiding
|
|
|
|
**Content hierarchy:**
|
|
- Headlines: Clear, benefit-driven
|
|
- Body: Scannable, concise
|
|
- CTAs: Compelling, specific
|
|
|
|
## Iconography
|
|
|
|
### Icon System
|
|
|
|
**Style:**
|
|
- Outline vs filled vs duotone
|
|
- Stroke width consistency
|
|
- Corner radius treatment
|
|
- Optical balance
|
|
|
|
**Sizing:**
|
|
- Small: 16px (inline with text)
|
|
- Medium: 24px (default)
|
|
- Large: 32px+ (feature icons)
|
|
|
|
**Usage:**
|
|
- When to use icons vs text
|
|
- Icon + text label vs icon alone
|
|
- Decorative vs functional icons
|
|
|
|
**Accessibility:**
|
|
- Functional icons need labels
|
|
- ARIA attributes for screen readers
|
|
- Don't rely on icons alone for critical info
|
|
|
|
## Imagery
|
|
|
|
### Image Guidelines
|
|
|
|
**Aspect ratios:**
|
|
- Hero images: 16:9 or 21:9
|
|
- Portraits: 3:4 or 2:3
|
|
- Squares: 1:1
|
|
|
|
**Treatments:**
|
|
- Border radius application
|
|
- Overlays for text legibility
|
|
- Filters (grayscale, blur, etc.)
|
|
|
|
**Quality standards:**
|
|
- Resolution requirements
|
|
- Compression guidelines
|
|
- Format recommendations (WebP, AVIF)
|
|
|
|
**Placeholder handling:**
|
|
- Skeleton screens
|
|
- Blur-up technique
|
|
- Dominant color backgrounds
|
|
|
|
## Implementation Notes
|
|
|
|
### CSS Variables
|
|
|
|
Generate CSS custom properties from design tokens:
|
|
|
|
```css
|
|
:root {
|
|
--color-primary-500: #0ea5e9;
|
|
--spacing-4: 1rem;
|
|
--shadow-md: 0 4px 6px rgba(0,0,0,0.1);
|
|
--radius-md: 0.5rem;
|
|
}
|
|
```
|
|
|
|
### Utility Classes
|
|
|
|
Consider generating utility classes:
|
|
- Color classes: `.text-primary`, `.bg-neutral-100`
|
|
- Spacing classes: `.p-4`, `.m-8`, `.gap-6`
|
|
- Typography classes: `.text-h1`, `.text-body`
|
|
|
|
### Component Examples
|
|
|
|
Provide code examples for each component showing all variants and states in actual HTML/CSS.
|
|
|
|
## Quality Assurance
|
|
|
|
### Design Review Checklist
|
|
|
|
- [ ] All colors from defined palette
|
|
- [ ] Typography scale applied consistently
|
|
- [ ] Spacing follows system
|
|
- [ ] Components match specifications
|
|
- [ ] Accessibility requirements met
|
|
- [ ] Responsive across breakpoints
|
|
- [ ] Interactive states implemented
|
|
- [ ] Loading/error states handled
|
|
- [ ] Browser compatibility verified
|
|
- [ ] Performance optimized
|