@nordcode/ui 2.1.1 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,12 @@
1
1
  ## 2.1.1 (2025-11-15)
2
2
 
3
- ### changes
3
+ ### fixes
4
+
5
+ - fix checkbox, radio and switch styles
6
+
7
+ ## 2.1.1 (2025-11-15)
8
+
9
+ ### fixes
4
10
 
5
11
  - properly disable animations for users who prefer reduced motion
6
12
 
package/out/bundle.css CHANGED
@@ -1210,13 +1210,13 @@
1210
1210
 
1211
1211
  @media (prefers-reduced-motion: reduce) {
1212
1212
  :where(html) {
1213
- --transition-duration-quick-1: 80ms;
1214
- --transition-duration-quick-2: .12s;
1215
- --transition-duration-moderate-1: .18s;
1216
- --transition-duration-moderate-2: .26s;
1217
- --transition-duration-gentle-1: .32s;
1218
- --transition-duration-gentle-2: .42s;
1219
- --transition-duration-calculated: 0;
1213
+ --transition-duration-quick-1: 0s;
1214
+ --transition-duration-quick-2: 0s;
1215
+ --transition-duration-moderate-1: 0s;
1216
+ --transition-duration-moderate-2: 0s;
1217
+ --transition-duration-gentle-1: 0s;
1218
+ --transition-duration-gentle-2: 0s;
1219
+ --transition-duration-calculated: 0s;
1220
1220
  --transition-duration-instant: 0s;
1221
1221
  --transition-duration-entry: 0s;
1222
1222
  --transition-duration-exit: 0s;
@@ -1002,13 +1002,13 @@
1002
1002
 
1003
1003
  @media (prefers-reduced-motion: reduce) {
1004
1004
  :where(html) {
1005
- --transition-duration-quick-1: 80ms;
1006
- --transition-duration-quick-2: .12s;
1007
- --transition-duration-moderate-1: .18s;
1008
- --transition-duration-moderate-2: .26s;
1009
- --transition-duration-gentle-1: .32s;
1010
- --transition-duration-gentle-2: .42s;
1011
- --transition-duration-calculated: 0;
1005
+ --transition-duration-quick-1: 0s;
1006
+ --transition-duration-quick-2: 0s;
1007
+ --transition-duration-moderate-1: 0s;
1008
+ --transition-duration-moderate-2: 0s;
1009
+ --transition-duration-gentle-1: 0s;
1010
+ --transition-duration-gentle-2: 0s;
1011
+ --transition-duration-calculated: 0s;
1012
1012
  --transition-duration-instant: 0s;
1013
1013
  --transition-duration-entry: 0s;
1014
1014
  --transition-duration-exit: 0s;
package/out/complete.css CHANGED
@@ -1210,13 +1210,13 @@
1210
1210
 
1211
1211
  @media (prefers-reduced-motion: reduce) {
1212
1212
  :where(html) {
1213
- --transition-duration-quick-1: 80ms;
1214
- --transition-duration-quick-2: .12s;
1215
- --transition-duration-moderate-1: .18s;
1216
- --transition-duration-moderate-2: .26s;
1217
- --transition-duration-gentle-1: .32s;
1218
- --transition-duration-gentle-2: .42s;
1219
- --transition-duration-calculated: 0;
1213
+ --transition-duration-quick-1: 0s;
1214
+ --transition-duration-quick-2: 0s;
1215
+ --transition-duration-moderate-1: 0s;
1216
+ --transition-duration-moderate-2: 0s;
1217
+ --transition-duration-gentle-1: 0s;
1218
+ --transition-duration-gentle-2: 0s;
1219
+ --transition-duration-calculated: 0s;
1220
1220
  --transition-duration-instant: 0s;
1221
1221
  --transition-duration-entry: 0s;
1222
1222
  --transition-duration-exit: 0s;
@@ -2171,8 +2171,7 @@
2171
2171
  line-height: var(--line-height-base);
2172
2172
  }
2173
2173
 
2174
- :where(input, textarea, select, .nc-input):focus, :where(input, textarea, select, .nc-input):hover:focus {
2175
- --current-background: var(--_input-background-active);
2174
+ :where(input, textarea, select, .nc-input):focus-visible {
2176
2175
  outline: var(--_input-outline);
2177
2176
  outline-offset: 0;
2178
2177
  background-color: var(--_input-background-active);
@@ -2184,7 +2183,6 @@
2184
2183
  }
2185
2184
 
2186
2185
  :where(input, textarea, select, .nc-input):hover {
2187
- --current-background: var(--_input-hover-background);
2188
2186
  background-color: var(--_input-hover-background);
2189
2187
  }
2190
2188
 
@@ -2228,8 +2226,8 @@
2228
2226
  :where(input[type="checkbox"], input[type="radio"], .nc-input-checkbox, .nc-input-radio, .nc-input-switch) {
2229
2227
  appearance: none;
2230
2228
  border: var(--_input-border);
2231
- --current-background: var(--_input-background);
2232
- background: var(--current-background);
2229
+ --current-checkbox-bg: var(--_input-background);
2230
+ background: var(--current-checkbox-bg);
2233
2231
  block-size: 1lh;
2234
2232
  inline-size: 1lh;
2235
2233
  transition: var(--transition-duration-quick-1) background var(--ease-2);
@@ -2240,6 +2238,19 @@
2240
2238
  display: inline-flex;
2241
2239
  }
2242
2240
 
2241
+ :where(input[type="checkbox"], input[type="radio"], .nc-input-checkbox, .nc-input-radio, .nc-input-switch):checked {
2242
+ --current-checkbox-bg: var(--color-brand-primary-base);
2243
+ background-color: var(--color-brand-primary-base);
2244
+ }
2245
+
2246
+ :where(input[type="checkbox"], input[type="radio"], .nc-input-checkbox, .nc-input-radio, .nc-input-switch):hover, :where(input[type="checkbox"], input[type="radio"], .nc-input-checkbox, .nc-input-radio, .nc-input-switch):focus-visible {
2247
+ background-color: var(--_input-hover-background);
2248
+ }
2249
+
2250
+ :where(input[type="checkbox"], input[type="radio"], .nc-input-checkbox, .nc-input-radio, .nc-input-switch):checked:hover, :where(input[type="checkbox"], input[type="radio"], .nc-input-checkbox, .nc-input-radio, .nc-input-switch):checked:focus-visible {
2251
+ background-color: color-mix(in oklch, var(--current-checkbox-bg), var(--_input-hover-background) 20%);
2252
+ }
2253
+
2243
2254
  :where(input[type="checkbox"], .nc-input-checkbox) {
2244
2255
  --_transition-duration: 0s;
2245
2256
  border-radius: var(--_input-border-radius);
@@ -2263,10 +2274,6 @@
2263
2274
  transform: scale(.8)translateY(2em);
2264
2275
  }
2265
2276
 
2266
- :where(input[type="checkbox"], .nc-input-checkbox):checked {
2267
- --current-background: var(--color-brand-primary-base);
2268
- }
2269
-
2270
2277
  :where(input[type="checkbox"], .nc-input-checkbox):checked:before {
2271
2278
  transform: scale(1)translateY(0%);
2272
2279
  }
@@ -2287,10 +2294,6 @@
2287
2294
  transform: scale(.8)translateY(2em);
2288
2295
  }
2289
2296
 
2290
- :where(input[type="radio"], .nc-input-radio):checked {
2291
- --current-background: var(--color-brand-primary-base);
2292
- }
2293
-
2294
2297
  :where(input[type="radio"], .nc-input-radio):checked:before {
2295
2298
  transform: scale(1)translateY(0%);
2296
2299
  }
@@ -2406,8 +2409,12 @@
2406
2409
  grid-area: checkbox;
2407
2410
  }
2408
2411
 
2409
- :where(.nc-checkbox-wrapper):hover:not(:has(input:checked)) input {
2410
- background: var(--_input-hover-background);
2412
+ :where(.nc-checkbox-wrapper):hover input {
2413
+ background-color: var(--_input-hover-background);
2414
+ }
2415
+
2416
+ :where(.nc-checkbox-wrapper):hover input:checked {
2417
+ background-color: color-mix(in oklch, var(--current-checkbox-bg), var(--_input-hover-background) 20%);
2411
2418
  }
2412
2419
 
2413
2420
  :where(.nc-radio-field, .nc-checkbox-field) {
@@ -2538,7 +2545,7 @@
2538
2545
  inline-size: var(--_switch-width);
2539
2546
  block-size: var(--_switch-height);
2540
2547
  border-radius: var(--_input-border-radius);
2541
- --current-background: var(--_switch-color);
2548
+ --current-checkbox-bg: var(--_switch-color);
2542
2549
  justify-content: flex-start;
2543
2550
  }
2544
2551
 
@@ -2548,21 +2555,24 @@
2548
2555
  margin-block: var(--_thumb-margin);
2549
2556
  transform: translateX(var(--_thumb-margin));
2550
2557
  block-size: calc(100% - 2 * var(--_thumb-margin));
2558
+ inline-size: unset;
2551
2559
  background-color: var(--_thumb-color);
2552
2560
  border-radius: var(--_input-border-radius);
2553
2561
  box-shadow: var(--shadow-near);
2554
2562
  transition: transform, background-color;
2555
2563
  transition-duration: var(--transition-duration-quick-2);
2556
2564
  transition-timing-function: var(--ease-2);
2565
+ clip-path: none;
2557
2566
  display: block;
2558
2567
  }
2559
2568
 
2560
2569
  :where(.nc-input-switch):checked {
2561
- --current-background: var(--_switch-color-checked);
2570
+ --current-checkbox-bg: var(--_switch-color-checked);
2562
2571
  }
2563
2572
 
2564
2573
  :where(.nc-input-switch):checked:before {
2565
2574
  transform: translateX(calc(var(--_switch-width) - var(--_switch-height) + var(--_thumb-margin)));
2575
+ --_thumb-color: var(--thumb-color-checked, var(--_input-background));
2566
2576
  }
2567
2577
  }
2568
2578
 
@@ -1002,13 +1002,13 @@
1002
1002
 
1003
1003
  @media (prefers-reduced-motion: reduce) {
1004
1004
  :where(html) {
1005
- --transition-duration-quick-1: 80ms;
1006
- --transition-duration-quick-2: .12s;
1007
- --transition-duration-moderate-1: .18s;
1008
- --transition-duration-moderate-2: .26s;
1009
- --transition-duration-gentle-1: .32s;
1010
- --transition-duration-gentle-2: .42s;
1011
- --transition-duration-calculated: 0;
1005
+ --transition-duration-quick-1: 0s;
1006
+ --transition-duration-quick-2: 0s;
1007
+ --transition-duration-moderate-1: 0s;
1008
+ --transition-duration-moderate-2: 0s;
1009
+ --transition-duration-gentle-1: 0s;
1010
+ --transition-duration-gentle-2: 0s;
1011
+ --transition-duration-calculated: 0s;
1012
1012
  --transition-duration-instant: 0s;
1013
1013
  --transition-duration-entry: 0s;
1014
1014
  --transition-duration-exit: 0s;
@@ -1963,8 +1963,7 @@
1963
1963
  line-height: var(--line-height-base);
1964
1964
  }
1965
1965
 
1966
- :where(input, textarea, select, .nc-input):focus, :where(input, textarea, select, .nc-input):hover:focus {
1967
- --current-background: var(--_input-background-active);
1966
+ :where(input, textarea, select, .nc-input):focus-visible {
1968
1967
  outline: var(--_input-outline);
1969
1968
  outline-offset: 0;
1970
1969
  background-color: var(--_input-background-active);
@@ -1976,7 +1975,6 @@
1976
1975
  }
1977
1976
 
1978
1977
  :where(input, textarea, select, .nc-input):hover {
1979
- --current-background: var(--_input-hover-background);
1980
1978
  background-color: var(--_input-hover-background);
1981
1979
  }
1982
1980
 
@@ -2020,8 +2018,8 @@
2020
2018
  :where(input[type="checkbox"], input[type="radio"], .nc-input-checkbox, .nc-input-radio, .nc-input-switch) {
2021
2019
  appearance: none;
2022
2020
  border: var(--_input-border);
2023
- --current-background: var(--_input-background);
2024
- background: var(--current-background);
2021
+ --current-checkbox-bg: var(--_input-background);
2022
+ background: var(--current-checkbox-bg);
2025
2023
  block-size: 1lh;
2026
2024
  inline-size: 1lh;
2027
2025
  transition: var(--transition-duration-quick-1) background var(--ease-2);
@@ -2032,6 +2030,19 @@
2032
2030
  display: inline-flex;
2033
2031
  }
2034
2032
 
2033
+ :where(input[type="checkbox"], input[type="radio"], .nc-input-checkbox, .nc-input-radio, .nc-input-switch):checked {
2034
+ --current-checkbox-bg: var(--color-brand-primary-base);
2035
+ background-color: var(--color-brand-primary-base);
2036
+ }
2037
+
2038
+ :where(input[type="checkbox"], input[type="radio"], .nc-input-checkbox, .nc-input-radio, .nc-input-switch):hover, :where(input[type="checkbox"], input[type="radio"], .nc-input-checkbox, .nc-input-radio, .nc-input-switch):focus-visible {
2039
+ background-color: var(--_input-hover-background);
2040
+ }
2041
+
2042
+ :where(input[type="checkbox"], input[type="radio"], .nc-input-checkbox, .nc-input-radio, .nc-input-switch):checked:hover, :where(input[type="checkbox"], input[type="radio"], .nc-input-checkbox, .nc-input-radio, .nc-input-switch):checked:focus-visible {
2043
+ background-color: color-mix(in oklch, var(--current-checkbox-bg), var(--_input-hover-background) 20%);
2044
+ }
2045
+
2035
2046
  :where(input[type="checkbox"], .nc-input-checkbox) {
2036
2047
  --_transition-duration: 0s;
2037
2048
  border-radius: var(--_input-border-radius);
@@ -2055,10 +2066,6 @@
2055
2066
  transform: scale(.8)translateY(2em);
2056
2067
  }
2057
2068
 
2058
- :where(input[type="checkbox"], .nc-input-checkbox):checked {
2059
- --current-background: var(--color-brand-primary-base);
2060
- }
2061
-
2062
2069
  :where(input[type="checkbox"], .nc-input-checkbox):checked:before {
2063
2070
  transform: scale(1)translateY(0%);
2064
2071
  }
@@ -2079,10 +2086,6 @@
2079
2086
  transform: scale(.8)translateY(2em);
2080
2087
  }
2081
2088
 
2082
- :where(input[type="radio"], .nc-input-radio):checked {
2083
- --current-background: var(--color-brand-primary-base);
2084
- }
2085
-
2086
2089
  :where(input[type="radio"], .nc-input-radio):checked:before {
2087
2090
  transform: scale(1)translateY(0%);
2088
2091
  }
@@ -2198,8 +2201,12 @@
2198
2201
  grid-area: checkbox;
2199
2202
  }
2200
2203
 
2201
- :where(.nc-checkbox-wrapper):hover:not(:has(input:checked)) input {
2202
- background: var(--_input-hover-background);
2204
+ :where(.nc-checkbox-wrapper):hover input {
2205
+ background-color: var(--_input-hover-background);
2206
+ }
2207
+
2208
+ :where(.nc-checkbox-wrapper):hover input:checked {
2209
+ background-color: color-mix(in oklch, var(--current-checkbox-bg), var(--_input-hover-background) 20%);
2203
2210
  }
2204
2211
 
2205
2212
  :where(.nc-radio-field, .nc-checkbox-field) {
@@ -2330,7 +2337,7 @@
2330
2337
  inline-size: var(--_switch-width);
2331
2338
  block-size: var(--_switch-height);
2332
2339
  border-radius: var(--_input-border-radius);
2333
- --current-background: var(--_switch-color);
2340
+ --current-checkbox-bg: var(--_switch-color);
2334
2341
  justify-content: flex-start;
2335
2342
  }
2336
2343
 
@@ -2340,21 +2347,24 @@
2340
2347
  margin-block: var(--_thumb-margin);
2341
2348
  transform: translateX(var(--_thumb-margin));
2342
2349
  block-size: calc(100% - 2 * var(--_thumb-margin));
2350
+ inline-size: unset;
2343
2351
  background-color: var(--_thumb-color);
2344
2352
  border-radius: var(--_input-border-radius);
2345
2353
  box-shadow: var(--shadow-near);
2346
2354
  transition: transform, background-color;
2347
2355
  transition-duration: var(--transition-duration-quick-2);
2348
2356
  transition-timing-function: var(--ease-2);
2357
+ clip-path: none;
2349
2358
  display: block;
2350
2359
  }
2351
2360
 
2352
2361
  :where(.nc-input-switch):checked {
2353
- --current-background: var(--_switch-color-checked);
2362
+ --current-checkbox-bg: var(--_switch-color-checked);
2354
2363
  }
2355
2364
 
2356
2365
  :where(.nc-input-switch):checked:before {
2357
2366
  transform: translateX(calc(var(--_switch-width) - var(--_switch-height) + var(--_thumb-margin)));
2367
+ --_thumb-color: var(--thumb-color-checked, var(--_input-background));
2358
2368
  }
2359
2369
  }
2360
2370
 
package/package.json CHANGED
@@ -12,7 +12,7 @@
12
12
  "type": "git",
13
13
  "url": "https://github.com/nordcode-agency/nordcode/tree/main/packages/ui"
14
14
  },
15
- "version": "2.1.1",
15
+ "version": "2.1.2",
16
16
  "publishConfig": {
17
17
  "access": "public"
18
18
  },
@@ -48,9 +48,7 @@
48
48
  inline-size: var(--input-inline-size, auto);
49
49
  line-height: var(--line-height-base);
50
50
 
51
- &:focus,
52
- &:hover:focus {
53
- --current-background: var(--_input-background-active);
51
+ &:focus-visible {
54
52
  outline: var(--_input-outline);
55
53
  outline-offset: 0;
56
54
  background-color: var(--_input-background-active);
@@ -62,7 +60,6 @@
62
60
  }
63
61
 
64
62
  &:hover {
65
- --current-background: var(--_input-hover-background);
66
63
  background-color: var(--_input-hover-background);
67
64
  }
68
65
 
@@ -114,10 +111,27 @@
114
111
  align-items: center;
115
112
  justify-content: center;
116
113
  border: var(--_input-border);
117
- --current-background: var(--_input-background);
118
- background: var(--current-background);
114
+ --current-checkbox-bg: var(--_input-background);
115
+ background: var(--current-checkbox-bg);
119
116
  transition: var(--transition-duration-quick-1) background var(--ease-2);
120
117
  box-shadow: var(--_input-box-shadow);
118
+
119
+ &:checked {
120
+ --current-checkbox-bg: var(--color-brand-primary-base);
121
+ background-color: var(--color-brand-primary-base);
122
+ }
123
+
124
+ &:hover, &:focus-visible {
125
+ background-color: var(--_input-hover-background);
126
+ }
127
+
128
+ &:checked:hover, &:checked:focus-visible {
129
+ background-color: color-mix(
130
+ in oklch,
131
+ var(--current-checkbox-bg),
132
+ var(--_input-hover-background) 20%
133
+ );
134
+ }
121
135
  }
122
136
 
123
137
  :where(input[type="checkbox"], .nc-input-checkbox) {
@@ -142,12 +156,8 @@
142
156
  clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);
143
157
  }
144
158
 
145
- &:checked {
146
- --current-background: var(--color-brand-primary-base);
147
-
148
- &:before {
149
- transform: scale(1) translateY(0%);
150
- }
159
+ &:checked:before {
160
+ transform: scale(1) translateY(0%);
151
161
  }
152
162
  }
153
163
 
@@ -166,12 +176,8 @@
166
176
  transition: transform var(--ease-out-2) var(--transition-duration-quick-1);
167
177
  }
168
178
 
169
- &:checked {
170
- --current-background: var(--color-brand-primary-base);
171
-
172
- &:before {
173
- transform: scale(1) translateY(0%);
174
- }
179
+ &:checked:before {
180
+ transform: scale(1) translateY(0%);
175
181
  }
176
182
  }
177
183
 
@@ -61,8 +61,16 @@
61
61
  grid-area: checkbox;
62
62
  }
63
63
 
64
- &:hover:not(:has(input:checked)) input {
65
- background: var(--_input-hover-background);
64
+ &:hover input {
65
+ background-color: var(--_input-hover-background);
66
+ }
67
+
68
+ &:hover input:checked {
69
+ background-color: color-mix(
70
+ in oklch,
71
+ var(--current-checkbox-bg),
72
+ var(--_input-hover-background) 20%
73
+ );
66
74
  }
67
75
  }
68
76
 
@@ -11,7 +11,7 @@
11
11
  inline-size: var(--_switch-width);
12
12
  block-size: var(--_switch-height);
13
13
  border-radius: var(--_input-border-radius);
14
- --current-background: var(--_switch-color);
14
+ --current-checkbox-bg: var(--_switch-color);
15
15
  justify-content: flex-start;
16
16
 
17
17
  &:before {
@@ -21,20 +21,23 @@
21
21
  margin-block: var(--_thumb-margin);
22
22
  transform: translateX(var(--_thumb-margin));
23
23
  block-size: calc(100% - 2 * var(--_thumb-margin));
24
+ inline-size: unset;
24
25
  background-color: var(--_thumb-color);
25
26
  border-radius: var(--_input-border-radius);
26
27
  box-shadow: var(--shadow-near);
27
28
  transition: transform, background-color;
28
29
  transition-duration: var(--transition-duration-quick-2);
29
30
  transition-timing-function: var(--ease-2);
31
+ clip-path: none;
30
32
  }
31
33
 
32
34
  &:checked {
33
- --current-background: var(--_switch-color-checked);
35
+ --current-checkbox-bg: var(--_switch-color-checked);
34
36
  }
35
37
 
36
38
  &:checked:before {
37
39
  transform: translateX(calc(var(--_switch-width) - var(--_switch-height) + var(--_thumb-margin)));
40
+ --_thumb-color: var(--thumb-color-checked, var(--_input-background));
38
41
  }
39
42
  }
40
43
  }