@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,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; }