@oscarpalmer/oui 0.36.0 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/dist/css/a11y.css +1 -0
  2. package/dist/css/badge.css +19 -15
  3. package/dist/css/button.css +40 -31
  4. package/dist/css/color-picker.css +377 -0
  5. package/dist/css/color.css +20 -21
  6. package/dist/css/combobox.css +140 -34
  7. package/dist/css/content.css +30 -10
  8. package/dist/css/floatable.css +12 -10
  9. package/dist/css/form.css +400 -129
  10. package/dist/css/listbox.css +43 -17
  11. package/dist/css/message.css +15 -10
  12. package/dist/css/mixins/badge.mixins.css +2 -0
  13. package/dist/css/mixins/button.mixins.css +2 -0
  14. package/dist/css/mixins/message.mixins.css +1 -0
  15. package/dist/css/mixins/misc.mixins.css +2 -0
  16. package/dist/css/mixins/shadow.mixins.css +1 -0
  17. package/dist/css/reset.css +31 -90
  18. package/dist/css/splitter.css +3 -3
  19. package/dist/css/tabs.css +103 -0
  20. package/dist/js/color-picker.d.mts +213 -0
  21. package/dist/js/color-picker.mjs +924 -0
  22. package/dist/js/combobox/dom.combobox.mjs +8 -4
  23. package/dist/js/combobox/event.combobox.mjs +1 -1
  24. package/dist/js/combobox/index.d.mts +1 -1
  25. package/dist/js/combobox/index.mjs +56 -2
  26. package/dist/js/combobox/misc.combobox.d.mts +1 -1
  27. package/dist/js/combobox/misc.combobox.mjs +1 -1
  28. package/dist/js/combobox/state.combobox.d.mts +1 -1
  29. package/dist/js/combobox/state.combobox.mjs +1 -1
  30. package/dist/js/dialog.mjs +2 -2
  31. package/dist/js/floatable/floatable.embedded.mjs +13 -10
  32. package/dist/js/focus-trap/focus-trap.embedded.mjs +9 -13
  33. package/dist/js/{index-EfkUSals.d.mts → index-DJdFlTLm.d.mts} +39 -1
  34. package/dist/js/index.d.mts +4 -2
  35. package/dist/js/index.mjs +5 -3
  36. package/dist/js/internal/draggable.mjs +20 -26
  37. package/dist/js/internal/listbox/listbox.data.mjs +1 -1
  38. package/dist/js/internal/listbox/listbox.dom.mjs +1 -1
  39. package/dist/js/internal/listbox/listbox.event.mjs +1 -1
  40. package/dist/js/internal/listbox/listbox.form.mjs +17 -16
  41. package/dist/js/internal/listbox/listbox.misc.mjs +1 -1
  42. package/dist/js/internal/listbox/listbox.state.mjs +4 -4
  43. package/dist/js/internal/navigable.d.mts +11 -5
  44. package/dist/js/internal/navigable.mjs +46 -19
  45. package/dist/js/listbox/event.listbox.mjs +1 -1
  46. package/dist/js/listbox/index.d.mts +38 -0
  47. package/dist/js/listbox/index.mjs +56 -2
  48. package/dist/js/listbox/misc.listbox.mjs +1 -1
  49. package/dist/js/listbox/state.listbox.mjs +1 -1
  50. package/dist/js/{listbox.data-BWd0PCy7.mjs → listbox.data-C7CRa5Ya.mjs} +5 -4
  51. package/dist/js/menu.mjs +1 -1
  52. package/dist/js/{misc.listbox-BI-XsTOf.mjs → misc.listbox-Cyz2CRDy.mjs} +2 -3
  53. package/dist/js/movable/movable.embedded.mjs +5 -8
  54. package/dist/js/popover.mjs +2 -2
  55. package/dist/js/resizable/resizable.embedded.mjs +21 -31
  56. package/dist/js/sortable/sortable.embedded.mjs +4 -4
  57. package/dist/js/splitter.mjs +20 -17
  58. package/dist/js/{state.combobox-4xq0FPCF.mjs → state.combobox-Qm3FWzYW.mjs} +3 -3
  59. package/dist/js/tabs.d.mts +25 -0
  60. package/dist/js/tabs.mjs +237 -0
  61. package/dist/js/tooltip.mjs +16 -15
  62. package/package.json +7 -5
  63. package/src/css/a11y.scss +2 -2
  64. package/src/css/badge.scss +8 -20
  65. package/src/css/button.scss +8 -47
  66. package/src/css/color-picker.scss +344 -0
  67. package/src/css/color.scss +20 -22
  68. package/src/css/combobox.scss +29 -57
  69. package/src/css/content.scss +34 -6
  70. package/src/css/floatable.scss +22 -19
  71. package/src/css/form.scss +94 -80
  72. package/src/css/listbox.scss +6 -34
  73. package/src/css/message.scss +16 -30
  74. package/src/css/mixins/badge.mixins.scss +53 -0
  75. package/src/css/mixins/button.mixins.scss +112 -0
  76. package/src/css/mixins/input.mixins.scss +114 -0
  77. package/src/css/mixins/message.mixins.scss +41 -0
  78. package/src/css/mixins/misc.mixins.scss +48 -0
  79. package/src/css/mixins/shadow.mixins.scss +57 -0
  80. package/src/css/reset.scss +39 -88
  81. package/src/css/splitter.scss +3 -3
  82. package/src/css/tabs.scss +74 -0
  83. package/src/js/color-picker.ts +1653 -0
  84. package/src/js/combobox/dom.combobox.ts +4 -0
  85. package/src/js/combobox/index.ts +63 -1
  86. package/src/js/dialog.ts +1 -1
  87. package/src/js/floatable/floatable.embedded.ts +18 -14
  88. package/src/js/focus-trap/focus-trap.embedded.ts +11 -19
  89. package/src/js/index.ts +2 -0
  90. package/src/js/internal/draggable.ts +29 -33
  91. package/src/js/internal/listbox/listbox.dom.ts +2 -1
  92. package/src/js/internal/listbox/listbox.form.ts +32 -22
  93. package/src/js/internal/listbox/listbox.state.ts +3 -3
  94. package/src/js/internal/navigable.ts +82 -23
  95. package/src/js/listbox/index.ts +62 -0
  96. package/src/js/listbox/state.listbox.ts +0 -2
  97. package/src/js/movable/movable.embedded.ts +11 -13
  98. package/src/js/popover.ts +1 -1
  99. package/src/js/resizable/resizable.embedded.ts +25 -39
  100. package/src/js/splitter.ts +21 -18
  101. package/src/js/tabs.ts +441 -0
  102. package/src/js/tooltip.ts +20 -17
  103. package/src/css/mixins.scss +0 -194
  104. /package/dist/css/{mixins.css → mixins/input.mixins.css} +0 -0
package/dist/css/form.css CHANGED
@@ -1,6 +1,9 @@
1
1
  @charset "UTF-8";
2
2
  /*! https://github.com/oscarpalmer/oui */
3
3
 
4
+
5
+
6
+
4
7
  :where(.oui-fieldset) {
5
8
  padding: 1em;
6
9
  border: 1px solid var(--oui-gray-3);
@@ -11,19 +14,69 @@
11
14
  --oui-background-value: var(--oui-absolute);
12
15
  }
13
16
  :where(.oui-input:not([type=range i])) {
14
- --oui-background-percentage: 0%;
15
- --oui-foreground-percentage: 0%;
16
17
  --oui-outline-percentage: 100%;
17
18
  --oui-outline-value: var(--oui-blue-6);
18
19
  outline: 4px solid color-mix(in oklab, var(--oui-outline-value), transparent var(--oui-outline-percentage));
19
20
  outline-offset: 0;
20
- transition: 0.125s ease-in-out;
21
+ --oui-background-percentage: 0%;
22
+ --oui-foreground-percentage: 0%;
21
23
  align-content: center;
22
24
  background-color: color-mix(in oklab, var(--oui-background-value), transparent var(--oui-background-percentage));
23
25
  border: 1px solid var(--oui-border-value, var(--oui-gray-3));
24
26
  box-shadow: inset 0 2px 4px -1px var(--oui-gray-3);
25
27
  color: color-mix(in oklab, var(--oui-foreground-value, inherit), transparent var(--oui-foreground-percentage));
26
28
  -webkit-text-fill-color: color-mix(in oklab, var(--oui-foreground-value, inherit), transparent var(--oui-foreground-percentage));
29
+ transition: 0.125s ease-in-out;
30
+ transition-property: background, outline, border, box-shadow, color;
31
+ }
32
+ :where(.oui-input:not([type=range i])).oui-validate:not([disabled],
33
+ [readonly],
34
+ [aria-disabled=true i],
35
+ [aria-readonly=true i],
36
+ :focus-visible,
37
+ :focus-within):is(:user-invalid:not([aria-invalid=false i]), [aria-invalid=true i]) {
38
+ --oui-border-value: var(--oui-red-5);
39
+ --oui-foreground-value: var(--oui-red-9);
40
+ --oui-outline-percentage: 82.5%;
41
+ --oui-outline-value: var(--oui-red-6);
42
+ }
43
+ :where(.oui-input:not([type=range i])).oui-validate:not([disabled],
44
+ [readonly],
45
+ [aria-disabled=true i],
46
+ [aria-readonly=true i],
47
+ :focus-visible,
48
+ :focus-within):is(:user-valid:not([aria-invalid=true i]), [aria-invalid=false i]) {
49
+ --oui-border-value: var(--oui-green-5);
50
+ --oui-foreground-value: var(--oui-green-9);
51
+ --oui-outline-percentage: 82.5%;
52
+ --oui-outline-value: var(--oui-green-6);
53
+ }
54
+ :where(.oui-input:not([type=range i])):not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible, :where(.oui-input:not([type=range i])):not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-within {
55
+ --oui-border-value: var(--oui-blue-5);
56
+ --oui-foreground-value: inherit;
57
+ --oui-outline-percentage: 75%;
58
+ --oui-outline-value: var(--oui-blue-6);
59
+ }
60
+ @media (hover: hover) {
61
+ :where(.oui-input:not([type=range i])):not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):hover {
62
+ --oui-border-value: var(--oui-blue-4);
63
+ --oui-foreground-percentage: 0%;
64
+ --oui-foreground-value: inherit;
65
+ --oui-outline-percentage: 90%;
66
+ --oui-outline-value: var(--oui-blue-6);
67
+ }
68
+ }
69
+ :where(.oui-input:not([type=range i])):is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]) {
70
+ --oui-foreground-percentage: 25%;
71
+ font-style: italic;
72
+ }
73
+ :where(.oui-input:not([type=range i])):is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible {
74
+ --oui-outline-percentage: 75%;
75
+ }
76
+ :where(.oui-input:not([type=range i])):is([disabled], [aria-disabled=true i]) {
77
+ --oui-background-percentage: 50%;
78
+ }
79
+ :where(.oui-input:not([type=range i])) {
27
80
  padding: 0.5em 0.75em;
28
81
  border-radius: 0.25em;
29
82
  }
@@ -48,36 +101,84 @@
48
101
  [type=week i])) {
49
102
  font-variant-numeric: tabular-nums;
50
103
  }
104
+ :where(.oui-input:is([type=date i], [type=datetime-local i], [type=month i], [type=week i]))::-webkit-calendar-picker-indicator {
105
+ --oui-outline-percentage: 100%;
106
+ --oui-outline-value: var(--oui-blue-6);
107
+ outline: 4px solid color-mix(in oklab, var(--oui-outline-value), transparent var(--oui-outline-percentage));
108
+ outline-offset: 2px;
109
+ border-radius: 1em;
110
+ -webkit-transition: outline 0.125s ease-in-out;
111
+ transition: outline 0.125s ease-in-out;
112
+ cursor: pointer;
113
+ }
114
+ :where(.oui-input:is([type=date i], [type=datetime-local i], [type=month i], [type=week i]))::-webkit-calendar-picker-indicator:focus-within {
115
+ --oui-outline-percentage: 62.5%;
116
+ }
117
+ @media (hover: hover) {
118
+ :where(.oui-input:is([type=date i], [type=datetime-local i], [type=month i], [type=week i]))::-webkit-calendar-picker-indicator:hover {
119
+ --oui-outline-percentage: 85%;
120
+ }
121
+ }
51
122
  :where(.oui-input:is([type=file i])) {
52
123
  padding-left: 0.5em;
53
124
  }
54
125
  :where(.oui-input:is([type=file i]))::file-selector-button {
55
126
  --oui-background-percentage: 25%;
127
+ --oui-background-value: var(--oui-gray-2);
56
128
  --oui-foreground-percentage: 0%;
129
+ --oui-foreground-value: var(--oui-gray-8);
57
130
  --oui-outline-percentage: 100%;
58
- --oui-shadow-inset: color-mix(in oklab, white, transparent 75%);
131
+ --oui-outline-value: var(--oui-gray-6);
132
+ --oui-shadow-inset: color-mix(in oklab, var(--oui-absolute), transparent 75%);
59
133
  --oui-shadow-percentage: 82.5%;
60
134
  --oui-shadow-value: color-mix(
61
135
  in oklab,
62
- var(--oui-outline-value, var(--oui-gray-6)),
136
+ var(--oui-outline-value),
63
137
  transparent var(--oui-shadow-percentage)
64
138
  );
65
- box-shadow: inset 0 1px 0 0 var(--oui-shadow-inset), 0 0 0 1px var(--oui-shadow-value), 0 1px 2px -0.5px var(--oui-shadow-value), 0 2px 4px -1px var(--oui-shadow-value);
139
+ box-shadow: inset 0 1px 0 0 var(--oui-shadow-inset), 0 0 0 1px var(--oui-shadow-value), 0 1px 2px -0.5px var(--oui-shadow-value), 0 2px 4px -1px var(--oui-shadow-value), 0 4px 8px -2px var(--oui-shadow-value);
66
140
  padding: 0.5em 0.75em;
67
141
  display: inline-flex;
68
142
  flex-flow: row wrap;
69
143
  gap: 0.75em;
70
144
  align-items: center;
71
145
  border-radius: 0.25em;
72
- background-color: color-mix(in oklab, var(--oui-background-value, var(--oui-gray-2)), transparent var(--oui-background-percentage));
73
- outline: 4px solid color-mix(in oklab, var(--oui-outline-value, var(--oui-gray-6)), transparent var(--oui-outline-percentage));
146
+ background-color: color-mix(in oklab, var(--oui-background-value), transparent var(--oui-background-percentage));
147
+ outline: 4px solid color-mix(in oklab, var(--oui-outline-value), transparent var(--oui-outline-percentage));
74
148
  border: none;
75
- color: color-mix(in oklab, var(--oui-foreground-value, var(--oui-gray-8)), transparent var(--oui-foreground-percentage));
149
+ color: color-mix(in oklab, var(--oui-foreground-value), transparent var(--oui-foreground-percentage));
76
150
  line-height: 1.25;
77
151
  transition: 0.125s ease-in-out;
152
+ transition-property: background, outline, box-shadow, color;
153
+ }
154
+ :where(.oui-input:is([type=file i]))::file-selector-button:focus-visible {
155
+ --oui-outline-percentage: 75%;
156
+ }
157
+ @media (hover: hover) {
158
+ :where(.oui-input:is([type=file i]))::file-selector-button:not([disabled], [aria-disabled=true i]):hover {
159
+ --oui-background-percentage: 50%;
160
+ --oui-foreground-percentage: 25%;
161
+ --oui-shadow-percentage: 90%;
162
+ }
163
+ }
164
+ :where(.oui-input:is([type=file i]))::file-selector-button:not([disabled], [aria-disabled=true i]):active {
165
+ box-shadow: 0 0 0 1px var(--oui-shadow-value), inset 0 1px 2px 0 var(--oui-shadow-value), inset 0 2px 4px 0 var(--oui-shadow-value);
166
+ scale: 0.95;
167
+ }
168
+ :where(.oui-input:is([type=file i]))::file-selector-button:not([disabled], [aria-disabled=true i]):active[aria-pressed=true i], :where(.oui-input:is([type=file i]))::file-selector-button:not([disabled], [aria-disabled=true i]):active[aria-selected=true i] {
169
+ scale: 1;
170
+ }
171
+ :where(.oui-input:is([type=file i]))::file-selector-button[disabled], :where(.oui-input:is([type=file i]))::file-selector-button[aria-disabled=true i] {
172
+ --oui-background-percentage: 80%;
173
+ --oui-foreground-percentage: 25%;
174
+ --oui-shadow-percentage: 92.5%;
175
+ font-style: italic;
176
+ }
177
+ :where(.oui-input:is([type=file i]))::file-selector-button {
78
178
  --oui-background-value: var(--oui-grey-2);
79
179
  --oui-outline-value: var(--oui-grey-6);
80
180
  margin: 0 0.75em 0 0;
181
+ outline: none;
81
182
  font-size: 0.75em;
82
183
  cursor: pointer;
83
184
  }
@@ -88,19 +189,69 @@
88
189
  outline: none;
89
190
  }
90
191
  :where(.oui-input:is([type=range i]))::-moz-range-track {
91
- --oui-background-percentage: 0%;
92
- --oui-foreground-percentage: 0%;
93
192
  --oui-outline-percentage: 100%;
94
193
  --oui-outline-value: var(--oui-blue-6);
95
194
  outline: 4px solid color-mix(in oklab, var(--oui-outline-value), transparent var(--oui-outline-percentage));
96
195
  outline-offset: 0;
97
- transition: 0.125s ease-in-out;
196
+ --oui-background-percentage: 0%;
197
+ --oui-foreground-percentage: 0%;
98
198
  align-content: center;
99
199
  background-color: color-mix(in oklab, var(--oui-background-value), transparent var(--oui-background-percentage));
100
200
  border: 1px solid var(--oui-border-value, var(--oui-gray-3));
101
201
  box-shadow: inset 0 2px 4px -1px var(--oui-gray-3);
102
202
  color: color-mix(in oklab, var(--oui-foreground-value, inherit), transparent var(--oui-foreground-percentage));
103
203
  -webkit-text-fill-color: color-mix(in oklab, var(--oui-foreground-value, inherit), transparent var(--oui-foreground-percentage));
204
+ transition: 0.125s ease-in-out;
205
+ transition-property: background, outline, border, box-shadow, color;
206
+ }
207
+ :where(.oui-input:is([type=range i]))::-moz-range-track.oui-validate:not([disabled],
208
+ [readonly],
209
+ [aria-disabled=true i],
210
+ [aria-readonly=true i],
211
+ :focus-visible,
212
+ :focus-within):is(:user-invalid:not([aria-invalid=false i]), [aria-invalid=true i]) {
213
+ --oui-border-value: var(--oui-red-5);
214
+ --oui-foreground-value: var(--oui-red-9);
215
+ --oui-outline-percentage: 82.5%;
216
+ --oui-outline-value: var(--oui-red-6);
217
+ }
218
+ :where(.oui-input:is([type=range i]))::-moz-range-track.oui-validate:not([disabled],
219
+ [readonly],
220
+ [aria-disabled=true i],
221
+ [aria-readonly=true i],
222
+ :focus-visible,
223
+ :focus-within):is(:user-valid:not([aria-invalid=true i]), [aria-invalid=false i]) {
224
+ --oui-border-value: var(--oui-green-5);
225
+ --oui-foreground-value: var(--oui-green-9);
226
+ --oui-outline-percentage: 82.5%;
227
+ --oui-outline-value: var(--oui-green-6);
228
+ }
229
+ :where(.oui-input:is([type=range i]))::-moz-range-track:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible, :where(.oui-input:is([type=range i]))::-moz-range-track:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-within {
230
+ --oui-border-value: var(--oui-blue-5);
231
+ --oui-foreground-value: inherit;
232
+ --oui-outline-percentage: 75%;
233
+ --oui-outline-value: var(--oui-blue-6);
234
+ }
235
+ @media (hover: hover) {
236
+ :where(.oui-input:is([type=range i]))::-moz-range-track:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):hover {
237
+ --oui-border-value: var(--oui-blue-4);
238
+ --oui-foreground-percentage: 0%;
239
+ --oui-foreground-value: inherit;
240
+ --oui-outline-percentage: 90%;
241
+ --oui-outline-value: var(--oui-blue-6);
242
+ }
243
+ }
244
+ :where(.oui-input:is([type=range i]))::-moz-range-track:is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]) {
245
+ --oui-foreground-percentage: 25%;
246
+ font-style: italic;
247
+ }
248
+ :where(.oui-input:is([type=range i]))::-moz-range-track:is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible {
249
+ --oui-outline-percentage: 75%;
250
+ }
251
+ :where(.oui-input:is([type=range i]))::-moz-range-track:is([disabled], [aria-disabled=true i]) {
252
+ --oui-background-percentage: 50%;
253
+ }
254
+ :where(.oui-input:is([type=range i]))::-moz-range-track {
104
255
  -moz-appearance: none;
105
256
  appearance: none;
106
257
  width: 100%;
@@ -109,19 +260,69 @@
109
260
  position: relative;
110
261
  }
111
262
  :where(.oui-input:is([type=range i]))::-ms-track {
112
- --oui-background-percentage: 0%;
113
- --oui-foreground-percentage: 0%;
114
263
  --oui-outline-percentage: 100%;
115
264
  --oui-outline-value: var(--oui-blue-6);
116
265
  outline: 4px solid color-mix(in oklab, var(--oui-outline-value), transparent var(--oui-outline-percentage));
117
266
  outline-offset: 0;
118
- transition: 0.125s ease-in-out;
267
+ --oui-background-percentage: 0%;
268
+ --oui-foreground-percentage: 0%;
119
269
  align-content: center;
120
270
  background-color: color-mix(in oklab, var(--oui-background-value), transparent var(--oui-background-percentage));
121
271
  border: 1px solid var(--oui-border-value, var(--oui-gray-3));
122
272
  box-shadow: inset 0 2px 4px -1px var(--oui-gray-3);
123
273
  color: color-mix(in oklab, var(--oui-foreground-value, inherit), transparent var(--oui-foreground-percentage));
124
274
  -webkit-text-fill-color: color-mix(in oklab, var(--oui-foreground-value, inherit), transparent var(--oui-foreground-percentage));
275
+ transition: 0.125s ease-in-out;
276
+ transition-property: background, outline, border, box-shadow, color;
277
+ }
278
+ :where(.oui-input:is([type=range i]))::-ms-track.oui-validate:not([disabled],
279
+ [readonly],
280
+ [aria-disabled=true i],
281
+ [aria-readonly=true i],
282
+ :focus-visible,
283
+ :focus-within):is(:user-invalid:not([aria-invalid=false i]), [aria-invalid=true i]) {
284
+ --oui-border-value: var(--oui-red-5);
285
+ --oui-foreground-value: var(--oui-red-9);
286
+ --oui-outline-percentage: 82.5%;
287
+ --oui-outline-value: var(--oui-red-6);
288
+ }
289
+ :where(.oui-input:is([type=range i]))::-ms-track.oui-validate:not([disabled],
290
+ [readonly],
291
+ [aria-disabled=true i],
292
+ [aria-readonly=true i],
293
+ :focus-visible,
294
+ :focus-within):is(:user-valid:not([aria-invalid=true i]), [aria-invalid=false i]) {
295
+ --oui-border-value: var(--oui-green-5);
296
+ --oui-foreground-value: var(--oui-green-9);
297
+ --oui-outline-percentage: 82.5%;
298
+ --oui-outline-value: var(--oui-green-6);
299
+ }
300
+ :where(.oui-input:is([type=range i]))::-ms-track:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible, :where(.oui-input:is([type=range i]))::-ms-track:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-within {
301
+ --oui-border-value: var(--oui-blue-5);
302
+ --oui-foreground-value: inherit;
303
+ --oui-outline-percentage: 75%;
304
+ --oui-outline-value: var(--oui-blue-6);
305
+ }
306
+ @media (hover: hover) {
307
+ :where(.oui-input:is([type=range i]))::-ms-track:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):hover {
308
+ --oui-border-value: var(--oui-blue-4);
309
+ --oui-foreground-percentage: 0%;
310
+ --oui-foreground-value: inherit;
311
+ --oui-outline-percentage: 90%;
312
+ --oui-outline-value: var(--oui-blue-6);
313
+ }
314
+ }
315
+ :where(.oui-input:is([type=range i]))::-ms-track:is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]) {
316
+ --oui-foreground-percentage: 25%;
317
+ font-style: italic;
318
+ }
319
+ :where(.oui-input:is([type=range i]))::-ms-track:is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible {
320
+ --oui-outline-percentage: 75%;
321
+ }
322
+ :where(.oui-input:is([type=range i]))::-ms-track:is([disabled], [aria-disabled=true i]) {
323
+ --oui-background-percentage: 50%;
324
+ }
325
+ :where(.oui-input:is([type=range i]))::-ms-track {
125
326
  appearance: none;
126
327
  width: 100%;
127
328
  height: 0.75em;
@@ -129,19 +330,69 @@
129
330
  position: relative;
130
331
  }
131
332
  :where(.oui-input:is([type=range i]))::-webkit-slider-runnable-track {
132
- --oui-background-percentage: 0%;
133
- --oui-foreground-percentage: 0%;
134
333
  --oui-outline-percentage: 100%;
135
334
  --oui-outline-value: var(--oui-blue-6);
136
335
  outline: 4px solid color-mix(in oklab, var(--oui-outline-value), transparent var(--oui-outline-percentage));
137
336
  outline-offset: 0;
138
- transition: 0.125s ease-in-out;
337
+ --oui-background-percentage: 0%;
338
+ --oui-foreground-percentage: 0%;
139
339
  align-content: center;
140
340
  background-color: color-mix(in oklab, var(--oui-background-value), transparent var(--oui-background-percentage));
141
341
  border: 1px solid var(--oui-border-value, var(--oui-gray-3));
142
342
  box-shadow: inset 0 2px 4px -1px var(--oui-gray-3);
143
343
  color: color-mix(in oklab, var(--oui-foreground-value, inherit), transparent var(--oui-foreground-percentage));
144
344
  -webkit-text-fill-color: color-mix(in oklab, var(--oui-foreground-value, inherit), transparent var(--oui-foreground-percentage));
345
+ transition: 0.125s ease-in-out;
346
+ transition-property: background, outline, border, box-shadow, color;
347
+ }
348
+ :where(.oui-input:is([type=range i]))::-webkit-slider-runnable-track.oui-validate:not([disabled],
349
+ [readonly],
350
+ [aria-disabled=true i],
351
+ [aria-readonly=true i],
352
+ :focus-visible,
353
+ :focus-within):is(:user-invalid:not([aria-invalid=false i]), [aria-invalid=true i]) {
354
+ --oui-border-value: var(--oui-red-5);
355
+ --oui-foreground-value: var(--oui-red-9);
356
+ --oui-outline-percentage: 82.5%;
357
+ --oui-outline-value: var(--oui-red-6);
358
+ }
359
+ :where(.oui-input:is([type=range i]))::-webkit-slider-runnable-track.oui-validate:not([disabled],
360
+ [readonly],
361
+ [aria-disabled=true i],
362
+ [aria-readonly=true i],
363
+ :focus-visible,
364
+ :focus-within):is(:user-valid:not([aria-invalid=true i]), [aria-invalid=false i]) {
365
+ --oui-border-value: var(--oui-green-5);
366
+ --oui-foreground-value: var(--oui-green-9);
367
+ --oui-outline-percentage: 82.5%;
368
+ --oui-outline-value: var(--oui-green-6);
369
+ }
370
+ :where(.oui-input:is([type=range i]))::-webkit-slider-runnable-track:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible, :where(.oui-input:is([type=range i]))::-webkit-slider-runnable-track:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-within {
371
+ --oui-border-value: var(--oui-blue-5);
372
+ --oui-foreground-value: inherit;
373
+ --oui-outline-percentage: 75%;
374
+ --oui-outline-value: var(--oui-blue-6);
375
+ }
376
+ @media (hover: hover) {
377
+ :where(.oui-input:is([type=range i]))::-webkit-slider-runnable-track:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):hover {
378
+ --oui-border-value: var(--oui-blue-4);
379
+ --oui-foreground-percentage: 0%;
380
+ --oui-foreground-value: inherit;
381
+ --oui-outline-percentage: 90%;
382
+ --oui-outline-value: var(--oui-blue-6);
383
+ }
384
+ }
385
+ :where(.oui-input:is([type=range i]))::-webkit-slider-runnable-track:is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]) {
386
+ --oui-foreground-percentage: 25%;
387
+ font-style: italic;
388
+ }
389
+ :where(.oui-input:is([type=range i]))::-webkit-slider-runnable-track:is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible {
390
+ --oui-outline-percentage: 75%;
391
+ }
392
+ :where(.oui-input:is([type=range i]))::-webkit-slider-runnable-track:is([disabled], [aria-disabled=true i]) {
393
+ --oui-background-percentage: 50%;
394
+ }
395
+ :where(.oui-input:is([type=range i]))::-webkit-slider-runnable-track {
145
396
  -webkit-appearance: none;
146
397
  appearance: none;
147
398
  width: 100%;
@@ -156,7 +407,6 @@
156
407
  --oui-outline-value: var(--oui-blue-6);
157
408
  outline: 4px solid color-mix(in oklab, var(--oui-outline-value), transparent var(--oui-outline-percentage));
158
409
  outline-offset: 0;
159
- transition: 0.125s ease-in-out;
160
410
  -moz-appearance: none;
161
411
  appearance: none;
162
412
  width: 1.25em;
@@ -174,7 +424,6 @@
174
424
  --oui-outline-value: var(--oui-blue-6);
175
425
  outline: 4px solid color-mix(in oklab, var(--oui-outline-value), transparent var(--oui-outline-percentage));
176
426
  outline-offset: 0;
177
- transition: 0.125s ease-in-out;
178
427
  appearance: none;
179
428
  width: 1.25em;
180
429
  height: 1.25em;
@@ -191,7 +440,6 @@
191
440
  --oui-outline-value: var(--oui-blue-6);
192
441
  outline: 4px solid color-mix(in oklab, var(--oui-outline-value), transparent var(--oui-outline-percentage));
193
442
  outline-offset: 0;
194
- transition: 0.125s ease-in-out;
195
443
  -webkit-appearance: none;
196
444
  appearance: none;
197
445
  width: 1.25em;
@@ -207,220 +455,241 @@
207
455
  top: 50%;
208
456
  transform: translateY(-50%);
209
457
  }
210
- :where(.oui-input.oui-validate:not([disabled], [readonly], [aria-disabled=true i]):is(:user-invalid:not([aria-invalid=false i]),
211
- [aria-invalid=true i])) {
212
- --oui-border-value: var(--oui-red-5);
213
- --oui-foreground-value: var(--oui-red-9);
214
- --oui-outline-percentage: 82.5%;
215
- --oui-outline-value: var(--oui-red-6);
216
- }
217
- :where(.oui-input.oui-validate:not([disabled], [readonly], [aria-disabled=true i]):is(:user-invalid:not([aria-invalid=false i]),
218
- [aria-invalid=true i]))::file-selector-button {
458
+ :where(.oui-input.oui-validate:not([disabled],
459
+ [readonly],
460
+ [aria-disabled=true i],
461
+ [aria-readonly=true i],
462
+ :focus-visible,
463
+ :focus-within):is(:user-invalid:not([aria-invalid=false i]), [aria-invalid=true i]))::file-selector-button {
219
464
  --oui-background-value: var(--oui-red-2);
220
465
  --oui-foreground-value: var(--oui-red-8);
221
466
  --oui-outline-value: var(--oui-red-6);
222
467
  }
223
- :where(.oui-input.oui-validate:not([disabled], [readonly], [aria-disabled=true i]):is(:user-invalid:not([aria-invalid=false i]),
224
- [aria-invalid=true i]))::-moz-range-thumb {
468
+ :where(.oui-input.oui-validate:not([disabled],
469
+ [readonly],
470
+ [aria-disabled=true i],
471
+ [aria-readonly=true i],
472
+ :focus-visible,
473
+ :focus-within):is(:user-invalid:not([aria-invalid=false i]), [aria-invalid=true i]))::-moz-range-thumb {
225
474
  --oui-background-value: var(--oui-red-6);
226
475
  }
227
- :where(.oui-input.oui-validate:not([disabled], [readonly], [aria-disabled=true i]):is(:user-invalid:not([aria-invalid=false i]),
228
- [aria-invalid=true i]))::-ms-thumb {
476
+ :where(.oui-input.oui-validate:not([disabled],
477
+ [readonly],
478
+ [aria-disabled=true i],
479
+ [aria-readonly=true i],
480
+ :focus-visible,
481
+ :focus-within):is(:user-invalid:not([aria-invalid=false i]), [aria-invalid=true i]))::-ms-thumb {
229
482
  --oui-background-value: var(--oui-red-6);
230
483
  }
231
- :where(.oui-input.oui-validate:not([disabled], [readonly], [aria-disabled=true i]):is(:user-invalid:not([aria-invalid=false i]),
232
- [aria-invalid=true i]))::-webkit-slider-thumb {
484
+ :where(.oui-input.oui-validate:not([disabled],
485
+ [readonly],
486
+ [aria-disabled=true i],
487
+ [aria-readonly=true i],
488
+ :focus-visible,
489
+ :focus-within):is(:user-invalid:not([aria-invalid=false i]), [aria-invalid=true i]))::-webkit-slider-thumb {
233
490
  --oui-background-value: var(--oui-red-6);
234
491
  }
235
- :where(.oui-input.oui-validate:not([disabled], [readonly], [aria-disabled=true i]):is(:user-invalid:not([aria-invalid=false i]),
236
- [aria-invalid=true i]))::-moz-range-track {
492
+ :where(.oui-input.oui-validate:not([disabled],
493
+ [readonly],
494
+ [aria-disabled=true i],
495
+ [aria-readonly=true i],
496
+ :focus-visible,
497
+ :focus-within):is(:user-invalid:not([aria-invalid=false i]), [aria-invalid=true i]))::-moz-range-track {
237
498
  --oui-border-value: var(--oui-red-5);
238
499
  --oui-foreground-value: var(--oui-red-9);
239
500
  --oui-outline-percentage: 82.5%;
240
501
  --oui-outline-value: var(--oui-red-6);
241
502
  }
242
- :where(.oui-input.oui-validate:not([disabled], [readonly], [aria-disabled=true i]):is(:user-invalid:not([aria-invalid=false i]),
243
- [aria-invalid=true i]))::-ms-track {
503
+ :where(.oui-input.oui-validate:not([disabled],
504
+ [readonly],
505
+ [aria-disabled=true i],
506
+ [aria-readonly=true i],
507
+ :focus-visible,
508
+ :focus-within):is(:user-invalid:not([aria-invalid=false i]), [aria-invalid=true i]))::-ms-track {
244
509
  --oui-border-value: var(--oui-red-5);
245
510
  --oui-foreground-value: var(--oui-red-9);
246
511
  --oui-outline-percentage: 82.5%;
247
512
  --oui-outline-value: var(--oui-red-6);
248
513
  }
249
- :where(.oui-input.oui-validate:not([disabled], [readonly], [aria-disabled=true i]):is(:user-invalid:not([aria-invalid=false i]),
250
- [aria-invalid=true i]))::-webkit-slider-runnable-track {
514
+ :where(.oui-input.oui-validate:not([disabled],
515
+ [readonly],
516
+ [aria-disabled=true i],
517
+ [aria-readonly=true i],
518
+ :focus-visible,
519
+ :focus-within):is(:user-invalid:not([aria-invalid=false i]), [aria-invalid=true i]))::-webkit-slider-runnable-track {
251
520
  --oui-border-value: var(--oui-red-5);
252
521
  --oui-foreground-value: var(--oui-red-9);
253
522
  --oui-outline-percentage: 82.5%;
254
523
  --oui-outline-value: var(--oui-red-6);
255
524
  }
256
- :where(.oui-input.oui-validate:not([disabled], [readonly], [aria-disabled=true i]):is(:user-invalid:not([aria-invalid=false i]),
257
- [aria-invalid=true i])) > option:checked {
525
+ :where(.oui-input.oui-validate:not([disabled],
526
+ [readonly],
527
+ [aria-disabled=true i],
528
+ [aria-readonly=true i],
529
+ :focus-visible,
530
+ :focus-within):is(:user-invalid:not([aria-invalid=false i]), [aria-invalid=true i])) > option:checked {
258
531
  background-color: var(--oui-red-2);
259
532
  color: var(--oui-red-9);
260
533
  }
261
- :where(.oui-input.oui-validate:not([disabled], [readonly], [aria-disabled=true i]):is(:user-valid:not([aria-invalid=true i]),
262
- [aria-invalid=false i])) {
263
- --oui-border-value: var(--oui-green-5);
264
- --oui-foreground-value: var(--oui-green-9);
265
- --oui-outline-percentage: 82.5%;
266
- --oui-outline-value: var(--oui-green-6);
267
- }
268
- :where(.oui-input.oui-validate:not([disabled], [readonly], [aria-disabled=true i]):is(:user-valid:not([aria-invalid=true i]),
269
- [aria-invalid=false i]))::file-selector-button {
534
+ :where(.oui-input.oui-validate:not([disabled],
535
+ [readonly],
536
+ [aria-disabled=true i],
537
+ [aria-readonly=true i],
538
+ :focus-visible,
539
+ :focus-within):is(:user-valid:not([aria-invalid=true i]), [aria-invalid=false i]))::file-selector-button {
270
540
  --oui-background-value: var(--oui-green-2);
271
541
  --oui-foreground-value: var(--oui-green-8);
272
542
  --oui-outline-value: var(--oui-green-6);
273
543
  }
274
- :where(.oui-input.oui-validate:not([disabled], [readonly], [aria-disabled=true i]):is(:user-valid:not([aria-invalid=true i]),
275
- [aria-invalid=false i]))::-moz-range-track {
544
+ :where(.oui-input.oui-validate:not([disabled],
545
+ [readonly],
546
+ [aria-disabled=true i],
547
+ [aria-readonly=true i],
548
+ :focus-visible,
549
+ :focus-within):is(:user-valid:not([aria-invalid=true i]), [aria-invalid=false i]))::-moz-range-track {
276
550
  --oui-border-value: var(--oui-green-5);
277
551
  --oui-foreground-value: var(--oui-green-9);
278
552
  --oui-outline-percentage: 82.5%;
279
553
  --oui-outline-value: var(--oui-green-6);
280
554
  }
281
- :where(.oui-input.oui-validate:not([disabled], [readonly], [aria-disabled=true i]):is(:user-valid:not([aria-invalid=true i]),
282
- [aria-invalid=false i]))::-ms-track {
555
+ :where(.oui-input.oui-validate:not([disabled],
556
+ [readonly],
557
+ [aria-disabled=true i],
558
+ [aria-readonly=true i],
559
+ :focus-visible,
560
+ :focus-within):is(:user-valid:not([aria-invalid=true i]), [aria-invalid=false i]))::-ms-track {
283
561
  --oui-border-value: var(--oui-green-5);
284
562
  --oui-foreground-value: var(--oui-green-9);
285
563
  --oui-outline-percentage: 82.5%;
286
564
  --oui-outline-value: var(--oui-green-6);
287
565
  }
288
- :where(.oui-input.oui-validate:not([disabled], [readonly], [aria-disabled=true i]):is(:user-valid:not([aria-invalid=true i]),
289
- [aria-invalid=false i]))::-webkit-slider-runnable-track {
566
+ :where(.oui-input.oui-validate:not([disabled],
567
+ [readonly],
568
+ [aria-disabled=true i],
569
+ [aria-readonly=true i],
570
+ :focus-visible,
571
+ :focus-within):is(:user-valid:not([aria-invalid=true i]), [aria-invalid=false i]))::-webkit-slider-runnable-track {
290
572
  --oui-border-value: var(--oui-green-5);
291
573
  --oui-foreground-value: var(--oui-green-9);
292
574
  --oui-outline-percentage: 82.5%;
293
575
  --oui-outline-value: var(--oui-green-6);
294
576
  }
295
- :where(.oui-input.oui-validate:not([disabled], [readonly], [aria-disabled=true i]):is(:user-valid:not([aria-invalid=true i]),
296
- [aria-invalid=false i]))::-moz-range-thumb {
577
+ :where(.oui-input.oui-validate:not([disabled],
578
+ [readonly],
579
+ [aria-disabled=true i],
580
+ [aria-readonly=true i],
581
+ :focus-visible,
582
+ :focus-within):is(:user-valid:not([aria-invalid=true i]), [aria-invalid=false i]))::-moz-range-thumb {
297
583
  --oui-background-value: var(--oui-green-6);
298
584
  }
299
- :where(.oui-input.oui-validate:not([disabled], [readonly], [aria-disabled=true i]):is(:user-valid:not([aria-invalid=true i]),
300
- [aria-invalid=false i]))::-ms-thumb {
585
+ :where(.oui-input.oui-validate:not([disabled],
586
+ [readonly],
587
+ [aria-disabled=true i],
588
+ [aria-readonly=true i],
589
+ :focus-visible,
590
+ :focus-within):is(:user-valid:not([aria-invalid=true i]), [aria-invalid=false i]))::-ms-thumb {
301
591
  --oui-background-value: var(--oui-green-6);
302
592
  }
303
- :where(.oui-input.oui-validate:not([disabled], [readonly], [aria-disabled=true i]):is(:user-valid:not([aria-invalid=true i]),
304
- [aria-invalid=false i]))::-webkit-slider-thumb {
593
+ :where(.oui-input.oui-validate:not([disabled],
594
+ [readonly],
595
+ [aria-disabled=true i],
596
+ [aria-readonly=true i],
597
+ :focus-visible,
598
+ :focus-within):is(:user-valid:not([aria-invalid=true i]), [aria-invalid=false i]))::-webkit-slider-thumb {
305
599
  --oui-background-value: var(--oui-green-6);
306
600
  }
307
- :where(.oui-input.oui-validate:not([disabled], [readonly], [aria-disabled=true i]):is(:user-valid:not([aria-invalid=true i]),
308
- [aria-invalid=false i])) > option:checked {
601
+ :where(.oui-input.oui-validate:not([disabled],
602
+ [readonly],
603
+ [aria-disabled=true i],
604
+ [aria-readonly=true i],
605
+ :focus-visible,
606
+ :focus-within):is(:user-valid:not([aria-invalid=true i]), [aria-invalid=false i])) > option:checked {
309
607
  background-color: var(--oui-green-2);
310
608
  color: var(--oui-green-9);
311
609
  }
312
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]))::-webkit-calendar-picker-indicator {
313
- outline: 4px solid transparent;
314
- outline-offset: 2px;
315
- border-radius: 2em;
316
- -webkit-transition: 0.125s ease-in-out;
317
- transition: 0.125s ease-in-out;
318
- cursor: pointer;
319
- }
320
- @media (hover: hover) {
321
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]))::-webkit-calendar-picker-indicator:hover {
322
- outline-color: color-mix(in oklab, var(--oui-blue-6), transparent 75%);
323
- }
324
- }
325
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]))::-webkit-calendar-picker-indicator:focus {
326
- outline-color: color-mix(in oklab, var(--oui-blue-6), transparent 75%);
327
- }
328
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus), :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus-within) {
329
- --oui-border-value: var(--oui-blue-5);
330
- --oui-foreground-value: inherit;
331
- --oui-outline-percentage: 75%;
332
- --oui-outline-value: var(--oui-blue-6);
333
- }
334
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus)::file-selector-button, :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus-within)::file-selector-button {
610
+ :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible, .oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-within)::file-selector-button {
335
611
  --oui-background-value: var(--oui-blue-2);
336
612
  --oui-foreground-value: var(--oui-blue-8);
337
613
  --oui-outline-value: var(--oui-blue-6);
338
614
  }
339
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus)::-moz-range-thumb, :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus-within)::-moz-range-thumb {
615
+ :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible, .oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-within)::-moz-range-thumb {
340
616
  --oui-border-value: var(--oui-blue-5);
341
617
  --oui-foreground-value: inherit;
342
618
  --oui-outline-percentage: 75%;
343
619
  --oui-outline-value: var(--oui-blue-6);
344
620
  }
345
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus)::-ms-thumb, :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus-within)::-ms-thumb {
621
+ :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible, .oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-within)::-ms-thumb {
346
622
  --oui-border-value: var(--oui-blue-5);
347
623
  --oui-foreground-value: inherit;
348
624
  --oui-outline-percentage: 75%;
349
625
  --oui-outline-value: var(--oui-blue-6);
350
626
  }
351
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus)::-webkit-slider-thumb, :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus-within)::-webkit-slider-thumb {
627
+ :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible, .oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-within)::-webkit-slider-thumb {
352
628
  --oui-border-value: var(--oui-blue-5);
353
629
  --oui-foreground-value: inherit;
354
630
  --oui-outline-percentage: 75%;
355
631
  --oui-outline-value: var(--oui-blue-6);
356
632
  }
357
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus)::-moz-range-track, :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus-within)::-moz-range-track {
633
+ :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible, .oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-within)::-moz-range-track {
358
634
  --oui-border-value: var(--oui-blue-5);
359
635
  --oui-foreground-value: inherit;
360
636
  --oui-outline-percentage: 75%;
361
637
  --oui-outline-value: var(--oui-blue-6);
362
638
  }
363
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus)::-ms-track, :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus-within)::-ms-track {
639
+ :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible, .oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-within)::-ms-track {
364
640
  --oui-border-value: var(--oui-blue-5);
365
641
  --oui-foreground-value: inherit;
366
642
  --oui-outline-percentage: 75%;
367
643
  --oui-outline-value: var(--oui-blue-6);
368
644
  }
369
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus)::-webkit-slider-runnable-track, :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus-within)::-webkit-slider-runnable-track {
645
+ :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible, .oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-within)::-webkit-slider-runnable-track {
370
646
  --oui-border-value: var(--oui-blue-5);
371
647
  --oui-foreground-value: inherit;
372
648
  --oui-outline-percentage: 75%;
373
649
  --oui-outline-value: var(--oui-blue-6);
374
650
  }
375
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus)::-moz-range-thumb, :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus-within)::-moz-range-thumb {
651
+ :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible, .oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-within)::-moz-range-thumb {
376
652
  --oui-background-value: var(--oui-blue-6);
377
653
  box-shadow: 0 1px 2px 2px rgba(0, 0, 0, 0.25);
378
654
  }
379
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus)::-ms-thumb, :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus-within)::-ms-thumb {
655
+ :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible, .oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-within)::-ms-thumb {
380
656
  --oui-background-value: var(--oui-blue-6);
381
657
  box-shadow: 0 1px 2px 2px rgba(0, 0, 0, 0.25);
382
658
  }
383
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus)::-webkit-slider-thumb, :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):focus-within)::-webkit-slider-thumb {
659
+ :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible, .oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-within)::-webkit-slider-thumb {
384
660
  --oui-background-value: var(--oui-blue-6);
385
661
  box-shadow: 0 1px 2px 2px rgba(0, 0, 0, 0.25);
386
662
  }
387
663
  @media (hover: hover) {
388
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):hover) {
389
- --oui-border-value: var(--oui-blue-4);
390
- --oui-foreground-percentage: 0%;
391
- --oui-foreground-value: inherit;
392
- --oui-outline-percentage: 90%;
393
- --oui-outline-value: var(--oui-blue-6);
394
- }
395
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):hover)::file-selector-button {
664
+ :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):hover)::file-selector-button {
396
665
  --oui-background-value: var(--oui-blue-2);
397
666
  --oui-foreground-value: var(--oui-blue-8);
398
667
  --oui-outline-value: var(--oui-blue-6);
399
668
  }
400
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):hover)::-moz-range-thumb {
669
+ :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):hover)::-moz-range-thumb {
401
670
  --oui-background-value: var(--oui-blue-5);
402
671
  }
403
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):hover)::-ms-thumb {
672
+ :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):hover)::-ms-thumb {
404
673
  --oui-background-value: var(--oui-blue-5);
405
674
  }
406
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):hover)::-webkit-slider-thumb {
675
+ :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):hover)::-webkit-slider-thumb {
407
676
  --oui-background-value: var(--oui-blue-5);
408
677
  }
409
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):hover)::-moz-range-track {
678
+ :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):hover)::-moz-range-track {
410
679
  --oui-border-value: var(--oui-blue-4);
411
680
  --oui-foreground-percentage: 0%;
412
681
  --oui-foreground-value: inherit;
413
682
  --oui-outline-percentage: 90%;
414
683
  --oui-outline-value: var(--oui-blue-6);
415
684
  }
416
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):hover)::-ms-track {
685
+ :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):hover)::-ms-track {
417
686
  --oui-border-value: var(--oui-blue-4);
418
687
  --oui-foreground-percentage: 0%;
419
688
  --oui-foreground-value: inherit;
420
689
  --oui-outline-percentage: 90%;
421
690
  --oui-outline-value: var(--oui-blue-6);
422
691
  }
423
- :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i]):hover)::-webkit-slider-runnable-track {
692
+ :where(.oui-input:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):hover)::-webkit-slider-runnable-track {
424
693
  --oui-border-value: var(--oui-blue-4);
425
694
  --oui-foreground-percentage: 0%;
426
695
  --oui-foreground-value: inherit;
@@ -428,31 +697,34 @@
428
697
  --oui-outline-value: var(--oui-blue-6);
429
698
  }
430
699
  }
431
- :where(.oui-input:is([disabled], [readonly], [aria-disabled=true i])) {
432
- --oui-foreground-percentage: 25%;
433
- font-style: italic;
700
+ :where(.oui-input:is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]))::-webkit-calendar-picker-indicator:focus-within {
701
+ --oui-outline-percentage: 0%;
702
+ --oui-outline-value: var(--oui-gray-3);
434
703
  }
435
- :where(.oui-input:is([disabled], [readonly], [aria-disabled=true i]))::file-selector-button {
704
+ @media (hover: hover) {
705
+ :where(.oui-input:is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]))::-webkit-calendar-picker-indicator:hover {
706
+ --oui-outline-percentage: 0%;
707
+ --oui-outline-value: var(--oui-gray-3);
708
+ }
709
+ }
710
+ :where(.oui-input:is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]))::file-selector-button {
436
711
  --oui-background-value: var(--oui-gray-1);
437
712
  cursor: default;
438
713
  }
439
- :where(.oui-input:is([disabled], [readonly], [aria-disabled=true i]))::-moz-range-thumb {
714
+ :where(.oui-input:is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]))::-moz-range-thumb {
440
715
  --oui-background-value: var(--oui-gray-2);
441
716
  cursor: default;
442
717
  }
443
- :where(.oui-input:is([disabled], [readonly], [aria-disabled=true i]))::-ms-thumb {
718
+ :where(.oui-input:is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]))::-ms-thumb {
444
719
  --oui-background-value: var(--oui-gray-2);
445
720
  cursor: default;
446
721
  }
447
- :where(.oui-input:is([disabled], [readonly], [aria-disabled=true i]))::-webkit-slider-thumb {
722
+ :where(.oui-input:is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]))::-webkit-slider-thumb {
448
723
  --oui-background-value: var(--oui-gray-2);
449
724
  cursor: default;
450
725
  }
451
- :where(.oui-input:is([disabled], [readonly], [aria-disabled=true i]):focus) {
452
- --oui-outline-percentage: 75%;
453
- }
454
- :where(.oui-input:is([disabled], [aria-disabled=true i])) {
455
- --oui-background-percentage: 50%;
726
+ :where(.oui-input:is([disabled], [aria-disabled=true i]))::-webkit-calendar-picker-indicator {
727
+ opacity: 0.5;
456
728
  }
457
729
  :where(.oui-input:is([disabled], [aria-disabled=true i]))::-moz-range-thumb {
458
730
  --oui-background-value: var(--oui-gray-1);
@@ -478,9 +750,6 @@
478
750
  --oui-background-percentage: 50%;
479
751
  --oui-background-value: var(--oui-gray-0);
480
752
  }
481
- :where(.oui-input:is([disabled], [aria-disabled=true i]))::-webkit-calendar-picker-indicator {
482
- opacity: 0.5;
483
- }
484
753
 
485
754
  :where(select.oui-input, .oui-input[list]) {
486
755
  padding-right: 2em;
@@ -520,11 +789,12 @@
520
789
  :where(.oui-label, .oui-legend) {
521
790
  font-size: 0.875rem;
522
791
  font-weight: bold;
792
+ align-self: flex-start;
523
793
  }
524
794
 
525
795
  :where(.oui-label) {
526
796
  cursor: pointer;
527
- transition: 0.125s ease-in-out;
797
+ transition: color 0.125s ease-in-out;
528
798
  }
529
799
  @media (hover: hover) {
530
800
  :where(.oui-label[for]:hover) {
@@ -556,6 +826,7 @@
556
826
  font-family: system-ui, sans-serif;
557
827
  position: absolute;
558
828
  transition: 0.125s ease-in-out;
829
+ transition-property: background, outline, border, box-shadow, color;
559
830
  pointer-events: none;
560
831
  }
561
832
  :where(.oui-switch, .oui-toggle)::before {