opui-css 5.4.0 → 5.4.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.
@@ -16,23 +16,15 @@
16
16
  --_accent-tonal: var(--_color-tonal);
17
17
  --_accent-tonal-contrast: var(--_color);
18
18
 
19
- --_default-hover-bg-color: light-dark(
20
- oklch(from var(--_accent) l 0.01 h / 10%),
21
- oklch(from var(--_accent) l 0.01 h / 20%)
22
- );
23
- --_default-active-bg-color: light-dark(
24
- oklch(from var(--_accent) l 0.06 h / 20%),
25
- oklch(from var(--_accent) l 0.06 h / 30%)
26
- );
27
-
28
- --_filled-hover-bg-color: light-dark(
29
- oklch(from var(--_accent) calc(l + 0.2) c h),
30
- oklch(from var(--_accent) calc(l - 0.1) c h)
31
- );
32
- --_filled-active-bg-color: light-dark(
33
- oklch(from var(--_accent) calc(l + 0.3) c h),
34
- oklch(from var(--_accent) calc(l - 0.15) c h)
35
- );
19
+ --_default-hover-bg-color: light-dark(oklch(from var(--_accent) l 0.01 h / 10%),
20
+ oklch(from var(--_accent) l 0.01 h / 20%));
21
+ --_default-active-bg-color: light-dark(oklch(from var(--_accent) l 0.06 h / 20%),
22
+ oklch(from var(--_accent) l 0.06 h / 30%));
23
+
24
+ --_filled-hover-bg-color: light-dark(oklch(from var(--_accent) calc(l + 0.2) c h),
25
+ oklch(from var(--_accent) calc(l - 0.1) c h));
26
+ --_filled-active-bg-color: light-dark(oklch(from var(--_accent) calc(l + 0.3) c h),
27
+ oklch(from var(--_accent) calc(l - 0.15) c h));
36
28
  --_outlined-active-bg-color: var(--_filled-active-bg-color);
37
29
 
38
30
  --_bg-color: transparent;
@@ -67,11 +59,6 @@
67
59
  box-shadow calc(0.1s * var(--_motion)) ease;
68
60
  user-select: none;
69
61
 
70
- /* Colors — shared interaction model for critical and primary.
71
- Each color modifier below only swaps --_color; the tonal surface,
72
- contrast text, and hover/active strategy are identical.
73
- The .critical scope class in theme.css redirects --palette-source so
74
- --color-6 below becomes a tint of the active color. */
75
62
  &.ui-critical,
76
63
  &.ui-primary {
77
64
  --_color-contrast: var(--gray-1);
@@ -97,11 +84,9 @@
97
84
 
98
85
  /* Disabled */
99
86
  &:where([disabled]) {
100
- --_text-color: color-mix(
101
- in oklch,
102
- var(--text-muted) 50%,
103
- var(--surface-default)
104
- );
87
+ --_text-color: color-mix(in oklch,
88
+ var(--text-muted) 50%,
89
+ var(--surface-default));
105
90
 
106
91
  cursor: not-allowed;
107
92
  opacity: 0.64;
@@ -139,8 +124,7 @@
139
124
  line-height: 1.2;
140
125
  }
141
126
 
142
- /* Sizes — heights aliased from the shared --control-size scale.
143
- Override --button-size-* in a parent scope to resize an entire region. */
127
+ /* Sizes */
144
128
  &.ui-x-small {
145
129
  --_min-height: var(--button-size-x-small);
146
130
  --_font-size: var(--font-size-0);
@@ -214,7 +198,7 @@
214
198
  }
215
199
  }
216
200
 
217
- /* file input */
201
+ /* File input */
218
202
  :where(input[type="file"]) {
219
203
  align-self: flex-start;
220
204
  border: var(--border-size-1) solid var(--surface-filled);
@@ -357,22 +341,14 @@
357
341
  --_accent-contrast: var(--_color-contrast);
358
342
  --_accent-tonal: var(--_color-tonal);
359
343
  --_accent-tonal-contrast: var(--_color);
360
- --_default-hover-bg-color: light-dark(
361
- oklch(from var(--_accent) l 0.01 h / 10%),
362
- oklch(from var(--_accent) l 0.01 h / 20%)
363
- );
364
- --_default-active-bg-color: light-dark(
365
- oklch(from var(--_accent) l 0.06 h / 20%),
366
- oklch(from var(--_accent) l 0.06 h / 30%)
367
- );
368
- --_filled-hover-bg-color: light-dark(
369
- oklch(from var(--_accent) calc(l + 0.2) c h),
370
- oklch(from var(--_accent) calc(l - 0.1) c h)
371
- );
372
- --_filled-active-bg-color: light-dark(
373
- oklch(from var(--_accent) calc(l + 0.3) c h),
374
- oklch(from var(--_accent) calc(l - 0.15) c h)
375
- );
344
+ --_default-hover-bg-color: light-dark(oklch(from var(--_accent) l 0.01 h / 10%),
345
+ oklch(from var(--_accent) l 0.01 h / 20%));
346
+ --_default-active-bg-color: light-dark(oklch(from var(--_accent) l 0.06 h / 20%),
347
+ oklch(from var(--_accent) l 0.06 h / 30%));
348
+ --_filled-hover-bg-color: light-dark(oklch(from var(--_accent) calc(l + 0.2) c h),
349
+ oklch(from var(--_accent) calc(l - 0.1) c h));
350
+ --_filled-active-bg-color: light-dark(oklch(from var(--_accent) calc(l + 0.3) c h),
351
+ oklch(from var(--_accent) calc(l - 0.15) c h));
376
352
  --_outlined-active-bg-color: var(--_filled-active-bg-color);
377
353
 
378
354
  --_bg-color: transparent;
@@ -421,11 +397,6 @@
421
397
  background-color calc(0.1s * var(--_motion)) ease;
422
398
  }
423
399
 
424
- /* Colors — shared interaction model for critical and primary.
425
- Each color modifier below only swaps --_color; the tonal surface,
426
- contrast text, and hover/active strategy are identical.
427
- The .critical scope class in theme.css redirects --palette-source so
428
- --color-6 below becomes a tint of the active color. */
429
400
  &.ui-critical,
430
401
  &.ui-primary {
431
402
  --_color-contrast: var(--gray-1);
@@ -453,20 +424,16 @@
453
424
  &:where(:not([disabled])) {
454
425
  &:where(:not(:active):hover) {
455
426
  &::before {
456
- background-color: var(
457
- --_interaction-hover-color,
458
- var(--_default-hover-bg-color)
459
- );
427
+ background-color: var(--_interaction-hover-color,
428
+ var(--_default-hover-bg-color));
460
429
  }
461
430
  }
462
431
 
463
432
  &:where(:hover:active),
464
433
  &[aria-current="page"] {
465
434
  &::before {
466
- background-color: var(
467
- --_interaction-active-color,
468
- var(--_default-active-bg-color)
469
- );
435
+ background-color: var(--_interaction-active-color,
436
+ var(--_default-active-bg-color));
470
437
  }
471
438
  }
472
439
  }
@@ -888,7 +855,7 @@
888
855
  --_card-border-width: 1px;
889
856
  }
890
857
 
891
- & > :where(hgroup, .ui-content) {
858
+ &> :where(hgroup, .ui-content) {
892
859
  padding-inline: var(--size-3);
893
860
 
894
861
  &:last-child {
@@ -897,11 +864,12 @@
897
864
  }
898
865
 
899
866
  /* Header */
900
- & > hgroup {
867
+ &>hgroup {
901
868
  padding-block: var(--size-3) 0;
902
869
 
903
870
  /* Top paragraph */
904
- & > p:first-of-type:first-child {
871
+ &>p:first-of-type:first-child {
872
+ font-size: var(--font-size-0);
905
873
  line-height: 1.3;
906
874
  }
907
875
 
@@ -910,18 +878,18 @@
910
878
  }
911
879
 
912
880
  /* Bottom paragraph */
913
- & > p:last-of-type:last-child:not(:first-child) {
881
+ &>p:last-of-type:last-child:not(:first-child) {
914
882
  font-size: var(--font-size-1);
915
883
  }
916
884
  }
917
885
 
918
886
  /* Content */
919
- & > .ui-content:where(:only-child, :first-child) {
887
+ &>.ui-content:where(:only-child, :first-child) {
920
888
  padding-block: var(--size-3) var(--size-4);
921
889
  }
922
890
 
923
891
  /* Actions */
924
- & > .ui-actions {
892
+ &>.ui-actions {
925
893
  display: flex;
926
894
  gap: var(--size-2);
927
895
  margin-block: var(--size-2) 0;
@@ -1867,9 +1835,6 @@
1867
1835
  --_motion: var(--motion, 1);
1868
1836
  display: grid;
1869
1837
  gap: var(--size-1) 0;
1870
- /* Two-column base so the optional .value cell can sit next to the
1871
- label on row 1. Children that span the full width keep using
1872
- `grid-column: 1/-1`, so this is backwards compatible. */
1873
1838
  grid-template-columns: 1fr auto;
1874
1839
  position: relative;
1875
1840
 
@@ -1881,8 +1846,6 @@
1881
1846
  grid-row: 1;
1882
1847
  }
1883
1848
 
1884
- /* Live current-value readout. Pairs with the <output> element
1885
- rendered by the Range component (or hand-written .value markup). */
1886
1849
  :where(.ui-value) {
1887
1850
  color: var(--text-muted);
1888
1851
  font-size: var(--font-size-0);
@@ -1921,7 +1884,7 @@
1921
1884
  margin-top: calc(var(--size-1) * -1);
1922
1885
  padding-inline: calc(3ex / 2);
1923
1886
 
1924
- & > option {
1887
+ &>option {
1925
1888
  display: flex;
1926
1889
  inline-size: 0;
1927
1890
  justify-content: center;
@@ -1985,9 +1948,6 @@
1985
1948
  min-inline-size: 25ch;
1986
1949
  }
1987
1950
 
1988
- /* In spread mode, the value sits below the slider in col 2
1989
- (where end-text would normally land). When end-text is also
1990
- present it shifts down a row to avoid collision. */
1991
1951
  :where(.ui-value) {
1992
1952
  grid-column: 2;
1993
1953
  grid-row: 2;
@@ -2004,8 +1964,6 @@
2004
1964
  grid-row: 2;
2005
1965
  }
2006
1966
 
2007
- /* When both datalist and end-text exist, push end-text below the datalist
2008
- so they don't collide on the same grid cell. */
2009
1967
  &:has(datalist) :where(.ui-end-text) {
2010
1968
  grid-row: 3;
2011
1969
  }
@@ -2029,9 +1987,6 @@
2029
1987
  grid-row: 1;
2030
1988
  }
2031
1989
 
2032
- /* Share row 1 with the label: the label's text stays left-aligned
2033
- in its full-width cell, while the value shrinks to fit and
2034
- right-aligns. Visually reads as a "[name ........ value]" row. */
2035
1990
  :where(.ui-value) {
2036
1991
  grid-row: 1;
2037
1992
  justify-self: end;
@@ -2102,11 +2057,9 @@
2102
2057
  /* Track */
2103
2058
  &::-webkit-slider-runnable-track {
2104
2059
  appearance: none;
2105
- background: linear-gradient(
2106
- to right,
2107
- var(--_track-fill-color) var(--_track-fill, 0%),
2108
- var(--_track-color) 0%
2109
- );
2060
+ background: linear-gradient(to right,
2061
+ var(--_track-fill-color) var(--_track-fill, 0%),
2062
+ var(--_track-color) 0%);
2110
2063
  block-size: var(--_track-height);
2111
2064
  border-radius: var(--_track-radius);
2112
2065
  }
@@ -2132,8 +2085,7 @@
2132
2085
  block-size: var(--_thumb-size);
2133
2086
  border: 3px solid var(--surface-default);
2134
2087
  border-radius: 50%;
2135
- box-shadow: 0 0 0 var(--_thumb-highlight-size)
2136
- var(--_thumb-highlight-color);
2088
+ box-shadow: 0 0 0 var(--_thumb-highlight-size) var(--_thumb-highlight-color);
2137
2089
  cursor: ew-resize;
2138
2090
  inline-size: var(--_thumb-size);
2139
2091
  margin-block-start: var(--_thumb-offset);
@@ -2151,8 +2103,7 @@
2151
2103
  block-size: var(--_thumb-size);
2152
2104
  border: 3px solid var(--surface-default);
2153
2105
  border-radius: 50%;
2154
- box-shadow: 0 0 0 var(--_thumb-highlight-size)
2155
- var(--_thumb-highlight-color);
2106
+ box-shadow: 0 0 0 var(--_thumb-highlight-size) var(--_thumb-highlight-color);
2156
2107
  cursor: ew-resize;
2157
2108
  inline-size: var(--_thumb-size);
2158
2109
  margin-block-start: var(--_thumb-offset);
@@ -2177,10 +2128,8 @@
2177
2128
 
2178
2129
  &:active {
2179
2130
  --_thumb-highlight-size: var(--size-2);
2180
- --_track-color: light-dark(
2181
- oklch(from var(--field-border-color) calc(l * 0.9) c h),
2182
- oklch(from var(--field-border-color) calc(l * 1.1) c h)
2183
- );
2131
+ --_track-color: light-dark(oklch(from var(--field-border-color) calc(l * 0.9) c h),
2132
+ oklch(from var(--field-border-color) calc(l * 1.1) c h));
2184
2133
  }
2185
2134
  }
2186
2135
 
@@ -2577,7 +2526,6 @@
2577
2526
  }
2578
2527
  }
2579
2528
 
2580
- /* Severity icons via CSS data URIs — keeps icon assets out of JS strings. */
2581
2529
  &[data-severity="success"] .ui-icon {
2582
2530
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%2322c55e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M22 11.08V12a10 10 0 1 1-5.93-9.14'/><path d='m9 11 3 3L22 4'/></svg>");
2583
2531
  }
@@ -2607,8 +2555,6 @@
2607
2555
  }
2608
2556
  }
2609
2557
 
2610
- /* Identity keyframe — only purpose is to delay the exit animation by the
2611
- author-defined duration. */
2612
2558
  @keyframes toast-hold {
2613
2559
  from {
2614
2560
  opacity: 1;
@@ -2689,10 +2635,8 @@
2689
2635
 
2690
2636
  /** Overline */
2691
2637
  :where(.ui-overline) {
2692
- color: light-dark(
2693
- oklch(from var(--text-muted) calc(l * 1.25) c h),
2694
- oklch(from var(--text-muted) calc(l * 0.75) c h)
2695
- );
2638
+ color: light-dark(oklch(from var(--text-muted) calc(l * 1.25) c h),
2639
+ oklch(from var(--text-muted) calc(l * 0.75) c h));
2696
2640
  font-size: var(--font-size-0);
2697
2641
  font-weight: 500;
2698
2642
  letter-spacing: 0.06em;
@@ -2700,20 +2644,18 @@
2700
2644
  }
2701
2645
 
2702
2646
  :where(.ui-hgroup) {
2703
- & > p {
2647
+ &>p {
2704
2648
  margin: 0;
2705
2649
  }
2706
2650
 
2707
- & > :where(h1, h2, h3, h4, h5, h6) {
2651
+ &> :where(h1, h2, h3, h4, h5, h6) {
2708
2652
  margin-block: 0 0.4em;
2709
2653
  }
2710
2654
 
2711
2655
  /* First p element (overline) */
2712
- & > p:first-of-type:first-child {
2713
- color: light-dark(
2714
- oklch(from var(--text-muted) calc(l * 1.25) c h),
2715
- oklch(from var(--text-muted) calc(l * 0.75) c h)
2716
- );
2656
+ &>p:first-of-type:first-child {
2657
+ color: light-dark(oklch(from var(--text-muted) calc(l * 1.25) c h),
2658
+ oklch(from var(--text-muted) calc(l * 0.75) c h));
2717
2659
  font-size: var(--font-size-0);
2718
2660
  font-weight: 500;
2719
2661
  letter-spacing: 0.06em;
@@ -2721,13 +2663,13 @@
2721
2663
  }
2722
2664
 
2723
2665
  /* Body paragraphs after the heading */
2724
- & > p:not(:first-of-type:first-child) {
2666
+ &>p:not(:first-of-type:first-child) {
2725
2667
  color: oklch(from currentColor l c h / 75%);
2726
2668
  font-size: var(--font-size-3);
2727
2669
  line-height: 1.6;
2728
2670
  }
2729
2671
 
2730
- & > p + p {
2672
+ &>p+p {
2731
2673
  margin-block-start: 0.75em;
2732
2674
  }
2733
2675
  }
@@ -2739,7 +2681,7 @@
2739
2681
  line-height: 1.6;
2740
2682
  }
2741
2683
 
2742
- /* Inline text elements — class utilities (work anywhere) */
2684
+ /* Inline text elements - class utilities */
2743
2685
  :where(.ui-u, .ui-abbr, .ui-dfn) {
2744
2686
  text-decoration: underline;
2745
2687
  text-underline-offset: 1px;
@@ -2864,7 +2806,7 @@
2864
2806
  scrollbar-width: thin;
2865
2807
  white-space: pre;
2866
2808
 
2867
- > code {
2809
+ >code {
2868
2810
  background: none;
2869
2811
  border-radius: 0;
2870
2812
  color: inherit;
@@ -2891,6 +2833,7 @@
2891
2833
  text-underline-offset: 2px;
2892
2834
 
2893
2835
  &[href] {
2836
+
2894
2837
  &:hover,
2895
2838
  &:focus-visible {
2896
2839
  color: var(--primary-light);
@@ -2940,7 +2883,7 @@
2940
2883
  overflow-x: auto;
2941
2884
  scrollbar-width: thin;
2942
2885
 
2943
- > code {
2886
+ >code {
2944
2887
  background: none;
2945
2888
  border-radius: 0;
2946
2889
  color: inherit;
@@ -2964,7 +2907,7 @@
2964
2907
  font-weight: 700;
2965
2908
  text-wrap: pretty;
2966
2909
 
2967
- & + *:not(&) {
2910
+ &+*:not(&) {
2968
2911
  margin-block-start: 0;
2969
2912
  }
2970
2913
  }
@@ -3011,10 +2954,8 @@
3011
2954
 
3012
2955
  /** Overline */
3013
2956
  :is(.ui-overline, hgroup p:first-of-type:first-child) {
3014
- color: light-dark(
3015
- oklch(from var(--text-muted) calc(l * 1.25) c h),
3016
- oklch(from var(--text-muted) calc(l * 0.75) c h)
3017
- );
2957
+ color: light-dark(oklch(from var(--text-muted) calc(l * 1.25) c h),
2958
+ oklch(from var(--text-muted) calc(l * 0.75) c h));
3018
2959
  font-size: var(--font-size-0);
3019
2960
  font-weight: 500;
3020
2961
  letter-spacing: 0.06em;
@@ -3022,26 +2963,26 @@
3022
2963
  }
3023
2964
 
3024
2965
  hgroup {
3025
- & > p {
2966
+ &>p {
3026
2967
  margin: 0;
3027
2968
  }
3028
2969
 
3029
- & > :where(h1, h2, h3, h4, h5, h6) {
2970
+ &> :where(h1, h2, h3, h4, h5, h6) {
3030
2971
  margin-block: 0 0.4em;
3031
2972
  }
3032
2973
 
3033
- & + * {
2974
+ &+* {
3034
2975
  margin-block-start: 3em;
3035
2976
  }
3036
2977
 
3037
2978
  /* Body paragraphs after the heading */
3038
- & > p:not(:first-of-type:first-child) {
2979
+ &>p:not(:first-of-type:first-child) {
3039
2980
  color: oklch(from currentColor l c h / 75%);
3040
2981
  font-size: var(--font-size-3);
3041
2982
  line-height: 1.6;
3042
2983
  }
3043
2984
 
3044
- & > p + p {
2985
+ &>p+p {
3045
2986
  margin-block-start: 0.75em;
3046
2987
  }
3047
2988
  }
@@ -3103,7 +3044,7 @@
3103
3044
  margin-block: var(--size-7);
3104
3045
  place-items: center;
3105
3046
 
3106
- & > * {
3047
+ &>* {
3107
3048
  margin-block: 0;
3108
3049
  }
3109
3050
 
@@ -3114,18 +3055,18 @@
3114
3055
  }
3115
3056
 
3116
3057
  /* Remove top margin from first child */
3117
- & > :first-child {
3058
+ &> :first-child {
3118
3059
  margin-block-start: 0;
3119
3060
  }
3120
3061
 
3121
3062
  /* Remove bottom margin from last child */
3122
- & > :last-child {
3063
+ &> :last-child {
3123
3064
  margin-block-end: 0;
3124
3065
  }
3125
3066
 
3126
3067
  /* Horizontal rules */
3127
3068
  hr {
3128
- & + * {
3069
+ &+* {
3129
3070
  margin-block-start: 0;
3130
3071
  }
3131
3072
  }
@@ -3240,21 +3181,21 @@
3240
3181
 
3241
3182
  /* Floating wrapper: traditional inset-based positioning so this works
3242
3183
  in browsers without position-area support (Firefox, older Safari). */
3243
- & > .ui-anchor-floating:not([popover]) {
3184
+ &>.ui-anchor-floating:not([popover]) {
3244
3185
  inset: var(--_badge-inset);
3245
3186
  position-anchor: auto;
3246
3187
  position-area: none;
3247
3188
  }
3248
3189
 
3249
3190
  /* Indicator */
3250
- & > .ui-anchor-floating > .ui-badge-indicator {
3191
+ &>.ui-anchor-floating>.ui-badge-indicator {
3251
3192
  background-color: var(--_bg-color);
3252
3193
  block-size: var(--_size);
3253
3194
  border: 2px solid var(--_border-color);
3254
3195
  border-radius: var(--radius-round);
3255
3196
  color: var(--_text-color);
3256
3197
  display: grid;
3257
- font-size: 12px;
3198
+ font-size: var(--font-size-0);
3258
3199
  font-weight: 500;
3259
3200
  inline-size: max-content;
3260
3201
  line-height: normal;
@@ -3316,7 +3257,7 @@
3316
3257
  --_anchor-ty: var(--_dot-size);
3317
3258
  }
3318
3259
 
3319
- &.ui-dot > .ui-anchor-floating > .ui-badge-indicator {
3260
+ &.ui-dot>.ui-anchor-floating>.ui-badge-indicator {
3320
3261
  block-size: var(--_dot-size);
3321
3262
  inline-size: var(--_dot-size);
3322
3263
  min-inline-size: var(--_dot-size);
@@ -3324,7 +3265,7 @@
3324
3265
  }
3325
3266
 
3326
3267
  /* Visibility */
3327
- &.ui-invisible > .ui-anchor-floating > .ui-badge-indicator {
3268
+ &.ui-invisible>.ui-anchor-floating>.ui-badge-indicator {
3328
3269
  opacity: 0;
3329
3270
  pointer-events: none;
3330
3271
  }
@@ -3344,10 +3285,8 @@
3344
3285
  border-radius: 0;
3345
3286
 
3346
3287
  /* button.css > --_accent-tonal */
3347
- --_divider-color: light-dark(
3348
- oklch(from var(--_accent-tonal) calc(l - 0.1) c h),
3349
- oklch(from var(--_accent-tonal) calc(l + 0.1) c h)
3350
- );
3288
+ --_divider-color: light-dark(oklch(from var(--_accent-tonal) calc(l - 0.1) c h),
3289
+ oklch(from var(--_accent-tonal) calc(l + 0.1) c h));
3351
3290
 
3352
3291
  &.ui-outlined {
3353
3292
  --_divider-color: var(--_border-color);
@@ -3361,9 +3300,7 @@
3361
3300
  outline-offset: -4px;
3362
3301
  }
3363
3302
 
3364
- /* Color inheritance from Button Group — shared interaction model.
3365
- The .critical scope class in theme.css redirects --palette-source so
3366
- --color-6 below becomes a tint of the active color. */
3303
+ /* Color inherited from Button Group. */
3367
3304
  :where(.ui-button-group.ui-critical, .ui-button-group.ui-primary) & {
3368
3305
  --_color-contrast: var(--gray-1);
3369
3306
  --_color-tonal: var(--color-6);
@@ -3371,12 +3308,8 @@
3371
3308
  --_default-hover-bg-color: oklch(from var(--_accent) l c h / 15%);
3372
3309
  --_default-active-bg-color: oklch(from var(--_accent) l c h / 25%);
3373
3310
  --_filled-hover-bg-color: oklch(from var(--_accent) calc(l - 0.1) c h);
3374
- --_filled-active-bg-color: oklch(
3375
- from var(--_accent) calc(l - 0.15) c h
3376
- );
3377
- --_outlined-active-bg-color: oklch(
3378
- from var(--_accent) calc(l - 0.1) c h
3379
- );
3311
+ --_filled-active-bg-color: oklch(from var(--_accent) calc(l - 0.15) c h);
3312
+ --_outlined-active-bg-color: oklch(from var(--_accent) calc(l - 0.1) c h);
3380
3313
  }
3381
3314
 
3382
3315
  :where(.ui-button-group.ui-critical) & {
@@ -3440,10 +3373,8 @@
3440
3373
  --_divider-color: currentColor;
3441
3374
 
3442
3375
  :where(.ui-button-group.ui-critical, .ui-button-group.ui-primary) & {
3443
- --_divider-color: light-dark(
3444
- oklch(from var(--_accent) calc(l - 0.1) c h),
3445
- oklch(from var(--_accent) calc(l + 0.1) c h)
3446
- );
3376
+ --_divider-color: light-dark(oklch(from var(--_accent) calc(l - 0.1) c h),
3377
+ oklch(from var(--_accent) calc(l + 0.1) c h));
3447
3378
  }
3448
3379
 
3449
3380
  &:where(:not([disabled])) {
@@ -3471,17 +3402,15 @@
3471
3402
  }
3472
3403
 
3473
3404
  /* Siblings */
3474
- & + & {
3405
+ &+& {
3475
3406
  border-inline-start-color: var(--_divider-color);
3476
3407
  border-inline-width: 1px;
3477
3408
  margin-inline-start: -1px;
3478
3409
 
3479
3410
  &[disabled] {
3480
- border-inline-start-color: color-mix(
3481
- in oklch,
3482
- var(--_divider-color) 40%,
3483
- transparent
3484
- );
3411
+ border-inline-start-color: color-mix(in oklch,
3412
+ var(--_divider-color) 40%,
3413
+ transparent);
3485
3414
  }
3486
3415
  }
3487
3416
  }
@@ -3508,16 +3437,14 @@
3508
3437
  border-end-end-radius: var(--_border-radius);
3509
3438
  }
3510
3439
 
3511
- & + & {
3440
+ &+& {
3512
3441
  border-block-start: 1px solid var(--_divider-color);
3513
3442
  margin-block-start: -1px;
3514
3443
 
3515
3444
  &[disabled] {
3516
- border-block-start-color: color-mix(
3517
- in oklch,
3518
- var(--_divider-color) 40%,
3519
- transparent
3520
- );
3445
+ border-block-start-color: color-mix(in oklch,
3446
+ var(--_divider-color) 40%,
3447
+ transparent);
3521
3448
  }
3522
3449
  }
3523
3450
  }
@@ -3595,7 +3522,7 @@
3595
3522
  }
3596
3523
 
3597
3524
  /* Layout */
3598
- & > summary {
3525
+ &>summary {
3599
3526
  background-color: inherit;
3600
3527
  cursor: pointer;
3601
3528
  font-weight: 700;
@@ -3620,17 +3547,17 @@
3620
3547
  }
3621
3548
  }
3622
3549
 
3623
- &[open] > summary svg {
3550
+ &[open]>summary svg {
3624
3551
  rotate: 180deg;
3625
3552
  }
3626
3553
 
3627
- & > .ui-content {
3554
+ &>.ui-content {
3628
3555
  margin-block-start: 0;
3629
3556
  padding-block: var(--_content-padding-block);
3630
3557
  padding-inline: var(--_content-padding-inline);
3631
3558
  }
3632
3559
 
3633
- & > .ui-actions {
3560
+ &>.ui-actions {
3634
3561
  display: flex;
3635
3562
  gap: var(--_actions-gap);
3636
3563
  justify-content: end;
@@ -3655,12 +3582,12 @@
3655
3582
  }
3656
3583
  }
3657
3584
 
3658
- & > .ui-content {
3585
+ &>.ui-content {
3659
3586
  margin-block: 0;
3660
3587
  padding: 0;
3661
3588
  }
3662
3589
 
3663
- & > details.ui-accordion {
3590
+ &>details.ui-accordion {
3664
3591
  --_border-color: transparent;
3665
3592
  --_border-width: 0;
3666
3593
  --_margin-inline: 0;
@@ -3669,7 +3596,7 @@
3669
3596
  --_summary-padding-inline: var(--_item-summary-padding-inline);
3670
3597
 
3671
3598
  /* Border between accordion items */
3672
- & + & {
3599
+ &+& {
3673
3600
  border-block-start: 1px solid var(--_gutter-color);
3674
3601
  border-radius: 0;
3675
3602
  }
@@ -4267,9 +4194,7 @@ Lists meant to be used stand-alone or as part of Select elements
4267
4194
  }
4268
4195
  }
4269
4196
 
4270
- /* Scroll-lock is provided by the shared `.ui-scroll-lock` utility in core/utils.css.
4271
- This carve-out re-enables page scrolling when a transparent-backdrop drawer is
4272
- open on wide viewports (where the drawer doesn't visually cover the page). */
4197
+ /* Scroll-lock is provided by the shared `.ui-scroll-lock` utility in core/utils.css. */
4273
4198
  html:has(dialog.ui-drawer.ui-scroll-lock[open].ui-backdrop-transparent) {
4274
4199
  overflow: unset;
4275
4200
  overscroll-behavior: auto;
@@ -4282,6 +4207,7 @@ Lists meant to be used stand-alone or as part of Select elements
4282
4207
  }
4283
4208
 
4284
4209
  @layer components.extended {
4210
+
4285
4211
  /* Form */
4286
4212
  :where(.ui-form) {
4287
4213
  display: grid;
@@ -4395,9 +4321,7 @@ Lists meant to be used stand-alone or as part of Select elements
4395
4321
  gap: var(--size-4);
4396
4322
 
4397
4323
  /* If it only has checkboxes, radios, or switches */
4398
- &:has(> :where(.ui-checkbox, .ui-radio, .ui-switch)):not(
4399
- :has(> :not(.ui-checkbox, .ui-radio, .ui-switch))
4400
- ) {
4324
+ &:has(> :where(.ui-checkbox, .ui-radio, .ui-switch)):not( :has(> :not(.ui-checkbox, .ui-radio, .ui-switch))) {
4401
4325
  gap: var(--size-2);
4402
4326
  }
4403
4327
 
@@ -4407,13 +4331,13 @@ Lists meant to be used stand-alone or as part of Select elements
4407
4331
  flex-direction: row;
4408
4332
  gap: var(--size-2);
4409
4333
 
4410
- /* If it's not preceeded by an hr */
4334
+ /* If it's not preceded by an hr */
4411
4335
  &:not(hr + &) {
4412
4336
  margin-block-start: var(--size-4);
4413
4337
  }
4414
4338
  }
4415
4339
 
4416
- & + & {
4340
+ &+& {
4417
4341
  margin-block-start: var(--size-5);
4418
4342
  }
4419
4343
 
@@ -4919,11 +4843,10 @@ Lists meant to be used stand-alone or as part of Select elements
4919
4843
  transform: scale(0.9);
4920
4844
  }
4921
4845
 
4922
- transition:
4923
- display calc(0.2s * var(--_motion)) allow-discrete,
4924
- opacity calc(0.2s * var(--_motion)) var(--ease-3),
4925
- overlay calc(0.2s * var(--_motion)) allow-discrete,
4926
- scale calc(0.2s * var(--_motion)) var(--ease-3);
4846
+ transition: display calc(0.2s * var(--_motion)) allow-discrete,
4847
+ opacity calc(0.2s * var(--_motion)) var(--ease-3),
4848
+ overlay calc(0.2s * var(--_motion)) allow-discrete,
4849
+ scale calc(0.2s * var(--_motion)) var(--ease-3);
4927
4850
  }
4928
4851
 
4929
4852
  /* Animation off-stage styles */
@@ -4956,10 +4879,8 @@ Lists meant to be used stand-alone or as part of Select elements
4956
4879
  [role="group"] {
4957
4880
  label {
4958
4881
  background-color: light-dark(var(--gray-3), var(--gray-13));
4959
- color: light-dark(
4960
- oklch(from var(--text-primary) calc(l * 0.75) c h),
4961
- oklch(from var(--text-primary) calc(l * 1.25) c h)
4962
- );
4882
+ color: light-dark(oklch(from var(--text-primary) calc(l * 0.75) c h),
4883
+ oklch(from var(--text-primary) calc(l * 1.25) c h));
4963
4884
  font-weight: 500;
4964
4885
  overflow: hidden;
4965
4886
  padding-inline: var(--size-2);
@@ -4982,6 +4903,7 @@ Lists meant to be used stand-alone or as part of Select elements
4982
4903
 
4983
4904
  /* Option */
4984
4905
  option {
4906
+
4985
4907
  /* Checkmark */
4986
4908
  /* TODO - checkmark should be the final version of the checkmark API. Follow the development of this and remove redundant psuedo stuff. */
4987
4909
  &::check {
@@ -5004,6 +4926,7 @@ Lists meant to be used stand-alone or as part of Select elements
5004
4926
  }
5005
4927
 
5006
4928
  :where(.ui-select:has(select)) {
4929
+
5007
4930
  /* Size */
5008
4931
  &.ui-small {
5009
4932
  button {
@@ -5153,7 +5076,7 @@ Lists meant to be used stand-alone or as part of Select elements
5153
5076
  --_tooltip-color: light-dark(var(--gray-1), var(--gray-15));
5154
5077
  --_tooltip-offset: var(--size-2);
5155
5078
 
5156
- & > .ui-anchor-floating {
5079
+ &>.ui-anchor-floating {
5157
5080
  background-color: var(--_tooltip-bg);
5158
5081
  border-radius: var(--radius-2);
5159
5082
  color: var(--_tooltip-color);
@@ -5175,18 +5098,16 @@ Lists meant to be used stand-alone or as part of Select elements
5175
5098
  text-wrap: pretty;
5176
5099
  }
5177
5100
 
5178
- /* Optional arrow pointing from the tooltip toward the trigger.
5179
- Anchored to the same --anchor so it flips together with the
5180
- tooltip when position-try-fallbacks kicks in. */
5101
+ /* Arrow */
5181
5102
  &.ui-with-arrow {
5182
5103
  --_arrow-size: var(--size-2);
5183
5104
 
5184
- & > .ui-anchor-floating {
5185
- /* Reserve space so the arrow doesn't overlap the trigger. */
5105
+ &>.ui-anchor-floating {
5106
+ /* Offset so the arrow doesn't overlap the trigger. */
5186
5107
  --_tooltip-offset: calc(var(--size-2) + var(--_arrow-size) / 2);
5187
5108
  }
5188
5109
 
5189
- & > .ui-anchor-floating::before {
5110
+ &>.ui-anchor-floating::before {
5190
5111
  background-color: var(--_tooltip-bg);
5191
5112
  block-size: var(--_arrow-size);
5192
5113
  content: "";
@@ -5200,7 +5121,7 @@ Lists meant to be used stand-alone or as part of Select elements
5200
5121
  }
5201
5122
 
5202
5123
  /* Fade */
5203
- & > .ui-anchor-floating[popover] {
5124
+ &>.ui-anchor-floating[popover] {
5204
5125
  opacity: 0;
5205
5126
  transition:
5206
5127
  display 0.15s allow-discrete,