@birdycom/omniacss 0.11.0 → 0.11.1

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 (47) 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/tokens/omnia.dtcg.json +2 -2
  8. package/dist/tokens/omnia.tokens.json +1 -1
  9. package/dist/tokens/omnia_tokens.py +2 -2
  10. package/package.json +63 -63
  11. package/scss/utilities/_anchor_positioning.scss +65 -65
  12. package/scss/utilities/_animation_properties.scss +143 -143
  13. package/scss/utilities/_borders_extended.scss +97 -97
  14. package/scss/utilities/_borders_outlines.scss +161 -161
  15. package/scss/utilities/_containment.scss +82 -82
  16. package/scss/utilities/_css_functions.scss +34 -34
  17. package/scss/utilities/_dark_mode.scss +117 -117
  18. package/scss/utilities/_drop_shadow_colors.scss +26 -26
  19. package/scss/utilities/_experimental_css.scss +149 -149
  20. package/scss/utilities/_flexbox.scss +317 -317
  21. package/scss/utilities/_font_variants.scss +139 -139
  22. package/scss/utilities/_gap.scss +103 -103
  23. package/scss/utilities/_gradient_stops.scss +48 -48
  24. package/scss/utilities/_grid.scss +672 -672
  25. package/scss/utilities/_layout_extras.scss +171 -171
  26. package/scss/utilities/_layout_flow.scss +210 -210
  27. package/scss/utilities/_mask_extras.scss +62 -62
  28. package/scss/utilities/_motion_transforms.scss +167 -167
  29. package/scss/utilities/_scroll_animations.scss +80 -80
  30. package/scss/utilities/_scrollbar.scss +2 -1
  31. package/scss/utilities/_shadow_tokens.scss +21 -21
  32. package/scss/utilities/_shapes.scss +72 -72
  33. package/scss/utilities/_sizing_logical.scss +99 -99
  34. package/scss/utilities/_starting_style.scss +53 -53
  35. package/scss/utilities/_state_variants.scss +196 -196
  36. package/scss/utilities/_svg.scss +100 -100
  37. package/scss/utilities/_table_advanced.scss +19 -19
  38. package/scss/utilities/_typography_advanced.scss +124 -124
  39. package/scss/utilities/_typography_modern.scss +83 -83
  40. package/scss/utilities/_view_transitions.scss +64 -64
  41. package/scss/utilities/_writing_modes.scss +72 -72
  42. package/scss/variables/_hulp.scss +107 -107
  43. package/scss/variables/_variables_effects.scss +108 -108
  44. package/src/postcss.mjs +43 -43
  45. package/src/tokens.mjs +377 -377
  46. package/src/variants.mjs +278 -278
  47. 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 */