π Professional SwiftUI Design System
π¨ Enterprise-Grade Design Components
π± Consistent & Beautiful UI
- π Overview
- β¨ Key Features
- π¨ Design Tokens
- π§© Components
- π― Usage
- π Quick Start
- π± Usage Examples
- π§ Configuration
- π Documentation
- π€ Contributing
- π License
- π Acknowledgments
- π Project Statistics
- π Stargazers
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.
- π¨ 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
- 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
- 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
- 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
- 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
// 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 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 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)
}
}
// 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)
}
}
// 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)
}
}
// 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)
}
}
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()
}
}
}
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)
}
}
}
- 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
# 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
Add the framework to your project:
dependencies: [
.package(url: "https://github.com/muhittincamdali/SwiftUI-Design-System-Pro.git", from: "1.0.0")
]
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()
}
}
}
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)
}
}
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)
}
}
}
// 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)
// 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)
Comprehensive API documentation is available for all public interfaces:
- Design Tokens API - Color, typography, spacing tokens
- Components API - UI component library
- Button API - Button component implementations
- Card API - Card component implementations
- Form API - Form component implementations
- Navigation API - Navigation components
- Accessibility API - Accessibility features
- Responsive API - Responsive design features
- Getting Started Guide - Quick start tutorial
- Design Tokens Guide - Design token usage
- Components Guide - Component usage
- Accessibility Guide - Accessibility features
- Responsive Design Guide - Responsive layouts
- Customization Guide - Customization options
- Performance Guide - Performance optimization
- Basic Examples - Simple component implementations
- Advanced Examples - Complex component scenarios
- Layout Examples - Layout implementations
- Accessibility Examples - Accessibility features
- Responsive Examples - Responsive design examples
- Customization Examples - Customization examples
We welcome contributions! Please read our Contributing Guidelines for details on our code of conduct and the process for submitting pull requests.
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open Pull Request
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
- 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!