Skip to main content

Apple-Quality Design System for V5

Version: 1.0.0 Date: 2025-10-08 Philosophy: "Design is how it works" - Steve Jobs


🎯 Design Philosophy​

Core Principles (Steve Jobs & Jony Ive)​

  1. Seamless Integration - No visible boundaries between components
  2. Self-Explanatory - UI explains itself through visual hierarchy
  3. Intuitive Interaction - Users understand without instructions
  4. Minimal Cognitive Load - One clear action path
  5. Beautiful Simplicity - Remove everything unnecessary
  6. Purposeful Motion - Animation guides, never decorates
  7. Consistent Behavior - Learn once, use everywhere

The Goal​

Zero onboarding required. Users of all skill levels feel confident and understand tools/features immediately through design alone.


🎨 Visual Unity​

No Component Seams​

Every element flows as ONE unified system:

  • theia widgets β†’ Look native to V5 (not embedded)
  • React components β†’ Match theia styling perfectly
  • Light/Dark modes β†’ Seamless transition, no jarring changes
  • Touch/Mouse β†’ Same visual feedback, optimized for input
  • Mobile/Desktop β†’ layout adapts, appearance stays consistent

How We Achieve This​

  1. Unified Theme System (unified-theme.ts)

    • Single color palette for all components
    • Consistent spacing (8px base unit)
    • Matching typography (San Francisco-inspired)
    • Shared shadows, radii, transitions
  2. Global CSS Integration (global.css)

    • Removes theia's default borders/backgrounds
    • Injects V5 theme variables into theia widgets
    • Ensures smooth transitions everywhere
    • Touch-friendly sizing on all interactive elements
  3. Seamless theia Styling

    • theia widgets inherit Chakra UI theme
    • No visual boundaries (borders/shadows removed)
    • Same fonts, colors, spacing as React components
    • Perfect theme sync (light/dark)

🎨 Color System​

Philosophy: Calm, Professional, Never Jarring​

Primary Blue - Trustworthy, professional (Apple-style)

#2A90FF - Main brand color

Neutral Grays - Soft, premium feel

Light Mode BG: #F8F9FA (warm white)
Dark Mode BG: #212529 (deep charcoal)

Success Green - Natural, reassuring (Apple Health style)

Light: #34C759
Dark: #30D158

Warning Amber - Clear without alarm

Light: #FF9500
Dark: #FF9F0A

Error Red - Obvious but not aggressive

Light: #FF3B30
Dark: #FF453A

Color Usage​

ElementLight ModeDark ModePurpose
Background#F8F9FA#212529Canvas
Surface#FFFFFF#343A40Cards, panels
Border#E9ECEF#495057Subtle separation
Text Primary#212529#F8F9FAMain content
Text Secondary#868E96#ADB5BDSupporting text
Accent#2A90FF#2A90FFInteractive elements

πŸ“ Spacing & layout​

8px Base Unit (Consistent Rhythm)​

All spacing uses multiples of 8px:

4px   - Tight (half unit)
8px - Base unit
16px - Comfortable (double)
24px - Spacious (triple)
32px - Section gap
48px - Major separation

Touch Targets​

Minimum: 44x44px (WCAG AAA) Recommended: 56px (V5 standard)

Every interactive element (buttons, inputs, switches, links) meets this standard on all devices.

Responsive Breakpoints​

320px  - Mobile (iPhone SE)
480px - Small mobile landscape
768px - Tablet portrait
992px - Tablet landscape
1280px - Desktop
1536px - Large desktop

Mobile-First: Design for 320px first, enhance for larger screens.


πŸ”€ Typography​

San Francisco Inspired​

Headings: SF Pro Display

font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display"

Body: SF Pro Text

font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text"

Code: SF Mono

font-family: "SF Mono", "Monaco", "Inconsolata"

Hierarchy​

LevelSizeWeightUsage
H132px600Page titles
H224px600Section headers
H320px600Subsections
Body16px400Main content
Small14px400Supporting text
Caption12px400Metadata

Key Rule: Size difference creates hierarchy, not decoration.


🎭 Light & Dark Modes​

Seamless Theme Switching​

Light Mode - Clean, airy, productive

  • Background: Warm white (#F8F9FA)
  • Text: Deep charcoal (#212529)
  • Shadows: Soft, subtle

Dark Mode - Comfortable, focused, modern

  • Background: Deep charcoal (#212529)
  • Text: Soft white (#F8F9FA)
  • Shadows: None (use subtle borders instead)

Auto-Sync​

Theme changes propagate instantly to:

  • βœ… React components (Chakra UI)
  • βœ… theia widgets (via CSS variables)
  • βœ… Monaco editor
  • βœ… terminal (xterm.js)
  • βœ… File explorer
  • βœ… Chat interface

Result: One unified appearance, zero visual seams.


🎬 Motion & Animation​

Philosophy: Purposeful, Never Decorative​

Easing: Natural, physics-based

cubic-bezier(0.4, 0, 0.2, 1) - Default (ease-out)

Duration: Quick, responsive

200ms - UI state changes
300ms - Component transitions
500ms - Page transitions

When to Animate​

βœ… DO animate:

  • Hover states (subtle lift)
  • Focus indicators (gentle pulse)
  • Panel expansion (smooth reveal)
  • Theme switching (fade)
  • Navigation (slide)

❌ DON'T animate:

  • Text changes
  • Data updates
  • Scrolling
  • Resize operations

Reduced Motion​

Respect user preferences:

@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
transition-duration: 0.01ms !important;
}
}

πŸ–±οΈ Interaction Patterns​

Self-Explanatory Through Design​

Buttons​

Visual Cues:

  • Primary action: Filled blue, prominent
  • Secondary action: Outline, subtle
  • Destructive action: Red fill
  • Hover: Slight lift + shadow
  • Active: Press down effect
  • Disabled: 40% opacity, no pointer

User understands: Color = importance, elevation = interactivity

Inputs​

Visual Cues:

  • Empty: Light border, placeholder text
  • Focus: Blue border + subtle shadow
  • Filled: Text appears, placeholder fades
  • Error: Red border + helper text
  • Success: Green checkmark

User understands: Border color = state, icon = validation

Switches​

Visual Cues:

  • Off: Gray track, thumb left
  • On: Blue track, thumb right
  • Transition: Smooth slide (200ms)

User understands: Position = state, color = active

Cards​

Visual Cues:

  • Clickable: Hover lift + shadow
  • Selected: Blue border
  • Expanded: Chevron rotates down
  • Collapsed: Chevron rotates right

User understands: Elevation = clickable, chevron = expandable


πŸ“± Mobile-First Responsive Design​

Adaptive layout (Not Hidden)​

Bad ❌:

Desktop: Show sidebar
Mobile: Hide sidebar

Good βœ…:

Desktop: Side-by-side panels
Mobile: Stack vertically (both visible)

Touch Optimization​

All interactive elements:

  • Minimum 56px tall
  • Minimum 56px wide
  • 8px padding around tap area
  • Visual feedback on touch

Gestures:

  • Tap - Activate
  • Swipe - Navigate (panels)
  • Pinch - Zoom (code editor)
  • Drag - Resize (desktop only)

Mobile Considerations​

  • Font size: Never below 16px (prevents iOS zoom)
  • Input height: 56px (comfortable thumb reach)
  • Scrolling: Momentum scrolling enabled
  • Orientation: Works in portrait and landscape

🎯 Self-Explanatory UI Elements​

Visual Hierarchy Tells the Story​

Example: AI Studio Tab

Without reading any text, users understand:

  1. Left panel (chat interface):

    • Large input box β†’ "Type here"
    • Send button (blue, prominent) β†’ "Primary action"
    • Agent selector β†’ "Choose assistant"
    • Message history β†’ "Previous conversations"
  2. Right panel (preview):

    • Code display β†’ "Generated output"
    • Syntax highlighting β†’ "This is code"
    • Scroll bar β†’ "More content below"
  3. Resizer (between panels):

    • 8px gray bar β†’ "Draggable"
    • Hover changes to blue β†’ "Interactive"
    • Cursor changes β†’ "Drag to resize"

Result: User knows what to do without instructions.


πŸ”§ Component Consistency​

Every Component Follows Same Rules​

ComponentTouch TargetBorder RadiusShadowHover Effect
Button56px16pxsmLift + shadow
Input56px16pxnone β†’ focus shadowBorder color
Card-20pxsmLift + shadow
Switch32px (track)fullnoneTrack color
Select56px16pxnone β†’ focus shadowBorder color

Consistency = Predictability = Confidence


β™Ώ Accessibility (WCAG AAA)​

Built-In, Not Added On​

βœ… Touch Targets: All β‰₯ 56px βœ… Color Contrast: 7:1 (AAA standard) βœ… Focus Indicators: 3px blue ring βœ… Keyboard Navigation: Full support βœ… Screen Readers: ARIA labels on all interactive elements βœ… No Color-Only: Icons + text for all actions βœ… Reduced Motion: Respects user preference

Focus Management​

Visible focus ring on all interactive elements:

box-shadow: 0 0 0 3px rgba(42, 144, 255, 0.3)

Tab order: Logical, top-to-bottom, left-to-right

Skip links: Available for keyboard users


🎨 Design Tokens (Single Source of Truth)​

All values defined in unified-theme.ts:

// Colors
colors.primary[500] // #2A90FF
colors.neutral[50] // #F8F9FA

// Spacing
space[2] // 16px
space[4] // 32px

// Shadows
shadows.md // 0 4px 6px rgba(0,0,0,0.1)

// Radii
radii.lg // 16px
radii.xl // 20px

// Fonts
fonts.body // -apple-system, ...

Usage in code:

<Button
bg="primary.500"
px={space[2]}
borderRadius="lg"
boxShadow="md"
>
Click Me
</Button>

πŸ”„ theia Integration (Seamless)​

Before (Visible Seams)​

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ V5 React Header β”‚ ← One theme
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ theia Widget β”‚ β”‚ ← Different theme (jarring)
β”‚ β”‚ (borders, bg) β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

After (Seamless)​

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ V5 React Header β”‚ ← Unified theme
β”‚ β”‚
β”‚ theia Widget β”‚ ← Same theme (seamless)
β”‚ (no borders/bg) β”‚
β”‚ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

How It's Done​

  1. Remove theia defaults (global.css):

    .theia-widget {
    border: none !important;
    background: transparent !important;
    }
  2. Inject V5 theme (CSS variables):

    .theia-light {
    --theia-ui-background: #F8F9FA;
    --theia-accent-color: #2A90FF;
    }
  3. Sync theme changes:

    • Chakra UI theme change β†’ Update theia CSS variables
    • Result: Instant theme sync across all components

πŸ“‹ Implementation Checklist​

For Every New Component​

  • Touch target β‰₯ 56px on mobile
  • Border radius = 16px (lg) or 20px (xl)
  • Hover state (lift + shadow)
  • Focus state (blue ring)
  • Transition duration = 200ms
  • Uses design tokens (no hardcoded values)
  • Works in light and dark mode
  • Keyboard accessible
  • Screen reader friendly
  • Looks seamless with theia widgets

For Every Page​

  • Works on 320px viewport
  • Works on 4K viewport
  • No horizontal scroll
  • Logical tab order
  • Clear visual hierarchy
  • Self-explanatory layout
  • Consistent spacing (8px units)
  • Theme-aware colors

🎯 Success Metrics​

User Experience​

Goal: Users feel confident without training

Metrics:

  • Time to first action: < 10 seconds
  • Error rate: < 5%
  • Support requests: Minimal
  • User satisfaction: > 90%

Visual Quality​

Goal: Apple-level polish

Metrics:

  • No visible component seams
  • Smooth 60fps animations
  • Instant theme switching
  • Pixel-perfect alignment
  • Consistent spacing everywhere

πŸ“š Resources​

Design References​

Code Files​

  • src/theme/unified-theme.ts - Design tokens
  • src/theme/global.css - Seamless integration
  • src/components/theia/ - Widget wrappers
  • docs/mobile-first-design-system.md - Touch guidelines

βœ… Summary​

The V5 Design System Ensures:​

βœ… Seamless visual integration - No component boundaries βœ… Self-explanatory UI - Visual hierarchy tells the story βœ… Intuitive interactions - Users understand without instructions βœ… Minimal cognitive load - One clear action path βœ… Beautiful simplicity - Nothing unnecessary βœ… Consistent behavior - Learn once, use everywhere βœ… Apple-quality polish - Attention to every detail

The Result:​

A unified system so seamless, users never notice the componentsβ€”they just experience a beautiful, intuitive tool that works exactly as expected.


"Design is not just what it looks like and feels like. Design is how it works." - Steve Jobs


Document Version: 1.0.0 Last Updated: 2025-10-08 Status: βœ… PRODUCTION STANDARD