@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,210 +1,210 @@
1
- // SCSS Document
2
- // File: src/scss/utilities/_layout_flow.scss
3
- // Map: columns -> break -> box-decoration -> float/clear -> object -> inset -> order
4
- // -> column rule/span/fill -> orphans/widows -> image-rendering -> dynamic-range-limit
5
-
6
- /* Columns */
7
- .columns-1 { columns: 1; }
8
- .columns-2 { columns: 2; }
9
- .columns-3 { columns: 3; }
10
- .columns-4 { columns: 4; }
11
- .columns-5 { columns: 5; }
12
- .columns-6 { columns: 6; }
13
- .columns-auto { columns: auto; }
14
- .columns-3xs { columns: 16rem; }
15
- .columns-2xs { columns: 18rem; }
16
- .columns-xs { columns: 20rem; }
17
- .columns-sm { columns: 24rem; }
18
- .columns-md { columns: 28rem; }
19
- .columns-lg { columns: 32rem; }
20
-
21
- /* Break before/after/inside */
22
- .break-before-auto { break-before: auto; }
23
- .break-before-avoid { break-before: avoid; }
24
- .break-before-all { break-before: all; }
25
- .break-before-page { break-before: page; }
26
- .break-before-column { break-before: column; }
27
- .break-before-left { break-before: left; }
28
- .break-before-right { break-before: right; }
29
-
30
- .break-after-auto { break-after: auto; }
31
- .break-after-avoid { break-after: avoid; }
32
- .break-after-all { break-after: all; }
33
- .break-after-page { break-after: page; }
34
- .break-after-column { break-after: column; }
35
- .break-after-left { break-after: left; }
36
- .break-after-right { break-after: right; }
37
-
38
- .break-inside-auto { break-inside: auto; }
39
- .break-inside-avoid { break-inside: avoid; }
40
- .break-inside-avoid-page { break-inside: avoid-page; }
41
- .break-inside-avoid-column { break-inside: avoid-column; }
42
-
43
- /* Box decoration break */
44
- .box-decoration-slice { box-decoration-break: slice; }
45
- .box-decoration-clone { box-decoration-break: clone; }
46
-
47
- /* Float and clear */
48
- .float-start { float: inline-start; }
49
- .float-end { float: inline-end; }
50
- .float-right { float: right; }
51
- .float-left { float: left; }
52
- .float-none { float: none; }
53
-
54
- .clear-start { clear: inline-start; }
55
- .clear-end { clear: inline-end; }
56
- .clear-left { clear: left; }
57
- .clear-right { clear: right; }
58
- .clear-both { clear: both; }
59
- .clear-none { clear: none; }
60
-
61
- /* Object fit and position */
62
- .object-contain { object-fit: contain; }
63
- .object-cover { object-fit: cover; }
64
- .object-fill { object-fit: fill; }
65
- .object-none { object-fit: none; }
66
- .object-scale-down { object-fit: scale-down; }
67
-
68
- .object-center { object-position: center; }
69
- .object-top { object-position: top; }
70
- .object-bottom { object-position: bottom; }
71
- .object-left { object-position: left; }
72
- .object-right { object-position: right; }
73
- .object-left-top { object-position: left top; }
74
- .object-left-bottom { object-position: left bottom; }
75
- .object-right-top { object-position: right top; }
76
- .object-right-bottom { object-position: right bottom; }
77
-
78
- /* Inset (top/right/bottom/left) */
79
- .top-auto { top: auto; }
80
- .top-0 { top: 0; }
81
- .top-1 { top: 0.25rem; }
82
- .top-2 { top: 0.5rem; }
83
- .top-4 { top: 1rem; }
84
- .top-8 { top: 2rem; }
85
- .top-1\/2 { top: 50%; }
86
- .top-1\/3 { top: 33.333333%; }
87
- .top-2\/3 { top: 66.666667%; }
88
- .top-1\/4 { top: 25%; }
89
- .top-3\/4 { top: 75%; }
90
- .top-full { top: 100%; }
91
-
92
- .right-auto { right: auto; }
93
- .right-0 { right: 0; }
94
- .right-1 { right: 0.25rem; }
95
- .right-2 { right: 0.5rem; }
96
- .right-4 { right: 1rem; }
97
- .right-8 { right: 2rem; }
98
- .right-1\/2 { right: 50%; }
99
- .right-1\/3 { right: 33.333333%; }
100
- .right-2\/3 { right: 66.666667%; }
101
- .right-1\/4 { right: 25%; }
102
- .right-3\/4 { right: 75%; }
103
- .right-full { right: 100%; }
104
-
105
- .bottom-auto { bottom: auto; }
106
- .bottom-0 { bottom: 0; }
107
- .bottom-1 { bottom: 0.25rem; }
108
- .bottom-2 { bottom: 0.5rem; }
109
- .bottom-4 { bottom: 1rem; }
110
- .bottom-8 { bottom: 2rem; }
111
- .bottom-1\/2 { bottom: 50%; }
112
- .bottom-1\/3 { bottom: 33.333333%; }
113
- .bottom-2\/3 { bottom: 66.666667%; }
114
- .bottom-1\/4 { bottom: 25%; }
115
- .bottom-3\/4 { bottom: 75%; }
116
- .bottom-full { bottom: 100%; }
117
-
118
- .left-auto { left: auto; }
119
- .left-0 { left: 0; }
120
- .left-1 { left: 0.25rem; }
121
- .left-2 { left: 0.5rem; }
122
- .left-4 { left: 1rem; }
123
- .left-8 { left: 2rem; }
124
- .left-1\/2 { left: 50%; }
125
- .left-1\/3 { left: 33.333333%; }
126
- .left-2\/3 { left: 66.666667%; }
127
- .left-1\/4 { left: 25%; }
128
- .left-3\/4 { left: 75%; }
129
- .left-full { left: 100%; }
130
-
131
- /* Order */
132
- .order-first { order: -9999; }
133
- .order-last { order: 9999; }
134
- .order-none { order: 0; }
135
- .order-1 { order: 1; }
136
- .order-2 { order: 2; }
137
- .order-3 { order: 3; }
138
- .order-4 { order: 4; }
139
- .order-5 { order: 5; }
140
- .order-6 { order: 6; }
141
- .order-7 { order: 7; }
142
- .order-8 { order: 8; }
143
- .order-9 { order: 9; }
144
- .order-10 { order: 10; }
145
- .order-11 { order: 11; }
146
- .order-12 { order: 12; }
147
-
148
- /* Column count / width aliases (documented in docs/columns) */
149
- .cols-1 { column-count: 1; }
150
- .cols-2 { column-count: 2; }
151
- .cols-3 { column-count: 3; }
152
- .cols-4 { column-count: 4; }
153
- .cols-5 { column-count: 5; }
154
- .cols-6 { column-count: 6; }
155
- .cols-auto { column-count: auto; }
156
- .col-w-auto { column-width: auto; }
157
- .col-w-16 { column-width: 16rem; }
158
- .col-w-20 { column-width: 20rem; }
159
- .col-w-24 { column-width: 24rem; }
160
-
161
- /* Column rule, span and fill */
162
- .col-rule-none { column-rule-style: none; }
163
- .col-rule-solid { column-rule-style: solid; }
164
- .col-rule-dashed { column-rule-style: dashed; }
165
- .col-rule-dotted { column-rule-style: dotted; }
166
- .col-rule-1 { column-rule-width: 1px; }
167
- .col-rule-2 { column-rule-width: 2px; }
168
- .col-rule-4 { column-rule-width: 4px; }
169
- .col-rule-current { column-rule-color: currentcolor; }
170
- .col-span-all { column-span: all; }
171
- .col-span-none { column-span: none; }
172
- .col-fill-auto { column-fill: auto; }
173
- .col-fill-balance { column-fill: balance; }
174
-
175
- /* Break avoid page/column */
176
- .break-before-avoid-page { break-before: avoid-page; }
177
- .break-before-avoid-column { break-before: avoid-column; }
178
- .break-after-avoid-page { break-after: avoid-page; }
179
- .break-after-avoid-column { break-after: avoid-column; }
180
-
181
- /* Box decoration break aliases */
182
- .decoration-slice { box-decoration-break: slice; }
183
- .decoration-clone { box-decoration-break: clone; }
184
-
185
- /* Orphans and widows */
186
- .orphans-1 { orphans: 1; }
187
- .orphans-2 { orphans: 2; }
188
- .orphans-3 { orphans: 3; }
189
- .orphans-4 { orphans: 4; }
190
- .widows-1 { widows: 1; }
191
- .widows-2 { widows: 2; }
192
- .widows-3 { widows: 3; }
193
- .widows-4 { widows: 4; }
194
-
195
- /* Object position aliases */
196
- .object-top-left { object-position: top left; }
197
- .object-top-right { object-position: top right; }
198
- .object-bottom-left { object-position: bottom left; }
199
- .object-bottom-right { object-position: bottom right; }
200
-
201
- /* Image rendering */
202
- .image-auto { image-rendering: auto; }
203
- .image-smooth { image-rendering: smooth; }
204
- .image-crisp { image-rendering: crisp-edges; }
205
- .image-pixelated { image-rendering: pixelated; }
206
-
207
- /* Dynamic range limit (HDR images/video) */
208
- .dynamic-range-standard { dynamic-range-limit: standard; }
209
- .dynamic-range-constrained { dynamic-range-limit: constrained; }
210
- .dynamic-range-no-limit { dynamic-range-limit: no-limit; }
1
+ // SCSS Document
2
+ // File: src/scss/utilities/_layout_flow.scss
3
+ // Map: columns -> break -> box-decoration -> float/clear -> object -> inset -> order
4
+ // -> column rule/span/fill -> orphans/widows -> image-rendering -> dynamic-range-limit
5
+
6
+ /* Columns */
7
+ .columns-1 { columns: 1; }
8
+ .columns-2 { columns: 2; }
9
+ .columns-3 { columns: 3; }
10
+ .columns-4 { columns: 4; }
11
+ .columns-5 { columns: 5; }
12
+ .columns-6 { columns: 6; }
13
+ .columns-auto { columns: auto; }
14
+ .columns-3xs { columns: 16rem; }
15
+ .columns-2xs { columns: 18rem; }
16
+ .columns-xs { columns: 20rem; }
17
+ .columns-sm { columns: 24rem; }
18
+ .columns-md { columns: 28rem; }
19
+ .columns-lg { columns: 32rem; }
20
+
21
+ /* Break before/after/inside */
22
+ .break-before-auto { break-before: auto; }
23
+ .break-before-avoid { break-before: avoid; }
24
+ .break-before-all { break-before: all; }
25
+ .break-before-page { break-before: page; }
26
+ .break-before-column { break-before: column; }
27
+ .break-before-left { break-before: left; }
28
+ .break-before-right { break-before: right; }
29
+
30
+ .break-after-auto { break-after: auto; }
31
+ .break-after-avoid { break-after: avoid; }
32
+ .break-after-all { break-after: all; }
33
+ .break-after-page { break-after: page; }
34
+ .break-after-column { break-after: column; }
35
+ .break-after-left { break-after: left; }
36
+ .break-after-right { break-after: right; }
37
+
38
+ .break-inside-auto { break-inside: auto; }
39
+ .break-inside-avoid { break-inside: avoid; }
40
+ .break-inside-avoid-page { break-inside: avoid-page; }
41
+ .break-inside-avoid-column { break-inside: avoid-column; }
42
+
43
+ /* Box decoration break */
44
+ .box-decoration-slice { box-decoration-break: slice; }
45
+ .box-decoration-clone { box-decoration-break: clone; }
46
+
47
+ /* Float and clear */
48
+ .float-start { float: inline-start; }
49
+ .float-end { float: inline-end; }
50
+ .float-right { float: right; }
51
+ .float-left { float: left; }
52
+ .float-none { float: none; }
53
+
54
+ .clear-start { clear: inline-start; }
55
+ .clear-end { clear: inline-end; }
56
+ .clear-left { clear: left; }
57
+ .clear-right { clear: right; }
58
+ .clear-both { clear: both; }
59
+ .clear-none { clear: none; }
60
+
61
+ /* Object fit and position */
62
+ .object-contain { object-fit: contain; }
63
+ .object-cover { object-fit: cover; }
64
+ .object-fill { object-fit: fill; }
65
+ .object-none { object-fit: none; }
66
+ .object-scale-down { object-fit: scale-down; }
67
+
68
+ .object-center { object-position: center; }
69
+ .object-top { object-position: top; }
70
+ .object-bottom { object-position: bottom; }
71
+ .object-left { object-position: left; }
72
+ .object-right { object-position: right; }
73
+ .object-left-top { object-position: left top; }
74
+ .object-left-bottom { object-position: left bottom; }
75
+ .object-right-top { object-position: right top; }
76
+ .object-right-bottom { object-position: right bottom; }
77
+
78
+ /* Inset (top/right/bottom/left) */
79
+ .top-auto { top: auto; }
80
+ .top-0 { top: 0; }
81
+ .top-1 { top: 0.25rem; }
82
+ .top-2 { top: 0.5rem; }
83
+ .top-4 { top: 1rem; }
84
+ .top-8 { top: 2rem; }
85
+ .top-1\/2 { top: 50%; }
86
+ .top-1\/3 { top: 33.333333%; }
87
+ .top-2\/3 { top: 66.666667%; }
88
+ .top-1\/4 { top: 25%; }
89
+ .top-3\/4 { top: 75%; }
90
+ .top-full { top: 100%; }
91
+
92
+ .right-auto { right: auto; }
93
+ .right-0 { right: 0; }
94
+ .right-1 { right: 0.25rem; }
95
+ .right-2 { right: 0.5rem; }
96
+ .right-4 { right: 1rem; }
97
+ .right-8 { right: 2rem; }
98
+ .right-1\/2 { right: 50%; }
99
+ .right-1\/3 { right: 33.333333%; }
100
+ .right-2\/3 { right: 66.666667%; }
101
+ .right-1\/4 { right: 25%; }
102
+ .right-3\/4 { right: 75%; }
103
+ .right-full { right: 100%; }
104
+
105
+ .bottom-auto { bottom: auto; }
106
+ .bottom-0 { bottom: 0; }
107
+ .bottom-1 { bottom: 0.25rem; }
108
+ .bottom-2 { bottom: 0.5rem; }
109
+ .bottom-4 { bottom: 1rem; }
110
+ .bottom-8 { bottom: 2rem; }
111
+ .bottom-1\/2 { bottom: 50%; }
112
+ .bottom-1\/3 { bottom: 33.333333%; }
113
+ .bottom-2\/3 { bottom: 66.666667%; }
114
+ .bottom-1\/4 { bottom: 25%; }
115
+ .bottom-3\/4 { bottom: 75%; }
116
+ .bottom-full { bottom: 100%; }
117
+
118
+ .left-auto { left: auto; }
119
+ .left-0 { left: 0; }
120
+ .left-1 { left: 0.25rem; }
121
+ .left-2 { left: 0.5rem; }
122
+ .left-4 { left: 1rem; }
123
+ .left-8 { left: 2rem; }
124
+ .left-1\/2 { left: 50%; }
125
+ .left-1\/3 { left: 33.333333%; }
126
+ .left-2\/3 { left: 66.666667%; }
127
+ .left-1\/4 { left: 25%; }
128
+ .left-3\/4 { left: 75%; }
129
+ .left-full { left: 100%; }
130
+
131
+ /* Order */
132
+ .order-first { order: -9999; }
133
+ .order-last { order: 9999; }
134
+ .order-none { order: 0; }
135
+ .order-1 { order: 1; }
136
+ .order-2 { order: 2; }
137
+ .order-3 { order: 3; }
138
+ .order-4 { order: 4; }
139
+ .order-5 { order: 5; }
140
+ .order-6 { order: 6; }
141
+ .order-7 { order: 7; }
142
+ .order-8 { order: 8; }
143
+ .order-9 { order: 9; }
144
+ .order-10 { order: 10; }
145
+ .order-11 { order: 11; }
146
+ .order-12 { order: 12; }
147
+
148
+ /* Column count / width aliases (documented in docs/columns) */
149
+ .cols-1 { column-count: 1; }
150
+ .cols-2 { column-count: 2; }
151
+ .cols-3 { column-count: 3; }
152
+ .cols-4 { column-count: 4; }
153
+ .cols-5 { column-count: 5; }
154
+ .cols-6 { column-count: 6; }
155
+ .cols-auto { column-count: auto; }
156
+ .col-w-auto { column-width: auto; }
157
+ .col-w-16 { column-width: 16rem; }
158
+ .col-w-20 { column-width: 20rem; }
159
+ .col-w-24 { column-width: 24rem; }
160
+
161
+ /* Column rule, span and fill */
162
+ .col-rule-none { column-rule-style: none; }
163
+ .col-rule-solid { column-rule-style: solid; }
164
+ .col-rule-dashed { column-rule-style: dashed; }
165
+ .col-rule-dotted { column-rule-style: dotted; }
166
+ .col-rule-1 { column-rule-width: 1px; }
167
+ .col-rule-2 { column-rule-width: 2px; }
168
+ .col-rule-4 { column-rule-width: 4px; }
169
+ .col-rule-current { column-rule-color: currentcolor; }
170
+ .col-span-all { column-span: all; }
171
+ .col-span-none { column-span: none; }
172
+ .col-fill-auto { column-fill: auto; }
173
+ .col-fill-balance { column-fill: balance; }
174
+
175
+ /* Break avoid page/column */
176
+ .break-before-avoid-page { break-before: avoid-page; }
177
+ .break-before-avoid-column { break-before: avoid-column; }
178
+ .break-after-avoid-page { break-after: avoid-page; }
179
+ .break-after-avoid-column { break-after: avoid-column; }
180
+
181
+ /* Box decoration break aliases */
182
+ .decoration-slice { box-decoration-break: slice; }
183
+ .decoration-clone { box-decoration-break: clone; }
184
+
185
+ /* Orphans and widows */
186
+ .orphans-1 { orphans: 1; }
187
+ .orphans-2 { orphans: 2; }
188
+ .orphans-3 { orphans: 3; }
189
+ .orphans-4 { orphans: 4; }
190
+ .widows-1 { widows: 1; }
191
+ .widows-2 { widows: 2; }
192
+ .widows-3 { widows: 3; }
193
+ .widows-4 { widows: 4; }
194
+
195
+ /* Object position aliases */
196
+ .object-top-left { object-position: top left; }
197
+ .object-top-right { object-position: top right; }
198
+ .object-bottom-left { object-position: bottom left; }
199
+ .object-bottom-right { object-position: bottom right; }
200
+
201
+ /* Image rendering */
202
+ .image-auto { image-rendering: auto; }
203
+ .image-smooth { image-rendering: smooth; }
204
+ .image-crisp { image-rendering: crisp-edges; }
205
+ .image-pixelated { image-rendering: pixelated; }
206
+
207
+ /* Dynamic range limit (HDR images/video) */
208
+ .dynamic-range-standard { dynamic-range-limit: standard; }
209
+ .dynamic-range-constrained { dynamic-range-limit: constrained; }
210
+ .dynamic-range-no-limit { dynamic-range-limit: no-limit; }
@@ -1,62 +1,62 @@
1
- // SCSS Document
2
- // File: src/scss/utilities/_mask_extras.scss
3
- // Description: More mask utilities — edge fades, composable linear/radial masks with stop positions, and the missing
4
- // position, size, clip and mode keywords next to the .mask-* classes of _effects_advanced.scss.
5
- // Copyright: 2021-2026 Birdycom
6
- // Author: Serge Cools
7
- // Version: 0.4.0
8
- // Framework: OmniaCSS
9
- // Purpose: Generate .mask-fade-{t|l|y}, .mask-linear-{deg}, .mask-radial-{circle|ellipse}, .mask-from-{n}, .mask-to-{n},
10
- // .mask-position-{side|corner}, .mask-size-{n}, .mask-clip-no-clip, .mask-mode-match-source, .mask-composite-*.
11
- // Reference: https://developer.mozilla.org/en-US/docs/Web/CSS/mask
12
- // Note: .mask-linear-* / .mask-radial-* fade from opaque to transparent between --oc-mask-from and --oc-mask-to;
13
- // move the stops with .mask-from-{n} / .mask-to-{n}: class="mask-linear-180 mask-from-60".
14
- // Map: edge fades -> composable gradient masks -> position -> size -> clip and mode
15
-
16
- /* Edge fades (.mask-fade-b, -r and -x live in _layout_extras.scss) */
17
- .mask-fade-t { mask: linear-gradient(to top, black 60%, transparent); }
18
- .mask-fade-l { mask: linear-gradient(to left, black 60%, transparent); }
19
- .mask-fade-y { mask: linear-gradient(to bottom, transparent, black 15%, black 85%, transparent); }
20
-
21
- /* Composable gradient masks */
22
- @each $deg in (0, 45, 90, 135, 180, 225, 270, 315) {
23
- .mask-linear-#{$deg} {
24
- mask-image: linear-gradient(#{$deg}deg, black var(--oc-mask-from, 0%), transparent var(--oc-mask-to, 100%));
25
- }
26
- }
27
- .mask-radial-circle {
28
- mask-image: radial-gradient(circle, black var(--oc-mask-from, 0%), transparent var(--oc-mask-to, 100%));
29
- }
30
- .mask-radial-ellipse {
31
- mask-image: radial-gradient(ellipse, black var(--oc-mask-from, 0%), transparent var(--oc-mask-to, 100%));
32
- }
33
- .mask-conic {
34
- mask-image: conic-gradient(black var(--oc-mask-from, 0%), transparent var(--oc-mask-to, 100%));
35
- }
36
- @each $n in (0, 10, 20, 25, 30, 40, 50, 60, 70, 75, 80, 90, 100) {
37
- .mask-from-#{$n} { --oc-mask-from: #{$n}%; }
38
- .mask-to-#{$n} { --oc-mask-to: #{$n}%; }
39
- }
40
-
41
- /* Mask position */
42
- $_mask-positions: ('left': left, 'right': right, 'left-top': left top, 'right-top': right top, 'left-bottom': left bottom, 'right-bottom': right bottom);
43
- @each $key, $value in $_mask-positions {
44
- .mask-position-#{$key} { mask-position: $value; }
45
- }
46
-
47
- /* Mask repeat */
48
- .mask-repeat-x { mask-repeat: repeat-x; }
49
- .mask-repeat-y { mask-repeat: repeat-y; }
50
- .mask-repeat-space { mask-repeat: space; }
51
- .mask-repeat-round { mask-repeat: round; }
52
-
53
- /* Mask size in percent and rem */
54
- @each $n in (25, 50, 75, 100) {
55
- .mask-size-#{$n} { mask-size: #{$n}%; }
56
- }
57
-
58
- /* Mask clip, mode, composite and reset */
59
- .mask-clip-no-clip { mask-clip: no-clip; }
60
- .mask-clip-text { mask-clip: text; }
61
- .mask-mode-match-source { mask-mode: match-source; }
62
- .mask-composite-source-over { mask-composite: add; }
1
+ // SCSS Document
2
+ // File: src/scss/utilities/_mask_extras.scss
3
+ // Description: More mask utilities — edge fades, composable linear/radial masks with stop positions, and the missing
4
+ // position, size, clip and mode keywords next to the .mask-* classes of _effects_advanced.scss.
5
+ // Copyright: 2021-2026 Birdycom
6
+ // Author: Serge Cools
7
+ // Version: 0.4.0
8
+ // Framework: OmniaCSS
9
+ // Purpose: Generate .mask-fade-{t|l|y}, .mask-linear-{deg}, .mask-radial-{circle|ellipse}, .mask-from-{n}, .mask-to-{n},
10
+ // .mask-position-{side|corner}, .mask-size-{n}, .mask-clip-no-clip, .mask-mode-match-source, .mask-composite-*.
11
+ // Reference: https://developer.mozilla.org/en-US/docs/Web/CSS/mask
12
+ // Note: .mask-linear-* / .mask-radial-* fade from opaque to transparent between --oc-mask-from and --oc-mask-to;
13
+ // move the stops with .mask-from-{n} / .mask-to-{n}: class="mask-linear-180 mask-from-60".
14
+ // Map: edge fades -> composable gradient masks -> position -> size -> clip and mode
15
+
16
+ /* Edge fades (.mask-fade-b, -r and -x live in _layout_extras.scss) */
17
+ .mask-fade-t { mask: linear-gradient(to top, black 60%, transparent); }
18
+ .mask-fade-l { mask: linear-gradient(to left, black 60%, transparent); }
19
+ .mask-fade-y { mask: linear-gradient(to bottom, transparent, black 15%, black 85%, transparent); }
20
+
21
+ /* Composable gradient masks */
22
+ @each $deg in (0, 45, 90, 135, 180, 225, 270, 315) {
23
+ .mask-linear-#{$deg} {
24
+ mask-image: linear-gradient(#{$deg}deg, black var(--oc-mask-from, 0%), transparent var(--oc-mask-to, 100%));
25
+ }
26
+ }
27
+ .mask-radial-circle {
28
+ mask-image: radial-gradient(circle, black var(--oc-mask-from, 0%), transparent var(--oc-mask-to, 100%));
29
+ }
30
+ .mask-radial-ellipse {
31
+ mask-image: radial-gradient(ellipse, black var(--oc-mask-from, 0%), transparent var(--oc-mask-to, 100%));
32
+ }
33
+ .mask-conic {
34
+ mask-image: conic-gradient(black var(--oc-mask-from, 0%), transparent var(--oc-mask-to, 100%));
35
+ }
36
+ @each $n in (0, 10, 20, 25, 30, 40, 50, 60, 70, 75, 80, 90, 100) {
37
+ .mask-from-#{$n} { --oc-mask-from: #{$n}%; }
38
+ .mask-to-#{$n} { --oc-mask-to: #{$n}%; }
39
+ }
40
+
41
+ /* Mask position */
42
+ $_mask-positions: ('left': left, 'right': right, 'left-top': left top, 'right-top': right top, 'left-bottom': left bottom, 'right-bottom': right bottom);
43
+ @each $key, $value in $_mask-positions {
44
+ .mask-position-#{$key} { mask-position: $value; }
45
+ }
46
+
47
+ /* Mask repeat */
48
+ .mask-repeat-x { mask-repeat: repeat-x; }
49
+ .mask-repeat-y { mask-repeat: repeat-y; }
50
+ .mask-repeat-space { mask-repeat: space; }
51
+ .mask-repeat-round { mask-repeat: round; }
52
+
53
+ /* Mask size in percent and rem */
54
+ @each $n in (25, 50, 75, 100) {
55
+ .mask-size-#{$n} { mask-size: #{$n}%; }
56
+ }
57
+
58
+ /* Mask clip, mode, composite and reset */
59
+ .mask-clip-no-clip { mask-clip: no-clip; }
60
+ .mask-clip-text { mask-clip: text; }
61
+ .mask-mode-match-source { mask-mode: match-source; }
62
+ .mask-composite-source-over { mask-composite: add; }