@web-my-money/blocks 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/fx.d.mts ADDED
@@ -0,0 +1,314 @@
1
+ import * as React from 'react';
2
+
3
+ interface AuroraBackgroundProps {
4
+ /** Blur radius of the aurora blobs. Default "80px". */
5
+ blur?: string;
6
+ /** Overall opacity 0–1. Default 0.6. */
7
+ intensity?: number;
8
+ /** Animation duration in seconds for one drift cycle. Default 18. */
9
+ speed?: number;
10
+ /** Render a subtle radial vignette over the blobs. Default true. */
11
+ vignette?: boolean;
12
+ className?: string;
13
+ }
14
+ /**
15
+ * Animated aurora — slowly drifting blurred color blobs. Pure CSS, GPU-only
16
+ * (transform/opacity), no JS in the render loop. Theme-aware: pulls --primary
17
+ * and --accent via color-mix so it re-skins per brand.
18
+ *
19
+ * <div className="relative">
20
+ * <AuroraBackground />
21
+ * <YourContent />
22
+ * </div>
23
+ */
24
+ declare function AuroraBackground({ blur, intensity, speed, vignette, className, }: AuroraBackgroundProps): React.JSX.Element;
25
+
26
+ interface MeshGradientProps {
27
+ /** Animation duration in seconds. Default 15. */
28
+ speed?: number;
29
+ /** Overall opacity 0–1. Default 0.5. */
30
+ intensity?: number;
31
+ /** Static (no animation). Default false. */
32
+ static?: boolean;
33
+ className?: string;
34
+ }
35
+ /**
36
+ * Animated mesh gradient — multiple soft radial color stops panned across the
37
+ * surface. Pure CSS (background-position animation). Theme-aware via tokens.
38
+ */
39
+ declare function MeshGradient({ speed, intensity, static: isStatic, className, }: MeshGradientProps): React.JSX.Element;
40
+
41
+ interface GridBackgroundProps {
42
+ /** "dot" (default) or "line" grid. */
43
+ variant?: "dot" | "line";
44
+ /** Grid cell size in px. Default 32. */
45
+ size?: number;
46
+ /** Reveal the grid under a cursor-following spotlight only. Default false (grid always visible). */
47
+ spotlight?: boolean;
48
+ /** Spotlight radius in px when spotlight=true. Default 220. */
49
+ spotlightRadius?: number;
50
+ /** Fade the grid toward the edges. Default true. */
51
+ fade?: boolean;
52
+ className?: string;
53
+ }
54
+ /**
55
+ * Dot or line grid background. Optionally only reveals near the cursor
56
+ * (spotlight mode). Theme-aware (uses --border / faint foreground). The
57
+ * spotlight handler only writes two CSS vars on rAF — cheap.
58
+ */
59
+ declare function GridBackground({ variant, size, spotlight, spotlightRadius, fade, className, }: GridBackgroundProps): React.JSX.Element;
60
+
61
+ interface SpotlightBackgroundProps {
62
+ /** Spotlight radius in px. Default 400. */
63
+ radius?: number;
64
+ /** Spotlight opacity 0–1. Default 0.15. */
65
+ intensity?: number;
66
+ /** When true, the spotlight gently floats on its own until the pointer moves. Default true. */
67
+ idleFloat?: boolean;
68
+ className?: string;
69
+ }
70
+ /**
71
+ * A large radial glow that follows the cursor across the section — the classic
72
+ * "spotlight" hero effect. Uses --primary, theme-aware. Pointer handler is
73
+ * rAF-throttled and only writes CSS vars.
74
+ */
75
+ declare function SpotlightBackground({ radius, intensity, idleFloat, className, }: SpotlightBackgroundProps): React.JSX.Element;
76
+
77
+ interface ParticleFieldProps {
78
+ /** Particle count. Auto-scaled down on small screens. Default 60. */
79
+ count?: number;
80
+ /** Draw connecting lines between nearby particles. Default true. */
81
+ connect?: boolean;
82
+ /** Max distance (px) to draw a connection. Default 130. */
83
+ linkDistance?: number;
84
+ /** Particle + line color. Defaults to the live --primary token, falls back to currentColor. */
85
+ color?: string;
86
+ /** Particle drift speed multiplier. Default 1. */
87
+ speed?: number;
88
+ /** Particles gently drift toward the cursor. Default true. */
89
+ interactive?: boolean;
90
+ className?: string;
91
+ }
92
+ /**
93
+ * Lightweight canvas "constellation" — drifting particles with proximity links.
94
+ * Performance guards: capped count, single rAF, pauses when off-screen or tab
95
+ * hidden, honors prefers-reduced-motion (renders one static frame). No deps.
96
+ * Color is read from the live --primary CSS var so it adapts per theme/brand.
97
+ */
98
+ declare function ParticleField({ count, connect, linkDistance, color, speed, interactive, className, }: ParticleFieldProps): React.JSX.Element;
99
+
100
+ interface NoiseOverlayProps {
101
+ /** Opacity 0–1. Default 0.04. */
102
+ opacity?: number;
103
+ /** Blend mode for the grain. Default "overlay". */
104
+ blend?: React.CSSProperties["mixBlendMode"];
105
+ className?: string;
106
+ }
107
+ /**
108
+ * Film-grain / noise overlay. Composes on top of any background to add texture
109
+ * and break up gradient banding. ~0 cost — a single repeating data-URI SVG.
110
+ */
111
+ declare function NoiseOverlay({ opacity, blend, className }: NoiseOverlayProps): React.JSX.Element;
112
+
113
+ type BackgroundVariant = "none" | "aurora" | "mesh" | "grid" | "spotlight" | "particles";
114
+ type FxThemeName = "light" | "dark" | "wmm";
115
+ declare const BACKGROUND_VARIANTS: BackgroundVariant[];
116
+ interface FxPreferences {
117
+ background: BackgroundVariant;
118
+ setBackground: (b: BackgroundVariant) => void;
119
+ /** Selected logo option id (when a logo picker is wired into the studio). */
120
+ logo: string | null;
121
+ setLogo: (id: string | null) => void;
122
+ /** Theme — mirrors @web-my-money/tokens runtime (data-theme + `wmm-theme`). */
123
+ theme: FxThemeName;
124
+ setTheme: (t: FxThemeName) => void;
125
+ }
126
+ interface FxPreferencesProviderProps {
127
+ children: React.ReactNode;
128
+ /** Background shown before the user picks one. Default "none". */
129
+ defaultBackground?: BackgroundVariant;
130
+ }
131
+ /**
132
+ * Holds the user's live design choices (background + logo + theme) and persists
133
+ * them to localStorage. Theme is written with the SAME attribute/key as
134
+ * @web-my-money/tokens, so the two stay in sync without a hard dependency.
135
+ *
136
+ * <FxPreferencesProvider>
137
+ * <DynamicBackground /> // reflects the choice
138
+ * <DesignStudio /> // changes the choice
139
+ * {app}
140
+ * </FxPreferencesProvider>
141
+ */
142
+ declare function FxPreferencesProvider({ children, defaultBackground, }: FxPreferencesProviderProps): React.JSX.Element;
143
+ /** Read + control design preferences. Must be inside <FxPreferencesProvider>. */
144
+ declare function useFxPreferences(): FxPreferences;
145
+ /** Internal — nullable read so uncontrolled components degrade gracefully. */
146
+ declare function useOptionalFxPreferences(): FxPreferences | null;
147
+
148
+ interface DynamicBackgroundProps {
149
+ /**
150
+ * Which background to render. If omitted, reads the current choice from
151
+ * <FxPreferencesProvider> (controlled by <DesignStudio>). Defaults to "none".
152
+ */
153
+ variant?: BackgroundVariant;
154
+ /** Overlay film grain on top of the background. Default false. */
155
+ noise?: boolean;
156
+ /** Per-variant prop overrides. */
157
+ aurora?: AuroraBackgroundProps;
158
+ mesh?: MeshGradientProps;
159
+ grid?: GridBackgroundProps;
160
+ spotlight?: SpotlightBackgroundProps;
161
+ particles?: ParticleFieldProps;
162
+ className?: string;
163
+ }
164
+ /**
165
+ * Resolver that renders whichever dynamic background is selected — either via
166
+ * the `variant` prop (uncontrolled) or from FxPreferences (controlled by the
167
+ * DesignStudio). Drop one of these behind your content.
168
+ */
169
+ declare function DynamicBackground({ variant, noise, aurora, mesh, grid, spotlight, particles, className, }: DynamicBackgroundProps): React.JSX.Element | null;
170
+
171
+ interface SpotlightCardProps extends React.HTMLAttributes<HTMLDivElement> {
172
+ /** Glow radius in px. Default 320. */
173
+ radius?: number;
174
+ /** Glow strength 0–1. Default 0.12. */
175
+ intensity?: number;
176
+ /** Also brighten the border under the cursor. Default true. */
177
+ borderGlow?: boolean;
178
+ children: React.ReactNode;
179
+ }
180
+ /**
181
+ * Card with a cursor-following radial glow (Linear / Vercel style). The glow is
182
+ * a layer whose position is driven by two CSS vars updated on rAF — no re-render
183
+ * per mouse move. Theme-aware via --primary.
184
+ */
185
+ declare function SpotlightCard({ radius, intensity, borderGlow, className, children, style, ...rest }: SpotlightCardProps): React.JSX.Element;
186
+
187
+ interface TiltCardProps extends React.HTMLAttributes<HTMLDivElement> {
188
+ /** Max tilt in degrees. Default 10. */
189
+ max?: number;
190
+ /** Lift the card toward the viewer on hover (px of translateZ). Default 0. */
191
+ lift?: number;
192
+ /** Add a glare highlight that follows the cursor. Default true. */
193
+ glare?: boolean;
194
+ children: React.ReactNode;
195
+ }
196
+ /**
197
+ * 3D tilt-on-hover card. Pointer position maps to rotateX/rotateY with a spring
198
+ * for buttery motion (framer-motion, already a blocks dep). Honors reduced-motion
199
+ * by simply not tilting.
200
+ */
201
+ declare function TiltCard({ max, lift, glare, className, children, style, ...rest }: TiltCardProps): React.JSX.Element;
202
+
203
+ interface MagneticProps {
204
+ /** How strongly the element is pulled toward the cursor, 0–1. Default 0.35. */
205
+ strength?: number;
206
+ /** Activation radius in px around the element. Default 120. */
207
+ radius?: number;
208
+ className?: string;
209
+ children: React.ReactNode;
210
+ }
211
+ /**
212
+ * Magnetic wrapper — pulls its child toward the cursor when nearby, springs back
213
+ * on leave. Wrap a button, icon, or logo. Spring-driven (framer-motion).
214
+ */
215
+ declare function Magnetic({ strength, radius, className, children }: MagneticProps): React.JSX.Element;
216
+
217
+ interface BorderBeamProps {
218
+ /** Border thickness in px. Default 1.5. */
219
+ size?: number;
220
+ /** Seconds for one full revolution. Default 6. */
221
+ speed?: number;
222
+ /** Corner radius to match the parent, in px. Default 16. */
223
+ radius?: number;
224
+ /** Beam color. Defaults to --primary. */
225
+ color?: string;
226
+ className?: string;
227
+ }
228
+ /**
229
+ * Animated gradient border — a light sweeps continuously around the edge
230
+ * (Magic UI "border beam" style). Implemented with a single rotating conic
231
+ * gradient clipped to a thin rim via mask compositing — no @property, works
232
+ * everywhere. Place inside a `position: relative` parent.
233
+ */
234
+ declare function BorderBeam({ size, speed, radius, color, className, }: BorderBeamProps): React.JSX.Element;
235
+
236
+ interface Logo3DProps {
237
+ /** The logo to render in 3D — an <svg>, <img>, or any node. */
238
+ children: React.ReactNode;
239
+ /** Max tilt in degrees. Default 18. */
240
+ max?: number;
241
+ /** Gently float + auto-rotate when the pointer is away. Default true. */
242
+ idle?: boolean;
243
+ /** Drop a soft contact shadow beneath the logo. Default true. */
244
+ shadow?: boolean;
245
+ /** Specular sheen that tracks the tilt. Default true. */
246
+ sheen?: boolean;
247
+ className?: string;
248
+ }
249
+ /**
250
+ * Real-time CSS-3D logo treatment — interactive parallax tilt with idle float,
251
+ * depth shadow, and a moving sheen. Works with ANY logo node (the WMM mark SVG,
252
+ * a client <img>, etc.). Zero WebGL, zero binary assets — light and fast.
253
+ * For a fully rendered 3D logo, drop a pre-rendered asset in as `children`.
254
+ */
255
+ declare function Logo3D({ children, max, idle, shadow, sheen, className, }: Logo3DProps): React.JSX.Element;
256
+
257
+ interface TextShimmerProps {
258
+ children: string;
259
+ className?: string;
260
+ /** seconds per sweep */
261
+ duration?: number;
262
+ as?: React.ElementType;
263
+ }
264
+ /** Shimmering gradient sweep over text (Motion-Primitives-style, pure CSS). */
265
+ declare function TextShimmer({ children, className, duration, as }: TextShimmerProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
266
+
267
+ interface DockProps {
268
+ children: React.ReactNode;
269
+ className?: string;
270
+ /** max magnified size (px) */
271
+ maxSize?: number;
272
+ baseSize?: number;
273
+ }
274
+ /** macOS-style magnifying dock (Motion-Primitives-style). Wrap DockItem children. */
275
+ declare function Dock({ children, className, maxSize, baseSize }: DockProps): React.JSX.Element;
276
+
277
+ interface DesignStudioLogoOption {
278
+ id: string;
279
+ label: string;
280
+ /** Rendered live in the picker and returned via useFxPreferences().logo. */
281
+ node: React.ReactNode;
282
+ }
283
+ interface DesignStudioProps {
284
+ /** Panel corner. Default "bottom-right". */
285
+ position?: "bottom-right" | "bottom-left" | "top-right" | "top-left";
286
+ /** Panel title. Default "Design Studio". */
287
+ title?: string;
288
+ /** Show the theme switcher. Default true. */
289
+ showThemes?: boolean;
290
+ /** Show the background picker. Default true. */
291
+ showBackgrounds?: boolean;
292
+ /** Optional logo options — when provided, a logo picker section is shown. */
293
+ logos?: DesignStudioLogoOption[];
294
+ /** Start opened. Default false. */
295
+ defaultOpen?: boolean;
296
+ className?: string;
297
+ }
298
+ /**
299
+ * Floating control panel that drives theme + dynamic background (+ optional
300
+ * logo) live across the whole app. Reads/writes <FxPreferencesProvider>, so
301
+ * pair it with <DynamicBackground />. Brand-agnostic — fully token-styled.
302
+ *
303
+ * <FxPreferencesProvider>
304
+ * <DynamicBackground />
305
+ * <DesignStudio logos={[
306
+ * { id: "2d", label: "2D", node: <WmmLogo variant="mark" size={40} /> },
307
+ * { id: "3d", label: "3D", node: <Logo3D><WmmLogo variant="mark" size={40} /></Logo3D> },
308
+ * ]} />
309
+ * {children}
310
+ * </FxPreferencesProvider>
311
+ */
312
+ declare function DesignStudio({ position, title, showThemes, showBackgrounds, logos, defaultOpen, className, }: DesignStudioProps): React.JSX.Element;
313
+
314
+ export { AuroraBackground, type AuroraBackgroundProps, BACKGROUND_VARIANTS, type BackgroundVariant, BorderBeam, type BorderBeamProps, DesignStudio, type DesignStudioLogoOption, type DesignStudioProps, Dock, type DockProps, DynamicBackground, type DynamicBackgroundProps, FxPreferencesProvider, type FxPreferencesProviderProps, type FxThemeName, GridBackground, type GridBackgroundProps, Logo3D, type Logo3DProps, Magnetic, type MagneticProps, MeshGradient, type MeshGradientProps, NoiseOverlay, type NoiseOverlayProps, ParticleField, type ParticleFieldProps, SpotlightBackground, type SpotlightBackgroundProps, SpotlightCard, type SpotlightCardProps, TextShimmer, type TextShimmerProps, TiltCard, type TiltCardProps, useFxPreferences, useOptionalFxPreferences };
package/dist/fx.d.ts ADDED
@@ -0,0 +1,314 @@
1
+ import * as React from 'react';
2
+
3
+ interface AuroraBackgroundProps {
4
+ /** Blur radius of the aurora blobs. Default "80px". */
5
+ blur?: string;
6
+ /** Overall opacity 0–1. Default 0.6. */
7
+ intensity?: number;
8
+ /** Animation duration in seconds for one drift cycle. Default 18. */
9
+ speed?: number;
10
+ /** Render a subtle radial vignette over the blobs. Default true. */
11
+ vignette?: boolean;
12
+ className?: string;
13
+ }
14
+ /**
15
+ * Animated aurora — slowly drifting blurred color blobs. Pure CSS, GPU-only
16
+ * (transform/opacity), no JS in the render loop. Theme-aware: pulls --primary
17
+ * and --accent via color-mix so it re-skins per brand.
18
+ *
19
+ * <div className="relative">
20
+ * <AuroraBackground />
21
+ * <YourContent />
22
+ * </div>
23
+ */
24
+ declare function AuroraBackground({ blur, intensity, speed, vignette, className, }: AuroraBackgroundProps): React.JSX.Element;
25
+
26
+ interface MeshGradientProps {
27
+ /** Animation duration in seconds. Default 15. */
28
+ speed?: number;
29
+ /** Overall opacity 0–1. Default 0.5. */
30
+ intensity?: number;
31
+ /** Static (no animation). Default false. */
32
+ static?: boolean;
33
+ className?: string;
34
+ }
35
+ /**
36
+ * Animated mesh gradient — multiple soft radial color stops panned across the
37
+ * surface. Pure CSS (background-position animation). Theme-aware via tokens.
38
+ */
39
+ declare function MeshGradient({ speed, intensity, static: isStatic, className, }: MeshGradientProps): React.JSX.Element;
40
+
41
+ interface GridBackgroundProps {
42
+ /** "dot" (default) or "line" grid. */
43
+ variant?: "dot" | "line";
44
+ /** Grid cell size in px. Default 32. */
45
+ size?: number;
46
+ /** Reveal the grid under a cursor-following spotlight only. Default false (grid always visible). */
47
+ spotlight?: boolean;
48
+ /** Spotlight radius in px when spotlight=true. Default 220. */
49
+ spotlightRadius?: number;
50
+ /** Fade the grid toward the edges. Default true. */
51
+ fade?: boolean;
52
+ className?: string;
53
+ }
54
+ /**
55
+ * Dot or line grid background. Optionally only reveals near the cursor
56
+ * (spotlight mode). Theme-aware (uses --border / faint foreground). The
57
+ * spotlight handler only writes two CSS vars on rAF — cheap.
58
+ */
59
+ declare function GridBackground({ variant, size, spotlight, spotlightRadius, fade, className, }: GridBackgroundProps): React.JSX.Element;
60
+
61
+ interface SpotlightBackgroundProps {
62
+ /** Spotlight radius in px. Default 400. */
63
+ radius?: number;
64
+ /** Spotlight opacity 0–1. Default 0.15. */
65
+ intensity?: number;
66
+ /** When true, the spotlight gently floats on its own until the pointer moves. Default true. */
67
+ idleFloat?: boolean;
68
+ className?: string;
69
+ }
70
+ /**
71
+ * A large radial glow that follows the cursor across the section — the classic
72
+ * "spotlight" hero effect. Uses --primary, theme-aware. Pointer handler is
73
+ * rAF-throttled and only writes CSS vars.
74
+ */
75
+ declare function SpotlightBackground({ radius, intensity, idleFloat, className, }: SpotlightBackgroundProps): React.JSX.Element;
76
+
77
+ interface ParticleFieldProps {
78
+ /** Particle count. Auto-scaled down on small screens. Default 60. */
79
+ count?: number;
80
+ /** Draw connecting lines between nearby particles. Default true. */
81
+ connect?: boolean;
82
+ /** Max distance (px) to draw a connection. Default 130. */
83
+ linkDistance?: number;
84
+ /** Particle + line color. Defaults to the live --primary token, falls back to currentColor. */
85
+ color?: string;
86
+ /** Particle drift speed multiplier. Default 1. */
87
+ speed?: number;
88
+ /** Particles gently drift toward the cursor. Default true. */
89
+ interactive?: boolean;
90
+ className?: string;
91
+ }
92
+ /**
93
+ * Lightweight canvas "constellation" — drifting particles with proximity links.
94
+ * Performance guards: capped count, single rAF, pauses when off-screen or tab
95
+ * hidden, honors prefers-reduced-motion (renders one static frame). No deps.
96
+ * Color is read from the live --primary CSS var so it adapts per theme/brand.
97
+ */
98
+ declare function ParticleField({ count, connect, linkDistance, color, speed, interactive, className, }: ParticleFieldProps): React.JSX.Element;
99
+
100
+ interface NoiseOverlayProps {
101
+ /** Opacity 0–1. Default 0.04. */
102
+ opacity?: number;
103
+ /** Blend mode for the grain. Default "overlay". */
104
+ blend?: React.CSSProperties["mixBlendMode"];
105
+ className?: string;
106
+ }
107
+ /**
108
+ * Film-grain / noise overlay. Composes on top of any background to add texture
109
+ * and break up gradient banding. ~0 cost — a single repeating data-URI SVG.
110
+ */
111
+ declare function NoiseOverlay({ opacity, blend, className }: NoiseOverlayProps): React.JSX.Element;
112
+
113
+ type BackgroundVariant = "none" | "aurora" | "mesh" | "grid" | "spotlight" | "particles";
114
+ type FxThemeName = "light" | "dark" | "wmm";
115
+ declare const BACKGROUND_VARIANTS: BackgroundVariant[];
116
+ interface FxPreferences {
117
+ background: BackgroundVariant;
118
+ setBackground: (b: BackgroundVariant) => void;
119
+ /** Selected logo option id (when a logo picker is wired into the studio). */
120
+ logo: string | null;
121
+ setLogo: (id: string | null) => void;
122
+ /** Theme — mirrors @web-my-money/tokens runtime (data-theme + `wmm-theme`). */
123
+ theme: FxThemeName;
124
+ setTheme: (t: FxThemeName) => void;
125
+ }
126
+ interface FxPreferencesProviderProps {
127
+ children: React.ReactNode;
128
+ /** Background shown before the user picks one. Default "none". */
129
+ defaultBackground?: BackgroundVariant;
130
+ }
131
+ /**
132
+ * Holds the user's live design choices (background + logo + theme) and persists
133
+ * them to localStorage. Theme is written with the SAME attribute/key as
134
+ * @web-my-money/tokens, so the two stay in sync without a hard dependency.
135
+ *
136
+ * <FxPreferencesProvider>
137
+ * <DynamicBackground /> // reflects the choice
138
+ * <DesignStudio /> // changes the choice
139
+ * {app}
140
+ * </FxPreferencesProvider>
141
+ */
142
+ declare function FxPreferencesProvider({ children, defaultBackground, }: FxPreferencesProviderProps): React.JSX.Element;
143
+ /** Read + control design preferences. Must be inside <FxPreferencesProvider>. */
144
+ declare function useFxPreferences(): FxPreferences;
145
+ /** Internal — nullable read so uncontrolled components degrade gracefully. */
146
+ declare function useOptionalFxPreferences(): FxPreferences | null;
147
+
148
+ interface DynamicBackgroundProps {
149
+ /**
150
+ * Which background to render. If omitted, reads the current choice from
151
+ * <FxPreferencesProvider> (controlled by <DesignStudio>). Defaults to "none".
152
+ */
153
+ variant?: BackgroundVariant;
154
+ /** Overlay film grain on top of the background. Default false. */
155
+ noise?: boolean;
156
+ /** Per-variant prop overrides. */
157
+ aurora?: AuroraBackgroundProps;
158
+ mesh?: MeshGradientProps;
159
+ grid?: GridBackgroundProps;
160
+ spotlight?: SpotlightBackgroundProps;
161
+ particles?: ParticleFieldProps;
162
+ className?: string;
163
+ }
164
+ /**
165
+ * Resolver that renders whichever dynamic background is selected — either via
166
+ * the `variant` prop (uncontrolled) or from FxPreferences (controlled by the
167
+ * DesignStudio). Drop one of these behind your content.
168
+ */
169
+ declare function DynamicBackground({ variant, noise, aurora, mesh, grid, spotlight, particles, className, }: DynamicBackgroundProps): React.JSX.Element | null;
170
+
171
+ interface SpotlightCardProps extends React.HTMLAttributes<HTMLDivElement> {
172
+ /** Glow radius in px. Default 320. */
173
+ radius?: number;
174
+ /** Glow strength 0–1. Default 0.12. */
175
+ intensity?: number;
176
+ /** Also brighten the border under the cursor. Default true. */
177
+ borderGlow?: boolean;
178
+ children: React.ReactNode;
179
+ }
180
+ /**
181
+ * Card with a cursor-following radial glow (Linear / Vercel style). The glow is
182
+ * a layer whose position is driven by two CSS vars updated on rAF — no re-render
183
+ * per mouse move. Theme-aware via --primary.
184
+ */
185
+ declare function SpotlightCard({ radius, intensity, borderGlow, className, children, style, ...rest }: SpotlightCardProps): React.JSX.Element;
186
+
187
+ interface TiltCardProps extends React.HTMLAttributes<HTMLDivElement> {
188
+ /** Max tilt in degrees. Default 10. */
189
+ max?: number;
190
+ /** Lift the card toward the viewer on hover (px of translateZ). Default 0. */
191
+ lift?: number;
192
+ /** Add a glare highlight that follows the cursor. Default true. */
193
+ glare?: boolean;
194
+ children: React.ReactNode;
195
+ }
196
+ /**
197
+ * 3D tilt-on-hover card. Pointer position maps to rotateX/rotateY with a spring
198
+ * for buttery motion (framer-motion, already a blocks dep). Honors reduced-motion
199
+ * by simply not tilting.
200
+ */
201
+ declare function TiltCard({ max, lift, glare, className, children, style, ...rest }: TiltCardProps): React.JSX.Element;
202
+
203
+ interface MagneticProps {
204
+ /** How strongly the element is pulled toward the cursor, 0–1. Default 0.35. */
205
+ strength?: number;
206
+ /** Activation radius in px around the element. Default 120. */
207
+ radius?: number;
208
+ className?: string;
209
+ children: React.ReactNode;
210
+ }
211
+ /**
212
+ * Magnetic wrapper — pulls its child toward the cursor when nearby, springs back
213
+ * on leave. Wrap a button, icon, or logo. Spring-driven (framer-motion).
214
+ */
215
+ declare function Magnetic({ strength, radius, className, children }: MagneticProps): React.JSX.Element;
216
+
217
+ interface BorderBeamProps {
218
+ /** Border thickness in px. Default 1.5. */
219
+ size?: number;
220
+ /** Seconds for one full revolution. Default 6. */
221
+ speed?: number;
222
+ /** Corner radius to match the parent, in px. Default 16. */
223
+ radius?: number;
224
+ /** Beam color. Defaults to --primary. */
225
+ color?: string;
226
+ className?: string;
227
+ }
228
+ /**
229
+ * Animated gradient border — a light sweeps continuously around the edge
230
+ * (Magic UI "border beam" style). Implemented with a single rotating conic
231
+ * gradient clipped to a thin rim via mask compositing — no @property, works
232
+ * everywhere. Place inside a `position: relative` parent.
233
+ */
234
+ declare function BorderBeam({ size, speed, radius, color, className, }: BorderBeamProps): React.JSX.Element;
235
+
236
+ interface Logo3DProps {
237
+ /** The logo to render in 3D — an <svg>, <img>, or any node. */
238
+ children: React.ReactNode;
239
+ /** Max tilt in degrees. Default 18. */
240
+ max?: number;
241
+ /** Gently float + auto-rotate when the pointer is away. Default true. */
242
+ idle?: boolean;
243
+ /** Drop a soft contact shadow beneath the logo. Default true. */
244
+ shadow?: boolean;
245
+ /** Specular sheen that tracks the tilt. Default true. */
246
+ sheen?: boolean;
247
+ className?: string;
248
+ }
249
+ /**
250
+ * Real-time CSS-3D logo treatment — interactive parallax tilt with idle float,
251
+ * depth shadow, and a moving sheen. Works with ANY logo node (the WMM mark SVG,
252
+ * a client <img>, etc.). Zero WebGL, zero binary assets — light and fast.
253
+ * For a fully rendered 3D logo, drop a pre-rendered asset in as `children`.
254
+ */
255
+ declare function Logo3D({ children, max, idle, shadow, sheen, className, }: Logo3DProps): React.JSX.Element;
256
+
257
+ interface TextShimmerProps {
258
+ children: string;
259
+ className?: string;
260
+ /** seconds per sweep */
261
+ duration?: number;
262
+ as?: React.ElementType;
263
+ }
264
+ /** Shimmering gradient sweep over text (Motion-Primitives-style, pure CSS). */
265
+ declare function TextShimmer({ children, className, duration, as }: TextShimmerProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
266
+
267
+ interface DockProps {
268
+ children: React.ReactNode;
269
+ className?: string;
270
+ /** max magnified size (px) */
271
+ maxSize?: number;
272
+ baseSize?: number;
273
+ }
274
+ /** macOS-style magnifying dock (Motion-Primitives-style). Wrap DockItem children. */
275
+ declare function Dock({ children, className, maxSize, baseSize }: DockProps): React.JSX.Element;
276
+
277
+ interface DesignStudioLogoOption {
278
+ id: string;
279
+ label: string;
280
+ /** Rendered live in the picker and returned via useFxPreferences().logo. */
281
+ node: React.ReactNode;
282
+ }
283
+ interface DesignStudioProps {
284
+ /** Panel corner. Default "bottom-right". */
285
+ position?: "bottom-right" | "bottom-left" | "top-right" | "top-left";
286
+ /** Panel title. Default "Design Studio". */
287
+ title?: string;
288
+ /** Show the theme switcher. Default true. */
289
+ showThemes?: boolean;
290
+ /** Show the background picker. Default true. */
291
+ showBackgrounds?: boolean;
292
+ /** Optional logo options — when provided, a logo picker section is shown. */
293
+ logos?: DesignStudioLogoOption[];
294
+ /** Start opened. Default false. */
295
+ defaultOpen?: boolean;
296
+ className?: string;
297
+ }
298
+ /**
299
+ * Floating control panel that drives theme + dynamic background (+ optional
300
+ * logo) live across the whole app. Reads/writes <FxPreferencesProvider>, so
301
+ * pair it with <DynamicBackground />. Brand-agnostic — fully token-styled.
302
+ *
303
+ * <FxPreferencesProvider>
304
+ * <DynamicBackground />
305
+ * <DesignStudio logos={[
306
+ * { id: "2d", label: "2D", node: <WmmLogo variant="mark" size={40} /> },
307
+ * { id: "3d", label: "3D", node: <Logo3D><WmmLogo variant="mark" size={40} /></Logo3D> },
308
+ * ]} />
309
+ * {children}
310
+ * </FxPreferencesProvider>
311
+ */
312
+ declare function DesignStudio({ position, title, showThemes, showBackgrounds, logos, defaultOpen, className, }: DesignStudioProps): React.JSX.Element;
313
+
314
+ export { AuroraBackground, type AuroraBackgroundProps, BACKGROUND_VARIANTS, type BackgroundVariant, BorderBeam, type BorderBeamProps, DesignStudio, type DesignStudioLogoOption, type DesignStudioProps, Dock, type DockProps, DynamicBackground, type DynamicBackgroundProps, FxPreferencesProvider, type FxPreferencesProviderProps, type FxThemeName, GridBackground, type GridBackgroundProps, Logo3D, type Logo3DProps, Magnetic, type MagneticProps, MeshGradient, type MeshGradientProps, NoiseOverlay, type NoiseOverlayProps, ParticleField, type ParticleFieldProps, SpotlightBackground, type SpotlightBackgroundProps, SpotlightCard, type SpotlightCardProps, TextShimmer, type TextShimmerProps, TiltCard, type TiltCardProps, useFxPreferences, useOptionalFxPreferences };