ui-style-kit-css 2.3.0 → 2.4.1

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 (122) hide show
  1. package/CHANGELOG.md +57 -2
  2. package/CONTRIBUTING.md +8 -1
  3. package/README.md +102 -44
  4. package/STYLE-MAP.md +14 -5
  5. package/dist/assets/bauhaus-barlow-OFL.txt +93 -0
  6. package/dist/assets/bauhaus-barlow-semibold.ttf +0 -0
  7. package/dist/assets/bauhaus-barlow.ttf +0 -0
  8. package/dist/assets/bauhaus-condensed-OFL.txt +93 -0
  9. package/dist/assets/bauhaus-condensed-bold.ttf +0 -0
  10. package/dist/assets/bauhaus-condensed-extrabold.ttf +0 -0
  11. package/dist/assets/bento-manrope-OFL.txt +93 -0
  12. package/dist/assets/bento-manrope.ttf +0 -0
  13. package/dist/assets/clay-grain.png +0 -0
  14. package/dist/assets/clay-rounded-OFL.txt +93 -0
  15. package/dist/assets/clay-rounded.ttf +0 -0
  16. package/dist/assets/neo-noir-corner-dark.png +0 -0
  17. package/dist/assets/neo-noir-corner-light.png +0 -0
  18. package/dist/assets/neo-noir-texture-dark.png +0 -0
  19. package/dist/assets/neo-noir-texture-light.png +0 -0
  20. package/dist/assets/organic-display-OFL.txt +93 -0
  21. package/dist/assets/organic-display.ttf +0 -0
  22. package/dist/assets/organic-icons-LICENSE.txt +21 -0
  23. package/dist/assets/organic-sans-OFL.txt +93 -0
  24. package/dist/assets/organic-sans.ttf +0 -0
  25. package/dist/ui-style-kit.css +47898 -15121
  26. package/dist/ui-style-kit.min.css +2 -2
  27. package/dist/ui-style-kit.visual.css +47771 -15122
  28. package/dist/ui-style-kit.visual.min.css +2 -2
  29. package/dist/ui-style-kit.with-bridge.css +47932 -15145
  30. package/dist/ui-style-kit.with-bridge.min.css +2 -2
  31. package/dist/visual/art-deco.css +3247 -295
  32. package/dist/visual/bauhaus.css +2 -4692
  33. package/dist/visual/bento.css +2 -4708
  34. package/dist/visual/brutalism.css +1229 -231
  35. package/dist/visual/clay.css +2 -4786
  36. package/dist/visual/cyberpunk.css +2663 -282
  37. package/dist/visual/data-terminal.css +2064 -276
  38. package/dist/visual/editorial-luxe.css +2315 -259
  39. package/dist/visual/industrial-utility.css +3142 -270
  40. package/dist/visual/maximalist.css +2185 -454
  41. package/dist/visual/minimal-saas.css +1503 -398
  42. package/dist/visual/neo-noir.css +2 -4787
  43. package/dist/visual/neumorphism.css +1690 -402
  44. package/dist/visual/organic-modern.css +2 -4764
  45. package/dist/visual/paper-editorial.css +2977 -292
  46. package/dist/visual/retro-glass.css +2625 -299
  47. package/dist/visual/retrofuturism.css +1885 -397
  48. package/dist/visual/tactile.css +2716 -498
  49. package/dist/visual/technical-blueprint.css +2599 -267
  50. package/dist/visual/y2k.css +1906 -309
  51. package/docs/ART-DECO.md +80 -0
  52. package/docs/BAUHAUS.md +152 -0
  53. package/docs/BENTO.md +121 -0
  54. package/docs/CLAY.md +127 -0
  55. package/docs/COLOR-THEMES.md +63 -0
  56. package/docs/DEMO-SHOWCASE.md +65 -0
  57. package/docs/ECOSYSTEM.md +4 -4
  58. package/docs/EDITORIAL-LUX.md +75 -0
  59. package/docs/INDUSTRIAL-UTILITY.md +131 -0
  60. package/docs/NATIVE-ELEMENTS.md +23 -17
  61. package/docs/NEO-NOIR.md +94 -0
  62. package/docs/ORGANIC-MODERN.md +91 -0
  63. package/docs/PAPER-EDITORIAL.md +63 -0
  64. package/docs/PUBLISHING.md +31 -10
  65. package/docs/RELEASE-2.4.0.md +88 -0
  66. package/docs/RELEASE-2.4.1.md +35 -0
  67. package/docs/RETRO-GLASS.md +105 -0
  68. package/docs/STYLE-GUIDE.md +41 -26
  69. package/docs/TACTILE.md +38 -0
  70. package/docs/TECHNICAL-BLUEPRINT.md +60 -0
  71. package/docs/TOKENS.md +80 -3
  72. package/docs/superpowers/plans/2026-09-04-library-wide-theme-fallback-and-fidelity.md +331 -0
  73. package/docs/superpowers/specs/2026-09-04-library-wide-theme-fallback-and-fidelity-design.md +113 -0
  74. package/manifest.json +624 -28
  75. package/package.json +20 -11
  76. package/styles/art-deco.css +1402 -17
  77. package/styles/assets/bauhaus-barlow-OFL.txt +93 -0
  78. package/styles/assets/bauhaus-barlow-semibold.ttf +0 -0
  79. package/styles/assets/bauhaus-barlow.ttf +0 -0
  80. package/styles/assets/bauhaus-condensed-OFL.txt +93 -0
  81. package/styles/assets/bauhaus-condensed-bold.ttf +0 -0
  82. package/styles/assets/bauhaus-condensed-extrabold.ttf +0 -0
  83. package/styles/assets/bento-manrope-OFL.txt +93 -0
  84. package/styles/assets/bento-manrope.ttf +0 -0
  85. package/styles/assets/clay-grain.png +0 -0
  86. package/styles/assets/clay-rounded-OFL.txt +93 -0
  87. package/styles/assets/clay-rounded.ttf +0 -0
  88. package/styles/assets/neo-noir-corner-dark.png +0 -0
  89. package/styles/assets/neo-noir-corner-light.png +0 -0
  90. package/styles/assets/neo-noir-texture-dark.png +0 -0
  91. package/styles/assets/neo-noir-texture-light.png +0 -0
  92. package/styles/assets/organic-display-OFL.txt +93 -0
  93. package/styles/assets/organic-display.ttf +0 -0
  94. package/styles/assets/organic-icons-LICENSE.txt +21 -0
  95. package/styles/assets/organic-sans-OFL.txt +93 -0
  96. package/styles/assets/organic-sans.ttf +0 -0
  97. package/styles/bauhaus.css +881 -110
  98. package/styles/bento.css +1182 -113
  99. package/styles/brutalism.css +266 -15
  100. package/styles/clay.css +1307 -72
  101. package/styles/compat-layout.css +1 -2
  102. package/styles/components.css +107 -36
  103. package/styles/content-overflow.css +11 -5
  104. package/styles/cyberpunk.css +1856 -51
  105. package/styles/data-terminal.css +1122 -18
  106. package/styles/editorial-luxe.css +581 -17
  107. package/styles/industrial-utility.css +1775 -16
  108. package/styles/interactive-surface-bridge.css +30 -20
  109. package/styles/interactive-surface-theme.css +21 -11
  110. package/styles/maximalist.css +1215 -133
  111. package/styles/minimal-saas.css +465 -93
  112. package/styles/native-elements.css +347 -171
  113. package/styles/neo-noir.css +661 -19
  114. package/styles/neumorphism.css +1021 -149
  115. package/styles/organic-modern.css +693 -23
  116. package/styles/paper-editorial.css +1053 -17
  117. package/styles/retro-glass.css +639 -50
  118. package/styles/retrofuturism.css +948 -60
  119. package/styles/tactile.css +1813 -111
  120. package/styles/technical-blueprint.css +673 -22
  121. package/styles/theme-colors.css +412 -2
  122. package/styles/y2k.css +954 -46
@@ -0,0 +1,80 @@
1
+ # Art Deco Element System
2
+
3
+ The Art Deco preset implements the retained light and dark **Art Deco UI Element System** boards using the canonical `deco-*` namespace. No public `ad-*` source aliases are introduced. All shared semantic components remain part of the unchanged `.ui-*` API.
4
+
5
+ ## Loading And Palettes
6
+
7
+ ```html
8
+ <link rel="stylesheet" href="dist/ui-style-kit.css">
9
+ <body data-ui="art-deco" data-mode="light">
10
+ <button class="deco-button deco-button-primary">Primary action</button>
11
+ </body>
12
+ ```
13
+
14
+ Omit `data-theme` for the reference palette. Add a supported theme, for example `data-theme="arctic-indigo"`, to use shared color tokens. `data-mode` supports light, dark, and contrast. The demo's mode-labeled button at the bottom of the Art Deco specimen selects the reference palette; the shared Color Theme picker returns to a named scheme.
15
+
16
+ Reference light uses ivory, navy, teal, burgundy, and structural gold. Dark uses near-black green surfaces, navy anchors, pale text, and brighter metal. Separate `--deco-on-primary`, `--deco-on-secondary`, `--deco-on-warning`, and other foreground aliases protect text on filled surfaces. They resolve from the corresponding `--usk-*-text-rgb` tokens. Ordinary component paint resolves through `--deco-*-rgb` to the shared theme tokens, with local reference fallbacks.
17
+
18
+ Stepped geometry, serif display type, diamond instruments, and segmented loading rings persist when colors change. Structural metal accepts the host accent token; geometry is not replaced by the color scheme.
19
+
20
+ ## Public Component Inventory
21
+
22
+ All entries compose with the existing universal suffixes and appear in `manifest.classApi.presetExtras["art-deco"]` where preset-specific.
23
+
24
+ | Board group | Public classes |
25
+ | --- | --- |
26
+ | 01 Buttons | `deco-button`, `deco-icon-button`, `deco-button-primary`, `deco-button-secondary`, `deco-button-ghost`, `deco-button-danger`, `deco-button-loading` |
27
+ | 02 Navigation | `deco-breadcrumb`, `deco-pagination`, existing nav and badge classes |
28
+ | 03 Fields | `deco-input`, `deco-input-valid`, `deco-select`, `deco-textarea`, `deco-label`, `deco-help-error`, `deco-file-upload`, `deco-file` |
29
+ | 04 Select and choice | `deco-select-panel`, `deco-group-label`, `deco-option`, `deco-multi`, `deco-chip` |
30
+ | 05 Checkboxes | `deco-check`, `deco-check-control` |
31
+ | 06 Radios | `deco-radio`, `deco-radio-control` |
32
+ | 07 Switches | `deco-switch`, `deco-switch-track`, `deco-switch-thumb` |
33
+ | 08 Empty and loading | `deco-empty-state`, `deco-spinner`, `deco-loading-spinner` and spinner size helpers |
34
+ | 09 Range | `deco-slider-wrap`, `deco-slider`, `deco-slider-output` |
35
+ | 10 Threshold meter | `deco-meter` |
36
+ | 11 Progress | `deco-progress`, `deco-progress-bar`, `deco-step-progress` |
37
+ | 12 Tabs and segments | `deco-tabs`, `deco-tab-list`, `deco-tab`, `deco-tab-panel`, `deco-segmented`, `deco-segment` |
38
+ | 13 Quantity | `deco-stepper` |
39
+ | 14 Stages | `deco-stage-list`, `deco-stage`, `deco-stage-number` |
40
+ | 15 Feedback | Existing badge/alert variants plus `deco-badge-info`, `deco-badge-outline`, `deco-alert-info`, `deco-alert-icon`, `deco-alert-close` |
41
+ | 16 Table | `deco-table-wrap`, `deco-table` |
42
+ | 17 Overlays | `deco-tooltip`, `deco-dialog`, `deco-dialog-actions`, existing spinner classes |
43
+
44
+ Foundations: `deco-sheet`, `deco-fan`, `deco-frame`, `deco-frame-navy`, `deco-masthead`, `deco-masthead-title`, `deco-monogram`, `deco-stat`, `deco-stat-value`, `deco-stat-label`, `deco-health`, `deco-meta-grid`, `deco-meta`, `deco-status-dot`, `deco-performance`, `deco-section-title`, `deco-number`, `deco-divider`, `deco-palette`, and `deco-swatch`.
45
+
46
+ Additional source recipes: `deco-details` and `deco-skeleton`. The previous metric components and all other existing public classes remain supported and showcased in the shared sections.
47
+
48
+ ## Composition And Fidelity
49
+
50
+ The demo begins with a symmetrical serif masthead and two overview bands, followed by five component lanes, a feedback/table/dialog row, and an eight-swatch footer. Four fan motifs, fine construction lines, stepped framing, the curved health gauge, and numbered section rules carry the reference identity.
51
+
52
+ The supplied PNGs are visual references, not production-ready markup. Their companion CSS has fixed board dimensions, a seven-column palette, a dotted spinner, a static range fill, and static dialog positioning. This implementation resolves those gaps with responsive composition, eight swatches, segmented rings, bound values, and native modal lifecycle behavior.
53
+
54
+ Deliberate functional adaptations: native date/time/number/file controls retain platform behavior; touch targets grow to 44px; layouts reflow below desktop widths instead of scaling text down; extra disclosure/skeleton examples and palette selection sit in a supplemental row. Source paragraph text and status colors are adjusted where needed for readability. These adaptations mean browser captures are not pixel-identical raster copies of the reference board.
55
+
56
+ ## Interaction Contract
57
+
58
+ This package is CSS-only. Applications own state and event handling. `demo/demo-art-deco.js` provides local specimen behavior without introducing runtime JavaScript into the published stylesheet API.
59
+
60
+ - Buttons retain stepped focus indicators. Loading state reserves indicator width and uses `aria-busy`; the app must prevent duplicate submissions.
61
+ - Native labels and choice inputs retain keyboard activation. Custom choice paint accompanies the input instead of replacing its semantics.
62
+ - Tabs use `role="tablist"`, `role="tab"`, `aria-selected`, roving tab stops, and a labeled panel. Arrow keys and Home/End update selection.
63
+ - Expanded choices use a listbox/option contract and keyboard selection. The demo keeps the native select synchronized.
64
+ - Chip removal announces the change and moves focus to a remaining control. File names are assigned with `textContent`, not inserted as HTML.
65
+ - Range fill and value bubble share `--deco-value` with the native input value. Quantity controls clamp values to 0-99 and disable at the limits.
66
+ - Threshold and progress examples have accessible numeric values. Stage completion includes readable text and `aria-current="step"` in addition to color.
67
+ - Dialogs use `showModal()`, Escape/cancel, and focus return. The static dialog specimen is a labeled group, not an automatically opened modal.
68
+ - Loaders stop under reduced motion. Alerts include status text and named dismiss controls.
69
+
70
+ ## Demo Isolation
71
+
72
+ The Art Deco specimen is created only when `data-ui="art-deco"` is selected. Existing `data-preset-only` synchronization also hides any other preset-owned regions. Switching styles rebuilds the active specimen instead of leaving hidden controls, stale dialogs, or source-only components visible. Shared semantic examples stay available and change appearance through the normal preset adapter.
73
+
74
+ ## Verification
75
+
76
+ Focused coverage lives in `tests/art-deco-template.test.js` and `tests/e2e/art-deco-template.spec.js`. The browser spec checks the full component inventory, all-preset visibility, both reference palettes, axe results, keyboard interactions, dialog focus return, token overrides, mobile containment, typography, progress rendering, dismiss icons, and touch targets. Its temporary HTTP server exists only for tests so WebKit can inspect stylesheet rules without local-file access errors.
77
+
78
+ Full-demo Art Deco accessibility states are included in `tests/e2e/accessibility.spec.js`. Reference screenshots are written to the operating system's temporary `usk-art-deco-template` directory. Repository build, CSS lint, palette contrast, compatibility, ownership, and package checks remain the project's standard commands.
79
+
80
+ The semantic authored-hook test currently detects additional `.ui-*` hooks in existing Retrofuturism source, independent of this Art Deco implementation. That source is not changed here. Generated declaration fingerprints and the distinct preset-extras count are updated for the intentional Art Deco expansion; no release, commit, push, or full CI run is implied.
@@ -0,0 +1,152 @@
1
+ # Bauhaus Workshop Components
2
+
3
+ The Bauhaus preset follows the September 2026 paired component boards from the
4
+ personal `artifact-template-bauhaus` template. Its public `bau-*` classes, generated
5
+ semantic aliases, and native HTML fallbacks retain the library's shared color system.
6
+
7
+ ## Usage
8
+
9
+ ```html
10
+ <body data-ui="bauhaus" data-mode="light" data-theme="arctic-indigo">
11
+ <article class="bau-panel">
12
+ <h2 class="bau-heading">Workshop settings</h2>
13
+ <button class="bau-button bau-button-primary">Save changes</button>
14
+ </article>
15
+ </body>
16
+ ```
17
+
18
+ Omit `data-theme` for the reference palette. Light mode defaults to an ivory
19
+ `#eee9dd` canvas, `#fffdf7` panels, and cobalt `#064bc4` primary actions. Dark mode
20
+ defaults to `#050505`, `#080808`, and `#0a54e8`. Contrast mode keeps the existing
21
+ high-contrast fallback. Danger and focus fallbacks use contrast-conscious variants
22
+ where small control labels or boundaries need stronger contrast than the board.
23
+
24
+ Every `--bau-*-rgb` resolver reads `--usk-*-rgb` first, with the preset color only
25
+ as a fallback. Shared tokens may be defined directly on the host or inherited
26
+ from an ancestor. This preset never assigns a palette to `--usk-*-rgb` variables.
27
+ An active theme therefore controls surfaces, text, selection, status colors,
28
+ and their paired foregrounds without changing the component geometry.
29
+
30
+ The sidebar is black with light text only in fallback mode. With a theme it uses
31
+ the inherited strong surface and text roles. The reference's fixed black rail
32
+ must not override the user's selected library theme.
33
+
34
+ ## Visual Contract
35
+
36
+ - Square panels, fields, badges, rectangular switch tracks/thumbs, and ruled tables.
37
+ - Circular radios, range thumbs, and continuously rotating ring loaders.
38
+ - No decorative panel bands, rounded card corners, soft elevation, or clipped buttons.
39
+ - Secondary buttons are outlined; primary, warning, danger, and status fills use
40
+ their semantic theme roles and matching foregrounds.
41
+ - The dialog retains the board's hard warning-colored offset as a specific exception.
42
+ - Existing `bau-switch` remains the labeled checkbox-based API. `bau-compact-switch`
43
+ is the source's button-based switch; it requires `role="switch"`, `aria-checked`,
44
+ an accessible name, and application state handling. These APIs do not share a
45
+ fixed-width label container.
46
+ - `bau-tooltip` remains an actual tooltip. `bau-tooltip-panel` is the specimen module
47
+ containing a trigger and tooltip, so the existing API stays compatible.
48
+
49
+ ## Typography
50
+
51
+ The package bundles Barlow Regular/Semibold and Barlow Condensed Bold/ExtraBold
52
+ from [Google Fonts](https://github.com/google/fonts/tree/main/ofl/barlow) and
53
+ [Barlow Condensed](https://github.com/google/fonts/tree/main/ofl/barlowcondensed),
54
+ with their SIL Open Font Licenses in `styles/assets/` and `dist/assets/`.
55
+ No runtime font request is needed. Override `--bau-font-sans` and
56
+ `--bau-font-display` to use application fonts. Display sizes do not scale with
57
+ viewport width, and letter spacing is zero in the new workshop treatments.
58
+
59
+ ## Reference Mapping
60
+
61
+ The full component inventory maps as follows. Existing public classes remain
62
+ available; the added reference-specific composition is scoped inside `bau-sheet`.
63
+ `bh-stage` and export-only pointer suppression are intentionally not public UI.
64
+ Use the normal layout library for application page topology; the sheet is an
65
+ optional responsive component specimen, not a required application wrapper.
66
+
67
+ The existing `bau-alert-text` class styles an alert's copy region and is included
68
+ in the preset-specific manifest inventory.
69
+
70
+ | Template | Library |
71
+ | --- | --- |
72
+ | `.bauhaus-ui` | `.bau-sheet` |
73
+ | `.bh-panel` | `.bau-panel` |
74
+ | `.bh-sidebar` | `.bau-sidebar` |
75
+ | `.bh-brand` | `.bau-brand` |
76
+ | `.bh-brand-mark` | `.bau-brand-mark` |
77
+ | `.bh-sidebar-spacer` | `.bau-sidebar-spacer` |
78
+ | `.bh-sidebar-note` | `.bau-sidebar-note` |
79
+ | `.bh-theme-toggle` | `.bau-theme-toggle` |
80
+ | `.bh-switch` | `.bau-compact-switch` |
81
+ | `.bh-canvas` | `.bau-canvas` |
82
+ | `.bh-top-grid` | `.bau-top-grid` |
83
+ | `.bh-middle-grid` | `.bau-middle-grid` |
84
+ | `.bh-bottom-grid` | `.bau-bottom-grid` |
85
+ | `.bh-hero` | `.bau-hero` |
86
+ | `.bh-hero-copy` | `.bau-hero-copy` |
87
+ | `.bh-eyebrow` | `.bau-eyebrow` |
88
+ | `.bh-inline-actions` | `.bau-inline-actions` |
89
+ | `.bh-hero-art` | `.bau-hero-art` |
90
+ | `.bh-button` | `.bau-button` |
91
+ | `.bh-actions` | `.bau-actions` |
92
+ | `.bh-system` | `.bau-system` |
93
+ | `.bh-live-dot` | `.bau-live-dot` |
94
+ | `.bh-service-row` | `.bau-service-row` |
95
+ | `.bh-usage` | `.bau-usage` |
96
+ | `.bh-usage-cell` | `.bau-usage-cell` |
97
+ | `.bh-sliders` | `.bau-sliders` |
98
+ | `.bh-metrics-stack` | `.bau-metrics-stack` |
99
+ | `.bh-utility-stack` | `.bau-utility-stack` |
100
+ | `.bh-quota` | `.bau-quota` |
101
+ | `.bh-quota-copy` | `.bau-quota-copy` |
102
+ | `.bh-form-panel` | `.bau-form-panel` |
103
+ | `.bh-form-grid` | `.bau-form-grid` |
104
+ | `.bh-field` | `.bau-field` |
105
+ | `.bh-table-tools` | `.bau-table-tools` |
106
+ | `.bh-input-icon` | `.bau-input-icon` |
107
+ | `.bh-file` | `.bau-file` |
108
+ | `.bh-choices` | `.bau-choices` |
109
+ | `.bh-switch-row` | `.bau-switch-row` |
110
+ | `.bh-stepper` | `.bau-stepper` |
111
+ | `.bh-segment` | `.bau-segment` |
112
+ | `.bh-badges` | `.bau-badges` |
113
+ | `.bh-status` | `.bau-status` |
114
+ | `.bh-alert` | `.bau-alert` |
115
+ | `.bh-toast` | `.bau-toast` |
116
+ | `.bh-tooltip` | `.bau-tooltip-panel` |
117
+ | `.bh-loading` | `.bau-loading` |
118
+ | `.bh-spinner` | `.bau-spinner` |
119
+ | `.bh-spin` | `.bau-spin` |
120
+ | `.bh-skeleton` | `.bau-skeleton` |
121
+ | `.bh-table-panel` | `.bau-table-panel` |
122
+ | `.bh-table-wrap` | `.bau-table-wrap` |
123
+ | `.bh-service-card` | `.bau-service-card` |
124
+ | `.bh-service-icon` | `.bau-service-icon` |
125
+ | `.bh-listbox` | `.bau-listbox` |
126
+ | `.bh-dialog-zone` | `.bau-dialog-zone` |
127
+ | `.bh-dialog-toolbar` | `.bau-dialog-toolbar` |
128
+ | `.bh-tabs` | `.bau-tabs` |
129
+ | `.bh-dialog-surface` | `.bau-dialog-surface` |
130
+ | `.bh-dialog-close` | `.bau-dialog-close` |
131
+ | `.bh-dialog-icon` | `.bau-dialog-icon` |
132
+ | `.bh-live-status` | `.bau-live-status` |
133
+ | `.bh-visually-hidden` | `.bau-visually-hidden` |
134
+
135
+ ## Demo And Evidence
136
+
137
+ `demo/demo-bauhaus.js` provides local examples of switching, password visibility,
138
+ range values, filtering, tab/listbox keyboard navigation, notices, and dialogs.
139
+ No demo action sends data to a server. Its visuals live in `styles/bauhaus.css`.
140
+ The complete unaltered source boards are available under the Reference board
141
+ disclosure; they are never cropped into substitute hero artwork.
142
+
143
+ The supplied package did not include separate geometry artwork or runnable
144
+ application source. The live specimen uses the existing licensed icon assets and
145
+ does not claim to reproduce missing decorative artwork. Responsive layouts and
146
+ readable control sizes replace the source's fixed 1536 x 1024 export geometry.
147
+
148
+ Focused tests cover the public mapping and fonts, existing component geometry,
149
+ native loaders, all 25 themes in three modes, ancestor-token inheritance,
150
+ reference palettes, responsive widths, reduced motion, keyboard controls, and
151
+ accessibility. These are fresh library tests, not the source package's historical
152
+ QA claims.
package/docs/BENTO.md ADDED
@@ -0,0 +1,121 @@
1
+ # Bento: Soft Mosaic
2
+
3
+ The Bento preset implements the retained September 2026 Bento UI template. Organic and other presets are not changed by this integration.
4
+
5
+ ## Usage
6
+
7
+ ```html
8
+ <body data-ui="bento" data-mode="light">
9
+ <article class="bento-panel">
10
+ <header><h2>Workspace</h2></header>
11
+ <button class="bento-button bento-button-primary">Continue</button>
12
+ </article>
13
+ </body>
14
+ ```
15
+
16
+ Add `data-theme="arctic-indigo"` (or any registered theme) to use shared theme colors. Omit `data-theme` to use the reference fallback palette. Existing `--usk-*-rgb` roles remain authoritative; no template palette is assigned to shared theme variables. Light defaults use canvas #f8f9fd and primary #3157dc; dark defaults use canvas #07111f and primary #2b5ee2. Contrast mode retains the library's high-contrast fallback.
17
+
18
+ The Manrope variable font is bundled with its SIL Open Font License in `styles/assets/` and copied to the distribution. Applications may override `--bento-font-sans`.
19
+
20
+ ## Class Mapping
21
+
22
+ Source `bm-*` classes map one-to-one to the public `bento-*` names below; `.bento-ui` becomes `.bento-sheet`. Existing public classes remain available. Export-only `bm-stage` is not needed in applications. All new geometry lives in `styles/bento.css`, not demo CSS.
23
+
24
+ The existing `.bento-stage` wrapper is inventoried for reference/export consumers.
25
+ It is optional; do not apply its `.is-export` state in an interactive application,
26
+ because that state deliberately suppresses pointer input and motion for capture.
27
+
28
+ | Template | Library |
29
+ | --- | --- |
30
+ | `.bento-ui` | `.bento-sheet` |
31
+ | `.bm-panel` | `.bento-panel` |
32
+ | `.bm-sidebar` | `.bento-sidebar` |
33
+ | `.bm-brand` | `.bento-brand` |
34
+ | `.bm-brand-mark` | `.bento-brand-mark` |
35
+ | `.bm-sidebar-spacer` | `.bento-sidebar-spacer` |
36
+ | `.bm-sidebar-note` | `.bento-sidebar-note` |
37
+ | `.bm-theme-toggle` | `.bento-theme-toggle` |
38
+ | `.bm-switch` | `.bento-switch` |
39
+ | `.bm-canvas` | `.bento-canvas` |
40
+ | `.bm-top-grid` | `.bento-top-grid` |
41
+ | `.bm-middle-grid` | `.bento-middle-grid` |
42
+ | `.bm-bottom-grid` | `.bento-bottom-grid` |
43
+ | `.bm-hero` | `.bento-hero` |
44
+ | `.bm-hero-copy` | `.bento-hero-copy` |
45
+ | `.bm-eyebrow` | `.bento-eyebrow` |
46
+ | `.bm-inline-actions` | `.bento-inline-actions` |
47
+ | `.bm-hero-art` | `.bento-hero-art` |
48
+ | `.bm-button` | `.bento-button` |
49
+ | `.bm-actions` | `.bento-actions` |
50
+ | `.bm-system` | `.bento-system` |
51
+ | `.bm-live-dot` | `.bento-live-dot` |
52
+ | `.bm-service-row` | `.bento-service-row` |
53
+ | `.bm-usage` | `.bento-usage` |
54
+ | `.bm-usage-cell` | `.bento-usage-cell` |
55
+ | `.bm-sliders` | `.bento-sliders` |
56
+ | `.bm-metrics-stack` | `.bento-metrics-stack` |
57
+ | `.bm-utility-stack` | `.bento-utility-stack` |
58
+ | `.bm-quota` | `.bento-quota` |
59
+ | `.bm-quota-copy` | `.bento-quota-copy` |
60
+ | `.bm-form-panel` | `.bento-form-panel` |
61
+ | `.bm-form-grid` | `.bento-form-grid` |
62
+ | `.bm-field` | `.bento-field` |
63
+ | `.bm-table-tools` | `.bento-table-tools` |
64
+ | `.bm-input-icon` | `.bento-input-icon` |
65
+ | `.bm-file` | `.bento-file` |
66
+ | `.bm-choices` | `.bento-choices` |
67
+ | `.bm-switch-row` | `.bento-switch-row` |
68
+ | `.bm-stepper` | `.bento-stepper` |
69
+ | `.bm-segment` | `.bento-segment` |
70
+ | `.bm-badges` | `.bento-badges` |
71
+ | `.bm-status` | `.bento-status` |
72
+ | `.bm-alert` | `.bento-alert` |
73
+ | `.bm-toast` | `.bento-toast` |
74
+ | `.bm-tooltip` | `.bento-tooltip` |
75
+ | `.bm-loading` | `.bento-loading` |
76
+ | `.bm-spinner` | `.bento-spinner` |
77
+ | `.bm-spin` | `.bento-spin` |
78
+ | `.bm-skeleton` | `.bento-skeleton` |
79
+ | `.bm-table-panel` | `.bento-table-panel` |
80
+ | `.bm-table-wrap` | `.bento-table-wrap` |
81
+ | `.bm-service-card` | `.bento-service-card` |
82
+ | `.bm-service-icon` | `.bento-service-icon` |
83
+ | `.bm-listbox` | `.bento-listbox` |
84
+ | `.bm-dialog-zone` | `.bento-dialog-zone` |
85
+ | `.bm-dialog-toolbar` | `.bento-dialog-toolbar` |
86
+ | `.bm-tabs` | `.bento-tabs` |
87
+ | `.bm-dialog-surface` | `.bento-dialog-surface` |
88
+ | `.bm-dialog-close` | `.bento-dialog-close` |
89
+ | `.bm-dialog-icon` | `.bento-dialog-icon` |
90
+ | `.bm-live-status` | `.bento-live-status` |
91
+ | `.bm-visually-hidden` | `.bento-visually-hidden` |
92
+
93
+ ## States and Existing Components
94
+
95
+ Source button modifiers `is-primary`, `is-secondary`, `is-danger`, and `is-ghost` are supported alongside the established `bento-button-primary`, `bento-button-secondary`, `bento-button-danger`, and `bento-button-ghost` classes. `is-hover` and `is-busy` expose sample states; application loading should also set `aria-busy="true"`. Warning keeps the shared paired warning role. Disabled controls use native `disabled`.
96
+
97
+ Native `button[aria-busy="true"]` controls use the same current-color circular ring as authored and semantic busy buttons. The Bento-only override removes the legacy tile background, inset shadow, and clipped corners; reduced-motion preferences remain respected. This is covered by `tests/e2e/bento-native-busy.spec.js` in light, dark, and contrast modes.
98
+
99
+ Labeled `bento-switch` / `ui-switch` checkboxes retain a separate text lane beside a fixed 37px by 20px track. Compact button/span switches use the same geometry without applying their thumb rules to label text. Focus and checked states remain native-input driven. Spinner sizes are 16px, 28px, and 40px; intrinsic flex sizing keeps each ring circular. The `ui-spinner`, `loading-spinner`, and `data-loading-spinner` aliases also receive the Bento ring treatment.
100
+
101
+ Alert titles and bodies wrap at spaces rather than splitting words. Direct title/body siblings can wrap into separate rows in narrow containers. Service medallion text icons use 32px type while retaining their existing container size.
102
+
103
+ Status chips support `is-violet`, `is-success`, `is-warning`, `is-danger`, and `is-info`. Switches use `role="switch"` and `aria-checked`; listboxes use option `aria-selected`; segmented buttons use `aria-pressed`. CSS does not implement application state or persist data.
104
+
105
+ Existing cards/panels use 17px corners, buttons 8px, inputs/selects/textareas 6px, badges 5px, feedback 9px, and dialogs 14px. Native form elements inherit the same role tokens. Legacy `ui-*` aliases continue to be generated by the package build.
106
+
107
+ ## Responsive and Accessibility Adaptations
108
+
109
+ The source is a fixed 1536 x 1024 board. Library compositions use intrinsic rows and responsive tracks instead of scaling the board or clipping labels. The sidebar becomes a horizontal strip on smaller screens, then panels stack. Tables retain horizontal scrolling. Typography is at least 12px in the specimen; controls are at least 36px high where the original used tiny 26px targets. Semantic chip text uses the body foreground over tinted backgrounds to preserve contrast rather than reproducing low-contrast source labels.
110
+
111
+ Muted light text and hover fills are slightly darker than the source to meet text contrast requirements. The light quota figure uses a darker green fallback; small blue text uses the link role, particularly in dark mode. Selected dialog tabs use the paired surface/text roles. These accessibility adjustments do not override a selected shared theme.
112
+
113
+ The Bento-only demo includes local sample interactions for password visibility, upload filenames, switches, range output, segmented choices, dismissible feedback, customer filtering, keyboard listbox/tab navigation, details, and a nonmodal inline confirmation dialog. It makes no service requests and does not store input. Its reference-palette selector is demo state, not a library requirement.
114
+
115
+ The native-element demo uses measured grid spans to pack unequal sample heights without reordering the DOM. A demo-only ResizeObserver updates spans when controls, disclosures, fonts, or viewport dimensions change and is disconnected when switching presets. Library consumers do not need this demo layout code. The follow-up annotation checks in `tests/e2e/bento-annotations.spec.js` cover switch activation, spinner geometry and aliases, word-boundary wrapping, icon scale, and desktop/mobile sample gaps.
116
+
117
+ ## Reference Assets
118
+
119
+ The retained template contains light/dark full-board PNGs, extracted from the supplied SVG wrappers, plus the original guide and CSS. It does not contain separate transparent illustration assets or the historical application's source/tests. The demo displays an illustration-only window from each unchanged board; it does not use a screenshot as interactive UI. Those illustration pixels keep their original colors and are not theme tokens. New CSS components contain no dependency on demo images.
120
+
121
+ Source provenance: `artifact-template-bento-ui/references/source/bento-ui.css`, `BENTO-UI-DESIGN-GUIDE.md`, and the retained light/dark board assets. Historical supplied QA is not evidence of current library validation.
package/docs/CLAY.md ADDED
@@ -0,0 +1,127 @@
1
+ # Clay Reference System
2
+
3
+ The Clay specimen implements the paired **Sculpted Product Studio** reference
4
+ images from the explicitly requested `artifact-template-clay` template. The saved
5
+ template and original references are unchanged.
6
+
7
+ ## Entry Points
8
+
9
+ Use `ui-style-kit-css/clay.css` for the complete preset, or
10
+ `ui-style-kit-css/visual/clay.css` for its visual-only distribution. Set
11
+ `data-ui="clay"` and `data-mode="light"`, `dark`, or `contrast` on the owning root.
12
+ The full demo is available in both `index.html` and `demo/index.html`.
13
+
14
+ ## Unified Material
15
+
16
+ The approved hand-molded direction supersedes the earlier split between a smooth
17
+ reference sheet and deeply embossed general components. Both now share the same
18
+ type roles, imperfect control contours, matte grain, theme paint, and three depth
19
+ treatments: resting slabs, raised controls, and recessed wells. The sheet retains
20
+ its compact dimensions and responsive arrangement, not a separate component skin.
21
+
22
+ Section dividers sit on a continuous slab instead of framing every group as a
23
+ rounded card. Grain is blended into backgrounds rather than overlaid on text.
24
+ Body copy, field values, alerts, and table cells remain crisp; restrained impressed
25
+ lettering is limited to headings and short control labels. Pressed buttons recess,
26
+ and inset keyboard rings remain visible inside the irregular silhouettes.
27
+
28
+ Rounded headings use the locally bundled Nunito variable font (exposed as
29
+ `Clay Rounded`), with its SIL Open Font License retained in
30
+ `styles/assets/clay-rounded-OFL.txt`. Source: [Google Fonts Nunito](https://github.com/google/fonts/tree/main/ofl/nunito).
31
+ Body copy and input values retain the compact system font. Circular controls use
32
+ smooth, slightly oval silhouettes rather than faceted polygons. Check marks and
33
+ demo icons are centered independently of font baselines.
34
+
35
+ Tables share a formed outer edge and matte raised headers while keeping straight,
36
+ readable rows. Feature strips use one blended slab without internal dividers;
37
+ supporting copy uses the surface's high-contrast foreground. Range, progress,
38
+ threshold, and milestone controls share the same grain and relief as buttons.
39
+
40
+ Set `data-theme` to any shared scheme to color the entire preset: canvas, slabs,
41
+ raised and inset surfaces, text, controls, status colors, tooltips, and the reference
42
+ sheet. Prefixed classes, semantic `.ui-*` components, and native elements use the
43
+ same material mappings. Live `--usk-*-rgb` overrides on the owning root also apply.
44
+ The sculpted edges, grain, and relief remain Clay-specific across schemes.
45
+
46
+ Omit `data-theme` to retain the original mineral palette. The demo sheet displays
47
+ live semantic-role swatches for a selected theme and mineral swatches in reference
48
+ palette mode. Contrast themes retain their paired semantic foreground/background
49
+ colors while suppressing decorative texture on selected controls.
50
+
51
+ ## Component Inventory
52
+
53
+ `clay-helper` supplies the existing compact supporting-copy treatment for fields
54
+ and component groups. It is included in the manifest alongside the classes below.
55
+
56
+ | Reference Area | Public Classes |
57
+ | --- | --- |
58
+ | Continuous slab and rail | `clay-sheet`, `clay-rail`, `clay-rail-link`, `clay-studio-mark` |
59
+ | Masthead, studio plate, palette | `clay-masthead`, `clay-studio`, `clay-palette`, `clay-palette-grid`, `clay-swatch` |
60
+ | Seamed component groups | `clay-reference-section`, `clay-section-title`, `clay-component-matrix`, `clay-choice-stack` |
61
+ | Button state matrix | `clay-button-matrix`, `clay-button`, `clay-button-primary`, `clay-button-secondary`, `clay-button-outline`, `clay-button-danger`, `clay-loading-track` |
62
+ | Text, password, search, numeric, date, time, datetime, textarea | `clay-field-row`, `clay-input-wrap`, `clay-input`, `clay-textarea`, `clay-icon-button` |
63
+ | Upload zone | `clay-file-zone` |
64
+ | Closed and expanded select | `clay-select`, `clay-select-menu`, `clay-option` |
65
+ | Removable multi-select tags | `clay-tags`, `clay-chip` |
66
+ | Checked, unchecked, mixed, selected and disabled controls | `clay-choices`, `clay-check`, `clay-check-control`, `clay-radio`, `clay-radio-control`, `clay-switch`, `clay-switch-track`, `clay-switch-thumb` |
67
+ | Range and value flag | `clay-control-band`, `clay-range`, `clay-range-scale`, `clay-value-flag` |
68
+ | Continuous and segmented progress | `clay-progress`, `clay-progress-bar`, `clay-segments` |
69
+ | Horizontal milestones and vertical progress | `clay-milestones`, `clay-milestone`, `clay-vertical-progress` |
70
+ | Threshold meter | `clay-threshold`, `clay-threshold-scale` |
71
+ | Tabs and panel | `clay-navigation-band`, `clay-tabs`, `clay-tab`, `clay-tab-panel`, `clay-tab-media` |
72
+ | Pagination, view modes, quantity | `clay-pagination`, `clay-segmented`, `clay-quantity` |
73
+ | Success, information, warning and error messages | `clay-feedback-band`, `clay-alert`, `clay-alert-success`, `clay-alert-info`, `clay-alert-warning`, `clay-alert-danger`, `clay-alert-close` |
74
+ | Tooltip and bead loader | `clay-tooltip`, `clay-tooltip-bottom`, `clay-spinner`, `clay-spinner-lg` |
75
+ | Status, category and count badges | `clay-data-band`, `clay-badge` and its semantic color variants |
76
+ | Task table | `clay-table-wrap`, `clay-table` |
77
+ | Team portraits and overflow count | `clay-avatar`, `clay-avatar-group` |
78
+ | Text and engraved studio seal | `clay-inset`, `clay-badge-seal` |
79
+ | Inline confirmation and native modal | `clay-dialog`, `clay-dialog-actions` |
80
+
81
+ The 50 added reference-specific classes are registered in `manifest.json`, alongside
82
+ the four existing Clay extras. Layout-only
83
+ legacy `clay-section` is not repurposed as a new visual component.
84
+
85
+ ## Behavior And Integration
86
+
87
+ The CSS library does not install event handlers. `demo/demo-clay.js` demonstrates
88
+ the HTML/ARIA contracts and local interactions: mode switching, anchor navigation,
89
+ password visibility, selectable/filterable options, tag creation/removal, keyboard
90
+ tabs, pagination, segmented selections, bounded quantity changes, range output,
91
+ message dismissal, and native modal confirmation with focus restoration.
92
+
93
+ Uploads are inspected locally, never sent to a server. The sample accepts PDF,
94
+ DOCX, XLSX and PNG files up to 10 MB. Tag values are inserted with `textContent`.
95
+ Loading examples and progress indicators are presentation samples, not claims of
96
+ background work. Table actions open the local confirmation demonstration.
97
+
98
+ `ClaySpecimen.render()` returns an empty string for every other preset. The shared
99
+ demo visibility pass also hides any `data-preset-only` region that does not match
100
+ the selected style. The browser test checks this across all 20 presets.
101
+
102
+ ## Assets And Fidelity
103
+
104
+ `styles/assets/clay-grain.png` is a generated, neutral clay-grain texture packaged
105
+ with every CSS entrypoint. `demo/assets/clay-avatars.png` contains three generated
106
+ fictional headshots in equal-width cells, used only by the demo. Lucide icons are
107
+ retained locally under their existing license; additional icons use version 0.468.0.
108
+
109
+ The reference is a raster, not a source design file with font metrics and separate
110
+ assets. The implemented sheet matches its component inventory and band composition,
111
+ but it is not a pixel-identical rendering: the approved unified material, system font metrics, native date/time
112
+ controls, generated portraits, and reconstructed material grain differ. Responsive
113
+ views deliberately reflow the desktop matrix instead of shrinking its labels.
114
+
115
+ ## Focused Verification
116
+
117
+ - `node --test tests/clay-template.test.js`
118
+ - `npx playwright test tests/e2e/clay-template.spec.js --project=chromium --workers=1`
119
+ - Existing Clay material test in `tests/e2e/clay-reference-fidelity.spec.js`
120
+ - `tests/e2e/clay-theme-colors.spec.js` checks all 25 themes in three modes,
121
+ live RGB overrides, stable material geometry, and desktop/mobile containment
122
+ - `tests/e2e/clay-unified-material.spec.js` compares rendered public and sheet
123
+ controls, reading-surface typography, keyboard/pressed states, and responsive views
124
+ - CSS lint, ownership, compatibility, package, and demo asset-version checks
125
+
126
+ Run individual browser cases during iteration. Do not replace a focused failure
127
+ with an unrelated full-suite run.
@@ -0,0 +1,63 @@
1
+ # Color Themes
2
+
3
+ UI Style Kit CSS exposes 25 named color themes independently from its 20 visual
4
+ presets. Select a visual system with `data-ui`, a palette with `data-theme`, and
5
+ the display treatment with `data-mode`.
6
+
7
+ ```html
8
+ <body data-ui="minimal-saas" data-theme="signal-yellow" data-mode="light">
9
+ ```
10
+
11
+ The five newest themes fill color families that were previously absent or only
12
+ represented by neighboring hues. They use the same complete semantic role set
13
+ as every existing theme and support `light`, `dark`, and `contrast` modes.
14
+
15
+ ## Gap-filling palettes
16
+
17
+ | Theme ID | Color territory | Light foundation | Light primary / secondary / accent | Dark foundation | Dark primary / secondary / accent |
18
+ | --- | --- | --- | --- | --- | --- |
19
+ | `signal-yellow` | True signal yellow with ink-navy support | `#fffbe8` | `#ffcc00` / `#25324e` / `#ffe45c` | `#120f03` | `#ffd83b` / `#8ec6ff` / `#ffe866` |
20
+ | `botanical-green` | Central leaf green with a restrained berry counterpoint | `#eff9f2` | `#0d7e42` / `#793058` / `#40c975` | `#041109` | `#52de8b` / `#ee94c7` / `#6bf0a4` |
21
+ | `cobalt-electric` | Clean saturated cobalt with coral signaling | `#f0f4ff` | `#0052cc` / `#b53948` / `#5279ff` | `#040919` | `#6f95ff` / `#ff8593` / `#8faaff` |
22
+ | `stone-graphite` | Chroma-light stone, graphite, silver, and semantic status color | `#f4f4f2` | `#383c3a` / `#5b615d` / `#b8beba` | `#0c0d0d` | `#d0d4d1` / `#a4aaa6` / `#e6e8e7` |
23
+ | `walnut-clay` | Cocoa walnut, mushroom earth, clay, and muted foliage | `#f8f1e9` | `#704330` / `#58624e` / `#be6f52` | `#120c09` | `#da9e7c` / `#b2c09d` / `#eba988` |
24
+
25
+ ## Design intent
26
+
27
+ - **Signal Yellow** is deliberately yellow-led rather than another gold or
28
+ amber scheme. Ink navy provides structure without dulling the signal color.
29
+ In light mode, primary and accent text use the darker link ink on neutral
30
+ surfaces; primary and accent fills retain their vivid yellow values.
31
+ - **Botanical Green** occupies the clean middle-green range between the
32
+ library's moss, lime, and teal-emerald themes. Berry is used as a controlled
33
+ complementary color.
34
+ - **Cobalt Electric** provides a vivid primary blue distinct from steel, cyan,
35
+ navy, and subdued indigo. Coral carries urgent secondary actions.
36
+ - **Stone Graphite** is the neutral brand palette. Its interface hierarchy
37
+ comes from value and surface separation; chroma is reserved for semantic
38
+ success, warning, and danger roles.
39
+ - **Walnut Clay** covers the deep brown and taupe family without behaving like
40
+ an orange theme. Clay and muted foliage keep the palette warm and grounded.
41
+
42
+ ## Token contract
43
+
44
+ The source values in `styles/theme-colors.css` are space-separated RGB channels,
45
+ not complete CSS colors. For example:
46
+
47
+ ```css
48
+ :where([data-ui][data-theme="cobalt-electric"][data-mode="light"]) {
49
+ --usk-primary-rgb: 0 82 204;
50
+ --usk-primary-text-rgb: 255 255 255;
51
+ }
52
+ ```
53
+
54
+ Consume those channels through the existing semantic or preset-prefixed tokens.
55
+ Do not put `rgb(...)` or hexadecimal values inside a `--usk-*-rgb` override.
56
+ Each foreground/background role pair is validated to at least WCAG AA text
57
+ contrast by the library's manifest-driven contrast check.
58
+
59
+ Bright palettes can also set the optional `--usk-primary-ink` and
60
+ `--usk-accent-ink` tokens to complete CSS colors for text on neutral surfaces.
61
+ These text-only overrides do not change fill colors or text on filled controls.
62
+ They reset at each `data-ui` root, and presets retain their original text colors
63
+ when no ink override is set. Signal Yellow uses this distinction in light mode.
@@ -0,0 +1,65 @@
1
+ # Demo showcase and reference fixtures
2
+
3
+ The default `index.html` and `demo/index.html` present one shared library showcase:
4
+ semantic components, overview, color tokens, prefixed components, native HTML,
5
+ the Interactive Surface bridge, and usage examples.
6
+
7
+ ## Preview state and palette editing
8
+
9
+ Use `?ui=tactile&theme=None&mode=dark` to preview a native palette. The `personality`
10
+ query parameter is a compatibility alias for `ui`; `ui` takes precedence when both
11
+ are present. Only manifest-supported preset, theme, and mode values are accepted.
12
+
13
+ **None — style defaults** omits `data-theme`. The color workbench exposes the
14
+ selected preset's computed RGB variables, including material colors such as paper,
15
+ ink, and brass. Native edits export `--<prefix>-*-rgb` and remain scoped to that
16
+ preset and mode. Named themes expose the 23 shared `--usk-*-rgb` roles instead.
17
+ Switching contexts restores that context's edits; reset affects only the active
18
+ palette. Reload clears temporary edits. Recheck accessibility after editing colors.
19
+
20
+ The toolbar uses one native dropdown indicator across styles. This does not change
21
+ the preset-specific select specimens or their platform-owned popup behavior.
22
+
23
+ ## Style-specific components
24
+
25
+ The Components section begins with `#style-specific`. This gallery changes with
26
+ the selected UI style without adding a second page header, navigation system,
27
+ palette picker, or repeated form/button catalogue.
28
+
29
+ Industrial Utility includes its pilot/status bank, switchgear, key switch, guarded
30
+ stop, pressure readout, meters, process stages, and alarm acknowledgment flow.
31
+ These controls operate on local demonstration state only; no equipment is connected.
32
+ Acknowledging a sample alarm does not remove its critical condition.
33
+
34
+ Clay, Neo Noir, Art Deco, Editorial Lux, Retro Glass, and Technical Blueprint also
35
+ reuse distinctive progress and instrumentation fragments from their authored boards.
36
+ Other presets retain their public surface/shape examples in this same section.
37
+
38
+ Gallery fragments use the actual library classes and inherit the active palette.
39
+ Selecting **None — style defaults** uses native preset colors; named themes and
40
+ token-editor overrides continue to apply. No gallery sets its own color theme.
41
+
42
+ ## Original reference boards
43
+
44
+ Open `index.html?view=reference` (or `demo/index.html?view=reference`) to display
45
+ the original complete boards for developer comparisons. Select the desired preset
46
+ using the normal controls. The curated gallery is omitted in this view to avoid
47
+ duplicate component IDs and event handlers. The view includes a return link.
48
+
49
+ The reference assets, board renderers, and library styles have not been deleted.
50
+ Existing board-specific browser tests use this explicit query. Public-page tests
51
+ continue to use the default URL.
52
+
53
+ ## Maintaining excerpts
54
+
55
+ The authored board marks complete, non-nesting fragments with
56
+ `<!--demo-style-feature-->` / `<!--/demo-style-feature-->` comments. The gallery
57
+ extracts only those explicit boundaries, not arbitrary HTML tags. Associated
58
+ dialog/live-region markup uses `demo-style-support` boundaries and stays outside
59
+ the feature grid. Keep unique IDs and their referenced labels inside retained
60
+ fragments, and bind any interactive controls in the public view as well as the fixture.
61
+
62
+ `tests/demo-style-showcase.test.js` verifies rendering and focused controller
63
+ behavior without launching a browser. `tests/e2e/demo-style-showcase.spec.js`
64
+ covers actual layout, keyboard interaction, modal focus, and theme/mode switching.
65
+ The latter requires an available, authorized browser session for rendered QA.
package/docs/ECOSYSTEM.md CHANGED
@@ -14,11 +14,11 @@ The pinned Interactive Surface and Layout commits are published merge objects. B
14
14
 
15
15
  | Library | Current aligned version | Owns |
16
16
  |---|---:|---|
17
- | `ui-style-kit-css@2.3.0` | current release target | visual identity, color themes, UI paint, native HTML styling, content wrapping, and bridge tokens |
18
- | `interactive-surface-css@1.6.0` | compatible state release | interaction-state primitives, surface behavior, state layers, and input affordances |
17
+ | `ui-style-kit-css@2.4.1` | current release target | visual identity, color themes, UI paint, native HTML styling, content wrapping, and bridge tokens |
18
+ | `interactive-surface-css@1.7.0` | compatible state release | interaction-state primitives, surface behavior, state layers, and input affordances |
19
19
  | `layout-style-css@3.1.0` | compatible structural release | structural wrappers, grids, sections, app shells, and layout recipes |
20
20
 
21
- The current combination is `ui-style-kit-css@2.3.0`, `interactive-surface-css@1.6.0`, and `layout-style-css@3.1.0`. UI Style Kit `2.3.0` is the current release target; the companion versions are published releases. 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`.
21
+ The current combination is `ui-style-kit-css@2.4.1`, `interactive-surface-css@1.7.0`, and `layout-style-css@3.1.0`. UI Style Kit `2.4.1` is the current release target; the companion versions are published releases. 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`.
22
22
 
23
23
  ## Layout-to-visual pairing matrix
24
24
 
@@ -32,7 +32,7 @@ Pairings are recommendations, never dependencies. `data-ly-layout`, `data-ui`, `
32
32
 
33
33
  ## Shared semantic theming
34
34
 
35
- UI Style Kit's complete, visual, and focused visual entrypoints produce the 12 package-neutral `--ui-*` control tokens under `[data-ui][data-theme][data-mode]`. A third-party theme may produce the same contract under its own scope; consumers do not need UI Style Kit-specific `--usk-*` values. Package-specific values remain first in consumer fallback chains, shared semantic values come second, and legacy values or literals remain last.
35
+ UI Style Kit's complete, visual, and focused visual entrypoints produce the 12 package-neutral `--ui-*` control tokens under `[data-ui][data-mode]`; `data-theme` is optional. A third-party theme may produce the same contract under its own scope; consumers do not need UI Style Kit-specific `--usk-*` values. Package-specific values remain first in consumer fallback chains, shared semantic values come second, and legacy values or literals remain last.
36
36
 
37
37
  A third-party producer can theme Interactive Surface's complete standalone entry point without a package-specific adapter:
38
38