@edgeandnode/tailwindcss-animate 1.0.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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Edge & Node
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,62 @@
1
+ # @edgeandnode/tailwindcss-animate
2
+
3
+ Composable animation utilities for Tailwind CSS 4.
4
+
5
+ ## Overview
6
+
7
+ This plugin allows you to animate various properties (opacity, colors, transform, etc.) with up to 3 keyframes, using only utility classes.
8
+
9
+ ## Setup
10
+
11
+ Install the package via pnpm, npm, or yarn:
12
+
13
+ ```bash
14
+ pnpm add @edgeandnode/tailwindcss-animate
15
+ ```
16
+
17
+ Then import it in your main CSS file:
18
+
19
+ ```diff
20
+ @import 'tailwindcss';
21
+ + @import '@edgeandnode/tailwindcss-animate';
22
+ ```
23
+
24
+ ## Usage
25
+
26
+ ### Basic Example
27
+
28
+ ```html
29
+ <div class="animate animate-opacity-from-0">Fade In</div>
30
+ ```
31
+
32
+ ### Multiple Properties
33
+
34
+ ```html
35
+ <div class="animate animate-translate-y-from-2 animate-opacity-from-0">Fade In & Slide Up</div>
36
+ ```
37
+
38
+ ### Multiple Keyframes
39
+
40
+ ```html
41
+ <div class="animate animate-scale-from-0 animate-scale-via-110 animate-scale-to-100">
42
+ Scale & Bounce
43
+ </div>
44
+ ```
45
+
46
+ ### Customizations
47
+
48
+ Animations run once by default. You can make them repeat indefinitely with `animate-infinite`, or a specific number of times with the `animate-<iterations>` utilities (for example, `animate-3`).
49
+
50
+ The default duration is `1s`, and the default timing function is the same one that Tailwind uses for transitions: `cubic-bezier(0.4, 0, 0.2, 1)`. You can customize these defaults with the `--default-animation-duration` and `--default-animation-timing-function` theme variables, or override them per element using the `animate-duration-*` and `animate-ease-*` utilities:
51
+
52
+ ```html
53
+ <div class="animate-opacity-from-0 animate-duration-500 animate-ease-linear">
54
+ Custom Duration & Easing
55
+ </div>
56
+ ```
57
+
58
+ Other available utilities include `animate-delay-*`, `animate-fill-*`, `animate-<normal|reverse|alternate|alternate-reverse>`, and `animate-<play|pause>`.
59
+
60
+ ## License
61
+
62
+ MIT
package/package.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "@edgeandnode/tailwindcss-animate",
3
+ "version": "1.0.0",
4
+ "description": "Composable animation utilities for Tailwind CSS 4",
5
+ "author": "Edge & Node and contributors",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/edgeandnode/eds.git",
10
+ "directory": "packages/tailwindcss-animate"
11
+ },
12
+ "homepage": "https://github.com/edgeandnode/eds/tree/main/packages/tailwindcss-animate",
13
+ "bugs": "https://github.com/edgeandnode/eds/issues",
14
+ "type": "module",
15
+ "sideEffects": false,
16
+ "exports": {
17
+ ".": {
18
+ "style": "./styles/index.css"
19
+ }
20
+ },
21
+ "files": [
22
+ "styles"
23
+ ],
24
+ "peerDependencies": {
25
+ "tailwindcss": "^4.3.2"
26
+ }
27
+ }
@@ -0,0 +1,1290 @@
1
+ @theme static {
2
+ --default-animation-duration: 1s;
3
+ --default-animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
4
+ }
5
+
6
+ @theme inline {
7
+ --animate-translate-full: 100%;
8
+ }
9
+
10
+ @property --animate-text {
11
+ syntax: '<color>';
12
+ inherits: false;
13
+ initial-value: currentcolor;
14
+ }
15
+
16
+ @property --animate-text-from {
17
+ syntax: '<color>';
18
+ inherits: false;
19
+ initial-value: currentcolor;
20
+ }
21
+
22
+ @property --animate-text-via {
23
+ syntax: '<color>';
24
+ inherits: false;
25
+ initial-value: currentcolor;
26
+ }
27
+
28
+ @property --animate-text-to {
29
+ syntax: '<color>';
30
+ inherits: false;
31
+ initial-value: currentcolor;
32
+ }
33
+
34
+ @property --animate-bg {
35
+ syntax: '<color>';
36
+ inherits: false;
37
+ initial-value: transparent;
38
+ }
39
+
40
+ @property --animate-bg-from {
41
+ syntax: '<color>';
42
+ inherits: false;
43
+ initial-value: transparent;
44
+ }
45
+
46
+ @property --animate-bg-via {
47
+ syntax: '<color>';
48
+ inherits: false;
49
+ initial-value: transparent;
50
+ }
51
+
52
+ @property --animate-bg-to {
53
+ syntax: '<color>';
54
+ inherits: false;
55
+ initial-value: transparent;
56
+ }
57
+
58
+ @property --animate-border {
59
+ syntax: '<color>';
60
+ inherits: false;
61
+ initial-value: transparent;
62
+ }
63
+
64
+ @property --animate-border-from {
65
+ syntax: '<color>';
66
+ inherits: false;
67
+ initial-value: transparent;
68
+ }
69
+
70
+ @property --animate-border-via {
71
+ syntax: '<color>';
72
+ inherits: false;
73
+ initial-value: transparent;
74
+ }
75
+
76
+ @property --animate-border-to {
77
+ syntax: '<color>';
78
+ inherits: false;
79
+ initial-value: transparent;
80
+ }
81
+
82
+ @property --animate-outline {
83
+ syntax: '<color>';
84
+ inherits: false;
85
+ initial-value: transparent;
86
+ }
87
+
88
+ @property --animate-outline-from {
89
+ syntax: '<color>';
90
+ inherits: false;
91
+ initial-value: transparent;
92
+ }
93
+
94
+ @property --animate-outline-via {
95
+ syntax: '<color>';
96
+ inherits: false;
97
+ initial-value: transparent;
98
+ }
99
+
100
+ @property --animate-outline-to {
101
+ syntax: '<color>';
102
+ inherits: false;
103
+ initial-value: transparent;
104
+ }
105
+
106
+ @property --animate-opacity {
107
+ syntax: '<number>';
108
+ inherits: false;
109
+ initial-value: 1;
110
+ }
111
+
112
+ @property --animate-opacity-from {
113
+ syntax: '<number>';
114
+ inherits: false;
115
+ initial-value: 1;
116
+ }
117
+
118
+ @property --animate-opacity-via {
119
+ syntax: '<number>';
120
+ inherits: false;
121
+ initial-value: 1;
122
+ }
123
+
124
+ @property --animate-opacity-to {
125
+ syntax: '<number>';
126
+ inherits: false;
127
+ initial-value: 1;
128
+ }
129
+
130
+ @property --animate-translate-x {
131
+ syntax: '<length-percentage>';
132
+ inherits: false;
133
+ initial-value: 0;
134
+ }
135
+
136
+ @property --animate-translate-x-from {
137
+ syntax: '<length-percentage>';
138
+ inherits: false;
139
+ initial-value: 0;
140
+ }
141
+
142
+ @property --animate-translate-x-via {
143
+ syntax: '<length-percentage>';
144
+ inherits: false;
145
+ initial-value: 0;
146
+ }
147
+
148
+ @property --animate-translate-x-to {
149
+ syntax: '<length-percentage>';
150
+ inherits: false;
151
+ initial-value: 0;
152
+ }
153
+
154
+ @property --animate-translate-y {
155
+ syntax: '<length-percentage>';
156
+ inherits: false;
157
+ initial-value: 0;
158
+ }
159
+
160
+ @property --animate-translate-y-from {
161
+ syntax: '<length-percentage>';
162
+ inherits: false;
163
+ initial-value: 0;
164
+ }
165
+
166
+ @property --animate-translate-y-via {
167
+ syntax: '<length-percentage>';
168
+ inherits: false;
169
+ initial-value: 0;
170
+ }
171
+
172
+ @property --animate-translate-y-to {
173
+ syntax: '<length-percentage>';
174
+ inherits: false;
175
+ initial-value: 0;
176
+ }
177
+
178
+ @property --animate-scale-x {
179
+ syntax: '<percentage>';
180
+ inherits: false;
181
+ initial-value: 100%;
182
+ }
183
+
184
+ @property --animate-scale-x-from {
185
+ syntax: '<percentage>';
186
+ inherits: false;
187
+ initial-value: 100%;
188
+ }
189
+
190
+ @property --animate-scale-x-via {
191
+ syntax: '<percentage>';
192
+ inherits: false;
193
+ initial-value: 100%;
194
+ }
195
+
196
+ @property --animate-scale-x-to {
197
+ syntax: '<percentage>';
198
+ inherits: false;
199
+ initial-value: 100%;
200
+ }
201
+
202
+ @property --animate-scale-y {
203
+ syntax: '<percentage>';
204
+ inherits: false;
205
+ initial-value: 100%;
206
+ }
207
+
208
+ @property --animate-scale-y-from {
209
+ syntax: '<percentage>';
210
+ inherits: false;
211
+ initial-value: 100%;
212
+ }
213
+
214
+ @property --animate-scale-y-via {
215
+ syntax: '<percentage>';
216
+ inherits: false;
217
+ initial-value: 100%;
218
+ }
219
+
220
+ @property --animate-scale-y-to {
221
+ syntax: '<percentage>';
222
+ inherits: false;
223
+ initial-value: 100%;
224
+ }
225
+
226
+ @property --animate-rotate {
227
+ syntax: '<angle>';
228
+ inherits: false;
229
+ initial-value: 0deg;
230
+ }
231
+
232
+ @property --animate-rotate-from {
233
+ syntax: '<angle>';
234
+ inherits: false;
235
+ initial-value: 0deg;
236
+ }
237
+
238
+ @property --animate-rotate-via {
239
+ syntax: '<angle>';
240
+ inherits: false;
241
+ initial-value: 0deg;
242
+ }
243
+
244
+ @property --animate-rotate-to {
245
+ syntax: '<angle>';
246
+ inherits: false;
247
+ initial-value: 0deg;
248
+ }
249
+
250
+ @keyframes animate {
251
+ from {
252
+ --animate-text: var(--animate-text-from);
253
+ --animate-bg: var(--animate-bg-from);
254
+ --animate-border: var(--animate-border-from);
255
+ --animate-outline: var(--animate-outline-from);
256
+ --animate-opacity: var(--animate-opacity-from);
257
+ --animate-translate-x: var(--animate-translate-x-from);
258
+ --animate-translate-y: var(--animate-translate-y-from);
259
+ --animate-scale-x: var(--animate-scale-x-from);
260
+ --animate-scale-y: var(--animate-scale-y-from);
261
+ --animate-rotate: var(--animate-rotate-from);
262
+ }
263
+ to {
264
+ --animate-text: var(--animate-text-to);
265
+ --animate-bg: var(--animate-bg-to);
266
+ --animate-border: var(--animate-border-to);
267
+ --animate-outline: var(--animate-outline-to);
268
+ --animate-opacity: var(--animate-opacity-to);
269
+ --animate-translate-x: var(--animate-translate-x-to);
270
+ --animate-translate-y: var(--animate-translate-y-to);
271
+ --animate-scale-x: var(--animate-scale-x-to);
272
+ --animate-scale-y: var(--animate-scale-y-to);
273
+ --animate-rotate: var(--animate-rotate-to);
274
+ }
275
+ }
276
+
277
+ @keyframes animate-via {
278
+ 0% {
279
+ --animate-text: var(--animate-text-from);
280
+ --animate-bg: var(--animate-bg-from);
281
+ --animate-border: var(--animate-border-from);
282
+ --animate-outline: var(--animate-outline-from);
283
+ --animate-opacity: var(--animate-opacity-from);
284
+ --animate-translate-x: var(--animate-translate-x-from);
285
+ --animate-translate-y: var(--animate-translate-y-from);
286
+ --animate-scale-x: var(--animate-scale-x-from);
287
+ --animate-scale-y: var(--animate-scale-y-from);
288
+ --animate-rotate: var(--animate-rotate-from);
289
+ }
290
+ 50% {
291
+ --animate-text: var(--animate-text-via);
292
+ --animate-bg: var(--animate-bg-via);
293
+ --animate-border: var(--animate-border-via);
294
+ --animate-outline: var(--animate-outline-via);
295
+ --animate-opacity: var(--animate-opacity-via);
296
+ --animate-translate-x: var(--animate-translate-x-via);
297
+ --animate-translate-y: var(--animate-translate-y-via);
298
+ --animate-scale-x: var(--animate-scale-x-via);
299
+ --animate-scale-y: var(--animate-scale-y-via);
300
+ --animate-rotate: var(--animate-rotate-via);
301
+ }
302
+ 100% {
303
+ --animate-text: var(--animate-text-to);
304
+ --animate-bg: var(--animate-bg-to);
305
+ --animate-border: var(--animate-border-to);
306
+ --animate-outline: var(--animate-outline-to);
307
+ --animate-opacity: var(--animate-opacity-to);
308
+ --animate-translate-x: var(--animate-translate-x-to);
309
+ --animate-translate-y: var(--animate-translate-y-to);
310
+ --animate-scale-x: var(--animate-scale-x-to);
311
+ --animate-scale-y: var(--animate-scale-y-to);
312
+ --animate-rotate: var(--animate-rotate-to);
313
+ }
314
+ }
315
+
316
+ /* The following `@keyframes` are just for Firefox, until this bug is fixed: https://bugzilla.mozilla.org/show_bug.cgi?id=1899531 */
317
+
318
+ @keyframes animate-text {
319
+ from {
320
+ color: var(--animate-text-from);
321
+ }
322
+ to {
323
+ color: var(--animate-text-to);
324
+ }
325
+ }
326
+
327
+ @keyframes animate-text-via {
328
+ 0% {
329
+ color: var(--animate-text-from);
330
+ }
331
+ 50% {
332
+ color: var(--animate-text-via);
333
+ }
334
+ 100% {
335
+ color: var(--animate-text-to);
336
+ }
337
+ }
338
+
339
+ @keyframes animate-bg {
340
+ from {
341
+ background-color: var(--animate-bg-from);
342
+ }
343
+ to {
344
+ background-color: var(--animate-bg-to);
345
+ }
346
+ }
347
+
348
+ @keyframes animate-bg-via {
349
+ 0% {
350
+ background-color: var(--animate-bg-from);
351
+ }
352
+ 50% {
353
+ background-color: var(--animate-bg-via);
354
+ }
355
+ 100% {
356
+ background-color: var(--animate-bg-to);
357
+ }
358
+ }
359
+
360
+ @keyframes animate-border {
361
+ from {
362
+ border-color: var(--animate-border-from);
363
+ }
364
+ to {
365
+ border-color: var(--animate-border-to);
366
+ }
367
+ }
368
+
369
+ @keyframes animate-border-via {
370
+ 0% {
371
+ border-color: var(--animate-border-from);
372
+ }
373
+ 50% {
374
+ border-color: var(--animate-border-via);
375
+ }
376
+ 100% {
377
+ border-color: var(--animate-border-to);
378
+ }
379
+ }
380
+
381
+ @keyframes animate-outline {
382
+ from {
383
+ outline-color: var(--animate-outline-from);
384
+ }
385
+ to {
386
+ outline-color: var(--animate-outline-to);
387
+ }
388
+ }
389
+
390
+ @keyframes animate-outline-via {
391
+ 0% {
392
+ outline-color: var(--animate-outline-from);
393
+ }
394
+ 50% {
395
+ outline-color: var(--animate-outline-via);
396
+ }
397
+ 100% {
398
+ outline-color: var(--animate-outline-to);
399
+ }
400
+ }
401
+
402
+ @keyframes animate-opacity {
403
+ from {
404
+ opacity: var(--animate-opacity-from);
405
+ }
406
+ to {
407
+ opacity: var(--animate-opacity-to);
408
+ }
409
+ }
410
+
411
+ @keyframes animate-opacity-via {
412
+ 0% {
413
+ opacity: var(--animate-opacity-from);
414
+ }
415
+ 50% {
416
+ opacity: var(--animate-opacity-via);
417
+ }
418
+ 100% {
419
+ opacity: var(--animate-opacity-to);
420
+ }
421
+ }
422
+
423
+ @keyframes animate-transform {
424
+ from {
425
+ transform: translate(var(--animate-translate-x-from), var(--animate-translate-y-from))
426
+ rotate(var(--animate-rotate-from))
427
+ scale(var(--animate-scale-x-from), var(--animate-scale-y-from));
428
+ }
429
+ to {
430
+ transform: translate(var(--animate-translate-x-to), var(--animate-translate-y-to))
431
+ rotate(var(--animate-rotate-to)) scale(var(--animate-scale-x-to), var(--animate-scale-y-to));
432
+ }
433
+ }
434
+
435
+ @keyframes animate-transform-via {
436
+ 0% {
437
+ transform: translate(var(--animate-translate-x-from), var(--animate-translate-y-from))
438
+ rotate(var(--animate-rotate-from))
439
+ scale(var(--animate-scale-x-from), var(--animate-scale-y-from));
440
+ }
441
+ 50% {
442
+ transform: translate(var(--animate-translate-x-via), var(--animate-translate-y-via))
443
+ rotate(var(--animate-rotate-via))
444
+ scale(var(--animate-scale-x-via), var(--animate-scale-y-via));
445
+ }
446
+ 100% {
447
+ transform: translate(var(--animate-translate-x-to), var(--animate-translate-y-to))
448
+ rotate(var(--animate-rotate-to)) scale(var(--animate-scale-x-to), var(--animate-scale-y-to));
449
+ }
450
+ }
451
+
452
+ @utility animate {
453
+ --tw-sort: display;
454
+ --animate-animation-text: undefined;
455
+ --animate-animation-bg: undefined;
456
+ --animate-animation-border: undefined;
457
+ --animate-animation-outline: undefined;
458
+ --animate-animation-opacity: undefined;
459
+ --animate-animation-transform: undefined;
460
+ animation:
461
+ var(--animate-animation, animate), var(--animate-animation-text), var(--animate-animation-bg),
462
+ var(--animate-animation-border), var(--animate-animation-outline),
463
+ var(--animate-animation-opacity), var(--animate-animation-transform);
464
+ animation-duration: var(--animate-animation-duration, var(--default-animation-duration));
465
+ animation-timing-function: var(
466
+ --animate-animation-timing-function,
467
+ var(--default-animation-timing-function)
468
+ );
469
+ animation-fill-mode: both;
470
+ }
471
+
472
+ @utility animate-text-from-* {
473
+ --tw-sort: force-via-to-be-after-from;
474
+ --animate-text-from: --value(--text-color-*, --color-*, [*]);
475
+ @apply text-(--animate-text);
476
+ @supports (-moz-orient: inline) {
477
+ --animate-animation: undefined;
478
+ --animate-animation-text: animate-text;
479
+ }
480
+ }
481
+
482
+ @utility animate-text-via-* {
483
+ --animate-animation: animate-via;
484
+ --animate-text-via: --value(--text-color-*, --color-*, [*]);
485
+ @apply text-(--animate-text);
486
+ @supports (-moz-orient: inline) {
487
+ --animate-animation: undefined;
488
+ &:is(#i, *) {
489
+ --animate-animation-text: animate-text-via;
490
+ }
491
+ }
492
+ }
493
+
494
+ @utility animate-text-to-* {
495
+ --animate-text-to: --value(--text-color-*, --color-*, [*]);
496
+ @apply text-(--animate-text);
497
+ @supports (-moz-orient: inline) {
498
+ --animate-animation: undefined;
499
+ --animate-animation-text: animate-text;
500
+ }
501
+ }
502
+
503
+ @utility animate-bg-from-* {
504
+ --tw-sort: force-via-to-be-after-from;
505
+ --animate-bg-from: --value(--background-color-*, --color-*, [*]);
506
+ --animate-bg-from: color-mix(
507
+ in oklab,
508
+ --value(--background-color-*, --color-*, [*]) calc(1% * --modifier(integer)),
509
+ transparent
510
+ );
511
+ @apply bg-(--animate-bg);
512
+ @supports (-moz-orient: inline) {
513
+ --animate-animation: undefined;
514
+ --animate-animation-bg: animate-bg;
515
+ }
516
+ }
517
+
518
+ @utility animate-bg-via-* {
519
+ --animate-animation: animate-via;
520
+ --animate-bg-via: --value(--background-color-*, --color-*, [*]);
521
+ --animate-bg-via: color-mix(
522
+ in oklab,
523
+ --value(--background-color-*, --color-*, [*]) calc(1% * --modifier(integer)),
524
+ transparent
525
+ );
526
+ @apply bg-(--animate-bg);
527
+ @supports (-moz-orient: inline) {
528
+ --animate-animation: undefined;
529
+ &:is(#i, *) {
530
+ --animate-animation-bg: animate-bg-via;
531
+ }
532
+ }
533
+ }
534
+
535
+ @utility animate-bg-to-* {
536
+ --animate-bg-to: --value(--background-color-*, --color-*, [*]);
537
+ --animate-bg-to: color-mix(
538
+ in oklab,
539
+ --value(--background-color-*, --color-*, [*]) calc(1% * --modifier(integer)),
540
+ transparent
541
+ );
542
+ @apply bg-(--animate-bg);
543
+ @supports (-moz-orient: inline) {
544
+ --animate-animation: undefined;
545
+ --animate-animation-bg: animate-bg;
546
+ }
547
+ }
548
+
549
+ @utility animate-border-from-* {
550
+ --tw-sort: force-via-to-be-after-from;
551
+ --animate-border-from: --value(--border-color-*, --color-*, [*]);
552
+ --animate-border-from: color-mix(
553
+ in oklab,
554
+ --value(--border-color-*, --color-*, [*]) calc(1% * --modifier(integer)),
555
+ transparent
556
+ );
557
+ @apply border-(--animate-border);
558
+ @supports (-moz-orient: inline) {
559
+ --animate-animation: undefined;
560
+ --animate-animation-border: animate-border;
561
+ }
562
+ }
563
+
564
+ @utility animate-border-via-* {
565
+ --animate-animation: animate-via;
566
+ --animate-border-via: --value(--border-color-*, --color-*, [*]);
567
+ --animate-border-via: color-mix(
568
+ in oklab,
569
+ --value(--border-color-*, --color-*, [*]) calc(1% * --modifier(integer)),
570
+ transparent
571
+ );
572
+ @apply border-(--animate-border);
573
+ @supports (-moz-orient: inline) {
574
+ --animate-animation: undefined;
575
+ &:is(#i, *) {
576
+ --animate-animation-border: animate-border-via;
577
+ }
578
+ }
579
+ }
580
+
581
+ @utility animate-border-to-* {
582
+ --animate-border-to: --value(--border-color-*, --color-*, [*]);
583
+ --animate-border-to: color-mix(
584
+ in oklab,
585
+ --value(--border-color-*, --color-*, [*]) calc(1% * --modifier(integer)),
586
+ transparent
587
+ );
588
+ @apply border-(--animate-border);
589
+ @supports (-moz-orient: inline) {
590
+ --animate-animation: undefined;
591
+ --animate-animation-border: animate-border;
592
+ }
593
+ }
594
+
595
+ @utility animate-outline-from-* {
596
+ --tw-sort: force-via-to-be-after-from;
597
+ --animate-outline-from: --value(--outline-color-*, --color-*, [*]);
598
+ --animate-outline-from: color-mix(
599
+ in oklab,
600
+ --value(--outline-color-*, --color-*, [*]) calc(1% * --modifier(integer)),
601
+ transparent
602
+ );
603
+ @apply outline-(--animate-outline);
604
+ @supports (-moz-orient: inline) {
605
+ --animate-animation: undefined;
606
+ --animate-animation-outline: animate-outline;
607
+ }
608
+ }
609
+
610
+ @utility animate-outline-via-* {
611
+ --animate-animation: animate-via;
612
+ --animate-outline-via: --value(--outline-color-*, --color-*, [*]);
613
+ --animate-outline-via: color-mix(
614
+ in oklab,
615
+ --value(--outline-color-*, --color-*, [*]) calc(1% * --modifier(integer)),
616
+ transparent
617
+ );
618
+ @apply outline-(--animate-outline);
619
+ @supports (-moz-orient: inline) {
620
+ --animate-animation: undefined;
621
+ &:is(#i, *) {
622
+ --animate-animation-outline: animate-outline-via;
623
+ }
624
+ }
625
+ }
626
+
627
+ @utility animate-outline-to-* {
628
+ --animate-outline-to: --value(--outline-color-*, --color-*, [*]);
629
+ --animate-outline-to: color-mix(
630
+ in oklab,
631
+ --value(--outline-color-*, --color-*, [*]) calc(1% * --modifier(integer)),
632
+ transparent
633
+ );
634
+ @apply outline-(--animate-outline);
635
+ @supports (-moz-orient: inline) {
636
+ --animate-animation: undefined;
637
+ --animate-animation-outline: animate-outline;
638
+ }
639
+ }
640
+
641
+ @utility animate-opacity-from-* {
642
+ --tw-sort: force-via-to-be-after-from;
643
+ --animate-opacity-from: calc(
644
+ 0.01 *
645
+ --value(
646
+ '0',
647
+ '5',
648
+ '10',
649
+ '15',
650
+ '20',
651
+ '25',
652
+ '30',
653
+ '35',
654
+ '40',
655
+ '45',
656
+ '50',
657
+ '55',
658
+ '60',
659
+ '65',
660
+ '70',
661
+ '75',
662
+ '80',
663
+ '85',
664
+ '90',
665
+ '95',
666
+ '100',
667
+ integer
668
+ )
669
+ );
670
+ --animate-opacity-from: --value([*]);
671
+ @apply opacity-(--animate-opacity);
672
+ @supports (-moz-orient: inline) {
673
+ --animate-animation: undefined;
674
+ --animate-animation-opacity: animate-opacity;
675
+ }
676
+ }
677
+
678
+ @utility animate-opacity-via-* {
679
+ --animate-animation: animate-via;
680
+ --animate-opacity-via: calc(
681
+ 0.01 *
682
+ --value(
683
+ '0',
684
+ '5',
685
+ '10',
686
+ '15',
687
+ '20',
688
+ '25',
689
+ '30',
690
+ '35',
691
+ '40',
692
+ '45',
693
+ '50',
694
+ '55',
695
+ '60',
696
+ '65',
697
+ '70',
698
+ '75',
699
+ '80',
700
+ '85',
701
+ '90',
702
+ '95',
703
+ '100',
704
+ integer
705
+ )
706
+ );
707
+ --animate-opacity-via: --value([*]);
708
+ @apply opacity-(--animate-opacity);
709
+ @supports (-moz-orient: inline) {
710
+ --animate-animation: undefined;
711
+ &:is(#i, *) {
712
+ --animate-animation-opacity: animate-opacity-via;
713
+ }
714
+ }
715
+ }
716
+
717
+ @utility animate-opacity-to-* {
718
+ --animate-opacity-to: calc(
719
+ 0.01 *
720
+ --value(
721
+ '0',
722
+ '5',
723
+ '10',
724
+ '15',
725
+ '20',
726
+ '25',
727
+ '30',
728
+ '35',
729
+ '40',
730
+ '45',
731
+ '50',
732
+ '55',
733
+ '60',
734
+ '65',
735
+ '70',
736
+ '75',
737
+ '80',
738
+ '85',
739
+ '90',
740
+ '95',
741
+ '100',
742
+ integer
743
+ )
744
+ );
745
+ --animate-opacity-to: --value([*]);
746
+ @apply opacity-(--animate-opacity);
747
+ @supports (-moz-orient: inline) {
748
+ --animate-animation: undefined;
749
+ --animate-animation-opacity: animate-opacity;
750
+ }
751
+ }
752
+
753
+ @utility animate-translate-x-from-* {
754
+ --tw-sort: force-via-to-be-after-from;
755
+ --animate-translate-x-from: --spacing(--value(integer));
756
+ --animate-translate-x-from: calc(100% * --value(ratio));
757
+ --animate-translate-x-from: --value(--spacing-*, --animate-translate-*, [*]);
758
+ @apply translate-x-(--animate-translate-x);
759
+ @supports (-moz-orient: inline) {
760
+ --animate-animation: undefined;
761
+ --animate-animation-transform: animate-transform;
762
+ }
763
+ }
764
+
765
+ @utility -animate-translate-x-from-* {
766
+ --tw-sort: force-via-to-be-after-from;
767
+ --animate-translate-x-from: --spacing(-1 * --value(integer));
768
+ --animate-translate-x-from: calc(-100% * --value(ratio));
769
+ --animate-translate-x-from: calc(-1 * --value(--spacing-*, --animate-translate-*));
770
+ @apply translate-x-(--animate-translate-x);
771
+ @supports (-moz-orient: inline) {
772
+ --animate-animation: undefined;
773
+ --animate-animation-transform: animate-transform;
774
+ }
775
+ }
776
+
777
+ @utility animate-translate-x-via-* {
778
+ --animate-animation: animate-via;
779
+ --animate-translate-x-via: --spacing(--value(integer));
780
+ --animate-translate-x-via: calc(100% * --value(ratio));
781
+ --animate-translate-x-via: --value(--spacing-*, --animate-translate-*, [*]);
782
+ @apply translate-x-(--animate-translate-x);
783
+ @supports (-moz-orient: inline) {
784
+ --animate-animation: undefined;
785
+ &:is(#i, *) {
786
+ --animate-animation-transform: animate-transform-via;
787
+ }
788
+ }
789
+ }
790
+
791
+ @utility -animate-translate-x-via-* {
792
+ --animate-animation: animate-via;
793
+ --animate-translate-x-via: --spacing(-1 * --value(integer));
794
+ --animate-translate-x-via: calc(-100% * --value(ratio));
795
+ --animate-translate-x-via: calc(-1 * --value(--spacing-*, --animate-translate-*));
796
+ @apply translate-x-(--animate-translate-x);
797
+ @supports (-moz-orient: inline) {
798
+ --animate-animation: undefined;
799
+ &:is(#i, *) {
800
+ --animate-animation-transform: animate-transform-via;
801
+ }
802
+ }
803
+ }
804
+
805
+ @utility animate-translate-x-to-* {
806
+ --animate-translate-x-to: --spacing(--value(integer));
807
+ --animate-translate-x-to: calc(100% * --value(ratio));
808
+ --animate-translate-x-to: --value(--spacing-*, --animate-translate-*, [*]);
809
+ @apply translate-x-(--animate-translate-x);
810
+ @supports (-moz-orient: inline) {
811
+ --animate-animation: undefined;
812
+ --animate-animation-transform: animate-transform;
813
+ }
814
+ }
815
+
816
+ @utility -animate-translate-x-to-* {
817
+ --animate-translate-x-to: --spacing(-1 * --value(integer));
818
+ --animate-translate-x-to: calc(-100% * --value(ratio));
819
+ --animate-translate-x-to: calc(-1 * --value(--spacing-*, --animate-translate-*));
820
+ @apply translate-x-(--animate-translate-x);
821
+ @supports (-moz-orient: inline) {
822
+ --animate-animation: undefined;
823
+ --animate-animation-transform: animate-transform;
824
+ }
825
+ }
826
+
827
+ @utility animate-translate-y-from-* {
828
+ --tw-sort: force-via-to-be-after-from;
829
+ --animate-translate-y-from: --spacing(--value(integer));
830
+ --animate-translate-y-from: calc(100% * --value(ratio));
831
+ --animate-translate-y-from: --value(--spacing-*, --animate-translate-*, [*]);
832
+ @apply translate-y-(--animate-translate-y);
833
+ @supports (-moz-orient: inline) {
834
+ --animate-animation: undefined;
835
+ --animate-animation-transform: animate-transform;
836
+ }
837
+ }
838
+
839
+ @utility -animate-translate-y-from-* {
840
+ --tw-sort: force-via-to-be-after-from;
841
+ --animate-translate-y-from: --spacing(-1 * --value(integer));
842
+ --animate-translate-y-from: calc(-100% * --value(ratio));
843
+ --animate-translate-y-from: calc(-1 * --value(--spacing-*, --animate-translate-*));
844
+ @apply translate-y-(--animate-translate-y);
845
+ @supports (-moz-orient: inline) {
846
+ --animate-animation: undefined;
847
+ --animate-animation-transform: animate-transform;
848
+ }
849
+ }
850
+
851
+ @utility animate-translate-y-via-* {
852
+ --animate-animation: animate-via;
853
+ --animate-translate-y-via: --spacing(--value(integer));
854
+ --animate-translate-y-via: calc(100% * --value(ratio));
855
+ --animate-translate-y-via: --value(--spacing-*, --animate-translate-*, [*]);
856
+ @apply translate-y-(--animate-translate-y);
857
+ @supports (-moz-orient: inline) {
858
+ --animate-animation: undefined;
859
+ &:is(#i, *) {
860
+ --animate-animation-transform: animate-transform-via;
861
+ }
862
+ }
863
+ }
864
+
865
+ @utility -animate-translate-y-via-* {
866
+ --animate-animation: animate-via;
867
+ --animate-translate-y-via: --spacing(-1 * --value(integer));
868
+ --animate-translate-y-via: calc(-100% * --value(ratio));
869
+ --animate-translate-y-via: calc(-1 * --value(--spacing-*, --animate-translate-*));
870
+ @apply translate-y-(--animate-translate-y);
871
+ @supports (-moz-orient: inline) {
872
+ --animate-animation: undefined;
873
+ &:is(#i, *) {
874
+ --animate-animation-transform: animate-transform-via;
875
+ }
876
+ }
877
+ }
878
+
879
+ @utility animate-translate-y-to-* {
880
+ --animate-translate-y-to: --spacing(--value(integer));
881
+ --animate-translate-y-to: calc(100% * --value(ratio));
882
+ --animate-translate-y-to: --value(--spacing-*, --animate-translate-*, [*]);
883
+ @apply translate-y-(--animate-translate-y);
884
+ @supports (-moz-orient: inline) {
885
+ --animate-animation: undefined;
886
+ --animate-animation-transform: animate-transform;
887
+ }
888
+ }
889
+
890
+ @utility -animate-translate-y-to-* {
891
+ --animate-translate-y-to: --spacing(-1 * --value(integer));
892
+ --animate-translate-y-to: calc(-100% * --value(ratio));
893
+ --animate-translate-y-to: calc(-1 * --value(--spacing-*, --animate-translate-*));
894
+ @apply translate-y-(--animate-translate-y);
895
+ @supports (-moz-orient: inline) {
896
+ --animate-animation: undefined;
897
+ --animate-animation-transform: animate-transform;
898
+ }
899
+ }
900
+
901
+ @utility animate-scale-from-* {
902
+ --tw-sort: force-via-to-be-after-from;
903
+ --animate-scale-x-from: calc(
904
+ 1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
905
+ );
906
+ --animate-scale-x-from: --value([*]);
907
+ --animate-scale-y-from: calc(
908
+ 1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
909
+ );
910
+ --animate-scale-y-from: --value([*]);
911
+ @apply scale-x-(--animate-scale-x) scale-y-(--animate-scale-y);
912
+ @supports (-moz-orient: inline) {
913
+ --animate-animation: undefined;
914
+ --animate-animation-transform: animate-transform;
915
+ }
916
+ }
917
+
918
+ @utility -animate-scale-from-* {
919
+ --tw-sort: force-via-to-be-after-from;
920
+ --animate-scale-x-from: calc(
921
+ -1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
922
+ );
923
+ --animate-scale-y-from: calc(
924
+ -1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
925
+ );
926
+ @apply scale-x-(--animate-scale-x) scale-y-(--animate-scale-y);
927
+ @supports (-moz-orient: inline) {
928
+ --animate-animation: undefined;
929
+ --animate-animation-transform: animate-transform;
930
+ }
931
+ }
932
+
933
+ @utility animate-scale-via-* {
934
+ --animate-animation: animate-via;
935
+ --animate-scale-x-via: calc(
936
+ 1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
937
+ );
938
+ --animate-scale-x-via: --value([*]);
939
+ --animate-scale-y-via: calc(
940
+ 1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
941
+ );
942
+ --animate-scale-y-via: --value([*]);
943
+ @apply scale-x-(--animate-scale-x) scale-y-(--animate-scale-y);
944
+ @supports (-moz-orient: inline) {
945
+ --animate-animation: undefined;
946
+ &:is(#i, *) {
947
+ --animate-animation-transform: animate-transform-via;
948
+ }
949
+ }
950
+ }
951
+
952
+ @utility -animate-scale-via-* {
953
+ --animate-animation: animate-via;
954
+ --animate-scale-x-via: calc(
955
+ -1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
956
+ );
957
+ --animate-scale-y-via: calc(
958
+ -1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
959
+ );
960
+ @apply scale-x-(--animate-scale-x) scale-y-(--animate-scale-y);
961
+ @supports (-moz-orient: inline) {
962
+ --animate-animation: undefined;
963
+ &:is(#i, *) {
964
+ --animate-animation-transform: animate-transform-via;
965
+ }
966
+ }
967
+ }
968
+
969
+ @utility animate-scale-to-* {
970
+ --animate-scale-x-to: calc(
971
+ 1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
972
+ );
973
+ --animate-scale-x-to: --value([*]);
974
+ --animate-scale-y-to: calc(
975
+ 1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
976
+ );
977
+ --animate-scale-y-to: --value([*]);
978
+ @apply scale-x-(--animate-scale-x) scale-y-(--animate-scale-y);
979
+ @supports (-moz-orient: inline) {
980
+ --animate-animation: undefined;
981
+ --animate-animation-transform: animate-transform;
982
+ }
983
+ }
984
+
985
+ @utility -animate-scale-to-* {
986
+ --animate-scale-x-to: calc(
987
+ -1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
988
+ );
989
+ --animate-scale-y-to: calc(
990
+ -1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
991
+ );
992
+ @apply scale-x-(--animate-scale-x) scale-y-(--animate-scale-y);
993
+ @supports (-moz-orient: inline) {
994
+ --animate-animation: undefined;
995
+ --animate-animation-transform: animate-transform;
996
+ }
997
+ }
998
+
999
+ @utility animate-scale-x-from-* {
1000
+ --tw-sort: force-via-to-be-after-from;
1001
+ --animate-scale-x-from: calc(
1002
+ 1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
1003
+ );
1004
+ --animate-scale-x-from: --value([*]);
1005
+ @apply scale-x-(--animate-scale-x);
1006
+ @supports (-moz-orient: inline) {
1007
+ --animate-animation: undefined;
1008
+ --animate-animation-transform: animate-transform;
1009
+ }
1010
+ }
1011
+
1012
+ @utility -animate-scale-x-from-* {
1013
+ --tw-sort: force-via-to-be-after-from;
1014
+ --animate-scale-x-from: calc(
1015
+ -1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
1016
+ );
1017
+ @apply scale-x-(--animate-scale-x);
1018
+ @supports (-moz-orient: inline) {
1019
+ --animate-animation: undefined;
1020
+ --animate-animation-transform: animate-transform;
1021
+ }
1022
+ }
1023
+
1024
+ @utility animate-scale-x-via-* {
1025
+ --animate-animation: animate-via;
1026
+ --animate-scale-x-via: calc(
1027
+ 1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
1028
+ );
1029
+ --animate-scale-x-via: --value([*]);
1030
+ @apply scale-x-(--animate-scale-x);
1031
+ @supports (-moz-orient: inline) {
1032
+ --animate-animation: undefined;
1033
+ &:is(#i, *) {
1034
+ --animate-animation-transform: animate-transform-via;
1035
+ }
1036
+ }
1037
+ }
1038
+
1039
+ @utility -animate-scale-x-via-* {
1040
+ --animate-animation: animate-via;
1041
+ --animate-scale-x-via: calc(
1042
+ -1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
1043
+ );
1044
+ @apply scale-x-(--animate-scale-x);
1045
+ @supports (-moz-orient: inline) {
1046
+ --animate-animation: undefined;
1047
+ &:is(#i, *) {
1048
+ --animate-animation-transform: animate-transform-via;
1049
+ }
1050
+ }
1051
+ }
1052
+
1053
+ @utility animate-scale-x-to-* {
1054
+ --animate-scale-x-to: calc(
1055
+ 1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
1056
+ );
1057
+ --animate-scale-x-to: --value([*]);
1058
+ @apply scale-x-(--animate-scale-x);
1059
+ @supports (-moz-orient: inline) {
1060
+ --animate-animation: undefined;
1061
+ --animate-animation-transform: animate-transform;
1062
+ }
1063
+ }
1064
+
1065
+ @utility -animate-scale-x-to-* {
1066
+ --animate-scale-x-to: calc(
1067
+ -1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
1068
+ );
1069
+ @apply scale-x-(--animate-scale-x);
1070
+ @supports (-moz-orient: inline) {
1071
+ --animate-animation: undefined;
1072
+ --animate-animation-transform: animate-transform;
1073
+ }
1074
+ }
1075
+
1076
+ @utility animate-scale-y-from-* {
1077
+ --tw-sort: force-via-to-be-after-from;
1078
+ --animate-scale-y-from: calc(
1079
+ 1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
1080
+ );
1081
+ --animate-scale-y-from: --value([*]);
1082
+ @apply scale-y-(--animate-scale-y);
1083
+ @supports (-moz-orient: inline) {
1084
+ --animate-animation: undefined;
1085
+ --animate-animation-transform: animate-transform;
1086
+ }
1087
+ }
1088
+
1089
+ @utility -animate-scale-y-from-* {
1090
+ --tw-sort: force-via-to-be-after-from;
1091
+ --animate-scale-y-from: calc(
1092
+ -1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
1093
+ );
1094
+ @apply scale-y-(--animate-scale-y);
1095
+ @supports (-moz-orient: inline) {
1096
+ --animate-animation: undefined;
1097
+ --animate-animation-transform: animate-transform;
1098
+ }
1099
+ }
1100
+
1101
+ @utility animate-scale-y-via-* {
1102
+ --animate-animation: animate-via;
1103
+ --animate-scale-y-via: calc(
1104
+ 1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
1105
+ );
1106
+ --animate-scale-y-via: --value([*]);
1107
+ @apply scale-y-(--animate-scale-y);
1108
+ @supports (-moz-orient: inline) {
1109
+ --animate-animation: undefined;
1110
+ &:is(#i, *) {
1111
+ --animate-animation-transform: animate-transform-via;
1112
+ }
1113
+ }
1114
+ }
1115
+
1116
+ @utility -animate-scale-y-via-* {
1117
+ --animate-animation: animate-via;
1118
+ --animate-scale-y-via: calc(
1119
+ -1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
1120
+ );
1121
+ @apply scale-y-(--animate-scale-y);
1122
+ @supports (-moz-orient: inline) {
1123
+ --animate-animation: undefined;
1124
+ &:is(#i, *) {
1125
+ --animate-animation-transform: animate-transform-via;
1126
+ }
1127
+ }
1128
+ }
1129
+
1130
+ @utility animate-scale-y-to-* {
1131
+ --animate-scale-y-to: calc(
1132
+ 1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
1133
+ );
1134
+ --animate-scale-y-to: --value([*]);
1135
+ @apply scale-y-(--animate-scale-y);
1136
+ @supports (-moz-orient: inline) {
1137
+ --animate-animation: undefined;
1138
+ --animate-animation-transform: animate-transform;
1139
+ }
1140
+ }
1141
+
1142
+ @utility -animate-scale-y-to-* {
1143
+ --animate-scale-y-to: calc(
1144
+ -1% * --value('0', '50', '75', '90', '95', '100', '105', '110', '125', '150', '200', integer)
1145
+ );
1146
+ @apply scale-y-(--animate-scale-y);
1147
+ @supports (-moz-orient: inline) {
1148
+ --animate-animation: undefined;
1149
+ --animate-animation-transform: animate-transform;
1150
+ }
1151
+ }
1152
+
1153
+ @utility animate-rotate-from-* {
1154
+ --tw-sort: force-via-to-be-after-from;
1155
+ --animate-rotate-from: calc(
1156
+ 1deg * --value('0', '1', '2', '3', '6', '12', '45', '90', '180', integer)
1157
+ );
1158
+ --animate-rotate-from: --value([*]);
1159
+ @apply rotate-(--animate-rotate);
1160
+ @supports (-moz-orient: inline) {
1161
+ --animate-animation: undefined;
1162
+ --animate-animation-transform: animate-transform;
1163
+ }
1164
+ }
1165
+
1166
+ @utility -animate-rotate-from-* {
1167
+ --tw-sort: force-via-to-be-after-from;
1168
+ --animate-rotate-from: calc(
1169
+ -1deg * --value('0', '1', '2', '3', '6', '12', '45', '90', '180', integer)
1170
+ );
1171
+ @apply rotate-(--animate-rotate);
1172
+ @supports (-moz-orient: inline) {
1173
+ --animate-animation: undefined;
1174
+ --animate-animation-transform: animate-transform;
1175
+ }
1176
+ }
1177
+
1178
+ @utility animate-rotate-via-* {
1179
+ --animate-animation: animate-via;
1180
+ --animate-rotate-via: calc(
1181
+ 1deg * --value('0', '1', '2', '3', '6', '12', '45', '90', '180', integer)
1182
+ );
1183
+ --animate-rotate-via: --value([*]);
1184
+ @apply rotate-(--animate-rotate);
1185
+ @supports (-moz-orient: inline) {
1186
+ --animate-animation: undefined;
1187
+ &:is(#i, *) {
1188
+ --animate-animation-transform: animate-transform-via;
1189
+ }
1190
+ }
1191
+ }
1192
+
1193
+ @utility -animate-rotate-via-* {
1194
+ --animate-animation: animate-via;
1195
+ --animate-rotate-via: calc(
1196
+ -1deg * --value('0', '1', '2', '3', '6', '12', '45', '90', '180', integer)
1197
+ );
1198
+ @apply rotate-(--animate-rotate);
1199
+ @supports (-moz-orient: inline) {
1200
+ --animate-animation: undefined;
1201
+ &:is(#i, *) {
1202
+ --animate-animation-transform: animate-transform-via;
1203
+ }
1204
+ }
1205
+ }
1206
+
1207
+ @utility animate-rotate-to-* {
1208
+ --animate-rotate-to: calc(
1209
+ 1deg * --value('0', '1', '2', '3', '6', '12', '45', '90', '180', integer)
1210
+ );
1211
+ --animate-rotate-to: --value([*]);
1212
+ @apply rotate-(--animate-rotate);
1213
+ @supports (-moz-orient: inline) {
1214
+ --animate-animation: undefined;
1215
+ --animate-animation-transform: animate-transform;
1216
+ }
1217
+ }
1218
+
1219
+ @utility -animate-rotate-to-* {
1220
+ --animate-rotate-to: calc(
1221
+ -1deg * --value('0', '1', '2', '3', '6', '12', '45', '90', '180', integer)
1222
+ );
1223
+ @apply rotate-(--animate-rotate);
1224
+ @supports (-moz-orient: inline) {
1225
+ --animate-animation: undefined;
1226
+ --animate-animation-transform: animate-transform;
1227
+ }
1228
+ }
1229
+
1230
+ @utility animate-* {
1231
+ animation-iteration-count: --value('infinite', integer);
1232
+ }
1233
+
1234
+ @utility animate-duration-* {
1235
+ --animate-animation-duration: calc(
1236
+ 1ms * --value('75', '100', '150', '200', '300', '500', '700', '1000', integer)
1237
+ );
1238
+ --animate-animation-duration: --value([*]);
1239
+ }
1240
+
1241
+ @utility animate-delay-* {
1242
+ animation-delay: calc(
1243
+ 1ms * --value('75', '100', '150', '200', '300', '500', '700', '1000', integer)
1244
+ );
1245
+ animation-delay: --value([*]);
1246
+ }
1247
+
1248
+ @utility animate-ease-* {
1249
+ --animate-animation-timing-function: --value(--ease-*, [*]);
1250
+ }
1251
+
1252
+ @utility animate-normal {
1253
+ animation-direction: normal;
1254
+ }
1255
+
1256
+ @utility animate-reverse {
1257
+ animation-direction: reverse;
1258
+ }
1259
+
1260
+ @utility animate-alternate {
1261
+ animation-direction: alternate;
1262
+ }
1263
+
1264
+ @utility animate-alternate-reverse {
1265
+ animation-direction: alternate-reverse;
1266
+ }
1267
+
1268
+ @utility animate-fill-none {
1269
+ animation-fill-mode: none;
1270
+ }
1271
+
1272
+ @utility animate-fill-forwards {
1273
+ animation-fill-mode: forwards;
1274
+ }
1275
+
1276
+ @utility animate-fill-backwards {
1277
+ animation-fill-mode: backwards;
1278
+ }
1279
+
1280
+ @utility animate-fill-both {
1281
+ animation-fill-mode: both;
1282
+ }
1283
+
1284
+ @utility animate-play {
1285
+ animation-play-state: running;
1286
+ }
1287
+
1288
+ @utility animate-pause {
1289
+ animation-play-state: paused;
1290
+ }