ui-style-kit-css 2.6.1 → 2.7.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.
- package/CHANGELOG.md +33 -0
- package/README.md +13 -12
- package/dist/ui-style-kit.css +1185 -1335
- package/dist/ui-style-kit.min.css +2 -2
- package/dist/ui-style-kit.visual.css +1185 -1335
- package/dist/ui-style-kit.visual.min.css +2 -2
- package/dist/ui-style-kit.with-bridge.css +1185 -1335
- package/dist/ui-style-kit.with-bridge.min.css +2 -2
- package/dist/visual/art-deco.css +455 -717
- package/dist/visual/bauhaus.css +2 -2
- package/dist/visual/bento.css +2 -2
- package/dist/visual/brutalism.css +411 -678
- package/dist/visual/clay.css +2 -2
- package/dist/visual/cyberpunk.css +430 -690
- package/dist/visual/data-terminal.css +426 -693
- package/dist/visual/editorial-luxe.css +429 -696
- package/dist/visual/industrial-utility.css +437 -699
- package/dist/visual/maximalist.css +434 -700
- package/dist/visual/minimal-saas.css +421 -684
- package/dist/visual/neo-noir.css +2 -2
- package/dist/visual/neumorphism.css +422 -689
- package/dist/visual/organic-modern.css +2 -2
- package/dist/visual/paper-editorial.css +484 -711
- package/dist/visual/retro-glass.css +435 -689
- package/dist/visual/retrofuturism.css +423 -690
- package/dist/visual/tactile.css +433 -698
- package/dist/visual/technical-blueprint.css +437 -700
- package/dist/visual/y2k.css +445 -692
- package/docs/COMPONENT-SPACING.md +154 -0
- package/docs/DEMO-SHOWCASE.md +16 -0
- package/docs/ECOSYSTEM.md +2 -2
- package/docs/PUBLISHING.md +7 -7
- package/docs/RELEASE-2.7.0.md +21 -0
- package/docs/RELEASE-2.7.1.md +21 -0
- package/manifest.json +9 -1
- package/package.json +2 -2
- package/styles/art-deco.css +18 -9
- package/styles/bauhaus.css +8 -5
- package/styles/bento.css +27 -16
- package/styles/brutalism.css +8 -5
- package/styles/clay.css +17 -10
- package/styles/clean-defaults.css +20 -0
- package/styles/component-composition.css +63 -0
- package/styles/components.css +262 -2
- package/styles/cyberpunk.css +21 -10
- package/styles/data-terminal.css +9 -5
- package/styles/editorial-luxe.css +9 -5
- package/styles/industrial-utility.css +17 -8
- package/styles/maximalist.css +10 -5
- package/styles/minimal-saas.css +9 -4
- package/styles/native-elements.css +32 -2
- package/styles/neo-noir.css +18 -9
- package/styles/neumorphism.css +13 -7
- package/styles/organic-modern.css +4 -4
- package/styles/paper-editorial.css +45 -7
- package/styles/retro-glass.css +16 -6
- package/styles/retrofuturism.css +10 -7
- package/styles/tactile.css +22 -9
- package/styles/technical-blueprint.css +14 -7
- package/styles/y2k.css +34 -14
|
@@ -251,7 +251,7 @@
|
|
|
251
251
|
--usk-native-range-track-shadow: 2px 2px 0 rgb(0 0 0 / .16);
|
|
252
252
|
--usk-native-range-progress-background: var(--paper-primary);
|
|
253
253
|
--usk-native-range-thumb-size: 1.15rem;
|
|
254
|
-
--usk-native-range-thumb-background: var(--
|
|
254
|
+
--usk-native-range-thumb-background: var(--usk-native-primary);
|
|
255
255
|
--usk-native-range-thumb-border: 1px solid var(--paper-border);
|
|
256
256
|
--usk-native-range-thumb-radius: 50%;
|
|
257
257
|
--usk-native-range-thumb-shadow: 2px 2px 0 rgb(0 0 0 / .16);
|
|
@@ -437,7 +437,9 @@
|
|
|
437
437
|
/* Theme-responsive component defaults */
|
|
438
438
|
.paper-card, .paper-panel { background: var(--paper-card-bg); }
|
|
439
439
|
.paper-toolbar, .paper-table-wrap { background: var(--paper-control-bg); }
|
|
440
|
-
|
|
440
|
+
/** Attribute-selected variants bypass the legacy neutral-only paint fallback. */
|
|
441
|
+
/** Neutral defaults exclude outlined actions so their hover fill and ink remain paired. */
|
|
442
|
+
.paper-button:where(:not([data-ui-variant])):not(.paper-button-primary):not(.paper-button-secondary):not(.paper-button-danger):not(.paper-button-warning):not(.paper-button-ghost):not(.paper-button-outline-heavy), .paper-icon-button { background: var(--paper-control-bg); }
|
|
441
443
|
.paper-button, .paper-icon-button, .paper-badge, .paper-nav-link { font-family: var(--paper-font-control); }
|
|
442
444
|
|
|
443
445
|
|
|
@@ -629,7 +631,7 @@
|
|
|
629
631
|
.paper-button.paper-button-outline-heavy,
|
|
630
632
|
.paper-button-outline-heavy {
|
|
631
633
|
background: transparent;
|
|
632
|
-
color: var(--usk-primary-ink, var(--paper-
|
|
634
|
+
color: var(--usk-primary-ink, var(--paper-text));
|
|
633
635
|
border-style: solid;
|
|
634
636
|
border-width: 2px;
|
|
635
637
|
border-color: var(--paper-primary);
|
|
@@ -863,7 +865,7 @@
|
|
|
863
865
|
--usk-native-range-track-shadow: 0 1px 0 rgb(var(--paper-text-rgb) / .22);
|
|
864
866
|
--usk-native-range-progress-background: var(--paper-primary);
|
|
865
867
|
--usk-native-range-thumb-size: 1rem;
|
|
866
|
-
--usk-native-range-thumb-background: var(--
|
|
868
|
+
--usk-native-range-thumb-background: var(--usk-native-primary);
|
|
867
869
|
--usk-native-range-thumb-border: 2px solid var(--paper-primary);
|
|
868
870
|
--usk-native-range-thumb-radius: .02rem;
|
|
869
871
|
--usk-native-range-thumb-shadow: .08rem .08rem 0 rgb(var(--paper-text-rgb) / .28);
|
|
@@ -941,7 +943,8 @@
|
|
|
941
943
|
@media print {
|
|
942
944
|
[data-ui="paper-editorial"] { background: #fff !important; color: #000 !important; }
|
|
943
945
|
[data-ui="paper-editorial"] * { box-shadow: none !important; text-shadow: none !important; }
|
|
944
|
-
|
|
946
|
+
/** Inline-link ink must not override the foreground paired with an action surface. */
|
|
947
|
+
[data-ui="paper-editorial"] a { color: #000 !important; text-decoration: underline; }
|
|
945
948
|
}
|
|
946
949
|
}
|
|
947
950
|
|
|
@@ -1069,13 +1072,13 @@
|
|
|
1069
1072
|
|
|
1070
1073
|
:where([data-ui="paper-editorial"]) :where(button,input,select,textarea) { font: inherit; }
|
|
1071
1074
|
|
|
1072
|
-
[data-ui="paper-editorial"] a {
|
|
1075
|
+
[data-ui="paper-editorial"] a:where(:not(.paper-button):not(.paper-icon-button):not(.paper-nav-link)) {
|
|
1073
1076
|
color: var(--paper-sheet-blue);
|
|
1074
1077
|
text-decoration-thickness: 1px;
|
|
1075
1078
|
text-underline-offset: 3px;
|
|
1076
1079
|
}
|
|
1077
1080
|
|
|
1078
|
-
[data-ui="paper-editorial"] a:hover { color: var(--paper-sheet-oxblood); }
|
|
1081
|
+
[data-ui="paper-editorial"] a:where(:not(.paper-button):not(.paper-icon-button):not(.paper-nav-link)):hover { color: var(--paper-sheet-oxblood); }
|
|
1079
1082
|
|
|
1080
1083
|
.paper-kicker,
|
|
1081
1084
|
.paper-label,
|
|
@@ -1699,6 +1702,41 @@ dialog.paper-dialog:not([open]) { display: none; }
|
|
|
1699
1702
|
.paper-switch input:checked + .paper-switch-track .paper-switch-thumb { background: var(--paper-sheet-on-blue); }
|
|
1700
1703
|
.paper-switch input:has(+ .paper-switch-track) { position: absolute; opacity: 0; pointer-events: none; }
|
|
1701
1704
|
.paper-switch input:not(:has(+ .paper-switch-track)) { pointer-events: auto; }
|
|
1705
|
+
/** Message symbols have their own lane, centered against the complete text block. */
|
|
1706
|
+
.paper-alert {
|
|
1707
|
+
position: relative;
|
|
1708
|
+
display: grid;
|
|
1709
|
+
grid-template-columns: minmax(0, 1fr);
|
|
1710
|
+
align-items: center;
|
|
1711
|
+
gap: .25rem .5rem;
|
|
1712
|
+
padding-inline-start: 2.75rem;
|
|
1713
|
+
}
|
|
1714
|
+
.paper-alert::before {
|
|
1715
|
+
position: absolute;
|
|
1716
|
+
inset-block-start: 50%;
|
|
1717
|
+
inset-inline-start: .75rem;
|
|
1718
|
+
display: grid;
|
|
1719
|
+
place-items: center;
|
|
1720
|
+
inline-size: 1.5rem;
|
|
1721
|
+
block-size: 1.5rem;
|
|
1722
|
+
min-inline-size: 0;
|
|
1723
|
+
min-block-size: 0;
|
|
1724
|
+
margin: 0;
|
|
1725
|
+
padding: 0;
|
|
1726
|
+
font: 700 1.25rem/1 "Segoe UI Symbol", Arial, sans-serif;
|
|
1727
|
+
transform: translateY(-50%);
|
|
1728
|
+
}
|
|
1729
|
+
.paper-alert > :is(p, strong, span, div) {
|
|
1730
|
+
min-inline-size: 0;
|
|
1731
|
+
width: auto;
|
|
1732
|
+
margin: 0;
|
|
1733
|
+
}
|
|
1734
|
+
.paper-alert:has(> button) { grid-template-columns: minmax(0, 1fr) auto; }
|
|
1735
|
+
.paper-alert > button {
|
|
1736
|
+
align-self: center;
|
|
1737
|
+
margin: 0;
|
|
1738
|
+
}
|
|
1739
|
+
|
|
1702
1740
|
.paper-spinner, .paper-loading-spinner, [data-ui="paper-editorial"] :where(.ui-spinner,.loading-spinner,[data-loading-spinner]) {
|
|
1703
1741
|
inline-size: 24px; block-size: 24px; min-width: 24px; padding: 0; border: 2px solid var(--paper-sheet-rule-soft); border-right-color: var(--paper-sheet-blue); border-radius: 50%; background: none; box-shadow: none; clip-path: none; animation: paper-sheet-spin .75s linear infinite;
|
|
1704
1742
|
}
|
package/styles/retro-glass.css
CHANGED
|
@@ -290,7 +290,7 @@
|
|
|
290
290
|
--usk-native-range-track-shadow: inset 0 1px rgb(255 255 255 / .55);
|
|
291
291
|
--usk-native-range-progress-background: var(--rg-primary);
|
|
292
292
|
--usk-native-range-thumb-size: 1.35rem;
|
|
293
|
-
--usk-native-range-thumb-background: var(--
|
|
293
|
+
--usk-native-range-thumb-background: var(--usk-native-primary);
|
|
294
294
|
--usk-native-range-thumb-border: 1px solid var(--rg-border);
|
|
295
295
|
--usk-native-range-thumb-radius: 50%;
|
|
296
296
|
--usk-native-range-thumb-shadow: inset 0 1px rgb(255 255 255 / .55);
|
|
@@ -484,7 +484,9 @@
|
|
|
484
484
|
/* Theme-responsive component defaults */
|
|
485
485
|
.rg-card, .rg-panel { background: var(--rg-card-bg); }
|
|
486
486
|
.rg-toolbar, .rg-table-wrap { background: var(--rg-control-bg); }
|
|
487
|
-
|
|
487
|
+
/** Attribute-selected variants bypass the legacy neutral-only paint fallback. */
|
|
488
|
+
/** Neutral defaults exclude outlined actions so their hover fill and ink remain paired. */
|
|
489
|
+
.rg-button:where(:not([data-ui-variant])):not(.rg-button-primary):not(.rg-button-secondary):not(.rg-button-danger):not(.rg-button-warning):not(.rg-button-ghost):not(.rg-button-outline-heavy), .rg-icon-button { background: var(--rg-control-bg); }
|
|
488
490
|
.rg-button, .rg-icon-button, .rg-badge, .rg-nav-link { font-family: var(--rg-font-control); }
|
|
489
491
|
|
|
490
492
|
/** All loader APIs share a complete circular track with one rotating accent. */
|
|
@@ -606,7 +608,7 @@
|
|
|
606
608
|
.rg-button.rg-button-outline-heavy,
|
|
607
609
|
.rg-button-outline-heavy {
|
|
608
610
|
background: transparent;
|
|
609
|
-
color: var(--usk-primary-ink, var(--rg-
|
|
611
|
+
color: var(--usk-primary-ink, var(--rg-text));
|
|
610
612
|
border-style: solid;
|
|
611
613
|
border-width: 2px;
|
|
612
614
|
border-color: var(--rg-primary);
|
|
@@ -806,7 +808,7 @@
|
|
|
806
808
|
--usk-native-range-track-shadow: inset 0 2px 4px rgb(var(--rg-text-rgb) / .22);
|
|
807
809
|
--usk-native-range-progress-background: linear-gradient(180deg, var(--rg-primary-hover), var(--rg-primary));
|
|
808
810
|
--usk-native-range-thumb-size: 1.2rem;
|
|
809
|
-
--usk-native-range-thumb-background:
|
|
811
|
+
--usk-native-range-thumb-background: var(--usk-native-primary);
|
|
810
812
|
--usk-native-range-thumb-border: 1px solid var(--rg-border);
|
|
811
813
|
--usk-native-range-thumb-radius: 50%;
|
|
812
814
|
--usk-native-range-thumb-shadow: inset 0 1px 0 var(--rg-surface-strong), 0 2px 4px rgb(var(--rg-text-rgb) / .28);
|
|
@@ -994,7 +996,9 @@
|
|
|
994
996
|
.rg-icon-button { inline-size: var(--rg-control-height); padding: 8px; aspect-ratio: 1; }
|
|
995
997
|
.rg-button-primary { background: var(--rg-gloss); color: var(--rg-gloss-ink); border-color: var(--rg-primary); }
|
|
996
998
|
.rg-button-secondary { background: var(--rg-control-material); color: var(--rg-text); border-color: var(--rg-line-strong); }
|
|
997
|
-
|
|
999
|
+
/** Danger gloss retains its semantic foreground pair and confines reflection to the upper edge. */
|
|
1000
|
+
.rg-button-danger { background: linear-gradient(180deg, rgb(255 255 255 / .4), transparent 12%), var(--rg-danger); color: var(--rg-on-danger); border-color: var(--rg-danger); }
|
|
1001
|
+
.rg-button-primary:hover { background: var(--rg-gloss); color: var(--rg-gloss-ink); }
|
|
998
1002
|
/**
|
|
999
1003
|
* Lets explicit runtime foreground edits win without changing the default
|
|
1000
1004
|
* Retro Glass danger gloss treatment used by the reference specimen.
|
|
@@ -1095,7 +1099,8 @@
|
|
|
1095
1099
|
.rg-tab:hover, .rg-tab.is-active, .rg-tab[aria-selected="true"] { background: linear-gradient(rgb(var(--rg-primary-rgb) / .2), rgb(var(--rg-primary-rgb) / .2)), var(--rg-surface-input); border-bottom-color: var(--rg-primary); color: var(--rg-text); }
|
|
1096
1100
|
.rg-pagination-page { min-inline-size: 36px; padding: 8px; font-size: 12px; }
|
|
1097
1101
|
.rg-nav { padding: 0; background: transparent; border: 0; box-shadow: none; gap: 6px; }
|
|
1098
|
-
|
|
1102
|
+
/** Chrome reflections need full surface ink for ordinary navigation labels. */
|
|
1103
|
+
.rg-nav-link { min-block-size: var(--rg-control-height); padding: 8px 12px; background: var(--rg-control-material); border: 1px solid var(--rg-line-strong); border-radius: var(--rg-radius-sm); color: var(--rg-text); text-shadow: none; letter-spacing: 0; }
|
|
1099
1104
|
.rg-nav-link:hover { color: var(--rg-text); background: var(--rg-control-material); }
|
|
1100
1105
|
.rg-nav-link.is-active, .rg-nav-link[aria-current="page"] { background: var(--rg-gloss); color: var(--rg-gloss-ink); box-shadow: inset 0 1px 0 var(--rg-highlight); }
|
|
1101
1106
|
.rg-table-wrap { background: transparent; border: 0; box-shadow: none; }
|
|
@@ -1185,3 +1190,8 @@
|
|
|
1185
1190
|
font-weight: 800;
|
|
1186
1191
|
line-height: 1;
|
|
1187
1192
|
}
|
|
1193
|
+
|
|
1194
|
+
@layer ui-style-kit.retro_glass {
|
|
1195
|
+
/** Console content scrolls inside its frame instead of expanding a narrow parent. */
|
|
1196
|
+
.rg-console { box-sizing: border-box; min-inline-size: 0; max-inline-size: 100%; margin-inline: 0; overflow-x: auto; }
|
|
1197
|
+
}
|
package/styles/retrofuturism.css
CHANGED
|
@@ -251,7 +251,7 @@
|
|
|
251
251
|
--usk-native-range-track-shadow: 0 0 10px var(--retro-primary);
|
|
252
252
|
--usk-native-range-progress-background: var(--retro-primary);
|
|
253
253
|
--usk-native-range-thumb-size: 1.55rem;
|
|
254
|
-
--usk-native-range-thumb-background: var(--
|
|
254
|
+
--usk-native-range-thumb-background: var(--usk-native-primary);
|
|
255
255
|
--usk-native-range-thumb-border: 1px solid var(--retro-border);
|
|
256
256
|
--usk-native-range-thumb-radius: 50%;
|
|
257
257
|
--usk-native-range-thumb-shadow: 0 0 10px var(--retro-primary);
|
|
@@ -438,7 +438,9 @@
|
|
|
438
438
|
/* Theme-responsive component defaults */
|
|
439
439
|
.retro-card, .retro-panel { background: var(--retro-card-bg); }
|
|
440
440
|
.retro-toolbar, .retro-table-wrap { background: var(--retro-control-bg); }
|
|
441
|
-
|
|
441
|
+
/** Attribute-selected variants bypass the legacy neutral-only paint fallback. */
|
|
442
|
+
/** Neutral defaults exclude outlined actions so their hover fill and ink remain paired. */
|
|
443
|
+
.retro-button:where(:not([data-ui-variant])):not(.retro-button-primary):not(.retro-button-secondary):not(.retro-button-danger):not(.retro-button-warning):not(.retro-button-ghost):not(.retro-button-outline-heavy), .retro-icon-button { background: var(--retro-control-bg); }
|
|
442
444
|
.retro-button, .retro-icon-button, .retro-badge, .retro-nav-link { font-family: var(--retro-font-control); }
|
|
443
445
|
|
|
444
446
|
|
|
@@ -637,7 +639,7 @@
|
|
|
637
639
|
.retro-button.retro-button-outline-heavy,
|
|
638
640
|
.retro-button-outline-heavy {
|
|
639
641
|
background: transparent;
|
|
640
|
-
color: var(--usk-primary-ink, var(--retro-
|
|
642
|
+
color: var(--usk-primary-ink, var(--retro-text));
|
|
641
643
|
border-style: solid;
|
|
642
644
|
border-width: 2px;
|
|
643
645
|
border-color: var(--retro-primary);
|
|
@@ -920,7 +922,7 @@
|
|
|
920
922
|
--usk-native-range-track-shadow: var(--retro-recess-shadow);
|
|
921
923
|
--usk-native-range-progress-background: var(--retro-calibration-track);
|
|
922
924
|
--usk-native-range-thumb-size: 1.25rem;
|
|
923
|
-
--usk-native-range-thumb-background: var(--
|
|
925
|
+
--usk-native-range-thumb-background: var(--usk-native-primary);
|
|
924
926
|
--usk-native-range-thumb-border: 3px double var(--retro-metal-edge);
|
|
925
927
|
--usk-native-range-thumb-radius: 50%;
|
|
926
928
|
--usk-native-range-thumb-shadow: var(--retro-control-shadow);
|
|
@@ -1316,9 +1318,10 @@
|
|
|
1316
1318
|
}
|
|
1317
1319
|
|
|
1318
1320
|
.retro-icon-medallion {
|
|
1319
|
-
|
|
1321
|
+
/* Keep chrome on the rim and give the central glyph a paired, stable surface. */
|
|
1322
|
+
background: linear-gradient(var(--retro-surface), var(--retro-surface)) padding-box, var(--retro-metal-rim) border-box;
|
|
1320
1323
|
color: var(--retro-text);
|
|
1321
|
-
border: 3px double
|
|
1324
|
+
border: 3px double transparent;
|
|
1322
1325
|
box-shadow: var(--retro-control-shadow);
|
|
1323
1326
|
}
|
|
1324
1327
|
|
|
@@ -1334,7 +1337,7 @@
|
|
|
1334
1337
|
|
|
1335
1338
|
.retro-button.retro-button-outline-heavy, .retro-button-outline-heavy {
|
|
1336
1339
|
background: var(--retro-enamel-bg);
|
|
1337
|
-
color: var(--usk-primary-ink, var(--retro-
|
|
1340
|
+
color: var(--usk-primary-ink, var(--retro-text));
|
|
1338
1341
|
border: 4px double var(--retro-metal-edge);
|
|
1339
1342
|
border-radius: var(--retro-radius-pill);
|
|
1340
1343
|
clip-path: inset(0 round var(--retro-radius-pill));
|
package/styles/tactile.css
CHANGED
|
@@ -257,7 +257,7 @@
|
|
|
257
257
|
--usk-native-range-track-shadow: var(--tactile-deep-inset-shadow);
|
|
258
258
|
--usk-native-range-progress-background: var(--tactile-action-solid);
|
|
259
259
|
--usk-native-range-thumb-size: 1.55rem;
|
|
260
|
-
--usk-native-range-thumb-background: var(--
|
|
260
|
+
--usk-native-range-thumb-background: var(--usk-native-primary);
|
|
261
261
|
--usk-native-range-thumb-border: 1px solid var(--tactile-keyline);
|
|
262
262
|
--usk-native-range-thumb-radius: .22rem;
|
|
263
263
|
--usk-native-range-thumb-shadow: var(--tactile-button-shadow);
|
|
@@ -467,7 +467,9 @@
|
|
|
467
467
|
/* Theme-responsive component defaults */
|
|
468
468
|
.tactile-card, .tactile-panel { background: var(--tactile-card-bg); }
|
|
469
469
|
.tactile-toolbar, .tactile-table-wrap { background: var(--tactile-card-bg); }
|
|
470
|
-
|
|
470
|
+
/** Attribute-selected variants bypass the legacy neutral-only paint fallback. */
|
|
471
|
+
/** Neutral defaults exclude outlined actions so their hover fill and ink remain paired. */
|
|
472
|
+
.tactile-button:where(:not([data-ui-variant])):not(.tactile-button-primary):not(.tactile-button-secondary):not(.tactile-button-danger):not(.tactile-button-warning):not(.tactile-button-ghost):not(.tactile-button-outline-heavy), .tactile-icon-button { background: var(--tactile-control-bg); }
|
|
471
473
|
.tactile-button, .tactile-icon-button, .tactile-badge, .tactile-nav-link { font-family: var(--tactile-font-control); }
|
|
472
474
|
|
|
473
475
|
|
|
@@ -663,7 +665,7 @@
|
|
|
663
665
|
.tactile-button.tactile-button-outline-heavy,
|
|
664
666
|
.tactile-button-outline-heavy {
|
|
665
667
|
background: transparent;
|
|
666
|
-
color: var(--usk-primary-ink, var(--tactile-
|
|
668
|
+
color: var(--usk-primary-ink, var(--tactile-text));
|
|
667
669
|
border-style: solid;
|
|
668
670
|
border-width: 2px;
|
|
669
671
|
border-color: var(--tactile-primary);
|
|
@@ -1059,7 +1061,14 @@
|
|
|
1059
1061
|
|
|
1060
1062
|
/* Busy indicators preserve the bevel and pressed-depth cues of tactile controls. */
|
|
1061
1063
|
.tactile-button[aria-busy="true"]::after, .tactile-icon-button[aria-busy="true"]::after, [data-ui="tactile"] :where(button[aria-busy="true"], input[type="button"][aria-busy="true"], input[type="submit"][aria-busy="true"], input[type="reset"][aria-busy="true"])::after {
|
|
1062
|
-
border: .
|
|
1064
|
+
border: .14em solid currentColor;
|
|
1065
|
+
border-block-start-color: transparent;
|
|
1066
|
+
border-inline-start-color: transparent;
|
|
1067
|
+
border-radius: 50%;
|
|
1068
|
+
background: none;
|
|
1069
|
+
box-shadow: 0 .08em .16em rgb(0 0 0 / .22);
|
|
1070
|
+
clip-path: none;
|
|
1071
|
+
animation: tactile-spin .88s linear infinite;
|
|
1063
1072
|
}
|
|
1064
1073
|
|
|
1065
1074
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -1361,7 +1370,7 @@
|
|
|
1361
1370
|
--usk-native-range-track-radius: .16rem;
|
|
1362
1371
|
--usk-native-range-track-shadow: var(--tactile-deep-inset-shadow);
|
|
1363
1372
|
--usk-native-range-thumb-size: 1.35rem;
|
|
1364
|
-
--usk-native-range-thumb-background: var(--
|
|
1373
|
+
--usk-native-range-thumb-background: var(--usk-native-primary);
|
|
1365
1374
|
--usk-native-range-thumb-border: 1px solid var(--tactile-keyline);
|
|
1366
1375
|
--usk-native-range-thumb-radius: .16rem;
|
|
1367
1376
|
--usk-native-range-thumb-shadow: var(--tactile-button-shadow);
|
|
@@ -1544,7 +1553,8 @@
|
|
|
1544
1553
|
/** Enhances supported browsers with the reference's light-to-dark enamel ramp. */
|
|
1545
1554
|
@supports (color: color-mix(in srgb, black, white)) {
|
|
1546
1555
|
.tactile-button-primary {
|
|
1547
|
-
|
|
1556
|
+
/** Both enamel stops retain the same tested primary foreground pair. */
|
|
1557
|
+
background: linear-gradient(180deg, var(--tactile-primary-hover), var(--tactile-primary) 48%, var(--tactile-primary));
|
|
1548
1558
|
border-color: color-mix(in srgb, var(--tactile-primary), black 34%);
|
|
1549
1559
|
box-shadow: inset 0 1px 0 rgb(255 255 255 / .42), inset 0 -2px 0 rgb(0 0 0 / .25), 0 1px 2px rgb(var(--tactile-material-shadow-rgb) / .3);
|
|
1550
1560
|
}
|
|
@@ -1557,7 +1567,8 @@
|
|
|
1557
1567
|
|
|
1558
1568
|
.tactile-button-ghost {
|
|
1559
1569
|
background: transparent;
|
|
1560
|
-
|
|
1570
|
+
/* Unfilled controls and their busy arcs need surface ink, not a copper fill. */
|
|
1571
|
+
color: var(--usk-primary-ink, var(--tactile-link));
|
|
1561
1572
|
border-color: transparent;
|
|
1562
1573
|
box-shadow: none;
|
|
1563
1574
|
}
|
|
@@ -1696,7 +1707,8 @@
|
|
|
1696
1707
|
|
|
1697
1708
|
.tactile-nav-link[aria-current="page"],
|
|
1698
1709
|
.tactile-nav-link.is-active {
|
|
1699
|
-
|
|
1710
|
+
/** The copper rail carries selection; text retains the sidebar's paired foreground. */
|
|
1711
|
+
color: var(--tactile-sidebar-fg);
|
|
1700
1712
|
background: rgb(var(--tactile-sidebar-text-rgb) / .06);
|
|
1701
1713
|
border-color: rgb(var(--tactile-sidebar-text-rgb) / .18);
|
|
1702
1714
|
box-shadow: inset .18rem 0 0 var(--tactile-copper), inset .08rem .08rem .18rem rgb(0 0 0 / .38);
|
|
@@ -1804,7 +1816,8 @@
|
|
|
1804
1816
|
.tactile-icon-medallion,
|
|
1805
1817
|
.tactile-badge-seal {
|
|
1806
1818
|
background: var(--tactile-sidebar-bg);
|
|
1807
|
-
|
|
1819
|
+
/* The theme may invert this material; its paired ink follows that inversion. */
|
|
1820
|
+
color: var(--tactile-sidebar-fg);
|
|
1808
1821
|
border-color: rgb(var(--tactile-keyline-rgb) / .82);
|
|
1809
1822
|
box-shadow: var(--tactile-button-shadow);
|
|
1810
1823
|
}
|
|
@@ -250,7 +250,8 @@
|
|
|
250
250
|
--usk-native-range-track-shadow: 0 -.34rem 0 -.31rem var(--blueprint-primary);
|
|
251
251
|
--usk-native-range-progress-background: linear-gradient(90deg, var(--blueprint-primary), var(--blueprint-focus));
|
|
252
252
|
--usk-native-range-thumb-size: 1.02rem;
|
|
253
|
-
|
|
253
|
+
/** A split marker stays colored against the ruled blueprint track. */
|
|
254
|
+
--usk-native-range-thumb-background: linear-gradient(135deg, var(--blueprint-primary) 0 55%, var(--blueprint-surface) 55%);
|
|
254
255
|
--usk-native-range-thumb-border: 1px double var(--blueprint-primary);
|
|
255
256
|
--usk-native-range-thumb-radius: 0;
|
|
256
257
|
--usk-native-range-thumb-shadow: 0 0 0 2px var(--blueprint-surface), 0 0 0 3px var(--blueprint-primary);
|
|
@@ -367,7 +368,7 @@
|
|
|
367
368
|
--usk-native-range-track-shadow: 0 0 0 1px var(--blueprint-primary);
|
|
368
369
|
--usk-native-range-progress-background: var(--blueprint-primary);
|
|
369
370
|
--usk-native-range-thumb-size: 1.2rem;
|
|
370
|
-
--usk-native-range-thumb-background: var(--
|
|
371
|
+
--usk-native-range-thumb-background: var(--usk-native-primary);
|
|
371
372
|
--usk-native-range-thumb-border: 1px solid var(--blueprint-border);
|
|
372
373
|
--usk-native-range-thumb-radius: 50%;
|
|
373
374
|
--usk-native-range-thumb-shadow: 0 0 0 1px var(--blueprint-primary);
|
|
@@ -554,7 +555,9 @@
|
|
|
554
555
|
/* Theme-responsive component defaults */
|
|
555
556
|
.blueprint-card, .blueprint-panel { background: var(--blueprint-card-bg); }
|
|
556
557
|
.blueprint-toolbar, .blueprint-table-wrap { background: var(--blueprint-control-bg); }
|
|
557
|
-
|
|
558
|
+
/** Attribute-selected variants bypass the legacy neutral-only paint fallback. */
|
|
559
|
+
/** Neutral defaults exclude outlined actions so their hover fill and ink remain paired. */
|
|
560
|
+
.blueprint-button:where(:not([data-ui-variant])):not(.blueprint-button-primary):not(.blueprint-button-secondary):not(.blueprint-button-danger):not(.blueprint-button-warning):not(.blueprint-button-ghost):not(.blueprint-button-outline-heavy), .blueprint-icon-button { background: var(--blueprint-control-bg); }
|
|
558
561
|
.blueprint-button, .blueprint-icon-button, .blueprint-badge, .blueprint-nav-link { font-family: var(--blueprint-font-control); }
|
|
559
562
|
|
|
560
563
|
|
|
@@ -746,7 +749,7 @@
|
|
|
746
749
|
.blueprint-button.blueprint-button-outline-heavy,
|
|
747
750
|
.blueprint-button-outline-heavy {
|
|
748
751
|
background: transparent;
|
|
749
|
-
color: var(--usk-primary-ink, var(--blueprint-
|
|
752
|
+
color: var(--usk-primary-ink, var(--blueprint-text));
|
|
750
753
|
border-style: solid;
|
|
751
754
|
border-width: 2px;
|
|
752
755
|
border-color: var(--blueprint-primary);
|
|
@@ -890,7 +893,8 @@
|
|
|
890
893
|
.blueprint-surface, .blueprint-card, .blueprint-panel, .blueprint-toolbar, .blueprint-table-wrap { border-radius: 0; box-shadow: inset 0 0 0 1px rgb(var(--blueprint-primary-rgb) / .12); }
|
|
891
894
|
.blueprint-card, .blueprint-panel, .blueprint-toolbar { background-image: linear-gradient(90deg, transparent calc(100% - .55rem), rgb(var(--blueprint-primary-rgb) / .3) calc(100% - .55rem), rgb(var(--blueprint-primary-rgb) / .3) calc(100% - .48rem), transparent calc(100% - .48rem)); }
|
|
892
895
|
.blueprint-button, .blueprint-icon-button { border-radius: 0; box-shadow: none; font-family: var(--blueprint-font-control); text-transform: uppercase; letter-spacing: .06em; }
|
|
893
|
-
|
|
896
|
+
/** Flat neutral paint yields to outlined CTA hover fills. */
|
|
897
|
+
.blueprint-button:where(:not([data-ui-variant])):not(.blueprint-button-primary):not(.blueprint-button-secondary):not(.blueprint-button-danger):not(.blueprint-button-warning):not(.blueprint-button-outline-heavy) { background: transparent; }
|
|
894
898
|
.blueprint-nav { border-radius: 0; box-shadow: none; }
|
|
895
899
|
.blueprint-nav-link { border-radius: 0; font-family: var(--blueprint-font-control); font-size: .75rem; text-transform: uppercase; }
|
|
896
900
|
.blueprint-input, .blueprint-textarea, .blueprint-select, .blueprint-badge, .blueprint-alert, .blueprint-metric, .blueprint-well, .blueprint-inset { border-radius: 0; }
|
|
@@ -984,7 +988,8 @@
|
|
|
984
988
|
--usk-native-range-track-shadow: 0 -.34rem 0 -.31rem var(--blueprint-primary);
|
|
985
989
|
--usk-native-range-progress-background: linear-gradient(90deg, var(--blueprint-primary), var(--blueprint-focus));
|
|
986
990
|
--usk-native-range-thumb-size: 1.02rem;
|
|
987
|
-
|
|
991
|
+
/** A split marker stays colored against the ruled blueprint track. */
|
|
992
|
+
--usk-native-range-thumb-background: linear-gradient(135deg, var(--blueprint-primary) 0 55%, var(--blueprint-surface) 55%);
|
|
988
993
|
--usk-native-range-thumb-border: 1px double var(--blueprint-primary);
|
|
989
994
|
--usk-native-range-thumb-radius: 0;
|
|
990
995
|
--usk-native-range-thumb-shadow: 0 0 0 2px var(--blueprint-surface), 0 0 0 3px var(--blueprint-primary);
|
|
@@ -1100,7 +1105,7 @@
|
|
|
1100
1105
|
--blueprint-fallback-border-rgb: 20 95 147;
|
|
1101
1106
|
--blueprint-fallback-primary-rgb: 7 95 157;
|
|
1102
1107
|
--blueprint-fallback-primary-hover-rgb: 6 76 124;
|
|
1103
|
-
--blueprint-fallback-danger-rgb:
|
|
1108
|
+
--blueprint-fallback-danger-rgb: 197 45 40;
|
|
1104
1109
|
--blueprint-fallback-success-rgb: 24 111 64;
|
|
1105
1110
|
--blueprint-fallback-warning-rgb: 132 76 0;
|
|
1106
1111
|
--blueprint-fallback-warning-text-rgb: 255 255 255;
|
|
@@ -1168,6 +1173,8 @@
|
|
|
1168
1173
|
}
|
|
1169
1174
|
.blueprint-icon-button { inline-size: 36px; padding: 8px; aspect-ratio: 1; }
|
|
1170
1175
|
.blueprint-button-primary { background: var(--blueprint-fill); color: var(--blueprint-fill-ink); border-color: var(--blueprint-primary); }
|
|
1176
|
+
/** The hover fill uses the primary role, so its label must use that role's foreground. */
|
|
1177
|
+
.blueprint-button-primary:hover { color: var(--blueprint-on-primary); }
|
|
1171
1178
|
.blueprint-button-secondary { background: transparent; color: var(--blueprint-secondary); border-color: var(--blueprint-secondary); }
|
|
1172
1179
|
.blueprint-button-ghost { border-style: dashed; color: var(--blueprint-text-soft); }
|
|
1173
1180
|
.blueprint-button-danger { background: transparent; border-color: var(--blueprint-danger); color: var(--blueprint-danger); }
|
package/styles/y2k.css
CHANGED
|
@@ -272,7 +272,7 @@
|
|
|
272
272
|
--usk-native-range-track-shadow: inset 0 3px rgb(255 255 255 / .55);
|
|
273
273
|
--usk-native-range-progress-background: var(--y2k-primary);
|
|
274
274
|
--usk-native-range-thumb-size: 1.55rem;
|
|
275
|
-
--usk-native-range-thumb-background: var(--
|
|
275
|
+
--usk-native-range-thumb-background: var(--usk-native-primary);
|
|
276
276
|
--usk-native-range-thumb-border: 1px solid var(--y2k-border);
|
|
277
277
|
--usk-native-range-thumb-radius: 50%;
|
|
278
278
|
--usk-native-range-thumb-shadow: inset 0 3px rgb(255 255 255 / .55);
|
|
@@ -433,7 +433,8 @@
|
|
|
433
433
|
}
|
|
434
434
|
[data-ui="y2k"] *, [data-ui="y2k"] *::before, [data-ui="y2k"] *::after { box-sizing: border-box; }
|
|
435
435
|
[data-ui="y2k"][data-mode] { background: var(--y2k-theme-bg); background-size: var(--y2k-theme-bg-size); }
|
|
436
|
-
|
|
436
|
+
/** Inline-link ink must not override the foreground paired with an action surface. */
|
|
437
|
+
[data-ui="y2k"] a:where(:not(.y2k-button):not(.y2k-icon-button)) { color: var(--y2k-link); text-decoration-thickness: 0.11em; text-underline-offset: 0.18em; } [data-ui="y2k"] ::selection { background: var(--y2k-primary); color: var(--y2k-on-primary); }
|
|
437
438
|
|
|
438
439
|
.y2k-page { min-height: 100vh; padding: clamp(1rem, 4vw, 3rem); background-image: radial-gradient(rgb(var(--y2k-border-rgb) / var(--y2k-grid-alpha)) 1px, transparent 1px); background-size: 22px 22px; }
|
|
439
440
|
.y2k-container { width: min(100% - 2rem, 1200px); margin-inline: auto; } .y2k-stack { display: flex; flex-direction: column; gap: var(--y2k-space-4); } .y2k-cluster { display: flex; flex-wrap: wrap; align-items: center; gap: var(--y2k-space-3); } .y2k-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); gap: var(--y2k-space-5); } .y2k-section { padding: clamp(1.25rem, 4vw, 2.5rem); }
|
|
@@ -466,7 +467,9 @@
|
|
|
466
467
|
/* Theme-responsive component defaults */
|
|
467
468
|
.y2k-card, .y2k-panel { background: var(--y2k-card-bg); }
|
|
468
469
|
.y2k-toolbar, .y2k-table-wrap { background: var(--y2k-control-bg); }
|
|
469
|
-
|
|
470
|
+
/** Attribute-selected variants bypass the legacy neutral-only paint fallback. */
|
|
471
|
+
/** Neutral defaults exclude outlined actions so their hover fill and ink remain paired. */
|
|
472
|
+
.y2k-button:where(:not([data-ui-variant])):not(.y2k-button-primary):not(.y2k-button-secondary):not(.y2k-button-danger):not(.y2k-button-warning):not(.y2k-button-ghost):not(.y2k-button-outline-heavy), .y2k-icon-button { background: var(--y2k-control-bg); }
|
|
470
473
|
.y2k-button, .y2k-icon-button, .y2k-badge, .y2k-nav-link { font-family: var(--y2k-font-control); }
|
|
471
474
|
|
|
472
475
|
/* Spinner geometry follows the y2k preset's glossy plastic controls. */
|
|
@@ -567,7 +570,7 @@
|
|
|
567
570
|
.y2k-button.y2k-button-outline-heavy,
|
|
568
571
|
.y2k-button-outline-heavy {
|
|
569
572
|
background: transparent;
|
|
570
|
-
color: var(--usk-primary-ink, var(--y2k-
|
|
573
|
+
color: var(--usk-primary-ink, var(--y2k-text));
|
|
571
574
|
border-style: solid;
|
|
572
575
|
border-width: 2px;
|
|
573
576
|
border-color: var(--y2k-primary);
|
|
@@ -768,7 +771,7 @@
|
|
|
768
771
|
--usk-native-range-track-shadow: inset 1px 1px 0 rgb(var(--y2k-text-rgb) / .28);
|
|
769
772
|
--usk-native-range-progress-background: repeating-linear-gradient(90deg, var(--y2k-primary) 0 .4rem, var(--y2k-surface) .4rem .48rem);
|
|
770
773
|
--usk-native-range-thumb-size: 1.12rem;
|
|
771
|
-
--usk-native-range-thumb-background:
|
|
774
|
+
--usk-native-range-thumb-background: var(--usk-native-primary);
|
|
772
775
|
--usk-native-range-thumb-border: 1px outset var(--y2k-border);
|
|
773
776
|
--usk-native-range-thumb-radius: 0;
|
|
774
777
|
--usk-native-range-thumb-shadow: 1px 1px 0 rgb(var(--y2k-text-rgb) / .24);
|
|
@@ -898,7 +901,7 @@
|
|
|
898
901
|
--usk-native-range-track-shadow: var(--y2k-bevel-recessed);
|
|
899
902
|
--usk-native-range-progress-background: repeating-linear-gradient(90deg, var(--y2k-primary) 0 .5rem, var(--y2k-surface) .5rem .5625rem);
|
|
900
903
|
--usk-native-range-thumb-size: .875rem;
|
|
901
|
-
--usk-native-range-thumb-background: var(--
|
|
904
|
+
--usk-native-range-thumb-background: var(--usk-native-primary);
|
|
902
905
|
--usk-native-range-thumb-border: 1px outset var(--y2k-border);
|
|
903
906
|
--usk-native-range-thumb-radius: 0;
|
|
904
907
|
--usk-native-range-thumb-shadow: var(--y2k-bevel-raised);
|
|
@@ -925,7 +928,7 @@
|
|
|
925
928
|
font: 400 11px/1.2 Tahoma, Verdana, Arial, sans-serif;
|
|
926
929
|
}
|
|
927
930
|
|
|
928
|
-
[data-ui="y2k"] a {
|
|
931
|
+
[data-ui="y2k"] a:where(:not(.y2k-button):not(.y2k-icon-button)) {
|
|
929
932
|
color: var(--y2k-link);
|
|
930
933
|
text-decoration: underline;
|
|
931
934
|
text-decoration-thickness: auto;
|
|
@@ -1097,10 +1100,11 @@
|
|
|
1097
1100
|
padding: 0;
|
|
1098
1101
|
}
|
|
1099
1102
|
|
|
1100
|
-
.
|
|
1103
|
+
/** Hovered neutral controls retain the foreground paired with their neutral surface. */
|
|
1104
|
+
.y2k-button:where(:not(.y2k-button-primary):not(.y2k-button-danger):not(.y2k-button-warning)):hover,
|
|
1101
1105
|
.y2k-icon-button:hover {
|
|
1102
|
-
background: var(--y2k-
|
|
1103
|
-
color: var(--y2k-
|
|
1106
|
+
background: var(--y2k-surface-soft);
|
|
1107
|
+
color: var(--y2k-text);
|
|
1104
1108
|
transform: none;
|
|
1105
1109
|
box-shadow: var(--y2k-bevel-raised);
|
|
1106
1110
|
}
|
|
@@ -1117,11 +1121,17 @@
|
|
|
1117
1121
|
}
|
|
1118
1122
|
|
|
1119
1123
|
.y2k-button-primary {
|
|
1120
|
-
|
|
1124
|
+
/** Keep the raised bevel's reflection outside the label lane. */
|
|
1125
|
+
background: linear-gradient(180deg, rgb(255 255 255 / .2), transparent 20%), var(--y2k-primary);
|
|
1121
1126
|
color: var(--y2k-on-primary);
|
|
1122
1127
|
border-color: var(--y2k-border);
|
|
1123
1128
|
}
|
|
1124
1129
|
|
|
1130
|
+
.y2k-button-primary:hover {
|
|
1131
|
+
background: var(--y2k-primary-hover);
|
|
1132
|
+
color: var(--y2k-on-primary);
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1125
1135
|
.y2k-button-secondary {
|
|
1126
1136
|
background: var(--y2k-surface-soft);
|
|
1127
1137
|
color: var(--y2k-text);
|
|
@@ -1130,8 +1140,9 @@
|
|
|
1130
1140
|
|
|
1131
1141
|
.y2k-button-danger {
|
|
1132
1142
|
background: var(--y2k-surface-soft);
|
|
1133
|
-
|
|
1134
|
-
|
|
1143
|
+
/** The outline carries the danger signal while surface ink keeps its label readable. */
|
|
1144
|
+
color: var(--y2k-text);
|
|
1145
|
+
border-color: var(--y2k-danger);
|
|
1135
1146
|
}
|
|
1136
1147
|
|
|
1137
1148
|
/**
|
|
@@ -1156,12 +1167,16 @@
|
|
|
1156
1167
|
.y2k-button.y2k-button-outline-heavy {
|
|
1157
1168
|
min-inline-size: 0;
|
|
1158
1169
|
min-block-size: 1.375rem;
|
|
1159
|
-
background: var(--y2k-surface-soft);
|
|
1160
1170
|
border: 1px outset var(--y2k-border);
|
|
1161
1171
|
border-radius: 0;
|
|
1162
1172
|
box-shadow: var(--y2k-bevel-raised);
|
|
1163
1173
|
clip-path: none;
|
|
1164
1174
|
}
|
|
1175
|
+
/** Compact CTA geometry preserves a primary action's filled paint and paired ink. */
|
|
1176
|
+
.y2k-button-cut:where(:not(.y2k-button-primary)),
|
|
1177
|
+
.y2k-button.y2k-button-cut:where(:not(.y2k-button-primary)),
|
|
1178
|
+
.y2k-button-outline-heavy,
|
|
1179
|
+
.y2k-button.y2k-button-outline-heavy { background: var(--y2k-surface-soft); }
|
|
1165
1180
|
|
|
1166
1181
|
.y2k-field {
|
|
1167
1182
|
gap: .125rem;
|
|
@@ -1379,6 +1394,11 @@
|
|
|
1379
1394
|
text-align: center;
|
|
1380
1395
|
}
|
|
1381
1396
|
|
|
1397
|
+
/** The two-line seal needs its own frame; compact icon dimensions clip its labels. */
|
|
1398
|
+
.y2k-badge-seal { inline-size: 4rem; min-inline-size: 4rem; block-size: 4rem; }
|
|
1399
|
+
/** Native inline spacing must not consume the compact seal's label tracks. */
|
|
1400
|
+
.y2k-badge-seal > strong, .y2k-badge-seal > small { margin: 0; padding: 0; white-space: nowrap; }
|
|
1401
|
+
|
|
1382
1402
|
.y2k-feature-item > .y2k-icon-medallion,
|
|
1383
1403
|
.y2k-callout-bar > .y2k-icon-medallion {
|
|
1384
1404
|
min-inline-size: 2.75rem;
|