@birdycom/omniacss 0.0.0-stage → 0.11.0
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 +43 -2
- package/dist/oc-colors.css +4429 -0
- package/dist/oc-theme.css +69 -0
- package/dist/omnia.css +465435 -0
- package/dist/omnia.min.css +2 -0
- package/dist/omnia.starter.css +13459 -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 +61 -4
- 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 +49 -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,167 @@
|
|
|
1
|
+
// SCSS Document
|
|
2
|
+
// File: src/scss/utilities/_motion_transforms.scss
|
|
3
|
+
// Map: transition -> animation -> transform -> rotate/scale/skew/translate -> perspective
|
|
4
|
+
|
|
5
|
+
/* Transition property — with a default duration and easing as longhands, so .duration-*, .ease-* and .delay-* (below) override them */
|
|
6
|
+
.transition-none { transition-property: none; }
|
|
7
|
+
.transition-all { transition-property: all; }
|
|
8
|
+
.transition-colors { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; }
|
|
9
|
+
.transition-opacity { transition-property: opacity; }
|
|
10
|
+
.transition-shadow { transition-property: box-shadow; }
|
|
11
|
+
.transition-transform { transition-property: transform, translate, scale, rotate; }
|
|
12
|
+
:is(.transition-all, .transition-colors, .transition-opacity, .transition-shadow, .transition-transform) {
|
|
13
|
+
transition-duration: 150ms;
|
|
14
|
+
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/* Transition duration */
|
|
18
|
+
.duration-75 { transition-duration: 75ms; }
|
|
19
|
+
.duration-100 { transition-duration: 100ms; }
|
|
20
|
+
.duration-150 { transition-duration: 150ms; }
|
|
21
|
+
.duration-200 { transition-duration: 200ms; }
|
|
22
|
+
.duration-300 { transition-duration: 300ms; }
|
|
23
|
+
.duration-500 { transition-duration: 500ms; }
|
|
24
|
+
.duration-700 { transition-duration: 700ms; }
|
|
25
|
+
.duration-1000 { transition-duration: 1000ms; }
|
|
26
|
+
|
|
27
|
+
/* Transition timing */
|
|
28
|
+
.ease-linear { transition-timing-function: linear; }
|
|
29
|
+
.ease-in { transition-timing-function: cubic-bezier(0.4, 0, 1, 1); }
|
|
30
|
+
.ease-out { transition-timing-function: cubic-bezier(0, 0, 0.2, 1); }
|
|
31
|
+
.ease-in-out { transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); }
|
|
32
|
+
|
|
33
|
+
/* Transition delay */
|
|
34
|
+
.delay-0 { transition-delay: 0ms; }
|
|
35
|
+
.delay-75 { transition-delay: 75ms; }
|
|
36
|
+
.delay-100 { transition-delay: 100ms; }
|
|
37
|
+
.delay-150 { transition-delay: 150ms; }
|
|
38
|
+
.delay-200 { transition-delay: 200ms; }
|
|
39
|
+
.delay-300 { transition-delay: 300ms; }
|
|
40
|
+
.delay-500 { transition-delay: 500ms; }
|
|
41
|
+
|
|
42
|
+
/* Animation */
|
|
43
|
+
@keyframes oc-spin {
|
|
44
|
+
to { transform: rotate(360deg); }
|
|
45
|
+
}
|
|
46
|
+
@keyframes oc-ping {
|
|
47
|
+
75%, 100% { transform: scale(2); opacity: 0; }
|
|
48
|
+
}
|
|
49
|
+
@keyframes oc-pulse {
|
|
50
|
+
50% { opacity: .5; }
|
|
51
|
+
}
|
|
52
|
+
@keyframes oc-bounce {
|
|
53
|
+
0%, 100% { transform: translateY(-25%); animation-timing-function: cubic-bezier(0.8, 0, 1, 1); }
|
|
54
|
+
50% { transform: translateY(0); animation-timing-function: cubic-bezier(0, 0, 0.2, 1); }
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.animate-none { animation: none; }
|
|
58
|
+
.animate-spin { animation: oc-spin 1s linear infinite; }
|
|
59
|
+
.animate-ping { animation: oc-ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; }
|
|
60
|
+
.animate-pulse { animation: oc-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; }
|
|
61
|
+
.animate-bounce { animation: oc-bounce 1s infinite; }
|
|
62
|
+
|
|
63
|
+
/* Transform core */
|
|
64
|
+
/* Rotate, scale and translate use the individual transform properties (rotate / scale / translate),
|
|
65
|
+
so every class works on its own and they combine freely. Skew has no own property: it uses transform. */
|
|
66
|
+
.transform {
|
|
67
|
+
transform: skewX(var(--oc-skew-x, 0)) skewY(var(--oc-skew-y, 0));
|
|
68
|
+
}
|
|
69
|
+
.transform-none { transform: none; }
|
|
70
|
+
|
|
71
|
+
/* Rotate */
|
|
72
|
+
.rotate-0 { --oc-rotate: 0deg; rotate: 0deg; }
|
|
73
|
+
.rotate-45 { --oc-rotate: 45deg; rotate: 45deg; }
|
|
74
|
+
.rotate-90 { --oc-rotate: 90deg; rotate: 90deg; }
|
|
75
|
+
.rotate-180 { --oc-rotate: 180deg; rotate: 180deg; }
|
|
76
|
+
|
|
77
|
+
/* Scale */
|
|
78
|
+
.scale-0 { --oc-scale-x: 0; --oc-scale-y: 0; scale: 0; }
|
|
79
|
+
.scale-50 { --oc-scale-x: .5; --oc-scale-y: .5; scale: .5; }
|
|
80
|
+
.scale-75 { --oc-scale-x: .75; --oc-scale-y: .75; scale: .75; }
|
|
81
|
+
.scale-90 { --oc-scale-x: .9; --oc-scale-y: .9; scale: .9; }
|
|
82
|
+
.scale-95 { --oc-scale-x: .95; --oc-scale-y: .95; scale: .95; }
|
|
83
|
+
.scale-100 { --oc-scale-x: 1; --oc-scale-y: 1; scale: 1; }
|
|
84
|
+
.scale-105 { --oc-scale-x: 1.05; --oc-scale-y: 1.05; scale: 1.05; }
|
|
85
|
+
.scale-110 { --oc-scale-x: 1.1; --oc-scale-y: 1.1; scale: 1.1; }
|
|
86
|
+
.scale-125 { --oc-scale-x: 1.25; --oc-scale-y: 1.25; scale: 1.25; }
|
|
87
|
+
.scale-150 { --oc-scale-x: 1.5; --oc-scale-y: 1.5; scale: 1.5; }
|
|
88
|
+
|
|
89
|
+
/* Skew */
|
|
90
|
+
.skew-x-0 { --oc-skew-x: 0deg; transform: skewX(var(--oc-skew-x, 0)) skewY(var(--oc-skew-y, 0)); }
|
|
91
|
+
.skew-x-3 { --oc-skew-x: 3deg; transform: skewX(var(--oc-skew-x, 0)) skewY(var(--oc-skew-y, 0)); }
|
|
92
|
+
.skew-x-6 { --oc-skew-x: 6deg; transform: skewX(var(--oc-skew-x, 0)) skewY(var(--oc-skew-y, 0)); }
|
|
93
|
+
.skew-x-12 { --oc-skew-x: 12deg; transform: skewX(var(--oc-skew-x, 0)) skewY(var(--oc-skew-y, 0)); }
|
|
94
|
+
.skew-y-0 { --oc-skew-y: 0deg; transform: skewX(var(--oc-skew-x, 0)) skewY(var(--oc-skew-y, 0)); }
|
|
95
|
+
.skew-y-3 { --oc-skew-y: 3deg; transform: skewX(var(--oc-skew-x, 0)) skewY(var(--oc-skew-y, 0)); }
|
|
96
|
+
.skew-y-6 { --oc-skew-y: 6deg; transform: skewX(var(--oc-skew-x, 0)) skewY(var(--oc-skew-y, 0)); }
|
|
97
|
+
.skew-y-12 { --oc-skew-y: 12deg; transform: skewX(var(--oc-skew-x, 0)) skewY(var(--oc-skew-y, 0)); }
|
|
98
|
+
|
|
99
|
+
/* Translate */
|
|
100
|
+
.translate-x-0 { --oc-translate-x: 0; translate: var(--oc-translate-x) var(--oc-translate-y, 0) var(--oc-translate-z, 0); }
|
|
101
|
+
.translate-x-1 { --oc-translate-x: 0.25rem; translate: var(--oc-translate-x) var(--oc-translate-y, 0) var(--oc-translate-z, 0); }
|
|
102
|
+
.translate-x-2 { --oc-translate-x: 0.5rem; translate: var(--oc-translate-x) var(--oc-translate-y, 0) var(--oc-translate-z, 0); }
|
|
103
|
+
.translate-x-4 { --oc-translate-x: 1rem; translate: var(--oc-translate-x) var(--oc-translate-y, 0) var(--oc-translate-z, 0); }
|
|
104
|
+
.translate-x-8 { --oc-translate-x: 2rem; translate: var(--oc-translate-x) var(--oc-translate-y, 0) var(--oc-translate-z, 0); }
|
|
105
|
+
.translate-x-full { --oc-translate-x: 100%; translate: var(--oc-translate-x) var(--oc-translate-y, 0) var(--oc-translate-z, 0); }
|
|
106
|
+
.translate-y-0 { --oc-translate-y: 0; translate: var(--oc-translate-x, 0) var(--oc-translate-y) var(--oc-translate-z, 0); }
|
|
107
|
+
.translate-y-1 { --oc-translate-y: 0.25rem; translate: var(--oc-translate-x, 0) var(--oc-translate-y) var(--oc-translate-z, 0); }
|
|
108
|
+
.translate-y-2 { --oc-translate-y: 0.5rem; translate: var(--oc-translate-x, 0) var(--oc-translate-y) var(--oc-translate-z, 0); }
|
|
109
|
+
.translate-y-4 { --oc-translate-y: 1rem; translate: var(--oc-translate-x, 0) var(--oc-translate-y) var(--oc-translate-z, 0); }
|
|
110
|
+
.translate-y-8 { --oc-translate-y: 2rem; translate: var(--oc-translate-x, 0) var(--oc-translate-y) var(--oc-translate-z, 0); }
|
|
111
|
+
.translate-y-full { --oc-translate-y: 100%; translate: var(--oc-translate-x, 0) var(--oc-translate-y) var(--oc-translate-z, 0); }
|
|
112
|
+
|
|
113
|
+
/* Transform origin and style */
|
|
114
|
+
.origin-center { transform-origin: center; }
|
|
115
|
+
.origin-top { transform-origin: top; }
|
|
116
|
+
.origin-top-right { transform-origin: top right; }
|
|
117
|
+
.origin-right { transform-origin: right; }
|
|
118
|
+
.origin-bottom-right { transform-origin: bottom right; }
|
|
119
|
+
.origin-bottom { transform-origin: bottom; }
|
|
120
|
+
.origin-bottom-left { transform-origin: bottom left; }
|
|
121
|
+
.origin-left { transform-origin: left; }
|
|
122
|
+
.origin-top-left { transform-origin: top left; }
|
|
123
|
+
|
|
124
|
+
.transform-flat { transform-style: flat; }
|
|
125
|
+
.transform-3d { transform-style: preserve-3d; }
|
|
126
|
+
|
|
127
|
+
/* Backface visibility */
|
|
128
|
+
.backface-visible { backface-visibility: visible; }
|
|
129
|
+
.backface-hidden { backface-visibility: hidden; }
|
|
130
|
+
|
|
131
|
+
/* Perspective */
|
|
132
|
+
.perspective-none { perspective: none; }
|
|
133
|
+
.perspective-250 { perspective: 250px; }
|
|
134
|
+
.perspective-500 { perspective: 500px; }
|
|
135
|
+
.perspective-750 { perspective: 750px; }
|
|
136
|
+
.perspective-1000 { perspective: 1000px; }
|
|
137
|
+
|
|
138
|
+
.perspective-origin-center { perspective-origin: center; }
|
|
139
|
+
.perspective-origin-top { perspective-origin: top; }
|
|
140
|
+
.perspective-origin-bottom { perspective-origin: bottom; }
|
|
141
|
+
.perspective-origin-left { perspective-origin: left; }
|
|
142
|
+
.perspective-origin-right { perspective-origin: right; }
|
|
143
|
+
|
|
144
|
+
/* Hover variants — the transform changes on :hover, so .transition-* / .duration-* / .ease-* become visible.
|
|
145
|
+
Example: <div class="transition-transform duration-300 ease-out hover:scale-110"> */
|
|
146
|
+
@each $key, $value in ("105": 1.05, "110": 1.1, "125": 1.25, "150": 1.5) {
|
|
147
|
+
.hover\:scale-#{$key}:hover { scale: $value; }
|
|
148
|
+
}
|
|
149
|
+
@each $key in (12, 45, 90, 180) {
|
|
150
|
+
.hover\:rotate-#{$key}:hover { rotate: #{$key}deg; }
|
|
151
|
+
}
|
|
152
|
+
@each $key, $value in ("1": 0.25rem, "2": 0.5rem, "4": 1rem, "8": 2rem) {
|
|
153
|
+
.hover\:translate-x-#{$key}:hover { translate: $value var(--oc-translate-y, 0); }
|
|
154
|
+
.hover\:-translate-y-#{$key}:hover { translate: var(--oc-translate-x, 0) calc(#{$value} * -1); }
|
|
155
|
+
}
|
|
156
|
+
@each $key in (6, 12) {
|
|
157
|
+
.hover\:skew-x-#{$key}:hover { transform: skewX(#{$key}deg); }
|
|
158
|
+
.hover\:skew-y-#{$key}:hover { transform: skewY(#{$key}deg); }
|
|
159
|
+
}
|
|
160
|
+
.hover\:opacity-50:hover { opacity: 0.5; }
|
|
161
|
+
|
|
162
|
+
/* Group hover: hover the parent (.group) to change the child. */
|
|
163
|
+
@each $key, $value in ("110": 1.1, "125": 1.25) {
|
|
164
|
+
.group:hover .group-hover\:scale-#{$key} { scale: $value; }
|
|
165
|
+
}
|
|
166
|
+
.group:hover .group-hover\:translate-x-full { translate: 100% 0; }
|
|
167
|
+
.group:hover .group-hover\:rotate-180 { rotate: 180deg; }
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// SCSS Document
|
|
2
|
+
// File: src/scss/utilities/_overflow.scss
|
|
3
|
+
// Map: overflow -> overflow-axis -> overscroll behavior -> overscroll axis
|
|
4
|
+
|
|
5
|
+
@use "../utilities/" as *;
|
|
6
|
+
|
|
7
|
+
/* Overflow utilities */
|
|
8
|
+
|
|
9
|
+
.overflow-auto { overflow: auto; }
|
|
10
|
+
.overflow-hidden { overflow: hidden; }
|
|
11
|
+
.overflow-clip { overflow: clip; }
|
|
12
|
+
.overflow-visible { overflow: visible; }
|
|
13
|
+
.overflow-scroll { overflow: scroll; }
|
|
14
|
+
|
|
15
|
+
/* Overflow axis utilities */
|
|
16
|
+
|
|
17
|
+
.overflow-x-auto { overflow-x: auto; }
|
|
18
|
+
.overflow-x-hidden { overflow-x: hidden; }
|
|
19
|
+
.overflow-x-clip { overflow-x: clip; }
|
|
20
|
+
.overflow-x-visible { overflow-x: visible; }
|
|
21
|
+
.overflow-x-scroll { overflow-x: scroll; }
|
|
22
|
+
|
|
23
|
+
.overflow-y-auto { overflow-y: auto; }
|
|
24
|
+
.overflow-y-hidden { overflow-y: hidden; }
|
|
25
|
+
.overflow-y-clip { overflow-y: clip; }
|
|
26
|
+
.overflow-y-visible { overflow-y: visible; }
|
|
27
|
+
.overflow-y-scroll { overflow-y: scroll; }
|
|
28
|
+
|
|
29
|
+
/* Overscroll behavior utilities */
|
|
30
|
+
|
|
31
|
+
.overscroll-auto { overscroll-behavior: auto; }
|
|
32
|
+
.overscroll-contain { overscroll-behavior: contain; }
|
|
33
|
+
.overscroll-none { overscroll-behavior: none; }
|
|
34
|
+
|
|
35
|
+
.overscroll-x-auto { overscroll-behavior-x: auto; }
|
|
36
|
+
.overscroll-x-contain { overscroll-behavior-x: contain; }
|
|
37
|
+
.overscroll-x-none { overscroll-behavior-x: none; }
|
|
38
|
+
|
|
39
|
+
.overscroll-y-auto { overscroll-behavior-y: auto; }
|
|
40
|
+
.overscroll-y-contain { overscroll-behavior-y: contain; }
|
|
41
|
+
.overscroll-y-none { overscroll-behavior-y: none; }
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// SCSS Document
|
|
2
|
+
// File: src/utilities/_position.scss
|
|
3
|
+
// Description: Position property
|
|
4
|
+
// Copyright: 2021-2022 Birdycom
|
|
5
|
+
// Autor: Serge Cools
|
|
6
|
+
// Version: 0.2.0
|
|
7
|
+
// Framework: OmniaCSS
|
|
8
|
+
// Property: position
|
|
9
|
+
// Values: absolute, fixed, static, sticky, relative
|
|
10
|
+
|
|
11
|
+
@use '../utilities/' as *;
|
|
12
|
+
|
|
13
|
+
/* The Position property */
|
|
14
|
+
|
|
15
|
+
///
|
|
16
|
+
/// The position Property
|
|
17
|
+
/// @group Position
|
|
18
|
+
///
|
|
19
|
+
|
|
20
|
+
///
|
|
21
|
+
/// The position property specifies the type of positioning method used for an element.
|
|
22
|
+
/// @group Position
|
|
23
|
+
/// @name position
|
|
24
|
+
/// @link src/scss/utilities/_position.scss
|
|
25
|
+
/// @since 1.0.0
|
|
26
|
+
/// @author Serge Cools
|
|
27
|
+
///
|
|
28
|
+
/// Applies to: all elements
|
|
29
|
+
///
|
|
30
|
+
/// @require $posvalues
|
|
31
|
+
/// @example scss - position class
|
|
32
|
+
/// @each $posvalues-prop in $posvalues {
|
|
33
|
+
/// .#{$posvalues-prop} {
|
|
34
|
+
/// position: $posvalues-prop;
|
|
35
|
+
/// }
|
|
36
|
+
/// }
|
|
37
|
+
/// @example html - use position class
|
|
38
|
+
/// <div class="absolute">
|
|
39
|
+
///
|
|
40
|
+
/// </div>
|
|
41
|
+
@each $posvalues-prop in $posvalues {
|
|
42
|
+
|
|
43
|
+
.#{$posvalues-prop} {
|
|
44
|
+
|
|
45
|
+
position: $posvalues-prop;
|
|
46
|
+
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/* End Position property */
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
// File: src/scss/utilities/_responsive.scss
|
|
2
|
+
// Description: Responsive variant utilities for key layout, display and spacing classes.
|
|
3
|
+
// Breakpoints: sm (>=36rem), md (>=50rem), lg (>=64rem)
|
|
4
|
+
// Pattern: .{prefix}\:{utility} e.g. sm\:hidden, md\:flex, lg\:grid-cols-3
|
|
5
|
+
// Copyright: 2021-2026 Birdycom
|
|
6
|
+
// Autor: Serge Cools
|
|
7
|
+
// Version: 0.1.6
|
|
8
|
+
// Framework: OmniaCSS
|
|
9
|
+
// Note: Only the most commonly needed utilities get responsive variants
|
|
10
|
+
// to keep output size manageable. Values match _media_query.scss breakpoints.
|
|
11
|
+
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Responsive breakpoints (same values as layout/_media_query.scss)
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
$_responsive-breakpoints: (
|
|
16
|
+
'sm': 36rem,
|
|
17
|
+
'md': 50rem,
|
|
18
|
+
'lg': 64rem
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
// Generate responsive variants inside each breakpoint media query.
|
|
23
|
+
// Utilities are grouped by category for readability.
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
@each $prefix, $min-width in $_responsive-breakpoints {
|
|
26
|
+
@media (min-width: $min-width) {
|
|
27
|
+
|
|
28
|
+
// -----------------------------------------------------------------------
|
|
29
|
+
// Display utilities
|
|
30
|
+
// -----------------------------------------------------------------------
|
|
31
|
+
.#{$prefix}\:block { display: block; }
|
|
32
|
+
.#{$prefix}\:hidden { display: none; }
|
|
33
|
+
.#{$prefix}\:flex { display: flex; }
|
|
34
|
+
.#{$prefix}\:inline-flex { display: inline-flex; }
|
|
35
|
+
.#{$prefix}\:grid { display: grid; }
|
|
36
|
+
.#{$prefix}\:inline-grid { display: inline-grid; }
|
|
37
|
+
.#{$prefix}\:inline-block { display: inline-block; }
|
|
38
|
+
.#{$prefix}\:inline { display: inline; }
|
|
39
|
+
.#{$prefix}\:table { display: table; }
|
|
40
|
+
.#{$prefix}\:table-cell { display: table-cell; }
|
|
41
|
+
.#{$prefix}\:table-row { display: table-row; }
|
|
42
|
+
.#{$prefix}\:contents { display: contents; }
|
|
43
|
+
|
|
44
|
+
// -----------------------------------------------------------------------
|
|
45
|
+
// Flex direction
|
|
46
|
+
// -----------------------------------------------------------------------
|
|
47
|
+
.#{$prefix}\:flex-row { flex-direction: row; }
|
|
48
|
+
.#{$prefix}\:flex-row-reverse { flex-direction: row-reverse; }
|
|
49
|
+
.#{$prefix}\:flex-col { flex-direction: column; }
|
|
50
|
+
.#{$prefix}\:flex-col-reverse { flex-direction: column-reverse; }
|
|
51
|
+
|
|
52
|
+
// Flex wrap
|
|
53
|
+
.#{$prefix}\:wrap { flex-wrap: wrap; }
|
|
54
|
+
.#{$prefix}\:nowrap { flex-wrap: nowrap; }
|
|
55
|
+
.#{$prefix}\:wrap-reverse { flex-wrap: wrap-reverse; }
|
|
56
|
+
|
|
57
|
+
// Flex grow / shrink
|
|
58
|
+
.#{$prefix}\:grow { flex-grow: 1; }
|
|
59
|
+
.#{$prefix}\:grow-0 { flex-grow: 0; }
|
|
60
|
+
.#{$prefix}\:shrink { flex-shrink: 1; }
|
|
61
|
+
.#{$prefix}\:shrink-0 { flex-shrink: 0; }
|
|
62
|
+
|
|
63
|
+
// Flex shorthand
|
|
64
|
+
.#{$prefix}\:flex-1 { flex: 1 1 0%; }
|
|
65
|
+
.#{$prefix}\:flex-auto { flex: 1 1 auto; }
|
|
66
|
+
.#{$prefix}\:flex-initial { flex: 0 1 auto; }
|
|
67
|
+
.#{$prefix}\:flex-none { flex: none; }
|
|
68
|
+
|
|
69
|
+
// -----------------------------------------------------------------------
|
|
70
|
+
// Grid template columns (1-12)
|
|
71
|
+
// -----------------------------------------------------------------------
|
|
72
|
+
@for $i from 1 through 12 {
|
|
73
|
+
.#{$prefix}\:grid-cols-#{$i} {
|
|
74
|
+
grid-template-columns: repeat(#{$i}, minmax(0, 1fr));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
.#{$prefix}\:grid-cols-none { grid-template-columns: none; }
|
|
78
|
+
|
|
79
|
+
// Grid template rows (1-6)
|
|
80
|
+
@for $i from 1 through 6 {
|
|
81
|
+
.#{$prefix}\:grid-rows-#{$i} {
|
|
82
|
+
grid-template-rows: repeat(#{$i}, minmax(0, 1fr));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Grid column span
|
|
87
|
+
.#{$prefix}\:col-auto { grid-column: auto; }
|
|
88
|
+
.#{$prefix}\:col-span-full { grid-column: 1 / -1; }
|
|
89
|
+
@for $i from 1 through 12 {
|
|
90
|
+
.#{$prefix}\:col-span-#{$i} { grid-column: span #{$i} / span #{$i}; }
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// -----------------------------------------------------------------------
|
|
94
|
+
// Width utilities (fractional + keywords)
|
|
95
|
+
// -----------------------------------------------------------------------
|
|
96
|
+
.#{$prefix}\:w-full { width: 100%; }
|
|
97
|
+
.#{$prefix}\:w-auto { width: auto; }
|
|
98
|
+
.#{$prefix}\:w-screen { width: 100vw; }
|
|
99
|
+
.#{$prefix}\:w-min { width: min-content; }
|
|
100
|
+
.#{$prefix}\:w-max { width: max-content; }
|
|
101
|
+
.#{$prefix}\:w-fit { width: fit-content; }
|
|
102
|
+
.#{$prefix}\:w-1\/2 { width: 50%; }
|
|
103
|
+
.#{$prefix}\:w-1\/3 { width: 33.333333%; }
|
|
104
|
+
.#{$prefix}\:w-2\/3 { width: 66.666667%; }
|
|
105
|
+
.#{$prefix}\:w-1\/4 { width: 25%; }
|
|
106
|
+
.#{$prefix}\:w-3\/4 { width: 75%; }
|
|
107
|
+
.#{$prefix}\:w-1\/5 { width: 20%; }
|
|
108
|
+
.#{$prefix}\:w-2\/5 { width: 40%; }
|
|
109
|
+
.#{$prefix}\:w-3\/5 { width: 60%; }
|
|
110
|
+
.#{$prefix}\:w-4\/5 { width: 80%; }
|
|
111
|
+
.#{$prefix}\:w-1\/6 { width: 16.666667%; }
|
|
112
|
+
.#{$prefix}\:w-5\/6 { width: 83.333333%; }
|
|
113
|
+
|
|
114
|
+
// Height utilities (keywords)
|
|
115
|
+
.#{$prefix}\:h-full { height: 100%; }
|
|
116
|
+
.#{$prefix}\:h-auto { height: auto; }
|
|
117
|
+
.#{$prefix}\:h-screen { height: 100vh; }
|
|
118
|
+
.#{$prefix}\:h-min { height: min-content; }
|
|
119
|
+
.#{$prefix}\:h-max { height: max-content; }
|
|
120
|
+
.#{$prefix}\:h-fit { height: fit-content; }
|
|
121
|
+
|
|
122
|
+
// Max-width utilities
|
|
123
|
+
.#{$prefix}\:max-w-none { max-width: none; }
|
|
124
|
+
.#{$prefix}\:max-w-full { max-width: 100%; }
|
|
125
|
+
.#{$prefix}\:max-w-screen { max-width: 100vw; }
|
|
126
|
+
.#{$prefix}\:max-w-sm { max-width: 24rem; }
|
|
127
|
+
.#{$prefix}\:max-w-md { max-width: 28rem; }
|
|
128
|
+
.#{$prefix}\:max-w-lg { max-width: 32rem; }
|
|
129
|
+
.#{$prefix}\:max-w-xl { max-width: 36rem; }
|
|
130
|
+
.#{$prefix}\:max-w-2xl { max-width: 42rem; }
|
|
131
|
+
.#{$prefix}\:max-w-4xl { max-width: 56rem; }
|
|
132
|
+
.#{$prefix}\:max-w-7xl { max-width: 80rem; }
|
|
133
|
+
|
|
134
|
+
// -----------------------------------------------------------------------
|
|
135
|
+
// Text alignment
|
|
136
|
+
// -----------------------------------------------------------------------
|
|
137
|
+
.#{$prefix}\:text-left { text-align: left; }
|
|
138
|
+
.#{$prefix}\:text-center { text-align: center; }
|
|
139
|
+
.#{$prefix}\:text-right { text-align: right; }
|
|
140
|
+
.#{$prefix}\:text-justify { text-align: justify; }
|
|
141
|
+
|
|
142
|
+
// -----------------------------------------------------------------------
|
|
143
|
+
// Position
|
|
144
|
+
// -----------------------------------------------------------------------
|
|
145
|
+
.#{$prefix}\:static { position: static; }
|
|
146
|
+
.#{$prefix}\:relative { position: relative; }
|
|
147
|
+
.#{$prefix}\:absolute { position: absolute; }
|
|
148
|
+
.#{$prefix}\:fixed { position: fixed; }
|
|
149
|
+
.#{$prefix}\:sticky { position: sticky; }
|
|
150
|
+
|
|
151
|
+
// -----------------------------------------------------------------------
|
|
152
|
+
// Visibility
|
|
153
|
+
// -----------------------------------------------------------------------
|
|
154
|
+
.#{$prefix}\:visible { visibility: visible; }
|
|
155
|
+
.#{$prefix}\:invisible { visibility: hidden; }
|
|
156
|
+
|
|
157
|
+
// -----------------------------------------------------------------------
|
|
158
|
+
// Overflow
|
|
159
|
+
// -----------------------------------------------------------------------
|
|
160
|
+
.#{$prefix}\:overflow-auto { overflow: auto; }
|
|
161
|
+
.#{$prefix}\:overflow-hidden { overflow: hidden; }
|
|
162
|
+
.#{$prefix}\:overflow-visible { overflow: visible; }
|
|
163
|
+
.#{$prefix}\:overflow-scroll { overflow: scroll; }
|
|
164
|
+
|
|
165
|
+
// -----------------------------------------------------------------------
|
|
166
|
+
// Alignment (justify + align)
|
|
167
|
+
// -----------------------------------------------------------------------
|
|
168
|
+
.#{$prefix}\:justify-start { justify-content: flex-start; }
|
|
169
|
+
.#{$prefix}\:justify-end { justify-content: flex-end; }
|
|
170
|
+
.#{$prefix}\:justify-center { justify-content: center; }
|
|
171
|
+
.#{$prefix}\:justify-between { justify-content: space-between; }
|
|
172
|
+
.#{$prefix}\:justify-around { justify-content: space-around; }
|
|
173
|
+
.#{$prefix}\:justify-evenly { justify-content: space-evenly; }
|
|
174
|
+
|
|
175
|
+
.#{$prefix}\:align-items-start { align-items: flex-start; }
|
|
176
|
+
.#{$prefix}\:align-items-end { align-items: flex-end; }
|
|
177
|
+
.#{$prefix}\:align-items-center { align-items: center; }
|
|
178
|
+
.#{$prefix}\:align-items-baseline { align-items: baseline; }
|
|
179
|
+
.#{$prefix}\:align-items-stretch { align-items: stretch; }
|
|
180
|
+
|
|
181
|
+
.#{$prefix}\:align-self-auto { align-self: auto; }
|
|
182
|
+
.#{$prefix}\:align-self-start { align-self: flex-start; }
|
|
183
|
+
.#{$prefix}\:align-self-end { align-self: flex-end; }
|
|
184
|
+
.#{$prefix}\:align-self-center { align-self: center; }
|
|
185
|
+
.#{$prefix}\:align-self-stretch { align-self: stretch; }
|
|
186
|
+
|
|
187
|
+
// -----------------------------------------------------------------------
|
|
188
|
+
// Gap (key sizes: 0, 1, 2, 4, 6, 8 in rem-based steps)
|
|
189
|
+
// -----------------------------------------------------------------------
|
|
190
|
+
.#{$prefix}\:gap-0 { gap: 0; }
|
|
191
|
+
.#{$prefix}\:gap-1 { gap: 0.25rem; }
|
|
192
|
+
.#{$prefix}\:gap-2 { gap: 0.5rem; }
|
|
193
|
+
.#{$prefix}\:gap-3 { gap: 0.75rem; }
|
|
194
|
+
.#{$prefix}\:gap-4 { gap: 1rem; }
|
|
195
|
+
.#{$prefix}\:gap-6 { gap: 1.5rem; }
|
|
196
|
+
.#{$prefix}\:gap-8 { gap: 2rem; }
|
|
197
|
+
.#{$prefix}\:gap-12 { gap: 3rem; }
|
|
198
|
+
|
|
199
|
+
// -----------------------------------------------------------------------
|
|
200
|
+
// Padding (key sizes)
|
|
201
|
+
// -----------------------------------------------------------------------
|
|
202
|
+
.#{$prefix}\:p-0 { padding: 0; }
|
|
203
|
+
.#{$prefix}\:p-1 { padding: 0.25rem; }
|
|
204
|
+
.#{$prefix}\:p-2 { padding: 0.5rem; }
|
|
205
|
+
.#{$prefix}\:p-4 { padding: 1rem; }
|
|
206
|
+
.#{$prefix}\:p-6 { padding: 1.5rem; }
|
|
207
|
+
.#{$prefix}\:p-8 { padding: 2rem; }
|
|
208
|
+
|
|
209
|
+
.#{$prefix}\:px-0 { padding-left: 0; padding-right: 0; }
|
|
210
|
+
.#{$prefix}\:px-2 { padding-left: 0.5rem; padding-right: 0.5rem; }
|
|
211
|
+
.#{$prefix}\:px-4 { padding-left: 1rem; padding-right: 1rem; }
|
|
212
|
+
.#{$prefix}\:px-6 { padding-left: 1.5rem; padding-right: 1.5rem; }
|
|
213
|
+
.#{$prefix}\:px-8 { padding-left: 2rem; padding-right: 2rem; }
|
|
214
|
+
|
|
215
|
+
.#{$prefix}\:py-0 { padding-top: 0; padding-bottom: 0; }
|
|
216
|
+
.#{$prefix}\:py-2 { padding-top: 0.5rem; padding-bottom: 0.5rem; }
|
|
217
|
+
.#{$prefix}\:py-4 { padding-top: 1rem; padding-bottom: 1rem; }
|
|
218
|
+
.#{$prefix}\:py-6 { padding-top: 1.5rem; padding-bottom: 1.5rem; }
|
|
219
|
+
.#{$prefix}\:py-8 { padding-top: 2rem; padding-bottom: 2rem; }
|
|
220
|
+
|
|
221
|
+
// -----------------------------------------------------------------------
|
|
222
|
+
// Margin (key sizes)
|
|
223
|
+
// -----------------------------------------------------------------------
|
|
224
|
+
.#{$prefix}\:m-0 { margin: 0; }
|
|
225
|
+
.#{$prefix}\:m-auto { margin: auto; }
|
|
226
|
+
.#{$prefix}\:m-1 { margin: 0.25rem; }
|
|
227
|
+
.#{$prefix}\:m-2 { margin: 0.5rem; }
|
|
228
|
+
.#{$prefix}\:m-4 { margin: 1rem; }
|
|
229
|
+
.#{$prefix}\:m-8 { margin: 2rem; }
|
|
230
|
+
|
|
231
|
+
.#{$prefix}\:mx-auto { margin-left: auto; margin-right: auto; }
|
|
232
|
+
.#{$prefix}\:mx-0 { margin-left: 0; margin-right: 0; }
|
|
233
|
+
.#{$prefix}\:mx-2 { margin-left: 0.5rem; margin-right: 0.5rem; }
|
|
234
|
+
.#{$prefix}\:mx-4 { margin-left: 1rem; margin-right: 1rem; }
|
|
235
|
+
|
|
236
|
+
.#{$prefix}\:my-0 { margin-top: 0; margin-bottom: 0; }
|
|
237
|
+
.#{$prefix}\:my-2 { margin-top: 0.5rem; margin-bottom: 0.5rem; }
|
|
238
|
+
.#{$prefix}\:my-4 { margin-top: 1rem; margin-bottom: 1rem; }
|
|
239
|
+
|
|
240
|
+
.#{$prefix}\:mt-0 { margin-top: 0; }
|
|
241
|
+
.#{$prefix}\:mt-2 { margin-top: 0.5rem; }
|
|
242
|
+
.#{$prefix}\:mt-4 { margin-top: 1rem; }
|
|
243
|
+
.#{$prefix}\:mt-8 { margin-top: 2rem; }
|
|
244
|
+
|
|
245
|
+
.#{$prefix}\:mb-0 { margin-bottom: 0; }
|
|
246
|
+
.#{$prefix}\:mb-2 { margin-bottom: 0.5rem; }
|
|
247
|
+
.#{$prefix}\:mb-4 { margin-bottom: 1rem; }
|
|
248
|
+
.#{$prefix}\:mb-8 { margin-bottom: 2rem; }
|
|
249
|
+
|
|
250
|
+
// -----------------------------------------------------------------------
|
|
251
|
+
// Order
|
|
252
|
+
// -----------------------------------------------------------------------
|
|
253
|
+
.#{$prefix}\:order-first { order: -9999; }
|
|
254
|
+
.#{$prefix}\:order-last { order: 9999; }
|
|
255
|
+
.#{$prefix}\:order-none { order: 0; }
|
|
256
|
+
@for $i from 1 through 12 {
|
|
257
|
+
.#{$prefix}\:order-#{$i} { order: #{$i}; }
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// -----------------------------------------------------------------------
|
|
261
|
+
// Opacity (key values)
|
|
262
|
+
// -----------------------------------------------------------------------
|
|
263
|
+
.#{$prefix}\:opacity-0 { opacity: 0; }
|
|
264
|
+
.#{$prefix}\:opacity-25 { opacity: 0.25; }
|
|
265
|
+
.#{$prefix}\:opacity-50 { opacity: 0.5; }
|
|
266
|
+
.#{$prefix}\:opacity-75 { opacity: 0.75; }
|
|
267
|
+
.#{$prefix}\:opacity-100 { opacity: 1; }
|
|
268
|
+
|
|
269
|
+
} // end @media
|
|
270
|
+
} // end @each
|
|
271
|
+
|
|
272
|
+
/* End responsive utilities */
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// SCSS Document
|
|
2
|
+
// File: src/scss/utilities/_scroll_animations.scss
|
|
3
|
+
// Description: Scroll-driven animation utilities — drive animations by scroll progress instead of time.
|
|
4
|
+
// Copyright: 2021-2026 Birdycom
|
|
5
|
+
// Author: Serge Cools
|
|
6
|
+
// Version: 0.3.0
|
|
7
|
+
// Framework: OmniaCSS
|
|
8
|
+
// Purpose: Generate .timeline-*, .animate-range-*, .scroll-timeline-*, .view-timeline-* classes
|
|
9
|
+
// and ready-to-use .animate-scroll-* / .animate-view-* presets.
|
|
10
|
+
// Reference: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_scroll-driven_animations
|
|
11
|
+
// Note: presets are wrapped in @supports so browsers without support keep the element fully visible.
|
|
12
|
+
// Map: animation-timeline -> animation-range -> named timelines -> timeline-scope -> presets
|
|
13
|
+
|
|
14
|
+
/* Animation timeline */
|
|
15
|
+
.timeline-auto { animation-timeline: auto; }
|
|
16
|
+
.timeline-none { animation-timeline: none; }
|
|
17
|
+
.timeline-scroll { animation-timeline: scroll(); }
|
|
18
|
+
.timeline-scroll-x { animation-timeline: scroll(x); }
|
|
19
|
+
.timeline-scroll-root { animation-timeline: scroll(root); }
|
|
20
|
+
.timeline-view { animation-timeline: view(); }
|
|
21
|
+
.timeline-view-x { animation-timeline: view(x); }
|
|
22
|
+
.timeline-oc { animation-timeline: --oc-timeline; }
|
|
23
|
+
|
|
24
|
+
/* Animation range */
|
|
25
|
+
.animate-range-normal { animation-range: normal; }
|
|
26
|
+
.animate-range-cover { animation-range: cover; }
|
|
27
|
+
.animate-range-contain { animation-range: contain; }
|
|
28
|
+
.animate-range-entry { animation-range: entry; }
|
|
29
|
+
.animate-range-exit { animation-range: exit; }
|
|
30
|
+
.animate-range-entry-half { animation-range: entry 0% entry 50%; }
|
|
31
|
+
|
|
32
|
+
/* Named scroll and view timelines */
|
|
33
|
+
.scroll-timeline-oc { scroll-timeline: --oc-timeline block; }
|
|
34
|
+
.scroll-timeline-oc-x { scroll-timeline: --oc-timeline inline; }
|
|
35
|
+
.view-timeline-oc { view-timeline: --oc-timeline block; }
|
|
36
|
+
.view-timeline-oc-x { view-timeline: --oc-timeline inline; }
|
|
37
|
+
|
|
38
|
+
/* Timeline scope — expose a named timeline to siblings/descendants */
|
|
39
|
+
.timeline-scope-oc { timeline-scope: --oc-timeline; }
|
|
40
|
+
.timeline-scope-none { timeline-scope: none; }
|
|
41
|
+
|
|
42
|
+
/* Presets */
|
|
43
|
+
@keyframes oc-scroll-progress {
|
|
44
|
+
from { transform: scaleX(0); }
|
|
45
|
+
to { transform: scaleX(1); }
|
|
46
|
+
}
|
|
47
|
+
@keyframes oc-view-fade-in {
|
|
48
|
+
from { opacity: 0; transform: translateY(2rem); }
|
|
49
|
+
to { opacity: 1; transform: translateY(0); }
|
|
50
|
+
}
|
|
51
|
+
@keyframes oc-view-zoom-in {
|
|
52
|
+
from { opacity: 0; transform: scale(0.8); }
|
|
53
|
+
to { opacity: 1; transform: scale(1); }
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@supports (animation-timeline: scroll()) {
|
|
57
|
+
.animate-scroll-progress {
|
|
58
|
+
transform-origin: 0 50%;
|
|
59
|
+
animation: oc-scroll-progress linear both;
|
|
60
|
+
animation-timeline: scroll(root);
|
|
61
|
+
}
|
|
62
|
+
.animate-view-fade-in {
|
|
63
|
+
animation: oc-view-fade-in linear both;
|
|
64
|
+
animation-timeline: view();
|
|
65
|
+
animation-range: entry 0% cover 30%;
|
|
66
|
+
}
|
|
67
|
+
.animate-view-zoom-in {
|
|
68
|
+
animation: oc-view-zoom-in linear both;
|
|
69
|
+
animation-timeline: view();
|
|
70
|
+
animation-range: entry 0% cover 30%;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@media (prefers-reduced-motion: reduce) {
|
|
75
|
+
.animate-scroll-progress,
|
|
76
|
+
.animate-view-fade-in,
|
|
77
|
+
.animate-view-zoom-in {
|
|
78
|
+
animation: none;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// SCSS Document
|
|
2
|
+
// File: src/scss/utilities/_scroll_spacing.scss
|
|
3
|
+
// Description: Completes scroll-margin and scroll-padding: every side (t, r, b, l, x, y) on the same steps as .scroll-m-4.
|
|
4
|
+
// Copyright: 2021-2026 Birdycom
|
|
5
|
+
// Author: Serge Cools
|
|
6
|
+
// Version: 0.4.0
|
|
7
|
+
// Framework: OmniaCSS
|
|
8
|
+
// Purpose: Generate .scroll-{m|p}-{12|16}, .scroll-{m|p}{t|r|b|l|x|y}-{0|1|2|8|12|16}.
|
|
9
|
+
// Note: .scroll-{m|p}{s|e}-* (logical) live in _layout_extras.scss; the -4 steps and .scroll-{m|p}-{0|1|2|4|8} in _interactivity.scss.
|
|
10
|
+
// Reference: https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-margin
|
|
11
|
+
// Map: scroll-margin sides -> scroll-padding sides -> scrollbar
|
|
12
|
+
|
|
13
|
+
$_scroll-steps: ('0': 0, '1': 0.25rem, '2': 0.5rem, '4': 1rem, '8': 2rem, '12': 3rem, '16': 4rem);
|
|
14
|
+
$_scroll-sides: (
|
|
15
|
+
't': (top), 'r': (right), 'b': (bottom), 'l': (left),
|
|
16
|
+
'x': (left, right), 'y': (top, bottom)
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
@each $prop, $letter in ('margin': 'm', 'padding': 'p') {
|
|
20
|
+
@each $key, $value in $_scroll-steps {
|
|
21
|
+
@if $key != '0' and $key != '1' and $key != '2' and $key != '4' and $key != '8' {
|
|
22
|
+
.scroll-#{$letter}-#{$key} { scroll-#{$prop}: $value; }
|
|
23
|
+
}
|
|
24
|
+
@each $side, $edges in $_scroll-sides {
|
|
25
|
+
// .scroll-m{x|y|t|r|b|l}-4 already exist (_interactivity.scss): skip the exact duplicates
|
|
26
|
+
@if $key != '4' {
|
|
27
|
+
.scroll-#{$letter}#{$side}-#{$key} {
|
|
28
|
+
@each $edge in $edges { scroll-#{$prop}-#{$edge}: $value; }
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|