@birdycom/omniacss 0.11.0 → 0.11.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.
Files changed (48) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +44 -44
  3. package/dist/oc-theme.css +1 -1
  4. package/dist/omnia.css +2 -1
  5. package/dist/omnia.min.css +1 -1
  6. package/dist/omnia.starter.css +2 -0
  7. package/dist/omnia.starter.min.css +1 -1
  8. package/dist/tokens/omnia.dtcg.json +2 -2
  9. package/dist/tokens/omnia.tokens.json +1 -1
  10. package/dist/tokens/omnia_tokens.py +2 -2
  11. package/package.json +63 -63
  12. package/scss/utilities/_anchor_positioning.scss +65 -65
  13. package/scss/utilities/_animation_properties.scss +143 -143
  14. package/scss/utilities/_borders_extended.scss +97 -97
  15. package/scss/utilities/_borders_outlines.scss +161 -161
  16. package/scss/utilities/_containment.scss +82 -82
  17. package/scss/utilities/_css_functions.scss +34 -34
  18. package/scss/utilities/_dark_mode.scss +117 -117
  19. package/scss/utilities/_drop_shadow_colors.scss +26 -26
  20. package/scss/utilities/_experimental_css.scss +149 -149
  21. package/scss/utilities/_flexbox.scss +317 -317
  22. package/scss/utilities/_font_variants.scss +139 -139
  23. package/scss/utilities/_gap.scss +103 -103
  24. package/scss/utilities/_gradient_stops.scss +48 -48
  25. package/scss/utilities/_grid.scss +672 -672
  26. package/scss/utilities/_layout_extras.scss +171 -171
  27. package/scss/utilities/_layout_flow.scss +210 -210
  28. package/scss/utilities/_mask_extras.scss +62 -62
  29. package/scss/utilities/_motion_transforms.scss +167 -167
  30. package/scss/utilities/_scroll_animations.scss +80 -80
  31. package/scss/utilities/_scrollbar.scss +2 -1
  32. package/scss/utilities/_shadow_tokens.scss +21 -21
  33. package/scss/utilities/_shapes.scss +72 -72
  34. package/scss/utilities/_sizing_logical.scss +99 -99
  35. package/scss/utilities/_starting_style.scss +53 -53
  36. package/scss/utilities/_state_variants.scss +196 -196
  37. package/scss/utilities/_svg.scss +100 -100
  38. package/scss/utilities/_table_advanced.scss +19 -19
  39. package/scss/utilities/_typography_advanced.scss +124 -124
  40. package/scss/utilities/_typography_modern.scss +83 -83
  41. package/scss/utilities/_view_transitions.scss +64 -64
  42. package/scss/utilities/_writing_modes.scss +72 -72
  43. package/scss/variables/_hulp.scss +107 -107
  44. package/scss/variables/_variables_effects.scss +108 -108
  45. package/src/postcss.mjs +43 -43
  46. package/src/tokens.mjs +377 -377
  47. package/src/variants.mjs +278 -278
  48. package/tokens/semantic.json +80 -80
@@ -1,97 +1,97 @@
1
- // SCSS Document
2
- // File: src/scss/utilities/_borders_extended.scss
3
- // Description: Per-side border style/color, axis borders, logical borders, logical radius and border-image.
4
- // Copyright: 2021-2026 Birdycom
5
- // Author: Serge Cools
6
- // Version: 0.3.0
7
- // Framework: OmniaCSS
8
- // Purpose: Complements _borders_outlines.scss (.border-t*, .round-tl*): adds what was still missing.
9
- // Reference: https://developer.mozilla.org/en-US/docs/Web/CSS/border-image
10
- // Map: per-side style -> per-side color -> axis widths -> logical widths -> logical radius -> border-image
11
-
12
- $_sides: ('t': top, 'r': right, 'b': bottom, 'l': left);
13
- $_styles: (solid, dashed, dotted, double, none);
14
-
15
- /* Per-side border style */
16
- @each $key, $side in $_sides {
17
- @each $style in $_styles {
18
- .border-#{$key}-#{$style} { border-#{$side}-style: $style; }
19
- }
20
- }
21
-
22
- /* Per-side border color (combine with a color utility on the element for the rest) */
23
- @each $key, $side in $_sides {
24
- .border-#{$key}-current { border-#{$side}-color: currentcolor; }
25
- .border-#{$key}-transparent { border-#{$side}-color: transparent; }
26
- }
27
-
28
- /* Axis borders: x = left + right, y = top + bottom */
29
- @each $w in (0, 1, 2, 4, 8) {
30
- .border-x-#{$w} { border-left-width: #{$w}px; border-right-width: #{$w}px; }
31
- .border-y-#{$w} { border-top-width: #{$w}px; border-bottom-width: #{$w}px; }
32
- }
33
-
34
- /* Logical borders — follow writing direction (s = inline-start, e = inline-end, bs/be = block) */
35
- @each $w in (0, 1, 2, 4) {
36
- .border-s-#{$w} { border-inline-start-width: #{$w}px; }
37
- .border-e-#{$w} { border-inline-end-width: #{$w}px; }
38
- .border-bs-#{$w} { border-block-start-width: #{$w}px; }
39
- .border-be-#{$w} { border-block-end-width: #{$w}px; }
40
- .border-inline-#{$w} { border-inline-width: #{$w}px; }
41
- .border-block-#{$w} { border-block-width: #{$w}px; }
42
- }
43
- .border-inline-solid { border-inline-style: solid; }
44
- .border-block-solid { border-block-style: solid; }
45
- .border-inline-current { border-inline-color: currentcolor; }
46
- .border-block-current { border-block-color: currentcolor; }
47
-
48
- /* Logical border radius — ss = start-start, se = start-end, es = end-start, ee = end-end */
49
- @each $key, $prop in ('ss': start-start, 'se': start-end, 'es': end-start, 'ee': end-end) {
50
- @each $r, $v in ('none': 0, 'sm': 0.25rem, 'md': 0.5rem, 'lg': 1rem, 'full': 9999px) {
51
- .round-#{$key}-#{$r} { border-#{$prop}-radius: $v; }
52
- }
53
- }
54
-
55
- /* Border image */
56
- .border-image-none { border-image: none; }
57
- .border-image-gradient {
58
- border-image-source: linear-gradient(var(--oc-border-image-angle, 135deg), var(--oc-gradient-from, currentcolor), var(--oc-gradient-to, transparent));
59
- border-image-slice: 1;
60
- }
61
- .border-image-stripes {
62
- border-image-source: repeating-linear-gradient(45deg, var(--oc-gradient-from, currentcolor) 0 6px, var(--oc-gradient-to, transparent) 6px 12px);
63
- border-image-slice: 1;
64
- }
65
- .border-image-slice-1 { border-image-slice: 1; }
66
- .border-image-slice-fill { border-image-slice: 1 fill; }
67
- .border-image-repeat-stretch { border-image-repeat: stretch; }
68
- .border-image-repeat-repeat { border-image-repeat: repeat; }
69
- .border-image-repeat-round { border-image-repeat: round; }
70
- .border-image-repeat-space { border-image-repeat: space; }
71
- .border-image-width-1 { border-image-width: 1; }
72
- .border-image-width-auto { border-image-width: auto; }
73
- .border-image-outset-0 { border-image-outset: 0; }
74
- .border-image-outset-1 { border-image-outset: 0.25rem; }
75
- .border-image-outset-2 { border-image-outset: 0.5rem; }
76
-
77
- /* Side shorthands — a 1px solid line in the current color on one side */
78
- @each $key, $side in $_sides {
79
- .border-#{$key}-line { border-#{$side}: 1px solid currentcolor; }
80
- }
81
-
82
- /* Logical side shorthands, styles and colors */
83
- @each $key, $side in ('s': inline-start, 'e': inline-end, 'bs': block-start, 'be': block-end) {
84
- .border-#{$key}-line { border-#{$side}: 1px solid currentcolor; }
85
- .border-#{$key}-solid { border-#{$side}-style: solid; }
86
- .border-#{$key}-dashed { border-#{$side}-style: dashed; }
87
- .border-#{$key}-current { border-#{$side}-color: currentcolor; }
88
- }
89
- .border-inline-line { border-inline: 1px solid currentcolor; }
90
- .border-block-line { border-block: 1px solid currentcolor; }
91
-
92
- /* Per-corner radius (longhands) */
93
- @each $key, $corner in ('tl': top-left, 'tr': top-right, 'bl': bottom-left, 'br': bottom-right) {
94
- @each $r, $v in ('none': 0, 'sm': 0.25rem, 'md': 0.5rem, 'lg': 1rem, 'full': 9999px) {
95
- .radius-#{$key}-#{$r} { border-#{$corner}-radius: $v; }
96
- }
97
- }
1
+ // SCSS Document
2
+ // File: src/scss/utilities/_borders_extended.scss
3
+ // Description: Per-side border style/color, axis borders, logical borders, logical radius and border-image.
4
+ // Copyright: 2021-2026 Birdycom
5
+ // Author: Serge Cools
6
+ // Version: 0.3.0
7
+ // Framework: OmniaCSS
8
+ // Purpose: Complements _borders_outlines.scss (.border-t*, .round-tl*): adds what was still missing.
9
+ // Reference: https://developer.mozilla.org/en-US/docs/Web/CSS/border-image
10
+ // Map: per-side style -> per-side color -> axis widths -> logical widths -> logical radius -> border-image
11
+
12
+ $_sides: ('t': top, 'r': right, 'b': bottom, 'l': left);
13
+ $_styles: (solid, dashed, dotted, double, none);
14
+
15
+ /* Per-side border style */
16
+ @each $key, $side in $_sides {
17
+ @each $style in $_styles {
18
+ .border-#{$key}-#{$style} { border-#{$side}-style: $style; }
19
+ }
20
+ }
21
+
22
+ /* Per-side border color (combine with a color utility on the element for the rest) */
23
+ @each $key, $side in $_sides {
24
+ .border-#{$key}-current { border-#{$side}-color: currentcolor; }
25
+ .border-#{$key}-transparent { border-#{$side}-color: transparent; }
26
+ }
27
+
28
+ /* Axis borders: x = left + right, y = top + bottom */
29
+ @each $w in (0, 1, 2, 4, 8) {
30
+ .border-x-#{$w} { border-left-width: #{$w}px; border-right-width: #{$w}px; }
31
+ .border-y-#{$w} { border-top-width: #{$w}px; border-bottom-width: #{$w}px; }
32
+ }
33
+
34
+ /* Logical borders — follow writing direction (s = inline-start, e = inline-end, bs/be = block) */
35
+ @each $w in (0, 1, 2, 4) {
36
+ .border-s-#{$w} { border-inline-start-width: #{$w}px; }
37
+ .border-e-#{$w} { border-inline-end-width: #{$w}px; }
38
+ .border-bs-#{$w} { border-block-start-width: #{$w}px; }
39
+ .border-be-#{$w} { border-block-end-width: #{$w}px; }
40
+ .border-inline-#{$w} { border-inline-width: #{$w}px; }
41
+ .border-block-#{$w} { border-block-width: #{$w}px; }
42
+ }
43
+ .border-inline-solid { border-inline-style: solid; }
44
+ .border-block-solid { border-block-style: solid; }
45
+ .border-inline-current { border-inline-color: currentcolor; }
46
+ .border-block-current { border-block-color: currentcolor; }
47
+
48
+ /* Logical border radius — ss = start-start, se = start-end, es = end-start, ee = end-end */
49
+ @each $key, $prop in ('ss': start-start, 'se': start-end, 'es': end-start, 'ee': end-end) {
50
+ @each $r, $v in ('none': 0, 'sm': 0.25rem, 'md': 0.5rem, 'lg': 1rem, 'full': 9999px) {
51
+ .round-#{$key}-#{$r} { border-#{$prop}-radius: $v; }
52
+ }
53
+ }
54
+
55
+ /* Border image */
56
+ .border-image-none { border-image: none; }
57
+ .border-image-gradient {
58
+ border-image-source: linear-gradient(var(--oc-border-image-angle, 135deg), var(--oc-gradient-from, currentcolor), var(--oc-gradient-to, transparent));
59
+ border-image-slice: 1;
60
+ }
61
+ .border-image-stripes {
62
+ border-image-source: repeating-linear-gradient(45deg, var(--oc-gradient-from, currentcolor) 0 6px, var(--oc-gradient-to, transparent) 6px 12px);
63
+ border-image-slice: 1;
64
+ }
65
+ .border-image-slice-1 { border-image-slice: 1; }
66
+ .border-image-slice-fill { border-image-slice: 1 fill; }
67
+ .border-image-repeat-stretch { border-image-repeat: stretch; }
68
+ .border-image-repeat-repeat { border-image-repeat: repeat; }
69
+ .border-image-repeat-round { border-image-repeat: round; }
70
+ .border-image-repeat-space { border-image-repeat: space; }
71
+ .border-image-width-1 { border-image-width: 1; }
72
+ .border-image-width-auto { border-image-width: auto; }
73
+ .border-image-outset-0 { border-image-outset: 0; }
74
+ .border-image-outset-1 { border-image-outset: 0.25rem; }
75
+ .border-image-outset-2 { border-image-outset: 0.5rem; }
76
+
77
+ /* Side shorthands — a 1px solid line in the current color on one side */
78
+ @each $key, $side in $_sides {
79
+ .border-#{$key}-line { border-#{$side}: 1px solid currentcolor; }
80
+ }
81
+
82
+ /* Logical side shorthands, styles and colors */
83
+ @each $key, $side in ('s': inline-start, 'e': inline-end, 'bs': block-start, 'be': block-end) {
84
+ .border-#{$key}-line { border-#{$side}: 1px solid currentcolor; }
85
+ .border-#{$key}-solid { border-#{$side}-style: solid; }
86
+ .border-#{$key}-dashed { border-#{$side}-style: dashed; }
87
+ .border-#{$key}-current { border-#{$side}-color: currentcolor; }
88
+ }
89
+ .border-inline-line { border-inline: 1px solid currentcolor; }
90
+ .border-block-line { border-block: 1px solid currentcolor; }
91
+
92
+ /* Per-corner radius (longhands) */
93
+ @each $key, $corner in ('tl': top-left, 'tr': top-right, 'bl': bottom-left, 'br': bottom-right) {
94
+ @each $r, $v in ('none': 0, 'sm': 0.25rem, 'md': 0.5rem, 'lg': 1rem, 'full': 9999px) {
95
+ .radius-#{$key}-#{$r} { border-#{$corner}-radius: $v; }
96
+ }
97
+ }
@@ -1,161 +1,161 @@
1
- // SCSS Document
2
- // File: src/scss/utilities/_borders_outlines.scss
3
- // Description: Border radius, border width/style/color, outline width/style/color/offset.
4
- // Copyright: 2021-2026 Birdycom
5
- // Author: Serge Cools
6
- // Version: 0.2.0
7
- // Framework: OmniaCSS
8
- // Properties: border-radius, border-width, border-style, border-color, outline-width, outline-style, outline-color, outline-offset.
9
- // Values: from $roundsizes, $bordersizes, $borderstyles, $bordercolors (neutrals), $outlinesizes, $outlinestyles, $outlinecolors (neutrals), $outlineoffsets in _variables_layout.scss; palette border/outline colors from $omnia-colors, $html-colors, $ral-colors (var(--color-*) from oc-colors.css).
10
-
11
- @use "sass:string";
12
- @use "sass:map";
13
- @use "sass:list";
14
- @use '../utilities/' as *;
15
-
16
- /* ===================================================================
17
- BORDERS & OUTLINES
18
- Generated from variable maps (same structure as $bordersizes).
19
- Source: src/scss/variables/_variables_layout.scss
20
- =================================================================== */
21
-
22
- ///
23
- /// Border radius, border width/style/color, outline utilities.
24
- /// @group BordersOutlines
25
- /// @name bordersoutlines
26
- /// @link src/scss/utilities/_borders_outlines.scss
27
- /// @since 0.2.0
28
- /// @author Serge Cools
29
- /// @require {variable} $roundsizes
30
- /// @require {variable} $bordersizes
31
- /// @require {variable} $borderstyles
32
- /// @require {variable} $bordercolors
33
- /// @require {variable} $outlinesizes
34
- /// @require {variable} $outlinestyles
35
- /// @require {variable} $outlinecolors
36
- /// @require {variable} $outlineoffsets
37
- /// @example scss - rounded from $roundsizes
38
- /// @each $key, $val in $roundsizes { .rounded-#{string.slice($key, 7)} { border-radius: $val; } }
39
- /// @example html
40
- /// <div class="rounded-lg border-2 border-solid border-red-500 outline-2 outline-offset-2">...</div>
41
- ///
42
-
43
- /* Border radius — from $roundsizes; class prefix .rounded- (round-* → rounded-*) */
44
- @each $key, $val in $roundsizes {
45
- .#{$key} {
46
- border-radius: $val;
47
- }
48
- }
49
-
50
- /* Border width — from $bordersizes; class = key (e.g. .border-none, .border-1, .border-t1) */
51
- @each $key, $val in $bordersizes {
52
- .#{$key} {
53
- border-width: $val;
54
- }
55
- }
56
-
57
- /* Divider — from $dividersizes; border between direct children (flex/grid). Uses :not(:last-child) with border-bottom (h) or border-inline-end (v). */
58
- @each $key, $val in $dividersizes {
59
- @if string.index($key, "divider-h") {
60
- .#{$key} > :not(:last-child) {
61
- border-top-width: 0;
62
- border-bottom-width: $val;
63
- }
64
- } @else {
65
- .#{$key} > :not(:last-child) {
66
- border-inline-start-width: 0;
67
- border-inline-end-width: $val;
68
- }
69
- }
70
- }
71
-
72
- /* Border style — from $borderstyles */
73
- @each $key, $val in $borderstyles {
74
- .#{$key} {
75
- border-style: $val;
76
- }
77
- }
78
-
79
- /* Border color — neutrals from $bordercolors; palette from Omnia/HTML (var) and RAL */
80
- @each $key, $val in $bordercolors {
81
- .#{$key} {
82
- border-color: $val;
83
- }
84
- }
85
-
86
- /* Border/outline color — Omnia & HTML palettes (var(--color-{name}-{step}), same as .bg-* / .text-*) */
87
- @mixin _border-outline-from-palette($color-map) {
88
- @each $colors-prop, $colors-value in $color-map {
89
- @each $main-prop, $main-value in $colors-value {
90
- @each $colorname-prop, $colorname-value in $main-value {
91
- $hex: map.get($colorname-value, hex);
92
- @if $hex {
93
- $name: string.to-lower-case(#{$colorname-prop});
94
- @each $opacitycolor-prop, $opacitycolor-value in $opacitycolor {
95
- $step: list.nth($opacitycolor-value, 1);
96
- .border-#{$name}-#{$step} {
97
- border-color: var(--color-#{$name}-#{$step});
98
- }
99
- .outline-#{$name}-#{$step} {
100
- outline-color: var(--color-#{$name}-#{$step});
101
- }
102
- }
103
- }
104
- }
105
- }
106
- }
107
- }
108
- @include _border-outline-from-palette($omnia-colors);
109
- @include _border-outline-from-palette($html-colors);
110
-
111
- /* Border/outline color — RAL palette (single token --color-{name} from oc-colors.css) */
112
- @each $colorsral-prop, $colorsral-value in $ral-colors {
113
- @each $maincolorsral-prop, $maincolorsral-value in $colorsral-value {
114
- @each $colorname-prop, $colorname-value in $maincolorsral-value {
115
- $name: string.to-lower-case(#{$colorname-prop});
116
- .border-#{$name} {
117
- border-color: var(--color-#{$name});
118
- }
119
- .outline-#{$name} {
120
- outline-color: var(--color-#{$name});
121
- }
122
- }
123
- }
124
- }
125
-
126
- /* Outline width — from $outlinesizes (same structure as $bordersizes) */
127
- @each $key, $val in $outlinesizes {
128
- .#{$key} {
129
- outline-width: $val;
130
- }
131
- }
132
-
133
- /* Outline style — from $outlinestyles; .outline-hidden uses full outline for a11y (visible on focus, invisible by default) */
134
- @each $key, $val in $outlinestyles {
135
- @if $key == "outline-hidden" {
136
- .outline-hidden {
137
- outline: 2px solid transparent;
138
- outline-offset: 2px;
139
- }
140
- } @else {
141
- .#{$key} {
142
- outline-style: $val;
143
- }
144
- }
145
- }
146
-
147
- /* Outline color — neutrals from $outlinecolors (palette classes generated above) */
148
- @each $key, $val in $outlinecolors {
149
- .#{$key} {
150
- outline-color: $val;
151
- }
152
- }
153
-
154
- /* Outline offset — from $outlineoffsets (same structure as $bordersizes) */
155
- @each $key, $val in $outlineoffsets {
156
- .#{$key} {
157
- outline-offset: $val;
158
- }
159
- }
160
-
161
- /* End Borders & Outlines */
1
+ // SCSS Document
2
+ // File: src/scss/utilities/_borders_outlines.scss
3
+ // Description: Border radius, border width/style/color, outline width/style/color/offset.
4
+ // Copyright: 2021-2026 Birdycom
5
+ // Author: Serge Cools
6
+ // Version: 0.2.0
7
+ // Framework: OmniaCSS
8
+ // Properties: border-radius, border-width, border-style, border-color, outline-width, outline-style, outline-color, outline-offset.
9
+ // Values: from $roundsizes, $bordersizes, $borderstyles, $bordercolors (neutrals), $outlinesizes, $outlinestyles, $outlinecolors (neutrals), $outlineoffsets in _variables_layout.scss; palette border/outline colors from $omnia-colors, $html-colors, $ral-colors (var(--color-*) from oc-colors.css).
10
+
11
+ @use "sass:string";
12
+ @use "sass:map";
13
+ @use "sass:list";
14
+ @use '../utilities/' as *;
15
+
16
+ /* ===================================================================
17
+ BORDERS & OUTLINES
18
+ Generated from variable maps (same structure as $bordersizes).
19
+ Source: src/scss/variables/_variables_layout.scss
20
+ =================================================================== */
21
+
22
+ ///
23
+ /// Border radius, border width/style/color, outline utilities.
24
+ /// @group BordersOutlines
25
+ /// @name bordersoutlines
26
+ /// @link src/scss/utilities/_borders_outlines.scss
27
+ /// @since 0.2.0
28
+ /// @author Serge Cools
29
+ /// @require {variable} $roundsizes
30
+ /// @require {variable} $bordersizes
31
+ /// @require {variable} $borderstyles
32
+ /// @require {variable} $bordercolors
33
+ /// @require {variable} $outlinesizes
34
+ /// @require {variable} $outlinestyles
35
+ /// @require {variable} $outlinecolors
36
+ /// @require {variable} $outlineoffsets
37
+ /// @example scss - rounded from $roundsizes
38
+ /// @each $key, $val in $roundsizes { .rounded-#{string.slice($key, 7)} { border-radius: $val; } }
39
+ /// @example html
40
+ /// <div class="rounded-lg border-2 border-solid border-red-500 outline-2 outline-offset-2">...</div>
41
+ ///
42
+
43
+ /* Border radius — from $roundsizes; class prefix .rounded- (round-* → rounded-*) */
44
+ @each $key, $val in $roundsizes {
45
+ .#{$key} {
46
+ border-radius: $val;
47
+ }
48
+ }
49
+
50
+ /* Border width — from $bordersizes; class = key (e.g. .border-none, .border-1, .border-t1) */
51
+ @each $key, $val in $bordersizes {
52
+ .#{$key} {
53
+ border-width: $val;
54
+ }
55
+ }
56
+
57
+ /* Divider — from $dividersizes; border between direct children (flex/grid). Uses :not(:last-child) with border-bottom (h) or border-inline-end (v). */
58
+ @each $key, $val in $dividersizes {
59
+ @if string.index($key, "divider-h") {
60
+ .#{$key} > :not(:last-child) {
61
+ border-top-width: 0;
62
+ border-bottom-width: $val;
63
+ }
64
+ } @else {
65
+ .#{$key} > :not(:last-child) {
66
+ border-inline-start-width: 0;
67
+ border-inline-end-width: $val;
68
+ }
69
+ }
70
+ }
71
+
72
+ /* Border style — from $borderstyles */
73
+ @each $key, $val in $borderstyles {
74
+ .#{$key} {
75
+ border-style: $val;
76
+ }
77
+ }
78
+
79
+ /* Border color — neutrals from $bordercolors; palette from Omnia/HTML (var) and RAL */
80
+ @each $key, $val in $bordercolors {
81
+ .#{$key} {
82
+ border-color: $val;
83
+ }
84
+ }
85
+
86
+ /* Border/outline color — Omnia & HTML palettes (var(--color-{name}-{step}), same as .bg-* / .text-*) */
87
+ @mixin _border-outline-from-palette($color-map) {
88
+ @each $colors-prop, $colors-value in $color-map {
89
+ @each $main-prop, $main-value in $colors-value {
90
+ @each $colorname-prop, $colorname-value in $main-value {
91
+ $hex: map.get($colorname-value, hex);
92
+ @if $hex {
93
+ $name: string.to-lower-case(#{$colorname-prop});
94
+ @each $opacitycolor-prop, $opacitycolor-value in $opacitycolor {
95
+ $step: list.nth($opacitycolor-value, 1);
96
+ .border-#{$name}-#{$step} {
97
+ border-color: var(--color-#{$name}-#{$step});
98
+ }
99
+ .outline-#{$name}-#{$step} {
100
+ outline-color: var(--color-#{$name}-#{$step});
101
+ }
102
+ }
103
+ }
104
+ }
105
+ }
106
+ }
107
+ }
108
+ @include _border-outline-from-palette($omnia-colors);
109
+ @include _border-outline-from-palette($html-colors);
110
+
111
+ /* Border/outline color — RAL palette (single token --color-{name} from oc-colors.css) */
112
+ @each $colorsral-prop, $colorsral-value in $ral-colors {
113
+ @each $maincolorsral-prop, $maincolorsral-value in $colorsral-value {
114
+ @each $colorname-prop, $colorname-value in $maincolorsral-value {
115
+ $name: string.to-lower-case(#{$colorname-prop});
116
+ .border-#{$name} {
117
+ border-color: var(--color-#{$name});
118
+ }
119
+ .outline-#{$name} {
120
+ outline-color: var(--color-#{$name});
121
+ }
122
+ }
123
+ }
124
+ }
125
+
126
+ /* Outline width — from $outlinesizes (same structure as $bordersizes) */
127
+ @each $key, $val in $outlinesizes {
128
+ .#{$key} {
129
+ outline-width: $val;
130
+ }
131
+ }
132
+
133
+ /* Outline style — from $outlinestyles; .outline-hidden uses full outline for a11y (visible on focus, invisible by default) */
134
+ @each $key, $val in $outlinestyles {
135
+ @if $key == "outline-hidden" {
136
+ .outline-hidden {
137
+ outline: 2px solid transparent;
138
+ outline-offset: 2px;
139
+ }
140
+ } @else {
141
+ .#{$key} {
142
+ outline-style: $val;
143
+ }
144
+ }
145
+ }
146
+
147
+ /* Outline color — neutrals from $outlinecolors (palette classes generated above) */
148
+ @each $key, $val in $outlinecolors {
149
+ .#{$key} {
150
+ outline-color: $val;
151
+ }
152
+ }
153
+
154
+ /* Outline offset — from $outlineoffsets (same structure as $bordersizes) */
155
+ @each $key, $val in $outlineoffsets {
156
+ .#{$key} {
157
+ outline-offset: $val;
158
+ }
159
+ }
160
+
161
+ /* End Borders & Outlines */