iOS

Generated from DESIGN_SYSTEM.md

Rules

Token consumption:

  • All tokens in ios/Packages/Core/Sources/Core/Theme/AppTheme.swift
  • Colors: AppTheme.Colors.* via Color.dynamic(light:dark:) — never hardcoded hex
  • Spacing: AppTheme.Spacing.* — never raw integers (.padding(14) is prohibited)
  • Radius: AppTheme.Radius.*
  • Typography: AppTheme.Typography.* (or SwiftUI system aliases for Dynamic Type)

Component locations:

Sidebar spec (exact):

  • Header: HStack(alignment: .center) — not .baseline
  • Subtitle: font size 11pt — not 13pt
  • Nav VStack spacing: 4pt — not 8 or 10
  • Nav item vertical padding: 8pt
  • Nav item font: 14.5pt, semibold when active
  • Active bg: Color.dynamic(light: 0xEFF6FF, dark: 0x172545) (= brand-container)
  • Active text: Color.dynamic(light: 0x155CFB, dark: 0x60A5FA) (= brand-on-container)
  • Corner radius: 12pt (AppTheme.Radius.md)
  • Footer: vertical VStack(spacing: 10) — auth button 44pt height, controls 38pt height

Live specimens

Where tokens liveAll in AppTheme.swift; never raw hex or raw integers.
AppTheme.Colors
Color
AppTheme.Spacing
Spacing
AppTheme.Radius
Corner radius
AppTheme.Typography
Typography
ComponentsThe SwiftUI names the rules point to.
.cardSurface()
Flat card
CardSurfaceOverlay
Card on a gradient
Toggle + .tint(brandPrimary)
Switch
AppNavCircleButton
Back and bar buttons
.confirmationDialog
Destructive confirm
.sheet + presentationDetents
Task sheet
.redacted(reason: .placeholder)
Loading skeleton