@oardi/css-utils 0.56.0 → 0.57.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oardi/css-utils",
3
- "version": "0.56.0",
3
+ "version": "0.57.0",
4
4
  "author": "Ardian Shala",
5
5
  "homepage": "https://css-utils.oardi.com",
6
6
  "description": "Powerful set of semantic css classes with support for breakpoints, directions and spacings",
@@ -222,7 +222,7 @@
222
222
  border-color: var(--form-check-input-checked-border-color);
223
223
  }
224
224
 
225
- &:checked::after {
225
+ &[type='checkbox']:checked::after {
226
226
  content: '';
227
227
  position: absolute;
228
228
  inset-inline-start: 0.25rem;
@@ -234,6 +234,23 @@
234
234
  transform: rotate(45deg);
235
235
  }
236
236
 
237
+ &[type='radio'] {
238
+ border-radius: 9999px;
239
+ }
240
+
241
+ &[type='radio']:checked::after {
242
+ content: '';
243
+ position: absolute;
244
+ inset-block-start: 50%;
245
+ inset-inline-start: 50%;
246
+ width: 0.5rem;
247
+ height: 0.5rem;
248
+ background-color: var(--form-check-input-checked-color);
249
+ border: 0;
250
+ border-radius: 9999px;
251
+ transform: translate(-50%, -50%);
252
+ }
253
+
237
254
  &:focus-visible {
238
255
  border-color: var(--primary-hover);
239
256
  outline: var(--focus-outline-width) var(--focus-outline-style) var(--focus-outline-color);
@@ -291,3 +308,122 @@
291
308
  color: var(--error);
292
309
  }
293
310
  }
311
+
312
+ @layer components {
313
+ .form-switch {
314
+ --form-switch-gap: var(--spacer-2);
315
+
316
+ --form-switch-input-width: 2.5rem;
317
+ --form-switch-input-height: 1.25rem;
318
+ --form-switch-input-padding: 0.125rem;
319
+
320
+ --form-switch-input-bg-color: var(--bg-highlight);
321
+ --form-switch-input-border-width: var(--border-width);
322
+ --form-switch-input-border-color: var(--border-color);
323
+ --form-switch-input-border-radius: 9999px;
324
+
325
+ --form-switch-input-checked-bg-color: var(--primary);
326
+ --form-switch-input-checked-border-color: var(--primary);
327
+
328
+ --form-switch-thumb-size: 1rem;
329
+ --form-switch-thumb-bg-color: var(--bg-surface);
330
+ --form-switch-thumb-box-shadow: var(--shadow-sm);
331
+
332
+ --form-switch-disabled-bg-color: var(--disabled-bg-color);
333
+ --form-switch-disabled-border-color: var(--disabled-border-color);
334
+ --form-switch-disabled-thumb-bg-color: var(--disabled-text-color);
335
+
336
+ --form-switch-focus-outline-width: var(--focus-outline-width);
337
+ --form-switch-focus-outline-style: var(--focus-outline-style);
338
+ --form-switch-focus-outline-color: var(--focus-outline-color);
339
+ --form-switch-focus-outline-offset: var(--focus-offset);
340
+
341
+ --form-switch-transition-duration: var(--transition-duration);
342
+ --form-switch-transition-easing: var(--transition-easing);
343
+
344
+ display: flex;
345
+ align-items: center;
346
+ gap: var(--form-switch-gap);
347
+
348
+ .form-switch-input {
349
+ box-sizing: border-box;
350
+ display: inline-flex;
351
+ align-items: center;
352
+ flex-shrink: 0;
353
+ width: var(--form-switch-input-width);
354
+ height: var(--form-switch-input-height);
355
+ margin: 0;
356
+ padding: var(--form-switch-input-padding);
357
+ appearance: none;
358
+ cursor: pointer;
359
+ background-color: var(--form-switch-input-bg-color);
360
+ border: var(--form-switch-input-border-width) solid var(--form-switch-input-border-color);
361
+ border-radius: var(--form-switch-input-border-radius);
362
+
363
+ transition:
364
+ background-color var(--form-switch-transition-duration) var(--form-switch-transition-easing),
365
+ border-color var(--form-switch-transition-duration) var(--form-switch-transition-easing),
366
+ box-shadow var(--form-switch-transition-duration) var(--form-switch-transition-easing);
367
+
368
+ &::after {
369
+ content: '';
370
+ display: block;
371
+ flex: 0 0 var(--form-switch-thumb-size);
372
+ width: var(--form-switch-thumb-size);
373
+ height: var(--form-switch-thumb-size);
374
+ background-color: var(--form-switch-thumb-bg-color);
375
+ border-radius: 9999px;
376
+ box-shadow: var(--form-switch-thumb-box-shadow);
377
+ transform: translateX(0);
378
+
379
+ transition:
380
+ transform var(--form-switch-transition-duration) var(--form-switch-transition-easing),
381
+ background-color var(--form-switch-transition-duration) var(--form-switch-transition-easing);
382
+ }
383
+
384
+ &:checked {
385
+ background-color: var(--form-switch-input-checked-bg-color);
386
+ border-color: var(--form-switch-input-checked-border-color);
387
+
388
+ &::after {
389
+ transform: translateX(
390
+ calc(
391
+ var(--form-switch-input-width) - var(--form-switch-thumb-size) -
392
+ (var(--form-switch-input-padding) * 2) - (var(--form-switch-input-border-width) * 2)
393
+ )
394
+ );
395
+ }
396
+ }
397
+
398
+ &:focus-visible {
399
+ outline: var(--form-switch-focus-outline-width) var(--form-switch-focus-outline-style)
400
+ var(--form-switch-focus-outline-color);
401
+ outline-offset: var(--form-switch-focus-outline-offset);
402
+ }
403
+
404
+ &.is-invalid {
405
+ border-color: var(--error);
406
+
407
+ &:focus-visible {
408
+ outline: var(--focus-outline-error);
409
+ outline-offset: var(--form-switch-focus-outline-offset);
410
+ }
411
+ }
412
+
413
+ &:disabled,
414
+ &[disabled] {
415
+ cursor: not-allowed;
416
+ background-color: var(--form-switch-disabled-bg-color);
417
+ border-color: var(--form-switch-disabled-border-color);
418
+
419
+ &::after {
420
+ background-color: var(--form-switch-disabled-thumb-bg-color);
421
+ }
422
+ }
423
+ }
424
+
425
+ .form-label {
426
+ margin-bottom: 0;
427
+ }
428
+ }
429
+ }