@mova-ui/react 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +46 -0
- package/bin/mova.mjs +84 -0
- package/dist/hooks/use-mouse-position.d.ts +8 -0
- package/dist/hooks/use-reduced-motion.d.ts +1 -0
- package/dist/hooks/use-scroll-progress.d.ts +2 -0
- package/dist/hooks/use-stagger.d.ts +7 -0
- package/dist/hooks/use-web-haptics.d.ts +4 -0
- package/dist/index.d.ts +164 -0
- package/dist/index.js +4032 -0
- package/dist/lib/presets.d.ts +32 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/styles.css +2 -0
- package/dist/ui/cursor/cursor-trail.d.ts +8 -0
- package/dist/ui/cursor/mouse-follow.d.ts +9 -0
- package/dist/ui/cursor/spotlight.d.ts +9 -0
- package/dist/ui/entrance/fade-down.d.ts +10 -0
- package/dist/ui/entrance/fade-in.d.ts +9 -0
- package/dist/ui/entrance/fade-up.d.ts +10 -0
- package/dist/ui/entrance/scale-in.d.ts +10 -0
- package/dist/ui/entrance/slide-left.d.ts +10 -0
- package/dist/ui/entrance/slide-right.d.ts +10 -0
- package/dist/ui/entrance/zoom-in.d.ts +11 -0
- package/dist/ui/hover/card-hover.d.ts +13 -0
- package/dist/ui/hover/glow-button.d.ts +10 -0
- package/dist/ui/hover/magnetic-button.d.ts +10 -0
- package/dist/ui/hover/tilt-card.d.ts +9 -0
- package/dist/ui/loading/accordion-loader.d.ts +2 -0
- package/dist/ui/loading/app-icon-load.d.ts +2 -0
- package/dist/ui/loading/apple-breathe.d.ts +2 -0
- package/dist/ui/loading/apple-equalizer.d.ts +2 -0
- package/dist/ui/loading/apple-icon-morph.d.ts +2 -0
- package/dist/ui/loading/apple-pulse-dots.d.ts +2 -0
- package/dist/ui/loading/apple-scale-pulse.d.ts +2 -0
- package/dist/ui/loading/apple-sound-wave.d.ts +2 -0
- package/dist/ui/loading/apple-text-reveal.d.ts +2 -0
- package/dist/ui/loading/apple-unlock.d.ts +4 -0
- package/dist/ui/loading/arc-tracer.d.ts +2 -0
- package/dist/ui/loading/bar-cascade.d.ts +2 -0
- package/dist/ui/loading/bar-sweep.d.ts +2 -0
- package/dist/ui/loading/bobbing-dots.d.ts +2 -0
- package/dist/ui/loading/bounce-dots.d.ts +2 -0
- package/dist/ui/loading/bouncing-bars.d.ts +2 -0
- package/dist/ui/loading/bouncing-dots.d.ts +2 -0
- package/dist/ui/loading/bouncing-lines.d.ts +2 -0
- package/dist/ui/loading/bouncing-square.d.ts +2 -0
- package/dist/ui/loading/breathe-ring.d.ts +2 -0
- package/dist/ui/loading/breathing-glow.d.ts +2 -0
- package/dist/ui/loading/breathing-square.d.ts +2 -0
- package/dist/ui/loading/circular-bars.d.ts +2 -0
- package/dist/ui/loading/classic-spinner.d.ts +2 -0
- package/dist/ui/loading/clock-spinner.d.ts +2 -0
- package/dist/ui/loading/comet-spinner.d.ts +2 -0
- package/dist/ui/loading/concentric-pulse.d.ts +2 -0
- package/dist/ui/loading/concentric-ring.d.ts +2 -0
- package/dist/ui/loading/concentric-squares.d.ts +2 -0
- package/dist/ui/loading/conveyor-loop.d.ts +2 -0
- package/dist/ui/loading/cross-spinner.d.ts +2 -0
- package/dist/ui/loading/cube-flip-spring.d.ts +2 -0
- package/dist/ui/loading/dash-ring.d.ts +2 -0
- package/dist/ui/loading/dashed-spiral.d.ts +2 -0
- package/dist/ui/loading/diamond-grid.d.ts +2 -0
- package/dist/ui/loading/diamond-rotate-spring.d.ts +2 -0
- package/dist/ui/loading/dot-spinner.d.ts +2 -0
- package/dist/ui/loading/dots-ring.d.ts +2 -0
- package/dist/ui/loading/double-ring.d.ts +2 -0
- package/dist/ui/loading/drop-dot.d.ts +2 -0
- package/dist/ui/loading/dual-arc.d.ts +2 -0
- package/dist/ui/loading/dynamic-island.d.ts +2 -0
- package/dist/ui/loading/elastic-bars.d.ts +2 -0
- package/dist/ui/loading/elastic-square.d.ts +2 -0
- package/dist/ui/loading/expanding-cross.d.ts +2 -0
- package/dist/ui/loading/face-id-scan.d.ts +2 -0
- package/dist/ui/loading/fade-arc.d.ts +2 -0
- package/dist/ui/loading/fade-dots.d.ts +2 -0
- package/dist/ui/loading/flip-square.d.ts +2 -0
- package/dist/ui/loading/floating-diamonds.d.ts +2 -0
- package/dist/ui/loading/fluid-bars.d.ts +2 -0
- package/dist/ui/loading/fluid-diamond.d.ts +2 -0
- package/dist/ui/loading/fluid-dot-orbit.d.ts +2 -0
- package/dist/ui/loading/fluid-skeleton.d.ts +2 -0
- package/dist/ui/loading/gears.d.ts +2 -0
- package/dist/ui/loading/glassmorphic-card.d.ts +2 -0
- package/dist/ui/loading/gradient-arc.d.ts +2 -0
- package/dist/ui/loading/grid-dots.d.ts +2 -0
- package/dist/ui/loading/haptic-ring.d.ts +2 -0
- package/dist/ui/loading/heartbeat.d.ts +2 -0
- package/dist/ui/loading/hexagon-spinner.d.ts +2 -0
- package/dist/ui/loading/hourglass.d.ts +2 -0
- package/dist/ui/loading/infinity-path.d.ts +2 -0
- package/dist/ui/loading/intersecting-rings.d.ts +2 -0
- package/dist/ui/loading/ios-spinner.d.ts +2 -0
- package/dist/ui/loading/line-spinner.d.ts +2 -0
- package/dist/ui/loading/liquid-dots.d.ts +2 -0
- package/dist/ui/loading/mac-terminal.d.ts +2 -0
- package/dist/ui/loading/magnetic-dots.d.ts +2 -0
- package/dist/ui/loading/minimal-triangle.d.ts +2 -0
- package/dist/ui/loading/morph-dot-ring.d.ts +2 -0
- package/dist/ui/loading/morph-loader.d.ts +8 -0
- package/dist/ui/loading/morphing-bars.d.ts +2 -0
- package/dist/ui/loading/morphing-infinity.d.ts +2 -0
- package/dist/ui/loading/morphing-ring.d.ts +2 -0
- package/dist/ui/loading/morphing-shape.d.ts +2 -0
- package/dist/ui/loading/newtons-cradle.d.ts +2 -0
- package/dist/ui/loading/offset-rings.d.ts +2 -0
- package/dist/ui/loading/orbiting-circles.d.ts +2 -0
- package/dist/ui/loading/orbiting-dot.d.ts +2 -0
- package/dist/ui/loading/origami-shape.d.ts +2 -0
- package/dist/ui/loading/pendulum.d.ts +2 -0
- package/dist/ui/loading/pulsating-dots.d.ts +2 -0
- package/dist/ui/loading/pulse-dot.d.ts +2 -0
- package/dist/ui/loading/pulse-dots.d.ts +2 -0
- package/dist/ui/loading/pulse-square.d.ts +2 -0
- package/dist/ui/loading/pulse.d.ts +8 -0
- package/dist/ui/loading/pumping-heart.d.ts +2 -0
- package/dist/ui/loading/radar-sweep.d.ts +4 -0
- package/dist/ui/loading/ring-sweep.d.ts +2 -0
- package/dist/ui/loading/ripple-effect.d.ts +2 -0
- package/dist/ui/loading/rotating-cross.d.ts +2 -0
- package/dist/ui/loading/rotating-triangle.d.ts +2 -0
- package/dist/ui/loading/shape-shift-grid.d.ts +2 -0
- package/dist/ui/loading/shimmer-line.d.ts +2 -0
- package/dist/ui/loading/siri-wave.d.ts +2 -0
- package/dist/ui/loading/skeleton-loader.d.ts +2 -0
- package/dist/ui/loading/skeleton.d.ts +7 -0
- package/dist/ui/loading/sliding-bars.d.ts +2 -0
- package/dist/ui/loading/smooth-dot-shift.d.ts +2 -0
- package/dist/ui/loading/smooth-ring.d.ts +2 -0
- package/dist/ui/loading/smooth-rounded-square.d.ts +2 -0
- package/dist/ui/loading/spinning-squares.d.ts +2 -0
- package/dist/ui/loading/spiral-spinner.d.ts +2 -0
- package/dist/ui/loading/spring-bars.d.ts +2 -0
- package/dist/ui/loading/spring-dot-matrix.d.ts +2 -0
- package/dist/ui/loading/spring-hexagon.d.ts +2 -0
- package/dist/ui/loading/spring-ring-expand.d.ts +2 -0
- package/dist/ui/loading/spring-text-pop.d.ts +2 -0
- package/dist/ui/loading/square-accordion.d.ts +2 -0
- package/dist/ui/loading/square-grid.d.ts +2 -0
- package/dist/ui/loading/square-snake.d.ts +2 -0
- package/dist/ui/loading/square-spinner.d.ts +2 -0
- package/dist/ui/loading/stacked-bar-pulse.d.ts +2 -0
- package/dist/ui/loading/swapping-dots.d.ts +2 -0
- package/dist/ui/loading/swirling-spinner.d.ts +2 -0
- package/dist/ui/loading/symmetric-wave.d.ts +2 -0
- package/dist/ui/loading/terminal-loader.d.ts +2 -0
- package/dist/ui/loading/text-blink.d.ts +2 -0
- package/dist/ui/loading/text-dots.d.ts +2 -0
- package/dist/ui/loading/text-morph.d.ts +2 -0
- package/dist/ui/loading/text-shimmer-wave.d.ts +2 -0
- package/dist/ui/loading/text-shimmer.d.ts +2 -0
- package/dist/ui/loading/trailing-dots.d.ts +2 -0
- package/dist/ui/loading/triple-dot-spinner.d.ts +2 -0
- package/dist/ui/loading/twin-orbit.d.ts +2 -0
- package/dist/ui/loading/typing-indicator.d.ts +2 -0
- package/dist/ui/loading/typing.d.ts +2 -0
- package/dist/ui/loading/wandering-cube.d.ts +2 -0
- package/dist/ui/loading/watch-spinner.d.ts +2 -0
- package/dist/ui/loading/wave-dots.d.ts +2 -0
- package/dist/ui/loading/wave-physics-loader.d.ts +3 -0
- package/dist/ui/loading/waveform-loader.d.ts +2 -0
- package/dist/ui/loading/zig-zag-pulse.d.ts +2 -0
- package/dist/ui/scroll/progress-indicator.d.ts +8 -0
- package/dist/ui/scroll/scroll-reveal.d.ts +11 -0
- package/dist/ui/scroll/sticky-reveal.d.ts +11 -0
- package/dist/ui/text/blur-text.d.ts +10 -0
- package/dist/ui/text/character-stagger.d.ts +10 -0
- package/dist/ui/text/text-reveal.d.ts +9 -0
- package/dist/ui/text/word-reveal.d.ts +9 -0
- package/dist/ui/toggles/classic-toggle.d.ts +2 -0
- package/dist/ui/transitions/page-transition.d.ts +9 -0
- package/package.json +27 -0
- package/registry/accordion-loader.json +8 -0
- package/registry/app-icon-load.json +8 -0
- package/registry/apple-breathe.json +8 -0
- package/registry/apple-equalizer.json +8 -0
- package/registry/apple-icon-morph.json +8 -0
- package/registry/apple-pulse-dots.json +8 -0
- package/registry/apple-scale-pulse.json +8 -0
- package/registry/apple-sound-wave.json +8 -0
- package/registry/apple-text-reveal.json +8 -0
- package/registry/apple-unlock.json +8 -0
- package/registry/arc-tracer.json +8 -0
- package/registry/bar-cascade.json +8 -0
- package/registry/bar-sweep.json +8 -0
- package/registry/blur-text.json +8 -0
- package/registry/bobbing-dots.json +8 -0
- package/registry/bounce-dots.json +8 -0
- package/registry/bouncing-bars.json +8 -0
- package/registry/bouncing-dots.json +8 -0
- package/registry/bouncing-lines.json +8 -0
- package/registry/bouncing-square.json +8 -0
- package/registry/breathe-ring.json +8 -0
- package/registry/breathing-glow.json +8 -0
- package/registry/breathing-square.json +8 -0
- package/registry/card-hover.json +8 -0
- package/registry/character-stagger.json +8 -0
- package/registry/circular-bars.json +8 -0
- package/registry/classic-spinner.json +8 -0
- package/registry/classic-toggle.json +8 -0
- package/registry/clock-spinner.json +8 -0
- package/registry/comet-spinner.json +8 -0
- package/registry/concentric-pulse.json +8 -0
- package/registry/concentric-ring.json +8 -0
- package/registry/concentric-squares.json +8 -0
- package/registry/conveyor-loop.json +8 -0
- package/registry/cross-spinner.json +8 -0
- package/registry/cube-flip-spring.json +8 -0
- package/registry/cursor-trail.json +8 -0
- package/registry/dash-ring.json +8 -0
- package/registry/dashed-spiral.json +8 -0
- package/registry/diamond-grid.json +8 -0
- package/registry/diamond-rotate-spring.json +8 -0
- package/registry/dot-spinner.json +8 -0
- package/registry/dots-ring.json +8 -0
- package/registry/double-ring.json +8 -0
- package/registry/drop-dot.json +8 -0
- package/registry/dual-arc.json +8 -0
- package/registry/dynamic-island.json +8 -0
- package/registry/elastic-bars.json +8 -0
- package/registry/elastic-square.json +8 -0
- package/registry/expanding-cross.json +8 -0
- package/registry/face-id-scan.json +8 -0
- package/registry/fade-arc.json +6 -0
- package/registry/fade-dots.json +8 -0
- package/registry/fade-down.json +8 -0
- package/registry/fade-in.json +8 -0
- package/registry/fade-up.json +8 -0
- package/registry/flip-square.json +8 -0
- package/registry/floating-diamonds.json +8 -0
- package/registry/fluid-bars.json +8 -0
- package/registry/fluid-diamond.json +8 -0
- package/registry/fluid-dot-orbit.json +8 -0
- package/registry/fluid-skeleton.json +8 -0
- package/registry/gears.json +8 -0
- package/registry/glassmorphic-card.json +8 -0
- package/registry/glow-button.json +8 -0
- package/registry/gradient-arc.json +8 -0
- package/registry/grid-dots.json +8 -0
- package/registry/haptic-ring.json +8 -0
- package/registry/heartbeat.json +8 -0
- package/registry/hexagon-spinner.json +8 -0
- package/registry/hourglass.json +8 -0
- package/registry/infinity-path.json +8 -0
- package/registry/intersecting-rings.json +8 -0
- package/registry/ios-spinner.json +8 -0
- package/registry/line-spinner.json +8 -0
- package/registry/liquid-dots.json +8 -0
- package/registry/mac-terminal.json +8 -0
- package/registry/magnetic-button.json +8 -0
- package/registry/magnetic-dots.json +8 -0
- package/registry/minimal-triangle.json +8 -0
- package/registry/morph-dot-ring.json +8 -0
- package/registry/morph-loader.json +8 -0
- package/registry/morphing-bars.json +8 -0
- package/registry/morphing-infinity.json +8 -0
- package/registry/morphing-ring.json +8 -0
- package/registry/morphing-shape.json +8 -0
- package/registry/mouse-follow.json +8 -0
- package/registry/newtons-cradle.json +8 -0
- package/registry/offset-rings.json +8 -0
- package/registry/orbiting-circles.json +8 -0
- package/registry/orbiting-dot.json +8 -0
- package/registry/origami-shape.json +8 -0
- package/registry/page-transition.json +8 -0
- package/registry/pendulum.json +8 -0
- package/registry/presets.json +6 -0
- package/registry/progress-indicator.json +8 -0
- package/registry/pulsating-dots.json +8 -0
- package/registry/pulse-dot.json +8 -0
- package/registry/pulse-dots.json +8 -0
- package/registry/pulse-square.json +8 -0
- package/registry/pulse.json +8 -0
- package/registry/pumping-heart.json +8 -0
- package/registry/radar-sweep.json +8 -0
- package/registry/ring-sweep.json +8 -0
- package/registry/ripple-effect.json +8 -0
- package/registry/rotating-cross.json +8 -0
- package/registry/rotating-triangle.json +8 -0
- package/registry/scale-in.json +8 -0
- package/registry/scroll-reveal.json +8 -0
- package/registry/shape-shift-grid.json +8 -0
- package/registry/shimmer-line.json +8 -0
- package/registry/siri-wave.json +8 -0
- package/registry/skeleton-loader.json +8 -0
- package/registry/skeleton.json +8 -0
- package/registry/slide-left.json +8 -0
- package/registry/slide-right.json +8 -0
- package/registry/sliding-bars.json +8 -0
- package/registry/smooth-dot-shift.json +8 -0
- package/registry/smooth-ring.json +6 -0
- package/registry/smooth-rounded-square.json +8 -0
- package/registry/spinning-squares.json +8 -0
- package/registry/spiral-spinner.json +8 -0
- package/registry/spotlight.json +8 -0
- package/registry/spring-bars.json +8 -0
- package/registry/spring-dot-matrix.json +8 -0
- package/registry/spring-hexagon.json +8 -0
- package/registry/spring-ring-expand.json +8 -0
- package/registry/spring-text-pop.json +8 -0
- package/registry/square-accordion.json +8 -0
- package/registry/square-grid.json +8 -0
- package/registry/square-snake.json +8 -0
- package/registry/square-spinner.json +8 -0
- package/registry/stacked-bar-pulse.json +8 -0
- package/registry/sticky-reveal.json +8 -0
- package/registry/swapping-dots.json +8 -0
- package/registry/swirling-spinner.json +8 -0
- package/registry/symmetric-wave.json +8 -0
- package/registry/terminal-loader.json +8 -0
- package/registry/text-blink.json +8 -0
- package/registry/text-dots.json +8 -0
- package/registry/text-morph.json +8 -0
- package/registry/text-reveal.json +8 -0
- package/registry/text-shimmer-wave.json +8 -0
- package/registry/text-shimmer.json +8 -0
- package/registry/tilt-card.json +8 -0
- package/registry/trailing-dots.json +8 -0
- package/registry/triple-dot-spinner.json +8 -0
- package/registry/twin-orbit.json +8 -0
- package/registry/typing-indicator.json +8 -0
- package/registry/typing.json +8 -0
- package/registry/use-mouse-position.json +6 -0
- package/registry/use-reduced-motion.json +6 -0
- package/registry/use-scroll-progress.json +6 -0
- package/registry/use-stagger.json +6 -0
- package/registry/use-web-haptics.json +6 -0
- package/registry/utils.json +9 -0
- package/registry/wandering-cube.json +8 -0
- package/registry/watch-spinner.json +8 -0
- package/registry/wave-dots.json +8 -0
- package/registry/wave-physics-loader.json +8 -0
- package/registry/waveform-loader.json +8 -0
- package/registry/word-reveal.json +8 -0
- package/registry/zig-zag-pulse.json +8 -0
- package/registry/zoom-in.json +8 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,4032 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
|
|
4
|
+
// .generated/hooks/use-mouse-position.ts
|
|
5
|
+
import { useEffect, useState } from "react";
|
|
6
|
+
function useMousePosition(ref) {
|
|
7
|
+
const [position, setPosition] = useState({
|
|
8
|
+
x: 0,
|
|
9
|
+
y: 0,
|
|
10
|
+
elementX: 0,
|
|
11
|
+
elementY: 0
|
|
12
|
+
});
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
const handleMouseMove = (event) => {
|
|
15
|
+
let elementX = 0;
|
|
16
|
+
let elementY = 0;
|
|
17
|
+
if (ref && ref.current) {
|
|
18
|
+
const rect = ref.current.getBoundingClientRect();
|
|
19
|
+
elementX = event.clientX - rect.left;
|
|
20
|
+
elementY = event.clientY - rect.top;
|
|
21
|
+
}
|
|
22
|
+
setPosition({
|
|
23
|
+
x: event.clientX,
|
|
24
|
+
y: event.clientY,
|
|
25
|
+
elementX,
|
|
26
|
+
elementY
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
window.addEventListener("mousemove", handleMouseMove, { passive: true });
|
|
30
|
+
return () => {
|
|
31
|
+
window.removeEventListener("mousemove", handleMouseMove);
|
|
32
|
+
};
|
|
33
|
+
}, [ref]);
|
|
34
|
+
return position;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// .generated/hooks/use-reduced-motion.ts
|
|
38
|
+
import { useState as useState2, useEffect as useEffect2 } from "react";
|
|
39
|
+
function useReducedMotion() {
|
|
40
|
+
const [shouldReduceMotion, setShouldReduceMotion] = useState2(false);
|
|
41
|
+
useEffect2(() => {
|
|
42
|
+
const mediaQuery = window.matchMedia("(prefers-reduced-motion: reduce)");
|
|
43
|
+
setShouldReduceMotion(mediaQuery.matches);
|
|
44
|
+
const handleMediaChange = (event) => {
|
|
45
|
+
setShouldReduceMotion(event.matches);
|
|
46
|
+
};
|
|
47
|
+
mediaQuery.addEventListener("change", handleMediaChange);
|
|
48
|
+
return () => {
|
|
49
|
+
mediaQuery.removeEventListener("change", handleMediaChange);
|
|
50
|
+
};
|
|
51
|
+
}, []);
|
|
52
|
+
return shouldReduceMotion;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// .generated/hooks/use-scroll-progress.ts
|
|
56
|
+
import { useEffect as useEffect3, useState as useState3 } from "react";
|
|
57
|
+
function useScrollProgress(ref) {
|
|
58
|
+
const [progress, setProgress] = useState3(0);
|
|
59
|
+
useEffect3(() => {
|
|
60
|
+
const handleScroll = () => {
|
|
61
|
+
if (ref && ref.current) {
|
|
62
|
+
const element = ref.current;
|
|
63
|
+
const totalHeight = element.scrollHeight - element.clientHeight;
|
|
64
|
+
if (totalHeight === 0) {
|
|
65
|
+
setProgress(0);
|
|
66
|
+
} else {
|
|
67
|
+
setProgress(element.scrollTop / totalHeight);
|
|
68
|
+
}
|
|
69
|
+
} else {
|
|
70
|
+
const totalHeight = document.documentElement.scrollHeight - window.innerHeight;
|
|
71
|
+
if (totalHeight === 0) {
|
|
72
|
+
setProgress(0);
|
|
73
|
+
} else {
|
|
74
|
+
setProgress(window.scrollY / totalHeight);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
const target = ref && ref.current ? ref.current : window;
|
|
79
|
+
target.addEventListener("scroll", handleScroll, { passive: true });
|
|
80
|
+
handleScroll();
|
|
81
|
+
return () => {
|
|
82
|
+
target.removeEventListener("scroll", handleScroll);
|
|
83
|
+
};
|
|
84
|
+
}, [ref]);
|
|
85
|
+
return progress;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// .generated/hooks/use-stagger.ts
|
|
89
|
+
import { useMemo } from "react";
|
|
90
|
+
function useStagger(count, options = {}) {
|
|
91
|
+
const { baseDelay = 0, staggerDelay = 0.05, from = "first" } = options;
|
|
92
|
+
const delays = useMemo(() => {
|
|
93
|
+
const list = Array.from({ length: count });
|
|
94
|
+
let centerIndex = 0;
|
|
95
|
+
if (from === "center") {
|
|
96
|
+
centerIndex = (count - 1) / 2;
|
|
97
|
+
} else if (from === "last") {
|
|
98
|
+
centerIndex = count - 1;
|
|
99
|
+
} else if (typeof from === "number") {
|
|
100
|
+
centerIndex = from;
|
|
101
|
+
}
|
|
102
|
+
return list.map((_, index) => {
|
|
103
|
+
let distance = 0;
|
|
104
|
+
if (from === "first") {
|
|
105
|
+
distance = index;
|
|
106
|
+
} else if (from === "last") {
|
|
107
|
+
distance = count - 1 - index;
|
|
108
|
+
} else {
|
|
109
|
+
distance = Math.abs(index - centerIndex);
|
|
110
|
+
}
|
|
111
|
+
return baseDelay + distance * staggerDelay;
|
|
112
|
+
});
|
|
113
|
+
}, [count, baseDelay, staggerDelay, from]);
|
|
114
|
+
return delays;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// .generated/hooks/use-web-haptics.ts
|
|
118
|
+
import { useCallback } from "react";
|
|
119
|
+
function useWebHaptics() {
|
|
120
|
+
const trigger = useCallback((type = "light") => {
|
|
121
|
+
if (typeof window === "undefined" || !window.navigator || !window.navigator.vibrate) {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
try {
|
|
125
|
+
switch (type) {
|
|
126
|
+
case "light":
|
|
127
|
+
return window.navigator.vibrate(10);
|
|
128
|
+
case "medium":
|
|
129
|
+
return window.navigator.vibrate(25);
|
|
130
|
+
case "heavy":
|
|
131
|
+
return window.navigator.vibrate(50);
|
|
132
|
+
case "success":
|
|
133
|
+
return window.navigator.vibrate([15, 60, 15]);
|
|
134
|
+
case "warning":
|
|
135
|
+
return window.navigator.vibrate([30, 60, 30]);
|
|
136
|
+
case "error":
|
|
137
|
+
return window.navigator.vibrate([60, 60, 60, 60, 60]);
|
|
138
|
+
default:
|
|
139
|
+
return window.navigator.vibrate(type);
|
|
140
|
+
}
|
|
141
|
+
} catch (e) {
|
|
142
|
+
console.warn("Vibration API error:", e);
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
}, []);
|
|
146
|
+
return { trigger };
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// .generated/lib/presets.ts
|
|
150
|
+
var presets = {
|
|
151
|
+
// Ultra-responsive, crisp snappy feel
|
|
152
|
+
snappy: {
|
|
153
|
+
type: "spring",
|
|
154
|
+
stiffness: 400,
|
|
155
|
+
damping: 28,
|
|
156
|
+
mass: 0.8
|
|
157
|
+
},
|
|
158
|
+
// Bouncy, playful bounce transition
|
|
159
|
+
bouncy: {
|
|
160
|
+
type: "spring",
|
|
161
|
+
stiffness: 300,
|
|
162
|
+
damping: 15,
|
|
163
|
+
mass: 1
|
|
164
|
+
},
|
|
165
|
+
// Smooth, elegant default easing transition
|
|
166
|
+
smooth: {
|
|
167
|
+
type: "spring",
|
|
168
|
+
stiffness: 220,
|
|
169
|
+
damping: 24,
|
|
170
|
+
mass: 1
|
|
171
|
+
},
|
|
172
|
+
// Gentle, low-speed movement
|
|
173
|
+
gentle: {
|
|
174
|
+
type: "spring",
|
|
175
|
+
stiffness: 120,
|
|
176
|
+
damping: 14,
|
|
177
|
+
mass: 1
|
|
178
|
+
},
|
|
179
|
+
// Stiff, high tension movement
|
|
180
|
+
stiff: {
|
|
181
|
+
type: "spring",
|
|
182
|
+
stiffness: 500,
|
|
183
|
+
damping: 40,
|
|
184
|
+
mass: 0.5
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
// .generated/lib/utils.ts
|
|
189
|
+
import { clsx } from "clsx";
|
|
190
|
+
import { twMerge } from "tailwind-merge";
|
|
191
|
+
function cn(...inputs) {
|
|
192
|
+
return twMerge(clsx(inputs));
|
|
193
|
+
}
|
|
194
|
+
function mapRange(value, inMin, inMax, outMin, outMax) {
|
|
195
|
+
return (value - inMin) * (outMax - outMin) / (inMax - inMin) + outMin;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// .generated/ui/cursor/cursor-trail.tsx
|
|
199
|
+
import { useEffect as useEffect4, useState as useState4 } from "react";
|
|
200
|
+
import { motion, useSpring } from "framer-motion";
|
|
201
|
+
import { Fragment, jsx } from "react/jsx-runtime";
|
|
202
|
+
function CursorTrail({
|
|
203
|
+
color = "bg-blue-500",
|
|
204
|
+
size = 8,
|
|
205
|
+
count = 6
|
|
206
|
+
}) {
|
|
207
|
+
const [coords, setCoords] = useState4({ x: 0, y: 0 });
|
|
208
|
+
const [isVisible, setIsVisible] = useState4(false);
|
|
209
|
+
useEffect4(() => {
|
|
210
|
+
const handleMouseMove = (e) => {
|
|
211
|
+
setCoords({ x: e.clientX, y: e.clientY });
|
|
212
|
+
if (!isVisible) setIsVisible(true);
|
|
213
|
+
};
|
|
214
|
+
const handleMouseLeave = () => {
|
|
215
|
+
setIsVisible(false);
|
|
216
|
+
};
|
|
217
|
+
window.addEventListener("mousemove", handleMouseMove, { passive: true });
|
|
218
|
+
document.addEventListener("mouseleave", handleMouseLeave);
|
|
219
|
+
return () => {
|
|
220
|
+
window.removeEventListener("mousemove", handleMouseMove);
|
|
221
|
+
document.removeEventListener("mouseleave", handleMouseLeave);
|
|
222
|
+
};
|
|
223
|
+
}, [isVisible]);
|
|
224
|
+
return /* @__PURE__ */ jsx(Fragment, { children: isVisible && Array.from({ length: count }).map((_, index) => {
|
|
225
|
+
const springConfig = {
|
|
226
|
+
stiffness: 300 - index * 30,
|
|
227
|
+
damping: 25 + index * 2,
|
|
228
|
+
mass: 0.2 + index * 0.1
|
|
229
|
+
};
|
|
230
|
+
return /* @__PURE__ */ jsx(
|
|
231
|
+
TrailDot,
|
|
232
|
+
{
|
|
233
|
+
index,
|
|
234
|
+
coords,
|
|
235
|
+
springConfig,
|
|
236
|
+
size,
|
|
237
|
+
color,
|
|
238
|
+
count
|
|
239
|
+
},
|
|
240
|
+
index
|
|
241
|
+
);
|
|
242
|
+
}) });
|
|
243
|
+
}
|
|
244
|
+
function TrailDot({
|
|
245
|
+
index,
|
|
246
|
+
coords,
|
|
247
|
+
springConfig,
|
|
248
|
+
size,
|
|
249
|
+
color,
|
|
250
|
+
count
|
|
251
|
+
}) {
|
|
252
|
+
const x = useSpring(coords.x, springConfig);
|
|
253
|
+
const y = useSpring(coords.y, springConfig);
|
|
254
|
+
useEffect4(() => {
|
|
255
|
+
x.set(coords.x);
|
|
256
|
+
y.set(coords.y);
|
|
257
|
+
}, [coords, x, y]);
|
|
258
|
+
const dotSize = size * (1 - index / count);
|
|
259
|
+
const opacity = 1 - index / count;
|
|
260
|
+
return /* @__PURE__ */ jsx(
|
|
261
|
+
motion.div,
|
|
262
|
+
{
|
|
263
|
+
style: {
|
|
264
|
+
x,
|
|
265
|
+
y,
|
|
266
|
+
width: dotSize,
|
|
267
|
+
height: dotSize,
|
|
268
|
+
translateX: "-50%",
|
|
269
|
+
translateY: "-50%",
|
|
270
|
+
opacity
|
|
271
|
+
},
|
|
272
|
+
className: `fixed top-0 left-0 rounded-full pointer-events-none z-[9999] ${color}`
|
|
273
|
+
}
|
|
274
|
+
);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// .generated/ui/cursor/mouse-follow.tsx
|
|
278
|
+
import { useEffect as useEffect5, useState as useState5 } from "react";
|
|
279
|
+
import { motion as motion2, useSpring as useSpring2 } from "framer-motion";
|
|
280
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
281
|
+
function MouseFollow({
|
|
282
|
+
children,
|
|
283
|
+
stiffness = 180,
|
|
284
|
+
damping = 20,
|
|
285
|
+
className = ""
|
|
286
|
+
}) {
|
|
287
|
+
const [isVisible, setIsVisible] = useState5(false);
|
|
288
|
+
const x = useSpring2(0, { stiffness, damping });
|
|
289
|
+
const y = useSpring2(0, { stiffness, damping });
|
|
290
|
+
useEffect5(() => {
|
|
291
|
+
const handleMouseMove = (e) => {
|
|
292
|
+
x.set(e.clientX);
|
|
293
|
+
y.set(e.clientY);
|
|
294
|
+
if (!isVisible) setIsVisible(true);
|
|
295
|
+
};
|
|
296
|
+
const handleMouseLeave = () => {
|
|
297
|
+
setIsVisible(false);
|
|
298
|
+
};
|
|
299
|
+
window.addEventListener("mousemove", handleMouseMove, { passive: true });
|
|
300
|
+
document.addEventListener("mouseleave", handleMouseLeave);
|
|
301
|
+
return () => {
|
|
302
|
+
window.removeEventListener("mousemove", handleMouseMove);
|
|
303
|
+
document.removeEventListener("mouseleave", handleMouseLeave);
|
|
304
|
+
};
|
|
305
|
+
}, [x, y, isVisible]);
|
|
306
|
+
if (!isVisible) return null;
|
|
307
|
+
return /* @__PURE__ */ jsx2(
|
|
308
|
+
motion2.div,
|
|
309
|
+
{
|
|
310
|
+
style: {
|
|
311
|
+
x,
|
|
312
|
+
y,
|
|
313
|
+
translateX: "-50%",
|
|
314
|
+
translateY: "-50%"
|
|
315
|
+
},
|
|
316
|
+
className: `fixed top-0 left-0 pointer-events-none z-[9998] ${className}`,
|
|
317
|
+
children: children || /* @__PURE__ */ jsx2("div", { className: "w-6 h-6 rounded-full border border-blue-500/50 bg-blue-500/10" })
|
|
318
|
+
}
|
|
319
|
+
);
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
// .generated/ui/cursor/spotlight.tsx
|
|
323
|
+
import { useRef, useState as useState6 } from "react";
|
|
324
|
+
import { motion as motion3 } from "framer-motion";
|
|
325
|
+
import { jsx as jsx3, jsxs } from "react/jsx-runtime";
|
|
326
|
+
function Spotlight({
|
|
327
|
+
children,
|
|
328
|
+
className = "",
|
|
329
|
+
glowColor = "rgba(255, 255, 255, 0.08)",
|
|
330
|
+
glowSize = 250
|
|
331
|
+
}) {
|
|
332
|
+
const containerRef = useRef(null);
|
|
333
|
+
const [coords, setCoords] = useState6({ x: 0, y: 0 });
|
|
334
|
+
const [opacity, setOpacity] = useState6(0);
|
|
335
|
+
const handleMouseMove = (e) => {
|
|
336
|
+
if (!containerRef.current) return;
|
|
337
|
+
const rect = containerRef.current.getBoundingClientRect();
|
|
338
|
+
setCoords({
|
|
339
|
+
x: e.clientX - rect.left,
|
|
340
|
+
y: e.clientY - rect.top
|
|
341
|
+
});
|
|
342
|
+
};
|
|
343
|
+
return /* @__PURE__ */ jsxs(
|
|
344
|
+
"div",
|
|
345
|
+
{
|
|
346
|
+
ref: containerRef,
|
|
347
|
+
onMouseMove: handleMouseMove,
|
|
348
|
+
onMouseEnter: () => setOpacity(1),
|
|
349
|
+
onMouseLeave: () => setOpacity(0),
|
|
350
|
+
className: `relative overflow-hidden bg-neutral-950 border border-neutral-900 rounded-2xl p-6 ${className}`,
|
|
351
|
+
children: [
|
|
352
|
+
/* @__PURE__ */ jsx3(
|
|
353
|
+
motion3.div,
|
|
354
|
+
{
|
|
355
|
+
className: "pointer-events-none absolute -inset-px opacity-0 transition-opacity duration-300",
|
|
356
|
+
style: {
|
|
357
|
+
opacity,
|
|
358
|
+
background: `radial-gradient(${glowSize}px circle at ${coords.x}px ${coords.y}px, ${glowColor}, transparent 80%)`
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
),
|
|
362
|
+
/* @__PURE__ */ jsx3("div", { className: "relative z-10", children })
|
|
363
|
+
]
|
|
364
|
+
}
|
|
365
|
+
);
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
// .generated/ui/entrance/fade-down.tsx
|
|
369
|
+
import { motion as motion4 } from "framer-motion";
|
|
370
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
371
|
+
function FadeDown({
|
|
372
|
+
children,
|
|
373
|
+
duration = 0.6,
|
|
374
|
+
delay = 0,
|
|
375
|
+
yOffset = -20,
|
|
376
|
+
className = ""
|
|
377
|
+
}) {
|
|
378
|
+
return /* @__PURE__ */ jsx4(
|
|
379
|
+
motion4.div,
|
|
380
|
+
{
|
|
381
|
+
initial: { opacity: 0, y: yOffset },
|
|
382
|
+
animate: { opacity: 1, y: 0 },
|
|
383
|
+
transition: {
|
|
384
|
+
duration,
|
|
385
|
+
delay,
|
|
386
|
+
ease: [0.16, 1, 0.3, 1]
|
|
387
|
+
// easeOutExpo
|
|
388
|
+
},
|
|
389
|
+
className,
|
|
390
|
+
children
|
|
391
|
+
}
|
|
392
|
+
);
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
// .generated/ui/entrance/fade-in.tsx
|
|
396
|
+
import { motion as motion5 } from "framer-motion";
|
|
397
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
398
|
+
function FadeIn({
|
|
399
|
+
children,
|
|
400
|
+
duration = 0.5,
|
|
401
|
+
delay = 0,
|
|
402
|
+
className = ""
|
|
403
|
+
}) {
|
|
404
|
+
return /* @__PURE__ */ jsx5(
|
|
405
|
+
motion5.div,
|
|
406
|
+
{
|
|
407
|
+
initial: { opacity: 0 },
|
|
408
|
+
animate: { opacity: 1 },
|
|
409
|
+
transition: {
|
|
410
|
+
duration,
|
|
411
|
+
delay,
|
|
412
|
+
ease: [0.215, 0.61, 0.355, 1]
|
|
413
|
+
// easeOutCubic
|
|
414
|
+
},
|
|
415
|
+
className,
|
|
416
|
+
children
|
|
417
|
+
}
|
|
418
|
+
);
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
// .generated/ui/entrance/fade-up.tsx
|
|
422
|
+
import { motion as motion6 } from "framer-motion";
|
|
423
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
424
|
+
function FadeUp({
|
|
425
|
+
children,
|
|
426
|
+
duration = 0.6,
|
|
427
|
+
delay = 0,
|
|
428
|
+
yOffset = 20,
|
|
429
|
+
className = ""
|
|
430
|
+
}) {
|
|
431
|
+
return /* @__PURE__ */ jsx6(
|
|
432
|
+
motion6.div,
|
|
433
|
+
{
|
|
434
|
+
initial: { opacity: 0, y: yOffset },
|
|
435
|
+
animate: { opacity: 1, y: 0 },
|
|
436
|
+
transition: {
|
|
437
|
+
duration,
|
|
438
|
+
delay,
|
|
439
|
+
ease: [0.16, 1, 0.3, 1]
|
|
440
|
+
// easeOutExpo
|
|
441
|
+
},
|
|
442
|
+
className,
|
|
443
|
+
children
|
|
444
|
+
}
|
|
445
|
+
);
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
// .generated/ui/entrance/scale-in.tsx
|
|
449
|
+
import { motion as motion7 } from "framer-motion";
|
|
450
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
451
|
+
function ScaleIn({
|
|
452
|
+
children,
|
|
453
|
+
duration = 0.5,
|
|
454
|
+
delay = 0,
|
|
455
|
+
initialScale = 0.92,
|
|
456
|
+
className = ""
|
|
457
|
+
}) {
|
|
458
|
+
return /* @__PURE__ */ jsx7(
|
|
459
|
+
motion7.div,
|
|
460
|
+
{
|
|
461
|
+
initial: { opacity: 0, scale: initialScale },
|
|
462
|
+
animate: { opacity: 1, scale: 1 },
|
|
463
|
+
transition: {
|
|
464
|
+
duration,
|
|
465
|
+
delay,
|
|
466
|
+
ease: [0.34, 1.56, 0.64, 1]
|
|
467
|
+
// Custom springy cubic bezier
|
|
468
|
+
},
|
|
469
|
+
className,
|
|
470
|
+
children
|
|
471
|
+
}
|
|
472
|
+
);
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
// .generated/ui/entrance/slide-left.tsx
|
|
476
|
+
import { motion as motion8 } from "framer-motion";
|
|
477
|
+
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
478
|
+
function SlideLeft({
|
|
479
|
+
children,
|
|
480
|
+
duration = 0.6,
|
|
481
|
+
delay = 0,
|
|
482
|
+
xOffset = 40,
|
|
483
|
+
className = ""
|
|
484
|
+
}) {
|
|
485
|
+
return /* @__PURE__ */ jsx8(
|
|
486
|
+
motion8.div,
|
|
487
|
+
{
|
|
488
|
+
initial: { opacity: 0, x: xOffset },
|
|
489
|
+
animate: { opacity: 1, x: 0 },
|
|
490
|
+
transition: {
|
|
491
|
+
duration,
|
|
492
|
+
delay,
|
|
493
|
+
ease: [0.16, 1, 0.3, 1]
|
|
494
|
+
// easeOutExpo
|
|
495
|
+
},
|
|
496
|
+
className,
|
|
497
|
+
children
|
|
498
|
+
}
|
|
499
|
+
);
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
// .generated/ui/entrance/slide-right.tsx
|
|
503
|
+
import { motion as motion9 } from "framer-motion";
|
|
504
|
+
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
505
|
+
function SlideRight({
|
|
506
|
+
children,
|
|
507
|
+
duration = 0.6,
|
|
508
|
+
delay = 0,
|
|
509
|
+
xOffset = -40,
|
|
510
|
+
className = ""
|
|
511
|
+
}) {
|
|
512
|
+
return /* @__PURE__ */ jsx9(
|
|
513
|
+
motion9.div,
|
|
514
|
+
{
|
|
515
|
+
initial: { opacity: 0, x: xOffset },
|
|
516
|
+
animate: { opacity: 1, x: 0 },
|
|
517
|
+
transition: {
|
|
518
|
+
duration,
|
|
519
|
+
delay,
|
|
520
|
+
ease: [0.16, 1, 0.3, 1]
|
|
521
|
+
// easeOutExpo
|
|
522
|
+
},
|
|
523
|
+
className,
|
|
524
|
+
children
|
|
525
|
+
}
|
|
526
|
+
);
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
// .generated/ui/entrance/zoom-in.tsx
|
|
530
|
+
import { motion as motion10 } from "framer-motion";
|
|
531
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
532
|
+
function ZoomIn({
|
|
533
|
+
children,
|
|
534
|
+
duration = 0.7,
|
|
535
|
+
delay = 0,
|
|
536
|
+
initialScale = 0.85,
|
|
537
|
+
initialBlur = "12px",
|
|
538
|
+
className = ""
|
|
539
|
+
}) {
|
|
540
|
+
return /* @__PURE__ */ jsx10(
|
|
541
|
+
motion10.div,
|
|
542
|
+
{
|
|
543
|
+
initial: { opacity: 0, scale: initialScale, filter: `blur(${initialBlur})` },
|
|
544
|
+
animate: { opacity: 1, scale: 1, filter: "blur(0px)" },
|
|
545
|
+
transition: {
|
|
546
|
+
duration,
|
|
547
|
+
delay,
|
|
548
|
+
ease: [0.16, 1, 0.3, 1]
|
|
549
|
+
// easeOutExpo
|
|
550
|
+
},
|
|
551
|
+
className,
|
|
552
|
+
children
|
|
553
|
+
}
|
|
554
|
+
);
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
// .generated/ui/hover/card-hover.tsx
|
|
558
|
+
import { useState as useState7 } from "react";
|
|
559
|
+
import { motion as motion11, AnimatePresence } from "framer-motion";
|
|
560
|
+
import { jsx as jsx11, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
561
|
+
function CardHover({
|
|
562
|
+
items,
|
|
563
|
+
className = "",
|
|
564
|
+
cardClassName = ""
|
|
565
|
+
}) {
|
|
566
|
+
const [hoveredIndex, setHoveredIndex] = useState7(null);
|
|
567
|
+
return /* @__PURE__ */ jsx11("div", { className: `grid grid-cols-1 md:grid-cols-3 gap-4 w-full ${className}`, children: items.map((item, idx) => /* @__PURE__ */ jsxs2(
|
|
568
|
+
"a",
|
|
569
|
+
{
|
|
570
|
+
href: item.link || "#",
|
|
571
|
+
className: "relative group block p-2 h-full w-full no-underline",
|
|
572
|
+
onMouseEnter: () => setHoveredIndex(idx),
|
|
573
|
+
onMouseLeave: () => setHoveredIndex(null),
|
|
574
|
+
children: [
|
|
575
|
+
/* @__PURE__ */ jsx11(AnimatePresence, { children: hoveredIndex === idx && /* @__PURE__ */ jsx11(
|
|
576
|
+
motion11.span,
|
|
577
|
+
{
|
|
578
|
+
className: "absolute inset-0 h-full w-full bg-neutral-200 dark:bg-zinc-800/[0.8] block rounded-3xl -z-10",
|
|
579
|
+
layoutId: "hoverBackground",
|
|
580
|
+
initial: { opacity: 0 },
|
|
581
|
+
animate: {
|
|
582
|
+
opacity: 1,
|
|
583
|
+
transition: { duration: 0.15 }
|
|
584
|
+
},
|
|
585
|
+
exit: {
|
|
586
|
+
opacity: 0,
|
|
587
|
+
transition: { duration: 0.15, delay: 0.1 }
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
) }),
|
|
591
|
+
/* @__PURE__ */ jsx11(
|
|
592
|
+
"div",
|
|
593
|
+
{
|
|
594
|
+
className: `rounded-2xl h-full w-full p-5 overflow-hidden bg-white dark:bg-black border border-neutral-200 dark:border-zinc-800 group-hover:border-slate-350 dark:group-hover:border-zinc-700 relative z-20 transition-colors duration-200 ${cardClassName}`,
|
|
595
|
+
children: /* @__PURE__ */ jsxs2("div", { className: "relative z-50", children: [
|
|
596
|
+
/* @__PURE__ */ jsx11("h4", { className: "text-zinc-900 dark:text-zinc-100 font-bold tracking-wide mt-2", children: item.title }),
|
|
597
|
+
/* @__PURE__ */ jsx11("p", { className: "mt-2 text-zinc-500 dark:text-zinc-400 tracking-wide leading-relaxed text-sm", children: item.description })
|
|
598
|
+
] })
|
|
599
|
+
}
|
|
600
|
+
)
|
|
601
|
+
]
|
|
602
|
+
},
|
|
603
|
+
item.id
|
|
604
|
+
)) });
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
// .generated/ui/hover/glow-button.tsx
|
|
608
|
+
import { useRef as useRef2, useState as useState8 } from "react";
|
|
609
|
+
import { motion as motion12 } from "framer-motion";
|
|
610
|
+
import { jsx as jsx12, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
611
|
+
function GlowButton({
|
|
612
|
+
children,
|
|
613
|
+
className = "",
|
|
614
|
+
glowColor = "rgba(59, 130, 246, 0.15)",
|
|
615
|
+
// Light blue default
|
|
616
|
+
onClick
|
|
617
|
+
}) {
|
|
618
|
+
const containerRef = useRef2(null);
|
|
619
|
+
const [coords, setCoords] = useState8({ x: 0, y: 0 });
|
|
620
|
+
const [opacity, setOpacity] = useState8(0);
|
|
621
|
+
const handleMouseMove = (e) => {
|
|
622
|
+
if (!containerRef.current) return;
|
|
623
|
+
const rect = containerRef.current.getBoundingClientRect();
|
|
624
|
+
setCoords({
|
|
625
|
+
x: e.clientX - rect.left,
|
|
626
|
+
y: e.clientY - rect.top
|
|
627
|
+
});
|
|
628
|
+
};
|
|
629
|
+
return /* @__PURE__ */ jsxs3(
|
|
630
|
+
"button",
|
|
631
|
+
{
|
|
632
|
+
ref: containerRef,
|
|
633
|
+
onMouseMove: handleMouseMove,
|
|
634
|
+
onMouseEnter: () => setOpacity(1),
|
|
635
|
+
onMouseLeave: () => setOpacity(0),
|
|
636
|
+
onClick,
|
|
637
|
+
className: `relative overflow-hidden inline-flex items-center justify-center rounded-xl bg-neutral-900 border border-neutral-800 text-white font-medium text-sm h-11 px-6 shadow-md transition-colors hover:border-neutral-700 cursor-pointer ${className}`,
|
|
638
|
+
children: [
|
|
639
|
+
/* @__PURE__ */ jsx12(
|
|
640
|
+
motion12.div,
|
|
641
|
+
{
|
|
642
|
+
className: "pointer-events-none absolute -inset-px rounded-xl opacity-0 transition-opacity duration-300",
|
|
643
|
+
style: {
|
|
644
|
+
opacity,
|
|
645
|
+
background: `radial-gradient(120px circle at ${coords.x}px ${coords.y}px, ${glowColor}, transparent 80%)`
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
),
|
|
649
|
+
/* @__PURE__ */ jsx12("span", { className: "relative z-10", children })
|
|
650
|
+
]
|
|
651
|
+
}
|
|
652
|
+
);
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
// .generated/ui/hover/magnetic-button.tsx
|
|
656
|
+
import { useRef as useRef3, useState as useState9 } from "react";
|
|
657
|
+
import { motion as motion13, useSpring as useSpring3 } from "framer-motion";
|
|
658
|
+
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
659
|
+
function MagneticButton({
|
|
660
|
+
children,
|
|
661
|
+
range = 45,
|
|
662
|
+
strength = 0.35,
|
|
663
|
+
className = "",
|
|
664
|
+
onClick
|
|
665
|
+
}) {
|
|
666
|
+
const ref = useRef3(null);
|
|
667
|
+
const [position, setPosition] = useState9({ x: 0, y: 0 });
|
|
668
|
+
const springConfig = { stiffness: 150, damping: 15, mass: 0.6 };
|
|
669
|
+
const x = useSpring3(0, springConfig);
|
|
670
|
+
const y = useSpring3(0, springConfig);
|
|
671
|
+
const handleMouseMove = (e) => {
|
|
672
|
+
if (!ref.current) return;
|
|
673
|
+
const { clientX, clientY } = e;
|
|
674
|
+
const { left, top, width, height } = ref.current.getBoundingClientRect();
|
|
675
|
+
const centerX = left + width / 2;
|
|
676
|
+
const centerY = top + height / 2;
|
|
677
|
+
const dist = Math.hypot(clientX - centerX, clientY - centerY);
|
|
678
|
+
if (dist < range) {
|
|
679
|
+
const targetX = (clientX - centerX) * strength;
|
|
680
|
+
const targetY = (clientY - centerY) * strength;
|
|
681
|
+
x.set(targetX);
|
|
682
|
+
y.set(targetY);
|
|
683
|
+
} else {
|
|
684
|
+
x.set(0);
|
|
685
|
+
y.set(0);
|
|
686
|
+
}
|
|
687
|
+
};
|
|
688
|
+
const handleMouseLeave = () => {
|
|
689
|
+
x.set(0);
|
|
690
|
+
y.set(0);
|
|
691
|
+
};
|
|
692
|
+
return /* @__PURE__ */ jsx13(
|
|
693
|
+
motion13.button,
|
|
694
|
+
{
|
|
695
|
+
ref,
|
|
696
|
+
onMouseMove: handleMouseMove,
|
|
697
|
+
onMouseLeave: handleMouseLeave,
|
|
698
|
+
onClick,
|
|
699
|
+
style: { x, y },
|
|
700
|
+
className: `relative inline-flex items-center justify-center rounded-full bg-neutral-900 dark:bg-white text-white dark:text-black font-semibold text-sm h-11 px-6 shadow hover:scale-[1.03] transition-all cursor-pointer select-none border-0 ${className}`,
|
|
701
|
+
children: /* @__PURE__ */ jsx13("span", { className: "relative z-10 block pointer-events-none", children })
|
|
702
|
+
}
|
|
703
|
+
);
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
// .generated/ui/hover/tilt-card.tsx
|
|
707
|
+
import { useRef as useRef4, useState as useState10 } from "react";
|
|
708
|
+
import { motion as motion14, useMotionValue, useSpring as useSpring4, useTransform } from "framer-motion";
|
|
709
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
710
|
+
function TiltCard({
|
|
711
|
+
children,
|
|
712
|
+
maxTilt = 15,
|
|
713
|
+
className = "",
|
|
714
|
+
cardClassName = ""
|
|
715
|
+
}) {
|
|
716
|
+
const cardRef = useRef4(null);
|
|
717
|
+
const [isHovered, setIsHovered] = useState10(false);
|
|
718
|
+
const x = useMotionValue(0);
|
|
719
|
+
const y = useMotionValue(0);
|
|
720
|
+
const springConfig = { damping: 20, stiffness: 200, mass: 0.5 };
|
|
721
|
+
const rotateX = useSpring4(useTransform(y, [-0.5, 0.5], [maxTilt, -maxTilt]), springConfig);
|
|
722
|
+
const rotateY = useSpring4(useTransform(x, [-0.5, 0.5], [-maxTilt, maxTilt]), springConfig);
|
|
723
|
+
const handleMouseMove = (event) => {
|
|
724
|
+
if (!cardRef.current) return;
|
|
725
|
+
const rect = cardRef.current.getBoundingClientRect();
|
|
726
|
+
const relativeX = (event.clientX - rect.left) / rect.width - 0.5;
|
|
727
|
+
const relativeY = (event.clientY - rect.top) / rect.height - 0.5;
|
|
728
|
+
x.set(relativeX);
|
|
729
|
+
y.set(relativeY);
|
|
730
|
+
};
|
|
731
|
+
const handleMouseLeave = () => {
|
|
732
|
+
setIsHovered(false);
|
|
733
|
+
x.set(0);
|
|
734
|
+
y.set(0);
|
|
735
|
+
};
|
|
736
|
+
return /* @__PURE__ */ jsx14(
|
|
737
|
+
"div",
|
|
738
|
+
{
|
|
739
|
+
ref: cardRef,
|
|
740
|
+
onMouseMove: handleMouseMove,
|
|
741
|
+
onMouseEnter: () => setIsHovered(true),
|
|
742
|
+
onMouseLeave: handleMouseLeave,
|
|
743
|
+
className: `relative w-full aspect-[4/3] max-w-[320px] cursor-pointer ${className}`,
|
|
744
|
+
style: { perspective: "800px" },
|
|
745
|
+
children: /* @__PURE__ */ jsx14(
|
|
746
|
+
motion14.div,
|
|
747
|
+
{
|
|
748
|
+
style: {
|
|
749
|
+
rotateX,
|
|
750
|
+
rotateY,
|
|
751
|
+
transformStyle: "preserve-3d"
|
|
752
|
+
},
|
|
753
|
+
className: `w-full h-full rounded-2xl bg-gradient-to-br from-neutral-100 to-neutral-250 dark:from-neutral-850 dark:to-neutral-900 border border-neutral-200/20 shadow-lg flex items-center justify-center p-6 select-none ${cardClassName}`,
|
|
754
|
+
children: /* @__PURE__ */ jsx14("div", { style: { transform: "translateZ(40px)", transformStyle: "preserve-3d" }, className: "w-full h-full flex flex-col justify-center items-center", children })
|
|
755
|
+
}
|
|
756
|
+
)
|
|
757
|
+
}
|
|
758
|
+
);
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
// .generated/ui/loading/accordion-loader.tsx
|
|
762
|
+
import { motion as motion15 } from "framer-motion";
|
|
763
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
764
|
+
var AccordionLoader = () => {
|
|
765
|
+
return /* @__PURE__ */ jsx15("div", { className: "flex flex-col space-y-1.5 w-10 h-10 justify-center", children: [0, 1, 2, 3].map((i) => /* @__PURE__ */ jsx15(
|
|
766
|
+
motion15.div,
|
|
767
|
+
{
|
|
768
|
+
className: "w-full h-1 bg-zinc-800 dark:bg-white rounded-full origin-left",
|
|
769
|
+
animate: { scaleX: [1, 0.2, 1] },
|
|
770
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut", delay: i * 0.15 }
|
|
771
|
+
},
|
|
772
|
+
i
|
|
773
|
+
)) });
|
|
774
|
+
};
|
|
775
|
+
|
|
776
|
+
// .generated/ui/loading/app-icon-load.tsx
|
|
777
|
+
import { motion as motion16 } from "framer-motion";
|
|
778
|
+
import { jsx as jsx16, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
779
|
+
var AppIconLoad = () => /* @__PURE__ */ jsx16("div", { className: "relative w-12 h-12 bg-zinc-200 dark:bg-zinc-800 rounded-[12px] flex items-center justify-center overflow-hidden", children: /* @__PURE__ */ jsxs4("svg", { className: "w-8 h-8 absolute", viewBox: "0 0 50 50", children: [
|
|
780
|
+
/* @__PURE__ */ jsx16(
|
|
781
|
+
"circle",
|
|
782
|
+
{
|
|
783
|
+
cx: "25",
|
|
784
|
+
cy: "25",
|
|
785
|
+
r: "20",
|
|
786
|
+
className: "stroke-zinc-300 dark:stroke-zinc-700 fill-none",
|
|
787
|
+
strokeWidth: "4"
|
|
788
|
+
}
|
|
789
|
+
),
|
|
790
|
+
/* @__PURE__ */ jsx16(
|
|
791
|
+
motion16.circle,
|
|
792
|
+
{
|
|
793
|
+
cx: "25",
|
|
794
|
+
cy: "25",
|
|
795
|
+
r: "20",
|
|
796
|
+
className: "stroke-zinc-800 dark:stroke-white fill-none",
|
|
797
|
+
strokeWidth: "4",
|
|
798
|
+
strokeDasharray: "125",
|
|
799
|
+
animate: { strokeDashoffset: [125, 0] },
|
|
800
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" },
|
|
801
|
+
style: { rotate: -90, transformOrigin: "center" }
|
|
802
|
+
}
|
|
803
|
+
)
|
|
804
|
+
] }) });
|
|
805
|
+
|
|
806
|
+
// .generated/ui/loading/apple-breathe.tsx
|
|
807
|
+
import { motion as motion17 } from "framer-motion";
|
|
808
|
+
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
809
|
+
var AppleBreathe = () => {
|
|
810
|
+
return /* @__PURE__ */ jsx17("div", { className: "relative flex items-center justify-center w-12 h-12", children: [0, 60, 120, 180, 240, 300].map((angle, idx) => {
|
|
811
|
+
const bgClass = idx % 2 === 0 ? "bg-teal-400/35 dark:bg-teal-400/40" : "bg-cyan-400/35 dark:bg-cyan-400/40";
|
|
812
|
+
return /* @__PURE__ */ jsx17(
|
|
813
|
+
motion17.div,
|
|
814
|
+
{
|
|
815
|
+
className: `absolute w-3.5 h-3.5 rounded-full ${bgClass}`,
|
|
816
|
+
style: { transformOrigin: "center" },
|
|
817
|
+
animate: {
|
|
818
|
+
scale: [1, 1.75, 1],
|
|
819
|
+
x: [0, Math.cos(angle * Math.PI / 180) * 11, 0],
|
|
820
|
+
y: [0, Math.sin(angle * Math.PI / 180) * 11, 0]
|
|
821
|
+
},
|
|
822
|
+
transition: {
|
|
823
|
+
duration: 3.6,
|
|
824
|
+
repeat: Infinity,
|
|
825
|
+
ease: "easeInOut"
|
|
826
|
+
}
|
|
827
|
+
},
|
|
828
|
+
angle
|
|
829
|
+
);
|
|
830
|
+
}) });
|
|
831
|
+
};
|
|
832
|
+
|
|
833
|
+
// .generated/ui/loading/apple-equalizer.tsx
|
|
834
|
+
import { motion as motion18 } from "framer-motion";
|
|
835
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
836
|
+
var AppleEqualizer = () => /* @__PURE__ */ jsx18("div", { className: "flex space-x-1 h-8 items-end", children: [0, 1, 2, 3].map((i) => /* @__PURE__ */ jsx18(
|
|
837
|
+
motion18.div,
|
|
838
|
+
{
|
|
839
|
+
className: "w-1.5 bg-zinc-800 dark:bg-white rounded-t-sm",
|
|
840
|
+
animate: { height: ["20%", "100%", "20%"] },
|
|
841
|
+
transition: { duration: 0.8, repeat: Infinity, delay: Math.random() * 0.5, ease: "circInOut" }
|
|
842
|
+
},
|
|
843
|
+
i
|
|
844
|
+
)) });
|
|
845
|
+
|
|
846
|
+
// .generated/ui/loading/apple-icon-morph.tsx
|
|
847
|
+
import { motion as motion19 } from "framer-motion";
|
|
848
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
849
|
+
var AppleIconMorph = () => /* @__PURE__ */ jsx19(
|
|
850
|
+
motion19.div,
|
|
851
|
+
{
|
|
852
|
+
className: "w-8 h-8 bg-zinc-800 dark:bg-white",
|
|
853
|
+
animate: {
|
|
854
|
+
borderRadius: ["20%", "50%", "50%", "20%"],
|
|
855
|
+
rotate: [0, 90, 180, 270]
|
|
856
|
+
},
|
|
857
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
858
|
+
}
|
|
859
|
+
);
|
|
860
|
+
|
|
861
|
+
// .generated/ui/loading/apple-pulse-dots.tsx
|
|
862
|
+
import { motion as motion20 } from "framer-motion";
|
|
863
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
864
|
+
var ApplePulseDots = () => /* @__PURE__ */ jsx20("div", { className: "flex space-x-2", children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx20(
|
|
865
|
+
motion20.div,
|
|
866
|
+
{
|
|
867
|
+
className: "w-2.5 h-2.5 bg-zinc-800 dark:bg-white rounded-full",
|
|
868
|
+
animate: { scale: [0.5, 1, 0.5], opacity: [0.3, 1, 0.3] },
|
|
869
|
+
transition: { duration: 1.2, repeat: Infinity, delay: i * 0.15, ease: "easeInOut" }
|
|
870
|
+
},
|
|
871
|
+
i
|
|
872
|
+
)) });
|
|
873
|
+
|
|
874
|
+
// .generated/ui/loading/apple-scale-pulse.tsx
|
|
875
|
+
import { motion as motion21 } from "framer-motion";
|
|
876
|
+
import { jsx as jsx21, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
877
|
+
var AppleScalePulse = () => /* @__PURE__ */ jsxs5("div", { className: "relative w-12 h-12 flex items-center justify-center", children: [
|
|
878
|
+
/* @__PURE__ */ jsx21(
|
|
879
|
+
motion21.div,
|
|
880
|
+
{
|
|
881
|
+
className: "absolute w-full h-full bg-zinc-200 dark:bg-zinc-800 rounded-full",
|
|
882
|
+
animate: { scale: [0, 1], opacity: [1, 0] },
|
|
883
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeOut" }
|
|
884
|
+
}
|
|
885
|
+
),
|
|
886
|
+
/* @__PURE__ */ jsx21(
|
|
887
|
+
motion21.div,
|
|
888
|
+
{
|
|
889
|
+
className: "absolute w-full h-full bg-zinc-200 dark:bg-zinc-800 rounded-full",
|
|
890
|
+
animate: { scale: [0, 1], opacity: [1, 0] },
|
|
891
|
+
transition: { duration: 1.5, repeat: Infinity, delay: 0.5, ease: "easeOut" }
|
|
892
|
+
}
|
|
893
|
+
),
|
|
894
|
+
/* @__PURE__ */ jsx21("div", { className: "w-3 h-3 bg-zinc-800 dark:bg-white rounded-full z-10" })
|
|
895
|
+
] });
|
|
896
|
+
|
|
897
|
+
// .generated/ui/loading/apple-sound-wave.tsx
|
|
898
|
+
import { motion as motion22 } from "framer-motion";
|
|
899
|
+
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
900
|
+
var AppleSoundWave = () => /* @__PURE__ */ jsx22("div", { className: "flex space-x-1 h-8 items-center", children: [1, 2, 3, 2, 1].map((val, i) => /* @__PURE__ */ jsx22(
|
|
901
|
+
motion22.div,
|
|
902
|
+
{
|
|
903
|
+
className: "w-1 bg-zinc-800 dark:bg-white rounded-full",
|
|
904
|
+
animate: { height: [4, val * 8, 4] },
|
|
905
|
+
transition: { duration: 1, repeat: Infinity, delay: i * 0.1, ease: "easeInOut" }
|
|
906
|
+
},
|
|
907
|
+
i
|
|
908
|
+
)) });
|
|
909
|
+
|
|
910
|
+
// .generated/ui/loading/apple-text-reveal.tsx
|
|
911
|
+
import { motion as motion23 } from "framer-motion";
|
|
912
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
913
|
+
var AppleTextReveal = () => /* @__PURE__ */ jsx23("div", { className: "font-medium text-lg text-zinc-900 dark:text-white overflow-hidden h-6 relative", children: /* @__PURE__ */ jsx23(
|
|
914
|
+
motion23.div,
|
|
915
|
+
{
|
|
916
|
+
animate: { y: ["100%", "0%", "-100%"] },
|
|
917
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" },
|
|
918
|
+
children: "Loading"
|
|
919
|
+
}
|
|
920
|
+
) });
|
|
921
|
+
|
|
922
|
+
// .generated/ui/loading/apple-unlock.tsx
|
|
923
|
+
import { motion as motion24 } from "framer-motion";
|
|
924
|
+
import { jsx as jsx24, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
925
|
+
var AppleUnlock = ({ theme = "light" }) => {
|
|
926
|
+
const isDark = theme === "dark";
|
|
927
|
+
return /* @__PURE__ */ jsxs6("div", { className: "relative font-medium text-sm tracking-wide select-none", children: [
|
|
928
|
+
/* @__PURE__ */ jsx24("span", { className: "text-zinc-400 dark:text-zinc-600", children: "Slide to unlock" }),
|
|
929
|
+
/* @__PURE__ */ jsx24(
|
|
930
|
+
motion24.div,
|
|
931
|
+
{
|
|
932
|
+
className: "absolute inset-0 text-zinc-950 dark:text-white bg-clip-text text-transparent bg-gradient-to-r from-transparent via-current to-transparent",
|
|
933
|
+
style: {
|
|
934
|
+
backgroundSize: "200% 100%"
|
|
935
|
+
},
|
|
936
|
+
animate: { backgroundPosition: ["200% 0", "-200% 0"] },
|
|
937
|
+
transition: { duration: 2.2, repeat: Infinity, ease: "linear" },
|
|
938
|
+
children: "Slide to unlock"
|
|
939
|
+
}
|
|
940
|
+
)
|
|
941
|
+
] });
|
|
942
|
+
};
|
|
943
|
+
|
|
944
|
+
// .generated/ui/loading/arc-tracer.tsx
|
|
945
|
+
import { motion as motion25 } from "framer-motion";
|
|
946
|
+
import { jsx as jsx25, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
947
|
+
var ArcTracer = () => {
|
|
948
|
+
return /* @__PURE__ */ jsxs7("svg", { className: "w-10 h-10", viewBox: "0 0 50 50", children: [
|
|
949
|
+
/* @__PURE__ */ jsx25("circle", { cx: "25", cy: "25", r: "20", className: "stroke-zinc-200 dark:stroke-zinc-800 fill-none", strokeWidth: "4" }),
|
|
950
|
+
/* @__PURE__ */ jsx25(
|
|
951
|
+
motion25.circle,
|
|
952
|
+
{
|
|
953
|
+
cx: "25",
|
|
954
|
+
cy: "25",
|
|
955
|
+
r: "20",
|
|
956
|
+
className: "stroke-zinc-800 dark:stroke-white fill-none",
|
|
957
|
+
strokeWidth: "4",
|
|
958
|
+
strokeLinecap: "round",
|
|
959
|
+
strokeDasharray: "125",
|
|
960
|
+
animate: { strokeDashoffset: [125, 0, -125] },
|
|
961
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
962
|
+
}
|
|
963
|
+
)
|
|
964
|
+
] });
|
|
965
|
+
};
|
|
966
|
+
|
|
967
|
+
// .generated/ui/loading/bar-cascade.tsx
|
|
968
|
+
import { motion as motion26 } from "framer-motion";
|
|
969
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
970
|
+
var BarCascade = () => {
|
|
971
|
+
return /* @__PURE__ */ jsx26("div", { className: "flex space-x-1 items-center h-8", children: [0, 1, 2, 3, 4].map((i) => /* @__PURE__ */ jsx26(
|
|
972
|
+
motion26.div,
|
|
973
|
+
{
|
|
974
|
+
className: "w-1.5 bg-zinc-800 dark:bg-white rounded-full",
|
|
975
|
+
animate: { height: ["8px", "24px", "8px"] },
|
|
976
|
+
transition: { duration: 1, repeat: Infinity, delay: i * 0.1, ease: "easeInOut" }
|
|
977
|
+
},
|
|
978
|
+
i
|
|
979
|
+
)) });
|
|
980
|
+
};
|
|
981
|
+
|
|
982
|
+
// .generated/ui/loading/bar-sweep.tsx
|
|
983
|
+
import { motion as motion27 } from "framer-motion";
|
|
984
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
985
|
+
var BarSweep = () => {
|
|
986
|
+
return /* @__PURE__ */ jsx27("div", { className: "w-12 h-6 border-2 border-zinc-800 dark:border-zinc-700 rounded-full p-1 relative flex items-center overflow-hidden", children: /* @__PURE__ */ jsx27(
|
|
987
|
+
motion27.div,
|
|
988
|
+
{
|
|
989
|
+
className: "w-4 h-4 bg-zinc-800 dark:bg-white rounded-full absolute",
|
|
990
|
+
animate: { x: [0, 24, 0] },
|
|
991
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut" }
|
|
992
|
+
}
|
|
993
|
+
) });
|
|
994
|
+
};
|
|
995
|
+
|
|
996
|
+
// .generated/ui/loading/bobbing-dots.tsx
|
|
997
|
+
import { motion as motion28 } from "framer-motion";
|
|
998
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
999
|
+
var BobbingDots = () => {
|
|
1000
|
+
return /* @__PURE__ */ jsx28("div", { className: "flex space-x-2", children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx28(
|
|
1001
|
+
motion28.div,
|
|
1002
|
+
{
|
|
1003
|
+
className: "w-3 h-3 bg-zinc-800 dark:bg-white rounded-full",
|
|
1004
|
+
animate: { y: [0, -10, 0] },
|
|
1005
|
+
transition: { duration: 1.2, repeat: Infinity, delay: i * 0.15, ease: "easeInOut" }
|
|
1006
|
+
},
|
|
1007
|
+
i
|
|
1008
|
+
)) });
|
|
1009
|
+
};
|
|
1010
|
+
|
|
1011
|
+
// .generated/ui/loading/bounce-dots.tsx
|
|
1012
|
+
import { motion as motion29 } from "framer-motion";
|
|
1013
|
+
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
1014
|
+
var BounceDots = () => {
|
|
1015
|
+
return /* @__PURE__ */ jsx29("div", { className: "flex space-x-1.5", children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx29(
|
|
1016
|
+
motion29.div,
|
|
1017
|
+
{
|
|
1018
|
+
className: "w-2.5 h-2.5 bg-zinc-800 dark:bg-white rounded-full",
|
|
1019
|
+
animate: { y: [0, -8, 0] },
|
|
1020
|
+
transition: {
|
|
1021
|
+
duration: 0.6,
|
|
1022
|
+
repeat: Infinity,
|
|
1023
|
+
delay: i * 0.1,
|
|
1024
|
+
ease: "easeInOut"
|
|
1025
|
+
}
|
|
1026
|
+
},
|
|
1027
|
+
i
|
|
1028
|
+
)) });
|
|
1029
|
+
};
|
|
1030
|
+
|
|
1031
|
+
// .generated/ui/loading/bouncing-bars.tsx
|
|
1032
|
+
import { motion as motion30 } from "framer-motion";
|
|
1033
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
1034
|
+
var BouncingBars = () => {
|
|
1035
|
+
return /* @__PURE__ */ jsx30("div", { className: "flex space-x-1.5 h-8 items-center", children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx30(
|
|
1036
|
+
motion30.div,
|
|
1037
|
+
{
|
|
1038
|
+
className: "w-1.5 h-8 bg-zinc-800 dark:bg-white rounded-full",
|
|
1039
|
+
animate: { scaleY: [0.3, 1, 0.3] },
|
|
1040
|
+
transition: { duration: 1, repeat: Infinity, delay: i * 0.2, ease: "easeInOut" }
|
|
1041
|
+
},
|
|
1042
|
+
i
|
|
1043
|
+
)) });
|
|
1044
|
+
};
|
|
1045
|
+
|
|
1046
|
+
// .generated/ui/loading/bouncing-dots.tsx
|
|
1047
|
+
import { motion as motion31 } from "framer-motion";
|
|
1048
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
1049
|
+
var BouncingDots = () => {
|
|
1050
|
+
return /* @__PURE__ */ jsx31("div", { className: "flex space-x-2 h-12 items-end pb-2 border-b-2 border-zinc-200 dark:border-zinc-800 w-16 justify-center relative", children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx31(
|
|
1051
|
+
motion31.div,
|
|
1052
|
+
{
|
|
1053
|
+
className: "w-3 h-3 bg-zinc-800 dark:bg-white rounded-full absolute bottom-2",
|
|
1054
|
+
style: { left: `${i * 14 + 10}px` },
|
|
1055
|
+
animate: { y: [0, -20, 0], scaleY: [0.8, 1.1, 0.8] },
|
|
1056
|
+
transition: { duration: 0.8, repeat: Infinity, delay: i * 0.1, ease: "easeInOut" }
|
|
1057
|
+
},
|
|
1058
|
+
i
|
|
1059
|
+
)) });
|
|
1060
|
+
};
|
|
1061
|
+
|
|
1062
|
+
// .generated/ui/loading/bouncing-lines.tsx
|
|
1063
|
+
import { motion as motion32 } from "framer-motion";
|
|
1064
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
1065
|
+
var BouncingLines = () => {
|
|
1066
|
+
return /* @__PURE__ */ jsx32("div", { className: "flex flex-col space-y-1.5 w-8", children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx32(
|
|
1067
|
+
motion32.div,
|
|
1068
|
+
{
|
|
1069
|
+
className: "w-full h-1.5 bg-zinc-800 dark:bg-white rounded-full origin-left",
|
|
1070
|
+
animate: { scaleX: [0.3, 1, 0.3] },
|
|
1071
|
+
transition: { duration: 1, repeat: Infinity, delay: i * 0.2, ease: "easeInOut" }
|
|
1072
|
+
},
|
|
1073
|
+
i
|
|
1074
|
+
)) });
|
|
1075
|
+
};
|
|
1076
|
+
|
|
1077
|
+
// .generated/ui/loading/bouncing-square.tsx
|
|
1078
|
+
import { motion as motion33 } from "framer-motion";
|
|
1079
|
+
import { jsx as jsx33, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1080
|
+
var BouncingSquare = () => {
|
|
1081
|
+
return /* @__PURE__ */ jsxs8("div", { className: "relative w-10 h-12 flex items-end justify-center", children: [
|
|
1082
|
+
/* @__PURE__ */ jsx33("div", { className: "absolute bottom-0 w-8 h-1 bg-zinc-200 dark:bg-zinc-800 rounded-full blur-sm" }),
|
|
1083
|
+
/* @__PURE__ */ jsx33(
|
|
1084
|
+
motion33.div,
|
|
1085
|
+
{
|
|
1086
|
+
className: "w-6 h-6 bg-zinc-800 dark:bg-white rounded-sm origin-bottom",
|
|
1087
|
+
animate: { y: [0, -24, 0], scaleY: [0.8, 1.1, 0.8], scaleX: [1.2, 0.9, 1.2] },
|
|
1088
|
+
transition: { duration: 0.6, repeat: Infinity, ease: "easeInOut" }
|
|
1089
|
+
}
|
|
1090
|
+
)
|
|
1091
|
+
] });
|
|
1092
|
+
};
|
|
1093
|
+
|
|
1094
|
+
// .generated/ui/loading/breathe-ring.tsx
|
|
1095
|
+
import { motion as motion34 } from "framer-motion";
|
|
1096
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
1097
|
+
var BreatheRing = () => /* @__PURE__ */ jsx34(
|
|
1098
|
+
motion34.div,
|
|
1099
|
+
{
|
|
1100
|
+
className: "w-10 h-10 rounded-full border-4 border-zinc-800 dark:border-zinc-700",
|
|
1101
|
+
animate: { scale: [0.8, 1.1, 0.8], borderWidth: [6, 2, 6] },
|
|
1102
|
+
transition: { duration: 3, repeat: Infinity, ease: "easeInOut" }
|
|
1103
|
+
}
|
|
1104
|
+
);
|
|
1105
|
+
|
|
1106
|
+
// .generated/ui/loading/breathing-glow.tsx
|
|
1107
|
+
import { motion as motion35 } from "framer-motion";
|
|
1108
|
+
import { jsx as jsx35, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1109
|
+
var BreathingGlow = () => {
|
|
1110
|
+
return /* @__PURE__ */ jsxs9("div", { className: "relative flex items-center justify-center w-12 h-12", children: [
|
|
1111
|
+
/* @__PURE__ */ jsx35(
|
|
1112
|
+
motion35.div,
|
|
1113
|
+
{
|
|
1114
|
+
className: "absolute w-8 h-8 bg-blue-500 rounded-full blur-md",
|
|
1115
|
+
animate: { scale: [1, 1.5, 1], opacity: [0.5, 0.8, 0.5] },
|
|
1116
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
1117
|
+
}
|
|
1118
|
+
),
|
|
1119
|
+
/* @__PURE__ */ jsx35("div", { className: "relative w-6 h-6 bg-white rounded-full shadow-sm" })
|
|
1120
|
+
] });
|
|
1121
|
+
};
|
|
1122
|
+
|
|
1123
|
+
// .generated/ui/loading/breathing-square.tsx
|
|
1124
|
+
import { motion as motion36 } from "framer-motion";
|
|
1125
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
1126
|
+
var BreathingSquare = () => {
|
|
1127
|
+
return /* @__PURE__ */ jsx36(
|
|
1128
|
+
motion36.div,
|
|
1129
|
+
{
|
|
1130
|
+
className: "w-8 h-8 bg-zinc-800 dark:bg-white",
|
|
1131
|
+
animate: {
|
|
1132
|
+
scale: [1, 1.2, 1],
|
|
1133
|
+
borderRadius: ["0%", "50%", "0%"],
|
|
1134
|
+
rotate: [0, 90, 180]
|
|
1135
|
+
},
|
|
1136
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
1137
|
+
}
|
|
1138
|
+
);
|
|
1139
|
+
};
|
|
1140
|
+
|
|
1141
|
+
// .generated/ui/loading/circular-bars.tsx
|
|
1142
|
+
import { motion as motion37 } from "framer-motion";
|
|
1143
|
+
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
1144
|
+
var CircularBars = () => {
|
|
1145
|
+
return /* @__PURE__ */ jsx37("div", { className: "relative w-10 h-10", children: Array.from({ length: 8 }).map((_, i) => /* @__PURE__ */ jsx37(
|
|
1146
|
+
motion37.div,
|
|
1147
|
+
{
|
|
1148
|
+
className: "absolute top-0 left-[18px] w-1 h-3 bg-zinc-800 dark:bg-white rounded-full origin-[2px_20px]",
|
|
1149
|
+
style: { rotate: i * 45 },
|
|
1150
|
+
animate: { scaleY: [0.5, 1.5, 0.5] },
|
|
1151
|
+
transition: { duration: 1.2, repeat: Infinity, delay: i * 0.15, ease: "easeInOut" }
|
|
1152
|
+
},
|
|
1153
|
+
i
|
|
1154
|
+
)) });
|
|
1155
|
+
};
|
|
1156
|
+
|
|
1157
|
+
// .generated/ui/loading/classic-spinner.tsx
|
|
1158
|
+
import { motion as motion38 } from "framer-motion";
|
|
1159
|
+
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
1160
|
+
var ClassicSpinner = () => {
|
|
1161
|
+
return /* @__PURE__ */ jsx38("div", { className: "relative w-8 h-8", children: Array.from({ length: 12 }).map((_, i) => /* @__PURE__ */ jsx38(
|
|
1162
|
+
motion38.div,
|
|
1163
|
+
{
|
|
1164
|
+
className: "absolute top-0 left-[14px] w-[4px] h-[8px] bg-zinc-400 dark:bg-zinc-200 rounded-full origin-[2px_16px]",
|
|
1165
|
+
style: { rotate: i * 30 },
|
|
1166
|
+
animate: { opacity: [1, 0.2] },
|
|
1167
|
+
transition: {
|
|
1168
|
+
duration: 1,
|
|
1169
|
+
repeat: Infinity,
|
|
1170
|
+
ease: "linear",
|
|
1171
|
+
delay: i * (1 / 12)
|
|
1172
|
+
}
|
|
1173
|
+
},
|
|
1174
|
+
i
|
|
1175
|
+
)) });
|
|
1176
|
+
};
|
|
1177
|
+
|
|
1178
|
+
// .generated/ui/loading/clock-spinner.tsx
|
|
1179
|
+
import { motion as motion39 } from "framer-motion";
|
|
1180
|
+
import { jsx as jsx39, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1181
|
+
var ClockSpinner = () => {
|
|
1182
|
+
return /* @__PURE__ */ jsxs10("div", { className: "relative w-10 h-10 border-2 border-zinc-800 dark:border-zinc-700 rounded-full flex items-center justify-center", children: [
|
|
1183
|
+
/* @__PURE__ */ jsx39(
|
|
1184
|
+
motion39.div,
|
|
1185
|
+
{
|
|
1186
|
+
className: "absolute w-0.5 h-3.5 bg-zinc-800 dark:bg-white rounded-full origin-bottom",
|
|
1187
|
+
style: { bottom: "50%" },
|
|
1188
|
+
animate: { rotate: 360 },
|
|
1189
|
+
transition: { duration: 2, repeat: Infinity, ease: "linear" }
|
|
1190
|
+
}
|
|
1191
|
+
),
|
|
1192
|
+
/* @__PURE__ */ jsx39(
|
|
1193
|
+
motion39.div,
|
|
1194
|
+
{
|
|
1195
|
+
className: "absolute w-0.5 h-2.5 bg-zinc-800 dark:bg-white rounded-full origin-bottom",
|
|
1196
|
+
style: { bottom: "50%" },
|
|
1197
|
+
animate: { rotate: 360 },
|
|
1198
|
+
transition: { duration: 12, repeat: Infinity, ease: "linear" }
|
|
1199
|
+
}
|
|
1200
|
+
)
|
|
1201
|
+
] });
|
|
1202
|
+
};
|
|
1203
|
+
|
|
1204
|
+
// .generated/ui/loading/comet-spinner.tsx
|
|
1205
|
+
import { motion as motion40 } from "framer-motion";
|
|
1206
|
+
import { jsx as jsx40, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1207
|
+
var CometSpinner = () => {
|
|
1208
|
+
return /* @__PURE__ */ jsxs11("div", { className: "relative w-10 h-10 border border-zinc-200 dark:border-zinc-800 rounded-full flex items-center justify-center", children: [
|
|
1209
|
+
/* @__PURE__ */ jsx40(
|
|
1210
|
+
motion40.div,
|
|
1211
|
+
{
|
|
1212
|
+
className: "absolute w-full h-full rounded-full",
|
|
1213
|
+
style: {
|
|
1214
|
+
background: "conic-gradient(from 0deg, transparent 0%, rgba(39, 39, 42, 0.1) 60%, rgba(39, 39, 42, 1) 100%)"
|
|
1215
|
+
},
|
|
1216
|
+
animate: { rotate: 360 },
|
|
1217
|
+
transition: { duration: 1, repeat: Infinity, ease: "linear" }
|
|
1218
|
+
}
|
|
1219
|
+
),
|
|
1220
|
+
/* @__PURE__ */ jsx40("div", { className: "absolute bg-white w-8 h-8 rounded-full" })
|
|
1221
|
+
] });
|
|
1222
|
+
};
|
|
1223
|
+
|
|
1224
|
+
// .generated/ui/loading/concentric-pulse.tsx
|
|
1225
|
+
import { motion as motion41 } from "framer-motion";
|
|
1226
|
+
import { jsx as jsx41 } from "react/jsx-runtime";
|
|
1227
|
+
var ConcentricPulse = () => {
|
|
1228
|
+
return /* @__PURE__ */ jsx41("div", { className: "relative w-12 h-12 flex items-center justify-center", children: [1, 2, 3].map((i) => /* @__PURE__ */ jsx41(
|
|
1229
|
+
motion41.div,
|
|
1230
|
+
{
|
|
1231
|
+
className: "absolute rounded-full border border-zinc-800 dark:border-zinc-700",
|
|
1232
|
+
initial: { width: 0, height: 0, opacity: 1 },
|
|
1233
|
+
animate: { width: 48, height: 48, opacity: 0 },
|
|
1234
|
+
transition: { duration: 2, repeat: Infinity, delay: i * 0.6, ease: "easeOut" }
|
|
1235
|
+
},
|
|
1236
|
+
i
|
|
1237
|
+
)) });
|
|
1238
|
+
};
|
|
1239
|
+
|
|
1240
|
+
// .generated/ui/loading/concentric-ring.tsx
|
|
1241
|
+
import { motion as motion42 } from "framer-motion";
|
|
1242
|
+
import { jsx as jsx42, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1243
|
+
var ConcentricRing = () => {
|
|
1244
|
+
return /* @__PURE__ */ jsxs12("div", { className: "relative w-12 h-12 flex items-center justify-center", children: [
|
|
1245
|
+
/* @__PURE__ */ jsx42(
|
|
1246
|
+
motion42.div,
|
|
1247
|
+
{
|
|
1248
|
+
className: "absolute w-12 h-12 border-2 border-zinc-800 dark:border-zinc-700 border-t-transparent rounded-full",
|
|
1249
|
+
animate: { rotate: 360 },
|
|
1250
|
+
transition: { duration: 2, repeat: Infinity, ease: "linear" }
|
|
1251
|
+
}
|
|
1252
|
+
),
|
|
1253
|
+
/* @__PURE__ */ jsx42(
|
|
1254
|
+
motion42.div,
|
|
1255
|
+
{
|
|
1256
|
+
className: "absolute w-8 h-8 border-2 border-zinc-500 border-b-transparent rounded-full",
|
|
1257
|
+
animate: { rotate: -360 },
|
|
1258
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "linear" }
|
|
1259
|
+
}
|
|
1260
|
+
),
|
|
1261
|
+
/* @__PURE__ */ jsx42(
|
|
1262
|
+
motion42.div,
|
|
1263
|
+
{
|
|
1264
|
+
className: "absolute w-4 h-4 border-2 border-zinc-300 border-l-transparent rounded-full",
|
|
1265
|
+
animate: { rotate: 360 },
|
|
1266
|
+
transition: { duration: 1, repeat: Infinity, ease: "linear" }
|
|
1267
|
+
}
|
|
1268
|
+
)
|
|
1269
|
+
] });
|
|
1270
|
+
};
|
|
1271
|
+
|
|
1272
|
+
// .generated/ui/loading/concentric-squares.tsx
|
|
1273
|
+
import { motion as motion43 } from "framer-motion";
|
|
1274
|
+
import { jsx as jsx43, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1275
|
+
var ConcentricSquares = () => {
|
|
1276
|
+
return /* @__PURE__ */ jsxs13("div", { className: "relative w-12 h-12 flex items-center justify-center", children: [
|
|
1277
|
+
/* @__PURE__ */ jsx43(
|
|
1278
|
+
motion43.div,
|
|
1279
|
+
{
|
|
1280
|
+
className: "absolute w-12 h-12 border-2 border-zinc-800 dark:border-zinc-700 rounded-sm",
|
|
1281
|
+
animate: { rotate: [0, 90, 90], scale: [1, 1, 0.8, 1] },
|
|
1282
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
1283
|
+
}
|
|
1284
|
+
),
|
|
1285
|
+
/* @__PURE__ */ jsx43(
|
|
1286
|
+
motion43.div,
|
|
1287
|
+
{
|
|
1288
|
+
className: "absolute w-6 h-6 border-2 border-zinc-500 rounded-sm",
|
|
1289
|
+
animate: { rotate: [0, -90, -90], scale: [1, 1, 1.2, 1] },
|
|
1290
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
1291
|
+
}
|
|
1292
|
+
)
|
|
1293
|
+
] });
|
|
1294
|
+
};
|
|
1295
|
+
|
|
1296
|
+
// .generated/ui/loading/conveyor-loop.tsx
|
|
1297
|
+
import { motion as motion44 } from "framer-motion";
|
|
1298
|
+
import { jsx as jsx44 } from "react/jsx-runtime";
|
|
1299
|
+
var ConveyorLoop = () => {
|
|
1300
|
+
return /* @__PURE__ */ jsx44("div", { className: "w-16 h-3 overflow-hidden relative rounded-full bg-zinc-200 dark:bg-zinc-800", children: /* @__PURE__ */ jsx44(
|
|
1301
|
+
motion44.div,
|
|
1302
|
+
{
|
|
1303
|
+
className: "flex h-full space-x-2 absolute top-0 items-center",
|
|
1304
|
+
animate: { x: [0, -32] },
|
|
1305
|
+
transition: { duration: 1, repeat: Infinity, ease: "linear" },
|
|
1306
|
+
children: Array.from({ length: 8 }).map((_, i) => /* @__PURE__ */ jsx44("div", { className: "w-1.5 h-1.5 bg-zinc-800 dark:bg-white rounded-full shrink-0" }, i))
|
|
1307
|
+
}
|
|
1308
|
+
) });
|
|
1309
|
+
};
|
|
1310
|
+
|
|
1311
|
+
// .generated/ui/loading/cross-spinner.tsx
|
|
1312
|
+
import { motion as motion45 } from "framer-motion";
|
|
1313
|
+
import { jsx as jsx45, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1314
|
+
var CrossSpinner = () => {
|
|
1315
|
+
return /* @__PURE__ */ jsxs14(
|
|
1316
|
+
motion45.div,
|
|
1317
|
+
{
|
|
1318
|
+
className: "relative w-8 h-8 flex items-center justify-center",
|
|
1319
|
+
animate: { rotate: [0, 90, 180, 270, 360] },
|
|
1320
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" },
|
|
1321
|
+
children: [
|
|
1322
|
+
/* @__PURE__ */ jsx45("div", { className: "absolute w-full h-1.5 bg-zinc-800 dark:bg-white rounded-full" }),
|
|
1323
|
+
/* @__PURE__ */ jsx45("div", { className: "absolute h-full w-1.5 bg-zinc-800 dark:bg-white rounded-full" })
|
|
1324
|
+
]
|
|
1325
|
+
}
|
|
1326
|
+
);
|
|
1327
|
+
};
|
|
1328
|
+
|
|
1329
|
+
// .generated/ui/loading/cube-flip-spring.tsx
|
|
1330
|
+
import { motion as motion46 } from "framer-motion";
|
|
1331
|
+
import { jsx as jsx46 } from "react/jsx-runtime";
|
|
1332
|
+
var CubeFlipSpring = () => /* @__PURE__ */ jsx46(
|
|
1333
|
+
motion46.div,
|
|
1334
|
+
{
|
|
1335
|
+
className: "w-8 h-8 bg-zinc-800 dark:bg-white rounded-lg",
|
|
1336
|
+
animate: { rotateX: [0, 180, 180], rotateY: [0, 0, 180] },
|
|
1337
|
+
transition: { duration: 2, repeat: Infinity, type: "spring", bounce: 0.2 }
|
|
1338
|
+
}
|
|
1339
|
+
);
|
|
1340
|
+
|
|
1341
|
+
// .generated/ui/loading/dash-ring.tsx
|
|
1342
|
+
import { motion as motion47 } from "framer-motion";
|
|
1343
|
+
import { jsx as jsx47 } from "react/jsx-runtime";
|
|
1344
|
+
var DashRing = () => {
|
|
1345
|
+
return /* @__PURE__ */ jsx47("svg", { className: "w-12 h-12", viewBox: "0 0 50 50", children: /* @__PURE__ */ jsx47(
|
|
1346
|
+
motion47.circle,
|
|
1347
|
+
{
|
|
1348
|
+
cx: "25",
|
|
1349
|
+
cy: "25",
|
|
1350
|
+
r: "20",
|
|
1351
|
+
className: "stroke-zinc-800 dark:stroke-white fill-none",
|
|
1352
|
+
strokeWidth: "3",
|
|
1353
|
+
strokeDasharray: "8 8",
|
|
1354
|
+
animate: { rotate: 360 },
|
|
1355
|
+
style: { transformOrigin: "center" },
|
|
1356
|
+
transition: { duration: 4, repeat: Infinity, ease: "linear" }
|
|
1357
|
+
}
|
|
1358
|
+
) });
|
|
1359
|
+
};
|
|
1360
|
+
|
|
1361
|
+
// .generated/ui/loading/dashed-spiral.tsx
|
|
1362
|
+
import { motion as motion48 } from "framer-motion";
|
|
1363
|
+
import { jsx as jsx48 } from "react/jsx-runtime";
|
|
1364
|
+
var DashedSpiral = () => /* @__PURE__ */ jsx48(
|
|
1365
|
+
motion48.div,
|
|
1366
|
+
{
|
|
1367
|
+
className: "w-10 h-10 border-[3px] border-zinc-800 dark:border-zinc-700 rounded-full border-dashed",
|
|
1368
|
+
animate: { rotate: 360, scale: [1, 1.1, 1] },
|
|
1369
|
+
transition: { duration: 4, repeat: Infinity, ease: "linear" }
|
|
1370
|
+
}
|
|
1371
|
+
);
|
|
1372
|
+
|
|
1373
|
+
// .generated/ui/loading/diamond-grid.tsx
|
|
1374
|
+
import { motion as motion49 } from "framer-motion";
|
|
1375
|
+
import { jsx as jsx49 } from "react/jsx-runtime";
|
|
1376
|
+
var DiamondGrid = () => {
|
|
1377
|
+
return /* @__PURE__ */ jsx49("div", { className: "grid grid-cols-2 gap-2 rotate-45", children: [0, 1, 2, 3].map((i) => /* @__PURE__ */ jsx49(
|
|
1378
|
+
motion49.div,
|
|
1379
|
+
{
|
|
1380
|
+
className: "w-3 h-3 bg-zinc-800 dark:bg-white rounded-sm",
|
|
1381
|
+
animate: { scale: [1, 0.5, 1], opacity: [1, 0.3, 1] },
|
|
1382
|
+
transition: { duration: 1.5, repeat: Infinity, delay: i * 0.2, ease: "easeInOut" }
|
|
1383
|
+
},
|
|
1384
|
+
i
|
|
1385
|
+
)) });
|
|
1386
|
+
};
|
|
1387
|
+
|
|
1388
|
+
// .generated/ui/loading/diamond-rotate-spring.tsx
|
|
1389
|
+
import { motion as motion50 } from "framer-motion";
|
|
1390
|
+
import { jsx as jsx50 } from "react/jsx-runtime";
|
|
1391
|
+
var DiamondRotateSpring = () => /* @__PURE__ */ jsx50(
|
|
1392
|
+
motion50.div,
|
|
1393
|
+
{
|
|
1394
|
+
className: "w-8 h-8 bg-zinc-800 dark:bg-white rounded-sm origin-center",
|
|
1395
|
+
style: { rotate: 45 },
|
|
1396
|
+
animate: { rotate: [45, 135, 225, 315] },
|
|
1397
|
+
transition: { duration: 2, repeat: Infinity, type: "spring", bounce: 0.4 }
|
|
1398
|
+
}
|
|
1399
|
+
);
|
|
1400
|
+
|
|
1401
|
+
// .generated/ui/loading/dot-spinner.tsx
|
|
1402
|
+
import { motion as motion51 } from "framer-motion";
|
|
1403
|
+
import { jsx as jsx51 } from "react/jsx-runtime";
|
|
1404
|
+
var DotSpinner = () => {
|
|
1405
|
+
return /* @__PURE__ */ jsx51("div", { className: "relative w-10 h-10", children: [0, 1, 2, 3, 4, 5, 6, 7].map((i) => /* @__PURE__ */ jsx51(
|
|
1406
|
+
motion51.div,
|
|
1407
|
+
{
|
|
1408
|
+
className: "absolute top-0 left-1/2 w-2 h-2 bg-zinc-800 dark:bg-white rounded-full -ml-1 origin-[4px_20px]",
|
|
1409
|
+
style: { rotate: i * 45 },
|
|
1410
|
+
animate: { opacity: [1, 0.2] },
|
|
1411
|
+
transition: { duration: 1, repeat: Infinity, delay: i * 0.125, ease: "linear" }
|
|
1412
|
+
},
|
|
1413
|
+
i
|
|
1414
|
+
)) });
|
|
1415
|
+
};
|
|
1416
|
+
|
|
1417
|
+
// .generated/ui/loading/dots-ring.tsx
|
|
1418
|
+
import { motion as motion52 } from "framer-motion";
|
|
1419
|
+
import { jsx as jsx52 } from "react/jsx-runtime";
|
|
1420
|
+
var DotsRing = () => {
|
|
1421
|
+
return /* @__PURE__ */ jsx52("div", { className: "relative w-12 h-12", children: [0, 1, 2, 3, 4, 5, 6, 7].map((i) => /* @__PURE__ */ jsx52(
|
|
1422
|
+
motion52.div,
|
|
1423
|
+
{
|
|
1424
|
+
className: "absolute top-0 left-1/2 w-2 h-2 bg-zinc-800 dark:bg-white rounded-full -ml-1 origin-[4px_24px]",
|
|
1425
|
+
style: { rotate: i * 45 },
|
|
1426
|
+
animate: { scale: [1, 0.5, 1], opacity: [1, 0.3, 1] },
|
|
1427
|
+
transition: { duration: 1.5, repeat: Infinity, delay: i * 0.15, ease: "easeInOut" }
|
|
1428
|
+
},
|
|
1429
|
+
i
|
|
1430
|
+
)) });
|
|
1431
|
+
};
|
|
1432
|
+
|
|
1433
|
+
// .generated/ui/loading/double-ring.tsx
|
|
1434
|
+
import { motion as motion53 } from "framer-motion";
|
|
1435
|
+
import { jsx as jsx53, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1436
|
+
var DoubleRing = () => {
|
|
1437
|
+
return /* @__PURE__ */ jsxs15("div", { className: "relative w-10 h-10 flex items-center justify-center", children: [
|
|
1438
|
+
/* @__PURE__ */ jsx53(
|
|
1439
|
+
motion53.div,
|
|
1440
|
+
{
|
|
1441
|
+
className: "absolute w-10 h-10 border-2 border-zinc-200 dark:border-zinc-800 rounded-full border-t-zinc-800 dark:border-t-white",
|
|
1442
|
+
animate: { rotate: 360 },
|
|
1443
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "linear" }
|
|
1444
|
+
}
|
|
1445
|
+
),
|
|
1446
|
+
/* @__PURE__ */ jsx53(
|
|
1447
|
+
motion53.div,
|
|
1448
|
+
{
|
|
1449
|
+
className: "absolute w-6 h-6 border-2 border-zinc-200 dark:border-zinc-800 rounded-full border-b-zinc-800 dark:border-b-white",
|
|
1450
|
+
animate: { rotate: -360 },
|
|
1451
|
+
transition: { duration: 1, repeat: Infinity, ease: "linear" }
|
|
1452
|
+
}
|
|
1453
|
+
)
|
|
1454
|
+
] });
|
|
1455
|
+
};
|
|
1456
|
+
|
|
1457
|
+
// .generated/ui/loading/drop-dot.tsx
|
|
1458
|
+
import { motion as motion54 } from "framer-motion";
|
|
1459
|
+
import { jsx as jsx54, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1460
|
+
var DropDot = () => /* @__PURE__ */ jsxs16("div", { className: "relative w-6 h-12 flex flex-col items-center", children: [
|
|
1461
|
+
/* @__PURE__ */ jsx54(
|
|
1462
|
+
motion54.div,
|
|
1463
|
+
{
|
|
1464
|
+
className: "w-2.5 h-2.5 bg-zinc-800 dark:bg-white rounded-full absolute top-0 z-10",
|
|
1465
|
+
animate: { y: [0, 24, 0], scaleY: [1, 1.2, 1], scaleX: [1, 0.8, 1] },
|
|
1466
|
+
transition: { duration: 1, repeat: Infinity, ease: "circIn" }
|
|
1467
|
+
}
|
|
1468
|
+
),
|
|
1469
|
+
/* @__PURE__ */ jsx54("div", { className: "w-4 h-1 bg-zinc-300 dark:bg-zinc-700 rounded-full absolute bottom-2 blur-[1px]" })
|
|
1470
|
+
] });
|
|
1471
|
+
|
|
1472
|
+
// .generated/ui/loading/dual-arc.tsx
|
|
1473
|
+
import { motion as motion55 } from "framer-motion";
|
|
1474
|
+
import { jsx as jsx55 } from "react/jsx-runtime";
|
|
1475
|
+
var DualArc = () => {
|
|
1476
|
+
return /* @__PURE__ */ jsx55("div", { className: "relative w-8 h-8 flex items-center justify-center", children: /* @__PURE__ */ jsx55(
|
|
1477
|
+
motion55.div,
|
|
1478
|
+
{
|
|
1479
|
+
className: "absolute inset-0 border-2 border-t-zinc-800 dark:border-t-white border-b-zinc-800 dark:border-b-white border-l-transparent border-r-transparent rounded-full",
|
|
1480
|
+
animate: { rotate: 360, scale: [1, 0.82, 1] },
|
|
1481
|
+
transition: {
|
|
1482
|
+
rotate: { duration: 1.2, repeat: Infinity, ease: "linear" },
|
|
1483
|
+
scale: { duration: 1.2, repeat: Infinity, ease: "easeInOut" }
|
|
1484
|
+
}
|
|
1485
|
+
}
|
|
1486
|
+
) });
|
|
1487
|
+
};
|
|
1488
|
+
|
|
1489
|
+
// .generated/ui/loading/dynamic-island.tsx
|
|
1490
|
+
import { motion as motion56 } from "framer-motion";
|
|
1491
|
+
import { jsx as jsx56, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1492
|
+
var DynamicIsland = () => {
|
|
1493
|
+
return /* @__PURE__ */ jsxs17(
|
|
1494
|
+
motion56.div,
|
|
1495
|
+
{
|
|
1496
|
+
className: "bg-zinc-950 dark:bg-zinc-900 border border-black/10 dark:border-white/10 rounded-full flex items-center justify-center px-4 py-2 gap-3 h-8 shadow-sm",
|
|
1497
|
+
animate: {
|
|
1498
|
+
width: [80, 110, 80]
|
|
1499
|
+
},
|
|
1500
|
+
transition: {
|
|
1501
|
+
duration: 2.2,
|
|
1502
|
+
repeat: Infinity,
|
|
1503
|
+
ease: "easeInOut"
|
|
1504
|
+
},
|
|
1505
|
+
children: [
|
|
1506
|
+
/* @__PURE__ */ jsx56(
|
|
1507
|
+
motion56.div,
|
|
1508
|
+
{
|
|
1509
|
+
className: "w-1.5 h-1.5 rounded-full bg-emerald-500",
|
|
1510
|
+
animate: { opacity: [0.4, 1, 0.4] },
|
|
1511
|
+
transition: { duration: 1.1, repeat: Infinity, ease: "easeInOut" }
|
|
1512
|
+
}
|
|
1513
|
+
),
|
|
1514
|
+
/* @__PURE__ */ jsx56("div", { className: "flex gap-1 items-center h-2", children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx56(
|
|
1515
|
+
motion56.div,
|
|
1516
|
+
{
|
|
1517
|
+
className: "w-0.5 bg-zinc-300 dark:bg-zinc-500 rounded-full",
|
|
1518
|
+
animate: { height: [3, 8, 3] },
|
|
1519
|
+
transition: {
|
|
1520
|
+
duration: 0.8,
|
|
1521
|
+
repeat: Infinity,
|
|
1522
|
+
ease: "easeInOut",
|
|
1523
|
+
delay: i * 0.15
|
|
1524
|
+
}
|
|
1525
|
+
},
|
|
1526
|
+
i
|
|
1527
|
+
)) })
|
|
1528
|
+
]
|
|
1529
|
+
}
|
|
1530
|
+
);
|
|
1531
|
+
};
|
|
1532
|
+
|
|
1533
|
+
// .generated/ui/loading/elastic-bars.tsx
|
|
1534
|
+
import { motion as motion57 } from "framer-motion";
|
|
1535
|
+
import { jsx as jsx57 } from "react/jsx-runtime";
|
|
1536
|
+
var ElasticBars = () => /* @__PURE__ */ jsx57("div", { className: "flex space-x-2 h-10 items-center justify-center", children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx57(
|
|
1537
|
+
motion57.div,
|
|
1538
|
+
{
|
|
1539
|
+
className: "w-2 bg-zinc-800 dark:bg-white rounded-full",
|
|
1540
|
+
animate: { height: [8, 36, 8] },
|
|
1541
|
+
transition: {
|
|
1542
|
+
duration: 1.1,
|
|
1543
|
+
repeat: Infinity,
|
|
1544
|
+
ease: "easeInOut",
|
|
1545
|
+
delay: i * 0.15
|
|
1546
|
+
}
|
|
1547
|
+
},
|
|
1548
|
+
i
|
|
1549
|
+
)) });
|
|
1550
|
+
|
|
1551
|
+
// .generated/ui/loading/elastic-square.tsx
|
|
1552
|
+
import { motion as motion58 } from "framer-motion";
|
|
1553
|
+
import { jsx as jsx58 } from "react/jsx-runtime";
|
|
1554
|
+
var ElasticSquare = () => /* @__PURE__ */ jsx58("div", { className: "h-12 flex items-end border-b-2 border-zinc-200 dark:border-zinc-800 w-12 justify-center", children: /* @__PURE__ */ jsx58(
|
|
1555
|
+
motion58.div,
|
|
1556
|
+
{
|
|
1557
|
+
className: "w-6 h-6 bg-zinc-800 dark:bg-white rounded-sm origin-bottom",
|
|
1558
|
+
animate: { y: [0, -20, 0], scaleY: [0.7, 1.2, 0.7], scaleX: [1.3, 0.8, 1.3] },
|
|
1559
|
+
transition: { duration: 0.8, repeat: Infinity, ease: "easeInOut" }
|
|
1560
|
+
}
|
|
1561
|
+
) });
|
|
1562
|
+
|
|
1563
|
+
// .generated/ui/loading/expanding-cross.tsx
|
|
1564
|
+
import { motion as motion59 } from "framer-motion";
|
|
1565
|
+
import { jsx as jsx59, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1566
|
+
var ExpandingCross = () => {
|
|
1567
|
+
return /* @__PURE__ */ jsxs18("div", { className: "relative w-8 h-8", children: [
|
|
1568
|
+
/* @__PURE__ */ jsx59(
|
|
1569
|
+
motion59.div,
|
|
1570
|
+
{
|
|
1571
|
+
className: "absolute top-1/2 left-0 w-full h-1 bg-zinc-800 dark:bg-white -mt-0.5 rounded-full",
|
|
1572
|
+
animate: { scaleX: [0.2, 1, 0.2] },
|
|
1573
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut" }
|
|
1574
|
+
}
|
|
1575
|
+
),
|
|
1576
|
+
/* @__PURE__ */ jsx59(
|
|
1577
|
+
motion59.div,
|
|
1578
|
+
{
|
|
1579
|
+
className: "absolute left-1/2 top-0 h-full w-1 bg-zinc-800 dark:bg-white -ml-0.5 rounded-full",
|
|
1580
|
+
animate: { scaleY: [0.2, 1, 0.2] },
|
|
1581
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut", delay: 0.75 }
|
|
1582
|
+
}
|
|
1583
|
+
)
|
|
1584
|
+
] });
|
|
1585
|
+
};
|
|
1586
|
+
|
|
1587
|
+
// .generated/ui/loading/face-id-scan.tsx
|
|
1588
|
+
import { motion as motion60 } from "framer-motion";
|
|
1589
|
+
import { jsx as jsx60, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
1590
|
+
var FaceIDScan = () => /* @__PURE__ */ jsxs19("div", { className: "w-12 h-12 border-2 border-zinc-300 rounded-xl relative overflow-hidden flex items-center justify-center", children: [
|
|
1591
|
+
/* @__PURE__ */ jsx60("svg", { viewBox: "0 0 24 24", className: "w-6 h-6 fill-zinc-300 dark:fill-zinc-700", children: /* @__PURE__ */ jsx60("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z" }) }),
|
|
1592
|
+
/* @__PURE__ */ jsx60(
|
|
1593
|
+
motion60.div,
|
|
1594
|
+
{
|
|
1595
|
+
className: "absolute left-0 w-full h-8 bg-gradient-to-b from-transparent to-green-400/30 border-b border-green-500",
|
|
1596
|
+
animate: { top: ["-100%", "100%", "-100%"] },
|
|
1597
|
+
transition: { duration: 2.5, repeat: Infinity, ease: "linear" }
|
|
1598
|
+
}
|
|
1599
|
+
)
|
|
1600
|
+
] });
|
|
1601
|
+
|
|
1602
|
+
// .generated/ui/loading/fade-arc.tsx
|
|
1603
|
+
import { jsx as jsx61, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
1604
|
+
var FadeArc = () => {
|
|
1605
|
+
return /* @__PURE__ */ jsx61("div", { className: "relative w-9 h-9", children: /* @__PURE__ */ jsxs20("svg", { className: "w-full h-full animate-spin", viewBox: "0 0 50 50", children: [
|
|
1606
|
+
/* @__PURE__ */ jsx61(
|
|
1607
|
+
"circle",
|
|
1608
|
+
{
|
|
1609
|
+
className: "stroke-zinc-200 dark:stroke-zinc-800",
|
|
1610
|
+
cx: "25",
|
|
1611
|
+
cy: "25",
|
|
1612
|
+
r: "20",
|
|
1613
|
+
fill: "none",
|
|
1614
|
+
strokeWidth: "3.5"
|
|
1615
|
+
}
|
|
1616
|
+
),
|
|
1617
|
+
/* @__PURE__ */ jsx61(
|
|
1618
|
+
"circle",
|
|
1619
|
+
{
|
|
1620
|
+
className: "stroke-zinc-800 dark:stroke-white",
|
|
1621
|
+
cx: "25",
|
|
1622
|
+
cy: "25",
|
|
1623
|
+
r: "20",
|
|
1624
|
+
fill: "none",
|
|
1625
|
+
strokeWidth: "3.5",
|
|
1626
|
+
strokeDasharray: "80",
|
|
1627
|
+
strokeDashoffset: "28",
|
|
1628
|
+
strokeLinecap: "round"
|
|
1629
|
+
}
|
|
1630
|
+
)
|
|
1631
|
+
] }) });
|
|
1632
|
+
};
|
|
1633
|
+
|
|
1634
|
+
// .generated/ui/loading/fade-dots.tsx
|
|
1635
|
+
import { motion as motion61 } from "framer-motion";
|
|
1636
|
+
import { jsx as jsx62 } from "react/jsx-runtime";
|
|
1637
|
+
var FadeDots = () => {
|
|
1638
|
+
return /* @__PURE__ */ jsx62("div", { className: "flex space-x-2", children: [0, 1, 2, 3].map((i) => /* @__PURE__ */ jsx62(
|
|
1639
|
+
motion61.div,
|
|
1640
|
+
{
|
|
1641
|
+
className: "w-2.5 h-2.5 bg-zinc-800 dark:bg-white rounded-full",
|
|
1642
|
+
animate: { opacity: [0, 1, 0] },
|
|
1643
|
+
transition: { duration: 1.5, repeat: Infinity, delay: i * 0.2, ease: "linear" }
|
|
1644
|
+
},
|
|
1645
|
+
i
|
|
1646
|
+
)) });
|
|
1647
|
+
};
|
|
1648
|
+
|
|
1649
|
+
// .generated/ui/loading/flip-square.tsx
|
|
1650
|
+
import { motion as motion62 } from "framer-motion";
|
|
1651
|
+
import { jsx as jsx63 } from "react/jsx-runtime";
|
|
1652
|
+
var FlipSquare = () => {
|
|
1653
|
+
return /* @__PURE__ */ jsx63(
|
|
1654
|
+
motion62.div,
|
|
1655
|
+
{
|
|
1656
|
+
className: "w-8 h-8 bg-zinc-800 dark:bg-white rounded-md shadow-sm",
|
|
1657
|
+
animate: { rotateX: [0, 180, 180, 0], rotateY: [0, 0, 180, 180] },
|
|
1658
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
1659
|
+
}
|
|
1660
|
+
);
|
|
1661
|
+
};
|
|
1662
|
+
|
|
1663
|
+
// .generated/ui/loading/floating-diamonds.tsx
|
|
1664
|
+
import { motion as motion63 } from "framer-motion";
|
|
1665
|
+
import { jsx as jsx64 } from "react/jsx-runtime";
|
|
1666
|
+
var FloatingDiamonds = () => {
|
|
1667
|
+
return /* @__PURE__ */ jsx64("div", { className: "flex space-x-2", children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx64(
|
|
1668
|
+
motion63.div,
|
|
1669
|
+
{
|
|
1670
|
+
className: "w-3 h-3 bg-zinc-800 dark:bg-white rounded-sm rotate-45",
|
|
1671
|
+
animate: { y: [0, -10, 0] },
|
|
1672
|
+
transition: { duration: 1, repeat: Infinity, delay: i * 0.2, ease: "easeInOut" }
|
|
1673
|
+
},
|
|
1674
|
+
i
|
|
1675
|
+
)) });
|
|
1676
|
+
};
|
|
1677
|
+
|
|
1678
|
+
// .generated/ui/loading/fluid-bars.tsx
|
|
1679
|
+
import { motion as motion64 } from "framer-motion";
|
|
1680
|
+
import { jsx as jsx65 } from "react/jsx-runtime";
|
|
1681
|
+
var FluidBars = () => /* @__PURE__ */ jsx65("div", { className: "flex space-x-1", children: [0, 1, 2, 3].map((i) => /* @__PURE__ */ jsx65(
|
|
1682
|
+
motion64.div,
|
|
1683
|
+
{
|
|
1684
|
+
className: "w-1.5 h-8 bg-zinc-800 dark:bg-white rounded-full origin-bottom",
|
|
1685
|
+
animate: { rotate: [-15, 15, -15], scaleY: [0.8, 1, 0.8] },
|
|
1686
|
+
transition: { duration: 1.5, repeat: Infinity, delay: i * 0.1, ease: "easeInOut" }
|
|
1687
|
+
},
|
|
1688
|
+
i
|
|
1689
|
+
)) });
|
|
1690
|
+
|
|
1691
|
+
// .generated/ui/loading/fluid-diamond.tsx
|
|
1692
|
+
import { motion as motion65 } from "framer-motion";
|
|
1693
|
+
import { jsx as jsx66 } from "react/jsx-runtime";
|
|
1694
|
+
var FluidDiamond = () => /* @__PURE__ */ jsx66(
|
|
1695
|
+
motion65.div,
|
|
1696
|
+
{
|
|
1697
|
+
className: "w-6 h-6 bg-zinc-800 dark:bg-white rounded-sm",
|
|
1698
|
+
style: { rotate: 45 },
|
|
1699
|
+
animate: { scaleX: [1, 1.5, 1], scaleY: [1, 0.5, 1] },
|
|
1700
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut" }
|
|
1701
|
+
}
|
|
1702
|
+
);
|
|
1703
|
+
|
|
1704
|
+
// .generated/ui/loading/fluid-dot-orbit.tsx
|
|
1705
|
+
import { motion as motion66 } from "framer-motion";
|
|
1706
|
+
import { jsx as jsx67, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
1707
|
+
var FluidDotOrbit = () => /* @__PURE__ */ jsxs21("div", { className: "relative w-10 h-10 flex items-center justify-center", children: [
|
|
1708
|
+
/* @__PURE__ */ jsx67("div", { className: "w-2.5 h-2.5 bg-zinc-800 dark:bg-white rounded-full" }),
|
|
1709
|
+
/* @__PURE__ */ jsx67(
|
|
1710
|
+
motion66.div,
|
|
1711
|
+
{
|
|
1712
|
+
className: "absolute inset-0",
|
|
1713
|
+
animate: { rotate: 360 },
|
|
1714
|
+
transition: { duration: 2, repeat: Infinity, ease: "linear" },
|
|
1715
|
+
children: /* @__PURE__ */ jsx67("div", { className: "w-2 h-2 bg-zinc-500 dark:bg-zinc-350 rounded-full absolute top-1 left-1/2 -ml-1" })
|
|
1716
|
+
}
|
|
1717
|
+
)
|
|
1718
|
+
] });
|
|
1719
|
+
|
|
1720
|
+
// .generated/ui/loading/fluid-skeleton.tsx
|
|
1721
|
+
import { motion as motion67 } from "framer-motion";
|
|
1722
|
+
import { jsx as jsx68 } from "react/jsx-runtime";
|
|
1723
|
+
var FluidSkeleton = () => /* @__PURE__ */ jsx68("div", { className: "w-24 h-10 bg-zinc-200 dark:bg-zinc-800 rounded-xl overflow-hidden relative", children: /* @__PURE__ */ jsx68(
|
|
1724
|
+
motion67.div,
|
|
1725
|
+
{
|
|
1726
|
+
className: "absolute inset-0 bg-gradient-to-r from-transparent via-white/60 to-transparent",
|
|
1727
|
+
animate: { x: ["-100%", "200%"] },
|
|
1728
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "linear" }
|
|
1729
|
+
}
|
|
1730
|
+
) });
|
|
1731
|
+
|
|
1732
|
+
// .generated/ui/loading/gears.tsx
|
|
1733
|
+
import { motion as motion68 } from "framer-motion";
|
|
1734
|
+
import { jsx as jsx69, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
1735
|
+
var Gears = () => {
|
|
1736
|
+
return /* @__PURE__ */ jsxs22("div", { className: "flex space-x-[-4px]", children: [
|
|
1737
|
+
/* @__PURE__ */ jsx69(
|
|
1738
|
+
motion68.div,
|
|
1739
|
+
{
|
|
1740
|
+
className: "w-8 h-8 border-4 border-dashed border-zinc-800 dark:border-zinc-700 rounded-full",
|
|
1741
|
+
animate: { rotate: 360 },
|
|
1742
|
+
transition: { duration: 4, repeat: Infinity, ease: "linear" }
|
|
1743
|
+
}
|
|
1744
|
+
),
|
|
1745
|
+
/* @__PURE__ */ jsx69(
|
|
1746
|
+
motion68.div,
|
|
1747
|
+
{
|
|
1748
|
+
className: "w-6 h-6 border-[3px] border-dashed border-zinc-500 rounded-full mt-3",
|
|
1749
|
+
animate: { rotate: -360 },
|
|
1750
|
+
transition: { duration: 3, repeat: Infinity, ease: "linear" }
|
|
1751
|
+
}
|
|
1752
|
+
)
|
|
1753
|
+
] });
|
|
1754
|
+
};
|
|
1755
|
+
|
|
1756
|
+
// .generated/ui/loading/glassmorphic-card.tsx
|
|
1757
|
+
import { motion as motion69 } from "framer-motion";
|
|
1758
|
+
import { jsx as jsx70, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
1759
|
+
var GlassmorphicCard = () => /* @__PURE__ */ jsxs23("div", { className: "w-20 h-16 bg-zinc-100 dark:bg-zinc-800/50 backdrop-blur-md border border-white/50 rounded-2xl shadow-sm flex items-center justify-center relative overflow-hidden", children: [
|
|
1760
|
+
/* @__PURE__ */ jsx70(
|
|
1761
|
+
motion69.div,
|
|
1762
|
+
{
|
|
1763
|
+
className: "absolute w-12 h-12 bg-zinc-300 dark:bg-zinc-700 rounded-full blur-xl -z-10",
|
|
1764
|
+
animate: { x: [-20, 20, -20], y: [-10, 10, -10] },
|
|
1765
|
+
transition: { duration: 3, repeat: Infinity, ease: "easeInOut" }
|
|
1766
|
+
}
|
|
1767
|
+
),
|
|
1768
|
+
/* @__PURE__ */ jsx70("div", { className: "w-5 h-5 border-2 border-zinc-800 dark:border-zinc-700 border-t-transparent rounded-full animate-spin" })
|
|
1769
|
+
] });
|
|
1770
|
+
|
|
1771
|
+
// .generated/ui/loading/gradient-arc.tsx
|
|
1772
|
+
import { motion as motion70 } from "framer-motion";
|
|
1773
|
+
import { jsx as jsx71 } from "react/jsx-runtime";
|
|
1774
|
+
var GradientArc = () => {
|
|
1775
|
+
return /* @__PURE__ */ jsx71("div", { className: "relative w-10 h-10 flex items-center justify-center", children: /* @__PURE__ */ jsx71(
|
|
1776
|
+
motion70.div,
|
|
1777
|
+
{
|
|
1778
|
+
className: "w-10 h-10 rounded-full",
|
|
1779
|
+
style: {
|
|
1780
|
+
background: "linear-gradient(135deg, #00f2fe 0%, #4facfe 100%)",
|
|
1781
|
+
maskImage: "radial-gradient(transparent 55%, black 60%)",
|
|
1782
|
+
WebkitMaskImage: "radial-gradient(transparent 55%, black 60%)"
|
|
1783
|
+
},
|
|
1784
|
+
animate: { rotate: 360 },
|
|
1785
|
+
transition: { duration: 1.2, repeat: Infinity, ease: "linear" }
|
|
1786
|
+
}
|
|
1787
|
+
) });
|
|
1788
|
+
};
|
|
1789
|
+
|
|
1790
|
+
// .generated/ui/loading/grid-dots.tsx
|
|
1791
|
+
import { motion as motion71 } from "framer-motion";
|
|
1792
|
+
import { jsx as jsx72 } from "react/jsx-runtime";
|
|
1793
|
+
var GridDots = () => {
|
|
1794
|
+
return /* @__PURE__ */ jsx72("div", { className: "grid grid-cols-3 gap-1.5", children: [0, 1, 2, 3, 4, 5, 6, 7, 8].map((i) => /* @__PURE__ */ jsx72(
|
|
1795
|
+
motion71.div,
|
|
1796
|
+
{
|
|
1797
|
+
className: "w-2.5 h-2.5 bg-zinc-800 dark:bg-white rounded-full",
|
|
1798
|
+
animate: { scale: [1, 0.5, 1], opacity: [1, 0.3, 1] },
|
|
1799
|
+
transition: { duration: 1.5, repeat: Infinity, delay: i % 3 * 0.2 + Math.floor(i / 3) * 0.2, ease: "easeInOut" }
|
|
1800
|
+
},
|
|
1801
|
+
i
|
|
1802
|
+
)) });
|
|
1803
|
+
};
|
|
1804
|
+
|
|
1805
|
+
// .generated/ui/loading/haptic-ring.tsx
|
|
1806
|
+
import { motion as motion72 } from "framer-motion";
|
|
1807
|
+
import { jsx as jsx73 } from "react/jsx-runtime";
|
|
1808
|
+
var HapticRing = () => /* @__PURE__ */ jsx73(
|
|
1809
|
+
motion72.div,
|
|
1810
|
+
{
|
|
1811
|
+
className: "w-10 h-10 border-[3px] border-zinc-200 dark:border-zinc-800 rounded-full border-t-zinc-800 dark:border-t-white",
|
|
1812
|
+
animate: { rotate: [0, 90, 180, 270, 360] },
|
|
1813
|
+
transition: { duration: 2, repeat: Infinity, type: "spring", bounce: 0.4 }
|
|
1814
|
+
}
|
|
1815
|
+
);
|
|
1816
|
+
|
|
1817
|
+
// .generated/ui/loading/heartbeat.tsx
|
|
1818
|
+
import { motion as motion73 } from "framer-motion";
|
|
1819
|
+
import { jsx as jsx74 } from "react/jsx-runtime";
|
|
1820
|
+
var Heartbeat = () => {
|
|
1821
|
+
return /* @__PURE__ */ jsx74("svg", { className: "w-16 h-8 overflow-visible", viewBox: "0 0 64 32", children: /* @__PURE__ */ jsx74(
|
|
1822
|
+
motion73.polyline,
|
|
1823
|
+
{
|
|
1824
|
+
points: "0,16 16,16 24,4 32,28 40,16 64,16",
|
|
1825
|
+
className: "stroke-zinc-800 dark:stroke-white fill-none",
|
|
1826
|
+
strokeWidth: "2",
|
|
1827
|
+
strokeLinejoin: "round",
|
|
1828
|
+
strokeLinecap: "round",
|
|
1829
|
+
strokeDasharray: "100",
|
|
1830
|
+
animate: { strokeDashoffset: [100, -100] },
|
|
1831
|
+
transition: { duration: 2, repeat: Infinity, ease: "linear" }
|
|
1832
|
+
}
|
|
1833
|
+
) });
|
|
1834
|
+
};
|
|
1835
|
+
|
|
1836
|
+
// .generated/ui/loading/hexagon-spinner.tsx
|
|
1837
|
+
import { motion as motion74 } from "framer-motion";
|
|
1838
|
+
import { jsx as jsx75, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
1839
|
+
var HexagonSpinner = () => {
|
|
1840
|
+
return /* @__PURE__ */ jsxs24("svg", { className: "w-10 h-10", viewBox: "0 0 50 50", children: [
|
|
1841
|
+
/* @__PURE__ */ jsx75("polygon", { points: "25,5 45,15 45,35 25,45 5,35 5,15", className: "stroke-zinc-200 dark:stroke-zinc-800 fill-none", strokeWidth: "4" }),
|
|
1842
|
+
/* @__PURE__ */ jsx75(
|
|
1843
|
+
motion74.polygon,
|
|
1844
|
+
{
|
|
1845
|
+
points: "25,5 45,15 45,35 25,45 5,35 5,15",
|
|
1846
|
+
className: "stroke-zinc-800 dark:stroke-white fill-none",
|
|
1847
|
+
strokeWidth: "4",
|
|
1848
|
+
strokeLinecap: "round",
|
|
1849
|
+
strokeDasharray: "120",
|
|
1850
|
+
animate: { strokeDashoffset: [120, -120] },
|
|
1851
|
+
transition: { duration: 2, repeat: Infinity, ease: "linear" }
|
|
1852
|
+
}
|
|
1853
|
+
)
|
|
1854
|
+
] });
|
|
1855
|
+
};
|
|
1856
|
+
|
|
1857
|
+
// .generated/ui/loading/hourglass.tsx
|
|
1858
|
+
import { motion as motion75 } from "framer-motion";
|
|
1859
|
+
import { jsx as jsx76, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
1860
|
+
var Hourglass = () => {
|
|
1861
|
+
return /* @__PURE__ */ jsxs25(
|
|
1862
|
+
motion75.div,
|
|
1863
|
+
{
|
|
1864
|
+
className: "w-8 h-10 flex flex-col items-center justify-between",
|
|
1865
|
+
animate: { rotate: [0, 180, 180, 360, 360] },
|
|
1866
|
+
transition: { duration: 3, repeat: Infinity, ease: "easeInOut" },
|
|
1867
|
+
children: [
|
|
1868
|
+
/* @__PURE__ */ jsx76("div", { className: "w-8 h-0 border-t-[16px] border-t-zinc-800 dark:border-t-white border-l-[16px] border-l-transparent border-r-[16px] border-r-transparent origin-bottom" }),
|
|
1869
|
+
/* @__PURE__ */ jsx76("div", { className: "w-8 h-0 border-b-[16px] border-b-zinc-800 dark:border-b-white border-l-[16px] border-l-transparent border-r-[16px] border-r-transparent origin-top" })
|
|
1870
|
+
]
|
|
1871
|
+
}
|
|
1872
|
+
);
|
|
1873
|
+
};
|
|
1874
|
+
|
|
1875
|
+
// .generated/ui/loading/infinity-path.tsx
|
|
1876
|
+
import { motion as motion76 } from "framer-motion";
|
|
1877
|
+
import { jsx as jsx77, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
1878
|
+
var InfinityPath = () => {
|
|
1879
|
+
return /* @__PURE__ */ jsxs26("svg", { className: "w-12 h-6 overflow-visible", viewBox: "0 0 60 30", children: [
|
|
1880
|
+
/* @__PURE__ */ jsx77(
|
|
1881
|
+
"path",
|
|
1882
|
+
{
|
|
1883
|
+
d: "M 15 15 C 15 5, 25 5, 30 15 C 35 25, 45 25, 45 15 C 45 5, 35 5, 30 15 C 25 25, 15 25, 15 15",
|
|
1884
|
+
className: "stroke-zinc-200 dark:stroke-zinc-800 fill-none",
|
|
1885
|
+
strokeWidth: "4",
|
|
1886
|
+
strokeLinecap: "round"
|
|
1887
|
+
}
|
|
1888
|
+
),
|
|
1889
|
+
/* @__PURE__ */ jsx77(
|
|
1890
|
+
motion76.path,
|
|
1891
|
+
{
|
|
1892
|
+
d: "M 15 15 C 15 5, 25 5, 30 15 C 35 25, 45 25, 45 15 C 45 5, 35 5, 30 15 C 25 25, 15 25, 15 15",
|
|
1893
|
+
className: "stroke-zinc-800 dark:stroke-white fill-none",
|
|
1894
|
+
strokeWidth: "4",
|
|
1895
|
+
strokeLinecap: "round",
|
|
1896
|
+
strokeDasharray: "100",
|
|
1897
|
+
animate: { strokeDashoffset: [100, -100] },
|
|
1898
|
+
transition: { duration: 2, repeat: Infinity, ease: "linear" }
|
|
1899
|
+
}
|
|
1900
|
+
)
|
|
1901
|
+
] });
|
|
1902
|
+
};
|
|
1903
|
+
|
|
1904
|
+
// .generated/ui/loading/intersecting-rings.tsx
|
|
1905
|
+
import { motion as motion77 } from "framer-motion";
|
|
1906
|
+
import { jsx as jsx78, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
1907
|
+
var IntersectingRings = () => {
|
|
1908
|
+
return /* @__PURE__ */ jsxs27("div", { className: "relative w-12 h-12 flex items-center justify-center [perspective:800px]", children: [
|
|
1909
|
+
/* @__PURE__ */ jsx78(
|
|
1910
|
+
motion77.div,
|
|
1911
|
+
{
|
|
1912
|
+
className: "absolute w-10 h-10 border-2 border-t-zinc-800 dark:border-t-white border-r-zinc-800/30 dark:border-r-white/30 border-b-zinc-800/10 dark:border-b-white/10 border-l-transparent rounded-full",
|
|
1913
|
+
style: { transformStyle: "preserve-3d" },
|
|
1914
|
+
animate: { rotateX: 360, rotateY: 180 },
|
|
1915
|
+
transition: { duration: 2.2, repeat: Infinity, ease: "linear" }
|
|
1916
|
+
}
|
|
1917
|
+
),
|
|
1918
|
+
/* @__PURE__ */ jsx78(
|
|
1919
|
+
motion77.div,
|
|
1920
|
+
{
|
|
1921
|
+
className: "absolute w-10 h-10 border-2 border-b-zinc-800 dark:border-b-white border-t-zinc-800/30 dark:border-t-white/30 border-l-zinc-800/10 dark:border-l-white/10 border-r-transparent rounded-full",
|
|
1922
|
+
style: { transformStyle: "preserve-3d" },
|
|
1923
|
+
animate: { rotateX: 180, rotateY: 360 },
|
|
1924
|
+
transition: { duration: 2.2, repeat: Infinity, ease: "linear" }
|
|
1925
|
+
}
|
|
1926
|
+
)
|
|
1927
|
+
] });
|
|
1928
|
+
};
|
|
1929
|
+
|
|
1930
|
+
// .generated/ui/loading/ios-spinner.tsx
|
|
1931
|
+
import { motion as motion78 } from "framer-motion";
|
|
1932
|
+
import { jsx as jsx79 } from "react/jsx-runtime";
|
|
1933
|
+
var IOSSpinner = () => /* @__PURE__ */ jsx79("div", { className: "relative w-8 h-8", children: Array.from({ length: 12 }).map((_, i) => /* @__PURE__ */ jsx79(
|
|
1934
|
+
motion78.div,
|
|
1935
|
+
{
|
|
1936
|
+
className: "absolute w-full h-full",
|
|
1937
|
+
style: { rotate: i * 30 },
|
|
1938
|
+
children: /* @__PURE__ */ jsx79(
|
|
1939
|
+
motion78.div,
|
|
1940
|
+
{
|
|
1941
|
+
className: "w-[2px] h-[7px] bg-zinc-800 dark:bg-white rounded-full mx-auto",
|
|
1942
|
+
animate: { opacity: [1, 0.2] },
|
|
1943
|
+
transition: { duration: 1, repeat: Infinity, delay: i * (1 / 12), ease: "linear" }
|
|
1944
|
+
}
|
|
1945
|
+
)
|
|
1946
|
+
},
|
|
1947
|
+
i
|
|
1948
|
+
)) });
|
|
1949
|
+
|
|
1950
|
+
// .generated/ui/loading/line-spinner.tsx
|
|
1951
|
+
import { motion as motion79 } from "framer-motion";
|
|
1952
|
+
import { jsx as jsx80, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
1953
|
+
var LineSpinner = () => {
|
|
1954
|
+
return /* @__PURE__ */ jsxs28("div", { className: "relative w-10 h-10 flex items-center justify-center", children: [
|
|
1955
|
+
/* @__PURE__ */ jsx80("div", { className: "w-10 h-10 border-2 border-zinc-200 dark:border-zinc-800 rounded-full absolute" }),
|
|
1956
|
+
/* @__PURE__ */ jsx80(
|
|
1957
|
+
motion79.div,
|
|
1958
|
+
{
|
|
1959
|
+
className: "w-8 h-1 bg-zinc-800 dark:bg-white rounded-full",
|
|
1960
|
+
animate: { rotate: 360 },
|
|
1961
|
+
transition: { duration: 1.2, repeat: Infinity, ease: "linear" }
|
|
1962
|
+
}
|
|
1963
|
+
)
|
|
1964
|
+
] });
|
|
1965
|
+
};
|
|
1966
|
+
|
|
1967
|
+
// .generated/ui/loading/liquid-dots.tsx
|
|
1968
|
+
import { motion as motion80 } from "framer-motion";
|
|
1969
|
+
import { jsx as jsx81, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
1970
|
+
var LiquidDots = () => {
|
|
1971
|
+
return /* @__PURE__ */ jsxs29("div", { className: "relative w-16 h-8 flex items-center justify-center", style: { filter: "url(#goo)" }, children: [
|
|
1972
|
+
/* @__PURE__ */ jsx81("svg", { className: "absolute w-0 h-0", children: /* @__PURE__ */ jsx81("defs", { children: /* @__PURE__ */ jsxs29("filter", { id: "goo", children: [
|
|
1973
|
+
/* @__PURE__ */ jsx81("feGaussianBlur", { in: "SourceGraphic", stdDeviation: "4", result: "blur" }),
|
|
1974
|
+
/* @__PURE__ */ jsx81("feColorMatrix", { in: "blur", mode: "matrix", values: "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 18 -7", result: "goo" }),
|
|
1975
|
+
/* @__PURE__ */ jsx81("feBlend", { in: "SourceGraphic", in2: "goo" })
|
|
1976
|
+
] }) }) }),
|
|
1977
|
+
/* @__PURE__ */ jsx81(
|
|
1978
|
+
motion80.div,
|
|
1979
|
+
{
|
|
1980
|
+
className: "absolute w-6 h-6 bg-zinc-800 dark:bg-white rounded-full",
|
|
1981
|
+
animate: { x: [-16, 16, -16] },
|
|
1982
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
1983
|
+
}
|
|
1984
|
+
),
|
|
1985
|
+
/* @__PURE__ */ jsx81(
|
|
1986
|
+
motion80.div,
|
|
1987
|
+
{
|
|
1988
|
+
className: "absolute w-6 h-6 bg-zinc-800 dark:bg-white rounded-full",
|
|
1989
|
+
animate: { x: [16, -16, 16] },
|
|
1990
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
1991
|
+
}
|
|
1992
|
+
)
|
|
1993
|
+
] });
|
|
1994
|
+
};
|
|
1995
|
+
|
|
1996
|
+
// .generated/ui/loading/mac-terminal.tsx
|
|
1997
|
+
import { motion as motion81 } from "framer-motion";
|
|
1998
|
+
import { jsx as jsx82, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
1999
|
+
var MacTerminal = () => /* @__PURE__ */ jsxs30("div", { className: "flex items-center text-zinc-900 dark:text-white font-mono text-sm", children: [
|
|
2000
|
+
/* @__PURE__ */ jsx82("span", { children: "~ %" }),
|
|
2001
|
+
/* @__PURE__ */ jsx82(
|
|
2002
|
+
motion81.span,
|
|
2003
|
+
{
|
|
2004
|
+
className: "ml-1.5 w-2 h-4 bg-zinc-900 dark:bg-white inline-block",
|
|
2005
|
+
animate: { opacity: [1, 0, 1] },
|
|
2006
|
+
transition: { duration: 1, repeat: Infinity, ease: "linear" }
|
|
2007
|
+
}
|
|
2008
|
+
)
|
|
2009
|
+
] });
|
|
2010
|
+
|
|
2011
|
+
// .generated/ui/loading/magnetic-dots.tsx
|
|
2012
|
+
import { motion as motion82 } from "framer-motion";
|
|
2013
|
+
import { jsx as jsx83, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
2014
|
+
var MagneticDots = () => /* @__PURE__ */ jsxs31("div", { className: "flex space-x-1.5", style: { filter: "url(#goo)" }, children: [
|
|
2015
|
+
/* @__PURE__ */ jsx83("svg", { width: "0", height: "0", className: "absolute hidden", children: /* @__PURE__ */ jsx83("defs", { children: /* @__PURE__ */ jsxs31("filter", { id: "goo", children: [
|
|
2016
|
+
/* @__PURE__ */ jsx83("feGaussianBlur", { in: "SourceGraphic", stdDeviation: "2", result: "blur" }),
|
|
2017
|
+
/* @__PURE__ */ jsx83("feColorMatrix", { in: "blur", mode: "matrix", values: "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 15 -7", result: "goo" }),
|
|
2018
|
+
/* @__PURE__ */ jsx83("feComposite", { in: "SourceGraphic", in2: "goo", operator: "atop" })
|
|
2019
|
+
] }) }) }),
|
|
2020
|
+
/* @__PURE__ */ jsx83(
|
|
2021
|
+
motion82.div,
|
|
2022
|
+
{
|
|
2023
|
+
className: "w-4 h-4 bg-zinc-800 dark:bg-white rounded-full",
|
|
2024
|
+
animate: { x: [0, 8, 0] },
|
|
2025
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut" }
|
|
2026
|
+
}
|
|
2027
|
+
),
|
|
2028
|
+
/* @__PURE__ */ jsx83(
|
|
2029
|
+
motion82.div,
|
|
2030
|
+
{
|
|
2031
|
+
className: "w-4 h-4 bg-zinc-800 dark:bg-white rounded-full",
|
|
2032
|
+
animate: { x: [0, -8, 0] },
|
|
2033
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut" }
|
|
2034
|
+
}
|
|
2035
|
+
)
|
|
2036
|
+
] });
|
|
2037
|
+
|
|
2038
|
+
// .generated/ui/loading/minimal-triangle.tsx
|
|
2039
|
+
import { motion as motion83 } from "framer-motion";
|
|
2040
|
+
import { jsx as jsx84, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
2041
|
+
var MinimalTriangle = () => /* @__PURE__ */ jsxs32("svg", { className: "w-10 h-10 overflow-visible", viewBox: "0 0 50 50", children: [
|
|
2042
|
+
/* @__PURE__ */ jsx84("polygon", { points: "25,5 45,40 5,40", className: "stroke-zinc-200 dark:stroke-zinc-800 fill-none", strokeWidth: "3" }),
|
|
2043
|
+
/* @__PURE__ */ jsx84(
|
|
2044
|
+
motion83.polygon,
|
|
2045
|
+
{
|
|
2046
|
+
points: "25,5 45,40 5,40",
|
|
2047
|
+
className: "stroke-zinc-800 dark:stroke-white fill-none",
|
|
2048
|
+
strokeWidth: "3",
|
|
2049
|
+
strokeDasharray: "120",
|
|
2050
|
+
animate: { strokeDashoffset: [120, 0, -120] },
|
|
2051
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
2052
|
+
}
|
|
2053
|
+
)
|
|
2054
|
+
] });
|
|
2055
|
+
|
|
2056
|
+
// .generated/ui/loading/morph-dot-ring.tsx
|
|
2057
|
+
import { motion as motion84 } from "framer-motion";
|
|
2058
|
+
import { jsx as jsx85 } from "react/jsx-runtime";
|
|
2059
|
+
var MorphDotRing = () => /* @__PURE__ */ jsx85(
|
|
2060
|
+
motion84.div,
|
|
2061
|
+
{
|
|
2062
|
+
className: "grid grid-cols-2 gap-1 w-6 h-6",
|
|
2063
|
+
animate: { rotate: 180, gap: ["4px", "0px", "4px"] },
|
|
2064
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" },
|
|
2065
|
+
children: [0, 1, 2, 3].map((i) => /* @__PURE__ */ jsx85("div", { className: "w-full h-full bg-zinc-800 dark:bg-white rounded-full" }, i))
|
|
2066
|
+
}
|
|
2067
|
+
);
|
|
2068
|
+
|
|
2069
|
+
// .generated/ui/loading/morph-loader.tsx
|
|
2070
|
+
import { motion as motion85 } from "framer-motion";
|
|
2071
|
+
import { jsx as jsx86 } from "react/jsx-runtime";
|
|
2072
|
+
function MorphLoader({
|
|
2073
|
+
size = 40,
|
|
2074
|
+
color = "bg-blue-500",
|
|
2075
|
+
className = ""
|
|
2076
|
+
}) {
|
|
2077
|
+
return /* @__PURE__ */ jsx86("div", { className: `relative flex items-center justify-center ${className}`, style: { width: size, height: size }, children: /* @__PURE__ */ jsx86(
|
|
2078
|
+
motion85.div,
|
|
2079
|
+
{
|
|
2080
|
+
animate: {
|
|
2081
|
+
borderRadius: ["25%", "50%", "50%", "25%", "25%"],
|
|
2082
|
+
rotate: [0, 90, 180, 270, 360],
|
|
2083
|
+
scale: [1, 0.8, 1.1, 0.8, 1]
|
|
2084
|
+
},
|
|
2085
|
+
transition: {
|
|
2086
|
+
duration: 2.2,
|
|
2087
|
+
ease: "easeInOut",
|
|
2088
|
+
repeat: Infinity
|
|
2089
|
+
},
|
|
2090
|
+
style: { width: size, height: size },
|
|
2091
|
+
className: `rounded-2xl ${color} shadow-lg`
|
|
2092
|
+
}
|
|
2093
|
+
) });
|
|
2094
|
+
}
|
|
2095
|
+
|
|
2096
|
+
// .generated/ui/loading/morphing-bars.tsx
|
|
2097
|
+
import { motion as motion86 } from "framer-motion";
|
|
2098
|
+
import { jsx as jsx87 } from "react/jsx-runtime";
|
|
2099
|
+
var MorphingBars = () => /* @__PURE__ */ jsx87(
|
|
2100
|
+
motion86.div,
|
|
2101
|
+
{
|
|
2102
|
+
className: "flex space-x-1 h-8 items-center",
|
|
2103
|
+
animate: { gap: ["4px", "0px", "4px"] },
|
|
2104
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" },
|
|
2105
|
+
children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx87(
|
|
2106
|
+
motion86.div,
|
|
2107
|
+
{
|
|
2108
|
+
className: "w-2 h-8 bg-zinc-800 dark:bg-white rounded-sm",
|
|
2109
|
+
animate: { height: [32, 16, 32] },
|
|
2110
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
2111
|
+
},
|
|
2112
|
+
i
|
|
2113
|
+
))
|
|
2114
|
+
}
|
|
2115
|
+
);
|
|
2116
|
+
|
|
2117
|
+
// .generated/ui/loading/morphing-infinity.tsx
|
|
2118
|
+
import { motion as motion87 } from "framer-motion";
|
|
2119
|
+
import { jsx as jsx88, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
2120
|
+
var MorphingInfinity = () => {
|
|
2121
|
+
return /* @__PURE__ */ jsxs33("div", { className: "w-12 h-6 flex justify-between items-center relative", children: [
|
|
2122
|
+
/* @__PURE__ */ jsx88(
|
|
2123
|
+
motion87.div,
|
|
2124
|
+
{
|
|
2125
|
+
className: "w-6 h-6 border-2 border-zinc-800 dark:border-zinc-700 rounded-full",
|
|
2126
|
+
animate: { x: [0, 24, 0], scale: [1, 0.5, 1] },
|
|
2127
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
2128
|
+
}
|
|
2129
|
+
),
|
|
2130
|
+
/* @__PURE__ */ jsx88(
|
|
2131
|
+
motion87.div,
|
|
2132
|
+
{
|
|
2133
|
+
className: "w-6 h-6 border-2 border-zinc-800 dark:border-zinc-700 rounded-full absolute top-0 left-0",
|
|
2134
|
+
animate: { x: [24, 0, 24], scale: [0.5, 1, 0.5] },
|
|
2135
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
2136
|
+
}
|
|
2137
|
+
)
|
|
2138
|
+
] });
|
|
2139
|
+
};
|
|
2140
|
+
|
|
2141
|
+
// .generated/ui/loading/morphing-ring.tsx
|
|
2142
|
+
import { motion as motion88 } from "framer-motion";
|
|
2143
|
+
import { jsx as jsx89 } from "react/jsx-runtime";
|
|
2144
|
+
var MorphingRing = () => /* @__PURE__ */ jsx89(
|
|
2145
|
+
motion88.div,
|
|
2146
|
+
{
|
|
2147
|
+
className: "w-10 h-10 border-[3px] border-zinc-800 dark:border-zinc-700",
|
|
2148
|
+
animate: {
|
|
2149
|
+
rotate: 180,
|
|
2150
|
+
borderRadius: ["10%", "50%", "10%"]
|
|
2151
|
+
},
|
|
2152
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
2153
|
+
}
|
|
2154
|
+
);
|
|
2155
|
+
|
|
2156
|
+
// .generated/ui/loading/morphing-shape.tsx
|
|
2157
|
+
import { motion as motion89 } from "framer-motion";
|
|
2158
|
+
import { jsx as jsx90 } from "react/jsx-runtime";
|
|
2159
|
+
var MorphingShape = () => {
|
|
2160
|
+
return /* @__PURE__ */ jsx90(
|
|
2161
|
+
motion89.div,
|
|
2162
|
+
{
|
|
2163
|
+
className: "w-10 h-10 bg-zinc-800 dark:bg-white shadow-sm",
|
|
2164
|
+
animate: {
|
|
2165
|
+
borderRadius: ["10%", "50%", "10%"],
|
|
2166
|
+
rotate: [0, 90, 180],
|
|
2167
|
+
scale: [1, 0.8, 1]
|
|
2168
|
+
},
|
|
2169
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
2170
|
+
}
|
|
2171
|
+
);
|
|
2172
|
+
};
|
|
2173
|
+
|
|
2174
|
+
// .generated/ui/loading/newtons-cradle.tsx
|
|
2175
|
+
import { motion as motion90 } from "framer-motion";
|
|
2176
|
+
import { jsx as jsx91, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
2177
|
+
var NewtonsCradle = () => {
|
|
2178
|
+
return /* @__PURE__ */ jsxs34("div", { className: "flex items-center justify-center space-x-0.5", children: [
|
|
2179
|
+
/* @__PURE__ */ jsx91(
|
|
2180
|
+
motion90.div,
|
|
2181
|
+
{
|
|
2182
|
+
className: "w-3 h-3 bg-zinc-800 dark:bg-white rounded-full origin-top",
|
|
2183
|
+
animate: { rotate: [25, 0, 0, 0, 0, 25] },
|
|
2184
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut" }
|
|
2185
|
+
}
|
|
2186
|
+
),
|
|
2187
|
+
/* @__PURE__ */ jsx91("div", { className: "w-3 h-3 bg-zinc-800 dark:bg-white rounded-full" }),
|
|
2188
|
+
/* @__PURE__ */ jsx91("div", { className: "w-3 h-3 bg-zinc-800 dark:bg-white rounded-full" }),
|
|
2189
|
+
/* @__PURE__ */ jsx91(
|
|
2190
|
+
motion90.div,
|
|
2191
|
+
{
|
|
2192
|
+
className: "w-3 h-3 bg-zinc-800 dark:bg-white rounded-full origin-top",
|
|
2193
|
+
animate: { rotate: [0, 0, 0, -25, 0, 0] },
|
|
2194
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut" }
|
|
2195
|
+
}
|
|
2196
|
+
)
|
|
2197
|
+
] });
|
|
2198
|
+
};
|
|
2199
|
+
|
|
2200
|
+
// .generated/ui/loading/offset-rings.tsx
|
|
2201
|
+
import { motion as motion91 } from "framer-motion";
|
|
2202
|
+
import { jsx as jsx92, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
2203
|
+
var OffsetRings = () => /* @__PURE__ */ jsxs35("div", { className: "relative w-12 h-12 flex items-center justify-center", children: [
|
|
2204
|
+
/* @__PURE__ */ jsx92(
|
|
2205
|
+
motion91.div,
|
|
2206
|
+
{
|
|
2207
|
+
className: "absolute w-12 h-12 border-2 border-zinc-800 dark:border-zinc-700 border-x-transparent rounded-full",
|
|
2208
|
+
animate: { rotate: [0, 180, 360] },
|
|
2209
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
2210
|
+
}
|
|
2211
|
+
),
|
|
2212
|
+
/* @__PURE__ */ jsx92(
|
|
2213
|
+
motion91.div,
|
|
2214
|
+
{
|
|
2215
|
+
className: "absolute w-8 h-8 border-2 border-zinc-500 border-y-transparent rounded-full",
|
|
2216
|
+
animate: { rotate: [0, -180, -360] },
|
|
2217
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut", delay: 0.2 }
|
|
2218
|
+
}
|
|
2219
|
+
)
|
|
2220
|
+
] });
|
|
2221
|
+
|
|
2222
|
+
// .generated/ui/loading/orbiting-circles.tsx
|
|
2223
|
+
import { motion as motion92 } from "framer-motion";
|
|
2224
|
+
import { jsx as jsx93, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
2225
|
+
var OrbitingCircles = () => {
|
|
2226
|
+
return /* @__PURE__ */ jsxs36("div", { className: "relative w-12 h-12 flex items-center justify-center", children: [
|
|
2227
|
+
/* @__PURE__ */ jsx93("div", { className: "w-3 h-3 bg-zinc-800 dark:bg-white rounded-full" }),
|
|
2228
|
+
[0, 1].map((i) => /* @__PURE__ */ jsx93(
|
|
2229
|
+
motion92.div,
|
|
2230
|
+
{
|
|
2231
|
+
className: "absolute w-full h-full",
|
|
2232
|
+
animate: { rotate: i === 0 ? 360 : -360 },
|
|
2233
|
+
transition: { duration: 2, repeat: Infinity, ease: "linear" },
|
|
2234
|
+
children: /* @__PURE__ */ jsx93("div", { className: "absolute top-0 left-1/2 -ml-1 w-2 h-2 bg-zinc-500 dark:bg-zinc-350 rounded-full" })
|
|
2235
|
+
},
|
|
2236
|
+
i
|
|
2237
|
+
))
|
|
2238
|
+
] });
|
|
2239
|
+
};
|
|
2240
|
+
|
|
2241
|
+
// .generated/ui/loading/orbiting-dot.tsx
|
|
2242
|
+
import { motion as motion93 } from "framer-motion";
|
|
2243
|
+
import { jsx as jsx94, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
2244
|
+
var OrbitingDot = () => {
|
|
2245
|
+
return /* @__PURE__ */ jsxs37("div", { className: "relative w-10 h-10 flex items-center justify-center", children: [
|
|
2246
|
+
/* @__PURE__ */ jsx94("div", { className: "w-2 h-2 bg-zinc-300 dark:bg-zinc-700 rounded-full" }),
|
|
2247
|
+
/* @__PURE__ */ jsx94(
|
|
2248
|
+
motion93.div,
|
|
2249
|
+
{
|
|
2250
|
+
className: "absolute w-full h-full border border-zinc-200 dark:border-zinc-800 rounded-full",
|
|
2251
|
+
animate: { rotate: 360 },
|
|
2252
|
+
transition: { duration: 2, repeat: Infinity, ease: "linear" },
|
|
2253
|
+
children: /* @__PURE__ */ jsx94("div", { className: "absolute top-0 left-1/2 -ml-1.5 -mt-1.5 w-3 h-3 bg-zinc-800 dark:bg-white rounded-full shadow-sm" })
|
|
2254
|
+
}
|
|
2255
|
+
)
|
|
2256
|
+
] });
|
|
2257
|
+
};
|
|
2258
|
+
|
|
2259
|
+
// .generated/ui/loading/origami-shape.tsx
|
|
2260
|
+
import { motion as motion94 } from "framer-motion";
|
|
2261
|
+
import { jsx as jsx95, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
2262
|
+
var OrigamiShape = () => /* @__PURE__ */ jsxs38("div", { className: "relative w-10 h-10", children: [
|
|
2263
|
+
/* @__PURE__ */ jsx95(
|
|
2264
|
+
motion94.div,
|
|
2265
|
+
{
|
|
2266
|
+
className: "absolute top-0 left-0 w-5 h-5 bg-zinc-800 dark:bg-white rounded-tl-md",
|
|
2267
|
+
animate: { rotateY: [0, 180, 0] },
|
|
2268
|
+
style: { transformOrigin: "right" },
|
|
2269
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
2270
|
+
}
|
|
2271
|
+
),
|
|
2272
|
+
/* @__PURE__ */ jsx95(
|
|
2273
|
+
motion94.div,
|
|
2274
|
+
{
|
|
2275
|
+
className: "absolute bottom-0 right-0 w-5 h-5 bg-zinc-500 dark:bg-zinc-350 rounded-br-md",
|
|
2276
|
+
animate: { rotateY: [0, 180, 0] },
|
|
2277
|
+
style: { transformOrigin: "left" },
|
|
2278
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
2279
|
+
}
|
|
2280
|
+
)
|
|
2281
|
+
] });
|
|
2282
|
+
|
|
2283
|
+
// .generated/ui/loading/pendulum.tsx
|
|
2284
|
+
import { motion as motion95 } from "framer-motion";
|
|
2285
|
+
import { jsx as jsx96, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
2286
|
+
var Pendulum = () => {
|
|
2287
|
+
return /* @__PURE__ */ jsxs39("div", { className: "relative w-16 h-12 flex items-start justify-center", children: [
|
|
2288
|
+
/* @__PURE__ */ jsx96("div", { className: "w-full h-1 bg-zinc-200 dark:bg-zinc-800 rounded-full rounded-b-none absolute top-0" }),
|
|
2289
|
+
/* @__PURE__ */ jsxs39(
|
|
2290
|
+
motion95.div,
|
|
2291
|
+
{
|
|
2292
|
+
className: "absolute top-0 w-1 bg-zinc-800 dark:bg-white origin-top flex flex-col items-center",
|
|
2293
|
+
animate: { rotate: [-45, 45, -45] },
|
|
2294
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut" },
|
|
2295
|
+
children: [
|
|
2296
|
+
/* @__PURE__ */ jsx96("div", { className: "w-1 h-8 bg-zinc-800 dark:bg-white" }),
|
|
2297
|
+
/* @__PURE__ */ jsx96("div", { className: "w-4 h-4 bg-zinc-800 dark:bg-white rounded-full" })
|
|
2298
|
+
]
|
|
2299
|
+
}
|
|
2300
|
+
)
|
|
2301
|
+
] });
|
|
2302
|
+
};
|
|
2303
|
+
|
|
2304
|
+
// .generated/ui/loading/pulsating-dots.tsx
|
|
2305
|
+
import { motion as motion96 } from "framer-motion";
|
|
2306
|
+
import { jsx as jsx97 } from "react/jsx-runtime";
|
|
2307
|
+
var PulsatingDots = () => {
|
|
2308
|
+
return /* @__PURE__ */ jsx97("div", { className: "flex space-x-2", children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx97(
|
|
2309
|
+
motion96.div,
|
|
2310
|
+
{
|
|
2311
|
+
className: "w-3 h-3 bg-zinc-800 dark:bg-white rounded-full",
|
|
2312
|
+
animate: { scale: [1, 1.5, 1], opacity: [0.5, 1, 0.5] },
|
|
2313
|
+
transition: { duration: 1.2, repeat: Infinity, delay: i * 0.2, ease: "easeInOut" }
|
|
2314
|
+
},
|
|
2315
|
+
i
|
|
2316
|
+
)) });
|
|
2317
|
+
};
|
|
2318
|
+
|
|
2319
|
+
// .generated/ui/loading/pulse-dot.tsx
|
|
2320
|
+
import { motion as motion97 } from "framer-motion";
|
|
2321
|
+
import { jsx as jsx98, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
2322
|
+
var PulseDot = () => {
|
|
2323
|
+
return /* @__PURE__ */ jsxs40("div", { className: "relative w-10 h-10 flex items-center justify-center", children: [
|
|
2324
|
+
/* @__PURE__ */ jsx98(
|
|
2325
|
+
motion97.div,
|
|
2326
|
+
{
|
|
2327
|
+
className: "absolute w-10 h-10 bg-zinc-800 dark:bg-white rounded-full",
|
|
2328
|
+
animate: { scale: [0, 1], opacity: [0.8, 0] },
|
|
2329
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeOut" }
|
|
2330
|
+
}
|
|
2331
|
+
),
|
|
2332
|
+
/* @__PURE__ */ jsx98("div", { className: "w-3 h-3 bg-zinc-800 dark:bg-white rounded-full relative z-10" })
|
|
2333
|
+
] });
|
|
2334
|
+
};
|
|
2335
|
+
|
|
2336
|
+
// .generated/ui/loading/pulse-dots.tsx
|
|
2337
|
+
import { motion as motion98 } from "framer-motion";
|
|
2338
|
+
import { jsx as jsx99 } from "react/jsx-runtime";
|
|
2339
|
+
var PulseDots = () => {
|
|
2340
|
+
return /* @__PURE__ */ jsx99("div", { className: "flex space-x-1.5", children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx99(
|
|
2341
|
+
motion98.div,
|
|
2342
|
+
{
|
|
2343
|
+
className: "w-2.5 h-2.5 bg-zinc-800 dark:bg-white rounded-full",
|
|
2344
|
+
animate: { opacity: [0.2, 1, 0.2] },
|
|
2345
|
+
transition: { duration: 1.4, repeat: Infinity, delay: i * 0.2 }
|
|
2346
|
+
},
|
|
2347
|
+
i
|
|
2348
|
+
)) });
|
|
2349
|
+
};
|
|
2350
|
+
|
|
2351
|
+
// .generated/ui/loading/pulse-square.tsx
|
|
2352
|
+
import { motion as motion99 } from "framer-motion";
|
|
2353
|
+
import { jsx as jsx100 } from "react/jsx-runtime";
|
|
2354
|
+
var PulseSquare = () => {
|
|
2355
|
+
return /* @__PURE__ */ jsx100(
|
|
2356
|
+
motion99.div,
|
|
2357
|
+
{
|
|
2358
|
+
className: "w-8 h-8 border-4 border-zinc-800 dark:border-zinc-700 rounded-md",
|
|
2359
|
+
animate: { scale: [1, 1.2, 1], opacity: [1, 0.3, 1], borderRadius: ["20%", "50%", "20%"] },
|
|
2360
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut" }
|
|
2361
|
+
}
|
|
2362
|
+
);
|
|
2363
|
+
};
|
|
2364
|
+
|
|
2365
|
+
// .generated/ui/loading/pulse.tsx
|
|
2366
|
+
import { motion as motion100 } from "framer-motion";
|
|
2367
|
+
import { jsx as jsx101, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
2368
|
+
function Pulse({
|
|
2369
|
+
size = 12,
|
|
2370
|
+
color = "bg-blue-500",
|
|
2371
|
+
className = ""
|
|
2372
|
+
}) {
|
|
2373
|
+
return /* @__PURE__ */ jsxs41("div", { className: `relative flex items-center justify-center ${className}`, style: { width: size, height: size }, children: [
|
|
2374
|
+
/* @__PURE__ */ jsx101("span", { className: `absolute w-full h-full rounded-full ${color}` }),
|
|
2375
|
+
/* @__PURE__ */ jsx101(
|
|
2376
|
+
motion100.span,
|
|
2377
|
+
{
|
|
2378
|
+
initial: { scale: 1, opacity: 0.5 },
|
|
2379
|
+
animate: { scale: 2.8, opacity: 0 },
|
|
2380
|
+
transition: {
|
|
2381
|
+
repeat: Infinity,
|
|
2382
|
+
duration: 1.8,
|
|
2383
|
+
ease: "easeOut"
|
|
2384
|
+
},
|
|
2385
|
+
className: `absolute w-full h-full rounded-full ${color} opacity-40`
|
|
2386
|
+
}
|
|
2387
|
+
),
|
|
2388
|
+
/* @__PURE__ */ jsx101(
|
|
2389
|
+
motion100.span,
|
|
2390
|
+
{
|
|
2391
|
+
initial: { scale: 1, opacity: 0.5 },
|
|
2392
|
+
animate: { scale: 2.8, opacity: 0 },
|
|
2393
|
+
transition: {
|
|
2394
|
+
repeat: Infinity,
|
|
2395
|
+
duration: 1.8,
|
|
2396
|
+
delay: 0.6,
|
|
2397
|
+
ease: "easeOut"
|
|
2398
|
+
},
|
|
2399
|
+
className: `absolute w-full h-full rounded-full ${color} opacity-40`
|
|
2400
|
+
}
|
|
2401
|
+
)
|
|
2402
|
+
] });
|
|
2403
|
+
}
|
|
2404
|
+
|
|
2405
|
+
// .generated/ui/loading/pumping-heart.tsx
|
|
2406
|
+
import { motion as motion101 } from "framer-motion";
|
|
2407
|
+
import { jsx as jsx102 } from "react/jsx-runtime";
|
|
2408
|
+
var PumpingHeart = () => {
|
|
2409
|
+
return /* @__PURE__ */ jsx102(
|
|
2410
|
+
motion101.div,
|
|
2411
|
+
{
|
|
2412
|
+
className: "w-8 h-8",
|
|
2413
|
+
animate: { scale: [1, 1.25, 1, 1.25, 1] },
|
|
2414
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut" },
|
|
2415
|
+
children: /* @__PURE__ */ jsx102("svg", { viewBox: "0 0 24 24", className: "fill-zinc-800 dark:fill-white", children: /* @__PURE__ */ jsx102("path", { d: "M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" }) })
|
|
2416
|
+
}
|
|
2417
|
+
);
|
|
2418
|
+
};
|
|
2419
|
+
|
|
2420
|
+
// .generated/ui/loading/radar-sweep.tsx
|
|
2421
|
+
import { motion as motion102 } from "framer-motion";
|
|
2422
|
+
import { jsx as jsx103, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
2423
|
+
var RadarSweep = ({ theme = "light" }) => {
|
|
2424
|
+
const isDark = theme === "dark";
|
|
2425
|
+
return /* @__PURE__ */ jsxs42("div", { className: "relative w-12 h-12 rounded-full border border-zinc-800/10 dark:border-white/10 flex items-center justify-center overflow-hidden", children: [
|
|
2426
|
+
/* @__PURE__ */ jsx103("div", { className: "absolute w-8 h-8 rounded-full border border-zinc-800/5 dark:border-white/5" }),
|
|
2427
|
+
/* @__PURE__ */ jsx103("div", { className: "absolute w-4 h-4 rounded-full border border-zinc-800/5 dark:border-white/5" }),
|
|
2428
|
+
/* @__PURE__ */ jsx103("div", { className: "absolute w-1.5 h-1.5 rounded-full bg-zinc-800/80 dark:bg-white/80" }),
|
|
2429
|
+
/* @__PURE__ */ jsx103(
|
|
2430
|
+
motion102.div,
|
|
2431
|
+
{
|
|
2432
|
+
className: "absolute inset-0 origin-center",
|
|
2433
|
+
style: {
|
|
2434
|
+
background: isDark ? "conic-gradient(from 0deg, transparent 50%, rgba(255,255,255,0.02) 65%, rgba(255,255,255,0.15) 85%, rgba(255,255,255,0.55) 100%)" : "conic-gradient(from 0deg, transparent 50%, rgba(39,39,42,0.02) 65%, rgba(39,39,42,0.1) 85%, rgba(39,39,42,0.45) 100%)"
|
|
2435
|
+
},
|
|
2436
|
+
animate: { rotate: 360 },
|
|
2437
|
+
transition: { duration: 1.8, repeat: Infinity, ease: "linear" }
|
|
2438
|
+
}
|
|
2439
|
+
)
|
|
2440
|
+
] });
|
|
2441
|
+
};
|
|
2442
|
+
|
|
2443
|
+
// .generated/ui/loading/ring-sweep.tsx
|
|
2444
|
+
import { motion as motion103 } from "framer-motion";
|
|
2445
|
+
import { jsx as jsx104 } from "react/jsx-runtime";
|
|
2446
|
+
var RingSweep = () => {
|
|
2447
|
+
return /* @__PURE__ */ jsx104(
|
|
2448
|
+
motion103.div,
|
|
2449
|
+
{
|
|
2450
|
+
className: "w-10 h-10 border-[3px] border-zinc-200 dark:border-zinc-800 rounded-full border-t-zinc-800 dark:border-t-white",
|
|
2451
|
+
animate: { rotate: 360 },
|
|
2452
|
+
transition: { duration: 1, repeat: Infinity, ease: "linear" }
|
|
2453
|
+
}
|
|
2454
|
+
);
|
|
2455
|
+
};
|
|
2456
|
+
|
|
2457
|
+
// .generated/ui/loading/ripple-effect.tsx
|
|
2458
|
+
import { motion as motion104 } from "framer-motion";
|
|
2459
|
+
import { jsx as jsx105, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
2460
|
+
var RippleEffect = () => {
|
|
2461
|
+
return /* @__PURE__ */ jsxs43("div", { className: "relative w-12 h-12 flex items-center justify-center", children: [
|
|
2462
|
+
/* @__PURE__ */ jsx105("div", { className: "absolute w-2.5 h-2.5 bg-zinc-800 dark:bg-white rounded-full" }),
|
|
2463
|
+
[0, 1, 2].map((i) => /* @__PURE__ */ jsx105(
|
|
2464
|
+
motion104.div,
|
|
2465
|
+
{
|
|
2466
|
+
className: "absolute w-8 h-8 border border-zinc-850 dark:border-white rounded-full",
|
|
2467
|
+
initial: { scale: 0.3, opacity: 0.8 },
|
|
2468
|
+
animate: { scale: 1.6, opacity: 0 },
|
|
2469
|
+
transition: {
|
|
2470
|
+
duration: 2.2,
|
|
2471
|
+
repeat: Infinity,
|
|
2472
|
+
ease: "easeOut",
|
|
2473
|
+
delay: i * 0.7
|
|
2474
|
+
}
|
|
2475
|
+
},
|
|
2476
|
+
i
|
|
2477
|
+
))
|
|
2478
|
+
] });
|
|
2479
|
+
};
|
|
2480
|
+
|
|
2481
|
+
// .generated/ui/loading/rotating-cross.tsx
|
|
2482
|
+
import { motion as motion105 } from "framer-motion";
|
|
2483
|
+
import { jsx as jsx106, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
2484
|
+
var RotatingCross = () => {
|
|
2485
|
+
return /* @__PURE__ */ jsxs44(
|
|
2486
|
+
motion105.div,
|
|
2487
|
+
{
|
|
2488
|
+
className: "relative w-8 h-8 flex items-center justify-center",
|
|
2489
|
+
animate: { rotate: 180 },
|
|
2490
|
+
transition: { duration: 0.8, repeat: Infinity, ease: "easeInOut" },
|
|
2491
|
+
children: [
|
|
2492
|
+
/* @__PURE__ */ jsx106("div", { className: "absolute w-full h-1.5 bg-zinc-800 dark:bg-white rounded-sm" }),
|
|
2493
|
+
/* @__PURE__ */ jsx106("div", { className: "absolute h-full w-1.5 bg-zinc-800 dark:bg-white rounded-sm" })
|
|
2494
|
+
]
|
|
2495
|
+
}
|
|
2496
|
+
);
|
|
2497
|
+
};
|
|
2498
|
+
|
|
2499
|
+
// .generated/ui/loading/rotating-triangle.tsx
|
|
2500
|
+
import { motion as motion106 } from "framer-motion";
|
|
2501
|
+
import { jsx as jsx107 } from "react/jsx-runtime";
|
|
2502
|
+
var RotatingTriangle = () => {
|
|
2503
|
+
return /* @__PURE__ */ jsx107("svg", { className: "w-10 h-10 overflow-visible", viewBox: "0 0 50 50", children: /* @__PURE__ */ jsx107(
|
|
2504
|
+
motion106.polygon,
|
|
2505
|
+
{
|
|
2506
|
+
points: "25,5 45,40 5,40",
|
|
2507
|
+
className: "stroke-zinc-800 dark:stroke-white fill-none origin-center",
|
|
2508
|
+
strokeWidth: "4",
|
|
2509
|
+
strokeLinejoin: "round",
|
|
2510
|
+
animate: { rotate: 360 },
|
|
2511
|
+
transition: { duration: 2, repeat: Infinity, ease: "linear" }
|
|
2512
|
+
}
|
|
2513
|
+
) });
|
|
2514
|
+
};
|
|
2515
|
+
|
|
2516
|
+
// .generated/ui/loading/shape-shift-grid.tsx
|
|
2517
|
+
import { motion as motion107 } from "framer-motion";
|
|
2518
|
+
import { jsx as jsx108 } from "react/jsx-runtime";
|
|
2519
|
+
var ShapeShiftGrid = () => /* @__PURE__ */ jsx108("div", { className: "grid grid-cols-2 gap-1 w-8 h-8", children: [0, 1, 2, 3].map((i) => /* @__PURE__ */ jsx108(
|
|
2520
|
+
motion107.div,
|
|
2521
|
+
{
|
|
2522
|
+
className: "w-full h-full bg-zinc-800 dark:bg-white",
|
|
2523
|
+
animate: { borderRadius: ["10%", "50%", "10%"], scale: [1, 0.8, 1] },
|
|
2524
|
+
transition: { duration: 1.5, repeat: Infinity, delay: i * 0.1, ease: "easeInOut" }
|
|
2525
|
+
},
|
|
2526
|
+
i
|
|
2527
|
+
)) });
|
|
2528
|
+
|
|
2529
|
+
// .generated/ui/loading/shimmer-line.tsx
|
|
2530
|
+
import { motion as motion108 } from "framer-motion";
|
|
2531
|
+
import { jsx as jsx109 } from "react/jsx-runtime";
|
|
2532
|
+
var ShimmerLine = () => {
|
|
2533
|
+
return /* @__PURE__ */ jsx109("div", { className: "w-24 h-1 bg-zinc-200 dark:bg-zinc-800 rounded-full overflow-hidden relative", children: /* @__PURE__ */ jsx109(
|
|
2534
|
+
motion108.div,
|
|
2535
|
+
{
|
|
2536
|
+
className: "absolute top-0 left-0 bottom-0 w-1/3 bg-zinc-800 dark:bg-white rounded-full",
|
|
2537
|
+
animate: { x: ["-100%", "300%"] },
|
|
2538
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut" }
|
|
2539
|
+
}
|
|
2540
|
+
) });
|
|
2541
|
+
};
|
|
2542
|
+
|
|
2543
|
+
// .generated/ui/loading/siri-wave.tsx
|
|
2544
|
+
import { motion as motion109 } from "framer-motion";
|
|
2545
|
+
import { jsx as jsx110 } from "react/jsx-runtime";
|
|
2546
|
+
var SiriWave = () => /* @__PURE__ */ jsx110("div", { className: "flex space-x-1 items-center h-8", children: [0, 1, 2, 3, 4].map((i) => /* @__PURE__ */ jsx110(
|
|
2547
|
+
motion109.div,
|
|
2548
|
+
{
|
|
2549
|
+
className: "w-1 bg-zinc-800 dark:bg-white rounded-full",
|
|
2550
|
+
animate: { height: [4, 24, 4] },
|
|
2551
|
+
transition: { duration: 1.2, repeat: Infinity, delay: i * 0.1, ease: "easeInOut" }
|
|
2552
|
+
},
|
|
2553
|
+
i
|
|
2554
|
+
)) });
|
|
2555
|
+
|
|
2556
|
+
// .generated/ui/loading/skeleton-loader.tsx
|
|
2557
|
+
import { motion as motion110 } from "framer-motion";
|
|
2558
|
+
import { jsx as jsx111, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
2559
|
+
var SkeletonLoader = () => {
|
|
2560
|
+
return /* @__PURE__ */ jsxs45("div", { className: "w-full max-w-[120px] space-y-2", children: [
|
|
2561
|
+
/* @__PURE__ */ jsxs45("div", { className: "flex items-center space-x-2", children: [
|
|
2562
|
+
/* @__PURE__ */ jsx111(
|
|
2563
|
+
motion110.div,
|
|
2564
|
+
{
|
|
2565
|
+
className: "w-8 h-8 bg-zinc-200 dark:bg-zinc-800 rounded-full shrink-0",
|
|
2566
|
+
animate: { opacity: [0.5, 1, 0.5] },
|
|
2567
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut" }
|
|
2568
|
+
}
|
|
2569
|
+
),
|
|
2570
|
+
/* @__PURE__ */ jsx111(
|
|
2571
|
+
motion110.div,
|
|
2572
|
+
{
|
|
2573
|
+
className: "h-3 bg-zinc-200 dark:bg-zinc-800 rounded-full w-full",
|
|
2574
|
+
animate: { opacity: [0.5, 1, 0.5] },
|
|
2575
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut", delay: 0.2 }
|
|
2576
|
+
}
|
|
2577
|
+
)
|
|
2578
|
+
] }),
|
|
2579
|
+
/* @__PURE__ */ jsx111(
|
|
2580
|
+
motion110.div,
|
|
2581
|
+
{
|
|
2582
|
+
className: "h-2 bg-zinc-200 dark:bg-zinc-800 rounded-full w-full",
|
|
2583
|
+
animate: { opacity: [0.5, 1, 0.5] },
|
|
2584
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut", delay: 0.4 }
|
|
2585
|
+
}
|
|
2586
|
+
),
|
|
2587
|
+
/* @__PURE__ */ jsx111(
|
|
2588
|
+
motion110.div,
|
|
2589
|
+
{
|
|
2590
|
+
className: "h-2 bg-zinc-200 dark:bg-zinc-800 rounded-full w-4/5",
|
|
2591
|
+
animate: { opacity: [0.5, 1, 0.5] },
|
|
2592
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut", delay: 0.6 }
|
|
2593
|
+
}
|
|
2594
|
+
)
|
|
2595
|
+
] });
|
|
2596
|
+
};
|
|
2597
|
+
|
|
2598
|
+
// .generated/ui/loading/skeleton.tsx
|
|
2599
|
+
import { motion as motion111 } from "framer-motion";
|
|
2600
|
+
import { jsx as jsx112 } from "react/jsx-runtime";
|
|
2601
|
+
function Skeleton({
|
|
2602
|
+
className = "",
|
|
2603
|
+
shimmerColor = "dark"
|
|
2604
|
+
}) {
|
|
2605
|
+
const isDark = shimmerColor === "dark";
|
|
2606
|
+
const shimmerGradient = isDark ? "linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.05) 50%, rgba(255,255,255,0) 100%)" : "linear-gradient(90deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.04) 50%, rgba(0,0,0,0) 100%)";
|
|
2607
|
+
return /* @__PURE__ */ jsx112(
|
|
2608
|
+
"div",
|
|
2609
|
+
{
|
|
2610
|
+
className: `relative overflow-hidden rounded-md bg-neutral-200/50 dark:bg-neutral-800/40 ${className}`,
|
|
2611
|
+
children: /* @__PURE__ */ jsx112(
|
|
2612
|
+
motion111.div,
|
|
2613
|
+
{
|
|
2614
|
+
initial: { x: "-150%" },
|
|
2615
|
+
animate: { x: "150%" },
|
|
2616
|
+
transition: {
|
|
2617
|
+
repeat: Infinity,
|
|
2618
|
+
duration: 1.6,
|
|
2619
|
+
ease: "easeInOut"
|
|
2620
|
+
},
|
|
2621
|
+
style: {
|
|
2622
|
+
background: shimmerGradient
|
|
2623
|
+
},
|
|
2624
|
+
className: "absolute inset-0 w-[80%] h-full"
|
|
2625
|
+
}
|
|
2626
|
+
)
|
|
2627
|
+
}
|
|
2628
|
+
);
|
|
2629
|
+
}
|
|
2630
|
+
|
|
2631
|
+
// .generated/ui/loading/sliding-bars.tsx
|
|
2632
|
+
import { motion as motion112 } from "framer-motion";
|
|
2633
|
+
import { jsx as jsx113, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
2634
|
+
var SlidingBars = () => /* @__PURE__ */ jsxs46("div", { className: "relative w-8 h-8", children: [
|
|
2635
|
+
/* @__PURE__ */ jsx113(
|
|
2636
|
+
motion112.div,
|
|
2637
|
+
{
|
|
2638
|
+
className: "absolute top-0 left-0 w-8 h-1.5 bg-zinc-800 dark:bg-white rounded-full",
|
|
2639
|
+
animate: { y: [0, 24, 0] },
|
|
2640
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut" }
|
|
2641
|
+
}
|
|
2642
|
+
),
|
|
2643
|
+
/* @__PURE__ */ jsx113(
|
|
2644
|
+
motion112.div,
|
|
2645
|
+
{
|
|
2646
|
+
className: "absolute bottom-0 left-0 w-8 h-1.5 bg-zinc-400 dark:bg-zinc-200 rounded-full",
|
|
2647
|
+
animate: { y: [0, -24, 0] },
|
|
2648
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut" }
|
|
2649
|
+
}
|
|
2650
|
+
)
|
|
2651
|
+
] });
|
|
2652
|
+
|
|
2653
|
+
// .generated/ui/loading/smooth-dot-shift.tsx
|
|
2654
|
+
import { motion as motion113 } from "framer-motion";
|
|
2655
|
+
import { jsx as jsx114, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
2656
|
+
var SmoothDotShift = () => /* @__PURE__ */ jsxs47("div", { className: "relative w-12 h-3 flex items-center", children: [
|
|
2657
|
+
/* @__PURE__ */ jsx114(
|
|
2658
|
+
motion113.div,
|
|
2659
|
+
{
|
|
2660
|
+
className: "absolute w-3 h-3 bg-zinc-800 dark:bg-white rounded-full z-10",
|
|
2661
|
+
animate: { x: [0, 18, 36, 18, 0] },
|
|
2662
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
2663
|
+
}
|
|
2664
|
+
),
|
|
2665
|
+
/* @__PURE__ */ jsx114("div", { className: "w-3 h-3 bg-zinc-300 dark:bg-zinc-700 rounded-full absolute left-0" }),
|
|
2666
|
+
/* @__PURE__ */ jsx114("div", { className: "w-3 h-3 bg-zinc-300 dark:bg-zinc-700 rounded-full absolute left-[18px]" }),
|
|
2667
|
+
/* @__PURE__ */ jsx114("div", { className: "w-3 h-3 bg-zinc-300 dark:bg-zinc-700 rounded-full absolute left-[36px]" })
|
|
2668
|
+
] });
|
|
2669
|
+
|
|
2670
|
+
// .generated/ui/loading/smooth-ring.tsx
|
|
2671
|
+
import { jsx as jsx115, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
2672
|
+
var SmoothRing = () => /* @__PURE__ */ jsx115("div", { className: "w-9 h-9", children: /* @__PURE__ */ jsxs48("svg", { className: "w-full h-full animate-spin", viewBox: "0 0 32 32", children: [
|
|
2673
|
+
/* @__PURE__ */ jsx115(
|
|
2674
|
+
"circle",
|
|
2675
|
+
{
|
|
2676
|
+
cx: "16",
|
|
2677
|
+
cy: "16",
|
|
2678
|
+
r: "14",
|
|
2679
|
+
fill: "none",
|
|
2680
|
+
strokeWidth: "3",
|
|
2681
|
+
className: "stroke-zinc-200 dark:stroke-zinc-800"
|
|
2682
|
+
}
|
|
2683
|
+
),
|
|
2684
|
+
/* @__PURE__ */ jsx115(
|
|
2685
|
+
"circle",
|
|
2686
|
+
{
|
|
2687
|
+
cx: "16",
|
|
2688
|
+
cy: "16",
|
|
2689
|
+
r: "14",
|
|
2690
|
+
fill: "none",
|
|
2691
|
+
strokeWidth: "3",
|
|
2692
|
+
className: "stroke-zinc-800 dark:stroke-white",
|
|
2693
|
+
strokeDasharray: "38 80",
|
|
2694
|
+
strokeLinecap: "round"
|
|
2695
|
+
}
|
|
2696
|
+
)
|
|
2697
|
+
] }) });
|
|
2698
|
+
|
|
2699
|
+
// .generated/ui/loading/smooth-rounded-square.tsx
|
|
2700
|
+
import { motion as motion114 } from "framer-motion";
|
|
2701
|
+
import { jsx as jsx116 } from "react/jsx-runtime";
|
|
2702
|
+
var SmoothRoundedSquare = () => /* @__PURE__ */ jsx116(
|
|
2703
|
+
motion114.div,
|
|
2704
|
+
{
|
|
2705
|
+
className: "w-10 h-10 border-[3px] border-zinc-800 dark:border-zinc-700",
|
|
2706
|
+
animate: { borderRadius: ["10%", "50%", "10%"] },
|
|
2707
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
2708
|
+
}
|
|
2709
|
+
);
|
|
2710
|
+
|
|
2711
|
+
// .generated/ui/loading/spinning-squares.tsx
|
|
2712
|
+
import { motion as motion115 } from "framer-motion";
|
|
2713
|
+
import { jsx as jsx117, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
2714
|
+
var SpinningSquares = () => {
|
|
2715
|
+
return /* @__PURE__ */ jsxs49("div", { className: "relative w-10 h-10", children: [
|
|
2716
|
+
/* @__PURE__ */ jsx117(
|
|
2717
|
+
motion115.div,
|
|
2718
|
+
{
|
|
2719
|
+
className: "absolute top-0 left-0 w-4 h-4 bg-zinc-800 dark:bg-white rounded-sm",
|
|
2720
|
+
animate: { x: [0, 24, 24, 0, 0], y: [0, 0, 24, 24, 0] },
|
|
2721
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
2722
|
+
}
|
|
2723
|
+
),
|
|
2724
|
+
/* @__PURE__ */ jsx117(
|
|
2725
|
+
motion115.div,
|
|
2726
|
+
{
|
|
2727
|
+
className: "absolute bottom-0 right-0 w-4 h-4 bg-zinc-300 dark:bg-zinc-700 rounded-sm",
|
|
2728
|
+
animate: { x: [0, -24, -24, 0, 0], y: [0, 0, -24, -24, 0] },
|
|
2729
|
+
transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }
|
|
2730
|
+
}
|
|
2731
|
+
)
|
|
2732
|
+
] });
|
|
2733
|
+
};
|
|
2734
|
+
|
|
2735
|
+
// .generated/ui/loading/spiral-spinner.tsx
|
|
2736
|
+
import { motion as motion116 } from "framer-motion";
|
|
2737
|
+
import { jsx as jsx118 } from "react/jsx-runtime";
|
|
2738
|
+
var SpiralSpinner = () => {
|
|
2739
|
+
return /* @__PURE__ */ jsx118(
|
|
2740
|
+
motion116.div,
|
|
2741
|
+
{
|
|
2742
|
+
className: "w-10 h-10 border-[3px] border-zinc-800 dark:border-zinc-700 rounded-full border-t-transparent",
|
|
2743
|
+
animate: { rotate: 360, scale: [1, 0.8, 1] },
|
|
2744
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut" }
|
|
2745
|
+
}
|
|
2746
|
+
);
|
|
2747
|
+
};
|
|
2748
|
+
|
|
2749
|
+
// .generated/ui/loading/spring-bars.tsx
|
|
2750
|
+
import { motion as motion117 } from "framer-motion";
|
|
2751
|
+
import { jsx as jsx119 } from "react/jsx-runtime";
|
|
2752
|
+
var SpringBars = () => /* @__PURE__ */ jsx119("div", { className: "flex flex-col space-y-2 w-10 justify-center", children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx119(
|
|
2753
|
+
motion117.div,
|
|
2754
|
+
{
|
|
2755
|
+
className: "h-1.5 bg-zinc-800 dark:bg-white rounded-full origin-left",
|
|
2756
|
+
animate: { scaleX: [0.2, 1, 0.2] },
|
|
2757
|
+
transition: {
|
|
2758
|
+
duration: 1.4,
|
|
2759
|
+
repeat: Infinity,
|
|
2760
|
+
ease: "easeInOut",
|
|
2761
|
+
delay: i * 0.15
|
|
2762
|
+
}
|
|
2763
|
+
},
|
|
2764
|
+
i
|
|
2765
|
+
)) });
|
|
2766
|
+
|
|
2767
|
+
// .generated/ui/loading/spring-dot-matrix.tsx
|
|
2768
|
+
import { motion as motion118 } from "framer-motion";
|
|
2769
|
+
import { jsx as jsx120 } from "react/jsx-runtime";
|
|
2770
|
+
var SpringDotMatrix = () => {
|
|
2771
|
+
return /* @__PURE__ */ jsx120("div", { className: "grid grid-cols-3 gap-2.5", children: Array.from({ length: 9 }).map((_, i) => /* @__PURE__ */ jsx120(
|
|
2772
|
+
motion118.div,
|
|
2773
|
+
{
|
|
2774
|
+
className: "w-2 h-2 bg-zinc-800 dark:bg-white rounded-full",
|
|
2775
|
+
animate: { scale: [1, 0.4, 1] },
|
|
2776
|
+
transition: {
|
|
2777
|
+
duration: 1.5,
|
|
2778
|
+
repeat: Infinity,
|
|
2779
|
+
ease: "easeInOut",
|
|
2780
|
+
delay: (Math.floor(i / 3) + i % 3) * 0.15
|
|
2781
|
+
}
|
|
2782
|
+
},
|
|
2783
|
+
i
|
|
2784
|
+
)) });
|
|
2785
|
+
};
|
|
2786
|
+
|
|
2787
|
+
// .generated/ui/loading/spring-hexagon.tsx
|
|
2788
|
+
import { motion as motion119 } from "framer-motion";
|
|
2789
|
+
import { jsx as jsx121 } from "react/jsx-runtime";
|
|
2790
|
+
var SpringHexagon = () => /* @__PURE__ */ jsx121(
|
|
2791
|
+
motion119.svg,
|
|
2792
|
+
{
|
|
2793
|
+
className: "w-10 h-10",
|
|
2794
|
+
viewBox: "0 0 50 50",
|
|
2795
|
+
animate: { scale: [1, 1.15, 1], rotate: [0, 60, 60] },
|
|
2796
|
+
transition: { duration: 2, repeat: Infinity, type: "spring", bounce: 0.3 },
|
|
2797
|
+
children: /* @__PURE__ */ jsx121("polygon", { points: "25,5 45,15 45,35 25,45 5,35 5,15", className: "fill-zinc-800 dark:fill-white" })
|
|
2798
|
+
}
|
|
2799
|
+
);
|
|
2800
|
+
|
|
2801
|
+
// .generated/ui/loading/spring-ring-expand.tsx
|
|
2802
|
+
import { motion as motion120 } from "framer-motion";
|
|
2803
|
+
import { jsx as jsx122 } from "react/jsx-runtime";
|
|
2804
|
+
var SpringRingExpand = () => {
|
|
2805
|
+
return /* @__PURE__ */ jsx122("div", { className: "relative w-12 h-12 flex items-center justify-center", children: [0, 1].map((i) => /* @__PURE__ */ jsx122(
|
|
2806
|
+
motion120.div,
|
|
2807
|
+
{
|
|
2808
|
+
className: "absolute w-10 h-10 border-2 border-zinc-800 dark:border-white rounded-full",
|
|
2809
|
+
initial: { scale: 0.1, opacity: 1 },
|
|
2810
|
+
animate: { scale: 1.25, opacity: 0 },
|
|
2811
|
+
transition: {
|
|
2812
|
+
duration: 1.6,
|
|
2813
|
+
repeat: Infinity,
|
|
2814
|
+
ease: "easeOut",
|
|
2815
|
+
delay: i * 0.8
|
|
2816
|
+
}
|
|
2817
|
+
},
|
|
2818
|
+
i
|
|
2819
|
+
)) });
|
|
2820
|
+
};
|
|
2821
|
+
|
|
2822
|
+
// .generated/ui/loading/spring-text-pop.tsx
|
|
2823
|
+
import { motion as motion121 } from "framer-motion";
|
|
2824
|
+
import { jsx as jsx123 } from "react/jsx-runtime";
|
|
2825
|
+
var SpringTextPop = () => {
|
|
2826
|
+
const text = "Loading...";
|
|
2827
|
+
return /* @__PURE__ */ jsx123("div", { className: "flex font-medium text-sm tracking-widest text-zinc-800 dark:text-white", children: text.split("").map((char, i) => /* @__PURE__ */ jsx123(
|
|
2828
|
+
motion121.span,
|
|
2829
|
+
{
|
|
2830
|
+
className: "origin-bottom inline-block",
|
|
2831
|
+
animate: { y: [0, -6, 0] },
|
|
2832
|
+
transition: {
|
|
2833
|
+
duration: 1.2,
|
|
2834
|
+
repeat: Infinity,
|
|
2835
|
+
ease: "easeInOut",
|
|
2836
|
+
delay: i * 0.08
|
|
2837
|
+
},
|
|
2838
|
+
children: char === " " ? "\xA0" : char
|
|
2839
|
+
},
|
|
2840
|
+
i
|
|
2841
|
+
)) });
|
|
2842
|
+
};
|
|
2843
|
+
|
|
2844
|
+
// .generated/ui/loading/square-accordion.tsx
|
|
2845
|
+
import { motion as motion122 } from "framer-motion";
|
|
2846
|
+
import { jsx as jsx124 } from "react/jsx-runtime";
|
|
2847
|
+
var SquareAccordion = () => {
|
|
2848
|
+
return /* @__PURE__ */ jsx124("div", { className: "flex space-x-1 w-12 h-12 justify-center items-center", children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx124(
|
|
2849
|
+
motion122.div,
|
|
2850
|
+
{
|
|
2851
|
+
className: "w-3 bg-zinc-800 dark:bg-white rounded-sm",
|
|
2852
|
+
animate: { height: [12, 32, 12] },
|
|
2853
|
+
transition: { duration: 1.5, repeat: Infinity, delay: i * 0.2, ease: "easeInOut" }
|
|
2854
|
+
},
|
|
2855
|
+
i
|
|
2856
|
+
)) });
|
|
2857
|
+
};
|
|
2858
|
+
|
|
2859
|
+
// .generated/ui/loading/square-grid.tsx
|
|
2860
|
+
import { motion as motion123 } from "framer-motion";
|
|
2861
|
+
import { jsx as jsx125 } from "react/jsx-runtime";
|
|
2862
|
+
var SquareGrid = () => {
|
|
2863
|
+
return /* @__PURE__ */ jsx125("div", { className: "grid grid-cols-2 gap-1.5", children: [0, 1, 2, 3].map((i) => /* @__PURE__ */ jsx125(
|
|
2864
|
+
motion123.div,
|
|
2865
|
+
{
|
|
2866
|
+
className: "w-4 h-4 bg-zinc-800 dark:bg-white rounded-sm",
|
|
2867
|
+
animate: { scale: [1, 0.5, 1], opacity: [1, 0.3, 1] },
|
|
2868
|
+
transition: { duration: 1.5, repeat: Infinity, delay: i * 0.2, ease: "easeInOut" }
|
|
2869
|
+
},
|
|
2870
|
+
i
|
|
2871
|
+
)) });
|
|
2872
|
+
};
|
|
2873
|
+
|
|
2874
|
+
// .generated/ui/loading/square-snake.tsx
|
|
2875
|
+
import { motion as motion124 } from "framer-motion";
|
|
2876
|
+
import { jsx as jsx126 } from "react/jsx-runtime";
|
|
2877
|
+
var SquareSnake = () => {
|
|
2878
|
+
return /* @__PURE__ */ jsx126("div", { className: "grid grid-cols-3 gap-1 w-10 h-10", children: [
|
|
2879
|
+
[0, 0],
|
|
2880
|
+
[1, 0],
|
|
2881
|
+
[2, 0],
|
|
2882
|
+
[0, 1],
|
|
2883
|
+
[1, 1],
|
|
2884
|
+
[2, 1],
|
|
2885
|
+
[0, 2],
|
|
2886
|
+
[1, 2],
|
|
2887
|
+
[2, 2]
|
|
2888
|
+
].map(([x, y], i) => /* @__PURE__ */ jsx126(
|
|
2889
|
+
motion124.div,
|
|
2890
|
+
{
|
|
2891
|
+
className: "bg-zinc-800 dark:bg-white rounded-sm w-full h-full",
|
|
2892
|
+
animate: { opacity: [0.1, 1, 0.1] },
|
|
2893
|
+
transition: { duration: 1.5, repeat: Infinity, delay: (x + y) * 0.15, ease: "easeInOut" }
|
|
2894
|
+
},
|
|
2895
|
+
i
|
|
2896
|
+
)) });
|
|
2897
|
+
};
|
|
2898
|
+
|
|
2899
|
+
// .generated/ui/loading/square-spinner.tsx
|
|
2900
|
+
import { motion as motion125 } from "framer-motion";
|
|
2901
|
+
import { jsx as jsx127 } from "react/jsx-runtime";
|
|
2902
|
+
var SquareSpinner = () => {
|
|
2903
|
+
return /* @__PURE__ */ jsx127(
|
|
2904
|
+
motion125.div,
|
|
2905
|
+
{
|
|
2906
|
+
className: "w-8 h-8 border-2 border-zinc-800 dark:border-zinc-700 flex items-center justify-center",
|
|
2907
|
+
animate: { rotate: 90 },
|
|
2908
|
+
transition: { duration: 0.6, repeat: Infinity, ease: "easeInOut" },
|
|
2909
|
+
children: /* @__PURE__ */ jsx127("div", { className: "w-2 h-2 bg-zinc-800 dark:bg-white" })
|
|
2910
|
+
}
|
|
2911
|
+
);
|
|
2912
|
+
};
|
|
2913
|
+
|
|
2914
|
+
// .generated/ui/loading/stacked-bar-pulse.tsx
|
|
2915
|
+
import { motion as motion126 } from "framer-motion";
|
|
2916
|
+
import { jsx as jsx128 } from "react/jsx-runtime";
|
|
2917
|
+
var StackedBarPulse = () => /* @__PURE__ */ jsx128("div", { className: "flex flex-col space-y-1 w-8 items-center", children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx128(
|
|
2918
|
+
motion126.div,
|
|
2919
|
+
{
|
|
2920
|
+
className: "w-full h-1 bg-zinc-800 dark:bg-white rounded-full",
|
|
2921
|
+
animate: { opacity: [0.2, 1, 0.2], width: ["50%", "100%", "50%"] },
|
|
2922
|
+
transition: { duration: 1.5, repeat: Infinity, delay: i * 0.2, ease: "easeInOut" }
|
|
2923
|
+
},
|
|
2924
|
+
i
|
|
2925
|
+
)) });
|
|
2926
|
+
|
|
2927
|
+
// .generated/ui/loading/swapping-dots.tsx
|
|
2928
|
+
import { motion as motion127 } from "framer-motion";
|
|
2929
|
+
import { jsx as jsx129, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
2930
|
+
var SwappingDots = () => {
|
|
2931
|
+
return /* @__PURE__ */ jsxs50("div", { className: "relative w-12 h-4 flex items-center", children: [
|
|
2932
|
+
/* @__PURE__ */ jsx129(
|
|
2933
|
+
motion127.div,
|
|
2934
|
+
{
|
|
2935
|
+
className: "absolute left-0 w-4 h-4 bg-zinc-800 dark:bg-white rounded-full",
|
|
2936
|
+
animate: { x: [0, 32, 0] },
|
|
2937
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut" }
|
|
2938
|
+
}
|
|
2939
|
+
),
|
|
2940
|
+
/* @__PURE__ */ jsx129(
|
|
2941
|
+
motion127.div,
|
|
2942
|
+
{
|
|
2943
|
+
className: "absolute right-0 w-4 h-4 bg-zinc-400 dark:bg-zinc-200 rounded-full",
|
|
2944
|
+
animate: { x: [0, -32, 0] },
|
|
2945
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut" }
|
|
2946
|
+
}
|
|
2947
|
+
)
|
|
2948
|
+
] });
|
|
2949
|
+
};
|
|
2950
|
+
|
|
2951
|
+
// .generated/ui/loading/swirling-spinner.tsx
|
|
2952
|
+
import { motion as motion128 } from "framer-motion";
|
|
2953
|
+
import { jsx as jsx130, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
2954
|
+
var SwirlingSpinner = () => {
|
|
2955
|
+
return /* @__PURE__ */ jsxs51("div", { className: "relative w-10 h-10 flex items-center justify-center", children: [
|
|
2956
|
+
/* @__PURE__ */ jsx130(
|
|
2957
|
+
motion128.div,
|
|
2958
|
+
{
|
|
2959
|
+
className: "absolute inset-0 border-[2.5px] border-t-zinc-800 dark:border-t-white border-r-zinc-800/30 dark:border-r-white/30 border-b-zinc-800/10 dark:border-b-white/10 border-l-transparent rounded-full",
|
|
2960
|
+
animate: { rotate: 360 },
|
|
2961
|
+
transition: { duration: 1.3, repeat: Infinity, ease: "linear" }
|
|
2962
|
+
}
|
|
2963
|
+
),
|
|
2964
|
+
/* @__PURE__ */ jsx130(
|
|
2965
|
+
motion128.div,
|
|
2966
|
+
{
|
|
2967
|
+
className: "absolute w-6 h-6 border-[2.5px] border-b-zinc-800 dark:border-b-white border-t-zinc-800/30 dark:border-t-white/30 border-r-zinc-800/10 dark:border-r-white/10 border-l-transparent rounded-full",
|
|
2968
|
+
animate: { rotate: -360 },
|
|
2969
|
+
transition: { duration: 0.9, repeat: Infinity, ease: "linear" }
|
|
2970
|
+
}
|
|
2971
|
+
)
|
|
2972
|
+
] });
|
|
2973
|
+
};
|
|
2974
|
+
|
|
2975
|
+
// .generated/ui/loading/symmetric-wave.tsx
|
|
2976
|
+
import { motion as motion129 } from "framer-motion";
|
|
2977
|
+
import { jsx as jsx131 } from "react/jsx-runtime";
|
|
2978
|
+
var SymmetricWave = () => {
|
|
2979
|
+
return /* @__PURE__ */ jsx131("div", { className: "flex space-x-1.5 h-10 items-center", children: [0, 1, 2, 3, 4, 3, 2, 1, 0].map((val, i) => /* @__PURE__ */ jsx131(
|
|
2980
|
+
motion129.div,
|
|
2981
|
+
{
|
|
2982
|
+
className: "w-1.5 bg-zinc-800 dark:bg-white rounded-full",
|
|
2983
|
+
animate: { height: [8, 24, 8] },
|
|
2984
|
+
transition: { duration: 1.2, repeat: Infinity, delay: val * 0.1, ease: "easeInOut" }
|
|
2985
|
+
},
|
|
2986
|
+
i
|
|
2987
|
+
)) });
|
|
2988
|
+
};
|
|
2989
|
+
|
|
2990
|
+
// .generated/ui/loading/terminal-loader.tsx
|
|
2991
|
+
import { motion as motion130 } from "framer-motion";
|
|
2992
|
+
import { jsx as jsx132, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
2993
|
+
var TerminalLoader = () => {
|
|
2994
|
+
return /* @__PURE__ */ jsxs52("div", { className: "bg-zinc-900 dark:bg-white text-zinc-100 font-mono text-[10px] p-3 rounded-md w-full h-16 flex flex-col justify-end overflow-hidden shadow-sm", children: [
|
|
2995
|
+
/* @__PURE__ */ jsxs52("div", { className: "flex text-zinc-500 dark:text-zinc-300 mb-1 leading-none", children: [
|
|
2996
|
+
/* @__PURE__ */ jsx132("span", { children: "$" }),
|
|
2997
|
+
/* @__PURE__ */ jsx132("span", { className: "ml-2", children: "loading..." })
|
|
2998
|
+
] }),
|
|
2999
|
+
/* @__PURE__ */ jsxs52("div", { className: "flex items-center leading-none", children: [
|
|
3000
|
+
/* @__PURE__ */ jsx132("span", { className: "text-emerald-400", children: ">" }),
|
|
3001
|
+
/* @__PURE__ */ jsx132(
|
|
3002
|
+
motion130.span,
|
|
3003
|
+
{
|
|
3004
|
+
className: "ml-2 w-1.5 h-2.5 bg-zinc-100 dark:bg-zinc-800 block",
|
|
3005
|
+
animate: { opacity: [1, 0, 1] },
|
|
3006
|
+
transition: { duration: 0.8, repeat: Infinity, ease: "linear" }
|
|
3007
|
+
}
|
|
3008
|
+
)
|
|
3009
|
+
] })
|
|
3010
|
+
] });
|
|
3011
|
+
};
|
|
3012
|
+
|
|
3013
|
+
// .generated/ui/loading/text-blink.tsx
|
|
3014
|
+
import { motion as motion131 } from "framer-motion";
|
|
3015
|
+
import { jsx as jsx133 } from "react/jsx-runtime";
|
|
3016
|
+
var TextBlink = () => {
|
|
3017
|
+
return /* @__PURE__ */ jsx133(
|
|
3018
|
+
motion131.div,
|
|
3019
|
+
{
|
|
3020
|
+
className: "text-zinc-900 dark:text-white font-medium text-lg",
|
|
3021
|
+
animate: { opacity: [1, 0.2, 1] },
|
|
3022
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut" },
|
|
3023
|
+
children: "Thinking"
|
|
3024
|
+
}
|
|
3025
|
+
);
|
|
3026
|
+
};
|
|
3027
|
+
|
|
3028
|
+
// .generated/ui/loading/text-dots.tsx
|
|
3029
|
+
import { motion as motion132 } from "framer-motion";
|
|
3030
|
+
import { jsx as jsx134, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
3031
|
+
var TextDots = () => {
|
|
3032
|
+
return /* @__PURE__ */ jsxs53("div", { className: "font-medium text-lg text-zinc-900 dark:text-white flex w-24", children: [
|
|
3033
|
+
/* @__PURE__ */ jsx134("span", { children: "Thinking" }),
|
|
3034
|
+
/* @__PURE__ */ jsxs53("span", { className: "flex w-6 pl-0.5", children: [
|
|
3035
|
+
/* @__PURE__ */ jsx134(motion132.span, { animate: { opacity: [0, 1, 1, 0] }, transition: { duration: 2, repeat: Infinity, times: [0, 0.2, 0.8, 1] }, children: "." }),
|
|
3036
|
+
/* @__PURE__ */ jsx134(motion132.span, { animate: { opacity: [0, 0, 1, 0] }, transition: { duration: 2, repeat: Infinity, times: [0, 0.4, 0.8, 1] }, children: "." }),
|
|
3037
|
+
/* @__PURE__ */ jsx134(motion132.span, { animate: { opacity: [0, 0, 1, 0] }, transition: { duration: 2, repeat: Infinity, times: [0, 0.6, 0.8, 1] }, children: "." })
|
|
3038
|
+
] })
|
|
3039
|
+
] });
|
|
3040
|
+
};
|
|
3041
|
+
|
|
3042
|
+
// .generated/ui/loading/text-morph.tsx
|
|
3043
|
+
import { motion as motion133 } from "framer-motion";
|
|
3044
|
+
import { jsx as jsx135, jsxs as jsxs54 } from "react/jsx-runtime";
|
|
3045
|
+
var TextMorph = () => /* @__PURE__ */ jsxs54("div", { className: "relative h-6 w-24 flex items-center justify-center font-medium text-sm text-zinc-900 dark:text-white overflow-hidden", children: [
|
|
3046
|
+
/* @__PURE__ */ jsx135(
|
|
3047
|
+
motion133.div,
|
|
3048
|
+
{
|
|
3049
|
+
className: "absolute",
|
|
3050
|
+
animate: { opacity: [1, 0, 0, 1], y: [0, -16, 16, 0] },
|
|
3051
|
+
transition: { duration: 3, repeat: Infinity, ease: "easeInOut" },
|
|
3052
|
+
children: "Loading"
|
|
3053
|
+
}
|
|
3054
|
+
),
|
|
3055
|
+
/* @__PURE__ */ jsx135(
|
|
3056
|
+
motion133.div,
|
|
3057
|
+
{
|
|
3058
|
+
className: "absolute",
|
|
3059
|
+
animate: { opacity: [0, 1, 1, 0], y: [16, 0, 0, -16] },
|
|
3060
|
+
transition: { duration: 3, repeat: Infinity, ease: "easeInOut" },
|
|
3061
|
+
children: "Wait"
|
|
3062
|
+
}
|
|
3063
|
+
)
|
|
3064
|
+
] });
|
|
3065
|
+
|
|
3066
|
+
// .generated/ui/loading/text-shimmer-wave.tsx
|
|
3067
|
+
import { motion as motion134 } from "framer-motion";
|
|
3068
|
+
import { jsx as jsx136 } from "react/jsx-runtime";
|
|
3069
|
+
var TextShimmerWave = () => {
|
|
3070
|
+
const text = "Thinking";
|
|
3071
|
+
return /* @__PURE__ */ jsx136("div", { className: "flex font-medium text-lg", children: text.split("").map((char, i) => /* @__PURE__ */ jsx136(
|
|
3072
|
+
motion134.span,
|
|
3073
|
+
{
|
|
3074
|
+
className: "text-zinc-900 dark:text-white",
|
|
3075
|
+
animate: { opacity: [0.3, 1, 0.3], y: [0, -2, 0] },
|
|
3076
|
+
transition: { duration: 1.5, repeat: Infinity, delay: i * 0.1, ease: "easeInOut" },
|
|
3077
|
+
children: char
|
|
3078
|
+
},
|
|
3079
|
+
i
|
|
3080
|
+
)) });
|
|
3081
|
+
};
|
|
3082
|
+
|
|
3083
|
+
// .generated/ui/loading/text-shimmer.tsx
|
|
3084
|
+
import { motion as motion135 } from "framer-motion";
|
|
3085
|
+
import { jsx as jsx137, jsxs as jsxs55 } from "react/jsx-runtime";
|
|
3086
|
+
var TextShimmer = () => {
|
|
3087
|
+
return /* @__PURE__ */ jsxs55("div", { className: "relative text-zinc-200 font-medium text-lg", children: [
|
|
3088
|
+
"Thinking",
|
|
3089
|
+
/* @__PURE__ */ jsx137(
|
|
3090
|
+
motion135.div,
|
|
3091
|
+
{
|
|
3092
|
+
className: "absolute inset-0 text-zinc-900 dark:text-white",
|
|
3093
|
+
style: { maskImage: "linear-gradient(90deg, transparent 0%, black 50%, transparent 100%)", maskSize: "200% 100%" },
|
|
3094
|
+
animate: { maskPosition: ["100% 0%", "-100% 0%"] },
|
|
3095
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "linear" },
|
|
3096
|
+
children: "Thinking"
|
|
3097
|
+
}
|
|
3098
|
+
)
|
|
3099
|
+
] });
|
|
3100
|
+
};
|
|
3101
|
+
|
|
3102
|
+
// .generated/ui/loading/trailing-dots.tsx
|
|
3103
|
+
import { motion as motion136 } from "framer-motion";
|
|
3104
|
+
import { jsx as jsx138 } from "react/jsx-runtime";
|
|
3105
|
+
var TrailingDots = () => /* @__PURE__ */ jsx138("div", { className: "relative w-10 h-10", children: [0, 1, 2, 3, 4].map((i) => /* @__PURE__ */ jsx138(
|
|
3106
|
+
motion136.div,
|
|
3107
|
+
{
|
|
3108
|
+
className: "absolute inset-0",
|
|
3109
|
+
animate: { rotate: 360 },
|
|
3110
|
+
transition: { duration: 1.5, repeat: Infinity, delay: i * 0.1, ease: "easeInOut" },
|
|
3111
|
+
children: /* @__PURE__ */ jsx138("div", { className: `w-2 h-2 rounded-full absolute top-0 left-1/2 -ml-1 ${i === 0 ? "bg-zinc-800 dark:bg-white" : "bg-zinc-400 dark:bg-zinc-200"}`, style: { opacity: 1 - i * 0.2 } })
|
|
3112
|
+
},
|
|
3113
|
+
i
|
|
3114
|
+
)) });
|
|
3115
|
+
|
|
3116
|
+
// .generated/ui/loading/triple-dot-spinner.tsx
|
|
3117
|
+
import { motion as motion137 } from "framer-motion";
|
|
3118
|
+
import { jsx as jsx139 } from "react/jsx-runtime";
|
|
3119
|
+
var TripleDotSpinner = () => {
|
|
3120
|
+
return /* @__PURE__ */ jsx139(
|
|
3121
|
+
motion137.div,
|
|
3122
|
+
{
|
|
3123
|
+
className: "relative w-10 h-10",
|
|
3124
|
+
animate: { rotate: 360 },
|
|
3125
|
+
transition: { duration: 2, repeat: Infinity, ease: "linear" },
|
|
3126
|
+
children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx139(
|
|
3127
|
+
"div",
|
|
3128
|
+
{
|
|
3129
|
+
className: "absolute top-0 left-1/2 w-2 h-2 bg-zinc-800 dark:bg-white rounded-full -ml-1 origin-[4px_20px]",
|
|
3130
|
+
style: { transform: `rotate(${i * 120}deg)` }
|
|
3131
|
+
},
|
|
3132
|
+
i
|
|
3133
|
+
))
|
|
3134
|
+
}
|
|
3135
|
+
);
|
|
3136
|
+
};
|
|
3137
|
+
|
|
3138
|
+
// .generated/ui/loading/twin-orbit.tsx
|
|
3139
|
+
import { motion as motion138 } from "framer-motion";
|
|
3140
|
+
import { jsx as jsx140, jsxs as jsxs56 } from "react/jsx-runtime";
|
|
3141
|
+
var TwinOrbit = () => {
|
|
3142
|
+
return /* @__PURE__ */ jsxs56("div", { className: "relative w-12 h-12", children: [
|
|
3143
|
+
/* @__PURE__ */ jsx140(
|
|
3144
|
+
motion138.div,
|
|
3145
|
+
{
|
|
3146
|
+
className: "absolute inset-0 border-2 border-zinc-800 dark:border-zinc-700 rounded-full border-b-transparent border-r-transparent",
|
|
3147
|
+
animate: { rotate: 360 },
|
|
3148
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "linear" }
|
|
3149
|
+
}
|
|
3150
|
+
),
|
|
3151
|
+
/* @__PURE__ */ jsx140(
|
|
3152
|
+
motion138.div,
|
|
3153
|
+
{
|
|
3154
|
+
className: "absolute inset-2 border-2 border-zinc-400 rounded-full border-t-transparent border-l-transparent",
|
|
3155
|
+
animate: { rotate: -360 },
|
|
3156
|
+
transition: { duration: 1.5, repeat: Infinity, ease: "linear" }
|
|
3157
|
+
}
|
|
3158
|
+
)
|
|
3159
|
+
] });
|
|
3160
|
+
};
|
|
3161
|
+
|
|
3162
|
+
// .generated/ui/loading/typing-indicator.tsx
|
|
3163
|
+
import { motion as motion139 } from "framer-motion";
|
|
3164
|
+
import { jsx as jsx141 } from "react/jsx-runtime";
|
|
3165
|
+
var TypingIndicator = () => {
|
|
3166
|
+
return /* @__PURE__ */ jsx141("div", { className: "flex items-center justify-center px-4 py-2 bg-zinc-100 dark:bg-zinc-800 rounded-full space-x-1", children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx141(
|
|
3167
|
+
motion139.div,
|
|
3168
|
+
{
|
|
3169
|
+
className: "w-1.5 h-1.5 bg-zinc-500 dark:bg-zinc-350 rounded-full",
|
|
3170
|
+
animate: { y: [0, -4, 0] },
|
|
3171
|
+
transition: { duration: 0.6, repeat: Infinity, delay: i * 0.15, ease: "easeInOut" }
|
|
3172
|
+
},
|
|
3173
|
+
i
|
|
3174
|
+
)) });
|
|
3175
|
+
};
|
|
3176
|
+
|
|
3177
|
+
// .generated/ui/loading/typing.tsx
|
|
3178
|
+
import { motion as motion140 } from "framer-motion";
|
|
3179
|
+
import { jsx as jsx142, jsxs as jsxs57 } from "react/jsx-runtime";
|
|
3180
|
+
var Typing = () => {
|
|
3181
|
+
return /* @__PURE__ */ jsxs57("div", { className: "flex items-center text-zinc-900 dark:text-white font-medium text-lg w-20", children: [
|
|
3182
|
+
"Loading",
|
|
3183
|
+
/* @__PURE__ */ jsx142(
|
|
3184
|
+
motion140.span,
|
|
3185
|
+
{
|
|
3186
|
+
className: "w-1.5 h-4 bg-zinc-900 dark:bg-white ml-1 inline-block",
|
|
3187
|
+
animate: { opacity: [1, 0, 1] },
|
|
3188
|
+
transition: { duration: 0.8, repeat: Infinity, ease: "linear" }
|
|
3189
|
+
}
|
|
3190
|
+
)
|
|
3191
|
+
] });
|
|
3192
|
+
};
|
|
3193
|
+
|
|
3194
|
+
// .generated/ui/loading/wandering-cube.tsx
|
|
3195
|
+
import { motion as motion141 } from "framer-motion";
|
|
3196
|
+
import { jsx as jsx143 } from "react/jsx-runtime";
|
|
3197
|
+
var WanderingCube = () => {
|
|
3198
|
+
return /* @__PURE__ */ jsx143("div", { className: "relative w-10 h-10", children: /* @__PURE__ */ jsx143(
|
|
3199
|
+
motion141.div,
|
|
3200
|
+
{
|
|
3201
|
+
className: "absolute top-0 left-0 w-4 h-4 bg-zinc-800 dark:bg-white rounded-sm",
|
|
3202
|
+
animate: {
|
|
3203
|
+
x: [0, 24, 24, 0, 0],
|
|
3204
|
+
y: [0, 0, 24, 24, 0],
|
|
3205
|
+
rotate: [0, -90, -180, -270, -360]
|
|
3206
|
+
},
|
|
3207
|
+
transition: { duration: 2.5, repeat: Infinity, ease: "easeInOut" }
|
|
3208
|
+
}
|
|
3209
|
+
) });
|
|
3210
|
+
};
|
|
3211
|
+
|
|
3212
|
+
// .generated/ui/loading/watch-spinner.tsx
|
|
3213
|
+
import { motion as motion142 } from "framer-motion";
|
|
3214
|
+
import { jsx as jsx144 } from "react/jsx-runtime";
|
|
3215
|
+
var WatchSpinner = () => /* @__PURE__ */ jsx144("div", { className: "relative w-12 h-12 flex items-center justify-center", children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx144(
|
|
3216
|
+
motion142.div,
|
|
3217
|
+
{
|
|
3218
|
+
className: "absolute rounded-full border-[3px] border-transparent border-t-zinc-800 dark:border-t-white",
|
|
3219
|
+
style: { width: 44 - i * 12, height: 44 - i * 12 },
|
|
3220
|
+
animate: { rotate: 360 },
|
|
3221
|
+
transition: { duration: 1 + i * 0.5, repeat: Infinity, ease: "easeInOut" }
|
|
3222
|
+
},
|
|
3223
|
+
i
|
|
3224
|
+
)) });
|
|
3225
|
+
|
|
3226
|
+
// .generated/ui/loading/wave-dots.tsx
|
|
3227
|
+
import { motion as motion143 } from "framer-motion";
|
|
3228
|
+
import { jsx as jsx145 } from "react/jsx-runtime";
|
|
3229
|
+
var WaveDots = () => {
|
|
3230
|
+
return /* @__PURE__ */ jsx145("div", { className: "flex space-x-1.5 h-6 items-center", children: [0, 1, 2, 3, 4].map((i) => /* @__PURE__ */ jsx145(
|
|
3231
|
+
motion143.div,
|
|
3232
|
+
{
|
|
3233
|
+
className: "w-2 h-2 bg-zinc-800 dark:bg-white rounded-full",
|
|
3234
|
+
animate: { y: [4, -4, 4] },
|
|
3235
|
+
transition: { duration: 1, repeat: Infinity, delay: i * 0.15, ease: "easeInOut" }
|
|
3236
|
+
},
|
|
3237
|
+
i
|
|
3238
|
+
)) });
|
|
3239
|
+
};
|
|
3240
|
+
|
|
3241
|
+
// .generated/ui/loading/wave-physics-loader.tsx
|
|
3242
|
+
import { motion as motion144 } from "framer-motion";
|
|
3243
|
+
import { useMemo as useMemo2 } from "react";
|
|
3244
|
+
import { jsx as jsx146, jsxs as jsxs58 } from "react/jsx-runtime";
|
|
3245
|
+
function WavePhysicsLoader({ theme = "light" }) {
|
|
3246
|
+
const numBars = 15;
|
|
3247
|
+
const barWidth = 12;
|
|
3248
|
+
const barGap = 8;
|
|
3249
|
+
const barTotalWidth = barWidth + barGap;
|
|
3250
|
+
const numFrames = 201;
|
|
3251
|
+
const B = 4;
|
|
3252
|
+
const maxBounce = 60;
|
|
3253
|
+
const baseBarH = 16;
|
|
3254
|
+
const wavePeakH = 48;
|
|
3255
|
+
const { bars, ballX, ballY, ballScaleX, ballScaleY, times } = useMemo2(() => {
|
|
3256
|
+
const barsData = Array.from({ length: numBars }).map(() => ({
|
|
3257
|
+
heights: [],
|
|
3258
|
+
colors: []
|
|
3259
|
+
}));
|
|
3260
|
+
const bX = [];
|
|
3261
|
+
const bY = [];
|
|
3262
|
+
const bScaleX = [];
|
|
3263
|
+
const bScaleY = [];
|
|
3264
|
+
const tArr = [];
|
|
3265
|
+
for (let k = 0; k < numFrames; k++) {
|
|
3266
|
+
const t = k / (numFrames - 1);
|
|
3267
|
+
tArr.push(t);
|
|
3268
|
+
const x_frac = t < 0.5 ? t / 0.5 : (1 - t) / 0.5;
|
|
3269
|
+
const ball_idx = x_frac * (numBars - 1);
|
|
3270
|
+
bX.push(`${ball_idx * barTotalWidth}px`);
|
|
3271
|
+
let bounce_f = x_frac * B % 1;
|
|
3272
|
+
if (x_frac === 1 || x_frac === 0) bounce_f = 0;
|
|
3273
|
+
const bounce_h = 4 * bounce_f * (1 - bounce_f);
|
|
3274
|
+
const height_factor = Math.max(0, 1 - bounce_h * 2);
|
|
3275
|
+
const ball_indent = height_factor * 20;
|
|
3276
|
+
const ball_y = baseBarH + wavePeakH - ball_indent + bounce_h * maxBounce;
|
|
3277
|
+
bY.push(`-${ball_y}px`);
|
|
3278
|
+
const squish = height_factor;
|
|
3279
|
+
bScaleY.push(1 - squish * 0.3);
|
|
3280
|
+
bScaleX.push(1 + squish * 0.25);
|
|
3281
|
+
for (let i = 0; i < numBars; i++) {
|
|
3282
|
+
const dist = Math.abs(i - ball_idx);
|
|
3283
|
+
let wave_val = 0;
|
|
3284
|
+
if (dist < 3) {
|
|
3285
|
+
wave_val = Math.cos(dist / 3 * (Math.PI / 2));
|
|
3286
|
+
}
|
|
3287
|
+
let indent = 0;
|
|
3288
|
+
if (dist < 1.5) {
|
|
3289
|
+
const indent_dist = Math.cos(dist / 1.5 * (Math.PI / 2));
|
|
3290
|
+
indent = indent_dist * height_factor * 20;
|
|
3291
|
+
}
|
|
3292
|
+
const bar_h = baseBarH + wave_val * wavePeakH - indent;
|
|
3293
|
+
barsData[i].heights.push(`${Math.max(4, bar_h)}px`);
|
|
3294
|
+
const isDark = theme === "dark";
|
|
3295
|
+
let r, g, b;
|
|
3296
|
+
if (isDark) {
|
|
3297
|
+
r = Math.round(39 + wave_val * (228 - 39));
|
|
3298
|
+
g = Math.round(39 + wave_val * (228 - 39));
|
|
3299
|
+
b = Math.round(42 + wave_val * (231 - 42));
|
|
3300
|
+
} else {
|
|
3301
|
+
r = Math.round(228 - wave_val * (228 - 39));
|
|
3302
|
+
g = Math.round(228 - wave_val * (228 - 39));
|
|
3303
|
+
b = Math.round(231 - wave_val * (231 - 42));
|
|
3304
|
+
}
|
|
3305
|
+
barsData[i].colors.push(`rgb(${r}, ${g}, ${b})`);
|
|
3306
|
+
}
|
|
3307
|
+
}
|
|
3308
|
+
return { bars: barsData, ballX: bX, ballY: bY, ballScaleX: bScaleX, ballScaleY: bScaleY, times: tArr };
|
|
3309
|
+
}, [theme]);
|
|
3310
|
+
return /* @__PURE__ */ jsx146("div", { className: "relative flex flex-col items-center justify-center w-full scale-[0.6] sm:scale-75 md:scale-100", children: /* @__PURE__ */ jsxs58("div", { className: "relative flex items-end justify-start h-48 space-x-2 w-[292px]", children: [
|
|
3311
|
+
bars.map((bar, i) => /* @__PURE__ */ jsx146(
|
|
3312
|
+
motion144.div,
|
|
3313
|
+
{
|
|
3314
|
+
className: "w-3 rounded-full origin-bottom",
|
|
3315
|
+
style: { height: "16px", backgroundColor: theme === "dark" ? "rgb(39, 39, 42)" : "rgb(228, 228, 231)" },
|
|
3316
|
+
animate: {
|
|
3317
|
+
height: bar.heights,
|
|
3318
|
+
backgroundColor: bar.colors
|
|
3319
|
+
},
|
|
3320
|
+
transition: {
|
|
3321
|
+
duration: 4,
|
|
3322
|
+
repeat: Infinity,
|
|
3323
|
+
times,
|
|
3324
|
+
ease: "linear"
|
|
3325
|
+
}
|
|
3326
|
+
},
|
|
3327
|
+
i
|
|
3328
|
+
)),
|
|
3329
|
+
/* @__PURE__ */ jsx146(
|
|
3330
|
+
motion144.div,
|
|
3331
|
+
{
|
|
3332
|
+
className: "absolute w-3 h-3 bg-zinc-900 dark:bg-white rounded-full z-10 shadow-sm",
|
|
3333
|
+
style: { bottom: 0, left: 0, transformOrigin: "bottom center" },
|
|
3334
|
+
animate: {
|
|
3335
|
+
x: ballX,
|
|
3336
|
+
y: ballY,
|
|
3337
|
+
scaleX: ballScaleX,
|
|
3338
|
+
scaleY: ballScaleY
|
|
3339
|
+
},
|
|
3340
|
+
transition: {
|
|
3341
|
+
duration: 4,
|
|
3342
|
+
repeat: Infinity,
|
|
3343
|
+
times,
|
|
3344
|
+
ease: "linear"
|
|
3345
|
+
}
|
|
3346
|
+
}
|
|
3347
|
+
)
|
|
3348
|
+
] }) });
|
|
3349
|
+
}
|
|
3350
|
+
|
|
3351
|
+
// .generated/ui/loading/waveform-loader.tsx
|
|
3352
|
+
import { motion as motion145 } from "framer-motion";
|
|
3353
|
+
import { jsx as jsx147 } from "react/jsx-runtime";
|
|
3354
|
+
var WaveformLoader = () => /* @__PURE__ */ jsx147("div", { className: "flex items-center space-x-0.5 h-8", children: Array.from({ length: 8 }).map((_, i) => /* @__PURE__ */ jsx147(
|
|
3355
|
+
motion145.div,
|
|
3356
|
+
{
|
|
3357
|
+
className: "w-1 bg-zinc-800 dark:bg-white rounded-full",
|
|
3358
|
+
animate: { height: [4, 24, 4] },
|
|
3359
|
+
transition: { duration: 1, repeat: Infinity, delay: Math.sin(i) * 0.5, ease: "easeInOut" }
|
|
3360
|
+
},
|
|
3361
|
+
i
|
|
3362
|
+
)) });
|
|
3363
|
+
|
|
3364
|
+
// .generated/ui/loading/zig-zag-pulse.tsx
|
|
3365
|
+
import { motion as motion146 } from "framer-motion";
|
|
3366
|
+
import { jsx as jsx148 } from "react/jsx-runtime";
|
|
3367
|
+
var ZigZagPulse = () => {
|
|
3368
|
+
return /* @__PURE__ */ jsx148("div", { className: "grid grid-cols-3 gap-2 w-12 h-12", children: [
|
|
3369
|
+
[0, 0],
|
|
3370
|
+
[1, 1],
|
|
3371
|
+
[2, 0],
|
|
3372
|
+
[0, 2],
|
|
3373
|
+
[1, 1],
|
|
3374
|
+
[2, 2]
|
|
3375
|
+
].map(([col, row], i) => /* @__PURE__ */ jsx148(
|
|
3376
|
+
motion146.div,
|
|
3377
|
+
{
|
|
3378
|
+
className: "w-2.5 h-2.5 bg-zinc-800 dark:bg-white rounded-full",
|
|
3379
|
+
style: { gridColumn: col + 1, gridRow: row + 1 },
|
|
3380
|
+
animate: { opacity: [0.2, 1, 0.2] },
|
|
3381
|
+
transition: { duration: 1.2, repeat: Infinity, delay: i * 0.1, ease: "easeInOut" }
|
|
3382
|
+
},
|
|
3383
|
+
i
|
|
3384
|
+
)) });
|
|
3385
|
+
};
|
|
3386
|
+
|
|
3387
|
+
// .generated/ui/scroll/progress-indicator.tsx
|
|
3388
|
+
import { motion as motion147, useScroll, useSpring as useSpring5 } from "framer-motion";
|
|
3389
|
+
import { jsx as jsx149 } from "react/jsx-runtime";
|
|
3390
|
+
function ProgressIndicator({
|
|
3391
|
+
color = "bg-blue-500",
|
|
3392
|
+
height = 4,
|
|
3393
|
+
className = ""
|
|
3394
|
+
}) {
|
|
3395
|
+
const { scrollYProgress } = useScroll();
|
|
3396
|
+
const scaleX = useSpring5(scrollYProgress, {
|
|
3397
|
+
stiffness: 100,
|
|
3398
|
+
damping: 30,
|
|
3399
|
+
restDelta: 1e-3
|
|
3400
|
+
});
|
|
3401
|
+
return /* @__PURE__ */ jsx149(
|
|
3402
|
+
motion147.div,
|
|
3403
|
+
{
|
|
3404
|
+
className: `fixed top-0 left-0 right-0 origin-left z-[9999] ${color} ${className}`,
|
|
3405
|
+
style: {
|
|
3406
|
+
scaleX,
|
|
3407
|
+
height,
|
|
3408
|
+
position: "fixed",
|
|
3409
|
+
top: 0,
|
|
3410
|
+
left: 0,
|
|
3411
|
+
right: 0,
|
|
3412
|
+
originX: 0,
|
|
3413
|
+
zIndex: 9999
|
|
3414
|
+
}
|
|
3415
|
+
}
|
|
3416
|
+
);
|
|
3417
|
+
}
|
|
3418
|
+
|
|
3419
|
+
// .generated/ui/scroll/scroll-reveal.tsx
|
|
3420
|
+
import { motion as motion148 } from "framer-motion";
|
|
3421
|
+
import { jsx as jsx150 } from "react/jsx-runtime";
|
|
3422
|
+
function ScrollReveal({
|
|
3423
|
+
children,
|
|
3424
|
+
duration = 0.6,
|
|
3425
|
+
yOffset = 30,
|
|
3426
|
+
xOffset = 0,
|
|
3427
|
+
scale = 0.95,
|
|
3428
|
+
className = ""
|
|
3429
|
+
}) {
|
|
3430
|
+
return /* @__PURE__ */ jsx150(
|
|
3431
|
+
motion148.div,
|
|
3432
|
+
{
|
|
3433
|
+
initial: { opacity: 0, y: yOffset, x: xOffset, scale },
|
|
3434
|
+
whileInView: { opacity: 1, y: 0, x: 0, scale: 1 },
|
|
3435
|
+
viewport: { once: true, margin: "-15%" },
|
|
3436
|
+
transition: {
|
|
3437
|
+
duration,
|
|
3438
|
+
ease: [0.16, 1, 0.3, 1]
|
|
3439
|
+
// easeOutExpo
|
|
3440
|
+
},
|
|
3441
|
+
className,
|
|
3442
|
+
children
|
|
3443
|
+
}
|
|
3444
|
+
);
|
|
3445
|
+
}
|
|
3446
|
+
|
|
3447
|
+
// .generated/ui/scroll/sticky-reveal.tsx
|
|
3448
|
+
import { useRef as useRef5, useState as useState11 } from "react";
|
|
3449
|
+
import { motion as motion149, useMotionValueEvent, useScroll as useScroll2 } from "framer-motion";
|
|
3450
|
+
import { jsx as jsx151, jsxs as jsxs59 } from "react/jsx-runtime";
|
|
3451
|
+
function StickyReveal({
|
|
3452
|
+
content,
|
|
3453
|
+
className = ""
|
|
3454
|
+
}) {
|
|
3455
|
+
const [activeCard, setActiveCard] = useState11(0);
|
|
3456
|
+
const ref = useRef5(null);
|
|
3457
|
+
const { scrollYProgress } = useScroll2({
|
|
3458
|
+
target: ref,
|
|
3459
|
+
offset: ["start start", "end end"]
|
|
3460
|
+
});
|
|
3461
|
+
const cardLength = content.length;
|
|
3462
|
+
useMotionValueEvent(scrollYProgress, "change", (latest) => {
|
|
3463
|
+
const cardsBreakpoints = content.map((_, index) => index / cardLength);
|
|
3464
|
+
const closestIndex = cardsBreakpoints.reduce((acc, val, index) => {
|
|
3465
|
+
if (latest >= val) {
|
|
3466
|
+
return index;
|
|
3467
|
+
}
|
|
3468
|
+
return acc;
|
|
3469
|
+
}, 0);
|
|
3470
|
+
setActiveCard(closestIndex);
|
|
3471
|
+
});
|
|
3472
|
+
return /* @__PURE__ */ jsxs59(
|
|
3473
|
+
"div",
|
|
3474
|
+
{
|
|
3475
|
+
ref,
|
|
3476
|
+
className: `relative flex justify-between gap-10 max-w-5xl mx-auto py-10 px-4 ${className}`,
|
|
3477
|
+
children: [
|
|
3478
|
+
/* @__PURE__ */ jsx151("div", { className: "w-1/2 flex flex-col gap-32 py-10", children: content.map((item, index) => /* @__PURE__ */ jsxs59("div", { className: "min-h-[50vh] flex flex-col justify-center", children: [
|
|
3479
|
+
/* @__PURE__ */ jsx151(
|
|
3480
|
+
motion149.h2,
|
|
3481
|
+
{
|
|
3482
|
+
animate: {
|
|
3483
|
+
opacity: activeCard === index ? 1 : 0.3
|
|
3484
|
+
},
|
|
3485
|
+
className: "text-2xl font-bold mb-4",
|
|
3486
|
+
children: item.title
|
|
3487
|
+
}
|
|
3488
|
+
),
|
|
3489
|
+
/* @__PURE__ */ jsx151(
|
|
3490
|
+
motion149.p,
|
|
3491
|
+
{
|
|
3492
|
+
animate: {
|
|
3493
|
+
opacity: activeCard === index ? 1 : 0.3
|
|
3494
|
+
},
|
|
3495
|
+
className: "text-neutral-500 dark:text-neutral-450 leading-relaxed",
|
|
3496
|
+
children: item.description
|
|
3497
|
+
}
|
|
3498
|
+
)
|
|
3499
|
+
] }, index)) }),
|
|
3500
|
+
/* @__PURE__ */ jsx151("div", { className: "sticky top-20 h-[60vh] w-1/2 rounded-2xl bg-neutral-100 dark:bg-neutral-900 border border-neutral-200/10 overflow-hidden flex items-center justify-center", children: content.map((item, index) => /* @__PURE__ */ jsx151(
|
|
3501
|
+
motion149.div,
|
|
3502
|
+
{
|
|
3503
|
+
initial: { opacity: 0, scale: 0.9 },
|
|
3504
|
+
animate: {
|
|
3505
|
+
opacity: activeCard === index ? 1 : 0,
|
|
3506
|
+
scale: activeCard === index ? 1 : 0.9
|
|
3507
|
+
},
|
|
3508
|
+
transition: { duration: 0.4 },
|
|
3509
|
+
className: "absolute inset-0 p-6 flex items-center justify-center",
|
|
3510
|
+
children: item.content || /* @__PURE__ */ jsxs59("div", { className: "text-lg font-semibold text-neutral-400", children: [
|
|
3511
|
+
"Card ",
|
|
3512
|
+
index + 1,
|
|
3513
|
+
" Visual"
|
|
3514
|
+
] })
|
|
3515
|
+
},
|
|
3516
|
+
index
|
|
3517
|
+
)) })
|
|
3518
|
+
]
|
|
3519
|
+
}
|
|
3520
|
+
);
|
|
3521
|
+
}
|
|
3522
|
+
|
|
3523
|
+
// .generated/ui/text/blur-text.tsx
|
|
3524
|
+
import { motion as motion150 } from "framer-motion";
|
|
3525
|
+
import { jsx as jsx152 } from "react/jsx-runtime";
|
|
3526
|
+
function BlurText({
|
|
3527
|
+
text,
|
|
3528
|
+
duration = 0.5,
|
|
3529
|
+
staggerDelay = 0.02,
|
|
3530
|
+
initialBlur = "8px",
|
|
3531
|
+
className = ""
|
|
3532
|
+
}) {
|
|
3533
|
+
const characters = Array.from(text);
|
|
3534
|
+
const containerVariants = {
|
|
3535
|
+
hidden: { opacity: 0 },
|
|
3536
|
+
visible: {
|
|
3537
|
+
opacity: 1,
|
|
3538
|
+
transition: {
|
|
3539
|
+
staggerChildren: staggerDelay
|
|
3540
|
+
}
|
|
3541
|
+
}
|
|
3542
|
+
};
|
|
3543
|
+
const charVariants = {
|
|
3544
|
+
hidden: { opacity: 0, filter: `blur(${initialBlur})` },
|
|
3545
|
+
visible: {
|
|
3546
|
+
opacity: 1,
|
|
3547
|
+
filter: "blur(0px)",
|
|
3548
|
+
transition: {
|
|
3549
|
+
duration,
|
|
3550
|
+
ease: "easeOut"
|
|
3551
|
+
}
|
|
3552
|
+
}
|
|
3553
|
+
};
|
|
3554
|
+
return /* @__PURE__ */ jsx152(
|
|
3555
|
+
motion150.div,
|
|
3556
|
+
{
|
|
3557
|
+
variants: containerVariants,
|
|
3558
|
+
initial: "hidden",
|
|
3559
|
+
whileInView: "visible",
|
|
3560
|
+
viewport: { once: true, margin: "-10%" },
|
|
3561
|
+
className: `inline-block ${className}`,
|
|
3562
|
+
children: characters.map((char, index) => /* @__PURE__ */ jsx152(
|
|
3563
|
+
motion150.span,
|
|
3564
|
+
{
|
|
3565
|
+
variants: charVariants,
|
|
3566
|
+
className: "inline-block whitespace-pre",
|
|
3567
|
+
children: char
|
|
3568
|
+
},
|
|
3569
|
+
index
|
|
3570
|
+
))
|
|
3571
|
+
}
|
|
3572
|
+
);
|
|
3573
|
+
}
|
|
3574
|
+
|
|
3575
|
+
// .generated/ui/text/character-stagger.tsx
|
|
3576
|
+
import { motion as motion151 } from "framer-motion";
|
|
3577
|
+
import { jsx as jsx153 } from "react/jsx-runtime";
|
|
3578
|
+
function CharacterStagger({
|
|
3579
|
+
text,
|
|
3580
|
+
duration = 0.4,
|
|
3581
|
+
staggerDelay = 0.015,
|
|
3582
|
+
yOffset = 15,
|
|
3583
|
+
className = ""
|
|
3584
|
+
}) {
|
|
3585
|
+
const characters = Array.from(text);
|
|
3586
|
+
const containerVariants = {
|
|
3587
|
+
hidden: { opacity: 0 },
|
|
3588
|
+
visible: {
|
|
3589
|
+
opacity: 1,
|
|
3590
|
+
transition: {
|
|
3591
|
+
staggerChildren: staggerDelay
|
|
3592
|
+
}
|
|
3593
|
+
}
|
|
3594
|
+
};
|
|
3595
|
+
const charVariants = {
|
|
3596
|
+
hidden: { opacity: 0, y: yOffset, scale: 0.8 },
|
|
3597
|
+
visible: {
|
|
3598
|
+
opacity: 1,
|
|
3599
|
+
y: 0,
|
|
3600
|
+
scale: 1,
|
|
3601
|
+
transition: {
|
|
3602
|
+
type: "spring",
|
|
3603
|
+
stiffness: 300,
|
|
3604
|
+
damping: 18,
|
|
3605
|
+
mass: 0.8,
|
|
3606
|
+
duration
|
|
3607
|
+
}
|
|
3608
|
+
}
|
|
3609
|
+
};
|
|
3610
|
+
return /* @__PURE__ */ jsx153(
|
|
3611
|
+
motion151.div,
|
|
3612
|
+
{
|
|
3613
|
+
variants: containerVariants,
|
|
3614
|
+
initial: "hidden",
|
|
3615
|
+
whileInView: "visible",
|
|
3616
|
+
viewport: { once: true, margin: "-10%" },
|
|
3617
|
+
className: `inline-block ${className}`,
|
|
3618
|
+
children: characters.map((char, index) => /* @__PURE__ */ jsx153(
|
|
3619
|
+
motion151.span,
|
|
3620
|
+
{
|
|
3621
|
+
variants: charVariants,
|
|
3622
|
+
className: "inline-block whitespace-pre",
|
|
3623
|
+
children: char
|
|
3624
|
+
},
|
|
3625
|
+
index
|
|
3626
|
+
))
|
|
3627
|
+
}
|
|
3628
|
+
);
|
|
3629
|
+
}
|
|
3630
|
+
|
|
3631
|
+
// .generated/ui/text/text-reveal.tsx
|
|
3632
|
+
import { motion as motion152 } from "framer-motion";
|
|
3633
|
+
import { jsx as jsx154 } from "react/jsx-runtime";
|
|
3634
|
+
function TextReveal({
|
|
3635
|
+
text,
|
|
3636
|
+
duration = 0.8,
|
|
3637
|
+
staggerDelay = 0.15,
|
|
3638
|
+
className = ""
|
|
3639
|
+
}) {
|
|
3640
|
+
const lines = text.split("\n");
|
|
3641
|
+
const containerVariants = {
|
|
3642
|
+
hidden: { opacity: 0 },
|
|
3643
|
+
visible: {
|
|
3644
|
+
opacity: 1,
|
|
3645
|
+
transition: {
|
|
3646
|
+
staggerChildren: staggerDelay
|
|
3647
|
+
}
|
|
3648
|
+
}
|
|
3649
|
+
};
|
|
3650
|
+
const itemVariants = {
|
|
3651
|
+
hidden: { y: "100%" },
|
|
3652
|
+
visible: {
|
|
3653
|
+
y: 0,
|
|
3654
|
+
transition: {
|
|
3655
|
+
duration,
|
|
3656
|
+
ease: [0.16, 1, 0.3, 1]
|
|
3657
|
+
// easeOutExpo
|
|
3658
|
+
}
|
|
3659
|
+
}
|
|
3660
|
+
};
|
|
3661
|
+
return /* @__PURE__ */ jsx154(
|
|
3662
|
+
motion152.div,
|
|
3663
|
+
{
|
|
3664
|
+
variants: containerVariants,
|
|
3665
|
+
initial: "hidden",
|
|
3666
|
+
whileInView: "visible",
|
|
3667
|
+
viewport: { once: true, margin: "-20%" },
|
|
3668
|
+
className: `flex flex-col ${className}`,
|
|
3669
|
+
children: lines.map((line, index) => /* @__PURE__ */ jsx154("div", { className: "overflow-hidden py-1", children: /* @__PURE__ */ jsx154(motion152.span, { variants: itemVariants, className: "block", children: line }) }, index))
|
|
3670
|
+
}
|
|
3671
|
+
);
|
|
3672
|
+
}
|
|
3673
|
+
|
|
3674
|
+
// .generated/ui/text/word-reveal.tsx
|
|
3675
|
+
import { motion as motion153 } from "framer-motion";
|
|
3676
|
+
import { jsx as jsx155 } from "react/jsx-runtime";
|
|
3677
|
+
function WordReveal({
|
|
3678
|
+
text,
|
|
3679
|
+
duration = 0.5,
|
|
3680
|
+
staggerDelay = 0.04,
|
|
3681
|
+
className = ""
|
|
3682
|
+
}) {
|
|
3683
|
+
const words = text.split(/\s+/);
|
|
3684
|
+
const containerVariants = {
|
|
3685
|
+
hidden: { opacity: 0 },
|
|
3686
|
+
visible: {
|
|
3687
|
+
opacity: 1,
|
|
3688
|
+
transition: {
|
|
3689
|
+
staggerChildren: staggerDelay
|
|
3690
|
+
}
|
|
3691
|
+
}
|
|
3692
|
+
};
|
|
3693
|
+
const wordVariants = {
|
|
3694
|
+
hidden: { opacity: 0, y: 15, scale: 0.9 },
|
|
3695
|
+
visible: {
|
|
3696
|
+
opacity: 1,
|
|
3697
|
+
y: 0,
|
|
3698
|
+
scale: 1,
|
|
3699
|
+
transition: {
|
|
3700
|
+
duration,
|
|
3701
|
+
ease: [0.215, 0.61, 0.355, 1]
|
|
3702
|
+
// easeOutCubic
|
|
3703
|
+
}
|
|
3704
|
+
}
|
|
3705
|
+
};
|
|
3706
|
+
return /* @__PURE__ */ jsx155(
|
|
3707
|
+
motion153.div,
|
|
3708
|
+
{
|
|
3709
|
+
variants: containerVariants,
|
|
3710
|
+
initial: "hidden",
|
|
3711
|
+
whileInView: "visible",
|
|
3712
|
+
viewport: { once: true, margin: "-10%" },
|
|
3713
|
+
className: `flex flex-wrap gap-x-2 gap-y-1.5 ${className}`,
|
|
3714
|
+
children: words.map((word, index) => /* @__PURE__ */ jsx155(
|
|
3715
|
+
motion153.span,
|
|
3716
|
+
{
|
|
3717
|
+
variants: wordVariants,
|
|
3718
|
+
className: "inline-block",
|
|
3719
|
+
children: word
|
|
3720
|
+
},
|
|
3721
|
+
index
|
|
3722
|
+
))
|
|
3723
|
+
}
|
|
3724
|
+
);
|
|
3725
|
+
}
|
|
3726
|
+
|
|
3727
|
+
// .generated/ui/toggles/classic-toggle.tsx
|
|
3728
|
+
import { useState as useState12 } from "react";
|
|
3729
|
+
import { motion as motion154 } from "framer-motion";
|
|
3730
|
+
import { jsx as jsx156 } from "react/jsx-runtime";
|
|
3731
|
+
var ClassicToggle = () => {
|
|
3732
|
+
const [isOn, setIsOn] = useState12(false);
|
|
3733
|
+
return /* @__PURE__ */ jsx156(
|
|
3734
|
+
"button",
|
|
3735
|
+
{
|
|
3736
|
+
onClick: () => setIsOn(!isOn),
|
|
3737
|
+
className: `relative w-16 h-9 rounded-full p-1 transition-colors duration-300 cursor-pointer border-0 ${isOn ? "bg-emerald-500" : "bg-neutral-800"}`,
|
|
3738
|
+
children: /* @__PURE__ */ jsx156(
|
|
3739
|
+
motion154.div,
|
|
3740
|
+
{
|
|
3741
|
+
animate: { x: isOn ? 28 : 0 },
|
|
3742
|
+
transition: { type: "spring", stiffness: 500, damping: 30 },
|
|
3743
|
+
className: "w-7 h-7 bg-white rounded-full shadow-md"
|
|
3744
|
+
}
|
|
3745
|
+
)
|
|
3746
|
+
}
|
|
3747
|
+
);
|
|
3748
|
+
};
|
|
3749
|
+
|
|
3750
|
+
// .generated/ui/transitions/page-transition.tsx
|
|
3751
|
+
import { useEffect as useEffect6, useRef as useRef6 } from "react";
|
|
3752
|
+
import { motion as motion155 } from "framer-motion";
|
|
3753
|
+
import { jsx as jsx157, jsxs as jsxs60 } from "react/jsx-runtime";
|
|
3754
|
+
var PageTransition = ({
|
|
3755
|
+
type = "double-stairs",
|
|
3756
|
+
isVisible,
|
|
3757
|
+
onComplete,
|
|
3758
|
+
className = ""
|
|
3759
|
+
}) => {
|
|
3760
|
+
const pathRefs = useRef6([]);
|
|
3761
|
+
useEffect6(() => {
|
|
3762
|
+
if (type !== "liquid-wave" || !isVisible) return;
|
|
3763
|
+
let animId;
|
|
3764
|
+
const numPoints = 12;
|
|
3765
|
+
const numPaths = 3;
|
|
3766
|
+
const startTime = performance.now();
|
|
3767
|
+
const delays = Array.from(
|
|
3768
|
+
{ length: numPaths },
|
|
3769
|
+
(_, i) => Array.from({ length: numPoints }, () => i * 0.08 + Math.random() * 0.15)
|
|
3770
|
+
);
|
|
3771
|
+
const animateFrame = (now) => {
|
|
3772
|
+
const elapsedSec = (now - startTime) / 1e3;
|
|
3773
|
+
pathRefs.current.forEach((path, i) => {
|
|
3774
|
+
if (!path) return;
|
|
3775
|
+
const stepX = 100 / (numPoints - 1);
|
|
3776
|
+
const pointsY = delays[i].map((delay) => {
|
|
3777
|
+
const rawProgress = Math.max(0, Math.min(1, (elapsedSec - delay) / 0.65));
|
|
3778
|
+
const easeProgress = rawProgress < 0.5 ? 2 * rawProgress * rawProgress : 1 - Math.pow(-2 * rawProgress + 2, 2) / 2;
|
|
3779
|
+
return 100 - easeProgress * 110;
|
|
3780
|
+
});
|
|
3781
|
+
let d = `M 0 100 V ${pointsY[0]}`;
|
|
3782
|
+
for (let j = 0; j < numPoints - 1; j++) {
|
|
3783
|
+
const currentX = j * stepX;
|
|
3784
|
+
const nextX = (j + 1) * stepX;
|
|
3785
|
+
const cpX = currentX + stepX * 0.5;
|
|
3786
|
+
d += ` C ${cpX} ${pointsY[j]} ${cpX} ${pointsY[j + 1]} ${nextX} ${pointsY[j + 1]}`;
|
|
3787
|
+
}
|
|
3788
|
+
d += ` V 100 H 0 Z`;
|
|
3789
|
+
path.setAttribute("d", d);
|
|
3790
|
+
});
|
|
3791
|
+
if (now - startTime < 1300) {
|
|
3792
|
+
animId = requestAnimationFrame(animateFrame);
|
|
3793
|
+
} else if (onComplete) {
|
|
3794
|
+
onComplete();
|
|
3795
|
+
}
|
|
3796
|
+
};
|
|
3797
|
+
animId = requestAnimationFrame(animateFrame);
|
|
3798
|
+
return () => cancelAnimationFrame(animId);
|
|
3799
|
+
}, [isVisible, type, onComplete]);
|
|
3800
|
+
if (!isVisible && type !== "liquid-wave") return null;
|
|
3801
|
+
if (type === "double-stairs") {
|
|
3802
|
+
const COLUMNS = 5;
|
|
3803
|
+
const variants = {
|
|
3804
|
+
initial: (i) => ({ y: i % 2 === 0 ? "-100%" : "100%" }),
|
|
3805
|
+
enter: (i) => ({
|
|
3806
|
+
y: "0%",
|
|
3807
|
+
transition: { duration: 0.8, ease: [0.76, 0, 0.24, 1], delay: i * 0.05 }
|
|
3808
|
+
}),
|
|
3809
|
+
exit: (i) => ({
|
|
3810
|
+
y: i % 2 === 0 ? "100%" : "-100%",
|
|
3811
|
+
transition: { duration: 0.8, ease: [0.76, 0, 0.24, 1], delay: i * 0.05 }
|
|
3812
|
+
})
|
|
3813
|
+
};
|
|
3814
|
+
return /* @__PURE__ */ jsx157(
|
|
3815
|
+
motion155.div,
|
|
3816
|
+
{
|
|
3817
|
+
className: `fixed inset-0 z-50 flex h-screen w-screen pointer-events-none ${className}`,
|
|
3818
|
+
initial: "initial",
|
|
3819
|
+
animate: isVisible ? "enter" : "exit",
|
|
3820
|
+
onAnimationComplete: () => {
|
|
3821
|
+
if (onComplete) onComplete();
|
|
3822
|
+
},
|
|
3823
|
+
children: [...Array(COLUMNS)].map((_, i) => /* @__PURE__ */ jsx157(
|
|
3824
|
+
motion155.div,
|
|
3825
|
+
{
|
|
3826
|
+
variants,
|
|
3827
|
+
custom: i,
|
|
3828
|
+
className: "relative h-full flex-1 bg-neutral-900 border-r border-neutral-800 last:border-r-0"
|
|
3829
|
+
},
|
|
3830
|
+
i
|
|
3831
|
+
))
|
|
3832
|
+
}
|
|
3833
|
+
);
|
|
3834
|
+
}
|
|
3835
|
+
if (type === "liquid-wave") {
|
|
3836
|
+
return /* @__PURE__ */ jsxs60(
|
|
3837
|
+
"svg",
|
|
3838
|
+
{
|
|
3839
|
+
className: `fixed inset-0 w-full h-full pointer-events-none z-50 ${className}`,
|
|
3840
|
+
viewBox: "0 0 100 100",
|
|
3841
|
+
preserveAspectRatio: "none",
|
|
3842
|
+
children: [
|
|
3843
|
+
/* @__PURE__ */ jsx157("path", { ref: (el) => {
|
|
3844
|
+
pathRefs.current[0] = el;
|
|
3845
|
+
}, fill: "#3f3f46", style: { opacity: 0.4 } }),
|
|
3846
|
+
/* @__PURE__ */ jsx157("path", { ref: (el) => {
|
|
3847
|
+
pathRefs.current[1] = el;
|
|
3848
|
+
}, fill: "#27272a", style: { opacity: 0.75 } }),
|
|
3849
|
+
/* @__PURE__ */ jsx157("path", { ref: (el) => {
|
|
3850
|
+
pathRefs.current[2] = el;
|
|
3851
|
+
}, fill: "#09090b" })
|
|
3852
|
+
]
|
|
3853
|
+
}
|
|
3854
|
+
);
|
|
3855
|
+
}
|
|
3856
|
+
return /* @__PURE__ */ jsx157(
|
|
3857
|
+
motion155.div,
|
|
3858
|
+
{
|
|
3859
|
+
className: `fixed inset-0 z-50 bg-neutral-900 pointer-events-none ${className}`,
|
|
3860
|
+
initial: { opacity: 0 },
|
|
3861
|
+
animate: isVisible ? { opacity: 1 } : { opacity: 0 },
|
|
3862
|
+
transition: { duration: 0.4 }
|
|
3863
|
+
}
|
|
3864
|
+
);
|
|
3865
|
+
};
|
|
3866
|
+
export {
|
|
3867
|
+
AccordionLoader,
|
|
3868
|
+
AppIconLoad,
|
|
3869
|
+
AppleBreathe,
|
|
3870
|
+
AppleEqualizer,
|
|
3871
|
+
AppleIconMorph,
|
|
3872
|
+
ApplePulseDots,
|
|
3873
|
+
AppleScalePulse,
|
|
3874
|
+
AppleSoundWave,
|
|
3875
|
+
AppleTextReveal,
|
|
3876
|
+
AppleUnlock,
|
|
3877
|
+
ArcTracer,
|
|
3878
|
+
BarCascade,
|
|
3879
|
+
BarSweep,
|
|
3880
|
+
BlurText,
|
|
3881
|
+
BobbingDots,
|
|
3882
|
+
BounceDots,
|
|
3883
|
+
BouncingBars,
|
|
3884
|
+
BouncingDots,
|
|
3885
|
+
BouncingLines,
|
|
3886
|
+
BouncingSquare,
|
|
3887
|
+
BreatheRing,
|
|
3888
|
+
BreathingGlow,
|
|
3889
|
+
BreathingSquare,
|
|
3890
|
+
CardHover,
|
|
3891
|
+
CharacterStagger,
|
|
3892
|
+
CircularBars,
|
|
3893
|
+
ClassicSpinner,
|
|
3894
|
+
ClassicToggle,
|
|
3895
|
+
ClockSpinner,
|
|
3896
|
+
CometSpinner,
|
|
3897
|
+
ConcentricPulse,
|
|
3898
|
+
ConcentricRing,
|
|
3899
|
+
ConcentricSquares,
|
|
3900
|
+
ConveyorLoop,
|
|
3901
|
+
CrossSpinner,
|
|
3902
|
+
CubeFlipSpring,
|
|
3903
|
+
CursorTrail,
|
|
3904
|
+
DashRing,
|
|
3905
|
+
DashedSpiral,
|
|
3906
|
+
DiamondGrid,
|
|
3907
|
+
DiamondRotateSpring,
|
|
3908
|
+
DotSpinner,
|
|
3909
|
+
DotsRing,
|
|
3910
|
+
DoubleRing,
|
|
3911
|
+
DropDot,
|
|
3912
|
+
DualArc,
|
|
3913
|
+
DynamicIsland,
|
|
3914
|
+
ElasticBars,
|
|
3915
|
+
ElasticSquare,
|
|
3916
|
+
ExpandingCross,
|
|
3917
|
+
FaceIDScan,
|
|
3918
|
+
FadeArc,
|
|
3919
|
+
FadeDots,
|
|
3920
|
+
FadeDown,
|
|
3921
|
+
FadeIn,
|
|
3922
|
+
FadeUp,
|
|
3923
|
+
FlipSquare,
|
|
3924
|
+
FloatingDiamonds,
|
|
3925
|
+
FluidBars,
|
|
3926
|
+
FluidDiamond,
|
|
3927
|
+
FluidDotOrbit,
|
|
3928
|
+
FluidSkeleton,
|
|
3929
|
+
Gears,
|
|
3930
|
+
GlassmorphicCard,
|
|
3931
|
+
GlowButton,
|
|
3932
|
+
GradientArc,
|
|
3933
|
+
GridDots,
|
|
3934
|
+
HapticRing,
|
|
3935
|
+
Heartbeat,
|
|
3936
|
+
HexagonSpinner,
|
|
3937
|
+
Hourglass,
|
|
3938
|
+
IOSSpinner,
|
|
3939
|
+
InfinityPath,
|
|
3940
|
+
IntersectingRings,
|
|
3941
|
+
LineSpinner,
|
|
3942
|
+
LiquidDots,
|
|
3943
|
+
MacTerminal,
|
|
3944
|
+
MagneticButton,
|
|
3945
|
+
MagneticDots,
|
|
3946
|
+
MinimalTriangle,
|
|
3947
|
+
MorphDotRing,
|
|
3948
|
+
MorphLoader,
|
|
3949
|
+
MorphingBars,
|
|
3950
|
+
MorphingInfinity,
|
|
3951
|
+
MorphingRing,
|
|
3952
|
+
MorphingShape,
|
|
3953
|
+
MouseFollow,
|
|
3954
|
+
NewtonsCradle,
|
|
3955
|
+
OffsetRings,
|
|
3956
|
+
OrbitingCircles,
|
|
3957
|
+
OrbitingDot,
|
|
3958
|
+
OrigamiShape,
|
|
3959
|
+
PageTransition,
|
|
3960
|
+
Pendulum,
|
|
3961
|
+
ProgressIndicator,
|
|
3962
|
+
PulsatingDots,
|
|
3963
|
+
Pulse,
|
|
3964
|
+
PulseDot,
|
|
3965
|
+
PulseDots,
|
|
3966
|
+
PulseSquare,
|
|
3967
|
+
PumpingHeart,
|
|
3968
|
+
RadarSweep,
|
|
3969
|
+
RingSweep,
|
|
3970
|
+
RippleEffect,
|
|
3971
|
+
RotatingCross,
|
|
3972
|
+
RotatingTriangle,
|
|
3973
|
+
ScaleIn,
|
|
3974
|
+
ScrollReveal,
|
|
3975
|
+
ShapeShiftGrid,
|
|
3976
|
+
ShimmerLine,
|
|
3977
|
+
SiriWave,
|
|
3978
|
+
Skeleton,
|
|
3979
|
+
SkeletonLoader,
|
|
3980
|
+
SlideLeft,
|
|
3981
|
+
SlideRight,
|
|
3982
|
+
SlidingBars,
|
|
3983
|
+
SmoothDotShift,
|
|
3984
|
+
SmoothRing,
|
|
3985
|
+
SmoothRoundedSquare,
|
|
3986
|
+
SpinningSquares,
|
|
3987
|
+
SpiralSpinner,
|
|
3988
|
+
Spotlight,
|
|
3989
|
+
SpringBars,
|
|
3990
|
+
SpringDotMatrix,
|
|
3991
|
+
SpringHexagon,
|
|
3992
|
+
SpringRingExpand,
|
|
3993
|
+
SpringTextPop,
|
|
3994
|
+
SquareAccordion,
|
|
3995
|
+
SquareGrid,
|
|
3996
|
+
SquareSnake,
|
|
3997
|
+
SquareSpinner,
|
|
3998
|
+
StackedBarPulse,
|
|
3999
|
+
StickyReveal,
|
|
4000
|
+
SwappingDots,
|
|
4001
|
+
SwirlingSpinner,
|
|
4002
|
+
SymmetricWave,
|
|
4003
|
+
TerminalLoader,
|
|
4004
|
+
TextBlink,
|
|
4005
|
+
TextDots,
|
|
4006
|
+
TextMorph,
|
|
4007
|
+
TextReveal,
|
|
4008
|
+
TextShimmer,
|
|
4009
|
+
TextShimmerWave,
|
|
4010
|
+
TiltCard,
|
|
4011
|
+
TrailingDots,
|
|
4012
|
+
TripleDotSpinner,
|
|
4013
|
+
TwinOrbit,
|
|
4014
|
+
Typing,
|
|
4015
|
+
TypingIndicator,
|
|
4016
|
+
WanderingCube,
|
|
4017
|
+
WatchSpinner,
|
|
4018
|
+
WaveDots,
|
|
4019
|
+
WavePhysicsLoader,
|
|
4020
|
+
WaveformLoader,
|
|
4021
|
+
WordReveal,
|
|
4022
|
+
ZigZagPulse,
|
|
4023
|
+
ZoomIn,
|
|
4024
|
+
cn,
|
|
4025
|
+
mapRange,
|
|
4026
|
+
presets,
|
|
4027
|
+
useMousePosition,
|
|
4028
|
+
useReducedMotion,
|
|
4029
|
+
useScrollProgress,
|
|
4030
|
+
useStagger,
|
|
4031
|
+
useWebHaptics
|
|
4032
|
+
};
|