Tous les paquets open source
InterfaceSwift

SwiftUI-Design-System-Pro

Tokens de design, un moteur de thème et des composants SwiftUI testés pour les plateformes Apple

26ÉtoilesDernière version: v2.0.0Mis à jour: 15 octobre 2026
Plateformes:iOS 17macOS 14tvOS 17watchOS 10visionOS 1

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

swift
1import DesignSystemPro
2import SwiftUI
3 
4struct ContentView: View {
5 @State private var notificationsOn = true
6 
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

swift
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

text
1https://github.com/muhittincamdali/SwiftUI-Design-System-Pro.git

Captures d'écran

Écran des composants de l'app d'exemple en mode clair
Écran des composants de l'app d'exemple en mode sombre
Variantes et tailles de DSButton rendues en mode clair
Variantes et tailles de DSButton rendues en mode sombre
Badges et avatars en mode clair
Badges et avatars en mode sombre
Composants de carte en mode clair
Interrupteurs, cases à cocher et boutons radio en mode clair
Toasts et chargeurs squelettes en mode sombre

Chronologie

  1. Dépôt ouvert avec les premières vues DSButton et DSCard

  2. 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

  3. Un nettoyage a remplacé la plupart des sources par des fichiers espace réservé

  4. Reconstruit en 2.0.0 : tokens, moteur de thème et composants restaurés, corrigés et couverts par des suites Swift Testing

Liens

Article associé

Lire l'article