@fest-lib/veela 0.1.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 +533 -0
- package/dist/veela.js +878 -0
- package/package.json +83 -0
- package/src/scss/_layers.scss +16 -0
- package/src/scss/advanced/_index.scss +0 -0
- package/src/scss/advanced/animation/_motion.scss +317 -0
- package/src/scss/advanced/color/_color.scss +328 -0
- package/src/scss/advanced/color/_colorize.scss +325 -0
- package/src/scss/advanced/design/_design-tokens.scss +118 -0
- package/src/scss/advanced/design/_effects.scss +275 -0
- package/src/scss/advanced/design/_shadow.scss +359 -0
- package/src/scss/advanced/design/_surfaces.scss +76 -0
- package/src/scss/advanced/effects/_animations.scss +124 -0
- package/src/scss/advanced/effects/_shadows.scss +50 -0
- package/src/scss/advanced/font/_typography.scss +600 -0
- package/src/scss/advanced/index.scss +11 -0
- package/src/scss/advanced/index.ts +35 -0
- package/src/scss/advanced/layout/_content.scss +170 -0
- package/src/scss/advanced/layout/_index.scss +5 -0
- package/src/scss/advanced/layout/_normalize.scss +541 -0
- package/src/scss/advanced/layout/_shared-overlays.scss +162 -0
- package/src/scss/advanced/md3/_md3.scss +596 -0
- package/src/scss/advanced/md3/_utils.scss +114 -0
- package/src/scss/advanced/misc/_config.scss +119 -0
- package/src/scss/advanced/misc/_initials.scss +298 -0
- package/src/scss/advanced/misc/_mixins.scss +179 -0
- package/src/scss/advanced/misc/_queries.scss +34 -0
- package/src/scss/advanced/misc/_rendering.scss +82 -0
- package/src/scss/advanced/misc/_tokens.scss +74 -0
- package/src/scss/advanced/theme/_shared.scss +232 -0
- package/src/scss/advanced/theme/_states.scss +332 -0
- package/src/scss/advanced/theme/_variants.scss +354 -0
- package/src/scss/advanced/tokens/_material-color.scss +120 -0
- package/src/scss/advanced/tokens/_variables.scss +171 -0
- package/src/scss/basic/_layers.scss +0 -0
- package/src/scss/basic/design/_index.scss +3 -0
- package/src/scss/basic/design/_keyframes.scss +163 -0
- package/src/scss/basic/design/_shapes.scss +266 -0
- package/src/scss/basic/design/_wavy-runtime.scss +50 -0
- package/src/scss/basic/index.scss +19 -0
- package/src/scss/basic/index.ts +29 -0
- package/src/scss/basic/misc/_core-layout.scss +272 -0
- package/src/scss/basic/misc/_index.scss +18 -0
- package/src/scss/basic/misc/_layout.scss +1040 -0
- package/src/scss/basic/misc/_mixins.scss +179 -0
- package/src/scss/basic/misc/_motion.scss +28 -0
- package/src/scss/basic/misc/_normalize.scss +765 -0
- package/src/scss/basic/misc/_queries.scss +34 -0
- package/src/scss/basic/misc/_shared.scss +232 -0
- package/src/scss/basic/misc/_states.scss +135 -0
- package/src/scss/basic/misc/_tokens.scss +78 -0
- package/src/scss/basic/misc/_veela.scss +12 -0
- package/src/scss/core/index.scss +1 -0
- package/src/scss/core/interact/_draggable.scss +32 -0
- package/src/scss/core/interact/_position.scss +45 -0
- package/src/scss/core/interact/_ps-anchor.scss +28 -0
- package/src/scss/core/interact/_ps-centered.scss +28 -0
- package/src/scss/core/interact/_ps-cursor.scss +18 -0
- package/src/scss/core/interact/_ps-draggable.scss +25 -0
- package/src/scss/core/interact/_ps-mechanic.scss +0 -0
- package/src/scss/core/interact/_ps-properties.scss +54 -0
- package/src/scss/core/interact/_ps-resizable.scss +61 -0
- package/src/scss/core/interact/_resizable.scss +69 -0
- package/src/scss/core/interact/_viewport.scss +469 -0
- package/src/scss/core/misc/_color-properties.scss +64 -0
- package/src/scss/core/misc/_config.scss +110 -0
- package/src/scss/core/misc/_functions.scss +530 -0
- package/src/scss/core/misc/_icons.scss +109 -0
- package/src/scss/core/misc/_index.scss +6 -0
- package/src/scss/core/misc/_layout.scss +49 -0
- package/src/scss/core/misc/_mixins.scss +744 -0
- package/src/scss/core/misc/_properties.scss +245 -0
- package/src/scss/core/misc/_tokens.scss +947 -0
- package/src/scss/core/misc/_utilities.scss +941 -0
- package/src/scss/core/misc/_utils.scss +17 -0
- package/src/scss/index.scss +18 -0
- package/src/scss/index.ts +105 -0
package/package.json
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@fest-lib/veela",
|
|
3
|
+
"description": "Veela CSS framework and runtime loaders (fest-lib)",
|
|
4
|
+
"version": "0.1.1",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"sideEffects": true,
|
|
8
|
+
"engines": {
|
|
9
|
+
"node": ">=20"
|
|
10
|
+
},
|
|
11
|
+
"publishConfig": {
|
|
12
|
+
"access": "public"
|
|
13
|
+
},
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "git+https://github.com/fest-live/veela.css.git"
|
|
17
|
+
},
|
|
18
|
+
"bugs": {
|
|
19
|
+
"url": "https://github.com/fest-live/veela.css/issues"
|
|
20
|
+
},
|
|
21
|
+
"homepage": "https://github.com/fest-live/veela.css#readme",
|
|
22
|
+
"keywords": [
|
|
23
|
+
"fest",
|
|
24
|
+
"fest-lib",
|
|
25
|
+
"css",
|
|
26
|
+
"scss",
|
|
27
|
+
"design-system"
|
|
28
|
+
],
|
|
29
|
+
"files": [
|
|
30
|
+
"dist",
|
|
31
|
+
"src/scss",
|
|
32
|
+
"LICENSE"
|
|
33
|
+
],
|
|
34
|
+
"main": "./dist/veela.js",
|
|
35
|
+
"module": "./dist/veela.js",
|
|
36
|
+
"exports": {
|
|
37
|
+
".": {
|
|
38
|
+
"import": "./dist/veela.js",
|
|
39
|
+
"default": "./dist/veela.js"
|
|
40
|
+
},
|
|
41
|
+
"./scss/*": "./src/scss/*",
|
|
42
|
+
"./package.json": "./package.json"
|
|
43
|
+
},
|
|
44
|
+
"peerDependencies": {
|
|
45
|
+
"@fest-lib/core": "^0.1.0",
|
|
46
|
+
"@fest-lib/dom": "^0.1.0"
|
|
47
|
+
},
|
|
48
|
+
"scripts": {
|
|
49
|
+
"test": "npm run test:puppeteer",
|
|
50
|
+
"test:puppeteer": "node test/puppeteer/run.mjs",
|
|
51
|
+
"test:browser": "npm run demo",
|
|
52
|
+
"dev": "vite --host 0.0.0.0",
|
|
53
|
+
"demo": "vite",
|
|
54
|
+
"watch": "vite build --watch",
|
|
55
|
+
"build": "vite build --config vite.config.js && npm run docs && npm run docs:md",
|
|
56
|
+
"build:publish": "FEST_NPM_IMPORTS=1 vite build --config vite.config.js",
|
|
57
|
+
"prepack": "npm run build:publish",
|
|
58
|
+
"docs": "typedoc ./src/scss/index.ts --options ./typedoc.json --out ./docs --tsconfig ./tsconfig.json --excludeExternals --excludePrivate --excludeProtected --skipErrorChecking",
|
|
59
|
+
"docs:clean": "rm -rf ./docs && typedoc --options ./typedoc.json",
|
|
60
|
+
"docs:md": "typedoc --options ./typedoc.md.json",
|
|
61
|
+
"docs:md:clean": "rm -rf ./docs-md && typedoc --options ./typedoc.md.json",
|
|
62
|
+
"preview": "vite preview",
|
|
63
|
+
"release": "PUPPETEER_SKIP_DOWNLOAD=1 npm run build:publish && npm publish --access public --ignore-scripts",
|
|
64
|
+
"publish": "npm run release"
|
|
65
|
+
},
|
|
66
|
+
"devDependencies": {
|
|
67
|
+
"cssnano": ">=7.1.0",
|
|
68
|
+
"cssnano-preset-advanced": ">=7.0.7",
|
|
69
|
+
"culori": ">=4.0.2",
|
|
70
|
+
"postcss": ">=8.5.6",
|
|
71
|
+
"postcss-discard-duplicates": ">=7.0.2",
|
|
72
|
+
"postcss-preset-env": ">=10.2.4",
|
|
73
|
+
"puppeteer": ">=24.42.0",
|
|
74
|
+
"sass": ">=1.93.3",
|
|
75
|
+
"typedoc": "^0.28.20",
|
|
76
|
+
"typedoc-plugin-markdown": "^4.12.0",
|
|
77
|
+
"typescript": ">=6.0.0-beta",
|
|
78
|
+
"vite": ">=8.0.7",
|
|
79
|
+
"vite-plugin-dynamic-import": ">=1.6.0",
|
|
80
|
+
"vite-plugin-external": ">=6.2.2",
|
|
81
|
+
"vite-plugin-optimizer": ">=1.4.3"
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Veela CSS Layer Order
|
|
3
|
+
*
|
|
4
|
+
* Defines the cascade layer order for all veela style variants.
|
|
5
|
+
* Imported by core/basic/advanced/beercss entry points.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
@layer
|
|
9
|
+
ux-normalize,
|
|
10
|
+
ux-tokens,
|
|
11
|
+
ux-base,
|
|
12
|
+
ux-layout,
|
|
13
|
+
ux-components,
|
|
14
|
+
ux-utilities,
|
|
15
|
+
ux-theme,
|
|
16
|
+
ux-overrides;
|
|
File without changes
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
@use "sass:list";
|
|
2
|
+
@use "sass:map";
|
|
3
|
+
@use "sass:math";
|
|
4
|
+
@use "sass:meta";
|
|
5
|
+
@use "sass:string";
|
|
6
|
+
|
|
7
|
+
//
|
|
8
|
+
@use "utils" as _;
|
|
9
|
+
|
|
10
|
+
//
|
|
11
|
+
// Motion durations
|
|
12
|
+
$md3-motion-durations: (
|
|
13
|
+
fast: 120ms,
|
|
14
|
+
normal: 160ms,
|
|
15
|
+
slow: 220ms,
|
|
16
|
+
long: 320ms,
|
|
17
|
+
extra-long: 420ms,
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
//
|
|
22
|
+
// Motion easing
|
|
23
|
+
$md3-motion-easing: (
|
|
24
|
+
standard: cubic-bezier(0.4, 0, 0.2, 1),
|
|
25
|
+
emphasized: cubic-bezier(0.2, 0, 0, 1),
|
|
26
|
+
decelerate: cubic-bezier(0, 0, 0.2, 1),
|
|
27
|
+
accelerate: cubic-bezier(0.4, 0, 1, 1),
|
|
28
|
+
bounce: cubic-bezier(0.34, 1.56, 0.64, 1),
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
$md3-easing-aliases: (
|
|
32
|
+
out: standard,
|
|
33
|
+
"in-out": decelerate,
|
|
34
|
+
"in": accelerate,
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
$md3-transition-definitions: (
|
|
38
|
+
colors: (
|
|
39
|
+
properties: (color, background-color, border-color),
|
|
40
|
+
duration: normal,
|
|
41
|
+
easing: out,
|
|
42
|
+
),
|
|
43
|
+
transform: (
|
|
44
|
+
properties: transform,
|
|
45
|
+
duration: slow,
|
|
46
|
+
easing: "in-out",
|
|
47
|
+
),
|
|
48
|
+
opacity: (
|
|
49
|
+
properties: opacity,
|
|
50
|
+
duration: fast,
|
|
51
|
+
easing: out,
|
|
52
|
+
),
|
|
53
|
+
all: (
|
|
54
|
+
properties: all,
|
|
55
|
+
duration: normal,
|
|
56
|
+
easing: out,
|
|
57
|
+
),
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
$md3-transition-aliases: (
|
|
61
|
+
fast: opacity,
|
|
62
|
+
normal: colors,
|
|
63
|
+
slow: transform,
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
//
|
|
68
|
+
// Easing function
|
|
69
|
+
@function md3-easing($token: standard) {
|
|
70
|
+
@return _.md3-fetch($md3-motion-easing, $token, "easing token");
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
//
|
|
75
|
+
// Duration function
|
|
76
|
+
@function md3-duration($token: normal) {
|
|
77
|
+
@return _.md3-fetch($md3-motion-durations, $token, "duration token");
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
//
|
|
81
|
+
// Motion helper functions
|
|
82
|
+
@function duration-var($token: normal) {
|
|
83
|
+
$value: _.md3-fetch($md3-motion-durations, $token, "duration token");
|
|
84
|
+
@return var(--duration-#{$token}, #{$value});
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
@function easing-var($token: standard) {
|
|
88
|
+
@if map.has-key($md3-motion-easing, $token) {
|
|
89
|
+
$value: _.md3-fetch($md3-motion-easing, $token, "easing token");
|
|
90
|
+
@return var(--ease-#{$token}, #{$value});
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
@if map.has-key($md3-easing-aliases, $token) {
|
|
94
|
+
$resolved: map.get($md3-easing-aliases, $token);
|
|
95
|
+
$value: _.md3-fetch($md3-motion-easing, $resolved, "easing token");
|
|
96
|
+
@return var(--ease-#{$token}, var(--ease-#{$resolved}, #{$value}));
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@error "Unknown easing token `#{$token}`.";
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
@function _transition-props($properties) {
|
|
103
|
+
@return sass(if(sass(meta.type-of($properties) == "list"): list.join($properties, ", "); else: $properties));
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
@function _transition-definition($config) {
|
|
107
|
+
$properties: map.get($config, properties);
|
|
108
|
+
$duration-token: map.get($config, duration);
|
|
109
|
+
$easing-token: map.get($config, easing);
|
|
110
|
+
$delay: map.get($config, delay);
|
|
111
|
+
|
|
112
|
+
@if $properties == null {
|
|
113
|
+
$properties: all;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
@if $duration-token == null {
|
|
117
|
+
$duration-token: normal;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
@if $easing-token == null {
|
|
121
|
+
$easing-token: standard;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
$sequence: ();
|
|
125
|
+
$sequence: list.append($sequence, _transition-props($properties), "space");
|
|
126
|
+
$sequence: list.append($sequence, duration-var($duration-token), "space");
|
|
127
|
+
$sequence: list.append($sequence, easing-var($easing-token), "space");
|
|
128
|
+
|
|
129
|
+
@if $delay != null {
|
|
130
|
+
$sequence: list.append($sequence, $delay, "space");
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
@return list.join($sequence, " ");
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
@mixin _export-duration-vars($durations) {
|
|
137
|
+
@each $token, $value in $durations {
|
|
138
|
+
--duration-#{$token}: #{$value};
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
@mixin _export-easing-vars($easing, $aliases) {
|
|
143
|
+
@each $token, $value in $easing {
|
|
144
|
+
--ease-#{$token}: #{$value};
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
@each $alias, $target in $aliases {
|
|
148
|
+
@if map.has-key($easing, $target) {
|
|
149
|
+
--ease-#{$alias}: var(--ease-#{$target});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
@mixin _export-transition-vars($definitions, $aliases) {
|
|
155
|
+
@each $name, $config in $definitions {
|
|
156
|
+
--transition-#{$name}: #{_transition-definition($config)};
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
@each $alias, $target in $aliases {
|
|
160
|
+
@if map.has-key($definitions, $target) {
|
|
161
|
+
--transition-#{$alias}: var(--transition-#{$target});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
//
|
|
167
|
+
// Transition variables
|
|
168
|
+
$transition-fast: md3-duration(fast);
|
|
169
|
+
$transition-base: md3-duration(normal);
|
|
170
|
+
$transition-slow: md3-duration(slow);
|
|
171
|
+
$transition-bounce: md3-easing(bounce);
|
|
172
|
+
|
|
173
|
+
//
|
|
174
|
+
// UI duration variables
|
|
175
|
+
$ui-duration-fast: md3-duration(fast) !default;
|
|
176
|
+
$ui-duration-standard: md3-duration(normal) !default;
|
|
177
|
+
$ui-ease-standard: md3-easing(standard) !default;
|
|
178
|
+
|
|
179
|
+
//
|
|
180
|
+
// Export motion vars mixin
|
|
181
|
+
@mixin md3-export-motion-vars(
|
|
182
|
+
$durations: $md3-motion-durations,
|
|
183
|
+
$easing: $md3-motion-easing,
|
|
184
|
+
$easing-aliases: $md3-easing-aliases,
|
|
185
|
+
$transition-definitions: $md3-transition-definitions,
|
|
186
|
+
$transition-aliases: $md3-transition-aliases
|
|
187
|
+
) {
|
|
188
|
+
// =============================================================================
|
|
189
|
+
// ANIMATIONS & TRANSITIONS
|
|
190
|
+
// =============================================================================
|
|
191
|
+
|
|
192
|
+
@include _export-duration-vars($durations);
|
|
193
|
+
@include _export-easing-vars($easing, $easing-aliases);
|
|
194
|
+
@include _export-transition-vars($transition-definitions, $transition-aliases);
|
|
195
|
+
|
|
196
|
+
--transition-delay: 0s;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
//
|
|
200
|
+
// Motion animation mixin
|
|
201
|
+
@mixin motion-animation(
|
|
202
|
+
$name,
|
|
203
|
+
$duration: duration-var(normal),
|
|
204
|
+
$timing: easing-var(out),
|
|
205
|
+
$delay: null,
|
|
206
|
+
$fill: null,
|
|
207
|
+
$iteration: null,
|
|
208
|
+
$direction: null,
|
|
209
|
+
$state: null
|
|
210
|
+
) {
|
|
211
|
+
$sequence: ($name, $duration, $timing);
|
|
212
|
+
|
|
213
|
+
@if $delay != null {
|
|
214
|
+
$sequence: list.append($sequence, $delay, "space");
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
@if $iteration != null {
|
|
218
|
+
$sequence: list.append($sequence, $iteration, "space");
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
@if $direction != null {
|
|
222
|
+
$sequence: list.append($sequence, $direction, "space");
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
@if $fill != null {
|
|
226
|
+
$sequence: list.append($sequence, $fill, "space");
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
@if $state != null {
|
|
230
|
+
$sequence: list.append($sequence, $state, "space");
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
animation: $sequence;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
//
|
|
237
|
+
// Fade in mixin
|
|
238
|
+
@mixin fade-in($duration: duration-var(normal), $timing: easing-var(out), $delay: null, $fill: null, $iteration: null, $direction: null, $state: null) {
|
|
239
|
+
@include motion-animation(fade-in, $duration, $timing, $delay, $fill, $iteration, $direction, $state);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
//
|
|
243
|
+
// Slide up mixin
|
|
244
|
+
@mixin slide-up($duration: duration-var(normal), $timing: easing-var(out), $delay: null, $fill: null, $iteration: null, $direction: null, $state: null) {
|
|
245
|
+
@include motion-animation(slide-up, $duration, $timing, $delay, $fill, $iteration, $direction, $state);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
//
|
|
249
|
+
// Scale in mixin
|
|
250
|
+
@mixin scale-in($duration: duration-var(fast), $timing: easing-var(bounce), $delay: null, $fill: null, $iteration: null, $direction: null, $state: null) {
|
|
251
|
+
@include motion-animation(scale-in, $duration, $timing, $delay, $fill, $iteration, $direction, $state);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
//
|
|
255
|
+
// Focus ring mixin
|
|
256
|
+
@mixin focus-ring($tint: var(--outline-tint), $thickness: 2px, $offset: 2px) {
|
|
257
|
+
&:focus-visible {
|
|
258
|
+
outline: $thickness solid oklch(
|
|
259
|
+
from --c2-on-surface(
|
|
260
|
+
$tint,
|
|
261
|
+
var(--current, var(--color-on-surface, var(--md-on-surface, #1c1b1f)))
|
|
262
|
+
) l c h / var(--outline-opacity)
|
|
263
|
+
);
|
|
264
|
+
outline-offset: $offset;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
//
|
|
269
|
+
// Reduced motion mixin
|
|
270
|
+
@mixin reduced-motion($preference: reduce) {
|
|
271
|
+
@media (prefers-reduced-motion: #{$preference}) {
|
|
272
|
+
@content;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
//
|
|
277
|
+
// High contrast mixin
|
|
278
|
+
@mixin high-contrast($preference: more) {
|
|
279
|
+
@media (prefers-contrast: #{$preference}) {
|
|
280
|
+
@content;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
//
|
|
285
|
+
// Transition mixin
|
|
286
|
+
@mixin transition($properties: all, $duration: null, $timing: null, $delay: null) {
|
|
287
|
+
& {
|
|
288
|
+
$prop-list: _transition-props($properties);
|
|
289
|
+
--transition-props: #{$prop-list};
|
|
290
|
+
|
|
291
|
+
@if $duration != null {
|
|
292
|
+
@if map.has-key($md3-motion-durations, $duration) {
|
|
293
|
+
--transition-duration: #{duration-var($duration)};
|
|
294
|
+
} @else {
|
|
295
|
+
--transition-duration: #{$duration};
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
@if $timing != null {
|
|
300
|
+
@if map.has-key($md3-motion-easing, $timing) or map.has-key($md3-easing-aliases, $timing) {
|
|
301
|
+
--transition-timing: #{easing-var($timing)};
|
|
302
|
+
} @else {
|
|
303
|
+
--transition-timing: #{$timing};
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
@if $delay != null {
|
|
308
|
+
--transition-delay: #{$delay};
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
transition:
|
|
312
|
+
var(--transition-props)
|
|
313
|
+
var(--transition-duration, #{duration-var(normal)})
|
|
314
|
+
var(--transition-timing, #{easing-var(out)})
|
|
315
|
+
var(--transition-delay, 0s);
|
|
316
|
+
}
|
|
317
|
+
}
|