Skip to content

muhittincamdali/SwiftUI-Design-System-Pro

🎨 SwiftUI Design System Pro

CI

Swift iOS Xcode SwiftUI Design System Components Typography Colors Spacing Accessibility Animation Responsive Architecture Swift Package Manager CocoaPods

πŸ† Professional SwiftUI Design System

🎨 Enterprise-Grade Design Components

πŸ“± Consistent & Beautiful UI


πŸ“‹ Table of Contents


πŸš€ Overview

SwiftUI Design System Pro is the most advanced, comprehensive, and professional design system framework for SwiftUI applications. Built with enterprise-grade standards and modern design principles, this framework provides consistent, beautiful, and accessible UI components for iOS applications.

🎯 What Makes This Design System Special?

  • 🎨 Design Tokens: Centralized colors, typography, spacing, and design tokens
  • 🧩 Reusable Components: Pre-built, customizable UI components
  • β™Ώ Accessibility: Full accessibility support for all components
  • πŸ“± Responsive: Adaptive layouts for all device sizes
  • πŸŒ™ Dark Mode: Automatic dark mode support
  • 🌍 Localization: Multi-language support for global applications
  • ⚑ Performance: Optimized for speed and memory efficiency
  • 🎯 Consistency: Unified design language across applications

✨ Key Features

🎨 Design Tokens

  • Color System: Comprehensive color palette with semantic naming
  • Typography: Complete typography scale with font families
  • Spacing: Consistent spacing scale and layout system
  • Shadows: Elevation and depth system
  • Borders: Border radius and stroke system
  • Animations: Standardized animation curves and durations
  • Breakpoints: Responsive design breakpoints
  • Icons: Icon system with consistent sizing

🧩 Components

  • Buttons: Primary, secondary, and tertiary button styles
  • Cards: Content containers with various styles
  • Forms: Input fields, text areas, and form validation
  • Navigation: Navigation bars, tabs, and breadcrumbs
  • Modals: Dialogs, sheets, and popover components
  • Lists: List views with various item styles
  • Charts: Data visualization components
  • Feedback: Alerts, toasts, and progress indicators

β™Ώ Accessibility

  • VoiceOver Support: Full VoiceOver compatibility
  • Dynamic Type: Automatic text scaling
  • High Contrast: High contrast mode support
  • Reduce Motion: Respect user motion preferences
  • Color Blindness: Color-blind friendly design
  • Keyboard Navigation: Keyboard accessibility
  • Screen Reader: Screen reader optimization
  • Focus Management: Proper focus handling

πŸ“± Responsive Design

  • Adaptive Layouts: Responsive layouts for all screen sizes
  • Safe Areas: Proper safe area handling
  • Orientation: Portrait and landscape support
  • Device Types: iPhone, iPad, and Mac support
  • Split Views: Multi-column layouts
  • Overlays: Modal and overlay positioning
  • Scaling: Automatic content scaling
  • Constraints: Flexible layout constraints

🎨 Design Tokens

Color System

// Color tokens
struct AppColors {
    // Primary colors
    static let primary = Color("Primary")
    static let primaryLight = Color("PrimaryLight")
    static let primaryDark = Color("PrimaryDark")
    
    // Secondary colors
    static let secondary = Color("Secondary")
    static let secondaryLight = Color("SecondaryLight")
    static let secondaryDark = Color("SecondaryDark")
    
    // Semantic colors
    static let success = Color("Success")
    static let warning = Color("Warning")
    static let error = Color("Error")
    static let info = Color("Info")
    
    // Neutral colors
    static let background = Color("Background")
    static let surface = Color("Surface")
    static let text = Color("Text")
    static let textSecondary = Color("TextSecondary")
}

// Usage in SwiftUI
struct ContentView: View {
    var body: some View {
        VStack {
            Text("Hello World")
                .foregroundColor(AppColors.primary)
                .background(AppColors.background)
        }
    }
}

Typography System

// Typography tokens
struct AppTypography {
    // Font families
    static let primaryFont = Font.system(.body, design: .default)
    static let secondaryFont = Font.system(.caption, design: .rounded)
    
    // Text styles
    static let displayLarge = Font.system(.largeTitle, design: .default, weight: .bold)
    static let displayMedium = Font.system(.title, design: .default, weight: .semibold)
    static let displaySmall = Font.system(.title2, design: .default, weight: .medium)
    
    static let headlineLarge = Font.system(.title3, design: .default, weight: .semibold)
    static let headlineMedium = Font.system(.headline, design: .default, weight: .medium)
    static let headlineSmall = Font.system(.subheadline, design: .default, weight: .medium)
    
    static let bodyLarge = Font.system(.body, design: .default, weight: .regular)
    static let bodyMedium = Font.system(.callout, design: .default, weight: .regular)
    static let bodySmall = Font.system(.caption, design: .default, weight: .regular)
    
    static let labelLarge = Font.system(.caption, design: .default, weight: .medium)
    static let labelMedium = Font.system(.caption2, design: .default, weight: .medium)
    static let labelSmall = Font.system(.caption2, design: .default, weight: .regular)
}

// Usage in SwiftUI
struct TypographyExample: View {
    var body: some View {
        VStack(spacing: 16) {
            Text("Display Large")
                .font(AppTypography.displayLarge)
            
            Text("Headline Medium")
                .font(AppTypography.headlineMedium)
            
            Text("Body Medium")
                .font(AppTypography.bodyMedium)
        }
    }
}

Spacing System

// Spacing tokens
struct AppSpacing {
    static let xs: CGFloat = 4
    static let sm: CGFloat = 8
    static let md: CGFloat = 16
    static let lg: CGFloat = 24
    static let xl: CGFloat = 32
    static let xxl: CGFloat = 48
    static let xxxl: CGFloat = 64
}

// Usage in SwiftUI
struct SpacingExample: View {
    var body: some View {
        VStack(spacing: AppSpacing.md) {
            Text("Item 1")
                .padding(.horizontal, AppSpacing.lg)
                .padding(.vertical, AppSpacing.md)
            
            Text("Item 2")
                .padding(.horizontal, AppSpacing.lg)
                .padding(.vertical, AppSpacing.md)
        }
        .padding(AppSpacing.xl)
    }
}

🧩 Components

Button Components

// Primary button
struct PrimaryButton: View {
    let title: String
    let action: () -> Void
    
    var body: some View {
        Button(action: action) {
            Text(title)
                .font(AppTypography.labelLarge)
                .foregroundColor(.white)
                .padding(.horizontal, AppSpacing.lg)
                .padding(.vertical, AppSpacing.md)
                .background(AppColors.primary)
                .cornerRadius(8)
        }
        .buttonStyle(PlainButtonStyle())
    }
}

// Secondary button
struct SecondaryButton: View {
    let title: String
    let action: () -> Void
    
    var body: some View {
        Button(action: action) {
            Text(title)
                .font(AppTypography.labelLarge)
                .foregroundColor(AppColors.primary)
                .padding(.horizontal, AppSpacing.lg)
                .padding(.vertical, AppSpacing.md)
                .background(Color.clear)
                .overlay(
                    RoundedRectangle(cornerRadius: 8)
                        .stroke(AppColors.primary, lineWidth: 1)
                )
        }
        .buttonStyle(PlainButtonStyle())
    }
}

// Usage
struct ButtonExample: View {
    var body: some View {
        VStack(spacing: AppSpacing.md) {
            PrimaryButton(title: "Primary Action") {
                print("Primary button tapped")
            }
            
            SecondaryButton(title: "Secondary Action") {
                print("Secondary button tapped")
            }
        }
        .padding(AppSpacing.lg)
    }
}

Card Components

// Basic card
struct Card: View {
    let content: AnyView
    
    init<Content: View>(@ViewBuilder content: () -> Content) {
        self.content = AnyView(content())
    }
    
    var body: some View {
        content
            .padding(AppSpacing.lg)
            .background(AppColors.surface)
            .cornerRadius(12)
            .shadow(color: Color.black.opacity(0.1), radius: 4, x: 0, y: 2)
    }
}

// Elevated card
struct ElevatedCard: View {
    let content: AnyView
    
    init<Content: View>(@ViewBuilder content: () -> Content) {
        self.content = AnyView(content())
    }
    
    var body: some View {
        content
            .padding(AppSpacing.lg)
            .background(AppColors.surface)
            .cornerRadius(12)
            .shadow(color: Color.black.opacity(0.15), radius: 8, x: 0, y: 4)
    }
}

// Usage
struct CardExample: View {
    var body: some View {
        VStack(spacing: AppSpacing.lg) {
            Card {
                VStack(alignment: .leading, spacing: AppSpacing.md) {
                    Text("Card Title")
                        .font(AppTypography.headlineMedium)
                    
                    Text("This is a basic card component with some content.")
                        .font(AppTypography.bodyMedium)
                        .foregroundColor(AppColors.textSecondary)
                }
            }
            
            ElevatedCard {
                VStack(alignment: .leading, spacing: AppSpacing.md) {
                    Text("Elevated Card")
                        .font(AppTypography.headlineMedium)
                    
                    Text("This is an elevated card with more prominent shadow.")
                        .font(AppTypography.bodyMedium)
                        .foregroundColor(AppColors.textSecondary)
                }
            }
        }
        .padding(AppSpacing.lg)
    }
}

Form Components

// Text field
struct AppTextField: View {
    let placeholder: String
    @Binding var text: String
    let icon: String?
    
    init(placeholder: String, text: Binding<String>, icon: String? = nil) {
        self.placeholder = placeholder
        self._text = text
        self.icon = icon
    }
    
    var body: some View {
        HStack(spacing: AppSpacing.sm) {
            if let icon = icon {
                Image(systemName: icon)
                    .foregroundColor(AppColors.textSecondary)
                    .frame(width: 20)
            }
            
            TextField(placeholder, text: $text)
                .font(AppTypography.bodyMedium)
                .foregroundColor(AppColors.text)
        }
        .padding(AppSpacing.md)
        .background(AppColors.surface)
        .cornerRadius(8)
        .overlay(
            RoundedRectangle(cornerRadius: 8)
                .stroke(AppColors.textSecondary.opacity(0.3), lineWidth: 1)
        )
    }
}

// Usage
struct FormExample: View {
    @State private var email = ""
    @State private var password = ""
    
    var body: some View {
        VStack(spacing: AppSpacing.lg) {
            AppTextField(
                placeholder: "Email",
                text: $email,
                icon: "envelope"
            )
            
            AppTextField(
                placeholder: "Password",
                text: $password,
                icon: "lock"
            )
            
            PrimaryButton(title: "Sign In") {
                print("Sign in tapped")
            }
        }
        .padding(AppSpacing.lg)
    }
}

🎯 Usage

Basic Setup

import SwiftUI
import DesignSystemPro

// Configure design system
struct AppDesignSystem {
    static func configure() {
        // Set up color scheme
        ColorSchemeManager.shared.configure(with: AppColors.self)
        
        // Set up typography
        TypographyManager.shared.configure(with: AppTypography.self)
        
        // Set up spacing
        SpacingManager.shared.configure(with: AppSpacing.self)
    }
}

// Use in your app
@main
struct MyApp: App {
    init() {
        AppDesignSystem.configure()
    }
    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

Component Usage

struct ContentView: View {
    var body: some View {
        NavigationView {
            ScrollView {
                VStack(spacing: AppSpacing.lg) {
                    // Header
                    Text("Design System Demo")
                        .font(AppTypography.displayMedium)
                        .foregroundColor(AppColors.primary)
                    
                    // Cards
                    Card {
                        VStack(alignment: .leading, spacing: AppSpacing.md) {
                            Text("Welcome")
                                .font(AppTypography.headlineMedium)
                            
                            Text("This is a demonstration of the design system components.")
                                .font(AppTypography.bodyMedium)
                                .foregroundColor(AppColors.textSecondary)
                        }
                    }
                    
                    // Buttons
                    VStack(spacing: AppSpacing.md) {
                        PrimaryButton(title: "Primary Action") {
                            print("Primary action")
                        }
                        
                        SecondaryButton(title: "Secondary Action") {
                            print("Secondary action")
                        }
                    }
                }
                .padding(AppSpacing.lg)
            }
            .background(AppColors.background)
            .navigationBarHidden(true)
        }
    }
}

πŸš€ Quick Start

Prerequisites

  • iOS 15.0+ with iOS 15.0+ SDK
  • Swift 5.9+ programming language
  • Xcode 15.0+ development environment
  • Git version control system
  • Swift Package Manager for dependency management

Installation

# Clone the repository
git clone https://github.com/muhittincamdali/SwiftUI-Design-System-Pro.git

# Navigate to project directory
cd SwiftUI-Design-System-Pro

# Install dependencies
swift package resolve

# Open in Xcode
open Package.swift

Swift Package Manager

Add the framework to your project:

dependencies: [
    .package(url: "https://github.com/muhittincamdali/SwiftUI-Design-System-Pro.git", from: "1.0.0")
]

Basic Setup

import SwiftUI
import DesignSystemPro

// Configure design system
struct AppDesignSystem {
    static func configure() {
        // Set up design tokens
        DesignTokenManager.shared.configure()
        
        // Set up component library
        ComponentLibrary.shared.configure()
        
        // Set up accessibility
        AccessibilityManager.shared.configure()
    }
}

// Use in your app
@main
struct MyApp: App {
    init() {
        AppDesignSystem.configure()
    }
    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

πŸ“± Usage Examples

Simple Component

struct SimpleComponentExample: View {
    var body: some View {
        VStack(spacing: AppSpacing.lg) {
            Text("Simple Component")
                .font(AppTypography.headlineMedium)
                .foregroundColor(AppColors.primary)
            
            Card {
                Text("This is a simple card component.")
                    .font(AppTypography.bodyMedium)
            }
            
            PrimaryButton(title: "Click Me") {
                print("Button tapped")
            }
        }
        .padding(AppSpacing.lg)
    }
}

Complex Layout

struct ComplexLayoutExample: View {
    var body: some View {
        NavigationView {
            ScrollView {
                LazyVStack(spacing: AppSpacing.lg) {
                    // Header section
                    VStack(alignment: .leading, spacing: AppSpacing.md) {
                        Text("Complex Layout")
                            .font(AppTypography.displayMedium)
                            .foregroundColor(AppColors.primary)
                        
                        Text("Demonstrating complex layout with design system components.")
                            .font(AppTypography.bodyMedium)
                            .foregroundColor(AppColors.textSecondary)
                    }
                    .padding(AppSpacing.lg)
                    
                    // Content cards
                    ForEach(0..<5) { index in
                        ElevatedCard {
                            VStack(alignment: .leading, spacing: AppSpacing.md) {
                                Text("Card \(index + 1)")
                                    .font(AppTypography.headlineMedium)
                                
                                Text("This is card number \(index + 1) with some content.")
                                    .font(AppTypography.bodyMedium)
                                    .foregroundColor(AppColors.textSecondary)
                                
                                HStack {
                                    SecondaryButton(title: "Action 1") {
                                        print("Action 1 for card \(index + 1)")
                                    }
                                    
                                    Spacer()
                                    
                                    PrimaryButton(title: "Action 2") {
                                        print("Action 2 for card \(index + 1)")
                                    }
                                }
                            }
                        }
                    }
                }
                .padding(AppSpacing.lg)
            }
            .background(AppColors.background)
            .navigationBarHidden(true)
        }
    }
}

πŸ”§ Configuration

Design Token Configuration

// Configure design tokens
struct DesignTokenConfig {
    static let colors = AppColors.self
    static let typography = AppTypography.self
    static let spacing = AppSpacing.self
    static let shadows = AppShadows.self
    static let borders = AppBorders.self
}

// Apply configuration
DesignTokenManager.shared.configure(with: DesignTokenConfig.self)

Component Configuration

// Configure component library
struct ComponentConfig {
    static let buttonStyles = [PrimaryButtonStyle.self, SecondaryButtonStyle.self]
    static let cardStyles = [CardStyle.self, ElevatedCardStyle.self]
    static let formStyles = [TextFieldStyle.self, TextAreaStyle.self]
}

// Apply configuration
ComponentLibrary.shared.configure(with: ComponentConfig.self)

πŸ“š Documentation

API Documentation

Comprehensive API documentation is available for all public interfaces:

Integration Guides

Examples


🀝 Contributing

We welcome contributions! Please read our Contributing Guidelines for details on our code of conduct and the process for submitting pull requests.

Development Setup

  1. Fork the repository
  2. Create feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open Pull Request

Code Standards

  • Follow Swift API Design Guidelines
  • Maintain 100% test coverage
  • Use meaningful commit messages
  • Update documentation as needed
  • Follow SwiftUI best practices
  • Implement proper error handling
  • Add comprehensive examples

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ™ Acknowledgments

  • Apple for the excellent SwiftUI framework
  • The Swift Community for inspiration and feedback
  • All Contributors who help improve this design system
  • Design Community for best practices and standards
  • Open Source Community for continuous innovation
  • iOS Developer Community for design insights
  • UX/UI Community for design inspiration

⭐ Star this repository if it helped you!


πŸ“Š Project Statistics

GitHub stars GitHub forks GitHub issues GitHub pull requests GitHub contributors GitHub last commit

🌟 Stargazers