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)β
- Seamless Integration - No visible boundaries between components
- Self-Explanatory - UI explains itself through visual hierarchy
- Intuitive Interaction - Users understand without instructions
- Minimal Cognitive Load - One clear action path
- Beautiful Simplicity - Remove everything unnecessary
- Purposeful Motion - Animation guides, never decorates
- 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β
-
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
-
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
-
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β
| Element | Light Mode | Dark Mode | Purpose |
|---|---|---|---|
| Background | #F8F9FA | #212529 | Canvas |
| Surface | #FFFFFF | #343A40 | Cards, panels |
| Border | #E9ECEF | #495057 | Subtle separation |
| Text Primary | #212529 | #F8F9FA | Main content |
| Text Secondary | #868E96 | #ADB5BD | Supporting text |
| Accent | #2A90FF | #2A90FF | Interactive 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β
| Level | Size | Weight | Usage |
|---|---|---|---|
| H1 | 32px | 600 | Page titles |
| H2 | 24px | 600 | Section headers |
| H3 | 20px | 600 | Subsections |
| Body | 16px | 400 | Main content |
| Small | 14px | 400 | Supporting text |
| Caption | 12px | 400 | Metadata |
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:
-
Left panel (chat interface):
- Large input box β "Type here"
- Send button (blue, prominent) β "Primary action"
- Agent selector β "Choose assistant"
- Message history β "Previous conversations"
-
Right panel (preview):
- Code display β "Generated output"
- Syntax highlighting β "This is code"
- Scroll bar β "More content below"
-
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β
| Component | Touch Target | Border Radius | Shadow | Hover Effect |
|---|---|---|---|---|
| Button | 56px | 16px | sm | Lift + shadow |
| Input | 56px | 16px | none β focus shadow | Border color |
| Card | - | 20px | sm | Lift + shadow |
| Switch | 32px (track) | full | none | Track color |
| Select | 56px | 16px | none β focus shadow | Border 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β
-
Remove theia defaults (global.css):
.theia-widget {
border: none !important;
background: transparent !important;
} -
Inject V5 theme (CSS variables):
.theia-light {
--theia-ui-background: #F8F9FA;
--theia-accent-color: #2A90FF;
} -
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 tokenssrc/theme/global.css- Seamless integrationsrc/components/theia/- Widget wrappersdocs/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