@eos-ui/vue 0.5.0 → 0.5.2

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 (34) hide show
  1. package/dist/components/Avatar/EAvatar.js.map +1 -1
  2. package/dist/components/Avatar/EAvatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  3. package/dist/components/Button/EButton.js.map +1 -1
  4. package/dist/components/Button/EButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  5. package/dist/components/Combobox/EComboboxBase.js.map +1 -1
  6. package/dist/components/Combobox/EComboboxBase.vue_vue_type_script_setup_true_lang.js.map +1 -1
  7. package/dist/components/DataGrid/EDataGrid.js.map +1 -1
  8. package/dist/components/DataGrid/EDataGrid.vue_vue_type_script_setup_true_lang.js.map +1 -1
  9. package/dist/components/NavList/ENavList.js.map +1 -1
  10. package/dist/components/NavList/ENavList.vue_vue_type_script_setup_true_lang.js.map +1 -1
  11. package/dist/components/Notice/ENotice.js.map +1 -1
  12. package/dist/components/Notice/ENotice.vue_vue_type_script_setup_true_lang.js.map +1 -1
  13. package/dist/components/PageHeader/EPageHeader.js.map +1 -1
  14. package/dist/components/PageHeader/EPageHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  15. package/dist/components/Progress/EProgress.js.map +1 -1
  16. package/dist/components/Progress/EProgress.vue_vue_type_script_setup_true_lang.js.map +1 -1
  17. package/dist/components/SearchBar/ESearchBar.js.map +1 -1
  18. package/dist/components/SearchBar/ESearchBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  19. package/dist/components/Segmented/ESegmented.js.map +1 -1
  20. package/dist/components/Segmented/ESegmented.vue_vue_type_script_setup_true_lang.js.map +1 -1
  21. package/dist/components/Select/ESelectControl.js.map +1 -1
  22. package/dist/components/Select/ESelectControl.vue_vue_type_script_setup_true_lang.js.map +1 -1
  23. package/dist/components/SignaturePad/ESignaturePad.js.map +1 -1
  24. package/dist/components/SignaturePad/ESignaturePad.vue_vue_type_script_setup_true_lang.js.map +1 -1
  25. package/dist/components/Stepper/EStepper.js.map +1 -1
  26. package/dist/components/Stepper/EStepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  27. package/dist/components/Switch/ESwitch.js.map +1 -1
  28. package/dist/components/Switch/ESwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  29. package/dist/components/Tabs/ETabs.js.map +1 -1
  30. package/dist/components/Tabs/ETabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  31. package/dist/components/Textarea/ETextarea.js.map +1 -1
  32. package/dist/components/Textarea/ETextarea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  33. package/dist/style.css +172 -152
  34. package/package.json +2 -2
package/dist/style.css CHANGED
@@ -476,23 +476,14 @@
476
476
  width: var(--e-tap, 44px);
477
477
  height: var(--e-tap, 44px);
478
478
  overflow: hidden;
479
- border: 0;
479
+ border: var(--e-stroke-edge) solid var(--e-ring);
480
480
  border-radius: var(--e-radius-md);
481
481
  background: var(--e-surface-tint);
482
+ background-clip: padding-box;
482
483
  color: var(--e-primary);
483
484
  font: 600 var(--e-text-sm) / 1 var(--e-font-mono);
484
485
  letter-spacing: 0.02em;
485
- }
486
-
487
- /* The ring sits over the picture so an image never covers it. */
488
- .e-avatar::after {
489
- content: "";
490
- position: absolute;
491
- inset: 0;
492
- border-radius: inherit;
493
- box-shadow: inset 0 0 0 var(--e-stroke-edge) var(--e-ring);
494
- pointer-events: none;
495
- transition: box-shadow var(--e-duration-tap) var(--e-easing-out);
486
+ transition: border-color var(--e-duration-tap) var(--e-easing-out);
496
487
  }
497
488
  .e-avatar--button {
498
489
  position: relative;
@@ -623,9 +614,8 @@
623
614
  --e-hover: color-mix(in srgb, var(--e-fill), var(--e-shade-hover));
624
615
  --e-press: color-mix(in srgb, var(--e-fill), var(--e-shade-press));
625
616
 
626
- /* One rounded box, one control height tall. The slab is an inset shadow shifted up by the lift: the part of the box left uncovered along its bottom, which follows the corners up the sides, in the colour of the box's own edge. It is cut by the box's one outline, so nothing sits behind the curve. Pressing sinks the face over it. */
617
+ /* One border, one control height tall. The slab is the bottom edge made thicker by the lift; the radius tapers it up the corners. Pressing sinks the face over it. */
627
618
  --e-lift: var(--e-depth);
628
- --e-band: calc(var(--e-lift) + var(--e-stroke-edge));
629
619
  --e-ring: var(--e-slab);
630
620
 
631
621
  position: relative;
@@ -634,13 +624,15 @@
634
624
  justify-content: center;
635
625
  gap: var(--e-space-2);
636
626
  height: var(--e-control-height);
637
- padding: 0 var(--e-space-4) var(--e-lift);
638
- border: 0;
627
+ padding: 0 calc(var(--e-space-4) - var(--e-stroke-edge));
628
+ box-sizing: border-box;
629
+ border: var(--e-stroke-edge) solid var(--e-ring);
630
+ border-bottom-width: calc(var(--e-stroke-edge) + var(--e-lift));
639
631
  border-radius: var(--e-radius-md);
640
632
  background-color: var(--e-fill);
641
- box-shadow:
642
- inset 0 0 0 var(--e-stroke-edge) var(--e-ring),
643
- inset 0 calc(-1 * var(--e-band)) 0 0 var(--e-slab);
633
+
634
+ /* A solid face runs under its border so no page colour shows between them. */
635
+ background-clip: border-box;
644
636
  color: var(--e-on-fill);
645
637
  font: 500 var(--e-text-md) / 1 var(--e-font-sans);
646
638
  letter-spacing: 0.01em;
@@ -648,7 +640,7 @@
648
640
  text-decoration: none;
649
641
  cursor: pointer;
650
642
  transition:
651
- box-shadow var(--e-duration-tap) var(--e-easing-out),
643
+ border-color var(--e-duration-tap) var(--e-easing-out),
652
644
  background-color var(--e-duration-tap) var(--e-easing-out);
653
645
  }
654
646
  .e-btn:hover {
@@ -660,7 +652,6 @@
660
652
  --e-lift: 0px;
661
653
 
662
654
  background-color: var(--e-press);
663
- box-shadow: inset 0 0 0 var(--e-stroke-edge) var(--e-ring);
664
655
  }
665
656
  .e-btn--secondary {
666
657
  --e-fill: var(--e-secondary);
@@ -674,6 +665,8 @@
674
665
  --e-fill: var(--e-surface);
675
666
  --e-on-fill: var(--e-ink);
676
667
  --e-slab: var(--e-border-strong);
668
+
669
+ background-clip: padding-box;
677
670
  }
678
671
  .e-btn--outline:hover {
679
672
  --e-ring: var(--e-ink);
@@ -693,8 +686,7 @@
693
686
 
694
687
  background: transparent;
695
688
  color: var(--e-ink);
696
- box-shadow: inset 0 0 0 var(--e-stroke-edge) var(--e-ring);
697
- padding-inline: var(--e-space-3);
689
+ padding-inline: calc(var(--e-space-3) - var(--e-stroke-edge));
698
690
  text-decoration: underline;
699
691
  text-underline-offset: 5px;
700
692
  text-decoration-thickness: var(--e-stroke-edge);
@@ -743,7 +735,8 @@
743
735
  background-color: color-mix(in srgb, var(--e-tint) 14%, var(--e-surface));
744
736
  background-image: repeating-linear-gradient(135deg, transparent 0 8px, color-mix(in srgb, var(--e-tint) 20%, transparent) 8px 16px);
745
737
  background-size: 22.63px 22.63px;
746
- box-shadow: none;
738
+ background-clip: padding-box;
739
+ border-color: transparent;
747
740
  color: var(--e-busy);
748
741
  transform: none;
749
742
  cursor: not-allowed;
@@ -752,7 +745,7 @@
752
745
  .e-btn--loading::before {
753
746
  content: "";
754
747
  position: absolute;
755
- inset: 0;
748
+ inset: calc(-1 * var(--e-stroke-edge));
756
749
  border: var(--e-stroke-edge) dashed var(--e-busy);
757
750
  border-radius: inherit;
758
751
  pointer-events: none;
@@ -790,7 +783,7 @@ to {
790
783
  color: var(--e-muted);
791
784
  outline: var(--e-stroke-edge) dashed var(--e-border-strong);
792
785
  outline-offset: calc(-1 * var(--e-stroke-edge));
793
- box-shadow: none;
786
+ border-color: transparent;
794
787
  transform: none;
795
788
  }
796
789
  @media (prefers-reduced-motion: reduce) {
@@ -1179,14 +1172,15 @@ to {
1179
1172
 
1180
1173
  --e-ring: var(--e-border-strong);
1181
1174
 
1182
- border: 0;
1175
+
1176
+ box-sizing: border-box;
1177
+ border: var(--e-stroke-edge) solid var(--e-ring);
1183
1178
  background: var(--e-surface);
1184
- box-shadow:
1185
- inset 0 0 0 var(--e-stroke-edge) var(--e-ring),
1186
- var(--e-well);
1179
+ background-clip: padding-box;
1180
+ box-shadow: var(--e-well);
1187
1181
  cursor: inherit;
1188
1182
  transition:
1189
- box-shadow var(--e-duration-tap) var(--e-easing-out),
1183
+ border-color var(--e-duration-tap) var(--e-easing-out),
1190
1184
  background-color var(--e-duration-tap) var(--e-easing-out);
1191
1185
  }
1192
1186
 
@@ -1205,8 +1199,11 @@ to {
1205
1199
  background-color: var(--e-surface-hover);
1206
1200
  }
1207
1201
 
1208
- .e-check:checked {
1202
+ .e-check:checked,
1203
+ .e-radio:checked {
1204
+ border-color: var(--e-primary);
1209
1205
  background-color: var(--e-primary);
1206
+ background-clip: border-box;
1210
1207
  box-shadow: none;
1211
1208
  }
1212
1209
 
@@ -1224,8 +1221,6 @@ to {
1224
1221
  }
1225
1222
 
1226
1223
  .e-radio:checked {
1227
- background-color: var(--e-primary);
1228
- box-shadow: none;
1229
1224
  background-image: radial-gradient(circle, var(--e-on-primary) 0 4px, transparent 5px);
1230
1225
  }
1231
1226
 
@@ -1245,6 +1240,7 @@ to {
1245
1240
  .e-radio:disabled {
1246
1241
  outline: var(--e-stroke-edge) dashed var(--e-border-strong);
1247
1242
  outline-offset: calc(-1 * var(--e-stroke-edge));
1243
+ border-color: transparent;
1248
1244
  background-color: var(--e-surface-tint);
1249
1245
  box-shadow: none;
1250
1246
  }
@@ -1252,8 +1248,9 @@ to {
1252
1248
  .e-check:checked:disabled,
1253
1249
  .e-radio:checked:disabled {
1254
1250
  outline: 0;
1251
+ border-color: var(--e-border-strong);
1255
1252
  background-color: var(--e-surface-tint);
1256
- box-shadow: inset 0 0 0 var(--e-stroke-edge) var(--e-border-strong);
1253
+ box-shadow: none;
1257
1254
  }
1258
1255
 
1259
1256
  @media (prefers-reduced-motion: reduce) {
@@ -1401,17 +1398,19 @@ to {
1401
1398
  width: 100%;
1402
1399
  min-width: 0;
1403
1400
  height: var(--e-control-height);
1404
- padding: 0 var(--e-space-4);
1405
- border: 0;
1401
+ padding: 0 calc(var(--e-space-4) - var(--e-stroke-edge));
1402
+
1403
+ /* The edge is a border and the fill stops inside it: a fill under an inset-shadow edge leaks into the antialiased corner. */
1404
+ box-sizing: border-box;
1405
+ border: var(--e-stroke-edge) solid var(--e-ring);
1406
1406
  border-radius: var(--e-radius-md);
1407
1407
  background-color: var(--e-surface);
1408
- box-shadow:
1409
- inset 0 0 0 var(--e-stroke-edge) var(--e-ring),
1410
- var(--e-well);
1408
+ background-clip: padding-box;
1409
+ box-shadow: var(--e-well);
1411
1410
  color: var(--e-ink);
1412
1411
  font: 400 var(--e-text-md)/1 var(--e-font-sans);
1413
1412
  transition:
1414
- box-shadow var(--e-duration-tap) var(--e-easing-out),
1413
+ border-color var(--e-duration-tap) var(--e-easing-out),
1415
1414
  background-color var(--e-duration-tap) var(--e-easing-out);
1416
1415
  }
1417
1416
 
@@ -1458,6 +1457,7 @@ to {
1458
1457
  cursor: not-allowed;
1459
1458
  outline: var(--e-stroke-edge) dashed var(--e-border-strong);
1460
1459
  outline-offset: calc(-1 * var(--e-stroke-edge));
1460
+ border-color: transparent;
1461
1461
  background-color: var(--e-surface-tint);
1462
1462
  box-shadow: none;
1463
1463
  color: var(--e-muted);
@@ -1474,13 +1474,14 @@ to {
1474
1474
  align-items: stretch;
1475
1475
  min-width: 0;
1476
1476
  min-height: var(--e-control-height);
1477
+ box-sizing: border-box;
1478
+ border: var(--e-stroke-edge) solid var(--e-ring);
1477
1479
  border-radius: var(--e-radius-md);
1478
1480
  background: var(--e-surface);
1479
- box-shadow:
1480
- inset 0 0 0 var(--e-stroke-edge) var(--e-ring),
1481
- var(--e-well);
1481
+ background-clip: padding-box;
1482
+ box-shadow: var(--e-well);
1482
1483
  transition:
1483
- box-shadow var(--e-duration-tap) var(--e-easing-out),
1484
+ border-color var(--e-duration-tap) var(--e-easing-out),
1484
1485
  background-color var(--e-duration-tap) var(--e-easing-out);
1485
1486
  }
1486
1487
 
@@ -1514,6 +1515,7 @@ to {
1514
1515
  .e-input-wrap[data-disabled] {
1515
1516
  outline: var(--e-stroke-edge) dashed var(--e-border-strong);
1516
1517
  outline-offset: calc(-1 * var(--e-stroke-edge));
1518
+ border-color: transparent;
1517
1519
  background: var(--e-surface-tint);
1518
1520
  box-shadow: none;
1519
1521
  color: var(--e-muted);
@@ -1522,6 +1524,7 @@ to {
1522
1524
  .e-input-wrap .e-input {
1523
1525
  flex: 1;
1524
1526
  outline: 0;
1527
+ border: 0;
1525
1528
  background: transparent;
1526
1529
  box-shadow: none;
1527
1530
  height: auto;
@@ -1817,7 +1820,7 @@ to {
1817
1820
  flex-wrap: nowrap;
1818
1821
  align-items: center;
1819
1822
  min-height: var(--e-control-height);
1820
- padding-inline-end: var(--e-space-1);
1823
+ padding-inline-end: calc(var(--e-space-1) - var(--e-stroke-edge));
1821
1824
  }
1822
1825
 
1823
1826
  .e-combo:not(.e-combo--multi) .e-input {
@@ -1825,7 +1828,7 @@ to {
1825
1828
  min-width: 4rem;
1826
1829
  height: auto;
1827
1830
  align-self: stretch;
1828
- padding-inline: var(--e-space-4) var(--e-space-2);
1831
+ padding-inline: calc(var(--e-space-4) - var(--e-stroke-edge)) calc(var(--e-space-2) - var(--e-stroke-edge));
1829
1832
  }
1830
1833
 
1831
1834
  .e-combo-btn {
@@ -1899,7 +1902,7 @@ to {
1899
1902
  align-self: center;
1900
1903
  }
1901
1904
  .e-combo--multi {
1902
- padding: 3px var(--e-space-1) 3px var(--e-space-2);
1905
+ padding: calc(3px - var(--e-stroke-edge)) calc(var(--e-space-1) - var(--e-stroke-edge)) calc(3px - var(--e-stroke-edge)) calc(var(--e-space-2) - var(--e-stroke-edge));
1903
1906
  gap: var(--e-space-1);
1904
1907
  }
1905
1908
  .e-combo--multi .e-input {
@@ -2192,14 +2195,23 @@ to {
2192
2195
  align-items: center;
2193
2196
  justify-content: space-between;
2194
2197
  gap: var(--e-space-2);
2195
- padding-inline-end: var(--e-space-3);
2198
+ padding-inline-end: calc(var(--e-space-3) - var(--e-stroke-edge));
2196
2199
  text-align: start;
2197
2200
  cursor: pointer;
2198
2201
  }
2202
+
2203
+ /* Open, the trigger looks focused: focus moves into the list, so the field's own :focus no longer applies. */
2199
2204
  .e-sel-trigger[aria-expanded="true"] {
2200
- --e-ring: var(--e-ink);
2205
+ --e-ring: var(--e-focus-field);
2201
2206
 
2202
2207
  background-color: var(--e-surface);
2208
+ outline: max(var(--e-stroke-focus), calc(2 * var(--e-stroke-edge))) solid var(--e-focus-field);
2209
+ outline-offset: var(--e-focus-gap-field);
2210
+ }
2211
+ .e-sel-trigger[aria-expanded="true"][aria-invalid="true"] {
2212
+ --e-ring: var(--e-danger);
2213
+
2214
+ outline-color: var(--e-danger);
2203
2215
  }
2204
2216
  .e-sel-value {
2205
2217
  display: inline-flex;
@@ -2508,11 +2520,11 @@ to {
2508
2520
  .e-filterrow .e-input {
2509
2521
  height: var(--e-control-height);
2510
2522
  font-size: var(--e-text-md);
2511
- padding-inline: var(--e-space-3);
2523
+ padding-inline: calc(var(--e-space-3) - var(--e-stroke-edge));
2512
2524
  }
2513
2525
  .e-filterrow .e-sel-trigger {
2514
2526
  height: var(--e-control-height);
2515
- padding-inline-end: var(--e-space-2);
2527
+ padding-inline-end: calc(var(--e-space-2) - var(--e-stroke-edge));
2516
2528
  }
2517
2529
  .e-filter-range {
2518
2530
  display: grid;
@@ -3733,18 +3745,20 @@ a:any-link > .e-highlight {
3733
3745
  gap: var(--e-space-3);
3734
3746
  height: var(--e-control-height);
3735
3747
  box-sizing: border-box;
3736
- padding: 0 var(--e-space-3) var(--e-lift);
3748
+ padding: 0 calc(var(--e-space-3) - var(--e-stroke-edge));
3737
3749
 
3738
3750
  --e-lift: 0px;
3739
3751
 
3740
- border: 0;
3752
+ /* The current page is outlined with a border and its fill stops inside it, so the corner carries the edge colour alone; the other items have no edge and fill to the box. */
3753
+ border: var(--e-stroke-edge) solid transparent;
3754
+ border-bottom-width: calc(var(--e-stroke-edge) + var(--e-lift));
3741
3755
  border-radius: var(--e-radius-md);
3742
3756
  color: var(--e-ink);
3743
3757
  font: 400 var(--e-text-md) / 1 var(--e-font-sans);
3744
3758
  text-decoration: none;
3745
3759
  transition:
3746
3760
  background-color var(--e-duration-tap) var(--e-easing-out),
3747
- box-shadow var(--e-duration-tap) var(--e-easing-out);
3761
+ border-color var(--e-duration-tap) var(--e-easing-out);
3748
3762
  }
3749
3763
  .e-nav-item:hover {
3750
3764
  background-color: var(--e-surface-hover);
@@ -3760,9 +3774,9 @@ a:any-link > .e-highlight {
3760
3774
  --e-lift: var(--e-depth);
3761
3775
  --e-slab: var(--e-primary);
3762
3776
 
3763
- box-shadow:
3764
- inset 0 0 0 var(--e-stroke-edge) var(--e-primary),
3765
- inset 0 calc(-1 * (var(--e-lift) + var(--e-stroke-edge))) 0 0 var(--e-slab);
3777
+ border-color: var(--e-primary);
3778
+ border-bottom-color: var(--e-slab);
3779
+ background-clip: padding-box;
3766
3780
  }
3767
3781
  .e-nav-item[aria-current="page"]:hover {
3768
3782
  --e-slab: color-mix(in srgb, var(--e-primary), var(--e-shade-slab));
@@ -3885,14 +3899,14 @@ a:any-link > .e-highlight {
3885
3899
  --e-bg: var(--e-surface-tint);
3886
3900
 
3887
3901
  container-type: inline-size;
3888
- padding: var(--e-space-3) var(--e-space-4);
3889
- padding-left: calc(var(--e-space-4) + 2 * var(--e-depth));
3890
- border: 0;
3902
+ padding: calc(var(--e-space-3) - var(--e-stroke-edge)) calc(var(--e-space-4) - var(--e-stroke-edge));
3903
+ padding-left: calc(var(--e-space-4) - var(--e-stroke-edge) + 2 * var(--e-depth));
3904
+ border: var(--e-stroke-edge) solid var(--e-tone);
3891
3905
  border-radius: var(--e-radius-md);
3892
3906
  background-color: var(--e-bg);
3893
- box-shadow: inset 0 0 0 var(--e-stroke-edge) var(--e-tone);
3894
- background-image: linear-gradient(to right, var(--e-tone) calc(var(--e-stroke-edge) + 2 * var(--e-depth)), transparent calc(var(--e-stroke-edge) + 2 * var(--e-depth)));
3907
+ background-image: linear-gradient(to right, var(--e-tone) calc(2 * var(--e-depth)), transparent calc(2 * var(--e-depth)));
3895
3908
  background-repeat: no-repeat;
3909
+ background-clip: padding-box;
3896
3910
  color: var(--e-ink);
3897
3911
  }
3898
3912
  .e-notice--success {
@@ -3992,9 +4006,6 @@ a:any-link > .e-highlight {
3992
4006
  align-items: center;
3993
4007
  gap: var(--e-space-2) var(--e-space-4);
3994
4008
  }
3995
- .e-pagehead-titlerow > :not(.e-pagehead-title) {
3996
- margin-top: var(--e-space-1);
3997
- }
3998
4009
  }
3999
4010
  @layer e.reset, e.tokens, e.base, e.primitives, e.blocks, e.controls, e.composites, e.containers, e.page;
4000
4011
  @layer e.composites {
@@ -4059,21 +4070,32 @@ a:any-link > .e-highlight {
4059
4070
  .e-progress-track {
4060
4071
  position: relative;
4061
4072
  height: 10px;
4073
+ box-sizing: border-box;
4074
+ padding: calc(var(--e-stroke-card) / 2);
4062
4075
  border-radius: var(--e-radius-pill);
4063
4076
  background: var(--e-surface-tint);
4064
- box-shadow: inset 0 0 0 var(--e-stroke-card) var(--e-border-strong);
4077
+ background-clip: content-box;
4065
4078
  overflow: hidden;
4066
4079
  }
4080
+
4081
+ /* The outline lies over the track and bar, which stop half a stroke inside its outer edge: nothing shows outside the curve or in a gap inside it. */
4082
+ .e-progress-track::after {
4083
+ content: "";
4084
+ position: absolute;
4085
+ inset: 0;
4086
+ border: var(--e-stroke-card) solid var(--e-border-strong);
4087
+ border-radius: inherit;
4088
+ pointer-events: none;
4089
+ }
4067
4090
  .e-progress-fill {
4068
4091
  height: 100%;
4069
4092
  border-radius: var(--e-radius-pill);
4070
4093
  background: var(--e-primary);
4071
- box-shadow: inset 0 0 0 var(--e-stroke-card) var(--e-primary);
4072
4094
  transition: width var(--e-duration-move) var(--e-easing-out);
4073
4095
  }
4074
4096
  .e-progress--indeterminate .e-progress-fill {
4075
4097
  position: absolute;
4076
- inset: 0 auto 0 0;
4098
+ inset: calc(var(--e-stroke-card) / 2) auto calc(var(--e-stroke-card) / 2) calc(var(--e-stroke-card) / 2);
4077
4099
  width: 40%;
4078
4100
  transition: none;
4079
4101
  animation: e-progress-slide 1.5s cubic-bezier(0.4, 0, 0.2, 1) infinite;
@@ -4101,8 +4123,8 @@ to {
4101
4123
  }
4102
4124
  }
4103
4125
  @media (forced-colors: active) {
4104
- .e-progress-track {
4105
- border: var(--e-stroke-card) solid CanvasText;
4126
+ .e-progress-track::after {
4127
+ border-color: CanvasText;
4106
4128
  }
4107
4129
  .e-progress-fill {
4108
4130
  forced-color-adjust: none;
@@ -4166,13 +4188,14 @@ to {
4166
4188
  align-items: center;
4167
4189
  gap: var(--e-space-1);
4168
4190
  height: var(--e-control-height);
4169
- padding: 0 var(--e-space-1) 0 var(--e-space-2);
4191
+ padding: 0 calc(var(--e-space-1) - var(--e-stroke-edge)) 0 calc(var(--e-space-2) - var(--e-stroke-edge));
4192
+ box-sizing: border-box;
4193
+ border: var(--e-stroke-edge) solid var(--e-ring);
4170
4194
  border-radius: var(--e-radius-md);
4171
4195
  background: var(--e-surface);
4172
- box-shadow:
4173
- inset 0 0 0 var(--e-stroke-edge) var(--e-ring),
4174
- var(--e-well);
4175
- transition: box-shadow var(--e-duration-tap) var(--e-easing-out);
4196
+ background-clip: padding-box;
4197
+ box-shadow: var(--e-well);
4198
+ transition: border-color var(--e-duration-tap) var(--e-easing-out);
4176
4199
  }
4177
4200
  .e-search:hover {
4178
4201
  background: var(--e-surface-hover);
@@ -4180,7 +4203,7 @@ to {
4180
4203
  .e-search .e-btn {
4181
4204
  position: relative;
4182
4205
  height: calc(var(--e-control-height) - 6px);
4183
- padding: 0 var(--e-space-3) var(--e-lift);
4206
+ padding: 0 calc(var(--e-space-3) - var(--e-stroke-edge));
4184
4207
  font-size: var(--e-text-md);
4185
4208
  }
4186
4209
  .e-search .e-btn::after {
@@ -4375,7 +4398,8 @@ to {
4375
4398
  .e-seg-opt:has(:disabled:checked):hover .e-seg-text {
4376
4399
  background-color: var(--e-surface);
4377
4400
  background-image: none;
4378
- box-shadow: inset 0 0 0 var(--e-stroke-edge) var(--e-border-strong);
4401
+ outline: var(--e-stroke-edge) solid var(--e-border-strong);
4402
+ outline-offset: calc(-1 * var(--e-stroke-edge));
4379
4403
  color: var(--e-ink);
4380
4404
  }
4381
4405
  .e-seg-field {
@@ -4404,11 +4428,11 @@ to {
4404
4428
  .e-pad-surface {
4405
4429
  position: relative;
4406
4430
  overflow: hidden;
4431
+ border: var(--e-stroke-edge) solid var(--e-border-strong);
4407
4432
  border-radius: var(--e-radius-md);
4408
4433
  background: var(--e-surface);
4409
- box-shadow:
4410
- inset 0 0 0 var(--e-stroke-edge) var(--e-border-strong),
4411
- var(--e-well);
4434
+ background-clip: padding-box;
4435
+ box-shadow: var(--e-well);
4412
4436
  }
4413
4437
  .e-pad-surface::after {
4414
4438
  content: "";
@@ -4599,23 +4623,28 @@ to {
4599
4623
  place-items: center;
4600
4624
  width: var(--e-dot);
4601
4625
  height: var(--e-dot);
4626
+ box-sizing: border-box;
4627
+ border: var(--e-stroke-edge) solid transparent;
4602
4628
  border-radius: 50%;
4603
4629
  outline: var(--e-stroke-edge) dashed var(--e-border-strong);
4604
4630
  outline-offset: calc(-1 * var(--e-stroke-edge));
4605
4631
  background: var(--e-surface);
4632
+ background-clip: padding-box;
4606
4633
  color: var(--e-muted);
4607
4634
  font: 600 var(--e-text-xs) / 1 var(--e-font-mono);
4608
4635
  }
4609
4636
  .e-step[data-state="done"] .e-step-dot {
4610
4637
  outline: 0;
4638
+ border-color: var(--e-primary);
4611
4639
  background: var(--e-primary);
4612
4640
  color: var(--e-on-primary);
4613
4641
  }
4614
4642
  .e-step[data-state="current"] .e-step-dot {
4615
4643
  outline: 0;
4616
- box-shadow: inset 0 0 0 var(--e-stroke-focus) var(--e-primary);
4644
+ border: var(--e-stroke-focus) solid var(--e-primary);
4617
4645
  color: var(--e-primary);
4618
4646
  background: var(--e-surface);
4647
+ background-clip: padding-box;
4619
4648
  }
4620
4649
  .e-step-label {
4621
4650
  font: 400 var(--e-text-sm) / 1.3 var(--e-font-sans);
@@ -4741,18 +4770,20 @@ to {
4741
4770
  flex: none;
4742
4771
  width: var(--e-switch-w);
4743
4772
  height: 24px;
4773
+ box-sizing: border-box;
4774
+ border: var(--e-stroke-edge) solid var(--e-ring);
4744
4775
  border-radius: var(--e-radius-pill);
4745
4776
  background: var(--e-surface-tint);
4746
- box-shadow: inset 0 0 0 var(--e-stroke-edge) var(--e-ring);
4777
+ background-clip: padding-box;
4747
4778
  transition:
4748
4779
  background-color var(--e-duration-tap) var(--e-easing-out),
4749
- box-shadow var(--e-duration-tap) var(--e-easing-out);
4780
+ border-color var(--e-duration-tap) var(--e-easing-out);
4750
4781
  }
4751
4782
  .e-switch-track::after {
4752
4783
  content: "";
4753
4784
  position: absolute;
4754
4785
  top: 50%;
4755
- inset-inline-start: var(--e-thumb-inset);
4786
+ inset-inline-start: calc(var(--e-thumb-inset) - var(--e-stroke-edge));
4756
4787
  width: var(--e-thumb);
4757
4788
  height: var(--e-thumb);
4758
4789
  margin-top: calc(var(--e-thumb) / -2);
@@ -4766,17 +4797,18 @@ to {
4766
4797
  .e-switch-input:checked + .e-switch-track {
4767
4798
  --e-ring: var(--e-primary);
4768
4799
 
4769
- background: var(--e-primary);
4800
+ background-color: var(--e-primary);
4801
+ background-clip: border-box;
4770
4802
  }
4771
4803
  .e-switch-input:checked + .e-switch-track::after {
4772
4804
  background: var(--e-on-primary);
4773
4805
  transform: translateX(var(--e-thumb-travel));
4774
4806
  }
4775
4807
  .e-switch-input:disabled + .e-switch-track {
4776
- box-shadow: none;
4808
+ border-color: transparent;
4777
4809
  outline: var(--e-stroke-edge) dashed var(--e-border-strong);
4778
4810
  outline-offset: calc(-1 * var(--e-stroke-edge));
4779
- background: var(--e-surface-tint);
4811
+ background-color: var(--e-surface-tint);
4780
4812
  }
4781
4813
  .e-switch-input:disabled + .e-switch-track::after {
4782
4814
  background: var(--e-muted);
@@ -4891,7 +4923,6 @@ to {
4891
4923
 
4892
4924
  /* A selected tab rises: the slab is a band the tab paints along one edge itself, so there is no second shape behind the corners. Every tab is one control height tall either way. */
4893
4925
  --e-lift: 0px;
4894
- --e-band: calc(var(--e-lift) + var(--e-stroke-edge));
4895
4926
  --e-slab: var(--e-primary);
4896
4927
 
4897
4928
  position: relative;
@@ -4900,18 +4931,19 @@ to {
4900
4931
  gap: var(--e-space-2);
4901
4932
  flex: none;
4902
4933
  height: var(--e-control-height);
4903
- padding: 0 var(--e-space-4) var(--e-lift);
4904
- border: 0;
4934
+ padding: 0 calc(var(--e-space-4) - var(--e-stroke-edge));
4935
+ border: var(--e-stroke-edge) solid var(--e-bc);
4936
+ border-bottom-width: calc(var(--e-stroke-edge) + var(--e-lift));
4905
4937
  border-radius: 0;
4906
4938
  background: transparent;
4907
- box-shadow: inset 0 0 0 var(--e-stroke-edge) var(--e-bc);
4939
+ background-clip: padding-box;
4908
4940
  color: var(--e-muted);
4909
4941
  font: 500 var(--e-text-md) / 1 var(--e-font-sans);
4910
4942
  cursor: pointer;
4911
4943
  transition:
4912
4944
  color var(--e-duration-tap) var(--e-easing-out),
4913
4945
  background-color var(--e-duration-tap) var(--e-easing-out),
4914
- box-shadow var(--e-duration-tap) var(--e-easing-out);
4946
+ border-color var(--e-duration-tap) var(--e-easing-out);
4915
4947
  }
4916
4948
 
4917
4949
  /* Only the outer ends of the row are rounded. */
@@ -4938,10 +4970,8 @@ to {
4938
4970
  --e-lift: var(--e-depth);
4939
4971
 
4940
4972
  z-index: var(--e-z-sticky);
4973
+ border-bottom-color: var(--e-slab);
4941
4974
  background-color: color-mix(in srgb, var(--e-surface-tint), var(--e-ink) 3%);
4942
- box-shadow:
4943
- inset 0 0 0 var(--e-stroke-edge) var(--e-bc),
4944
- inset 0 calc(-1 * var(--e-band)) 0 0 var(--e-slab);
4945
4975
  color: var(--e-ink);
4946
4976
  font-weight: 600;
4947
4977
  }
@@ -4955,14 +4985,14 @@ to {
4955
4985
  outline: var(--e-stroke-focus) solid var(--e-focus-ring);
4956
4986
  outline-offset: var(--e-focus-gap);
4957
4987
  }
4958
- .e-tabs--fill .e-tablist {
4988
+ .e-tabs--fill > .e-tablist {
4959
4989
  overflow-x: hidden;
4960
4990
  }
4961
- .e-tabs--fill .e-tab {
4991
+ .e-tabs--fill > .e-tablist > .e-tab {
4962
4992
  flex: 1 1 0;
4963
4993
  min-width: 0;
4964
4994
  justify-content: center;
4965
- padding-inline: var(--e-space-1);
4995
+ padding-inline: max(0px, calc(var(--e-space-1) - var(--e-stroke-edge)));
4966
4996
  }
4967
4997
 
4968
4998
  /* Vertical: the tabs stack beside the panel, flush and sharing edges. The selected tab rises towards the panel, so its slab is a band down the inline-start side, away from the panel, instead of along the bottom, and only the top and bottom ends of the column are rounded. */
@@ -4971,133 +5001,123 @@ to {
4971
5001
  align-items: flex-start;
4972
5002
  gap: var(--e-space-4);
4973
5003
  }
4974
- .e-tabs--vertical .e-tablist {
5004
+ .e-tabs--vertical > .e-tablist {
4975
5005
  flex-direction: column;
4976
5006
  flex: none;
4977
5007
  overflow: visible;
4978
5008
  }
4979
- .e-tabs--vertical .e-tab {
5009
+ .e-tabs--vertical > .e-tablist > .e-tab {
4980
5010
  --e-lift: 0px;
4981
5011
 
4982
5012
  height: var(--e-control-height);
4983
- padding-block-end: 0;
4984
5013
  justify-content: flex-start;
4985
5014
  border-radius: 0;
4986
5015
  }
4987
- .e-tabs--vertical .e-tab:first-child {
5016
+ .e-tabs--vertical > .e-tablist > .e-tab:first-child {
4988
5017
  border-start-start-radius: var(--e-radius-md);
4989
5018
  border-start-end-radius: var(--e-radius-md);
4990
5019
  }
4991
- .e-tabs--vertical .e-tab:last-child {
5020
+ .e-tabs--vertical > .e-tablist > .e-tab:last-child {
4992
5021
  border-end-start-radius: var(--e-radius-md);
4993
5022
  border-end-end-radius: var(--e-radius-md);
4994
5023
  }
4995
- .e-tabs--vertical .e-tab + .e-tab {
5024
+ .e-tabs--vertical > .e-tablist > .e-tab + .e-tab {
4996
5025
  margin-inline-start: 0;
4997
5026
  margin-block-start: calc(-1 * var(--e-stroke-edge));
4998
5027
  }
4999
- .e-tabs--vertical .e-tab[aria-selected="true"] {
5028
+ .e-tabs--vertical > .e-tablist > .e-tab[aria-selected="true"] {
5000
5029
  --e-lift: var(--e-depth);
5001
5030
 
5002
- padding-inline-start: calc(var(--e-space-4) + var(--e-lift));
5003
- box-shadow:
5004
- inset 0 0 0 var(--e-stroke-edge) var(--e-bc),
5005
- inset var(--e-band) 0 0 0 var(--e-slab);
5031
+ border-bottom-width: var(--e-stroke-edge);
5032
+ border-bottom-color: var(--e-bc);
5033
+ border-inline-start-width: calc(var(--e-stroke-edge) + var(--e-lift));
5034
+ border-inline-start-color: var(--e-slab);
5006
5035
  }
5007
- .e-tabs--vertical .e-tabpanel {
5036
+ .e-tabs--vertical > .e-tabpanel {
5008
5037
  flex: 1 1 0;
5009
5038
  min-width: 0;
5010
5039
  padding-top: 0;
5011
5040
  }
5012
- :dir(rtl) .e-tabs--vertical .e-tab[aria-selected="true"] {
5013
- box-shadow:
5014
- inset 0 0 0 var(--e-stroke-edge) var(--e-bc),
5015
- inset calc(-1 * var(--e-band)) 0 0 0 var(--e-slab);
5016
- }
5017
5041
 
5018
5042
  /* Framed: tabs and panel are one outlined card. The tab row sits over the panel's edge by one stroke, so a tab's lower edge and the panel's upper edge are the same line; the chosen tab has no edge on that side and its fill covers the panel's, opening into it. Tabs sit flush with their neighbours, square where they meet; only the card's outer corner at the first tab is rounded, and the panel's own corner beside it is square. The row always leaves a corner's width of open edge past the last tab, so the panel's curve never lands against a tab's straight edge. */
5019
- .e-tabs--framed .e-tablist {
5043
+ .e-tabs--framed > .e-tablist {
5020
5044
  position: relative;
5021
5045
  z-index: var(--e-z-raised);
5022
5046
  margin-block-end: calc(-1 * var(--e-stroke-edge));
5023
5047
  }
5024
- .e-tabs--framed .e-tab {
5048
+ .e-tabs--framed > .e-tablist > .e-tab {
5025
5049
  --e-bc: var(--e-border-strong);
5026
5050
  --e-lift: 0px;
5027
5051
 
5028
5052
  border-radius: 0;
5029
5053
  background-color: var(--e-surface-tint);
5030
5054
  }
5031
- .e-tabs--framed .e-tab:first-child {
5055
+ .e-tabs--framed > .e-tablist > .e-tab:first-child {
5032
5056
  border-start-start-radius: var(--e-radius-md);
5033
5057
  }
5034
- .e-tabs--framed.e-tabs--fill .e-tab:last-child {
5058
+ .e-tabs--framed.e-tabs--fill > .e-tablist > .e-tab:last-child {
5035
5059
  border-start-end-radius: var(--e-radius-md);
5036
5060
  }
5037
- .e-tabs:not(.e-tabs--fill, .e-tabs--vertical).e-tabs--framed .e-tablist {
5061
+ .e-tabs:not(.e-tabs--fill, .e-tabs--vertical).e-tabs--framed > .e-tablist {
5038
5062
  padding-inline-end: var(--e-radius-md);
5039
5063
  }
5040
- .e-tabs--framed .e-tab:hover {
5064
+ .e-tabs--framed > .e-tablist > .e-tab:hover {
5041
5065
  background-color: var(--e-surface-hover);
5042
5066
  }
5043
5067
 
5044
5068
  /* The chosen tab rises like a button does, with its primary slab as a band on the edge away from the panel, and its open sides outlined in the primary colour. */
5045
- .e-tabs--framed .e-tab[aria-selected="true"] {
5069
+ .e-tabs--framed > .e-tablist > .e-tab[aria-selected="true"] {
5046
5070
  --e-bc: var(--e-primary);
5047
5071
  --e-lift: var(--e-depth);
5048
5072
 
5049
- padding-block: var(--e-lift) 0;
5073
+ padding-block-end: var(--e-stroke-edge);
5074
+ border-bottom-width: 0;
5075
+ border-top-width: calc(var(--e-stroke-edge) + var(--e-lift));
5076
+ border-top-color: var(--e-slab);
5050
5077
  background-color: var(--e-surface);
5051
- box-shadow:
5052
- inset var(--e-stroke-edge) 0 0 0 var(--e-bc),
5053
- inset calc(-1 * var(--e-stroke-edge)) 0 0 0 var(--e-bc),
5054
- inset 0 var(--e-band) 0 0 var(--e-slab);
5055
5078
  }
5056
- .e-tabs--framed .e-tabpanel {
5057
- padding: var(--e-space-4);
5079
+ .e-tabs--framed > .e-tabpanel {
5080
+ padding: calc(var(--e-space-4) - var(--e-stroke-edge));
5081
+ border: var(--e-stroke-edge) solid var(--e-border-strong);
5058
5082
  border-radius: var(--e-radius-md);
5059
5083
  border-start-start-radius: 0;
5060
5084
  background: var(--e-surface);
5061
- box-shadow: inset 0 0 0 var(--e-stroke-edge) var(--e-border-strong);
5085
+ background-clip: padding-box;
5062
5086
  }
5063
- .e-tabs--framed.e-tabs--fill .e-tabpanel {
5087
+ .e-tabs--framed.e-tabs--fill > .e-tabpanel {
5064
5088
  border-start-end-radius: 0;
5065
5089
  }
5066
5090
  .e-tabs--framed.e-tabs--vertical {
5067
5091
  gap: 0;
5068
5092
  align-items: stretch;
5069
5093
  }
5070
- .e-tabs--framed.e-tabs--vertical .e-tablist {
5094
+ .e-tabs--framed.e-tabs--vertical > .e-tablist {
5071
5095
  align-self: flex-start;
5072
5096
  margin-block-end: var(--e-radius-md);
5073
5097
  margin-inline-end: calc(-1 * var(--e-stroke-edge));
5074
5098
  }
5075
- .e-tabs--framed.e-tabs--vertical .e-tab {
5099
+ .e-tabs--framed.e-tabs--vertical > .e-tablist > .e-tab {
5076
5100
  border-radius: 0;
5077
5101
  }
5078
- .e-tabs--framed.e-tabs--vertical .e-tab:first-child {
5102
+ .e-tabs--framed.e-tabs--vertical > .e-tablist > .e-tab:first-child {
5079
5103
  border-start-start-radius: var(--e-radius-md);
5080
5104
  }
5081
- .e-tabs--framed.e-tabs--vertical .e-tab[aria-selected="true"] {
5105
+ .e-tabs--framed.e-tabs--vertical > .e-tablist > .e-tab[aria-selected="true"] {
5082
5106
  margin-block: calc(-1 * var(--e-stroke-edge)) 0;
5083
5107
  padding-block: 0;
5084
- padding-inline-start: calc(var(--e-space-4) + var(--e-lift));
5085
- box-shadow:
5086
- inset 0 var(--e-stroke-edge) 0 0 var(--e-bc),
5087
- inset 0 calc(-1 * var(--e-stroke-edge)) 0 0 var(--e-bc),
5088
- inset var(--e-band) 0 0 0 var(--e-slab);
5089
- }
5090
- :dir(rtl) .e-tabs--framed.e-tabs--vertical .e-tab[aria-selected="true"] {
5091
- box-shadow:
5092
- inset 0 var(--e-stroke-edge) 0 0 var(--e-bc),
5093
- inset 0 calc(-1 * var(--e-stroke-edge)) 0 0 var(--e-bc),
5094
- inset calc(-1 * var(--e-band)) 0 0 0 var(--e-slab);
5095
- }
5096
- .e-tabs--framed.e-tabs--vertical .e-tab[aria-selected="true"]:first-child {
5108
+ border-block-start-width: var(--e-stroke-edge);
5109
+ border-block-start-color: var(--e-bc);
5110
+ border-block-end-width: var(--e-stroke-edge);
5111
+ border-block-end-color: var(--e-bc);
5112
+ border-inline-start-width: calc(var(--e-stroke-edge) + var(--e-lift));
5113
+ border-inline-start-color: var(--e-slab);
5114
+ border-inline-end-width: 0;
5115
+ }
5116
+ .e-tabs--framed.e-tabs--vertical > .e-tablist > .e-tab[aria-selected="true"]:first-child {
5097
5117
  margin-block-start: 0;
5098
5118
  }
5099
- .e-tabs--framed.e-tabs--vertical .e-tabpanel {
5100
- padding: var(--e-space-4);
5119
+ .e-tabs--framed.e-tabs--vertical > .e-tabpanel {
5120
+ padding: calc(var(--e-space-4) - var(--e-stroke-edge));
5101
5121
  }
5102
5122
  .e-tab-count {
5103
5123
  min-width: var(--e-space-6);
@@ -5151,7 +5171,7 @@ to {
5151
5171
  .e-textarea {
5152
5172
  height: auto;
5153
5173
  min-height: 6.5rem;
5154
- padding: var(--e-space-3) var(--e-space-4);
5174
+ padding: calc(var(--e-space-3) - var(--e-stroke-edge)) calc(var(--e-space-4) - var(--e-stroke-edge));
5155
5175
  line-height: 1.5;
5156
5176
  resize: vertical;
5157
5177
  }