@birdycom/omniacss 0.0.0-stage → 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 -0
- package/README.md +44 -3
- package/dist/oc-colors.css +4429 -0
- package/dist/oc-theme.css +69 -0
- package/dist/omnia.css +465436 -0
- package/dist/omnia.min.css +2 -0
- package/dist/omnia.starter.css +13461 -0
- package/dist/omnia.starter.min.css +1 -0
- package/dist/tokens/omnia.dtcg.json +1496 -0
- package/dist/tokens/omnia.tokens.json +580 -0
- package/dist/tokens/omnia_tokens.py +189 -0
- package/package.json +63 -6
- package/scss/base/_reset.scss +88 -0
- package/scss/config/omniacss.config.scss +114 -0
- package/scss/config/omniacss.fonts.scss +34 -0
- package/scss/functions/_functions.scss +407 -0
- package/scss/json/html-colors.json +1998 -0
- package/scss/json/omnia-colors.json +500 -0
- package/scss/json/ral-colors.json +3430 -0
- package/scss/layout/_media_query.scss +18 -0
- package/scss/omnia_colors.scss +7 -0
- package/scss/omnia_main.scss +143 -0
- package/scss/profiles/omnia_main.hsl.scss +12 -0
- package/scss/profiles/omnia_main.oklab.scss +12 -0
- package/scss/profiles/omnia_main.oklch.scss +12 -0
- package/scss/utilities/_accessibility.scss +42 -0
- package/scss/utilities/_alignment.scss +861 -0
- package/scss/utilities/_anchor_positioning.scss +65 -0
- package/scss/utilities/_animation_properties.scss +143 -0
- package/scss/utilities/_aspect.scss +73 -0
- package/scss/utilities/_backgrounds.scss +49 -0
- package/scss/utilities/_borders_extended.scss +97 -0
- package/scss/utilities/_borders_outlines.scss +161 -0
- package/scss/utilities/_clamp.scss +111 -0
- package/scss/utilities/_colors_html.scss +341 -0
- package/scss/utilities/_colors_mix.scss +84 -0
- package/scss/utilities/_colors_omnia.scss +315 -0
- package/scss/utilities/_colors_ral.scss +151 -0
- package/scss/utilities/_colors_tokens.scss +87 -0
- package/scss/utilities/_container.scss +58 -0
- package/scss/utilities/_containment.scss +82 -0
- package/scss/utilities/_corner_shape.scss +30 -0
- package/scss/utilities/_css_functions.scss +34 -0
- package/scss/utilities/_dark_mode.scss +117 -0
- package/scss/utilities/_display.scss +58 -0
- package/scss/utilities/_drop_shadow_colors.scss +26 -0
- package/scss/utilities/_effects.scss +50 -0
- package/scss/utilities/_effects_advanced.scss +102 -0
- package/scss/utilities/_experimental_css.scss +149 -0
- package/scss/utilities/_filters.scss +89 -0
- package/scss/utilities/_flexbox.scss +318 -0
- package/scss/utilities/_font_variants.scss +139 -0
- package/scss/utilities/_fonts.scss +276 -0
- package/scss/utilities/_gap.scss +104 -0
- package/scss/utilities/_gradient_stops.scss +48 -0
- package/scss/utilities/_gradients.scss +99 -0
- package/scss/utilities/_grid.scss +673 -0
- package/scss/utilities/_index.scss +22 -0
- package/scss/utilities/_interactivity.scss +198 -0
- package/scss/utilities/_layering.scss +24 -0
- package/scss/utilities/_layout_extras.scss +171 -0
- package/scss/utilities/_layout_flow.scss +210 -0
- package/scss/utilities/_mask_extras.scss +62 -0
- package/scss/utilities/_motion_transforms.scss +167 -0
- package/scss/utilities/_overflow.scss +41 -0
- package/scss/utilities/_position.scss +49 -0
- package/scss/utilities/_responsive.scss +272 -0
- package/scss/utilities/_scroll_animations.scss +80 -0
- package/scss/utilities/_scroll_spacing.scss +33 -0
- package/scss/utilities/_scrollbar.scss +50 -0
- package/scss/utilities/_shadow_tokens.scss +21 -0
- package/scss/utilities/_shapes.scss +72 -0
- package/scss/utilities/_sizing.scss +458 -0
- package/scss/utilities/_sizing_logical.scss +99 -0
- package/scss/utilities/_space_divide.scss +85 -0
- package/scss/utilities/_spacing_margin.scss +199 -0
- package/scss/utilities/_spacing_padding.scss +195 -0
- package/scss/utilities/_starting_style.scss +53 -0
- package/scss/utilities/_state_variants.scss +196 -0
- package/scss/utilities/_svg.scss +100 -0
- package/scss/utilities/_table.scss +46 -0
- package/scss/utilities/_table_advanced.scss +19 -0
- package/scss/utilities/_text.scss +1331 -0
- package/scss/utilities/_transforms_3d.scss +76 -0
- package/scss/utilities/_typography_advanced.scss +124 -0
- package/scss/utilities/_typography_modern.scss +83 -0
- package/scss/utilities/_view_transitions.scss +64 -0
- package/scss/utilities/_writing_modes.scss +72 -0
- package/scss/variables/_color_tone.scss +39 -0
- package/scss/variables/_hulp.scss +108 -0
- package/scss/variables/_mixins.scss +40 -0
- package/scss/variables/_modifiers.scss +32 -0
- package/scss/variables/_variables.scss +302 -0
- package/scss/variables/_variables_colors_html.scss +2019 -0
- package/scss/variables/_variables_colors_omnia.scss +465 -0
- package/scss/variables/_variables_colors_ral.scss +3472 -0
- package/scss/variables/_variables_effects.scss +109 -0
- package/scss/variables/_variables_flex_grid.scss +427 -0
- package/scss/variables/_variables_layout.scss +591 -0
- package/scss/variables/_variables_typography.scss +550 -0
- package/src/engine.mjs +258 -0
- package/src/postcss.mjs +43 -0
- package/src/starter-classes.mjs +124 -0
- package/src/tokens.mjs +377 -0
- package/src/variants.mjs +278 -0
- package/tokens/semantic.json +80 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// SCSS Document
|
|
2
|
+
// File: src/scss/utilities/_index.scss
|
|
3
|
+
// Description: file for using @forward and @use in are utilities map
|
|
4
|
+
// Copyright: 2021-2022 Birdycom
|
|
5
|
+
// Autor: Serge Cools
|
|
6
|
+
// Version: 0.2.0
|
|
7
|
+
// Framework: OmniaCSS
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@forward "../variables/variables";
|
|
11
|
+
@forward "../config/omniacss.config";
|
|
12
|
+
@forward "../functions/functions";
|
|
13
|
+
@forward "../variables/modifiers";
|
|
14
|
+
@forward "../variables/variables_effects";
|
|
15
|
+
@forward "../variables/color_tone";
|
|
16
|
+
@forward "../variables/variables_colors_omnia";
|
|
17
|
+
@forward "../variables/variables_colors_ral";
|
|
18
|
+
@forward "../variables/variables_colors_html";
|
|
19
|
+
@forward "../variables/variables_typography";
|
|
20
|
+
@forward "../variables/variables_layout";
|
|
21
|
+
@forward "../variables/variables_flex_grid";
|
|
22
|
+
@forward "../variables/mixins";
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
// SCSS Document
|
|
2
|
+
// File: src/scss/utilities/_interactivity.scss
|
|
3
|
+
// Map: accent/appearance/caret/scheme/cursor/pointer -> resize/scroll -> touch/select/will-change
|
|
4
|
+
// -> field-sizing -> base-select -> reading-flow -> scroll-markers -> overflow-anchor -> print
|
|
5
|
+
|
|
6
|
+
/* Accent color */
|
|
7
|
+
.accent-auto { accent-color: auto; }
|
|
8
|
+
.accent-blue { accent-color: var(--color-vividblue-95); }
|
|
9
|
+
.accent-red { accent-color: var(--color-red-60); }
|
|
10
|
+
.accent-green { accent-color: var(--color-green-40); }
|
|
11
|
+
|
|
12
|
+
/* Appearance */
|
|
13
|
+
.appearance-none { appearance: none; }
|
|
14
|
+
.appearance-auto { appearance: auto; }
|
|
15
|
+
|
|
16
|
+
/* Caret color */
|
|
17
|
+
.caret-auto { caret-color: auto; }
|
|
18
|
+
.caret-transparent { caret-color: transparent; }
|
|
19
|
+
.caret-blue { caret-color: var(--color-vividblue-95); }
|
|
20
|
+
.caret-red { caret-color: var(--color-red-60); }
|
|
21
|
+
.caret-green { caret-color: var(--color-green-40); }
|
|
22
|
+
|
|
23
|
+
/* Color scheme */
|
|
24
|
+
.scheme-normal { color-scheme: normal; }
|
|
25
|
+
.scheme-light { color-scheme: light; }
|
|
26
|
+
.scheme-dark { color-scheme: dark; }
|
|
27
|
+
.scheme-light-dark { color-scheme: light dark; }
|
|
28
|
+
.scheme-only-light { color-scheme: only light; }
|
|
29
|
+
|
|
30
|
+
/* Cursor */
|
|
31
|
+
.cursor-auto { cursor: auto; }
|
|
32
|
+
.cursor-default { cursor: default; }
|
|
33
|
+
.cursor-pointer { cursor: pointer; }
|
|
34
|
+
.cursor-wait { cursor: wait; }
|
|
35
|
+
.cursor-text { cursor: text; }
|
|
36
|
+
.cursor-move { cursor: move; }
|
|
37
|
+
.cursor-help { cursor: help; }
|
|
38
|
+
.cursor-not-allowed { cursor: not-allowed; }
|
|
39
|
+
.cursor-grab { cursor: grab; }
|
|
40
|
+
.cursor-grabbing { cursor: grabbing; }
|
|
41
|
+
.cursor-crosshair { cursor: crosshair; }
|
|
42
|
+
|
|
43
|
+
/* Pointer events */
|
|
44
|
+
.pointer-events-none { pointer-events: none; }
|
|
45
|
+
.pointer-events-auto { pointer-events: auto; }
|
|
46
|
+
|
|
47
|
+
/* Resize */
|
|
48
|
+
.resize-none { resize: none; }
|
|
49
|
+
.resize { resize: both; }
|
|
50
|
+
.resize-x { resize: horizontal; }
|
|
51
|
+
.resize-y { resize: vertical; }
|
|
52
|
+
|
|
53
|
+
/* Scroll behavior */
|
|
54
|
+
.scroll-auto { scroll-behavior: auto; }
|
|
55
|
+
.scroll-smooth { scroll-behavior: smooth; }
|
|
56
|
+
|
|
57
|
+
/* Scroll margin */
|
|
58
|
+
.scroll-m-0 { scroll-margin: 0; }
|
|
59
|
+
.scroll-m-1 { scroll-margin: 0.25rem; }
|
|
60
|
+
.scroll-m-2 { scroll-margin: 0.5rem; }
|
|
61
|
+
.scroll-m-4 { scroll-margin: 1rem; }
|
|
62
|
+
.scroll-m-8 { scroll-margin: 2rem; }
|
|
63
|
+
.scroll-mx-4 { scroll-margin-left: 1rem; scroll-margin-right: 1rem; }
|
|
64
|
+
.scroll-my-4 { scroll-margin-top: 1rem; scroll-margin-bottom: 1rem; }
|
|
65
|
+
.scroll-mt-4 { scroll-margin-top: 1rem; }
|
|
66
|
+
.scroll-mr-4 { scroll-margin-right: 1rem; }
|
|
67
|
+
.scroll-mb-4 { scroll-margin-bottom: 1rem; }
|
|
68
|
+
.scroll-ml-4 { scroll-margin-left: 1rem; }
|
|
69
|
+
|
|
70
|
+
/* Scroll padding */
|
|
71
|
+
.scroll-p-0 { scroll-padding: 0; }
|
|
72
|
+
.scroll-p-1 { scroll-padding: 0.25rem; }
|
|
73
|
+
.scroll-p-2 { scroll-padding: 0.5rem; }
|
|
74
|
+
.scroll-p-4 { scroll-padding: 1rem; }
|
|
75
|
+
.scroll-p-8 { scroll-padding: 2rem; }
|
|
76
|
+
.scroll-px-4 { scroll-padding-left: 1rem; scroll-padding-right: 1rem; }
|
|
77
|
+
.scroll-py-4 { scroll-padding-top: 1rem; scroll-padding-bottom: 1rem; }
|
|
78
|
+
.scroll-pt-4 { scroll-padding-top: 1rem; }
|
|
79
|
+
.scroll-pr-4 { scroll-padding-right: 1rem; }
|
|
80
|
+
.scroll-pb-4 { scroll-padding-bottom: 1rem; }
|
|
81
|
+
.scroll-pl-4 { scroll-padding-left: 1rem; }
|
|
82
|
+
|
|
83
|
+
/* Scroll snap */
|
|
84
|
+
.snap-start { scroll-snap-align: start; }
|
|
85
|
+
.snap-end { scroll-snap-align: end; }
|
|
86
|
+
.snap-center { scroll-snap-align: center; }
|
|
87
|
+
.snap-align-none { scroll-snap-align: none; }
|
|
88
|
+
.snap-normal { scroll-snap-stop: normal; }
|
|
89
|
+
.snap-always { scroll-snap-stop: always; }
|
|
90
|
+
.snap-none { scroll-snap-type: none; }
|
|
91
|
+
.snap-x { scroll-snap-type: x mandatory; }
|
|
92
|
+
.snap-y { scroll-snap-type: y mandatory; }
|
|
93
|
+
.snap-both { scroll-snap-type: both mandatory; }
|
|
94
|
+
.snap-proximity { scroll-snap-type: both proximity; }
|
|
95
|
+
|
|
96
|
+
/* Touch action */
|
|
97
|
+
.touch-auto { touch-action: auto; }
|
|
98
|
+
.touch-none { touch-action: none; }
|
|
99
|
+
.touch-pan-x { touch-action: pan-x; }
|
|
100
|
+
.touch-pan-left { touch-action: pan-left; }
|
|
101
|
+
.touch-pan-right { touch-action: pan-right; }
|
|
102
|
+
.touch-pan-y { touch-action: pan-y; }
|
|
103
|
+
.touch-pan-up { touch-action: pan-up; }
|
|
104
|
+
.touch-pan-down { touch-action: pan-down; }
|
|
105
|
+
.touch-pinch-zoom { touch-action: pinch-zoom; }
|
|
106
|
+
.touch-manipulation { touch-action: manipulation; }
|
|
107
|
+
|
|
108
|
+
/* User select */
|
|
109
|
+
.select-none { user-select: none; }
|
|
110
|
+
.select-text { user-select: text; }
|
|
111
|
+
.select-all { user-select: all; }
|
|
112
|
+
.select-auto { user-select: auto; }
|
|
113
|
+
|
|
114
|
+
/* Will change */
|
|
115
|
+
.will-change-auto { will-change: auto; }
|
|
116
|
+
.will-change-scroll { will-change: scroll-position; }
|
|
117
|
+
.will-change-contents { will-change: contents; }
|
|
118
|
+
.will-change-transform { will-change: transform; }
|
|
119
|
+
|
|
120
|
+
/* Color scheme — only dark */
|
|
121
|
+
.scheme-only-dark { color-scheme: only dark; }
|
|
122
|
+
|
|
123
|
+
/* Field sizing — let form controls grow with their content */
|
|
124
|
+
.field-sizing-content { field-sizing: content; }
|
|
125
|
+
.field-sizing-fixed { field-sizing: fixed; }
|
|
126
|
+
|
|
127
|
+
/* Customizable select */
|
|
128
|
+
.appearance-base-select { appearance: base-select; }
|
|
129
|
+
.appearance-base-select::picker(select) { appearance: base-select; }
|
|
130
|
+
|
|
131
|
+
/* Reading flow — keyboard/screen reader order follows the visual layout */
|
|
132
|
+
.reading-flow-normal { reading-flow: normal; }
|
|
133
|
+
.reading-flow-flex-visual { reading-flow: flex-visual; }
|
|
134
|
+
.reading-flow-flex-flow { reading-flow: flex-flow; }
|
|
135
|
+
.reading-flow-grid-rows { reading-flow: grid-rows; }
|
|
136
|
+
.reading-flow-grid-columns { reading-flow: grid-columns; }
|
|
137
|
+
.reading-flow-grid-order { reading-flow: grid-order; }
|
|
138
|
+
.reading-flow-source-order { reading-flow: source-order; }
|
|
139
|
+
|
|
140
|
+
/* Scroll markers — CSS-only carousel navigation dots */
|
|
141
|
+
.scroll-markers-none { scroll-marker-group: none; }
|
|
142
|
+
.scroll-markers-before { scroll-marker-group: before; }
|
|
143
|
+
.scroll-markers-after { scroll-marker-group: after; }
|
|
144
|
+
/* Default look of the generated dots (Omnia colors); the active one follows the scroll position. */
|
|
145
|
+
:is(.scroll-markers-before, .scroll-markers-after)::scroll-marker-group {
|
|
146
|
+
display: flex;
|
|
147
|
+
gap: 0.5rem;
|
|
148
|
+
justify-content: center;
|
|
149
|
+
padding: 0.6rem;
|
|
150
|
+
}
|
|
151
|
+
:is(.scroll-markers-before, .scroll-markers-after) > *::scroll-marker {
|
|
152
|
+
content: "";
|
|
153
|
+
display: block;
|
|
154
|
+
inline-size: 0.7rem;
|
|
155
|
+
block-size: 0.7rem;
|
|
156
|
+
border-radius: 50%;
|
|
157
|
+
background: oklch(from var(--color-mistblue-80) l c h / 0.6);
|
|
158
|
+
}
|
|
159
|
+
:is(.scroll-markers-before, .scroll-markers-after) > *::scroll-marker:target-current {
|
|
160
|
+
background: var(--color-vividblue-80);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/* Scroll buttons — CSS-only previous/next arrows on a scroll container (::scroll-button()) */
|
|
164
|
+
.scroll-buttons {
|
|
165
|
+
anchor-name: --oc-scroller;
|
|
166
|
+
anchor-scope: --oc-scroller;
|
|
167
|
+
}
|
|
168
|
+
.scroll-buttons::scroll-button(*) {
|
|
169
|
+
position: absolute;
|
|
170
|
+
position-anchor: --oc-scroller;
|
|
171
|
+
top: anchor(center);
|
|
172
|
+
translate: 0 -50%;
|
|
173
|
+
display: grid;
|
|
174
|
+
place-items: center;
|
|
175
|
+
inline-size: 2.25rem;
|
|
176
|
+
aspect-ratio: 1;
|
|
177
|
+
border: 0;
|
|
178
|
+
border-radius: 50%;
|
|
179
|
+
background: oklch(from var(--color-mistblue-95) l c h / 0.75);
|
|
180
|
+
color: var(--color-white-50);
|
|
181
|
+
font-size: 1rem;
|
|
182
|
+
cursor: pointer;
|
|
183
|
+
}
|
|
184
|
+
.scroll-buttons::scroll-button(*):disabled { opacity: 0.3; cursor: default; }
|
|
185
|
+
.scroll-buttons::scroll-button(*):focus-visible { outline: 2px solid var(--color-vividblue-80); outline-offset: 2px; }
|
|
186
|
+
.scroll-buttons::scroll-button(inline-start) { content: "\2039" / "Previous"; left: calc(anchor(left) + 0.5rem); }
|
|
187
|
+
.scroll-buttons::scroll-button(inline-end) { content: "\203A" / "Next"; right: calc(anchor(right) + 0.5rem); }
|
|
188
|
+
|
|
189
|
+
/* Overflow anchor — scroll anchoring */
|
|
190
|
+
.overflow-anchor-auto { overflow-anchor: auto; }
|
|
191
|
+
.overflow-anchor-none { overflow-anchor: none; }
|
|
192
|
+
|
|
193
|
+
/* Print color adjust */
|
|
194
|
+
.print-exact { print-color-adjust: exact; }
|
|
195
|
+
.print-economy { print-color-adjust: economy; }
|
|
196
|
+
|
|
197
|
+
/* Will change — opacity */
|
|
198
|
+
.will-change-opacity { will-change: opacity; }
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// SCSS Document
|
|
2
|
+
// File: src/scss/utilities/_layering.scss
|
|
3
|
+
// Map: isolation -> visibility -> z-index
|
|
4
|
+
|
|
5
|
+
/* Isolation utilities */
|
|
6
|
+
|
|
7
|
+
.isolate { isolation: isolate; }
|
|
8
|
+
.isolation-auto { isolation: auto; }
|
|
9
|
+
|
|
10
|
+
/* Visibility utilities */
|
|
11
|
+
|
|
12
|
+
.visible { visibility: visible; }
|
|
13
|
+
.invisible { visibility: hidden; }
|
|
14
|
+
.collapse { visibility: collapse; }
|
|
15
|
+
|
|
16
|
+
/* Z-index utilities */
|
|
17
|
+
|
|
18
|
+
.z-auto { z-index: auto; }
|
|
19
|
+
.z-0 { z-index: 0; }
|
|
20
|
+
.z-10 { z-index: 10; }
|
|
21
|
+
.z-20 { z-index: 20; }
|
|
22
|
+
.z-30 { z-index: 30; }
|
|
23
|
+
.z-40 { z-index: 40; }
|
|
24
|
+
.z-50 { z-index: 50; }
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
// SCSS Document
|
|
2
|
+
// File: src/scss/utilities/_layout_extras.scss
|
|
3
|
+
// Description: Layout properties that were still missing: inset shorthand, logical inset/min/max sizes,
|
|
4
|
+
// flex-flow, grid areas, margin-trim, logical overflow/overscroll/scroll spacing, safe areas,
|
|
5
|
+
// zoom, container shorthand, all, empty-cells, image-orientation and background-position axes.
|
|
6
|
+
// Copyright: 2021-2026 Birdycom
|
|
7
|
+
// Author: Serge Cools
|
|
8
|
+
// Version: 0.3.0
|
|
9
|
+
// Framework: OmniaCSS
|
|
10
|
+
// Purpose: Generate .inset-*, .inset-x-*, .inset-y-*, .inset-bs-*/.inset-be-*, .min-inline-*/.max-block-* …,
|
|
11
|
+
// .flex-flow-*, .grid-areas-*, .area-*, .margin-trim-*, .overflow-inline-*/.overflow-block-*,
|
|
12
|
+
// .overflow-clip-margin-*, .overscroll-inline-*/.overscroll-block-*, .scroll-m-inline-*, .scroll-ms-*, .scroll-p-block-* …,
|
|
13
|
+
// .p-safe*/.m-safe*, .zoom-*, .cq-card, .all-*, .empty-cells-*, .image-orientation-*, .bg-pos-x-*/.bg-pos-y-*.
|
|
14
|
+
// Reference: https://developer.mozilla.org/en-US/docs/Web/CSS/inset
|
|
15
|
+
// Map: inset -> logical inset/sizes -> flex-flow -> grid areas -> margin-trim -> overflow axes -> overscroll axes
|
|
16
|
+
// -> logical scroll spacing -> safe areas -> zoom -> container -> all -> empty-cells -> image-orientation -> bg axes
|
|
17
|
+
|
|
18
|
+
$_space: ('0': 0, '1': 0.25rem, '2': 0.5rem, '4': 1rem, '8': 2rem, 'auto': auto, 'full': 100%);
|
|
19
|
+
|
|
20
|
+
/* Inset shorthand (top/right/bottom/left at once) */
|
|
21
|
+
@each $k, $v in $_space {
|
|
22
|
+
.inset-#{$k} { inset: $v; }
|
|
23
|
+
.inset-x-#{$k} { left: $v; right: $v; }
|
|
24
|
+
.inset-y-#{$k} { top: $v; bottom: $v; }
|
|
25
|
+
.inset-bs-#{$k} { inset-block-start: $v; }
|
|
26
|
+
.inset-be-#{$k} { inset-block-end: $v; }
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* Logical min/max sizes */
|
|
30
|
+
@each $k, $v in ('0': 0, 'full': 100%, 'fit': fit-content, 'min': min-content, 'max': max-content, 'none': none) {
|
|
31
|
+
@if $k != 'none' {
|
|
32
|
+
.min-inline-#{$k} { min-inline-size: $v; }
|
|
33
|
+
.min-block-#{$k} { min-block-size: $v; }
|
|
34
|
+
}
|
|
35
|
+
@if $k != '0' {
|
|
36
|
+
.max-inline-#{$k} { max-inline-size: $v; }
|
|
37
|
+
.max-block-#{$k} { max-block-size: $v; }
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* Flex flow (direction + wrap in one) */
|
|
42
|
+
.flex-flow-row { flex-flow: row nowrap; }
|
|
43
|
+
.flex-flow-row-wrap { flex-flow: row wrap; }
|
|
44
|
+
.flex-flow-col { flex-flow: column nowrap; }
|
|
45
|
+
.flex-flow-col-wrap { flex-flow: column wrap; }
|
|
46
|
+
.flex-flow-row-reverse-wrap { flex-flow: row-reverse wrap; }
|
|
47
|
+
|
|
48
|
+
/* Grid template areas + grid-area (named layout) */
|
|
49
|
+
.grid-areas-holy-grail {
|
|
50
|
+
grid-template-areas: "header header" "sidebar main" "footer footer";
|
|
51
|
+
grid-template-columns: minmax(10rem, 1fr) 3fr;
|
|
52
|
+
}
|
|
53
|
+
.grid-areas-stack { grid-template-areas: "header" "main" "sidebar" "footer"; }
|
|
54
|
+
.grid-areas-none { grid-template-areas: none; }
|
|
55
|
+
.grid-template-none { grid-template: none; }
|
|
56
|
+
.grid-none { grid: none; }
|
|
57
|
+
@each $area in (header, sidebar, main, footer) {
|
|
58
|
+
.area-#{$area} { grid-area: $area; }
|
|
59
|
+
}
|
|
60
|
+
.area-auto { grid-area: auto; }
|
|
61
|
+
.area-full { grid-area: 1 / 1 / -1 / -1; }
|
|
62
|
+
|
|
63
|
+
/* Margin trim — remove child margins at the container edges */
|
|
64
|
+
.margin-trim-none { margin-trim: none; }
|
|
65
|
+
.margin-trim-block { margin-trim: block; }
|
|
66
|
+
.margin-trim-inline { margin-trim: inline; }
|
|
67
|
+
|
|
68
|
+
/* Logical overflow axes */
|
|
69
|
+
@each $v in (auto, hidden, clip, visible, scroll) {
|
|
70
|
+
.overflow-inline-#{$v} { overflow-inline: $v; }
|
|
71
|
+
.overflow-block-#{$v} { overflow-block: $v; }
|
|
72
|
+
}
|
|
73
|
+
.overflow-clip-margin-0 { overflow-clip-margin: 0; }
|
|
74
|
+
.overflow-clip-margin-2 { overflow-clip-margin: 0.5rem; }
|
|
75
|
+
.overflow-clip-margin-4 { overflow-clip-margin: 1rem; }
|
|
76
|
+
.overflow-clip-margin-content { overflow-clip-margin: content-box; }
|
|
77
|
+
|
|
78
|
+
/* Logical overscroll behavior */
|
|
79
|
+
@each $v in (auto, contain, none) {
|
|
80
|
+
.overscroll-inline-#{$v} { overscroll-behavior-inline: $v; }
|
|
81
|
+
.overscroll-block-#{$v} { overscroll-behavior-block: $v; }
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* Logical scroll margin / padding (s = inline-start, e = inline-end, bs/be = block-start/end) */
|
|
85
|
+
@each $k, $v in ('0': 0, '2': 0.5rem, '4': 1rem, '8': 2rem) {
|
|
86
|
+
.scroll-m-inline-#{$k} { scroll-margin-inline: $v; }
|
|
87
|
+
.scroll-m-block-#{$k} { scroll-margin-block: $v; }
|
|
88
|
+
.scroll-ms-#{$k} { scroll-margin-inline-start: $v; }
|
|
89
|
+
.scroll-me-#{$k} { scroll-margin-inline-end: $v; }
|
|
90
|
+
.scroll-mbs-#{$k} { scroll-margin-block-start: $v; }
|
|
91
|
+
.scroll-mbe-#{$k} { scroll-margin-block-end: $v; }
|
|
92
|
+
.scroll-p-inline-#{$k} { scroll-padding-inline: $v; }
|
|
93
|
+
.scroll-p-block-#{$k} { scroll-padding-block: $v; }
|
|
94
|
+
.scroll-ps-#{$k} { scroll-padding-inline-start: $v; }
|
|
95
|
+
.scroll-pe-#{$k} { scroll-padding-inline-end: $v; }
|
|
96
|
+
.scroll-pbs-#{$k} { scroll-padding-block-start: $v; }
|
|
97
|
+
.scroll-pbe-#{$k} { scroll-padding-block-end: $v; }
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/* Safe areas (notch / home indicator) — needs <meta name="viewport" content="viewport-fit=cover"> */
|
|
101
|
+
.p-safe { padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left); }
|
|
102
|
+
.pt-safe { padding-top: env(safe-area-inset-top); }
|
|
103
|
+
.pb-safe { padding-bottom: env(safe-area-inset-bottom); }
|
|
104
|
+
.pl-safe { padding-left: env(safe-area-inset-left); }
|
|
105
|
+
.pr-safe { padding-right: env(safe-area-inset-right); }
|
|
106
|
+
.mb-safe { margin-bottom: env(safe-area-inset-bottom); }
|
|
107
|
+
.h-screen-safe { height: calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom)); }
|
|
108
|
+
|
|
109
|
+
/* Zoom */
|
|
110
|
+
@each $z in (50, 75, 100, 125, 150) {
|
|
111
|
+
.zoom-#{$z} { zoom: #{$z * 1%}; }
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/* Container shorthand (name / type) */
|
|
115
|
+
.cq-card { container: card / inline-size; }
|
|
116
|
+
.cq-main { container: main / inline-size; }
|
|
117
|
+
.cq-sidebar { container: sidebar / inline-size; }
|
|
118
|
+
|
|
119
|
+
/* all — reset every property */
|
|
120
|
+
.all-initial { all: initial; }
|
|
121
|
+
.all-inherit { all: inherit; }
|
|
122
|
+
.all-unset { all: unset; }
|
|
123
|
+
.all-revert { all: revert; }
|
|
124
|
+
.all-revert-layer { all: revert-layer; }
|
|
125
|
+
|
|
126
|
+
/* Table empty cells */
|
|
127
|
+
.empty-cells-show { empty-cells: show; }
|
|
128
|
+
.empty-cells-hide { empty-cells: hide; }
|
|
129
|
+
|
|
130
|
+
/* Image orientation (EXIF) */
|
|
131
|
+
.image-orientation-from-image { image-orientation: from-image; }
|
|
132
|
+
.image-orientation-none { image-orientation: none; }
|
|
133
|
+
|
|
134
|
+
/* Background position per axis */
|
|
135
|
+
@each $k, $v in ('left': left, 'center': center, 'right': right, '0': 0%, '50': 50%, '100': 100%) {
|
|
136
|
+
.bg-pos-x-#{$k} { background-position-x: $v; }
|
|
137
|
+
}
|
|
138
|
+
@each $k, $v in ('top': top, 'center': center, 'bottom': bottom, '0': 0%, '50': 50%, '100': 100%) {
|
|
139
|
+
.bg-pos-y-#{$k} { background-position-y: $v; }
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/* Mask shorthand — fade out content */
|
|
143
|
+
.mask-reset { mask: none; }
|
|
144
|
+
.mask-fade-b { mask: linear-gradient(#000 60%, transparent); }
|
|
145
|
+
.mask-fade-r { mask: linear-gradient(to right, #000 60%, transparent); }
|
|
146
|
+
.mask-fade-x { mask: linear-gradient(to right, transparent, #000 15%, #000 85%, transparent); }
|
|
147
|
+
|
|
148
|
+
/* Paged media — named pages for print (@page landscape sets the sheet orientation) */
|
|
149
|
+
.page-auto { page: auto; }
|
|
150
|
+
.page-landscape { page: landscape; }
|
|
151
|
+
@page landscape {
|
|
152
|
+
size: landscape;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/* position-try shorthand (order + fallbacks) */
|
|
156
|
+
.anchor-try-most-height-flip { position-try: most-height flip-block, flip-inline; }
|
|
157
|
+
|
|
158
|
+
/* SVG geometry properties (responsive shapes inside <svg>) */
|
|
159
|
+
@each $k, $v in ('0': 0, '25': 25%, '50': 50%, '100': 100%) {
|
|
160
|
+
.cx-#{$k} { cx: $v; }
|
|
161
|
+
.cy-#{$k} { cy: $v; }
|
|
162
|
+
.x-#{$k} { x: $v; }
|
|
163
|
+
.y-#{$k} { y: $v; }
|
|
164
|
+
}
|
|
165
|
+
.r-25 { r: 25%; }
|
|
166
|
+
.r-50 { r: 50%; }
|
|
167
|
+
.rx-0 { rx: 0; }
|
|
168
|
+
.rx-4 { rx: 4px; }
|
|
169
|
+
.ry-0 { ry: 0; }
|
|
170
|
+
.ry-4 { ry: 4px; }
|
|
171
|
+
.d-none { display: none; }
|
|
@@ -0,0 +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; }
|
|
@@ -0,0 +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; }
|