@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.
- package/api-schema.json +206 -0
- package/dist/components/CountUp.d.ts +84 -0
- package/dist/components/CountUp.d.ts.map +1 -0
- package/dist/components/CountUp.js +68 -0
- package/dist/components/CountUp.js.map +1 -0
- package/dist/components/MotionDiv.d.ts +159 -0
- package/dist/components/MotionDiv.d.ts.map +1 -0
- package/dist/components/MotionDiv.js +162 -0
- package/dist/components/MotionDiv.js.map +1 -0
- package/dist/components/StaggerContainer.d.ts +136 -0
- package/dist/components/StaggerContainer.d.ts.map +1 -0
- package/dist/components/StaggerContainer.js +166 -0
- package/dist/components/StaggerContainer.js.map +1 -0
- package/dist/hooks/use-component-animation.d.ts +156 -0
- package/dist/hooks/use-component-animation.d.ts.map +1 -0
- package/dist/hooks/use-component-animation.js +231 -0
- package/dist/hooks/use-component-animation.js.map +1 -0
- package/dist/hooks/use-count-up.d.ts +111 -0
- package/dist/hooks/use-count-up.d.ts.map +1 -0
- package/dist/hooks/use-count-up.js +246 -0
- package/dist/hooks/use-count-up.js.map +1 -0
- package/dist/hooks/use-draw-path.d.ts +96 -0
- package/dist/hooks/use-draw-path.d.ts.map +1 -0
- package/dist/hooks/use-draw-path.js +227 -0
- package/dist/hooks/use-draw-path.js.map +1 -0
- package/dist/hooks/use-motion-preset.d.ts.map +1 -1
- package/dist/hooks/use-motion-preset.js +17 -16
- package/dist/hooks/use-motion-preset.js.map +1 -1
- package/dist/hooks/use-stagger.d.ts +174 -0
- package/dist/hooks/use-stagger.d.ts.map +1 -0
- package/dist/hooks/use-stagger.js +256 -0
- package/dist/hooks/use-stagger.js.map +1 -0
- package/dist/index.d.ts +17 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2442 -26
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2335 -25
- package/dist/index.mjs.map +1 -1
- package/dist/presets/component-presets.d.ts +246 -0
- package/dist/presets/component-presets.d.ts.map +1 -0
- package/dist/presets/component-presets.js +472 -0
- package/dist/presets/component-presets.js.map +1 -0
- package/dist/presets/micro-interactions.d.ts +451 -0
- package/dist/presets/micro-interactions.d.ts.map +1 -0
- package/dist/presets/micro-interactions.js +856 -0
- package/dist/presets/micro-interactions.js.map +1 -0
- package/dist/presets/motion-presets.d.ts.map +1 -1
- package/dist/presets/motion-presets.js +0 -1
- package/dist/presets/motion-presets.js.map +1 -1
- package/dist/presets/motion-styles.d.ts +186 -0
- package/dist/presets/motion-styles.d.ts.map +1 -0
- package/dist/presets/motion-styles.js +204 -0
- package/dist/presets/motion-styles.js.map +1 -0
- package/dist/presets/stagger-presets.d.ts +378 -0
- package/dist/presets/stagger-presets.d.ts.map +1 -0
- package/dist/presets/stagger-presets.js +582 -0
- package/dist/presets/stagger-presets.js.map +1 -0
- package/dist/showcase/motion-presets.demo.d.ts +25 -0
- package/dist/showcase/motion-presets.demo.d.ts.map +1 -0
- package/dist/showcase/motion-presets.demo.js +96 -0
- package/dist/showcase/motion-presets.demo.js.map +1 -0
- package/dist/showcase/motion-presets.story.d.ts +37 -0
- package/dist/showcase/motion-presets.story.d.ts.map +1 -0
- package/dist/showcase/motion-presets.story.js +151 -0
- package/dist/showcase/motion-presets.story.js.map +1 -0
- package/dist/utils/easing.d.ts +294 -0
- package/dist/utils/easing.d.ts.map +1 -0
- package/dist/utils/easing.js +265 -0
- package/dist/utils/easing.js.map +1 -0
- package/dist/utils/reduced-motion.d.ts +322 -0
- package/dist/utils/reduced-motion.d.ts.map +1 -0
- package/dist/utils/reduced-motion.js +362 -0
- package/dist/utils/reduced-motion.js.map +1 -0
- package/dist/utils/select-preset.d.ts +186 -0
- package/dist/utils/select-preset.d.ts.map +1 -0
- package/dist/utils/select-preset.js +320 -0
- package/dist/utils/select-preset.js.map +1 -0
- package/dist/utils/spring-configs.d.ts +187 -0
- package/dist/utils/spring-configs.d.ts.map +1 -0
- package/dist/utils/spring-configs.js +169 -0
- package/dist/utils/spring-configs.js.map +1 -0
- package/package.json +4 -3
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Component Animation Presets
|
|
3
|
+
*
|
|
4
|
+
* Defines animation presets for component entrance, exit, and transition animations.
|
|
5
|
+
* Each preset provides Motion library compatible configurations that work with
|
|
6
|
+
* the motion style system.
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
import { type MotionStyle } from "./motion-styles";
|
|
11
|
+
/**
|
|
12
|
+
* Use case categories for component presets.
|
|
13
|
+
* Used by AI tools to select appropriate animations.
|
|
14
|
+
*/
|
|
15
|
+
export type PresetUseCase = "entrance" | "exit" | "transition" | "emphasis" | "reveal";
|
|
16
|
+
/**
|
|
17
|
+
* Context hints for where the animation will be used.
|
|
18
|
+
* Helps AI tools make appropriate selections.
|
|
19
|
+
*/
|
|
20
|
+
export type PresetContext = "modal" | "dropdown" | "tooltip" | "drawer" | "card" | "list-item" | "notification" | "page" | "section" | "hero";
|
|
21
|
+
/**
|
|
22
|
+
* Animation variants for Motion library's AnimatePresence.
|
|
23
|
+
*/
|
|
24
|
+
export interface AnimationVariants {
|
|
25
|
+
/** Initial/hidden state */
|
|
26
|
+
initial: Record<string, unknown>;
|
|
27
|
+
/** Animated/visible state */
|
|
28
|
+
animate: Record<string, unknown>;
|
|
29
|
+
/** Exit state (optional, defaults to initial) */
|
|
30
|
+
exit?: Record<string, unknown>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Complete animation props for Motion library components.
|
|
34
|
+
*/
|
|
35
|
+
export interface ComponentAnimationProps {
|
|
36
|
+
initial: boolean | Record<string, unknown>;
|
|
37
|
+
animate: Record<string, unknown>;
|
|
38
|
+
exit?: Record<string, unknown>;
|
|
39
|
+
transition: Record<string, unknown>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Metadata for component presets, used by AI selection system.
|
|
43
|
+
*/
|
|
44
|
+
export interface PresetMetadata {
|
|
45
|
+
/** Unique identifier for the preset */
|
|
46
|
+
id: string;
|
|
47
|
+
/** Human-readable name */
|
|
48
|
+
name: string;
|
|
49
|
+
/** Description of the animation effect */
|
|
50
|
+
description: string;
|
|
51
|
+
/** Primary use cases */
|
|
52
|
+
useCase: PresetUseCase[];
|
|
53
|
+
/** Recommended contexts */
|
|
54
|
+
context: PresetContext[];
|
|
55
|
+
/** Intensity level (1-5, where 3 is standard) */
|
|
56
|
+
intensity: number;
|
|
57
|
+
/** Whether this preset involves movement */
|
|
58
|
+
hasMovement: boolean;
|
|
59
|
+
/** Direction of movement (if applicable) */
|
|
60
|
+
direction?: "up" | "down" | "left" | "right" | "in" | "out";
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* A component animation preset with metadata.
|
|
64
|
+
*/
|
|
65
|
+
export interface ComponentPreset {
|
|
66
|
+
/** Preset metadata for AI selection */
|
|
67
|
+
metadata: PresetMetadata;
|
|
68
|
+
/**
|
|
69
|
+
* Gets the animation props for a given motion style.
|
|
70
|
+
* @param style - The motion style to apply
|
|
71
|
+
* @param options - Optional customization options
|
|
72
|
+
*/
|
|
73
|
+
getProps: (style: MotionStyle, options?: PresetOptions) => ComponentAnimationProps;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Options for customizing preset behavior.
|
|
77
|
+
*/
|
|
78
|
+
export interface PresetOptions {
|
|
79
|
+
/** Override the default duration */
|
|
80
|
+
duration?: number;
|
|
81
|
+
/** Override the default delay */
|
|
82
|
+
delay?: number;
|
|
83
|
+
/** Custom distance for slide animations (px) */
|
|
84
|
+
distance?: number;
|
|
85
|
+
/** Custom scale factor */
|
|
86
|
+
scale?: number;
|
|
87
|
+
/** Custom rotation angle (degrees) */
|
|
88
|
+
rotation?: number;
|
|
89
|
+
/** Use spring physics instead of tween */
|
|
90
|
+
useSpring?: boolean;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Fade in animation - opacity transition from 0 to 1.
|
|
94
|
+
*
|
|
95
|
+
* @ai-hint Use for subtle entrances. Works well for tooltips, dropdowns,
|
|
96
|
+
* and any content that should appear without drawing too much attention.
|
|
97
|
+
* Combines well with other presets for compound animations.
|
|
98
|
+
*/
|
|
99
|
+
export declare const fadeIn: ComponentPreset;
|
|
100
|
+
/**
|
|
101
|
+
* Fade out animation - opacity transition from 1 to 0.
|
|
102
|
+
*
|
|
103
|
+
* @ai-hint Use for gentle exits. Best when paired with fadeIn for
|
|
104
|
+
* symmetrical enter/exit animations.
|
|
105
|
+
*/
|
|
106
|
+
export declare const fadeOut: ComponentPreset;
|
|
107
|
+
/**
|
|
108
|
+
* Slide up animation - element moves upward while fading in.
|
|
109
|
+
*
|
|
110
|
+
* @ai-hint Use for content that appears from below. Great for modals,
|
|
111
|
+
* bottom sheets, list items, and card reveals. Creates a natural
|
|
112
|
+
* "rising" feeling.
|
|
113
|
+
*/
|
|
114
|
+
export declare const slideUp: ComponentPreset;
|
|
115
|
+
/**
|
|
116
|
+
* Slide down animation - element moves downward while fading in.
|
|
117
|
+
*
|
|
118
|
+
* @ai-hint Use for dropdowns, menus, and content appearing from above.
|
|
119
|
+
* Creates a natural "falling" or "dropping" feeling.
|
|
120
|
+
*/
|
|
121
|
+
export declare const slideDown: ComponentPreset;
|
|
122
|
+
/**
|
|
123
|
+
* Slide left animation - element moves leftward while fading in.
|
|
124
|
+
*
|
|
125
|
+
* @ai-hint Use for side panels closing, content sliding out,
|
|
126
|
+
* or navigation transitions moving backward.
|
|
127
|
+
*/
|
|
128
|
+
export declare const slideLeft: ComponentPreset;
|
|
129
|
+
/**
|
|
130
|
+
* Slide right animation - element moves rightward while fading in.
|
|
131
|
+
*
|
|
132
|
+
* @ai-hint Use for side panels opening, drawers, and navigation
|
|
133
|
+
* transitions moving forward.
|
|
134
|
+
*/
|
|
135
|
+
export declare const slideRight: ComponentPreset;
|
|
136
|
+
/**
|
|
137
|
+
* Scale animation - subtle scale with fade.
|
|
138
|
+
*
|
|
139
|
+
* @ai-hint Use for modals, dialogs, and content that should appear
|
|
140
|
+
* to "pop" into view. More subtle than zoom animations.
|
|
141
|
+
*/
|
|
142
|
+
export declare const scale: ComponentPreset;
|
|
143
|
+
/**
|
|
144
|
+
* Zoom in animation - dramatic scale from small to full size.
|
|
145
|
+
*
|
|
146
|
+
* @ai-hint Use for hero elements, feature highlights, and content
|
|
147
|
+
* that needs strong visual emphasis. More dramatic than scale.
|
|
148
|
+
*/
|
|
149
|
+
export declare const zoomIn: ComponentPreset;
|
|
150
|
+
/**
|
|
151
|
+
* Zoom out animation - scale from large to normal size.
|
|
152
|
+
*
|
|
153
|
+
* @ai-hint Use for content appearing to "approach" the user,
|
|
154
|
+
* or for dramatic entrances that start larger than final size.
|
|
155
|
+
*/
|
|
156
|
+
export declare const zoomOut: ComponentPreset;
|
|
157
|
+
/**
|
|
158
|
+
* Rotate animation - subtle rotation with fade.
|
|
159
|
+
*
|
|
160
|
+
* @ai-hint Use sparingly for playful interfaces or to add visual interest.
|
|
161
|
+
* Best with playful motion style. Can cause motion sickness if overused.
|
|
162
|
+
*/
|
|
163
|
+
export declare const rotate: ComponentPreset;
|
|
164
|
+
/**
|
|
165
|
+
* Slide and scale animation - combines slide up with scale.
|
|
166
|
+
*
|
|
167
|
+
* @ai-hint Use for important content that needs extra visual emphasis.
|
|
168
|
+
* Great for hero sections, feature cards, and call-to-action elements.
|
|
169
|
+
*/
|
|
170
|
+
export declare const slideUpScale: ComponentPreset;
|
|
171
|
+
/**
|
|
172
|
+
* Flip animation - 3D flip effect.
|
|
173
|
+
*
|
|
174
|
+
* @ai-hint Use for card flips, reveals, and playful interactions.
|
|
175
|
+
* Works best with playful motion style. Use with perspective.
|
|
176
|
+
*/
|
|
177
|
+
export declare const flip: ComponentPreset;
|
|
178
|
+
/**
|
|
179
|
+
* Expand animation - height expansion for accordions and collapsibles.
|
|
180
|
+
*
|
|
181
|
+
* @ai-hint Use for accordions, collapsible sections, and expandable content.
|
|
182
|
+
* Animates height from 0 to auto.
|
|
183
|
+
*/
|
|
184
|
+
export declare const expand: ComponentPreset;
|
|
185
|
+
/**
|
|
186
|
+
* All available component presets.
|
|
187
|
+
*/
|
|
188
|
+
export declare const componentPresets: {
|
|
189
|
+
readonly fadeIn: ComponentPreset;
|
|
190
|
+
readonly fadeOut: ComponentPreset;
|
|
191
|
+
readonly slideUp: ComponentPreset;
|
|
192
|
+
readonly slideDown: ComponentPreset;
|
|
193
|
+
readonly slideLeft: ComponentPreset;
|
|
194
|
+
readonly slideRight: ComponentPreset;
|
|
195
|
+
readonly scale: ComponentPreset;
|
|
196
|
+
readonly zoomIn: ComponentPreset;
|
|
197
|
+
readonly zoomOut: ComponentPreset;
|
|
198
|
+
readonly rotate: ComponentPreset;
|
|
199
|
+
readonly slideUpScale: ComponentPreset;
|
|
200
|
+
readonly flip: ComponentPreset;
|
|
201
|
+
readonly expand: ComponentPreset;
|
|
202
|
+
};
|
|
203
|
+
/**
|
|
204
|
+
* Type for preset names.
|
|
205
|
+
*/
|
|
206
|
+
export type ComponentPresetName = keyof typeof componentPresets;
|
|
207
|
+
/**
|
|
208
|
+
* Gets a component preset by name.
|
|
209
|
+
*
|
|
210
|
+
* @param name - The preset name
|
|
211
|
+
* @returns The component preset
|
|
212
|
+
*
|
|
213
|
+
* @example
|
|
214
|
+
* ```ts
|
|
215
|
+
* const preset = getComponentPreset("fadeIn");
|
|
216
|
+
* const props = preset.getProps("standard");
|
|
217
|
+
* ```
|
|
218
|
+
*/
|
|
219
|
+
export declare function getComponentPreset(name: ComponentPresetName): ComponentPreset;
|
|
220
|
+
/**
|
|
221
|
+
* Gets all presets matching a use case.
|
|
222
|
+
*
|
|
223
|
+
* @param useCase - The use case to filter by
|
|
224
|
+
* @returns Array of matching presets
|
|
225
|
+
*
|
|
226
|
+
* @example
|
|
227
|
+
* ```ts
|
|
228
|
+
* const entrancePresets = getPresetsByUseCase("entrance");
|
|
229
|
+
* // Returns: [fadeIn, slideUp, slideDown, ...]
|
|
230
|
+
* ```
|
|
231
|
+
*/
|
|
232
|
+
export declare function getPresetsByUseCase(useCase: PresetUseCase): ComponentPreset[];
|
|
233
|
+
/**
|
|
234
|
+
* Gets all presets suitable for a context.
|
|
235
|
+
*
|
|
236
|
+
* @param context - The context to filter by
|
|
237
|
+
* @returns Array of matching presets
|
|
238
|
+
*
|
|
239
|
+
* @example
|
|
240
|
+
* ```ts
|
|
241
|
+
* const modalPresets = getPresetsByContext("modal");
|
|
242
|
+
* // Returns: [fadeIn, slideUp, scale, zoomIn]
|
|
243
|
+
* ```
|
|
244
|
+
*/
|
|
245
|
+
export declare function getPresetsByContext(context: PresetContext): ComponentPreset[];
|
|
246
|
+
//# sourceMappingURL=component-presets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-presets.d.ts","sourceRoot":"","sources":["../../src/presets/component-presets.ts"],"names":[],"mappings":"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"}
|