bynana-ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/README.md +134 -0
  2. package/dist/animated-list/index.js +2 -0
  3. package/dist/animated-list/index.js.map +1 -0
  4. package/dist/animated-list/index.mjs +2 -0
  5. package/dist/animated-list/index.mjs.map +1 -0
  6. package/dist/blur-text/index.js +2 -0
  7. package/dist/blur-text/index.js.map +1 -0
  8. package/dist/blur-text/index.mjs +2 -0
  9. package/dist/blur-text/index.mjs.map +1 -0
  10. package/dist/bounce-button/index.js +2 -0
  11. package/dist/bounce-button/index.js.map +1 -0
  12. package/dist/bounce-button/index.mjs +2 -0
  13. package/dist/bounce-button/index.mjs.map +1 -0
  14. package/dist/bounce-text/index.js +2 -0
  15. package/dist/bounce-text/index.js.map +1 -0
  16. package/dist/bounce-text/index.mjs +2 -0
  17. package/dist/bounce-text/index.mjs.map +1 -0
  18. package/dist/card-flip/index.js +2 -0
  19. package/dist/card-flip/index.js.map +1 -0
  20. package/dist/card-flip/index.mjs +2 -0
  21. package/dist/card-flip/index.mjs.map +1 -0
  22. package/dist/flip-text/index.js +2 -0
  23. package/dist/flip-text/index.js.map +1 -0
  24. package/dist/flip-text/index.mjs +2 -0
  25. package/dist/flip-text/index.mjs.map +1 -0
  26. package/dist/glass-card/index.js +2 -0
  27. package/dist/glass-card/index.js.map +1 -0
  28. package/dist/glass-card/index.mjs +2 -0
  29. package/dist/glass-card/index.mjs.map +1 -0
  30. package/dist/glitch-text/index.js +2 -0
  31. package/dist/glitch-text/index.js.map +1 -0
  32. package/dist/glitch-text/index.mjs +2 -0
  33. package/dist/glitch-text/index.mjs.map +1 -0
  34. package/dist/glow-button/index.js +2 -0
  35. package/dist/glow-button/index.js.map +1 -0
  36. package/dist/glow-button/index.mjs +2 -0
  37. package/dist/glow-button/index.mjs.map +1 -0
  38. package/dist/gradient-text/index.js +2 -0
  39. package/dist/gradient-text/index.js.map +1 -0
  40. package/dist/gradient-text/index.mjs +2 -0
  41. package/dist/gradient-text/index.mjs.map +1 -0
  42. package/dist/hover-card/index.js +2 -0
  43. package/dist/hover-card/index.js.map +1 -0
  44. package/dist/hover-card/index.mjs +2 -0
  45. package/dist/hover-card/index.mjs.map +1 -0
  46. package/dist/index.js +2 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/index.mjs +2 -0
  49. package/dist/index.mjs.map +1 -0
  50. package/dist/loading-dots/index.js +2 -0
  51. package/dist/loading-dots/index.js.map +1 -0
  52. package/dist/loading-dots/index.mjs +2 -0
  53. package/dist/loading-dots/index.mjs.map +1 -0
  54. package/dist/loading-spinner/index.js +2 -0
  55. package/dist/loading-spinner/index.js.map +1 -0
  56. package/dist/loading-spinner/index.mjs +2 -0
  57. package/dist/loading-spinner/index.mjs.map +1 -0
  58. package/dist/magnetic-button/index.js +2 -0
  59. package/dist/magnetic-button/index.js.map +1 -0
  60. package/dist/magnetic-button/index.mjs +2 -0
  61. package/dist/magnetic-button/index.mjs.map +1 -0
  62. package/dist/pulse-button/index.js +2 -0
  63. package/dist/pulse-button/index.js.map +1 -0
  64. package/dist/pulse-button/index.mjs +2 -0
  65. package/dist/pulse-button/index.mjs.map +1 -0
  66. package/dist/ripple-button/index.js +2 -0
  67. package/dist/ripple-button/index.js.map +1 -0
  68. package/dist/ripple-button/index.mjs +2 -0
  69. package/dist/ripple-button/index.mjs.map +1 -0
  70. package/dist/shimmer-text/index.js +2 -0
  71. package/dist/shimmer-text/index.js.map +1 -0
  72. package/dist/shimmer-text/index.mjs +2 -0
  73. package/dist/shimmer-text/index.mjs.map +1 -0
  74. package/dist/shine-button/index.js +2 -0
  75. package/dist/shine-button/index.js.map +1 -0
  76. package/dist/shine-button/index.mjs +2 -0
  77. package/dist/shine-button/index.mjs.map +1 -0
  78. package/dist/typewriter/index.js +2 -0
  79. package/dist/typewriter/index.js.map +1 -0
  80. package/dist/typewriter/index.mjs +2 -0
  81. package/dist/typewriter/index.mjs.map +1 -0
  82. package/dist/wave-text/index.js +2 -0
  83. package/dist/wave-text/index.js.map +1 -0
  84. package/dist/wave-text/index.mjs +2 -0
  85. package/dist/wave-text/index.mjs.map +1 -0
  86. package/package.json +162 -0
@@ -0,0 +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"]}
package/dist/index.mjs ADDED
@@ -0,0 +1,2 @@
1
+ import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsxs,jsx}from'react/jsx-runtime';import _e,{useState,useRef,useEffect,useMemo}from'react';import {AnimatePresence,motion,useMotionValue,useSpring}from'framer-motion';function t(...e){return twMerge(clsx(e))}function K({children:e,className:r,...n}){return jsxs("button",{className:t("relative overflow-hidden px-6 py-3 rounded-xl font-medium","bg-zinc-900 text-white hover:bg-zinc-800","dark:bg-zinc-800 dark:hover:bg-zinc-700 dark:text-white","transition-colors duration-200",r),...n,children:[jsx("span",{className:t("absolute inset-0 overflow-hidden rounded-[inherit]","before:absolute before:inset-0","before:-translate-x-full","before:animate-shimmer","before:bg-gradient-to-r","before:from-transparent before:via-white/40 before:to-transparent","before:skew-x-[-20deg]")}),jsx("span",{className:"relative z-10",children:e})]})}function ee({children:e,className:r,onClick:n,...a}){let[o,i]=useState([]);function m(l){let s=l.currentTarget.getBoundingClientRect(),p=l.clientX-s.left,c=l.clientY-s.top,u={x:p,y:c,id:Date.now()};i(f=>[...f,u]),setTimeout(()=>{i(f=>f.filter(M=>M.id!==u.id));},1e3),n?.(l);}return jsxs("button",{className:t("relative overflow-hidden px-6 py-3 rounded-xl font-medium","bg-zinc-900 text-white hover:bg-zinc-800","dark:bg-zinc-100 dark:text-black dark:hover:bg-zinc-200","transition-colors duration-200",r),onClick:m,...a,children:[jsx(AnimatePresence,{children:o.map(l=>jsx(motion.span,{className:"absolute rounded-full pointer-events-none border-2 border-white/50 dark:border-black/50",style:{left:l.x,top:l.y,transform:"translate(-50%, -50%)"},initial:{width:0,height:0,opacity:.9},animate:{width:500,height:500,opacity:0},exit:{opacity:0},transition:{duration:1,ease:[.4,0,.2,1]}},l.id))}),jsx("span",{className:"relative z-10",children:e})]})}function ae({children:e,className:r,strength:n=.5,radius:a=200,...o}){let i=useRef(null),[m,l]=useState(false),d=useMotionValue(0),s=useMotionValue(0),p={damping:20,stiffness:300,mass:.5},c=useSpring(d,p),u=useSpring(s,p);return jsx("div",{ref:i,className:"relative inline-flex items-center justify-center",onMouseMove:L=>{if(!i.current)return;let b=i.current.getBoundingClientRect(),W=b.left+b.width/2,q=b.top+b.height/2,h=L.clientX-W,v=L.clientY-q,I=Math.sqrt(h*h+v*v);if(I<a){let S=1-I/a;d.set(h*n*S),s.set(v*n*S);}},onMouseLeave:()=>{l(false),d.set(0),s.set(0);},onMouseEnter:()=>l(true),style:{padding:a/2,margin:-a/2},children:jsx(motion.div,{style:{x:c,y:u},children:jsx("button",{className:t("px-6 py-3 rounded-xl font-medium","bg-zinc-900 text-white hover:bg-zinc-800","dark:bg-zinc-100 dark:text-black dark:hover:bg-zinc-200","transition-shadow duration-300",m&&"shadow-lg",r),...o,children:e})})})}function se({children:e,className:r,onClick:n,...a}){let[o,i]=useState(false);function m(l){i(true),setTimeout(()=>i(false),1500),n?.(l);}return jsxs("div",{className:"relative inline-block",children:[jsx(motion.div,{className:"absolute -bottom-2 left-1/2 w-16 h-2 bg-black/20 rounded-full blur-sm",animate:o?{scaleX:[1,.8,1.2,.9,1.1,.95,1],opacity:[.3,.6,.2,.5,.3,.4,.3]}:{},style:{x:"-50%"},transition:{duration:1.5,ease:"easeOut"}}),jsx(motion.div,{animate:o?{y:[0,-40,-20,-35,-10,-25,-5,-15,0],rotate:[0,-5,2,-3,1,-2,.5,-1,0]}:{},transition:{duration:1.5,ease:"easeOut",times:[0,.2,.35,.5,.65,.75,.85,.95,1]},whileHover:o?{}:{y:[0,-8,0]},children:jsx("button",{className:t("px-6 py-3 rounded-xl font-medium","bg-orange-500 hover:bg-orange-600 text-white","transition-colors duration-200",r),onClick:m,disabled:o,...a,children:e})})]})}function me({children:e,className:r,glowColor:n="rgba(59, 130, 246, 0.8)",...a}){let[o,i]=useState(false);return jsxs(motion.div,{className:"relative inline-block",onMouseEnter:()=>i(true),onMouseLeave:()=>i(false),animate:{filter:o?[`drop-shadow(0 0 10px ${n})`,`drop-shadow(0 0 25px ${n})`,`drop-shadow(0 0 10px ${n})`]:"drop-shadow(0 0 0px transparent)"},transition:{duration:o?1.5:.3,repeat:o?1/0:0},children:[jsx(motion.div,{className:"absolute inset-0 rounded-xl",animate:o?{boxShadow:[`0 0 20px ${n}`,`0 0 40px ${n}`,`0 0 20px ${n}`],scale:[1,1.05,1]}:{boxShadow:"0 0 0px transparent",scale:1},transition:{duration:2,repeat:o?1/0:0,ease:"easeInOut"}}),jsx("button",{className:t("relative px-6 py-3 rounded-xl font-medium","bg-blue-600 hover:bg-blue-700 text-white","transition-all duration-300",o&&"bg-blue-500",r),...a,children:e})]})}function pe({children:e,className:r,pulseColor:n="rgba(239, 68, 68, 0.5)",...a}){return jsxs("div",{className:"relative inline-block",children:[jsx(motion.div,{className:"absolute inset-0 rounded-xl",style:{backgroundColor:n},animate:{scale:[1,1.3,1,1.2,1],opacity:[.6,0,.6,0,.6]},transition:{duration:1.2,repeat:1/0,ease:"easeInOut",times:[0,.2,.4,.6,1]}}),jsx(motion.div,{className:"absolute inset-0 rounded-xl",style:{backgroundColor:n},animate:{scale:[1,1.5,1,1.4,1],opacity:[.4,0,.4,0,.4]},transition:{duration:1.2,delay:.1,repeat:1/0,ease:"easeInOut",times:[0,.2,.4,.6,1]}}),jsx(motion.div,{animate:{scale:[1,1.05,1,1.03,1]},transition:{duration:1.2,repeat:1/0,ease:"easeInOut",times:[0,.2,.4,.6,1]},children:jsx("button",{className:t("relative px-6 py-3 rounded-xl font-medium","bg-red-500 hover:bg-red-600 text-white","transition-colors duration-200",r),...a,children:e})})]})}function fe({children:e,className:r="",colors:n=["#40ffaa","#4079ff","#40ffaa","#4079ff","#40ffaa"],animationSpeed:a=8}){return jsx("span",{className:t("bg-clip-text text-transparent bg-[length:200%_auto] animate-gradient",r),style:{backgroundImage:`linear-gradient(to right, ${n.join(", ")})`,animationDuration:`${a}s`},children:e})}function xe({text:e="Text Shimmer",className:r}){return jsx("div",{className:"flex items-center justify-center p-8",children:jsx(motion.div,{className:"relative px-4 py-2 overflow-hidden",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5},children:jsx(motion.h1,{className:t("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),animate:{backgroundPosition:["200% center","-200% center"]},transition:{duration:2.5,ease:"linear",repeat:1/0},children:e})})})}function ge({text:e="Glitch Text",className:r,glitchIntensity:n="medium",color:a="orange",isStatic:o=false,size:i="md"}){let l={rainbow:{primary:"#a855f7",before:"#22d3ee",after:"#f472b6"},blue:{primary:"#3b82f6",before:"#60a5fa",after:"#1d4ed8"},purple:{primary:"#8b5cf6",before:"#a78bfa",after:"#6d28d9"},cyan:{primary:"#06b6d4",before:"#22d3ee",after:"#0891b2"},pink:{primary:"#ec4899",before:"#f472b6",after:"#db2777"},orange:{primary:"#f97316",before:"#fb923c",after:"#ea580c"}}[a],s={light:{translateRange:2,skewRange:.5},medium:{translateRange:3,skewRange:1},heavy:{translateRange:5,skewRange:2},extreme:{translateRange:8,skewRange:3}}[n],p={sm:"text-2xl",md:"text-4xl",lg:"text-5xl",xl:"text-6xl","2xl":"text-7xl","3xl":"text-8xl"},c={animate:{x:[0,s.translateRange,-s.translateRange,0],y:[0,-s.translateRange,s.translateRange,0],skewX:[0,s.skewRange,-s.skewRange,0]},transition:{duration:.5,repeat:1/0,ease:"easeInOut"}};return jsx("div",{className:t("relative flex items-center justify-center p-8",r),children:jsxs(motion.div,{className:t("relative font-bold tracking-wider",p[i]),style:{color:l.primary},animate:o?void 0:c.animate,transition:c.transition,children:[e,jsx(motion.span,{className:"absolute inset-0 pointer-events-none",style:{color:l.before,opacity:.8},animate:o?void 0:{x:[-s.translateRange,s.translateRange,0],y:[s.translateRange,-s.translateRange,0]},transition:{duration:.5,repeat:1/0},children:e}),jsx(motion.span,{className:"absolute inset-0 pointer-events-none",style:{color:l.after,opacity:.8},animate:o?void 0:{x:[s.translateRange,-s.translateRange,0],y:[-s.translateRange,s.translateRange,0]},transition:{duration:.5,repeat:1/0},children:e})]})})}function ye({text:e,className:r,delay:n=0,duration:a=.4}){let o=Array.from(e);return jsx("div",{className:t("flex",r),children:o.map((i,m)=>jsx(motion.span,{className:"inline-block",style:{whiteSpace:i===" "?"pre":"normal"},animate:{y:[0,-20,0]},transition:{delay:n+m*.03,duration:a,ease:"easeInOut",repeat:1/0,repeatDelay:.5},children:i},`${i}-${m}`))})}function Be({text:e="",delay:r=200,className:n="",animateBy:a="words",direction:o="top"}){let i=a==="words"?e.split(" "):e.split(""),[m,l]=useState(false),d=useRef(null);useEffect(()=>{if(!d.current)return;let c=new IntersectionObserver(([u])=>{u.isIntersecting&&(l(true),c.unobserve(d.current));},{threshold:.1});return c.observe(d.current),()=>c.disconnect()},[]);let s=useMemo(()=>o==="top"?{filter:"blur(10px)",opacity:0,y:-50}:{filter:"blur(10px)",opacity:0,y:50},[o]),p={filter:"blur(0px)",opacity:1,y:0};return jsx("p",{ref:d,className:t("flex flex-wrap",n),children:i.map((c,u)=>jsxs(motion.span,{initial:s,animate:m?p:s,transition:{duration:.5,delay:u*r/1e3,ease:"easeOut"},className:"inline-block",style:{willChange:"transform, filter, opacity"},children:[c===" "?"\xA0":c,a==="words"&&u<i.length-1&&"\xA0"]},u))})}function Ie({text:e="Hello World",className:r,speed:n=50,delay:a=0,cursor:o=true,loop:i=false}){let[m,l]=useState(""),[d,s]=useState(false);return useEffect(()=>{let p,c=0,u=false,f=()=>{s(true),u?c>0?(l(e.slice(0,c-1)),c--,p=setTimeout(f,n/2)):(u=false,p=setTimeout(f,500)):c<e.length?(l(e.slice(0,c+1)),c++,p=setTimeout(f,n)):(s(false),i&&(p=setTimeout(()=>{u=true,f();},2e3)));};return p=setTimeout(f,a),()=>clearTimeout(p)},[e,n,a,i]),jsxs("span",{className:t("inline-block font-mono",r),children:[m,o&&jsx("span",{className:t("ml-0.5 inline-block w-[2px] h-[1em] bg-current",d?"animate-blink":"")})]})}function He({text:e,className:r,amplitude:n=10,frequency:a=1.5}){let o=Array.from(e);return jsx("div",{className:t("flex",r),children:o.map((i,m)=>jsx(motion.span,{className:"inline-block",style:{whiteSpace:i===" "?"pre":"normal"},animate:{y:[0,-n,0,n,0]},transition:{duration:a,repeat:1/0,delay:m*.08,ease:"easeInOut"},children:i},`${i}-${m}`))})}function Ee({text:e,className:r,delay:n=0}){let a=Array.from(e);return jsx("div",{className:t("flex",r),style:{perspective:"1000px"},children:a.map((o,i)=>jsx(motion.span,{className:"inline-block origin-center",style:{whiteSpace:o===" "?"pre":"normal"},animate:{rotateX:[0,360]},transition:{duration:1.5,repeat:1/0,delay:n+i*.08,ease:"easeInOut",repeatDelay:.8},children:o},`${o}-${i}`))})}function Ge({children:e,className:r,...n}){return jsx("div",{className:t("rounded-2xl p-6","bg-white/10 dark:bg-black/10","backdrop-blur-xl","border border-white/20 dark:border-white/10","shadow-xl",r),...n,children:e})}function De({children:e,className:r,...n}){return jsx("div",{className:t("rounded-2xl p-6","bg-white dark:bg-zinc-900","border border-zinc-200 dark:border-zinc-800","shadow-lg","transition-all duration-300 ease-out","hover:shadow-2xl hover:-translate-y-1","hover:border-zinc-300 dark:hover:border-zinc-700",r),...n,children:e})}function Xe({frontContent:e,backContent:r,className:n}){let[a,o]=useState(false);return jsx("div",{className:t("relative w-full h-full [perspective:1000px]",n),onMouseEnter:()=>o(true),onMouseLeave:()=>o(false),children:jsxs("div",{className:t("relative w-full h-full [transform-style:preserve-3d] transition-transform duration-700",a?"[transform:rotateY(180deg)]":""),children:[jsx("div",{className:t("absolute inset-0 w-full h-full [backface-visibility:hidden]","rounded-2xl bg-white dark:bg-zinc-900","border border-zinc-200 dark:border-zinc-800","shadow-lg p-6"),children:e}),jsx("div",{className:t("absolute inset-0 w-full h-full [backface-visibility:hidden] [transform:rotateY(180deg)]","rounded-2xl bg-zinc-100 dark:bg-zinc-800","border border-zinc-200 dark:border-zinc-700","shadow-lg p-6"),children:r})]})})}function Ve({className:e,size:r="md"}){let n={sm:"w-1.5 h-1.5",md:"w-2.5 h-2.5",lg:"w-4 h-4"};return jsx("div",{className:t("flex items-center justify-center gap-1",e),children:[0,1,2].map(a=>jsx("div",{className:t(n[r],"rounded-full bg-current animate-bounce"),style:{animationDelay:`${a*.15}s`}},a))})}function We({className:e,size:r="md"}){return jsx("div",{className:t({sm:"w-4 h-4 border-2",md:"w-8 h-8 border-3",lg:"w-12 h-12 border-4"}[r],"rounded-full border-current border-t-transparent animate-spin",e)})}function je({className:e,children:r,delay:n=1e3}){let[a,o]=useState(0),i=_e.Children.toArray(r);useEffect(()=>{let l=setInterval(()=>{o(d=>(d+1)%i.length);},n);return ()=>clearInterval(l)},[i.length,n]);let m=useMemo(()=>i.slice(0,a+1).reverse(),[a,i]);return jsx("div",{className:t("flex flex-col items-center gap-4",e),children:jsx(AnimatePresence,{children:m.map((l,d)=>jsx(V,{children:l},d))})})}function V({children:e}){return jsx(motion.div,{initial:{scale:0,opacity:0},animate:{scale:1,opacity:1},exit:{scale:0,opacity:0},transition:{type:"spring",stiffness:350,damping:40},layout:true,className:"mx-auto w-full",children:e})}export{je as AnimatedList,V as AnimatedListItem,Be as BlurText,se as BounceButton,ye as BounceText,Xe as CardFlip,Ee as FlipText,Ge as GlassCard,ge as GlitchText,me as GlowButton,fe as GradientText,De as HoverCard,Ve as LoadingDots,We as LoadingSpinner,ae as MagneticButton,pe as PulseButton,ee as RippleButton,xe as ShimmerText,K as ShineButton,Ie as Typewriter,He as WaveText,t as cn};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +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.mjs","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"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function s(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function m({className:e,size:a="md"}){let r={sm:"w-1.5 h-1.5",md:"w-2.5 h-2.5",lg:"w-4 h-4"};return jsxRuntime.jsx("div",{className:s("flex items-center justify-center gap-1",e),children:[0,1,2].map(t=>jsxRuntime.jsx("div",{className:s(r[a],"rounded-full bg-current animate-bounce"),style:{animationDelay:`${t*.15}s`}},t))})}var u=m;exports.LoadingDots=m;exports.default=u;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/loading-dots/index.tsx"],"names":["cn","inputs","twMerge","clsx","LoadingDots","className","size","sizeClasses","jsx","i","loading_dots_default"],"mappings":"+KAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCKO,SAASG,CAAAA,CAAY,CAAE,SAAA,CAAAC,EAAW,IAAA,CAAAC,CAAAA,CAAO,IAAK,CAAA,CAAqB,CACxE,IAAMC,CAAAA,CAAc,CAClB,EAAA,CAAI,aAAA,CACJ,GAAI,aAAA,CACJ,EAAA,CAAI,SACN,CAAA,CAEA,OACEC,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWR,CAAAA,CAAG,yCAA0CK,CAAS,CAAA,CACnE,QAAA,CAAA,CAAC,CAAA,CAAG,EAAG,CAAC,CAAA,CAAE,IAAKI,CAAAA,EACdD,cAAAA,CAAC,OAEC,SAAA,CAAWR,CAAAA,CACTO,CAAAA,CAAYD,CAAI,EAChB,wCACF,CAAA,CACA,KAAA,CAAO,CAAE,eAAgB,CAAA,EAAGG,CAAAA,CAAI,GAAI,CAAA,CAAA,CAAI,GALnCA,CAMP,CACD,EACH,CAEJ,KAEOC,CAAAA,CAAQN","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 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"]}
@@ -0,0 +1,2 @@
1
+ import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function s(...e){return twMerge(clsx(e))}function m({className:e,size:a="md"}){let r={sm:"w-1.5 h-1.5",md:"w-2.5 h-2.5",lg:"w-4 h-4"};return jsx("div",{className:s("flex items-center justify-center gap-1",e),children:[0,1,2].map(t=>jsx("div",{className:s(r[a],"rounded-full bg-current animate-bounce"),style:{animationDelay:`${t*.15}s`}},t))})}var u=m;export{m as LoadingDots,u as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/loading-dots/index.tsx"],"names":["cn","inputs","twMerge","clsx","LoadingDots","className","size","sizeClasses","jsx","i","loading_dots_default"],"mappings":"iGAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCKO,SAASG,CAAAA,CAAY,CAAE,SAAA,CAAAC,EAAW,IAAA,CAAAC,CAAAA,CAAO,IAAK,CAAA,CAAqB,CACxE,IAAMC,CAAAA,CAAc,CAClB,EAAA,CAAI,aAAA,CACJ,GAAI,aAAA,CACJ,EAAA,CAAI,SACN,CAAA,CAEA,OACEC,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWR,CAAAA,CAAG,yCAA0CK,CAAS,CAAA,CACnE,QAAA,CAAA,CAAC,CAAA,CAAG,EAAG,CAAC,CAAA,CAAE,IAAKI,CAAAA,EACdD,GAAAA,CAAC,OAEC,SAAA,CAAWR,CAAAA,CACTO,CAAAA,CAAYD,CAAI,EAChB,wCACF,CAAA,CACA,KAAA,CAAO,CAAE,eAAgB,CAAA,EAAGG,CAAAA,CAAI,GAAI,CAAA,CAAA,CAAI,GALnCA,CAMP,CACD,EACH,CAEJ,KAEOC,CAAAA,CAAQN","file":"index.mjs","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 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"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function e(...r){return tailwindMerge.twMerge(clsx.clsx(r))}function t({className:r,size:n="md"}){return jsxRuntime.jsx("div",{className:e({sm:"w-4 h-4 border-2",md:"w-8 h-8 border-3",lg:"w-12 h-12 border-4"}[n],"rounded-full border-current border-t-transparent animate-spin",r)})}var c=t;exports.LoadingSpinner=t;exports.default=c;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/loading-spinner/index.tsx"],"names":["cn","inputs","twMerge","clsx","LoadingSpinner","className","size","jsx","loading_spinner_default"],"mappings":"+KAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,sBAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCKO,SAASG,CAAAA,CAAe,CAAE,SAAA,CAAAC,CAAAA,CAAW,KAAAC,CAAAA,CAAO,IAAK,CAAA,CAAwB,CAO9E,OACEC,cAAAA,CAAC,OACC,SAAA,CAAWP,CAAAA,CARK,CAClB,EAAA,CAAI,kBAAA,CACJ,EAAA,CAAI,mBACJ,EAAA,CAAI,oBACN,CAAA,CAKkBM,CAAI,CAAA,CAChB,+DAAA,CACAD,CACF,CAAA,CACF,CAEJ,CAEA,IAAOG,CAAAA,CAAQJ","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 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"]}
@@ -0,0 +1,2 @@
1
+ import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function e(...r){return twMerge(clsx(r))}function t({className:r,size:n="md"}){return jsx("div",{className:e({sm:"w-4 h-4 border-2",md:"w-8 h-8 border-3",lg:"w-12 h-12 border-4"}[n],"rounded-full border-current border-t-transparent animate-spin",r)})}var c=t;export{t as LoadingSpinner,c as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/loading-spinner/index.tsx"],"names":["cn","inputs","twMerge","clsx","LoadingSpinner","className","size","jsx","loading_spinner_default"],"mappings":"iGAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,QAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCKO,SAASG,CAAAA,CAAe,CAAE,SAAA,CAAAC,CAAAA,CAAW,KAAAC,CAAAA,CAAO,IAAK,CAAA,CAAwB,CAO9E,OACEC,GAAAA,CAAC,OACC,SAAA,CAAWP,CAAAA,CARK,CAClB,EAAA,CAAI,kBAAA,CACJ,EAAA,CAAI,mBACJ,EAAA,CAAI,oBACN,CAAA,CAKkBM,CAAI,CAAA,CAChB,+DAAA,CACAD,CACF,CAAA,CACF,CAEJ,CAEA,IAAOG,CAAAA,CAAQJ","file":"index.mjs","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 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"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function p(...n){return tailwindMerge.twMerge(clsx.clsx(n))}function E({children:n,className:h,strength:u=.5,radius:e=200,...x}){let o=react.useRef(null),[b,l]=react.useState(false),s=framerMotion.useMotionValue(0),i=framerMotion.useMotionValue(0),d={damping:20,stiffness:300,mass:.5},y=framerMotion.useSpring(s,d),R=framerMotion.useSpring(i,d);return jsxRuntime.jsx("div",{ref:o,className:"relative inline-flex items-center justify-center",onMouseMove:f=>{if(!o.current)return;let t=o.current.getBoundingClientRect(),B=t.left+t.width/2,L=t.top+t.height/2,r=f.clientX-B,c=f.clientY-L,m=Math.sqrt(r*r+c*c);if(m<e){let g=1-m/e;s.set(r*u*g),i.set(c*u*g);}},onMouseLeave:()=>{l(false),s.set(0),i.set(0);},onMouseEnter:()=>l(true),style:{padding:e/2,margin:-e/2},children:jsxRuntime.jsx(framerMotion.motion.div,{style:{x:y,y:R},children:jsxRuntime.jsx("button",{className:p("px-6 py-3 rounded-xl font-medium","bg-zinc-900 text-white hover:bg-zinc-800","dark:bg-zinc-100 dark:text-black dark:hover:bg-zinc-200","transition-shadow duration-300",b&&"shadow-lg",h),...x,children:n})})})}var D=E;exports.MagneticButton=E;exports.default=D;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/magnetic-button/index.tsx"],"names":["cn","inputs","twMerge","clsx","MagneticButton","children","className","strength","radius","props","ref","useRef","isHovered","setIsHovered","useState","x","useMotionValue","y","springConfig","xSpring","useSpring","ySpring","jsx","e","rect","centerX","centerY","distanceX","distanceY","distance","factor","motion","magnetic_button_default"],"mappings":"4OAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,sBAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCOO,SAASG,CAAAA,CAAe,CAC7B,QAAA,CAAAC,CAAAA,CACA,UAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CAAW,EAAA,CACX,MAAA,CAAAC,CAAAA,CAAS,GAAA,CACT,GAAGC,CACL,CAAA,CAAwB,CACtB,IAAMC,CAAAA,CAAMC,YAAAA,CAAuB,IAAI,CAAA,CACjC,CAACC,CAAAA,CAAWC,CAAY,CAAA,CAAIC,cAAAA,CAAS,KAAK,CAAA,CAE1CC,CAAAA,CAAIC,2BAAAA,CAAe,CAAC,CAAA,CACpBC,CAAAA,CAAID,4BAAe,CAAC,CAAA,CAEpBE,CAAAA,CAAe,CAAE,OAAA,CAAS,EAAA,CAAI,SAAA,CAAW,GAAA,CAAK,IAAA,CAAM,EAAI,CAAA,CACxDC,CAAAA,CAAUC,sBAAAA,CAAUL,CAAAA,CAAGG,CAAY,CAAA,CACnCG,CAAAA,CAAUD,sBAAAA,CAAUH,CAAAA,CAAGC,CAAY,CAAA,CAwBzC,OACEI,cAAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKZ,CAAAA,CACL,SAAA,CAAU,kDAAA,CACV,YA1BqBa,CAAAA,EAAwB,CAC/C,GAAI,CAACb,CAAAA,CAAI,OAAA,CAAS,OAClB,IAAMc,CAAAA,CAAOd,CAAAA,CAAI,OAAA,CAAQ,qBAAA,EAAsB,CACzCe,CAAAA,CAAUD,EAAK,IAAA,CAAOA,CAAAA,CAAK,KAAA,CAAQ,CAAA,CACnCE,CAAAA,CAAUF,CAAAA,CAAK,IAAMA,CAAAA,CAAK,MAAA,CAAS,CAAA,CACnCG,CAAAA,CAAYJ,CAAAA,CAAE,OAAA,CAAUE,EACxBG,CAAAA,CAAYL,CAAAA,CAAE,OAAA,CAAUG,CAAAA,CACxBG,CAAAA,CAAW,IAAA,CAAK,IAAA,CAAKF,CAAAA,CAAYA,CAAAA,CAAYC,CAAAA,CAAYA,CAAS,CAAA,CAExE,GAAIC,CAAAA,CAAWrB,EAAQ,CACrB,IAAMsB,CAAAA,CAAS,CAAA,CAAID,CAAAA,CAAWrB,CAAAA,CAC9BO,EAAE,GAAA,CAAIY,CAAAA,CAAYpB,CAAAA,CAAWuB,CAAM,CAAA,CACnCb,CAAAA,CAAE,IAAIW,CAAAA,CAAYrB,CAAAA,CAAWuB,CAAM,EACrC,CACF,CAAA,CAaI,YAAA,CAXqB,IAAM,CAC7BjB,CAAAA,CAAa,KAAK,CAAA,CAClBE,CAAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CACPE,CAAAA,CAAE,GAAA,CAAI,CAAC,EACT,CAAA,CAQI,aAAc,IAAMJ,CAAAA,CAAa,IAAI,CAAA,CACrC,KAAA,CAAO,CAAE,QAASL,CAAAA,CAAS,CAAA,CAAG,MAAA,CAAQ,CAACA,CAAAA,CAAS,CAAE,CAAA,CAElD,QAAA,CAAAc,cAAAA,CAACS,mBAAAA,CAAO,GAAA,CAAP,CAAW,KAAA,CAAO,CAAE,EAAGZ,CAAAA,CAAS,CAAA,CAAGE,CAAQ,CAAA,CAC1C,QAAA,CAAAC,cAAAA,CAAC,UACC,SAAA,CAAWtB,CAAAA,CACT,kCAAA,CACA,0CAAA,CACA,yDAAA,CACA,gCAAA,CACAY,GAAa,WAAA,CACbN,CACF,CAAA,CACC,GAAGG,CAAAA,CAEH,QAAA,CAAAJ,CAAAA,CACH,CAAA,CACF,CAAA,CACF,CAEJ,CAEA,IAAO2B,CAAAA,CAAQ5B","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, { 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"]}
@@ -0,0 +1,2 @@
1
+ import {useRef,useState}from'react';import {useMotionValue,useSpring,motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function p(...n){return twMerge(clsx(n))}function E({children:n,className:h,strength:u=.5,radius:e=200,...x}){let o=useRef(null),[b,l]=useState(false),s=useMotionValue(0),i=useMotionValue(0),d={damping:20,stiffness:300,mass:.5},y=useSpring(s,d),R=useSpring(i,d);return jsx("div",{ref:o,className:"relative inline-flex items-center justify-center",onMouseMove:f=>{if(!o.current)return;let t=o.current.getBoundingClientRect(),B=t.left+t.width/2,L=t.top+t.height/2,r=f.clientX-B,c=f.clientY-L,m=Math.sqrt(r*r+c*c);if(m<e){let g=1-m/e;s.set(r*u*g),i.set(c*u*g);}},onMouseLeave:()=>{l(false),s.set(0),i.set(0);},onMouseEnter:()=>l(true),style:{padding:e/2,margin:-e/2},children:jsx(motion.div,{style:{x:y,y:R},children:jsx("button",{className:p("px-6 py-3 rounded-xl font-medium","bg-zinc-900 text-white hover:bg-zinc-800","dark:bg-zinc-100 dark:text-black dark:hover:bg-zinc-200","transition-shadow duration-300",b&&"shadow-lg",h),...x,children:n})})})}var D=E;export{E as MagneticButton,D as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/magnetic-button/index.tsx"],"names":["cn","inputs","twMerge","clsx","MagneticButton","children","className","strength","radius","props","ref","useRef","isHovered","setIsHovered","useState","x","useMotionValue","y","springConfig","xSpring","useSpring","ySpring","jsx","e","rect","centerX","centerY","distanceX","distanceY","distance","factor","motion","magnetic_button_default"],"mappings":"iMAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,QAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCOO,SAASG,CAAAA,CAAe,CAC7B,QAAA,CAAAC,CAAAA,CACA,UAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CAAW,EAAA,CACX,MAAA,CAAAC,CAAAA,CAAS,GAAA,CACT,GAAGC,CACL,CAAA,CAAwB,CACtB,IAAMC,CAAAA,CAAMC,MAAAA,CAAuB,IAAI,CAAA,CACjC,CAACC,CAAAA,CAAWC,CAAY,CAAA,CAAIC,QAAAA,CAAS,KAAK,CAAA,CAE1CC,CAAAA,CAAIC,cAAAA,CAAe,CAAC,CAAA,CACpBC,CAAAA,CAAID,eAAe,CAAC,CAAA,CAEpBE,CAAAA,CAAe,CAAE,OAAA,CAAS,EAAA,CAAI,SAAA,CAAW,GAAA,CAAK,IAAA,CAAM,EAAI,CAAA,CACxDC,CAAAA,CAAUC,SAAAA,CAAUL,CAAAA,CAAGG,CAAY,CAAA,CACnCG,CAAAA,CAAUD,SAAAA,CAAUH,CAAAA,CAAGC,CAAY,CAAA,CAwBzC,OACEI,GAAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKZ,CAAAA,CACL,SAAA,CAAU,kDAAA,CACV,YA1BqBa,CAAAA,EAAwB,CAC/C,GAAI,CAACb,CAAAA,CAAI,OAAA,CAAS,OAClB,IAAMc,CAAAA,CAAOd,CAAAA,CAAI,OAAA,CAAQ,qBAAA,EAAsB,CACzCe,CAAAA,CAAUD,EAAK,IAAA,CAAOA,CAAAA,CAAK,KAAA,CAAQ,CAAA,CACnCE,CAAAA,CAAUF,CAAAA,CAAK,IAAMA,CAAAA,CAAK,MAAA,CAAS,CAAA,CACnCG,CAAAA,CAAYJ,CAAAA,CAAE,OAAA,CAAUE,EACxBG,CAAAA,CAAYL,CAAAA,CAAE,OAAA,CAAUG,CAAAA,CACxBG,CAAAA,CAAW,IAAA,CAAK,IAAA,CAAKF,CAAAA,CAAYA,CAAAA,CAAYC,CAAAA,CAAYA,CAAS,CAAA,CAExE,GAAIC,CAAAA,CAAWrB,EAAQ,CACrB,IAAMsB,CAAAA,CAAS,CAAA,CAAID,CAAAA,CAAWrB,CAAAA,CAC9BO,EAAE,GAAA,CAAIY,CAAAA,CAAYpB,CAAAA,CAAWuB,CAAM,CAAA,CACnCb,CAAAA,CAAE,IAAIW,CAAAA,CAAYrB,CAAAA,CAAWuB,CAAM,EACrC,CACF,CAAA,CAaI,YAAA,CAXqB,IAAM,CAC7BjB,CAAAA,CAAa,KAAK,CAAA,CAClBE,CAAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CACPE,CAAAA,CAAE,GAAA,CAAI,CAAC,EACT,CAAA,CAQI,aAAc,IAAMJ,CAAAA,CAAa,IAAI,CAAA,CACrC,KAAA,CAAO,CAAE,QAASL,CAAAA,CAAS,CAAA,CAAG,MAAA,CAAQ,CAACA,CAAAA,CAAS,CAAE,CAAA,CAElD,QAAA,CAAAc,GAAAA,CAACS,MAAAA,CAAO,GAAA,CAAP,CAAW,KAAA,CAAO,CAAE,EAAGZ,CAAAA,CAAS,CAAA,CAAGE,CAAQ,CAAA,CAC1C,QAAA,CAAAC,GAAAA,CAAC,UACC,SAAA,CAAWtB,CAAAA,CACT,kCAAA,CACA,0CAAA,CACA,yDAAA,CACA,gCAAA,CACAY,GAAa,WAAA,CACbN,CACF,CAAA,CACC,GAAGG,CAAAA,CAEH,QAAA,CAAAJ,CAAAA,CACH,CAAA,CACF,CAAA,CACF,CAEJ,CAEA,IAAO2B,CAAAA,CAAQ5B","file":"index.mjs","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, { 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"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function a(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function u({children:e,className:i,pulseColor:o="rgba(239, 68, 68, 0.5)",...r}){return jsxRuntime.jsxs("div",{className:"relative inline-block",children:[jsxRuntime.jsx(framerMotion.motion.div,{className:"absolute inset-0 rounded-xl",style:{backgroundColor:o},animate:{scale:[1,1.3,1,1.2,1],opacity:[.6,0,.6,0,.6]},transition:{duration:1.2,repeat:1/0,ease:"easeInOut",times:[0,.2,.4,.6,1]}}),jsxRuntime.jsx(framerMotion.motion.div,{className:"absolute inset-0 rounded-xl",style:{backgroundColor:o},animate:{scale:[1,1.5,1,1.4,1],opacity:[.4,0,.4,0,.4]},transition:{duration:1.2,delay:.1,repeat:1/0,ease:"easeInOut",times:[0,.2,.4,.6,1]}}),jsxRuntime.jsx(framerMotion.motion.div,{animate:{scale:[1,1.05,1,1.03,1]},transition:{duration:1.2,repeat:1/0,ease:"easeInOut",times:[0,.2,.4,.6,1]},children:jsxRuntime.jsx("button",{className:a("relative px-6 py-3 rounded-xl font-medium","bg-red-500 hover:bg-red-600 text-white","transition-colors duration-200",i),...r,children:e})})]})}var y=u;exports.PulseButton=u;exports.default=y;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/pulse-button/index.tsx"],"names":["cn","inputs","twMerge","clsx","PulseButton","children","className","pulseColor","props","jsxs","jsx","motion","pulse_button_default"],"mappings":"qNAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,sBAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCMO,SAASG,EAAY,CAC1B,QAAA,CAAAC,EACA,SAAA,CAAAC,CAAAA,CACA,WAAAC,CAAAA,CAAa,wBAAA,CACb,GAAGC,CACL,CAAA,CAAqB,CACnB,OACEC,eAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uBAAA,CACb,QAAA,CAAA,CAAAC,eAACC,mBAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAU,6BAAA,CACV,MAAO,CAAE,eAAA,CAAiBJ,CAAW,CAAA,CACrC,OAAA,CAAS,CACP,KAAA,CAAO,CAAC,EAAG,GAAA,CAAK,CAAA,CAAG,IAAK,CAAC,CAAA,CACzB,OAAA,CAAS,CAAC,EAAA,CAAK,CAAA,CAAG,GAAK,CAAA,CAAG,EAAG,CAC/B,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAU,GAAA,CACV,OAAQ,CAAA,CAAA,CAAA,CACR,IAAA,CAAM,YACN,KAAA,CAAO,CAAC,EAAG,EAAA,CAAK,EAAA,CAAK,GAAK,CAAC,CAC7B,CAAA,CACF,CAAA,CAEAG,cAAAA,CAACC,mBAAAA,CAAO,IAAP,CACC,SAAA,CAAU,8BACV,KAAA,CAAO,CAAE,gBAAiBJ,CAAW,CAAA,CACrC,QAAS,CACP,KAAA,CAAO,CAAC,CAAA,CAAG,GAAA,CAAK,EAAG,GAAA,CAAK,CAAC,EACzB,OAAA,CAAS,CAAC,EAAA,CAAK,CAAA,CAAG,EAAA,CAAK,CAAA,CAAG,EAAG,CAC/B,CAAA,CACA,WAAY,CACV,QAAA,CAAU,IACV,KAAA,CAAO,EAAA,CACP,OAAQ,CAAA,CAAA,CAAA,CACR,IAAA,CAAM,YACN,KAAA,CAAO,CAAC,EAAG,EAAA,CAAK,EAAA,CAAK,GAAK,CAAC,CAC7B,CAAA,CACF,CAAA,CAEAG,cAAAA,CAACC,mBAAAA,CAAO,IAAP,CACC,OAAA,CAAS,CACP,KAAA,CAAO,CAAC,EAAG,IAAA,CAAM,CAAA,CAAG,KAAM,CAAC,CAC7B,EACA,UAAA,CAAY,CACV,SAAU,GAAA,CACV,MAAA,CAAQ,IACR,IAAA,CAAM,WAAA,CACN,KAAA,CAAO,CAAC,CAAA,CAAG,EAAA,CAAK,GAAK,EAAA,CAAK,CAAC,CAC7B,CAAA,CAEA,QAAA,CAAAD,eAAC,QAAA,CAAA,CACC,SAAA,CAAWV,CAAAA,CACT,2CAAA,CACA,wCAAA,CACA,gCAAA,CACAM,CACF,CAAA,CACC,GAAGE,EAEH,QAAA,CAAAH,CAAAA,CACH,EACF,CAAA,CAAA,CACF,CAEJ,CAEA,IAAOO,CAAAA,CAAQR","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 { 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"]}
@@ -0,0 +1,2 @@
1
+ import {motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsxs,jsx}from'react/jsx-runtime';function a(...e){return twMerge(clsx(e))}function u({children:e,className:i,pulseColor:o="rgba(239, 68, 68, 0.5)",...r}){return jsxs("div",{className:"relative inline-block",children:[jsx(motion.div,{className:"absolute inset-0 rounded-xl",style:{backgroundColor:o},animate:{scale:[1,1.3,1,1.2,1],opacity:[.6,0,.6,0,.6]},transition:{duration:1.2,repeat:1/0,ease:"easeInOut",times:[0,.2,.4,.6,1]}}),jsx(motion.div,{className:"absolute inset-0 rounded-xl",style:{backgroundColor:o},animate:{scale:[1,1.5,1,1.4,1],opacity:[.4,0,.4,0,.4]},transition:{duration:1.2,delay:.1,repeat:1/0,ease:"easeInOut",times:[0,.2,.4,.6,1]}}),jsx(motion.div,{animate:{scale:[1,1.05,1,1.03,1]},transition:{duration:1.2,repeat:1/0,ease:"easeInOut",times:[0,.2,.4,.6,1]},children:jsx("button",{className:a("relative px-6 py-3 rounded-xl font-medium","bg-red-500 hover:bg-red-600 text-white","transition-colors duration-200",i),...r,children:e})})]})}var y=u;export{u as PulseButton,y as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/pulse-button/index.tsx"],"names":["cn","inputs","twMerge","clsx","PulseButton","children","className","pulseColor","props","jsxs","jsx","motion","pulse_button_default"],"mappings":"yIAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,QAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCMO,SAASG,EAAY,CAC1B,QAAA,CAAAC,EACA,SAAA,CAAAC,CAAAA,CACA,WAAAC,CAAAA,CAAa,wBAAA,CACb,GAAGC,CACL,CAAA,CAAqB,CACnB,OACEC,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uBAAA,CACb,QAAA,CAAA,CAAAC,IAACC,MAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAU,6BAAA,CACV,MAAO,CAAE,eAAA,CAAiBJ,CAAW,CAAA,CACrC,OAAA,CAAS,CACP,KAAA,CAAO,CAAC,EAAG,GAAA,CAAK,CAAA,CAAG,IAAK,CAAC,CAAA,CACzB,OAAA,CAAS,CAAC,EAAA,CAAK,CAAA,CAAG,GAAK,CAAA,CAAG,EAAG,CAC/B,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAU,GAAA,CACV,OAAQ,CAAA,CAAA,CAAA,CACR,IAAA,CAAM,YACN,KAAA,CAAO,CAAC,EAAG,EAAA,CAAK,EAAA,CAAK,GAAK,CAAC,CAC7B,CAAA,CACF,CAAA,CAEAG,GAAAA,CAACC,MAAAA,CAAO,IAAP,CACC,SAAA,CAAU,8BACV,KAAA,CAAO,CAAE,gBAAiBJ,CAAW,CAAA,CACrC,QAAS,CACP,KAAA,CAAO,CAAC,CAAA,CAAG,GAAA,CAAK,EAAG,GAAA,CAAK,CAAC,EACzB,OAAA,CAAS,CAAC,EAAA,CAAK,CAAA,CAAG,EAAA,CAAK,CAAA,CAAG,EAAG,CAC/B,CAAA,CACA,WAAY,CACV,QAAA,CAAU,IACV,KAAA,CAAO,EAAA,CACP,OAAQ,CAAA,CAAA,CAAA,CACR,IAAA,CAAM,YACN,KAAA,CAAO,CAAC,EAAG,EAAA,CAAK,EAAA,CAAK,GAAK,CAAC,CAC7B,CAAA,CACF,CAAA,CAEAG,GAAAA,CAACC,MAAAA,CAAO,IAAP,CACC,OAAA,CAAS,CACP,KAAA,CAAO,CAAC,EAAG,IAAA,CAAM,CAAA,CAAG,KAAM,CAAC,CAC7B,EACA,UAAA,CAAY,CACV,SAAU,GAAA,CACV,MAAA,CAAQ,IACR,IAAA,CAAM,WAAA,CACN,KAAA,CAAO,CAAC,CAAA,CAAG,EAAA,CAAK,GAAK,EAAA,CAAK,CAAC,CAC7B,CAAA,CAEA,QAAA,CAAAD,IAAC,QAAA,CAAA,CACC,SAAA,CAAWV,CAAAA,CACT,2CAAA,CACA,wCAAA,CACA,gCAAA,CACAM,CACF,CAAA,CACC,GAAGE,EAEH,QAAA,CAAAH,CAAAA,CACH,EACF,CAAA,CAAA,CACF,CAEJ,CAEA,IAAOO,CAAAA,CAAQR","file":"index.mjs","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 { 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"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function c(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function k({children:e,className:s,onClick:l,...u}){let[p,i]=react.useState([]);function d(t){let r=t.currentTarget.getBoundingClientRect(),m=t.clientX-r.left,b=t.clientY-r.top,a={x:m,y:b,id:Date.now()};i(n=>[...n,a]),setTimeout(()=>{i(n=>n.filter(f=>f.id!==a.id));},1e3),l?.(t);}return jsxRuntime.jsxs("button",{className:c("relative overflow-hidden px-6 py-3 rounded-xl font-medium","bg-zinc-900 text-white hover:bg-zinc-800","dark:bg-zinc-100 dark:text-black dark:hover:bg-zinc-200","transition-colors duration-200",s),onClick:d,...u,children:[jsxRuntime.jsx(framerMotion.AnimatePresence,{children:p.map(t=>jsxRuntime.jsx(framerMotion.motion.span,{className:"absolute rounded-full pointer-events-none border-2 border-white/50 dark:border-black/50",style:{left:t.x,top:t.y,transform:"translate(-50%, -50%)"},initial:{width:0,height:0,opacity:.9},animate:{width:500,height:500,opacity:0},exit:{opacity:0},transition:{duration:1,ease:[.4,0,.2,1]}},t.id))}),jsxRuntime.jsx("span",{className:"relative z-10",children:e})]})}var P=k;exports.RippleButton=k;exports.default=P;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/ripple-button/index.tsx"],"names":["cn","inputs","twMerge","clsx","RippleButton","children","className","onClick","props","ripples","setRipples","useState","handleClick","e","rect","x","y","newRipple","prev","r","jsxs","jsx","AnimatePresence","ripple","motion","ripple_button_default"],"mappings":"4OAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCKO,SAASG,CAAAA,CAAa,CAAE,SAAAC,CAAAA,CAAU,SAAA,CAAAC,EAAW,OAAA,CAAAC,CAAAA,CAAS,GAAGC,CAAM,CAAA,CAAsB,CAC1F,GAAM,CAACC,CAAAA,CAASC,CAAU,CAAA,CAAIC,cAAAA,CAAsD,EAAE,CAAA,CAEtF,SAASC,CAAAA,CAAYC,CAAAA,CAAwC,CAE3D,IAAMC,CAAAA,CADSD,CAAAA,CAAE,cACG,qBAAA,EAAsB,CACpCE,EAAIF,CAAAA,CAAE,OAAA,CAAUC,EAAK,IAAA,CACrBE,CAAAA,CAAIH,CAAAA,CAAE,OAAA,CAAUC,CAAAA,CAAK,GAAA,CACrBG,EAAY,CAAE,CAAA,CAAAF,EAAG,CAAA,CAAAC,CAAAA,CAAG,GAAI,IAAA,CAAK,GAAA,EAAM,CAAA,CAEzCN,CAAAA,CAAYQ,CAAAA,EAAS,CAAC,GAAGA,CAAAA,CAAMD,CAAS,CAAC,CAAA,CACzC,UAAA,CAAW,IAAM,CACfP,CAAAA,CAAYQ,CAAAA,EAASA,CAAAA,CAAK,MAAA,CAAQC,CAAAA,EAAMA,EAAE,EAAA,GAAOF,CAAAA,CAAU,EAAE,CAAC,EAChE,EAAG,GAAI,CAAA,CAEPV,CAAAA,GAAUM,CAAC,EACb,CAEA,OACEO,eAAAA,CAAC,QAAA,CAAA,CACC,UAAWpB,CAAAA,CACT,2DAAA,CACA,2CACA,yDAAA,CACA,gCAAA,CACAM,CACF,CAAA,CACA,OAAA,CAASM,CAAAA,CACR,GAAGJ,CAAAA,CAEJ,QAAA,CAAA,CAAAa,eAACC,4BAAAA,CAAA,CACE,SAAAb,CAAAA,CAAQ,GAAA,CAAKc,CAAAA,EACZF,cAAAA,CAACG,mBAAAA,CAAO,IAAA,CAAP,CAEC,SAAA,CAAU,yFAAA,CACV,MAAO,CACL,IAAA,CAAMD,EAAO,CAAA,CACb,GAAA,CAAKA,CAAAA,CAAO,CAAA,CACZ,SAAA,CAAW,uBACb,EACA,OAAA,CAAS,CAAE,MAAO,CAAA,CAAG,MAAA,CAAQ,EAAG,OAAA,CAAS,EAAI,CAAA,CAC7C,OAAA,CAAS,CAAE,KAAA,CAAO,IAAK,MAAA,CAAQ,GAAA,CAAK,QAAS,CAAE,CAAA,CAC/C,KAAM,CAAE,OAAA,CAAS,CAAE,CAAA,CACnB,UAAA,CAAY,CAAE,SAAU,CAAA,CAAG,IAAA,CAAM,CAAC,EAAA,CAAK,CAAA,CAAG,GAAK,CAAC,CAAE,CAAA,CAAA,CAV7CA,CAAAA,CAAO,EAWd,CACD,EACH,CAAA,CACAF,cAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,eAAA,CAAiB,QAAA,CAAAhB,EAAS,CAAA,CAAA,CAC5C,CAEJ,CAEA,IAAOoB,CAAAA,CAAQrB","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, { 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"]}
@@ -0,0 +1,2 @@
1
+ import {useState}from'react';import {AnimatePresence,motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsxs,jsx}from'react/jsx-runtime';function c(...e){return twMerge(clsx(e))}function k({children:e,className:s,onClick:l,...u}){let[p,i]=useState([]);function d(t){let r=t.currentTarget.getBoundingClientRect(),m=t.clientX-r.left,b=t.clientY-r.top,a={x:m,y:b,id:Date.now()};i(n=>[...n,a]),setTimeout(()=>{i(n=>n.filter(f=>f.id!==a.id));},1e3),l?.(t);}return jsxs("button",{className:c("relative overflow-hidden px-6 py-3 rounded-xl font-medium","bg-zinc-900 text-white hover:bg-zinc-800","dark:bg-zinc-100 dark:text-black dark:hover:bg-zinc-200","transition-colors duration-200",s),onClick:d,...u,children:[jsx(AnimatePresence,{children:p.map(t=>jsx(motion.span,{className:"absolute rounded-full pointer-events-none border-2 border-white/50 dark:border-black/50",style:{left:t.x,top:t.y,transform:"translate(-50%, -50%)"},initial:{width:0,height:0,opacity:.9},animate:{width:500,height:500,opacity:0},exit:{opacity:0},transition:{duration:1,ease:[.4,0,.2,1]}},t.id))}),jsx("span",{className:"relative z-10",children:e})]})}var P=k;export{k as RippleButton,P as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/ripple-button/index.tsx"],"names":["cn","inputs","twMerge","clsx","RippleButton","children","className","onClick","props","ripples","setRipples","useState","handleClick","e","rect","x","y","newRipple","prev","r","jsxs","jsx","AnimatePresence","ripple","motion","ripple_button_default"],"mappings":"sLAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCKO,SAASG,CAAAA,CAAa,CAAE,SAAAC,CAAAA,CAAU,SAAA,CAAAC,EAAW,OAAA,CAAAC,CAAAA,CAAS,GAAGC,CAAM,CAAA,CAAsB,CAC1F,GAAM,CAACC,CAAAA,CAASC,CAAU,CAAA,CAAIC,QAAAA,CAAsD,EAAE,CAAA,CAEtF,SAASC,CAAAA,CAAYC,CAAAA,CAAwC,CAE3D,IAAMC,CAAAA,CADSD,CAAAA,CAAE,cACG,qBAAA,EAAsB,CACpCE,EAAIF,CAAAA,CAAE,OAAA,CAAUC,EAAK,IAAA,CACrBE,CAAAA,CAAIH,CAAAA,CAAE,OAAA,CAAUC,CAAAA,CAAK,GAAA,CACrBG,EAAY,CAAE,CAAA,CAAAF,EAAG,CAAA,CAAAC,CAAAA,CAAG,GAAI,IAAA,CAAK,GAAA,EAAM,CAAA,CAEzCN,CAAAA,CAAYQ,CAAAA,EAAS,CAAC,GAAGA,CAAAA,CAAMD,CAAS,CAAC,CAAA,CACzC,UAAA,CAAW,IAAM,CACfP,CAAAA,CAAYQ,CAAAA,EAASA,CAAAA,CAAK,MAAA,CAAQC,CAAAA,EAAMA,EAAE,EAAA,GAAOF,CAAAA,CAAU,EAAE,CAAC,EAChE,EAAG,GAAI,CAAA,CAEPV,CAAAA,GAAUM,CAAC,EACb,CAEA,OACEO,IAAAA,CAAC,QAAA,CAAA,CACC,UAAWpB,CAAAA,CACT,2DAAA,CACA,2CACA,yDAAA,CACA,gCAAA,CACAM,CACF,CAAA,CACA,OAAA,CAASM,CAAAA,CACR,GAAGJ,CAAAA,CAEJ,QAAA,CAAA,CAAAa,IAACC,eAAAA,CAAA,CACE,SAAAb,CAAAA,CAAQ,GAAA,CAAKc,CAAAA,EACZF,GAAAA,CAACG,MAAAA,CAAO,IAAA,CAAP,CAEC,SAAA,CAAU,yFAAA,CACV,MAAO,CACL,IAAA,CAAMD,EAAO,CAAA,CACb,GAAA,CAAKA,CAAAA,CAAO,CAAA,CACZ,SAAA,CAAW,uBACb,EACA,OAAA,CAAS,CAAE,MAAO,CAAA,CAAG,MAAA,CAAQ,EAAG,OAAA,CAAS,EAAI,CAAA,CAC7C,OAAA,CAAS,CAAE,KAAA,CAAO,IAAK,MAAA,CAAQ,GAAA,CAAK,QAAS,CAAE,CAAA,CAC/C,KAAM,CAAE,OAAA,CAAS,CAAE,CAAA,CACnB,UAAA,CAAY,CAAE,SAAU,CAAA,CAAG,IAAA,CAAM,CAAC,EAAA,CAAK,CAAA,CAAG,GAAK,CAAC,CAAE,CAAA,CAAA,CAV7CA,CAAAA,CAAO,EAWd,CACD,EACH,CAAA,CACAF,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,eAAA,CAAiB,QAAA,CAAAhB,EAAS,CAAA,CAAA,CAC5C,CAEJ,CAEA,IAAOoB,CAAAA,CAAQrB","file":"index.mjs","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, { 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"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function r(...t){return tailwindMerge.twMerge(clsx.clsx(t))}function m({text:t="Text Shimmer",className:a}){return jsxRuntime.jsx("div",{className:"flex items-center justify-center p-8",children:jsxRuntime.jsx(framerMotion.motion.div,{className:"relative px-4 py-2 overflow-hidden",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5},children:jsxRuntime.jsx(framerMotion.motion.h1,{className:r("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",a),animate:{backgroundPosition:["200% center","-200% center"]},transition:{duration:2.5,ease:"linear",repeat:1/0},children:t})})})}var d=m;exports.ShimmerText=m;exports.default=d;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/shimmer-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","ShimmerText","text","className","jsx","motion","shimmer_text_default"],"mappings":"qNAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,UAAKF,CAAM,CAAC,CAC7B,CCMO,SAASG,CAAAA,CAAY,CAAE,IAAA,CAAAC,CAAAA,CAAO,eAAgB,SAAA,CAAAC,CAAU,CAAA,CAAqB,CAClF,OACEC,cAAAA,CAAC,OAAI,SAAA,CAAU,sCAAA,CACb,SAAAA,cAAAA,CAACC,mBAAAA,CAAO,IAAP,CACC,SAAA,CAAU,oCAAA,CACV,OAAA,CAAS,CAAE,OAAA,CAAS,EAAG,CAAA,CAAG,EAAG,EAC7B,OAAA,CAAS,CAAE,QAAS,CAAA,CAAG,CAAA,CAAG,CAAE,CAAA,CAC5B,UAAA,CAAY,CAAE,SAAU,EAAI,CAAA,CAE5B,SAAAD,cAAAA,CAACC,mBAAAA,CAAO,GAAP,CACC,SAAA,CAAWR,CAAAA,CACT,4LAAA,CACAM,CACF,CAAA,CACA,QAAS,CACP,kBAAA,CAAoB,CAAC,aAAA,CAAe,cAAc,CACpD,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAU,GAAA,CACV,IAAA,CAAM,SACN,MAAA,CAAQ,CAAA,CAAA,CACV,EAEC,QAAA,CAAAD,CAAAA,CACH,EACF,CAAA,CACF,CAEJ,CAEA,IAAOI,CAAAA,CAAQL","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 { 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"]}
@@ -0,0 +1,2 @@
1
+ import {motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function r(...t){return twMerge(clsx(t))}function m({text:t="Text Shimmer",className:a}){return jsx("div",{className:"flex items-center justify-center p-8",children:jsx(motion.div,{className:"relative px-4 py-2 overflow-hidden",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5},children:jsx(motion.h1,{className:r("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",a),animate:{backgroundPosition:["200% center","-200% center"]},transition:{duration:2.5,ease:"linear",repeat:1/0},children:t})})})}var d=m;export{m as ShimmerText,d as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/shimmer-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","ShimmerText","text","className","jsx","motion","shimmer_text_default"],"mappings":"oIAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,KAAKF,CAAM,CAAC,CAC7B,CCMO,SAASG,CAAAA,CAAY,CAAE,IAAA,CAAAC,CAAAA,CAAO,eAAgB,SAAA,CAAAC,CAAU,CAAA,CAAqB,CAClF,OACEC,GAAAA,CAAC,OAAI,SAAA,CAAU,sCAAA,CACb,SAAAA,GAAAA,CAACC,MAAAA,CAAO,IAAP,CACC,SAAA,CAAU,oCAAA,CACV,OAAA,CAAS,CAAE,OAAA,CAAS,EAAG,CAAA,CAAG,EAAG,EAC7B,OAAA,CAAS,CAAE,QAAS,CAAA,CAAG,CAAA,CAAG,CAAE,CAAA,CAC5B,UAAA,CAAY,CAAE,SAAU,EAAI,CAAA,CAE5B,SAAAD,GAAAA,CAACC,MAAAA,CAAO,GAAP,CACC,SAAA,CAAWR,CAAAA,CACT,4LAAA,CACAM,CACF,CAAA,CACA,QAAS,CACP,kBAAA,CAAoB,CAAC,aAAA,CAAe,cAAc,CACpD,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAU,GAAA,CACV,IAAA,CAAM,SACN,MAAA,CAAQ,CAAA,CAAA,CACV,EAEC,QAAA,CAAAD,CAAAA,CACH,EACF,CAAA,CACF,CAEJ,CAEA,IAAOI,CAAAA,CAAQL","file":"index.mjs","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 { 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"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function t(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function s({children:e,className:o,...n}){return jsxRuntime.jsxs("button",{className:t("relative overflow-hidden px-6 py-3 rounded-xl font-medium","bg-zinc-900 text-white hover:bg-zinc-800","dark:bg-zinc-800 dark:hover:bg-zinc-700 dark:text-white","transition-colors duration-200",o),...n,children:[jsxRuntime.jsx("span",{className:t("absolute inset-0 overflow-hidden rounded-[inherit]","before:absolute before:inset-0","before:-translate-x-full","before:animate-shimmer","before:bg-gradient-to-r","before:from-transparent before:via-white/40 before:to-transparent","before:skew-x-[-20deg]")}),jsxRuntime.jsx("span",{className:"relative z-10",children:e})]})}var d=s;exports.ShineButton=s;exports.default=d;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/shine-button/index.tsx"],"names":["cn","inputs","twMerge","clsx","ShineButton","children","className","props","jsxs","jsx","shine_button_default"],"mappings":"+KAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCIO,SAASG,CAAAA,CAAY,CAAE,QAAA,CAAAC,EAAU,SAAA,CAAAC,CAAAA,CAAW,GAAGC,CAAM,EAAqB,CAC/E,OACEC,eAAAA,CAAC,QAAA,CAAA,CACC,SAAA,CAAWR,CAAAA,CACT,2DAAA,CACA,0CAAA,CACA,0DACA,gCAAA,CACAM,CACF,CAAA,CACC,GAAGC,EAEJ,QAAA,CAAA,CAAAE,cAAAA,CAAC,MAAA,CAAA,CACC,SAAA,CAAWT,EACT,oDAAA,CACA,gCAAA,CACA,0BAAA,CACA,wBAAA,CACA,yBAAA,CACA,mEAAA,CACA,wBACF,CAAA,CACF,EACAS,cAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,eAAA,CAAiB,SAAAJ,CAAAA,CAAS,CAAA,CAAA,CAC5C,CAEJ,KAEOK,CAAAA,CAAQN","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"]}
@@ -0,0 +1,2 @@
1
+ import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsxs,jsx}from'react/jsx-runtime';function t(...e){return twMerge(clsx(e))}function s({children:e,className:o,...n}){return jsxs("button",{className:t("relative overflow-hidden px-6 py-3 rounded-xl font-medium","bg-zinc-900 text-white hover:bg-zinc-800","dark:bg-zinc-800 dark:hover:bg-zinc-700 dark:text-white","transition-colors duration-200",o),...n,children:[jsx("span",{className:t("absolute inset-0 overflow-hidden rounded-[inherit]","before:absolute before:inset-0","before:-translate-x-full","before:animate-shimmer","before:bg-gradient-to-r","before:from-transparent before:via-white/40 before:to-transparent","before:skew-x-[-20deg]")}),jsx("span",{className:"relative z-10",children:e})]})}var d=s;export{s as ShineButton,d as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/shine-button/index.tsx"],"names":["cn","inputs","twMerge","clsx","ShineButton","children","className","props","jsxs","jsx","shine_button_default"],"mappings":"sGAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCIO,SAASG,CAAAA,CAAY,CAAE,QAAA,CAAAC,EAAU,SAAA,CAAAC,CAAAA,CAAW,GAAGC,CAAM,EAAqB,CAC/E,OACEC,IAAAA,CAAC,QAAA,CAAA,CACC,SAAA,CAAWR,CAAAA,CACT,2DAAA,CACA,0CAAA,CACA,0DACA,gCAAA,CACAM,CACF,CAAA,CACC,GAAGC,EAEJ,QAAA,CAAA,CAAAE,GAAAA,CAAC,MAAA,CAAA,CACC,SAAA,CAAWT,EACT,oDAAA,CACA,gCAAA,CACA,0BAAA,CACA,wBAAA,CACA,yBAAA,CACA,mEAAA,CACA,wBACF,CAAA,CACF,EACAS,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,eAAA,CAAiB,SAAAJ,CAAAA,CAAS,CAAA,CAAA,CAC5C,CAEJ,KAEOK,CAAAA,CAAQN","file":"index.mjs","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"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function r(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function x({text:e="Hello World",className:p,speed:l=50,delay:n=0,cursor:f=true,loop:a=false}){let[T,u]=react.useState(""),[y,m]=react.useState(false);return react.useEffect(()=>{let t,s=0,o=false,i=()=>{m(true),o?s>0?(u(e.slice(0,s-1)),s--,t=setTimeout(i,l/2)):(o=false,t=setTimeout(i,500)):s<e.length?(u(e.slice(0,s+1)),s++,t=setTimeout(i,l)):(m(false),a&&(t=setTimeout(()=>{o=true,i();},2e3)));};return t=setTimeout(i,n),()=>clearTimeout(t)},[e,l,n,a]),jsxRuntime.jsxs("span",{className:r("inline-block font-mono",p),children:[T,f&&jsxRuntime.jsx("span",{className:r("ml-0.5 inline-block w-[2px] h-[1em] bg-current",y?"animate-blink":"")})]})}var V=x;exports.Typewriter=x;exports.default=V;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map