# Bolt Design System This document contains comprehensive design guidelines for creating beautiful, consistent, and production-ready user interfaces. ## Design Philosophy Create interfaces that are: - **Professional and Beautiful** - Clean, modern aesthetics with attention to detail - **Production-Ready** - Fully featured and implementation-ready for real-world use - **Unique** - Distinctive visual style that avoids generic or cookie-cutter designs - **Consistent** - Cohesive visual language across all components and screens - **Accessible** - Usable by everyone, regardless of abilities or circumstances ## Core Principles ### Human-Centered Design - Intuitive interfaces that minimize cognitive load - Progressive disclosure of complex functionality - Contextual assistance when and where needed - Meaningful feedback throughout user journeys - Focus on user goals rather than system capabilities ### Content-First Approach - Content determines layout structure - Strong information hierarchy guides attention - Intentional whitespace improves readability - Visual rhythm creates natural flow - Respect natural reading patterns ### Adaptive Consistency - Platform-appropriate patterns for native feel - Responsive adaptation across device sizes - Context-aware behavior that anticipates needs - Common interaction models for learnability - Familiar conventions balanced with innovation ## Visual Language ### Modern Minimalism - Include only essential elements - Use purposeful negative space - Create focused interactions - Apply deliberate contrast - Maintain visual clarity ### Foundational Harmony - Balance compositions with visual weight - Establish rhythm through spacing and repetition - Create proportional relationships between elements - Align to grid for structural consistency - Maintain spatial relationships across contexts ### Subtle Sophistication - Add refined details that reward attention - Implement elegant transitions between states - Design thoughtful animations that guide users - Polish micro-interactions for delight - Ensure quality craftsmanship in every element ## Color System ### Primary Palette - **Azure Blue** (#0066FF) - Primary actions and buttons - Key interactive elements - Focus states and selections - Brand identity elements - Progress indicators - **Charcoal** (#242933) - Primary backgrounds (dark mode) - Container elements - Base typography in dark mode - UI frameworks and structure - Navigation elements - **Platinum** (#F4F5F7) - Light backgrounds (light mode) - Content areas - Card elements - Form field backgrounds - Subtle dividers ### Secondary Palette - **Mint Green** (#00CC99) - Success states - Completion indicators - Positive metrics - Growth elements - Approval indicators - **Coral** (#FF6B6B) - Error states - Alerts and warnings - Destructive actions - Critical information - Attention elements - **Amber** (#FFAB49) - Warning states - Notification badges - Attention indicators - Pending status - Moderate alerts - **Lavender** (#8B5CF6) - Accent elements - Premium features - Highlighted content - Special states - Interactive tutorials ### Neutral Shades - **Dark** - #242933 (Darkest - text, backgrounds) - #373F4D (Dark - secondary UI) - #4A5468 (Medium-dark - borders) - **Mid** - #6B7A99 (Primary mid-tone - secondary text) - #8A94A6 (Light mid-tone - disabled elements) - #B0B7C3 (Lightest mid-tone - subtle elements) - **Light** - #D9E0E8 (Dark light - borders) - #E5E9F0 (Medium light - backgrounds) - #F4F5F7 (Lightest - page backgrounds) ### Accessibility Guidelines - Maintain minimum contrast ratios: - 4.5:1 for normal text - 3:1 for large text - 3:1 for UI components and graphics - 4.5:1 for focus indicators - 7:1 for enhanced accessibility - Never use color alone to convey meaning - Include additional indicators for important states - Support system color schemes and high contrast modes - Design for color blindness with multiple visual cues - Test with accessibility tools during development ## Typography ### Font System - **Primary Font: Inter** - UI elements - Content text - Navigation - Forms and inputs - Labels and buttons - **Secondary Font: Roboto Mono** - Code examples - Technical data - Console output - Terminal commands - Numerical data and metrics - **Display Font: Montserrat** - Headlines - Marketing elements - Feature introductions - Welcome screens - Statement elements ### Type Scale #### Mobile - Display: 32px/40px - Heading 1: 24px/32px - Heading 2: 20px/28px - Heading 3: 18px/24px - Subtitle: 16px/24px - Body: 14px/20px - Caption: 12px/16px - Small: 10px/14px #### Tablet - Display: 40px/48px - Heading 1: 32px/40px - Heading 2: 24px/32px - Heading 3: 20px/28px - Subtitle: 18px/26px - Body: 16px/24px - Caption: 14px/20px - Small: 12px/16px #### Desktop - Display: 48px/56px - Heading 1: 40px/48px - Heading 2: 32px/40px - Heading 3: 24px/32px - Subtitle: 20px/28px - Body: 16px/24px - Caption: 14px/20px - Small: 12px/16px ### Text Styles - **Weight Application** - Regular (400): Body text, captions - Medium (500): Subtitles, emphasis - Bold (700): Headlines, buttons - Extra Bold (800): Key features, CTAs - Light (300): Large display text - **Line Height** - Headlines: 1.2 × font size - Body text: 1.5 × font size - Buttons: 1.25 × font size - Captions: 1.33 × font size - Code blocks: 1.6 × font size ## Component Design ### Interactive Elements #### Buttons - **Primary Button** - Background: Azure Blue (#0066FF) - Text: White - Border radius: 8px - Height: 44px (mobile), 48px (desktop) - Padding: 12px 20px - States: Hover/focus darkens by 10% - **Secondary Button** - Background: Transparent - Text: Azure Blue (#0066FF) - Border: 1.5px Azure Blue - Border radius: 8px - Height: 44px (mobile), 48px (desktop) - States: Hover adds light background - **Tertiary Button** - Background: Transparent - Text: Current text color - Underline on hover - Padding: 8px 12px - Height: 44px (mobile), 48px (desktop) - States: Hover adds underline - **Danger Button** - Background: Coral (#FF6B6B) - Text: White - Border radius: 8px - Height: 44px (mobile), 48px (desktop) - States: Hover/focus darkens by 10% - **Disabled Button** - Background: Mid Gray - Text: Dark Gray - Opacity: 60% - No hover effects - Cursor: not-allowed #### Input Fields - **Text Input** - Background: Light neutral - Border: 1px Mid neutral - Border radius: 8px - Height: 44px (mobile), 48px (desktop) - Inner padding: 12px 16px - Focus: Azure Blue border/ring - **Dropdown** - Styling matches text input - Icon: Chevron down - Dropdown menu: Card styling - Option height: 44px - Option padding: 16px - Selected: Accent background - **Checkbox** - Size: 20px × 20px - Border radius: 4px - Border: 1.5px Mid neutral - Checked: Azure Blue fill, white checkmark - Focus: 2px outline, 2px offset - **Radio Button** - Size: 20px × 20px - Border radius: 50% - Border: 1.5px Mid neutral - Selected: 8px Azure Blue dot - Focus: 2px outline, 2px offset - **Toggle** - Height: 24px - Width: 44px - Border radius: 12px - Thumb: 20px circle - Off state: Mid Gray - On state: Azure Blue ### Content Containers #### Cards - Background: White (light mode), Dark charcoal (dark mode) - Border radius: 12px - Shadow: 0 2px 8px rgba(0,0,0,0.1) - Padding: 20px - Dividers: 1px Light neutral - Header: 16px bottom spacing - Footer: 16px top spacing - Interactions: Subtle hover effect #### Lists - Item height: 56px (with icon), 44px (text only) - Padding: 16px horizontal - Dividers: 1px Light neutral - Selected: Light Azure background - Hover: 5% darken/lighten - Icon spacing: 16px from text #### Tables - Header: Medium weight, Light neutral background - Rows: Alternating background optional - Cell padding: 12px 16px - Border: 1px Light neutral - Hover: 5% darken/lighten - Sorting indicators: 16px icons #### Dialogs - Background: White (light mode), Dark charcoal (dark mode) - Border radius: 16px - Shadow: 0 4px 24px rgba(0,0,0,0.15) - Width: 90% (mobile), 480px (desktop) - Title: 24px/32px - Content padding: 24px - Button container: 24px padding, top border ### Navigation Components #### Tab Bar - Height: 56px - Icon size: 24px - Label: 12px, Medium weight - Active indicator: Accent color - Background: White (light mode), Dark charcoal (dark mode) - Shadow: 0 -2px 8px rgba(0,0,0,0.1) #### Navigation Bar - Height: 56px - Title: 18px, Medium weight - Back button: Chevron left + optional text - Action buttons: 44px touch target - Background: White (light mode), Dark charcoal (dark mode) - Shadow: 0 2px 8px rgba(0,0,0,0.1) #### Sidebar - Width: 280px - Item height: 44px - Icon size: 20px - Section headers: 14px, Medium weight - Active indicator: 4px accent border - Background: Light neutral (light mode), Dark charcoal (dark mode) #### Bottom Sheet - Border top-radius: 16px - Handle indicator: 32px × 4px pill - Maximum height: 90% of screen - Drag threshold: 20% of height - Background: White (light mode), Dark charcoal (dark mode) - Shadow: 0 -4px 24px rgba(0,0,0,0.15) ## Layout Guidelines ### Spacing System - Base Unit: 4px - Spacing Scale: - 2xs: 4px (1× base) - xs: 8px (2× base) - sm: 12px (3× base) - md: 16px (4× base) - lg: 24px (6× base) - xl: 32px (8× base) - 2xl: 48px (12× base) - 3xl: 64px (16× base) - 4xl: 96px (24× base) - Application: - Inline elements: xs (8px) - Related items: md (16px) - Component groups: lg (24px) - Section separation: xl-2xl (32-48px) - Page margins: lg-xl (24-32px) ### Grid System - **Mobile (320-599px)** - Columns: 4 - Margin: 16px - Gutter: 16px - Column width: Fluid - **Tablet (600-1023px)** - Columns: 8 - Margin: 32px - Gutter: 24px - Column width: Fluid - **Desktop (1024px+)** - Columns: 12 - Margin: 32px - Gutter: 32px - Column width: Fluid - Max width: 1440px - Common layouts: - Full-width: 4/4, 8/8, or 12/12 columns - Content area: 4/4, 6/8, or 8/12 columns - Half-width: 2/4, 4/8, or 6/12 columns - Third-width: n/a, n/a, or 4/12 columns ### Responsive Patterns #### Stacking - Desktop: Side-by-side elements - Mobile: Vertical stacking - Preserve primary content first - Maintain spacing proportions - Reconsider element hierarchy for smaller screens #### Column Reduction - Desktop: Multi-column layout - Mobile: Fewer columns - Reflow content to maintain relationships - Preserve content priority - Adjust spacing proportionally #### Container Adaptation - Desktop: Fixed-width containers - Mobile: Fluid-width containers - Maintain relative proportions - Adjust padding for smaller screens - Optimize touch targets for mobile #### UI Transformation - Desktop: Extended navigation - Mobile: Condensed navigation - Reposition actions for thumb reach - Prioritize content on small screens - Hide secondary information until needed ## Iconography ### Icon System - **Icon Library: Lucide** - Stroke-based icons - 24×24px default size - 2px stroke width - Rounded line caps - Consistent padding - **Size Framework** - Small: 16px (touch targets: 32px) - Medium: 24px (touch targets: 44px) - Large: 32px (touch targets: 56px) - Feature: 48px (touch targets: 64px) - **Alignment** - Center in touch target - Align with text baseline when inline - Use with consistent margins - Balance visual weight - Ensure proper spacing ### Interactive States - **Default** - Color: Current text color - Background: Transparent - Opacity: 100% - No decorations - Normal scale - **Hover** - Color: Current text color - Background: 5% fill - Opacity: 100% - No decorations - Normal scale - **Active** - Color: Current text color - Background: 10% fill - Opacity: 100% - No decorations - 98% scale (slight press effect) - **Disabled** - Color: Current text color - Background: Transparent - Opacity: 40% - No decorations - Normal scale - **Selected** - Color: Accent color - Background: Transparent - Opacity: 100% - No decorations - Normal scale ## Motion Design ### Animation Principles - **Purposeful** - Always serves user goals - Communicates state changes - Provides clear feedback - Guides attention - Establishes relationships - **Efficient** - Quick and responsive - No unnecessary delays - Complements interaction - Minimizes distraction - Enhances productivity - **Cohesive** - Consistent timing - Unified easing - Thematic relations - Predictable behaviors - Systematic application ### Timing System - **Duration Scale** - Extra fast: 100ms - Fast: 200ms - Normal: 300ms - Slow: 400ms - Extra slow: 500ms - **Usage Guidelines** - Interface feedback: Extra fast - Micro-interactions: Fast - Component transitions: Normal - View transitions: Slow - Onboarding animations: Extra slow - **Easing Curves** - Standard: cubic-bezier(0.2, 0.0, 0.2, 1.0) - Accelerate: cubic-bezier(0.3, 0.0, 1.0, 1.0) - Decelerate: cubic-bezier(0.0, 0.0, 0.2, 1.0) - Sharp: cubic-bezier(0.4, 0.0, 0.6, 1.0) - Bounce: spring(mass: 1, stiffness: 80, damping: 10) ### Animation Patterns #### Transitions - **Fade** - Opacity: 0 → 1 - Duration: Fast (200ms) - Easing: Standard - Usage: Element appearance/disappearance - Implementation: CSS transitions or animation libraries - **Slide** - Transform: translateY/X - Duration: Normal (300ms) - Easing: Decelerate - Usage: Lists, panels, sheets - Implementation: CSS transitions or animation libraries - **Scale** - Transform: scale - Duration: Fast (200ms) - Easing: Standard - Usage: Buttons, interactive elements - Implementation: CSS transitions or animation libraries - **Crossfade** - Combined opacity transitions - Duration: Normal (300ms) - Easing: Standard - Usage: Content replacement - Implementation: CSS transitions or animation libraries #### Micro-interactions - **Button Press** - Scale: 1.0 → 0.98 → 1.0 - Duration: Extra fast (100ms) - Easing: Sharp - Usage: All buttons - Implementation: CSS or JS animation - **Toggle Switch** - Thumb translation + background color - Duration: Fast (200ms) - Easing: Standard - Usage: Boolean settings - Implementation: CSS transitions - **Input Focus** - Border/shadow transition - Duration: Fast (200ms) - Easing: Decelerate - Usage: Form fields - Implementation: CSS transitions ## Mobile-Specific Guidelines ### Touch Interaction - **Minimum Target Size** - Primary targets: 48px - Secondary targets: 44px - Minimum spacing: 8px - Hit slop extension: 8-12px - Form controls: 44px height - **Touch Feedback** - Visual: Opacity/scale change - Haptic: Light impact (iOS) - Audio: None by default - Duration: 100ms maximum - Consistency across similar elements ### Gesture Patterns #### Common Gestures - **Tap** - Action: Select, activate - Feedback: Visual highlight - Duration: Instant - Components: Buttons, list items - Implementation: TouchableOpacity, Pressable - **Long Press** - Action: Context menu, selection mode - Feedback: Visual + haptic - Duration: 500ms - Components: List items, cards - Implementation: Custom gesture handlers - **Swipe** - Action: Dismiss, reveal actions - Feedback: Content follows finger - Threshold: 30% of width - Components: List items, cards - Implementation: Custom gesture handlers - **Drag** - Action: Reorder, resize - Feedback: Element follows finger - Constraint: Within container - Components: List items, sliders - Implementation: Custom gesture handlers - **Pinch** - Action: Zoom, scale - Feedback: Content scales with fingers - Limits: Min/max scale (0.5-3.0) - Components: Images, maps - Implementation: Custom gesture handlers #### Custom Patterns - **Pull to Refresh** - Activation threshold: 25% of header height - Visual indicator: Spinner, custom animation - Haptic: Success (iOS) - Components: Lists, content screens - Implementation: RefreshControl - **Swipe to Delete** - Reveal threshold: 30% of width - Confirm threshold: 60% of width - Visual cue: Red background, delete icon - Haptic: None until commit - Implementation: Custom swipeable component ### Platform Adaptations - **iOS Specifics** - Navigation: Back swipe gesture - Tab bar: Bottom placement - Action sheets: Slide up - Typography: San Francisco - Components: Follow iOS design patterns - **Android Specifics** - Navigation: Hardware back support - Tab bar: Material design patterns - Dialogs: Material design - Typography: Roboto - Components: Follow Material design patterns - **Web Specifics** - Navigation: Browser history integration - Input: Keyboard navigation support - Hover states: Implemented - Typography: System fonts - Components: Web-appropriate patterns ## Accessibility Guidelines ### Visual Accessibility - **Color Contrast** - Text: 4.5:1 against background - Large text: 3:1 against background - UI components: 3:1 against adjacent colors - Focus indicators: 3:1 against background - Icons: 3:1 against background - **Text Sizing** - Support dynamic type (iOS) - Support font scaling (Android) - Minimum 14sp base size - Test with larger text settings - Maintain layout with larger text - **Focus States** - Visible focus indicators - High contrast focus styles - Logical focus order - Keyboard navigation support - Touch target highlighting ### Screen Reader Support - **Labeling** - Meaningful accessibilityLabel - Descriptive accessibilityHint - Appropriate accessibilityRole - Group related elements - Context-aware descriptions - **Interactive Elements** - Clear touch targets - Appropriate accessibilityTraits - State descriptions (selected, disabled) - Error messaging - Success confirmation - **Navigation** - Logical reading order - Screen reader focus control - Landmark regions - Skip navigation options - Consistent patterns ### Inclusive Design - **Multiple Interaction Methods** - Touch support - Keyboard navigation - Voice control compatibility - Switch control support - Gesture alternatives - **Reduced Motion** - Respect prefers-reduced-motion - Essential animation only - No auto-playing content - Static alternatives - No parallax effects - **Cognitive Considerations** - Clear, simple language - Consistent patterns - Error prevention - Undo capability - Progress indicators ## Implementation Patterns ### Web Applications - Use semantic HTML elements for proper structure - Implement responsive breakpoints based on layout guidelines - Apply fluid typography and spacing - Use CSS variables for theming and consistency - Implement keyboard navigation and focus management ### React/React Native - Structure components following atomic design - Use styled components or stylesheet patterns consistently - Implement motion with appropriate libraries (Framer Motion, Reanimated) - Handle platform-specific adaptation with custom hooks - Build accessible components with proper ARIA roles ### Mobile Native - Implement platform-specific UI adaptations - Use native navigation patterns - Handle gestures with appropriate libraries - Optimize for touch interaction - Implement proper permission handling ## Image Guidelines ### Photography - Use high-quality, professionally shot images - Maintain consistent style across all imagery - Prefer images with natural lighting - Avoid overly staged or artificial-looking photos - Use diverse and inclusive representation ### Illustrations - Maintain consistent style with brand identity - Use illustrations to simplify complex concepts - Scale appropriately across device sizes - Ensure accessibility with proper alt text - Consider animation for key illustrations ### Icons - Use consistent icon set (Lucide) - Maintain uniform weight and style - Size appropriately for context - Provide text labels where possible - Ensure sufficient contrast ## Branding Integration ### Logo Usage - Maintain clear space around logo - Use appropriate size for context - Avoid stretching or distorting - Use approved color variations - Apply consistently across platforms ### Brand Colors - Use primary brand colors for key elements - Apply secondary palette for supporting elements - Maintain consistent color application - Follow accessibility guidelines - Consider color meaning and psychology ### Voice and Tone - Professional but approachable - Clear and concise - Consistent terminology - Inclusive and respectful language - Helpful and solution-oriented ## Implementation Examples ### Component Examples ```jsx // Button Component const Button = ({ children, variant = "primary", size = "medium", disabled = false, ...props }) => { return ( ); }; // Card Component const Card = ({ children, padding = true }) => { return (