@oscarpalmer/oui 0.9.0 → 0.10.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.
@@ -1,113 +1,115 @@
1
+ /*! https://github.com/oscarpalmer/oui */
2
+
1
3
  @use './mixins' as mixins;
2
4
 
3
5
  :root {
4
6
  --oui-absolute: light-dark(white, black);
5
7
 
6
- --oui-blue-0: light-dark(oklch(0.98 0.015 260), oklch(0.18 0.1 250));
7
- --oui-blue-1: light-dark(oklch(0.95 0.03 259), oklch(0.24 0.12 251));
8
- --oui-blue-2: light-dark(oklch(0.9 0.05 258), oklch(0.32 0.14 252));
9
- --oui-blue-3: light-dark(oklch(0.83 0.07 257), oklch(0.4 0.16 253));
10
- --oui-blue-4: light-dark(oklch(0.75 0.09 256), oklch(0.5 0.14 254));
11
- --oui-blue-5: light-dark(oklch(0.67 0.11 255), oklch(0.6 0.11 255));
12
- --oui-blue-6: light-dark(oklch(0.58 0.14 254), oklch(0.7 0.09 256));
13
- --oui-blue-7: light-dark(oklch(0.48 0.16 253), oklch(0.78 0.07 257));
14
- --oui-blue-8: light-dark(oklch(0.34 0.14 252), oklch(0.85 0.05 258));
15
- --oui-blue-9: light-dark(oklch(0.22 0.12 251), oklch(0.91 0.03 259));
16
- --oui-blue-10: light-dark(oklch(0.18 0.1 250), oklch(0.97 0.01 260));
8
+ --oui-blue-0: light-dark(oklch(0.99 0.01 260), oklch(0.2 0.08 250));
9
+ --oui-blue-1: light-dark(oklch(0.98 0.02 259), oklch(0.25 0.09 251));
10
+ --oui-blue-2: light-dark(oklch(0.95 0.03 258), oklch(0.32 0.1 252));
11
+ --oui-blue-3: light-dark(oklch(0.90 0.04 257), oklch(0.40 0.09 253));
12
+ --oui-blue-4: light-dark(oklch(0.80 0.06 256), oklch(0.5 0.08 254));
13
+ --oui-blue-5: light-dark(oklch(0.70 0.08 255), oklch(0.6 0.07 255));
14
+ --oui-blue-6: light-dark(oklch(0.60 0.1 254), oklch(0.7 0.06 256));
15
+ --oui-blue-7: light-dark(oklch(0.50 0.12 253), oklch(0.8 0.05 257));
16
+ --oui-blue-8: light-dark(oklch(0.42 0.11 252), oklch(0.85 0.04 258));
17
+ --oui-blue-9: light-dark(oklch(0.35 0.1 251), oklch(0.9 0.03 259));
18
+ --oui-blue-10: light-dark(oklch(0.3 0.09 250), oklch(0.95 0.02 260));
17
19
 
18
- --oui-green-0: light-dark(oklch(0.98 0.015 150), oklch(0.18 0.1 140));
19
- --oui-green-1: light-dark(oklch(0.95 0.03 149), oklch(0.24 0.12 141));
20
- --oui-green-2: light-dark(oklch(0.9 0.05 148), oklch(0.32 0.14 142));
21
- --oui-green-3: light-dark(oklch(0.83 0.07 147), oklch(0.4 0.15 143));
22
- --oui-green-4: light-dark(oklch(0.75 0.09 146), oklch(0.5 0.14 144));
23
- --oui-green-5: light-dark(oklch(0.67 0.11 145), oklch(0.6 0.12 145));
24
- --oui-green-6: light-dark(oklch(0.58 0.14 144), oklch(0.7 0.09 146));
25
- --oui-green-7: light-dark(oklch(0.48 0.15 143), oklch(0.78 0.07 147));
26
- --oui-green-8: light-dark(oklch(0.34 0.14 142), oklch(0.85 0.05 148));
27
- --oui-green-9: light-dark(oklch(0.22 0.12 141), oklch(0.91 0.03 149));
28
- --oui-green-10: light-dark(oklch(0.18 0.1 140), oklch(0.97 0.01 150));
20
+ --oui-green-0: light-dark(oklch(0.99 0.01 150), oklch(0.2 0.08 140));
21
+ --oui-green-1: light-dark(oklch(0.98 0.02 149), oklch(0.25 0.09 141));
22
+ --oui-green-2: light-dark(oklch(0.95 0.03 148), oklch(0.32 0.1 142));
23
+ --oui-green-3: light-dark(oklch(0.90 0.04 147), oklch(0.4 0.09 143));
24
+ --oui-green-4: light-dark(oklch(0.80 0.06 146), oklch(0.5 0.08 144));
25
+ --oui-green-5: light-dark(oklch(0.70 0.08 145), oklch(0.6 0.07 145));
26
+ --oui-green-6: light-dark(oklch(0.60 0.1 144), oklch(0.7 0.06 146));
27
+ --oui-green-7: light-dark(oklch(0.50 0.12 143), oklch(0.8 0.05 147));
28
+ --oui-green-8: light-dark(oklch(0.42 0.11 142), oklch(0.85 0.04 148));
29
+ --oui-green-9: light-dark(oklch(0.35 0.1 141), oklch(0.9 0.03 149));
30
+ --oui-green-10: light-dark(oklch(0.3 0.09 140), oklch(0.95 0.02 150));
29
31
 
30
- --oui-orange-0: light-dark(oklch(0.985 0.02 60), oklch(0.18 0.1 50));
31
- --oui-orange-1: light-dark(oklch(0.95 0.03 59), oklch(0.24 0.11 51));
32
- --oui-orange-2: light-dark(oklch(0.9 0.05 58), oklch(0.32 0.12 52));
33
- --oui-orange-3: light-dark(oklch(0.83 0.08 57), oklch(0.4 0.13 53));
34
- --oui-orange-4: light-dark(oklch(0.75 0.11 56), oklch(0.5 0.14 54));
35
- --oui-orange-5: light-dark(oklch(0.67 0.13 55), oklch(0.6 0.13 55));
36
- --oui-orange-6: light-dark(oklch(0.57 0.14 54), oklch(0.7 0.11 56));
37
- --oui-orange-7: light-dark(oklch(0.46 0.13 53), oklch(0.78 0.08 57));
38
- --oui-orange-8: light-dark(oklch(0.34 0.12 53), oklch(0.85 0.05 58));
39
- --oui-orange-9: light-dark(oklch(0.22 0.11 51), oklch(0.91 0.03 59));
40
- --oui-orange-10: light-dark(oklch(0.18 0.1 50), oklch(0.97 0.02 60));
32
+ --oui-orange-0: light-dark(oklch(0.995 0.02 60), oklch(0.2 0.08 50));
33
+ --oui-orange-1: light-dark(oklch(0.99 0.035 59), oklch(0.25 0.09 51));
34
+ --oui-orange-2: light-dark(oklch(0.97 0.05 58), oklch(0.32 0.1 52));
35
+ --oui-orange-3: light-dark(oklch(0.93 0.07 57), oklch(0.4 0.09 53));
36
+ --oui-orange-4: light-dark(oklch(0.85 0.1 56), oklch(0.5 0.08 54));
37
+ --oui-orange-5: light-dark(oklch(0.70 0.11 55), oklch(0.6 0.07 55));
38
+ --oui-orange-6: light-dark(oklch(0.60 0.12 54), oklch(0.7 0.06 56));
39
+ --oui-orange-7: light-dark(oklch(0.50 0.14 53), oklch(0.8 0.05 57));
40
+ --oui-orange-8: light-dark(oklch(0.42 0.12 53), oklch(0.85 0.04 58));
41
+ --oui-orange-9: light-dark(oklch(0.35 0.11 51), oklch(0.9 0.03 59));
42
+ --oui-orange-10: light-dark(oklch(0.3 0.09 50), oklch(0.95 0.02 60));
41
43
 
42
- --oui-purple-0: light-dark(oklch(0.98 0.015 300), oklch(0.18 0.1 290));
43
- --oui-purple-1: light-dark(oklch(0.95 0.03 299), oklch(0.24 0.11 291));
44
- --oui-purple-2: light-dark(oklch(0.9 0.05 298), oklch(0.32 0.12 292));
45
- --oui-purple-3: light-dark(oklch(0.83 0.07 297), oklch(0.4 0.13 293));
46
- --oui-purple-4: light-dark(oklch(0.75 0.09 296), oklch(0.5 0.12 294));
47
- --oui-purple-5: light-dark(oklch(0.67 0.11 295), oklch(0.6 0.11 295));
48
- --oui-purple-6: light-dark(oklch(0.58 0.12 294), oklch(0.7 0.09 296));
49
- --oui-purple-7: light-dark(oklch(0.48 0.13 293), oklch(0.78 0.07 297));
50
- --oui-purple-8: light-dark(oklch(0.34 0.12 292), oklch(0.85 0.05 298));
51
- --oui-purple-9: light-dark(oklch(0.22 0.11 291), oklch(0.91 0.03 299));
52
- --oui-purple-10: light-dark(oklch(0.18 0.1 290), oklch(0.97 0.01 300));
44
+ --oui-purple-0: light-dark(oklch(0.99 0.02 300), oklch(0.2 0.08 290));
45
+ --oui-purple-1: light-dark(oklch(0.98 0.035 299), oklch(0.25 0.09 291));
46
+ --oui-purple-2: light-dark(oklch(0.95 0.05 298), oklch(0.32 0.1 292));
47
+ --oui-purple-3: light-dark(oklch(0.90 0.07 297), oklch(0.4 0.09 293));
48
+ --oui-purple-4: light-dark(oklch(0.80 0.1 296), oklch(0.5 0.08 294));
49
+ --oui-purple-5: light-dark(oklch(0.70 0.11 295), oklch(0.6 0.07 295));
50
+ --oui-purple-6: light-dark(oklch(0.60 0.12 294), oklch(0.7 0.06 296));
51
+ --oui-purple-7: light-dark(oklch(0.50 0.14 293), oklch(0.8 0.05 297));
52
+ --oui-purple-8: light-dark(oklch(0.42 0.12 292), oklch(0.85 0.04 298));
53
+ --oui-purple-9: light-dark(oklch(0.35 0.11 291), oklch(0.9 0.03 299));
54
+ --oui-purple-10: light-dark(oklch(0.3 0.09 290), oklch(0.95 0.02 300));
53
55
 
54
- --oui-red-0: light-dark(oklch(0.98 0.015 15), oklch(0.18 0.1 25));
55
- --oui-red-1: light-dark(oklch(0.95 0.025 16), oklch(0.24 0.125 24));
56
- --oui-red-2: light-dark(oklch(0.9 0.045 17), oklch(0.32 0.15 23));
57
- --oui-red-3: light-dark(oklch(0.83 0.08 18), oklch(0.4 0.17 22));
58
- --oui-red-4: light-dark(oklch(0.75 0.11 19), oklch(0.5 0.16 21));
59
- --oui-red-5: light-dark(oklch(0.67 0.15 20), oklch(0.6 0.15 20));
60
- --oui-red-6: light-dark(oklch(0.58 0.16 21), oklch(0.7 0.11 19));
61
- --oui-red-7: light-dark(oklch(0.48 0.17 22), oklch(0.78 0.08 18));
62
- --oui-red-8: light-dark(oklch(0.34 0.15 23), oklch(0.85 0.045 17));
63
- --oui-red-9: light-dark(oklch(0.22 0.125 24), oklch(0.91 0.025 16));
64
- --oui-red-10: light-dark(oklch(0.18 0.1 25), oklch(0.97 0.01 15));
56
+ --oui-red-0: light-dark(oklch(0.995 0.024 25), oklch(0.2 0.08 25));
57
+ --oui-red-1: light-dark(oklch(0.99 0.032 24), oklch(0.25 0.09 24));
58
+ --oui-red-2: light-dark(oklch(0.96 0.05 23), oklch(0.32 0.1 23));
59
+ --oui-red-3: light-dark(oklch(0.93 0.07 22), oklch(0.4 0.09 22));
60
+ --oui-red-4: light-dark(oklch(0.85 0.1 21), oklch(0.5 0.08 21));
61
+ --oui-red-5: light-dark(oklch(0.72 0.11 20), oklch(0.6 0.07 20));
62
+ --oui-red-6: light-dark(oklch(0.60 0.12 19), oklch(0.7 0.06 19));
63
+ --oui-red-7: light-dark(oklch(0.50 0.14 18), oklch(0.8 0.05 18));
64
+ --oui-red-8: light-dark(oklch(0.42 0.12 17), oklch(0.85 0.04 17));
65
+ --oui-red-9: light-dark(oklch(0.35 0.11 16), oklch(0.9 0.03 16));
66
+ --oui-red-10: light-dark(oklch(0.3 0.09 15), oklch(0.95 0.02 15));
65
67
 
66
- --oui-yellow-0: light-dark(oklch(0.985 0.02 100), oklch(0.18 0.1 90));
67
- --oui-yellow-1: light-dark(oklch(0.955 0.04 99), oklch(0.24 0.12 91));
68
- --oui-yellow-2: light-dark(oklch(0.915 0.08 98), oklch(0.32 0.14 92));
69
- --oui-yellow-3: light-dark(oklch(0.865 0.12 97), oklch(0.4 0.16 93));
70
- --oui-yellow-4: light-dark(oklch(0.805 0.14 96), oklch(0.5 0.18 94));
71
- --oui-yellow-5: light-dark(oklch(0.735 0.16 95), oklch(0.6 0.16 95));
72
- --oui-yellow-6: light-dark(oklch(0.635 0.18 94), oklch(0.7 0.14 96));
73
- --oui-yellow-7: light-dark(oklch(0.515 0.16 93), oklch(0.78 0.12 97));
74
- --oui-yellow-8: light-dark(oklch(0.385 0.14 92), oklch(0.85 0.08 98));
75
- --oui-yellow-9: light-dark(oklch(0.255 0.12 91), oklch(0.91 0.04 99));
76
- --oui-yellow-10: light-dark(oklch(0.1875 0.1 90), oklch(0.97 0.02 100));
68
+ --oui-yellow-0: light-dark(oklch(0.995 0.02 100), oklch(0.2 0.08 90));
69
+ --oui-yellow-1: light-dark(oklch(0.99 0.035 99), oklch(0.25 0.09 91));
70
+ --oui-yellow-2: light-dark(oklch(0.97 0.05 98), oklch(0.33 0.1 92));
71
+ --oui-yellow-3: light-dark(oklch(0.93 0.07 97), oklch(0.4 0.09 93));
72
+ --oui-yellow-4: light-dark(oklch(0.85 0.1 96), oklch(0.5 0.08 94));
73
+ --oui-yellow-5: light-dark(oklch(0.72 0.11 95), oklch(0.6 0.07 95));
74
+ --oui-yellow-6: light-dark(oklch(0.60 0.12 94), oklch(0.7 0.06 96));
75
+ --oui-yellow-7: light-dark(oklch(0.50 0.14 93), oklch(0.8 0.05 97));
76
+ --oui-yellow-8: light-dark(oklch(0.42 0.12 92), oklch(0.85 0.04 98));
77
+ --oui-yellow-9: light-dark(oklch(0.35 0.11 91), oklch(0.9 0.03 99));
78
+ --oui-yellow-10: light-dark(oklch(0.3 0.09 90), oklch(0.95 0.02 100));
77
79
 
78
- --oui-gray-0: light-dark(oklch(0.99 0 0), oklch(0.18 0 0));
79
- --oui-gray-1: light-dark(oklch(0.97 0 0), oklch(0.24 0 0));
80
- --oui-gray-2: light-dark(oklch(0.94 0 0), oklch(0.32 0 0));
81
- --oui-gray-3: light-dark(oklch(0.88 0 0), oklch(0.4 0 0));
82
- --oui-gray-4: light-dark(oklch(0.78 0 0), oklch(0.5 0 0));
83
- --oui-gray-5: light-dark(oklch(0.67 0 0), oklch(0.6 0 0));
84
- --oui-gray-6: light-dark(oklch(0.58 0 0), oklch(0.7 0 0));
85
- --oui-gray-7: light-dark(oklch(0.48 0 0), oklch(0.78 0 0));
86
- --oui-gray-8: light-dark(oklch(0.34 0 0), oklch(0.85 0 0));
87
- --oui-gray-9: light-dark(oklch(0.22 0 0), oklch(0.91 0 0));
88
- --oui-gray-10: light-dark(oklch(0.18 0 0), oklch(0.97 0 0));
80
+ --oui-gray-0: light-dark(oklch(0.98 0 0), oklch(0.22 0 0));
81
+ --oui-gray-1: light-dark(oklch(0.98 0 0), oklch(0.26 0 0));
82
+ --oui-gray-2: light-dark(oklch(0.95 0 0), oklch(0.32 0 0));
83
+ --oui-gray-3: light-dark(oklch(0.90 0 0), oklch(0.4 0 0));
84
+ --oui-gray-4: light-dark(oklch(0.80 0 0), oklch(0.5 0 0));
85
+ --oui-gray-5: light-dark(oklch(0.70 0 0), oklch(0.6 0 0));
86
+ --oui-gray-6: light-dark(oklch(0.60 0 0), oklch(0.7 0 0));
87
+ --oui-gray-7: light-dark(oklch(0.50 0 0), oklch(0.8 0 0));
88
+ --oui-gray-8: light-dark(oklch(0.42 0 0), oklch(0.85 0 0));
89
+ --oui-gray-9: light-dark(oklch(0.35 0 0), oklch(0.9 0 0));
90
+ --oui-gray-10: light-dark(oklch(0.3 0 0), oklch(0.95 0 0));
89
91
 
90
- --oui-slate-0: light-dark(oklch(0.99 0.0033 255), oklch(0.18 0.005 255));
91
- --oui-slate-1: light-dark(oklch(0.97 0.0067 255), oklch(0.24 0.0075 255));
92
- --oui-slate-2: light-dark(oklch(0.94 0.01 255), oklch(0.32 0.01 255));
93
- --oui-slate-3: light-dark(oklch(0.88 0.0125 255), oklch(0.4 0.0125 255));
94
- --oui-slate-4: light-dark(oklch(0.78 0.015 255), oklch(0.5 0.015 255));
95
- --oui-slate-5: light-dark(oklch(0.67 0.02 255), oklch(0.6 0.02 255));
96
- --oui-slate-6: light-dark(oklch(0.58 0.015 255), oklch(0.7 0.015 255));
97
- --oui-slate-7: light-dark(oklch(0.48 0.0125 255), oklch(0.78 0.0125 255));
98
- --oui-slate-8: light-dark(oklch(0.34 0.01 255), oklch(0.85 0.01 255));
99
- --oui-slate-9: light-dark(oklch(0.22 0.0075 255), oklch(0.91 0.0075 255));
100
- --oui-slate-10: light-dark(oklch(0.18 0.005 255), oklch(0.97 0.005 255));
92
+ --oui-slate-0: light-dark(oklch(0.99 0.0025 255), oklch(0.22 0.005 255));
93
+ --oui-slate-1: light-dark(oklch(0.98 0.005 255), oklch(0.26 0.0075 255));
94
+ --oui-slate-2: light-dark(oklch(0.95 0.0075 255), oklch(0.32 0.01 255));
95
+ --oui-slate-3: light-dark(oklch(0.90 0.01 255), oklch(0.4 0.0125 255));
96
+ --oui-slate-4: light-dark(oklch(0.80 0.015 255), oklch(0.5 0.015 255));
97
+ --oui-slate-5: light-dark(oklch(0.70 0.02 255), oklch(0.6 0.02 255));
98
+ --oui-slate-6: light-dark(oklch(0.60 0.015 255), oklch(0.7 0.015 255));
99
+ --oui-slate-7: light-dark(oklch(0.50 0.0125 255), oklch(0.8 0.0125 255));
100
+ --oui-slate-8: light-dark(oklch(0.42 0.01 255), oklch(0.85 0.01 255));
101
+ --oui-slate-9: light-dark(oklch(0.35 0.0075 255), oklch(0.9 0.0075 255));
102
+ --oui-slate-10: light-dark(oklch(0.3 0.005 255), oklch(0.95 0.005 255));
101
103
 
102
- --oui-stone-0: light-dark(oklch(0.99 0.0033 95), oklch(0.18 0.005 95));
103
- --oui-stone-1: light-dark(oklch(0.97 0.0067 95), oklch(0.24 0.0075 95));
104
- --oui-stone-2: light-dark(oklch(0.94 0.01 95), oklch(0.32 0.01 95));
105
- --oui-stone-3: light-dark(oklch(0.88 0.0125 95), oklch(0.4 0.0125 95));
106
- --oui-stone-4: light-dark(oklch(0.78 0.015 95), oklch(0.5 0.015 95));
107
- --oui-stone-5: light-dark(oklch(0.67 0.02 95), oklch(0.6 0.02 95));
108
- --oui-stone-6: light-dark(oklch(0.58 0.015 95), oklch(0.7 0.015 95));
109
- --oui-stone-7: light-dark(oklch(0.48 0.0125 95), oklch(0.78 0.0125 95));
110
- --oui-stone-8: light-dark(oklch(0.34 0.01 95), oklch(0.85 0.01 95));
111
- --oui-stone-9: light-dark(oklch(0.22 0.0075 95), oklch(0.91 0.0075 95));
112
- --oui-stone-10: light-dark(oklch(0.18 0.005 95), oklch(0.97 0.005 95));
104
+ --oui-stone-0: light-dark(oklch(0.99 0.0033 95), oklch(0.22 0.005 95));
105
+ --oui-stone-1: light-dark(oklch(0.98 0.0067 95), oklch(0.26 0.0075 95));
106
+ --oui-stone-2: light-dark(oklch(0.95 0.01 95), oklch(0.32 0.01 95));
107
+ --oui-stone-3: light-dark(oklch(0.90 0.0125 95), oklch(0.4 0.0125 95));
108
+ --oui-stone-4: light-dark(oklch(0.80 0.015 95), oklch(0.5 0.015 95));
109
+ --oui-stone-5: light-dark(oklch(0.70 0.02 95), oklch(0.6 0.02 95));
110
+ --oui-stone-6: light-dark(oklch(0.60 0.015 95), oklch(0.7 0.015 95));
111
+ --oui-stone-7: light-dark(oklch(0.50 0.0125 95), oklch(0.8 0.0125 95));
112
+ --oui-stone-8: light-dark(oklch(0.42 0.01 95), oklch(0.85 0.01 95));
113
+ --oui-stone-9: light-dark(oklch(0.35 0.0075 95), oklch(0.9 0.0075 95));
114
+ --oui-stone-10: light-dark(oklch(0.3 0.005 95), oklch(0.95 0.005 95));
113
115
  }
package/src/css/form.scss CHANGED
@@ -1,5 +1,15 @@
1
+ /*! https://github.com/oscarpalmer/oui */
2
+
1
3
  @use 'mixins.scss' as mixins;
2
4
 
5
+ @mixin input {
6
+ outline: 4px solid transparent;
7
+ outline-offset: 0;
8
+ background-color: var(--oui-absolute);
9
+ box-shadow: inset 0 1px 2px 0 color-mix(in oklab, var(--oui-gray-10), transparent 80%);
10
+ transition: 0.125s ease-in-out;
11
+ }
12
+
3
13
  :where(.oui-fieldset) {
4
14
  padding: 1em;
5
15
  border: 1px solid var(--oui-gray-3);
@@ -7,68 +17,180 @@
7
17
  }
8
18
 
9
19
  .oui-input {
10
- :where(&) {
20
+ :where(&:not([type='range' i])) {
21
+ @include input;
22
+
11
23
  padding: 0.5em 0.75em;
12
- outline: 3px solid transparent;
13
- outline-offset: 0;
14
- background-color: var(--oui-absolute);
15
24
  border-color: var(--oui-gray-3);
16
25
  border-radius: 0.25em;
17
- box-shadow: inset 0 1px 2px 0
18
- color-mix(in oklab, var(--oui-gray-10), transparent 80%);
19
- transition: 0.125s ease-in-out;
20
26
  }
21
27
 
22
- :where(&:not(textarea)) {
28
+ :where(&:not([type='range' i], select[multiple], textarea)) {
23
29
  overflow: hidden;
24
30
  white-space: nowrap;
25
31
  text-overflow: ellipsis;
26
32
  }
27
33
 
28
- :where(
29
- &:is(
30
- [type='date'],
31
- [type='datetime-local'],
32
- [type='month'],
33
- [type='number'],
34
- [type='tel'],
35
- [type='time'],
36
- [type='url'],
37
- [type='week']
38
- )
39
- ) {
34
+ :where(&:is([list])) {
35
+ &::-webkit-calendar-picker-indicator {
36
+ display: none !important;
37
+ }
38
+ }
39
+
40
+ :where(&:is([type='color' i])) {
41
+ padding: 0;
42
+ }
43
+
44
+ :where(&:is([type='date' i],
45
+ [type='datetime-local' i],
46
+ [type='month' i],
47
+ [type='number' i],
48
+ [type='tel' i],
49
+ [type='time' i],
50
+ [type='url' i],
51
+ [type='week' i])) {
40
52
  font-variant-numeric: tabular-nums;
41
53
  }
42
54
 
43
- :where(
44
- &.oui-validateable:not([disabled], [aria-disabled='true']):is(
45
- :user-invalid,
46
- [aria-invalid='true']
47
- )
48
- ) {
49
- outline-color: color-mix(in oklab, var(--oui-red-6), transparent 60%);
50
- border-color: var(--oui-red-6);
55
+ :where(&:is([type='file' i])) {
56
+ padding-left: .5em;
57
+
58
+ &::file-selector-button {
59
+ padding: .5em .75em;
60
+ margin: 0 .75em 0 0;
61
+ background-color: var(--oui-gray-1);
62
+ border: 1px solid var(--oui-gray-3);
63
+ border-radius: .25em;
64
+ box-shadow: inset 0 1px 0 0 var(--oui-gray-0), 0 1px 2px 0 rgba(0, 0, 0, 0.125);
65
+ color: var(--oui-gray-8);
66
+ font-size: .75em;
67
+ line-height: 1;
68
+ transition: .125s ease-in-out;
69
+ cursor: pointer;
70
+ }
71
+ }
72
+
73
+ :where(&:is([type='range' i])) {
74
+ appearance: none;
75
+ outline: none;
76
+
77
+ &::range-track {
78
+ @include input;
79
+
80
+ appearance: none;
81
+ width: 100%;
82
+ height: 0.75em;
83
+ border: 1px solid var(--oui-gray-3);
84
+ border-radius: .75em;
85
+ position: relative;
86
+ }
87
+
88
+ &::range-thumb {
89
+ appearance: none;
90
+ width: 1.25em;
91
+ height: 1.25em;
92
+ background-color: var(--oui-blue-6);
93
+ outline: 4px solid transparent;
94
+ border: 2px solid var(--oui-absolute);
95
+ border-radius: 1.25em;
96
+ box-shadow: 0 1px 2px 2px rgba(0, 0, 0, 0.125);
97
+ transition: .125s ease-in-out;
98
+ cursor: pointer;
99
+ }
100
+ }
101
+
102
+ :where(&.oui-validatable:not([disabled], [aria-disabled='true' i]):is(:user-invalid,
103
+ [aria-invalid='true' i])) {
104
+ & {
105
+ outline-color: color-mix(in oklab, var(--oui-red-6), transparent 60%);
106
+ border-color: var(--oui-red-6);
107
+ }
108
+
109
+ &::range-track {
110
+ outline-color: color-mix(in oklab, var(--oui-red-6), transparent 60%);
111
+ border-color: var(--oui-red-6);
112
+ }
113
+
114
+ &::file-selector-button {
115
+ background-color: var(--oui-red-0);
116
+ border-color: var(--oui-red-2);
117
+ color: var(--oui-red-9);
118
+ }
119
+
120
+ &::range-thumb {
121
+ background-color: var(--oui-red-6);
122
+ }
51
123
  }
52
124
 
53
- :where(
54
- &.oui-validateable:not([disabled], [aria-disabled='true']):is(
55
- :user-valid,
56
- [aria-invalid='false']
57
- )
58
- ) {
59
- outline-color: color-mix(in oklab, var(--oui-green-6), transparent 60%);
60
- border-color: var(--oui-green-6);
125
+ :where(&.oui-validatable:not([disabled], [aria-disabled='true' i]):is(:user-valid,
126
+ [aria-invalid='false' i])) {
127
+ & {
128
+ outline-color: color-mix(in oklab, var(--oui-green-6), transparent 60%);
129
+ border-color: var(--oui-green-6);
130
+ }
131
+
132
+ &::range-track {
133
+ outline-color: color-mix(in oklab, var(--oui-green-6), transparent 60%);
134
+ border-color: var(--oui-green-6);
135
+ }
136
+
137
+ &::file-selector-button {
138
+ background-color: var(--oui-green-0);
139
+ border-color: var(--oui-green-3);
140
+ color: var(--oui-green-9);
141
+ }
142
+
143
+ &::range-thumb {
144
+ background-color: var(--oui-green-6);
145
+ }
61
146
  }
62
147
 
63
- :where(&:not([disabled], [aria-disabled='true']):focus) {
148
+ :where(&:not([disabled], [aria-disabled='true' i]):focus) {
64
149
  outline-color: color-mix(in oklab, var(--oui-blue-6), transparent 60%);
65
150
  border-color: var(--oui-blue-6);
151
+
152
+ &::file-selector-button {
153
+ background-color: var(--oui-blue-0);
154
+ border-color: var(--oui-blue-3);
155
+ color: var(--oui-blue-9);
156
+ }
157
+
158
+ &::range-track,
159
+ &::range-thumb {
160
+ outline-color: color-mix(in oklab, var(--oui-blue-6), transparent 60%);
161
+ }
162
+
163
+ &::range-track {
164
+ border-color: var(--oui-blue-6);
165
+ }
166
+
167
+ &::range-thumb {
168
+ background-color: var(--oui-blue-6);
169
+ box-shadow: 0 1px 2px 2px rgba(0, 0, 0, 0.25);
170
+ }
66
171
  }
67
172
 
68
173
  @media (hover: hover) {
69
- :where(&:not([disabled], [aria-disabled='true']):hover) {
70
- outline-color: color-mix(in oklab, var(--oui-blue-6), transparent 80%);
71
- border-color: var(--oui-blue-6);
174
+ :where(&:not([disabled], [aria-disabled='true' i]):hover) {
175
+ & {
176
+ outline-color: color-mix(in oklab, var(--oui-blue-6), transparent 80%);
177
+ border-color: var(--oui-blue-6);
178
+ }
179
+
180
+ &::range-track {
181
+ outline-color: color-mix(in oklab, var(--oui-blue-6), transparent 80%);
182
+ border-color: var(--oui-blue-6);
183
+ }
184
+
185
+ &::file-selector-button {
186
+ background-color: var(--oui-blue-0);
187
+ border-color: var(--oui-blue-3);
188
+ color: var(--oui-blue-9);
189
+ }
190
+
191
+ &::range-thumb {
192
+ background-color: var(--oui-blue-5);
193
+ }
72
194
  }
73
195
  }
74
196
 
@@ -76,17 +198,65 @@
76
198
  color: color-mix(in oklab, currentColor, transparent 12.5%);
77
199
  }
78
200
 
79
- :where(&[disabled], &[aria-disabled='true']) {
80
- background-color: color-mix(in oklab, var(--oui-gray-0), transparent 50%);
81
- color: color-mix(in oklab, currentColor, transparent 25%);
201
+ :where(&[disabled], &[aria-disabled='true' i]) {
202
+ & {
203
+ background-color: color-mix(in oklab, var(--oui-gray-0), transparent 50%);
204
+ color: color-mix(in oklab, currentColor, transparent 25%);
205
+ font-style: italic;
206
+ }
207
+
208
+ &::range-track {
209
+ background-color: color-mix(in oklab, var(--oui-gray-0), transparent 50%);
210
+ color: color-mix(in oklab, currentColor, transparent 25%);
211
+ font-style: italic;
212
+ }
213
+
214
+ &::file-selector-button,
215
+ &::range-thumb {
216
+ background-color: var(--oui-gray-1);
217
+ }
82
218
  }
83
219
  }
84
220
 
85
- :where(select.oui-input) {
221
+ :where(select.oui-input, .oui-input[list]) {
86
222
  padding-right: 2em;
87
223
  background-position: right 0.5em center;
88
224
  }
89
225
 
226
+ select.oui-input:is([multiple]) {
227
+ :where(&) {
228
+ --oui-off: attr(oui-off);
229
+ --oui-on: attr(oui-on, '\2713');
230
+
231
+ padding: 0;
232
+ }
233
+
234
+ :where(& > option) {
235
+ padding: 0.5em 0.75em;
236
+ }
237
+
238
+ :where(&[oui-off] > option) {
239
+ &::before {
240
+ content: var(--oui-off);
241
+ margin: 0 0.75em 0 0;
242
+ }
243
+ }
244
+
245
+ :where(& > option:nth-of-type(2n)) {
246
+ background-color: color-mix(in oklab, var(--oui-blue-0), transparent 67%)
247
+ }
248
+
249
+ :where(& > option:checked) {
250
+ background-color: var(--oui-blue-1);
251
+ color: var(--oui-blue-9);
252
+
253
+ &::before {
254
+ content: var(--oui-on);
255
+ margin: 0 .75em 0 0;
256
+ }
257
+ }
258
+ }
259
+
90
260
  :where(textarea.oui-input) {
91
261
  min-height: 4em;
92
262
  resize: vertical;
@@ -100,6 +270,13 @@
100
270
 
101
271
  :where(.oui-label) {
102
272
  cursor: pointer;
273
+ transition: .125s ease-in-out;
274
+
275
+ @media (hover: hover) {
276
+ :where(&:hover) {
277
+ color: var(--oui-blue-8);
278
+ }
279
+ }
103
280
  }
104
281
 
105
282
  :where(.oui-legend) {
@@ -121,7 +298,7 @@
121
298
  }
122
299
 
123
300
  &::before {
124
- outline: 3px solid transparent;
301
+ outline: 4px solid transparent;
125
302
  outline-offset: 0;
126
303
  }
127
304
  }
@@ -142,7 +319,7 @@
142
319
  }
143
320
 
144
321
  &::after {
145
- content: '\2715';
322
+ content: attr(oui-off, '\2715');
146
323
  width: 1.5em;
147
324
  height: 1.5em;
148
325
  background-color: var(--oui-absolute);
@@ -160,7 +337,7 @@
160
337
 
161
338
  :where(&:has(input:checked)) {
162
339
  &::after {
163
- content: '\2713';
340
+ content: attr(oui-on, '\2713');
164
341
  box-shadow: 0 1px 2px 1px rgba(0, 0, 0, 0.25);
165
342
  color: var(--oui-blue-8);
166
343
  right: 0.25em;
@@ -187,13 +364,13 @@
187
364
  }
188
365
  }
189
366
 
190
- :where(&:has(input[type='checkbox'])) {
367
+ :where(&:has(input[type='checkbox' i])) {
191
368
  &::before {
192
369
  border-radius: 0.25em;
193
370
  }
194
371
 
195
372
  &::after {
196
- content: '\2713';
373
+ content: attr(oui-on, '\2713');
197
374
  width: 1.5em;
198
375
  height: 1.5em;
199
376
  color: white;
@@ -205,7 +382,8 @@
205
382
  }
206
383
  }
207
384
 
208
- :where(&:has(input[type='radio'])) {
385
+ :where(&:has(input[type='radio' i])) {
386
+
209
387
  &::before,
210
388
  &::after {
211
389
  border-radius: 50%;
@@ -237,7 +415,7 @@
237
415
  }
238
416
  }
239
417
 
240
- :where(&:has(input:not([disabled], [aria-disabled='true'])):focus-within) {
418
+ :where(&:has(input:not([disabled], [aria-disabled='true' i])):focus-within) {
241
419
  color: var(--oui-blue-8);
242
420
 
243
421
  &::before {
@@ -247,7 +425,7 @@
247
425
  }
248
426
 
249
427
  @media (hover: hover) {
250
- :where(&:has(input:not([disabled], [aria-disabled='true'])):hover) {
428
+ :where(&:has(input:not([disabled], [aria-disabled='true' i])):hover) {
251
429
  color: var(--oui-blue-8);
252
430
 
253
431
  &::before {
@@ -256,20 +434,15 @@
256
434
  }
257
435
  }
258
436
 
259
- :where(
260
- &:has(input:not([disabled], [aria-disabled='true']):is(:checked)):hover
261
- )::before {
437
+ :where(&:has(input:not([disabled], [aria-disabled='true' i]):is(:checked)):hover)::before {
262
438
  background-color: color-mix(in oklab, var(--oui-blue-6), transparent 40%);
263
439
  }
264
440
  }
265
441
 
266
- :where(&:has(input[disabled], input[aria-disabled='true'])) {
442
+ :where(&:has(input[disabled], input[aria-disabled='true' i])) {
443
+ color: color-mix(in oklab, currentColor, transparent 25%);
267
444
  cursor: default;
268
445
 
269
- & {
270
- color: color-mix(in oklab, currentColor, transparent 25%);
271
- }
272
-
273
446
  &::after {
274
447
  color: color-mix(in oklab, currentColor, transparent);
275
448
  }