@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.
- package/LICENSE +21 -21
- package/README.md +44 -44
- package/dist/oc-theme.css +1 -1
- package/dist/omnia.css +2 -1
- package/dist/omnia.min.css +1 -1
- package/dist/omnia.starter.css +2 -0
- package/dist/tokens/omnia.dtcg.json +2 -2
- package/dist/tokens/omnia.tokens.json +1 -1
- package/dist/tokens/omnia_tokens.py +2 -2
- package/package.json +63 -63
- package/scss/utilities/_anchor_positioning.scss +65 -65
- package/scss/utilities/_animation_properties.scss +143 -143
- package/scss/utilities/_borders_extended.scss +97 -97
- package/scss/utilities/_borders_outlines.scss +161 -161
- package/scss/utilities/_containment.scss +82 -82
- package/scss/utilities/_css_functions.scss +34 -34
- package/scss/utilities/_dark_mode.scss +117 -117
- package/scss/utilities/_drop_shadow_colors.scss +26 -26
- package/scss/utilities/_experimental_css.scss +149 -149
- package/scss/utilities/_flexbox.scss +317 -317
- package/scss/utilities/_font_variants.scss +139 -139
- package/scss/utilities/_gap.scss +103 -103
- package/scss/utilities/_gradient_stops.scss +48 -48
- package/scss/utilities/_grid.scss +672 -672
- package/scss/utilities/_layout_extras.scss +171 -171
- package/scss/utilities/_layout_flow.scss +210 -210
- package/scss/utilities/_mask_extras.scss +62 -62
- package/scss/utilities/_motion_transforms.scss +167 -167
- package/scss/utilities/_scroll_animations.scss +80 -80
- package/scss/utilities/_scrollbar.scss +2 -1
- package/scss/utilities/_shadow_tokens.scss +21 -21
- package/scss/utilities/_shapes.scss +72 -72
- package/scss/utilities/_sizing_logical.scss +99 -99
- package/scss/utilities/_starting_style.scss +53 -53
- package/scss/utilities/_state_variants.scss +196 -196
- package/scss/utilities/_svg.scss +100 -100
- package/scss/utilities/_table_advanced.scss +19 -19
- package/scss/utilities/_typography_advanced.scss +124 -124
- package/scss/utilities/_typography_modern.scss +83 -83
- package/scss/utilities/_view_transitions.scss +64 -64
- package/scss/utilities/_writing_modes.scss +72 -72
- package/scss/variables/_hulp.scss +107 -107
- package/scss/variables/_variables_effects.scss +108 -108
- package/src/postcss.mjs +43 -43
- package/src/tokens.mjs +377 -377
- package/src/variants.mjs +278 -278
- 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 */
|