@oardi/css-utils 0.132.0 → 0.134.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,6 +1,6 @@
1
1
  {
2
2
  "package": "@oardi/css-utils",
3
- "version": "0.132.0",
3
+ "version": "0.134.0",
4
4
  "breakpoints": { "sm": "576px", "md": "768px", "lg": "992px", "xl": "1200px", "xxl": "1400px" },
5
5
  "lifecycle": {
6
6
  "deprecated": [
@@ -76,7 +76,7 @@
76
76
  "values": ["normal", "tight", "wide", "wider", "widest"]
77
77
  },
78
78
  {
79
- "patterns": ["lh-{value}"],
79
+ "patterns": ["lh-{value}", "text-{breakpoint}-{value}"],
80
80
  "values": ["lg", "md", "sm", "xl", "xs", "xxl", "xxxl"]
81
81
  },
82
82
  {
@@ -766,6 +766,10 @@
766
766
  "range-slider",
767
767
  "required",
768
768
  "right",
769
+ "segmented-control",
770
+ "segmented-control-equal",
771
+ "segmented-control-input",
772
+ "segmented-control-option",
769
773
  "skeleton",
770
774
  "skeleton-aspect-square",
771
775
  "skeleton-aspect-video",
@@ -3,7 +3,7 @@
3
3
  > Generated automatically. Do not edit manually.
4
4
 
5
5
  - Package: `@oardi/css-utils`
6
- - Version: `0.132.0`
6
+ - Version: `0.134.0`
7
7
  - Source: public SCSS entry point and utility configuration
8
8
 
9
9
  ## Usage guidance
@@ -104,6 +104,7 @@ Values: `normal` | `tight` | `wide` | `wider` | `widest`
104
104
  Values: `lg` | `md` | `sm` | `xl` | `xs` | `xxl` | `xxxl`
105
105
 
106
106
  - `lh-{value}`
107
+ - `text-{breakpoint}-{value}`
107
108
 
108
109
  Values: `loose` | `none` | `normal` | `relaxed` | `snug` | `tight`
109
110
 
@@ -539,6 +540,10 @@ Classes:
539
540
  - `range-slider`
540
541
  - `required`
541
542
  - `right`
543
+ - `segmented-control`
544
+ - `segmented-control-equal`
545
+ - `segmented-control-input`
546
+ - `segmented-control-option`
542
547
  - `skeleton`
543
548
  - `skeleton-aspect-square`
544
549
  - `skeleton-aspect-video`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oardi/css-utils",
3
- "version": "0.132.0",
3
+ "version": "0.134.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",
@@ -329,13 +329,13 @@
329
329
 
330
330
  @layer components {
331
331
  @media (forced-colors: active) {
332
- .form-check .form-check-input:where([type='checkbox']) {
332
+ .form-check .form-check-input {
333
333
  forced-color-adjust: none;
334
334
  background-color: Canvas;
335
335
  border-color: CanvasText;
336
336
 
337
337
  &:checked,
338
- &:indeterminate {
338
+ &:where([type='checkbox']):indeterminate {
339
339
  background-color: Highlight;
340
340
  border-color: Highlight;
341
341
  }
@@ -344,7 +344,11 @@
344
344
  border-color: HighlightText;
345
345
  }
346
346
 
347
- &:indeterminate::after {
347
+ &:where([type='checkbox']):indeterminate::after {
348
+ background-color: HighlightText;
349
+ }
350
+
351
+ &[type='radio']:checked::after {
348
352
  background-color: HighlightText;
349
353
  }
350
354
 
@@ -372,7 +376,11 @@
372
376
  border-color: GrayText;
373
377
  }
374
378
 
375
- &:indeterminate::after {
379
+ &:where([type='checkbox']):indeterminate::after {
380
+ background-color: GrayText;
381
+ }
382
+
383
+ &[type='radio']:checked::after {
376
384
  background-color: GrayText;
377
385
  }
378
386
  }
@@ -548,3 +556,46 @@
548
556
  }
549
557
  }
550
558
  }
559
+
560
+ @layer components {
561
+ @media (forced-colors: active) {
562
+ .form-switch .form-switch-input {
563
+ forced-color-adjust: none;
564
+ background-color: Canvas;
565
+ border-color: CanvasText;
566
+
567
+ &::after {
568
+ background-color: CanvasText;
569
+ box-shadow: none;
570
+ }
571
+
572
+ &:checked {
573
+ background-color: Highlight;
574
+ border-color: Highlight;
575
+
576
+ &::after {
577
+ background-color: HighlightText;
578
+ }
579
+ }
580
+
581
+ &:focus-visible,
582
+ &.is-focus-visible {
583
+ outline-color: Highlight;
584
+ }
585
+
586
+ &.is-invalid {
587
+ border-color: LinkText;
588
+ }
589
+
590
+ &:disabled,
591
+ &[disabled] {
592
+ background-color: Canvas;
593
+ border-color: GrayText;
594
+
595
+ &::after {
596
+ background-color: GrayText;
597
+ }
598
+ }
599
+ }
600
+ }
601
+ }
@@ -0,0 +1,90 @@
1
+ @use '../layers.scss';
2
+ @use './button.scss';
3
+
4
+ @layer components {
5
+ .segmented-control {
6
+ --segmented-control-gap: var(--spacer-1);
7
+
8
+ display: inline-flex;
9
+ flex-wrap: wrap;
10
+ gap: var(--segmented-control-gap);
11
+ max-inline-size: 100%;
12
+ }
13
+
14
+ .segmented-control-option {
15
+ position: relative;
16
+ display: flex;
17
+ min-inline-size: 0;
18
+
19
+ > .btn {
20
+ flex: 1;
21
+ min-inline-size: 0;
22
+ overflow-wrap: anywhere;
23
+ }
24
+ }
25
+
26
+ .segmented-control-input {
27
+ // Keep the native radio focusable and available to forms and assistive technology.
28
+ position: absolute;
29
+ inset-block-start: 0;
30
+ inset-inline-start: 0;
31
+ inline-size: 1px;
32
+ block-size: 1px;
33
+ padding: 0;
34
+ margin: 0;
35
+ overflow: hidden;
36
+ clip-path: inset(50%);
37
+ white-space: nowrap;
38
+ border: 0;
39
+
40
+ &:checked + .btn {
41
+ color: var(--button-on-color);
42
+ background-color: var(--button-surface-color);
43
+ border-color: var(--button-surface-color);
44
+ text-decoration: underline;
45
+ text-underline-offset: 0.2em;
46
+ }
47
+
48
+ &:focus-visible + .btn {
49
+ outline: var(--button-focus-outline-width) var(--button-focus-outline-style)
50
+ var(--button-focus-outline-color);
51
+ outline-offset: var(--button-focus-outline-offset);
52
+ }
53
+
54
+ &:disabled + .btn {
55
+ color: var(--button-disabled-text-color);
56
+ background-color: var(--button-disabled-bg-color);
57
+ border-color: var(--button-disabled-border-color);
58
+ cursor: not-allowed;
59
+ }
60
+ }
61
+
62
+ .segmented-control-equal {
63
+ display: flex;
64
+
65
+ > .segmented-control-option {
66
+ flex: 1 1 0;
67
+ }
68
+ }
69
+
70
+ @media (forced-colors: active) {
71
+ .segmented-control-input {
72
+ &:checked + .btn {
73
+ forced-color-adjust: none;
74
+ color: HighlightText;
75
+ background-color: Highlight;
76
+ border-color: Highlight;
77
+ }
78
+
79
+ &:focus-visible + .btn {
80
+ outline-color: Highlight;
81
+ }
82
+
83
+ &:disabled + .btn {
84
+ color: GrayText;
85
+ background-color: Canvas;
86
+ border-color: GrayText;
87
+ }
88
+ }
89
+ }
90
+ }
package/scss/index.scss CHANGED
@@ -48,6 +48,7 @@
48
48
  @forward './components/popover.scss';
49
49
  @forward './components/progress.scss';
50
50
  @forward './components/range-slider.scss';
51
+ @forward './components/segmented-control.scss';
51
52
  @forward './components/skeleton.scss';
52
53
  @forward './components/stepper.scss';
53
54
  @forward './components/table.scss';
package/scss/text.scss CHANGED
@@ -87,6 +87,16 @@ $letterSpacings: 0, 1, 2, 3, 4, 5;
87
87
  }
88
88
  }
89
89
 
90
+ @each $bp, $bp-value in map.get(theme.$theme, breakpoints) {
91
+ @media (min-width: #{$bp-value}) {
92
+ @each $name, $value in map.get(theme.$theme, fontSizes) {
93
+ .text-#{$bp}-#{$name} {
94
+ font-size: var(--font-size-#{$name});
95
+ }
96
+ }
97
+ }
98
+ }
99
+
90
100
  // Deprecated: use .line-height-* utilities instead.
91
101
  @each $name, $value in map.get(theme.$theme, lineHeights) {
92
102
  .lh-#{$name} {