A modular Swift package for building Apple-platform apps — shared foundation, networking, architecture, adaptive UI, media, and on-device intelligence.
1188 tests · 212 suites · 8 modules · Swift 6.3 strict concurrency · DocC on every public API
┌─────────────────────────────────────────────────┐
│ Prism │ ← umbrella re-export
├──────────┬──────────┬───────────┬───────────────┤
│ PrismUI │PrismVideo│PrismIntel.│PrismArchitect.│ ← feature modules
├──────────┴──────────┴───────────┴───────────────┤
│ PrismNetwork │ ← transport layer
├─────────────────────────────────────────────────┤
│ PrismFoundation │ ← zero-dep core
└─────────────────────────────────────────────────┘
| Module | Role |
|---|---|
PrismFoundation |
Entities, logging, analytics, locale, resources, defaults, formatting |
PrismNetwork |
HTTP client, socket transport, endpoints, caching, FIX protocol |
PrismArchitecture |
Router, store, reducer, middleware — unidirectional data flow |
PrismUI |
Token-driven design system — 80+ components, 4 themes, Apple HIG |
PrismVideo |
Video download helpers and media entities |
PrismIntelligence |
CreateML training, CoreML inference, Apple Intelligence, remote LLM |
PrismCapabilities |
Apple Developer Program capability wrappers — StoreKit, HealthKit, CloudKit, Apple Pay, CallKit, CoreBluetooth, NFC, Camera, GameKit, Location, Motion, Biometrics, App Intents, Nearby Interaction, MultipeerConnectivity |
Prism |
Umbrella — import Prism gives you everything |
// Package.swift
dependencies: [
.package(url: "https://github.com/rafaelesantos/prism.git", from: "1.0.0")
]import Prism // everything
import PrismUI // just design system
import PrismNetwork // just networkingRequires: Swift 6.3 · Xcode 16.4+ · iOS 26 · macOS 26 · tvOS 26 · watchOS 26 · visionOS 26
Six semantic token types drive every visual decision:
| Token | Purpose | Values |
|---|---|---|
ColorToken |
28 semantic color roles | brand, surfaces, content, feedback |
TypographyToken |
Text styles with weights | largeTitle → caption2 |
SpacingToken |
4pt grid system | 0–64pt |
RadiusToken |
Continuous corners | sm(8) → full(1000) |
ElevationToken |
Shadow hierarchy | flat → overlay |
MotionToken |
Reduce-motion-aware | instant → expressive |
| Theme | Description |
|---|---|
DefaultTheme |
Apple HIG system colors, auto light/dark |
DarkTheme |
Always-dark, ignores system appearance |
HighContrastTheme |
Maximum contrast for accessibility |
BrandTheme |
Configurable primary/secondary/accent |
// Apply theme
ContentView()
.prismTheme(DefaultTheme())
// Custom brand
let theme = BrandTheme(primary: .indigo, secondary: .mint, accent: .orange)Primitives: Button, Icon, AsyncImage, TextField, Card, Tag, Chip, Divider, LoadingState, ProgressBar, Avatar
Composites: Alert, Banner, Carousel, SearchBar, Toolbar, Toast, Menu, BottomSheet, Tooltip, EmptyState, CountdownTimer
Forms: Toggle, Picker, Slider, SecureField, DatePicker, SegmentedControl, Stepper, TextArea, Rating, PinField, ColorWell
Lists: Row, DisclosureRow, List, Badge, SwipeActions
Layout: AdaptiveStack, Grid, Section, Scaffold, Spacer
Navigation: NavigationView, TabView, Sheet
// Themed button with async action
PrismButton("Sign In", variant: .filled) {
await viewModel.signIn()
}
// Validated text field
PrismTextField("Email", text: $email, validation: .pattern(
"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}",
"Enter a valid email"
))
// Semantic modifiers
Text("Welcome")
.prismFont(.title)
.prismColor(.onBackground)
.prismPadding(.lg)
.prismSurface(.surfaceSecondary, radius: .lg)
// Auto-dismissing toast
.prismToast(isPresented: $showToast, "Saved!", icon: "checkmark", style: .success)
// Avatar with status
PrismAvatar(initials: "JD", size: .large, status: .online)let store = PrismStore(
initialState: AppState(),
reducer: appReducer
)
store.send(.loadData)ContentView()
.prismAnalytics(FirebaseAnalytics())
// Track screen views
ContentView()
.prismTrackScreen("Home")// Train from any Codable
let training = PrismCodableTrainingData(data: houses)
let result = await training.trainRegressor(
id: "price", name: "House Price", target: \.price
)
// Predict
let client = try await PrismIntelligenceClient.local(modelID: "price")
let prediction = try await client.regress(
features: ["rooms": .int(3), "area": .double(120)]
)
// Remote LLM
let remote = PrismIntelligenceClient.remote(
endpoint: url, token: "sk-...", model: "gpt-4"
)
let answer = try await remote.generate("Summarize this document.")make format # swift-format in-place
make lint # strict lint check
make build # build all targets + tests
make test # test with coverage
make validate # format → lint → build → test
make docs # generate DocC
make docs-serve # DocC + local server at :8000| Check | Status |
|---|---|
| Tests | 275+ across 44 suites |
| Concurrency | Strict — Sendable, @MainActor, actor isolation |
| Formatting | swift-format enforced in CI |
| Docs | DocC with guides: Getting Started, Tokens, Components, Theming |
| Themes | 4 built-in + custom theme protocol |
| Accessibility | VoiceOver, Dynamic Type, contrast ratios, reduce motion |
| Snapshot Testing | Built-in PrismSnapshotTest for visual regression |
| WCAG | Contrast ratio validation (AA/AAA) via PrismAccessibilityTest |
swift · swiftui · ios · macos · swift-package-manager · clean-architecture · design-system · coreml · accessibility · localization · analytics