Skip to content

v0.2.0 — Per-subtree theming

Choose a tag to compare

@isamercan isamercan released this 28 Jun 14:23
70c7aae

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 GlobalUIComponentsThemeKit; Global-prefixed public API rebranded to ThemeKit. Update your SPM dependency, target product, and import GlobalUIComponentsimport ThemeKit.

Highlights

  • Per-subtree theming.theme(_:) + EnvironmentValues.theme (defaults to Theme.shared, crash-proof). Bundled themes (ocean, sunset) + on-device generation (applyGenerated(primaryHex:)).
  • Singleton → environment migration complete — every component reads @Environment(\.theme); zero Theme.shared color reads remain in components. Non-breaking and pixel-identical.
  • Style protocols.cardStyle / .statStyle / .selectStyle (the ButtonStyle idiom).
  • 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.
  • ToolingPreviewMatrix, a live Theme Injection demo, an 87-screenshot README gallery, $0 local 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.