@reframejs/unframer 4.2.0-reframe.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 (111) hide show
  1. package/README.md +389 -0
  2. package/bin.js +5 -0
  3. package/dist/babel-jsx.d.ts +24 -0
  4. package/dist/babel-jsx.js +299 -0
  5. package/dist/babel-plugin-imports.d.ts +15 -0
  6. package/dist/babel-plugin-imports.js +211 -0
  7. package/dist/babel-typedoc.d.ts +39 -0
  8. package/dist/babel-typedoc.js +76 -0
  9. package/dist/bin.d.ts +2 -0
  10. package/dist/bin.js +3 -0
  11. package/dist/cli.d.ts +59 -0
  12. package/dist/cli.js +821 -0
  13. package/dist/compat.d.ts +2 -0
  14. package/dist/compat.js +23 -0
  15. package/dist/config.d.ts +18 -0
  16. package/dist/config.js +27 -0
  17. package/dist/css-core.d.ts +50 -0
  18. package/dist/css-core.js +231 -0
  19. package/dist/css.d.ts +15 -0
  20. package/dist/css.js +36 -0
  21. package/dist/esbuild.d.ts +31 -0
  22. package/dist/esbuild.js +317 -0
  23. package/dist/exporter.d.ts +96 -0
  24. package/dist/exporter.js +1151 -0
  25. package/dist/flat-cache-interceptor.d.ts +24 -0
  26. package/dist/flat-cache-interceptor.js +87 -0
  27. package/dist/framer-chunks/chunk-IKQSD2QC.js +10 -0
  28. package/dist/framer-chunks/fontshare-PZLWRK4B-MHMZIGTX.js +7 -0
  29. package/dist/framer-chunks/fontshare-SXU5BGFE-OWTMMPGS.js +7 -0
  30. package/dist/framer-chunks/fontshare-TIA7QUPT-PUDLUTQ7.js +7 -0
  31. package/dist/framer-chunks/framer-font-RD2SUPQH-Q4MS7WS6.js +7 -0
  32. package/dist/framer-chunks/google-EGNT223R-P4DUHBW2.js +7 -0
  33. package/dist/framer-chunks/google-H6SFY4F5-5JSJCGDR.js +7 -0
  34. package/dist/framer-chunks/google-YSYBFRE6-L7YAHH7V.js +7 -0
  35. package/dist/framer-client.server.d.ts +4 -0
  36. package/dist/framer-client.server.js +45 -0
  37. package/dist/framer-package-versions.d.ts +781 -0
  38. package/dist/framer-package-versions.js +782 -0
  39. package/dist/framer-types.d.ts +30 -0
  40. package/dist/framer-types.js +35 -0
  41. package/dist/framer.d.ts +4990 -0
  42. package/dist/framer.js +64296 -0
  43. package/dist/index.d.ts +10 -0
  44. package/dist/index.js +13 -0
  45. package/dist/package-manager.d.ts +10 -0
  46. package/dist/package-manager.js +138 -0
  47. package/dist/plugin-mcp-dist/lib/client-websocket.d.ts +5 -0
  48. package/dist/plugin-mcp-dist/lib/client-websocket.js +103 -0
  49. package/dist/plugin-mcp-dist/lib/cms.d.ts +10 -0
  50. package/dist/plugin-mcp-dist/lib/cms.js +58 -0
  51. package/dist/plugin-mcp-dist/lib/errors.d.ts +5 -0
  52. package/dist/plugin-mcp-dist/lib/errors.js +48 -0
  53. package/dist/plugin-mcp-dist/lib/framer-client.d.ts +2 -0
  54. package/dist/plugin-mcp-dist/lib/framer-client.js +4 -0
  55. package/dist/plugin-mcp-dist/lib/framer-client.server.d.ts +3 -0
  56. package/dist/plugin-mcp-dist/lib/framer-client.server.js +46 -0
  57. package/dist/plugin-mcp-dist/lib/framer.d.ts +30 -0
  58. package/dist/plugin-mcp-dist/lib/framer.js +1084 -0
  59. package/dist/plugin-mcp-dist/lib/hooks.d.ts +6 -0
  60. package/dist/plugin-mcp-dist/lib/hooks.js +46 -0
  61. package/dist/plugin-mcp-dist/lib/mcp-client.d.ts +142 -0
  62. package/dist/plugin-mcp-dist/lib/mcp-client.js +40 -0
  63. package/dist/plugin-mcp-dist/lib/mcp-handlers.d.ts +385 -0
  64. package/dist/plugin-mcp-dist/lib/mcp-handlers.js +1924 -0
  65. package/dist/plugin-mcp-dist/lib/mcp-tools.d.ts +5 -0
  66. package/dist/plugin-mcp-dist/lib/mcp-tools.js +5 -0
  67. package/dist/plugin-mcp-dist/lib/mcp-websocket.d.ts +10 -0
  68. package/dist/plugin-mcp-dist/lib/mcp-websocket.js +88 -0
  69. package/dist/plugin-mcp-dist/lib/plugin-websocket.d.ts +5 -0
  70. package/dist/plugin-mcp-dist/lib/plugin-websocket.js +170 -0
  71. package/dist/plugin-mcp-dist/lib/react-export.d.ts +51 -0
  72. package/dist/plugin-mcp-dist/lib/react-export.js +358 -0
  73. package/dist/plugin-mcp-dist/lib/schema.d.ts +276 -0
  74. package/dist/plugin-mcp-dist/lib/schema.js +907 -0
  75. package/dist/plugin-mcp-dist/lib/store.d.ts +2 -0
  76. package/dist/plugin-mcp-dist/lib/store.js +10 -0
  77. package/dist/plugin-mcp-dist/lib/tree-utils.d.ts +6 -0
  78. package/dist/plugin-mcp-dist/lib/tree-utils.js +141 -0
  79. package/dist/plugin-mcp-dist/lib/tunnel.d.ts +46 -0
  80. package/dist/plugin-mcp-dist/lib/tunnel.js +117 -0
  81. package/dist/plugin-mcp-dist/lib/types.d.ts +110 -0
  82. package/dist/plugin-mcp-dist/lib/types.js +188 -0
  83. package/dist/plugin-mcp-dist/lib/upstream-socket.d.ts +13 -0
  84. package/dist/plugin-mcp-dist/lib/upstream-socket.js +56 -0
  85. package/dist/plugin-mcp-dist/lib/utils.d.ts +13 -0
  86. package/dist/plugin-mcp-dist/lib/utils.js +57 -0
  87. package/dist/plugin-mcp-dist/lib/websocket-server.d.ts +10 -0
  88. package/dist/plugin-mcp-dist/lib/websocket-server.js +88 -0
  89. package/dist/plugin-mcp-dist/lib/xml.d.ts +10 -0
  90. package/dist/plugin-mcp-dist/lib/xml.js +395 -0
  91. package/dist/react.d.ts +76 -0
  92. package/dist/react.js +280 -0
  93. package/dist/renamer.d.ts +11 -0
  94. package/dist/renamer.js +139 -0
  95. package/dist/sentry.d.ts +2 -0
  96. package/dist/sentry.js +5 -0
  97. package/dist/stackblitz.d.ts +9 -0
  98. package/dist/stackblitz.js +179 -0
  99. package/dist/styles/framer.css +920 -0
  100. package/dist/styles/reset.css +37 -0
  101. package/dist/typescript.d.ts +24 -0
  102. package/dist/typescript.js +197 -0
  103. package/dist/undici-dispatcher.d.ts +2 -0
  104. package/dist/undici-dispatcher.js +10 -0
  105. package/dist/unframer-loader.d.ts +2 -0
  106. package/dist/unframer-loader.js +12 -0
  107. package/dist/utils.d.ts +20 -0
  108. package/dist/utils.js +81 -0
  109. package/dist/version.d.ts +2 -0
  110. package/dist/version.js +2 -0
  111. package/package.json +131 -0
@@ -0,0 +1,4990 @@
1
+ import type { AnimationPlaybackControls } from 'framer-motion';
2
+ import type { CSSProperties } from 'react';
3
+ import { DOMAttributes } from 'react';
4
+ import { ForwardRefExoticComponent } from 'react';
5
+ import type { HTMLMotionProps } from 'framer-motion';
6
+ import { JSX as JSX_2 } from 'react/jsx-runtime';
7
+ import { DeprecatedLayoutGroupContext as LayoutGroupContext } from 'framer-motion';
8
+ import { MotionProps } from 'framer-motion';
9
+ import type { MotionStyle } from 'framer-motion';
10
+ import type { MotionTransform } from 'framer-motion';
11
+ import type { MotionValue } from 'framer-motion';
12
+ import { PanInfo } from 'framer-motion';
13
+ import type { PropsWithChildren } from 'react';
14
+ import { PropsWithoutRef } from 'react';
15
+ import { default as React_2 } from 'react';
16
+ import type { ReactNode } from 'react';
17
+ import { RefAttributes } from 'react';
18
+ import type { SpringOptions as SpringOptions_2 } from 'framer-motion';
19
+ import type { TapHandlers } from 'framer-motion';
20
+ import type { Transition } from 'framer-motion';
21
+ import { useDeprecatedAnimatedState as useAnimatedState } from 'framer-motion';
22
+ import { useDeprecatedInvertedScale as useInvertedScale } from 'framer-motion';
23
+ import { ValueAnimationTransition } from 'framer-motion';
24
+
25
+ /** @public */
26
+ export declare function addFonts(component: React_2.ComponentType<unknown>, fontsOrBundles: (ComponentFontV1 | ComponentFontBundle<ComponentFontV2 | ComponentFont>)[], flags?: {
27
+ supportsExplicitInterCodegen?: boolean;
28
+ }): void;
29
+
30
+ /**
31
+ * Extends component with property controls
32
+ *
33
+ * ```typescript
34
+ * export const MyComponent = props => <h1>{props.header}</h1>
35
+ *
36
+ * addPropertyControls(MyComponent, {
37
+ * header: { type: ControlType.String, title: "Header" },
38
+ * })
39
+ *
40
+ * ```
41
+ * @public
42
+ */
43
+ export declare function addPropertyControls<Props = any>(component: React_2.ComponentType<Props> | React_2.ForwardRefExoticComponent<Props> | HigherOrderComponent<Props>, propertyControls: PropertyControls<Props>): void;
44
+
45
+ declare type Alignment = "start" | "center" | "end";
46
+
47
+ /**
48
+ * Supported types are:
49
+ * 1. Valid media types (`"image/png"`, `"audio/*"`, `"✱/✱"`)
50
+ * 2. File extensions with a leading dot (`".png"`)
51
+ * 3. `"*"` (`.*` as a pseudo file extension was confirmed to allow everything in file pickers of all three major browser engines)
52
+ * 4. File extensions WITHOUT a leading dot (`"png"`) – unlike in browser APIs – for backward compatibility and in case something doesn't parse as a media type
53
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input/file#unique_file_type_specifiers
54
+ */
55
+ declare type AllowedFileTypes = readonly string[];
56
+
57
+ /**
58
+ * @public
59
+ */
60
+ declare type AlphaNumericChar = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" | "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";
61
+
62
+ /**
63
+ * @public
64
+ * @deprecated Use {@link useMotionValue} instead
65
+ */
66
+ declare interface Animatable_2<Value> extends UpdateObserver<Value> {
67
+ /**
68
+ * Get the current value out of this Animatable object
69
+ * @remarks
70
+ * ```jsx
71
+ * const a = Animatable(0)
72
+ * a.get() // returns 0
73
+ * await animate(a, 42)
74
+ * a.get() // returns 42
75
+ * ```
76
+ * @returns Current value
77
+ * @public
78
+ */
79
+ get(): Value;
80
+ /**
81
+ * Set a new value to a animatable object
82
+ * @remarks
83
+ * The passed value can be an Animatable value too
84
+ * ```jsx
85
+ * const a = Animatable(0)
86
+ * const b = Animatable(100)
87
+ * a.set(42)
88
+ * a.get() // returns 42
89
+ * a.set(b)
90
+ * a.get() // returns 100
91
+ * ```
92
+ * @param value - New value to set to the animatable
93
+ * @public
94
+ */
95
+ set(value: Value | Animatable_2<Value>): void;
96
+ /**
97
+ * @public
98
+ */
99
+ set(value: Value | Animatable_2<Value>, transaction?: TransactionId): void;
100
+
101
+ }
102
+
103
+ /**
104
+ * @public
105
+ */
106
+ declare const Animatable_2: {
107
+ <Value>(value: Value | Animatable_2<Value>): Animatable_2<Value>;
108
+ transaction(update: (updater: (animatable: Animatable_2<any>, value: any) => void, transactionId: TransactionId) => void): void;
109
+ getNumber(value: number | Animatable_2<number> | null | undefined, defaultValue?: number): number;
110
+ get<Value>(value: Value | Animatable_2<Value> | null | undefined, defaultValue: Value): Value;
111
+ objectToValues<Object>(object: AnimatableObject<Object>): Object;
112
+ };
113
+ export { Animatable_2 as Animatable }
114
+
115
+ /** @public */
116
+ export declare type AnimatableObject<T> = {
117
+ [K in keyof T]: ToAnimatableOrValue<T[K]>;
118
+ };
119
+
120
+ /**
121
+ * @public
122
+ * @deprecated Use the {@link MotionProps.animate} prop on {@link Frame} instead.
123
+ */
124
+ export declare const animate: {
125
+ <Value, Options>(from: Animatable_2<Value>, to: Value, animator?: AnimatorClass<Value, Options>, options?: Partial<Options & DeprecatedAnimationOptions<Value>>): FramerAnimation<Value, Options>;
126
+ <V>(from: MotionValue<V> | V, to: V | V[], transition?: Transition & AnimationPlaybackLifecycles<V>): AnimationPlaybackControls;
127
+ spring<Value>(from: Animatable_2<Value>, to: Value, options?: Partial<SpringOptions & DeprecatedAnimationOptions<Value>>): FramerAnimation<Value, SpringOptions>;
128
+ bezier<Value>(from: Animatable_2<Value>, to: Value, options?: Partial<BezierOptions & DeprecatedAnimationOptions<Value>>): FramerAnimation<Value, BezierOptions>;
129
+ linear<Value>(from: Animatable_2<Value>, to: Value, options?: Partial<EaseOptions & DeprecatedAnimationOptions<Value>>): FramerAnimation<Value, BezierOptions>;
130
+ ease<Value>(from: Animatable_2<Value>, to: Value, options?: Partial<EaseOptions & DeprecatedAnimationOptions<Value>>): FramerAnimation<Value, BezierOptions>;
131
+ easeIn<Value>(from: Animatable_2<Value>, to: Value, options?: Partial<EaseOptions & DeprecatedAnimationOptions<Value>>): FramerAnimation<Value, BezierOptions>;
132
+ easeOut<Value>(from: Animatable_2<Value>, to: Value, options?: Partial<EaseOptions & DeprecatedAnimationOptions<Value>>): FramerAnimation<Value, BezierOptions>;
133
+ easeInOut<Value>(from: Animatable_2<Value>, to: Value, options?: Partial<EaseOptions & DeprecatedAnimationOptions<Value>>): FramerAnimation<Value, BezierOptions>;
134
+ };
135
+
136
+ /**
137
+ * @public
138
+ * @deprecated Since Framer Motion 5 AnimateSharedLayout is no longer required for shared layout transitions.
139
+ * You can use the `layoutId` prop and components will animate from one to another.
140
+ * If you need to group components that affect each other's layout or scope shared layout animation, consider using `LayoutGroup` instead.
141
+ */
142
+ export declare const AnimateSharedLayout: (props: any) => any;
143
+
144
+ /**
145
+ * @public
146
+ */
147
+ declare interface AnimationInterface {
148
+
149
+ cancel(): void;
150
+
151
+ isFinished(): boolean;
152
+ }
153
+
154
+ declare interface AnimationPlaybackLifecycles<V> {
155
+ onUpdate?: (latest: V) => void;
156
+ onPlay?: () => void;
157
+ onComplete?: () => void;
158
+ onRepeat?: () => void;
159
+ onStop?: () => void;
160
+ }
161
+
162
+ /**
163
+ * @public
164
+ * @deprecated Use the `transition` prop instead
165
+ */
166
+ declare interface AnimatorClass<Value, Options = any> {
167
+
168
+ }
169
+
170
+ /** @public */
171
+ export declare interface ArrayControlDescription<P = any> extends BaseControlDescription<P> {
172
+ type: ControlType.Array;
173
+ control: ArrayItemControlDescription<P>;
174
+ /** @deprecated This property has been renamed to control. */
175
+ propertyControl?: ArrayItemControlDescription<P>;
176
+
177
+ maxCount?: number;
178
+ defaultValue?: any[];
179
+ }
180
+
181
+ /**
182
+ * Array sub type
183
+ * @public
184
+ */
185
+ export declare type ArrayItemControlDescription<P = any> = Omit<NumberControlDescription<P>, "hidden" | "description"> | Omit<EnumControlDescription<P>, "hidden" | "description"> | Omit<BooleanControlDescription<P>, "hidden" | "description"> | Omit<StringControlDescription<P>, "hidden" | "description"> | Omit<RichTextControlDescription<P>, "hidden" | "description"> | Omit<ColorControlDescription<P>, "hidden" | "description" | "optional"> | Omit<SegmentedEnumControlDescription<P>, "hidden" | "description"> | Omit<ImageControlDescription<P>, "hidden" | "description"> | Omit<ResponsiveImageControlDescription<P>, "hidden" | "description"> | Omit<FileControlDescription<P>, "hidden" | "description"> | Omit<ComponentInstanceDescription<P>, "hidden" | "description"> | Omit<TransitionControlDescription<P>, "hidden" | "description"> | Omit<LinkControlDescription<P>, "hidden" | "description"> | Omit<DateControlDescription<P>, "hidden" | "description"> | Omit<ObjectControlDescription<P>, "hidden" | "description" | "optional"> | Omit<ScrollSectionRefControlDescription<P>, "hidden" | "description"> | Omit<CustomCursorControlDescription<P>, "hidden" | "description"> | Omit<BorderControlDescription<P>, "hidden" | "description" | "optional"> | Omit<CursorControlDescription<P>, "hidden" | "description">;
186
+
187
+ /**
188
+ * Enable or disable the automatic generation of layout ids for canvas layers.
189
+ * By default layout ids are generated for all layers created on the Framer
190
+ * canvas. However, layout ids are not generated for any layer that is a
191
+ * descendant of a code component. Sometimes you will want to enable layout id
192
+ * generation for descendants of your code components when they use children,
193
+ * slots, or import design components, and you want those layers to animate with
194
+ * magic motion transitions.
195
+ *
196
+ * You can enable that behavior by wrapping your code component like this
197
+ * ```typescript
198
+ * <AutomaticLayoutIds enabled>
199
+ * <YourComponent/>
200
+ * </AutomaticLayoutIds>
201
+ * ```
202
+ * @public
203
+ */
204
+ export declare function AutomaticLayoutIds({ enabled, ...props }: React_2.PropsWithChildren<{
205
+ enabled?: boolean;
206
+ }>): JSX_2.Element;
207
+
208
+ /** @public */
209
+ export declare type Background = Color | Gradient | BackgroundImage | MotionValue<string> | string;
210
+
211
+ /** @public */
212
+ export declare interface BackgroundFilterProperties {
213
+ backgroundBlur: number;
214
+ }
215
+
216
+ /** @public */
217
+ export declare interface BackgroundImage {
218
+ src: string | undefined;
219
+ alt?: string;
220
+ srcSet?: string;
221
+ sizes?: string;
222
+ pixelWidth?: number;
223
+ pixelHeight?: number;
224
+ intrinsicWidth?: number;
225
+ intrinsicHeight?: number;
226
+ positionX?: "left" | "center" | "right" | RelativeNumber;
227
+ positionY?: "top" | "center" | "bottom" | RelativeNumber;
228
+ fit?: ImageFit;
229
+ backgroundSize?: number;
230
+ loading?: "lazy" | "eager";
231
+ fetchPriority?: "high" | "low";
232
+ }
233
+
234
+ /** @public */
235
+ export declare const BackgroundImage: {
236
+ isImageObject: (image: unknown) => image is object & BackgroundImage;
237
+ };
238
+
239
+ /** @public */
240
+ declare interface BackgroundImageProps extends ImageAltProps {
241
+ background: BackgroundImage;
242
+ fitImageDimension?: FitImageDimensionType;
243
+ }
244
+
245
+ /** @public */
246
+ export declare interface BackgroundProperties {
247
+ /**
248
+ * Set the background of a `Frame`. Supports color strings, color objects and images by using `src`. Set to a semi-transparent blue color by default.
249
+ * This will override the values set by the `image` property. To use a color and a image, use `backgroundColor` instead
250
+ * ```jsx
251
+ * <Frame background="#09F"/>
252
+ * <Frame background={Color({r: 255, g: 0, b: 102})} />
253
+ * <Frame background={{ alpha: 1, angle: 75, start: "#09F", end: "#F09"}} />
254
+ * <Frame background={{ src: "https://example.com/logo.png"}} />
255
+ * ```
256
+ * @public
257
+ */
258
+ background: Background | null;
259
+ /**
260
+ * Set the background color of a `Frame`. Supports color strings and objects. Use this property to set a background color alongside the `image` property.
261
+ * ```jsx
262
+ * <Frame backgroundColor="#09F"/>
263
+ * <Frame backgroundColor={Color({r: 255, g: 0, b: 102})} />
264
+ * ```
265
+ * @public
266
+ */
267
+ backgroundColor: string | Color;
268
+ /**
269
+ * Sets a background image of a `Frame`. Will wrap the passed value in a `url('')` if needed.
270
+ * @remarks
271
+ * ```jsx
272
+ * <Frame image="https://source.unsplash.com/random" />
273
+ * ```
274
+ * @public
275
+ */
276
+ image: string;
277
+ }
278
+
279
+ /** @public */
280
+ export declare interface BaseControlDescription<P = any> {
281
+ title?: string;
282
+ description?: string;
283
+ hidden?: ((props: P, rootProps: any) => boolean) | boolean;
284
+ }
285
+
286
+ /**
287
+ * @remarks do no use separately from FrameProps
288
+ * @public
289
+ * */
290
+ export declare interface BaseFrameProps {
291
+ /**
292
+ * Add a name to the Frame. This property does not change the behaviour of a Frame, but makes it easier to identify it in your code.
293
+ * @remarks
294
+ * The name will be rendered in the `data-framer-name` attribute of the outputted div, so the Frame is recognizable in the HTML DOM too.
295
+ * ```jsx
296
+ * <Frame name={"Button"} />
297
+ * ```
298
+ * @public
299
+ */
300
+ name: string;
301
+
302
+
303
+ }
304
+
305
+ /**
306
+ * @public
307
+ */
308
+ declare enum Bezier {
309
+ Linear = "linear",
310
+ Ease = "ease",
311
+ EaseIn = "ease-in",
312
+ EaseOut = "ease-out",
313
+ EaseInOut = "ease-in-out"
314
+ }
315
+
316
+ declare interface BezierOptions {
317
+ curve: Curve;
318
+ duration: number;
319
+ }
320
+
321
+ /** @public */
322
+ export declare type BlendingMode = "normal" | "multiply" | "screen" | "overlay" | "darken" | "lighten" | "color-dodge" | "color-burn" | "hard-light" | "soft-light" | "difference" | "exclusion" | "hue" | "saturation" | "color" | "luminosity";
323
+
324
+ /** @public */
325
+ export declare interface BlendingProperties {
326
+ blendingMode: BlendingMode;
327
+ }
328
+
329
+ /** @public */
330
+ export declare interface BooleanControlDescription<P = any> extends BaseControlDescription<P> {
331
+ type: ControlType.Boolean;
332
+ defaultValue?: boolean;
333
+ /**
334
+ * @deprecated No longer recommended because it should be clear what happens when assigning a
335
+ * boolean variable.
336
+ */
337
+ disabledTitle?: string;
338
+ /**
339
+ * @deprecated No longer recommended because it should be clear what happens when assigning a
340
+ * boolean variable.
341
+ */
342
+ enabledTitle?: string;
343
+ }
344
+
345
+ /**
346
+ * @public
347
+ * Represents a border style.
348
+ * Either borderWidth or the equivalent per-side
349
+ * values (e.g borderTopWidth, borderLeftWidth, borderRightWidth, borderBottomWidth)
350
+ * will be provided.
351
+ */
352
+ declare interface Border {
353
+ borderColor?: string;
354
+ borderStyle?: BorderStyle;
355
+ borderWidth?: number;
356
+ borderTopWidth?: number;
357
+ borderLeftWidth?: number;
358
+ borderRightWidth?: number;
359
+ borderBottomWidth?: number;
360
+ }
361
+
362
+ /**
363
+ * @public
364
+ */
365
+ export declare interface BorderControlDescription<P = any> extends BaseControlDescription<P> {
366
+ type: ControlType.Border;
367
+ defaultValue?: Border;
368
+ optional?: boolean;
369
+ }
370
+
371
+ declare interface BorderRadiusControlDescription<P = any> extends BaseControlDescription<P> {
372
+ type: ControlType.BorderRadius;
373
+ defaultValue?: string;
374
+ }
375
+
376
+ /** @public */
377
+ export declare type BorderStyle = "solid" | "dashed" | "dotted" | "double";
378
+
379
+ /** @public */
380
+ export declare interface BoxShadow {
381
+ type?: "box" | "realistic";
382
+ inset: boolean;
383
+ color: string;
384
+ x: number;
385
+ y: number;
386
+ blur: number;
387
+ spread: number;
388
+ diffusion: number;
389
+ focus: number;
390
+ }
391
+
392
+ /** @public */
393
+ export declare const BoxShadow: {
394
+ is: (shadow: any) => shadow is BoxShadow;
395
+ toCSS: (shadow: BoxShadow) => string;
396
+ };
397
+
398
+ /** @public */
399
+ export declare interface BoxShadowControlDescription<P = any> extends BaseControlDescription<P> {
400
+ type: ControlType.BoxShadow;
401
+ defaultValue?: string | readonly BoxShadow[];
402
+ }
403
+
404
+ /** @public */
405
+ export declare interface BoxShadowProperties {
406
+ shadows: readonly BoxShadow[];
407
+ }
408
+
409
+ declare interface BoxShadowProperties_2 {
410
+ shadows: readonly BoxShadow[];
411
+ }
412
+
413
+ declare type CallbackMap = Record<string, (() => void) | undefined>;
414
+
415
+ /** @public */
416
+ export declare type Cancel = () => void;
417
+
418
+ declare interface Change<Value> {
419
+ value: Value;
420
+ oldValue?: Value;
421
+ }
422
+
423
+ export declare function clampRGB<T>(color: T): T | string;
424
+
425
+ declare type ClassName = string | false | void | null | 0;
426
+
427
+ declare interface CollectionReferenceControlDescription<P = any> extends BaseControlDescription<P> {
428
+ type: ControlType.CollectionReference;
429
+ dataIdentifier: string;
430
+ defaultValue?: string;
431
+ }
432
+
433
+ /**
434
+ * @public
435
+ */
436
+ declare interface CollectionUtils {
437
+ getSlugByRecordId: (id: string, locale: Locale | undefined) => Promise<string | undefined>;
438
+ getRecordIdBySlug: (slug: string, locale: Locale | undefined) => Promise<string | undefined>;
439
+ }
440
+
441
+ /**
442
+ * @public
443
+ */
444
+ export declare interface Color {
445
+ r: number;
446
+ g: number;
447
+ b: number;
448
+ h: number;
449
+ s: number;
450
+ l: number;
451
+ a: number;
452
+ roundA: number;
453
+ format: ColorFormat;
454
+ initialValue?: string;
455
+ isValid?: boolean;
456
+ mix: Mixer | MixerStateful;
457
+ toValue: () => string;
458
+ }
459
+
460
+ /**
461
+ * The Color function can be used to define colors, either as a string value or as an object. All colors
462
+ * are converted to a Color object with `r, g, b`, `h, s, l` and an `a` value.
463
+ * There are also various helpers on the Color function for working with,
464
+ * modifying and detecting colors.
465
+ *
466
+ * ```jsx
467
+ * // HEX
468
+ * const blue = Color("#0099FF")
469
+ *
470
+ * // RGB
471
+ * const blue = Color("rgb(0, 153, 255)")
472
+ * const blue = Color(0, 153, 255)
473
+ * const blue = Color({r: 0, g: 153, b: 255})
474
+ * const blue = Color({r: 0, g: 153, b: 255, a: 1})
475
+ *
476
+ * // HSL
477
+ * const blue = Color("hsl(204, 100%, 50%)")
478
+ * const blue = Color({h: 204, s: 1, l: 0.5})
479
+ * const blue = Color({h: 204, s: 1, l: 0.5, a: 1})
480
+ * ```
481
+ * @public
482
+ */
483
+ export declare const Color: {
484
+ (color: IncomingColor | Color | number, r?: number, g?: number, b?: number): Color;
485
+ inspect(color: Color, initialValue?: string): string;
486
+ isColor(color: string | Color): boolean;
487
+ isColorString(colorString: string | object): boolean;
488
+ isColorObject(color: unknown): color is object & Color;
489
+ toString(color: Color): string;
490
+ toHex(color: Color, allow3Char?: boolean): string;
491
+ toHexString(color: Color, allow3Char?: boolean): string;
492
+ isP3String(color: unknown): color is string;
493
+ toRgbString(color: Color): string;
494
+ toHusl(color: Color): ColorHSLA;
495
+ toHslString(color: Color): string;
496
+ toHsv(color: Color): ColorHSVA;
497
+ toHsvString(color: Color): string;
498
+ toName(color: Color): string | false;
499
+ toHsl(color: Color): ColorHSLA;
500
+ toRgb(color: Color): ColorRGBA;
501
+ brighten(color: Color, amount?: number): Color;
502
+ lighten(color: Color, amount?: number): Color;
503
+ darken(color: Color, amount?: number): Color;
504
+ saturate(color: Color, amount?: number): Color;
505
+ desaturate(color: Color, amount?: number): Color;
506
+ grayscale(color: Color): Color;
507
+ hueRotate(color: Color, angle: number): Color;
508
+ alpha(color: Color, a?: number): Color;
509
+ transparent(color: Color): Color;
510
+ multiplyAlpha(color: Color, alphaValue?: number): Color;
511
+ interpolate(colorA: Color, colorB: Color, model?: ColorMixModelType): ((progress: number) => Color);
512
+ mix(from: Color, toColor: Color, { model }?: {
513
+ model?: ColorMixModelType | undefined;
514
+ }): (p: number) => string;
515
+ mixAsColor(colorA: Color, colorB: Color, fraction?: number, limit?: boolean, model?: ColorMixModelType): Color | null;
516
+ random(alphaValue?: number): Color;
517
+ grey(amount?: number, alphaValue?: number): Color;
518
+
519
+ rgbToHsl(r: number, g: number, b: number): ColorHSL;
520
+ isValidColorProperty(name: string, value: string): boolean;
521
+ difference(colorA: Color, colorB: Color): number;
522
+ equal(colorA: Color, colorB: Color, tolerance?: number): boolean;
523
+ luminance(color: Color): number;
524
+ contrast(a: Color, b: Color): number;
525
+ };
526
+
527
+ /** @public */
528
+ export declare interface ColorControlDescription<P = any> extends BaseControlDescription<P> {
529
+ type: ControlType.Color;
530
+ defaultValue?: string;
531
+ optional?: boolean;
532
+ }
533
+
534
+ /** @public */
535
+ export declare enum ColorFormat {
536
+ RGB = "rgb",
537
+ HSL = "hsl",
538
+ HSV = "hsv",
539
+ HEX = "hex",
540
+ NAME = "name"
541
+ }
542
+
543
+ /** @public */
544
+ export declare interface ColorHSL {
545
+ h: number;
546
+ s: number;
547
+ l: number;
548
+ }
549
+
550
+ /** @public */
551
+ export declare type ColorHSLA = ColorHSL & {
552
+ a: number;
553
+ };
554
+
555
+ /** @public */
556
+ declare interface ColorHSV {
557
+ h: number;
558
+ s: number;
559
+ v: number;
560
+ }
561
+
562
+ /** @public */
563
+ export declare type ColorHSVA = ColorHSV & {
564
+ a: number;
565
+ };
566
+
567
+ /**
568
+ * Various Color functions, such as {@link (Color:namespace).mix} and {@link
569
+ * (Color:namespace).interpolate}, take an optional color model that
570
+ * determines how two colors are mixed together.
571
+ *
572
+ * @remarks
573
+ *
574
+ * ```javascript
575
+ * const newColor = Color.mix(Color("red"), Color("blue"), {model: ColorMixModelType.HSL})
576
+ * ```
577
+ *
578
+ * @public
579
+ */
580
+ export declare enum ColorMixModelType {
581
+ /**
582
+ * Use the {@link https://en.wikipedia.org/wiki/RGB_color_model | RGB color space} without an alpha value
583
+ *
584
+ * @remarks
585
+ *
586
+ * ```javascript
587
+ * const newColor = Color.mix(Color("red"), Color("blue"), {model: ColorMixModelType.RGB})
588
+ * ```
589
+ *
590
+ * @public
591
+ */
592
+ RGB = "rgb",
593
+ /**
594
+ * Use the {@link https://en.wikipedia.org/wiki/RGB_color_model | RGB color space} color space with an alpha value
595
+ *
596
+ * @remarks
597
+ *
598
+ * ```javascript
599
+ * const newColor = Color.mix(Color("red"), Color("blue"), {model: ColorMixModelType.RGBA})
600
+ * ```
601
+ *
602
+ * @public
603
+ */
604
+ RGBA = "rgba",
605
+ /**
606
+ * Use the {@link https://en.wikipedia.org/wiki/HSL_and_HSV | HSL} color space with an alpha value
607
+ *
608
+ * @remarks
609
+ *
610
+ * ```javascript
611
+ * const newColor = Color.mix(Color("red"), Color("blue"), {model: ColorMixModelType.HSL})
612
+ * ```
613
+ *
614
+ * @public
615
+ */
616
+ HSL = "hsl",
617
+ /**
618
+ * Use the {@link https://en.wikipedia.org/wiki/HSL_and_HSV | HSL} color space with an alpha value
619
+ *
620
+ * @remarks
621
+ *
622
+ * ```javascript
623
+ * const newColor = Color.mix(Color("red"), Color("blue"), {model: ColorMixModelType.HSLA})
624
+ * ```
625
+ *
626
+ * @public
627
+ */
628
+ HSLA = "hsla",
629
+ /**
630
+ * Use the {@link http://www.hsluv.org | HSLuv } human friendly color model
631
+ *
632
+ * @remarks
633
+ *
634
+ * ```javascript
635
+ * const newColor = Color.mix(Color("red"), Color("blue"), {model: ColorMixModelType.HUSL})
636
+ * ```
637
+ *
638
+ * @public
639
+ */
640
+ HUSL = "husl"
641
+ }
642
+
643
+ /** @public */
644
+ export declare interface ColorMixOptions {
645
+ model?: ColorMixModelType;
646
+ }
647
+
648
+ declare interface ColorRGB {
649
+ r: number;
650
+ g: number;
651
+ b: number;
652
+ }
653
+
654
+ /** @public */
655
+ export declare type ColorRGBA = ColorRGB & {
656
+ a: number;
657
+ };
658
+
659
+ /**
660
+ * Describes a single font used by a component. Unlike [Font](../render/fonts/types.ts) objects
661
+ * which are fetched from the Google/Fontshare/etc APIs every time the canvas is loaded (and die
662
+ * when the canvas is unloaded), these objects get serialized into codegenerated web pages and
663
+ * components.
664
+ *
665
+ * @public
666
+ */
667
+ export declare interface ComponentFont extends Omit<ComponentFontV2, "family"> {
668
+ cssFamilyName?: string;
669
+
670
+
671
+ }
672
+
673
+ /**
674
+ * An older (pre-Feb 2024) version of ComponentFont that doesn’t include the `source` field. This
675
+ * version was introduced in the same PR that introduced ComponentFontBundle, thus upgrading from
676
+ * ComponentFontV1 to ComponentFontV2 also involves wrapping ComponentFontV1s into a
677
+ * ComponentFontBundle.
678
+ *
679
+ * While this version of ComponentFont is not used internally, it may still be passed into
680
+ * `addFonts()` by older versions of smart components.
681
+ */
682
+ export declare interface ComponentFontV1 {
683
+ url: string;
684
+ family: string;
685
+
686
+ style?: string;
687
+ weight?: string;
688
+ stretch?: string;
689
+ unicodeRange?: string;
690
+ }
691
+
692
+ /**
693
+ * An older (pre-Sep 2025) version of ComponentFont that doesn’t include the `cssFontFamily` field.
694
+ *
695
+ * While this version of ComponentFont is not used internally, it may still be passed into
696
+ * `addFonts()` by older versions of smart components.
697
+ */
698
+ declare interface ComponentFontV2 extends ComponentFontV1 {
699
+ source: FontSourceName;
700
+ variationAxes?: ReadonlyFontVariationAxes;
701
+
702
+ }
703
+
704
+ /**
705
+ * @deprecated Use {@link SlotControlDescription} instead.
706
+ * @public
707
+ */
708
+ export declare interface ComponentInstanceDescription<P = any> extends BaseControlDescription<P> {
709
+ type: ControlType.ComponentInstance;
710
+ }
711
+
712
+ /**
713
+ * @public
714
+ */
715
+ declare type ComponentWithPreload<T extends React.ComponentType<any>> = T & {
716
+ preload: () => Promise<void | T>;
717
+ getStatus: () => RouteStatus;
718
+ };
719
+
720
+ declare type ConstraintAuto = "auto";
721
+
722
+ declare interface ConstraintConfiguration {
723
+
724
+ }
725
+
726
+ /**
727
+ * Dimensions can be numbers or strings: percentages, fractions of free space (fr), or auto
728
+ * @public
729
+ */
730
+ declare type ConstraintDimension = Animatable_2<number> | number | ConstraintPercentage | ConstraintAuto | ConstraintFreespaceFraction;
731
+
732
+ declare type ConstraintFreespaceFraction = string;
733
+
734
+ /** @public */
735
+ export declare type ConstraintPercentage = string;
736
+
737
+ /**
738
+ * These properties are used to layout elements within Framer’s constraint system.
739
+ * @privateRemarks Represents model property values for layout constraints. These may be internally inconsistent. Mask and Values are generated from these.
740
+ * @public
741
+ * */
742
+ export declare interface ConstraintProperties extends Partial<WithFractionOfFreeSpace> {
743
+
744
+ /**
745
+ * Pinned position from left
746
+ * @public
747
+ */
748
+ left: Animatable_2<number> | number | null;
749
+ /**
750
+ * Pinned position from right
751
+ * @public
752
+ */
753
+ right: Animatable_2<number> | number | null;
754
+ /**
755
+ * Pinned position from top
756
+ * @public
757
+ */
758
+ top: Animatable_2<number> | number | null;
759
+ /**
760
+ * Pinned position from bottom
761
+ * @public
762
+ */
763
+ bottom: Animatable_2<number> | number | null;
764
+ /**
765
+ * Center of horizontal position (X axis)
766
+ * @public
767
+ */
768
+ centerX: ConstraintPercentage;
769
+ /**
770
+ * Center of vertical position (Y axis)
771
+ * @public
772
+ */
773
+ centerY: ConstraintPercentage;
774
+ /**
775
+ * Element width
776
+ * @public
777
+ */
778
+ width: ConstraintDimension;
779
+ /**
780
+ * Element height
781
+ * @public
782
+ */
783
+ height: ConstraintDimension;
784
+ /**
785
+ * Aspect Ratio to keep when resizing
786
+ * @public
787
+ */
788
+ aspectRatio: number | null;
789
+ /**
790
+ * //TODO What is autoSize for? Internal?
791
+ * @public
792
+ */
793
+ autoSize?: boolean;
794
+ }
795
+
796
+ declare const ConstraintsContext: React_2.Context<{
797
+ parentSize: ParentSize;
798
+ }>;
799
+
800
+ /** @public */
801
+ export declare type ControlDescription<P = any> = NumberControlDescription<P> | EnumControlDescription<P> | BooleanControlDescription<P> | StringControlDescription<P> | RichTextControlDescription<P> | ColorControlDescription<P> | FusedNumberControlDescription<P> | SegmentedEnumControlDescription<P> | ImageControlDescription<P> | ResponsiveImageControlDescription<P> | FileControlDescription<P> | ComponentInstanceDescription<P> | ArrayControlDescription<P> | EventHandlerControlDescription<P> | TransitionControlDescription<P> | BoxShadowControlDescription<P> | LinkControlDescription<P> | LinkRelValuesControlDescription<P> | DateControlDescription<P> | ObjectControlDescription<P> | FontControlDescription<P> | PageScopeControlDescription<P> | ScrollSectionRefControlDescription<P> | CustomCursorControlDescription<P> | BorderControlDescription<P> | CursorControlDescription<P> | PaddingControlDescription<P> | BorderRadiusControlDescription<P> | GapControlDescription<P> | CollectionReferenceControlDescription<P> | MultiCollectionReferenceControlDescription<P> | TrackingIdControlDescription<P> | VectorSetItemControlDescription<P> | SlotControlDescription<P>;
802
+
803
+ declare type ControlPoints = [number, number, number, number];
804
+
805
+ /**
806
+ * Used by the {@link PropertyControls} and specifies the type of user interface for receiving
807
+ * input. Each field has a distinct set of properties though they all accept `title` and `hidden`
808
+ * properties.
809
+ *
810
+ * @remarks
811
+ * ```javascript
812
+ * export function MyComponent({ title }) {
813
+ * return <Frame size={"100%"}>{title}</Frame>
814
+ * }
815
+ *
816
+ * addPropertyControls(MyComponent, {
817
+ * title: {
818
+ * type: ControlType.String,
819
+ * title: "Title",
820
+ * hidden: (props) => true
821
+ * },
822
+ * }
823
+ * ```
824
+ * @public
825
+ */
826
+ export declare enum ControlType {
827
+ /**
828
+ * A control that displays an on / off checkbox. The associated property will be `true` or `false`,
829
+ * depending on the state of the checkbox. Includes an optional `defaultValue`, which is set to `true` by default. You can also customize the labels displayed in the property panel with the `enabledTitle` and `disabledTitle` properties.
830
+ *
831
+ * @remarks
832
+ * ```javascript
833
+ * export function MyComponent(props) {
834
+ * return <Frame size={"100%"}>{props.showText ? "Hello World" : null}</Frame>
835
+ * }
836
+ *
837
+ * addPropertyControls(MyComponent, {
838
+ * showText: {
839
+ * type: ControlType.Boolean,
840
+ * title: "Show Text",
841
+ * defaultValue: true,
842
+ * enabledTitle: "On",
843
+ * disabledTitle: "Off",
844
+ * },
845
+ * })
846
+ * ```
847
+ */
848
+ Boolean = "boolean",
849
+ /**
850
+ * A control that accepts any numeric value. This will be provided directly as a property.
851
+ * Will display an input field with a range slider by default. The
852
+ * `displayStepper` option can be enabled to include a stepper control instead.
853
+ *
854
+ * @remarks
855
+ * ```javascript
856
+ * export function MyComponent(props) {
857
+ * return <Frame rotateZ={props.rotation} size={"100%"}>{rotation}</Frame>
858
+ * }
859
+ *
860
+ * addPropertyControls(MyComponent, {
861
+ * rotation: {
862
+ * type: ControlType.Number,
863
+ * defaultValue: 0,
864
+ * min: 0,
865
+ * max: 360,
866
+ * unit: "deg",
867
+ * step: 0.1,
868
+ * displayStepper: true,
869
+ * },
870
+ * })
871
+ * ```
872
+ */
873
+ Number = "number",
874
+ /**
875
+ * A control that accepts plain text values. This will be provided directly as a property.
876
+ * Will display an input field with an optional placeholder value.
877
+ * If `obscured` attribute is set to true a password input field will be used instead of a regular text input
878
+ * so that the value in the input will be visually obscured, yet still be available as plain text inside the component.
879
+ * `displayTextArea` can be enabled to display a multi-line input area instead.
880
+ *
881
+ * @remarks
882
+ * ```javascript
883
+ * export function MyComponent(props) {
884
+ * return <Frame>{props.title} — {props.body}</Frame>
885
+ * }
886
+ *
887
+ * addPropertyControls(MyComponent, {
888
+ * title: {
889
+ * type: ControlType.String,
890
+ * defaultValue: "Framer",
891
+ * placeholder: "Type something…",
892
+ * },
893
+ * body: {
894
+ * type: ControlType.String,
895
+ * defaultValue: "Lorem ipsum dolor sit amet.",
896
+ * placeholder: "Type something…",
897
+ * displayTextArea: true,
898
+ * },
899
+ * })
900
+ * ```
901
+ */
902
+ String = "string",
903
+
904
+ /**
905
+ * Deprecated, please use ControlType.Padding and ControlType.BorderRadius. You should be able
906
+ * to switch to the new control type without data loss. Be aware that these new controls only
907
+ * have a single value (e.g. `10px` or `10px 20px 30px 40px`).
908
+ *
909
+ * A control that can be used to take a single number or four distinct numeric input fields. The
910
+ * typical use case for this control is for visual properties like border, padding or margin. It
911
+ * will display an input field to accept a single value, alongside a segmented control allowing
912
+ * four distinct values to be provided.
913
+ *
914
+ * You can also set the default value for each valueKey as well as the toggleKey by setting
915
+ * their values on `defaultProps`.
916
+ *
917
+ * @deprecated Please use {@link ControlType.Padding} and ${@link ControlType.BorderRadius}. You
918
+ * should be able to switch to the new control type without data loss. Be aware that these new controls only
919
+ * have a single value (e.g. `10px` or `10px 20px 30px 40px`).
920
+ * @remarks
921
+ * ```javascript
922
+ * export function MyComponent({
923
+ * radius = 50,
924
+ * topLeft,
925
+ * topRight,
926
+ * bottomRight,
927
+ * bottomLeft,
928
+ * isMixed = false,
929
+ * }) {
930
+ * const borderRadius = isMixed
931
+ * ? `${topLeft}px ${topRight}px ${bottomRight}px ${bottomLeft}px`
932
+ * : `${radius}px`
933
+ * return <Frame background={"red"} borderRadius={borderRadius} size={"100%"}></Frame>
934
+ * }
935
+ *
936
+ * addPropertyControls(MyComponent, {
937
+ * radius: {
938
+ * type: ControlType.FusedNumber,
939
+ * title: "Radius",
940
+ * defaultValue: 50,
941
+ * toggleKey: "isMixed",
942
+ * toggleTitles: ["All", "Individual"],
943
+ * valueKeys: ["topLeft", "topRight", "bottomRight", "bottomLeft"],
944
+ * valueLabels: ["NW", "NE", "SE", "SW"],
945
+ * min: 0,
946
+ * },
947
+ * })
948
+ *
949
+ * // Set the default value for each valueKey as well as the toggleKey by setting their values on `defaultProps`:
950
+ * MyComponent.defaultProps = {
951
+ * radius: 10,
952
+ * isMixed: true,
953
+ * topLeft: 5,
954
+ * topRight: 15,
955
+ * bottomRight: 5,
956
+ * bottomLeft: 15,
957
+ * }
958
+ * ```
959
+ */
960
+ FusedNumber = "fusednumber",
961
+ /**
962
+ * A property control that represents a list of options. The list contains primitive values and each
963
+ * value has to be unique. The selected option will be provided as a property. This control is displayed
964
+ * as a dropdown menu in which a user can select one of the items.
965
+ * `displaySegmentedControl` can be enabled to display a segmented control instead.
966
+ *
967
+ * ```javascript
968
+ * export function MyComponent(props) {
969
+ * const value = props.value || "a"
970
+ * const colors = { a: "red", b: "green", c: "blue" }
971
+ * return <Frame background={colors[value]} size={"100%"}>{value}</Frame>
972
+ * }
973
+ *
974
+ * addPropertyControls(MyComponent, {
975
+ * value: {
976
+ * type: ControlType.Enum,
977
+ * defaultValue: "a",
978
+ * options: ["a", "b", "c"],
979
+ * optionTitles: ["Option A", "Option B", "Option C"],
980
+ * },
981
+ * })
982
+ * ```
983
+ */
984
+ Enum = "enum",
985
+ /**
986
+ * Deprecated, please use {@link ControlType.Enum} and enable displaySegmentedControl.
987
+ *
988
+ * @deprecated Please use {@link ControlType.Enum} and enable displaySegmentedControl.
989
+ * @remarks
990
+ * ```javascript
991
+ * export function MyComponent(props) {
992
+ * const value = props.value || "a"
993
+ * const colors = { a: "red", b: "green", c: "blue" }
994
+ * return <Frame background={colors[value]} size={"100%"}>{value}</Frame>
995
+ * }
996
+ *
997
+ * addPropertyControls(MyComponent, {
998
+ * value: {
999
+ * type: ControlType.SegmentedEnum,
1000
+ * defaultValue: "a",
1001
+ * options: ["a", "b", "c"],
1002
+ * optionTitles: ["A", "B", "C"],
1003
+ * },
1004
+ * })
1005
+ * ```
1006
+ */
1007
+ SegmentedEnum = "segmentedenum",
1008
+ /**
1009
+ * A control that represents a color value. It will be included in the component props as a string.
1010
+ * This control is displayed as a color field and will provide the selected color in either
1011
+ * HEX (`"#fff"`) or HSL (`hsla(203, 87%, 50%, 0.5)`) notation, depending on
1012
+ * whether there is an alpha channel.
1013
+ *
1014
+ * @remarks
1015
+ * ```javascript
1016
+ * function MyComponent(props) {
1017
+ * return <Frame background={props.background} size={"100%"} />
1018
+ * }
1019
+ *
1020
+ * addPropertyControls(MyComponent, {
1021
+ * background: {
1022
+ * type: ControlType.Color,
1023
+ * defaultValue: "#fff",
1024
+ * },
1025
+ * })
1026
+ * ```
1027
+ */
1028
+ Color = "color",
1029
+ /**
1030
+ * Deprecated, please use {@link ControlType.ResponsiveImage}’s `src` field instead.
1031
+ *
1032
+ * @deprecated Please use {@link ControlType.ResponsiveImage}’s `src` field instead.
1033
+ */
1034
+ Image = "image",
1035
+ /**
1036
+ * A control that allows the user to pick an image resource. Displayed as an image picker
1037
+ * with associated file picker.
1038
+ *
1039
+ * The chosen image will be provided in the component props as an object with `src` and `srcSet` properties:
1040
+ * - `src`: a string containing the URL of a full resolution image
1041
+ * - `srcSet`: an optional string with scaled down image variants. This is typically passed into [`<img srcSet>`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/srcset)
1042
+ * and helps the browser to load a smaller image when a full-size one isn’t necessary.
1043
+ * - `alt`: an optional description of the image.
1044
+ *
1045
+ * @remarks
1046
+ * ```javascript
1047
+ * function MyComponent(props) {
1048
+ * return <img src={props.image.src} srcSet={props.image.srcSet} alt={props.image.alt} />
1049
+ * }
1050
+ *
1051
+ * addPropertyControls(MyComponent, {
1052
+ * image: {
1053
+ * type: ControlType.ResponsiveImage,
1054
+ * }
1055
+ * })
1056
+ * ```
1057
+ */
1058
+ ResponsiveImage = "responsiveimage",
1059
+ /**
1060
+ * A control that allows the user to pick a file resource. It will be
1061
+ * included in the component props as an URL string.
1062
+ * Displayed as an file picker that will open a native file browser. The
1063
+ * selected file will be provided as a fully qualified URL. The
1064
+ * `allowedFileTypes` property must be provided to specify acceptable file
1065
+ * types.
1066
+ *
1067
+ * @remarks
1068
+ * ```javascript
1069
+ * export function MyComponent(props) {
1070
+ * return (
1071
+ * <Frame size={"100%"}>
1072
+ * <video
1073
+ * style={{ objectFit: "contain", props.width, props.height }}
1074
+ * src={props.filepath}
1075
+ * controls
1076
+ * />
1077
+ * </Frame>
1078
+ * )
1079
+ * }
1080
+ *
1081
+ * addPropertyControls(MyComponent, {
1082
+ * filepath: {
1083
+ * type: ControlType.File,
1084
+ * allowedFileTypes: ["mov"],
1085
+ * },
1086
+ * })
1087
+ * ```
1088
+ */
1089
+ File = "file",
1090
+ /**
1091
+ * Deprecated, please use {@link ControlType.Slot} instead. The new slot type doesn't need to be
1092
+ * nested within an array control if you want to allow for multiple slot items to be connected.
1093
+ * By default the new slot type allows for an infinite amount of items. You can limit the amount
1094
+ * of items by setting the `maxCount` property.
1095
+ *
1096
+ * @deprecated Please use {@link ControlType.Slot} instead.
1097
+ */
1098
+ ComponentInstance = "componentinstance",
1099
+ /**
1100
+ * A control that references 1 to many other components on the canvas, included in the component
1101
+ * props as a React node. This control by default allows any number of components to be linked,
1102
+ * but this can be limited by setting the `maxCount` property.
1103
+ *
1104
+ * ```javascript
1105
+ * export function MyComponent(props) {
1106
+ * return <Stack size={"100%"}>{props.children}</Stack>
1107
+ * }
1108
+ *
1109
+ * addPropertyControls(MyComponent, {
1110
+ * children: {
1111
+ * type: ControlType.Slot,
1112
+ * maxCount: 5,
1113
+ * },
1114
+ * })
1115
+ * ```
1116
+ */
1117
+ Slot = "slot",
1118
+ /**
1119
+ * A control that allows multiple values per `ControlType`, provided as an
1120
+ * array via properties. For most control types this will be displayed as an
1121
+ * additional section in the properties panel allowing as many fields to be
1122
+ * provided as required.
1123
+ *
1124
+ * For a {@link ControlType.ComponentInstance} the Frame will also gain an
1125
+ * additional outlet control on the Canvas that allows links to be created
1126
+ * between frames.
1127
+ *
1128
+ * Group properties together by using an object control.
1129
+ *
1130
+ * For multiple {@link ControlType.FusedNumber} values, you can pass in an
1131
+ * array of single values as the React default prop.
1132
+ *
1133
+ * ```javascript
1134
+ * export function MyComponent(props) {
1135
+ * const frames = props.images.map(image => <Frame image={image} width={"1fr"} height={"1fr"} />)
1136
+ * return <Stack size={"100%"}>{frames}</Stack>
1137
+ * }
1138
+ *
1139
+ * // Add a repeatable image property control
1140
+ * addPropertyControls(MyComponent, {
1141
+ * images: {
1142
+ * type: ControlType.Array,
1143
+ * control: {
1144
+ * type: ControlType.Image
1145
+ * }
1146
+ * },
1147
+ * // Allow up to five items
1148
+ * maxCount: 5,
1149
+ * })
1150
+ *
1151
+ * // Add a multi-connector to your component to connect components on the canvas
1152
+ * addPropertyControls(MyComponent, {
1153
+ * children: {
1154
+ * type: ControlType.Array,
1155
+ * control: {
1156
+ * type: ControlType.ComponentInstance
1157
+ * },
1158
+ * maxCount: 5,
1159
+ * },
1160
+ * })
1161
+ *
1162
+ * // Add a list of objects
1163
+ * addPropertyControls(MyComponent, {
1164
+ * myArray: {
1165
+ * type: ControlType.Array,
1166
+ * control: {
1167
+ * type: ControlType.Object,
1168
+ * controls: {
1169
+ * title: { type: ControlType.String, defaultValue: "Employee" },
1170
+ * avatar: { type: ControlType.Image },
1171
+ * },
1172
+ * },
1173
+ * defaultValue: [
1174
+ * { title: "Jorn" },
1175
+ * { title: "Koen" },
1176
+ * ],
1177
+ * },
1178
+ * })
1179
+ *
1180
+ * // For multiple values, you can pass in an array of single values as the React default prop.
1181
+ * MyComponent.defaultProps = {
1182
+ * paddings: [5, 10, 15],
1183
+ * }
1184
+ * ```
1185
+ *
1186
+ */
1187
+ Array = "array",
1188
+ /**
1189
+ * A control that exposes events in the prototyping panel within the Framer UI. When choosing an event from the prototyping panel, you can select from a list of actions to trigger.
1190
+ *
1191
+ * ```javascript
1192
+ * export function MyComponent(props) {
1193
+ * return <Frame onTap={props.onTap} size={"100%"} />
1194
+ * }
1195
+ *
1196
+ * addPropertyControls(MyComponent, {
1197
+ * onTap: {
1198
+ * type: ControlType.EventHandler,
1199
+ * },
1200
+ * })
1201
+ * ```
1202
+ */
1203
+ EventHandler = "eventhandler",
1204
+ /**
1205
+ * A control that allows for editing Framer Motion transition options within the Framer UI.
1206
+ *
1207
+ * ```javascript
1208
+ * export function MyComponent(props) {
1209
+ * return (
1210
+ * <Frame
1211
+ * animate={{ scale: 2 }}
1212
+ * transition={props.transition}
1213
+ * />
1214
+ * )
1215
+ * }
1216
+ *
1217
+ * addPropertyControls(MyComponent, {
1218
+ * transition: {
1219
+ * type: ControlType.Transition,
1220
+ * },
1221
+ * })
1222
+ * ```
1223
+ */
1224
+ Transition = "transition",
1225
+ /**
1226
+ * A control that allows for exposing shadows. The value will be provided as
1227
+ * a string with valid CSS box-shadow values.
1228
+ *
1229
+ * ```javascript
1230
+ * export function MyComponent(props) {
1231
+ * return <motion.div style={{boxShadow: props.shadow}} />
1232
+ * }
1233
+ *
1234
+ * addPropertyControls(MyComponent, {
1235
+ * shadow: {
1236
+ * type: ControlType.BoxShadow,
1237
+ * }
1238
+ * })
1239
+ */
1240
+ BoxShadow = "boxshadow",
1241
+ /**
1242
+ * A control that allows for exposing web links.
1243
+ *
1244
+ * ```javascript
1245
+ * export function MyComponent(props) {
1246
+ * return <a href={props.link}>My Link</a>
1247
+ * }
1248
+ *
1249
+ * addPropertyControls(MyComponent, {
1250
+ * link: {
1251
+ * type: ControlType.Link,
1252
+ * }
1253
+ * })
1254
+ * ```
1255
+ */
1256
+ Link = "link",
1257
+ /**
1258
+ * A control that allows for exposing dates. The value will be provided in toJSON() string format.
1259
+ *
1260
+ * ```javascript
1261
+ * export function MyComponent(props) {
1262
+ * const formattedDate = React.useMemo(() => {
1263
+ * return new Date(props.date).toLocaleDateString()
1264
+ * }, [props.date])
1265
+ * return <div>{formattedDate}</div>
1266
+ * }
1267
+ *
1268
+ * addPropertyControls(MyComponent, {
1269
+ * date: {
1270
+ * type: ControlType.Date,
1271
+ * displayTime: true
1272
+ * }
1273
+ * })
1274
+ * ```
1275
+ */
1276
+ Date = "date",
1277
+ /**
1278
+ * A control that allows for grouping multiple properties as an object.
1279
+ *
1280
+ * ```javascript
1281
+ * export function MyComponent(props) {
1282
+ * return <Frame opacity={props.myObject.opacity} background={props.myObject.tint} />
1283
+ * }
1284
+ *
1285
+ * addPropertyControls(MyComponent, {
1286
+ * myObject: {
1287
+ * type: ControlType.Object,
1288
+ * controls: {
1289
+ * opacity: { type: ControlType.Number },
1290
+ * tint: { type: ControlType.Color },
1291
+ * }
1292
+ * }
1293
+ * })
1294
+ * ```
1295
+ */
1296
+ Object = "object",
1297
+ /**
1298
+ * A control that allows for selecting a font to be used in the component.
1299
+ *
1300
+ * ```javascript
1301
+ * export function MyComponent(props) {
1302
+ * return <Frame style={props.customFont} />
1303
+ * }
1304
+ *
1305
+ * addPropertyControls(MyComponent, {
1306
+ * customFont: {
1307
+ * type: ControlType.Font,
1308
+ * title: "Custom Font",
1309
+ * defaultValue: {
1310
+ * textAlign: "left", // or "right", or "center", or "justify"
1311
+ * fontSize: 16, // or "16px", or "16rem"
1312
+ * letterSpacing: 0.1, // or "0.1em", or "1px"
1313
+ * lineHeight: 1.5, // or "1.5em", or "20px", or "150%"
1314
+ * },
1315
+ * defaultFontType: "sans-serif", // or "serif", or "monospace"
1316
+ * defaultFontSize: "16px", // or "16rem", or "16pt"
1317
+ * displayTextAlignment: true,
1318
+ * displayFontSize: true,
1319
+ * controls: "basic", // or "extended", to show more options
1320
+ * }
1321
+ * })
1322
+ * ```
1323
+ */
1324
+ Font = "font",
1325
+
1326
+
1327
+
1328
+ /**
1329
+ * @public
1330
+ * A control that represents a border.
1331
+ *
1332
+ * @remarks
1333
+ * ```javascript
1334
+ * function MyComponent(props) {
1335
+ * return <div style={props.border} />
1336
+ * }
1337
+ *
1338
+ * addPropertyControls(MyComponent, {
1339
+ * border: {
1340
+ * type: ControlType.Border,
1341
+ * defaultValue: {
1342
+ * borderWidth: 1,
1343
+ * borderStyle: "solid",
1344
+ * borderColor: "rgba(0, 0, 0, 0.5)",
1345
+ * },
1346
+ * }
1347
+ * })
1348
+ * ```
1349
+ */
1350
+ Border = "border",
1351
+ /**
1352
+ * @public
1353
+ * A control that allows specifying a web cursor that should be shown
1354
+ * when mousing over the element assigned.
1355
+ */
1356
+ Cursor = "cursor",
1357
+ /**
1358
+ * @public
1359
+ * A control that represents CSS padding.
1360
+ *
1361
+ * @remarks
1362
+ * ```javascript
1363
+ * function MyComponent({ padding }) {
1364
+ * return <div style={{ padding }} />
1365
+ * }
1366
+ *
1367
+ * addPropertyControls(MyComponent, {
1368
+ * padding: {
1369
+ * type: ControlType.Padding,
1370
+ * defaultValue: "8px",
1371
+ * }
1372
+ * })
1373
+ */
1374
+ Padding = "padding",
1375
+ /**
1376
+ * @public
1377
+ * A control that represents CSS border radius.
1378
+ *
1379
+ * @remarks
1380
+ * ```javascript
1381
+ * function MyComponent({ borderRadius }) {
1382
+ * return <div style={{ borderRadius }} />
1383
+ * }
1384
+ *
1385
+ * addPropertyControls(MyComponent, {
1386
+ * borderRadius: {
1387
+ * type: ControlType.BorderRadius,
1388
+ * defaultValue: "16px",
1389
+ * title: "Radius",
1390
+ * }
1391
+ * })
1392
+ */
1393
+ BorderRadius = "borderradius",
1394
+ /**
1395
+ * A control that represents CSS gap.
1396
+ *
1397
+ * @remarks
1398
+ * ```javascript
1399
+ * function MyComponent({ gap }) {
1400
+ * return <div style={{ gap, display: "grid" }} />
1401
+ * }
1402
+ *
1403
+ * addPropertyControls(MyComponent, {
1404
+ * gap: {
1405
+ * type: ControlType.Gap,
1406
+ * defaultValue: "8px",
1407
+ * }
1408
+ * })
1409
+ */
1410
+ Gap = "gap",
1411
+
1412
+
1413
+ /**
1414
+ * @public
1415
+ * A control that represents an id of a tracking event:
1416
+ * - Lowercase letters (a-z) and numbers (0-9) only
1417
+ * - Hyphens (-) as separators (no leading/trailing or consecutive hyphens)
1418
+ * - Valid: "button-click", "form-submit", "video-play", "nav-item-1"
1419
+ * - Invalid: "Button-Click", "form--submit", "-button-click", "button_utils"
1420
+ *
1421
+ */
1422
+ TrackingId = "trackingid",
1423
+
1424
+
1425
+ }
1426
+
1427
+ /**
1428
+ * @privateRemarks do no use separately from FrameProps
1429
+ * @public
1430
+ * */
1431
+ export declare interface CSSTransformProperties extends MotionTransform {
1432
+ /**
1433
+ * Set the CSS transform `translateX` property.
1434
+ * @remarks
1435
+ * ```jsx
1436
+ * <Frame x={100} />
1437
+ * ```
1438
+ * @public
1439
+ */
1440
+ x: number | string | MotionValue<number | string>;
1441
+ /**
1442
+ * Set the CSS transform `translateY` property.
1443
+ * @remarks
1444
+ * ```jsx
1445
+ * <Frame y={100} />
1446
+ * ```
1447
+ * @public
1448
+ */
1449
+ y: number | string | MotionValue<number | string>;
1450
+ /**
1451
+ * Set the CSS transform `translateZ` property.
1452
+ * @remarks
1453
+ * ```jsx
1454
+ * <Frame z={100} />
1455
+ * ```
1456
+ * @public
1457
+ */
1458
+ z: number | string | MotionValue<number | string>;
1459
+ /**
1460
+ * Set the CSS transform `rotate` property in degrees.
1461
+ * @remarks
1462
+ * ```jsx
1463
+ * <Frame rotate={45}/>
1464
+ * ```
1465
+ * @public
1466
+ */
1467
+ rotate: number | string | MotionValue<number | string>;
1468
+ /**
1469
+ * Set the CSS transform `rotateX` property in degrees.
1470
+ * @remarks
1471
+ * ```jsx
1472
+ * <Frame rotateX={45}/>
1473
+ * ```
1474
+ * @public
1475
+ */
1476
+ rotateX: number | string | MotionValue<number | string>;
1477
+ /**
1478
+ * Set the CSS transform `rotateY` property in degrees.
1479
+ * @remarks
1480
+ * ```jsx
1481
+ * <Frame rotateY={45}/>
1482
+ * ```
1483
+ * @public
1484
+ */
1485
+ rotateY: number | string | MotionValue<number | string>;
1486
+ /**
1487
+ * Set the CSS transform `rotateZ` property in degrees.
1488
+ * @remarks
1489
+ * ```jsx
1490
+ * <Frame rotateZ={45}/>
1491
+ * ```
1492
+ * @public
1493
+ */
1494
+ rotateZ: number | string | MotionValue<number | string>;
1495
+ /**
1496
+ * Set the CSS transform `scale` property.
1497
+ * @remarks
1498
+ * ```jsx
1499
+ * <Frame scale={1.5} />
1500
+ * ```
1501
+ * @public
1502
+ */
1503
+ scale: number | string | MotionValue<number | string>;
1504
+ /**
1505
+ * Set the CSS transform `scaleX` property.
1506
+ * @remarks
1507
+ * ```jsx
1508
+ * <Frame scaleX={1.5} />
1509
+ * ```
1510
+ * @public
1511
+ */
1512
+ scaleX: number | string | MotionValue<number | string>;
1513
+ /**
1514
+ * Set the CSS transform `scaleY` property.
1515
+ * @remarks
1516
+ * ```jsx
1517
+ * <Frame scaleY={2} />
1518
+ * ```
1519
+ * @public
1520
+ */
1521
+ scaleY: number | string | MotionValue<number | string>;
1522
+ /**
1523
+ * Set the CSS transform `skew` property in degrees.
1524
+ * @remarks
1525
+ * ```jsx
1526
+ * <Frame skew={15} />
1527
+ * ```
1528
+ * @public
1529
+ */
1530
+ skew: number | string | MotionValue<number | string>;
1531
+ /**
1532
+ * Set the CSS transform `skewX` property in degrees.
1533
+ * @remarks
1534
+ * ```jsx
1535
+ * <Frame skewX={15} />
1536
+ * ```
1537
+ * @public
1538
+ */
1539
+ skewX: number | string | MotionValue<number | string>;
1540
+ /**
1541
+ * Set the CSS transform `skewY` property in degrees.
1542
+ * @remarks
1543
+ * ```jsx
1544
+ * <Frame skewY={15} />
1545
+ * ```
1546
+ * @public
1547
+ */
1548
+ skewY: number | string | MotionValue<number | string>;
1549
+ /**
1550
+ * Set the CSS transform `originX` property.
1551
+ * @remarks
1552
+ * ```jsx
1553
+ * <Frame originX={0.5} />
1554
+ * ```
1555
+ * @public
1556
+ */
1557
+ originX: number | string | MotionValue<number | string>;
1558
+ /**
1559
+ * Set the CSS transform `originY` property.
1560
+ * @remarks
1561
+ * ```jsx
1562
+ * <Frame originY={0.5} />
1563
+ * ```
1564
+ * @public
1565
+ */
1566
+ originY: number | string | MotionValue<number | string>;
1567
+ /**
1568
+ * Set the CSS transform `originZ` property. Defaults to `px` units.
1569
+ * @remarks
1570
+ * ```jsx
1571
+ * <Frame originZ={100} />
1572
+ * ```
1573
+ * @public
1574
+ */
1575
+ originZ: number | string | MotionValue<number | string>;
1576
+ /**
1577
+ * Set the CSS perspective property.
1578
+ * @remarks
1579
+ * ```jsx
1580
+ * <Frame perspective={500} />
1581
+ * ```
1582
+ * @public
1583
+ */
1584
+ perspective: number | string | MotionValue<number | string>;
1585
+ }
1586
+
1587
+ /**
1588
+ * @public
1589
+ */
1590
+ declare interface CursorControlDescription<P = any> extends BaseControlDescription<P> {
1591
+ type: ControlType.Cursor;
1592
+ defaultValue?: string;
1593
+ }
1594
+
1595
+ declare type Curve = ControlPoints | Bezier;
1596
+
1597
+ declare interface CustomConstraintProperties {
1598
+ /**
1599
+ * Aspect Ratio to keep when resizing
1600
+ * @public
1601
+ */
1602
+ aspectRatio?: number | null;
1603
+ /**
1604
+ * Used for Text and Graphics containers
1605
+ * @public
1606
+ */
1607
+ autoSize?: boolean;
1608
+ /**
1609
+ * Use Vekter constraint layout system, disable DOM layout
1610
+ * @public
1611
+ */
1612
+ enabled: boolean;
1613
+ intrinsicWidth?: number;
1614
+ intrinsicHeight?: number;
1615
+ }
1616
+
1617
+ declare interface CustomCursorControlDescription<P = any> extends BaseControlDescription<P> {
1618
+ type: ControlType.CustomCursor;
1619
+ }
1620
+
1621
+ /**
1622
+ * Combine values and create a className string. Falsy values are not included.
1623
+ *
1624
+ * This helper is commonly exported by css-in-js libraries like Linaria, or
1625
+ * Emotion as cx. This is the implementation from Linaria:
1626
+ * https://github.com/callstack/linaria/blob/master/packages/core/src/cx.ts.
1627
+ *
1628
+ * We need it here so we can use it in es-modules.
1629
+ *
1630
+ * @public
1631
+ */
1632
+ export declare function cx(...classNames: ClassName[]): string;
1633
+
1634
+ /**
1635
+ * Flag setVariantState as cycling variants.
1636
+ * @public
1637
+ */
1638
+ export declare const CycleVariantState: unique symbol;
1639
+
1640
+ declare interface DampingDurationSpringOptions {
1641
+ dampingRatio: number;
1642
+ duration: number;
1643
+ velocity: number;
1644
+ mass: number;
1645
+ }
1646
+
1647
+ export declare const Data: {
1648
+ <T extends object = object>(initial?: Partial<T> | object): T;
1649
+
1650
+ addData(_data: object): void;
1651
+ reset(): void;
1652
+ addObserver<T extends object>(target: T, observer: Observer<T>): Cancel;
1653
+ };
1654
+
1655
+ /** @public */
1656
+ export declare interface DateControlDescription<P = any> extends BaseControlDescription<P> {
1657
+ type: ControlType.Date;
1658
+ displayTime?: boolean;
1659
+ defaultValue?: string;
1660
+ }
1661
+
1662
+ /**
1663
+ * @deprecated Use {@link FrameProps.transition} instead
1664
+ */
1665
+ declare interface DeprecatedAnimationOptions<Value> extends InterpolationOptions {
1666
+
1667
+
1668
+ }
1669
+
1670
+ /**
1671
+ * @public
1672
+ * @deprecated
1673
+ */
1674
+ export declare type DeprecatedAnimationTarget<Value> = Animatable_2<Value> | AnimatableObject<Value> | MotionValue<Value>;
1675
+
1676
+ /** @public */
1677
+ export declare interface DeprecatedCoreFrameProps extends DeprecatedFrameProperties, LayerProps {
1678
+ }
1679
+
1680
+ /**
1681
+ * @public
1682
+ */
1683
+ export declare const DeprecatedFrame: typeof DeprecatedFrameType;
1684
+
1685
+ /** @public */
1686
+ export declare interface DeprecatedFrameProperties extends ConstraintProperties, DeprecatedTransformProperties, DeprecatedVisualProperties {
1687
+ /**
1688
+ * Determines whether the Frame is current visible. Set to `true` by default.
1689
+ * @remarks
1690
+ * ```jsx
1691
+ * function App() {
1692
+ * return <Frame visible={false} />
1693
+ * }
1694
+ * ```
1695
+ */
1696
+ visible: boolean;
1697
+ /**
1698
+ * An optional name for the Frame.
1699
+ * @remarks
1700
+ * ```jsx
1701
+ * function App() {
1702
+ * return <Frame name="MyFrame" />
1703
+ * }
1704
+ * ```
1705
+ */
1706
+ name?: string;
1707
+ /**
1708
+ * Set to `true` to enable backface-visibility.
1709
+ * @remarks
1710
+ * ```jsx
1711
+ * function App() {
1712
+ * return <Frame backfaceVisibility={true} />
1713
+ * }
1714
+ * ```
1715
+ */
1716
+ backfaceVisible?: boolean | Animatable_2<boolean>;
1717
+ /**
1718
+ * Set the perspective on the z-plane.
1719
+ * @remarks
1720
+ * ```jsx
1721
+ * function App() {
1722
+ * return <Frame perspective={100px} />
1723
+ * }
1724
+ * ```
1725
+ */
1726
+ perspective?: number | Animatable_2<number>;
1727
+ /**
1728
+ * Set to `true` to preserve 3D.
1729
+ * @remarks
1730
+ * ```jsx
1731
+ * function App() {
1732
+ * return <Frame preserve3d={true} />
1733
+ * }
1734
+ * ```
1735
+ */
1736
+ preserve3d?: boolean | Animatable_2<boolean>;
1737
+ /**
1738
+ * A border width for the frame. Can be either a single number for all sides or
1739
+ * an object describing each side. Set to `0` by default.
1740
+ * @remarks
1741
+ * ```jsx
1742
+ * function App() {
1743
+ * return <Frame borderWidth={{top: 10, bottom: 10}} />
1744
+ * }
1745
+ * ```
1746
+ */
1747
+ borderWidth: number | Partial<{
1748
+ top: number;
1749
+ bottom: number;
1750
+ left: number;
1751
+ right: number;
1752
+ }>;
1753
+ /**
1754
+ * A border color for the Frame. Set to `"#222"` by default.
1755
+ * @remarks
1756
+ * ```jsx
1757
+ * function App() {
1758
+ * return <Frame borderColor="red" />
1759
+ * }
1760
+ * ```
1761
+ */
1762
+ borderColor: string;
1763
+ /**
1764
+ * A border style for the Frame. One of `"solid", "dashed", "dotted"` or `"double"`. Set to `"solid"` by default.
1765
+ * @remarks
1766
+ * ```jsx
1767
+ * function App() {
1768
+ * return <Frame borderStyle="dotted" />
1769
+ * }
1770
+ * ```
1771
+ */
1772
+ borderStyle: BorderStyle;
1773
+ /**
1774
+ * Additional CSSProperties to apply to the frame. Usage is exactly the same as with the
1775
+ * standard React style prop.
1776
+ * @remarks
1777
+ * ```jsx
1778
+ * function App() {
1779
+ * return <Frame style={{color: "red", backgroundColor: "blue"}} />
1780
+ * }
1781
+ * ```
1782
+ */
1783
+ style?: React_2.CSSProperties;
1784
+ /**
1785
+ * An optional className for the Frame.
1786
+ * @remarks
1787
+ * ```jsx
1788
+ * function App() {
1789
+ * return <Frame className="my-frame" />
1790
+ * }
1791
+ * ```
1792
+ */
1793
+ className?: string;
1794
+
1795
+ }
1796
+
1797
+ declare interface DeprecatedFrameState {
1798
+ size: AnimatableObject<Size> | Size | null;
1799
+ }
1800
+
1801
+ declare class DeprecatedFrameType extends Layer<DeprecatedCoreFrameProps, DeprecatedFrameState> {
1802
+ context: React_2.ContextType<typeof ConstraintsContext>;
1803
+ static supportsConstraints: boolean;
1804
+ static defaultFrameSpecificProps: DeprecatedFrameProperties;
1805
+ static readonly defaultProps: DeprecatedCoreFrameProps;
1806
+ static rect(props: Partial<ConstraintProperties>): Rect;
1807
+ get rect(): Rect;
1808
+ element: HTMLDivElement | null;
1809
+ imageDidChange: boolean;
1810
+ state: DeprecatedFrameState;
1811
+ static getDerivedStateFromProps(nextProps: Partial<DeprecatedCoreFrameProps>, prevState: DeprecatedFrameState): DeprecatedFrameState | null;
1812
+ static updatedSize(props: Partial<DeprecatedCoreFrameProps>, state: DeprecatedFrameState): AnimatableObject<Size> | Size;
1813
+ getStyle(): React_2.CSSProperties;
1814
+ propsObserver?: AnimatableObject<DeprecatedCoreFrameProps>;
1815
+ propsObserverCancel?: Cancel;
1816
+ sizeObserver?: AnimatableObject<Size>;
1817
+ sizeObserverCancel?: Cancel;
1818
+ layoutChildren(): (// biome-ignore lint/suspicious/noExplicitAny: deprecated code
1819
+ React_2.ReactElement<any, string | React_2.JSXElementConstructor<any>> | React_2.FunctionComponentElement<{
1820
+ _forwardedOverrides: {
1821
+ [key: string]: any;
1822
+ };
1823
+ }>)[] | null | undefined;
1824
+ }
1825
+
1826
+ /** @public */
1827
+ export declare const DeprecatedFrameWithEvents: React_2.ComponentClass<Partial<DeprecatedFrameWithEventsProps>>;
1828
+
1829
+ /** @public */
1830
+ export declare type DeprecatedFrameWithEventsProps = DeprecatedCoreFrameProps & WithEventsProperties;
1831
+
1832
+ declare interface DeprecatedTransformProperties {
1833
+ z: Animatable_2<number> | number;
1834
+ rotation: Animatable_2<number> | number;
1835
+ rotationX: Animatable_2<number> | number;
1836
+ rotationY: Animatable_2<number> | number;
1837
+ rotationZ: Animatable_2<number> | number;
1838
+ scale: Animatable_2<number> | number;
1839
+ scaleX: Animatable_2<number> | number;
1840
+ scaleY: Animatable_2<number> | number;
1841
+ scaleZ: Animatable_2<number> | number;
1842
+ skew: Animatable_2<number> | number;
1843
+ skewX: Animatable_2<number> | number;
1844
+ skewY: Animatable_2<number> | number;
1845
+ originX: Animatable_2<number> | number;
1846
+ originY: Animatable_2<number> | number;
1847
+ originZ: Animatable_2<number> | number;
1848
+ }
1849
+
1850
+ /** @public */
1851
+ export declare type DeprecatedVisualProperties = Partial<BackgroundProperties & RadiusProperties & FilterProperties & BackgroundFilterProperties & BlendingProperties & OverflowProperties & BoxShadowProperties_2 & WithOpacity & TextColorProperties>;
1852
+
1853
+ /** @public */
1854
+ export declare interface DOMLayoutProps {
1855
+
1856
+
1857
+
1858
+ }
1859
+
1860
+ declare type DragEventHandler<Draggable> = (event: FramerEvent, draggable: Draggable) => void;
1861
+
1862
+ declare interface DragEvents<Draggable> {
1863
+ onMove: (point: Point, draggable: Draggable) => void;
1864
+
1865
+ onDragAnimationStart: (animation: {
1866
+ x: AnimationInterface;
1867
+ y: AnimationInterface;
1868
+ }, draggable: Draggable) => void;
1869
+ onDragAnimationEnd: (animation: {
1870
+ x: AnimationInterface;
1871
+ y: AnimationInterface;
1872
+ }, draggable: Draggable) => void;
1873
+ onDragSessionStart: DragEventHandler<Draggable>;
1874
+ onDragSessionMove: DragEventHandler<Draggable>;
1875
+ onDragSessionEnd: DragEventHandler<Draggable>;
1876
+ onDragStart: DragEventHandler<Draggable>;
1877
+ onDragWillMove: DragEventHandler<Draggable>;
1878
+ onDragDidMove: DragEventHandler<Draggable>;
1879
+ onDragEnd: DragEventHandler<Draggable>;
1880
+ }
1881
+
1882
+ /** @public */
1883
+ export declare const Draggable: React_2.ComponentClass<Partial<DeprecatedFrameWithEventsProps> & Partial<DraggableProps<typeof DeprecatedFrameWithEvents>>>;
1884
+
1885
+ declare interface DraggableProps<Draggable> extends DraggableSpecificProps<Draggable> {
1886
+ enabled: boolean;
1887
+ }
1888
+
1889
+ declare interface DraggableSpecificProps<Draggable> extends Partial<DragEvents<Draggable>> {
1890
+ momentum: boolean;
1891
+ momentumOptions: {
1892
+ friction: number;
1893
+ tolerance: number;
1894
+ };
1895
+ momentumVelocityMultiplier: number;
1896
+ speedX: number;
1897
+ speedY: number;
1898
+ bounce: boolean;
1899
+ bounceOptions: {
1900
+ friction: number;
1901
+ tension: number;
1902
+ tolerance: number;
1903
+ };
1904
+ directionLock: boolean;
1905
+ directionLockThreshold: {
1906
+ x: number;
1907
+ y: number;
1908
+ };
1909
+ overdrag: boolean;
1910
+ overdragScale: number;
1911
+ pixelAlign: boolean;
1912
+ velocityTimeout: number;
1913
+ velocityScale: number;
1914
+ horizontal: boolean;
1915
+ vertical: boolean;
1916
+ constraints: Partial<Rect>;
1917
+ mouseWheel: boolean;
1918
+ }
1919
+
1920
+ declare type EaseOptions = Omit<BezierOptions, "curve">;
1921
+
1922
+ declare interface EditorBarProps {
1923
+ framerSiteId: string;
1924
+ features?: Record<string, boolean>;
1925
+ }
1926
+
1927
+ declare type EffectOrMotionProp<T> = (Partial<Record<keyof FXValues, number>> & {
1928
+ transition: ValueAnimationTransition<number>;
1929
+ }) | T;
1930
+
1931
+ declare interface EffectScrollTarget<T> {
1932
+ ref?: React_2.RefObject<HTMLElement>;
1933
+ offset?: number;
1934
+ direction?: ScrollDirection;
1935
+ target: T;
1936
+ }
1937
+
1938
+ declare type EffectStyleScrollTarget = EffectScrollTarget<StyleEffect>;
1939
+
1940
+ declare type EffectStyleScrollTarget_2 = EffectScrollTarget<Record<keyof FXValues, number>>;
1941
+
1942
+ declare const effectValuesKeys: readonly ["opacity", "x", "y", "scale", "rotate", "rotateX", "rotateY", "skewX", "skewY", "transformPerspective"];
1943
+
1944
+ declare type EffectVariantScrollTarget = EffectScrollTarget<string>;
1945
+
1946
+ declare type ElementId = string;
1947
+
1948
+ /**
1949
+ * @public
1950
+ */
1951
+ declare type Elements = Record<ElementId, string>;
1952
+
1953
+ /**
1954
+ * @public
1955
+ */
1956
+ export declare type EmulatedScrollProps = {
1957
+ native?: false | undefined;
1958
+ } & Omit<Partial<FrameProps>, "onScroll" | "size" | "overflow"> & ScrollEvents & ScrollConfig;
1959
+
1960
+ declare interface EnabledGestures {
1961
+ hover: boolean;
1962
+ pressed: boolean;
1963
+ loading: boolean;
1964
+ error: boolean;
1965
+ }
1966
+
1967
+ declare type EnabledVariantGestures = Record<string, EnabledGestures>;
1968
+
1969
+ /** @public */
1970
+ export declare interface EnumControlDescription<P = any> extends BaseControlDescription<P> {
1971
+ type: ControlType.Enum;
1972
+ defaultValue?: string | boolean | number | undefined | null;
1973
+ options: (string | boolean | number | undefined | null)[];
1974
+ optionTitles?: string[];
1975
+ displaySegmentedControl?: boolean;
1976
+ /** Used when displaySegmentedControl is enabled. If not given defaults to horizontal */
1977
+ segmentedControlDirection?: "horizontal" | "vertical";
1978
+
1979
+ }
1980
+
1981
+ declare type EventDispatcher = (type: string, event: FramerEvent, target: EventTarget) => void;
1982
+
1983
+ declare type EventHandler = (event: FramerEvent) => void;
1984
+
1985
+ /** @public */
1986
+ export declare interface EventHandlerControlDescription<P = any> extends BaseControlDescription<P> {
1987
+ type: ControlType.EventHandler;
1988
+ }
1989
+
1990
+ /**
1991
+ * @public
1992
+ */
1993
+ export declare type FadeTransitionOptions = NavigationTransitionAnimation;
1994
+
1995
+ /** @public */
1996
+ export declare interface FileControlDescription<P = any> extends BaseControlDescription<P> {
1997
+ type: ControlType.File;
1998
+ allowedFileTypes: AllowedFileTypes;
1999
+ }
2000
+
2001
+ /** @public */
2002
+ export declare interface FilterNumberProperties {
2003
+ brightness: number;
2004
+ contrast: number;
2005
+ grayscale: number;
2006
+ hueRotate: number;
2007
+ invert: number;
2008
+ saturate: number;
2009
+ sepia: number;
2010
+ blur: number;
2011
+ }
2012
+
2013
+ /** @public */
2014
+ export declare interface FilterProperties extends FilterNumberProperties {
2015
+ dropShadows: readonly Shadow[];
2016
+ }
2017
+
2018
+ /**
2019
+ * @public
2020
+ */
2021
+ declare type FinishFunction = (transaction: TransactionId) => void;
2022
+
2023
+ /**
2024
+ * @public
2025
+ */
2026
+ export declare interface FlipTransitionOptions extends NavigationTransitionAnimation, NavigationTransitionAppearsFrom {
2027
+ }
2028
+
2029
+ export declare function Floating({ alignment, placement, safeArea, offsetX, offsetY, anchorRef, className, children, portalSelector, zIndex, collisionDetection, collisionDetectionPadding, onDismiss, ...rest }: React_2.PropsWithChildren<FloatingProps>): React_2.ReactPortal;
2030
+
2031
+ declare interface FloatingProps extends MotionProps {
2032
+ alignment: Alignment;
2033
+ placement: Placement;
2034
+ offsetX: number;
2035
+ offsetY: number;
2036
+ anchorRef: React_2.MutableRefObject<HTMLElement | null>;
2037
+ safeArea: boolean;
2038
+ className: string;
2039
+ /** @deprecated */
2040
+ portalSelector?: string;
2041
+ zIndex: number | undefined;
2042
+ collisionDetection?: boolean;
2043
+ collisionDetectionPadding?: number;
2044
+ onDismiss: () => void | (() => Promise<void>);
2045
+ }
2046
+
2047
+ declare interface FontControlDefaultValueBase {
2048
+ textAlign?: "left" | "right" | "center" | "justify";
2049
+ fontSize?: string | number;
2050
+ letterSpacing?: string | number;
2051
+ lineHeight?: string | number;
2052
+ }
2053
+
2054
+ declare interface FontControlDefaultValueWithVariant extends FontControlDefaultValueBase {
2055
+ variant?: FramerFontVariant;
2056
+ }
2057
+
2058
+ declare type FontControlDescription<P = any> = FontControlDescriptionSansSerif<P> | FontControlDescriptionMonospace<P> | FontControlDescriptionSerif<P>;
2059
+
2060
+ declare interface FontControlDescriptionBase<P = any> extends BaseControlDescription<P> {
2061
+ type: ControlType.Font;
2062
+ controls?: "basic" | "extended";
2063
+ displayTextAlignment?: boolean;
2064
+ displayFontSize?: boolean;
2065
+ defaultValue?: FontControlDefaultValueBase;
2066
+ }
2067
+
2068
+ declare interface FontControlDescriptionMonospace<P = any> extends FontControlDescriptionBase<P> {
2069
+ defaultFontType?: "monospace";
2070
+ defaultValue?: FontControlDefaultValueBase;
2071
+ }
2072
+
2073
+ declare interface FontControlDescriptionSansSerif<P = any> extends FontControlDescriptionBase<P> {
2074
+ defaultFontType?: "sans-serif";
2075
+ defaultValue?: FontControlDefaultValueWithVariant;
2076
+ }
2077
+
2078
+ declare interface FontControlDescriptionSerif<P = any> extends FontControlDescriptionBase<P> {
2079
+ defaultFontType?: "serif";
2080
+ defaultValue?: FontControlDefaultValueBase;
2081
+ }
2082
+
2083
+ /** @public */
2084
+ declare type FontSourceName = "local" | "google" | "framer" | "fontshare" | "custom" | "builtIn";
2085
+
2086
+ /** @public */
2087
+ export declare const Frame: React_2.ForwardRefExoticComponent<Omit<Partial<FrameProps>, "ref"> & React_2.RefAttributes<HTMLDivElement>>;
2088
+
2089
+ /**
2090
+ * @privateRemarks do no use separately from FrameProps
2091
+ * @public
2092
+ * */
2093
+ export declare interface FrameLayoutProperties extends PositionStickyProperties, PositionFixedProperties, PositionAbsoluteProperties {
2094
+ /**
2095
+ * Distance from the top in pixels. Set to `0` by default.
2096
+ * @remarks
2097
+ * ```jsx
2098
+ * <Frame top={100} />
2099
+ * ```
2100
+ * @public
2101
+ */
2102
+ top: number | string | MotionValue<number | string>;
2103
+ /**
2104
+ * Distance from the right in pixels. Set to `0` by default.
2105
+ * @remarks
2106
+ * ```jsx
2107
+ * <Frame right={100} />
2108
+ * ```
2109
+ * @public
2110
+ */
2111
+ right: number | string | MotionValue<number | string>;
2112
+ /**
2113
+ * Distance from the bottom in pixels. Set to `0` by default.
2114
+ * @remarks
2115
+ * ```jsx
2116
+ * <Frame bottom={100} />
2117
+ * ```
2118
+ * @public
2119
+ */
2120
+ bottom: number | string | MotionValue<number | string>;
2121
+ /**
2122
+ * Distance from the left in pixels. Set to `0` by default.
2123
+ * @remarks
2124
+ * ```jsx
2125
+ * <Frame left={100} />
2126
+ * ```
2127
+ * @public
2128
+ */
2129
+ left: number | string | MotionValue<number | string>;
2130
+ /**
2131
+ * Set the CSS `width` property. Set to `200` by default. Accepts all CSS value types (including pixels, percentages, keywords and more).
2132
+ * @remarks
2133
+ * ```jsx
2134
+ * // Pixels
2135
+ * <Frame width={100} />
2136
+ *
2137
+ * // Percentages
2138
+ * <Frame width={"100%"} />
2139
+ * ```
2140
+ * @public
2141
+ */
2142
+ width: number | string | MotionValue<number | string>;
2143
+ /**
2144
+ * Set the CSS `height` property. Set to `200` by default. Accepts all CSS value types (including pixels, percentages, keywords and more).
2145
+ * @remarks
2146
+ * ```jsx
2147
+ * // Pixels
2148
+ * <Frame height={100} />
2149
+ *
2150
+ * // Percentages
2151
+ * <Frame height={"100%"} />
2152
+ *
2153
+ * ```
2154
+ * @public
2155
+ */
2156
+ height: number | string | MotionValue<number | string>;
2157
+ /**
2158
+ * Set the CSS `position` property. Set to `"absolute"` by default.
2159
+ * @remarks
2160
+ * ```jsx
2161
+ * <Frame position={"relative"} />
2162
+ * ```
2163
+ * @public
2164
+ */
2165
+ position: React_2.CSSProperties["position"];
2166
+ /**
2167
+ * Shortcut for centering Frames.
2168
+ * @remarks
2169
+ * ```jsx
2170
+ * // Center
2171
+ * <Frame center />
2172
+ *
2173
+ * // Center horizontally
2174
+ * <Frame center="x" />
2175
+ *
2176
+ * // Center vertically
2177
+ * <Frame center="y" />
2178
+ * ```
2179
+ * @public
2180
+ */
2181
+ center: boolean | "x" | "y";
2182
+ /**
2183
+ * Shortcut for setting the width and height simultaneously.
2184
+ * @remarks
2185
+ * ```jsx
2186
+ * <Frame size={100} />
2187
+ * ```
2188
+ * @public
2189
+ */
2190
+ size: number | string;
2191
+ /**
2192
+ * Set the CSS `min-width` property. Unset by default.
2193
+ * @remarks
2194
+ * ```jsx
2195
+ * <Frame minWidth={200} />
2196
+ * ```
2197
+ * @public
2198
+ */
2199
+ minWidth: number | string | MotionValue<number | string>;
2200
+ /**
2201
+ * Set the CSS `min-height` property. Unset by default.
2202
+ * @remarks
2203
+ * ```jsx
2204
+ * <Frame minHeight={200} />
2205
+ * ```
2206
+ * @public
2207
+ */
2208
+ minHeight: number | string | MotionValue<number | string>;
2209
+ /**
2210
+ * Set the CSS `min-width` property. Unset by default.
2211
+ * @remarks
2212
+ * ```jsx
2213
+ * <Frame minWidth={200} />
2214
+ * ```
2215
+ * @public
2216
+ */
2217
+ maxWidth: number | string | MotionValue<number | string>;
2218
+ /**
2219
+ * Set the CSS `max-height` property. Unset by default.
2220
+ * @remarks
2221
+ * ```jsx
2222
+ * <Frame maxHeight={200} />
2223
+ * ```
2224
+ * @public
2225
+ */
2226
+ maxHeight: number | string | MotionValue<number | string>;
2227
+
2228
+
2229
+ }
2230
+
2231
+ /** @public */
2232
+ export declare interface FrameProps extends ImageAltProps, BackgroundProperties, VisualProperties, Omit<MotionDivProps, "color" | "children">, CSSTransformProperties, LayerProps, FrameLayoutProperties, ConstraintConfiguration, TickerFrameProps, BaseFrameProps {
2233
+ componentType?: string;
2234
+ as?: keyof HTMLElementTagNameMap | "svg";
2235
+
2236
+
2237
+
2238
+
2239
+ }
2240
+
2241
+ /**
2242
+ * The animation object returned by the {@link (animate:function)} functions
2243
+ * @remarks
2244
+ * Can be used to control a animation or wait for it to finish. You never create a FramerAnimation yourself, but store the return type from the animate function.
2245
+ * ```jsx
2246
+ * const animation = animate.ease(value, 100)
2247
+ * await animation.finished()
2248
+ * const animation = animate.spring(value, 200)
2249
+ * animation.cancel()
2250
+ * ```
2251
+ * @privateRemarks
2252
+ * This could be called just Animation, but it's type would clash with
2253
+ * javascript's native Animation: https://developer.mozilla.org/en-US/docs/Web/API/Animation
2254
+ * So if you forget the import, you would get weird errors.
2255
+ *
2256
+ * Also, this class follows the native Animation as much as possible.
2257
+ * @public
2258
+ * @deprecated Use the {@link useAnimation} hook instead
2259
+ */
2260
+ export declare class FramerAnimation<Value, AnimatorOptions> {
2261
+
2262
+
2263
+
2264
+
2265
+
2266
+
2267
+
2268
+
2269
+
2270
+
2271
+
2272
+
2273
+ /**
2274
+ * Wait for the animation to be ready to play.
2275
+ * @remarks
2276
+ * ```jsx
2277
+ * const animation = animate.ease(value, 100)
2278
+ * animation.ready().then(() => {
2279
+ * // Animation is ready
2280
+ * })
2281
+
2282
+ * // async/await syntax
2283
+ * const animation = animate.ease(value, 100)
2284
+ * await animation.ready()
2285
+ * // Animation is ready
2286
+ * ```
2287
+ * @returns Promise that is resolved when the animation is ready to play
2288
+ * @public
2289
+ */
2290
+ get ready(): Promise<void>;
2291
+
2292
+
2293
+
2294
+
2295
+ /**
2296
+ * Wait for the animation to be finished.
2297
+ * @remarks
2298
+ * ```jsx
2299
+ * // async/await syntax
2300
+ * const animation = animate.ease(value, 100)
2301
+ * await animation.finished()
2302
+ * // Animation is finished
2303
+ *
2304
+ *
2305
+ * const animation = animate.ease(value, 100)
2306
+ * animation.ready().then(() => {
2307
+ * // Animation is finished
2308
+ * })
2309
+ * ```
2310
+ * @returns Promise that is resolved when the animation is ready to play
2311
+ * @public
2312
+ */
2313
+ get finished(): Promise<void>;
2314
+
2315
+ /**
2316
+ * Cancels the animation if it is still running.
2317
+ * @remarks
2318
+ * ```jsx
2319
+ * const animation = animate.ease(value, 100, {duration: 3})
2320
+ * setTimeout(() => animation.cancel(), 500)
2321
+ * ```
2322
+ * @public
2323
+ */
2324
+ cancel(): void;
2325
+
2326
+
2327
+ }
2328
+
2329
+ declare type FramerAnimationState = "idle" | "running" | "finished";
2330
+
2331
+ /**
2332
+ * @public
2333
+ */
2334
+ export declare class FramerEvent {
2335
+
2336
+
2337
+
2338
+
2339
+
2340
+
2341
+
2342
+
2343
+
2344
+ private static eventLikeFromOriginalEvent;
2345
+
2346
+
2347
+
2348
+ }
2349
+
2350
+ declare type FramerFontVariant = (typeof framerFontVariants)[number];
2351
+
2352
+ declare const framerFontVariants: readonly ["Regular", "Thin", "Extra Light", "Light", "Medium", "Semibold", "Bold", "Extra Bold", "Black", "Thin Italic", "Extra Light Italic", "Light Italic", "Italic", "Medium Italic", "Semibold Italic", "Bold Italic", "Extra Bold Italic", "Black Italic", "Regular Italic", "Variable", "Variable Italic"];
2353
+
2354
+ /**
2355
+ * @deprecated Please use {@link ControlType.Padding} and {@link ControlType.BorderRadius}.
2356
+ * @public
2357
+ */
2358
+ export declare interface FusedNumberControlDescription<P = any> extends BaseControlDescription<P> {
2359
+ type: ControlType.FusedNumber;
2360
+ defaultValue?: number;
2361
+ toggleKey: keyof P;
2362
+ toggleTitles: [string, string];
2363
+ valueKeys: [keyof P, keyof P, keyof P, keyof P];
2364
+ valueLabels: [string, string, string, string];
2365
+ min?: number;
2366
+ }
2367
+
2368
+ declare type FXProps = Partial<Prefixed<ParallaxTransformOptions & StyleAppearEffectOptions & StyleTransformEffectOptions>> & Partial<MotionProps> & {
2369
+ __withFX?: boolean;
2370
+ __perspectiveFX?: boolean;
2371
+ __targetOpacity?: number;
2372
+ __smartComponentFX?: boolean;
2373
+ } & Record<string, unknown>;
2374
+
2375
+ /**
2376
+ * All effects that can be composed operate on a single set of motion values, by
2377
+ * adding or multiplying their values with other effect values. FXValues is the
2378
+ * shared interface that can be animated.
2379
+ */
2380
+ declare type FXValues = Record<(typeof effectValuesKeys)[number], MotionValue<number>>;
2381
+
2382
+ declare interface GapControlDescription<P = any> extends BaseControlDescription<P> {
2383
+ type: ControlType.Gap;
2384
+ defaultValue?: string;
2385
+ }
2386
+
2387
+ declare type GestureState = Partial<{
2388
+ isHovered: boolean;
2389
+ isPressed: boolean;
2390
+ isLoading: boolean;
2391
+ isError: boolean;
2392
+ }>;
2393
+
2394
+ /** @public */
2395
+ export declare function getFonts(component: React_2.ComponentType<unknown>): ComponentFontBundle[];
2396
+
2397
+ /**
2398
+ * @public
2399
+ */
2400
+ export declare type Gradient = LinearGradient | RadialGradient;
2401
+
2402
+ /**
2403
+ * @public
2404
+ */
2405
+ declare interface GradientColorStop {
2406
+ value: string;
2407
+ position: number;
2408
+ }
2409
+
2410
+ declare type Hash = ElementId | string;
2411
+
2412
+ declare type HigherOrderComponent<Props> = (Component: React_2.ComponentType<Props>, props?: Props) => React_2.ComponentType<Props>;
2413
+
2414
+ /** @public */
2415
+ export declare interface IdentityProps {
2416
+ /** An unique id for the layer */
2417
+ id?: string;
2418
+ duplicatedFrom?: string[];
2419
+ }
2420
+
2421
+ /** @public */
2422
+ declare const Image_2: React_2.ForwardRefExoticComponent<Omit<React_2.PropsWithChildren<Partial<ImageProps> & Partial<{
2423
+ lightbox: LightboxEffectProps;
2424
+ lightboxClassName: string;
2425
+ }>>, "ref"> & React_2.RefAttributes<HTMLDivElement>>;
2426
+ export { Image_2 as Image }
2427
+
2428
+ declare interface ImageAltProps {
2429
+ /**
2430
+ * Previously, alt was set on the BackgroundImage object. This caused issues
2431
+ * where the entire object would need to be replaced in order to update the
2432
+ * alt attribute. Now we provide a specific prop for the alt attribute so it
2433
+ * can change even if the background object does not and vice versa. This
2434
+ * needs to be optional so that old sites and Smart Components generated
2435
+ * with alt in the BackgroundImage object do not error. Those sites and
2436
+ * Smart Components will correctly fallback to BackgroundImage.alt.
2437
+ */
2438
+ alt?: string;
2439
+ }
2440
+
2441
+ /**
2442
+ * @deprecated Use {@link ResponsiveImageControlDescription} instead.
2443
+ * @public
2444
+ */
2445
+ export declare interface ImageControlDescription<P = any> extends BaseControlDescription<P> {
2446
+ type: ControlType.Image;
2447
+ }
2448
+
2449
+ /** @public */
2450
+ export declare type ImageFit = "fill" | "fit" | "stretch" | "tile";
2451
+
2452
+ /** @public */
2453
+ declare interface ImageProps extends MotionDivProps, BackgroundImageProps {
2454
+ as?: keyof HTMLElementTagNameMap;
2455
+ onClick?: React_2.HTMLAttributes<HTMLDivElement>["onClick"];
2456
+ }
2457
+
2458
+ /** @public */
2459
+ export declare type IncomingColor = ColorRGB | ColorHSL | ColorRGBA | ColorHSLA | string;
2460
+
2461
+ /**
2462
+ * @public
2463
+ */
2464
+ declare interface Interpolation<Value = any> {
2465
+
2466
+
2467
+ }
2468
+
2469
+ /**
2470
+ * @public
2471
+ */
2472
+ declare const Interpolation: {
2473
+
2474
+ };
2475
+
2476
+ declare interface InterpolationOptions {
2477
+ colorModel: ColorMixModelType;
2478
+ }
2479
+
2480
+ /**
2481
+ * @public
2482
+ */
2483
+ declare type IsAlphaNumeric<S extends string> = S extends `${infer Head}${infer Tail}` ? Head extends AlphaNumericChar ? IsAlphaNumeric<Tail> : false : true;
2484
+
2485
+ /** @public */
2486
+ export declare function isRelativeNumber(value: unknown): value is RelativeNumber;
2487
+
2488
+ /**
2489
+ * Returns true if the caller is executed in a Framer Canvas or Export Canvas environment, or false
2490
+ * otherwise. This function could be used outside of a React component; the value it returns will
2491
+ * never change.
2492
+ *
2493
+ * @public
2494
+ */
2495
+ export declare function isStaticRenderer(): boolean;
2496
+
2497
+ /** @public */
2498
+ export declare type Layer = InstanceType<typeof Layer>;
2499
+
2500
+ /** @public */
2501
+ export declare const Layer: {
2502
+ new <P extends Partial<LayerProps>, S>(props: P): {
2503
+ /** @private (Just using `private` breaks compilation unless using `stripInternal`) */
2504
+ layerElement: HTMLElement | SVGElement | null;
2505
+ setLayerElement: (element: HTMLElement | SVGElement | null) => void;
2506
+
2507
+
2508
+ context: unknown;
2509
+ setState<K extends keyof S>(state: S | ((prevState: Readonly<S>, props: Readonly<P>) => S | Pick<S, K> | null) | Pick<S, K> | null, callback?: (() => void) | undefined): void;
2510
+ forceUpdate(callback?: (() => void) | undefined): void;
2511
+ render(): ReactNode;
2512
+ readonly props: Readonly<P>;
2513
+ state: Readonly<S>;
2514
+ refs: {
2515
+ [key: string]: React_2.ReactInstance;
2516
+ };
2517
+ componentDidMount?(): void;
2518
+ componentWillUnmount?(): void;
2519
+ componentDidCatch?(error: Error, errorInfo: React_2.ErrorInfo): void;
2520
+ getSnapshotBeforeUpdate?(prevProps: Readonly<P>, prevState: Readonly<S>): any;
2521
+ componentWillMount?(): void;
2522
+ UNSAFE_componentWillMount?(): void;
2523
+ componentWillReceiveProps?(nextProps: Readonly<P>, nextContext: any): void;
2524
+ UNSAFE_componentWillReceiveProps?(nextProps: Readonly<P>, nextContext: any): void;
2525
+ componentWillUpdate?(nextProps: Readonly<P>, nextState: Readonly<S>, nextContext: any): void;
2526
+ UNSAFE_componentWillUpdate?(nextProps: Readonly<P>, nextState: Readonly<S>, nextContext: any): void;
2527
+ };
2528
+ new <P extends Partial<LayerProps>, S>(props: P, context: any): {
2529
+ /** @private (Just using `private` breaks compilation unless using `stripInternal`) */
2530
+ layerElement: HTMLElement | SVGElement | null;
2531
+ setLayerElement: (element: HTMLElement | SVGElement | null) => void;
2532
+
2533
+
2534
+ context: unknown;
2535
+ setState<K extends keyof S>(state: S | ((prevState: Readonly<S>, props: Readonly<P>) => S | Pick<S, K> | null) | Pick<S, K> | null, callback?: (() => void) | undefined): void;
2536
+ forceUpdate(callback?: (() => void) | undefined): void;
2537
+ render(): ReactNode;
2538
+ readonly props: Readonly<P>;
2539
+ state: Readonly<S>;
2540
+ refs: {
2541
+ [key: string]: React_2.ReactInstance;
2542
+ };
2543
+ componentDidMount?(): void;
2544
+ componentWillUnmount?(): void;
2545
+ componentDidCatch?(error: Error, errorInfo: React_2.ErrorInfo): void;
2546
+ getSnapshotBeforeUpdate?(prevProps: Readonly<P>, prevState: Readonly<S>): any;
2547
+ componentWillMount?(): void;
2548
+ UNSAFE_componentWillMount?(): void;
2549
+ componentWillReceiveProps?(nextProps: Readonly<P>, nextContext: any): void;
2550
+ UNSAFE_componentWillReceiveProps?(nextProps: Readonly<P>, nextContext: any): void;
2551
+ componentWillUpdate?(nextProps: Readonly<P>, nextState: Readonly<S>, nextContext: any): void;
2552
+ UNSAFE_componentWillUpdate?(nextProps: Readonly<P>, nextState: Readonly<S>, nextContext: any): void;
2553
+ };
2554
+ readonly defaultProps: LayerProps;
2555
+ applyWillChange(props: WillChangeTransformProp, style: MotionStyle, usingMotionStyle: boolean): void;
2556
+ contextType?: React_2.Context<any> | undefined;
2557
+ };
2558
+
2559
+ /** @public */
2560
+ export declare interface LayerProps extends IdentityProps, WillChangeTransformProp, DOMLayoutProps {
2561
+ children?: ReactNode;
2562
+ key?: React_2.Attributes["key"];
2563
+
2564
+
2565
+
2566
+
2567
+ }
2568
+
2569
+ export { LayoutGroupContext }
2570
+
2571
+ declare interface LightboxEffectProps {
2572
+ transition: Transition;
2573
+ zIndex: number;
2574
+ maxWidth: number;
2575
+ backdrop?: string;
2576
+ padding?: number;
2577
+ paddingTop?: number;
2578
+ paddingRight?: number;
2579
+ paddingBottom?: number;
2580
+ paddingLeft?: number;
2581
+ }
2582
+
2583
+ /**
2584
+ * @public
2585
+ */
2586
+ export declare type LinearGradient = LinearGradientBase & (SimpleGradient | MultiStopGradient);
2587
+
2588
+ /**
2589
+ * @public
2590
+ */
2591
+ export declare const LinearGradient: {
2592
+ /**
2593
+ * @param value -
2594
+ */
2595
+ isLinearGradient: (value: unknown) => value is LinearGradient;
2596
+
2597
+
2598
+ };
2599
+
2600
+ /**
2601
+ * @public
2602
+ */
2603
+ export declare interface LinearGradientBase {
2604
+ alpha: number;
2605
+ angle: number;
2606
+ }
2607
+
2608
+ /** @public */
2609
+ export declare const Link: React_2.ForwardRefExoticComponent<Omit<Props, "ref"> & RefAttributes<unknown>>;
2610
+
2611
+ /** @public */
2612
+ declare interface LinkControlDescription<P = any> extends BaseControlDescription<P> {
2613
+ type: ControlType.Link;
2614
+ defaultValue?: string;
2615
+ }
2616
+
2617
+ declare interface LinkProps {
2618
+ href: string | LinkToWebPage | undefined;
2619
+ /**
2620
+ * Which browsing context to display the linked URL. If not provided, the
2621
+ * Link component will only open the link in a new tab if the href is an
2622
+ * external URL.
2623
+ */
2624
+ openInNewTab?: boolean;
2625
+ smoothScroll?: boolean;
2626
+ clickTrackingId?: string;
2627
+ relValues?: readonly SupportedLinkRelValue[];
2628
+ preserveParams?: boolean;
2629
+ nodeId?: string;
2630
+ scopeId?: string;
2631
+ /**
2632
+ * Indicates whether `motion.a` is used for the child component, allowing the use of `onTap`
2633
+ * instead of `onClick` on the link.
2634
+ */
2635
+ motionChild?: boolean;
2636
+ style?: CSSProperties;
2637
+ }
2638
+
2639
+ declare interface LinkToWebPage {
2640
+ webPageId: string;
2641
+ hash?: string;
2642
+ pathVariables?: Record<string, string>;
2643
+ hashVariables?: Record<string, string>;
2644
+ unresolvedPathSlugs?: Record<string, UnresolvedSlug>;
2645
+ unresolvedHashSlugs?: Record<string, UnresolvedSlug>;
2646
+ }
2647
+
2648
+ /**
2649
+ * @public
2650
+ * A unique locale with an id, code (e.g. "en-US"), name, slug, and optional fallback.
2651
+ */
2652
+ export declare interface Locale {
2653
+ /** Unique id. */
2654
+ readonly id: LocaleId;
2655
+ /** Language and optional region code (e.g. "en-US"). */
2656
+ readonly code: string;
2657
+ /** Display name, for example used by the locale picker component. */
2658
+ readonly name: string;
2659
+ /** Locale slug is inserted as the first path segment when non empty. */
2660
+ readonly slug: string;
2661
+ /** Optional fallback locale, used when resolving localized values. */
2662
+ readonly fallback?: Locale;
2663
+ /** Either "ltr" (left-to-right) or "rtl" (right-to-left). */
2664
+ readonly textDirection?: TextDirection;
2665
+ }
2666
+
2667
+ /**
2668
+ * @public
2669
+ * A unique id for a locale.
2670
+ */
2671
+ export declare type LocaleId = string;
2672
+
2673
+ /**
2674
+ * @public
2675
+ * The active locale, all of the available locales, and a way to change the active locale.
2676
+ */
2677
+ export declare interface LocaleInfo {
2678
+ /** The locale currently active. */
2679
+ readonly activeLocale: Locale | null;
2680
+ /** All of the available locales. */
2681
+ readonly locales: readonly Locale[];
2682
+ /** Update the active locale by passing in either a locale or locale id. */
2683
+ readonly setLocale: (locale: Locale | LocaleId) => Promise<void>;
2684
+ }
2685
+
2686
+ declare type Mixer = (from: string | Color, toColor: Color, options?: ColorMixOptions) => (p: number) => string;
2687
+
2688
+ declare type MixerStateful = (toColor: Color, options?: ColorMixOptions) => (p: number) => string;
2689
+
2690
+ /**
2691
+ * @public
2692
+ */
2693
+ export declare interface ModalTransitionOptions extends NavigationTransitionAnimation, NavigationTransitionBackdropColor {
2694
+ }
2695
+
2696
+ declare type MotionDivProps = HTMLMotionProps<"div">;
2697
+
2698
+ /** @public */
2699
+ export declare function MotionSetup({ children }: Props_2): JSX_2.Element;
2700
+
2701
+ declare interface MultiCollectionReferenceControlDescription<P = any> extends BaseControlDescription<P> {
2702
+ type: ControlType.MultiCollectionReference;
2703
+ dataIdentifier: string;
2704
+ defaultValue?: string[];
2705
+ }
2706
+
2707
+ /**
2708
+ * @public
2709
+ */
2710
+ declare interface MultiStopGradient {
2711
+ stops: readonly GradientColorStop[];
2712
+ }
2713
+
2714
+ /**
2715
+ * @public
2716
+ */
2717
+ export declare type NativeScrollProps = {
2718
+ native: true;
2719
+ } & Omit<Partial<FrameProps>, "size" | "overflow"> & Omit<ScrollEvents, "onScroll"> & ScrollConfig & {
2720
+ scrollBarVisible?: boolean;
2721
+ };
2722
+
2723
+ /**
2724
+ * Provides {@link NavigationInterface} that can be used to start transitions in Framer.
2725
+ * @public
2726
+ */
2727
+ export declare const NavigationConsumer: React_2.Consumer<NavigationInterface>;
2728
+
2729
+ /**
2730
+ * The navigator allows control over the built-in navigation component in Framer.
2731
+ * @public
2732
+ */
2733
+ export declare interface NavigationInterface {
2734
+ /**
2735
+ * Go back to the previous screen. If a stack of overlays is presented, all overlays are dismissed.
2736
+ * @public
2737
+ * */
2738
+ goBack: () => void;
2739
+ /**
2740
+ * Show new screen instantly.
2741
+ * @param component - The incoming component
2742
+ * @public
2743
+ */
2744
+ instant: (component: React_2.ReactNode) => void;
2745
+ /**
2746
+ * Fade in new screen.
2747
+ * @param component - The incoming component
2748
+ * @param options - {@link FadeTransitionOptions}
2749
+ * @public
2750
+ */
2751
+ fade: (component: React_2.ReactNode, options?: FadeTransitionOptions) => void;
2752
+ /**
2753
+ * Push new screen. Defaults from right to left, the direction can be changed using the {@link NavigationTransitionOptions}.
2754
+ * @param component - The incoming component
2755
+ * @param options - {@link PushTransitionOptions}
2756
+ * @public
2757
+ */
2758
+ push: (component: React_2.ReactNode, options?: PushTransitionOptions) => void;
2759
+ /**
2760
+ * Present modal overlay in the center.
2761
+ * @param component - The incoming component
2762
+ * @param options - {@link ModalTransitionOptions}
2763
+ * @public
2764
+ */
2765
+ modal: (component: React_2.ReactNode, options?: ModalTransitionOptions) => void;
2766
+ /**
2767
+ * Present overlay from one of four edges. The direction can be changed using the {@link NavigationTransitionOptions}.
2768
+ * @param component - The incoming component
2769
+ * @param options - {@link OverlayTransitionOptions}
2770
+ * @public
2771
+ */
2772
+ overlay: (component: React_2.ReactNode, options?: OverlayTransitionOptions) => void;
2773
+ /**
2774
+ * Flip incoming and outgoing screen in 3D. The flip direction can be changed using the {@link NavigationTransitionOptions}.
2775
+ * @param component - The incoming component
2776
+ * @param options - {@link FlipTransitionOptions}
2777
+ * @public
2778
+ */
2779
+ flip: (component: React_2.ReactNode, options?: FlipTransitionOptions) => void;
2780
+ /**
2781
+ * Present a screen using a custom {@link NavigationTransition}.
2782
+ * @param component - The incoming component
2783
+ * @param transition - {@link NavigationTransition}
2784
+ * @public
2785
+ */
2786
+ customTransition: (component: React_2.ReactNode, transition: NavigationTransition_2) => void;
2787
+ /**
2788
+ * Animate layers with matching magicIds between screens. Layers are assigned matching IDs if they share a name, or were copied from one another.
2789
+ * The transition can be changed using a custom {@link NavigationTransition}.
2790
+ * @param component - The incoming component
2791
+ * @param transition - {@link NavigationTransition}
2792
+ * @public
2793
+ */
2794
+ magicMotion: (component: React_2.ReactNode, transition: NavigationTransition_2) => void;
2795
+ }
2796
+
2797
+ /**
2798
+ * Can be used to define a custom navigation transition.
2799
+ * @public
2800
+ */
2801
+ declare interface NavigationTransition_2 extends NavigationTransitionAnimation, NavigationTransitionBackdropColor {
2802
+ /**
2803
+ * Defines the begin state of the incoming screen wrapper.
2804
+ */
2805
+ enter?: Partial<FrameProps>;
2806
+ /**
2807
+ * Defines the end state of the outgoing screen wrapper.
2808
+ */
2809
+ exit?: Partial<FrameProps>;
2810
+ /**
2811
+ * Defines the position and size of the incoming screen wrapper. Defaults to top, right, bottom, and left of 0.
2812
+ */
2813
+ position?: NavigationTransitionPosition;
2814
+ /**
2815
+ * Defines whether the incoming screen should render over the current context, like an overlay or modal. Defaults to false.
2816
+ */
2817
+ overCurrentContext?: boolean;
2818
+ /**
2819
+ * Defines whether a tap in the background should dismiss the screen presented over the current context. Defaults to true.
2820
+ */
2821
+ goBackOnTapOutside?: boolean;
2822
+ /**
2823
+ * Defines whether the backface of the incoming and outgoing screens should be visible, necessary for certain 3D transitions. Defaults to true.
2824
+ */
2825
+ backfaceVisible?: boolean;
2826
+ /**
2827
+ * Defines whether the incoming and outgoing screens should auto animate their children. Defaults to false.
2828
+ */
2829
+ withMagicMotion?: boolean;
2830
+ }
2831
+ export { NavigationTransition_2 as NavigationTransition }
2832
+
2833
+ /**
2834
+ * @public
2835
+ */
2836
+ export declare interface NavigationTransitionAnimation {
2837
+ /**
2838
+ * The animation defaults.
2839
+ */
2840
+ animation?: Transition;
2841
+ }
2842
+
2843
+ /**
2844
+ * @public
2845
+ */
2846
+ export declare interface NavigationTransitionAppearsFrom extends NavigationTransitionAnimation {
2847
+ /**
2848
+ * Defines which side the target will appear from.
2849
+ * @remarks
2850
+ *
2851
+ * - `"left"`
2852
+ * - `"right"`
2853
+ * - `"top"`
2854
+ * - `"bottom"`
2855
+ */
2856
+ appearsFrom?: NavigationTransitionSide;
2857
+ }
2858
+
2859
+ /**
2860
+ * @public
2861
+ */
2862
+ export declare interface NavigationTransitionBackdropColor {
2863
+ /**
2864
+ * Defines the backdrop color when the incoming screen is rendered over the current context. Defaults to the iOS dim color.
2865
+ */
2866
+ backdropColor?: string;
2867
+ }
2868
+
2869
+ /**
2870
+ * @public
2871
+ */
2872
+ export declare type NavigationTransitionPosition = Partial<Pick<FrameLayoutProperties, "top" | "right" | "bottom" | "left" | "center">>;
2873
+
2874
+ /**
2875
+ * @public
2876
+ */
2877
+ export declare type NavigationTransitionSide = "left" | "right" | "top" | "bottom";
2878
+
2879
+ /** @public */
2880
+ export declare interface NumberControlDescription<P = any> extends BaseControlDescription<P> {
2881
+ type: ControlType.Number;
2882
+ defaultValue?: number;
2883
+ max?: number;
2884
+ min?: number;
2885
+ unit?: string;
2886
+ step?: number;
2887
+ displayStepper?: boolean;
2888
+ }
2889
+
2890
+ /**
2891
+ * @remarks This feature is still in beta
2892
+ * @public
2893
+ */
2894
+ export declare interface ObjectControlDescription<P = any> extends BaseControlDescription<P> {
2895
+ type: ControlType.Object;
2896
+ controls: {
2897
+ [key: string]: ObjectPropertyControlDescription;
2898
+ };
2899
+ defaultValue?: {
2900
+ [key: string]: any;
2901
+ };
2902
+ buttonTitle?: string;
2903
+ optional?: boolean;
2904
+ icon?: ObjectControlIcon;
2905
+ }
2906
+
2907
+ /**
2908
+ * Object Control Icons provided by Framer
2909
+ */
2910
+ declare type ObjectControlIcon = "object" | "effect" | "color" | "interaction" | "boolean";
2911
+
2912
+ /**
2913
+ * Object sub type
2914
+ * Currently not supported: component instance, and event handler.
2915
+ * @public
2916
+ */
2917
+ export declare type ObjectPropertyControlDescription<P = any> = NumberControlDescription<P> | EnumControlDescription<P> | BooleanControlDescription<P> | StringControlDescription<P> | RichTextControlDescription<P> | ColorControlDescription<P> | SegmentedEnumControlDescription<P> | ImageControlDescription<P> | ResponsiveImageControlDescription<P> | FileControlDescription<P> | TransitionControlDescription<P> | BoxShadowControlDescription<P> | LinkControlDescription<P> | DateControlDescription<P> | ArrayControlDescription<P> | ObjectControlDescription<P> | FusedNumberControlDescription<P> | FontControlDescription<P> | PageScopeControlDescription<P> | ScrollSectionRefControlDescription<P> | CustomCursorControlDescription<P> | BorderControlDescription<P> | CursorControlDescription<P> | PaddingControlDescription<P> | BorderRadiusControlDescription<P> | GapControlDescription<P> | CollectionReferenceControlDescription<P> | MultiCollectionReferenceControlDescription<P> | TrackingIdControlDescription<P>;
2918
+
2919
+ /**
2920
+ * @public
2921
+ */
2922
+ declare type Observer<Value> = {
2923
+ update: UpdateFunction<Value>;
2924
+ finish: FinishFunction;
2925
+ } | UpdateFunction<Value>;
2926
+
2927
+ declare type Overflow = "visible" | "hidden" | "clip" | "scroll" | "auto";
2928
+
2929
+ declare interface OverflowProperties {
2930
+ overflow: Overflow;
2931
+ }
2932
+
2933
+ /**
2934
+ * @public
2935
+ */
2936
+ export declare interface OverlayTransitionOptions extends NavigationTransitionAnimation, NavigationTransitionAppearsFrom, NavigationTransitionBackdropColor {
2937
+ }
2938
+
2939
+ /** @public */
2940
+ export declare type Override<T extends object = FrameProps & {
2941
+ [key: string]: any;
2942
+ }> = OverrideObject<T> | OverrideFunction<T>;
2943
+
2944
+ /** @public */
2945
+ export declare type OverrideFunction<P extends object = any> = (props: P) => Partial<P>;
2946
+
2947
+ /** @public */
2948
+ export declare type OverrideObject<T extends object = any> = Partial<T>;
2949
+
2950
+ declare interface PaddingControlDescription<P = any> extends BaseControlDescription<P> {
2951
+ type: ControlType.Padding;
2952
+ defaultValue?: string;
2953
+ }
2954
+
2955
+ /**
2956
+ * @deprecated Creating new Page components in Framer is no longer supported as of July 2025.
2957
+ * Existing Page components will continue to work, but please use alternative solutions for new
2958
+ * projects.
2959
+ */
2960
+ export declare const Page: ForwardRefExoticComponent<Omit<Partial<PageProps>, "ref"> & RefAttributes<HTMLDivElement>>;
2961
+
2962
+ /**
2963
+ * @public
2964
+ */
2965
+ export declare type PageAlignment = "start" | "center" | "end";
2966
+
2967
+ /**
2968
+ * @public
2969
+ */
2970
+ declare type PageContentDimension = "auto" | "stretch";
2971
+
2972
+ /**
2973
+ * @public
2974
+ */
2975
+ declare type PageDirection = "horizontal" | "vertical";
2976
+
2977
+ /**
2978
+ * Page effects change the behavior of the transition when swiping between pages.
2979
+ * By default there is no page effect applied.
2980
+ * @remarks
2981
+ * ```jsx
2982
+ * import React from "react"
2983
+ * import { Page, PageEffect } from "framer"
2984
+ *
2985
+ * export function MyComponent() {
2986
+ * return <Page defaultEffect={"cube"} />
2987
+ * }
2988
+ * ```
2989
+ *
2990
+ * `"none"` - No custom effect is applied. This is the default.
2991
+ * `"cube"` - Each page is positioned as a 3D cube, connected to the current page.
2992
+ * `"coverflow"` - Each page is positioned in 3D, behind the current page.
2993
+ * `"wheel"` - Each page is gently titled in 3D, like a wheel.
2994
+ * `"pile"` - Each page is stacked behind the current page.
2995
+ * @public
2996
+ */
2997
+ export declare type PageEffect = "none" | "cube" | "coverflow" | "wheel" | "pile";
2998
+
2999
+ /**
3000
+ * Information about the current effect.
3001
+ * @public
3002
+ */
3003
+ export declare interface PageEffectInfo {
3004
+ /**
3005
+ * The offset of this page, in pixels, measured from the left-most part of the container.
3006
+ * @public
3007
+ */
3008
+ offset: number;
3009
+ /**
3010
+ * The offset of this page, normalised to the page size.
3011
+ *
3012
+ * For instance, if each page is `200` pixels wide, and we're on page index `1`, the `normalizedOffset` of page index `0` will be `-1`.
3013
+ * @public
3014
+ */
3015
+ normalizedOffset: number;
3016
+ /**
3017
+ * The `width` and `height` of the page.
3018
+ * @public
3019
+ */
3020
+ size: Size;
3021
+ /**
3022
+ * The index of the current page. The first page is `0`, the second is `1` and so on.
3023
+ * @public
3024
+ */
3025
+ index: number;
3026
+ /**
3027
+ * The direction of page scrolling, `"horizontal"` or `"vertical"`
3028
+ * @public
3029
+ */
3030
+ direction: PageDirection;
3031
+ /**
3032
+ * The gap between each page, in pixels.
3033
+ * @public
3034
+ */
3035
+ gap: number;
3036
+ /**
3037
+ * The total number of pages.
3038
+ *
3039
+ * @public
3040
+ */
3041
+ pageCount: number;
3042
+ }
3043
+
3044
+ /**
3045
+ * Information about the current effect.
3046
+ * @public
3047
+ */
3048
+ declare interface PageEffectValues {
3049
+ [key: string]: string | number | boolean;
3050
+ }
3051
+
3052
+ /**
3053
+ * Event callbacks for the Page component, can be used to react to and co-ordinate
3054
+ * with other components.
3055
+ *
3056
+ * @public
3057
+ */
3058
+ export declare interface PageEvents {
3059
+ /**
3060
+ * A callback that will be invoked when changing the page.
3061
+ * @remarks
3062
+ * This will be invoked when the drag animation begins or when the page changes
3063
+ * programatically. It can be used to co-ordinate with other behaviors.
3064
+ *
3065
+ * @param currentIndex - The current page number
3066
+ * @param previousIndex - The index of the previous page
3067
+ * @public
3068
+ * @remarks
3069
+ * ```jsx
3070
+ * <Page
3071
+ * onChangePage={(current, previous) => {
3072
+ * console.log(current, previous)
3073
+ * }}
3074
+ * />
3075
+ * ```
3076
+ */
3077
+ onChangePage(currentIndex: number, previousIndex: number): void;
3078
+ }
3079
+
3080
+ /**
3081
+ * All properties that can be used with the {@link Page} component it also extends all {@link ScrollProps} properties.
3082
+ * ```jsx
3083
+ * <Page
3084
+ * direction={"horizontal"}
3085
+ * contentWidth={"stretch"}
3086
+ * contentHeight={"stretch"}
3087
+ * alignment={"center"}
3088
+ * currentPage={0}
3089
+ * animateCurrentPageUpdate={true}
3090
+ * gap={10}
3091
+ * padding={0}
3092
+ * paddingPerSide={true}
3093
+ * paddingTop={0}
3094
+ * paddingRight={0}
3095
+ * paddingBottom={0}
3096
+ * paddingLeft={0}
3097
+ * momentum={false}
3098
+ * dragEnabled={false}
3099
+ * defaultEffect={PageEffect.Cube}>
3100
+ * <Frame background="#19E" />
3101
+ * <Frame background="#5CF" />
3102
+ * <Frame background="#2CD" />
3103
+ * </Page>
3104
+ * ```
3105
+ * @public
3106
+ */
3107
+ export declare interface PageProperties {
3108
+ /**
3109
+ * Current swipe direction. Either "horizontal" or "vertical". Set to `"horizontal"` by
3110
+ * default.
3111
+ *
3112
+ * @remarks
3113
+ * ```jsx
3114
+ * <Page direction="horizontal" />
3115
+ * ```
3116
+ */
3117
+ direction: PageDirection;
3118
+ /**
3119
+ * Width of the pages within the component. Either "auto" or "stretch" or a numeric value. Set
3120
+ * to `"stretch"` by default.
3121
+ *
3122
+ * @remarks
3123
+ * ```jsx
3124
+ * <Page contentWidth="auto" />
3125
+ * ```
3126
+ */
3127
+ contentWidth: PageContentDimension | number;
3128
+ /**
3129
+ * Height of the pages within the component. Either "auto" or "stretch" or a numeric value. Set
3130
+ * to `"stretch"` by default.
3131
+ *
3132
+ * @remarks
3133
+ * ```jsx
3134
+ * <Page contentHeight="auto" />
3135
+ * ```
3136
+ */
3137
+ contentHeight: PageContentDimension | number;
3138
+ /**
3139
+ * Alignment of the pages within the component. Either "start", "center", or "end". Set to
3140
+ * `"start"` by default.
3141
+ *
3142
+ * @remarks
3143
+ * ```jsx
3144
+ * <Page alignment="center" />
3145
+ * ```
3146
+ */
3147
+ alignment: PageAlignment;
3148
+ /**
3149
+ * Index of the current page. Set to `0` by default.
3150
+ *
3151
+ * @remarks
3152
+ * ```jsx
3153
+ * <Page currentPage={5} />
3154
+ * ```
3155
+ */
3156
+ currentPage: number;
3157
+
3158
+ /**
3159
+ * If `true`, this will lock dragging to the initial direction.
3160
+ *
3161
+ * @public
3162
+ *
3163
+ * ```jsx
3164
+ * <Page direction="both" directionLock={true} />
3165
+ * ```
3166
+ */
3167
+ directionLock?: boolean;
3168
+ /**
3169
+ * Enable or disable dragging to scroll. Defaults to `true`.
3170
+ *
3171
+ * @public
3172
+ *
3173
+ * ```jsx
3174
+ * <Page dragEnabled={false} />
3175
+ * ```
3176
+ */
3177
+ dragEnabled?: boolean;
3178
+ /**
3179
+ * Enable or disable wheel scroll. Defaults to `false`.
3180
+ *
3181
+ * @public
3182
+ *
3183
+ * ```jsx
3184
+ * <Page wheelEnabled={true} />
3185
+ * ```
3186
+ */
3187
+ wheelEnabled?: boolean;
3188
+ /**
3189
+ * Horizontal offset of the scrollable content. Set to `0` by default
3190
+ *
3191
+ * @remarks
3192
+ * ```jsx
3193
+ * <Page contentOffsetX={20} />
3194
+ * ```
3195
+ */
3196
+ contentOffsetX?: MotionValue<number> | number;
3197
+ /**
3198
+ * Vertical offset of the scrollable content. Set to `0` by default.
3199
+ *
3200
+ * @remarks
3201
+ * ```jsx
3202
+ * <Page contentOffsetY={20} />
3203
+ * ```
3204
+ */
3205
+ contentOffsetY?: MotionValue<number> | number;
3206
+ /**
3207
+ * A number describing the gap between the page elements. Set to `10` by default. Can not be negative.
3208
+ *
3209
+ * @remarks
3210
+ * ```jsx
3211
+ * <Page gap={0} />
3212
+ * ```
3213
+ * */
3214
+ gap: number;
3215
+ /**
3216
+ * Padding to be applied to all sides. Set to `0` by default.
3217
+ * To specify different padding for each side, provide
3218
+ * individual `paddingTop`, `paddingLeft`, `paddingRight` and `paddingBottom` values.
3219
+ *
3220
+ * ```jsx
3221
+ * <Page padding={20} />
3222
+ * ```
3223
+ */
3224
+ padding: number;
3225
+ /**
3226
+ * Flag to tell the Page to ignore the `padding` prop and apply values per-side.
3227
+ *
3228
+ * @remarks
3229
+ *
3230
+ * ```jsx
3231
+ * <Page paddingLeft={20} />
3232
+ * ```
3233
+ */
3234
+ paddingPerSide?: boolean;
3235
+ /**
3236
+ * Value for the top padding of the container. Set to `0` by default.
3237
+ * ```jsx
3238
+ * <Page paddingTop={20} />
3239
+ * ```
3240
+ */
3241
+ paddingTop?: number;
3242
+ /**
3243
+ * ```jsx
3244
+ * <Page paddingRight={20} />
3245
+ * ```
3246
+ * Value for the right padding of the container. Set to `0` by default.
3247
+ */
3248
+ paddingRight?: number;
3249
+ /**
3250
+ * ```jsx
3251
+ * <Page paddingBottom={20} />
3252
+ * ```
3253
+ * Value for the bottom padding of the container. Set to `0` by default.
3254
+ */
3255
+ paddingBottom?: number;
3256
+ /**
3257
+ * ```jsx
3258
+ * <Page paddingLeft={20} />
3259
+ * ```
3260
+ * Value for the left padding of the container. Set to `0` by default.
3261
+ */
3262
+ paddingLeft?: number;
3263
+ /**
3264
+ * When enabled you can flick through multiple pages at once.
3265
+ * @remarks
3266
+ *
3267
+ * ```jsx
3268
+ * <Page momentum />
3269
+ * ```
3270
+ */
3271
+ momentum: boolean;
3272
+ /**
3273
+ * Pick one of the predefined effects. Either "none", "cube", "coverflow", "wheel" or "pile". Set to `"none"` by default.
3274
+ * @remarks
3275
+ *
3276
+ * ```jsx
3277
+ * <Page defaultEffect={"coverflow"} />
3278
+ * ```
3279
+ */
3280
+ defaultEffect: PageEffect;
3281
+ /**
3282
+ * Allows you to provide a custom transition effect for individual pages.
3283
+ *
3284
+ * This function is called once for every page, every time the scroll offset changes. It returns a new set of styles for this page.
3285
+ *
3286
+ * @param info - A {@link PageEffectInfo} object with information about the current effect.
3287
+ * @returns should return a new set of Frame properties.
3288
+ *
3289
+ * @remarks
3290
+ * ```jsx
3291
+ * function scaleEffect(info) {
3292
+ * const { normalizedOffset } = info
3293
+ * return {
3294
+ * scale: Math.max(0, 1 + Math.min(0, normalizedOffset * -1))
3295
+ * }
3296
+ * }
3297
+ *
3298
+ * return <Page effect={scaleEffect} />
3299
+ * ```
3300
+ * @public
3301
+ */
3302
+ effect?: (info: PageEffectInfo) => PageEffectValues;
3303
+
3304
+ }
3305
+
3306
+ /**
3307
+ * @public
3308
+ */
3309
+ export declare type PageProps = Partial<PageProperties> & Partial<Omit<FrameProps, "size" | "onScroll">> & LayerProps & Partial<PageEvents> & Partial<ScrollEvents>;
3310
+
3311
+ /**
3312
+ * @description Router Component
3313
+ * Safari iOS has a weird bug that will make `font-size` scale-up in the presence
3314
+ * of a unit width/height + `overflow: hidden` + an element in the DOM that has
3315
+ * opacity 0 and is set to opacity 1 in JS, just like in the case of our effects
3316
+ * with Motion. We set the width of published sites to auto to fix the issue. It
3317
+ * must explicitly be set on published sites because the same fix brakes the
3318
+ * preview.
3319
+ * Webkit issue: https://bugs.webkit.org/show_bug.cgi?id=240653
3320
+ * */
3321
+ /** @public */
3322
+ export declare function PageRoot({ RootComponent, isWebsite, routeId, framerSiteId, pathVariables, routes, collectionUtils, notFoundPage, isReducedMotion, includeDataObserver, localeId, locales, preserveQueryParams, EditorBar, defaultPageStyle, disableHistory, LayoutTemplate, siteCanonicalURL, adaptLayoutToTextDirection, }: PageRootProps): JSX_2.Element;
3323
+
3324
+ declare interface PageRootProps {
3325
+ /**
3326
+ * @deprecated Passing this when `isWebsite` is true doesn't do anything, the page to render is instead taken from
3327
+ * the `routes` map, via the `routeId` prop.
3328
+ */
3329
+ RootComponent?: RouteComponent;
3330
+ isWebsite: boolean;
3331
+ /**
3332
+ * framerSiteId is used by forms to identify the source of the form.
3333
+ */
3334
+ framerSiteId: string;
3335
+ routeId: string;
3336
+ pathVariables?: Record<string, unknown>;
3337
+ routes: Routes;
3338
+ collectionUtils?: UtilsByCollectionId;
3339
+ notFoundPage?: React_2.ComponentType;
3340
+ isReducedMotion?: boolean;
3341
+ includeDataObserver?: boolean;
3342
+ locales?: readonly Locale[];
3343
+ localeId?: LocaleId;
3344
+ adaptLayoutToTextDirection?: boolean;
3345
+ preserveQueryParams?: boolean;
3346
+ LayoutTemplate?: React_2.ComponentType<{
3347
+ routeId: string;
3348
+ style?: React_2.CSSProperties;
3349
+ children: (inLayoutTemplate: boolean) => React_2.ReactNode;
3350
+ }>;
3351
+ EditorBar?: React_2.ComponentType<EditorBarProps>;
3352
+ defaultPageStyle?: React_2.CSSProperties;
3353
+ disableHistory?: boolean;
3354
+ siteCanonicalURL?: string;
3355
+ }
3356
+
3357
+ export declare interface PageScopeControlDescription<P = any> extends BaseControlDescription<P> {
3358
+ type: ControlType.PageScope;
3359
+ }
3360
+
3361
+ declare interface ParallaxTransformOptions {
3362
+ speed: number;
3363
+ adjustPosition: boolean;
3364
+ offset: number;
3365
+ parallaxTransformEnabled: boolean | undefined;
3366
+ }
3367
+
3368
+ declare type Placement = "top" | "right" | "bottom" | "left";
3369
+
3370
+ /**
3371
+ * @public
3372
+ */
3373
+ export declare function Point(x: number, y: number): Point;
3374
+
3375
+ /**
3376
+ * @public
3377
+ */
3378
+ export declare interface Point {
3379
+ x: number;
3380
+ y: number;
3381
+ }
3382
+
3383
+ /**
3384
+ * @public
3385
+ */
3386
+ export declare namespace Point {
3387
+
3388
+
3389
+
3390
+
3391
+
3392
+
3393
+
3394
+
3395
+
3396
+
3397
+
3398
+ /** @public */
3399
+ const isEqual: (a: Point, b: Point) => boolean;
3400
+
3401
+
3402
+
3403
+
3404
+ }
3405
+
3406
+ declare interface PositionAbsoluteProperties {
3407
+
3408
+ }
3409
+
3410
+ declare interface PositionFixedProperties {
3411
+
3412
+ }
3413
+
3414
+ /** @public */
3415
+ export declare interface PositionStickyProperties {
3416
+
3417
+
3418
+
3419
+
3420
+
3421
+ }
3422
+
3423
+ declare const prefix = "__framer__";
3424
+
3425
+ declare type Prefixed<Type extends object> = {
3426
+ [Property in keyof Type as `${typeof prefix}${string & Property}`]: Type[Property];
3427
+ };
3428
+
3429
+ declare interface PresenceEffectOptions {
3430
+ initial?: EffectOrMotionProp<MotionProps["initial"]>;
3431
+ animate?: EffectOrMotionProp<MotionProps["animate"]>;
3432
+ exit?: EffectOrMotionProp<MotionProps["exit"]>;
3433
+ presenceInitial?: EffectOrMotionProp<MotionProps["initial"]>;
3434
+ presenceAnimate?: EffectOrMotionProp<MotionProps["animate"]>;
3435
+ presenceExit?: EffectOrMotionProp<MotionProps["exit"]>;
3436
+ }
3437
+
3438
+ /**
3439
+ * Prints to the console.
3440
+ *
3441
+ * @param args - Arguments to print
3442
+ * @public
3443
+ */
3444
+ declare function print_2(...args: any[]): void;
3445
+ export { print_2 as print }
3446
+
3447
+ /** @public */
3448
+ export declare type PropertyControls<ComponentProps = any, ArrayTypes = any> = {
3449
+ [K in keyof ComponentProps]?: ControlDescription<Partial<ComponentProps>>;
3450
+ };
3451
+
3452
+ declare type Props = PropsWithChildren<LinkProps> & RefAttributes<unknown>;
3453
+
3454
+ declare interface Props_2 {
3455
+ children: React_2.ReactNode;
3456
+ }
3457
+
3458
+ declare type Props_3<T> = Omit<T, "animate" | "initial" | "exit"> & Pick<PresenceEffectOptions, "animate" | "exit" | "initial">;
3459
+
3460
+ declare interface Props_4 {
3461
+ strokeEffectLength: number;
3462
+ strokeEffectGap: number;
3463
+ strokeEffectOffset: number;
3464
+ strokeEffectTotalLength: number;
3465
+ strokeEffectLoop: boolean;
3466
+ strokeEffectLoopType: "repeat" | "mirror" | "continuous";
3467
+ pathLengthTransition: Omit<Transition, "from">;
3468
+ }
3469
+
3470
+ /**
3471
+ * @public
3472
+ */
3473
+ export declare interface PushTransitionOptions extends NavigationTransitionAnimation, NavigationTransitionAppearsFrom {
3474
+ }
3475
+
3476
+ /**
3477
+ * @public
3478
+ */
3479
+ export declare type RadialGradient = RadialGradientBase & (SimpleGradient | MultiStopGradient);
3480
+
3481
+ /**
3482
+ * @public
3483
+ */
3484
+ export declare const RadialGradient: {
3485
+ /**
3486
+ * @param value -
3487
+ * @public
3488
+ */
3489
+ isRadialGradient: (value: unknown) => value is RadialGradient;
3490
+
3491
+
3492
+ };
3493
+
3494
+ /**
3495
+ * @public
3496
+ */
3497
+ export declare interface RadialGradientBase {
3498
+ alpha: number;
3499
+ widthFactor: number;
3500
+ heightFactor: number;
3501
+ centerAnchorX: number;
3502
+ centerAnchorY: number;
3503
+ }
3504
+
3505
+ /** @public */
3506
+ export declare interface RadiusProperties {
3507
+ radius: RadiusValue | Partial<{
3508
+ topLeft: RadiusValue;
3509
+ topRight: RadiusValue;
3510
+ bottomLeft: RadiusValue;
3511
+ bottomRight: RadiusValue;
3512
+ }>;
3513
+ }
3514
+
3515
+ declare type RadiusValue = number | Animatable_2<number> | string;
3516
+
3517
+ /**
3518
+ * @public
3519
+ */
3520
+ export declare interface Rect extends Point, Size {
3521
+ }
3522
+
3523
+ /**
3524
+ * @public
3525
+ */
3526
+ export declare const Rect: {
3527
+ /**
3528
+ *
3529
+ * @param rect -
3530
+ * @param other -
3531
+ * @returns if the input rectangles are equal in size and position
3532
+ * @public
3533
+ */
3534
+ equals: (rect: Rect | null, other: Rect | null) => boolean;
3535
+
3536
+
3537
+
3538
+
3539
+
3540
+
3541
+
3542
+
3543
+
3544
+
3545
+
3546
+
3547
+
3548
+
3549
+
3550
+
3551
+
3552
+
3553
+
3554
+
3555
+
3556
+
3557
+
3558
+
3559
+ /** Takes a rect and transforms it by a matrix, resulting in the bounding rectangle of the
3560
+ * rotated and/or translated original.
3561
+ * @param rect - rectangle to transform
3562
+ * @param matrix - matrix to transform by
3563
+ * @returns The bounding rectangle of the rotated and/or translated rect.
3564
+ */
3565
+ transform: (rect: Rect, matrix: DOMMatrixReadOnly) => Rect;
3566
+
3567
+ /**
3568
+ * Returns wether a rect contains another rect entirely
3569
+ * @param rectA -
3570
+ * @param rectB -
3571
+ * @returns true if rectA contains rectB
3572
+ */
3573
+ containsRect: (rectA: Rect, rectB: Rect) => boolean;
3574
+
3575
+
3576
+
3577
+
3578
+
3579
+
3580
+ /**
3581
+ *
3582
+ * @param rectA -
3583
+ * @param rectB -
3584
+ * @returns if the input rectangles are equal in size and position
3585
+ * @public
3586
+ * @deprecated: please use Rect.equals instead
3587
+ */
3588
+ isEqual: (rectA: Rect | null, rectB: Rect | null) => boolean;
3589
+
3590
+
3591
+
3592
+ delta: (a: Rect, b: Rect) => Point;
3593
+
3594
+
3595
+
3596
+
3597
+ };
3598
+
3599
+ /** @public */
3600
+ export declare type RelativeNumber = `${number}%`;
3601
+
3602
+ /**
3603
+ * The `RenderTarget` represents the current environment in which a component
3604
+ * is running. This is most commonly either the editor canvas in Framer or in
3605
+ * the generated preview window.
3606
+ *
3607
+ * @remarks
3608
+ * Code components can use the `RenderTarget.current()` method to check for
3609
+ * the environment within their components and vary rendering accordingly. The
3610
+ * most common case would be to improve performance while rendering in the
3611
+ * Framer canvas where components that take too long to render will be replaced
3612
+ * with a placeholder. The `RenderTarget.hasRestrictions()` method can be used
3613
+ * to check explicitly for this case.
3614
+ *
3615
+ * @privateRemarks
3616
+ * This is a read-only equivalent of RenderEnvironment.target that is exposed
3617
+ * to components for context-dependent rendering
3618
+ *
3619
+ * @public
3620
+ */
3621
+ export declare type RenderTarget = RenderTargetName;
3622
+
3623
+ export declare const RenderTarget: {
3624
+ /**
3625
+ * The component is to be rendered for the Framer canvas.
3626
+ *
3627
+ * @remarks
3628
+ * ```jsx
3629
+ * function App() {
3630
+ * if (RenderTarget.current() === RenderTarget.canvas) {
3631
+ * return <CanvasComponent />
3632
+ * }
3633
+ * return <DefaultComponent />
3634
+ * }
3635
+ * ```
3636
+ */
3637
+ canvas: RenderTargetName;
3638
+ /**
3639
+ * The component is to be rendered for export.
3640
+ *
3641
+ * @remarks
3642
+ * ```jsx
3643
+ * function App() {
3644
+ * if (RenderTarget.current() === RenderTarget.export) {
3645
+ * return <ExportComponent />
3646
+ * }
3647
+ * return <DefaultComponent />
3648
+ * }
3649
+ * ```
3650
+ */
3651
+ export: RenderTargetName;
3652
+ /**
3653
+ * The component is to be rendered as a preview thumbnail, for example in the
3654
+ * component panel.
3655
+ *
3656
+ * @remarks
3657
+ * ```jsx
3658
+ * function App() {
3659
+ * if (RenderTarget.current() === RenderTarget.thumbnail) {
3660
+ * return <Thumbnail />
3661
+ * }
3662
+ * return <DefaultComponent />
3663
+ * }
3664
+ * ```
3665
+ */
3666
+ thumbnail: RenderTargetName;
3667
+ /**
3668
+ * The component is being rendered in the preview window.
3669
+ *
3670
+ * @remarks
3671
+ * ```jsx
3672
+ * function App() {
3673
+ * React.useEffect(() => {
3674
+ * if (RenderTarget.current() === RenderTarget.preview) {
3675
+ * // Do something in preview.
3676
+ * }
3677
+ * })
3678
+ * return <DefaultComponent />
3679
+ * }
3680
+ * ```
3681
+ */
3682
+ preview: RenderTargetName;
3683
+ /**
3684
+ * Returns the current `RenderTarget` allowing components to apply
3685
+ * different behaviors depending on the environment.
3686
+ *
3687
+ * @remarks
3688
+ * ```jsx
3689
+ * function App() {
3690
+ * if (RenderTarget.current() === RenderTarget.thumbnail) {
3691
+ * return <PreviewIcon />
3692
+ * }
3693
+ * return <Frame>...</Frame>
3694
+ * }
3695
+ * ```
3696
+ */
3697
+ current: () => RenderTargetName;
3698
+ /**
3699
+ * Returns true if the current `RenderTarget` has performance restrictions.
3700
+ * Use this to avoid doing heavy work in these contexts because they may
3701
+ * bail on the rendering if the component takes too long.
3702
+ *
3703
+ * @remarks
3704
+ * ```jsx
3705
+ * function App() {
3706
+ * if (RenderTarget.hasRestrictions()) {
3707
+ * return <SomePlaceholder />
3708
+ * }
3709
+ * return <RichPreviewContent />
3710
+ * }
3711
+ * ```
3712
+ */
3713
+ hasRestrictions: () => boolean;
3714
+ };
3715
+
3716
+ declare enum RenderTargetName {
3717
+ canvas = "CANVAS",
3718
+ export = "EXPORT",
3719
+ thumbnail = "THUMBNAIL",
3720
+ preview = "PREVIEW"
3721
+ }
3722
+
3723
+ /** @public */
3724
+ declare interface ResponsiveImageControlDescription<P = any> extends BaseControlDescription<P> {
3725
+ type: ControlType.ResponsiveImage;
3726
+ }
3727
+
3728
+ /** @public */
3729
+ declare interface RichTextControlDescription<P = any> extends BaseControlDescription<P> {
3730
+ type: ControlType.RichText;
3731
+ defaultValue?: string;
3732
+ placeholder?: string;
3733
+ preventLocalization?: boolean;
3734
+
3735
+ }
3736
+
3737
+ /**
3738
+ * @public
3739
+ */
3740
+ declare interface Route extends RouteInfo {
3741
+ page: RouteComponent;
3742
+ }
3743
+
3744
+ /**
3745
+ * @public
3746
+ */
3747
+ declare type RouteComponent<P = any> = React.ReactElement<P> | React.ComponentType<P> | ComponentWithPreload<React.ComponentType<P>>;
3748
+
3749
+ declare type RouteId = string;
3750
+
3751
+ /**
3752
+ * @public
3753
+ */
3754
+ declare interface RouteInfo {
3755
+ path?: RoutePath;
3756
+ pathLocalized?: Record<LocaleId, RoutePath>;
3757
+ elements?: Elements;
3758
+ collectionId?: string;
3759
+ includedLocales?: LocaleId[];
3760
+ abTestId?: string;
3761
+ abTestingParentId?: string;
3762
+ abTestingVariantId?: string;
3763
+ }
3764
+
3765
+ declare type RoutePath = string;
3766
+
3767
+ /**
3768
+ * @public
3769
+ */
3770
+ declare type Routes = Record<RouteId, Route>;
3771
+
3772
+ declare interface RouteStatus {
3773
+ hasLoaded: boolean;
3774
+ hasRendered: boolean;
3775
+ }
3776
+
3777
+ export declare function safeCSSValue(value: unknown): string | "none";
3778
+
3779
+ /**
3780
+ * @public
3781
+ * @deprecated Creating new Scroll components in Framer is no longer supported as of July 2025.
3782
+ * Existing Scroll components will continue to work, but please use alternative solutions for new
3783
+ * projects.
3784
+ */
3785
+ export declare const Scroll: React_2.ForwardRefExoticComponent<(Omit<EmulatedScrollProps, "ref"> | Omit<NativeScrollProps, "ref">) & React_2.RefAttributes<HTMLDivElement>>;
3786
+
3787
+ /**
3788
+ * The properties for the {@link Scroll} component, which are also available within other components, like {@link Page}.
3789
+ * @public
3790
+ */
3791
+ export declare interface ScrollConfig {
3792
+ /**
3793
+ * Controls the axis of drag-scrolling.
3794
+ * Defaults to `"vertical"` for vertical scrolling.
3795
+ *
3796
+ * @remarks
3797
+ * Set `"horizontal"` or `"vertical"` to only drag in a specific direction.
3798
+ * Set `"both"` to drag both directions.
3799
+ *
3800
+ * ```jsx
3801
+ * // Horizontal
3802
+ * <Scroll direction="horizontal" />
3803
+ *
3804
+ * // Vertical
3805
+ * <Scroll direction="vertical" />
3806
+ *
3807
+ * // Locked
3808
+ * <Scroll direction="locked" />
3809
+ *
3810
+ * // Both directions
3811
+ * <Scroll direction="both" />
3812
+ * ```
3813
+ *
3814
+ * @public
3815
+ */
3816
+ direction?: "horizontal" | "vertical" | "both";
3817
+ /**
3818
+ * If `true`, this will lock dragging to the initial direction.
3819
+ *
3820
+ * @public
3821
+ *
3822
+ * ```jsx
3823
+ * <Scroll direction="both" directionLock={true} />
3824
+ * ```
3825
+ */
3826
+ directionLock?: boolean;
3827
+ /**
3828
+ * Enable or disable dragging to scroll. Defaults to `true`.
3829
+ *
3830
+ * @public
3831
+ *
3832
+ * ```jsx
3833
+ * <Scroll dragEnabled={false} />
3834
+ * ```
3835
+ */
3836
+ dragEnabled?: boolean;
3837
+ /**
3838
+ * Enable or disable wheel scroll. Defaults to `true`.
3839
+ *
3840
+ * @public
3841
+ *
3842
+ * ```jsx
3843
+ * <Scroll wheelEnabled={false} />
3844
+ * ```
3845
+ */
3846
+ wheelEnabled?: boolean;
3847
+ /**
3848
+ * Horizontal offset of the scrollable content. Set to `0` by default
3849
+ *
3850
+ * @remarks
3851
+ * ```jsx
3852
+ * <Scroll contentOffsetX={20} />
3853
+ * ```
3854
+ */
3855
+ contentOffsetX?: MotionValue<number> | number;
3856
+ /**
3857
+ * Vertical offset of the scrollable content. Set to `0` by default.
3858
+ *
3859
+ * @remarks
3860
+ * ```jsx
3861
+ * <Scroll contentOffsetY={20} />
3862
+ * ```
3863
+ */
3864
+ contentOffsetY?: MotionValue<number> | number;
3865
+ /**
3866
+ * Width of the scrollable content.
3867
+ *
3868
+ * @remarks
3869
+ * ```jsx
3870
+ * <Scroll contentWidth={500} />
3871
+ * ```
3872
+ */
3873
+ contentWidth?: number;
3874
+ /**
3875
+ * Height of the scrollable content.
3876
+ *
3877
+ * @remarks
3878
+ * ```jsx
3879
+ * <Scroll contentHeight={500} />
3880
+ * ```
3881
+ */
3882
+ contentHeight?: number;
3883
+ /**
3884
+ * Add a custom control for the scroll animation.
3885
+ * @remarks
3886
+ * ```jsx
3887
+ * const controls = useAnimation()
3888
+ * controls.start({ y: -50 })
3889
+ * <Scroll scrollAnimate={controls} />
3890
+ * ```
3891
+ * @public
3892
+ * */
3893
+ scrollAnimate?: FrameProps["animate"];
3894
+ /**
3895
+ * Flag the scroll component to reset it's scroll offset when it becomes
3896
+ * visible in Framer.
3897
+ *
3898
+ * @remarks
3899
+ * ```jsx
3900
+ * <Scroll resetOffset={true} />
3901
+ * ```
3902
+ * @public
3903
+ * */
3904
+ resetOffset?: boolean;
3905
+ /**
3906
+ * Flag the scroll component to emulate device overdrag.
3907
+ *
3908
+ * @remarks
3909
+ * ```jsx
3910
+ * <Scroll overdragEnabled={false} />
3911
+ * ```
3912
+ * @public
3913
+ * */
3914
+ overdragEnabled?: boolean;
3915
+
3916
+
3917
+ }
3918
+
3919
+ declare type ScrollDirection = "up" | "down";
3920
+
3921
+ /**
3922
+ * @public
3923
+ */
3924
+ export declare interface ScrollEvents {
3925
+ /**
3926
+ * Called when scrolling starts.
3927
+ *
3928
+ * @remarks
3929
+ * ```jsx
3930
+ * function onScrollStart(info) {
3931
+ * console.log(info.offset, info.velocity)
3932
+ * }
3933
+ *
3934
+ * <Scroll onScrollStart={onScrollStart} />
3935
+ * ```
3936
+ * @param info - An {@link PanInfo} object containing `x` and `y` values for:
3937
+ *
3938
+ * - `point`: Relative to the device or page.
3939
+ * - `delta`: Distance moved since the last event.
3940
+ * - `offset`: Offset from the original pan event.
3941
+ * - `velocity`: Current velocity of the pointer.
3942
+ * @public
3943
+ */
3944
+ onScrollStart?(info: PanInfo): void;
3945
+ /**
3946
+ * Called periodically during scrolling.
3947
+ *
3948
+ * @remarks
3949
+ * ```jsx
3950
+ * function onScroll(info) {
3951
+ * console.log(info.offset, info.velocity)
3952
+ * }
3953
+ *
3954
+ * <Scroll onScroll={onScroll} />
3955
+ * ```
3956
+ * @param info - An {@link PanInfo} object containing `x` and `y` values for:
3957
+ *
3958
+ * - `point`: Relative to the device or page.
3959
+ * - `delta`: Distance moved since the last event.
3960
+ * - `offset`: Offset from the original pan event.
3961
+ * - `velocity`: Current velocity of the pointer.
3962
+ * @public
3963
+ */
3964
+ onScroll?(info: PanInfo): void;
3965
+ /**
3966
+ * Called when scrolling ends.
3967
+ *
3968
+ * @remarks
3969
+ * ```jsx
3970
+ * function onScrollEnd(info) {
3971
+ * console.log(info.offset, info.velocity)
3972
+ * }
3973
+ *
3974
+ * <Scroll onScrollEnd={onScrollEnd} />
3975
+ * ```
3976
+ * @param info - An {@link PanInfo} object containing `x` and `y` values for:
3977
+ *
3978
+ * - `point`: Relative to the device or page.
3979
+ * - `delta`: Distance moved since the last event.
3980
+ * - `offset`: Offset from the original pan event.
3981
+ * - `velocity`: Current velocity of the pointer.
3982
+ * @public
3983
+ */
3984
+ onScrollEnd?(info: PanInfo): void;
3985
+ }
3986
+
3987
+ /**
3988
+ * @public
3989
+ */
3990
+ export declare type ScrollProps = EmulatedScrollProps | NativeScrollProps;
3991
+
3992
+ declare interface ScrollSectionRefControlDescription<P = any> extends BaseControlDescription<P> {
3993
+ type: ControlType.ScrollSectionRef;
3994
+ }
3995
+
3996
+ /**
3997
+ * @deprecated Use {@link EnumControlDescription} instead, and enable displaySegmentedControl.
3998
+ * @public
3999
+ */
4000
+ export declare interface SegmentedEnumControlDescription<P = any> extends BaseControlDescription<P> {
4001
+ type: ControlType.SegmentedEnum;
4002
+ defaultValue?: string;
4003
+ options: string[];
4004
+ optionTitles?: string[];
4005
+ }
4006
+
4007
+ /** @public */
4008
+ export declare interface Shadow {
4009
+ color: string;
4010
+ x: number;
4011
+ y: number;
4012
+ blur: number;
4013
+ }
4014
+
4015
+ /** @public */
4016
+ export declare const Shadow: {
4017
+ is: (shadow: any) => shadow is Shadow;
4018
+ };
4019
+
4020
+ /**
4021
+ * @public
4022
+ */
4023
+ declare interface SimpleGradient {
4024
+ start: string;
4025
+ end: string;
4026
+ }
4027
+
4028
+ /**
4029
+ * @public
4030
+ */
4031
+ export declare interface Size {
4032
+ width: number;
4033
+ height: number;
4034
+ }
4035
+
4036
+ export declare const Size: {
4037
+ (width: number, height: number): Size;
4038
+ equals(sizeA: Size | null, sizeB: Size | null): boolean;
4039
+ update(fromSize: Size, toSize: Partial<Size>, keepAspectRatio?: boolean): {
4040
+ width: number;
4041
+ height: number;
4042
+ };
4043
+ subtract(sizeA: Size, sizeB: Size): {
4044
+ width: number;
4045
+ height: number;
4046
+ };
4047
+ /**
4048
+ * @public
4049
+ */
4050
+ zero: Size;
4051
+ isZero(size: Size): boolean;
4052
+ defaultIfZero(width: number, height: number, size: Size): Size;
4053
+ };
4054
+
4055
+ /** @public */
4056
+ declare interface SlotControlDescription<P = any> extends BaseControlDescription<P> {
4057
+ type: ControlType.Slot;
4058
+ maxCount?: number;
4059
+ }
4060
+
4061
+ declare type SpringOptions = TensionFrictionSpringOptions | DampingDurationSpringOptions;
4062
+
4063
+ /**
4064
+ * @public
4065
+ * @deprecated The `Stack` component is being deprecated and will no longer be maintained in future releases. We recommend using flexbox instead for layout needs: {@link https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox}
4066
+ */
4067
+ export declare const Stack: React_2.ForwardRefExoticComponent<Partial<StackProperties> & React_2.RefAttributes<HTMLDivElement>>;
4068
+
4069
+ /**
4070
+ * @public
4071
+ */
4072
+ export declare type StackAlignment = "start" | "center" | "end";
4073
+
4074
+ /**
4075
+ * @public
4076
+ */
4077
+ export declare type StackDirection = "horizontal" | "vertical";
4078
+
4079
+ /**
4080
+ * @public
4081
+ */
4082
+ export declare type StackDistribution = "start" | "center" | "end" | "space-between" | "space-around" | "space-evenly";
4083
+
4084
+ /**
4085
+ * The Stack component will automatically distribute its contents based on its
4086
+ * properties. The Stack component takes the same props as the {@link Frame} component
4087
+ * as well as a few additional interface defined below.
4088
+ *
4089
+ * @remarks
4090
+ * ```jsx
4091
+ * function MyComponent() {
4092
+ * return (
4093
+ * <Stack>
4094
+ * <Frame />
4095
+ * <Frame />
4096
+ * <Frame />
4097
+ * </Stack>
4098
+ * )
4099
+ * }
4100
+ * ```
4101
+ * @public
4102
+ * @deprecated
4103
+ */
4104
+ export declare interface StackProperties extends StackSpecificProps, FrameProps, WillChangeTransformProp {
4105
+ as?: keyof HTMLElementTagNameMap;
4106
+ children?: React_2.ReactNode;
4107
+
4108
+ className?: string;
4109
+ useFlexboxGap?: boolean;
4110
+ }
4111
+
4112
+ /**
4113
+ * @public
4114
+ */
4115
+ export declare interface StackSpecificProps {
4116
+ /**
4117
+ * Defines the flow direction of the stack contents, either `"vertical"` or `"horizontal"`. Set
4118
+ * to `"vertical"` by default.
4119
+ *
4120
+ * @remarks
4121
+ * ```jsx
4122
+ * // Vertical
4123
+ * <Stack direction="vertical" />
4124
+ *
4125
+ * // Horizontal
4126
+ * <Stack direction="horizontal" />
4127
+ * ```
4128
+ */
4129
+ direction: StackDirection;
4130
+ /**
4131
+ * Defines the distribution of the stack contents. Set to `"space-around"` by default, which makes the contents spread evenly across the container.
4132
+ * @remarks
4133
+ *
4134
+ * - `"start"` — from the leading edge of the container.
4135
+ * - `"center"` — centered within the container.
4136
+ * - `"end"` — from the trailing edge of the container.
4137
+ * - `"space-between"` — spread evenly in the container.
4138
+ * - `"space-around"` — spread evenly with excess applied at the start / end.
4139
+ * - `"space-evenly"` — spread with equal padding between contents.
4140
+ *
4141
+ * ```jsx
4142
+ * // Default
4143
+ * <Stack distribution="space-around" />
4144
+ *
4145
+ * // Start
4146
+ * <Stack distribution="start" />
4147
+ *
4148
+ * // Center
4149
+ * <Stack distribution="center" />
4150
+ *
4151
+ * // End
4152
+ * <Stack distribution="end" />
4153
+ *
4154
+ * // Space Between
4155
+ * <Stack distribution="space-between" />
4156
+ *
4157
+ * // Space Around
4158
+ * <Stack distribution="space-around" />
4159
+ *
4160
+ * // Space Evenly
4161
+ * <Stack distribution="space-evenly" />
4162
+ * ```
4163
+ */
4164
+ distribution: StackDistribution;
4165
+ /**
4166
+ * Defines the distribution of the stack contents on the alternative axis to the direction. Can
4167
+ * be one of `"start"`, `"end",` or `"center"`. Set to `"center"` by default.
4168
+ *
4169
+ * @remarks
4170
+ * ```jsx
4171
+ * <Stack alignment="end" />
4172
+ * ```
4173
+ */
4174
+ alignment: StackAlignment;
4175
+ /**
4176
+ * The gap between items in the stack. Set to `10` by default.
4177
+ * @remarks
4178
+ * ```jsx
4179
+ * <Stack gap={120} />
4180
+ * ```
4181
+ */
4182
+ gap: number;
4183
+ /**
4184
+ * Padding to be applied to all sides of container. Set to `0` by default.
4185
+ * @remarks
4186
+ * To specify different padding for each side you can provide
4187
+ * individual `paddingTop`, `paddingLeft`, `paddingRight` and `paddingBottom` values.
4188
+ *
4189
+ * ```jsx
4190
+ * <Stack padding={20} />
4191
+ * ```
4192
+ */
4193
+ padding: number;
4194
+ /**
4195
+ * Flag to tell the Stack to ignore the `padding` prop and apply values per-side.
4196
+ *
4197
+ * @remarks
4198
+ *
4199
+ * ```jsx
4200
+ * <Stack paddingPerSide paddingLeft={20} paddingBottom={20} />
4201
+ * ```
4202
+ */
4203
+ paddingPerSide: boolean;
4204
+ /**
4205
+ * Value for the top padding of the container. Set to `0` by default.
4206
+ *
4207
+ * @remarks
4208
+ *
4209
+ * ```jsx
4210
+ * <Stack paddingTop={20} />
4211
+ * ```
4212
+ */
4213
+ paddingTop: number;
4214
+ /**
4215
+ * Value for the right padding of the container. Set to `0` by default.
4216
+ * @remarks
4217
+ *
4218
+ * ```jsx
4219
+ * <Stack paddingRight={20} />
4220
+ * ```
4221
+ */
4222
+ paddingRight: number;
4223
+ /**
4224
+ * Value for the left padding of the container. Set to `0` by default.
4225
+ * @remarks
4226
+ *
4227
+ * ```jsx
4228
+ * <Stack paddingLeft={20} />
4229
+ * ```
4230
+ */
4231
+ paddingLeft: number;
4232
+ /**
4233
+ * Value for the bottom padding of the container. Set to `0` by default.
4234
+ * @remarks
4235
+ *
4236
+ * ```jsx
4237
+ * <Stack paddingBottom={20} />
4238
+ * ```
4239
+ */
4240
+ paddingBottom: number;
4241
+ /**
4242
+ * Value for wrapping items when they don't fit on the row / column.
4243
+ * @remarks
4244
+ *
4245
+ * ```jsx
4246
+ * <Stack wrap />
4247
+ * ```
4248
+ */
4249
+ wrap: boolean;
4250
+
4251
+
4252
+ }
4253
+
4254
+ /** @public */
4255
+ export declare interface StringControlDescription<P = any> extends BaseControlDescription<P> {
4256
+ type: ControlType.String;
4257
+ defaultValue?: string;
4258
+ placeholder?: string;
4259
+ obscured?: boolean;
4260
+ displayTextArea?: boolean;
4261
+ preventLocalization?: boolean;
4262
+
4263
+ }
4264
+
4265
+ declare interface StyleAppearEffectOptions {
4266
+ styleAppearEffectEnabled: boolean | undefined;
4267
+ threshold: number | undefined;
4268
+ animateOnce: boolean;
4269
+ /**
4270
+ * Because we are using framer-motion variants with an `initial` value to
4271
+ * allow us to avoid problems with static generation, we need to know what
4272
+ * the target opacity or rotate should be, since it may not always be 1, and can't be
4273
+ * read from the DOM. This is because the DOM will have already been written
4274
+ * with the above `opacity` value at mount.
4275
+ */
4276
+ targetOpacity: number | undefined;
4277
+ opacity: number | undefined;
4278
+ x: number | undefined;
4279
+ y: number | undefined;
4280
+ scale: number | undefined;
4281
+ transition: Transition | undefined;
4282
+ rotate: number | undefined;
4283
+ rotateX: number | undefined;
4284
+ rotateY: number | undefined;
4285
+ perspective: number | undefined;
4286
+ enter: Readonly<StyleEffect>;
4287
+ exit: Readonly<StyleEffect>;
4288
+ animate: Partial<Readonly<StyleEffect>>;
4289
+ targets?: EffectStyleScrollTarget[];
4290
+ scrollDirection?: EffectStyleScrollTarget;
4291
+ }
4292
+
4293
+ declare interface StyleEffect extends Record<keyof FXValues, number> {
4294
+ transition?: Transition;
4295
+ }
4296
+
4297
+ declare interface StyleTransformEffectOptions {
4298
+ styleTransformEffectEnabled: boolean | undefined;
4299
+ transformViewportThreshold: number | undefined;
4300
+ spring: SpringOptions_2;
4301
+ transformTrigger: "onScroll" | "onInView" | "onScrollTarget" | undefined;
4302
+ transformTargets: EffectStyleScrollTarget_2[] | undefined;
4303
+ }
4304
+
4305
+ /** Supported rel values for links https://www.iana.org/assignments/link-relations/link-relations.xhtml */
4306
+ declare type SupportedLinkRelValue = (typeof supportedLinkRelValues)[number];
4307
+
4308
+ /** Supported rel values for links https://www.iana.org/assignments/link-relations/link-relations.xhtml */
4309
+ declare const supportedLinkRelValues: readonly ["nofollow", "noreferrer", "me", "ugc", "sponsored"];
4310
+
4311
+ declare interface TensionFrictionSpringOptions {
4312
+ tension: number;
4313
+ friction: number;
4314
+ tolerance: number;
4315
+ velocity: number;
4316
+ }
4317
+
4318
+ /** @public */
4319
+ export declare interface TextColorProperties {
4320
+ color: Color | string;
4321
+ }
4322
+
4323
+ /**
4324
+ * @public
4325
+ * The direction of the text, either "ltr" (left-to-right) or "rtl" (right-to-left).
4326
+ */
4327
+ declare type TextDirection = "ltr" | "rtl";
4328
+
4329
+ declare interface TickerEffectProps {
4330
+ tickerEffectVelocity?: number;
4331
+ /** 0-100 percentage modifier stored as integer */
4332
+ tickerEffectHoverModifier?: number;
4333
+ tickerEffectDirectionModifier?: "default" | "reverse";
4334
+ tickerEffectDraggable?: boolean;
4335
+ tickerEffectAlign?: "start" | "center" | "end";
4336
+ tickerEffectStackDirection?: "column" | "row" | "column-reverse" | "row-reverse";
4337
+ tickerEffectGap?: number | string;
4338
+ tickerEffectXOverflow?: "auto" | "visible" | "hidden" | "clip";
4339
+ tickerEffectYOverflow?: "auto" | "visible" | "hidden" | "clip";
4340
+ tickerEffectOverflow?: "auto" | "visible" | "hidden" | "clip";
4341
+ tickerEffectItemWidth?: "fill" | "auto";
4342
+ tickerEffectItemHeight?: "fill" | "auto";
4343
+ }
4344
+
4345
+ declare interface TickerFrameProps extends TickerEffectProps {
4346
+ tickerEffectEnabled?: boolean;
4347
+ }
4348
+
4349
+ declare interface TickerProps extends HTMLMotionProps<"div">, TickerEffectProps {
4350
+ as?: React.ElementType<HTMLMotionProps<"div">>;
4351
+ }
4352
+
4353
+ declare type ToAnimatableOrValue<PossiblyAnimatable> = PossiblyAnimatable extends Animatable_2<infer Value> ? Value | Animatable_2<Value> : PossiblyAnimatable | Animatable_2<PossiblyAnimatable>;
4354
+
4355
+ /**
4356
+ * Function type for tracking custom events with a valid tracking ID.
4357
+ * Throws an error if the tracking ID is invalid.
4358
+ *
4359
+ * @param trackingId - Valid format: lowercase alphanumeric + hyphens as separators
4360
+ * - No leading/trailing hyphens or consecutive hyphens
4361
+ * - Examples: "button-click", "form-submit", "video-play", "nav-item-1"
4362
+ *
4363
+ * @public
4364
+ */
4365
+ export declare type TrackCustomEvent = <T extends string>(trackingId: ValidTrackingId<T> extends T ? T : ValidTrackingId<T>) => void;
4366
+
4367
+ declare interface TrackingIdControlDescription<P = any> extends BaseControlDescription<P> {
4368
+ type: ControlType.TrackingId;
4369
+ defaultValue?: string;
4370
+ }
4371
+
4372
+ /**
4373
+ * @public
4374
+ */
4375
+ declare type TransactionId = number;
4376
+
4377
+ /** @public */
4378
+ export declare function transformTemplate(center?: boolean | "x" | "y"): (_: any, generated: string) => string;
4379
+
4380
+ /** @public */
4381
+ export declare interface TransitionControlDescription<P = any> extends BaseControlDescription<P> {
4382
+ type: ControlType.Transition;
4383
+ defaultValue?: null | Transition;
4384
+ }
4385
+
4386
+ declare interface UnresolvedSlug {
4387
+ collectionId: string;
4388
+ collectionItemId: string;
4389
+ }
4390
+
4391
+ /**
4392
+ * @public
4393
+ */
4394
+ declare type UpdateFunction<Value> = (change: Change<Value> | undefined, transaction?: TransactionId) => void;
4395
+
4396
+ /**
4397
+ * @public
4398
+ */
4399
+ declare interface UpdateObserver<Value> {
4400
+ onUpdate(handler: Observer<Value>): Cancel;
4401
+ }
4402
+
4403
+ /**
4404
+ * Create callbacks that can be cancelled if the component is unmounted, the
4405
+ * active variant changes, or the component moves out of the target screen in a
4406
+ * Framer prototype.
4407
+ *
4408
+ * @public
4409
+ */
4410
+ export declare function useActiveVariantCallback(baseVariant: string | undefined): {
4411
+ /**
4412
+ * Create a callback that can be cancelled if the base variant changes.
4413
+ */
4414
+ activeVariantCallback: (callback: (...args: unknown[]) => Promise<boolean | undefined>) => (...args: unknown[]) => Promise<unknown>;
4415
+ /**
4416
+ * Execute a callback after a defined period of time. The callback will not
4417
+ * be called if pending events are cancelled because the timeout will be
4418
+ * cancelled.
4419
+ */
4420
+ delay: (callback: () => void, msDelay: number) => Promise<void>;
4421
+ };
4422
+
4423
+ /**
4424
+ * Returns combines React props from a hash map based on the active variants.
4425
+ *
4426
+ * @public
4427
+ */
4428
+ export declare function useAddVariantProps(baseVariant: string | undefined, gestureVariant: string | undefined, variantProps: VariantProps): (id: string) => Record<string, unknown>;
4429
+
4430
+ export { useAnimatedState }
4431
+
4432
+ export declare function useConstant<T>(init: () => T): T;
4433
+
4434
+ export declare function useDynamicRefs<T>(): (key: string) => React_2.RefObject<T>;
4435
+
4436
+ /**
4437
+ * Register a callback to be executed when a gamepad button is pressed and the
4438
+ * registering component is in the current Framer navigation target. Optionally
4439
+ * provide a specific gamepad mapping, or flag the hook to operate on keyup.
4440
+ *
4441
+ * @public
4442
+ */
4443
+ export declare function useGamepad(input: string, callback: () => void, { mapping, on }?: {
4444
+ mapping?: string;
4445
+ on?: "keyup" | "keydown";
4446
+ }): void;
4447
+
4448
+ export { useInvertedScale }
4449
+
4450
+ /**
4451
+ * Used to know if a code component is a child of the current screen.
4452
+ * This can be useful for resetting timers or interactions that need to trigger on every navigation.
4453
+ * @public
4454
+ */
4455
+ export declare function useIsInCurrentNavigationTarget(): boolean;
4456
+
4457
+ /**
4458
+ * Returns a constant value based on whether the caller is mounted in a Framer
4459
+ * Canvas environment.
4460
+ *
4461
+ * @public
4462
+ */
4463
+ export declare function useIsOnFramerCanvas(): boolean;
4464
+
4465
+ /**
4466
+ * Returns a constant value based on whether the caller is mounted in a Framer Canvas or Export
4467
+ * Canvas environment.
4468
+ *
4469
+ * If you need to use this outside of React, use `isStaticRenderer()` instead.
4470
+ *
4471
+ * @public
4472
+ */
4473
+ export declare function useIsStaticRenderer(): boolean;
4474
+
4475
+ /**
4476
+ * @public
4477
+ * @returns The current layout direction, either "ltr" (left-to-right) or "rtl" (right-to-left).
4478
+ */
4479
+ export declare function useLayoutDirection(): TextDirection;
4480
+
4481
+ /**
4482
+ * @public
4483
+ * @returns The current locale code, which is a combination of the language and optional region,
4484
+ * e.g. "en-US".
4485
+ */
4486
+ export declare function useLocaleCode(): string;
4487
+
4488
+ /**
4489
+ * @public
4490
+ * @returns The active locale, all of the available locales, and a way to change the active locale.
4491
+ */
4492
+ export declare function useLocaleInfo(): LocaleInfo;
4493
+
4494
+ /**
4495
+ * @returns NavigationInterface {@link NavigationInterface}
4496
+ * @public
4497
+ */
4498
+ export declare function useNavigation(): NavigationInterface;
4499
+
4500
+ /**
4501
+ * Makes the component re-render when `Data` changes
4502
+ * @returns `true` if observing succeeds (context is provided), `false` when it fails
4503
+ * @public
4504
+ */
4505
+ export declare function useObserveData(): boolean;
4506
+
4507
+ /**
4508
+ * Executes a callback when the base variant changes. Events will not be
4509
+ * executed on the Framer canvas.
4510
+ *
4511
+ * @public
4512
+ */
4513
+ export declare function useOnVariantChange(variant: string, callbackMap: CallbackMap): void;
4514
+
4515
+ /**
4516
+ * When managing hiding/showing overlays, we want to prevent accidental body
4517
+ * scrolling beneath the overlay. This hook decorates a normal React useState
4518
+ * hook with solving this problem.
4519
+ *
4520
+ * @public
4521
+ */
4522
+ export declare function useOverlayState({ blockDocumentScrolling, }?: {
4523
+ blockDocumentScrolling?: boolean;
4524
+ }): readonly [boolean, (show: boolean) => Promise<void>];
4525
+
4526
+ /** @public */
4527
+ export declare const useProvidedWindow: () => (Window & typeof globalThis) | null | undefined;
4528
+
4529
+ /**
4530
+ * When a Scroll Section is provided to a Layout Template as a property by a Web
4531
+ * Page, we need to create the ref on a context so that it is available in the
4532
+ * parent Layout Template.
4533
+ */
4534
+ export declare function useSiteRefs<T extends HTMLElement>(): (key: string) => React_2.RefObject<T> | undefined;
4535
+
4536
+ /**
4537
+ * React hook for tracking custom events on published Framer sites.
4538
+ *
4539
+ * @returns {TrackCustomEvent} Function that sends tracking events with valid IDs.
4540
+ * Throws an error if the tracking ID is invalid.
4541
+ *
4542
+ * Tracking ID rules:
4543
+ * - Lowercase letters (a-z) and numbers (0-9) only
4544
+ * - Hyphens (-) as separators (no leading/trailing or consecutive hyphens)
4545
+ * - Valid: "button-click", "form-submit", "video-play", "nav-item-1"
4546
+ * - Invalid: "Button-Click", "form--submit", "-button-click", "button_utils"
4547
+ *
4548
+ * @example
4549
+ *
4550
+ * ```
4551
+ * function MyButton() {
4552
+ * const trackEvent = useTracking()
4553
+ * return <button onClick={() => trackEvent("button-click")}>Click me</button>
4554
+ * }
4555
+ * ```
4556
+ *
4557
+ * @public
4558
+ */
4559
+ export declare function useTracking(): TrackCustomEvent;
4560
+
4561
+ /**
4562
+ * Handle stateful logic in Framer Canvas Components.
4563
+ *
4564
+ * @public
4565
+ */
4566
+ export declare function useVariantState({ variant, defaultVariant: externalDefaultVariant, transitions: externalTransitions, enabledGestures: externalEnabledGestures, cycleOrder: externalCycleOrder, variantProps, variantClassNames, ref, }: {
4567
+ defaultVariant: string;
4568
+ cycleOrder: string[];
4569
+ variant?: string;
4570
+ transitions?: Record<string, Partial<Transition>>;
4571
+ enabledGestures?: EnabledVariantGestures;
4572
+ variantProps?: VariantProps;
4573
+ variantClassNames?: Record<string, string>;
4574
+ ref?: React.RefObject<HTMLElement>;
4575
+ }): VariantState;
4576
+
4577
+ /**
4578
+ * @public
4579
+ */
4580
+ declare type UtilsByCollectionId = Record<string, () => Promise<CollectionUtils | undefined>>;
4581
+
4582
+ /**
4583
+ * @public
4584
+ */
4585
+ declare type ValidTrackingId<S extends string> = S extends `-${string}` | `${string}-` | `${string}--${string}` | "" ? `Error: Invalid hyphen usage or empty string.` : S extends `${infer P1}-${infer P2}` ? IsAlphaNumeric<P1> extends true ? ValidTrackingId<P2> extends P2 ? S : ValidTrackingId<P2> : `Error: The part '${P1}' should only contain lowercase alphanumeric characters (a to z, 0 to 9). Example: 'my-id' is correct, 'My-ID' is not.` : IsAlphaNumeric<S> extends true ? S : `Error: The part '${S}' should only contain lowercase alphanumeric characters (a to z, 0 to 9). Example: 'my-id' is correct, 'My-ID' is not.`;
4586
+
4587
+ declare interface VariantAppearEffectOptions {
4588
+ visibleVariantId: string | undefined;
4589
+ obscuredVariantId: string | undefined;
4590
+ threshold: number | undefined;
4591
+ animateOnce: boolean;
4592
+ variantAppearEffectEnabled: true | undefined;
4593
+ targets?: EffectVariantScrollTarget[];
4594
+ exitTarget?: boolean;
4595
+ scrollDirection?: EffectVariantScrollTarget;
4596
+ }
4597
+
4598
+ declare type VariantNames = string[];
4599
+
4600
+ /**
4601
+ * Variant / Node Id / React Prop / Val
4602
+ *
4603
+ * @public
4604
+ */
4605
+ declare type VariantProps = Record<string, Record<string, Record<string, unknown>>>;
4606
+
4607
+ declare interface VariantState {
4608
+ variants: VariantNames;
4609
+ baseVariant: string | undefined;
4610
+ gestureVariant: string | undefined;
4611
+ classNames: string;
4612
+ transition: Partial<Transition> | undefined;
4613
+ gestureHandlers: GestureHandlers;
4614
+ setVariant: (variant: string | typeof CycleVariantState, pauseOffscreen?: boolean) => void;
4615
+ setGestureState: (gestureState: GestureState) => void;
4616
+ clearLoadingGesture: () => void;
4617
+ addVariantProps?: (id: string) => Record<string, unknown>;
4618
+ }
4619
+
4620
+ /**
4621
+ * @public
4622
+ */
4623
+ export declare const version: string;
4624
+
4625
+ /**
4626
+ * @privateRemarks do no use separately from FrameProps
4627
+ * @public
4628
+ * */
4629
+ export declare interface VisualProperties {
4630
+ /**
4631
+ * Defines whether or not the `Frame` is visible. Unlike `opacity`, this property cannot be animated. Set to `true` by default. Maps to CSS.
4632
+ * @remarks
4633
+ * ```jsx
4634
+ * <Frame visible={false} />
4635
+ * ```
4636
+ * @public
4637
+ */
4638
+ visible: boolean;
4639
+ /**
4640
+ * Set the opacity value, which allows you to make elements semi-transparent or entirely hidden. Useful for show-and-hide animations.
4641
+ * Set to `1` by default.
4642
+ * @remarks
4643
+ * ```jsx
4644
+ * <Frame opacity={0.5} />
4645
+ * ```
4646
+ * @public
4647
+ */
4648
+ opacity: number | MotionValue<number>;
4649
+ /**
4650
+ * Set the CSS border property, which accepts width, style and color.
4651
+ * Set to `"none"` by default.
4652
+ * @remarks
4653
+ * ```jsx
4654
+ * <Frame border="1px solid #09F" />
4655
+ * ```
4656
+ * @public
4657
+ */
4658
+ border: string | MotionValue<string>;
4659
+ /**
4660
+ * Set the CSS border-radius property, in pixels or percentages.
4661
+ * Set to `0` by default.
4662
+ * @remarks
4663
+ * ```jsx
4664
+ * // Radius with pixels
4665
+ * <Frame radius={10} />
4666
+ *
4667
+ * // Radius with percentages
4668
+ * <Frame radius="50%" />
4669
+ * ```
4670
+ * @public
4671
+ */
4672
+ radius: number | string | MotionValue<number | string>;
4673
+ /**
4674
+ * Set the CSS border-radius property, in pixels or percentages. Alias for `radius`
4675
+ * Set to `0` by default.
4676
+ * @remarks
4677
+ * ```jsx
4678
+ * // Radius with pixels
4679
+ * <Frame borderRadius={10} />
4680
+ *
4681
+ * // Radius with percentages
4682
+ * <Frame borderRadius="50%" />
4683
+ * ```
4684
+ * @public
4685
+ */
4686
+ borderRadius: number | string | MotionValue<number | string>;
4687
+ /**
4688
+ * Set the color for text elements inside of a `Frame`. By default, text within Frames will be rendered in black.
4689
+ * @remarks
4690
+ * ```jsx
4691
+ * <Frame color="#09F" />
4692
+ * ```
4693
+ * @public
4694
+ */
4695
+ color: string | MotionValue<string>;
4696
+ /**
4697
+ * Set the CSS overflow property. Set to `"visible"` by default.
4698
+ * @remarks
4699
+ * ```jsx
4700
+ * <Frame overflow="hidden" />
4701
+ * ```
4702
+ * @public
4703
+ */
4704
+ overflow: "visible" | "hidden" | "auto";
4705
+ /**
4706
+ * Set the CSS box-shadow property.
4707
+ * @remarks
4708
+ * ```jsx
4709
+ * <Frame shadow="10px 5px 5px black" />
4710
+ * ```
4711
+ * @public
4712
+ */
4713
+ shadow: string | MotionValue<string>;
4714
+ /**
4715
+ * Position the children of the frame in 3D space. Set to `false` by default.
4716
+ * @remarks
4717
+ * ```jsx
4718
+ * <Frame preserve3d={true} />
4719
+ * ```
4720
+ * @public
4721
+ */
4722
+ preserve3d: boolean;
4723
+ /**
4724
+ * Sets whether the back face is visible when turned towards the user. Set to `true` by default.
4725
+ * @remarks
4726
+ * ```jsx
4727
+ * <Frame backfaceVisible={true} />
4728
+ * ```
4729
+ * @public
4730
+ */
4731
+ backfaceVisible: boolean;
4732
+ }
4733
+
4734
+ declare interface WillChangeTransformProp {
4735
+ /** @deprecated */
4736
+ willChangeTransform?: boolean;
4737
+ }
4738
+
4739
+ /** @public */
4740
+ export declare const WindowContext: React_2.Context<(Window & typeof globalThis) | null | undefined>;
4741
+
4742
+ /**
4743
+ * Render a React component with css that will be injected into the document's
4744
+ * head when the component is first rendered. The escapedCSS argument can either
4745
+ * be a string where each line is a css rule, or an array of css rule strings.
4746
+ *
4747
+ * @public
4748
+ */
4749
+ export declare const withCSS: <T extends object>(Component: React_2.ComponentType<T>, escapedCSS: ((target: RenderTarget, props?: T) => string[]) | string[] | string, componentSerializationId: string) => React_2.ForwardRefExoticComponent<React_2.PropsWithoutRef<T> & React_2.RefAttributes<unknown>>;
4750
+
4751
+ declare interface WithEventsProperties extends WithPanHandlers, WithTapHandlers, WithMouseHandlers, WithMouseWheelHandler {
4752
+ }
4753
+
4754
+ /**
4755
+ * @public
4756
+ */
4757
+ export declare interface WithFractionOfFreeSpace {
4758
+
4759
+
4760
+ }
4761
+
4762
+ export declare const withFX: <T extends FXProps>(Component: React_2.ComponentType<T>) => React_2.ForwardRefExoticComponent<React_2.PropsWithoutRef<T> & React_2.RefAttributes<HTMLElement>>;
4763
+
4764
+ /**
4765
+ * Smart Component instances are code-generated with immutable react property
4766
+ * keys. This ensures that renaming or reordering variables in Framer, doesn't
4767
+ * cause dependents of the Smart Component to provide incorrect values to the
4768
+ * new component.
4769
+ *
4770
+ * However, when a user adds a code override to a smart component, they expect
4771
+ * to be able to reference the props by their human readable name. To allow
4772
+ * that, this HOC can be wrapped around all of the override HOCs, and when
4773
+ * provided an object with ids that map to the human readable property, will
4774
+ * remap the props so that those human readable keys are used instead of the
4775
+ * immutable ids, and this remapped version of props can be consumed by all user
4776
+ * overrides.
4777
+ */
4778
+ export declare function withMappedReactProps<T extends object>(Component: React_2.ComponentType<T>, info: Record<string, unknown>): (rawProps: T) => JSX_2.Element;
4779
+
4780
+ declare interface WithMouseHandlers {
4781
+ onMouseDown: EventHandler;
4782
+ onClick: EventHandler;
4783
+ onMouseUp: EventHandler;
4784
+ onMouseEnter: EventHandler;
4785
+ onMouseLeave: EventHandler;
4786
+ }
4787
+
4788
+ declare interface WithMouseWheelHandler {
4789
+ onMouseWheelStart: EventHandler;
4790
+ onMouseWheel: EventHandler;
4791
+ onMouseWheelEnd: EventHandler;
4792
+ }
4793
+
4794
+ /** @public */
4795
+ export declare interface WithOpacity {
4796
+ opacity: number | Animatable_2<number>;
4797
+ }
4798
+
4799
+ declare interface WithPanHandlers {
4800
+ onPanStart: EventHandler;
4801
+ onPan: EventHandler;
4802
+ onPanEnd: EventHandler;
4803
+ }
4804
+
4805
+ /**
4806
+ * @public
4807
+ * @deprecated
4808
+ */
4809
+ export declare const withParallaxTransform: <T extends Partial<Prefixed<ParallaxTransformOptions & StyleAppearEffectOptions & StyleTransformEffectOptions>> & Partial<MotionProps> & {
4810
+ __withFX?: boolean;
4811
+ __perspectiveFX?: boolean;
4812
+ __targetOpacity?: number;
4813
+ __smartComponentFX?: boolean;
4814
+ } & Record<string, unknown>>(Component: React.ComponentType<T>) => ForwardRefExoticComponent<PropsWithoutRef<T> & RefAttributes<HTMLElement>>;
4815
+
4816
+ /**
4817
+ * @public
4818
+ * @deprecated
4819
+ */
4820
+ export declare const withStyleAppearEffect: <T extends Partial<Prefixed<ParallaxTransformOptions & StyleAppearEffectOptions & StyleTransformEffectOptions>> & Partial<MotionProps> & {
4821
+ __withFX?: boolean;
4822
+ __perspectiveFX?: boolean;
4823
+ __targetOpacity?: number;
4824
+ __smartComponentFX?: boolean;
4825
+ } & Record<string, unknown>>(Component: React.ComponentType<T>) => ForwardRefExoticComponent<PropsWithoutRef<T> & RefAttributes<HTMLElement>>;
4826
+
4827
+ declare interface WithTapHandlers {
4828
+ onTapStart: EventHandler;
4829
+ onTap: EventHandler;
4830
+ onTapEnd: EventHandler;
4831
+ }
4832
+
4833
+ export declare const withTickerFX: <T extends PropsWithChildren<TickerProps> & Record<string, unknown>>(Component: React.ComponentType<T>) => (props: T) => JSX_2.Element;
4834
+
4835
+ export declare const withV1StrokeFX: <T extends MotionProps>(Component: React_2.ComponentType<T>) => React_2.ForwardRefExoticComponent<React_2.PropsWithoutRef<Props_4 & T> & React_2.RefAttributes<SVGElement>>;
4836
+
4837
+ /**
4838
+ * @public
4839
+ */
4840
+ export declare const withVariantAppearEffect: <T extends {
4841
+ variant?: string | undefined;
4842
+ } & object>(Component: React_2.ComponentType<T>) => React_2.ForwardRefExoticComponent<React_2.PropsWithoutRef<Prefixed<VariantAppearEffectOptions> & T> & React_2.RefAttributes<HTMLElement>>;
4843
+
4844
+ /**
4845
+ * Allow motion elements inside of a Smart Component, which uses `animate`
4846
+ * inheritance to update visual variants, to perform presence animations without
4847
+ * breaking inheritance of the active variant for descendants.
4848
+ *
4849
+ * @deprecated - This component was used before we generally supported effects
4850
+ * in smart components, when we supported appear effects for relative overlays.
4851
+ * It is now no longer code-generated, and replaced with withFX. This does not
4852
+ * mean we can remove this code. Code generated by Framer may still import it.
4853
+ */
4854
+ export declare const withVariantFX: <T extends MotionProps>(Component: React_2.ComponentType<T>) => React_2.ForwardRefExoticComponent<React_2.PropsWithoutRef<Props_3<T>> & React_2.RefAttributes<HTMLElement>>;
4855
+
4856
+
4857
+
4858
+
4859
+ export { }
4860
+ export declare const combinedCSSRules: string[]
4861
+
4862
+ export interface FramerMotionGlobalConfig {
4863
+ useManualTiming?: boolean
4864
+ instantAnimations?: boolean
4865
+ skipAnimations?: boolean
4866
+ mix?: unknown
4867
+ WillChange?: new (value: string) => unknown
4868
+ }
4869
+
4870
+ export interface FramerInjectedRuntimeImage {
4871
+ src?: string
4872
+ srcSet?: string
4873
+ }
4874
+
4875
+ export interface FramerInjectedRuntimeRect {
4876
+ width?: number
4877
+ height?: number
4878
+ }
4879
+
4880
+ export interface FramerInjectedRuntime {
4881
+ imagePlaceholderSvg?: string
4882
+ useImageSource?(image: FramerInjectedRuntimeImage, rect?: FramerInjectedRuntimeRect, nodeId?: string): string
4883
+ useImageElement?(image: FramerInjectedRuntimeImage, rect?: FramerInjectedRuntimeRect, nodeId?: string): HTMLImageElement
4884
+ canRenderOptimizedCanvasImage?(src?: string): boolean
4885
+ isOnPageCanvas?: boolean
4886
+ }
4887
+
4888
+ export interface FramerMotionFrameData {
4889
+ delta: number
4890
+ timestamp: number
4891
+ isProcessing: boolean
4892
+ }
4893
+
4894
+ export type FramerMotionFrameCallback = (frameData: FramerMotionFrameData) => void
4895
+
4896
+ export interface FramerMotionFrameStep {
4897
+ schedule(callback: FramerMotionFrameCallback, keepAlive?: boolean, immediate?: boolean): FramerMotionFrameCallback
4898
+ cancel(callback: FramerMotionFrameCallback): void
4899
+ process(frameData: FramerMotionFrameData): void
4900
+ }
4901
+
4902
+ export type FramerMotionFrameStepName =
4903
+ | 'setup'
4904
+ | 'read'
4905
+ | 'resolveKeyframes'
4906
+ | 'preUpdate'
4907
+ | 'update'
4908
+ | 'preRender'
4909
+ | 'render'
4910
+ | 'postRender'
4911
+
4912
+ export type FramerMotionFrameSteps = Record<FramerMotionFrameStepName, FramerMotionFrameStep>
4913
+
4914
+ export interface FramerMotionTime {
4915
+ now(): number
4916
+ set(newTime: number): void
4917
+ }
4918
+
4919
+ export interface FramerMotionGeneratorState<Value = unknown> {
4920
+ value: Value
4921
+ done?: boolean
4922
+ }
4923
+
4924
+ export interface FramerMotionGenerator<Value = unknown> {
4925
+ calculatedDuration?: number | null
4926
+ next(time: number): FramerMotionGeneratorState<Value>
4927
+ velocity?(time: number): number
4928
+ }
4929
+
4930
+ export interface FramerMotionAnimationDriver {
4931
+ now(): number
4932
+ start(autoplay?: boolean): void
4933
+ stop(): void
4934
+ }
4935
+
4936
+ export interface FramerMotionAnimationOptions<Value = unknown> {
4937
+ keyframes: Value[]
4938
+ autoplay?: boolean
4939
+ delay?: number
4940
+ repeat?: number
4941
+ repeatDelay?: number
4942
+ repeatType?: 'loop' | 'reverse' | 'mirror'
4943
+ velocity?: number
4944
+ finalKeyframe?: Value
4945
+ startTime?: number
4946
+ allowFlatten?: boolean
4947
+ motionValue?: { updatedAt?: number }
4948
+ type?: (options: FramerMotionAnimationOptions<Value>) => FramerMotionGenerator<Value>
4949
+ driver?: (update: (timestamp: number) => void) => FramerMotionAnimationDriver
4950
+ onUpdate?(latest: Value): void
4951
+ onPlay?(): void
4952
+ onComplete?(): void
4953
+ onCancel?(): void
4954
+ onStop?(): void
4955
+ }
4956
+
4957
+ export declare class JSAnimation<Value = unknown> implements PromiseLike<void> {
4958
+ constructor(options: FramerMotionAnimationOptions<Value>)
4959
+ options: FramerMotionAnimationOptions<Value>
4960
+ state: 'idle' | 'running' | 'paused' | 'finished'
4961
+ currentTime: number
4962
+ playbackSpeed: number
4963
+ readonly duration: number
4964
+ readonly iterationDuration: number
4965
+ time: number
4966
+ speed: number
4967
+ readonly finished: Promise<void>
4968
+ then<TResult1 = void, TResult2 = never>(
4969
+ onfulfilled?: ((value: void) => TResult1 | PromiseLike<TResult1>) | null,
4970
+ onrejected?: ((reason: Error) => TResult2 | PromiseLike<TResult2>) | null,
4971
+ ): Promise<TResult1 | TResult2>
4972
+ play(): void
4973
+ pause(): void
4974
+ complete(): void
4975
+ finish(): void
4976
+ cancel(): void
4977
+ stop(): void
4978
+ tick(timestamp: number, sample?: boolean): FramerMotionGeneratorState<Value>
4979
+ sample(sampleTime: number): FramerMotionGeneratorState<Value>
4980
+ attachTimeline(timeline: { observe(animation: JSAnimation<Value>): VoidFunction }): VoidFunction
4981
+ }
4982
+
4983
+ export declare const MotionGlobalConfig: FramerMotionGlobalConfig
4984
+ export declare const frameData: FramerMotionFrameData
4985
+ export declare const frameSteps: FramerMotionFrameSteps
4986
+ export declare const time: FramerMotionTime
4987
+ export declare const visualElementStore: WeakMap<object, unknown>
4988
+ export declare function _injectRuntime(injectedRuntime: FramerInjectedRuntime): void
4989
+
4990
+ export * from 'real-framer-motion'