Files
honeyDueKMP/iosApp/DESIGN_SYSTEM.md
Trey t 4c9dc56e64 Implement modern design system for iOS app
Created a comprehensive, modern design system and applied it to key views for a sleek, contemporary look.

Design System Features:
- Modern color palette with blue primary and purple accent colors
- Semantic colors for success, warning, error, and info states
- Typography scale with SF Rounded for headlines
- Spacing and radius systems for consistent layout
- Shadow utilities for depth and elevation
- Reusable button and card styles

Modernized Views:
- LoginView: Card-based layout with gradient app icon, animated focus states, gradient buttons
- HomeScreenView: Personalized greeting, modern navigation cards
- OverviewCard: Stats grid with circular icon badges and dividers
- StatView: Circular backgrounds with modern typography
- HomeNavigationCard: Gradient icon backgrounds with clean hierarchy

Key Improvements:
- Replaced hardcoded colors with design system tokens
- Added gradient accents for visual interest
- Improved spacing and typography hierarchy
- Added subtle shadows for depth
- Implemented animated focus states
- Better disabled and loading states for buttons

Documentation:
- Added DESIGN_SYSTEM.md with comprehensive usage guide
- Documented colors, typography, spacing, and component patterns
- Included migration guide for updating remaining views

All views remain separate files as requested.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-10 11:45:45 -06:00

5.3 KiB

MyCrib iOS Design System

Overview

This document outlines the modern, sleek design system implemented for the MyCrib iOS app.

Design Philosophy

  • Modern & Clean: Minimalist approach with ample white space
  • Consistent: Reusable components with unified styling
  • Accessible: High contrast ratios and readable typography
  • Delightful: Subtle animations and gradient accents

Color Palette

Primary Colors

  • Primary: #2563EB - Modern blue for primary actions
  • Primary Light: #3B82F6 - Lighter variant for gradients
  • Primary Dark: #1E40AF - Darker variant for pressed states

Accent Colors

  • Accent: #8B5CF6 - Purple for special highlights
  • Accent Light: #A78BFA - Lighter purple for gradients

Semantic Colors

  • Success: #10B981 - Green for completed/success states
  • Warning: #F59E0B - Orange for in-progress/warning states
  • Error: #EF4444 - Red for errors and destructive actions
  • Info: #3B82F6 - Blue for informational content

Neutral Colors

  • Background: #F9FAFB - Light gray for app background
  • Surface: #FFFFFF - White for cards and surfaces
  • Surface Secondary: #F3F4F6 - Light gray for secondary surfaces
  • Text Primary: #111827 - Near black for primary text
  • Text Secondary: #6B7280 - Medium gray for secondary text
  • Text Tertiary: #9CA3AF - Light gray for tertiary text
  • Border: #E5E7EB - Light gray for borders
  • Border Light: #F3F4F6 - Very light gray for subtle borders

Typography

Display (Hero Sections)

  • Display Large: 57pt, Bold, Rounded
  • Display Medium: 45pt, Bold, Rounded
  • Display Small: 36pt, Bold, Rounded

Headline (Section Headers)

  • Headline Large: 32pt, Bold, Rounded
  • Headline Medium: 28pt, Semibold, Rounded
  • Headline Small: 24pt, Semibold, Rounded

Title (Card Titles)

  • Title Large: 22pt, Semibold
  • Title Medium: 18pt, Semibold
  • Title Small: 16pt, Semibold

Body (Main Content)

  • Body Large: 17pt, Regular
  • Body Medium: 15pt, Regular
  • Body Small: 13pt, Regular

Label (Labels & Captions)

  • Label Large: 14pt, Medium
  • Label Medium: 12pt, Medium
  • Label Small: 11pt, Medium

Caption

  • Caption: 12pt, Regular

Spacing Scale

  • XXS: 4pt
  • XS: 8pt
  • SM: 12pt
  • MD: 16pt
  • LG: 24pt
  • XL: 32pt
  • XXL: 48pt
  • XXXL: 64pt

Border Radius

  • XS: 4pt
  • SM: 8pt
  • MD: 12pt
  • LG: 16pt
  • XL: 20pt
  • XXL: 24pt
  • Full: 9999pt (Circular)

Shadows

  • SM: rgba(0,0,0,0.05), radius: 2, y: 1
  • MD: rgba(0,0,0,0.1), radius: 4, y: 2
  • LG: rgba(0,0,0,0.1), radius: 8, y: 4
  • XL: rgba(0,0,0,0.15), radius: 16, y: 8

Component Patterns

Cards

  • White background (AppColors.surface)
  • Rounded corners (16pt or 20pt)
  • Subtle shadow (AppShadow.md or AppShadow.lg)
  • Padding: 16-32pt depending on content

Buttons

  • Primary: Gradient background, white text, 56pt height
  • Secondary: Light gray background, primary color text, 56pt height
  • Rounded corners: 12pt
  • Pressed state: Scale to 0.98

Text Fields

  • Light gray background (AppColors.surfaceSecondary)
  • 16pt padding
  • 12pt rounded corners
  • Focused state: Primary color border + subtle shadow
  • Icon prefix for visual context

Navigation Cards

  • Gradient icon background in rounded rectangle
  • Clear hierarchy: Title (semibold) + Subtitle (secondary color)
  • Chevron indicator
  • Hover/tap feedback

Modernization Highlights

Login Screen

  • Circular gradient app icon with shadow
  • Card-based form layout
  • Animated focus states on input fields
  • Gradient button with disabled states
  • Clean error messaging

Home Screen

  • Personalized greeting header
  • Stats overview card with icon badges
  • Modern navigation cards with gradient icons
  • Smooth scroll experience

Components

  • OverviewCard: Stats grid with dividers and icon badges
  • StatView: Circular icon backgrounds with modern typography
  • HomeNavigationCard: Gradient icons with clean layout
  • Design System: Centralized colors, typography, and spacing

Usage

Importing the Design System

import SwiftUI

// Colors
.foregroundColor(AppColors.primary)
.background(AppColors.surface)

// Typography
.font(AppTypography.headlineSmall)

// Spacing
.padding(AppSpacing.md)

// Radius
.cornerRadius(AppRadius.lg)

// Shadows
.shadow(color: AppShadow.lg.color, radius: AppShadow.lg.radius, y: AppShadow.lg.y)

// Gradients
.fill(AppColors.primaryGradient)

Button Styles

Button("Action") {
    // action
}
.buttonStyle(PrimaryButtonStyle())

Button("Cancel") {
    // action
}
.buttonStyle(SecondaryButtonStyle())

Card Style

VStack {
    // content
}
.cardStyle()  // Applies background, corners, and shadow

Future Enhancements

  • Dark mode support with adaptive colors
  • Additional component styles (chips, badges, alerts)
  • Animation utilities for transitions
  • Accessibility utilities (dynamic type, VoiceOver)
  • Custom SF Symbols integration

Migration Guide

When updating existing views:

  1. Replace hardcoded colors with AppColors.*
  2. Replace hardcoded fonts with AppTypography.*
  3. Replace hardcoded spacing with AppSpacing.*
  4. Use cardStyle() modifier for cards
  5. Apply button styles for consistency
  6. Add gradients to prominent UI elements
  7. Ensure proper spacing hierarchy