@enact-ui/animate 0.1.0 → 0.2.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.
Files changed (82) hide show
  1. package/api-schema.json +206 -0
  2. package/dist/components/CountUp.d.ts +84 -0
  3. package/dist/components/CountUp.d.ts.map +1 -0
  4. package/dist/components/CountUp.js +68 -0
  5. package/dist/components/CountUp.js.map +1 -0
  6. package/dist/components/MotionDiv.d.ts +159 -0
  7. package/dist/components/MotionDiv.d.ts.map +1 -0
  8. package/dist/components/MotionDiv.js +162 -0
  9. package/dist/components/MotionDiv.js.map +1 -0
  10. package/dist/components/StaggerContainer.d.ts +136 -0
  11. package/dist/components/StaggerContainer.d.ts.map +1 -0
  12. package/dist/components/StaggerContainer.js +166 -0
  13. package/dist/components/StaggerContainer.js.map +1 -0
  14. package/dist/hooks/use-component-animation.d.ts +156 -0
  15. package/dist/hooks/use-component-animation.d.ts.map +1 -0
  16. package/dist/hooks/use-component-animation.js +231 -0
  17. package/dist/hooks/use-component-animation.js.map +1 -0
  18. package/dist/hooks/use-count-up.d.ts +111 -0
  19. package/dist/hooks/use-count-up.d.ts.map +1 -0
  20. package/dist/hooks/use-count-up.js +246 -0
  21. package/dist/hooks/use-count-up.js.map +1 -0
  22. package/dist/hooks/use-draw-path.d.ts +96 -0
  23. package/dist/hooks/use-draw-path.d.ts.map +1 -0
  24. package/dist/hooks/use-draw-path.js +227 -0
  25. package/dist/hooks/use-draw-path.js.map +1 -0
  26. package/dist/hooks/use-motion-preset.d.ts.map +1 -1
  27. package/dist/hooks/use-motion-preset.js +17 -16
  28. package/dist/hooks/use-motion-preset.js.map +1 -1
  29. package/dist/hooks/use-stagger.d.ts +174 -0
  30. package/dist/hooks/use-stagger.d.ts.map +1 -0
  31. package/dist/hooks/use-stagger.js +256 -0
  32. package/dist/hooks/use-stagger.js.map +1 -0
  33. package/dist/index.d.ts +17 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +2442 -26
  36. package/dist/index.js.map +1 -1
  37. package/dist/index.mjs +2335 -25
  38. package/dist/index.mjs.map +1 -1
  39. package/dist/presets/component-presets.d.ts +246 -0
  40. package/dist/presets/component-presets.d.ts.map +1 -0
  41. package/dist/presets/component-presets.js +472 -0
  42. package/dist/presets/component-presets.js.map +1 -0
  43. package/dist/presets/micro-interactions.d.ts +451 -0
  44. package/dist/presets/micro-interactions.d.ts.map +1 -0
  45. package/dist/presets/micro-interactions.js +856 -0
  46. package/dist/presets/micro-interactions.js.map +1 -0
  47. package/dist/presets/motion-presets.d.ts.map +1 -1
  48. package/dist/presets/motion-presets.js +0 -1
  49. package/dist/presets/motion-presets.js.map +1 -1
  50. package/dist/presets/motion-styles.d.ts +186 -0
  51. package/dist/presets/motion-styles.d.ts.map +1 -0
  52. package/dist/presets/motion-styles.js +204 -0
  53. package/dist/presets/motion-styles.js.map +1 -0
  54. package/dist/presets/stagger-presets.d.ts +378 -0
  55. package/dist/presets/stagger-presets.d.ts.map +1 -0
  56. package/dist/presets/stagger-presets.js +582 -0
  57. package/dist/presets/stagger-presets.js.map +1 -0
  58. package/dist/showcase/motion-presets.demo.d.ts +25 -0
  59. package/dist/showcase/motion-presets.demo.d.ts.map +1 -0
  60. package/dist/showcase/motion-presets.demo.js +96 -0
  61. package/dist/showcase/motion-presets.demo.js.map +1 -0
  62. package/dist/showcase/motion-presets.story.d.ts +37 -0
  63. package/dist/showcase/motion-presets.story.d.ts.map +1 -0
  64. package/dist/showcase/motion-presets.story.js +151 -0
  65. package/dist/showcase/motion-presets.story.js.map +1 -0
  66. package/dist/utils/easing.d.ts +294 -0
  67. package/dist/utils/easing.d.ts.map +1 -0
  68. package/dist/utils/easing.js +265 -0
  69. package/dist/utils/easing.js.map +1 -0
  70. package/dist/utils/reduced-motion.d.ts +322 -0
  71. package/dist/utils/reduced-motion.d.ts.map +1 -0
  72. package/dist/utils/reduced-motion.js +362 -0
  73. package/dist/utils/reduced-motion.js.map +1 -0
  74. package/dist/utils/select-preset.d.ts +186 -0
  75. package/dist/utils/select-preset.d.ts.map +1 -0
  76. package/dist/utils/select-preset.js +320 -0
  77. package/dist/utils/select-preset.js.map +1 -0
  78. package/dist/utils/spring-configs.d.ts +187 -0
  79. package/dist/utils/spring-configs.d.ts.map +1 -0
  80. package/dist/utils/spring-configs.js +169 -0
  81. package/dist/utils/spring-configs.js.map +1 -0
  82. package/package.json +4 -3
@@ -0,0 +1,472 @@
1
+ // Copyright (c) 2026 Amsterdam Data Labs
2
+ /**
3
+ * Component Animation Presets
4
+ *
5
+ * Defines animation presets for component entrance, exit, and transition animations.
6
+ * Each preset provides Motion library compatible configurations that work with
7
+ * the motion style system.
8
+ *
9
+ * @packageDocumentation
10
+ */
11
+ import { getDuration, getSpringConfig, msToSeconds } from "./motion-styles";
12
+ // =============================================================================
13
+ // Preset Factory Helpers
14
+ // =============================================================================
15
+ /**
16
+ * Creates a tween transition configuration.
17
+ */
18
+ function createTweenTransition(style, options) {
19
+ const duration = options?.duration ?? getDuration(style, "normal");
20
+ return {
21
+ type: "tween",
22
+ duration: msToSeconds(duration),
23
+ ease: [0.25, 0.1, 0.25, 1], // cubic-bezier ease-out
24
+ delay: options?.delay ? msToSeconds(options.delay) : 0,
25
+ };
26
+ }
27
+ /**
28
+ * Creates a spring transition configuration.
29
+ */
30
+ function createSpringTransition(style, options) {
31
+ const spring = getSpringConfig(style);
32
+ return {
33
+ type: "spring",
34
+ stiffness: spring.stiffness,
35
+ damping: spring.damping,
36
+ mass: spring.mass,
37
+ delay: options?.delay ? msToSeconds(options.delay) : 0,
38
+ };
39
+ }
40
+ /**
41
+ * Selects the appropriate transition based on options.
42
+ */
43
+ function getTransition(style, preferSpring, options) {
44
+ const useSpring = options?.useSpring ?? preferSpring;
45
+ return useSpring ? createSpringTransition(style, options) : createTweenTransition(style, options);
46
+ }
47
+ // =============================================================================
48
+ // Fade Presets
49
+ // =============================================================================
50
+ /**
51
+ * Fade in animation - opacity transition from 0 to 1.
52
+ *
53
+ * @ai-hint Use for subtle entrances. Works well for tooltips, dropdowns,
54
+ * and any content that should appear without drawing too much attention.
55
+ * Combines well with other presets for compound animations.
56
+ */
57
+ export const fadeIn = {
58
+ metadata: {
59
+ id: "fadeIn",
60
+ name: "Fade In",
61
+ description: "Smooth opacity transition from invisible to visible",
62
+ useCase: ["entrance", "reveal"],
63
+ context: ["tooltip", "dropdown", "modal", "notification"],
64
+ intensity: 2,
65
+ hasMovement: false,
66
+ },
67
+ getProps: (style, options) => ({
68
+ initial: { opacity: 0 },
69
+ animate: { opacity: 1 },
70
+ exit: { opacity: 0 },
71
+ transition: createTweenTransition(style, options),
72
+ }),
73
+ };
74
+ /**
75
+ * Fade out animation - opacity transition from 1 to 0.
76
+ *
77
+ * @ai-hint Use for gentle exits. Best when paired with fadeIn for
78
+ * symmetrical enter/exit animations.
79
+ */
80
+ export const fadeOut = {
81
+ metadata: {
82
+ id: "fadeOut",
83
+ name: "Fade Out",
84
+ description: "Smooth opacity transition from visible to invisible",
85
+ useCase: ["exit"],
86
+ context: ["tooltip", "dropdown", "modal", "notification"],
87
+ intensity: 2,
88
+ hasMovement: false,
89
+ },
90
+ getProps: (style, options) => ({
91
+ initial: { opacity: 1 },
92
+ animate: { opacity: 0 },
93
+ transition: createTweenTransition(style, options),
94
+ }),
95
+ };
96
+ // =============================================================================
97
+ // Slide Presets
98
+ // =============================================================================
99
+ const DEFAULT_SLIDE_DISTANCE = 20;
100
+ /**
101
+ * Slide up animation - element moves upward while fading in.
102
+ *
103
+ * @ai-hint Use for content that appears from below. Great for modals,
104
+ * bottom sheets, list items, and card reveals. Creates a natural
105
+ * "rising" feeling.
106
+ */
107
+ export const slideUp = {
108
+ metadata: {
109
+ id: "slideUp",
110
+ name: "Slide Up",
111
+ description: "Element slides upward while fading in",
112
+ useCase: ["entrance", "reveal"],
113
+ context: ["modal", "card", "list-item", "notification"],
114
+ intensity: 3,
115
+ hasMovement: true,
116
+ direction: "up",
117
+ },
118
+ getProps: (style, options) => {
119
+ const distance = options?.distance ?? DEFAULT_SLIDE_DISTANCE;
120
+ return {
121
+ initial: { opacity: 0, y: distance },
122
+ animate: { opacity: 1, y: 0 },
123
+ exit: { opacity: 0, y: distance },
124
+ transition: getTransition(style, true, options),
125
+ };
126
+ },
127
+ };
128
+ /**
129
+ * Slide down animation - element moves downward while fading in.
130
+ *
131
+ * @ai-hint Use for dropdowns, menus, and content appearing from above.
132
+ * Creates a natural "falling" or "dropping" feeling.
133
+ */
134
+ export const slideDown = {
135
+ metadata: {
136
+ id: "slideDown",
137
+ name: "Slide Down",
138
+ description: "Element slides downward while fading in",
139
+ useCase: ["entrance", "reveal"],
140
+ context: ["dropdown", "tooltip", "notification"],
141
+ intensity: 3,
142
+ hasMovement: true,
143
+ direction: "down",
144
+ },
145
+ getProps: (style, options) => {
146
+ const distance = options?.distance ?? DEFAULT_SLIDE_DISTANCE;
147
+ return {
148
+ initial: { opacity: 0, y: -distance },
149
+ animate: { opacity: 1, y: 0 },
150
+ exit: { opacity: 0, y: -distance },
151
+ transition: getTransition(style, true, options),
152
+ };
153
+ },
154
+ };
155
+ /**
156
+ * Slide left animation - element moves leftward while fading in.
157
+ *
158
+ * @ai-hint Use for side panels closing, content sliding out,
159
+ * or navigation transitions moving backward.
160
+ */
161
+ export const slideLeft = {
162
+ metadata: {
163
+ id: "slideLeft",
164
+ name: "Slide Left",
165
+ description: "Element slides leftward while fading in",
166
+ useCase: ["entrance", "transition"],
167
+ context: ["drawer", "page", "section"],
168
+ intensity: 3,
169
+ hasMovement: true,
170
+ direction: "left",
171
+ },
172
+ getProps: (style, options) => {
173
+ const distance = options?.distance ?? DEFAULT_SLIDE_DISTANCE;
174
+ return {
175
+ initial: { opacity: 0, x: distance },
176
+ animate: { opacity: 1, x: 0 },
177
+ exit: { opacity: 0, x: -distance },
178
+ transition: getTransition(style, true, options),
179
+ };
180
+ },
181
+ };
182
+ /**
183
+ * Slide right animation - element moves rightward while fading in.
184
+ *
185
+ * @ai-hint Use for side panels opening, drawers, and navigation
186
+ * transitions moving forward.
187
+ */
188
+ export const slideRight = {
189
+ metadata: {
190
+ id: "slideRight",
191
+ name: "Slide Right",
192
+ description: "Element slides rightward while fading in",
193
+ useCase: ["entrance", "transition"],
194
+ context: ["drawer", "page", "section"],
195
+ intensity: 3,
196
+ hasMovement: true,
197
+ direction: "right",
198
+ },
199
+ getProps: (style, options) => {
200
+ const distance = options?.distance ?? DEFAULT_SLIDE_DISTANCE;
201
+ return {
202
+ initial: { opacity: 0, x: -distance },
203
+ animate: { opacity: 1, x: 0 },
204
+ exit: { opacity: 0, x: distance },
205
+ transition: getTransition(style, true, options),
206
+ };
207
+ },
208
+ };
209
+ // =============================================================================
210
+ // Scale Presets
211
+ // =============================================================================
212
+ const DEFAULT_SCALE_FROM = 0.95;
213
+ const DEFAULT_ZOOM_SCALE = 0.5;
214
+ /**
215
+ * Scale animation - subtle scale with fade.
216
+ *
217
+ * @ai-hint Use for modals, dialogs, and content that should appear
218
+ * to "pop" into view. More subtle than zoom animations.
219
+ */
220
+ export const scale = {
221
+ metadata: {
222
+ id: "scale",
223
+ name: "Scale",
224
+ description: "Subtle scale transition with fade",
225
+ useCase: ["entrance", "emphasis"],
226
+ context: ["modal", "card", "notification"],
227
+ intensity: 3,
228
+ hasMovement: true,
229
+ direction: "in",
230
+ },
231
+ getProps: (style, options) => {
232
+ const scaleFrom = options?.scale ?? DEFAULT_SCALE_FROM;
233
+ return {
234
+ initial: { opacity: 0, scale: scaleFrom },
235
+ animate: { opacity: 1, scale: 1 },
236
+ exit: { opacity: 0, scale: scaleFrom },
237
+ transition: getTransition(style, true, options),
238
+ };
239
+ },
240
+ };
241
+ /**
242
+ * Zoom in animation - dramatic scale from small to full size.
243
+ *
244
+ * @ai-hint Use for hero elements, feature highlights, and content
245
+ * that needs strong visual emphasis. More dramatic than scale.
246
+ */
247
+ export const zoomIn = {
248
+ metadata: {
249
+ id: "zoomIn",
250
+ name: "Zoom In",
251
+ description: "Dramatic zoom from small to full size",
252
+ useCase: ["entrance", "emphasis"],
253
+ context: ["hero", "modal", "card"],
254
+ intensity: 4,
255
+ hasMovement: true,
256
+ direction: "in",
257
+ },
258
+ getProps: (style, options) => {
259
+ const scaleFrom = options?.scale ?? DEFAULT_ZOOM_SCALE;
260
+ return {
261
+ initial: { opacity: 0, scale: scaleFrom },
262
+ animate: { opacity: 1, scale: 1 },
263
+ exit: { opacity: 0, scale: scaleFrom },
264
+ transition: getTransition(style, true, options),
265
+ };
266
+ },
267
+ };
268
+ /**
269
+ * Zoom out animation - scale from large to normal size.
270
+ *
271
+ * @ai-hint Use for content appearing to "approach" the user,
272
+ * or for dramatic entrances that start larger than final size.
273
+ */
274
+ export const zoomOut = {
275
+ metadata: {
276
+ id: "zoomOut",
277
+ name: "Zoom Out",
278
+ description: "Scale from larger to normal size",
279
+ useCase: ["entrance", "emphasis"],
280
+ context: ["hero", "modal"],
281
+ intensity: 4,
282
+ hasMovement: true,
283
+ direction: "out",
284
+ },
285
+ getProps: (style, options) => {
286
+ const scaleTo = options?.scale ?? 1.1;
287
+ return {
288
+ initial: { opacity: 0, scale: scaleTo },
289
+ animate: { opacity: 1, scale: 1 },
290
+ exit: { opacity: 0, scale: scaleTo },
291
+ transition: getTransition(style, true, options),
292
+ };
293
+ },
294
+ };
295
+ // =============================================================================
296
+ // Rotation Presets
297
+ // =============================================================================
298
+ const DEFAULT_ROTATION = 10;
299
+ /**
300
+ * Rotate animation - subtle rotation with fade.
301
+ *
302
+ * @ai-hint Use sparingly for playful interfaces or to add visual interest.
303
+ * Best with playful motion style. Can cause motion sickness if overused.
304
+ */
305
+ export const rotate = {
306
+ metadata: {
307
+ id: "rotate",
308
+ name: "Rotate",
309
+ description: "Subtle rotation animation with fade",
310
+ useCase: ["entrance", "emphasis"],
311
+ context: ["card", "notification"],
312
+ intensity: 4,
313
+ hasMovement: true,
314
+ },
315
+ getProps: (style, options) => {
316
+ const rotation = options?.rotation ?? DEFAULT_ROTATION;
317
+ return {
318
+ initial: { opacity: 0, rotate: -rotation },
319
+ animate: { opacity: 1, rotate: 0 },
320
+ exit: { opacity: 0, rotate: rotation },
321
+ transition: getTransition(style, true, options),
322
+ };
323
+ },
324
+ };
325
+ // =============================================================================
326
+ // Compound Presets
327
+ // =============================================================================
328
+ /**
329
+ * Slide and scale animation - combines slide up with scale.
330
+ *
331
+ * @ai-hint Use for important content that needs extra visual emphasis.
332
+ * Great for hero sections, feature cards, and call-to-action elements.
333
+ */
334
+ export const slideUpScale = {
335
+ metadata: {
336
+ id: "slideUpScale",
337
+ name: "Slide Up & Scale",
338
+ description: "Combines upward slide with subtle scale",
339
+ useCase: ["entrance", "emphasis"],
340
+ context: ["hero", "card", "section"],
341
+ intensity: 4,
342
+ hasMovement: true,
343
+ direction: "up",
344
+ },
345
+ getProps: (style, options) => {
346
+ const distance = options?.distance ?? DEFAULT_SLIDE_DISTANCE;
347
+ const scaleFrom = options?.scale ?? 0.98;
348
+ return {
349
+ initial: { opacity: 0, y: distance, scale: scaleFrom },
350
+ animate: { opacity: 1, y: 0, scale: 1 },
351
+ exit: { opacity: 0, y: distance, scale: scaleFrom },
352
+ transition: getTransition(style, true, options),
353
+ };
354
+ },
355
+ };
356
+ /**
357
+ * Flip animation - 3D flip effect.
358
+ *
359
+ * @ai-hint Use for card flips, reveals, and playful interactions.
360
+ * Works best with playful motion style. Use with perspective.
361
+ */
362
+ export const flip = {
363
+ metadata: {
364
+ id: "flip",
365
+ name: "Flip",
366
+ description: "3D flip animation on the X axis",
367
+ useCase: ["entrance", "transition"],
368
+ context: ["card"],
369
+ intensity: 5,
370
+ hasMovement: true,
371
+ },
372
+ getProps: (style, options) => {
373
+ const rotation = options?.rotation ?? 90;
374
+ return {
375
+ initial: { opacity: 0, rotateX: rotation },
376
+ animate: { opacity: 1, rotateX: 0 },
377
+ exit: { opacity: 0, rotateX: -rotation },
378
+ transition: getTransition(style, true, options),
379
+ };
380
+ },
381
+ };
382
+ /**
383
+ * Expand animation - height expansion for accordions and collapsibles.
384
+ *
385
+ * @ai-hint Use for accordions, collapsible sections, and expandable content.
386
+ * Animates height from 0 to auto.
387
+ */
388
+ export const expand = {
389
+ metadata: {
390
+ id: "expand",
391
+ name: "Expand",
392
+ description: "Height expansion animation",
393
+ useCase: ["entrance", "reveal"],
394
+ context: ["section"],
395
+ intensity: 2,
396
+ hasMovement: true,
397
+ direction: "down",
398
+ },
399
+ getProps: (style, options) => ({
400
+ initial: { opacity: 0, height: 0 },
401
+ animate: { opacity: 1, height: "auto" },
402
+ exit: { opacity: 0, height: 0 },
403
+ transition: createTweenTransition(style, options),
404
+ }),
405
+ };
406
+ // =============================================================================
407
+ // Preset Registry
408
+ // =============================================================================
409
+ /**
410
+ * All available component presets.
411
+ */
412
+ export const componentPresets = {
413
+ fadeIn,
414
+ fadeOut,
415
+ slideUp,
416
+ slideDown,
417
+ slideLeft,
418
+ slideRight,
419
+ scale,
420
+ zoomIn,
421
+ zoomOut,
422
+ rotate,
423
+ slideUpScale,
424
+ flip,
425
+ expand,
426
+ };
427
+ /**
428
+ * Gets a component preset by name.
429
+ *
430
+ * @param name - The preset name
431
+ * @returns The component preset
432
+ *
433
+ * @example
434
+ * ```ts
435
+ * const preset = getComponentPreset("fadeIn");
436
+ * const props = preset.getProps("standard");
437
+ * ```
438
+ */
439
+ export function getComponentPreset(name) {
440
+ return componentPresets[name];
441
+ }
442
+ /**
443
+ * Gets all presets matching a use case.
444
+ *
445
+ * @param useCase - The use case to filter by
446
+ * @returns Array of matching presets
447
+ *
448
+ * @example
449
+ * ```ts
450
+ * const entrancePresets = getPresetsByUseCase("entrance");
451
+ * // Returns: [fadeIn, slideUp, slideDown, ...]
452
+ * ```
453
+ */
454
+ export function getPresetsByUseCase(useCase) {
455
+ return Object.values(componentPresets).filter((preset) => preset.metadata.useCase.includes(useCase));
456
+ }
457
+ /**
458
+ * Gets all presets suitable for a context.
459
+ *
460
+ * @param context - The context to filter by
461
+ * @returns Array of matching presets
462
+ *
463
+ * @example
464
+ * ```ts
465
+ * const modalPresets = getPresetsByContext("modal");
466
+ * // Returns: [fadeIn, slideUp, scale, zoomIn]
467
+ * ```
468
+ */
469
+ export function getPresetsByContext(context) {
470
+ return Object.values(componentPresets).filter((preset) => preset.metadata.context.includes(context));
471
+ }
472
+ //# sourceMappingURL=component-presets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-presets.js","sourceRoot":"","sources":["../../src/presets/component-presets.ts"],"names":[],"mappings":"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"}