v0.2.0 — Per-subtree theming
The theming release: inject any Theme into a subtree and every component re-skins to it — plus the full migration that makes it possible, the style protocols, a micro-animation system, Ant Design feature parity across the catalog, and the docs/CI/test layer that took the library to reference-grade.
⚠️ Breaking
- Package renamed
GlobalUIComponents→ThemeKit;Global-prefixed public API rebranded toThemeKit. Update your SPM dependency, target product, andimport GlobalUIComponents→import ThemeKit.
Highlights
- Per-subtree theming —
.theme(_:)+EnvironmentValues.theme(defaults toTheme.shared, crash-proof). Bundled themes (ocean,sunset) + on-device generation (applyGenerated(primaryHex:)). - Singleton → environment migration complete — every component reads
@Environment(\.theme); zeroTheme.sharedcolor reads remain in components. Non-breaking and pixel-identical. - Style protocols —
.cardStyle/.statStyle/.selectStyle(theButtonStyleidiom). - Micro-animation system — toggleable theme-wide and per-component; always yields to Reduce Motion.
- Ant Design feature parity across Tooltip, Popconfirm, Upload, Timeline, Slider, InputNumber, TreeSelect, Breadcrumb, Avatar, Statistic, Table, and more.
- Tooling —
PreviewMatrix, a live Theme Injection demo, an 87-screenshot README gallery,$0local CI, and per-symbol DocC.
A regression test asserts .theme(_:) actually re-skins components and leaves Theme.shared untouched. Full suite green (163 tests).
See CHANGELOG.md for the full list.