ui-style-kit-css 2.5.0 → 2.6.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 (61) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +84 -59
  3. package/dist/ui-style-kit.css +4089 -3591
  4. package/dist/ui-style-kit.min.css +3 -3
  5. package/dist/ui-style-kit.visual.css +4089 -3591
  6. package/dist/ui-style-kit.visual.min.css +3 -3
  7. package/dist/ui-style-kit.with-bridge.css +4089 -3591
  8. package/dist/ui-style-kit.with-bridge.min.css +3 -3
  9. package/dist/visual/art-deco.css +696 -339
  10. package/dist/visual/bauhaus.css +2 -2
  11. package/dist/visual/bento.css +2 -2
  12. package/dist/visual/brutalism.css +485 -170
  13. package/dist/visual/clay.css +2 -2
  14. package/dist/visual/cyberpunk.css +578 -263
  15. package/dist/visual/data-terminal.css +577 -262
  16. package/dist/visual/editorial-luxe.css +580 -265
  17. package/dist/visual/industrial-utility.css +644 -329
  18. package/dist/visual/maximalist.css +562 -247
  19. package/dist/visual/minimal-saas.css +511 -196
  20. package/dist/visual/neo-noir.css +2 -2
  21. package/dist/visual/neumorphism.css +534 -219
  22. package/dist/visual/organic-modern.css +2 -2
  23. package/dist/visual/paper-editorial.css +659 -344
  24. package/dist/visual/retro-glass.css +590 -275
  25. package/dist/visual/retrofuturism.css +539 -224
  26. package/dist/visual/tactile.css +552 -237
  27. package/dist/visual/technical-blueprint.css +618 -295
  28. package/dist/visual/y2k.css +521 -206
  29. package/docs/ART-DECO.md +2 -2
  30. package/docs/ECOSYSTEM.md +6 -6
  31. package/docs/PUBLISHING.md +7 -7
  32. package/docs/RELEASE-2.6.0.md +36 -0
  33. package/docs/STYLE-GUIDE.md +10 -0
  34. package/manifest.json +212 -179
  35. package/package.json +29 -1
  36. package/styles/art-deco.css +64 -1
  37. package/styles/bauhaus.css +8 -0
  38. package/styles/bento.css +10 -2
  39. package/styles/brutalism.css +8 -0
  40. package/styles/clay.css +11 -3
  41. package/styles/clean-defaults.css +295 -0
  42. package/styles/component-composition.css +829 -0
  43. package/styles/components.css +3 -3
  44. package/styles/cyberpunk.css +8 -0
  45. package/styles/data-terminal.css +8 -0
  46. package/styles/editorial-luxe.css +8 -0
  47. package/styles/industrial-utility.css +8 -0
  48. package/styles/interactive-surface-theme.css +23 -23
  49. package/styles/maximalist.css +8 -0
  50. package/styles/minimal-saas.css +8 -0
  51. package/styles/native-elements.css +7 -0
  52. package/styles/neo-noir.css +8 -0
  53. package/styles/neumorphism.css +8 -0
  54. package/styles/organic-modern.css +8 -0
  55. package/styles/paper-editorial.css +8 -0
  56. package/styles/retro-glass.css +8 -0
  57. package/styles/retrofuturism.css +8 -0
  58. package/styles/tactile.css +8 -0
  59. package/styles/technical-blueprint.css +16 -1
  60. package/styles/theme-colors.css +3 -0
  61. package/styles/y2k.css +8 -0
package/CHANGELOG.md CHANGED
@@ -4,6 +4,35 @@ All notable changes to **UI Style Kit CSS** will be documented here.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [2.6.0] - 2026-09-28
8
+
9
+ ### Added
10
+
11
+ - Added library-wide clean defaults with a 2px element spacing fallback, compact control padding floors, `.usk-flush`/`.flush`, and `.usk-underline` utilities.
12
+ - Added canonical self-contained `presets/<name>.css` exports for all 20 UI styles while retaining the combined runtime-switching bundle and existing focused aliases.
13
+
14
+ ### Changed
15
+
16
+ - Made decorative underlines opt-in while preserving native edit-notation elements such as `u`, `ins`, `del`, and `s`.
17
+ - Extended preset-native paint with complete secondary, accent, and semantic foreground pairs for companion surface integrations.
18
+ - Made the Interactive Surface bridge inherit each preset's native radius so clipped and squared identities are not rounded by the integration layer.
19
+
20
+ ### Fixed
21
+
22
+ - Corrected Interactive Surface reference-palette resolution so omitted `data-theme` values use each preset's native surface and foreground pairs instead of mismatched light fallbacks.
23
+ - Repaired late Bento and Clay reference colors identified by the rendered all-preset contrast audit.
24
+ - Prevented semantic checkbox, radio, and switch markup from painting a second native choice control beside its authored control surface.
25
+ - Protected current-page pagination foregrounds from broad preset anchor rules.
26
+ - Centered semantic avatar fallback content and constrained nested chip remove actions without requiring React-specific styling hooks.
27
+ - Normalized semantic SVG icon geometry through `data-ui-icon` so close marks and other reusable icons align without framework-owned CSS.
28
+ - Insets checkbox, radio, and switch surfaces; vertically centers controls; optically centers avatar initials; and keeps nested chip actions subordinate to their labels.
29
+ - Added `data-pagination-kind="page|direction"` geometry so page numbers remain slightly smaller than Previous and Next bookends.
30
+
31
+ ### Tests
32
+
33
+ - Added release contracts proving every standalone preset resolves without CSS imports, scopes itself to the correct `data-ui` value, and exposes the canonical `.usk-*` component API.
34
+ - Expanded rendered contrast, component-composition, semantic-layout, and reference-palette coverage for the corrected library-owned styles.
35
+
7
36
  ## [2.5.0] - 2026-09-26
8
37
 
9
38
  ### Added
package/README.md CHANGED
@@ -9,17 +9,17 @@ It is separate from, but complementary to, **Interactive Surface CSS** and **Lay
9
9
 
10
10
  ## Current release
11
11
 
12
- Version `v2.5.0` is a backward-compatible semantic-component release. It promotes reusable tabs, pagination, breadcrumb, skeleton, empty-state, metric, chip, avatar, stepper, toast, popover, menu, segmented-control, file-upload, dropzone, and listbox patterns into the stable `.ui-*` API while preserving preset-owned paint.
12
+ Version `v2.6.0` is a backward-compatible component-quality and delivery release. It gives every UI system a canonical self-contained `presets/<name>.css` import, keeps the all-style runtime-switching bundles, and hardens the universal `.usk-*` component contract across all 20 presets. New markup should use `.usk-*`; generated `.ui-*` aliases remain available for existing consumers.
13
13
 
14
14
  The available browser matrix continues to cover 20 presets × 25 themes × 3 modes × 3 engines (4,500 combinations). The `v2.4.1` theme additions and Signal Yellow contrast corrections remain unchanged.
15
15
 
16
- The `v2.4.0` baseline introduced complete native-control identities, native light/dark/contrast palettes when `data-theme` is omitted, a palette-aware color workbench, a unified demo with style-specific components, and exactly pinned parser-based minification. See the [2.5.0 release notes](docs/RELEASE-2.5.0.md) for the release scope and verification boundaries.
16
+ The `v2.4.0` baseline introduced complete native-control identities, native light/dark/contrast palettes when `data-theme` is omitted, a palette-aware color workbench, a unified demo with style-specific components, and exactly pinned parser-based minification. See the [2.6.0 release notes](docs/RELEASE-2.6.0.md) for the current scope and verification boundaries.
17
17
 
18
18
  [Showcase website](https://foscat.github.io/ui-style-kit-css/)
19
19
 
20
20
  ## How the library fits together
21
21
 
22
- 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.
22
+ UI Style Kit CSS owns visual identity: themes, semantic `.usk-*` 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.
23
23
 
24
24
  ```mermaid
25
25
  flowchart LR
@@ -56,11 +56,11 @@ These libraries stay standalone, but the current aligned set is:
56
56
 
57
57
  | Library | Aligned version | Owns |
58
58
  |---|---:|---|
59
- | `ui-style-kit-css@2.5.0` | current release | visual identity, color themes, UI paint, native HTML styling, content wrapping, and bridge tokens |
59
+ | `ui-style-kit-css@2.6.0` | current release | visual identity, color themes, UI paint, native HTML styling, content wrapping, and bridge tokens |
60
60
  | `interactive-surface-css@1.7.3` | compatible state release | interaction-state primitives, surface behavior, state layers, and input affordances |
61
61
  | `layout-style-css@3.2.3` | compatible structural release | structural wrappers, grids, sections, app shells, and layout recipes |
62
62
 
63
- UI Style Kit `2.5.0` is the current release and is aligned with the reviewed Interactive Surface `1.7.3` and Layout Style `3.2.3` releases. The validated minimum remains `ui-style-kit-css@2.1.0`, `interactive-surface-css@1.5.0`, and `layout-style-css@3.0.0`.
63
+ UI Style Kit `2.6.0` is the current release and is aligned with the reviewed Interactive Surface `1.7.3` and Layout Style `3.2.3` releases. The validated minimum remains `ui-style-kit-css@2.1.0`, `interactive-surface-css@1.5.0`, and `layout-style-css@3.0.0`.
64
64
 
65
65
  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.
66
66
 
@@ -76,7 +76,7 @@ For import order, ownership boundaries, and adoption paths, see the [Ecosystem g
76
76
  - 25 shared color schemes
77
77
  - `light`, `dark`, and `contrast` modes
78
78
  - Native preset colors when no shared theme is selected
79
- - Combined CSS bundle and per-style production imports
79
+ - Combined CSS bundle and canonical self-contained per-style imports
80
80
  - Visual-only full and focused entrypoints for consumer-owned layouts
81
81
  - Machine-readable `manifest.json` preset, theme, mode, class, and native-part capabilities
82
82
  - Shared `theme-colors.css`, `native-elements.css`, and `content-overflow.css` layers for all UI systems
@@ -117,10 +117,22 @@ import "ui-style-kit-css";
117
117
 
118
118
  Use `ui-style-kit-css/visual.css` for the same 75-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.
119
119
 
120
- Applications fixed to one preset can use a generated focused visual entrypoint. It includes semantic aliases scoped to that preset only:
120
+ Applications fixed to one preset can use its canonical self-contained entrypoint. It includes the shared foundations, preset paint, and semantic aliases scoped to that preset, with no unresolved CSS `@import` statements:
121
121
 
122
122
  ```js
123
- import "ui-style-kit-css/visual/minimal-saas.css";
123
+ import "ui-style-kit-css/presets/minimal-saas.css";
124
+ ```
125
+
126
+ The existing `ui-style-kit-css/visual/<preset>.css` paths remain supported aliases to the same generated files.
127
+
128
+ For applications that let a user switch styles at runtime, import the all-style bundle once and update `data-ui`. Theme and mode remain independent attributes:
129
+
130
+ ```js
131
+ import "ui-style-kit-css";
132
+
133
+ document.documentElement.dataset.ui = "cyberpunk";
134
+ document.documentElement.dataset.theme = "arctic-indigo";
135
+ document.documentElement.dataset.mode = "dark";
124
136
  ```
125
137
 
126
138
  The exact preset, theme, mode, class, and native-part capability matrix is available from `ui-style-kit-css/manifest.json`.
@@ -135,12 +147,14 @@ import "ui-style-kit-css/minimal-saas.css";
135
147
  import "ui-style-kit-css/styles/minimal-saas.css";
136
148
  ```
137
149
 
138
- 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:
150
+ Compatible standalone style files continue to import the shared color-scheme, native-element fallback, content-overflow, and clean-default 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:
139
151
 
140
152
  ```js
141
153
  import "ui-style-kit-css/theme-colors.css";
142
154
  import "ui-style-kit-css/native-elements.css";
143
155
  import "ui-style-kit-css/content-overflow.css";
156
+ import "ui-style-kit-css/component-composition.css";
157
+ import "ui-style-kit-css/clean-defaults.css";
144
158
  import "ui-style-kit-css/minimal-saas.css";
145
159
  ```
146
160
 
@@ -163,21 +177,32 @@ The older stateful bridge and combined bundle remain public, deprecated compatib
163
177
 
164
178
  The default and visual-only bundles do **not** include either bridge. That keeps UI paint independent and prevents accidental duplicate bridge imports.
165
179
 
166
- When the bridge is attached, add `.interactive-surface` to interactable elements and use `data-surface-variant` plus `data-surface-level="1"`, `"2"`, or `"3"` to opt into the visible rest, hover, active, and focus treatments. The bridge inherits from shared `--usk-*` roles instead of duplicating per-theme or per-preset token maps.
180
+ When the bridge is attached, add `.interactive-surface` to interactable elements and use `data-surface-variant` plus `data-surface-level="1"`, `"2"`, or `"3"` to opt into the visible rest, hover, active, and focus treatments. The bridge inherits resolved `--usk-native-*` paint pairs and radius geometry first, so both shared themes and a preset's reference palette retain matched foregrounds, backgrounds, and corner identity.
181
+
182
+ ### Clean defaults
183
+
184
+ Every element inside a themed UI root receives a 2px margin and padding fallback before preset-specific declarations are applied. Preset spacing still wins when it is roomier. Technical Blueprint is exempt because its drafting grammar intentionally joins controls and measured structures. Add `.usk-flush` (recommended) or its concise `.flush` alias to an element that intentionally needs zero margin and padding in every other style. Buttons and badges receive a 2px block and 4px inline padding floor when a preset does not provide roomier values.
185
+
186
+ Decorative underlines are disabled by default across UI roots. Add `.usk-underline` to opt an element back into an underline. Native `u`, `ins`, `del`, and `s` elements keep their semantic text decoration.
187
+
188
+ Semantic `.usk-check`, `.usk-radio`, and `.usk-switch` wrappers keep their native input focusable but visually hide it, leaving the authored control or switch track as the only painted affordance. Their visible controls are vertically centered and inset from the wrapper edge.
189
+
190
+ SVG icons marked with `data-ui-icon` receive stable `1em` square geometry, block alignment, and visible overflow from the CSS library. Component libraries can provide semantic SVG markup without adding framework-specific icon classes or styles. Avatar initials receive optical centering, removable chips constrain their nested action to a subordinate 24px square, and pagination can distinguish compact page numbers from larger bookends with `data-pagination-kind="page|direction"`.
167
191
 
168
192
  ### Bundle size guide
169
193
 
170
194
  | Import | Raw | Gzip | Best for |
171
195
  |---|---:|---:|---|
172
- | `ui-style-kit-css/dist/ui-style-kit.min.css` | ~2151 KB | ~394 KB | Compatible runtime UI-system switchers and demos |
173
- | `ui-style-kit-css/visual.min.css` | ~2135 KB | ~392 KB | Runtime visual switching with consumer-owned layout |
174
- | `ui-style-kit-css/with-bridge.css` | ~2494 KB | ~418 KB | Deprecated runtime switcher plus stateful bridge |
196
+ | `ui-style-kit-css/dist/ui-style-kit.min.css` | ~2445 KB | ~419 KB | Compatible runtime UI-system switchers and demos |
197
+ | `ui-style-kit-css/visual.min.css` | ~2429 KB | ~417 KB | Runtime visual switching with consumer-owned layout |
198
+ | `ui-style-kit-css/with-bridge.css` | ~2814 KB | ~444 KB | Deprecated runtime switcher plus stateful bridge |
175
199
  | `ui-style-kit-css/theme-colors.css` | ~64 KB | ~8 KB | Shared color schemes for standalone style imports |
176
- | `ui-style-kit-css/native-elements.css` | ~31 KB | ~5 KB | Shared native HTML fallback styling |
200
+ | `ui-style-kit-css/native-elements.css` | ~32 KB | ~5 KB | Shared native HTML fallback styling |
177
201
  | `ui-style-kit-css/content-overflow.css` | ~20 KB | ~3 KB | Shared long-text containment for standalone style imports |
202
+ | `ui-style-kit-css/clean-defaults.css` | <10 KB | <2 KB | Shared spacing floors and opt-in flush/underline utilities |
178
203
  | `ui-style-kit-css/interactive-surface-theme.css` | ~9 KB | ~1 KB | Canonical token-and-paint bridge for Interactive Surface state core |
179
- | `ui-style-kit-css/visual/minimal-saas.css` | ~334 KB | ~43 KB | Focused Minimal SaaS, including semantic aliases and shared foundations |
180
- | `ui-style-kit-css/visual/industrial-utility.css` | ~409 KB | ~53 KB | Focused Industrial Utility, including its instrumentation styles |
204
+ | `ui-style-kit-css/visual/minimal-saas.css` | ~314 KB | ~46 KB | Focused Minimal SaaS, including semantic aliases and shared foundations |
205
+ | `ui-style-kit-css/visual/industrial-utility.css` | ~403 KB | ~56 KB | Focused Industrial Utility, including its instrumentation styles |
181
206
 
182
207
  ## CDN usage
183
208
 
@@ -198,11 +223,11 @@ For production, pin the exact approved release rather than relying on `latest`:
198
223
  ```html
199
224
  <body data-ui="minimal-saas" data-theme="arctic-indigo" data-mode="light">
200
225
  <main>
201
- <article class="ui-card">
226
+ <article class="usk-card">
202
227
  <h1>UI Style Kit CSS</h1>
203
228
  <p>Switch UI systems, themes, and modes without changing component classes.</p>
204
- <button class="ui-button" data-ui-variant="primary">Primary Action</button>
205
- <span class="ui-spinner" role="status" aria-label="Loading"></span>
229
+ <button class="usk-button" data-ui-variant="primary">Primary Action</button>
230
+ <span class="usk-spinner" role="status" aria-label="Loading"></span>
206
231
  </article>
207
232
  </main>
208
233
  </body>
@@ -216,7 +241,7 @@ document.body.dataset.theme = "midnight-gold";
216
241
  document.body.dataset.mode = "dark";
217
242
  ```
218
243
 
219
- This changes the semantic components' visual preset without replacing their DOM nodes or rewriting their `.ui-*` classes.
244
+ This changes the semantic components' visual preset without replacing their DOM nodes or rewriting their `.usk-*` classes.
220
245
 
221
246
  ### Native palettes and None
222
247
 
@@ -234,61 +259,61 @@ The demo labels this choice **None — style defaults**. Do not assign the liter
234
259
 
235
260
  ## Semantic component API
236
261
 
237
- `manifest.json#semanticComponentApi` is the authoritative specification for the implemented generic component API. Its 75 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 73 generated semantic aliases, and an empty pending set.
262
+ `manifest.json#semanticComponentApi` is the authoritative specification for the implemented generic component API. Its 75 canonical `.usk-*` selectors keep the same class names while `data-ui` changes across all 20 presets. `classNamespaces.compatibility` records the generated `.ui-*` migration alias. `implementationStatus` records the two retained `.usk-spinner` and `.usk-tooltip` hooks, the 73 generated semantic aliases, and an empty pending set.
238
263
 
239
264
  | Role | Generic selectors | Switching coverage |
240
265
  |---|---|---|
241
- | Buttons | `.ui-button`, `.ui-icon-button` | all 20 presets |
242
- | Card | `.ui-card` | all 20 presets |
243
- | Forms | `.ui-field`, `.ui-label`, `.ui-help-text`, `.ui-input`, `.ui-select`, `.ui-textarea` | all 20 presets |
244
- | Choice controls | `.ui-check`, `.ui-check-control`, `.ui-radio`, `.ui-radio-control`, `.ui-switch`, `.ui-switch-track`, `.ui-switch-thumb` | all 20 presets |
245
- | Badge | `.ui-badge` | all 20 presets |
246
- | Alert | `.ui-alert`, `.ui-alert-title`, `.ui-alert-body` | all 20 presets |
247
- | Navigation | `.ui-nav`, `.ui-nav-link` | all 20 presets |
248
- | Table | `.ui-table`, `.ui-table-wrap` | all 20 presets |
249
- | Progress | `.ui-progress`, `.ui-progress-bar` | all 20 presets |
250
- | Toolbar | `.ui-toolbar` | all 20 presets |
251
- | Tabs | `.ui-tabs`, `.ui-tab-list`, `.ui-tab`, `.ui-tab-panel` | all 20 presets |
252
- | Pagination | `.ui-pagination`, `.ui-pagination-item`, `.ui-pagination-link` | all 20 presets |
253
- | Breadcrumb | `.ui-breadcrumb`, `.ui-breadcrumb-list`, `.ui-breadcrumb-item`, `.ui-breadcrumb-link`, `.ui-breadcrumb-separator` | all 20 presets |
254
- | Skeleton | `.ui-skeleton` | all 20 presets |
255
- | Empty state | `.ui-empty-state`, `.ui-empty-state-icon`, `.ui-empty-state-title`, `.ui-empty-state-body`, `.ui-empty-state-actions` | all 20 presets |
256
- | Metric | `.ui-metric`, `.ui-metric-label`, `.ui-metric-value`, `.ui-metric-detail` | all 20 presets |
257
- | Chip | `.ui-chip`, `.ui-chip-group` | all 20 presets |
258
- | Avatar | `.ui-avatar`, `.ui-avatar-group` | all 20 presets |
259
- | Stepper | `.ui-stepper`, `.ui-step`, `.ui-step-marker`, `.ui-step-label` | all 20 presets |
260
- | Toast | `.ui-toast-stack`, `.ui-toast`, `.ui-toast-title`, `.ui-toast-body`, `.ui-toast-actions` | all 20 presets |
261
- | Popover | `.ui-popover` | all 20 presets |
262
- | Menu | `.ui-menu`, `.ui-menu-item`, `.ui-menu-group`, `.ui-menu-separator` | all 20 presets |
263
- | Segmented control | `.ui-segmented-control`, `.ui-segment` | all 20 presets |
264
- | File upload | `.ui-file-upload`, `.ui-dropzone` | all 20 presets |
265
- | Listbox | `.ui-listbox`, `.ui-listbox-option` | all 20 presets |
266
- | Existing generic hooks | `.ui-spinner`, `.ui-tooltip` | all 20 presets |
266
+ | Buttons | `.usk-button`, `.usk-icon-button` | all 20 presets |
267
+ | Card | `.usk-card` | all 20 presets |
268
+ | Forms | `.usk-field`, `.usk-label`, `.usk-help-text`, `.usk-input`, `.usk-select`, `.usk-textarea` | all 20 presets |
269
+ | Choice controls | `.usk-check`, `.usk-check-control`, `.usk-radio`, `.usk-radio-control`, `.usk-switch`, `.usk-switch-track`, `.usk-switch-thumb` | all 20 presets |
270
+ | Badge | `.usk-badge` | all 20 presets |
271
+ | Alert | `.usk-alert`, `.usk-alert-title`, `.usk-alert-body` | all 20 presets |
272
+ | Navigation | `.usk-nav`, `.usk-nav-link` | all 20 presets |
273
+ | Table | `.usk-table`, `.usk-table-wrap` | all 20 presets |
274
+ | Progress | `.usk-progress`, `.usk-progress-bar` | all 20 presets |
275
+ | Toolbar | `.usk-toolbar` | all 20 presets |
276
+ | Tabs | `.usk-tabs`, `.usk-tab-list`, `.usk-tab`, `.usk-tab-panel` | all 20 presets |
277
+ | Pagination | `.usk-pagination`, `.usk-pagination-item`, `.usk-pagination-link` | all 20 presets |
278
+ | Breadcrumb | `.usk-breadcrumb`, `.usk-breadcrumb-list`, `.usk-breadcrumb-item`, `.usk-breadcrumb-link`, `.usk-breadcrumb-separator` | all 20 presets |
279
+ | Skeleton | `.usk-skeleton` | all 20 presets |
280
+ | Empty state | `.usk-empty-state`, `.usk-empty-state-icon`, `.usk-empty-state-title`, `.usk-empty-state-body`, `.usk-empty-state-actions` | all 20 presets |
281
+ | Metric | `.usk-metric`, `.usk-metric-label`, `.usk-metric-value`, `.usk-metric-detail` | all 20 presets |
282
+ | Chip | `.usk-chip`, `.usk-chip-group` | all 20 presets |
283
+ | Avatar | `.usk-avatar`, `.usk-avatar-group` | all 20 presets |
284
+ | Stepper | `.usk-stepper`, `.usk-step`, `.usk-step-marker`, `.usk-step-label` | all 20 presets |
285
+ | Toast | `.usk-toast-stack`, `.usk-toast`, `.usk-toast-title`, `.usk-toast-body`, `.usk-toast-actions` | all 20 presets |
286
+ | Popover | `.usk-popover` | all 20 presets |
287
+ | Menu | `.usk-menu`, `.usk-menu-item`, `.usk-menu-group`, `.usk-menu-separator` | all 20 presets |
288
+ | Segmented control | `.usk-segmented-control`, `.usk-segment` | all 20 presets |
289
+ | File upload | `.usk-file-upload`, `.usk-dropzone` | all 20 presets |
290
+ | Listbox | `.usk-listbox`, `.usk-listbox-option` | all 20 presets |
291
+ | Existing generic hooks | `.usk-spinner`, `.usk-tooltip` | all 20 presets |
267
292
 
268
293
  Semantic paint variants use context-constrained `data-ui-variant`. Omit it for the neutral treatment.
269
294
 
270
295
  | Selector | `data-ui-variant` values |
271
296
  |---|---|
272
- | `.ui-button` | `primary`, `secondary`, `warning`, `danger`, `ghost` |
273
- | `.ui-badge` | `primary`, `secondary`, `success`, `warning`, `danger` |
274
- | `.ui-alert` | `success`, `warning`, `danger` |
275
- | `.ui-chip` | `primary`, `secondary`, `success`, `warning`, `danger` |
276
- | `.ui-toast` | `info`, `success`, `warning`, `danger` |
297
+ | `.usk-button` | `primary`, `secondary`, `warning`, `danger`, `ghost` |
298
+ | `.usk-badge` | `primary`, `secondary`, `success`, `warning`, `danger` |
299
+ | `.usk-alert` | `success`, `warning`, `danger` |
300
+ | `.usk-chip` | `primary`, `secondary`, `success`, `warning`, `danger` |
301
+ | `.usk-toast` | `info`, `success`, `warning`, `danger` |
277
302
 
278
303
  Skeleton shape uses `data-shape="text|circle|block"`. Step workflow presentation uses `data-state="complete|current|upcoming|error"`; React and application code remain responsible for behavior and ARIA state.
279
304
 
280
305
  ```html
281
306
  <body data-ui="minimal-saas" data-theme="arctic-indigo" data-mode="light">
282
- <button class="ui-button" data-ui-variant="primary">Save</button>
283
- <article class="ui-card">...</article>
307
+ <button class="usk-button" data-ui-variant="primary">Save</button>
308
+ <article class="usk-card">...</article>
284
309
  </body>
285
310
  ```
286
311
 
287
- 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.
312
+ Modal and dialog roles deliberately stay outside the 75-selector preset-paint alias contract and use native `<dialog>` semantics. The optional `component-composition.css` entrypoint supplies framework-neutral `.usk-modal` geometry; there is no generic `.usk-dialog` paint alias. 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.
288
313
 
289
314
  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.
290
315
 
291
- 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.
316
+ For example, a fixed Minimal SaaS integration may continue to use `<button class="saas-button saas-button-primary">`. Prefer `.usk-button` plus `data-ui-variant="primary"` when markup must survive runtime preset changes.
292
317
 
293
318
  ## UI systems
294
319
 
@@ -441,7 +466,7 @@ The shared native layer covers common native elements, including:
441
466
  - tables and captions
442
467
  - `details`, `summary`, `dialog`, `progress`, `meter`, `menu`, `search`, `optgroup`, and `option`
443
468
  - loading indicators through `<prefix>-spinner`, `<prefix>-loading-spinner`, and busy native buttons with `aria-busy="true"`
444
- - tooltip surfaces through `<prefix>-tooltip`, `<prefix>-tooltip-arrow`, `.ui-tooltip`, `[role="tooltip"]`, and `[data-tooltip]`
469
+ - tooltip surfaces through `<prefix>-tooltip`, `<prefix>-tooltip-arrow`, `.usk-tooltip`, `[role="tooltip"]`, and `[data-tooltip]`
445
470
 
446
471
  CSS improves accessibility presentation, but it cannot guarantee accessibility by itself. Use semantic HTML, real labels, keyboard-safe JavaScript, meaningful link/button text, and correct ARIA state management.
447
472
 
@@ -459,7 +484,7 @@ Every style includes theme-driven spinner utilities:
459
484
  <button class="saas-button saas-button-primary" aria-busy="true">Saving</button>
460
485
  ```
461
486
 
462
- Spinner track, stroke, and accent colors come from the native palette or 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.
487
+ Spinner track, stroke, and accent colors come from the native palette or active `data-theme` and `data-mode`, while geometry, motion cadence, depth, and busy-button indicators follow the active UI preset. The generic `.usk-spinner`, `.loading-spinner`, and `[data-loading-spinner]` hooks receive the same preset identity inside any `[data-ui="..."]` scope.
463
488
 
464
489
  ## Tooltip surfaces
465
490
 
@@ -472,7 +497,7 @@ Every style includes visible tooltip utilities with the same API and preset-spec
472
497
  </span>
473
498
  ```
474
499
 
475
- Inside a `[data-ui="..."]` scope, generic `.ui-tooltip`, `[role="tooltip"]`, and `[data-tooltip]` hooks inherit the active UI system.
500
+ Inside a `[data-ui="..."]` scope, generic `.usk-tooltip`, `[role="tooltip"]`, and `[data-tooltip]` hooks inherit the active UI system.
476
501
 
477
502
  ## Font overrides
478
503