@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
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface ScrollRevealProps {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
duration?: number;
|
|
5
|
+
yOffset?: number;
|
|
6
|
+
xOffset?: number;
|
|
7
|
+
scale?: number;
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function ScrollReveal({ children, duration, yOffset, xOffset, scale, className, }: ScrollRevealProps): React.JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface StickyRevealProps {
|
|
3
|
+
content: {
|
|
4
|
+
title: string;
|
|
5
|
+
description: string;
|
|
6
|
+
content?: React.ReactNode;
|
|
7
|
+
}[];
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function StickyReveal({ content, className, }: StickyRevealProps): React.JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface BlurTextProps {
|
|
3
|
+
text: string;
|
|
4
|
+
duration?: number;
|
|
5
|
+
staggerDelay?: number;
|
|
6
|
+
initialBlur?: string;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function BlurText({ text, duration, staggerDelay, initialBlur, className, }: BlurTextProps): React.JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface CharacterStaggerProps {
|
|
3
|
+
text: string;
|
|
4
|
+
duration?: number;
|
|
5
|
+
staggerDelay?: number;
|
|
6
|
+
yOffset?: number;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function CharacterStagger({ text, duration, staggerDelay, yOffset, className, }: CharacterStaggerProps): React.JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface TextRevealProps {
|
|
3
|
+
text: string;
|
|
4
|
+
duration?: number;
|
|
5
|
+
staggerDelay?: number;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function TextReveal({ text, duration, staggerDelay, className, }: TextRevealProps): React.JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface WordRevealProps {
|
|
3
|
+
text: string;
|
|
4
|
+
duration?: number;
|
|
5
|
+
staggerDelay?: number;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function WordReveal({ text, duration, staggerDelay, className, }: WordRevealProps): React.JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type TransitionType = 'double-stairs' | 'shutter-stairs' | 'split-stairs' | 'horizontal-split' | 'vertical-split' | 'slash' | 'lattice' | 'curtain-shred' | 'pixel' | 'pixel-wave' | 'pixel-spiral' | 'vortex' | 'cross-fade' | 'expand-grow' | 'push-slide' | 'pop-over' | 'depth-forward' | 'liquid-wave';
|
|
3
|
+
export interface PageTransitionProps {
|
|
4
|
+
type?: TransitionType;
|
|
5
|
+
isVisible: boolean;
|
|
6
|
+
onComplete?: () => void;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const PageTransition: React.FC<PageTransitionProps>;
|
package/package.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mova-ui/react",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Mova — Make interfaces feel alive. React motion components and an offline source CLI.",
|
|
5
|
+
"private": false,
|
|
6
|
+
"type": "module",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"homepage": "https://mova.zeeland.studio",
|
|
9
|
+
"keywords": ["react", "animation", "motion", "components", "mova"],
|
|
10
|
+
"engines": { "node": ">=20" },
|
|
11
|
+
"publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" },
|
|
12
|
+
"main": "./dist/index.js",
|
|
13
|
+
"module": "./dist/index.js",
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"exports": {
|
|
16
|
+
".": { "types": "./dist/index.d.ts", "import": "./dist/index.js" },
|
|
17
|
+
"./styles.css": "./dist/styles.css",
|
|
18
|
+
"./package.json": "./package.json"
|
|
19
|
+
},
|
|
20
|
+
"bin": { "mova": "./bin/mova.mjs" },
|
|
21
|
+
"files": ["dist/**/*.js", "dist/**/*.d.ts", "dist/styles.css", "bin/mova.mjs", "registry/*.json", "LICENSE", "README.md"],
|
|
22
|
+
"sideEffects": ["**/*.css"],
|
|
23
|
+
"scripts": { "build": "node scripts/build.mjs", "prepack": "npm run build" },
|
|
24
|
+
"peerDependencies": { "react": "^18.2.0 || ^19.0.0", "react-dom": "^18.2.0 || ^19.0.0" },
|
|
25
|
+
"dependencies": { "framer-motion": "^12.23.24", "clsx": "^2.1.1", "tailwind-merge": "^3.3.0" },
|
|
26
|
+
"devDependencies": { "@tailwindcss/cli": "^4.1.14", "tailwindcss": "^4.1.14", "@types/react": "^19.0.0", "@types/react-dom": "^19.0.0", "typescript": "~5.8.2", "esbuild": "^0.25.0", "react": "^19.0.1", "react-dom": "^19.0.1" }
|
|
27
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "accordion-loader",
|
|
3
|
+
"file": "accordion-loader.tsx",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"framer-motion"
|
|
6
|
+
],
|
|
7
|
+
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const AccordionLoader = () => {\n return (\n <div className=\"flex flex-col space-y-1.5 w-10 h-10 justify-center\">\n {[0, 1, 2, 3].map((i) => (\n <motion.div\n key={i}\n className=\"w-full h-1 bg-zinc-800 dark:bg-white rounded-full origin-left\"\n animate={{ scaleX: [1, 0.2, 1] }}\n transition={{ duration: 1.5, repeat: Infinity, ease: \"easeInOut\", delay: i * 0.15 }}\n />\n ))}\n </div>\n );\n};\n"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "app-icon-load",
|
|
3
|
+
"file": "app-icon-load.tsx",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"framer-motion"
|
|
6
|
+
],
|
|
7
|
+
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const AppIconLoad = () => (\n <div className=\"relative w-12 h-12 bg-zinc-200 dark:bg-zinc-800 rounded-[12px] flex items-center justify-center overflow-hidden\">\n <svg className=\"w-8 h-8 absolute\" viewBox=\"0 0 50 50\">\n <circle\n cx=\"25\" cy=\"25\" r=\"20\"\n className=\"stroke-zinc-300 dark:stroke-zinc-700 fill-none\"\n strokeWidth=\"4\"\n />\n <motion.circle\n cx=\"25\" cy=\"25\" r=\"20\"\n className=\"stroke-zinc-800 dark:stroke-white fill-none\"\n strokeWidth=\"4\"\n strokeDasharray=\"125\"\n animate={{ strokeDashoffset: [125, 0] }}\n transition={{ duration: 2, repeat: Infinity, ease: \"easeInOut\" }}\n style={{ rotate: -90, transformOrigin: 'center' }}\n />\n </svg>\n </div>\n);\n"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "apple-breathe",
|
|
3
|
+
"file": "apple-breathe.tsx",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"framer-motion"
|
|
6
|
+
],
|
|
7
|
+
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const AppleBreathe = () => {\n return (\n <div className=\"relative flex items-center justify-center w-12 h-12\">\n {[0, 60, 120, 180, 240, 300].map((angle, idx) => {\n // Alternating color teal-blue palette\n const bgClass = idx % 2 === 0 \n ? 'bg-teal-400/35 dark:bg-teal-400/40' \n : 'bg-cyan-400/35 dark:bg-cyan-400/40';\n return (\n <motion.div\n key={angle}\n className={`absolute w-3.5 h-3.5 rounded-full ${bgClass}`}\n style={{ transformOrigin: 'center' }}\n animate={{\n scale: [1, 1.75, 1],\n x: [0, Math.cos(angle * Math.PI / 180) * 11, 0],\n y: [0, Math.sin(angle * Math.PI / 180) * 11, 0]\n }}\n transition={{\n duration: 3.6,\n repeat: Infinity,\n ease: \"easeInOut\"\n }}\n />\n );\n })}\n </div>\n );\n};\n"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "apple-equalizer",
|
|
3
|
+
"file": "apple-equalizer.tsx",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"framer-motion"
|
|
6
|
+
],
|
|
7
|
+
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const AppleEqualizer = () => (\n <div className=\"flex space-x-1 h-8 items-end\">\n {[0,1,2,3].map(i => (\n <motion.div\n key={i}\n className=\"w-1.5 bg-zinc-800 dark:bg-white rounded-t-sm\"\n animate={{ height: ['20%', '100%', '20%'] }}\n transition={{ duration: 0.8, repeat: Infinity, delay: Math.random() * 0.5, ease: \"circInOut\" }}\n />\n ))}\n </div>\n);\n"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "apple-icon-morph",
|
|
3
|
+
"file": "apple-icon-morph.tsx",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"framer-motion"
|
|
6
|
+
],
|
|
7
|
+
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const AppleIconMorph = () => (\n <motion.div\n className=\"w-8 h-8 bg-zinc-800 dark:bg-white\"\n animate={{\n borderRadius: [\"20%\", \"50%\", \"50%\", \"20%\"],\n rotate: [0, 90, 180, 270]\n }}\n transition={{ duration: 2, repeat: Infinity, ease: \"easeInOut\" }}\n />\n);\n"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "apple-pulse-dots",
|
|
3
|
+
"file": "apple-pulse-dots.tsx",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"framer-motion"
|
|
6
|
+
],
|
|
7
|
+
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const ApplePulseDots = () => (\n <div className=\"flex space-x-2\">\n {[0, 1, 2].map(i => (\n <motion.div\n key={i}\n className=\"w-2.5 h-2.5 bg-zinc-800 dark:bg-white rounded-full\"\n animate={{ scale: [0.5, 1, 0.5], opacity: [0.3, 1, 0.3] }}\n transition={{ duration: 1.2, repeat: Infinity, delay: i * 0.15, ease: \"easeInOut\" }}\n />\n ))}\n </div>\n);\n"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "apple-scale-pulse",
|
|
3
|
+
"file": "apple-scale-pulse.tsx",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"framer-motion"
|
|
6
|
+
],
|
|
7
|
+
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const AppleScalePulse = () => (\n <div className=\"relative w-12 h-12 flex items-center justify-center\">\n <motion.div\n className=\"absolute w-full h-full bg-zinc-200 dark:bg-zinc-800 rounded-full\"\n animate={{ scale: [0, 1], opacity: [1, 0] }}\n transition={{ duration: 1.5, repeat: Infinity, ease: \"easeOut\" }}\n />\n <motion.div\n className=\"absolute w-full h-full bg-zinc-200 dark:bg-zinc-800 rounded-full\"\n animate={{ scale: [0, 1], opacity: [1, 0] }}\n transition={{ duration: 1.5, repeat: Infinity, delay: 0.5, ease: \"easeOut\" }}\n />\n <div className=\"w-3 h-3 bg-zinc-800 dark:bg-white rounded-full z-10\" />\n </div>\n);\n"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "apple-sound-wave",
|
|
3
|
+
"file": "apple-sound-wave.tsx",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"framer-motion"
|
|
6
|
+
],
|
|
7
|
+
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const AppleSoundWave = () => (\n <div className=\"flex space-x-1 h-8 items-center\">\n {[1, 2, 3, 2, 1].map((val, i) => (\n <motion.div\n key={i}\n className=\"w-1 bg-zinc-800 dark:bg-white rounded-full\"\n animate={{ height: [4, val * 8, 4] }}\n transition={{ duration: 1, repeat: Infinity, delay: i * 0.1, ease: \"easeInOut\" }}\n />\n ))}\n </div>\n);\n"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "apple-text-reveal",
|
|
3
|
+
"file": "apple-text-reveal.tsx",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"framer-motion"
|
|
6
|
+
],
|
|
7
|
+
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const AppleTextReveal = () => (\n <div className=\"font-medium text-lg text-zinc-900 dark:text-white overflow-hidden h-6 relative\">\n <motion.div\n animate={{ y: [\"100%\", \"0%\", \"-100%\"] }}\n transition={{ duration: 2, repeat: Infinity, ease: \"easeInOut\" }}\n >\n Loading\n </motion.div>\n </div>\n);\n"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "apple-unlock",
|
|
3
|
+
"file": "apple-unlock.tsx",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"framer-motion"
|
|
6
|
+
],
|
|
7
|
+
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const AppleUnlock = ({ theme = 'light' }: { theme?: 'light' | 'dark' }) => {\n const isDark = theme === 'dark';\n return (\n <div className=\"relative font-medium text-sm tracking-wide select-none\">\n <span className=\"text-zinc-400 dark:text-zinc-600\">\n Slide to unlock\n </span>\n <motion.div\n 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\"\n style={{\n backgroundSize: \"200% 100%\",\n }}\n animate={{ backgroundPosition: [\"200% 0\", \"-200% 0\"] }}\n transition={{ duration: 2.2, repeat: Infinity, ease: \"linear\" }}\n >\n Slide to unlock\n </motion.div>\n </div>\n );\n};\n"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "arc-tracer",
|
|
3
|
+
"file": "arc-tracer.tsx",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"framer-motion"
|
|
6
|
+
],
|
|
7
|
+
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const ArcTracer = () => {\n return (\n <svg className=\"w-10 h-10\" viewBox=\"0 0 50 50\">\n <circle cx=\"25\" cy=\"25\" r=\"20\" className=\"stroke-zinc-200 dark:stroke-zinc-800 fill-none\" strokeWidth=\"4\" />\n <motion.circle\n cx=\"25\"\n cy=\"25\"\n r=\"20\"\n className=\"stroke-zinc-800 dark:stroke-white fill-none\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n strokeDasharray=\"125\"\n animate={{ strokeDashoffset: [125, 0, -125] }}\n transition={{ duration: 2, repeat: Infinity, ease: \"easeInOut\" }}\n />\n </svg>\n );\n};\n"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "bar-cascade",
|
|
3
|
+
"file": "bar-cascade.tsx",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"framer-motion"
|
|
6
|
+
],
|
|
7
|
+
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const BarCascade = () => {\n return (\n <div className=\"flex space-x-1 items-center h-8\">\n {[0, 1, 2, 3, 4].map((i) => (\n <motion.div\n key={i}\n className=\"w-1.5 bg-zinc-800 dark:bg-white rounded-full\"\n animate={{ height: [\"8px\", \"24px\", \"8px\"] }}\n transition={{ duration: 1, repeat: Infinity, delay: i * 0.1, ease: \"easeInOut\" }}\n />\n ))}\n </div>\n );\n};\n"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "bar-sweep",
|
|
3
|
+
"file": "bar-sweep.tsx",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"framer-motion"
|
|
6
|
+
],
|
|
7
|
+
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const BarSweep = () => {\n return (\n <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\">\n <motion.div\n className=\"w-4 h-4 bg-zinc-800 dark:bg-white rounded-full absolute\"\n animate={{ x: [0, 24, 0] }}\n transition={{ duration: 1.5, repeat: Infinity, ease: \"easeInOut\" }}\n />\n </div>\n );\n};\n"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "blur-text",
|
|
3
|
+
"file": "blur-text.tsx",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"framer-motion"
|
|
6
|
+
],
|
|
7
|
+
"content": "\"use client\";\nimport React from 'react';\nimport { motion, type Variants } from 'framer-motion';\n\ninterface BlurTextProps {\n text: string;\n duration?: number;\n staggerDelay?: number;\n initialBlur?: string;\n className?: string;\n}\n\nexport function BlurText({\n text,\n duration = 0.5,\n staggerDelay = 0.02,\n initialBlur = '8px',\n className = '',\n}: BlurTextProps) {\n const characters = Array.from(text);\n\n const containerVariants: Variants = {\n hidden: { opacity: 0 },\n visible: {\n opacity: 1,\n transition: {\n staggerChildren: staggerDelay,\n },\n },\n };\n\n const charVariants: Variants = {\n hidden: { opacity: 0, filter: `blur(${initialBlur})` },\n visible: {\n opacity: 1,\n filter: 'blur(0px)',\n transition: {\n duration,\n ease: 'easeOut',\n },\n },\n };\n\n return (\n <motion.div\n variants={containerVariants}\n initial=\"hidden\"\n whileInView=\"visible\"\n viewport={{ once: true, margin: '-10%' }}\n className={`inline-block ${className}`}\n >\n {characters.map((char, index) => (\n <motion.span\n key={index}\n variants={charVariants}\n className=\"inline-block whitespace-pre\"\n >\n {char}\n </motion.span>\n ))}\n </motion.div>\n );\n}\n"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "bobbing-dots",
|
|
3
|
+
"file": "bobbing-dots.tsx",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"framer-motion"
|
|
6
|
+
],
|
|
7
|
+
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const BobbingDots = () => {\n return (\n <div className=\"flex space-x-2\">\n {[0, 1, 2].map((i) => (\n <motion.div\n key={i}\n className=\"w-3 h-3 bg-zinc-800 dark:bg-white rounded-full\"\n animate={{ y: [0, -10, 0] }}\n transition={{ duration: 1.2, repeat: Infinity, delay: i * 0.15, ease: \"easeInOut\" }}\n />\n ))}\n </div>\n );\n};\n"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "bounce-dots",
|
|
3
|
+
"file": "bounce-dots.tsx",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"framer-motion"
|
|
6
|
+
],
|
|
7
|
+
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const BounceDots = () => {\n return (\n <div className=\"flex space-x-1.5\">\n {[0, 1, 2].map((i) => (\n <motion.div\n key={i}\n className=\"w-2.5 h-2.5 bg-zinc-800 dark:bg-white rounded-full\"\n animate={{ y: [0, -8, 0] }}\n transition={{\n duration: 0.6,\n repeat: Infinity,\n delay: i * 0.1,\n ease: \"easeInOut\",\n }}\n />\n ))}\n </div>\n );\n};\n"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "bouncing-bars",
|
|
3
|
+
"file": "bouncing-bars.tsx",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"framer-motion"
|
|
6
|
+
],
|
|
7
|
+
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const BouncingBars = () => {\n return (\n <div className=\"flex space-x-1.5 h-8 items-center\">\n {[0, 1, 2].map((i) => (\n <motion.div\n key={i}\n className=\"w-1.5 h-8 bg-zinc-800 dark:bg-white rounded-full\"\n animate={{ scaleY: [0.3, 1, 0.3] }}\n transition={{ duration: 1, repeat: Infinity, delay: i * 0.2, ease: \"easeInOut\" }}\n />\n ))}\n </div>\n );\n};\n"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "bouncing-dots",
|
|
3
|
+
"file": "bouncing-dots.tsx",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"framer-motion"
|
|
6
|
+
],
|
|
7
|
+
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const BouncingDots = () => {\n return (\n <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\">\n {[0, 1, 2].map((i) => (\n <motion.div\n key={i}\n className=\"w-3 h-3 bg-zinc-800 dark:bg-white rounded-full absolute bottom-2\"\n style={{ left: `${(i * 14) + 10}px` }}\n animate={{ y: [0, -20, 0], scaleY: [0.8, 1.1, 0.8] }}\n transition={{ duration: 0.8, repeat: Infinity, delay: i * 0.1, ease: \"easeInOut\" }}\n />\n ))}\n </div>\n );\n};\n"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "bouncing-lines",
|
|
3
|
+
"file": "bouncing-lines.tsx",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"framer-motion"
|
|
6
|
+
],
|
|
7
|
+
"content": "\"use client\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const BouncingLines = () => {\n return (\n <div className=\"flex flex-col space-y-1.5 w-8\">\n {[0, 1, 2].map((i) => (\n <motion.div\n key={i}\n className=\"w-full h-1.5 bg-zinc-800 dark:bg-white rounded-full origin-left\"\n animate={{ scaleX: [0.3, 1, 0.3] }}\n transition={{ duration: 1, repeat: Infinity, delay: i * 0.2, ease: \"easeInOut\" }}\n />\n ))}\n </div>\n );\n};\n"
|
|
8
|
+
}
|