SwiftUI-Design-System-Pro
Tokens de design, un moteur de thème et des composants SwiftUI testés pour les plateformes Apple
Licence: MIT
DesignSystemPro est un package Swift pour les apps SwiftUI qui veulent une apparence cohérente sans la construire de zéro. Il comporte des tokens de design (couleurs, typographie, espacement, bordures, ombres, mouvement), un moteur de thème avec des thèmes clair, sombre, préréglé et de marque, et environ 40 vues de composants construites sur ces tokens. Chaque token de couleur porte des valeurs claire, sombre et à fort contraste, la typographie suit Dynamic Type, et un test de rendu compare chaque groupe de composants en mode clair et sombre avec des empreintes de référence enregistrées.
Fonctionnalités
- Tokens de couleur à deux couches : une palette primitive et des rôles sémantiques, chacun avec des valeurs claire, sombre et à fort contraste
- Tokens de typographie qui s'adaptent à Dynamic Type via dsTypography(_:)
- ThemeManager suit le système ou applique un préréglage ou un thème généré à partir de couleurs de marque ; vos vues le lisent avec @Environment(\.dsTheme)
- Boutons, champs de texte (y compris recherche et OTP), interrupteurs, cases à cocher, boutons radio, cartes, badges, avatars, toasts et chargeurs squelettes
- ColorContrastUtility calcule les ratios de contraste WCAG ; les tests vérifient le texte de corps et les libellés de boutons remplis par rapport à WCAG AA dans les deux schémas de couleur
- ThemeManager et DSToastManager sont des classes @MainActor @Observable avec des initialiseurs publics, donc elles peuvent être injectées et testées
- Un seul package pour iOS, macOS, tvOS, watchOS et visionOS sans dépendance d'exécution, compilé en mode de langage Swift 6
Démarrage rapide
1import DesignSystemPro2import SwiftUI3 4struct ContentView: View {5 @State private var notificationsOn = true6 7 var body: some View {8 VStack(spacing: SpacingTokens.Content.comfortable) {9 Text("Hello, DesignSystemPro")10 .dsTypography(TypographyTokens.Heading.h2)11 12 DSStatusBadge("Ready", variant: .success)13 14 DSToggle(isOn: $notificationsOn, label: "Notifications")15 16 DSButton("Continue", isFullWidth: true) {17 notificationsOn.toggle()18 }19 }20 .padding(SpacingTokens.Layout.screenEdge)21 }22}Installation
Swift Package Manager
1dependencies: [2 .package(url: "https://github.com/muhittincamdali/SwiftUI-Design-System-Pro.git", from: "2.0.0")3],4targets: [5 .target(name: "YourApp", dependencies: [6 .product(name: "DesignSystemPro", package: "SwiftUI-Design-System-Pro")7 ])8]Xcode
1https://github.com/muhittincamdali/SwiftUI-Design-System-Pro.gitCaptures d'écran









Chronologie
Dépôt ouvert avec les premières vues DSButton et DSCard
1.0.0 étiquetée ; le code de tokens, de moteur de thème et de composants sur lequel 2.0 est basé a été écrit
Un nettoyage a remplacé la plupart des sources par des fichiers espace réservé
Reconstruit en 2.0.0 : tokens, moteur de thème et composants restaurés, corrigés et couverts par des suites Swift Testing