@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
@@ -0,0 +1,344 @@
1
+ /*! https://github.com/oscarpalmer/oui */
2
+
3
+ @use './mixins/button.mixins.scss' as buttonMixins;
4
+ @use './mixins/input.mixins.scss' as inputMixins;
5
+ @use './mixins/misc.mixins.scss' as miscMixins;
6
+ @use './mixins/shadow.mixins.scss' as shadowMixins;
7
+
8
+ oui-color-picker {
9
+ :where(&) {
10
+ outline: none;
11
+ }
12
+ }
13
+
14
+ :where(
15
+ oui-color-picker[inline] [oui-color-picker-content],
16
+ [oui-color-picker-content]:popover-open
17
+ ) {
18
+ display: flex !important;
19
+ flex-flow: column nowrap;
20
+ }
21
+
22
+ :where(
23
+ oui-color-picker[inline] [oui-color-picker-content],
24
+ [oui-color-picker-hue],
25
+ [oui-color-picker-opacity]
26
+ ) {
27
+ margin: 1em 0 0;
28
+ }
29
+
30
+ [oui-color-picker-anchor] {
31
+ :where(&) {
32
+ display: flex;
33
+ flex-flow: row nowrap;
34
+ align-items: stretch;
35
+ }
36
+
37
+ & * {
38
+ :where(&) {
39
+ position: relative;
40
+ }
41
+
42
+ :where(&:focus) {
43
+ z-index: 1;
44
+ }
45
+
46
+ @media (hover: hover) {
47
+ :where(&:hover) {
48
+ z-index: 1;
49
+ }
50
+ }
51
+ }
52
+ }
53
+
54
+ [oui-color-picker-button] {
55
+ :where(&) {
56
+ @include buttonMixins.button;
57
+ @include shadowMixins.shadow-1(var(--oui-shadow-value));
58
+
59
+ --oui-background-value: var(--oui-color-picker-hex);
60
+ --oui-outline-value: var(--oui-gray-6);
61
+
62
+ width: 2.5em;
63
+ margin: 1px 0;
64
+ border: 2px solid var(--oui-absolute);
65
+ border-top-left-radius: 0;
66
+ border-bottom-left-radius: 0;
67
+ position: relative;
68
+
69
+ &::after {
70
+ display: none;
71
+ color: var(--oui-color-picker-foreground);
72
+ font-size: 8px;
73
+ position: absolute;
74
+ inset: 50% auto auto 50%;
75
+ transform: translate3d(-50%, -50%, 0);
76
+ }
77
+
78
+ &[aria-expanded='false' i]::after {
79
+ content: '▶';
80
+ display: inline-flex;
81
+ }
82
+
83
+ &[aria-expanded='true' i]::after {
84
+ content: '▼';
85
+ display: inline-flex;
86
+ }
87
+ }
88
+
89
+ :where(&:active) {
90
+ scale: 1;
91
+ }
92
+ }
93
+
94
+ [oui-color-picker-content] {
95
+ &[popover] {
96
+ :where(&) {
97
+ @include miscMixins.floatable;
98
+ @include shadowMixins.shadow-5;
99
+
100
+ min-width: anchor-size(width);
101
+ border-radius: 0.25em;
102
+ }
103
+
104
+ :where(&:not(:has(> [oui-color-picker-opacity]))) {
105
+ border-radius: 0.25em 0.25em 0.75em 0.75em;
106
+ }
107
+
108
+ :where(
109
+ [oui-color-picker-content],
110
+ [oui-color-picker-hue],
111
+ [oui-color-picker-opacity],
112
+ [oui-color-picker-well]
113
+ ) {
114
+ margin: 1em 1em 0;
115
+ }
116
+
117
+ :where(& > :last-child) {
118
+ margin-bottom: 1em !important;
119
+ }
120
+ }
121
+ }
122
+
123
+ :where([oui-color-picker-hue], [oui-color-picker-opacity]) {
124
+ position: relative;
125
+ }
126
+
127
+ :where([oui-color-picker-hue-input], [oui-color-picker-opacity-input]) {
128
+ opacity: 0;
129
+ position: absolute;
130
+ inset: -0.25em -0.75em;
131
+ z-index: 1;
132
+ }
133
+
134
+ :where([oui-color-picker-hue-label], [oui-color-picker-opacity-label]) {
135
+ display: none;
136
+ }
137
+
138
+ :where([oui-color-picker-hue-knob]),
139
+ :where([oui-color-picker-hue-track]),
140
+ :where([oui-color-picker-opacity-knob]),
141
+ :where([oui-color-picker-opacity-track]),
142
+ :where([oui-color-picker-well-knob]) {
143
+ --oui-outline-percentage: 100%;
144
+ --oui-outline-value: var(--oui-blue-6);
145
+
146
+ outline: 4px solid
147
+ color-mix(in oklab, var(--oui-outline-value), transparent var(--oui-outline-percentage));
148
+ transition: outline 0.125s ease-in-out;
149
+ }
150
+
151
+ :where([oui-color-picker-hue-knob]),
152
+ :where([oui-color-picker-opacity-knob]),
153
+ :where([oui-color-picker-well-knob]) {
154
+ @include shadowMixins.shadow-5(rgb(0 0 0 / 6.25%));
155
+
156
+ width: 1.5em;
157
+ height: 1.5em;
158
+ border: 0.3333em solid var(--oui-absolute);
159
+ border-radius: 1.5em;
160
+ position: absolute;
161
+ z-index: 1;
162
+ }
163
+
164
+ :where([oui-color-picker-hue-knob]),
165
+ :where([oui-color-picker-well-knob]) {
166
+ background-color: var(--oui-color-picker-hex);
167
+ }
168
+
169
+ :where([oui-color-picker-hue-knob]),
170
+ :where([oui-color-picker-opacity-knob]) {
171
+ transform: translate3d(-50%, -0.25em, 0);
172
+ }
173
+
174
+ :where([oui-color-picker-hue-knob]) {
175
+ inset: 0 0 0 calc((var(--oui-color-picker-hue) / 360) * 100%);
176
+ pointer-events: none;
177
+ }
178
+
179
+ :where([oui-color-picker-hue-track]),
180
+ :where([oui-color-picker-opacity-track]),
181
+ :where([oui-color-picker-well]) {
182
+ box-shadow:
183
+ inset 0 0 0 1px rgb(0 0 0 / 5%),
184
+ inset 0 1px 2px -0.5px rgb(0 0 0 / 5%),
185
+ inset 0 2px 4px -1px rgb(0 0 0 / 5%),
186
+ inset 0 4px 8px -2px rgb(0 0 0 / 5%);
187
+ }
188
+
189
+ :where([oui-color-picker-hue-track]),
190
+ :where([oui-color-picker-opacity-track]) {
191
+ height: 1em;
192
+ border: 1px solid transparent;
193
+ border-radius: 1em;
194
+ pointer-events: none;
195
+ }
196
+
197
+ :where([oui-color-picker-hue-track]) {
198
+ background-image: linear-gradient(
199
+ to right,
200
+ hsl(0deg 100% 50%) 0%,
201
+ hsl(60deg 100% 50%) 16.6667%,
202
+ hsl(120deg 100% 50%) 33.3333%,
203
+ hsl(180deg 100% 50%) 50%,
204
+ hsl(240deg 100% 50%) 66.6667%,
205
+ hsl(300deg 100% 50%) 83.3333%,
206
+ hsl(360deg 100% 50%) 100%
207
+ );
208
+ }
209
+
210
+ [oui-color-picker-hue-input]:focus-visible + [oui-color-picker-hue-track],
211
+ [oui-color-picker-opacity-input]:focus-visible + [oui-color-picker-opacity-track] {
212
+ :where(&, & [oui-color-picker-hue-knob], & [oui-color-picker-opacity-knob]) {
213
+ --oui-outline-percentage: 75%;
214
+ }
215
+
216
+ :where(&) {
217
+ border-color: var(--oui-absolute);
218
+ }
219
+ }
220
+
221
+ [oui-color-picker-input] {
222
+ :where(&) {
223
+ @include inputMixins.input;
224
+
225
+ --oui-background-value: var(--oui-absolute);
226
+
227
+ padding: 0.5em 0.75em;
228
+ border-radius: 0.25em;
229
+ font-family: monospace, monospace;
230
+ }
231
+
232
+ :where(&:has(+ button)) {
233
+ border-radius: 0.25em 0 0 0.25em;
234
+ }
235
+
236
+ :where(&:is([disabled], [aria-disabled='true' i])) {
237
+ --oui-background-percentage: 50%;
238
+ }
239
+ }
240
+
241
+ :where([oui-color-picker-opacity-knob]) {
242
+ background-color: var(--oui-absolute);
243
+ background-image: linear-gradient(
244
+ to right,
245
+ color-mix(
246
+ in oklab,
247
+ var(--oui-color-picker-hex),
248
+ transparent calc((100 - var(--oui-color-picker-alpha)) * 1%)
249
+ )
250
+ 0%,
251
+ color-mix(
252
+ in oklab,
253
+ var(--oui-color-picker-hex),
254
+ transparent calc((100 - var(--oui-color-picker-alpha)) * 1%)
255
+ )
256
+ 100%
257
+ );
258
+ inset: 0 0 0 calc(var(--oui-color-picker-alpha) * 1%);
259
+ }
260
+
261
+ :where([oui-color-picker-opacity-track]) {
262
+ background-color: var(--oui-absolute);
263
+ background-image: linear-gradient(
264
+ to right,
265
+ transparent 0%,
266
+ hsl(var(--oui-color-picker-hue) 100% 50%) 100%
267
+ );
268
+ position: relative;
269
+
270
+ &::after {
271
+ content: '';
272
+ background-image:
273
+ linear-gradient(45deg, rgb(0 0 0 / 10%) 25%, transparent 25%),
274
+ linear-gradient(135deg, rgb(0 0 0 / 10%) 25%, transparent 25%),
275
+ linear-gradient(45deg, transparent 75%, rgb(0 0 0 / 10%) 75%),
276
+ linear-gradient(135deg, transparent 75%, rgb(0 0 0 / 10%) 75%);
277
+ background-size: 0.5em 0.5em;
278
+ background-position:
279
+ 0 0,
280
+ 0.25em 0,
281
+ 0.25em -0.25em,
282
+ 0 0.25em;
283
+ border-radius: 1em;
284
+ position: absolute;
285
+ inset: 0;
286
+ }
287
+ }
288
+
289
+ [oui-color-picker-well] {
290
+ :where(&) {
291
+ --oui-outline-percentage: 100%;
292
+ --oui-outline-value: var(--oui-blue-6);
293
+
294
+ padding: 100% 0 0;
295
+ background-color: hsl(var(--oui-color-picker-hue) 100% 50%);
296
+ background-image:
297
+ linear-gradient(
298
+ to bottom,
299
+ hsl(0deg 0% 100%) 0%,
300
+ hsl(0deg 0% 100% / 0%) 50%,
301
+ hsl(0deg 0% 0% / 0%) 50%,
302
+ hsl(0deg 0% 0%) 100%
303
+ ),
304
+ linear-gradient(to right, hsl(0deg 0% 50%) 0%, hsl(0deg 0% 50% / 0%) 100%);
305
+ outline: 4px solid
306
+ color-mix(in oklab, var(--oui-outline-value), transparent var(--oui-outline-percentage));
307
+ outline-offset: 4px;
308
+ border-radius: 0.125em;
309
+ position: relative;
310
+ transition: outline 0.125s ease-in-out;
311
+ }
312
+
313
+ :where(&:has(:focus-visible)) {
314
+ --oui-outline-percentage: 75%;
315
+ }
316
+
317
+ @media (hover: hover) {
318
+ :where(&:hover) {
319
+ --oui-outline-percentage: 75%;
320
+ }
321
+ }
322
+ }
323
+
324
+ [oui-color-picker-well-knob] {
325
+ :where(&) {
326
+ --oui-outline-value: var(--oui-absolute);
327
+
328
+ outline-offset: 2px;
329
+ inset: calc((100 - var(--oui-color-picker-lightness)) * 1%) 0 0
330
+ calc(var(--oui-color-picker-saturation) * 1%);
331
+ transform: translate3d(-50%, -50%, 0);
332
+ cursor: move;
333
+ }
334
+
335
+ :where(&:focus-visible) {
336
+ --oui-outline-percentage: 33.3333%;
337
+ }
338
+
339
+ @media (hover: hover) {
340
+ :where(&:hover) {
341
+ --oui-outline-percentage: 33.3333%;
342
+ }
343
+ }
344
+ }
@@ -1,7 +1,5 @@
1
1
  /*! https://github.com/oscarpalmer/oui */
2
2
 
3
- @use './mixins' as mixins;
4
-
5
3
  :root {
6
4
  --oui-absolute: light-dark(white, black);
7
5
 
@@ -17,8 +15,8 @@
17
15
  --oui-blue-9: light-dark(oklch(35% 0.1 251deg), oklch(90% 0.03 259deg));
18
16
  --oui-blue-10: light-dark(oklch(30% 0.09 250deg), oklch(95% 0.02 260deg));
19
17
 
20
- --oui-green-0: light-dark(oklch(99% 0.01 150deg), oklch(20% 0.08 140deg));
21
- --oui-green-1: light-dark(oklch(98% 0.02 149deg), oklch(25% 0.09 141deg));
18
+ --oui-green-0: light-dark(oklch(99.5% 0.01 150deg), oklch(20% 0.08 140deg));
19
+ --oui-green-1: light-dark(oklch(98.25% 0.02 149deg), oklch(25% 0.09 141deg));
22
20
  --oui-green-2: light-dark(oklch(95% 0.03 148deg), oklch(32% 0.1 142deg));
23
21
  --oui-green-3: light-dark(oklch(90% 0.04 147deg), oklch(40% 0.09 143deg));
24
22
  --oui-green-4: light-dark(oklch(80% 0.06 146deg), oklch(50% 0.08 144deg));
@@ -29,11 +27,11 @@
29
27
  --oui-green-9: light-dark(oklch(35% 0.1 141deg), oklch(90% 0.03 149deg));
30
28
  --oui-green-10: light-dark(oklch(30% 0.09 140deg), oklch(95% 0.02 150deg));
31
29
 
32
- --oui-orange-0: light-dark(oklch(99% 0.02 60deg), oklch(20% 0.08 50deg));
33
- --oui-orange-1: light-dark(oklch(98.5% 0.035 59deg), oklch(25% 0.09 51deg));
34
- --oui-orange-2: light-dark(oklch(97% 0.05 58deg), oklch(32% 0.1 52deg));
35
- --oui-orange-3: light-dark(oklch(93% 0.07 57deg), oklch(40% 0.09 53deg));
36
- --oui-orange-4: light-dark(oklch(87% 0.1 56deg), oklch(50% 0.08 54deg));
30
+ --oui-orange-0: light-dark(oklch(99.5% 0.02 60deg), oklch(20% 0.08 50deg));
31
+ --oui-orange-1: light-dark(oklch(98.75% 0.035 59deg), oklch(25% 0.09 51deg));
32
+ --oui-orange-2: light-dark(oklch(97.5% 0.05 58deg), oklch(32% 0.1 52deg));
33
+ --oui-orange-3: light-dark(oklch(93.25% 0.07 57deg), oklch(40% 0.09 53deg));
34
+ --oui-orange-4: light-dark(oklch(87.125% 0.1 56deg), oklch(50% 0.08 54deg));
37
35
  --oui-orange-5: light-dark(oklch(76% 0.11 55deg), oklch(60% 0.07 55deg));
38
36
  --oui-orange-6: light-dark(oklch(65% 0.12 54deg), oklch(70% 0.06 56deg));
39
37
  --oui-orange-7: light-dark(oklch(55% 0.14 53deg), oklch(80% 0.05 57deg));
@@ -41,8 +39,8 @@
41
39
  --oui-orange-9: light-dark(oklch(37.5% 0.11 51deg), oklch(90% 0.03 59deg));
42
40
  --oui-orange-10: light-dark(oklch(30% 0.09 50deg), oklch(95% 0.02 60deg));
43
41
 
44
- --oui-purple-0: light-dark(oklch(99% 0.02 300deg), oklch(20% 0.08 290deg));
45
- --oui-purple-1: light-dark(oklch(98% 0.035 299deg), oklch(25% 0.09 291deg));
42
+ --oui-purple-0: light-dark(oklch(99.5% 0.02 300deg), oklch(20% 0.08 290deg));
43
+ --oui-purple-1: light-dark(oklch(98.25% 0.035 299deg), oklch(25% 0.09 291deg));
46
44
  --oui-purple-2: light-dark(oklch(95% 0.05 298deg), oklch(32% 0.1 292deg));
47
45
  --oui-purple-3: light-dark(oklch(90% 0.07 297deg), oklch(40% 0.09 293deg));
48
46
  --oui-purple-4: light-dark(oklch(80% 0.1 296deg), oklch(50% 0.08 294deg));
@@ -53,11 +51,11 @@
53
51
  --oui-purple-9: light-dark(oklch(35% 0.11 291deg), oklch(90% 0.03 299deg));
54
52
  --oui-purple-10: light-dark(oklch(30% 0.09 290deg), oklch(95% 0.02 300deg));
55
53
 
56
- --oui-red-0: light-dark(oklch(99% 0.024 25deg), oklch(20% 0.08 25deg));
57
- --oui-red-1: light-dark(oklch(98.5% 0.032 24deg), oklch(25% 0.09 24deg));
58
- --oui-red-2: light-dark(oklch(97% 0.05 23deg), oklch(32% 0.1 23deg));
59
- --oui-red-3: light-dark(oklch(93% 0.07 22deg), oklch(40% 0.09 22deg));
60
- --oui-red-4: light-dark(oklch(87% 0.1 21deg), oklch(50% 0.08 21deg));
54
+ --oui-red-0: light-dark(oklch(99.5% 0.024 25deg), oklch(20% 0.08 25deg));
55
+ --oui-red-1: light-dark(oklch(98.75% 0.032 24deg), oklch(25% 0.09 24deg));
56
+ --oui-red-2: light-dark(oklch(97.5% 0.05 23deg), oklch(32% 0.1 23deg));
57
+ --oui-red-3: light-dark(oklch(93.25% 0.07 22deg), oklch(40% 0.09 22deg));
58
+ --oui-red-4: light-dark(oklch(87.125% 0.1 21deg), oklch(50% 0.08 21deg));
61
59
  --oui-red-5: light-dark(oklch(76% 0.11 20deg), oklch(60% 0.07 20deg));
62
60
  --oui-red-6: light-dark(oklch(65% 0.12 19deg), oklch(70% 0.06 19deg));
63
61
  --oui-red-7: light-dark(oklch(55% 0.14 18deg), oklch(80% 0.05 18deg));
@@ -65,10 +63,10 @@
65
63
  --oui-red-9: light-dark(oklch(37.5% 0.11 16deg), oklch(90% 0.03 16deg));
66
64
  --oui-red-10: light-dark(oklch(30% 0.09 15deg), oklch(95% 0.02 15deg));
67
65
 
68
- --oui-yellow-0: light-dark(oklch(99% 0.02 100deg), oklch(20% 0.08 90deg));
66
+ --oui-yellow-0: light-dark(oklch(99.5% 0.02 100deg), oklch(20% 0.08 90deg));
69
67
  --oui-yellow-1: light-dark(oklch(98.5% 0.035 99deg), oklch(25% 0.09 91deg));
70
- --oui-yellow-2: light-dark(oklch(97% 0.05 98deg), oklch(32% 0.1 92deg));
71
- --oui-yellow-3: light-dark(oklch(93% 0.07 97deg), oklch(40% 0.09 93deg));
68
+ --oui-yellow-2: light-dark(oklch(97.25% 0.05 98deg), oklch(32% 0.1 92deg));
69
+ --oui-yellow-3: light-dark(oklch(93.125% 0.07 97deg), oklch(40% 0.09 93deg));
72
70
  --oui-yellow-4: light-dark(oklch(87% 0.1 96deg), oklch(50% 0.08 94deg));
73
71
  --oui-yellow-5: light-dark(oklch(78% 0.11 95deg), oklch(60% 0.07 95deg));
74
72
  --oui-yellow-6: light-dark(oklch(65% 0.12 94deg), oklch(70% 0.06 96deg));
@@ -78,7 +76,7 @@
78
76
  --oui-yellow-10: light-dark(oklch(30% 0.09 90deg), oklch(95% 0.02 100deg));
79
77
 
80
78
  --oui-gray-0: light-dark(oklch(98% 0 0deg), oklch(22% 0 0deg));
81
- --oui-gray-1: light-dark(oklch(98% 0 0deg), oklch(26% 0 0deg));
79
+ --oui-gray-1: light-dark(oklch(97% 0 0deg), oklch(26% 0 0deg));
82
80
  --oui-gray-2: light-dark(oklch(95% 0 0deg), oklch(32% 0 0deg));
83
81
  --oui-gray-3: light-dark(oklch(90% 0 0deg), oklch(40% 0 0deg));
84
82
  --oui-gray-4: light-dark(oklch(80% 0 0deg), oklch(50% 0 0deg));
@@ -101,8 +99,8 @@
101
99
  --oui-slate-9: light-dark(oklch(35% 0.0075 255deg), oklch(90% 0.0075 255deg));
102
100
  --oui-slate-10: light-dark(oklch(30% 0.005 255deg), oklch(95% 0.005 255deg));
103
101
 
104
- --oui-stone-0: light-dark(oklch(99% 0.0033 95deg), oklch(22% 0.005 95deg));
105
- --oui-stone-1: light-dark(oklch(98% 0.0067 95deg), oklch(26% 0.0075 95deg));
102
+ --oui-stone-0: light-dark(oklch(99.5% 0.0033 95deg), oklch(22% 0.005 95deg));
103
+ --oui-stone-1: light-dark(oklch(98.25% 0.0067 95deg), oklch(26% 0.0075 95deg));
106
104
  --oui-stone-2: light-dark(oklch(95% 0.01 95deg), oklch(32% 0.01 95deg));
107
105
  --oui-stone-3: light-dark(oklch(90% 0.0125 95deg), oklch(40% 0.0125 95deg));
108
106
  --oui-stone-4: light-dark(oklch(80% 0.015 95deg), oklch(50% 0.015 95deg));
@@ -1,10 +1,13 @@
1
1
  /*! https://github.com/oscarpalmer/oui */
2
2
 
3
- @use './mixins.scss' as mixins;
3
+ @use './mixins/button.mixins.scss' as buttonMixins;
4
+ @use './mixins/input.mixins.scss' as inputMixins;
5
+ @use './mixins/misc.mixins.scss' as miscMixins;
6
+ @use './mixins/shadow.mixins.scss' as shadowMixins;
4
7
 
5
8
  [oui-combobox-anchor] {
6
9
  :where(&) {
7
- @include mixins.input;
10
+ @include inputMixins.input;
8
11
 
9
12
  --oui-background-value: var(--oui-absolute);
10
13
 
@@ -17,32 +20,28 @@
17
20
  position: relative;
18
21
  }
19
22
 
20
- :where(&:not([disabled], [readonly], [aria-disabled='true' i]):focus),
21
- :where(&:not([disabled], [readonly], [aria-disabled='true' i]):focus-within),
22
- :where(
23
- &:not([disabled], [readonly], [aria-disabled='true' i]):has(
24
- + [oui-combobox-content]:focus-within
25
- )
26
- ) {
27
- @include mixins.input-focus;
28
- }
23
+ &:not([disabled], [readonly], [aria-disabled='true' i], [aria-readonly='true' i]) {
24
+ :where(&:focus-visible, &:focus-within, &:has(+ [oui-combobox-content]:focus-within)) {
25
+ @include inputMixins.input-focus;
26
+ }
29
27
 
30
- @media (hover: hover) {
31
- :where(
32
- &:not([disabled], [readonly], [aria-disabled='true' i], [aria-readonly='true' i]):hover
33
- ) {
34
- @include mixins.input-hover;
28
+ @media (hover: hover) {
29
+ :where(&:hover) {
30
+ @include inputMixins.input-hover;
31
+ }
35
32
  }
36
33
  }
37
34
 
38
- :where(&:is([disabled], [readonly], [aria-disabled='true' i], [aria-readonly='true' i])) {
39
- --oui-foreground-percentage: 25%;
35
+ &:is([disabled], [readonly], [aria-disabled='true' i], [aria-readonly='true' i]) {
36
+ :where(&) {
37
+ --oui-foreground-percentage: 25%;
40
38
 
41
- font-style: italic;
42
- }
39
+ font-style: italic;
40
+ }
43
41
 
44
- :where(&:is([disabled], [readonly], [aria-disabled='true' i], [aria-readonly='true' i]):focus) {
45
- --oui-outline-percentage: 75%;
42
+ :where(&:focus-visible, &:focus-within, &:has(+ [oui-combobox-content]:focus-within)) {
43
+ --oui-outline-percentage: 75%;
44
+ }
46
45
  }
47
46
 
48
47
  :where(&:is([disabled], [aria-disabled='true' i])) {
@@ -62,8 +61,8 @@
62
61
  }
63
62
 
64
63
  :where([oui-combobox-content]) {
65
- @include mixins.floatable;
66
- @include mixins.shadow-overlay;
64
+ @include miscMixins.floatable;
65
+ @include shadowMixins.shadow-5;
67
66
 
68
67
  width: fit-content;
69
68
  height: fit-content;
@@ -99,7 +98,7 @@
99
98
  }
100
99
 
101
100
  :where([oui-combobox-filter-input]) {
102
- @include mixins.input;
101
+ @include inputMixins.input;
103
102
 
104
103
  --oui-background-value: var(--oui-absolute);
105
104
  --oui-border-value: var(--oui-yellow-3);
@@ -109,30 +108,6 @@
109
108
  outline-width: 0;
110
109
  border-radius: 0.25em;
111
110
  font-size: 0.875rem;
112
-
113
- :where(&:focus) {
114
- @include mixins.input-focus;
115
- }
116
-
117
- @media (hover: hover) {
118
- :where(&:hover) {
119
- @include mixins.input-hover;
120
- }
121
- }
122
-
123
- :where(&:is([disabled], [readonly], [aria-disabled='true' i], [aria-readonly='true' i])) {
124
- --oui-foreground-percentage: 25%;
125
-
126
- font-style: italic;
127
- }
128
-
129
- :where(&:is([disabled], [readonly], [aria-disabled='true' i], [aria-readonly='true' i]):focus) {
130
- --oui-outline-percentage: 75%;
131
- }
132
-
133
- :where(&:is([disabled], [aria-disabled='true' i])) {
134
- --oui-background-percentage: 50%;
135
- }
136
111
  }
137
112
 
138
113
  :where([oui-combobox-header]) {
@@ -146,7 +121,7 @@
146
121
  }
147
122
 
148
123
  :where([oui-combobox-hidden]) {
149
- @include mixins.visually-hidden;
124
+ @include miscMixins.visually-hidden;
150
125
 
151
126
  position: absolute;
152
127
  }
@@ -169,7 +144,6 @@
169
144
  outline-offset: -4px;
170
145
  line-height: 1.25;
171
146
  cursor: pointer;
172
- transition: 0.125s ease-in-out;
173
147
  }
174
148
 
175
149
  :where(&[aria-selected='true' i]) {
@@ -182,9 +156,7 @@
182
156
  margin: 0 0.75em 0 0;
183
157
  }
184
158
 
185
- :where(
186
- oui-combobox:not([disabled], [readonly], [aria-disabled='true' i], [aria-readonly='true' i]) &
187
- ) {
159
+ oui-combobox:not([disabled], [readonly], [aria-disabled='true' i], [aria-readonly='true' i]) & {
188
160
  @media (hover: hover) {
189
161
  :where(&:hover) {
190
162
  background-color: var(--oui-blue-1);
@@ -215,11 +187,11 @@
215
187
 
216
188
  [oui-combobox-selection-item] {
217
189
  :where(&) {
218
- @include mixins.button;
190
+ @include buttonMixins.button;
219
191
 
220
- --oui-background-value: var(--oui-blue-1);
221
- --oui-foreground-percentage: 12.5%;
192
+ --oui-background-value: var(--oui-blue-2);
222
193
  --oui-foreground-value: var(--oui-blue-8);
194
+ --oui-outline-value: var(--oui-blue-6);
223
195
  --oui-shadow-percentage: 90%;
224
196
 
225
197
  padding: 0.5em 1em;
@@ -1,11 +1,12 @@
1
1
  /*! https://github.com/oscarpalmer/oui */
2
2
 
3
- @use './mixins' as mixins;
3
+ @use './mixins/misc.mixins.scss' as miscMixins;
4
+ @use './mixins/shadow.mixins.scss' as shadowMixins;
4
5
 
5
6
  @mixin thumb($background, $shadow) {
6
- @include mixins.shadow-small(
7
+ @include shadowMixins.shadow-0(
7
8
  color-mix(in oklab, $shadow, transparent 33%),
8
- color-mix(in oklab, white, transparent 82.5%)
9
+ color-mix(in oklab, var(--oui-absolute), transparent 82.5%)
9
10
  );
10
11
 
11
12
  appearance: none;
@@ -28,7 +29,7 @@
28
29
 
29
30
  .oui-card {
30
31
  :where(&) {
31
- @include mixins.card;
32
+ @include miscMixins.card;
32
33
  }
33
34
  }
34
35
 
@@ -56,7 +57,7 @@
56
57
  mask-size: contain;
57
58
  mask-position: center;
58
59
  mask-repeat: no-repeat;
59
- transition: 0.125s ease-in-out;
60
+ transition: transform 0.125s ease-in-out;
60
61
  transform: rotate(-90deg);
61
62
  }
62
63
 
@@ -85,7 +86,7 @@
85
86
 
86
87
  .oui-formatted {
87
88
  :where(&) {
88
- @include mixins.card;
89
+ @include miscMixins.card;
89
90
 
90
91
  color: var(--oui-gray-8);
91
92
  font-family: monospace, monospace;
@@ -151,3 +152,30 @@
151
152
  }
152
153
  }
153
154
  }
155
+
156
+ .oui-shadow {
157
+ :where(&),
158
+ :where(&-0) {
159
+ @include shadowMixins.shadow-0;
160
+ }
161
+
162
+ :where(&-1) {
163
+ @include shadowMixins.shadow-1;
164
+ }
165
+
166
+ :where(&-2) {
167
+ @include shadowMixins.shadow-2;
168
+ }
169
+
170
+ :where(&-3) {
171
+ @include shadowMixins.shadow-3;
172
+ }
173
+
174
+ :where(&-4) {
175
+ @include shadowMixins.shadow-4;
176
+ }
177
+
178
+ :where(&-5) {
179
+ @include shadowMixins.shadow-5;
180
+ }
181
+ }