ui-style-kit-css 2.1.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +169 -54
  3. package/STYLE-MAP.md +55 -0
  4. package/dist/ui-style-kit.css +23744 -7015
  5. package/dist/ui-style-kit.min.css +2 -2
  6. package/dist/ui-style-kit.visual.css +22948 -6669
  7. package/dist/ui-style-kit.visual.min.css +2 -2
  8. package/dist/ui-style-kit.with-bridge.css +23941 -7205
  9. package/dist/ui-style-kit.with-bridge.min.css +2 -2
  10. package/dist/visual/art-deco.css +4776 -0
  11. package/dist/visual/bauhaus.css +1894 -147
  12. package/dist/visual/bento.css +1910 -166
  13. package/dist/visual/brutalism.css +1853 -98
  14. package/dist/visual/clay.css +4789 -0
  15. package/dist/visual/cyberpunk.css +1840 -94
  16. package/dist/visual/data-terminal.css +4804 -0
  17. package/dist/visual/editorial-luxe.css +4804 -0
  18. package/dist/visual/industrial-utility.css +4797 -0
  19. package/dist/visual/maximalist.css +1862 -112
  20. package/dist/visual/minimal-saas.css +1886 -147
  21. package/dist/visual/neo-noir.css +4790 -0
  22. package/dist/visual/neumorphism.css +1896 -151
  23. package/dist/visual/organic-modern.css +4767 -0
  24. package/dist/visual/paper-editorial.css +4799 -0
  25. package/dist/visual/retro-glass.css +1859 -93
  26. package/dist/visual/retrofuturism.css +1852 -113
  27. package/dist/visual/tactile.css +1851 -111
  28. package/dist/visual/technical-blueprint.css +4791 -0
  29. package/dist/visual/y2k.css +1840 -92
  30. package/docs/BRIDGE-MIGRATION.md +20 -0
  31. package/docs/ECOSYSTEM.md +39 -4
  32. package/docs/PUBLISHING.md +38 -13
  33. package/docs/STYLE-GUIDE.md +53 -13
  34. package/docs/TOKENS.md +50 -1
  35. package/docs/superpowers/plans/2026-08-29-preset-identity-system-refinement.md +649 -0
  36. package/docs/superpowers/specs/2026-08-29-preset-identity-system-refinement-design.md +212 -0
  37. package/manifest.json +482 -2
  38. package/package.json +77 -7
  39. package/styles/art-deco.css +683 -0
  40. package/styles/bauhaus.css +237 -3
  41. package/styles/bento.css +266 -7
  42. package/styles/brutalism.css +235 -3
  43. package/styles/clay.css +692 -0
  44. package/styles/components.css +608 -14
  45. package/styles/content-overflow.css +423 -4
  46. package/styles/cyberpunk.css +234 -3
  47. package/styles/data-terminal.css +691 -0
  48. package/styles/editorial-luxe.css +687 -0
  49. package/styles/industrial-utility.css +690 -0
  50. package/styles/interactive-surface-bridge.css +17 -10
  51. package/styles/interactive-surface-theme.css +17 -8
  52. package/styles/maximalist.css +238 -4
  53. package/styles/minimal-saas.css +234 -3
  54. package/styles/native-elements.css +80 -12
  55. package/styles/neo-noir.css +690 -0
  56. package/styles/neumorphism.css +234 -3
  57. package/styles/organic-modern.css +683 -0
  58. package/styles/paper-editorial.css +688 -0
  59. package/styles/retro-glass.css +242 -3
  60. package/styles/retrofuturism.css +233 -3
  61. package/styles/tactile.css +235 -3
  62. package/styles/technical-blueprint.css +686 -0
  63. package/styles/theme-colors.css +796 -5
  64. package/styles/y2k.css +237 -3
package/CHANGELOG.md CHANGED
@@ -2,6 +2,60 @@
2
2
 
3
3
  All notable changes to **UI Style Kit CSS** will be documented here.
4
4
 
5
+ ## [Unreleased]
6
+
7
+ ## [2.3.0] - 2026-08-29
8
+
9
+ ### Added
10
+
11
+ - Added nine new first-class UI systems: `editorial-luxe`, `organic-modern`, `industrial-utility`, `technical-blueprint`, `art-deco`, `clay`, `data-terminal`, `paper-editorial`, and `neo-noir`, bringing the library to 20 presets.
12
+ - Added ten shared color themes—`chrome-navy`, `recycled-emerald`, `industrial-orange`, `performance-red`, `heritage-brass`, `service-blue-red`, `newsprint-crimson`, `foundry-amber`, `soft-orchid`, and `electric-noir`—with light, dark, and contrast modes, bringing the shared theme set to 20.
13
+ - Added a universal commercial/marketing component vocabulary across all 20 UI systems: service and feature cards, card media and accent edges, icon medallions, clipped and heavy-outline buttons, seal badges, feature strips/items, callout bars, eyebrow text, and media scrims.
14
+ - Added a live demo showcase and contract tests for the new cross-style component suffixes and published bundles.
15
+ - Expanded the manifest-driven browser matrix to 20 presets × 20 themes × 3 modes × 3 engines (3,600 combinations).
16
+ - Added manifest-generated shared containment and expanded-component inventories so all 20 presets stay synchronized with the public registry.
17
+ - Added distinct preset-owned loader geometry for all 20 spinner utilities and native or component busy-button indicators.
18
+ - Added a declared modern-browser support floor, exactly pinned Browserslist resolution, and a CSS Tree-backed `check:compat` release gate for every generated entrypoint.
19
+
20
+ ### Changed
21
+
22
+ - Gave all 20 presets distinct CTA, card, medallion, strip, scrim, and callout identities while preserving the existing class names and theme color roles.
23
+ - Separated filled service actions from framed callout actions so `button-cut` and `button-outline-heavy` express independent, preset-coherent roles instead of sharing one generic CTA silhouette.
24
+ - Reworked the commercial and utility demo specimens to use active theme tokens, explicit utility composition, and container-aware native typography.
25
+ - Aligned ecosystem verification and documentation with `layout-style-css@3.1.0` and `interactive-surface-css@1.6.0`, including the current exported manifests and `foundation.css`.
26
+ - Expanded the commercial component documentation with composition, accessibility, and responsive-behavior guidance.
27
+ - Routed every Lightning CSS formatting and minification pass through the shared package Browserslist targets, with stable fallbacks and guarded progressive enhancements.
28
+
29
+ ### Fixed
30
+
31
+ - Prevented the outer showcase grid from leaking its twelve-column rules into the nested commercial component grid.
32
+ - Kept busy indicators separated from labels and contained inside native busy buttons.
33
+ - Removed the CTA modifier specificity conflict so `button-cut` geometry can express each preset instead of falling back to a generic shape.
34
+ - Removed obsolete Layout `integrations/ui-style-kit.css` and `legacy.css` expectations from packed ecosystem verification.
35
+ - Prevented shared switch foundations from shrinking the track or applying a second thumb translation over the preset-owned checked position.
36
+ - Replaced the stretched faceted Clay CTA with a compact, softly clipped inflated pill that matches Clay controls.
37
+ - Strengthened light-mode component edges to a verified 3:1 non-text contrast minimum without changing semantic theme colors.
38
+ - Prevented editable-field background paint from leaking onto button, submit, and reset inputs when the Interactive Surface bridge adds its hook class.
39
+ - Corrected the remaining light-mode soft-surface and primary-hover contrast failures and expanded the manifest-driven audit to all 1,200 preset, theme, and mode states.
40
+ - Kept preset eyebrow and native strong-text rules from overriding the high-contrast foreground inside media-scrim captions.
41
+ - Replaced Bento's fixed six-column feature helper with intrinsic, container-aware tiles so metric labels do not collapse into narrow vertical text columns.
42
+ - Normalized semantic action inputs independently of bridge hook classes, stopped read-only field paint from overriding action controls, and kept deprecated bridge foreground/background swaps atomic so transient states remain readable.
43
+ - Restored prefixed Retro Glass `backdrop-filter` output, removed obsolete intrinsic CTA sizing diagnostics, and guarded `color-mix()`, `text-wrap`, and `forced-color-adjust` enhancements for the declared support floor.
44
+
45
+ ## [2.2.0] - 2026-08-09
46
+
47
+ ### Added
48
+
49
+ - Added the public 12-token shared semantic producer contract and its machine-readable manifest inventory for companion and third-party consumers.
50
+ - Implemented the manifest-backed semantic component API with 29 exact `.ui-*` selectors, context-constrained `data-ui-variant` values, and unchanged-markup runtime switching across all 11 presets.
51
+ - Added a persistent semantic component demo whose DOM nodes and classes remain stable through every preset switch.
52
+ - Documented native `<dialog>` as the neutral modal/dialog fallback without inventing `.ui-modal` or `.ui-dialog` selectors.
53
+
54
+ ### Changed
55
+
56
+ - Clarified that generated default, visual, with-bridge, and focused entrypoints provide semantic aliases, while raw preset sources, partial extras, and deprecated structural aliases remain prefixed compatibility or advanced APIs.
57
+ - Preserved `.ui-spinner` and `.ui-tooltip` as retained hooks while generating the other 27 selectors from existing preset declarations.
58
+
5
59
  ## [2.1.0] - 2026-07-20
6
60
 
7
61
  ### Added
package/README.md CHANGED
@@ -5,17 +5,17 @@
5
5
 
6
6
  **UI Style Kit CSS** is a CSS-only theme and UI style preset library for accessible websites, dashboards, admin interfaces, and customer-facing pages.
7
7
 
8
- It is separate from, but complementary to, **Interactive Surface CSS**. Use **UI Style Kit CSS** for visual identity, color themes, UI presets, layout mood, and native HTML styling. Use **Interactive Surface CSS** for interaction-state animation systems and surface behavior.
8
+ It is separate from, but complementary to, **Interactive Surface CSS** and **Layout Style CSS**. Use **UI Style Kit CSS** for visual identity, color themes, UI presets, layout mood, and native HTML styling. Use **Interactive Surface CSS** for interaction-state animation systems and surface behavior. Use **Layout Style CSS** for responsive layout wrappers, grid systems, macro-structure positioning, and container scaffolding.
9
9
 
10
10
  ## Current Release
11
11
 
12
- `v2.1.0` introduces a visual-only public API, a machine-readable capability manifest, a five-layer build architecture, and a canonical token-only Interactive Surface theme bridge. Existing default and focused entrypoints remain compatible, including their deprecated structural helpers, and parser-based minification remains exactly pinned.
12
+ `v2.3.0` expands the library to 20 UI style systems and 20 shared color schemes, adds a universal commercial component vocabulary and a declared modern-browser support floor, and grows the browser matrix to 3,600 preset/theme/mode/engine combinations. Existing default, focused, visual-only, and bridge entrypoints remain compatible, and parser-based minification remains exactly pinned.
13
13
 
14
14
  [Showcase website](https://foscat.github.io/ui-style-kit-css/)
15
15
 
16
16
  ## How the library fits together
17
17
 
18
- UI Style Kit CSS owns visual identity: themes, component paint, native HTML styling, and the prefixed class API. It can be used alone, or paired with the sibling libraries when a project needs structural layout primitives or richer interaction-state behavior.
18
+ UI Style Kit CSS owns visual identity: themes, semantic `.ui-*` component paint, native HTML styling, and the advanced prefixed class API. It can be used alone, or paired with the sibling libraries when a project needs structural layout primitives or richer interaction-state behavior.
19
19
 
20
20
  ```mermaid
21
21
  flowchart LR
@@ -50,20 +50,24 @@ These libraries stay standalone, but the current aligned set is:
50
50
 
51
51
  | Library | Aligned version | Owns |
52
52
  |---|---:|---|
53
- | `ui-style-kit-css@2.1.0` | staged source target | visual identity, color themes, UI paint, native HTML styling, content wrapping, and bridge tokens |
54
- | `interactive-surface-css@1.5.0` | published release | interaction-state primitives, surface behavior, state layers, and input affordances |
55
- | `layout-style-css@2.1.0` | staged source target | structural wrappers, grids, sections, app shells, and layout recipes |
53
+ | `ui-style-kit-css@2.3.0` | current release target | visual identity, color themes, UI paint, native HTML styling, content wrapping, and bridge tokens |
54
+ | `interactive-surface-css@1.6.0` | compatible state release | interaction-state primitives, surface behavior, state layers, and input affordances |
55
+ | `layout-style-css@3.1.0` | compatible structural release | structural wrappers, grids, sections, app shells, and layout recipes |
56
56
 
57
- UI Style Kit `2.1.0` and Layout Style `2.1.0` remain staged source targets until their release approvals complete. Interactive Surface `1.5.0` is the released companion state engine for this upgrade path.
57
+ UI Style Kit `2.3.0` is the current release target and is verified with Interactive Surface `1.6.0`. Layout Style `3.1.0` is the compatible structural release. The validated minimum remains `ui-style-kit-css@2.1.0`, `interactive-surface-css@1.5.0`, and `layout-style-css@3.0.0`.
58
58
 
59
59
  Use one, two, or all three depending on the project. UI Style Kit does not require the sibling libraries, and the optional bridge only maps shared `--usk-*` roles into Interactive Surface tokens when consumers import it.
60
60
 
61
+ Every UI Style Kit visual or preset entrypoint also publishes a small, fully typed `--ui-*` semantic handshake. These tokens let companion libraries and third-party themes share paint, control geometry, focus, and default motion without depending on preset-specific names. They are optional fallbacks for consumers: package-specific tokens still take precedence, and standalone packages keep their existing legacy and literal defaults when the handshake is absent. See the [token contract](docs/TOKENS.md#shared-semantic-token-handshake) for the exact 12-token inventory.
62
+
63
+ A third-party producer can load its semantic token stylesheet before `interactive-surface-css/standalone-preset.css`. UI Style Kit's visual entrypoints support the same portable composition; keep the canonical theme bridge with `state-core.css` when specialized variant, level, and icon-role mappings are required.
64
+
61
65
  For import order, ownership boundaries, and adoption paths, see the [Ecosystem guide](docs/ECOSYSTEM.md).
62
66
 
63
67
  ## Features
64
68
 
65
- - 11 UI style systems
66
- - 10 shared color schemes
69
+ - 20 UI style systems
70
+ - 20 shared color schemes
67
71
  - `light`, `dark`, and `contrast` modes
68
72
  - Combined CSS bundle and per-style production imports
69
73
  - Visual-only full and focused entrypoints for consumer-owned layouts
@@ -77,7 +81,7 @@ For import order, ownership boundaries, and adoption paths, see the [Ecosystem g
77
81
  - Visible tooltip classes and native `[role="tooltip"]` styling inside each UI scope
78
82
  - Font-family override variables for body, headings, controls, and mono text
79
83
  - Canonical token-and-paint-only theme bridge for `interactive-surface-css/state-core.css`
80
- - Deprecated stateful bridge exports retained unchanged for backward compatibility
84
+ - Deprecated stateful bridge exports retained for backward compatibility
81
85
  - Reduced-motion, high-contrast, forced-colors, and print support
82
86
  - Cascade-layered CSS for easier consumer overrides
83
87
  - No runtime dependencies
@@ -88,64 +92,67 @@ For import order, ownership boundaries, and adoption paths, see the [Ecosystem g
88
92
  npm install ui-style-kit-css
89
93
  ```
90
94
 
95
+ ### v2 distribution defaults
96
+
97
+ The default bundle remains unchanged for all v2 releases. The root package and canonical `.` export resolve to the readable `dist/ui-style-kit.css`; the canonical `./min.css` export resolves to the minified `dist/ui-style-kit.min.css`. The focused `visual/<preset>.css` entrypoints remain available for applications fixed to one visual system.
98
+
99
+ `ui-style-kit-css/visual.css` is the recommended entrypoint when consumers own layout. Making `visual.css` the package default remains only a v3 proposal; no v2 export is redirected as part of that proposal.
100
+
101
+ The `./css`, `./css.css`, and `./min` exports are redundant deprecated compatibility aliases. They remain available throughout v2 with their existing targets: `./css` and `./css.css` match `.`, while `./min` matches `./min.css`. New integrations should use the canonical exports.
102
+
91
103
  ## Import
92
104
 
93
- Use a single style import for production apps that use one visual system:
105
+ Use the generated default bundle for semantic components that can switch across every preset at runtime:
94
106
 
95
107
  ```js
96
- import "ui-style-kit-css/minimal-saas.css";
108
+ import "ui-style-kit-css";
97
109
  ```
98
110
 
99
- The existing focused entrypoints retain the v2 structural helpers. New integrations that already own layout should use a focused visual-only entrypoint:
111
+ Use `ui-style-kit-css/visual.css` for the same 29-selector semantic runtime API without the deprecated prefixed layout selectors. The generated default, visual, and with-bridge bundles all support all 20 `data-ui` values.
112
+
113
+ Applications fixed to one preset can use a generated focused visual entrypoint. It includes semantic aliases scoped to that preset only:
100
114
 
101
115
  ```js
102
116
  import "ui-style-kit-css/visual/minimal-saas.css";
103
117
  ```
104
118
 
105
- Use `ui-style-kit-css/visual.css` for runtime preset switching without the deprecated prefixed layout selectors. The exact preset, theme, mode, class, and native-part capability matrix is available from `ui-style-kit-css/manifest.json`.
119
+ The exact preset, theme, mode, class, and native-part capability matrix is available from `ui-style-kit-css/manifest.json`.
120
+
121
+ ### Advanced prefixed and raw imports
106
122
 
107
- In `v2.1.0`, legacy standalone style files continue to import the shared color-scheme, native-element fallback, and content-overflow layers. Bundlers that understand CSS `@import` resolve them automatically. If your build pipeline does not resolve CSS imports, import the shared dependencies before the style file:
123
+ The standalone preset exports and longer `styles/*` paths remain advanced compatibility entrypoints. They preserve the prefixed API and do not promise multi-preset semantic switching:
108
124
 
109
125
  ```js
110
- import "ui-style-kit-css/theme-colors.css";
111
- import "ui-style-kit-css/native-elements.css";
112
- import "ui-style-kit-css/content-overflow.css";
113
126
  import "ui-style-kit-css/minimal-saas.css";
127
+ // Equivalent raw source export:
128
+ import "ui-style-kit-css/styles/minimal-saas.css";
114
129
  ```
115
130
 
116
- The longer `styles/*` paths are also exported:
131
+ Compatible standalone style files continue to import the shared color-scheme, native-element fallback, and content-overflow layers. Bundlers that understand CSS `@import` resolve them automatically. If your build pipeline does not resolve CSS imports, import the shared dependencies before the style file:
117
132
 
118
133
  ```js
119
- import "ui-style-kit-css/styles/minimal-saas.css";
120
- import "ui-style-kit-css/styles/cyberpunk.css";
134
+ import "ui-style-kit-css/theme-colors.css";
135
+ import "ui-style-kit-css/native-elements.css";
136
+ import "ui-style-kit-css/content-overflow.css";
137
+ import "ui-style-kit-css/minimal-saas.css";
121
138
  ```
122
139
 
123
- Use the full bundle when users need to switch `data-ui` systems at runtime:
140
+ The explicit distribution path is also available for runtime switching:
124
141
 
125
142
  ```js
126
143
  import "ui-style-kit-css/dist/ui-style-kit.css";
127
144
  ```
128
145
 
129
- For the canonical state-only integration, import visual paint, the token-only theme bridge, and Interactive Surface state mechanics as separate ownership layers:
146
+ For the canonical all-three integration, import visual paint, the token-only theme bridge, Interactive Surface state mechanics, and Layout structure in this order:
130
147
 
131
148
  ```js
132
- import "ui-style-kit-css/visual/minimal-saas.css";
149
+ import "ui-style-kit-css/visual.css";
133
150
  import "ui-style-kit-css/interactive-surface-theme.css";
134
151
  import "interactive-surface-css/state-core.css";
152
+ import "layout-style-css";
135
153
  ```
136
154
 
137
- The older stateful bridge and combined bundle remain available for compatibility, but they are deprecated and have not been redirected to the token-only behavior:
138
-
139
- ```js
140
- import "ui-style-kit-css/with-bridge.css";
141
- ```
142
-
143
- Or import the bridge by itself when you are using a single style file:
144
-
145
- ```js
146
- import "ui-style-kit-css/minimal-saas.css";
147
- import "ui-style-kit-css/interactive-surface-bridge";
148
- ```
155
+ The older stateful bridge and combined bundle remain public, deprecated compatibility paths. See the [bridge migration guide](docs/BRIDGE-MIGRATION.md) when upgrading an existing v2 integration.
149
156
 
150
157
  The default and visual-only bundles do **not** include either bridge. That keeps UI paint independent and prevents accidental duplicate bridge imports.
151
158
 
@@ -155,12 +162,12 @@ When the bridge is attached, add `.interactive-surface` to interactable elements
155
162
 
156
163
  | Import | Raw | Gzip | Best for |
157
164
  |---|---:|---:|---|
158
- | `ui-style-kit-css/dist/ui-style-kit.min.css` | ~299 KB | ~39 KB | Compatible runtime UI-system switchers and demos |
159
- | `ui-style-kit-css/visual.min.css` | ~290 KB | ~38 KB | Runtime visual switching with consumer-owned layout |
160
- | `ui-style-kit-css/with-bridge.css` | ~369 KB | ~44 KB | Deprecated runtime switcher plus stateful bridge |
161
- | `ui-style-kit-css/theme-colors.css` | ~25 KB | ~3 KB | Shared color schemes for standalone style imports |
162
- | `ui-style-kit-css/native-elements.css` | ~21 KB | ~3 KB | Shared native HTML fallback styling |
163
- | `ui-style-kit-css/content-overflow.css` | ~7 KB | ~1 KB | Shared long-text containment for standalone style imports |
165
+ | `ui-style-kit-css/dist/ui-style-kit.min.css` | ~855 KB | ~125 KB | Compatible runtime UI-system switchers and demos |
166
+ | `ui-style-kit-css/visual.min.css` | ~841 KB | ~123 KB | Runtime visual switching with consumer-owned layout |
167
+ | `ui-style-kit-css/with-bridge.css` | ~1015 KB | ~143 KB | Deprecated runtime switcher plus stateful bridge |
168
+ | `ui-style-kit-css/theme-colors.css` | ~50 KB | ~6 KB | Shared color schemes for standalone style imports |
169
+ | `ui-style-kit-css/native-elements.css` | ~24 KB | ~4 KB | Shared native HTML fallback styling |
170
+ | `ui-style-kit-css/content-overflow.css` | ~20 KB | ~3 KB | Shared long-text containment for standalone style imports |
164
171
  | `ui-style-kit-css/interactive-surface-theme.css` | ~8 KB | ~1 KB | Canonical token-and-paint bridge for Interactive Surface state core |
165
172
  | Single style imports | ~26-28 KB | ~5-6 KB | Production apps with one visual system |
166
173
 
@@ -175,22 +182,20 @@ Use the latest published NPM package:
175
182
  For production, pin the exact approved release rather than relying on `latest`:
176
183
 
177
184
  ```html
178
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ui-style-kit-css@2.1.0/dist/ui-style-kit.min.css" />
185
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ui-style-kit-css@2.3.0/dist/ui-style-kit.min.css" />
179
186
  ```
180
187
 
181
188
  ## Basic usage
182
189
 
183
190
  ```html
184
191
  <body data-ui="minimal-saas" data-theme="arctic-indigo" data-mode="light">
185
- <main class="saas-page">
186
- <section class="saas-container saas-stack">
187
- <article class="saas-card">
188
- <h1 class="saas-title">UI Style Kit CSS</h1>
189
- <p class="saas-subtitle">Switch UI systems, themes, and modes with attributes.</p>
190
- <button class="saas-button saas-button-primary">Primary Action</button>
191
- <span class="saas-spinner" aria-label="Loading"></span>
192
- </article>
193
- </section>
192
+ <main>
193
+ <article class="ui-card">
194
+ <h1>UI Style Kit CSS</h1>
195
+ <p>Switch UI systems, themes, and modes without changing component classes.</p>
196
+ <button class="ui-button" data-ui-variant="primary">Primary Action</button>
197
+ <span class="ui-spinner" role="status" aria-label="Loading"></span>
198
+ </article>
194
199
  </main>
195
200
  </body>
196
201
  ```
@@ -203,6 +208,47 @@ document.body.dataset.theme = "midnight-gold";
203
208
  document.body.dataset.mode = "dark";
204
209
  ```
205
210
 
211
+ This changes the semantic components' visual preset without replacing their DOM nodes or rewriting their `.ui-*` classes.
212
+
213
+ ## Semantic component API
214
+
215
+ `manifest.json#semanticComponentApi` is the authoritative specification for the implemented generic component API. Its 29 selectors keep the same class names while `data-ui` changes across all 20 presets. `implementationStatus` records the two retained `.ui-spinner` and `.ui-tooltip` hooks, the 27 generated semantic aliases, and an empty pending set.
216
+
217
+ | Role | Generic selectors | Switching coverage |
218
+ |---|---|---|
219
+ | Buttons | `.ui-button`, `.ui-icon-button` | all 20 presets |
220
+ | Card | `.ui-card` | all 20 presets |
221
+ | Forms | `.ui-field`, `.ui-label`, `.ui-help-text`, `.ui-input`, `.ui-select`, `.ui-textarea` | all 20 presets |
222
+ | Choice controls | `.ui-check`, `.ui-check-control`, `.ui-radio`, `.ui-radio-control`, `.ui-switch`, `.ui-switch-track`, `.ui-switch-thumb` | all 20 presets |
223
+ | Badge | `.ui-badge` | all 20 presets |
224
+ | Alert | `.ui-alert`, `.ui-alert-title`, `.ui-alert-body` | all 20 presets |
225
+ | Navigation | `.ui-nav`, `.ui-nav-link` | all 20 presets |
226
+ | Table | `.ui-table`, `.ui-table-wrap` | all 20 presets |
227
+ | Progress | `.ui-progress`, `.ui-progress-bar` | all 20 presets |
228
+ | Toolbar | `.ui-toolbar` | all 20 presets |
229
+ | Existing generic hooks | `.ui-spinner`, `.ui-tooltip` | all 20 presets |
230
+
231
+ The only new attribute is context-constrained `data-ui-variant`. Omit it for the neutral treatment.
232
+
233
+ | Selector | `data-ui-variant` values |
234
+ |---|---|
235
+ | `.ui-button` | `primary`, `secondary`, `danger`, `ghost` |
236
+ | `.ui-badge` | `primary`, `secondary`, `success`, `warning`, `danger` |
237
+ | `.ui-alert` | `success`, `warning`, `danger` |
238
+
239
+ ```html
240
+ <body data-ui="minimal-saas" data-theme="arctic-indigo" data-mode="light">
241
+ <button class="ui-button" data-ui-variant="primary">Save</button>
242
+ <article class="ui-card">...</article>
243
+ </body>
244
+ ```
245
+
246
+ Modal and dialog roles deliberately use a neutral native `<dialog>` fallback. There is no `.ui-modal` or `.ui-dialog` selector. The semantic API also does not define `data-ui-state`, `data-ui-size`, or `data-ui-placement`; continue to use native and ARIA state hooks, `.is-active`, and `[data-ui-tooltip-anchor]` where supported.
247
+
248
+ Preset-prefixed classes remain supported compatibility and advanced APIs. Partial preset extras, typography and paint utilities, surface/size/placement helpers, shape and accessibility utilities, and the deprecated `page`, `container`, `section`, `grid`, `stack`, `cluster`, and `split` structural aliases remain prefix-bound rather than entering the generic contract.
249
+
250
+ For example, a fixed Minimal SaaS integration may continue to use `<button class="saas-button saas-button-primary">`. Prefer `.ui-button` plus `data-ui-variant="primary"` when markup must survive runtime preset changes.
251
+
206
252
  ## UI systems
207
253
 
208
254
  | UI style | `data-ui` | Class prefix | Best for |
@@ -218,6 +264,15 @@ document.body.dataset.mode = "dark";
218
264
  | Cyberpunk | `cyberpunk` | `cyber` | security, gaming, encryption, tech demos |
219
265
  | Y2K | `y2k` | `y2k` | nostalgic, playful, fashion/music/event sites |
220
266
  | Retro Glass | `retro-glass` | `rg` | futuristic glass dashboards and hero sections |
267
+ | Editorial Luxe | `editorial-luxe` | `luxe` | luxury brands, architecture, hospitality, premium editorial sites |
268
+ | Organic Modern | `organic-modern` | `organic` | wellness, sustainability, hospitality, natural product brands |
269
+ | Industrial Utility | `industrial-utility` | `utility` | operations software, manufacturing, logistics, fleet and equipment systems |
270
+ | Technical Blueprint | `technical-blueprint` | `blueprint` | engineering, architecture, technical documentation, scientific tools |
271
+ | Art Deco | `art-deco` | `deco` | luxury, hospitality, heritage brands, events and distinctive showcases |
272
+ | Clay | `clay` | `clay` | friendly SaaS, collaborative tools, education and approachable product sites |
273
+ | Data Terminal | `data-terminal` | `terminal` | operator consoles, telemetry, infrastructure, monitoring and developer tools |
274
+ | Paper Editorial | `paper-editorial` | `paper` | news, magazines, journals, cultural sites and story-led publishing |
275
+ | Neo-Noir | `neo-noir` | `noir` | cinematic portfolios, nightlife, premium creative studios and dramatic product sites |
221
276
 
222
277
  ## Color themes
223
278
 
@@ -232,10 +287,67 @@ desert-sage
232
287
  rose-quartz
233
288
  cyber-lime
234
289
  arctic-indigo
290
+ chrome-navy
291
+ recycled-emerald
292
+ industrial-orange
293
+ performance-red
294
+ heritage-brass
295
+ service-blue-red
296
+ newsprint-crimson
297
+ foundry-amber
298
+ soft-orchid
299
+ electric-noir
235
300
  ```
236
301
 
237
302
  Color schemes are defined once in `styles/theme-colors.css` as shared `--usk-*` RGB roles. Each UI style maps those shared roles back to its public prefix, so existing component rules still consume variables such as `--saas-primary`, `--bau-surface`, and `--rg-on-primary`.
238
303
 
304
+ ## Commercial component modifiers
305
+
306
+ The cross-style API also includes reusable marketing and service-site patterns. These suffixes are available for all 20 UI systems and inherit the active `data-theme` / `data-mode` palette:
307
+
308
+ ```txt
309
+ card-media
310
+ card-service
311
+ card-feature
312
+ card-accent-edge
313
+ icon-medallion
314
+ button-cut
315
+ button-outline-heavy
316
+ badge-seal
317
+ feature-strip
318
+ feature-item
319
+ callout-bar
320
+ eyebrow
321
+ media-scrim
322
+ ```
323
+
324
+ Combine them with the preset prefix and existing base components:
325
+
326
+ ```html
327
+ <article class="saas-card saas-card-service">
328
+ <img class="saas-card-media" src="service.jpg" alt="">
329
+ <span class="saas-icon-medallion" aria-hidden="true">★</span>
330
+ <p class="saas-eyebrow">Professional Service</p>
331
+ <h3 class="saas-heading">A reusable service card</h3>
332
+ <p class="saas-copy">The visual treatment changes with the selected UI system.</p>
333
+ <a class="saas-button saas-button-primary saas-button-cut" href="#">Learn More</a>
334
+ </article>
335
+ ```
336
+
337
+ The components intentionally contain no domain-specific content. Icons, media, labels, and copy remain consumer-owned.
338
+
339
+ ### Component composition
340
+
341
+ - Service cards combine the base `card` with `card-service`; add `card-media` for responsive media, `icon-medallion` for an overlapping symbol, and `button-primary button-cut` for the filled service action.
342
+ - Feature cards use `card-feature` or `card-accent-edge` when information needs a stronger preset-specific edge treatment without changing the semantic element.
343
+ - Media treatments place an image and its caption inside `media-scrim`. The scrim supplies readable theme-token paint; the image and alternative text remain application content.
344
+ - Feature strips contain one or more `feature-item` children. They use balanced columns when space permits and collapse without requiring a new class.
345
+ - Callout bars use `callout-bar` as the visual lane and `button-outline-heavy` for the framed supporting action. There is no separate `button-cta` API.
346
+
347
+ `button-cut` and `button-outline-heavy` are independent modifiers: the first supplies the preset's filled-action silhouette and the second supplies its framed-action geometry and material. Do not combine them unless a deliberate hybrid is required. The same preset identity continues through service cards, media scrims, feature strips, callout bars, native action controls, and dialogs; color still comes only from the active theme and mode tokens.
348
+
349
+ All modifiers consume the active theme and mode tokens. Keep controls as real links or buttons, provide useful accessible names, mark decorative medallions with `aria-hidden="true"`, and avoid placing essential text in CSS artwork. The shared containment layer allows cards, strips, scrims, callouts, controls, and preset-specific specimens to shrink inside consumer-owned grids; application layout remains responsible for choosing the outer column count.
350
+
239
351
  ## Modes
240
352
 
241
353
  ```txt
@@ -279,7 +391,7 @@ Every style includes theme-driven spinner utilities:
279
391
  <button class="saas-button saas-button-primary" aria-busy="true">Saving</button>
280
392
  ```
281
393
 
282
- Spinner track, stroke, and accent colors come from the active `data-theme` and `data-mode`. The generic `.ui-spinner`, `.loading-spinner`, and `[data-loading-spinner]` hooks are also themed inside any `[data-ui="..."]` scope.
394
+ Spinner track, stroke, and accent colors come from the active `data-theme` and `data-mode`, while geometry, motion cadence, depth, and busy-button indicators follow the active UI preset. The generic `.ui-spinner`, `.loading-spinner`, and `[data-loading-spinner]` hooks receive the same preset identity inside any `[data-ui="..."]` scope.
283
395
 
284
396
  ## Tooltip surfaces
285
397
 
@@ -387,6 +499,7 @@ The checked-in demo, favicon pack, and social preview image stay in the reposito
387
499
 
388
500
  ```bash
389
501
  npm run check
502
+ npm run check:compat
390
503
  npm run test:e2e
391
504
  npm run test:axe
392
505
  npm run test:visual
@@ -394,7 +507,9 @@ npm run test:matrix
394
507
  npm run pack:dry-run
395
508
  ```
396
509
 
397
- `npm run check` rebuilds the bundles, runs stylelint, verifies package metadata, checks the documented class API, and validates contrast for base text/link pairs and filled component `on-*` pairs. Browser release gates add all-engine Playwright coverage, representative Axe scans, curated visual smoke checks, and the sharded `11 presets x 10 themes x 3 modes x 3 engines` matrix.
510
+ `npm run check` rebuilds the bundles, runs stylelint, verifies package metadata and the documented class API, validates 4.5:1 text/link/filled-component contrast plus 3:1 light-mode component-edge contrast, and invokes `check:compat` for every generated entrypoint. Browser release gates add all-engine Playwright coverage, representative Axe scans, curated visual smoke checks, and the sharded `20 presets x 20 themes x 3 modes x 3 engines` matrix.
511
+
512
+ The package browser policy is the last two major Chrome, Edge, and Firefox releases plus Safari and iOS 16 or newer, excluding dead browsers. The build resolves that single `package.json` policy into Lightning CSS targets, while `check:compat` verifies required prefix pairs, stable fallbacks, guarded `color-mix()`, `text-wrap`, and `forced-color-adjust` enhancements, and the absence of obsolete intrinsic CTA sizing declarations.
398
513
 
399
514
  ## v2.1.0 Architecture Notes
400
515
 
package/STYLE-MAP.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # UI Style Kit CSS Style Map
2
2
 
3
+ ## Recommended runtime API
4
+
5
+ Lead with stable semantic classes when an interface can switch visual presets:
6
+
7
+ ```html
8
+ <article class="ui-card">
9
+ <button class="ui-button" data-ui-variant="primary">Continue</button>
10
+ <span class="ui-badge" data-ui-variant="success">Ready</span>
11
+ </article>
12
+ ```
13
+
14
+ Changing only the ancestor `data-ui` value restyles that markup across all 11 presets in the generated default, visual, and with-bridge bundles. A generated `visual/<preset>.css` focused entrypoint supplies the same semantic aliases for its selected preset only. Raw `styles/*` and standalone preset exports remain advanced prefixed APIs and do not promise multi-preset semantic switching.
15
+
3
16
  ## UI systems
4
17
 
5
18
  Color schemes are defined once in `styles/theme-colors.css`. Native HTML fallback selectors are defined once in `styles/native-elements.css`. Long-text containment rules are defined once in `styles/content-overflow.css`. Each UI system file imports all shared layers, aliases `--usk-*` RGB roles back to its prefix, and maps `--usk-native-*` tokens into the preset's visual identity.
@@ -17,6 +30,15 @@ Color schemes are defined once in `styles/theme-colors.css`. Native HTML fallbac
17
30
  | Cyberpunk | `cyberpunk` | `cyber` | `styles/cyberpunk.css` |
18
31
  | Y2K | `y2k` | `y2k` | `styles/y2k.css` |
19
32
  | Retro Glass | `retro-glass` | `rg` | `styles/retro-glass.css` |
33
+ | Editorial Luxe | `editorial-luxe` | `luxe` | `styles/editorial-luxe.css` |
34
+ | Organic Modern | `organic-modern` | `organic` | `styles/organic-modern.css` |
35
+ | Industrial Utility | `industrial-utility` | `utility` | `styles/industrial-utility.css` |
36
+ | Technical Blueprint | `technical-blueprint` | `blueprint` | `styles/technical-blueprint.css` |
37
+ | Art Deco | `art-deco` | `deco` | `styles/art-deco.css` |
38
+ | Clay | `clay` | `clay` | `styles/clay.css` |
39
+ | Data Terminal | `data-terminal` | `terminal` | `styles/data-terminal.css` |
40
+ | Paper Editorial | `paper-editorial` | `paper` | `styles/paper-editorial.css` |
41
+ | Neo-Noir | `neo-noir` | `noir` | `styles/neo-noir.css` |
20
42
 
21
43
  ## Shared color file
22
44
 
@@ -60,9 +82,42 @@ The bridge inherits from shared `--usk-*` color roles, then applies `.interactiv
60
82
  - `rose-quartz`
61
83
  - `cyber-lime`
62
84
  - `arctic-indigo`
85
+ - `chrome-navy`
86
+ - `recycled-emerald`
87
+ - `industrial-orange`
88
+ - `performance-red`
89
+ - `heritage-brass`
90
+ - `service-blue-red`
91
+ - `newsprint-crimson`
92
+ - `foundry-amber`
93
+ - `soft-orchid`
94
+ - `electric-noir`
63
95
 
64
96
  ## Modes
65
97
 
66
98
  - `light`
67
99
  - `dark`
68
100
  - `contrast`
101
+
102
+ ## Semantic component contract
103
+
104
+ The machine-readable source of truth is `manifest.json#semanticComponentApi`. Its 29 implemented generic selectors map only to source suffixes with 11-of-11 composed preset coverage. The `implementationStatus` section records `.ui-spinner` and `.ui-tooltip` as retained hooks, the other 27 selectors as generated aliases, and no pending selectors.
105
+
106
+ | Role | Generic selector -> current source suffix |
107
+ |---|---|
108
+ | Button | `.ui-button` -> `button`; `.ui-icon-button` -> `icon-button` |
109
+ | Card | `.ui-card` -> `card` |
110
+ | Form | `.ui-field` -> `field`; `.ui-label` -> `label`; `.ui-help-text` -> `help-text`; `.ui-input` -> `input`; `.ui-select` -> `select`; `.ui-textarea` -> `textarea` |
111
+ | Choice control | `.ui-check` -> `check`; `.ui-check-control` -> `check-control`; `.ui-radio` -> `radio`; `.ui-radio-control` -> `radio-control`; `.ui-switch` -> `switch`; `.ui-switch-track` -> `switch-track`; `.ui-switch-thumb` -> `switch-thumb` |
112
+ | Badge | `.ui-badge` -> `badge` |
113
+ | Alert | `.ui-alert` -> `alert`; `.ui-alert-title` -> `alert-title`; `.ui-alert-body` -> `alert-body` |
114
+ | Navigation | `.ui-nav` -> `nav`; `.ui-nav-link` -> `nav-link` |
115
+ | Table | `.ui-table` -> `table`; `.ui-table-wrap` -> `table-wrap` |
116
+ | Progress | `.ui-progress` -> `progress`; `.ui-progress-bar` -> `progress-bar` |
117
+ | Toolbar | `.ui-toolbar` -> `toolbar` |
118
+ | Loading | `.ui-spinner` -> `spinner` |
119
+ | Tooltip | `.ui-tooltip` -> `tooltip` |
120
+
121
+ `data-ui-variant` is the only new attribute. Omission means neutral. `.ui-button` accepts `primary`, `secondary`, `danger`, and `ghost`; `.ui-badge` accepts `primary`, `secondary`, `success`, `warning`, and `danger`; `.ui-alert` accepts `success`, `warning`, and `danger`.
122
+
123
+ Modal and dialog roles retain native `<dialog>` as their one neutral fallback; `.ui-modal` and `.ui-dialog` are not defined. Preset-prefixed classes remain supported for compatibility and advanced use. Partial preset extras and the seven deprecated structural suffixes stay out of the semantic contract.