ui-style-kit-css 2.2.0 → 2.4.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.
- package/CHANGELOG.md +77 -1
- package/CONTRIBUTING.md +8 -1
- package/README.md +171 -53
- package/STYLE-MAP.md +28 -5
- package/dist/assets/bauhaus-barlow-OFL.txt +93 -0
- package/dist/assets/bauhaus-barlow-semibold.ttf +0 -0
- package/dist/assets/bauhaus-barlow.ttf +0 -0
- package/dist/assets/bauhaus-condensed-OFL.txt +93 -0
- package/dist/assets/bauhaus-condensed-bold.ttf +0 -0
- package/dist/assets/bauhaus-condensed-extrabold.ttf +0 -0
- package/dist/assets/bento-manrope-OFL.txt +93 -0
- package/dist/assets/bento-manrope.ttf +0 -0
- package/dist/assets/clay-grain.png +0 -0
- package/dist/assets/clay-rounded-OFL.txt +93 -0
- package/dist/assets/clay-rounded.ttf +0 -0
- package/dist/assets/neo-noir-corner-dark.png +0 -0
- package/dist/assets/neo-noir-corner-light.png +0 -0
- package/dist/assets/neo-noir-texture-dark.png +0 -0
- package/dist/assets/neo-noir-texture-light.png +0 -0
- package/dist/assets/organic-display-OFL.txt +93 -0
- package/dist/assets/organic-display.ttf +0 -0
- package/dist/assets/organic-icons-LICENSE.txt +21 -0
- package/dist/assets/organic-sans-OFL.txt +93 -0
- package/dist/assets/organic-sans.ttf +0 -0
- package/dist/ui-style-kit.css +55604 -6525
- package/dist/ui-style-kit.min.css +2 -2
- package/dist/ui-style-kit.visual.css +55443 -6942
- package/dist/ui-style-kit.visual.min.css +2 -2
- package/dist/ui-style-kit.with-bridge.css +55646 -6551
- package/dist/ui-style-kit.with-bridge.min.css +2 -2
- package/dist/visual/art-deco.css +7318 -0
- package/dist/visual/bauhaus.css +2 -2961
- package/dist/visual/bento.css +2 -2980
- package/dist/visual/brutalism.css +2679 -352
- package/dist/visual/clay.css +5 -0
- package/dist/visual/cyberpunk.css +4482 -781
- package/dist/visual/data-terminal.css +6182 -0
- package/dist/visual/editorial-luxe.css +6450 -0
- package/dist/visual/industrial-utility.css +7259 -0
- package/dist/visual/maximalist.css +4080 -1025
- package/dist/visual/minimal-saas.css +3305 -888
- package/dist/visual/neo-noir.css +5 -0
- package/dist/visual/neumorphism.css +3582 -975
- package/dist/visual/organic-modern.css +5 -0
- package/dist/visual/paper-editorial.css +7074 -0
- package/dist/visual/retro-glass.css +4426 -760
- package/dist/visual/retrofuturism.css +3676 -875
- package/dist/visual/tactile.css +4568 -1036
- package/dist/visual/technical-blueprint.css +6713 -0
- package/dist/visual/y2k.css +3672 -753
- package/docs/ART-DECO.md +80 -0
- package/docs/BAUHAUS.md +152 -0
- package/docs/BENTO.md +121 -0
- package/docs/CLAY.md +127 -0
- package/docs/DEMO-SHOWCASE.md +65 -0
- package/docs/ECOSYSTEM.md +9 -5
- package/docs/EDITORIAL-LUX.md +75 -0
- package/docs/INDUSTRIAL-UTILITY.md +131 -0
- package/docs/NATIVE-ELEMENTS.md +23 -17
- package/docs/NEO-NOIR.md +94 -0
- package/docs/ORGANIC-MODERN.md +91 -0
- package/docs/PAPER-EDITORIAL.md +63 -0
- package/docs/PUBLISHING.md +36 -11
- package/docs/RELEASE-2.4.0.md +88 -0
- package/docs/RETRO-GLASS.md +105 -0
- package/docs/STYLE-GUIDE.md +68 -13
- package/docs/TACTILE.md +38 -0
- package/docs/TECHNICAL-BLUEPRINT.md +60 -0
- package/docs/TOKENS.md +90 -4
- package/docs/superpowers/plans/2026-08-29-preset-identity-system-refinement.md +649 -0
- package/docs/superpowers/plans/2026-09-04-library-wide-theme-fallback-and-fidelity.md +331 -0
- package/docs/superpowers/specs/2026-08-29-preset-identity-system-refinement-design.md +212 -0
- package/docs/superpowers/specs/2026-09-04-library-wide-theme-fallback-and-fidelity-design.md +113 -0
- package/manifest.json +769 -20
- package/package.json +79 -14
- package/styles/art-deco.css +2068 -0
- package/styles/assets/bauhaus-barlow-OFL.txt +93 -0
- package/styles/assets/bauhaus-barlow-semibold.ttf +0 -0
- package/styles/assets/bauhaus-barlow.ttf +0 -0
- package/styles/assets/bauhaus-condensed-OFL.txt +93 -0
- package/styles/assets/bauhaus-condensed-bold.ttf +0 -0
- package/styles/assets/bauhaus-condensed-extrabold.ttf +0 -0
- package/styles/assets/bento-manrope-OFL.txt +93 -0
- package/styles/assets/bento-manrope.ttf +0 -0
- package/styles/assets/clay-grain.png +0 -0
- package/styles/assets/clay-rounded-OFL.txt +93 -0
- package/styles/assets/clay-rounded.ttf +0 -0
- package/styles/assets/neo-noir-corner-dark.png +0 -0
- package/styles/assets/neo-noir-corner-light.png +0 -0
- package/styles/assets/neo-noir-texture-dark.png +0 -0
- package/styles/assets/neo-noir-texture-light.png +0 -0
- package/styles/assets/organic-display-OFL.txt +93 -0
- package/styles/assets/organic-display.ttf +0 -0
- package/styles/assets/organic-icons-LICENSE.txt +21 -0
- package/styles/assets/organic-sans-OFL.txt +93 -0
- package/styles/assets/organic-sans.ttf +0 -0
- package/styles/bauhaus.css +1092 -87
- package/styles/bento.css +1413 -86
- package/styles/brutalism.css +493 -10
- package/styles/clay.css +1927 -0
- package/styles/compat-layout.css +1 -2
- package/styles/components.css +698 -33
- package/styles/content-overflow.css +434 -9
- package/styles/cyberpunk.css +2082 -46
- package/styles/data-terminal.css +1795 -0
- package/styles/editorial-luxe.css +1251 -0
- package/styles/industrial-utility.css +2449 -0
- package/styles/interactive-surface-bridge.css +40 -24
- package/styles/interactive-surface-theme.css +31 -13
- package/styles/maximalist.css +1410 -94
- package/styles/minimal-saas.css +675 -73
- package/styles/native-elements.css +396 -168
- package/styles/neo-noir.css +1332 -0
- package/styles/neumorphism.css +1155 -52
- package/styles/organic-modern.css +1353 -0
- package/styles/paper-editorial.css +1724 -0
- package/styles/retro-glass.css +870 -42
- package/styles/retrofuturism.css +1173 -55
- package/styles/tactile.css +2018 -84
- package/styles/technical-blueprint.css +1337 -0
- package/styles/theme-colors.css +796 -5
- package/styles/y2k.css +1182 -40
package/docs/ART-DECO.md
ADDED
|
@@ -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.
|
package/docs/BAUHAUS.md
ADDED
|
@@ -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 20 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 20 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,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.
|
|
18
|
-
| `interactive-surface-css@1.
|
|
19
|
-
| `layout-style-css@3.0
|
|
17
|
+
| `ui-style-kit-css@2.4.0` | 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
|
+
| `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.
|
|
21
|
+
The current combination is `ui-style-kit-css@2.4.0`, `interactive-surface-css@1.7.0`, and `layout-style-css@3.1.0`. UI Style Kit `2.4.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`.
|
|
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-
|
|
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
|
|
|
@@ -88,3 +88,7 @@ import "layout-style-css";
|
|
|
88
88
|
- Layout Style CSS owns structural wrappers, layout recipes, grids, app shells, and section composition.
|
|
89
89
|
|
|
90
90
|
The canonical theme bridge does not make Interactive Surface a dependency of UI Style Kit. It only maps shared `--usk-*` roles to `--interactive-surface-*` tokens and provides paint; `state-core.css` continues to own interaction mechanics. The older `interactive-surface-bridge` and `with-bridge` exports are deprecated compatibility paths whose stateful behavior remains unchanged.
|
|
91
|
+
|
|
92
|
+
## Canonical ownership order
|
|
93
|
+
|
|
94
|
+
Load UI visual CSS first, UI interaction-theme paint second, Interactive Surface state core third, Layout CSS fourth, and application overrides last. Layout `3.1.0` no longer exports `integrations/ui-style-kit.css` or `legacy.css`; use its root or supported `foundation.css`, wrapper, primitive, recipe, utility, and personality entrypoints.
|