bynana-ui 1.0.0 → 1.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/dist/avatar/index.js +2 -0
- package/dist/avatar/index.js.map +1 -0
- package/dist/avatar/index.mjs +2 -0
- package/dist/avatar/index.mjs.map +1 -0
- package/dist/badge/index.js +2 -0
- package/dist/badge/index.js.map +1 -0
- package/dist/badge/index.mjs +2 -0
- package/dist/badge/index.mjs.map +1 -0
- package/dist/count-up/index.js +2 -0
- package/dist/count-up/index.js.map +1 -0
- package/dist/count-up/index.mjs +2 -0
- package/dist/count-up/index.mjs.map +1 -0
- package/dist/dynamic-text/index.js +2 -0
- package/dist/dynamic-text/index.js.map +1 -0
- package/dist/dynamic-text/index.mjs +2 -0
- package/dist/dynamic-text/index.mjs.map +1 -0
- package/dist/fuzzy-text/index.js +2 -0
- package/dist/fuzzy-text/index.js.map +1 -0
- package/dist/fuzzy-text/index.mjs +2 -0
- package/dist/fuzzy-text/index.mjs.map +1 -0
- package/dist/gradient-button/index.js +2 -0
- package/dist/gradient-button/index.js.map +1 -0
- package/dist/gradient-button/index.mjs +2 -0
- package/dist/gradient-button/index.mjs.map +1 -0
- package/dist/hold-button/index.js +2 -0
- package/dist/hold-button/index.js.map +1 -0
- package/dist/hold-button/index.mjs +2 -0
- package/dist/hold-button/index.mjs.map +1 -0
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +11 -1
- package/dist/index.mjs.map +1 -1
- package/dist/liquid-button/index.js +2 -0
- package/dist/liquid-button/index.js.map +1 -0
- package/dist/liquid-button/index.mjs +2 -0
- package/dist/liquid-button/index.mjs.map +1 -0
- package/dist/liquid-text/index.js +2 -0
- package/dist/liquid-text/index.js.map +1 -0
- package/dist/liquid-text/index.mjs +2 -0
- package/dist/liquid-text/index.mjs.map +1 -0
- package/dist/loading-bar/index.js +2 -0
- package/dist/loading-bar/index.js.map +1 -0
- package/dist/loading-bar/index.mjs +2 -0
- package/dist/loading-bar/index.mjs.map +1 -0
- package/dist/loading-bounce/index.js +2 -0
- package/dist/loading-bounce/index.js.map +1 -0
- package/dist/loading-bounce/index.mjs +2 -0
- package/dist/loading-bounce/index.mjs.map +1 -0
- package/dist/loading-pulse/index.js +2 -0
- package/dist/loading-pulse/index.js.map +1 -0
- package/dist/loading-pulse/index.mjs +2 -0
- package/dist/loading-pulse/index.mjs.map +1 -0
- package/dist/magnetic-text/index.js +2 -0
- package/dist/magnetic-text/index.js.map +1 -0
- package/dist/magnetic-text/index.mjs +2 -0
- package/dist/magnetic-text/index.mjs.map +1 -0
- package/dist/matrix-text/index.js +2 -0
- package/dist/matrix-text/index.js.map +1 -0
- package/dist/matrix-text/index.mjs +2 -0
- package/dist/matrix-text/index.mjs.map +1 -0
- package/dist/neon-button/index.js +2 -0
- package/dist/neon-button/index.js.map +1 -0
- package/dist/neon-button/index.mjs +2 -0
- package/dist/neon-button/index.mjs.map +1 -0
- package/dist/progress/index.js +2 -0
- package/dist/progress/index.js.map +1 -0
- package/dist/progress/index.mjs +2 -0
- package/dist/progress/index.mjs.map +1 -0
- package/dist/rainbow-text/index.js +7 -0
- package/dist/rainbow-text/index.js.map +1 -0
- package/dist/rainbow-text/index.mjs +7 -0
- package/dist/rainbow-text/index.mjs.map +1 -0
- package/dist/rotating-text/index.js +2 -0
- package/dist/rotating-text/index.js.map +1 -0
- package/dist/rotating-text/index.mjs +2 -0
- package/dist/rotating-text/index.mjs.map +1 -0
- package/dist/scrambled-text/index.js +2 -0
- package/dist/scrambled-text/index.js.map +1 -0
- package/dist/scrambled-text/index.mjs +2 -0
- package/dist/scrambled-text/index.mjs.map +1 -0
- package/dist/shiny-text/index.js +7 -0
- package/dist/shiny-text/index.js.map +1 -0
- package/dist/shiny-text/index.mjs +7 -0
- package/dist/shiny-text/index.mjs.map +1 -0
- package/dist/skeleton/index.js +2 -0
- package/dist/skeleton/index.js.map +1 -0
- package/dist/skeleton/index.mjs +2 -0
- package/dist/skeleton/index.mjs.map +1 -0
- package/dist/slide-button/index.js +2 -0
- package/dist/slide-button/index.js.map +1 -0
- package/dist/slide-button/index.mjs +2 -0
- package/dist/slide-button/index.mjs.map +1 -0
- package/dist/stagger-text/index.js +2 -0
- package/dist/stagger-text/index.js.map +1 -0
- package/dist/stagger-text/index.mjs +2 -0
- package/dist/stagger-text/index.mjs.map +1 -0
- package/dist/switch/index.js +2 -0
- package/dist/switch/index.js.map +1 -0
- package/dist/switch/index.mjs +2 -0
- package/dist/switch/index.mjs.map +1 -0
- package/dist/swoosh-text/index.js +2 -0
- package/dist/swoosh-text/index.js.map +1 -0
- package/dist/swoosh-text/index.mjs +2 -0
- package/dist/swoosh-text/index.mjs.map +1 -0
- package/dist/threed-button/index.js +2 -0
- package/dist/threed-button/index.js.map +1 -0
- package/dist/threed-button/index.mjs +2 -0
- package/dist/threed-button/index.mjs.map +1 -0
- package/dist/tooltip/index.js +2 -0
- package/dist/tooltip/index.js.map +1 -0
- package/dist/tooltip/index.mjs +2 -0
- package/dist/tooltip/index.mjs.map +1 -0
- package/package.json +137 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/cn.ts","../src/shine-button/index.tsx","../src/ripple-button/index.tsx","../src/magnetic-button/index.tsx","../src/bounce-button/index.tsx","../src/glow-button/index.tsx","../src/pulse-button/index.tsx","../src/gradient-text/index.tsx","../src/shimmer-text/index.tsx","../src/glitch-text/index.tsx","../src/bounce-text/index.tsx","../src/blur-text/index.tsx","../src/typewriter/index.tsx","../src/wave-text/index.tsx","../src/flip-text/index.tsx","../src/glass-card/index.tsx","../src/hover-card/index.tsx","../src/card-flip/index.tsx","../src/loading-dots/index.tsx","../src/loading-spinner/index.tsx","../src/animated-list/index.tsx"],"names":["cn","inputs","twMerge","clsx","ShineButton","children","className","props","jsxs","jsx","RippleButton","onClick","ripples","setRipples","useState","handleClick","e","rect","x","y","newRipple","prev","r","AnimatePresence","ripple","motion","MagneticButton","strength","radius","ref","useRef","isHovered","setIsHovered","useMotionValue","springConfig","xSpring","useSpring","ySpring","centerX","centerY","distanceX","distanceY","distance","factor","BounceButton","isBouncing","setIsBouncing","GlowButton","glowColor","isGlowing","setIsGlowing","PulseButton","pulseColor","GradientText","colors","animationSpeed","ShimmerText","text","GlitchText","glitchIntensity","color","isStatic","size","selectedScheme","settings","sizeMap","glitchAnimation","BounceText","delay","duration","letters","letter","index","BlurText","animateBy","direction","elements","inView","setInView","useEffect","observer","entry","fromAnimation","useMemo","toAnimation","segment","Typewriter","speed","cursor","loop","displayText","setDisplayText","isTyping","setIsTyping","timeout","i","isDeleting","type","WaveText","amplitude","frequency","FlipText","GlassCard","HoverCard","CardFlip","frontContent","backContent","isFlipped","setIsFlipped","LoadingDots","sizeClasses","LoadingSpinner","AnimatedList","setIndex","childrenArray","React","interval","prevIndex","itemsToShow","item","idx","AnimatedListItem"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ShineButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function ShineButton({ children, className, ...props }: ShineButtonProps) {\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden px-6 py-3 rounded-xl font-medium\",\r\n \"bg-zinc-900 text-white hover:bg-zinc-800\",\r\n \"dark:bg-zinc-800 dark:hover:bg-zinc-700 dark:text-white\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span\r\n className={cn(\r\n \"absolute inset-0 overflow-hidden rounded-[inherit]\",\r\n \"before:absolute before:inset-0\",\r\n \"before:-translate-x-full\",\r\n \"before:animate-shimmer\",\r\n \"before:bg-gradient-to-r\",\r\n \"before:from-transparent before:via-white/40 before:to-transparent\",\r\n \"before:skew-x-[-20deg]\"\r\n )}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default ShineButton;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RippleButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function RippleButton({ children, className, onClick, ...props }: RippleButtonProps) {\r\n const [ripples, setRipples] = useState<Array<{ x: number; y: number; id: number }>>([]);\r\n\r\n function handleClick(e: React.MouseEvent<HTMLButtonElement>) {\r\n const button = e.currentTarget;\r\n const rect = button.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n const newRipple = { x, y, id: Date.now() };\r\n\r\n setRipples((prev) => [...prev, newRipple]);\r\n setTimeout(() => {\r\n setRipples((prev) => prev.filter((r) => r.id !== newRipple.id));\r\n }, 1000);\r\n\r\n onClick?.(e);\r\n }\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden px-6 py-3 rounded-xl font-medium\",\r\n \"bg-zinc-900 text-white hover:bg-zinc-800\",\r\n \"dark:bg-zinc-100 dark:text-black dark:hover:bg-zinc-200\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n onClick={handleClick}\r\n {...props}\r\n >\r\n <AnimatePresence>\r\n {ripples.map((ripple) => (\r\n <motion.span\r\n key={ripple.id}\r\n className=\"absolute rounded-full pointer-events-none border-2 border-white/50 dark:border-black/50\"\r\n style={{\r\n left: ripple.x,\r\n top: ripple.y,\r\n transform: \"translate(-50%, -50%)\",\r\n }}\r\n initial={{ width: 0, height: 0, opacity: 0.9 }}\r\n animate={{ width: 500, height: 500, opacity: 0 }}\r\n exit={{ opacity: 0 }}\r\n transition={{ duration: 1, ease: [0.4, 0, 0.2, 1] }}\r\n />\r\n ))}\r\n </AnimatePresence>\r\n <span className=\"relative z-10\">{children}</span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default RippleButton;\r\n","\"use client\";\r\n\r\nimport React, { useRef, useState } from \"react\";\r\nimport { motion, useMotionValue, useSpring } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MagneticButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n strength?: number;\r\n radius?: number;\r\n}\r\n\r\nexport function MagneticButton({\r\n children,\r\n className,\r\n strength = 0.5,\r\n radius = 200,\r\n ...props\r\n}: MagneticButtonProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n const x = useMotionValue(0);\r\n const y = useMotionValue(0);\r\n\r\n const springConfig = { damping: 20, stiffness: 300, mass: 0.5 };\r\n const xSpring = useSpring(x, springConfig);\r\n const ySpring = useSpring(y, springConfig);\r\n\r\n const handleMouseMove = (e: React.MouseEvent) => {\r\n if (!ref.current) return;\r\n const rect = ref.current.getBoundingClientRect();\r\n const centerX = rect.left + rect.width / 2;\r\n const centerY = rect.top + rect.height / 2;\r\n const distanceX = e.clientX - centerX;\r\n const distanceY = e.clientY - centerY;\r\n const distance = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\r\n\r\n if (distance < radius) {\r\n const factor = 1 - distance / radius;\r\n x.set(distanceX * strength * factor);\r\n y.set(distanceY * strength * factor);\r\n }\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n setIsHovered(false);\r\n x.set(0);\r\n y.set(0);\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className=\"relative inline-flex items-center justify-center\"\r\n onMouseMove={handleMouseMove}\r\n onMouseLeave={handleMouseLeave}\r\n onMouseEnter={() => setIsHovered(true)}\r\n style={{ padding: radius / 2, margin: -radius / 2 }}\r\n >\r\n <motion.div style={{ x: xSpring, y: ySpring }}>\r\n <button\r\n className={cn(\r\n \"px-6 py-3 rounded-xl font-medium\",\r\n \"bg-zinc-900 text-white hover:bg-zinc-800\",\r\n \"dark:bg-zinc-100 dark:text-black dark:hover:bg-zinc-200\",\r\n \"transition-shadow duration-300\",\r\n isHovered && \"shadow-lg\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default MagneticButton;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BounceButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function BounceButton({ children, className, onClick, ...props }: BounceButtonProps) {\r\n const [isBouncing, setIsBouncing] = useState(false);\r\n\r\n function handleClick(e: React.MouseEvent<HTMLButtonElement>) {\r\n setIsBouncing(true);\r\n setTimeout(() => setIsBouncing(false), 1500);\r\n onClick?.(e);\r\n }\r\n\r\n return (\r\n <div className=\"relative inline-block\">\r\n <motion.div\r\n className=\"absolute -bottom-2 left-1/2 w-16 h-2 bg-black/20 rounded-full blur-sm\"\r\n animate={isBouncing ? {\r\n scaleX: [1, 0.8, 1.2, 0.9, 1.1, 0.95, 1],\r\n opacity: [0.3, 0.6, 0.2, 0.5, 0.3, 0.4, 0.3],\r\n } : {}}\r\n style={{ x: \"-50%\" }}\r\n transition={{ duration: 1.5, ease: \"easeOut\" }}\r\n />\r\n\r\n <motion.div\r\n animate={isBouncing ? {\r\n y: [0, -40, -20, -35, -10, -25, -5, -15, 0],\r\n rotate: [0, -5, 2, -3, 1, -2, 0.5, -1, 0],\r\n } : {}}\r\n transition={{\r\n duration: 1.5,\r\n ease: \"easeOut\",\r\n times: [0, 0.2, 0.35, 0.5, 0.65, 0.75, 0.85, 0.95, 1],\r\n }}\r\n whileHover={!isBouncing ? { y: [0, -8, 0] } : {}}\r\n >\r\n <button\r\n className={cn(\r\n \"px-6 py-3 rounded-xl font-medium\",\r\n \"bg-orange-500 hover:bg-orange-600 text-white\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n onClick={handleClick}\r\n disabled={isBouncing}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default BounceButton;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlowButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n glowColor?: string;\r\n}\r\n\r\nexport function GlowButton({\r\n children,\r\n className,\r\n glowColor = \"rgba(59, 130, 246, 0.8)\",\r\n ...props\r\n}: GlowButtonProps) {\r\n const [isGlowing, setIsGlowing] = useState(false);\r\n\r\n return (\r\n <motion.div\r\n className=\"relative inline-block\"\r\n onMouseEnter={() => setIsGlowing(true)}\r\n onMouseLeave={() => setIsGlowing(false)}\r\n animate={{\r\n filter: isGlowing\r\n ? [\r\n `drop-shadow(0 0 10px ${glowColor})`,\r\n `drop-shadow(0 0 25px ${glowColor})`,\r\n `drop-shadow(0 0 10px ${glowColor})`,\r\n ]\r\n : \"drop-shadow(0 0 0px transparent)\",\r\n }}\r\n transition={{\r\n duration: isGlowing ? 1.5 : 0.3,\r\n repeat: isGlowing ? Infinity : 0,\r\n }}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 rounded-xl\"\r\n animate={isGlowing ? {\r\n boxShadow: [\r\n `0 0 20px ${glowColor}`,\r\n `0 0 40px ${glowColor}`,\r\n `0 0 20px ${glowColor}`,\r\n ],\r\n scale: [1, 1.05, 1],\r\n } : {\r\n boxShadow: \"0 0 0px transparent\",\r\n scale: 1,\r\n }}\r\n transition={{\r\n duration: 2,\r\n repeat: isGlowing ? Infinity : 0,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n\r\n <button\r\n className={cn(\r\n \"relative px-6 py-3 rounded-xl font-medium\",\r\n \"bg-blue-600 hover:bg-blue-700 text-white\",\r\n \"transition-all duration-300\",\r\n isGlowing && \"bg-blue-500\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default GlowButton;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface PulseButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n pulseColor?: string;\r\n}\r\n\r\nexport function PulseButton({\r\n children,\r\n className,\r\n pulseColor = \"rgba(239, 68, 68, 0.5)\",\r\n ...props\r\n}: PulseButtonProps) {\r\n return (\r\n <div className=\"relative inline-block\">\r\n <motion.div\r\n className=\"absolute inset-0 rounded-xl\"\r\n style={{ backgroundColor: pulseColor }}\r\n animate={{\r\n scale: [1, 1.3, 1, 1.2, 1],\r\n opacity: [0.6, 0, 0.6, 0, 0.6],\r\n }}\r\n transition={{\r\n duration: 1.2,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n times: [0, 0.2, 0.4, 0.6, 1],\r\n }}\r\n />\r\n\r\n <motion.div\r\n className=\"absolute inset-0 rounded-xl\"\r\n style={{ backgroundColor: pulseColor }}\r\n animate={{\r\n scale: [1, 1.5, 1, 1.4, 1],\r\n opacity: [0.4, 0, 0.4, 0, 0.4],\r\n }}\r\n transition={{\r\n duration: 1.2,\r\n delay: 0.1,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n times: [0, 0.2, 0.4, 0.6, 1],\r\n }}\r\n />\r\n\r\n <motion.div\r\n animate={{\r\n scale: [1, 1.05, 1, 1.03, 1],\r\n }}\r\n transition={{\r\n duration: 1.2,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n times: [0, 0.2, 0.4, 0.6, 1],\r\n }}\r\n >\r\n <button\r\n className={cn(\r\n \"relative px-6 py-3 rounded-xl font-medium\",\r\n \"bg-red-500 hover:bg-red-600 text-white\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default PulseButton;\r\n","\"use client\";\r\n\r\nimport React, { ReactNode } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GradientTextProps {\r\n children: ReactNode;\r\n className?: string;\r\n colors?: string[];\r\n animationSpeed?: number;\r\n}\r\n\r\nexport function GradientText({\r\n children,\r\n className = \"\",\r\n colors = [\"#40ffaa\", \"#4079ff\", \"#40ffaa\", \"#4079ff\", \"#40ffaa\"],\r\n animationSpeed = 8,\r\n}: GradientTextProps) {\r\n return (\r\n <span\r\n className={cn(\r\n \"bg-clip-text text-transparent bg-[length:200%_auto] animate-gradient\",\r\n className\r\n )}\r\n style={{\r\n backgroundImage: `linear-gradient(to right, ${colors.join(\", \")})`,\r\n animationDuration: `${animationSpeed}s`,\r\n }}\r\n >\r\n {children}\r\n </span>\r\n );\r\n}\r\n\r\nexport default GradientText;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ShimmerTextProps {\r\n text?: string;\r\n className?: string;\r\n}\r\n\r\nexport function ShimmerText({ text = \"Text Shimmer\", className }: ShimmerTextProps) {\r\n return (\r\n <div className=\"flex items-center justify-center p-8\">\r\n <motion.div\r\n className=\"relative px-4 py-2 overflow-hidden\"\r\n initial={{ opacity: 0, y: 20 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.5 }}\r\n >\r\n <motion.h1\r\n className={cn(\r\n \"text-3xl font-bold bg-gradient-to-r from-neutral-950 via-neutral-400 to-neutral-950 dark:from-white dark:via-neutral-600 dark:to-white bg-[length:200%_100%] bg-clip-text text-transparent\",\r\n className\r\n )}\r\n animate={{\r\n backgroundPosition: [\"200% center\", \"-200% center\"],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n ease: \"linear\",\r\n repeat: Infinity,\r\n }}\r\n >\r\n {text}\r\n </motion.h1>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ShimmerText;\r\n","\"use client\";\r\n\r\nimport React, { useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlitchTextProps {\r\n text?: string;\r\n className?: string;\r\n glitchIntensity?: \"light\" | \"medium\" | \"heavy\" | \"extreme\";\r\n color?: \"rainbow\" | \"blue\" | \"purple\" | \"cyan\" | \"pink\" | \"orange\";\r\n isStatic?: boolean;\r\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\";\r\n}\r\n\r\nexport function GlitchText({\r\n text = \"Glitch Text\",\r\n className,\r\n glitchIntensity = \"medium\",\r\n color = \"orange\",\r\n isStatic = false,\r\n size = \"md\",\r\n}: GlitchTextProps) {\r\n const colorSchemes = {\r\n rainbow: { primary: \"#a855f7\", before: \"#22d3ee\", after: \"#f472b6\" },\r\n blue: { primary: \"#3b82f6\", before: \"#60a5fa\", after: \"#1d4ed8\" },\r\n purple: { primary: \"#8b5cf6\", before: \"#a78bfa\", after: \"#6d28d9\" },\r\n cyan: { primary: \"#06b6d4\", before: \"#22d3ee\", after: \"#0891b2\" },\r\n pink: { primary: \"#ec4899\", before: \"#f472b6\", after: \"#db2777\" },\r\n orange: { primary: \"#f97316\", before: \"#fb923c\", after: \"#ea580c\" },\r\n };\r\n\r\n const selectedScheme = colorSchemes[color];\r\n\r\n const intensitySettings = {\r\n light: { translateRange: 2, skewRange: 0.5 },\r\n medium: { translateRange: 3, skewRange: 1 },\r\n heavy: { translateRange: 5, skewRange: 2 },\r\n extreme: { translateRange: 8, skewRange: 3 },\r\n };\r\n\r\n const settings = intensitySettings[glitchIntensity];\r\n\r\n const sizeMap = {\r\n sm: \"text-2xl\",\r\n md: \"text-4xl\",\r\n lg: \"text-5xl\",\r\n xl: \"text-6xl\",\r\n \"2xl\": \"text-7xl\",\r\n \"3xl\": \"text-8xl\",\r\n };\r\n\r\n const glitchAnimation = {\r\n animate: {\r\n x: [0, settings.translateRange, -settings.translateRange, 0],\r\n y: [0, -settings.translateRange, settings.translateRange, 0],\r\n skewX: [0, settings.skewRange, -settings.skewRange, 0],\r\n },\r\n transition: {\r\n duration: 0.5,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n },\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative flex items-center justify-center p-8\", className)}>\r\n <motion.div\r\n className={cn(\"relative font-bold tracking-wider\", sizeMap[size])}\r\n style={{ color: selectedScheme.primary }}\r\n animate={!isStatic ? glitchAnimation.animate : undefined}\r\n transition={glitchAnimation.transition}\r\n >\r\n {text}\r\n <motion.span\r\n className=\"absolute inset-0 pointer-events-none\"\r\n style={{ color: selectedScheme.before, opacity: 0.8 }}\r\n animate={!isStatic ? {\r\n x: [-settings.translateRange, settings.translateRange, 0],\r\n y: [settings.translateRange, -settings.translateRange, 0],\r\n } : undefined}\r\n transition={{ duration: 0.5, repeat: Infinity }}\r\n >\r\n {text}\r\n </motion.span>\r\n <motion.span\r\n className=\"absolute inset-0 pointer-events-none\"\r\n style={{ color: selectedScheme.after, opacity: 0.8 }}\r\n animate={!isStatic ? {\r\n x: [settings.translateRange, -settings.translateRange, 0],\r\n y: [-settings.translateRange, settings.translateRange, 0],\r\n } : undefined}\r\n transition={{ duration: 0.5, repeat: Infinity }}\r\n >\r\n {text}\r\n </motion.span>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default GlitchText;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BounceTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n duration?: number;\r\n}\r\n\r\nexport function BounceText({\r\n text,\r\n className,\r\n delay = 0,\r\n duration = 0.4,\r\n}: BounceTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{\r\n y: [0, -20, 0],\r\n }}\r\n transition={{\r\n delay: delay + index * 0.03,\r\n duration: duration,\r\n ease: \"easeInOut\",\r\n repeat: Infinity,\r\n repeatDelay: 0.5,\r\n }}\r\n >\r\n {letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default BounceText;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useRef, useState, useMemo } from \"react\";\r\nimport { motion, Transition } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BlurTextProps {\r\n text?: string;\r\n delay?: number;\r\n className?: string;\r\n animateBy?: \"words\" | \"letters\";\r\n direction?: \"top\" | \"bottom\";\r\n}\r\n\r\nexport function BlurText({\r\n text = \"\",\r\n delay = 200,\r\n className = \"\",\r\n animateBy = \"words\",\r\n direction = \"top\",\r\n}: BlurTextProps) {\r\n const elements = animateBy === \"words\" ? text.split(\" \") : text.split(\"\");\r\n const [inView, setInView] = useState(false);\r\n const ref = useRef<HTMLParagraphElement>(null);\r\n\r\n useEffect(() => {\r\n if (!ref.current) return;\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setInView(true);\r\n observer.unobserve(ref.current as Element);\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n observer.observe(ref.current);\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n const fromAnimation = useMemo(\r\n () =>\r\n direction === \"top\"\r\n ? { filter: \"blur(10px)\", opacity: 0, y: -50 }\r\n : { filter: \"blur(10px)\", opacity: 0, y: 50 },\r\n [direction]\r\n );\r\n\r\n const toAnimation = { filter: \"blur(0px)\", opacity: 1, y: 0 };\r\n\r\n return (\r\n <p ref={ref} className={cn(\"flex flex-wrap\", className)}>\r\n {elements.map((segment, index) => (\r\n <motion.span\r\n key={index}\r\n initial={fromAnimation}\r\n animate={inView ? toAnimation : fromAnimation}\r\n transition={{\r\n duration: 0.5,\r\n delay: (index * delay) / 1000,\r\n ease: \"easeOut\",\r\n }}\r\n className=\"inline-block\"\r\n style={{ willChange: \"transform, filter, opacity\" }}\r\n >\r\n {segment === \" \" ? \"\\u00A0\" : segment}\r\n {animateBy === \"words\" && index < elements.length - 1 && \"\\u00A0\"}\r\n </motion.span>\r\n ))}\r\n </p>\r\n );\r\n}\r\n\r\nexport default BlurText;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TypewriterProps {\r\n text?: string;\r\n className?: string;\r\n speed?: number;\r\n delay?: number;\r\n cursor?: boolean;\r\n loop?: boolean;\r\n}\r\n\r\nexport function Typewriter({\r\n text = \"Hello World\",\r\n className,\r\n speed = 50,\r\n delay = 0,\r\n cursor = true,\r\n loop = false,\r\n}: TypewriterProps) {\r\n const [displayText, setDisplayText] = useState(\"\");\r\n const [isTyping, setIsTyping] = useState(false);\r\n\r\n useEffect(() => {\r\n let timeout: NodeJS.Timeout;\r\n let i = 0;\r\n let isDeleting = false;\r\n\r\n const type = () => {\r\n setIsTyping(true);\r\n\r\n if (!isDeleting) {\r\n if (i < text.length) {\r\n setDisplayText(text.slice(0, i + 1));\r\n i++;\r\n timeout = setTimeout(type, speed);\r\n } else {\r\n setIsTyping(false);\r\n if (loop) {\r\n timeout = setTimeout(() => {\r\n isDeleting = true;\r\n type();\r\n }, 2000);\r\n }\r\n }\r\n } else {\r\n if (i > 0) {\r\n setDisplayText(text.slice(0, i - 1));\r\n i--;\r\n timeout = setTimeout(type, speed / 2);\r\n } else {\r\n isDeleting = false;\r\n timeout = setTimeout(type, 500);\r\n }\r\n }\r\n };\r\n\r\n timeout = setTimeout(type, delay);\r\n\r\n return () => clearTimeout(timeout);\r\n }, [text, speed, delay, loop]);\r\n\r\n return (\r\n <span className={cn(\"inline-block font-mono\", className)}>\r\n {displayText}\r\n {cursor && (\r\n <span\r\n className={cn(\r\n \"ml-0.5 inline-block w-[2px] h-[1em] bg-current\",\r\n isTyping ? \"animate-blink\" : \"\"\r\n )}\r\n />\r\n )}\r\n </span>\r\n );\r\n}\r\n\r\nexport default Typewriter;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface WaveTextProps {\r\n text: string;\r\n className?: string;\r\n amplitude?: number;\r\n frequency?: number;\r\n}\r\n\r\nexport function WaveText({\r\n text,\r\n className,\r\n amplitude = 10,\r\n frequency = 1.5,\r\n}: WaveTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{\r\n y: [0, -amplitude, 0, amplitude, 0],\r\n }}\r\n transition={{\r\n duration: frequency,\r\n repeat: Infinity,\r\n delay: index * 0.08,\r\n ease: \"easeInOut\",\r\n }}\r\n >\r\n {letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default WaveText;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FlipTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function FlipText({ text, className, delay = 0 }: FlipTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)} style={{ perspective: \"1000px\" }}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block origin-center\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{ rotateX: [0, 360] }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n delay: delay + index * 0.08,\r\n ease: \"easeInOut\",\r\n repeatDelay: 0.8,\r\n }}\r\n >\r\n {letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default FlipText;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlassCardProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function GlassCard({ children, className, ...props }: GlassCardProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"rounded-2xl p-6\",\r\n \"bg-white/10 dark:bg-black/10\",\r\n \"backdrop-blur-xl\",\r\n \"border border-white/20 dark:border-white/10\",\r\n \"shadow-xl\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default GlassCard;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HoverCardProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function HoverCard({ children, className, ...props }: HoverCardProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"rounded-2xl p-6\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-200 dark:border-zinc-800\",\r\n \"shadow-lg\",\r\n \"transition-all duration-300 ease-out\",\r\n \"hover:shadow-2xl hover:-translate-y-1\",\r\n \"hover:border-zinc-300 dark:hover:border-zinc-700\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default HoverCard;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CardFlipProps {\r\n frontContent: React.ReactNode;\r\n backContent: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardFlip({ frontContent, backContent, className }: CardFlipProps) {\r\n const [isFlipped, setIsFlipped] = useState(false);\r\n\r\n return (\r\n <div\r\n className={cn(\"relative w-full h-full [perspective:1000px]\", className)}\r\n onMouseEnter={() => setIsFlipped(true)}\r\n onMouseLeave={() => setIsFlipped(false)}\r\n >\r\n <div\r\n className={cn(\r\n \"relative w-full h-full [transform-style:preserve-3d] transition-transform duration-700\",\r\n isFlipped ? \"[transform:rotateY(180deg)]\" : \"\"\r\n )}\r\n >\r\n {/* Front */}\r\n <div\r\n className={cn(\r\n \"absolute inset-0 w-full h-full [backface-visibility:hidden]\",\r\n \"rounded-2xl bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-200 dark:border-zinc-800\",\r\n \"shadow-lg p-6\"\r\n )}\r\n >\r\n {frontContent}\r\n </div>\r\n\r\n {/* Back */}\r\n <div\r\n className={cn(\r\n \"absolute inset-0 w-full h-full [backface-visibility:hidden] [transform:rotateY(180deg)]\",\r\n \"rounded-2xl bg-zinc-100 dark:bg-zinc-800\",\r\n \"border border-zinc-200 dark:border-zinc-700\",\r\n \"shadow-lg p-6\"\r\n )}\r\n >\r\n {backContent}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default CardFlip;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingDotsProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function LoadingDots({ className, size = \"md\" }: LoadingDotsProps) {\r\n const sizeClasses = {\r\n sm: \"w-1.5 h-1.5\",\r\n md: \"w-2.5 h-2.5\",\r\n lg: \"w-4 h-4\",\r\n };\r\n\r\n return (\r\n <div className={cn(\"flex items-center justify-center gap-1\", className)}>\r\n {[0, 1, 2].map((i) => (\r\n <div\r\n key={i}\r\n className={cn(\r\n sizeClasses[size],\r\n \"rounded-full bg-current animate-bounce\"\r\n )}\r\n style={{ animationDelay: `${i * 0.15}s` }}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingDots;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingSpinnerProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function LoadingSpinner({ className, size = \"md\" }: LoadingSpinnerProps) {\r\n const sizeClasses = {\r\n sm: \"w-4 h-4 border-2\",\r\n md: \"w-8 h-8 border-3\",\r\n lg: \"w-12 h-12 border-4\",\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\r\n sizeClasses[size],\r\n \"rounded-full border-current border-t-transparent animate-spin\",\r\n className\r\n )}\r\n />\r\n );\r\n}\r\n\r\nexport default LoadingSpinner;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useMemo, useState } from \"react\";\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport interface AnimatedListProps {\r\n className?: string;\r\n children: React.ReactNode;\r\n delay?: number;\r\n}\r\n\r\nexport function AnimatedList({\r\n className,\r\n children,\r\n delay = 1000,\r\n}: AnimatedListProps) {\r\n const [index, setIndex] = useState(0);\r\n const childrenArray = React.Children.toArray(children);\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setIndex((prevIndex) => (prevIndex + 1) % childrenArray.length);\r\n }, delay);\r\n return () => clearInterval(interval);\r\n }, [childrenArray.length, delay]);\r\n\r\n const itemsToShow = useMemo(\r\n () => childrenArray.slice(0, index + 1).reverse(),\r\n [index, childrenArray]\r\n );\r\n\r\n return (\r\n <div className={cn(\"flex flex-col items-center gap-4\", className)}>\r\n <AnimatePresence>\r\n {itemsToShow.map((item, idx) => (\r\n <AnimatedListItem key={idx}>\r\n {item}\r\n </AnimatedListItem>\r\n ))}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport function AnimatedListItem({ children }: { children: React.ReactNode }) {\r\n return (\r\n <motion.div\r\n initial={{ scale: 0, opacity: 0 }}\r\n animate={{ scale: 1, opacity: 1 }}\r\n exit={{ scale: 0, opacity: 0 }}\r\n transition={{ type: \"spring\", stiffness: 350, damping: 40 }}\r\n layout\r\n className=\"mx-auto w-full\"\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default AnimatedList;\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/cn.ts","../src/shine-button/index.tsx","../src/ripple-button/index.tsx","../src/magnetic-button/index.tsx","../src/bounce-button/index.tsx","../src/glow-button/index.tsx","../src/pulse-button/index.tsx","../src/neon-button/index.tsx","../src/liquid-button/index.tsx","../src/slide-button/index.tsx","../src/gradient-button/index.tsx","../src/hold-button/index.tsx","../src/threed-button/index.tsx","../src/gradient-text/index.tsx","../src/shimmer-text/index.tsx","../src/glitch-text/index.tsx","../src/bounce-text/index.tsx","../src/blur-text/index.tsx","../src/typewriter/index.tsx","../src/wave-text/index.tsx","../src/flip-text/index.tsx","../src/shiny-text/index.tsx","../src/fuzzy-text/index.tsx","../src/matrix-text/index.tsx","../src/liquid-text/index.tsx","../src/swoosh-text/index.tsx","../src/scrambled-text/index.tsx","../src/magnetic-text/index.tsx","../src/dynamic-text/index.tsx","../src/rotating-text/index.tsx","../src/stagger-text/index.tsx","../src/rainbow-text/index.tsx","../src/count-up/index.tsx","../src/glass-card/index.tsx","../src/hover-card/index.tsx","../src/card-flip/index.tsx","../src/loading-dots/index.tsx","../src/loading-spinner/index.tsx","../src/loading-bar/index.tsx","../src/loading-pulse/index.tsx","../src/loading-bounce/index.tsx","../src/animated-list/index.tsx","../src/skeleton/index.tsx","../src/tooltip/index.tsx","../src/badge/index.tsx","../src/avatar/index.tsx","../src/progress/index.tsx","../src/switch/index.tsx"],"names":["cn","inputs","twMerge","clsx","ShineButton","children","className","props","jsxs","jsx","RippleButton","onClick","ripples","setRipples","useState","handleClick","e","rect","x","y","newRipple","prev","r","AnimatePresence","ripple","motion","MagneticButton","strength","radius","ref","useRef","isHovered","setIsHovered","useMotionValue","springConfig","xSpring","useSpring","ySpring","centerX","centerY","distanceX","distanceY","distance","factor","BounceButton","isBouncing","setIsBouncing","GlowButton","glowColor","isGlowing","setIsGlowing","PulseButton","pulseColor","colorVariants","sizeVariants","NeonButton","color","size","colors","LiquidButton","variant","isFilling","setIsFilling","sizeClasses","variantClasses","Fragment","_","i","SlideButton","slideText","gradients","sizes","GradientButton","HoldButton","holdDuration","onHoldComplete","progress","setProgress","isHolding","setIsHolding","intervalRef","variants","progressColors","startHold","startTime","elapsed","newProgress","stopHold","ThreeDButton","GradientText","animationSpeed","ShimmerText","text","GlitchText","glitchIntensity","isStatic","selectedScheme","settings","sizeMap","glitchAnimation","BounceText","delay","duration","letters","letter","index","BlurText","animateBy","direction","elements","inView","setInView","useEffect","observer","entry","fromAnimation","useMemo","toAnimation","segment","Typewriter","speed","cursor","loop","displayText","setDisplayText","isTyping","setIsTyping","timeout","isDeleting","type","WaveText","amplitude","frequency","FlipText","ShinyText","disabled","FuzzyText","fontSize","fontWeight","fontFamily","enableHover","baseIntensity","hoverIntensity","canvasRef","animationFrameId","isCancelled","canvas","ctx","computedFontFamily","fontSizeStr","numericFontSize","temp","React","offscreen","offCtx","metrics","actualLeft","actualRight","actualAscent","actualDescent","textBoundingWidth","tightHeight","extraWidthBuffer","offscreenWidth","xOffset","horizontalMargin","verticalMargin","interactiveLeft","interactiveTop","interactiveRight","interactiveBottom","isHovering","fuzzRange","run","intensity","j","dx","isInsideTextArea","handleMouseMove","handleMouseLeave","MatrixText","containerRef","container","chars","originalText","iteration","animate","char","LiquidText","words","child","word","SwooshText","ScrambledText","scrambleChars","interval","MagneticText","position","setPosition","handleMouse","clientX","clientY","height","width","left","top","middleX","middleY","reset","DynamicText","setIndex","timer","RotatingText","StaggerText","staggerDelay","RainbowText","CountUp","end","start","prefix","suffix","decimals","count","setCount","animationFrame","timestamp","easeOutQuart","currentCount","GlassCard","HoverCard","CardFlip","frontContent","backContent","isFlipped","setIsFlipped","LoadingDots","LoadingSpinner","LoadingBar","LoadingPulse","LoadingBounce","AnimatedList","childrenArray","prevIndex","itemsToShow","item","idx","AnimatedListItem","Skeleton","Tooltip","content","isVisible","setIsVisible","positions","animations","Badge","Avatar","src","alt","fallback","initials","n","Progress","value","max","showLabel","percentage","Switch","checked","onChange","sizeConfig"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ShineButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function ShineButton({ children, className, ...props }: ShineButtonProps) {\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden px-6 py-3 rounded-xl font-medium\",\r\n \"bg-zinc-900 text-white hover:bg-zinc-800\",\r\n \"dark:bg-zinc-800 dark:hover:bg-zinc-700 dark:text-white\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span\r\n className={cn(\r\n \"absolute inset-0 overflow-hidden rounded-[inherit]\",\r\n \"before:absolute before:inset-0\",\r\n \"before:-translate-x-full\",\r\n \"before:animate-shimmer\",\r\n \"before:bg-gradient-to-r\",\r\n \"before:from-transparent before:via-white/40 before:to-transparent\",\r\n \"before:skew-x-[-20deg]\"\r\n )}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default ShineButton;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RippleButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function RippleButton({ children, className, onClick, ...props }: RippleButtonProps) {\r\n const [ripples, setRipples] = useState<Array<{ x: number; y: number; id: number }>>([]);\r\n\r\n function handleClick(e: React.MouseEvent<HTMLButtonElement>) {\r\n const button = e.currentTarget;\r\n const rect = button.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n const newRipple = { x, y, id: Date.now() };\r\n\r\n setRipples((prev) => [...prev, newRipple]);\r\n setTimeout(() => {\r\n setRipples((prev) => prev.filter((r) => r.id !== newRipple.id));\r\n }, 1000);\r\n\r\n onClick?.(e);\r\n }\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden px-6 py-3 rounded-xl font-medium\",\r\n \"bg-zinc-900 text-white hover:bg-zinc-800\",\r\n \"dark:bg-zinc-100 dark:text-black dark:hover:bg-zinc-200\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n onClick={handleClick}\r\n {...props}\r\n >\r\n <AnimatePresence>\r\n {ripples.map((ripple) => (\r\n <motion.span\r\n key={ripple.id}\r\n className=\"absolute rounded-full pointer-events-none border-2 border-white/50 dark:border-black/50\"\r\n style={{\r\n left: ripple.x,\r\n top: ripple.y,\r\n transform: \"translate(-50%, -50%)\",\r\n }}\r\n initial={{ width: 0, height: 0, opacity: 0.9 }}\r\n animate={{ width: 500, height: 500, opacity: 0 }}\r\n exit={{ opacity: 0 }}\r\n transition={{ duration: 1, ease: [0.4, 0, 0.2, 1] }}\r\n />\r\n ))}\r\n </AnimatePresence>\r\n <span className=\"relative z-10\">{children}</span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default RippleButton;\r\n","\"use client\";\r\n\r\nimport React, { useRef, useState } from \"react\";\r\nimport { motion, useMotionValue, useSpring } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MagneticButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n strength?: number;\r\n radius?: number;\r\n}\r\n\r\nexport function MagneticButton({\r\n children,\r\n className,\r\n strength = 0.5,\r\n radius = 200,\r\n ...props\r\n}: MagneticButtonProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n const x = useMotionValue(0);\r\n const y = useMotionValue(0);\r\n\r\n const springConfig = { damping: 20, stiffness: 300, mass: 0.5 };\r\n const xSpring = useSpring(x, springConfig);\r\n const ySpring = useSpring(y, springConfig);\r\n\r\n const handleMouseMove = (e: React.MouseEvent) => {\r\n if (!ref.current) return;\r\n const rect = ref.current.getBoundingClientRect();\r\n const centerX = rect.left + rect.width / 2;\r\n const centerY = rect.top + rect.height / 2;\r\n const distanceX = e.clientX - centerX;\r\n const distanceY = e.clientY - centerY;\r\n const distance = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\r\n\r\n if (distance < radius) {\r\n const factor = 1 - distance / radius;\r\n x.set(distanceX * strength * factor);\r\n y.set(distanceY * strength * factor);\r\n }\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n setIsHovered(false);\r\n x.set(0);\r\n y.set(0);\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className=\"relative inline-flex items-center justify-center\"\r\n onMouseMove={handleMouseMove}\r\n onMouseLeave={handleMouseLeave}\r\n onMouseEnter={() => setIsHovered(true)}\r\n style={{ padding: radius / 2, margin: -radius / 2 }}\r\n >\r\n <motion.div style={{ x: xSpring, y: ySpring }}>\r\n <button\r\n className={cn(\r\n \"px-6 py-3 rounded-xl font-medium\",\r\n \"bg-zinc-900 text-white hover:bg-zinc-800\",\r\n \"dark:bg-zinc-100 dark:text-black dark:hover:bg-zinc-200\",\r\n \"transition-shadow duration-300\",\r\n isHovered && \"shadow-lg\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default MagneticButton;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BounceButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function BounceButton({ children, className, onClick, ...props }: BounceButtonProps) {\r\n const [isBouncing, setIsBouncing] = useState(false);\r\n\r\n function handleClick(e: React.MouseEvent<HTMLButtonElement>) {\r\n setIsBouncing(true);\r\n setTimeout(() => setIsBouncing(false), 1500);\r\n onClick?.(e);\r\n }\r\n\r\n return (\r\n <div className=\"relative inline-block\">\r\n <motion.div\r\n className=\"absolute -bottom-2 left-1/2 w-16 h-2 bg-black/20 rounded-full blur-sm\"\r\n animate={isBouncing ? {\r\n scaleX: [1, 0.8, 1.2, 0.9, 1.1, 0.95, 1],\r\n opacity: [0.3, 0.6, 0.2, 0.5, 0.3, 0.4, 0.3],\r\n } : {}}\r\n style={{ x: \"-50%\" }}\r\n transition={{ duration: 1.5, ease: \"easeOut\" }}\r\n />\r\n\r\n <motion.div\r\n animate={isBouncing ? {\r\n y: [0, -40, -20, -35, -10, -25, -5, -15, 0],\r\n rotate: [0, -5, 2, -3, 1, -2, 0.5, -1, 0],\r\n } : {}}\r\n transition={{\r\n duration: 1.5,\r\n ease: \"easeOut\",\r\n times: [0, 0.2, 0.35, 0.5, 0.65, 0.75, 0.85, 0.95, 1],\r\n }}\r\n whileHover={!isBouncing ? { y: [0, -8, 0] } : {}}\r\n >\r\n <button\r\n className={cn(\r\n \"px-6 py-3 rounded-xl font-medium\",\r\n \"bg-orange-500 hover:bg-orange-600 text-white\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n onClick={handleClick}\r\n disabled={isBouncing}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default BounceButton;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlowButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n glowColor?: string;\r\n}\r\n\r\nexport function GlowButton({\r\n children,\r\n className,\r\n glowColor = \"rgba(59, 130, 246, 0.8)\",\r\n ...props\r\n}: GlowButtonProps) {\r\n const [isGlowing, setIsGlowing] = useState(false);\r\n\r\n return (\r\n <motion.div\r\n className=\"relative inline-block\"\r\n onMouseEnter={() => setIsGlowing(true)}\r\n onMouseLeave={() => setIsGlowing(false)}\r\n animate={{\r\n filter: isGlowing\r\n ? [\r\n `drop-shadow(0 0 10px ${glowColor})`,\r\n `drop-shadow(0 0 25px ${glowColor})`,\r\n `drop-shadow(0 0 10px ${glowColor})`,\r\n ]\r\n : \"drop-shadow(0 0 0px transparent)\",\r\n }}\r\n transition={{\r\n duration: isGlowing ? 1.5 : 0.3,\r\n repeat: isGlowing ? Infinity : 0,\r\n }}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 rounded-xl\"\r\n animate={isGlowing ? {\r\n boxShadow: [\r\n `0 0 20px ${glowColor}`,\r\n `0 0 40px ${glowColor}`,\r\n `0 0 20px ${glowColor}`,\r\n ],\r\n scale: [1, 1.05, 1],\r\n } : {\r\n boxShadow: \"0 0 0px transparent\",\r\n scale: 1,\r\n }}\r\n transition={{\r\n duration: 2,\r\n repeat: isGlowing ? Infinity : 0,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n\r\n <button\r\n className={cn(\r\n \"relative px-6 py-3 rounded-xl font-medium\",\r\n \"bg-blue-600 hover:bg-blue-700 text-white\",\r\n \"transition-all duration-300\",\r\n isGlowing && \"bg-blue-500\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default GlowButton;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface PulseButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n pulseColor?: string;\r\n}\r\n\r\nexport function PulseButton({\r\n children,\r\n className,\r\n pulseColor = \"rgba(239, 68, 68, 0.5)\",\r\n ...props\r\n}: PulseButtonProps) {\r\n return (\r\n <div className=\"relative inline-block\">\r\n <motion.div\r\n className=\"absolute inset-0 rounded-xl\"\r\n style={{ backgroundColor: pulseColor }}\r\n animate={{\r\n scale: [1, 1.3, 1, 1.2, 1],\r\n opacity: [0.6, 0, 0.6, 0, 0.6],\r\n }}\r\n transition={{\r\n duration: 1.2,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n times: [0, 0.2, 0.4, 0.6, 1],\r\n }}\r\n />\r\n\r\n <motion.div\r\n className=\"absolute inset-0 rounded-xl\"\r\n style={{ backgroundColor: pulseColor }}\r\n animate={{\r\n scale: [1, 1.5, 1, 1.4, 1],\r\n opacity: [0.4, 0, 0.4, 0, 0.4],\r\n }}\r\n transition={{\r\n duration: 1.2,\r\n delay: 0.1,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n times: [0, 0.2, 0.4, 0.6, 1],\r\n }}\r\n />\r\n\r\n <motion.div\r\n animate={{\r\n scale: [1, 1.05, 1, 1.03, 1],\r\n }}\r\n transition={{\r\n duration: 1.2,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n times: [0, 0.2, 0.4, 0.6, 1],\r\n }}\r\n >\r\n <button\r\n className={cn(\r\n \"relative px-6 py-3 rounded-xl font-medium\",\r\n \"bg-red-500 hover:bg-red-600 text-white\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default PulseButton;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface NeonButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n color?: \"pink\" | \"cyan\" | \"green\" | \"purple\" | \"orange\";\r\n size?: \"sm\" | \"default\" | \"lg\";\r\n}\r\n\r\nconst colorVariants = {\r\n pink: {\r\n border: \"border-pink-500\",\r\n text: \"text-pink-400\",\r\n shadow: \"shadow-pink-500/50\",\r\n glow: \"rgba(236, 72, 153, 0.6)\",\r\n bg: \"hover:bg-pink-500/10\",\r\n },\r\n cyan: {\r\n border: \"border-cyan-500\",\r\n text: \"text-cyan-400\",\r\n shadow: \"shadow-cyan-500/50\",\r\n glow: \"rgba(6, 182, 212, 0.6)\",\r\n bg: \"hover:bg-cyan-500/10\",\r\n },\r\n green: {\r\n border: \"border-green-500\",\r\n text: \"text-green-400\",\r\n shadow: \"shadow-green-500/50\",\r\n glow: \"rgba(34, 197, 94, 0.6)\",\r\n bg: \"hover:bg-green-500/10\",\r\n },\r\n purple: {\r\n border: \"border-purple-500\",\r\n text: \"text-purple-400\",\r\n shadow: \"shadow-purple-500/50\",\r\n glow: \"rgba(168, 85, 247, 0.6)\",\r\n bg: \"hover:bg-purple-500/10\",\r\n },\r\n orange: {\r\n border: \"border-orange-500\",\r\n text: \"text-orange-400\",\r\n shadow: \"shadow-orange-500/50\",\r\n glow: \"rgba(249, 115, 22, 0.6)\",\r\n bg: \"hover:bg-orange-500/10\",\r\n },\r\n};\r\n\r\nconst sizeVariants = {\r\n sm: \"h-8 px-3 text-xs\",\r\n default: \"h-10 px-6 text-sm\",\r\n lg: \"h-12 px-8 text-base\",\r\n};\r\n\r\nexport function NeonButton({\r\n children,\r\n className,\r\n color = \"cyan\",\r\n size = \"default\",\r\n ...props\r\n}: NeonButtonProps) {\r\n const colors = colorVariants[color];\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative inline-flex items-center justify-center\",\r\n \"font-semibold tracking-wide uppercase\",\r\n \"border-2 rounded-lg\",\r\n \"bg-transparent\",\r\n \"transition-colors duration-200\",\r\n colors.border,\r\n colors.text,\r\n colors.bg,\r\n sizeVariants[size],\r\n className\r\n )}\r\n whileHover={{\r\n boxShadow: `0 0 20px ${colors.glow}, 0 0 40px ${colors.glow}, 0 0 60px ${colors.glow}`,\r\n }}\r\n whileTap={{ scale: 0.98 }}\r\n transition={{ duration: 0.2 }}\r\n {...props}\r\n >\r\n <motion.span\r\n className={cn(\"absolute inset-0 rounded-lg opacity-0\", colors.border)}\r\n animate={{ opacity: [0.5, 1, 0.5] }}\r\n transition={{ duration: 2, repeat: Infinity, ease: \"easeInOut\" }}\r\n style={{ boxShadow: `inset 0 0 10px ${colors.glow}` }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default NeonButton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LiquidButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"outline\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function LiquidButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n onClick,\r\n ...props\r\n}: LiquidButtonProps) {\r\n const [isFilling, setIsFilling] = useState(false);\r\n\r\n function handleClick(e: React.MouseEvent<HTMLButtonElement>) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setIsFilling(true);\r\n setTimeout(() => setIsFilling(false), 800);\r\n if (onClick) onClick(e);\r\n }\r\n\r\n const sizeClasses = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\"\r\n };\r\n\r\n const variantClasses = {\r\n primary: \"bg-zinc-900 text-white border-zinc-900 dark:bg-white dark:text-zinc-900 dark:border-white\",\r\n secondary: \"bg-zinc-100 text-zinc-900 border-zinc-200 dark:bg-zinc-800 dark:text-white dark:border-zinc-700\",\r\n outline: \"bg-transparent text-zinc-900 border-zinc-300 dark:text-white dark:border-zinc-600\"\r\n };\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-medium border-2 transition-colors\",\r\n sizeClasses[size],\r\n variantClasses[variant],\r\n className\r\n )}\r\n onClick={handleClick}\r\n {...props}\r\n >\r\n <AnimatePresence>\r\n {isFilling && (\r\n <motion.div\r\n key=\"liquid-fill\"\r\n className={cn(\r\n \"absolute inset-0 origin-bottom\",\r\n variant === \"primary\" ? \"bg-blue-500 dark:bg-blue-400\" : \"bg-zinc-900 dark:bg-white\"\r\n )}\r\n initial={{ scaleY: 0 }}\r\n animate={{ scaleY: 1 }}\r\n exit={{ scaleY: 0, transition: { duration: 0.3 } }}\r\n transition={{ duration: 0.5, ease: [0.4, 0, 0.2, 1] }}\r\n style={{ transformOrigin: \"bottom\" }}\r\n />\r\n )}\r\n </AnimatePresence>\r\n \r\n <AnimatePresence>\r\n {isFilling && (\r\n <>\r\n {[...Array(5)].map((_, i) => (\r\n <motion.div\r\n key={i}\r\n className=\"absolute w-1.5 h-1.5 bg-white/60 rounded-full\"\r\n style={{ left: `${20 + i * 15}%`, bottom: \"10%\" }}\r\n initial={{ y: 0, opacity: 0, scale: 0 }}\r\n animate={{ y: -60, opacity: [0, 1, 0], scale: [0, 1, 0.5] }}\r\n transition={{ duration: 0.6, delay: i * 0.08, ease: \"easeOut\" }}\r\n />\r\n ))}\r\n </>\r\n )}\r\n </AnimatePresence>\r\n\r\n <span className={cn(\r\n \"relative flex items-center justify-center gap-2 transition-colors duration-200 z-10\",\r\n isFilling && (variant === \"outline\" || variant === \"secondary\" ? \"text-white dark:text-zinc-900\" : \"text-white\")\r\n )}>\r\n {children}\r\n </span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default LiquidButton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SlideButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"outline\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n slideText?: string;\r\n}\r\n\r\nexport function SlideButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n slideText = \"Go!\",\r\n onClick,\r\n ...props\r\n}: SlideButtonProps) {\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n const sizeClasses = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\"\r\n };\r\n\r\n const variantClasses = {\r\n primary: \"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900\",\r\n secondary: \"bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-white\",\r\n outline: \"bg-transparent text-zinc-900 border-2 border-zinc-300 dark:text-white dark:border-zinc-600\"\r\n };\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-medium transition-all\",\r\n sizeClasses[size],\r\n variantClasses[variant],\r\n className\r\n )}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n onClick={onClick}\r\n {...props}\r\n >\r\n <motion.div\r\n className={cn(\r\n \"absolute inset-0\",\r\n variant === \"primary\" ? \"bg-blue-600 dark:bg-blue-500\" : \"bg-zinc-900 dark:bg-white\"\r\n )}\r\n initial={{ x: \"-100%\" }}\r\n animate={{ x: isHovered ? \"0%\" : \"-100%\" }}\r\n transition={{ duration: 0.3, ease: \"easeInOut\" }}\r\n />\r\n \r\n <motion.span\r\n className=\"relative flex items-center justify-center gap-2 z-10\"\r\n animate={{ x: isHovered ? 20 : 0, opacity: isHovered ? 0 : 1 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {children}\r\n </motion.span>\r\n \r\n <motion.span\r\n className={cn(\r\n \"absolute inset-0 flex items-center justify-center gap-2 z-10\",\r\n variant === \"outline\" || variant === \"secondary\" ? \"text-white dark:text-zinc-900\" : \"text-white\"\r\n )}\r\n initial={{ x: -20, opacity: 0 }}\r\n animate={{ x: isHovered ? 0 : -20, opacity: isHovered ? 1 : 0 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {slideText}\r\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M14 5l7 7m0 0l-7 7m7-7H3\" />\r\n </svg>\r\n </motion.span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default SlideButton;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GradientButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"sunset\" | \"ocean\" | \"forest\" | \"purple\" | \"fire\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst gradients = {\r\n sunset: \"from-orange-500 via-pink-500 to-purple-500\",\r\n ocean: \"from-cyan-500 via-blue-500 to-purple-500\",\r\n forest: \"from-green-500 via-emerald-500 to-teal-500\",\r\n purple: \"from-purple-500 via-violet-500 to-indigo-500\",\r\n fire: \"from-yellow-500 via-orange-500 to-red-500\",\r\n};\r\n\r\nconst sizes = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\",\r\n};\r\n\r\nexport function GradientButton({\r\n children,\r\n className,\r\n variant = \"ocean\",\r\n size = \"md\",\r\n ...props\r\n}: GradientButtonProps) {\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-semibold text-white\",\r\n \"bg-gradient-to-r\",\r\n gradients[variant],\r\n sizes[size],\r\n className\r\n )}\r\n whileHover={{ scale: 1.02 }}\r\n whileTap={{ scale: 0.98 }}\r\n {...props}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 bg-gradient-to-r from-white/0 via-white/25 to-white/0\"\r\n initial={{ x: \"-100%\" }}\r\n whileHover={{ x: \"100%\" }}\r\n transition={{ duration: 0.5 }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default GradientButton;\r\n","\"use client\";\r\n\r\nimport { useState, useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HoldButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n holdDuration?: number;\r\n onHoldComplete?: () => void;\r\n variant?: \"primary\" | \"danger\" | \"success\";\r\n}\r\n\r\nexport function HoldButton({\r\n children,\r\n className,\r\n holdDuration = 1000,\r\n onHoldComplete,\r\n variant = \"primary\",\r\n ...props\r\n}: HoldButtonProps) {\r\n const [progress, setProgress] = useState(0);\r\n const [isHolding, setIsHolding] = useState(false);\r\n const intervalRef = useRef<NodeJS.Timeout | null>(null);\r\n\r\n const variants = {\r\n primary: \"bg-zinc-900 dark:bg-white\",\r\n danger: \"bg-red-500\",\r\n success: \"bg-green-500\",\r\n };\r\n\r\n const progressColors = {\r\n primary: \"bg-blue-500\",\r\n danger: \"bg-red-700\",\r\n success: \"bg-green-700\",\r\n };\r\n\r\n const startHold = () => {\r\n setIsHolding(true);\r\n const startTime = Date.now();\r\n \r\n intervalRef.current = setInterval(() => {\r\n const elapsed = Date.now() - startTime;\r\n const newProgress = Math.min((elapsed / holdDuration) * 100, 100);\r\n setProgress(newProgress);\r\n \r\n if (newProgress >= 100) {\r\n stopHold();\r\n onHoldComplete?.();\r\n }\r\n }, 16);\r\n };\r\n\r\n const stopHold = () => {\r\n setIsHolding(false);\r\n setProgress(0);\r\n if (intervalRef.current) {\r\n clearInterval(intervalRef.current);\r\n intervalRef.current = null;\r\n }\r\n };\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg px-6 py-3 font-medium text-white dark:text-zinc-900\",\r\n variants[variant],\r\n className\r\n )}\r\n onMouseDown={startHold}\r\n onMouseUp={stopHold}\r\n onMouseLeave={stopHold}\r\n onTouchStart={startHold}\r\n onTouchEnd={stopHold}\r\n whileTap={{ scale: 0.98 }}\r\n {...props}\r\n >\r\n <motion.div\r\n className={cn(\"absolute inset-0 origin-left\", progressColors[variant])}\r\n style={{ scaleX: progress / 100 }}\r\n transition={{ duration: 0 }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default HoldButton;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ThreeDButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"danger\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst variants = {\r\n primary: {\r\n bg: \"bg-blue-500\",\r\n shadow: \"shadow-blue-700\",\r\n hover: \"hover:bg-blue-600\",\r\n },\r\n secondary: {\r\n bg: \"bg-zinc-700\",\r\n shadow: \"shadow-zinc-900\",\r\n hover: \"hover:bg-zinc-800\",\r\n },\r\n danger: {\r\n bg: \"bg-red-500\",\r\n shadow: \"shadow-red-700\",\r\n hover: \"hover:bg-red-600\",\r\n },\r\n};\r\n\r\nconst sizes = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\",\r\n};\r\n\r\nexport function ThreeDButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n ...props\r\n}: ThreeDButtonProps) {\r\n const colors = variants[variant];\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative rounded-lg font-semibold text-white\",\r\n \"shadow-[0_6px_0_0]\",\r\n colors.bg,\r\n colors.shadow,\r\n colors.hover,\r\n sizes[size],\r\n className\r\n )}\r\n whileHover={{ y: -2 }}\r\n whileTap={{ y: 4, boxShadow: \"0 2px 0 0\" }}\r\n transition={{ duration: 0.1 }}\r\n {...props}\r\n >\r\n {children}\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default ThreeDButton;\r\n","\"use client\";\r\n\r\nimport React, { ReactNode } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GradientTextProps {\r\n children: ReactNode;\r\n className?: string;\r\n colors?: string[];\r\n animationSpeed?: number;\r\n}\r\n\r\nexport function GradientText({\r\n children,\r\n className = \"\",\r\n colors = [\"#40ffaa\", \"#4079ff\", \"#40ffaa\", \"#4079ff\", \"#40ffaa\"],\r\n animationSpeed = 8,\r\n}: GradientTextProps) {\r\n return (\r\n <span\r\n className={cn(\r\n \"bg-clip-text text-transparent bg-[length:200%_auto] animate-gradient\",\r\n className\r\n )}\r\n style={{\r\n backgroundImage: `linear-gradient(to right, ${colors.join(\", \")})`,\r\n animationDuration: `${animationSpeed}s`,\r\n }}\r\n >\r\n {children}\r\n </span>\r\n );\r\n}\r\n\r\nexport default GradientText;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ShimmerTextProps {\r\n text?: string;\r\n className?: string;\r\n}\r\n\r\nexport function ShimmerText({ text = \"Text Shimmer\", className }: ShimmerTextProps) {\r\n return (\r\n <div className=\"flex items-center justify-center p-8\">\r\n <motion.div\r\n className=\"relative px-4 py-2 overflow-hidden\"\r\n initial={{ opacity: 0, y: 20 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.5 }}\r\n >\r\n <motion.h1\r\n className={cn(\r\n \"text-3xl font-bold bg-gradient-to-r from-neutral-950 via-neutral-400 to-neutral-950 dark:from-white dark:via-neutral-600 dark:to-white bg-[length:200%_100%] bg-clip-text text-transparent\",\r\n className\r\n )}\r\n animate={{\r\n backgroundPosition: [\"200% center\", \"-200% center\"],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n ease: \"linear\",\r\n repeat: Infinity,\r\n }}\r\n >\r\n {text}\r\n </motion.h1>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ShimmerText;\r\n","\"use client\";\r\n\r\nimport React, { useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlitchTextProps {\r\n text?: string;\r\n className?: string;\r\n glitchIntensity?: \"light\" | \"medium\" | \"heavy\" | \"extreme\";\r\n color?: \"rainbow\" | \"blue\" | \"purple\" | \"cyan\" | \"pink\" | \"orange\";\r\n isStatic?: boolean;\r\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\";\r\n}\r\n\r\nexport function GlitchText({\r\n text = \"Glitch Text\",\r\n className,\r\n glitchIntensity = \"medium\",\r\n color = \"orange\",\r\n isStatic = false,\r\n size = \"md\",\r\n}: GlitchTextProps) {\r\n const colorSchemes = {\r\n rainbow: { primary: \"#a855f7\", before: \"#22d3ee\", after: \"#f472b6\" },\r\n blue: { primary: \"#3b82f6\", before: \"#60a5fa\", after: \"#1d4ed8\" },\r\n purple: { primary: \"#8b5cf6\", before: \"#a78bfa\", after: \"#6d28d9\" },\r\n cyan: { primary: \"#06b6d4\", before: \"#22d3ee\", after: \"#0891b2\" },\r\n pink: { primary: \"#ec4899\", before: \"#f472b6\", after: \"#db2777\" },\r\n orange: { primary: \"#f97316\", before: \"#fb923c\", after: \"#ea580c\" },\r\n };\r\n\r\n const selectedScheme = colorSchemes[color];\r\n\r\n const intensitySettings = {\r\n light: { translateRange: 2, skewRange: 0.5 },\r\n medium: { translateRange: 3, skewRange: 1 },\r\n heavy: { translateRange: 5, skewRange: 2 },\r\n extreme: { translateRange: 8, skewRange: 3 },\r\n };\r\n\r\n const settings = intensitySettings[glitchIntensity];\r\n\r\n const sizeMap = {\r\n sm: \"text-2xl\",\r\n md: \"text-4xl\",\r\n lg: \"text-5xl\",\r\n xl: \"text-6xl\",\r\n \"2xl\": \"text-7xl\",\r\n \"3xl\": \"text-8xl\",\r\n };\r\n\r\n const glitchAnimation = {\r\n animate: {\r\n x: [0, settings.translateRange, -settings.translateRange, 0],\r\n y: [0, -settings.translateRange, settings.translateRange, 0],\r\n skewX: [0, settings.skewRange, -settings.skewRange, 0],\r\n },\r\n transition: {\r\n duration: 0.5,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n },\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative flex items-center justify-center p-8\", className)}>\r\n <motion.div\r\n className={cn(\"relative font-bold tracking-wider\", sizeMap[size])}\r\n style={{ color: selectedScheme.primary }}\r\n animate={!isStatic ? glitchAnimation.animate : undefined}\r\n transition={glitchAnimation.transition}\r\n >\r\n {text}\r\n <motion.span\r\n className=\"absolute inset-0 pointer-events-none\"\r\n style={{ color: selectedScheme.before, opacity: 0.8 }}\r\n animate={!isStatic ? {\r\n x: [-settings.translateRange, settings.translateRange, 0],\r\n y: [settings.translateRange, -settings.translateRange, 0],\r\n } : undefined}\r\n transition={{ duration: 0.5, repeat: Infinity }}\r\n >\r\n {text}\r\n </motion.span>\r\n <motion.span\r\n className=\"absolute inset-0 pointer-events-none\"\r\n style={{ color: selectedScheme.after, opacity: 0.8 }}\r\n animate={!isStatic ? {\r\n x: [settings.translateRange, -settings.translateRange, 0],\r\n y: [-settings.translateRange, settings.translateRange, 0],\r\n } : undefined}\r\n transition={{ duration: 0.5, repeat: Infinity }}\r\n >\r\n {text}\r\n </motion.span>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default GlitchText;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BounceTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n duration?: number;\r\n}\r\n\r\nexport function BounceText({\r\n text,\r\n className,\r\n delay = 0,\r\n duration = 0.4,\r\n}: BounceTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{\r\n y: [0, -20, 0],\r\n }}\r\n transition={{\r\n delay: delay + index * 0.03,\r\n duration: duration,\r\n ease: \"easeInOut\",\r\n repeat: Infinity,\r\n repeatDelay: 0.5,\r\n }}\r\n >\r\n {letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default BounceText;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useRef, useState, useMemo } from \"react\";\r\nimport { motion, Transition } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BlurTextProps {\r\n text?: string;\r\n delay?: number;\r\n className?: string;\r\n animateBy?: \"words\" | \"letters\";\r\n direction?: \"top\" | \"bottom\";\r\n}\r\n\r\nexport function BlurText({\r\n text = \"\",\r\n delay = 200,\r\n className = \"\",\r\n animateBy = \"words\",\r\n direction = \"top\",\r\n}: BlurTextProps) {\r\n const elements = animateBy === \"words\" ? text.split(\" \") : text.split(\"\");\r\n const [inView, setInView] = useState(false);\r\n const ref = useRef<HTMLParagraphElement>(null);\r\n\r\n useEffect(() => {\r\n if (!ref.current) return;\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setInView(true);\r\n observer.unobserve(ref.current as Element);\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n observer.observe(ref.current);\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n const fromAnimation = useMemo(\r\n () =>\r\n direction === \"top\"\r\n ? { filter: \"blur(10px)\", opacity: 0, y: -50 }\r\n : { filter: \"blur(10px)\", opacity: 0, y: 50 },\r\n [direction]\r\n );\r\n\r\n const toAnimation = { filter: \"blur(0px)\", opacity: 1, y: 0 };\r\n\r\n return (\r\n <p ref={ref} className={cn(\"flex flex-wrap\", className)}>\r\n {elements.map((segment, index) => (\r\n <motion.span\r\n key={index}\r\n initial={fromAnimation}\r\n animate={inView ? toAnimation : fromAnimation}\r\n transition={{\r\n duration: 0.5,\r\n delay: (index * delay) / 1000,\r\n ease: \"easeOut\",\r\n }}\r\n className=\"inline-block\"\r\n style={{ willChange: \"transform, filter, opacity\" }}\r\n >\r\n {segment === \" \" ? \"\\u00A0\" : segment}\r\n {animateBy === \"words\" && index < elements.length - 1 && \"\\u00A0\"}\r\n </motion.span>\r\n ))}\r\n </p>\r\n );\r\n}\r\n\r\nexport default BlurText;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TypewriterProps {\r\n text?: string;\r\n className?: string;\r\n speed?: number;\r\n delay?: number;\r\n cursor?: boolean;\r\n loop?: boolean;\r\n}\r\n\r\nexport function Typewriter({\r\n text = \"Hello World\",\r\n className,\r\n speed = 50,\r\n delay = 0,\r\n cursor = true,\r\n loop = false,\r\n}: TypewriterProps) {\r\n const [displayText, setDisplayText] = useState(\"\");\r\n const [isTyping, setIsTyping] = useState(false);\r\n\r\n useEffect(() => {\r\n let timeout: NodeJS.Timeout;\r\n let i = 0;\r\n let isDeleting = false;\r\n\r\n const type = () => {\r\n setIsTyping(true);\r\n\r\n if (!isDeleting) {\r\n if (i < text.length) {\r\n setDisplayText(text.slice(0, i + 1));\r\n i++;\r\n timeout = setTimeout(type, speed);\r\n } else {\r\n setIsTyping(false);\r\n if (loop) {\r\n timeout = setTimeout(() => {\r\n isDeleting = true;\r\n type();\r\n }, 2000);\r\n }\r\n }\r\n } else {\r\n if (i > 0) {\r\n setDisplayText(text.slice(0, i - 1));\r\n i--;\r\n timeout = setTimeout(type, speed / 2);\r\n } else {\r\n isDeleting = false;\r\n timeout = setTimeout(type, 500);\r\n }\r\n }\r\n };\r\n\r\n timeout = setTimeout(type, delay);\r\n\r\n return () => clearTimeout(timeout);\r\n }, [text, speed, delay, loop]);\r\n\r\n return (\r\n <span className={cn(\"inline-block font-mono\", className)}>\r\n {displayText}\r\n {cursor && (\r\n <span\r\n className={cn(\r\n \"ml-0.5 inline-block w-[2px] h-[1em] bg-current\",\r\n isTyping ? \"animate-blink\" : \"\"\r\n )}\r\n />\r\n )}\r\n </span>\r\n );\r\n}\r\n\r\nexport default Typewriter;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface WaveTextProps {\r\n text: string;\r\n className?: string;\r\n amplitude?: number;\r\n frequency?: number;\r\n}\r\n\r\nexport function WaveText({\r\n text,\r\n className,\r\n amplitude = 10,\r\n frequency = 1.5,\r\n}: WaveTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{\r\n y: [0, -amplitude, 0, amplitude, 0],\r\n }}\r\n transition={{\r\n duration: frequency,\r\n repeat: Infinity,\r\n delay: index * 0.08,\r\n ease: \"easeInOut\",\r\n }}\r\n >\r\n {letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default WaveText;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FlipTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function FlipText({ text, className, delay = 0 }: FlipTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)} style={{ perspective: \"1000px\" }}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block origin-center\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{ rotateX: [0, 360] }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n delay: delay + index * 0.08,\r\n ease: \"easeInOut\",\r\n repeatDelay: 0.8,\r\n }}\r\n >\r\n {letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default FlipText;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ShinyTextProps {\r\n text: string;\r\n disabled?: boolean;\r\n speed?: number;\r\n className?: string;\r\n}\r\n\r\nexport function ShinyText({ \r\n text, \r\n disabled = false, \r\n speed = 5, \r\n className = \"\" \r\n}: ShinyTextProps) {\r\n return (\r\n <span \r\n className={cn(\r\n \"inline-block bg-gradient-to-r from-gray-900 via-gray-100 to-gray-900 bg-clip-text text-transparent bg-[length:200%_100%]\",\r\n !disabled && \"animate-[shine_var(--shine-speed)_linear_infinite]\",\r\n className\r\n )}\r\n style={{ \r\n \"--shine-speed\": `${speed}s`,\r\n backgroundImage: \"linear-gradient(90deg, #374151 25%, #f3f4f6 50%, #374151 75%)\"\r\n } as React.CSSProperties}\r\n >\r\n {text}\r\n <style>{`\r\n @keyframes shine {\r\n 0% { background-position: -200% 0; }\r\n 100% { background-position: 200% 0; }\r\n }\r\n `}</style>\r\n </span>\r\n );\r\n}\r\n\r\nexport default ShinyText;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useRef } from \"react\";\r\n\r\ninterface FuzzyTextProps {\r\n children: React.ReactNode;\r\n fontSize?: number | string;\r\n fontWeight?: string | number;\r\n fontFamily?: string;\r\n color?: string;\r\n enableHover?: boolean;\r\n baseIntensity?: number;\r\n hoverIntensity?: number;\r\n}\r\n\r\nexport function FuzzyText({\r\n children,\r\n fontSize = \"clamp(2rem, 8vw, 8rem)\",\r\n fontWeight = 900,\r\n fontFamily = \"inherit\",\r\n color = \"#fff\",\r\n enableHover = true,\r\n baseIntensity = 0.18,\r\n hoverIntensity = 0.5\r\n}: FuzzyTextProps) {\r\n const canvasRef = useRef<HTMLCanvasElement & { cleanupFuzzyText?: () => void }>(null);\r\n\r\n useEffect(() => {\r\n let animationFrameId: number;\r\n let isCancelled = false;\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n\r\n const init = async () => {\r\n if (document.fonts?.ready) await document.fonts.ready;\r\n if (isCancelled) return;\r\n\r\n const ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n const computedFontFamily = fontFamily === \"inherit\" \r\n ? window.getComputedStyle(canvas).fontFamily || \"sans-serif\" \r\n : fontFamily;\r\n\r\n const fontSizeStr = typeof fontSize === \"number\" ? `${fontSize}px` : fontSize;\r\n let numericFontSize: number;\r\n if (typeof fontSize === \"number\") {\r\n numericFontSize = fontSize;\r\n } else {\r\n const temp = document.createElement(\"span\");\r\n temp.style.fontSize = fontSize;\r\n document.body.appendChild(temp);\r\n numericFontSize = parseFloat(window.getComputedStyle(temp).fontSize);\r\n document.body.removeChild(temp);\r\n }\r\n\r\n const text = React.Children.toArray(children).join(\"\");\r\n const offscreen = document.createElement(\"canvas\");\r\n const offCtx = offscreen.getContext(\"2d\");\r\n if (!offCtx) return;\r\n\r\n offCtx.font = `${fontWeight} ${fontSizeStr} ${computedFontFamily}`;\r\n offCtx.textBaseline = \"alphabetic\";\r\n const metrics = offCtx.measureText(text);\r\n\r\n const actualLeft = metrics.actualBoundingBoxLeft ?? 0;\r\n const actualRight = metrics.actualBoundingBoxRight ?? metrics.width;\r\n const actualAscent = metrics.actualBoundingBoxAscent ?? numericFontSize;\r\n const actualDescent = metrics.actualBoundingBoxDescent ?? numericFontSize * 0.2;\r\n\r\n const textBoundingWidth = Math.ceil(actualLeft + actualRight);\r\n const tightHeight = Math.ceil(actualAscent + actualDescent);\r\n const extraWidthBuffer = 10;\r\n const offscreenWidth = textBoundingWidth + extraWidthBuffer;\r\n\r\n offscreen.width = offscreenWidth;\r\n offscreen.height = tightHeight;\r\n\r\n const xOffset = extraWidthBuffer / 2;\r\n offCtx.font = `${fontWeight} ${fontSizeStr} ${computedFontFamily}`;\r\n offCtx.textBaseline = \"alphabetic\";\r\n offCtx.fillStyle = color;\r\n offCtx.fillText(text, xOffset - actualLeft, actualAscent);\r\n\r\n const horizontalMargin = 50;\r\n const verticalMargin = 0;\r\n canvas.width = offscreenWidth + horizontalMargin * 2;\r\n canvas.height = tightHeight + verticalMargin * 2;\r\n ctx.translate(horizontalMargin, verticalMargin);\r\n\r\n const interactiveLeft = horizontalMargin + xOffset;\r\n const interactiveTop = verticalMargin;\r\n const interactiveRight = interactiveLeft + textBoundingWidth;\r\n const interactiveBottom = interactiveTop + tightHeight;\r\n\r\n let isHovering = false;\r\n const fuzzRange = 30;\r\n\r\n const run = () => {\r\n if (isCancelled) return;\r\n ctx.clearRect(-fuzzRange, -fuzzRange, offscreenWidth + 2 * fuzzRange, tightHeight + 2 * fuzzRange);\r\n const intensity = isHovering ? hoverIntensity : baseIntensity;\r\n for (let j = 0; j < tightHeight; j++) {\r\n const dx = Math.floor(intensity * (Math.random() - 0.5) * fuzzRange);\r\n ctx.drawImage(offscreen, 0, j, offscreenWidth, 1, dx, j, offscreenWidth, 1);\r\n }\r\n animationFrameId = window.requestAnimationFrame(run);\r\n };\r\n\r\n run();\r\n\r\n const isInsideTextArea = (x: number, y: number) =>\r\n x >= interactiveLeft && x <= interactiveRight && y >= interactiveTop && y <= interactiveBottom;\r\n\r\n const handleMouseMove = (e: MouseEvent) => {\r\n if (!enableHover) return;\r\n const rect = canvas.getBoundingClientRect();\r\n isHovering = isInsideTextArea(e.clientX - rect.left, e.clientY - rect.top);\r\n };\r\n\r\n const handleMouseLeave = () => { isHovering = false; };\r\n\r\n if (enableHover) {\r\n canvas.addEventListener(\"mousemove\", handleMouseMove);\r\n canvas.addEventListener(\"mouseleave\", handleMouseLeave);\r\n }\r\n\r\n canvas.cleanupFuzzyText = () => {\r\n window.cancelAnimationFrame(animationFrameId);\r\n if (enableHover) {\r\n canvas.removeEventListener(\"mousemove\", handleMouseMove);\r\n canvas.removeEventListener(\"mouseleave\", handleMouseLeave);\r\n }\r\n };\r\n };\r\n\r\n init();\r\n\r\n return () => {\r\n isCancelled = true;\r\n window.cancelAnimationFrame(animationFrameId);\r\n if (canvas?.cleanupFuzzyText) canvas.cleanupFuzzyText();\r\n };\r\n }, [children, fontSize, fontWeight, fontFamily, color, enableHover, baseIntensity, hoverIntensity]);\r\n\r\n return <canvas ref={canvasRef} className=\"max-w-full\" />;\r\n}\r\n\r\nexport default FuzzyText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MatrixTextProps {\r\n text: string;\r\n className?: string;\r\n speed?: number;\r\n color?: string;\r\n}\r\n\r\nexport function MatrixText({ \r\n text, \r\n className,\r\n speed = 50,\r\n color = \"#22c55e\"\r\n}: MatrixTextProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const intervalRef = useRef<NodeJS.Timeout | null>(null);\r\n\r\n useEffect(() => {\r\n const container = containerRef.current;\r\n if (!container) return;\r\n\r\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@#$%^&*\";\r\n const originalText = text;\r\n let iteration = 0;\r\n\r\n const animate = () => {\r\n container.innerText = originalText\r\n .split(\"\")\r\n .map((char, index) => {\r\n if (index < iteration) return originalText[index];\r\n return chars[Math.floor(Math.random() * chars.length)];\r\n })\r\n .join(\"\");\r\n\r\n if (iteration >= originalText.length) {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n return;\r\n }\r\n\r\n iteration += 1 / 3;\r\n };\r\n\r\n intervalRef.current = setInterval(animate, speed);\r\n\r\n return () => {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n };\r\n }, [text, speed]);\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={cn(\"font-mono\", className)}\r\n style={{ color }}\r\n >\r\n {text}\r\n </div>\r\n );\r\n}\r\n\r\nexport default MatrixText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LiquidTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function LiquidText({ text, className, delay = 0 }: LiquidTextProps) {\r\n const words = text.split(\" \");\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: (i = 1) => ({\r\n opacity: 1,\r\n transition: { staggerChildren: 0.12, delayChildren: delay * i },\r\n }),\r\n };\r\n\r\n const child = {\r\n visible: {\r\n opacity: 1,\r\n y: 0,\r\n filter: \"blur(0px)\",\r\n transition: {\r\n type: \"spring\",\r\n damping: 12,\r\n stiffness: 100,\r\n },\r\n },\r\n hidden: {\r\n opacity: 0,\r\n y: 20,\r\n filter: \"blur(10px)\",\r\n transition: {\r\n type: \"spring\",\r\n damping: 12,\r\n stiffness: 100,\r\n },\r\n },\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(\"flex flex-wrap\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {words.map((word, index) => (\r\n <motion.span\r\n variants={child}\r\n key={index}\r\n className=\"mr-2\"\r\n >\r\n {word}\r\n </motion.span>\r\n ))}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default LiquidText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SwooshTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function SwooshText({ text, className, delay = 0 }: SwooshTextProps) {\r\n const letters = text.split(\"\");\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: {\r\n opacity: 1,\r\n transition: { staggerChildren: 0.03, delayChildren: delay },\r\n },\r\n };\r\n\r\n const child = {\r\n hidden: {\r\n opacity: 0,\r\n x: -20,\r\n y: 10,\r\n rotate: -10,\r\n },\r\n visible: {\r\n opacity: 1,\r\n x: 0,\r\n y: 0,\r\n rotate: 0,\r\n transition: {\r\n type: \"spring\",\r\n damping: 12,\r\n stiffness: 200,\r\n },\r\n },\r\n };\r\n\r\n return (\r\n <motion.span\r\n className={cn(\"inline-flex\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={index}\r\n variants={child}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </motion.span>\r\n );\r\n}\r\n\r\nexport default SwooshText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ScrambledTextProps {\r\n text: string;\r\n className?: string;\r\n speed?: number;\r\n scrambleChars?: string;\r\n}\r\n\r\nexport function ScrambledText({\r\n text,\r\n className,\r\n speed = 50,\r\n scrambleChars = \"!<>-_\\\\/[]{}—=+*^?#________\"\r\n}: ScrambledTextProps) {\r\n const [displayText, setDisplayText] = useState(text);\r\n\r\n useEffect(() => {\r\n let iteration = 0;\r\n const interval = setInterval(() => {\r\n setDisplayText(\r\n text\r\n .split(\"\")\r\n .map((char, index) => {\r\n if (index < iteration) return text[index];\r\n return scrambleChars[Math.floor(Math.random() * scrambleChars.length)];\r\n })\r\n .join(\"\")\r\n );\r\n\r\n if (iteration >= text.length) {\r\n clearInterval(interval);\r\n }\r\n\r\n iteration += 1 / 3;\r\n }, speed);\r\n\r\n return () => clearInterval(interval);\r\n }, [text, speed, scrambleChars]);\r\n\r\n return (\r\n <span className={cn(\"font-mono\", className)}>\r\n {displayText}\r\n </span>\r\n );\r\n}\r\n\r\nexport default ScrambledText;\r\n","\"use client\";\r\n\r\nimport { useRef, useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MagneticTextProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n strength?: number;\r\n}\r\n\r\nexport function MagneticText({ children, className, strength = 0.5 }: MagneticTextProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [position, setPosition] = useState({ x: 0, y: 0 });\r\n\r\n const handleMouse = (e: React.MouseEvent<HTMLDivElement>) => {\r\n const { clientX, clientY } = e;\r\n const { height, width, left, top } = ref.current!.getBoundingClientRect();\r\n const middleX = clientX - (left + width / 2);\r\n const middleY = clientY - (top + height / 2);\r\n setPosition({ x: middleX * strength, y: middleY * strength });\r\n };\r\n\r\n const reset = () => {\r\n setPosition({ x: 0, y: 0 });\r\n };\r\n\r\n const { x, y } = position;\r\n\r\n return (\r\n <motion.div\r\n ref={ref}\r\n onMouseMove={handleMouse}\r\n onMouseLeave={reset}\r\n animate={{ x, y }}\r\n transition={{ type: \"spring\", stiffness: 150, damping: 15, mass: 0.1 }}\r\n className={cn(\"inline-block cursor-pointer\", className)}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default MagneticText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface DynamicTextProps {\r\n words: string[];\r\n className?: string;\r\n interval?: number;\r\n}\r\n\r\nexport function DynamicText({ words, className, interval = 3000 }: DynamicTextProps) {\r\n const [index, setIndex] = useState(0);\r\n\r\n useEffect(() => {\r\n const timer = setInterval(() => {\r\n setIndex((prev) => (prev + 1) % words.length);\r\n }, interval);\r\n return () => clearInterval(timer);\r\n }, [words.length, interval]);\r\n\r\n return (\r\n <div className={cn(\"relative inline-block overflow-hidden\", className)}>\r\n <AnimatePresence mode=\"wait\">\r\n <motion.span\r\n key={words[index]}\r\n initial={{ y: 20, opacity: 0 }}\r\n animate={{ y: 0, opacity: 1 }}\r\n exit={{ y: -20, opacity: 0 }}\r\n transition={{ duration: 0.3 }}\r\n className=\"inline-block\"\r\n >\r\n {words[index]}\r\n </motion.span>\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default DynamicText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RotatingTextProps {\r\n words: string[];\r\n className?: string;\r\n interval?: number;\r\n}\r\n\r\nexport function RotatingText({ words, className, interval = 2000 }: RotatingTextProps) {\r\n const [index, setIndex] = useState(0);\r\n\r\n useEffect(() => {\r\n const timer = setInterval(() => {\r\n setIndex((prev) => (prev + 1) % words.length);\r\n }, interval);\r\n return () => clearInterval(timer);\r\n }, [words.length, interval]);\r\n\r\n return (\r\n <span className={cn(\"inline-block relative\", className)}>\r\n <AnimatePresence mode=\"wait\">\r\n <motion.span\r\n key={words[index]}\r\n initial={{ rotateX: -90, opacity: 0 }}\r\n animate={{ rotateX: 0, opacity: 1 }}\r\n exit={{ rotateX: 90, opacity: 0 }}\r\n transition={{ duration: 0.4 }}\r\n className=\"inline-block\"\r\n style={{ transformStyle: \"preserve-3d\" }}\r\n >\r\n {words[index]}\r\n </motion.span>\r\n </AnimatePresence>\r\n </span>\r\n );\r\n}\r\n\r\nexport default RotatingText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface StaggerTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n staggerDelay?: number;\r\n}\r\n\r\nexport function StaggerText({ \r\n text, \r\n className, \r\n delay = 0,\r\n staggerDelay = 0.05 \r\n}: StaggerTextProps) {\r\n const letters = text.split(\"\");\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: {\r\n opacity: 1,\r\n transition: {\r\n staggerChildren: staggerDelay,\r\n delayChildren: delay,\r\n },\r\n },\r\n };\r\n\r\n const child = {\r\n hidden: { opacity: 0, y: 20 },\r\n visible: {\r\n opacity: 1,\r\n y: 0,\r\n transition: { type: \"spring\", damping: 12, stiffness: 200 },\r\n },\r\n };\r\n\r\n return (\r\n <motion.span\r\n className={cn(\"inline-flex\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={index}\r\n variants={child}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </motion.span>\r\n );\r\n}\r\n\r\nexport default StaggerText;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RainbowTextProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n speed?: number;\r\n}\r\n\r\nexport function RainbowText({ children, className, speed = 3 }: RainbowTextProps) {\r\n return (\r\n <span\r\n className={cn(\r\n \"inline-block bg-gradient-to-r from-red-500 via-yellow-500 via-green-500 via-blue-500 to-purple-500 bg-clip-text text-transparent bg-[length:200%_auto] animate-[rainbow_var(--rainbow-speed)_linear_infinite]\",\r\n className\r\n )}\r\n style={{ \"--rainbow-speed\": `${speed}s` } as React.CSSProperties}\r\n >\r\n {children}\r\n <style>{`\r\n @keyframes rainbow {\r\n 0% { background-position: 0% center; }\r\n 100% { background-position: 200% center; }\r\n }\r\n `}</style>\r\n </span>\r\n );\r\n}\r\n\r\nexport default RainbowText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CountUpProps {\r\n end: number;\r\n start?: number;\r\n duration?: number;\r\n className?: string;\r\n prefix?: string;\r\n suffix?: string;\r\n decimals?: number;\r\n}\r\n\r\nexport function CountUp({\r\n end,\r\n start = 0,\r\n duration = 2000,\r\n className,\r\n prefix = \"\",\r\n suffix = \"\",\r\n decimals = 0,\r\n}: CountUpProps) {\r\n const [count, setCount] = useState(start);\r\n\r\n useEffect(() => {\r\n let startTime: number | null = null;\r\n let animationFrame: number;\r\n\r\n const animate = (timestamp: number) => {\r\n if (!startTime) startTime = timestamp;\r\n const progress = Math.min((timestamp - startTime) / duration, 1);\r\n \r\n const easeOutQuart = 1 - Math.pow(1 - progress, 4);\r\n const currentCount = start + (end - start) * easeOutQuart;\r\n \r\n setCount(currentCount);\r\n\r\n if (progress < 1) {\r\n animationFrame = requestAnimationFrame(animate);\r\n }\r\n };\r\n\r\n animationFrame = requestAnimationFrame(animate);\r\n\r\n return () => cancelAnimationFrame(animationFrame);\r\n }, [start, end, duration]);\r\n\r\n return (\r\n <span className={cn(\"tabular-nums\", className)}>\r\n {prefix}\r\n {count.toFixed(decimals)}\r\n {suffix}\r\n </span>\r\n );\r\n}\r\n\r\nexport default CountUp;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlassCardProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function GlassCard({ children, className, ...props }: GlassCardProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"rounded-2xl p-6\",\r\n \"bg-white/10 dark:bg-black/10\",\r\n \"backdrop-blur-xl\",\r\n \"border border-white/20 dark:border-white/10\",\r\n \"shadow-xl\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default GlassCard;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HoverCardProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function HoverCard({ children, className, ...props }: HoverCardProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"rounded-2xl p-6\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-200 dark:border-zinc-800\",\r\n \"shadow-lg\",\r\n \"transition-all duration-300 ease-out\",\r\n \"hover:shadow-2xl hover:-translate-y-1\",\r\n \"hover:border-zinc-300 dark:hover:border-zinc-700\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default HoverCard;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CardFlipProps {\r\n frontContent: React.ReactNode;\r\n backContent: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardFlip({ frontContent, backContent, className }: CardFlipProps) {\r\n const [isFlipped, setIsFlipped] = useState(false);\r\n\r\n return (\r\n <div\r\n className={cn(\"relative w-full h-full [perspective:1000px]\", className)}\r\n onMouseEnter={() => setIsFlipped(true)}\r\n onMouseLeave={() => setIsFlipped(false)}\r\n >\r\n <div\r\n className={cn(\r\n \"relative w-full h-full [transform-style:preserve-3d] transition-transform duration-700\",\r\n isFlipped ? \"[transform:rotateY(180deg)]\" : \"\"\r\n )}\r\n >\r\n {/* Front */}\r\n <div\r\n className={cn(\r\n \"absolute inset-0 w-full h-full [backface-visibility:hidden]\",\r\n \"rounded-2xl bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-200 dark:border-zinc-800\",\r\n \"shadow-lg p-6\"\r\n )}\r\n >\r\n {frontContent}\r\n </div>\r\n\r\n {/* Back */}\r\n <div\r\n className={cn(\r\n \"absolute inset-0 w-full h-full [backface-visibility:hidden] [transform:rotateY(180deg)]\",\r\n \"rounded-2xl bg-zinc-100 dark:bg-zinc-800\",\r\n \"border border-zinc-200 dark:border-zinc-700\",\r\n \"shadow-lg p-6\"\r\n )}\r\n >\r\n {backContent}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default CardFlip;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingDotsProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function LoadingDots({ className, size = \"md\" }: LoadingDotsProps) {\r\n const sizeClasses = {\r\n sm: \"w-1.5 h-1.5\",\r\n md: \"w-2.5 h-2.5\",\r\n lg: \"w-4 h-4\",\r\n };\r\n\r\n return (\r\n <div className={cn(\"flex items-center justify-center gap-1\", className)}>\r\n {[0, 1, 2].map((i) => (\r\n <div\r\n key={i}\r\n className={cn(\r\n sizeClasses[size],\r\n \"rounded-full bg-current animate-bounce\"\r\n )}\r\n style={{ animationDelay: `${i * 0.15}s` }}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingDots;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingSpinnerProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function LoadingSpinner({ className, size = \"md\" }: LoadingSpinnerProps) {\r\n const sizeClasses = {\r\n sm: \"w-4 h-4 border-2\",\r\n md: \"w-8 h-8 border-3\",\r\n lg: \"w-12 h-12 border-4\",\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\r\n sizeClasses[size],\r\n \"rounded-full border-current border-t-transparent animate-spin\",\r\n className\r\n )}\r\n />\r\n );\r\n}\r\n\r\nexport default LoadingSpinner;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingBarProps {\r\n className?: string;\r\n color?: string;\r\n}\r\n\r\nexport function LoadingBar({ className, color = \"bg-blue-500\" }: LoadingBarProps) {\r\n return (\r\n <div className={cn(\"h-1 w-full overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800\", className)}>\r\n <motion.div\r\n className={cn(\"h-full rounded-full\", color)}\r\n initial={{ x: \"-100%\" }}\r\n animate={{ x: \"100%\" }}\r\n transition={{\r\n repeat: Infinity,\r\n duration: 1.5,\r\n ease: \"easeInOut\",\r\n }}\r\n style={{ width: \"50%\" }}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingBar;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingPulseProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n color?: string;\r\n}\r\n\r\nconst sizes = {\r\n sm: \"w-8 h-8\",\r\n md: \"w-12 h-12\",\r\n lg: \"w-16 h-16\",\r\n};\r\n\r\nexport function LoadingPulse({ className, size = \"md\", color = \"bg-blue-500\" }: LoadingPulseProps) {\r\n return (\r\n <div className={cn(\"relative\", sizes[size], className)}>\r\n <motion.div\r\n className={cn(\"absolute inset-0 rounded-full\", color)}\r\n animate={{\r\n scale: [1, 1.5, 1],\r\n opacity: [0.5, 0, 0.5],\r\n }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n <div className={cn(\"absolute inset-2 rounded-full\", color)} />\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingPulse;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingBounceProps {\r\n className?: string;\r\n color?: string;\r\n}\r\n\r\nexport function LoadingBounce({ className, color = \"bg-zinc-900 dark:bg-white\" }: LoadingBounceProps) {\r\n return (\r\n <div className={cn(\"flex gap-1\", className)}>\r\n {[0, 1, 2].map((i) => (\r\n <motion.div\r\n key={i}\r\n className={cn(\"w-3 h-3 rounded-full\", color)}\r\n animate={{ y: [0, -10, 0] }}\r\n transition={{\r\n duration: 0.6,\r\n repeat: Infinity,\r\n delay: i * 0.1,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingBounce;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useMemo, useState } from \"react\";\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport interface AnimatedListProps {\r\n className?: string;\r\n children: React.ReactNode;\r\n delay?: number;\r\n}\r\n\r\nexport function AnimatedList({\r\n className,\r\n children,\r\n delay = 1000,\r\n}: AnimatedListProps) {\r\n const [index, setIndex] = useState(0);\r\n const childrenArray = React.Children.toArray(children);\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setIndex((prevIndex) => (prevIndex + 1) % childrenArray.length);\r\n }, delay);\r\n return () => clearInterval(interval);\r\n }, [childrenArray.length, delay]);\r\n\r\n const itemsToShow = useMemo(\r\n () => childrenArray.slice(0, index + 1).reverse(),\r\n [index, childrenArray]\r\n );\r\n\r\n return (\r\n <div className={cn(\"flex flex-col items-center gap-4\", className)}>\r\n <AnimatePresence>\r\n {itemsToShow.map((item, idx) => (\r\n <AnimatedListItem key={idx}>\r\n {item}\r\n </AnimatedListItem>\r\n ))}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport function AnimatedListItem({ children }: { children: React.ReactNode }) {\r\n return (\r\n <motion.div\r\n initial={{ scale: 0, opacity: 0 }}\r\n animate={{ scale: 1, opacity: 1 }}\r\n exit={{ scale: 0, opacity: 0 }}\r\n transition={{ type: \"spring\", stiffness: 350, damping: 40 }}\r\n layout\r\n className=\"mx-auto w-full\"\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default AnimatedList;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SkeletonProps {\r\n className?: string;\r\n variant?: \"text\" | \"circular\" | \"rectangular\";\r\n width?: string | number;\r\n height?: string | number;\r\n}\r\n\r\nexport function Skeleton({ \r\n className, \r\n variant = \"text\",\r\n width,\r\n height \r\n}: SkeletonProps) {\r\n const variants = {\r\n text: \"h-4 rounded\",\r\n circular: \"rounded-full\",\r\n rectangular: \"rounded-lg\",\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"animate-pulse bg-zinc-200 dark:bg-zinc-800\",\r\n variants[variant],\r\n className\r\n )}\r\n style={{ width, height }}\r\n />\r\n );\r\n}\r\n\r\nexport default Skeleton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TooltipProps {\r\n children: React.ReactNode;\r\n content: string;\r\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\r\n className?: string;\r\n}\r\n\r\nexport function Tooltip({ \r\n children, \r\n content, \r\n position = \"top\",\r\n className \r\n}: TooltipProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n\r\n const positions = {\r\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\r\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\r\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\r\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\r\n };\r\n\r\n const animations = {\r\n top: { initial: { opacity: 0, y: 5 }, animate: { opacity: 1, y: 0 } },\r\n bottom: { initial: { opacity: 0, y: -5 }, animate: { opacity: 1, y: 0 } },\r\n left: { initial: { opacity: 0, x: 5 }, animate: { opacity: 1, x: 0 } },\r\n right: { initial: { opacity: 0, x: -5 }, animate: { opacity: 1, x: 0 } },\r\n };\r\n\r\n return (\r\n <div\r\n className=\"relative inline-block\"\r\n onMouseEnter={() => setIsVisible(true)}\r\n onMouseLeave={() => setIsVisible(false)}\r\n >\r\n {children}\r\n <AnimatePresence>\r\n {isVisible && (\r\n <motion.div\r\n className={cn(\r\n \"absolute z-50 px-2 py-1 text-sm text-white bg-zinc-900 dark:bg-zinc-100 dark:text-zinc-900 rounded whitespace-nowrap\",\r\n positions[position],\r\n className\r\n )}\r\n initial={animations[position].initial}\r\n animate={animations[position].animate}\r\n exit={animations[position].initial}\r\n transition={{ duration: 0.15 }}\r\n >\r\n {content}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Tooltip;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BadgeProps {\r\n children: React.ReactNode;\r\n variant?: \"default\" | \"success\" | \"warning\" | \"danger\" | \"info\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n className?: string;\r\n}\r\n\r\nconst variants = {\r\n default: \"bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-zinc-100\",\r\n success: \"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400\",\r\n warning: \"bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400\",\r\n danger: \"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400\",\r\n info: \"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400\",\r\n};\r\n\r\nconst sizes = {\r\n sm: \"px-2 py-0.5 text-xs\",\r\n md: \"px-2.5 py-1 text-sm\",\r\n lg: \"px-3 py-1.5 text-base\",\r\n};\r\n\r\nexport function Badge({ \r\n children, \r\n variant = \"default\", \r\n size = \"md\",\r\n className \r\n}: BadgeProps) {\r\n return (\r\n <span\r\n className={cn(\r\n \"inline-flex items-center font-medium rounded-full\",\r\n variants[variant],\r\n sizes[size],\r\n className\r\n )}\r\n >\r\n {children}\r\n </span>\r\n );\r\n}\r\n\r\nexport default Badge;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface AvatarProps {\r\n src?: string;\r\n alt?: string;\r\n fallback?: string;\r\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n className?: string;\r\n}\r\n\r\nconst sizes = {\r\n sm: \"w-8 h-8 text-xs\",\r\n md: \"w-10 h-10 text-sm\",\r\n lg: \"w-12 h-12 text-base\",\r\n xl: \"w-16 h-16 text-lg\",\r\n};\r\n\r\nexport function Avatar({ \r\n src, \r\n alt = \"\", \r\n fallback,\r\n size = \"md\",\r\n className \r\n}: AvatarProps) {\r\n const initials = fallback || alt.split(\" \").map(n => n[0]).join(\"\").slice(0, 2).toUpperCase();\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"relative inline-flex items-center justify-center rounded-full bg-zinc-200 dark:bg-zinc-800 overflow-hidden\",\r\n sizes[size],\r\n className\r\n )}\r\n >\r\n {src ? (\r\n <img src={src} alt={alt} className=\"w-full h-full object-cover\" />\r\n ) : (\r\n <span className=\"font-medium text-zinc-600 dark:text-zinc-400\">\r\n {initials}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Avatar;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ProgressProps {\r\n value: number;\r\n max?: number;\r\n className?: string;\r\n color?: string;\r\n showLabel?: boolean;\r\n}\r\n\r\nexport function Progress({ \r\n value, \r\n max = 100, \r\n className,\r\n color = \"bg-blue-500\",\r\n showLabel = false\r\n}: ProgressProps) {\r\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\r\n\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n <div className=\"h-2 w-full overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800\">\r\n <motion.div\r\n className={cn(\"h-full rounded-full\", color)}\r\n initial={{ width: 0 }}\r\n animate={{ width: `${percentage}%` }}\r\n transition={{ duration: 0.5, ease: \"easeOut\" }}\r\n />\r\n </div>\r\n {showLabel && (\r\n <span className=\"mt-1 text-sm text-zinc-600 dark:text-zinc-400\">\r\n {Math.round(percentage)}%\r\n </span>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Progress;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SwitchProps {\r\n checked?: boolean;\r\n onChange?: (checked: boolean) => void;\r\n disabled?: boolean;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n className?: string;\r\n}\r\n\r\nconst sizes = {\r\n sm: { track: \"w-8 h-4\", thumb: \"w-3 h-3\", translate: 16 },\r\n md: { track: \"w-11 h-6\", thumb: \"w-5 h-5\", translate: 20 },\r\n lg: { track: \"w-14 h-7\", thumb: \"w-6 h-6\", translate: 28 },\r\n};\r\n\r\nexport function Switch({ \r\n checked = false, \r\n onChange, \r\n disabled = false,\r\n size = \"md\",\r\n className \r\n}: SwitchProps) {\r\n const sizeConfig = sizes[size];\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n role=\"switch\"\r\n aria-checked={checked}\r\n disabled={disabled}\r\n onClick={() => onChange?.(!checked)}\r\n className={cn(\r\n \"relative inline-flex shrink-0 cursor-pointer rounded-full transition-colors\",\r\n checked ? \"bg-blue-500\" : \"bg-zinc-300 dark:bg-zinc-700\",\r\n disabled && \"opacity-50 cursor-not-allowed\",\r\n sizeConfig.track,\r\n className\r\n )}\r\n >\r\n <motion.span\r\n className={cn(\r\n \"pointer-events-none inline-block rounded-full bg-white shadow-lg\",\r\n sizeConfig.thumb\r\n )}\r\n animate={{ x: checked ? sizeConfig.translate : 2 }}\r\n transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\r\n style={{ marginTop: 2 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default Switch;\r\n"]}
|