bynana-ui 1.4.0 → 1.6.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 (113) hide show
  1. package/dist/animated-circular-progress/index.js +2 -0
  2. package/dist/animated-circular-progress/index.js.map +1 -0
  3. package/dist/animated-circular-progress/index.mjs +2 -0
  4. package/dist/animated-circular-progress/index.mjs.map +1 -0
  5. package/dist/contribution-graph/index.js +2 -0
  6. package/dist/contribution-graph/index.js.map +1 -0
  7. package/dist/contribution-graph/index.mjs +2 -0
  8. package/dist/contribution-graph/index.mjs.map +1 -0
  9. package/dist/crosshair/index.js +2 -0
  10. package/dist/crosshair/index.js.map +1 -0
  11. package/dist/crosshair/index.mjs +2 -0
  12. package/dist/crosshair/index.mjs.map +1 -0
  13. package/dist/decay-card/index.js +3 -0
  14. package/dist/decay-card/index.js.map +1 -0
  15. package/dist/decay-card/index.mjs +3 -0
  16. package/dist/decay-card/index.mjs.map +1 -0
  17. package/dist/elastic-slider/index.js +2 -0
  18. package/dist/elastic-slider/index.js.map +1 -0
  19. package/dist/elastic-slider/index.mjs +2 -0
  20. package/dist/elastic-slider/index.mjs.map +1 -0
  21. package/dist/flowing-menu/index.js +3 -0
  22. package/dist/flowing-menu/index.js.map +1 -0
  23. package/dist/flowing-menu/index.mjs +3 -0
  24. package/dist/flowing-menu/index.mjs.map +1 -0
  25. package/dist/gooey-nav/index.js +2 -0
  26. package/dist/gooey-nav/index.js.map +1 -0
  27. package/dist/gooey-nav/index.mjs +2 -0
  28. package/dist/gooey-nav/index.mjs.map +1 -0
  29. package/dist/hamburger-3d/index.js +2 -0
  30. package/dist/hamburger-3d/index.js.map +1 -0
  31. package/dist/hamburger-3d/index.mjs +2 -0
  32. package/dist/hamburger-3d/index.mjs.map +1 -0
  33. package/dist/hamburger-elastic/index.js +2 -0
  34. package/dist/hamburger-elastic/index.js.map +1 -0
  35. package/dist/hamburger-elastic/index.mjs +2 -0
  36. package/dist/hamburger-elastic/index.mjs.map +1 -0
  37. package/dist/hamburger-morph/index.js +2 -0
  38. package/dist/hamburger-morph/index.js.map +1 -0
  39. package/dist/hamburger-morph/index.mjs +2 -0
  40. package/dist/hamburger-morph/index.mjs.map +1 -0
  41. package/dist/hamburger-spring/index.js +2 -0
  42. package/dist/hamburger-spring/index.js.map +1 -0
  43. package/dist/hamburger-spring/index.mjs +2 -0
  44. package/dist/hamburger-spring/index.mjs.map +1 -0
  45. package/dist/hamburger-stagger/index.js +2 -0
  46. package/dist/hamburger-stagger/index.js.map +1 -0
  47. package/dist/hamburger-stagger/index.mjs +2 -0
  48. package/dist/hamburger-stagger/index.mjs.map +1 -0
  49. package/dist/hamburger-wave/index.js +2 -0
  50. package/dist/hamburger-wave/index.js.map +1 -0
  51. package/dist/hamburger-wave/index.mjs +2 -0
  52. package/dist/hamburger-wave/index.mjs.map +1 -0
  53. package/dist/index.js +14 -11
  54. package/dist/index.js.map +1 -1
  55. package/dist/index.mjs +14 -11
  56. package/dist/index.mjs.map +1 -1
  57. package/dist/liquid-glass-card/index.js +2 -0
  58. package/dist/liquid-glass-card/index.js.map +1 -0
  59. package/dist/liquid-glass-card/index.mjs +2 -0
  60. package/dist/liquid-glass-card/index.mjs.map +1 -0
  61. package/dist/loader/index.js +2 -0
  62. package/dist/loader/index.js.map +1 -0
  63. package/dist/loader/index.mjs +2 -0
  64. package/dist/loader/index.mjs.map +1 -0
  65. package/dist/loading-invert/index.js +4 -0
  66. package/dist/loading-invert/index.js.map +1 -0
  67. package/dist/loading-invert/index.mjs +4 -0
  68. package/dist/loading-invert/index.mjs.map +1 -0
  69. package/dist/pill-nav/index.js +2 -0
  70. package/dist/pill-nav/index.js.map +1 -0
  71. package/dist/pill-nav/index.mjs +2 -0
  72. package/dist/pill-nav/index.mjs.map +1 -0
  73. package/dist/scroll-text/index.js +2 -0
  74. package/dist/scroll-text/index.js.map +1 -0
  75. package/dist/scroll-text/index.mjs +2 -0
  76. package/dist/scroll-text/index.mjs.map +1 -0
  77. package/dist/scroll-velocity/index.js +2 -0
  78. package/dist/scroll-velocity/index.js.map +1 -0
  79. package/dist/scroll-velocity/index.mjs +2 -0
  80. package/dist/scroll-velocity/index.mjs.map +1 -0
  81. package/dist/shimmer-effect/index.js +2 -0
  82. package/dist/shimmer-effect/index.js.map +1 -0
  83. package/dist/shimmer-effect/index.mjs +2 -0
  84. package/dist/shimmer-effect/index.mjs.map +1 -0
  85. package/dist/smooth-drawer/index.js +2 -0
  86. package/dist/smooth-drawer/index.js.map +1 -0
  87. package/dist/smooth-drawer/index.mjs +2 -0
  88. package/dist/smooth-drawer/index.mjs.map +1 -0
  89. package/dist/smooth-tab/index.js +2 -0
  90. package/dist/smooth-tab/index.js.map +1 -0
  91. package/dist/smooth-tab/index.mjs +2 -0
  92. package/dist/smooth-tab/index.mjs.map +1 -0
  93. package/dist/social-button/index.js +2 -0
  94. package/dist/social-button/index.js.map +1 -0
  95. package/dist/social-button/index.mjs +2 -0
  96. package/dist/social-button/index.mjs.map +1 -0
  97. package/dist/target-cursor/index.js +2 -0
  98. package/dist/target-cursor/index.js.map +1 -0
  99. package/dist/target-cursor/index.mjs +2 -0
  100. package/dist/target-cursor/index.mjs.map +1 -0
  101. package/dist/text-cursor/index.js +2 -0
  102. package/dist/text-cursor/index.js.map +1 -0
  103. package/dist/text-cursor/index.mjs +2 -0
  104. package/dist/text-cursor/index.mjs.map +1 -0
  105. package/dist/theme-toggler/index.js +2 -0
  106. package/dist/theme-toggler/index.js.map +1 -0
  107. package/dist/theme-toggler/index.mjs +2 -0
  108. package/dist/theme-toggler/index.mjs.map +1 -0
  109. package/dist/v0-button/index.js +2 -0
  110. package/dist/v0-button/index.js.map +1 -0
  111. package/dist/v0-button/index.mjs +2 -0
  112. package/dist/v0-button/index.mjs.map +1 -0
  113. package/package.json +29 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/cn.ts","../src/shine-button/index.tsx","../src/ripple-button/index.tsx","../src/magnetic-button/index.tsx","../src/bounce-button/index.tsx","../src/glow-button/index.tsx","../src/pulse-button/index.tsx","../src/neon-button/index.tsx","../src/liquid-button/index.tsx","../src/slide-button/index.tsx","../src/gradient-button/index.tsx","../src/hold-button/index.tsx","../src/threed-button/index.tsx","../src/copy-button/index.tsx","../src/particle-button/index.tsx","../src/attract-button/index.tsx","../src/command-button/index.tsx","../src/gradient-text/index.tsx","../src/shimmer-text/index.tsx","../src/glitch-text/index.tsx","../src/bounce-text/index.tsx","../src/blur-text/index.tsx","../src/typewriter/index.tsx","../src/wave-text/index.tsx","../src/flip-text/index.tsx","../src/shiny-text/index.tsx","../src/fuzzy-text/index.tsx","../src/matrix-text/index.tsx","../src/liquid-text/index.tsx","../src/swoosh-text/index.tsx","../src/scrambled-text/index.tsx","../src/magnetic-text/index.tsx","../src/dynamic-text/index.tsx","../src/rotating-text/index.tsx","../src/stagger-text/index.tsx","../src/rainbow-text/index.tsx","../src/count-up/index.tsx","../src/reveal-text/index.tsx","../src/split-text/index.tsx","../src/morph-text/index.tsx","../src/perspective-text/index.tsx","../src/elastic-text/index.tsx","../src/circular-text/index.tsx","../src/glowing-text/index.tsx","../src/sliced-text/index.tsx","../src/decrypted-text/index.tsx","../src/true-focus/index.tsx","../src/glass-card/index.tsx","../src/hover-card/index.tsx","../src/card-flip/index.tsx","../src/card/index.tsx","../src/loading-dots/index.tsx","../src/loading-spinner/index.tsx","../src/loading-bar/index.tsx","../src/loading-pulse/index.tsx","../src/loading-bounce/index.tsx","../src/loading-flower/index.tsx","../src/loading-geometric/index.tsx","../src/loading-morph/index.tsx","../src/loading-rings/index.tsx","../src/loading-text/index.tsx","../src/loading-words/index.tsx","../src/animated-list/index.tsx","../src/skeleton/index.tsx","../src/tooltip/index.tsx","../src/tooltip-minimal/index.tsx","../src/tooltip-animated/index.tsx","../src/badge/index.tsx","../src/avatar/index.tsx","../src/progress/index.tsx","../src/switch/index.tsx","../src/accordion/index.tsx","../src/tabs/index.tsx","../src/modal/index.tsx","../src/drawer/index.tsx","../src/alert/index.tsx","../src/terminal/index.tsx","../src/stepper/index.tsx","../src/file-tree/index.tsx","../src/counter/index.tsx","../src/toolbar/index.tsx","../src/dock/index.tsx","../src/input/index.tsx","../src/textarea/index.tsx","../src/checkbox/index.tsx","../src/radio/index.tsx","../src/select/index.tsx","../src/input-otp/index.tsx","../src/hamburger-basic/index.tsx","../src/hamburger-spin/index.tsx","../src/click-spark/index.tsx","../src/smooth-cursor/index.tsx","../src/float-effect/index.tsx","../src/glow-effect/index.tsx","../src/blur-fade/index.tsx","../src/pixel-card/index.tsx","../src/tilted-card/index.tsx","../src/infinite-scroll/index.tsx","../src/multi-step-loader/index.tsx","../src/ascii-text/index.tsx","../src/falling-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","ShineButton","children","className","props","jsxs","jsx","RippleButton","onClick","ripples","setRipples","useState","handleClick","e","rect","x","y","newRipple","prev","r","AnimatePresence","ripple","motion","MagneticButton","strength","radius","ref","useRef","isHovered","setIsHovered","useMotionValue","springConfig","xSpring","useSpring","ySpring","centerX","centerY","distanceX","distanceY","distance","factor","BounceButton","isBouncing","setIsBouncing","GlowButton","glowColor","isGlowing","setIsGlowing","PulseButton","pulseColor","colorVariants","sizeVariants","NeonButton","color","size","colors","LiquidButton","variant","isFilling","setIsFilling","sizeClasses","variantClasses","Fragment","_","i","SlideButton","slideText","gradients","sizes","GradientButton","HoldButton","holdDuration","onHoldComplete","progress","setProgress","isHolding","setIsHolding","intervalRef","variants","progressColors","startHold","startTime","elapsed","newProgress","stopHold","ThreeDButton","CopyButton","text","value","onCopy","copied","setCopied","error","SuccessParticles","buttonRef","ParticleButton","onSuccess","successDuration","showParticles","setShowParticles","AttractButton","particleCount","isAttracting","setIsAttracting","particles","setParticles","particlesControl","useAnimation","useEffect","newParticles","handleInteractionStart","useCallback","handleInteractionEnd","index","CommandButton","shortcut","GradientText","animationSpeed","ShimmerText","GlitchText","glitchIntensity","isStatic","selectedScheme","settings","sizeMap","glitchAnimation","BounceText","delay","duration","letters","letter","BlurText","animateBy","direction","elements","inView","setInView","observer","entry","fromAnimation","useMemo","toAnimation","segment","Typewriter","speed","cursor","loop","displayText","setDisplayText","isTyping","setIsTyping","timeout","isDeleting","type","WaveText","amplitude","frequency","FlipText","ShinyText","disabled","FuzzyText","fontSize","fontWeight","fontFamily","enableHover","baseIntensity","hoverIntensity","canvasRef","animationFrameId","isCancelled","canvas","ctx","computedFontFamily","fontSizeStr","numericFontSize","temp","React","offscreen","offCtx","metrics","actualLeft","actualRight","actualAscent","actualDescent","textBoundingWidth","tightHeight","extraWidthBuffer","offscreenWidth","xOffset","horizontalMargin","verticalMargin","interactiveLeft","interactiveTop","interactiveRight","interactiveBottom","isHovering","fuzzRange","run","intensity","j","dx","isInsideTextArea","handleMouseMove","handleMouseLeave","MatrixText","containerRef","container","chars","originalText","iteration","animate","char","LiquidText","words","child","word","SwooshText","ScrambledText","scrambleChars","interval","MagneticText","position","setPosition","handleMouse","clientX","clientY","height","width","left","top","middleX","middleY","reset","DynamicText","setIndex","timer","RotatingText","StaggerText","staggerDelay","RainbowText","CountUp","end","start","prefix","suffix","decimals","count","setCount","animationFrame","timestamp","easeOutQuart","currentCount","RevealText","stagger","SplitText","splitType","textAlign","element","MorphText","PerspectiveText","ElasticText","CircularText","spinDuration","onHover","controls","rotation","handleHoverStart","scale","handleHoverEnd","rotationDeg","angle","GlowingText","hoverColor","currentColor","SlicedText","containerClassName","splitSpacing","DecryptedText","maxIterations","sequential","revealDirection","useOriginalCharsOnly","characters","parentClassName","encryptedClassName","animateOn","setIsHovering","isScrambling","setIsScrambling","revealedIndices","setRevealedIndices","hasAnimated","setHasAnimated","currentIteration","getNextIndex","revealedSet","textLength","middle","offset","nextIndex","availableChars","shuffleText","currentRevealed","positions","nonSpaceChars","p","charIndex","prevRevealed","newRevealed","observerCallback","entries","currentRef","hoverProps","isRevealedOrDone","TrueFocus","sentence","manualMode","blurAmount","borderColor","animationDuration","pauseBetweenAnimations","currentIndex","setCurrentIndex","lastActiveIndex","setLastActiveIndex","wordRefs","focusRect","setFocusRect","updateFocusRect","parentRect","activeRect","isActive","el","GlassCard","HoverCard","CardFlip","frontContent","backContent","isFlipped","setIsFlipped","Card","hover","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","LoadingDots","LoadingSpinner","LoadingBar","LoadingPulse","LoadingBounce","LoadingFlower","LoadingGeometric","LoadingMorph","LoadingRings","LoadingText","LoadingWords","AnimatedList","childrenArray","prevIndex","itemsToShow","item","idx","AnimatedListItem","Skeleton","Tooltip","content","isVisible","setIsVisible","animations","TooltipMinimal","timeoutRef","showTooltip","hideTooltip","getPositionClasses","TooltipAnimated","animation","getAnimationProps","offsets","Badge","Avatar","src","alt","fallback","initials","n","Progress","max","showLabel","percentage","Switch","checked","onChange","sizeConfig","Accordion","items","allowMultiple","openItems","setOpenItems","toggleItem","Tabs","tabs","defaultIndex","activeIndex","setActiveIndex","tab","Modal","isOpen","onClose","title","handleEscape","Drawer","positionClasses","Alert","close","handleClose","AlertIcon","AlertTitle","AlertToolbar","Terminal","TypingAnimation","displayedText","setDisplayedText","isComplete","setIsComplete","AnimatedSpan","Stepper","initialStep","onStepChange","onFinalStepCompleted","backButtonText","nextButtonText","disableStepIndicators","rest","currentStep","setCurrentStep","setDirection","stepsArray","Children","totalSteps","isCompleted","isLastStep","updateStep","newStep","handleBack","handleNext","handleComplete","stepNumber","isNotLastStep","StepIndicator","clicked","StepConnector","StepContentWrapper","parentHeight","setParentHeight","SlideTransition","h","onHeightReady","useLayoutEffect","stepVariants","dir","Step","step","onClickStep","status","TreeContext","createContext","useTree","context","useContext","Tree","forwardRef","data","initialSelectedId","onSelectChange","initialExpandedItems","selectedId","setSelectedId","expandedItems","setExpandedItems","handleExpand","id","handleSelect","treeData","dataArray","findItem","found","selectedItem","Folder","isSelectable","File","Number","mv","number","useTransform","latest","placeValue","memo","Digit","place","digitStyle","valueRoundedToPlace","animatedValue","Counter","padding","places","gap","textColor","containerStyle","buttonVariants","isSelected","spanVariants","transition","Toolbar","defaultSelected","onItemClick","selected","setSelected","handleItemClick","itemId","Dock","directionClasses","DockIcon","magnification","mouseX","Input","label","icon","Textarea","Checkbox","RadioGroup","options","name","option","Select","placeholder","setIsOpen","selectedOption","opt","handleClickOutside","InputOTP","maxLength","onComplete","values","setValues","inputRefs","currentValue","handleChange","pastedValues","newValues","val","handleKeyDown","handleFocus","HamburgerBasic","handleToggle","newState","HamburgerSpin","ClickSpark","sparkColor","sparkSize","sparkRadius","sparkCount","easing","extraScale","sparksRef","startTimeRef","parent","resizeTimeout","resizeCanvas","handleResize","ro","easeFunc","t","animationId","draw","spark","eased","lineLength","x1","y1","x2","y2","now","newSparks","SmoothCursor","cursorX","cursorY","cursorXSpring","cursorYSpring","moveCursor","hideCursor","FloatEffect","GlowEffect","BlurFade","blur","inViewMargin","yOffset","Pixel","min","centerOffset","VARIANTS","getEffectiveSpeed","reducedMotion","PixelCard","noFocus","pixelsRef","animationRef","timePreviousRef","variantCfg","finalGap","finalSpeed","finalColors","finalNoFocus","initPixels","colorsArray","c","pxs","gapValue","dy","doAnimate","fnName","timeNow","timePassed","timeInterval","allIdle","pixel","handleAnimation","onMouseEnter","onMouseLeave","onFocus","onBlur","springValues","TiltedCard","imageSrc","altText","captionText","containerHeight","containerWidth","imageHeight","imageWidth","scaleOnHover","rotateAmplitude","showMobileWarning","overlayContent","displayOverlayContent","rotateX","rotateY","opacity","rotateFigcaption","lastY","setLastY","offsetX","offsetY","rotationX","rotationY","velocityY","handleMouseEnter","InfiniteScroll","pauseOnHover","scrollerRef","scrollerInnerRef","duplicatedItem","MultiStepLoader","loadingStates","loading","currentState","setCurrentState","prevState","ASCII_CHARS","ASCIIText","enableWaves","asciiFontSize","textFontSize","planeBaseHeight","asciiArt","setAsciiArt","pixels","cols","rows","ascii","px","brightness","charIdx","FallingText","highlightWords","highlightClass","trigger","handleInteraction","isHighlighted"],"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 { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface NeonButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n color?: \"pink\" | \"cyan\" | \"green\" | \"purple\" | \"orange\";\r\n size?: \"sm\" | \"default\" | \"lg\";\r\n}\r\n\r\nconst colorVariants = {\r\n pink: {\r\n border: \"border-pink-500\",\r\n text: \"text-pink-400\",\r\n shadow: \"shadow-pink-500/50\",\r\n glow: \"rgba(236, 72, 153, 0.6)\",\r\n bg: \"hover:bg-pink-500/10\",\r\n },\r\n cyan: {\r\n border: \"border-cyan-500\",\r\n text: \"text-cyan-400\",\r\n shadow: \"shadow-cyan-500/50\",\r\n glow: \"rgba(6, 182, 212, 0.6)\",\r\n bg: \"hover:bg-cyan-500/10\",\r\n },\r\n green: {\r\n border: \"border-green-500\",\r\n text: \"text-green-400\",\r\n shadow: \"shadow-green-500/50\",\r\n glow: \"rgba(34, 197, 94, 0.6)\",\r\n bg: \"hover:bg-green-500/10\",\r\n },\r\n purple: {\r\n border: \"border-purple-500\",\r\n text: \"text-purple-400\",\r\n shadow: \"shadow-purple-500/50\",\r\n glow: \"rgba(168, 85, 247, 0.6)\",\r\n bg: \"hover:bg-purple-500/10\",\r\n },\r\n orange: {\r\n border: \"border-orange-500\",\r\n text: \"text-orange-400\",\r\n shadow: \"shadow-orange-500/50\",\r\n glow: \"rgba(249, 115, 22, 0.6)\",\r\n bg: \"hover:bg-orange-500/10\",\r\n },\r\n};\r\n\r\nconst sizeVariants = {\r\n sm: \"h-8 px-3 text-xs\",\r\n default: \"h-10 px-6 text-sm\",\r\n lg: \"h-12 px-8 text-base\",\r\n};\r\n\r\nexport function NeonButton({\r\n children,\r\n className,\r\n color = \"cyan\",\r\n size = \"default\",\r\n ...props\r\n}: NeonButtonProps) {\r\n const colors = colorVariants[color];\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative inline-flex items-center justify-center\",\r\n \"font-semibold tracking-wide uppercase\",\r\n \"border-2 rounded-lg\",\r\n \"bg-transparent\",\r\n \"transition-colors duration-200\",\r\n colors.border,\r\n colors.text,\r\n colors.bg,\r\n sizeVariants[size],\r\n className\r\n )}\r\n whileHover={{\r\n boxShadow: `0 0 20px ${colors.glow}, 0 0 40px ${colors.glow}, 0 0 60px ${colors.glow}`,\r\n }}\r\n whileTap={{ scale: 0.98 }}\r\n transition={{ duration: 0.2 }}\r\n {...props}\r\n >\r\n <motion.span\r\n className={cn(\"absolute inset-0 rounded-lg opacity-0\", colors.border)}\r\n animate={{ opacity: [0.5, 1, 0.5] }}\r\n transition={{ duration: 2, repeat: Infinity, ease: \"easeInOut\" }}\r\n style={{ boxShadow: `inset 0 0 10px ${colors.glow}` }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default NeonButton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LiquidButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"outline\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function LiquidButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n onClick,\r\n ...props\r\n}: LiquidButtonProps) {\r\n const [isFilling, setIsFilling] = useState(false);\r\n\r\n function handleClick(e: React.MouseEvent<HTMLButtonElement>) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setIsFilling(true);\r\n setTimeout(() => setIsFilling(false), 800);\r\n if (onClick) onClick(e);\r\n }\r\n\r\n const sizeClasses = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\"\r\n };\r\n\r\n const variantClasses = {\r\n primary: \"bg-zinc-900 text-white border-zinc-900 dark:bg-white dark:text-zinc-900 dark:border-white\",\r\n secondary: \"bg-zinc-100 text-zinc-900 border-zinc-200 dark:bg-zinc-800 dark:text-white dark:border-zinc-700\",\r\n outline: \"bg-transparent text-zinc-900 border-zinc-300 dark:text-white dark:border-zinc-600\"\r\n };\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-medium border-2 transition-colors\",\r\n sizeClasses[size],\r\n variantClasses[variant],\r\n className\r\n )}\r\n onClick={handleClick}\r\n {...props}\r\n >\r\n <AnimatePresence>\r\n {isFilling && (\r\n <motion.div\r\n key=\"liquid-fill\"\r\n className={cn(\r\n \"absolute inset-0 origin-bottom\",\r\n variant === \"primary\" ? \"bg-blue-500 dark:bg-blue-400\" : \"bg-zinc-900 dark:bg-white\"\r\n )}\r\n initial={{ scaleY: 0 }}\r\n animate={{ scaleY: 1 }}\r\n exit={{ scaleY: 0, transition: { duration: 0.3 } }}\r\n transition={{ duration: 0.5, ease: [0.4, 0, 0.2, 1] }}\r\n style={{ transformOrigin: \"bottom\" }}\r\n />\r\n )}\r\n </AnimatePresence>\r\n \r\n <AnimatePresence>\r\n {isFilling && (\r\n <>\r\n {[...Array(5)].map((_, i) => (\r\n <motion.div\r\n key={i}\r\n className=\"absolute w-1.5 h-1.5 bg-white/60 rounded-full\"\r\n style={{ left: `${20 + i * 15}%`, bottom: \"10%\" }}\r\n initial={{ y: 0, opacity: 0, scale: 0 }}\r\n animate={{ y: -60, opacity: [0, 1, 0], scale: [0, 1, 0.5] }}\r\n transition={{ duration: 0.6, delay: i * 0.08, ease: \"easeOut\" }}\r\n />\r\n ))}\r\n </>\r\n )}\r\n </AnimatePresence>\r\n\r\n <span className={cn(\r\n \"relative flex items-center justify-center gap-2 transition-colors duration-200 z-10\",\r\n isFilling && (variant === \"outline\" || variant === \"secondary\" ? \"text-white dark:text-zinc-900\" : \"text-white\")\r\n )}>\r\n {children}\r\n </span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default LiquidButton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SlideButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"outline\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n slideText?: string;\r\n}\r\n\r\nexport function SlideButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n slideText = \"Go!\",\r\n onClick,\r\n ...props\r\n}: SlideButtonProps) {\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n const sizeClasses = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\"\r\n };\r\n\r\n const variantClasses = {\r\n primary: \"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900\",\r\n secondary: \"bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-white\",\r\n outline: \"bg-transparent text-zinc-900 border-2 border-zinc-300 dark:text-white dark:border-zinc-600\"\r\n };\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-medium transition-all\",\r\n sizeClasses[size],\r\n variantClasses[variant],\r\n className\r\n )}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n onClick={onClick}\r\n {...props}\r\n >\r\n <motion.div\r\n className={cn(\r\n \"absolute inset-0\",\r\n variant === \"primary\" ? \"bg-blue-600 dark:bg-blue-500\" : \"bg-zinc-900 dark:bg-white\"\r\n )}\r\n initial={{ x: \"-100%\" }}\r\n animate={{ x: isHovered ? \"0%\" : \"-100%\" }}\r\n transition={{ duration: 0.3, ease: \"easeInOut\" }}\r\n />\r\n \r\n <motion.span\r\n className=\"relative flex items-center justify-center gap-2 z-10\"\r\n animate={{ x: isHovered ? 20 : 0, opacity: isHovered ? 0 : 1 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {children}\r\n </motion.span>\r\n \r\n <motion.span\r\n className={cn(\r\n \"absolute inset-0 flex items-center justify-center gap-2 z-10\",\r\n variant === \"outline\" || variant === \"secondary\" ? \"text-white dark:text-zinc-900\" : \"text-white\"\r\n )}\r\n initial={{ x: -20, opacity: 0 }}\r\n animate={{ x: isHovered ? 0 : -20, opacity: isHovered ? 1 : 0 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {slideText}\r\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M14 5l7 7m0 0l-7 7m7-7H3\" />\r\n </svg>\r\n </motion.span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default SlideButton;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GradientButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"sunset\" | \"ocean\" | \"forest\" | \"purple\" | \"fire\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst gradients = {\r\n sunset: \"from-orange-500 via-pink-500 to-purple-500\",\r\n ocean: \"from-cyan-500 via-blue-500 to-purple-500\",\r\n forest: \"from-green-500 via-emerald-500 to-teal-500\",\r\n purple: \"from-purple-500 via-violet-500 to-indigo-500\",\r\n fire: \"from-yellow-500 via-orange-500 to-red-500\",\r\n};\r\n\r\nconst sizes = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\",\r\n};\r\n\r\nexport function GradientButton({\r\n children,\r\n className,\r\n variant = \"ocean\",\r\n size = \"md\",\r\n ...props\r\n}: GradientButtonProps) {\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-semibold text-white\",\r\n \"bg-gradient-to-r\",\r\n gradients[variant],\r\n sizes[size],\r\n className\r\n )}\r\n whileHover={{ scale: 1.02 }}\r\n whileTap={{ scale: 0.98 }}\r\n {...props}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 bg-gradient-to-r from-white/0 via-white/25 to-white/0\"\r\n initial={{ x: \"-100%\" }}\r\n whileHover={{ x: \"100%\" }}\r\n transition={{ duration: 0.5 }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default GradientButton;\r\n","\"use client\";\r\n\r\nimport { useState, useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HoldButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n holdDuration?: number;\r\n onHoldComplete?: () => void;\r\n variant?: \"primary\" | \"danger\" | \"success\";\r\n}\r\n\r\nexport function HoldButton({\r\n children,\r\n className,\r\n holdDuration = 1000,\r\n onHoldComplete,\r\n variant = \"primary\",\r\n ...props\r\n}: HoldButtonProps) {\r\n const [progress, setProgress] = useState(0);\r\n const [isHolding, setIsHolding] = useState(false);\r\n const intervalRef = useRef<NodeJS.Timeout | null>(null);\r\n\r\n const variants = {\r\n primary: \"bg-zinc-900 dark:bg-white\",\r\n danger: \"bg-red-500\",\r\n success: \"bg-green-500\",\r\n };\r\n\r\n const progressColors = {\r\n primary: \"bg-blue-500\",\r\n danger: \"bg-red-700\",\r\n success: \"bg-green-700\",\r\n };\r\n\r\n const startHold = () => {\r\n setIsHolding(true);\r\n const startTime = Date.now();\r\n \r\n intervalRef.current = setInterval(() => {\r\n const elapsed = Date.now() - startTime;\r\n const newProgress = Math.min((elapsed / holdDuration) * 100, 100);\r\n setProgress(newProgress);\r\n \r\n if (newProgress >= 100) {\r\n stopHold();\r\n onHoldComplete?.();\r\n }\r\n }, 16);\r\n };\r\n\r\n const stopHold = () => {\r\n setIsHolding(false);\r\n setProgress(0);\r\n if (intervalRef.current) {\r\n clearInterval(intervalRef.current);\r\n intervalRef.current = null;\r\n }\r\n };\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg px-6 py-3 font-medium text-white dark:text-zinc-900\",\r\n variants[variant],\r\n className\r\n )}\r\n onMouseDown={startHold}\r\n onMouseUp={stopHold}\r\n onMouseLeave={stopHold}\r\n onTouchStart={startHold}\r\n onTouchEnd={stopHold}\r\n whileTap={{ scale: 0.98 }}\r\n {...props}\r\n >\r\n <motion.div\r\n className={cn(\"absolute inset-0 origin-left\", progressColors[variant])}\r\n style={{ scaleX: progress / 100 }}\r\n transition={{ duration: 0 }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default HoldButton;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ThreeDButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"danger\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst variants = {\r\n primary: {\r\n bg: \"bg-blue-500\",\r\n shadow: \"shadow-blue-700\",\r\n hover: \"hover:bg-blue-600\",\r\n },\r\n secondary: {\r\n bg: \"bg-zinc-700\",\r\n shadow: \"shadow-zinc-900\",\r\n hover: \"hover:bg-zinc-800\",\r\n },\r\n danger: {\r\n bg: \"bg-red-500\",\r\n shadow: \"shadow-red-700\",\r\n hover: \"hover:bg-red-600\",\r\n },\r\n};\r\n\r\nconst sizes = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\",\r\n};\r\n\r\nexport function ThreeDButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n ...props\r\n}: ThreeDButtonProps) {\r\n const colors = variants[variant];\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative rounded-lg font-semibold text-white\",\r\n \"shadow-[0_6px_0_0]\",\r\n colors.bg,\r\n colors.shadow,\r\n colors.hover,\r\n sizes[size],\r\n className\r\n )}\r\n whileHover={{ y: -2 }}\r\n whileTap={{ y: 4, boxShadow: \"0 2px 0 0\" }}\r\n transition={{ duration: 0.1 }}\r\n {...props}\r\n >\r\n {children}\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default ThreeDButton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CopyButtonProps {\r\n text?: string;\r\n value?: string;\r\n onCopy?: () => void;\r\n className?: string;\r\n}\r\n\r\nexport function CopyButton({ \r\n text = \"Copy\",\r\n value,\r\n onCopy,\r\n className \r\n}: CopyButtonProps) {\r\n const [copied, setCopied] = useState(false);\r\n\r\n const handleCopy = async () => {\r\n try {\r\n if (value) {\r\n await navigator.clipboard.writeText(value);\r\n }\r\n onCopy?.();\r\n setCopied(true);\r\n setTimeout(() => setCopied(false), 2000);\r\n } catch (error) {\r\n console.error(\"Failed to copy:\", error);\r\n }\r\n };\r\n\r\n return (\r\n <button\r\n onClick={handleCopy}\r\n className={cn(\r\n \"inline-flex items-center gap-2 px-4 py-2\",\r\n \"bg-transparent hover:bg-zinc-100 dark:hover:bg-zinc-800\",\r\n \"text-zinc-900 dark:text-zinc-100\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"rounded-md transition-all duration-200 font-medium text-sm\",\r\n className\r\n )}\r\n >\r\n {copied ? (\r\n <>\r\n <svg className=\"w-4 h-4 text-green-600\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\r\n </svg>\r\n Copied!\r\n </>\r\n ) : (\r\n <>\r\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\" />\r\n </svg>\r\n {text}\r\n </>\r\n )}\r\n </button>\r\n );\r\n}\r\n\r\nexport default CopyButton;\r\n","\"use client\";\r\n\r\nimport { useState, useRef } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ParticleButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n onSuccess?: () => void;\r\n successDuration?: number;\r\n}\r\n\r\nfunction SuccessParticles({ buttonRef }: { buttonRef: React.RefObject<HTMLButtonElement> }) {\r\n const rect = buttonRef.current?.getBoundingClientRect();\r\n if (!rect) return null;\r\n\r\n const centerX = rect.left + rect.width / 2;\r\n const centerY = rect.top + rect.height / 2;\r\n\r\n return (\r\n <AnimatePresence>\r\n {[...Array(6)].map((_, i) => (\r\n <motion.div\r\n key={i}\r\n className=\"fixed w-1 h-1 bg-black dark:bg-white rounded-full\"\r\n style={{ left: centerX, top: centerY }}\r\n initial={{ scale: 0, x: 0, y: 0 }}\r\n animate={{ scale: [0, 1, 0], x: [0, (i % 2 ? 1 : -1) * (Math.random() * 50 + 20)], y: [0, -Math.random() * 50 - 20] }}\r\n transition={{ duration: 0.6, delay: i * 0.1, ease: \"easeOut\" }}\r\n />\r\n ))}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport function ParticleButton({\r\n children,\r\n onClick,\r\n onSuccess,\r\n successDuration = 1000,\r\n className,\r\n ...props\r\n}: ParticleButtonProps) {\r\n const [showParticles, setShowParticles] = useState(false);\r\n const buttonRef = useRef<HTMLButtonElement>(null);\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n setShowParticles(true);\r\n onClick?.(e);\r\n onSuccess?.();\r\n setTimeout(() => setShowParticles(false), successDuration);\r\n };\r\n\r\n return (\r\n <>\r\n {showParticles && <SuccessParticles buttonRef={buttonRef} />}\r\n <button\r\n ref={buttonRef}\r\n onClick={handleClick}\r\n className={cn(\r\n \"relative px-4 py-2 rounded-md bg-primary text-primary-foreground\",\r\n showParticles && \"scale-95\",\r\n \"transition-transform duration-100\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </>\r\n );\r\n}\r\n\r\nexport default ParticleButton;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\nimport { motion, useAnimation } from \"framer-motion\";\r\nimport { useEffect, useState, useCallback } from \"react\";\r\n\r\ninterface AttractButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n particleCount?: number;\r\n attractRadius?: number;\r\n children?: React.ReactNode;\r\n}\r\n\r\ninterface Particle {\r\n id: number;\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport function AttractButton({\r\n className,\r\n particleCount = 12,\r\n children,\r\n ...props\r\n}: AttractButtonProps) {\r\n const [isAttracting, setIsAttracting] = useState(false);\r\n const [particles, setParticles] = useState<Particle[]>([]);\r\n const particlesControl = useAnimation();\r\n\r\n useEffect(() => {\r\n const newParticles = Array.from({ length: particleCount }, (_, i) => ({\r\n id: i,\r\n x: Math.random() * 360 - 180,\r\n y: Math.random() * 360 - 180,\r\n }));\r\n setParticles(newParticles);\r\n }, [particleCount]);\r\n\r\n const handleInteractionStart = useCallback(async () => {\r\n setIsAttracting(true);\r\n await particlesControl.start({ x: 0, y: 0, transition: { type: \"spring\", stiffness: 50, damping: 10 } });\r\n }, [particlesControl]);\r\n\r\n const handleInteractionEnd = useCallback(async () => {\r\n setIsAttracting(false);\r\n await particlesControl.start((i) => ({\r\n x: particles[i].x,\r\n y: particles[i].y,\r\n transition: { type: \"spring\", stiffness: 100, damping: 15 },\r\n }));\r\n }, [particlesControl, particles]);\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"min-w-40 relative touch-none px-4 py-2 rounded-md\",\r\n \"bg-violet-100 dark:bg-violet-900\",\r\n \"hover:bg-violet-200 dark:hover:bg-violet-800\",\r\n \"text-violet-600 dark:text-violet-300\",\r\n \"border border-violet-300 dark:border-violet-700\",\r\n \"transition-all duration-300\",\r\n className\r\n )}\r\n onMouseEnter={handleInteractionStart}\r\n onMouseLeave={handleInteractionEnd}\r\n onTouchStart={handleInteractionStart}\r\n onTouchEnd={handleInteractionEnd}\r\n {...props}\r\n >\r\n {particles.map((_, index) => (\r\n <motion.div\r\n key={index}\r\n custom={index}\r\n initial={{ x: particles[index].x, y: particles[index].y }}\r\n animate={particlesControl}\r\n className={cn(\"absolute w-1.5 h-1.5 rounded-full bg-violet-400 dark:bg-violet-300 transition-opacity duration-300\", isAttracting ? \"opacity-100\" : \"opacity-40\")}\r\n />\r\n ))}\r\n <span className=\"relative w-full flex items-center justify-center gap-2\">\r\n {children || (isAttracting ? \"Attracting\" : \"Hover me\")}\r\n </span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default AttractButton;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CommandButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n shortcut?: string;\r\n}\r\n\r\nexport function CommandButton({ className, children, shortcut = \"CMD + K\", ...props }: CommandButtonProps) {\r\n return (\r\n <button\r\n {...props}\r\n className={cn(\r\n \"relative p-2 rounded-lg overflow-hidden\",\r\n \"bg-gradient-to-b from-zinc-50 to-zinc-100 dark:from-zinc-800 dark:to-zinc-900\",\r\n \"border border-zinc-200 dark:border-zinc-800\",\r\n \"hover:border-zinc-300 dark:hover:border-zinc-700\",\r\n \"transition-all duration-300 ease-out group\",\r\n \"inline-flex items-center justify-center gap-2\",\r\n className\r\n )}\r\n >\r\n <svg\r\n className={cn(\r\n \"w-4 h-4 text-zinc-600 dark:text-zinc-400\",\r\n \"transition-all duration-300\",\r\n \"group-hover:scale-110 group-hover:rotate-[-4deg] group-active:scale-95\"\r\n )}\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n >\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z\" />\r\n </svg>\r\n <span className=\"text-sm text-zinc-600 dark:text-zinc-400\">{children || shortcut}</span>\r\n <span className=\"absolute inset-0 bg-gradient-to-r from-indigo-500/0 via-indigo-500/10 to-indigo-500/0 translate-x-[-100%] group-hover:translate-x-[100%] transition-transform duration-500 ease-out\" />\r\n </button>\r\n );\r\n}\r\n\r\nexport default CommandButton;\r\n","\"use client\";\r\n\r\nimport React, { ReactNode } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GradientTextProps {\r\n children: ReactNode;\r\n className?: string;\r\n colors?: string[];\r\n animationSpeed?: number;\r\n}\r\n\r\nexport function GradientText({\r\n children,\r\n className = \"\",\r\n colors = [\"#40ffaa\", \"#4079ff\", \"#40ffaa\", \"#4079ff\", \"#40ffaa\"],\r\n animationSpeed = 8,\r\n}: GradientTextProps) {\r\n return (\r\n <span\r\n className={cn(\r\n \"bg-clip-text text-transparent bg-[length:200%_auto] animate-gradient\",\r\n className\r\n )}\r\n style={{\r\n backgroundImage: `linear-gradient(to right, ${colors.join(\", \")})`,\r\n animationDuration: `${animationSpeed}s`,\r\n }}\r\n >\r\n {children}\r\n </span>\r\n );\r\n}\r\n\r\nexport default GradientText;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ShimmerTextProps {\r\n text?: string;\r\n className?: string;\r\n}\r\n\r\nexport function ShimmerText({ text = \"Text Shimmer\", className }: ShimmerTextProps) {\r\n return (\r\n <div className=\"flex items-center justify-center p-8\">\r\n <motion.div\r\n className=\"relative px-4 py-2 overflow-hidden\"\r\n initial={{ opacity: 0, y: 20 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.5 }}\r\n >\r\n <motion.h1\r\n className={cn(\r\n \"text-3xl font-bold bg-gradient-to-r from-neutral-950 via-neutral-400 to-neutral-950 dark:from-white dark:via-neutral-600 dark:to-white bg-[length:200%_100%] bg-clip-text text-transparent\",\r\n className\r\n )}\r\n animate={{\r\n backgroundPosition: [\"200% center\", \"-200% center\"],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n ease: \"linear\",\r\n repeat: Infinity,\r\n }}\r\n >\r\n {text}\r\n </motion.h1>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ShimmerText;\r\n","\"use client\";\r\n\r\nimport React, { useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlitchTextProps {\r\n text?: string;\r\n className?: string;\r\n glitchIntensity?: \"light\" | \"medium\" | \"heavy\" | \"extreme\";\r\n color?: \"rainbow\" | \"blue\" | \"purple\" | \"cyan\" | \"pink\" | \"orange\";\r\n isStatic?: boolean;\r\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\";\r\n}\r\n\r\nexport function GlitchText({\r\n text = \"Glitch Text\",\r\n className,\r\n glitchIntensity = \"medium\",\r\n color = \"orange\",\r\n isStatic = false,\r\n size = \"md\",\r\n}: GlitchTextProps) {\r\n const colorSchemes = {\r\n rainbow: { primary: \"#a855f7\", before: \"#22d3ee\", after: \"#f472b6\" },\r\n blue: { primary: \"#3b82f6\", before: \"#60a5fa\", after: \"#1d4ed8\" },\r\n purple: { primary: \"#8b5cf6\", before: \"#a78bfa\", after: \"#6d28d9\" },\r\n cyan: { primary: \"#06b6d4\", before: \"#22d3ee\", after: \"#0891b2\" },\r\n pink: { primary: \"#ec4899\", before: \"#f472b6\", after: \"#db2777\" },\r\n orange: { primary: \"#f97316\", before: \"#fb923c\", after: \"#ea580c\" },\r\n };\r\n\r\n const selectedScheme = colorSchemes[color];\r\n\r\n const intensitySettings = {\r\n light: { translateRange: 2, skewRange: 0.5 },\r\n medium: { translateRange: 3, skewRange: 1 },\r\n heavy: { translateRange: 5, skewRange: 2 },\r\n extreme: { translateRange: 8, skewRange: 3 },\r\n };\r\n\r\n const settings = intensitySettings[glitchIntensity];\r\n\r\n const sizeMap = {\r\n sm: \"text-2xl\",\r\n md: \"text-4xl\",\r\n lg: \"text-5xl\",\r\n xl: \"text-6xl\",\r\n \"2xl\": \"text-7xl\",\r\n \"3xl\": \"text-8xl\",\r\n };\r\n\r\n const glitchAnimation = {\r\n animate: {\r\n x: [0, settings.translateRange, -settings.translateRange, 0],\r\n y: [0, -settings.translateRange, settings.translateRange, 0],\r\n skewX: [0, settings.skewRange, -settings.skewRange, 0],\r\n },\r\n transition: {\r\n duration: 0.5,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n },\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative flex items-center justify-center p-8\", className)}>\r\n <motion.div\r\n className={cn(\"relative font-bold tracking-wider\", sizeMap[size])}\r\n style={{ color: selectedScheme.primary }}\r\n animate={!isStatic ? glitchAnimation.animate : undefined}\r\n transition={glitchAnimation.transition}\r\n >\r\n {text}\r\n <motion.span\r\n className=\"absolute inset-0 pointer-events-none\"\r\n style={{ color: selectedScheme.before, opacity: 0.8 }}\r\n animate={!isStatic ? {\r\n x: [-settings.translateRange, settings.translateRange, 0],\r\n y: [settings.translateRange, -settings.translateRange, 0],\r\n } : undefined}\r\n transition={{ duration: 0.5, repeat: Infinity }}\r\n >\r\n {text}\r\n </motion.span>\r\n <motion.span\r\n className=\"absolute inset-0 pointer-events-none\"\r\n style={{ color: selectedScheme.after, opacity: 0.8 }}\r\n animate={!isStatic ? {\r\n x: [settings.translateRange, -settings.translateRange, 0],\r\n y: [-settings.translateRange, settings.translateRange, 0],\r\n } : undefined}\r\n transition={{ duration: 0.5, repeat: Infinity }}\r\n >\r\n {text}\r\n </motion.span>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default GlitchText;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BounceTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n duration?: number;\r\n}\r\n\r\nexport function BounceText({\r\n text,\r\n className,\r\n delay = 0,\r\n duration = 0.4,\r\n}: BounceTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{\r\n y: [0, -20, 0],\r\n }}\r\n transition={{\r\n delay: delay + index * 0.03,\r\n duration: duration,\r\n ease: \"easeInOut\",\r\n repeat: Infinity,\r\n repeatDelay: 0.5,\r\n }}\r\n >\r\n {letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default BounceText;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useRef, useState, useMemo } from \"react\";\r\nimport { motion, Transition } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BlurTextProps {\r\n text?: string;\r\n delay?: number;\r\n className?: string;\r\n animateBy?: \"words\" | \"letters\";\r\n direction?: \"top\" | \"bottom\";\r\n}\r\n\r\nexport function BlurText({\r\n text = \"\",\r\n delay = 200,\r\n className = \"\",\r\n animateBy = \"words\",\r\n direction = \"top\",\r\n}: BlurTextProps) {\r\n const elements = animateBy === \"words\" ? text.split(\" \") : text.split(\"\");\r\n const [inView, setInView] = useState(false);\r\n const ref = useRef<HTMLParagraphElement>(null);\r\n\r\n useEffect(() => {\r\n if (!ref.current) return;\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setInView(true);\r\n observer.unobserve(ref.current as Element);\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n observer.observe(ref.current);\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n const fromAnimation = useMemo(\r\n () =>\r\n direction === \"top\"\r\n ? { filter: \"blur(10px)\", opacity: 0, y: -50 }\r\n : { filter: \"blur(10px)\", opacity: 0, y: 50 },\r\n [direction]\r\n );\r\n\r\n const toAnimation = { filter: \"blur(0px)\", opacity: 1, y: 0 };\r\n\r\n return (\r\n <p ref={ref} className={cn(\"flex flex-wrap\", className)}>\r\n {elements.map((segment, index) => (\r\n <motion.span\r\n key={index}\r\n initial={fromAnimation}\r\n animate={inView ? toAnimation : fromAnimation}\r\n transition={{\r\n duration: 0.5,\r\n delay: (index * delay) / 1000,\r\n ease: \"easeOut\",\r\n }}\r\n className=\"inline-block\"\r\n style={{ willChange: \"transform, filter, opacity\" }}\r\n >\r\n {segment === \" \" ? \"\\u00A0\" : segment}\r\n {animateBy === \"words\" && index < elements.length - 1 && \"\\u00A0\"}\r\n </motion.span>\r\n ))}\r\n </p>\r\n );\r\n}\r\n\r\nexport default BlurText;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TypewriterProps {\r\n text?: string;\r\n className?: string;\r\n speed?: number;\r\n delay?: number;\r\n cursor?: boolean;\r\n loop?: boolean;\r\n}\r\n\r\nexport function Typewriter({\r\n text = \"Hello World\",\r\n className,\r\n speed = 50,\r\n delay = 0,\r\n cursor = true,\r\n loop = false,\r\n}: TypewriterProps) {\r\n const [displayText, setDisplayText] = useState(\"\");\r\n const [isTyping, setIsTyping] = useState(false);\r\n\r\n useEffect(() => {\r\n let timeout: NodeJS.Timeout;\r\n let i = 0;\r\n let isDeleting = false;\r\n\r\n const type = () => {\r\n setIsTyping(true);\r\n\r\n if (!isDeleting) {\r\n if (i < text.length) {\r\n setDisplayText(text.slice(0, i + 1));\r\n i++;\r\n timeout = setTimeout(type, speed);\r\n } else {\r\n setIsTyping(false);\r\n if (loop) {\r\n timeout = setTimeout(() => {\r\n isDeleting = true;\r\n type();\r\n }, 2000);\r\n }\r\n }\r\n } else {\r\n if (i > 0) {\r\n setDisplayText(text.slice(0, i - 1));\r\n i--;\r\n timeout = setTimeout(type, speed / 2);\r\n } else {\r\n isDeleting = false;\r\n timeout = setTimeout(type, 500);\r\n }\r\n }\r\n };\r\n\r\n timeout = setTimeout(type, delay);\r\n\r\n return () => clearTimeout(timeout);\r\n }, [text, speed, delay, loop]);\r\n\r\n return (\r\n <span className={cn(\"inline-block font-mono\", className)}>\r\n {displayText}\r\n {cursor && (\r\n <span\r\n className={cn(\r\n \"ml-0.5 inline-block w-[2px] h-[1em] bg-current\",\r\n isTyping ? \"animate-blink\" : \"\"\r\n )}\r\n />\r\n )}\r\n </span>\r\n );\r\n}\r\n\r\nexport default Typewriter;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface WaveTextProps {\r\n text: string;\r\n className?: string;\r\n amplitude?: number;\r\n frequency?: number;\r\n}\r\n\r\nexport function WaveText({\r\n text,\r\n className,\r\n amplitude = 10,\r\n frequency = 1.5,\r\n}: WaveTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{\r\n y: [0, -amplitude, 0, amplitude, 0],\r\n }}\r\n transition={{\r\n duration: frequency,\r\n repeat: Infinity,\r\n delay: index * 0.08,\r\n ease: \"easeInOut\",\r\n }}\r\n >\r\n {letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default WaveText;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FlipTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function FlipText({ text, className, delay = 0 }: FlipTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)} style={{ perspective: \"1000px\" }}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block origin-center\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{ rotateX: [0, 360] }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n delay: delay + index * 0.08,\r\n ease: \"easeInOut\",\r\n repeatDelay: 0.8,\r\n }}\r\n >\r\n {letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default FlipText;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ShinyTextProps {\r\n text: string;\r\n disabled?: boolean;\r\n speed?: number;\r\n className?: string;\r\n}\r\n\r\nexport function ShinyText({ \r\n text, \r\n disabled = false, \r\n speed = 5, \r\n className = \"\" \r\n}: ShinyTextProps) {\r\n return (\r\n <span \r\n className={cn(\r\n \"inline-block bg-gradient-to-r from-gray-900 via-gray-100 to-gray-900 bg-clip-text text-transparent bg-[length:200%_100%]\",\r\n !disabled && \"animate-[shine_var(--shine-speed)_linear_infinite]\",\r\n className\r\n )}\r\n style={{ \r\n \"--shine-speed\": `${speed}s`,\r\n backgroundImage: \"linear-gradient(90deg, #374151 25%, #f3f4f6 50%, #374151 75%)\"\r\n } as React.CSSProperties}\r\n >\r\n {text}\r\n <style>{`\r\n @keyframes shine {\r\n 0% { background-position: -200% 0; }\r\n 100% { background-position: 200% 0; }\r\n }\r\n `}</style>\r\n </span>\r\n );\r\n}\r\n\r\nexport default ShinyText;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useRef } from \"react\";\r\n\r\ninterface FuzzyTextProps {\r\n children: React.ReactNode;\r\n fontSize?: number | string;\r\n fontWeight?: string | number;\r\n fontFamily?: string;\r\n color?: string;\r\n enableHover?: boolean;\r\n baseIntensity?: number;\r\n hoverIntensity?: number;\r\n}\r\n\r\nexport function FuzzyText({\r\n children,\r\n fontSize = \"clamp(2rem, 8vw, 8rem)\",\r\n fontWeight = 900,\r\n fontFamily = \"inherit\",\r\n color = \"#fff\",\r\n enableHover = true,\r\n baseIntensity = 0.18,\r\n hoverIntensity = 0.5\r\n}: FuzzyTextProps) {\r\n const canvasRef = useRef<HTMLCanvasElement & { cleanupFuzzyText?: () => void }>(null);\r\n\r\n useEffect(() => {\r\n let animationFrameId: number;\r\n let isCancelled = false;\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n\r\n const init = async () => {\r\n if (document.fonts?.ready) await document.fonts.ready;\r\n if (isCancelled) return;\r\n\r\n const ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n const computedFontFamily = fontFamily === \"inherit\" \r\n ? window.getComputedStyle(canvas).fontFamily || \"sans-serif\" \r\n : fontFamily;\r\n\r\n const fontSizeStr = typeof fontSize === \"number\" ? `${fontSize}px` : fontSize;\r\n let numericFontSize: number;\r\n if (typeof fontSize === \"number\") {\r\n numericFontSize = fontSize;\r\n } else {\r\n const temp = document.createElement(\"span\");\r\n temp.style.fontSize = fontSize;\r\n document.body.appendChild(temp);\r\n numericFontSize = parseFloat(window.getComputedStyle(temp).fontSize);\r\n document.body.removeChild(temp);\r\n }\r\n\r\n const text = React.Children.toArray(children).join(\"\");\r\n const offscreen = document.createElement(\"canvas\");\r\n const offCtx = offscreen.getContext(\"2d\");\r\n if (!offCtx) return;\r\n\r\n offCtx.font = `${fontWeight} ${fontSizeStr} ${computedFontFamily}`;\r\n offCtx.textBaseline = \"alphabetic\";\r\n const metrics = offCtx.measureText(text);\r\n\r\n const actualLeft = metrics.actualBoundingBoxLeft ?? 0;\r\n const actualRight = metrics.actualBoundingBoxRight ?? metrics.width;\r\n const actualAscent = metrics.actualBoundingBoxAscent ?? numericFontSize;\r\n const actualDescent = metrics.actualBoundingBoxDescent ?? numericFontSize * 0.2;\r\n\r\n const textBoundingWidth = Math.ceil(actualLeft + actualRight);\r\n const tightHeight = Math.ceil(actualAscent + actualDescent);\r\n const extraWidthBuffer = 10;\r\n const offscreenWidth = textBoundingWidth + extraWidthBuffer;\r\n\r\n offscreen.width = offscreenWidth;\r\n offscreen.height = tightHeight;\r\n\r\n const xOffset = extraWidthBuffer / 2;\r\n offCtx.font = `${fontWeight} ${fontSizeStr} ${computedFontFamily}`;\r\n offCtx.textBaseline = \"alphabetic\";\r\n offCtx.fillStyle = color;\r\n offCtx.fillText(text, xOffset - actualLeft, actualAscent);\r\n\r\n const horizontalMargin = 50;\r\n const verticalMargin = 0;\r\n canvas.width = offscreenWidth + horizontalMargin * 2;\r\n canvas.height = tightHeight + verticalMargin * 2;\r\n ctx.translate(horizontalMargin, verticalMargin);\r\n\r\n const interactiveLeft = horizontalMargin + xOffset;\r\n const interactiveTop = verticalMargin;\r\n const interactiveRight = interactiveLeft + textBoundingWidth;\r\n const interactiveBottom = interactiveTop + tightHeight;\r\n\r\n let isHovering = false;\r\n const fuzzRange = 30;\r\n\r\n const run = () => {\r\n if (isCancelled) return;\r\n ctx.clearRect(-fuzzRange, -fuzzRange, offscreenWidth + 2 * fuzzRange, tightHeight + 2 * fuzzRange);\r\n const intensity = isHovering ? hoverIntensity : baseIntensity;\r\n for (let j = 0; j < tightHeight; j++) {\r\n const dx = Math.floor(intensity * (Math.random() - 0.5) * fuzzRange);\r\n ctx.drawImage(offscreen, 0, j, offscreenWidth, 1, dx, j, offscreenWidth, 1);\r\n }\r\n animationFrameId = window.requestAnimationFrame(run);\r\n };\r\n\r\n run();\r\n\r\n const isInsideTextArea = (x: number, y: number) =>\r\n x >= interactiveLeft && x <= interactiveRight && y >= interactiveTop && y <= interactiveBottom;\r\n\r\n const handleMouseMove = (e: MouseEvent) => {\r\n if (!enableHover) return;\r\n const rect = canvas.getBoundingClientRect();\r\n isHovering = isInsideTextArea(e.clientX - rect.left, e.clientY - rect.top);\r\n };\r\n\r\n const handleMouseLeave = () => { isHovering = false; };\r\n\r\n if (enableHover) {\r\n canvas.addEventListener(\"mousemove\", handleMouseMove);\r\n canvas.addEventListener(\"mouseleave\", handleMouseLeave);\r\n }\r\n\r\n canvas.cleanupFuzzyText = () => {\r\n window.cancelAnimationFrame(animationFrameId);\r\n if (enableHover) {\r\n canvas.removeEventListener(\"mousemove\", handleMouseMove);\r\n canvas.removeEventListener(\"mouseleave\", handleMouseLeave);\r\n }\r\n };\r\n };\r\n\r\n init();\r\n\r\n return () => {\r\n isCancelled = true;\r\n window.cancelAnimationFrame(animationFrameId);\r\n if (canvas?.cleanupFuzzyText) canvas.cleanupFuzzyText();\r\n };\r\n }, [children, fontSize, fontWeight, fontFamily, color, enableHover, baseIntensity, hoverIntensity]);\r\n\r\n return <canvas ref={canvasRef} className=\"max-w-full\" />;\r\n}\r\n\r\nexport default FuzzyText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MatrixTextProps {\r\n text: string;\r\n className?: string;\r\n speed?: number;\r\n color?: string;\r\n}\r\n\r\nexport function MatrixText({ \r\n text, \r\n className,\r\n speed = 50,\r\n color = \"#22c55e\"\r\n}: MatrixTextProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const intervalRef = useRef<NodeJS.Timeout | null>(null);\r\n\r\n useEffect(() => {\r\n const container = containerRef.current;\r\n if (!container) return;\r\n\r\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@#$%^&*\";\r\n const originalText = text;\r\n let iteration = 0;\r\n\r\n const animate = () => {\r\n container.innerText = originalText\r\n .split(\"\")\r\n .map((char, index) => {\r\n if (index < iteration) return originalText[index];\r\n return chars[Math.floor(Math.random() * chars.length)];\r\n })\r\n .join(\"\");\r\n\r\n if (iteration >= originalText.length) {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n return;\r\n }\r\n\r\n iteration += 1 / 3;\r\n };\r\n\r\n intervalRef.current = setInterval(animate, speed);\r\n\r\n return () => {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n };\r\n }, [text, speed]);\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={cn(\"font-mono\", className)}\r\n style={{ color }}\r\n >\r\n {text}\r\n </div>\r\n );\r\n}\r\n\r\nexport default MatrixText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LiquidTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function LiquidText({ text, className, delay = 0 }: LiquidTextProps) {\r\n const words = text.split(\" \");\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: (i = 1) => ({\r\n opacity: 1,\r\n transition: { staggerChildren: 0.12, delayChildren: delay * i },\r\n }),\r\n };\r\n\r\n const child = {\r\n visible: {\r\n opacity: 1,\r\n y: 0,\r\n filter: \"blur(0px)\",\r\n transition: {\r\n type: \"spring\",\r\n damping: 12,\r\n stiffness: 100,\r\n },\r\n },\r\n hidden: {\r\n opacity: 0,\r\n y: 20,\r\n filter: \"blur(10px)\",\r\n transition: {\r\n type: \"spring\",\r\n damping: 12,\r\n stiffness: 100,\r\n },\r\n },\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(\"flex flex-wrap\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {words.map((word, index) => (\r\n <motion.span\r\n variants={child}\r\n key={index}\r\n className=\"mr-2\"\r\n >\r\n {word}\r\n </motion.span>\r\n ))}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default LiquidText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SwooshTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function SwooshText({ text, className, delay = 0 }: SwooshTextProps) {\r\n const letters = text.split(\"\");\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: {\r\n opacity: 1,\r\n transition: { staggerChildren: 0.03, delayChildren: delay },\r\n },\r\n };\r\n\r\n const child = {\r\n hidden: {\r\n opacity: 0,\r\n x: -20,\r\n y: 10,\r\n rotate: -10,\r\n },\r\n visible: {\r\n opacity: 1,\r\n x: 0,\r\n y: 0,\r\n rotate: 0,\r\n transition: {\r\n type: \"spring\",\r\n damping: 12,\r\n stiffness: 200,\r\n },\r\n },\r\n };\r\n\r\n return (\r\n <motion.span\r\n className={cn(\"inline-flex\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={index}\r\n variants={child}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </motion.span>\r\n );\r\n}\r\n\r\nexport default SwooshText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ScrambledTextProps {\r\n text: string;\r\n className?: string;\r\n speed?: number;\r\n scrambleChars?: string;\r\n}\r\n\r\nexport function ScrambledText({\r\n text,\r\n className,\r\n speed = 50,\r\n scrambleChars = \"!<>-_\\\\/[]{}—=+*^?#________\"\r\n}: ScrambledTextProps) {\r\n const [displayText, setDisplayText] = useState(text);\r\n\r\n useEffect(() => {\r\n let iteration = 0;\r\n const interval = setInterval(() => {\r\n setDisplayText(\r\n text\r\n .split(\"\")\r\n .map((char, index) => {\r\n if (index < iteration) return text[index];\r\n return scrambleChars[Math.floor(Math.random() * scrambleChars.length)];\r\n })\r\n .join(\"\")\r\n );\r\n\r\n if (iteration >= text.length) {\r\n clearInterval(interval);\r\n }\r\n\r\n iteration += 1 / 3;\r\n }, speed);\r\n\r\n return () => clearInterval(interval);\r\n }, [text, speed, scrambleChars]);\r\n\r\n return (\r\n <span className={cn(\"font-mono\", className)}>\r\n {displayText}\r\n </span>\r\n );\r\n}\r\n\r\nexport default ScrambledText;\r\n","\"use client\";\r\n\r\nimport { useRef, useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MagneticTextProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n strength?: number;\r\n}\r\n\r\nexport function MagneticText({ children, className, strength = 0.5 }: MagneticTextProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [position, setPosition] = useState({ x: 0, y: 0 });\r\n\r\n const handleMouse = (e: React.MouseEvent<HTMLDivElement>) => {\r\n const { clientX, clientY } = e;\r\n const { height, width, left, top } = ref.current!.getBoundingClientRect();\r\n const middleX = clientX - (left + width / 2);\r\n const middleY = clientY - (top + height / 2);\r\n setPosition({ x: middleX * strength, y: middleY * strength });\r\n };\r\n\r\n const reset = () => {\r\n setPosition({ x: 0, y: 0 });\r\n };\r\n\r\n const { x, y } = position;\r\n\r\n return (\r\n <motion.div\r\n ref={ref}\r\n onMouseMove={handleMouse}\r\n onMouseLeave={reset}\r\n animate={{ x, y }}\r\n transition={{ type: \"spring\", stiffness: 150, damping: 15, mass: 0.1 }}\r\n className={cn(\"inline-block cursor-pointer\", className)}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default MagneticText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface DynamicTextProps {\r\n words: string[];\r\n className?: string;\r\n interval?: number;\r\n}\r\n\r\nexport function DynamicText({ words, className, interval = 3000 }: DynamicTextProps) {\r\n const [index, setIndex] = useState(0);\r\n\r\n useEffect(() => {\r\n const timer = setInterval(() => {\r\n setIndex((prev) => (prev + 1) % words.length);\r\n }, interval);\r\n return () => clearInterval(timer);\r\n }, [words.length, interval]);\r\n\r\n return (\r\n <div className={cn(\"relative inline-block overflow-hidden\", className)}>\r\n <AnimatePresence mode=\"wait\">\r\n <motion.span\r\n key={words[index]}\r\n initial={{ y: 20, opacity: 0 }}\r\n animate={{ y: 0, opacity: 1 }}\r\n exit={{ y: -20, opacity: 0 }}\r\n transition={{ duration: 0.3 }}\r\n className=\"inline-block\"\r\n >\r\n {words[index]}\r\n </motion.span>\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default DynamicText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RotatingTextProps {\r\n words: string[];\r\n className?: string;\r\n interval?: number;\r\n}\r\n\r\nexport function RotatingText({ words, className, interval = 2000 }: RotatingTextProps) {\r\n const [index, setIndex] = useState(0);\r\n\r\n useEffect(() => {\r\n const timer = setInterval(() => {\r\n setIndex((prev) => (prev + 1) % words.length);\r\n }, interval);\r\n return () => clearInterval(timer);\r\n }, [words.length, interval]);\r\n\r\n return (\r\n <span className={cn(\"inline-block relative\", className)}>\r\n <AnimatePresence mode=\"wait\">\r\n <motion.span\r\n key={words[index]}\r\n initial={{ rotateX: -90, opacity: 0 }}\r\n animate={{ rotateX: 0, opacity: 1 }}\r\n exit={{ rotateX: 90, opacity: 0 }}\r\n transition={{ duration: 0.4 }}\r\n className=\"inline-block\"\r\n style={{ transformStyle: \"preserve-3d\" }}\r\n >\r\n {words[index]}\r\n </motion.span>\r\n </AnimatePresence>\r\n </span>\r\n );\r\n}\r\n\r\nexport default RotatingText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface StaggerTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n staggerDelay?: number;\r\n}\r\n\r\nexport function StaggerText({ \r\n text, \r\n className, \r\n delay = 0,\r\n staggerDelay = 0.05 \r\n}: StaggerTextProps) {\r\n const letters = text.split(\"\");\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: {\r\n opacity: 1,\r\n transition: {\r\n staggerChildren: staggerDelay,\r\n delayChildren: delay,\r\n },\r\n },\r\n };\r\n\r\n const child = {\r\n hidden: { opacity: 0, y: 20 },\r\n visible: {\r\n opacity: 1,\r\n y: 0,\r\n transition: { type: \"spring\", damping: 12, stiffness: 200 },\r\n },\r\n };\r\n\r\n return (\r\n <motion.span\r\n className={cn(\"inline-flex\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={index}\r\n variants={child}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </motion.span>\r\n );\r\n}\r\n\r\nexport default StaggerText;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RainbowTextProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n speed?: number;\r\n}\r\n\r\nexport function RainbowText({ children, className, speed = 3 }: RainbowTextProps) {\r\n return (\r\n <span\r\n className={cn(\r\n \"inline-block bg-gradient-to-r from-red-500 via-yellow-500 via-green-500 via-blue-500 to-purple-500 bg-clip-text text-transparent bg-[length:200%_auto] animate-[rainbow_var(--rainbow-speed)_linear_infinite]\",\r\n className\r\n )}\r\n style={{ \"--rainbow-speed\": `${speed}s` } as React.CSSProperties}\r\n >\r\n {children}\r\n <style>{`\r\n @keyframes rainbow {\r\n 0% { background-position: 0% center; }\r\n 100% { background-position: 200% center; }\r\n }\r\n `}</style>\r\n </span>\r\n );\r\n}\r\n\r\nexport default RainbowText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CountUpProps {\r\n end: number;\r\n start?: number;\r\n duration?: number;\r\n className?: string;\r\n prefix?: string;\r\n suffix?: string;\r\n decimals?: number;\r\n}\r\n\r\nexport function CountUp({\r\n end,\r\n start = 0,\r\n duration = 2000,\r\n className,\r\n prefix = \"\",\r\n suffix = \"\",\r\n decimals = 0,\r\n}: CountUpProps) {\r\n const [count, setCount] = useState(start);\r\n\r\n useEffect(() => {\r\n let startTime: number | null = null;\r\n let animationFrame: number;\r\n\r\n const animate = (timestamp: number) => {\r\n if (!startTime) startTime = timestamp;\r\n const progress = Math.min((timestamp - startTime) / duration, 1);\r\n \r\n const easeOutQuart = 1 - Math.pow(1 - progress, 4);\r\n const currentCount = start + (end - start) * easeOutQuart;\r\n \r\n setCount(currentCount);\r\n\r\n if (progress < 1) {\r\n animationFrame = requestAnimationFrame(animate);\r\n }\r\n };\r\n\r\n animationFrame = requestAnimationFrame(animate);\r\n\r\n return () => cancelAnimationFrame(animationFrame);\r\n }, [start, end, duration]);\r\n\r\n return (\r\n <span className={cn(\"tabular-nums\", className)}>\r\n {prefix}\r\n {count.toFixed(decimals)}\r\n {suffix}\r\n </span>\r\n );\r\n}\r\n\r\nexport default CountUp;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RevealTextProps {\r\n text: string;\r\n className?: string;\r\n stagger?: number;\r\n}\r\n\r\nexport function RevealText({ text, className, stagger = 0.04 }: RevealTextProps) {\r\n const letters = Array.from(text);\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: {\r\n opacity: 1,\r\n transition: { staggerChildren: stagger, delayChildren: 0.02 },\r\n },\r\n };\r\n\r\n const child = {\r\n hidden: { opacity: 0, y: 20 },\r\n visible: {\r\n opacity: 1,\r\n y: 0,\r\n transition: { type: \"spring\", damping: 12, stiffness: 100 },\r\n },\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(\"flex overflow-hidden\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n variants={child}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default RevealText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SplitTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n duration?: number;\r\n splitType?: \"chars\" | \"words\";\r\n textAlign?: \"left\" | \"center\" | \"right\";\r\n}\r\n\r\nexport function SplitText({\r\n text,\r\n className = \"\",\r\n delay = 100,\r\n duration = 0.6,\r\n splitType = \"chars\",\r\n textAlign = \"center\",\r\n}: SplitTextProps) {\r\n const [inView, setInView] = useState(false);\r\n const ref = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (!ref.current) return;\r\n\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, rootMargin: \"-100px\" }\r\n );\r\n\r\n observer.observe(ref.current);\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n const elements = splitType === \"words\" ? text.split(\" \") : text.split(\"\");\r\n\r\n return (\r\n <div ref={ref} className={cn(\"overflow-hidden\", className)} style={{ textAlign }}>\r\n {elements.map((element, index) => (\r\n <motion.span\r\n key={index}\r\n initial={{ opacity: 0, y: 40 }}\r\n animate={inView ? { opacity: 1, y: 0 } : { opacity: 0, y: 40 }}\r\n transition={{ duration, delay: (index * delay) / 1000, ease: \"easeOut\" }}\r\n className=\"inline-block\"\r\n style={{ marginRight: splitType === \"words\" ? \"0.25em\" : \"0\" }}\r\n >\r\n {element === \" \" ? \"\\u00A0\" : element}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default SplitText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MorphTextProps {\r\n text: string;\r\n className?: string;\r\n}\r\n\r\nexport function MorphText({ text, className }: MorphTextProps) {\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 scaleY: [1, 0.5, 1.5, 0.8, 1],\r\n scaleX: [1, 1.5, 0.5, 1.2, 1],\r\n }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n delay: index * 0.08,\r\n ease: \"easeInOut\",\r\n repeatDelay: 0.3,\r\n }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default MorphText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface PerspectiveTextProps {\r\n text: string;\r\n className?: string;\r\n}\r\n\r\nexport function PerspectiveText({ text, className }: PerspectiveTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)} style={{ perspective: \"500px\" }}>\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 initial={{ rotateY: 90, opacity: 0 }}\r\n animate={{ rotateY: 0, opacity: 1 }}\r\n transition={{\r\n delay: index * 0.04,\r\n duration: 0.5,\r\n type: \"spring\",\r\n stiffness: 120,\r\n }}\r\n whileHover={{ rotateY: 180, transition: { duration: 0.3 } }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default PerspectiveText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ElasticTextProps {\r\n text: string;\r\n className?: string;\r\n}\r\n\r\nexport function ElasticText({ text, className }: ElasticTextProps) {\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 cursor-pointer\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n whileHover={{\r\n scale: [1, 1.5, 0.8, 1.2, 1],\r\n rotate: [0, 10, -10, 0],\r\n transition: { duration: 0.6, ease: \"easeInOut\" },\r\n }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ElasticText;\r\n","\"use client\";\r\n\r\nimport { useEffect } from \"react\";\r\nimport { motion, useAnimation, useMotionValue } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CircularTextProps {\r\n text: string;\r\n spinDuration?: number;\r\n onHover?: \"slowDown\" | \"speedUp\" | \"pause\" | \"goBonkers\";\r\n className?: string;\r\n}\r\n\r\nexport function CircularText({\r\n text,\r\n spinDuration = 20,\r\n onHover = \"speedUp\",\r\n className = \"\",\r\n}: CircularTextProps) {\r\n const letters = Array.from(text);\r\n const controls = useAnimation();\r\n const rotation = useMotionValue(0);\r\n\r\n useEffect(() => {\r\n const start = rotation.get();\r\n controls.start({\r\n rotate: start + 360,\r\n scale: 1,\r\n transition: {\r\n rotate: { from: start, to: start + 360, ease: \"linear\", duration: spinDuration, repeat: Infinity },\r\n scale: { type: \"spring\", damping: 20, stiffness: 300 },\r\n },\r\n });\r\n }, [spinDuration, controls, rotation]);\r\n\r\n const handleHoverStart = () => {\r\n const start = rotation.get();\r\n let duration = spinDuration;\r\n let scale = 1;\r\n\r\n switch (onHover) {\r\n case \"slowDown\": duration = spinDuration * 2; break;\r\n case \"speedUp\": duration = spinDuration / 4; break;\r\n case \"pause\": duration = 0; break;\r\n case \"goBonkers\": duration = spinDuration / 20; scale = 0.8; break;\r\n }\r\n\r\n if (onHover === \"pause\") {\r\n controls.stop();\r\n } else {\r\n controls.start({\r\n rotate: start + 360,\r\n scale,\r\n transition: {\r\n rotate: { from: start, to: start + 360, ease: \"linear\", duration, repeat: Infinity },\r\n scale: { type: \"spring\", damping: 20, stiffness: 300 },\r\n },\r\n });\r\n }\r\n };\r\n\r\n const handleHoverEnd = () => {\r\n const start = rotation.get();\r\n controls.start({\r\n rotate: start + 360,\r\n scale: 1,\r\n transition: {\r\n rotate: { from: start, to: start + 360, ease: \"linear\", duration: spinDuration, repeat: Infinity },\r\n scale: { type: \"spring\", damping: 20, stiffness: 300 },\r\n },\r\n });\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(\"relative w-32 h-32 cursor-pointer\", className)}\r\n style={{ rotate: rotation }}\r\n initial={{ rotate: 0 }}\r\n animate={controls}\r\n onMouseEnter={handleHoverStart}\r\n onMouseLeave={handleHoverEnd}\r\n >\r\n {letters.map((letter, i) => {\r\n const rotationDeg = (360 / letters.length) * i;\r\n const radius = 60;\r\n const angle = (rotationDeg * Math.PI) / 180;\r\n const x = Math.cos(angle) * radius;\r\n const y = Math.sin(angle) * radius;\r\n\r\n return (\r\n <span\r\n key={i}\r\n className=\"absolute text-lg font-bold\"\r\n style={{\r\n transform: `translate(-50%, -50%) translate(${x}px, ${y}px) rotate(${rotationDeg + 90}deg)`,\r\n left: \"50%\",\r\n top: \"50%\",\r\n }}\r\n >\r\n {letter}\r\n </span>\r\n );\r\n })}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default CircularText;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlowingTextProps {\r\n text: string;\r\n className?: string;\r\n glowColor?: string;\r\n hoverColor?: string;\r\n}\r\n\r\nexport function GlowingText({\r\n text,\r\n className,\r\n glowColor = \"#3b82f6\",\r\n hoverColor = \"#ec4899\",\r\n}: GlowingTextProps) {\r\n const [isHovered, setIsHovered] = useState(false);\r\n const currentColor = isHovered ? hoverColor : glowColor;\r\n\r\n return (\r\n <motion.div\r\n className={cn(\"font-bold cursor-pointer select-none\", className)}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n animate={{\r\n color: currentColor,\r\n textShadow: `0 0 10px ${currentColor}, 0 0 20px ${currentColor}, 0 0 30px ${currentColor}, 0 0 50px ${currentColor}`,\r\n }}\r\n transition={{ duration: 0.4, ease: \"easeInOut\" }}\r\n >\r\n {text}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default GlowingText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SlicedTextProps {\r\n text: string;\r\n className?: string;\r\n containerClassName?: string;\r\n splitSpacing?: number;\r\n}\r\n\r\nexport function SlicedText({\r\n text = \"Sliced Text\",\r\n className = \"\",\r\n containerClassName = \"\",\r\n splitSpacing = 2,\r\n}: SlicedTextProps) {\r\n return (\r\n <motion.div\r\n className={cn(\"w-full text-center relative inline-block\", containerClassName)}\r\n whileHover=\"hover\"\r\n initial=\"default\"\r\n >\r\n <motion.div\r\n className={cn(\"absolute w-full text-4xl -ml-0.5\", className)}\r\n variants={{\r\n default: { clipPath: \"inset(0 0 50% 0)\", y: -splitSpacing / 2, opacity: 1 },\r\n hover: { clipPath: \"inset(0 0 0 0)\", y: 0, opacity: 0 },\r\n }}\r\n transition={{ duration: 0.1 }}\r\n >\r\n {text}\r\n </motion.div>\r\n <motion.div\r\n className={cn(\"absolute w-full text-4xl\", className)}\r\n variants={{\r\n default: { clipPath: \"inset(50% 0 0 0)\", y: splitSpacing / 2, opacity: 1 },\r\n hover: { clipPath: \"inset(0 0 0 0)\", y: 0, opacity: 1 },\r\n }}\r\n transition={{ duration: 0.1 }}\r\n >\r\n {text}\r\n </motion.div>\r\n <div className={cn(\"invisible text-4xl\", className)}>{text}</div>\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default SlicedText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState, useRef } from \"react\";\r\nimport { motion, HTMLMotionProps } from \"framer-motion\";\r\n\r\ninterface DecryptedTextProps extends HTMLMotionProps<\"span\"> {\r\n text: string;\r\n speed?: number;\r\n maxIterations?: number;\r\n sequential?: boolean;\r\n revealDirection?: \"start\" | \"end\" | \"center\";\r\n useOriginalCharsOnly?: boolean;\r\n characters?: string;\r\n className?: string;\r\n parentClassName?: string;\r\n encryptedClassName?: string;\r\n animateOn?: \"view\" | \"hover\" | \"both\";\r\n}\r\n\r\nexport function DecryptedText({\r\n text,\r\n speed = 50,\r\n maxIterations = 10,\r\n sequential = false,\r\n revealDirection = \"start\",\r\n useOriginalCharsOnly = false,\r\n characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#$%^&*()_+\",\r\n className = \"\",\r\n parentClassName = \"\",\r\n encryptedClassName = \"\",\r\n animateOn = \"hover\",\r\n ...props\r\n}: DecryptedTextProps) {\r\n const [displayText, setDisplayText] = useState<string>(text);\r\n const [isHovering, setIsHovering] = useState<boolean>(false);\r\n const [isScrambling, setIsScrambling] = useState<boolean>(false);\r\n const [revealedIndices, setRevealedIndices] = useState<Set<number>>(new Set());\r\n const [hasAnimated, setHasAnimated] = useState<boolean>(false);\r\n const containerRef = useRef<HTMLSpanElement>(null);\r\n\r\n useEffect(() => {\r\n let interval: NodeJS.Timeout;\r\n let currentIteration = 0;\r\n\r\n const getNextIndex = (revealedSet: Set<number>): number => {\r\n const textLength = text.length;\r\n switch (revealDirection) {\r\n case \"start\":\r\n return revealedSet.size;\r\n case \"end\":\r\n return textLength - 1 - revealedSet.size;\r\n case \"center\": {\r\n const middle = Math.floor(textLength / 2);\r\n const offset = Math.floor(revealedSet.size / 2);\r\n const nextIndex = revealedSet.size % 2 === 0 ? middle + offset : middle - offset - 1;\r\n if (nextIndex >= 0 && nextIndex < textLength && !revealedSet.has(nextIndex)) {\r\n return nextIndex;\r\n }\r\n for (let i = 0; i < textLength; i++) {\r\n if (!revealedSet.has(i)) return i;\r\n }\r\n return 0;\r\n }\r\n default:\r\n return revealedSet.size;\r\n }\r\n };\r\n\r\n const availableChars = useOriginalCharsOnly\r\n ? Array.from(new Set(text.split(\"\"))).filter((char) => char !== \" \")\r\n : characters.split(\"\");\r\n\r\n const shuffleText = (originalText: string, currentRevealed: Set<number>): string => {\r\n if (useOriginalCharsOnly) {\r\n const positions = originalText.split(\"\").map((char, i) => ({\r\n char,\r\n isSpace: char === \" \",\r\n index: i,\r\n isRevealed: currentRevealed.has(i),\r\n }));\r\n\r\n const nonSpaceChars = positions.filter((p) => !p.isSpace && !p.isRevealed).map((p) => p.char);\r\n\r\n for (let i = nonSpaceChars.length - 1; i > 0; i--) {\r\n const j = Math.floor(Math.random() * (i + 1));\r\n [nonSpaceChars[i], nonSpaceChars[j]] = [nonSpaceChars[j], nonSpaceChars[i]];\r\n }\r\n\r\n let charIndex = 0;\r\n return positions\r\n .map((p) => {\r\n if (p.isSpace) return \" \";\r\n if (p.isRevealed) return originalText[p.index];\r\n return nonSpaceChars[charIndex++];\r\n })\r\n .join(\"\");\r\n } else {\r\n return originalText\r\n .split(\"\")\r\n .map((char, i) => {\r\n if (char === \" \") return \" \";\r\n if (currentRevealed.has(i)) return originalText[i];\r\n return availableChars[Math.floor(Math.random() * availableChars.length)];\r\n })\r\n .join(\"\");\r\n }\r\n };\r\n\r\n if (isHovering) {\r\n setIsScrambling(true);\r\n interval = setInterval(() => {\r\n setRevealedIndices((prevRevealed) => {\r\n if (sequential) {\r\n if (prevRevealed.size < text.length) {\r\n const nextIndex = getNextIndex(prevRevealed);\r\n const newRevealed = new Set(prevRevealed);\r\n newRevealed.add(nextIndex);\r\n setDisplayText(shuffleText(text, newRevealed));\r\n return newRevealed;\r\n } else {\r\n clearInterval(interval);\r\n setIsScrambling(false);\r\n return prevRevealed;\r\n }\r\n } else {\r\n setDisplayText(shuffleText(text, prevRevealed));\r\n currentIteration++;\r\n if (currentIteration >= maxIterations) {\r\n clearInterval(interval);\r\n setIsScrambling(false);\r\n setDisplayText(text);\r\n }\r\n return prevRevealed;\r\n }\r\n });\r\n }, speed);\r\n } else {\r\n setDisplayText(text);\r\n setRevealedIndices(new Set());\r\n setIsScrambling(false);\r\n }\r\n\r\n return () => {\r\n if (interval) clearInterval(interval);\r\n };\r\n }, [isHovering, text, speed, maxIterations, sequential, revealDirection, characters, useOriginalCharsOnly]);\r\n\r\n useEffect(() => {\r\n if (animateOn !== \"view\" && animateOn !== \"both\") return;\r\n\r\n const observerCallback = (entries: IntersectionObserverEntry[]) => {\r\n entries.forEach((entry) => {\r\n if (entry.isIntersecting && !hasAnimated) {\r\n setIsHovering(true);\r\n setHasAnimated(true);\r\n }\r\n });\r\n };\r\n\r\n const observer = new IntersectionObserver(observerCallback, { threshold: 0.1 });\r\n const currentRef = containerRef.current;\r\n if (currentRef) {\r\n observer.observe(currentRef);\r\n }\r\n\r\n return () => {\r\n if (currentRef) {\r\n observer.unobserve(currentRef);\r\n }\r\n };\r\n }, [animateOn, hasAnimated]);\r\n\r\n const hoverProps =\r\n animateOn === \"hover\" || animateOn === \"both\"\r\n ? {\r\n onMouseEnter: () => setIsHovering(true),\r\n onMouseLeave: () => setIsHovering(false),\r\n }\r\n : {};\r\n\r\n return (\r\n <motion.span\r\n className={parentClassName}\r\n ref={containerRef}\r\n style={{ display: \"inline-block\", whiteSpace: \"pre-wrap\" }}\r\n {...hoverProps}\r\n {...props}\r\n >\r\n <span className=\"sr-only\">{displayText}</span>\r\n <span aria-hidden=\"true\">\r\n {displayText.split(\"\").map((char, index) => {\r\n const isRevealedOrDone = revealedIndices.has(index) || !isScrambling || !isHovering;\r\n return (\r\n <span key={index} className={isRevealedOrDone ? className : encryptedClassName}>\r\n {char}\r\n </span>\r\n );\r\n })}\r\n </span>\r\n </motion.span>\r\n );\r\n}\r\n\r\nexport default DecryptedText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TrueFocusProps {\r\n sentence?: string;\r\n manualMode?: boolean;\r\n blurAmount?: number;\r\n borderColor?: string;\r\n glowColor?: string;\r\n animationDuration?: number;\r\n pauseBetweenAnimations?: number;\r\n className?: string;\r\n}\r\n\r\ninterface FocusRect {\r\n x: number;\r\n y: number;\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport function TrueFocus({\r\n sentence = \"True Focus\",\r\n manualMode = false,\r\n blurAmount = 5,\r\n borderColor = \"green\",\r\n glowColor = \"rgba(0, 255, 0, 0.6)\",\r\n animationDuration = 0.5,\r\n pauseBetweenAnimations = 1,\r\n className,\r\n}: TrueFocusProps) {\r\n const words = sentence.split(\" \");\r\n const [currentIndex, setCurrentIndex] = useState<number>(0);\r\n const [lastActiveIndex, setLastActiveIndex] = useState<number | null>(null);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const wordRefs = useRef<(HTMLSpanElement | null)[]>([]);\r\n const [focusRect, setFocusRect] = useState<FocusRect>({ x: 0, y: 0, width: 0, height: 0 });\r\n\r\n useEffect(() => {\r\n if (!manualMode) {\r\n const interval = setInterval(() => {\r\n setCurrentIndex((prev) => (prev + 1) % words.length);\r\n }, (animationDuration + pauseBetweenAnimations) * 1000);\r\n return () => clearInterval(interval);\r\n }\r\n }, [manualMode, animationDuration, pauseBetweenAnimations, words.length]);\r\n\r\n useEffect(() => {\r\n const updateFocusRect = () => {\r\n if (currentIndex === null || currentIndex === -1) return;\r\n if (!wordRefs.current[currentIndex] || !containerRef.current) return;\r\n const parentRect = containerRef.current.getBoundingClientRect();\r\n const activeRect = wordRefs.current[currentIndex]!.getBoundingClientRect();\r\n setFocusRect({\r\n x: activeRect.left - parentRect.left,\r\n y: activeRect.top - parentRect.top,\r\n width: activeRect.width,\r\n height: activeRect.height,\r\n });\r\n };\r\n updateFocusRect();\r\n window.addEventListener(\"resize\", updateFocusRect);\r\n return () => window.removeEventListener(\"resize\", updateFocusRect);\r\n }, [currentIndex, words.length]);\r\n\r\n return (\r\n <div ref={containerRef} className={cn(\"relative flex flex-wrap gap-3 p-12 items-center justify-center\", className)}>\r\n {words.map((word, index) => {\r\n const isActive = index === currentIndex;\r\n return (\r\n <span\r\n key={index}\r\n ref={(el) => { wordRefs.current[index] = el; }}\r\n className=\"text-4xl font-bold relative z-10\"\r\n style={{\r\n filter: isActive ? \"blur(0px)\" : `blur(${blurAmount}px)`,\r\n transition: `all ${animationDuration}s ease`,\r\n color: isActive ? \"#000\" : \"#666\",\r\n transform: isActive ? \"scale(1.05)\" : \"scale(1)\",\r\n }}\r\n onMouseEnter={() => manualMode && (setLastActiveIndex(index), setCurrentIndex(index))}\r\n onMouseLeave={() => manualMode && setCurrentIndex(lastActiveIndex ?? 0)}\r\n >\r\n {word}\r\n </span>\r\n );\r\n })}\r\n <motion.div\r\n className=\"absolute pointer-events-none\"\r\n animate={{ x: focusRect.x, y: focusRect.y, width: focusRect.width, height: focusRect.height, opacity: currentIndex >= 0 ? 1 : 0 }}\r\n transition={{ duration: animationDuration }}\r\n style={{ border: `2px solid ${borderColor}`, boxShadow: `0 0 10px ${glowColor}`, borderRadius: 4 }}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nexport default TrueFocus;\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 { cn } from \"../utils/cn\";\r\n\r\ninterface CardProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n hover?: boolean;\r\n}\r\n\r\nexport function Card({ children, className, hover = false }: CardProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"rounded-xl p-6\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-200 dark:border-zinc-800\",\r\n hover && \"transition-all duration-200 hover:shadow-lg hover:-translate-y-1\",\r\n className\r\n )}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\ninterface CardHeaderProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardHeader({ children, className }: CardHeaderProps) {\r\n return <div className={cn(\"mb-4\", className)}>{children}</div>;\r\n}\r\n\r\ninterface CardTitleProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardTitle({ children, className }: CardTitleProps) {\r\n return <h3 className={cn(\"text-lg font-semibold\", className)}>{children}</h3>;\r\n}\r\n\r\ninterface CardDescriptionProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardDescription({ children, className }: CardDescriptionProps) {\r\n return <p className={cn(\"text-sm text-zinc-500 dark:text-zinc-400\", className)}>{children}</p>;\r\n}\r\n\r\ninterface CardContentProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardContent({ children, className }: CardContentProps) {\r\n return <div className={cn(\"\", className)}>{children}</div>;\r\n}\r\n\r\ninterface CardFooterProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardFooter({ children, className }: CardFooterProps) {\r\n return <div className={cn(\"mt-4 pt-4 border-t border-zinc-200 dark:border-zinc-800\", className)}>{children}</div>;\r\n}\r\n\r\nexport default Card;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingDotsProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function LoadingDots({ className, size = \"md\" }: LoadingDotsProps) {\r\n const sizeClasses = {\r\n sm: \"w-1.5 h-1.5\",\r\n md: \"w-2.5 h-2.5\",\r\n lg: \"w-4 h-4\",\r\n };\r\n\r\n return (\r\n <div className={cn(\"flex items-center justify-center gap-1\", className)}>\r\n {[0, 1, 2].map((i) => (\r\n <div\r\n key={i}\r\n className={cn(\r\n sizeClasses[size],\r\n \"rounded-full bg-current animate-bounce\"\r\n )}\r\n style={{ animationDelay: `${i * 0.15}s` }}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingDots;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingSpinnerProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function LoadingSpinner({ className, size = \"md\" }: LoadingSpinnerProps) {\r\n const sizeClasses = {\r\n sm: \"w-4 h-4 border-2\",\r\n md: \"w-8 h-8 border-3\",\r\n lg: \"w-12 h-12 border-4\",\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\r\n sizeClasses[size],\r\n \"rounded-full border-current border-t-transparent animate-spin\",\r\n className\r\n )}\r\n />\r\n );\r\n}\r\n\r\nexport default LoadingSpinner;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingBarProps {\r\n className?: string;\r\n color?: string;\r\n}\r\n\r\nexport function LoadingBar({ className, color = \"bg-blue-500\" }: LoadingBarProps) {\r\n return (\r\n <div className={cn(\"h-1 w-full overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800\", className)}>\r\n <motion.div\r\n className={cn(\"h-full rounded-full\", color)}\r\n initial={{ x: \"-100%\" }}\r\n animate={{ x: \"100%\" }}\r\n transition={{\r\n repeat: Infinity,\r\n duration: 1.5,\r\n ease: \"easeInOut\",\r\n }}\r\n style={{ width: \"50%\" }}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingBar;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingPulseProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n color?: string;\r\n}\r\n\r\nconst sizes = {\r\n sm: \"w-8 h-8\",\r\n md: \"w-12 h-12\",\r\n lg: \"w-16 h-16\",\r\n};\r\n\r\nexport function LoadingPulse({ className, size = \"md\", color = \"bg-blue-500\" }: LoadingPulseProps) {\r\n return (\r\n <div className={cn(\"relative\", sizes[size], className)}>\r\n <motion.div\r\n className={cn(\"absolute inset-0 rounded-full\", color)}\r\n animate={{\r\n scale: [1, 1.5, 1],\r\n opacity: [0.5, 0, 0.5],\r\n }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n <div className={cn(\"absolute inset-2 rounded-full\", color)} />\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingPulse;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingBounceProps {\r\n className?: string;\r\n color?: string;\r\n}\r\n\r\nexport function LoadingBounce({ className, color = \"bg-zinc-900 dark:bg-white\" }: LoadingBounceProps) {\r\n return (\r\n <div className={cn(\"flex gap-1\", className)}>\r\n {[0, 1, 2].map((i) => (\r\n <motion.div\r\n key={i}\r\n className={cn(\"w-3 h-3 rounded-full\", color)}\r\n animate={{ y: [0, -10, 0] }}\r\n transition={{\r\n duration: 0.6,\r\n repeat: Infinity,\r\n delay: i * 0.1,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingBounce;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingFlowerProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingFlower({ className = \"\" }: LoadingFlowerProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"relative\">\r\n <div className=\"flex items-center justify-center\">\r\n {[...Array(8)].map((_, i) => (\r\n <div\r\n key={i}\r\n className=\"absolute w-3 h-3 rounded-full bg-black dark:bg-white\"\r\n style={{\r\n transform: `rotate(${i * 45}deg) translateY(-20px)`,\r\n animation: `flower-pulse 1.5s ease-in-out infinite`,\r\n animationDelay: `${i * 0.1}s`,\r\n }}\r\n />\r\n ))}\r\n <div className=\"w-4 h-4 rounded-full bg-zinc-400\" />\r\n </div>\r\n </div>\r\n <style jsx>{`\r\n @keyframes flower-pulse {\r\n 0%, 100% { opacity: 0.3; scale: 0.8; }\r\n 50% { opacity: 1; scale: 1.2; }\r\n }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingFlower;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingGeometricProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingGeometric({ className = \"\" }: LoadingGeometricProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"flex justify-center items-center\">\r\n <div className=\"w-36 h-36 flex justify-center items-center relative\">\r\n <div className=\"w-4 h-16 absolute bg-zinc-600 dark:bg-zinc-400 animate-[move-h_1.2s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\" />\r\n <div className=\"w-4 h-16 absolute bg-zinc-800 dark:bg-zinc-200 rotate-90 animate-[move-v_1.2s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\" />\r\n <div className=\"absolute top-4 left-5 font-black text-lg text-black dark:text-white animate-[rot_0.8s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\">X</div>\r\n <div className=\"absolute bottom-0 right-0 font-black text-3xl text-black dark:text-white animate-[scale_0.8s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\">*</div>\r\n </div>\r\n </div>\r\n <style jsx>{`\r\n @keyframes move-h { 0% { top: 0; opacity: 0; } 25% { opacity: 1; } 50% { top: 30%; opacity: 1; } 75% { opacity: 1; } 100% { top: 100%; opacity: 0; } }\r\n @keyframes move-v { 0% { left: 0; opacity: 0; } 25% { opacity: 1; } 50% { left: 45%; opacity: 1; } 75% { opacity: 1; } 100% { left: 100%; opacity: 0; } }\r\n @keyframes rot { 0% { transform: rotate(0deg); } 50% { transform: rotate(180deg); } 100% { transform: rotate(360deg); } }\r\n @keyframes scale { 0% { scale: 1; } 50% { scale: 1.9; } 100% { scale: 1; } }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingGeometric;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingMorphProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingMorph({ className = \"\" }: LoadingMorphProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"w-20 h-20 rounded-full border-8 border-transparent border-t-black dark:border-t-white border-r-zinc-600 dark:border-r-zinc-400 border-b-zinc-400 dark:border-b-zinc-600 border-l-zinc-200 dark:border-l-zinc-800 animate-[morph_2s_ease-in-out_infinite,rotate-color_2s_linear_infinite]\">\r\n <style jsx>{`\r\n @keyframes rotate-color { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }\r\n @keyframes morph { 0%, 100% { border-radius: 50%; width: 80px; height: 80px; } 50% { border-radius: 10%; width: 100px; height: 100px; } }\r\n `}</style>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingMorph;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingRingsProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingRings({ className = \"\" }: LoadingRingsProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"w-16 h-16\">\r\n <div className=\"box-border w-full h-full border-[10px] border-zinc-300 dark:border-zinc-800 border-t-zinc-700 dark:border-t-zinc-200 border-b-zinc-500 rounded-full animate-[rotate_5s_linear_infinite]\">\r\n <div className=\"box-border w-full h-full border-[10px] border-zinc-300 dark:border-zinc-800 border-t-zinc-600 dark:border-t-zinc-400 border-b-black dark:border-b-white rounded-full animate-[rotate_2.5s_linear_infinite]\" />\r\n </div>\r\n <style jsx>{`\r\n @keyframes rotate { 0% { transform: scale(1) rotate(360deg); } 50% { transform: scale(0.8) rotate(-360deg); } 100% { transform: scale(1) rotate(360deg); } }\r\n `}</style>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingRings;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingTextProps {\r\n text?: string;\r\n className?: string;\r\n}\r\n\r\nexport function LoadingText({ text = \"loading\", className = \"\" }: LoadingTextProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"relative w-20 h-12\">\r\n <span className=\"absolute top-0 left-0 m-0 p-0 text-black dark:text-white text-sm tracking-wider animate-[loading-text_3.5s_ease_both_infinite]\">\r\n {text}\r\n </span>\r\n <span className=\"absolute bottom-0 left-0 block h-4 w-4 rounded-full bg-black dark:bg-white animate-[loading-bar_3.5s_ease_both_infinite]\">\r\n <span className=\"absolute inset-0 rounded-full bg-zinc-400 dark:bg-zinc-500 animate-[loading-bar-before_3.5s_ease_both_infinite]\" />\r\n </span>\r\n <style jsx>{`\r\n @keyframes loading-text { 0% { letter-spacing: 1px; transform: translateX(0px); } 40% { letter-spacing: 2px; transform: translateX(26px); } 80% { letter-spacing: 1px; transform: translateX(32px); } 90% { letter-spacing: 2px; transform: translateX(0px); } 100% { letter-spacing: 1px; transform: translateX(0px); } }\r\n @keyframes loading-bar { 0% { width: 16px; transform: translateX(0px); } 40% { width: 100%; transform: translateX(0px); } 80% { width: 16px; transform: translateX(64px); } 90% { width: 100%; transform: translateX(0px); } 100% { width: 16px; transform: translateX(0px); } }\r\n @keyframes loading-bar-before { 0% { transform: translateX(0px); width: 16px; } 40% { transform: translateX(0%); width: 80%; } 80% { width: 100%; transform: translateX(0px); } 90% { width: 80%; transform: translateX(15px); } 100% { transform: translateX(0px); width: 16px; } }\r\n `}</style>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingText;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingWordsProps {\r\n words?: string[];\r\n className?: string;\r\n}\r\n\r\nexport function LoadingWords({\r\n words = [\"buttons\", \"forms\", \"switches\", \"cards\", \"loaders\"],\r\n className = \"\",\r\n}: LoadingWordsProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"text-zinc-400 dark:text-zinc-500 font-medium text-2xl box-border h-10 px-2.5 py-2 flex items-center rounded-lg\">\r\n <span className=\"mr-2\">loading</span>\r\n <div className=\"overflow-hidden relative h-full\">\r\n <div className=\"absolute inset-0 bg-gradient-to-b from-white via-transparent to-white dark:from-zinc-950 dark:via-transparent dark:to-zinc-950 z-10\" />\r\n {words.map((word, index) => (\r\n <span\r\n key={index}\r\n className=\"block h-full pl-1.5 text-black dark:text-white animate-[spin-words_4s_infinite]\"\r\n style={{ animationDelay: `${index * 0.8}s` }}\r\n >\r\n {word}\r\n </span>\r\n ))}\r\n </div>\r\n </div>\r\n <style jsx>{`\r\n @keyframes spin-words { 10% { transform: translateY(-102%); } 25% { transform: translateY(-100%); } 35% { transform: translateY(-202%); } 50% { transform: translateY(-200%); } 60% { transform: translateY(-302%); } 75% { transform: translateY(-300%); } 85% { transform: translateY(-402%); } 100% { transform: translateY(-400%); } }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingWords;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useMemo, useState } from \"react\";\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport interface AnimatedListProps {\r\n className?: string;\r\n children: React.ReactNode;\r\n delay?: number;\r\n}\r\n\r\nexport function AnimatedList({\r\n className,\r\n children,\r\n delay = 1000,\r\n}: AnimatedListProps) {\r\n const [index, setIndex] = useState(0);\r\n const childrenArray = React.Children.toArray(children);\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setIndex((prevIndex) => (prevIndex + 1) % childrenArray.length);\r\n }, delay);\r\n return () => clearInterval(interval);\r\n }, [childrenArray.length, delay]);\r\n\r\n const itemsToShow = useMemo(\r\n () => childrenArray.slice(0, index + 1).reverse(),\r\n [index, childrenArray]\r\n );\r\n\r\n return (\r\n <div className={cn(\"flex flex-col items-center gap-4\", className)}>\r\n <AnimatePresence>\r\n {itemsToShow.map((item, idx) => (\r\n <AnimatedListItem key={idx}>\r\n {item}\r\n </AnimatedListItem>\r\n ))}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport function AnimatedListItem({ children }: { children: React.ReactNode }) {\r\n return (\r\n <motion.div\r\n initial={{ scale: 0, opacity: 0 }}\r\n animate={{ scale: 1, opacity: 1 }}\r\n exit={{ scale: 0, opacity: 0 }}\r\n transition={{ type: \"spring\", stiffness: 350, damping: 40 }}\r\n layout\r\n className=\"mx-auto w-full\"\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default AnimatedList;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SkeletonProps {\r\n className?: string;\r\n variant?: \"text\" | \"circular\" | \"rectangular\";\r\n width?: string | number;\r\n height?: string | number;\r\n}\r\n\r\nexport function Skeleton({ \r\n className, \r\n variant = \"text\",\r\n width,\r\n height \r\n}: SkeletonProps) {\r\n const variants = {\r\n text: \"h-4 rounded\",\r\n circular: \"rounded-full\",\r\n rectangular: \"rounded-lg\",\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"animate-pulse bg-zinc-200 dark:bg-zinc-800\",\r\n variants[variant],\r\n className\r\n )}\r\n style={{ width, height }}\r\n />\r\n );\r\n}\r\n\r\nexport default Skeleton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TooltipProps {\r\n children: React.ReactNode;\r\n content: string;\r\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\r\n className?: string;\r\n}\r\n\r\nexport function Tooltip({ \r\n children, \r\n content, \r\n position = \"top\",\r\n className \r\n}: TooltipProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n\r\n const positions = {\r\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\r\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\r\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\r\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\r\n };\r\n\r\n const animations = {\r\n top: { initial: { opacity: 0, y: 5 }, animate: { opacity: 1, y: 0 } },\r\n bottom: { initial: { opacity: 0, y: -5 }, animate: { opacity: 1, y: 0 } },\r\n left: { initial: { opacity: 0, x: 5 }, animate: { opacity: 1, x: 0 } },\r\n right: { initial: { opacity: 0, x: -5 }, animate: { opacity: 1, x: 0 } },\r\n };\r\n\r\n return (\r\n <div\r\n className=\"relative inline-block\"\r\n onMouseEnter={() => setIsVisible(true)}\r\n onMouseLeave={() => setIsVisible(false)}\r\n >\r\n {children}\r\n <AnimatePresence>\r\n {isVisible && (\r\n <motion.div\r\n className={cn(\r\n \"absolute z-50 px-2 py-1 text-sm text-white bg-zinc-900 dark:bg-zinc-100 dark:text-zinc-900 rounded whitespace-nowrap\",\r\n positions[position],\r\n className\r\n )}\r\n initial={animations[position].initial}\r\n animate={animations[position].animate}\r\n exit={animations[position].initial}\r\n transition={{ duration: 0.15 }}\r\n >\r\n {content}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Tooltip;\r\n","\"use client\";\r\n\r\nimport { useState, useRef } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TooltipMinimalProps {\r\n content: string;\r\n children: React.ReactNode;\r\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\r\n delay?: number;\r\n className?: string;\r\n}\r\n\r\nexport function TooltipMinimal({\r\n content,\r\n children,\r\n position = \"top\",\r\n delay = 300,\r\n className,\r\n}: TooltipMinimalProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n const timeoutRef = useRef<NodeJS.Timeout>(undefined);\r\n\r\n const showTooltip = () => {\r\n timeoutRef.current = setTimeout(() => setIsVisible(true), delay);\r\n };\r\n\r\n const hideTooltip = () => {\r\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\r\n setIsVisible(false);\r\n };\r\n\r\n const getPositionClasses = () => {\r\n const positions = {\r\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\r\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\r\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\r\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\r\n };\r\n return positions[position];\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative inline-block\", className)} onMouseEnter={showTooltip} onMouseLeave={hideTooltip}>\r\n {children}\r\n <AnimatePresence>\r\n {isVisible && (\r\n <motion.div\r\n initial={{ opacity: 0, scale: 0.95 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n exit={{ opacity: 0, scale: 0.95 }}\r\n transition={{ duration: 0.15 }}\r\n className={cn(\"absolute z-50 px-3 py-2 text-sm bg-popover border border-border rounded-lg shadow-md whitespace-nowrap\", getPositionClasses())}\r\n >\r\n {content}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default TooltipMinimal;\r\n","\"use client\";\r\n\r\nimport { useState, useRef } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TooltipAnimatedProps {\r\n content: string;\r\n children: React.ReactNode;\r\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\r\n delay?: number;\r\n animation?: \"fade\" | \"slide\" | \"bounce\" | \"scale\";\r\n className?: string;\r\n}\r\n\r\nexport function TooltipAnimated({\r\n content,\r\n children,\r\n position = \"top\",\r\n delay = 200,\r\n animation = \"slide\",\r\n className,\r\n}: TooltipAnimatedProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n const timeoutRef = useRef<NodeJS.Timeout>(undefined);\r\n\r\n const showTooltip = () => {\r\n timeoutRef.current = setTimeout(() => setIsVisible(true), delay);\r\n };\r\n\r\n const hideTooltip = () => {\r\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\r\n setIsVisible(false);\r\n };\r\n\r\n const getPositionClasses = () => {\r\n const positions = {\r\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-3\",\r\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-3\",\r\n left: \"right-full top-1/2 -translate-y-1/2 mr-3\",\r\n right: \"left-full top-1/2 -translate-y-1/2 ml-3\",\r\n };\r\n return positions[position];\r\n };\r\n\r\n const getAnimationProps = () => {\r\n const slideOffset = 10;\r\n const offsets = { top: { y: slideOffset }, bottom: { y: -slideOffset }, left: { x: slideOffset }, right: { x: -slideOffset } };\r\n const { x = 0, y = 0 } = offsets[position];\r\n\r\n const animations = {\r\n fade: { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 } },\r\n scale: { initial: { opacity: 0, scale: 0.8 }, animate: { opacity: 1, scale: 1 }, exit: { opacity: 0, scale: 0.8 } },\r\n bounce: { initial: { opacity: 0, scale: 0.3, y: position === \"top\" ? 10 : -10 }, animate: { opacity: 1, scale: 1, y: 0 }, exit: { opacity: 0, scale: 0.3, y: position === \"top\" ? 10 : -10 } },\r\n slide: { initial: { opacity: 0, x, y }, animate: { opacity: 1, x: 0, y: 0 }, exit: { opacity: 0, x, y } },\r\n };\r\n return { ...animations[animation], transition: { type: \"spring\", stiffness: 300, damping: 25 } };\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative inline-block\", className)} onMouseEnter={showTooltip} onMouseLeave={hideTooltip}>\r\n {children}\r\n <AnimatePresence>\r\n {isVisible && (\r\n <motion.div {...getAnimationProps()} className={cn(\"absolute z-50 px-4 py-2 text-sm bg-popover border border-border rounded-xl shadow-lg whitespace-nowrap backdrop-blur-sm\", getPositionClasses())}>\r\n {content}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default TooltipAnimated;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BadgeProps {\r\n children: React.ReactNode;\r\n variant?: \"default\" | \"success\" | \"warning\" | \"danger\" | \"info\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n className?: string;\r\n}\r\n\r\nconst variants = {\r\n default: \"bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-zinc-100\",\r\n success: \"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400\",\r\n warning: \"bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400\",\r\n danger: \"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400\",\r\n info: \"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400\",\r\n};\r\n\r\nconst sizes = {\r\n sm: \"px-2 py-0.5 text-xs\",\r\n md: \"px-2.5 py-1 text-sm\",\r\n lg: \"px-3 py-1.5 text-base\",\r\n};\r\n\r\nexport function Badge({ \r\n children, \r\n variant = \"default\", \r\n size = \"md\",\r\n className \r\n}: BadgeProps) {\r\n return (\r\n <span\r\n className={cn(\r\n \"inline-flex items-center font-medium rounded-full\",\r\n variants[variant],\r\n sizes[size],\r\n className\r\n )}\r\n >\r\n {children}\r\n </span>\r\n );\r\n}\r\n\r\nexport default Badge;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface AvatarProps {\r\n src?: string;\r\n alt?: string;\r\n fallback?: string;\r\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n className?: string;\r\n}\r\n\r\nconst sizes = {\r\n sm: \"w-8 h-8 text-xs\",\r\n md: \"w-10 h-10 text-sm\",\r\n lg: \"w-12 h-12 text-base\",\r\n xl: \"w-16 h-16 text-lg\",\r\n};\r\n\r\nexport function Avatar({ \r\n src, \r\n alt = \"\", \r\n fallback,\r\n size = \"md\",\r\n className \r\n}: AvatarProps) {\r\n const initials = fallback || alt.split(\" \").map(n => n[0]).join(\"\").slice(0, 2).toUpperCase();\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"relative inline-flex items-center justify-center rounded-full bg-zinc-200 dark:bg-zinc-800 overflow-hidden\",\r\n sizes[size],\r\n className\r\n )}\r\n >\r\n {src ? (\r\n <img src={src} alt={alt} className=\"w-full h-full object-cover\" />\r\n ) : (\r\n <span className=\"font-medium text-zinc-600 dark:text-zinc-400\">\r\n {initials}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Avatar;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ProgressProps {\r\n value: number;\r\n max?: number;\r\n className?: string;\r\n color?: string;\r\n showLabel?: boolean;\r\n}\r\n\r\nexport function Progress({ \r\n value, \r\n max = 100, \r\n className,\r\n color = \"bg-blue-500\",\r\n showLabel = false\r\n}: ProgressProps) {\r\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\r\n\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n <div className=\"h-2 w-full overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800\">\r\n <motion.div\r\n className={cn(\"h-full rounded-full\", color)}\r\n initial={{ width: 0 }}\r\n animate={{ width: `${percentage}%` }}\r\n transition={{ duration: 0.5, ease: \"easeOut\" }}\r\n />\r\n </div>\r\n {showLabel && (\r\n <span className=\"mt-1 text-sm text-zinc-600 dark:text-zinc-400\">\r\n {Math.round(percentage)}%\r\n </span>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Progress;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SwitchProps {\r\n checked?: boolean;\r\n onChange?: (checked: boolean) => void;\r\n disabled?: boolean;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n className?: string;\r\n}\r\n\r\nconst sizes = {\r\n sm: { track: \"w-8 h-4\", thumb: \"w-3 h-3\", translate: 16 },\r\n md: { track: \"w-11 h-6\", thumb: \"w-5 h-5\", translate: 20 },\r\n lg: { track: \"w-14 h-7\", thumb: \"w-6 h-6\", translate: 28 },\r\n};\r\n\r\nexport function Switch({ \r\n checked = false, \r\n onChange, \r\n disabled = false,\r\n size = \"md\",\r\n className \r\n}: SwitchProps) {\r\n const sizeConfig = sizes[size];\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n role=\"switch\"\r\n aria-checked={checked}\r\n disabled={disabled}\r\n onClick={() => onChange?.(!checked)}\r\n className={cn(\r\n \"relative inline-flex shrink-0 cursor-pointer rounded-full transition-colors\",\r\n checked ? \"bg-blue-500\" : \"bg-zinc-300 dark:bg-zinc-700\",\r\n disabled && \"opacity-50 cursor-not-allowed\",\r\n sizeConfig.track,\r\n className\r\n )}\r\n >\r\n <motion.span\r\n className={cn(\r\n \"pointer-events-none inline-block rounded-full bg-white shadow-lg\",\r\n sizeConfig.thumb\r\n )}\r\n animate={{ x: checked ? sizeConfig.translate : 2 }}\r\n transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\r\n style={{ marginTop: 2 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default Switch;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface AccordionItem {\r\n title: string;\r\n content: React.ReactNode;\r\n}\r\n\r\ninterface AccordionProps {\r\n items: AccordionItem[];\r\n className?: string;\r\n allowMultiple?: boolean;\r\n}\r\n\r\nexport function Accordion({ items, className, allowMultiple = false }: AccordionProps) {\r\n const [openItems, setOpenItems] = useState<number[]>([]);\r\n\r\n const toggleItem = (index: number) => {\r\n if (allowMultiple) {\r\n setOpenItems((prev) =>\r\n prev.includes(index) ? prev.filter((i) => i !== index) : [...prev, index]\r\n );\r\n } else {\r\n setOpenItems((prev) => (prev.includes(index) ? [] : [index]));\r\n }\r\n };\r\n\r\n return (\r\n <div className={cn(\"w-full space-y-2\", className)}>\r\n {items.map((item, index) => (\r\n <div\r\n key={index}\r\n className=\"border border-zinc-200 dark:border-zinc-800 rounded-lg overflow-hidden\"\r\n >\r\n <button\r\n onClick={() => toggleItem(index)}\r\n className=\"w-full px-4 py-3 flex items-center justify-between text-left bg-zinc-50 dark:bg-zinc-900 hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors\"\r\n >\r\n <span className=\"font-medium\">{item.title}</span>\r\n <motion.svg\r\n animate={{ rotate: openItems.includes(index) ? 180 : 0 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"w-5 h-5\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\r\n </motion.svg>\r\n </button>\r\n <AnimatePresence>\r\n {openItems.includes(index) && (\r\n <motion.div\r\n initial={{ height: 0, opacity: 0 }}\r\n animate={{ height: \"auto\", opacity: 1 }}\r\n exit={{ height: 0, opacity: 0 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n <div className=\"px-4 py-3 bg-white dark:bg-zinc-950\">{item.content}</div>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Accordion;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface Tab {\r\n label: string;\r\n content: React.ReactNode;\r\n}\r\n\r\ninterface TabsProps {\r\n tabs: Tab[];\r\n className?: string;\r\n defaultIndex?: number;\r\n}\r\n\r\nexport function Tabs({ tabs, className, defaultIndex = 0 }: TabsProps) {\r\n const [activeIndex, setActiveIndex] = useState(defaultIndex);\r\n\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n <div className=\"relative flex border-b border-zinc-200 dark:border-zinc-800\">\r\n {tabs.map((tab, index) => (\r\n <button\r\n key={index}\r\n onClick={() => setActiveIndex(index)}\r\n className={cn(\r\n \"px-4 py-2 text-sm font-medium transition-colors relative\",\r\n activeIndex === index\r\n ? \"text-zinc-900 dark:text-white\"\r\n : \"text-zinc-500 hover:text-zinc-700 dark:text-zinc-400 dark:hover:text-zinc-200\"\r\n )}\r\n >\r\n {tab.label}\r\n {activeIndex === index && (\r\n <motion.div\r\n layoutId=\"activeTab\"\r\n className=\"absolute bottom-0 left-0 right-0 h-0.5 bg-zinc-900 dark:bg-white\"\r\n transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\r\n />\r\n )}\r\n </button>\r\n ))}\r\n </div>\r\n <motion.div\r\n key={activeIndex}\r\n initial={{ opacity: 0, y: 10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"py-4\"\r\n >\r\n {tabs[activeIndex].content}\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Tabs;\r\n","\"use client\";\r\n\r\nimport { useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ModalProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n className?: string;\r\n title?: string;\r\n}\r\n\r\nexport function Modal({ isOpen, onClose, children, className, title }: ModalProps) {\r\n useEffect(() => {\r\n const handleEscape = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") onClose();\r\n };\r\n if (isOpen) {\r\n document.addEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"hidden\";\r\n }\r\n return () => {\r\n document.removeEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"unset\";\r\n };\r\n }, [isOpen, onClose]);\r\n\r\n return (\r\n <AnimatePresence>\r\n {isOpen && (\r\n <>\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n onClick={onClose}\r\n className=\"fixed inset-0 bg-black/50 z-50\"\r\n />\r\n <motion.div\r\n initial={{ opacity: 0, scale: 0.95, y: 20 }}\r\n animate={{ opacity: 1, scale: 1, y: 0 }}\r\n exit={{ opacity: 0, scale: 0.95, y: 20 }}\r\n transition={{ type: \"spring\", damping: 25, stiffness: 300 }}\r\n className={cn(\r\n \"fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-50\",\r\n \"w-full max-w-md p-6 rounded-xl\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"shadow-xl\",\r\n className\r\n )}\r\n >\r\n {title && (\r\n <div className=\"flex items-center justify-between mb-4\">\r\n <h2 className=\"text-lg font-semibold\">{title}</h2>\r\n <button\r\n onClick={onClose}\r\n className=\"p-1 rounded-lg hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors\"\r\n >\r\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n </div>\r\n )}\r\n {children}\r\n </motion.div>\r\n </>\r\n )}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport default Modal;\r\n","\"use client\";\r\n\r\nimport { useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface DrawerProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n className?: string;\r\n position?: \"left\" | \"right\" | \"bottom\";\r\n}\r\n\r\nexport function Drawer({ isOpen, onClose, children, className, position = \"right\" }: DrawerProps) {\r\n useEffect(() => {\r\n const handleEscape = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") onClose();\r\n };\r\n if (isOpen) {\r\n document.addEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"hidden\";\r\n }\r\n return () => {\r\n document.removeEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"unset\";\r\n };\r\n }, [isOpen, onClose]);\r\n\r\n const variants = {\r\n left: { initial: { x: \"-100%\" }, animate: { x: 0 }, exit: { x: \"-100%\" } },\r\n right: { initial: { x: \"100%\" }, animate: { x: 0 }, exit: { x: \"100%\" } },\r\n bottom: { initial: { y: \"100%\" }, animate: { y: 0 }, exit: { y: \"100%\" } },\r\n };\r\n\r\n const positionClasses = {\r\n left: \"left-0 top-0 h-full w-80\",\r\n right: \"right-0 top-0 h-full w-80\",\r\n bottom: \"bottom-0 left-0 right-0 h-auto max-h-[80vh]\",\r\n };\r\n\r\n return (\r\n <AnimatePresence>\r\n {isOpen && (\r\n <>\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n onClick={onClose}\r\n className=\"fixed inset-0 bg-black/50 z-50\"\r\n />\r\n <motion.div\r\n initial={variants[position].initial}\r\n animate={variants[position].animate}\r\n exit={variants[position].exit}\r\n transition={{ type: \"spring\", damping: 25, stiffness: 300 }}\r\n className={cn(\r\n \"fixed z-50 p-6\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"shadow-xl\",\r\n positionClasses[position],\r\n className\r\n )}\r\n >\r\n <button\r\n onClick={onClose}\r\n className=\"absolute top-4 right-4 p-1 rounded-lg hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors\"\r\n >\r\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n {children}\r\n </motion.div>\r\n </>\r\n )}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport default Drawer;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface AlertProps {\r\n className?: string;\r\n close?: boolean;\r\n children?: React.ReactNode;\r\n onClose?: () => void;\r\n}\r\n\r\ninterface AlertIconProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\ninterface AlertTitleProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\ninterface AlertToolbarProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function Alert({ className = \"\", close = false, children, onClose }: AlertProps) {\r\n const [isVisible, setIsVisible] = React.useState(true);\r\n\r\n if (!isVisible) return null;\r\n\r\n const handleClose = () => {\r\n setIsVisible(false);\r\n onClose?.();\r\n };\r\n\r\n return (\r\n <div className={cn(\"min-h-[400px] w-full flex items-center justify-center p-4\", className)}>\r\n <div className=\"flex flex-col items-center w-full lg:max-w-[75%] gap-6\">\r\n <div className=\"relative flex items-center gap-3 rounded-lg border border-zinc-300 dark:border-zinc-700 bg-transparent px-4 py-3 shadow-sm w-full max-w-md transition-all duration-200\">\r\n {children}\r\n {close && (\r\n <button\r\n onClick={handleClose}\r\n className=\"absolute top-2 right-2 text-gray-500 hover:text-gray-700 dark:text-white/60 dark:hover:text-white transition-colors\"\r\n >\r\n <svg className=\"h-4 w-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport function AlertIcon({ children, className }: AlertIconProps) {\r\n return <div className={cn(\"text-primary flex-shrink-0\", className)}>{children}</div>;\r\n}\r\n\r\nexport function AlertTitle({ children, className }: AlertTitleProps) {\r\n return <span className={cn(\"text-foreground font-medium text-sm flex-1\", className)}>{children}</span>;\r\n}\r\n\r\nexport function AlertToolbar({ children, className }: AlertToolbarProps) {\r\n return <div className={cn(\"flex items-center gap-2\", className)}>{children}</div>;\r\n}\r\n","\"use client\";\r\n\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TerminalProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n title?: string;\r\n}\r\n\r\ninterface TypingAnimationProps {\r\n children: string;\r\n className?: string;\r\n delay?: number;\r\n speed?: number;\r\n}\r\n\r\ninterface AnimatedSpanProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function Terminal({ children, className, title = \"Terminal\" }: TerminalProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"relative w-full max-w-2xl mx-auto bg-zinc-100 dark:bg-black rounded-lg overflow-hidden shadow-2xl\",\r\n \"border border-zinc-300 dark:border-gray-800\",\r\n className\r\n )}\r\n >\r\n <div className=\"flex items-center justify-between px-4 py-3 bg-zinc-200 dark:bg-gray-800 border-b border-zinc-300 dark:border-gray-700\">\r\n <div className=\"flex items-center space-x-2\">\r\n <div className=\"w-3 h-3 bg-red-500 rounded-full\"></div>\r\n <div className=\"w-3 h-3 bg-yellow-500 rounded-full\"></div>\r\n <div className=\"w-3 h-3 bg-green-500 rounded-full\"></div>\r\n </div>\r\n <div className=\"text-zinc-600 dark:text-gray-400 text-sm font-mono\">{title}</div>\r\n <div className=\"w-16\"></div>\r\n </div>\r\n\r\n <div className=\"p-4 font-mono text-sm leading-relaxed space-y-2 min-h-[300px] bg-zinc-100 dark:bg-black text-zinc-900 dark:text-white\">\r\n {children}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport function TypingAnimation({ children, className, delay = 0, speed = 50 }: TypingAnimationProps) {\r\n const [displayedText, setDisplayedText] = useState(\"\");\r\n const [isComplete, setIsComplete] = useState(false);\r\n\r\n useEffect(() => {\r\n const timer = setTimeout(() => {\r\n let currentIndex = 0;\r\n const interval = setInterval(() => {\r\n if (currentIndex <= children.length) {\r\n setDisplayedText(children.slice(0, currentIndex));\r\n currentIndex++;\r\n } else {\r\n setIsComplete(true);\r\n clearInterval(interval);\r\n }\r\n }, speed);\r\n\r\n return () => clearInterval(interval);\r\n }, delay);\r\n\r\n return () => clearTimeout(timer);\r\n }, [children, delay, speed]);\r\n\r\n return (\r\n <div className={cn(\"flex items-center\", className)}>\r\n <span>{displayedText}</span>\r\n {!isComplete && <span className=\"ml-1 animate-pulse bg-white w-2 h-4 inline-block\"></span>}\r\n </div>\r\n );\r\n}\r\n\r\nexport function AnimatedSpan({ children, className, delay = 0 }: AnimatedSpanProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n\r\n useEffect(() => {\r\n const timer = setTimeout(() => {\r\n setIsVisible(true);\r\n }, delay);\r\n\r\n return () => clearTimeout(timer);\r\n }, [delay]);\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"transition-all duration-500 transform\",\r\n isVisible ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-2\",\r\n className\r\n )}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport React, { useState, Children, useRef, useLayoutEffect, HTMLAttributes, ReactNode } from \"react\";\r\nimport { motion, AnimatePresence, Variants } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport interface StepperProps extends HTMLAttributes<HTMLDivElement> {\r\n children: ReactNode;\r\n initialStep?: number;\r\n onStepChange?: (step: number) => void;\r\n onFinalStepCompleted?: () => void;\r\n backButtonText?: string;\r\n nextButtonText?: string;\r\n disableStepIndicators?: boolean;\r\n}\r\n\r\nexport function Stepper({\r\n children,\r\n initialStep = 1,\r\n onStepChange = () => {},\r\n onFinalStepCompleted = () => {},\r\n backButtonText = \"Back\",\r\n nextButtonText = \"Continue\",\r\n disableStepIndicators = false,\r\n className,\r\n ...rest\r\n}: StepperProps) {\r\n const [currentStep, setCurrentStep] = useState<number>(initialStep);\r\n const [direction, setDirection] = useState<number>(0);\r\n const stepsArray = Children.toArray(children);\r\n const totalSteps = stepsArray.length;\r\n const isCompleted = currentStep > totalSteps;\r\n const isLastStep = currentStep === totalSteps;\r\n\r\n const updateStep = (newStep: number) => {\r\n setCurrentStep(newStep);\r\n if (newStep > totalSteps) {\r\n onFinalStepCompleted();\r\n } else {\r\n onStepChange(newStep);\r\n }\r\n };\r\n\r\n const handleBack = () => {\r\n if (currentStep > 1) {\r\n setDirection(-1);\r\n updateStep(currentStep - 1);\r\n }\r\n };\r\n\r\n const handleNext = () => {\r\n if (!isLastStep) {\r\n setDirection(1);\r\n updateStep(currentStep + 1);\r\n }\r\n };\r\n\r\n const handleComplete = () => {\r\n setDirection(1);\r\n updateStep(totalSteps + 1);\r\n };\r\n\r\n return (\r\n <div className={cn(\"w-full max-w-md mx-auto\", className)} {...rest}>\r\n <div className=\"flex items-center justify-between mb-8\">\r\n {stepsArray.map((_, index) => {\r\n const stepNumber = index + 1;\r\n const isNotLastStep = index < totalSteps - 1;\r\n return (\r\n <React.Fragment key={stepNumber}>\r\n <StepIndicator\r\n step={stepNumber}\r\n disableStepIndicators={disableStepIndicators}\r\n currentStep={currentStep}\r\n onClickStep={(clicked) => {\r\n setDirection(clicked > currentStep ? 1 : -1);\r\n updateStep(clicked);\r\n }}\r\n />\r\n {isNotLastStep && <StepConnector isComplete={currentStep > stepNumber} />}\r\n </React.Fragment>\r\n );\r\n })}\r\n </div>\r\n\r\n <StepContentWrapper isCompleted={isCompleted} currentStep={currentStep} direction={direction}>\r\n {stepsArray[currentStep - 1]}\r\n </StepContentWrapper>\r\n\r\n {!isCompleted && (\r\n <div className={cn(\"flex mt-8\", currentStep !== 1 ? \"justify-between\" : \"justify-end\")}>\r\n {currentStep !== 1 && (\r\n <button\r\n onClick={handleBack}\r\n className=\"px-4 py-2 text-sm font-medium text-zinc-400 hover:text-white transition-colors rounded-lg hover:bg-zinc-800\"\r\n >\r\n {backButtonText}\r\n </button>\r\n )}\r\n <button\r\n onClick={isLastStep ? handleComplete : handleNext}\r\n className=\"px-4 py-2 text-sm font-medium bg-white text-black rounded-lg hover:bg-zinc-200 transition-colors\"\r\n >\r\n {isLastStep ? \"Complete\" : nextButtonText}\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\ninterface StepContentWrapperProps {\r\n isCompleted: boolean;\r\n currentStep: number;\r\n direction: number;\r\n children: ReactNode;\r\n}\r\n\r\nfunction StepContentWrapper({ isCompleted, currentStep, direction, children }: StepContentWrapperProps) {\r\n const [parentHeight, setParentHeight] = useState<number>(0);\r\n\r\n return (\r\n <motion.div\r\n className=\"relative overflow-hidden\"\r\n animate={{ height: isCompleted ? 0 : parentHeight }}\r\n transition={{ type: \"spring\", duration: 0.4 }}\r\n >\r\n <AnimatePresence initial={false} mode=\"sync\" custom={direction}>\r\n {!isCompleted && (\r\n <SlideTransition key={currentStep} direction={direction} onHeightReady={(h) => setParentHeight(h)}>\r\n {children}\r\n </SlideTransition>\r\n )}\r\n </AnimatePresence>\r\n </motion.div>\r\n );\r\n}\r\n\r\ninterface SlideTransitionProps {\r\n children: ReactNode;\r\n direction: number;\r\n onHeightReady: (h: number) => void;\r\n}\r\n\r\nfunction SlideTransition({ children, direction, onHeightReady }: SlideTransitionProps) {\r\n const containerRef = useRef<HTMLDivElement | null>(null);\r\n\r\n useLayoutEffect(() => {\r\n if (containerRef.current) {\r\n onHeightReady(containerRef.current.offsetHeight);\r\n }\r\n }, [children, onHeightReady]);\r\n\r\n const stepVariants: Variants = {\r\n enter: (dir: number) => ({ x: dir >= 0 ? \"-100%\" : \"100%\", opacity: 0 }),\r\n center: { x: \"0%\", opacity: 1 },\r\n exit: (dir: number) => ({ x: dir >= 0 ? \"50%\" : \"-50%\", opacity: 0 }),\r\n };\r\n\r\n return (\r\n <motion.div\r\n ref={containerRef}\r\n custom={direction}\r\n variants={stepVariants}\r\n initial=\"enter\"\r\n animate=\"center\"\r\n exit=\"exit\"\r\n transition={{ duration: 0.4 }}\r\n className=\"absolute left-0 right-0 top-0\"\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\ninterface StepProps {\r\n children: ReactNode;\r\n}\r\n\r\nexport function Step({ children }: StepProps): React.JSX.Element {\r\n return <div className=\"p-4 rounded-lg bg-zinc-900 border border-zinc-800\">{children}</div>;\r\n}\r\n\r\ninterface StepIndicatorProps {\r\n step: number;\r\n currentStep: number;\r\n onClickStep: (step: number) => void;\r\n disableStepIndicators?: boolean;\r\n}\r\n\r\nfunction StepIndicator({ step, currentStep, onClickStep, disableStepIndicators }: StepIndicatorProps) {\r\n const status = currentStep === step ? \"active\" : currentStep < step ? \"inactive\" : \"complete\";\r\n\r\n const handleClick = () => {\r\n if (step !== currentStep && !disableStepIndicators) {\r\n onClickStep(step);\r\n }\r\n };\r\n\r\n return (\r\n <motion.button\r\n onClick={handleClick}\r\n disabled={disableStepIndicators}\r\n className={cn(\r\n \"relative flex items-center justify-center w-10 h-10 rounded-full text-sm font-medium transition-all\",\r\n status === \"inactive\" && \"bg-zinc-800 text-zinc-500 border border-zinc-700\",\r\n status === \"active\" && \"bg-white text-black border-2 border-white\",\r\n status === \"complete\" && \"bg-white text-black border-2 border-white\",\r\n !disableStepIndicators && \"cursor-pointer hover:opacity-80\"\r\n )}\r\n animate={status}\r\n initial={false}\r\n >\r\n {status === \"complete\" ? (\r\n <svg className=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2.5}>\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M5 13l4 4L19 7\" />\r\n </svg>\r\n ) : (\r\n <span>{step}</span>\r\n )}\r\n </motion.button>\r\n );\r\n}\r\n\r\ninterface StepConnectorProps {\r\n isComplete: boolean;\r\n}\r\n\r\nfunction StepConnector({ isComplete }: StepConnectorProps) {\r\n return (\r\n <div className=\"flex-1 h-[2px] mx-2 bg-zinc-800 rounded-full overflow-hidden\">\r\n <motion.div\r\n className=\"h-full bg-white rounded-full\"\r\n initial={{ width: 0 }}\r\n animate={{ width: isComplete ? \"100%\" : \"0%\" }}\r\n transition={{ duration: 0.4 }}\r\n />\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport React, { createContext, forwardRef, useCallback, useContext, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TreeDataItem {\r\n id: string;\r\n name: string;\r\n icon?: React.ReactNode;\r\n children?: TreeDataItem[];\r\n isSelectable?: boolean;\r\n}\r\n\r\ntype TreeProps = React.HTMLAttributes<HTMLDivElement> & {\r\n data?: TreeDataItem[] | TreeDataItem;\r\n initialSelectedId?: string;\r\n onSelectChange?: (item: TreeDataItem | undefined) => void;\r\n initialExpandedItems?: string[];\r\n elements?: TreeDataItem[];\r\n};\r\n\r\nconst TreeContext = createContext<{\r\n selectedId: string | undefined;\r\n expandedItems: string[];\r\n handleExpand: (id: string) => void;\r\n handleSelect: (id: string) => void;\r\n data: TreeDataItem[] | TreeDataItem;\r\n} | null>(null);\r\n\r\nconst useTree = () => {\r\n const context = useContext(TreeContext);\r\n if (!context) {\r\n throw new Error(\"useTree must be used within a TreeProvider\");\r\n }\r\n return context;\r\n};\r\n\r\nconst Tree = forwardRef<HTMLDivElement, TreeProps>(\r\n ({ data, initialSelectedId, onSelectChange, initialExpandedItems = [], elements, className, ...props }, ref) => {\r\n const [selectedId, setSelectedId] = useState<string | undefined>(initialSelectedId);\r\n const [expandedItems, setExpandedItems] = useState<string[]>(initialExpandedItems);\r\n\r\n const handleExpand = useCallback((id: string) => {\r\n setExpandedItems((prev) => {\r\n if (prev.includes(id)) {\r\n return prev.filter((item) => item !== id);\r\n }\r\n return [...prev, id];\r\n });\r\n }, []);\r\n\r\n const handleSelect = useCallback(\r\n (id: string) => {\r\n const treeData = data || elements || [];\r\n const dataArray = Array.isArray(treeData) ? treeData : [treeData];\r\n\r\n const findItem = (items: TreeDataItem[]): TreeDataItem | undefined => {\r\n for (const item of items) {\r\n if (item.id === id) return item;\r\n if (item.children) {\r\n const found = findItem(item.children);\r\n if (found) return found;\r\n }\r\n }\r\n };\r\n\r\n const selectedItem = findItem(dataArray);\r\n if (selectedItem?.isSelectable) {\r\n setSelectedId(id);\r\n onSelectChange?.(selectedItem);\r\n }\r\n },\r\n [data, elements, onSelectChange]\r\n );\r\n\r\n const value = {\r\n selectedId,\r\n expandedItems,\r\n handleExpand,\r\n handleSelect,\r\n data: data || elements || [],\r\n };\r\n\r\n return (\r\n <TreeContext.Provider value={value}>\r\n <div className={cn(\"relative overflow-hidden\", className)} ref={ref} {...props}>\r\n {React.Children.map(props.children, (child) => child)}\r\n </div>\r\n </TreeContext.Provider>\r\n );\r\n }\r\n);\r\n\r\nTree.displayName = \"Tree\";\r\n\r\nconst Folder = forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & {\r\n element: string;\r\n value: string;\r\n isSelectable?: boolean;\r\n }\r\n>(({ className, element, value, isSelectable = true, children, ...props }, ref) => {\r\n const { selectedId, expandedItems, handleExpand, handleSelect } = useTree();\r\n\r\n return (\r\n <div ref={ref} className=\"relative\" {...props}>\r\n <div\r\n className={cn(\r\n \"flex cursor-pointer items-center gap-1 rounded-md px-2 py-1 text-sm hover:bg-muted\",\r\n selectedId === value && \"bg-muted\",\r\n className\r\n )}\r\n onClick={() => {\r\n handleExpand(value);\r\n if (isSelectable) {\r\n handleSelect(value);\r\n }\r\n }}\r\n >\r\n <svg\r\n className={cn(\"h-4 w-4 shrink-0 transition-transform duration-200\", expandedItems.includes(value) && \"rotate-90\")}\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n >\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\r\n </svg>\r\n <svg className=\"h-4 w-4 shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z\"\r\n />\r\n </svg>\r\n <span className=\"truncate\">{element}</span>\r\n </div>\r\n {expandedItems.includes(value) && <div className=\"ml-4 border-l border-muted pl-2\">{children}</div>}\r\n </div>\r\n );\r\n});\r\n\r\nFolder.displayName = \"Folder\";\r\n\r\nconst File = forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & {\r\n value: string;\r\n isSelectable?: boolean;\r\n }\r\n>(({ className, value, isSelectable = true, children, ...props }, ref) => {\r\n const { selectedId, handleSelect } = useTree();\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-pointer items-center gap-1 rounded-md px-2 py-1 text-sm hover:bg-muted\",\r\n selectedId === value && \"bg-muted\",\r\n className\r\n )}\r\n onClick={() => isSelectable && handleSelect(value)}\r\n {...props}\r\n >\r\n <svg className=\"h-4 w-4 shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\"\r\n />\r\n </svg>\r\n <div className=\"truncate\">{children}</div>\r\n </div>\r\n );\r\n});\r\n\r\nFile.displayName = \"File\";\r\n\r\nexport { Tree, Folder, File, type TreeDataItem };\r\n","\"use client\";\r\n\r\nimport { MotionValue, motion, useSpring, useTransform } from \"framer-motion\";\r\nimport { useEffect } from \"react\";\r\n\r\ninterface NumberProps {\r\n mv: MotionValue<number>;\r\n number: number;\r\n height: number;\r\n}\r\n\r\nfunction Number({ mv, number, height }: NumberProps) {\r\n const y = useTransform(mv, (latest) => {\r\n const placeValue = latest % 10;\r\n let offset = (10 + number - placeValue) % 10;\r\n let memo = offset * height;\r\n if (offset > 5) {\r\n memo -= 10 * height;\r\n }\r\n return memo;\r\n });\r\n\r\n return (\r\n <motion.span style={{ y, position: \"absolute\", inset: 0, display: \"flex\", justifyContent: \"center\" }}>\r\n {number}\r\n </motion.span>\r\n );\r\n}\r\n\r\ninterface DigitProps {\r\n place: number;\r\n value: number;\r\n height: number;\r\n digitStyle?: React.CSSProperties;\r\n}\r\n\r\nfunction Digit({ place, value, height, digitStyle }: DigitProps) {\r\n const valueRoundedToPlace = Math.floor(value / place);\r\n const animatedValue = useSpring(valueRoundedToPlace, { stiffness: 200, damping: 25 });\r\n\r\n useEffect(() => {\r\n animatedValue.set(valueRoundedToPlace);\r\n }, [animatedValue, valueRoundedToPlace]);\r\n\r\n return (\r\n <div style={{ height, position: \"relative\", overflow: \"hidden\", ...digitStyle }}>\r\n {Array.from({ length: 10 }, (_, i) => (\r\n <Number key={i} mv={animatedValue} number={i} height={height} />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport interface CounterProps {\r\n value: number;\r\n fontSize?: number;\r\n padding?: number;\r\n places?: number[];\r\n gap?: number;\r\n textColor?: string;\r\n fontWeight?: React.CSSProperties[\"fontWeight\"];\r\n containerStyle?: React.CSSProperties;\r\n digitStyle?: React.CSSProperties;\r\n}\r\n\r\nexport function Counter({\r\n value,\r\n fontSize = 100,\r\n padding = 0,\r\n places = [100, 10, 1],\r\n gap = 8,\r\n textColor = \"#000000\",\r\n fontWeight = 900,\r\n containerStyle,\r\n digitStyle,\r\n}: CounterProps) {\r\n const height = fontSize + padding;\r\n\r\n return (\r\n <div style={{ display: \"flex\", gap, fontSize, color: textColor, fontWeight, ...containerStyle }}>\r\n {places.map((place) => (\r\n <Digit key={place} place={place} value={value} height={height} digitStyle={digitStyle} />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Counter;\r\n","\"use client\";\r\n\r\nimport React, { useState, useRef } from \"react\";\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ToolbarItem {\r\n id: string;\r\n title: string;\r\n icon: React.ReactNode;\r\n}\r\n\r\ninterface ToolbarProps {\r\n className?: string;\r\n items: ToolbarItem[];\r\n defaultSelected?: string;\r\n onItemClick?: (itemId: string) => void;\r\n}\r\n\r\nconst buttonVariants = {\r\n initial: { gap: 0, paddingLeft: \".5rem\", paddingRight: \".5rem\" },\r\n animate: (isSelected: boolean) => ({\r\n gap: isSelected ? \".5rem\" : 0,\r\n paddingLeft: isSelected ? \"1rem\" : \".5rem\",\r\n paddingRight: isSelected ? \"1rem\" : \".5rem\",\r\n }),\r\n};\r\n\r\nconst spanVariants = {\r\n initial: { width: 0, opacity: 0 },\r\n animate: { width: \"auto\", opacity: 1 },\r\n exit: { width: 0, opacity: 0 },\r\n};\r\n\r\nconst transition = { type: \"spring\", bounce: 0, duration: 0.4 };\r\n\r\nexport function Toolbar({ className, items, defaultSelected, onItemClick }: ToolbarProps) {\r\n const [selected, setSelected] = useState<string | null>(defaultSelected || null);\r\n\r\n const handleItemClick = (itemId: string) => {\r\n setSelected(selected === itemId ? null : itemId);\r\n onItemClick?.(itemId);\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"flex items-center gap-3 p-2 relative\",\r\n \"bg-background border rounded-xl transition-all duration-200\",\r\n className\r\n )}\r\n >\r\n <div className=\"flex items-center gap-2\">\r\n {items.map((item) => (\r\n <motion.button\r\n key={item.id}\r\n variants={buttonVariants}\r\n initial={false}\r\n animate=\"animate\"\r\n custom={selected === item.id}\r\n onClick={() => handleItemClick(item.id)}\r\n transition={transition}\r\n className={cn(\r\n \"relative flex items-center rounded-none px-3 py-2\",\r\n \"text-sm font-medium transition-colors duration-300\",\r\n selected === item.id\r\n ? \"bg-[#1F9CFE] text-white rounded-lg\"\r\n : \"text-muted-foreground hover:bg-muted hover:text-foreground\"\r\n )}\r\n >\r\n {item.icon}\r\n <AnimatePresence initial={false}>\r\n {selected === item.id && (\r\n <motion.span\r\n variants={spanVariants}\r\n initial=\"initial\"\r\n animate=\"animate\"\r\n exit=\"exit\"\r\n transition={transition}\r\n className=\"overflow-hidden\"\r\n >\r\n {item.title}\r\n </motion.span>\r\n )}\r\n </AnimatePresence>\r\n </motion.button>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Toolbar;\r\n","\"use client\";\r\n\r\nimport React, { useRef } from \"react\";\r\nimport { motion, useMotionValue, useSpring, useTransform } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport interface DockProps {\r\n className?: string;\r\n children: React.ReactNode;\r\n direction?: \"top\" | \"middle\" | \"bottom\";\r\n}\r\n\r\nexport function Dock({ className, children, direction = \"middle\" }: DockProps) {\r\n const directionClasses = {\r\n top: \"items-start\",\r\n middle: \"items-center\",\r\n bottom: \"items-end\",\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(\r\n \"mx-auto w-max mt-8 h-[58px] p-2 flex gap-2 rounded-2xl border\",\r\n \"supports-backdrop-blur:bg-white/10 supports-backdrop-blur:dark:bg-black/10 backdrop-blur-md\",\r\n \"border-gray-200 bg-gray-50/80 dark:border-gray-800 dark:bg-gray-900/80\",\r\n directionClasses[direction],\r\n className\r\n )}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport interface DockIconProps {\r\n size?: number;\r\n magnification?: number;\r\n distance?: number;\r\n children?: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function DockIcon({\r\n size = 40,\r\n magnification = 60,\r\n distance = 140,\r\n children,\r\n className,\r\n}: DockIconProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const mouseX = useMotionValue(Infinity);\r\n\r\n const width = useSpring(\r\n useTransform(mouseX, [-distance, 0, distance], [size, magnification, size]),\r\n { mass: 0.1, stiffness: 150, damping: 12 }\r\n );\r\n\r\n return (\r\n <motion.div\r\n ref={ref}\r\n style={{ width }}\r\n onMouseMove={(e) => mouseX.set(e.pageX - ref.current!.offsetLeft - width.get() / 2)}\r\n onMouseLeave={() => mouseX.set(Infinity)}\r\n className={cn(\"flex aspect-square cursor-pointer items-center justify-center rounded-full\", className)}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n label?: string;\r\n error?: string;\r\n icon?: React.ReactNode;\r\n}\r\n\r\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\r\n ({ className, label, error, icon, ...props }, ref) => {\r\n return (\r\n <div className=\"w-full\">\r\n {label && (\r\n <label className=\"block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1\">\r\n {label}\r\n </label>\r\n )}\r\n <div className=\"relative\">\r\n {icon && (\r\n <div className=\"absolute left-3 top-1/2 -translate-y-1/2 text-zinc-400\">\r\n {icon}\r\n </div>\r\n )}\r\n <input\r\n ref={ref}\r\n className={cn(\r\n \"w-full px-4 py-2 rounded-lg\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"text-zinc-900 dark:text-zinc-100\",\r\n \"placeholder:text-zinc-400 dark:placeholder:text-zinc-500\",\r\n \"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\",\r\n \"transition-all duration-200\",\r\n icon && \"pl-10\",\r\n error && \"border-red-500 focus:ring-red-500\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </div>\r\n {error && <p className=\"mt-1 text-sm text-red-500\">{error}</p>}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nInput.displayName = \"Input\";\r\n\r\nexport default Input;\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\r\n label?: string;\r\n error?: string;\r\n}\r\n\r\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\r\n ({ className, label, error, ...props }, ref) => {\r\n return (\r\n <div className=\"w-full\">\r\n {label && (\r\n <label className=\"block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1\">\r\n {label}\r\n </label>\r\n )}\r\n <textarea\r\n ref={ref}\r\n className={cn(\r\n \"w-full px-4 py-2 rounded-lg min-h-[100px] resize-y\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"text-zinc-900 dark:text-zinc-100\",\r\n \"placeholder:text-zinc-400 dark:placeholder:text-zinc-500\",\r\n \"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\",\r\n \"transition-all duration-200\",\r\n error && \"border-red-500 focus:ring-red-500\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n {error && <p className=\"mt-1 text-sm text-red-500\">{error}</p>}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nTextarea.displayName = \"Textarea\";\r\n\r\nexport default Textarea;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CheckboxProps {\r\n checked?: boolean;\r\n onChange?: (checked: boolean) => void;\r\n label?: string;\r\n disabled?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function Checkbox({ checked = false, onChange, label, disabled = false, className }: CheckboxProps) {\r\n return (\r\n <label\r\n className={cn(\r\n \"inline-flex items-center gap-2 cursor-pointer\",\r\n disabled && \"opacity-50 cursor-not-allowed\",\r\n className\r\n )}\r\n >\r\n <button\r\n type=\"button\"\r\n role=\"checkbox\"\r\n aria-checked={checked}\r\n disabled={disabled}\r\n onClick={() => onChange?.(!checked)}\r\n className={cn(\r\n \"w-5 h-5 rounded border-2 flex items-center justify-center transition-colors\",\r\n checked\r\n ? \"bg-blue-500 border-blue-500\"\r\n : \"bg-transparent border-zinc-300 dark:border-zinc-600\"\r\n )}\r\n >\r\n <motion.svg\r\n initial={false}\r\n animate={{ scale: checked ? 1 : 0, opacity: checked ? 1 : 0 }}\r\n transition={{ duration: 0.15 }}\r\n className=\"w-3 h-3 text-white\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={3} d=\"M5 13l4 4L19 7\" />\r\n </motion.svg>\r\n </button>\r\n {label && <span className=\"text-sm\">{label}</span>}\r\n </label>\r\n );\r\n}\r\n\r\nexport default Checkbox;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RadioOption {\r\n value: string;\r\n label: string;\r\n}\r\n\r\ninterface RadioGroupProps {\r\n options: RadioOption[];\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n name: string;\r\n className?: string;\r\n direction?: \"horizontal\" | \"vertical\";\r\n}\r\n\r\nexport function RadioGroup({\r\n options,\r\n value,\r\n onChange,\r\n name,\r\n className,\r\n direction = \"vertical\",\r\n}: RadioGroupProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"flex gap-3\",\r\n direction === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\",\r\n className\r\n )}\r\n >\r\n {options.map((option) => (\r\n <label\r\n key={option.value}\r\n className=\"inline-flex items-center gap-2 cursor-pointer\"\r\n >\r\n <button\r\n type=\"button\"\r\n role=\"radio\"\r\n aria-checked={value === option.value}\r\n onClick={() => onChange?.(option.value)}\r\n className={cn(\r\n \"w-5 h-5 rounded-full border-2 flex items-center justify-center transition-colors\",\r\n value === option.value\r\n ? \"border-blue-500\"\r\n : \"border-zinc-300 dark:border-zinc-600\"\r\n )}\r\n >\r\n <motion.div\r\n initial={false}\r\n animate={{\r\n scale: value === option.value ? 1 : 0,\r\n opacity: value === option.value ? 1 : 0,\r\n }}\r\n transition={{ duration: 0.15 }}\r\n className=\"w-2.5 h-2.5 rounded-full bg-blue-500\"\r\n />\r\n </button>\r\n <span className=\"text-sm\">{option.label}</span>\r\n </label>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default RadioGroup;\r\n","\"use client\";\r\n\r\nimport { useState, useRef, useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SelectOption {\r\n value: string;\r\n label: string;\r\n}\r\n\r\ninterface SelectProps {\r\n options: SelectOption[];\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n placeholder?: string;\r\n className?: string;\r\n label?: string;\r\n}\r\n\r\nexport function Select({ options, value, onChange, placeholder = \"Select...\", className, label }: SelectProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const ref = useRef<HTMLDivElement>(null);\r\n\r\n const selectedOption = options.find((opt) => opt.value === value);\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (ref.current && !ref.current.contains(e.target as Node)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, []);\r\n\r\n return (\r\n <div className=\"w-full\">\r\n {label && (\r\n <label className=\"block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1\">\r\n {label}\r\n </label>\r\n )}\r\n <div ref={ref} className={cn(\"relative\", className)}>\r\n <button\r\n type=\"button\"\r\n onClick={() => setIsOpen(!isOpen)}\r\n className={cn(\r\n \"w-full px-4 py-2 rounded-lg text-left\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"flex items-center justify-between\",\r\n \"focus:outline-none focus:ring-2 focus:ring-blue-500\",\r\n \"transition-all duration-200\"\r\n )}\r\n >\r\n <span className={selectedOption ? \"\" : \"text-zinc-400\"}>\r\n {selectedOption?.label || placeholder}\r\n </span>\r\n <motion.svg\r\n animate={{ rotate: isOpen ? 180 : 0 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"w-5 h-5\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\r\n </motion.svg>\r\n </button>\r\n <AnimatePresence>\r\n {isOpen && (\r\n <motion.div\r\n initial={{ opacity: 0, y: -10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: -10 }}\r\n transition={{ duration: 0.15 }}\r\n className={cn(\r\n \"absolute z-50 w-full mt-1 rounded-lg overflow-hidden\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"shadow-lg\"\r\n )}\r\n >\r\n {options.map((option) => (\r\n <button\r\n key={option.value}\r\n type=\"button\"\r\n onClick={() => {\r\n onChange?.(option.value);\r\n setIsOpen(false);\r\n }}\r\n className={cn(\r\n \"w-full px-4 py-2 text-left\",\r\n \"hover:bg-zinc-100 dark:hover:bg-zinc-800\",\r\n \"transition-colors\",\r\n value === option.value && \"bg-blue-50 dark:bg-blue-900/20 text-blue-600\"\r\n )}\r\n >\r\n {option.label}\r\n </button>\r\n ))}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Select;\r\n","\"use client\";\r\n\r\nimport { useState, useRef, useEffect } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface InputOTPProps {\r\n maxLength?: number;\r\n onComplete?: (value: string) => void;\r\n onChange?: (value: string) => void;\r\n className?: string;\r\n}\r\n\r\nexport function InputOTP({\r\n maxLength = 6,\r\n onComplete,\r\n onChange,\r\n className = \"\",\r\n}: InputOTPProps) {\r\n const [values, setValues] = useState<string[]>(new Array(maxLength).fill(\"\"));\r\n const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\r\n\r\n useEffect(() => {\r\n const currentValue = values.join(\"\");\r\n onChange?.(currentValue);\r\n\r\n if (currentValue.length === maxLength) {\r\n onComplete?.(currentValue);\r\n }\r\n }, [values, maxLength, onChange, onComplete]);\r\n\r\n const handleChange = (index: number, value: string) => {\r\n if (value.length > 1) {\r\n const pastedValues = value.slice(0, maxLength).split(\"\");\r\n const newValues = [...values];\r\n pastedValues.forEach((val, i) => {\r\n if (index + i < maxLength) {\r\n newValues[index + i] = val;\r\n }\r\n });\r\n setValues(newValues);\r\n\r\n const nextIndex = Math.min(index + pastedValues.length, maxLength - 1);\r\n inputRefs.current[nextIndex]?.focus();\r\n return;\r\n }\r\n\r\n if (/^\\d*$/.test(value)) {\r\n const newValues = [...values];\r\n newValues[index] = value;\r\n setValues(newValues);\r\n\r\n if (value && index < maxLength - 1) {\r\n inputRefs.current[index + 1]?.focus();\r\n }\r\n }\r\n };\r\n\r\n const handleKeyDown = (\r\n index: number,\r\n e: React.KeyboardEvent<HTMLInputElement>\r\n ) => {\r\n if (e.key === \"Backspace\") {\r\n if (!values[index] && index > 0) {\r\n inputRefs.current[index - 1]?.focus();\r\n } else {\r\n const newValues = [...values];\r\n newValues[index] = \"\";\r\n setValues(newValues);\r\n }\r\n } else if (e.key === \"ArrowLeft\" && index > 0) {\r\n inputRefs.current[index - 1]?.focus();\r\n } else if (e.key === \"ArrowRight\" && index < maxLength - 1) {\r\n inputRefs.current[index + 1]?.focus();\r\n }\r\n };\r\n\r\n const handleFocus = (index: number) => {\r\n inputRefs.current[index]?.select();\r\n };\r\n\r\n return (\r\n <div className={cn(\"flex items-center gap-2\", className)}>\r\n {values.map((value, index) => (\r\n <input\r\n key={index}\r\n ref={(el) => {\r\n inputRefs.current[index] = el;\r\n }}\r\n type=\"text\"\r\n inputMode=\"numeric\"\r\n maxLength={1}\r\n value={value}\r\n onChange={(e) => handleChange(index, e.target.value)}\r\n onKeyDown={(e) => handleKeyDown(index, e)}\r\n onFocus={() => handleFocus(index)}\r\n className={cn(\r\n \"w-12 h-12 text-center text-lg font-semibold\",\r\n \"border-2 border-zinc-300 dark:border-zinc-600 rounded-md\",\r\n \"focus:border-zinc-900 dark:focus:border-white focus:outline-none\",\r\n \"bg-white dark:bg-zinc-800 text-zinc-900 dark:text-white\",\r\n \"transition-colors\"\r\n )}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default InputOTP;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HamburgerBasicProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerBasic({ className, onChange }: HamburgerBasicProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <label\r\n className={cn(\r\n \"relative w-10 h-8 bg-transparent cursor-pointer block\",\r\n className\r\n )}\r\n htmlFor=\"burger-basic\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n id=\"burger-basic\"\r\n className=\"hidden\"\r\n checked={isOpen}\r\n onChange={handleToggle}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out\",\r\n \"top-0 origin-left\",\r\n isOpen && \"rotate-45 top-0 left-1.5\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out\",\r\n \"top-1/2 -translate-y-1/2 origin-left\",\r\n isOpen && \"w-0 opacity-0\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out\",\r\n \"top-full -translate-y-full origin-left\",\r\n isOpen && \"-rotate-45 top-7 left-1.5\"\r\n )}\r\n />\r\n </label>\r\n );\r\n}\r\n\r\nexport default HamburgerBasic;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HamburgerSpinProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerSpin({ className, onChange }: HamburgerSpinProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <div className={cn(\"inline-block\", className)}>\r\n <input\r\n type=\"checkbox\"\r\n id=\"checkbox-spin\"\r\n className=\"hidden\"\r\n checked={isOpen}\r\n onChange={handleToggle}\r\n />\r\n <label\r\n htmlFor=\"checkbox-spin\"\r\n className={cn(\r\n \"relative w-10 h-10 cursor-pointer flex flex-col items-center justify-center gap-2.5 transition-all duration-500\",\r\n isOpen && \"rotate-180\"\r\n )}\r\n >\r\n <div\r\n className={cn(\r\n \"w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center\",\r\n isOpen && \"scale-x-[0.6] translate-y-[1px]\"\r\n )}\r\n />\r\n <div\r\n className={cn(\r\n \"w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center\",\r\n isOpen && \"rotate-90 scale-x-[1.2]\"\r\n )}\r\n />\r\n <div\r\n className={cn(\r\n \"w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center\",\r\n isOpen && \"scale-x-[0.6] -translate-y-[1px]\"\r\n )}\r\n />\r\n </label>\r\n </div>\r\n );\r\n}\r\n\r\nexport default HamburgerSpin;\r\n","\"use client\";\r\n\r\nimport { useRef, useEffect, useCallback, ReactNode } from \"react\";\r\n\r\ninterface ClickSparkProps {\r\n sparkColor?: string;\r\n sparkSize?: number;\r\n sparkRadius?: number;\r\n sparkCount?: number;\r\n duration?: number;\r\n easing?: string;\r\n extraScale?: number;\r\n children: ReactNode;\r\n}\r\n\r\nexport function ClickSpark({\r\n sparkColor = \"#000000\",\r\n sparkSize = 10,\r\n sparkRadius = 15,\r\n sparkCount = 8,\r\n duration = 400,\r\n easing = \"ease-out\",\r\n extraScale = 1.0,\r\n children,\r\n}: ClickSparkProps) {\r\n const canvasRef = useRef<HTMLCanvasElement>(null);\r\n const sparksRef = useRef<\r\n Array<{\r\n x: number;\r\n y: number;\r\n angle: number;\r\n startTime: number;\r\n }>\r\n >([]);\r\n const startTimeRef = useRef<number | null>(null);\r\n\r\n useEffect(() => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n\r\n const parent = canvas.parentElement;\r\n if (!parent) return;\r\n\r\n let resizeTimeout: ReturnType<typeof setTimeout>;\r\n\r\n const resizeCanvas = () => {\r\n const { width, height } = parent.getBoundingClientRect();\r\n if (canvas.width !== width || canvas.height !== height) {\r\n canvas.width = width;\r\n canvas.height = height;\r\n }\r\n };\r\n\r\n const handleResize = () => {\r\n clearTimeout(resizeTimeout);\r\n resizeTimeout = setTimeout(resizeCanvas, 100);\r\n };\r\n\r\n const ro = new ResizeObserver(handleResize);\r\n ro.observe(parent);\r\n\r\n resizeCanvas();\r\n\r\n return () => {\r\n ro.disconnect();\r\n clearTimeout(resizeTimeout);\r\n };\r\n }, []);\r\n\r\n const easeFunc = useCallback(\r\n (t: number) => {\r\n switch (easing) {\r\n case \"linear\":\r\n return t;\r\n case \"ease-in\":\r\n return t * t;\r\n case \"ease-in-out\":\r\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\r\n default:\r\n return t * (2 - t);\r\n }\r\n },\r\n [easing]\r\n );\r\n\r\n useEffect(() => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n const ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n let animationId: number;\r\n\r\n const draw = (timestamp: number) => {\r\n if (!startTimeRef.current) {\r\n startTimeRef.current = timestamp;\r\n }\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n sparksRef.current = sparksRef.current.filter((spark) => {\r\n const elapsed = timestamp - spark.startTime;\r\n if (elapsed >= duration) {\r\n return false;\r\n }\r\n\r\n const progress = elapsed / duration;\r\n const eased = easeFunc(progress);\r\n\r\n const distance = eased * sparkRadius * extraScale;\r\n const lineLength = sparkSize * (1 - eased);\r\n\r\n const x1 = spark.x + distance * Math.cos(spark.angle);\r\n const y1 = spark.y + distance * Math.sin(spark.angle);\r\n const x2 = spark.x + (distance + lineLength) * Math.cos(spark.angle);\r\n const y2 = spark.y + (distance + lineLength) * Math.sin(spark.angle);\r\n\r\n ctx.strokeStyle = sparkColor;\r\n ctx.lineWidth = 2;\r\n ctx.beginPath();\r\n ctx.moveTo(x1, y1);\r\n ctx.lineTo(x2, y2);\r\n ctx.stroke();\r\n\r\n return true;\r\n });\r\n\r\n animationId = requestAnimationFrame(draw);\r\n };\r\n\r\n animationId = requestAnimationFrame(draw);\r\n\r\n return () => {\r\n cancelAnimationFrame(animationId);\r\n };\r\n }, [sparkColor, sparkSize, sparkRadius, duration, easeFunc, extraScale]);\r\n\r\n const handleClick = (e: React.MouseEvent) => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n const rect = canvas.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n\r\n const now = performance.now();\r\n const newSparks = Array.from({ length: sparkCount }, (_, i) => ({\r\n x,\r\n y,\r\n angle: (2 * Math.PI * i) / sparkCount,\r\n startTime: now,\r\n }));\r\n\r\n sparksRef.current.push(...newSparks);\r\n };\r\n\r\n return (\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n }}\r\n onClick={handleClick}\r\n >\r\n <canvas\r\n ref={canvasRef}\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n display: \"block\",\r\n userSelect: \"none\",\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n pointerEvents: \"none\",\r\n }}\r\n />\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ClickSpark;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { motion, useMotionValue, useSpring } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SmoothCursorProps {\r\n className?: string;\r\n}\r\n\r\nexport function SmoothCursor({ className }: SmoothCursorProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n const cursorX = useMotionValue(-100);\r\n const cursorY = useMotionValue(-100);\r\n\r\n const springConfig = { damping: 25, stiffness: 700 };\r\n const cursorXSpring = useSpring(cursorX, springConfig);\r\n const cursorYSpring = useSpring(cursorY, springConfig);\r\n\r\n useEffect(() => {\r\n const moveCursor = (e: MouseEvent) => {\r\n cursorX.set(e.clientX - 16);\r\n cursorY.set(e.clientY - 16);\r\n setIsVisible(true);\r\n };\r\n\r\n const hideCursor = () => {\r\n setIsVisible(false);\r\n };\r\n\r\n window.addEventListener(\"mousemove\", moveCursor);\r\n window.addEventListener(\"mouseleave\", hideCursor);\r\n\r\n return () => {\r\n window.removeEventListener(\"mousemove\", moveCursor);\r\n window.removeEventListener(\"mouseleave\", hideCursor);\r\n };\r\n }, [cursorX, cursorY]);\r\n\r\n return (\r\n <motion.div\r\n className={cn(\r\n \"pointer-events-none fixed left-0 top-0 z-50 h-8 w-8 rounded-full bg-zinc-400 mix-blend-difference\",\r\n isVisible ? \"opacity-100\" : \"opacity-0\",\r\n className\r\n )}\r\n style={{\r\n x: cursorXSpring,\r\n y: cursorYSpring,\r\n }}\r\n transition={{\r\n type: \"spring\",\r\n stiffness: 500,\r\n damping: 28,\r\n }}\r\n />\r\n );\r\n}\r\n\r\nexport default SmoothCursor;\r\n","\"use client\";\r\n\r\nimport { ReactNode } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FloatEffectProps {\r\n children?: ReactNode;\r\n className?: string;\r\n duration?: number;\r\n distance?: number;\r\n}\r\n\r\nexport function FloatEffect({\r\n children,\r\n className,\r\n duration = 5,\r\n distance = 50,\r\n}: FloatEffectProps) {\r\n return (\r\n <motion.div\r\n className={cn(\"relative\", className)}\r\n animate={{\r\n y: [0, -distance, 0],\r\n }}\r\n transition={{\r\n duration,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n }}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default FloatEffect;\r\n","\"use client\";\r\n\r\nimport { ReactNode } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlowEffectProps {\r\n children?: ReactNode;\r\n className?: string;\r\n glowColor?: string;\r\n duration?: number;\r\n}\r\n\r\nexport function GlowEffect({\r\n children,\r\n className,\r\n glowColor = \"rgba(255, 255, 255, 0.4)\",\r\n duration = 3,\r\n}: GlowEffectProps) {\r\n return (\r\n <motion.div\r\n className={cn(\r\n \"relative p-8 rounded-3xl border-2 border-white/30\",\r\n className\r\n )}\r\n style={{\r\n background:\r\n \"radial-gradient(circle at center, rgba(255,255,255,0.05) 0%, transparent 70%)\",\r\n }}\r\n animate={{\r\n boxShadow: [\r\n `0 0 40px ${glowColor}, 0 0 80px ${glowColor.replace(\"0.4\", \"0.2\")}`,\r\n `0 0 80px ${glowColor.replace(\"0.4\", \"0.8\")}, 0 0 160px ${glowColor.replace(\"0.4\", \"0.5\")}`,\r\n `0 0 40px ${glowColor}, 0 0 80px ${glowColor.replace(\"0.4\", \"0.2\")}`,\r\n ],\r\n borderColor: [\r\n \"rgba(255, 255, 255, 0.3)\",\r\n \"rgba(255, 255, 255, 0.6)\",\r\n \"rgba(255, 255, 255, 0.3)\",\r\n ],\r\n }}\r\n transition={{\r\n duration,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n }}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default GlowEffect;\r\n","\"use client\";\r\n\r\nimport { ReactNode } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BlurFadeProps {\r\n children: ReactNode;\r\n className?: string;\r\n delay?: number;\r\n duration?: number;\r\n blur?: number;\r\n inView?: boolean;\r\n inViewMargin?: string;\r\n yOffset?: number;\r\n}\r\n\r\nexport function BlurFade({\r\n children,\r\n className,\r\n delay = 0,\r\n duration = 0.8,\r\n blur = 10,\r\n inView = false,\r\n inViewMargin = \"-50px\",\r\n yOffset = 6,\r\n}: BlurFadeProps) {\r\n const variants = {\r\n hidden: {\r\n opacity: 0,\r\n filter: `blur(${blur}px)`,\r\n y: yOffset,\r\n },\r\n visible: {\r\n opacity: 1,\r\n filter: \"blur(0px)\",\r\n y: 0,\r\n },\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(className)}\r\n initial=\"hidden\"\r\n animate={inView ? undefined : \"visible\"}\r\n whileInView={inView ? \"visible\" : undefined}\r\n viewport={{ once: true, margin: inViewMargin }}\r\n variants={variants}\r\n transition={{\r\n duration,\r\n delay,\r\n ease: [0.25, 0.1, 0.25, 1],\r\n }}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default BlurFade;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, ReactNode } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nclass Pixel {\r\n width: number;\r\n height: number;\r\n ctx: CanvasRenderingContext2D;\r\n x: number;\r\n y: number;\r\n color: string;\r\n speed: number;\r\n size: number;\r\n sizeStep: number;\r\n minSize: number;\r\n maxSizeInteger: number;\r\n maxSize: number;\r\n delay: number;\r\n counter: number;\r\n counterStep: number;\r\n isIdle: boolean;\r\n isReverse: boolean;\r\n isShimmer: boolean;\r\n\r\n constructor(\r\n canvas: HTMLCanvasElement,\r\n context: CanvasRenderingContext2D,\r\n x: number,\r\n y: number,\r\n color: string,\r\n speed: number,\r\n delay: number\r\n ) {\r\n this.width = canvas.width;\r\n this.height = canvas.height;\r\n this.ctx = context;\r\n this.x = x;\r\n this.y = y;\r\n this.color = color;\r\n this.speed = this.getRandomValue(0.1, 0.9) * speed;\r\n this.size = 0;\r\n this.sizeStep = Math.random() * 0.4;\r\n this.minSize = 0.5;\r\n this.maxSizeInteger = 2;\r\n this.maxSize = this.getRandomValue(this.minSize, this.maxSizeInteger);\r\n this.delay = delay;\r\n this.counter = 0;\r\n this.counterStep = Math.random() * 4 + (this.width + this.height) * 0.01;\r\n this.isIdle = false;\r\n this.isReverse = false;\r\n this.isShimmer = false;\r\n }\r\n\r\n getRandomValue(min: number, max: number) {\r\n return Math.random() * (max - min) + min;\r\n }\r\n\r\n draw() {\r\n const centerOffset = this.maxSizeInteger * 0.5 - this.size * 0.5;\r\n this.ctx.fillStyle = this.color;\r\n this.ctx.fillRect(\r\n this.x + centerOffset,\r\n this.y + centerOffset,\r\n this.size,\r\n this.size\r\n );\r\n }\r\n\r\n appear() {\r\n this.isIdle = false;\r\n if (this.counter <= this.delay) {\r\n this.counter += this.counterStep;\r\n return;\r\n }\r\n if (this.size >= this.maxSize) {\r\n this.isShimmer = true;\r\n }\r\n if (this.isShimmer) {\r\n this.shimmer();\r\n } else {\r\n this.size += this.sizeStep;\r\n }\r\n this.draw();\r\n }\r\n\r\n disappear() {\r\n this.isShimmer = false;\r\n this.counter = 0;\r\n if (this.size <= 0) {\r\n this.isIdle = true;\r\n return;\r\n } else {\r\n this.size -= 0.1;\r\n }\r\n this.draw();\r\n }\r\n\r\n shimmer() {\r\n if (this.size >= this.maxSize) {\r\n this.isReverse = true;\r\n } else if (this.size <= this.minSize) {\r\n this.isReverse = false;\r\n }\r\n if (this.isReverse) {\r\n this.size -= this.speed;\r\n } else {\r\n this.size += this.speed;\r\n }\r\n }\r\n}\r\n\r\nconst VARIANTS = {\r\n default: {\r\n gap: 5,\r\n speed: 35,\r\n colors: \"#71717a,#a1a1aa,#d4d4d8\",\r\n noFocus: false,\r\n },\r\n blue: {\r\n gap: 10,\r\n speed: 25,\r\n colors: \"#0ea5e9,#38bdf8,#7dd3fc\",\r\n noFocus: false,\r\n },\r\n yellow: {\r\n gap: 3,\r\n speed: 20,\r\n colors: \"#ca8a04,#eab308,#facc15\",\r\n noFocus: false,\r\n },\r\n pink: {\r\n gap: 6,\r\n speed: 80,\r\n colors: \"#be123c,#e11d48,#f43f5e\",\r\n noFocus: true,\r\n },\r\n};\r\n\r\ninterface PixelCardProps {\r\n variant?: \"default\" | \"blue\" | \"yellow\" | \"pink\";\r\n gap?: number;\r\n speed?: number;\r\n colors?: string;\r\n noFocus?: boolean;\r\n className?: string;\r\n children: ReactNode;\r\n}\r\n\r\nfunction getEffectiveSpeed(value: number, reducedMotion: boolean) {\r\n const min = 0;\r\n const max = 100;\r\n const throttle = 0.001;\r\n\r\n if (value <= min || reducedMotion) {\r\n return min;\r\n } else if (value >= max) {\r\n return max * throttle;\r\n } else {\r\n return value * throttle;\r\n }\r\n}\r\n\r\nexport function PixelCard({\r\n variant = \"default\",\r\n gap,\r\n speed,\r\n colors,\r\n noFocus,\r\n className = \"\",\r\n children,\r\n}: PixelCardProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const canvasRef = useRef<HTMLCanvasElement>(null);\r\n const pixelsRef = useRef<Pixel[]>([]);\r\n const animationRef = useRef<ReturnType<typeof requestAnimationFrame> | null>(\r\n null\r\n );\r\n const timePreviousRef = useRef(\r\n typeof performance !== \"undefined\" ? performance.now() : 0\r\n );\r\n const reducedMotion = useRef(\r\n typeof window !== \"undefined\"\r\n ? window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches\r\n : false\r\n ).current;\r\n\r\n const variantCfg = VARIANTS[variant] || VARIANTS.default;\r\n const finalGap = gap ?? variantCfg.gap;\r\n const finalSpeed = speed ?? variantCfg.speed;\r\n const finalColors = colors ?? variantCfg.colors;\r\n const finalNoFocus = noFocus ?? variantCfg.noFocus;\r\n\r\n const initPixels = () => {\r\n if (!containerRef.current || !canvasRef.current) return;\r\n\r\n const rect = containerRef.current.getBoundingClientRect();\r\n const width = Math.floor(rect.width) || 300;\r\n const height = Math.floor(rect.height) || 400;\r\n const ctx = canvasRef.current.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n canvasRef.current.width = width;\r\n canvasRef.current.height = height;\r\n canvasRef.current.style.width = `${width}px`;\r\n canvasRef.current.style.height = `${height}px`;\r\n\r\n const colorsArray = finalColors.split(\",\").map((c) => c.trim());\r\n const pxs: Pixel[] = [];\r\n const gapValue = Math.max(parseInt(finalGap.toString(), 10), 3);\r\n\r\n for (let x = 0; x < width; x += gapValue) {\r\n for (let y = 0; y < height; y += gapValue) {\r\n const color = colorsArray[Math.floor(Math.random() * colorsArray.length)];\r\n const dx = x - width / 2;\r\n const dy = y - height / 2;\r\n const distance = Math.sqrt(dx * dx + dy * dy);\r\n const delay = reducedMotion ? 0 : distance;\r\n pxs.push(\r\n new Pixel(\r\n canvasRef.current!,\r\n ctx,\r\n x,\r\n y,\r\n color,\r\n getEffectiveSpeed(finalSpeed, reducedMotion),\r\n delay\r\n )\r\n );\r\n }\r\n }\r\n pixelsRef.current = pxs;\r\n };\r\n\r\n const doAnimate = (fnName: \"appear\" | \"disappear\") => {\r\n animationRef.current = requestAnimationFrame(() => doAnimate(fnName));\r\n const timeNow = performance.now();\r\n const timePassed = timeNow - timePreviousRef.current;\r\n const timeInterval = 1000 / 60;\r\n\r\n if (timePassed < timeInterval) return;\r\n timePreviousRef.current = timeNow - (timePassed % timeInterval);\r\n\r\n const ctx = canvasRef.current?.getContext(\"2d\");\r\n if (!ctx || !canvasRef.current) return;\r\n\r\n ctx.clearRect(0, 0, canvasRef.current.width, canvasRef.current.height);\r\n\r\n let allIdle = true;\r\n for (let i = 0; i < pixelsRef.current.length; i++) {\r\n const pixel = pixelsRef.current[i];\r\n pixel[fnName]();\r\n if (!pixel.isIdle) {\r\n allIdle = false;\r\n }\r\n }\r\n if (allIdle && animationRef.current) {\r\n cancelAnimationFrame(animationRef.current);\r\n }\r\n };\r\n\r\n const handleAnimation = (name: \"appear\" | \"disappear\") => {\r\n if (animationRef.current !== null) {\r\n cancelAnimationFrame(animationRef.current);\r\n }\r\n animationRef.current = requestAnimationFrame(() => doAnimate(name));\r\n };\r\n\r\n const onMouseEnter = () => handleAnimation(\"appear\");\r\n const onMouseLeave = () => handleAnimation(\"disappear\");\r\n const onFocus: React.FocusEventHandler<HTMLDivElement> = (e) => {\r\n if (e.currentTarget.contains(e.relatedTarget as Node)) return;\r\n handleAnimation(\"appear\");\r\n };\r\n const onBlur: React.FocusEventHandler<HTMLDivElement> = (e) => {\r\n if (e.currentTarget.contains(e.relatedTarget as Node)) return;\r\n handleAnimation(\"disappear\");\r\n };\r\n\r\n useEffect(() => {\r\n initPixels();\r\n const observer = new ResizeObserver(() => {\r\n initPixels();\r\n });\r\n if (containerRef.current) {\r\n observer.observe(containerRef.current);\r\n }\r\n return () => {\r\n observer.disconnect();\r\n if (animationRef.current !== null) {\r\n cancelAnimationFrame(animationRef.current);\r\n }\r\n };\r\n }, [finalGap, finalSpeed, finalColors, finalNoFocus]);\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={cn(\r\n \"relative overflow-hidden rounded-xl border border-zinc-200 dark:border-zinc-800 bg-zinc-100 dark:bg-zinc-900\",\r\n className\r\n )}\r\n onMouseEnter={onMouseEnter}\r\n onMouseLeave={onMouseLeave}\r\n onFocus={finalNoFocus ? undefined : onFocus}\r\n onBlur={finalNoFocus ? undefined : onBlur}\r\n tabIndex={finalNoFocus ? -1 : 0}\r\n >\r\n <canvas\r\n className=\"absolute inset-0 w-full h-full pointer-events-none\"\r\n ref={canvasRef}\r\n />\r\n <div className=\"relative z-10\">{children}</div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default PixelCard;\r\n","\"use client\";\r\n\r\nimport { useRef, useState, ReactNode, CSSProperties } from \"react\";\r\nimport { motion, useMotionValue, useSpring, SpringOptions } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TiltedCardProps {\r\n imageSrc: string;\r\n altText?: string;\r\n captionText?: string;\r\n containerHeight?: CSSProperties[\"height\"];\r\n containerWidth?: CSSProperties[\"width\"];\r\n imageHeight?: CSSProperties[\"height\"];\r\n imageWidth?: CSSProperties[\"width\"];\r\n scaleOnHover?: number;\r\n rotateAmplitude?: number;\r\n showMobileWarning?: boolean;\r\n showTooltip?: boolean;\r\n overlayContent?: ReactNode;\r\n displayOverlayContent?: boolean;\r\n className?: string;\r\n}\r\n\r\nconst springValues: SpringOptions = {\r\n damping: 30,\r\n stiffness: 100,\r\n mass: 2,\r\n};\r\n\r\nexport function TiltedCard({\r\n imageSrc,\r\n altText = \"Tilted card image\",\r\n captionText = \"\",\r\n containerHeight = \"300px\",\r\n containerWidth = \"100%\",\r\n imageHeight = \"300px\",\r\n imageWidth = \"300px\",\r\n scaleOnHover = 1.1,\r\n rotateAmplitude = 14,\r\n showMobileWarning = false,\r\n showTooltip = true,\r\n overlayContent = null,\r\n displayOverlayContent = false,\r\n className,\r\n}: TiltedCardProps) {\r\n const ref = useRef<HTMLElement>(null);\r\n\r\n const x = useMotionValue(0);\r\n const y = useMotionValue(0);\r\n const rotateX = useSpring(useMotionValue(0), springValues);\r\n const rotateY = useSpring(useMotionValue(0), springValues);\r\n const scale = useSpring(1, springValues);\r\n const opacity = useSpring(0);\r\n const rotateFigcaption = useSpring(0, {\r\n stiffness: 350,\r\n damping: 30,\r\n mass: 1,\r\n });\r\n\r\n const [lastY, setLastY] = useState<number>(0);\r\n\r\n function handleMouse(e: React.MouseEvent<HTMLElement>) {\r\n if (!ref.current) return;\r\n\r\n const rect = ref.current.getBoundingClientRect();\r\n const offsetX = e.clientX - rect.left - rect.width / 2;\r\n const offsetY = e.clientY - rect.top - rect.height / 2;\r\n\r\n const rotationX = (offsetY / (rect.height / 2)) * -rotateAmplitude;\r\n const rotationY = (offsetX / (rect.width / 2)) * rotateAmplitude;\r\n\r\n rotateX.set(rotationX);\r\n rotateY.set(rotationY);\r\n\r\n x.set(e.clientX - rect.left);\r\n y.set(e.clientY - rect.top);\r\n\r\n const velocityY = offsetY - lastY;\r\n rotateFigcaption.set(-velocityY * 0.6);\r\n setLastY(offsetY);\r\n }\r\n\r\n function handleMouseEnter() {\r\n scale.set(scaleOnHover);\r\n opacity.set(1);\r\n }\r\n\r\n function handleMouseLeave() {\r\n opacity.set(0);\r\n scale.set(1);\r\n rotateX.set(0);\r\n rotateY.set(0);\r\n rotateFigcaption.set(0);\r\n }\r\n\r\n return (\r\n <figure\r\n ref={ref}\r\n className={cn(\r\n \"relative flex items-center justify-center [perspective:800px]\",\r\n className\r\n )}\r\n style={{\r\n height: containerHeight,\r\n width: containerWidth,\r\n }}\r\n onMouseMove={handleMouse}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n >\r\n {showMobileWarning && (\r\n <div className=\"absolute top-2 left-2 text-xs text-muted-foreground md:hidden\">\r\n Best viewed on desktop\r\n </div>\r\n )}\r\n\r\n <motion.div\r\n className=\"relative [transform-style:preserve-3d]\"\r\n style={{\r\n width: imageWidth,\r\n height: imageHeight,\r\n rotateX,\r\n rotateY,\r\n scale,\r\n }}\r\n >\r\n <motion.img\r\n src={imageSrc}\r\n alt={altText}\r\n className=\"absolute inset-0 w-full h-full object-cover rounded-lg\"\r\n style={{\r\n width: imageWidth,\r\n height: imageHeight,\r\n }}\r\n />\r\n\r\n {displayOverlayContent && overlayContent && (\r\n <motion.div className=\"absolute inset-0 flex items-center justify-center bg-black/50 rounded-lg\">\r\n {overlayContent}\r\n </motion.div>\r\n )}\r\n </motion.div>\r\n\r\n {showTooltip && captionText && (\r\n <motion.figcaption\r\n className=\"pointer-events-none absolute px-3 py-1.5 text-sm bg-white dark:bg-zinc-900 rounded-full shadow-lg whitespace-nowrap\"\r\n style={{\r\n x,\r\n y,\r\n opacity,\r\n rotate: rotateFigcaption,\r\n }}\r\n >\r\n {captionText}\r\n </motion.figcaption>\r\n )}\r\n </figure>\r\n );\r\n}\r\n\r\nexport default TiltedCard;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, ReactNode } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface InfiniteScrollProps {\r\n children: ReactNode;\r\n speed?: number;\r\n direction?: \"left\" | \"right\";\r\n pauseOnHover?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function InfiniteScroll({\r\n children,\r\n speed = 30,\r\n direction = \"left\",\r\n pauseOnHover = true,\r\n className,\r\n}: InfiniteScrollProps) {\r\n const scrollerRef = useRef<HTMLDivElement>(null);\r\n const scrollerInnerRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (!scrollerRef.current || !scrollerInnerRef.current) return;\r\n\r\n const scrollerContent = Array.from(scrollerInnerRef.current.children);\r\n\r\n scrollerContent.forEach((item) => {\r\n const duplicatedItem = item.cloneNode(true);\r\n if (scrollerInnerRef.current) {\r\n scrollerInnerRef.current.appendChild(duplicatedItem);\r\n }\r\n });\r\n\r\n scrollerRef.current.style.setProperty(\"--animation-duration\", `${speed}s`);\r\n scrollerRef.current.style.setProperty(\r\n \"--animation-direction\",\r\n direction === \"left\" ? \"forwards\" : \"reverse\"\r\n );\r\n }, [speed, direction]);\r\n\r\n return (\r\n <div\r\n ref={scrollerRef}\r\n className={cn(\r\n \"group relative flex overflow-hidden [mask-image:linear-gradient(to_right,transparent,white_20%,white_80%,transparent)]\",\r\n className\r\n )}\r\n >\r\n <div\r\n ref={scrollerInnerRef}\r\n className={cn(\r\n \"flex min-w-full shrink-0 gap-4 py-4 w-max flex-nowrap\",\r\n \"animate-scroll\",\r\n pauseOnHover && \"group-hover:[animation-play-state:paused]\"\r\n )}\r\n style={{\r\n animation: `scroll var(--animation-duration, 30s) var(--animation-direction, forwards) linear infinite`,\r\n }}\r\n >\r\n {children}\r\n </div>\r\n <style jsx>{`\r\n @keyframes scroll {\r\n from {\r\n transform: translateX(0);\r\n }\r\n to {\r\n transform: translateX(calc(-50% - 0.5rem));\r\n }\r\n }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default InfiniteScroll;\r\n","\"use client\";\r\n\r\nimport { useState, useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingState {\r\n text: string;\r\n}\r\n\r\ninterface MultiStepLoaderProps {\r\n loadingStates: LoadingState[];\r\n loading: boolean;\r\n duration?: number;\r\n loop?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function MultiStepLoader({\r\n loadingStates,\r\n loading,\r\n duration = 2000,\r\n loop = true,\r\n className,\r\n}: MultiStepLoaderProps) {\r\n const [currentState, setCurrentState] = useState(0);\r\n\r\n useEffect(() => {\r\n if (!loading) {\r\n setCurrentState(0);\r\n return;\r\n }\r\n\r\n const interval = setInterval(() => {\r\n setCurrentState((prevState) => {\r\n if (prevState === loadingStates.length - 1) {\r\n return loop ? 0 : prevState;\r\n }\r\n return prevState + 1;\r\n });\r\n }, duration / loadingStates.length);\r\n\r\n return () => clearInterval(interval);\r\n }, [loading, loadingStates.length, duration, loop]);\r\n\r\n return (\r\n <AnimatePresence>\r\n {loading && (\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n className={cn(\r\n \"fixed inset-0 z-[100] flex items-center justify-center bg-black/80 backdrop-blur-sm\",\r\n className\r\n )}\r\n >\r\n <div className=\"bg-white dark:bg-zinc-900 rounded-lg p-8 shadow-2xl max-w-md w-full mx-4\">\r\n <div className=\"text-center\">\r\n <div className=\"mb-4\">\r\n <div className=\"inline-flex items-center justify-center w-16 h-16 bg-blue-100 dark:bg-blue-900/20 rounded-full mb-4\">\r\n <div className=\"w-8 h-8 border-4 border-blue-600 border-t-transparent rounded-full animate-spin\" />\r\n </div>\r\n </div>\r\n\r\n <AnimatePresence mode=\"wait\">\r\n <motion.p\r\n key={currentState}\r\n initial={{ opacity: 0, y: 10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: -10 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"text-lg font-medium text-zinc-900 dark:text-white\"\r\n >\r\n {loadingStates[currentState]?.text}\r\n </motion.p>\r\n </AnimatePresence>\r\n\r\n <div className=\"mt-6 flex justify-center\">\r\n <div className=\"flex space-x-1\">\r\n {loadingStates.map((_, index) => (\r\n <div\r\n key={index}\r\n className={cn(\r\n \"h-2 w-2 rounded-full transition-colors duration-200\",\r\n index === currentState\r\n ? \"bg-blue-600\"\r\n : index < currentState\r\n ? \"bg-green-500\"\r\n : \"bg-zinc-300 dark:bg-zinc-600\"\r\n )}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport default MultiStepLoader;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ASCIITextProps {\r\n text: string;\r\n enableWaves?: boolean;\r\n asciiFontSize?: number;\r\n textFontSize?: number;\r\n textColor?: string;\r\n planeBaseHeight?: number;\r\n className?: string;\r\n}\r\n\r\nconst ASCII_CHARS = ' .:-=+*#%@';\r\n\r\nexport function ASCIIText({\r\n text,\r\n enableWaves = true,\r\n asciiFontSize = 8,\r\n textFontSize = 200,\r\n textColor = \"#ffffff\",\r\n planeBaseHeight = 0.2,\r\n className,\r\n}: ASCIITextProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const [asciiArt, setAsciiArt] = useState<string>(\"\");\r\n\r\n useEffect(() => {\r\n const canvas = document.createElement(\"canvas\");\r\n const ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n // Set canvas size based on text\r\n ctx.font = `bold ${textFontSize}px monospace`;\r\n const metrics = ctx.measureText(text);\r\n const width = Math.ceil(metrics.width);\r\n const height = textFontSize * 1.2;\r\n\r\n canvas.width = width;\r\n canvas.height = height;\r\n\r\n // Draw text\r\n ctx.fillStyle = textColor;\r\n ctx.font = `bold ${textFontSize}px monospace`;\r\n ctx.textBaseline = \"middle\";\r\n ctx.fillText(text, 0, height / 2);\r\n\r\n // Get image data\r\n const imageData = ctx.getImageData(0, 0, width, height);\r\n const pixels = imageData.data;\r\n\r\n // Convert to ASCII\r\n const cols = Math.floor(width / asciiFontSize);\r\n const rows = Math.floor(height / asciiFontSize);\r\n let ascii = \"\";\r\n\r\n for (let y = 0; y < rows; y++) {\r\n for (let x = 0; x < cols; x++) {\r\n const px = x * asciiFontSize;\r\n const py = y * asciiFontSize;\r\n const idx = (py * width + px) * 4;\r\n const brightness = (pixels[idx] + pixels[idx + 1] + pixels[idx + 2]) / 3;\r\n const charIdx = Math.floor((brightness / 255) * (ASCII_CHARS.length - 1));\r\n ascii += ASCII_CHARS[charIdx];\r\n }\r\n ascii += \"\\n\";\r\n }\r\n\r\n setAsciiArt(ascii);\r\n }, [text, asciiFontSize, textFontSize, textColor]);\r\n\r\n return (\r\n <div ref={containerRef} className={cn(\"font-mono whitespace-pre\", className)}>\r\n <pre\r\n style={{\r\n fontSize: `${asciiFontSize}px`,\r\n lineHeight: 1,\r\n color: textColor,\r\n }}\r\n >\r\n {asciiArt}\r\n </pre>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ASCIIText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FallingTextProps {\r\n text: string;\r\n highlightWords?: string[];\r\n highlightClass?: string;\r\n trigger?: \"auto\" | \"hover\" | \"click\" | \"scroll\";\r\n delay?: number;\r\n staggerDelay?: number;\r\n className?: string;\r\n}\r\n\r\nexport function FallingText({\r\n text,\r\n highlightWords = [],\r\n highlightClass = \"text-primary\",\r\n trigger = \"auto\",\r\n delay = 0,\r\n staggerDelay = 0.05,\r\n className,\r\n}: FallingTextProps) {\r\n const [isVisible, setIsVisible] = useState(trigger === \"auto\");\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const words = text.split(\" \");\r\n\r\n useEffect(() => {\r\n if (trigger === \"scroll\" && containerRef.current) {\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setIsVisible(true);\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n observer.observe(containerRef.current);\r\n return () => observer.disconnect();\r\n }\r\n }, [trigger]);\r\n\r\n const handleInteraction = () => {\r\n if (trigger === \"hover\" || trigger === \"click\") {\r\n setIsVisible(true);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={cn(\"flex flex-wrap gap-2\", className)}\r\n onMouseEnter={trigger === \"hover\" ? handleInteraction : undefined}\r\n onClick={trigger === \"click\" ? handleInteraction : undefined}\r\n >\r\n <AnimatePresence>\r\n {words.map((word, index) => {\r\n const isHighlighted = highlightWords.includes(word.toLowerCase());\r\n return (\r\n <motion.span\r\n key={`${word}-${index}`}\r\n initial={{ opacity: 0, y: -50, rotateX: -90 }}\r\n animate={\r\n isVisible\r\n ? { opacity: 1, y: 0, rotateX: 0 }\r\n : { opacity: 0, y: -50, rotateX: -90 }\r\n }\r\n transition={{\r\n duration: 0.5,\r\n delay: delay + index * staggerDelay,\r\n ease: [0.25, 0.46, 0.45, 0.94],\r\n }}\r\n className={cn(isHighlighted && highlightClass)}\r\n >\r\n {word}\r\n </motion.span>\r\n );\r\n })}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default FallingText;\r\n"]}
1
+ {"version":3,"sources":["../src/utils/cn.ts","../src/shine-button/index.tsx","../src/ripple-button/index.tsx","../src/magnetic-button/index.tsx","../src/bounce-button/index.tsx","../src/glow-button/index.tsx","../src/pulse-button/index.tsx","../src/neon-button/index.tsx","../src/liquid-button/index.tsx","../src/slide-button/index.tsx","../src/gradient-button/index.tsx","../src/hold-button/index.tsx","../src/threed-button/index.tsx","../src/copy-button/index.tsx","../src/particle-button/index.tsx","../src/attract-button/index.tsx","../src/command-button/index.tsx","../src/gradient-text/index.tsx","../src/shimmer-text/index.tsx","../src/glitch-text/index.tsx","../src/bounce-text/index.tsx","../src/blur-text/index.tsx","../src/typewriter/index.tsx","../src/wave-text/index.tsx","../src/flip-text/index.tsx","../src/shiny-text/index.tsx","../src/fuzzy-text/index.tsx","../src/matrix-text/index.tsx","../src/liquid-text/index.tsx","../src/swoosh-text/index.tsx","../src/scrambled-text/index.tsx","../src/magnetic-text/index.tsx","../src/dynamic-text/index.tsx","../src/rotating-text/index.tsx","../src/stagger-text/index.tsx","../src/rainbow-text/index.tsx","../src/count-up/index.tsx","../src/reveal-text/index.tsx","../src/split-text/index.tsx","../src/morph-text/index.tsx","../src/perspective-text/index.tsx","../src/elastic-text/index.tsx","../src/circular-text/index.tsx","../src/glowing-text/index.tsx","../src/sliced-text/index.tsx","../src/decrypted-text/index.tsx","../src/true-focus/index.tsx","../src/glass-card/index.tsx","../src/hover-card/index.tsx","../src/card-flip/index.tsx","../src/card/index.tsx","../src/loading-dots/index.tsx","../src/loading-spinner/index.tsx","../src/loading-bar/index.tsx","../src/loading-pulse/index.tsx","../src/loading-bounce/index.tsx","../src/loading-flower/index.tsx","../src/loading-geometric/index.tsx","../src/loading-morph/index.tsx","../src/loading-rings/index.tsx","../src/loading-text/index.tsx","../src/loading-words/index.tsx","../src/animated-list/index.tsx","../src/skeleton/index.tsx","../src/tooltip/index.tsx","../src/tooltip-minimal/index.tsx","../src/tooltip-animated/index.tsx","../src/badge/index.tsx","../src/avatar/index.tsx","../src/progress/index.tsx","../src/switch/index.tsx","../src/accordion/index.tsx","../src/tabs/index.tsx","../src/modal/index.tsx","../src/drawer/index.tsx","../src/alert/index.tsx","../src/terminal/index.tsx","../src/stepper/index.tsx","../src/file-tree/index.tsx","../src/counter/index.tsx","../src/toolbar/index.tsx","../src/dock/index.tsx","../src/input/index.tsx","../src/textarea/index.tsx","../src/checkbox/index.tsx","../src/radio/index.tsx","../src/select/index.tsx","../src/input-otp/index.tsx","../src/hamburger-basic/index.tsx","../src/hamburger-spin/index.tsx","../src/hamburger-morph/index.tsx","../src/hamburger-spring/index.tsx","../src/hamburger-wave/index.tsx","../src/hamburger-stagger/index.tsx","../src/hamburger-3d/index.tsx","../src/hamburger-elastic/index.tsx","../src/click-spark/index.tsx","../src/smooth-cursor/index.tsx","../src/float-effect/index.tsx","../src/glow-effect/index.tsx","../src/blur-fade/index.tsx","../src/pixel-card/index.tsx","../src/tilted-card/index.tsx","../src/infinite-scroll/index.tsx","../src/multi-step-loader/index.tsx","../src/ascii-text/index.tsx","../src/falling-text/index.tsx","../src/animated-circular-progress/index.tsx","../src/loading-invert/index.tsx","../src/loader/index.tsx","../src/theme-toggler/index.tsx","../src/shimmer-effect/index.tsx","../src/scroll-velocity/index.tsx","../src/text-cursor/index.tsx","../src/social-button/index.tsx","../src/v0-button/index.tsx","../src/contribution-graph/index.tsx","../src/elastic-slider/index.tsx","../src/flowing-menu/index.tsx","../src/gooey-nav/index.tsx","../src/pill-nav/index.tsx","../src/smooth-drawer/index.tsx","../src/smooth-tab/index.tsx","../src/decay-card/index.tsx","../src/liquid-glass-card/index.tsx","../src/target-cursor/index.tsx","../src/crosshair/index.tsx","../src/scroll-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","ShineButton","children","className","props","jsxs","jsx","RippleButton","onClick","ripples","setRipples","useState","handleClick","e","rect","x","y","newRipple","prev","r","AnimatePresence","ripple","motion","MagneticButton","strength","radius","ref","useRef","isHovered","setIsHovered","useMotionValue","springConfig","xSpring","useSpring","ySpring","centerX","centerY","distanceX","distanceY","distance","factor","BounceButton","isBouncing","setIsBouncing","GlowButton","glowColor","isGlowing","setIsGlowing","PulseButton","pulseColor","colorVariants","sizeVariants","NeonButton","color","size","colors","LiquidButton","variant","isFilling","setIsFilling","sizeClasses","variantClasses","Fragment","_","i","SlideButton","slideText","gradients","sizes","GradientButton","HoldButton","holdDuration","onHoldComplete","progress","setProgress","isHolding","setIsHolding","intervalRef","variants","progressColors","startHold","startTime","elapsed","newProgress","stopHold","ThreeDButton","CopyButton","text","value","onCopy","copied","setCopied","error","SuccessParticles","buttonRef","ParticleButton","onSuccess","successDuration","showParticles","setShowParticles","AttractButton","particleCount","isAttracting","setIsAttracting","particles","setParticles","particlesControl","useAnimation","useEffect","newParticles","handleInteractionStart","useCallback","handleInteractionEnd","index","CommandButton","shortcut","GradientText","animationSpeed","ShimmerText","GlitchText","glitchIntensity","isStatic","selectedScheme","settings","sizeMap","glitchAnimation","BounceText","delay","duration","letters","letter","BlurText","animateBy","direction","elements","inView","setInView","observer","entry","fromAnimation","useMemo","toAnimation","segment","Typewriter","speed","cursor","loop","displayText","setDisplayText","isTyping","setIsTyping","timeout","isDeleting","type","WaveText","amplitude","frequency","FlipText","ShinyText","disabled","FuzzyText","fontSize","fontWeight","fontFamily","enableHover","baseIntensity","hoverIntensity","canvasRef","animationFrameId","isCancelled","canvas","ctx","computedFontFamily","fontSizeStr","numericFontSize","temp","React","offscreen","offCtx","metrics","actualLeft","actualRight","actualAscent","actualDescent","textBoundingWidth","tightHeight","extraWidthBuffer","offscreenWidth","xOffset","horizontalMargin","verticalMargin","interactiveLeft","interactiveTop","interactiveRight","interactiveBottom","isHovering","fuzzRange","run","intensity","j","dx","isInsideTextArea","handleMouseMove","handleMouseLeave","MatrixText","containerRef","container","chars","originalText","iteration","animate","char","LiquidText","words","child","word","SwooshText","ScrambledText","scrambleChars","interval","MagneticText","position","setPosition","handleMouse","clientX","clientY","height","width","left","top","middleX","middleY","reset","DynamicText","setIndex","timer","RotatingText","StaggerText","staggerDelay","RainbowText","CountUp","end","start","prefix","suffix","decimals","count","setCount","animationFrame","timestamp","easeOutQuart","currentCount","RevealText","stagger","SplitText","splitType","textAlign","element","MorphText","PerspectiveText","ElasticText","CircularText","spinDuration","onHover","controls","rotation","handleHoverStart","scale","handleHoverEnd","rotationDeg","angle","GlowingText","hoverColor","currentColor","SlicedText","containerClassName","splitSpacing","DecryptedText","maxIterations","sequential","revealDirection","useOriginalCharsOnly","characters","parentClassName","encryptedClassName","animateOn","setIsHovering","isScrambling","setIsScrambling","revealedIndices","setRevealedIndices","hasAnimated","setHasAnimated","currentIteration","getNextIndex","revealedSet","textLength","middle","offset","nextIndex","availableChars","shuffleText","currentRevealed","positions","nonSpaceChars","p","charIndex","prevRevealed","newRevealed","observerCallback","entries","currentRef","hoverProps","isRevealedOrDone","TrueFocus","sentence","manualMode","blurAmount","borderColor","animationDuration","pauseBetweenAnimations","currentIndex","setCurrentIndex","lastActiveIndex","setLastActiveIndex","wordRefs","focusRect","setFocusRect","updateFocusRect","parentRect","activeRect","isActive","el","GlassCard","HoverCard","CardFlip","frontContent","backContent","isFlipped","setIsFlipped","Card","hover","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","LoadingDots","LoadingSpinner","LoadingBar","LoadingPulse","LoadingBounce","LoadingFlower","LoadingGeometric","LoadingMorph","LoadingRings","LoadingText","LoadingWords","AnimatedList","childrenArray","prevIndex","itemsToShow","item","idx","AnimatedListItem","Skeleton","Tooltip","content","isVisible","setIsVisible","animations","TooltipMinimal","timeoutRef","showTooltip","hideTooltip","getPositionClasses","TooltipAnimated","animation","getAnimationProps","offsets","Badge","Avatar","src","alt","fallback","initials","n","Progress","max","showLabel","percentage","Switch","checked","onChange","sizeConfig","Accordion","items","allowMultiple","openItems","setOpenItems","toggleItem","Tabs","tabs","defaultIndex","activeIndex","setActiveIndex","tab","Modal","isOpen","onClose","title","handleEscape","Drawer","positionClasses","Alert","close","handleClose","AlertIcon","AlertTitle","AlertToolbar","Terminal","TypingAnimation","displayedText","setDisplayedText","isComplete","setIsComplete","AnimatedSpan","Stepper","initialStep","onStepChange","onFinalStepCompleted","backButtonText","nextButtonText","disableStepIndicators","rest","currentStep","setCurrentStep","setDirection","stepsArray","Children","totalSteps","isCompleted","isLastStep","updateStep","newStep","handleBack","handleNext","handleComplete","stepNumber","isNotLastStep","StepIndicator","clicked","StepConnector","StepContentWrapper","parentHeight","setParentHeight","SlideTransition","h","onHeightReady","useLayoutEffect","stepVariants","dir","Step","step","onClickStep","status","TreeContext","createContext","useTree","context","useContext","Tree","forwardRef","data","initialSelectedId","onSelectChange","initialExpandedItems","selectedId","setSelectedId","expandedItems","setExpandedItems","handleExpand","id","handleSelect","treeData","dataArray","findItem","found","selectedItem","Folder","isSelectable","File","Number","mv","number","useTransform","latest","placeValue","memo","Digit","place","digitStyle","valueRoundedToPlace","animatedValue","Counter","padding","places","gap","textColor","containerStyle","buttonVariants","isSelected","spanVariants","transition","Toolbar","defaultSelected","onItemClick","selected","setSelected","handleItemClick","itemId","Dock","directionClasses","DockIcon","magnification","mouseX","Input","label","icon","Textarea","Checkbox","RadioGroup","options","name","option","Select","placeholder","setIsOpen","selectedOption","opt","handleClickOutside","InputOTP","maxLength","onComplete","values","setValues","inputRefs","currentValue","handleChange","pastedValues","newValues","val","handleKeyDown","handleFocus","HamburgerBasic","handleToggle","newState","HamburgerSpin","classes","HamburgerMorph","HamburgerSpring","HamburgerWave","HamburgerStagger","Hamburger3D","HamburgerElastic","ClickSpark","sparkColor","sparkSize","sparkRadius","sparkCount","easing","extraScale","sparksRef","startTimeRef","parent","resizeTimeout","resizeCanvas","handleResize","ro","easeFunc","t","animationId","draw","spark","eased","lineLength","x1","y1","x2","y2","now","newSparks","SmoothCursor","cursorX","cursorY","cursorXSpring","cursorYSpring","moveCursor","hideCursor","FloatEffect","GlowEffect","BlurFade","blur","inViewMargin","yOffset","Pixel","min","centerOffset","VARIANTS","getEffectiveSpeed","reducedMotion","PixelCard","noFocus","pixelsRef","animationRef","timePreviousRef","variantCfg","finalGap","finalSpeed","finalColors","finalNoFocus","initPixels","colorsArray","c","pxs","gapValue","dy","doAnimate","fnName","timeNow","timePassed","timeInterval","allIdle","pixel","handleAnimation","onMouseEnter","onMouseLeave","onFocus","onBlur","springValues","TiltedCard","imageSrc","altText","captionText","containerHeight","containerWidth","imageHeight","imageWidth","scaleOnHover","rotateAmplitude","showMobileWarning","overlayContent","displayOverlayContent","rotateX","rotateY","opacity","rotateFigcaption","lastY","setLastY","offsetX","offsetY","rotationX","rotationY","velocityY","handleMouseEnter","InfiniteScroll","pauseOnHover","scrollerRef","scrollerInnerRef","duplicatedItem","MultiStepLoader","loadingStates","loading","currentState","setCurrentState","prevState","ASCII_CHARS","ASCIIText","enableWaves","asciiFontSize","textFontSize","planeBaseHeight","asciiArt","setAsciiArt","pixels","cols","rows","ascii","px","brightness","charIdx","FallingText","highlightWords","highlightClass","trigger","handleInteraction","isHighlighted","AnimatedCircularProgressBar","gaugePrimaryColor","gaugeSecondaryColor","strokeWidth","showValue","autoAnimate","setCurrentValue","circumference","motionValue","springValue","strokeDasharray","displayValue","next","LoadingInvert","Loader","subtitle","config","AnimatedThemeToggler","isDark","setIsDark","prefersDark","toggleTheme","newTheme","iconSizes","ShimmerEffect","useElementWidth","setWidth","updateWidth","ScrollVelocity","scrollContainerRef","texts","velocity","damping","stiffness","numCopies","velocityMapping","VelocityText","baseVelocity","baseX","scrollOptions","scrollY","useScroll","scrollVelocity","useVelocity","smoothVelocity","velocityFactor","copyRef","copyWidth","wrap","v","range","directionFactor","useAnimationFrame","delta","moveBy","spans","TextCursor","spacing","followMouseDirection","randomFloat","exitDuration","removalInterval","maxPoints","trail","setTrail","lastMoveTimeRef","idCounter","mouseY","newTrail","last","rawAngle","computedAngle","steps","SocialButton","href","Component","V0Button","ContributionGraph","weeks","contributions","getColor","level","weekIndex","dayIndex","ElasticSlider","defaultValue","trackClassName","thumbClassName","setValue","isDragging","setIsDragging","newValue","DEFAULT_ITEMS","FlowingMenu","hoveredIndex","setHoveredIndex","GooeyNav","activeColor","inactiveColor","backgroundColor","event","PillNav","logo","logoAlt","activeHref","baseColor","pillColor","hoveredPillTextColor","pillTextColor","onMobileMenuClick","resolvedPillTextColor","isMobileMenuOpen","setIsMobileMenuOpen","toggleMobileMenu","SmoothDrawer","description","side","DEFAULT_TABS","SmoothTab","defaultTabId","dimensions","setDimensions","buttonRefs","updateDimensions","selectedButton","containerRect","handleTabClick","tabId","DecayCard","image","displacementMapRef","cachedCursor","imgTransforms","displacementScale","lerp","a","b","map","d","ev","render","winWidth","winHeight","targetX","targetY","targetRz","bound","cursorTravelledDistance","filterId","GLASS_SHADOW","GlassFilter","LiquidGlassCard","glassSize","glassEffect","useId","TargetCursor","targetSelector","hideDefaultCursor","cursorRef","dotRef","setRotation","originalCursor","handleMouseOver","target","handleMouseOut","newRotation","cornerSize","borderWidth","corner","isTop","isLeft","Crosshair","lineHorizontalRef","lineVerticalRef","mouseRef","renderedRef","getMousePos","bounds","isOutside","onFirstMove","ScrollText","itemsRef"],"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 { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface NeonButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n color?: \"pink\" | \"cyan\" | \"green\" | \"purple\" | \"orange\";\r\n size?: \"sm\" | \"default\" | \"lg\";\r\n}\r\n\r\nconst colorVariants = {\r\n pink: {\r\n border: \"border-pink-500\",\r\n text: \"text-pink-400\",\r\n shadow: \"shadow-pink-500/50\",\r\n glow: \"rgba(236, 72, 153, 0.6)\",\r\n bg: \"hover:bg-pink-500/10\",\r\n },\r\n cyan: {\r\n border: \"border-cyan-500\",\r\n text: \"text-cyan-400\",\r\n shadow: \"shadow-cyan-500/50\",\r\n glow: \"rgba(6, 182, 212, 0.6)\",\r\n bg: \"hover:bg-cyan-500/10\",\r\n },\r\n green: {\r\n border: \"border-green-500\",\r\n text: \"text-green-400\",\r\n shadow: \"shadow-green-500/50\",\r\n glow: \"rgba(34, 197, 94, 0.6)\",\r\n bg: \"hover:bg-green-500/10\",\r\n },\r\n purple: {\r\n border: \"border-purple-500\",\r\n text: \"text-purple-400\",\r\n shadow: \"shadow-purple-500/50\",\r\n glow: \"rgba(168, 85, 247, 0.6)\",\r\n bg: \"hover:bg-purple-500/10\",\r\n },\r\n orange: {\r\n border: \"border-orange-500\",\r\n text: \"text-orange-400\",\r\n shadow: \"shadow-orange-500/50\",\r\n glow: \"rgba(249, 115, 22, 0.6)\",\r\n bg: \"hover:bg-orange-500/10\",\r\n },\r\n};\r\n\r\nconst sizeVariants = {\r\n sm: \"h-8 px-3 text-xs\",\r\n default: \"h-10 px-6 text-sm\",\r\n lg: \"h-12 px-8 text-base\",\r\n};\r\n\r\nexport function NeonButton({\r\n children,\r\n className,\r\n color = \"cyan\",\r\n size = \"default\",\r\n ...props\r\n}: NeonButtonProps) {\r\n const colors = colorVariants[color];\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative inline-flex items-center justify-center\",\r\n \"font-semibold tracking-wide uppercase\",\r\n \"border-2 rounded-lg\",\r\n \"bg-transparent\",\r\n \"transition-colors duration-200\",\r\n colors.border,\r\n colors.text,\r\n colors.bg,\r\n sizeVariants[size],\r\n className\r\n )}\r\n whileHover={{\r\n boxShadow: `0 0 20px ${colors.glow}, 0 0 40px ${colors.glow}, 0 0 60px ${colors.glow}`,\r\n }}\r\n whileTap={{ scale: 0.98 }}\r\n transition={{ duration: 0.2 }}\r\n {...props}\r\n >\r\n <motion.span\r\n className={cn(\"absolute inset-0 rounded-lg opacity-0\", colors.border)}\r\n animate={{ opacity: [0.5, 1, 0.5] }}\r\n transition={{ duration: 2, repeat: Infinity, ease: \"easeInOut\" }}\r\n style={{ boxShadow: `inset 0 0 10px ${colors.glow}` }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default NeonButton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LiquidButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"outline\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function LiquidButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n onClick,\r\n ...props\r\n}: LiquidButtonProps) {\r\n const [isFilling, setIsFilling] = useState(false);\r\n\r\n function handleClick(e: React.MouseEvent<HTMLButtonElement>) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setIsFilling(true);\r\n setTimeout(() => setIsFilling(false), 800);\r\n if (onClick) onClick(e);\r\n }\r\n\r\n const sizeClasses = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\"\r\n };\r\n\r\n const variantClasses = {\r\n primary: \"bg-zinc-900 text-white border-zinc-900 dark:bg-white dark:text-zinc-900 dark:border-white\",\r\n secondary: \"bg-zinc-100 text-zinc-900 border-zinc-200 dark:bg-zinc-800 dark:text-white dark:border-zinc-700\",\r\n outline: \"bg-transparent text-zinc-900 border-zinc-300 dark:text-white dark:border-zinc-600\"\r\n };\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-medium border-2 transition-colors\",\r\n sizeClasses[size],\r\n variantClasses[variant],\r\n className\r\n )}\r\n onClick={handleClick}\r\n {...props}\r\n >\r\n <AnimatePresence>\r\n {isFilling && (\r\n <motion.div\r\n key=\"liquid-fill\"\r\n className={cn(\r\n \"absolute inset-0 origin-bottom\",\r\n variant === \"primary\" ? \"bg-blue-500 dark:bg-blue-400\" : \"bg-zinc-900 dark:bg-white\"\r\n )}\r\n initial={{ scaleY: 0 }}\r\n animate={{ scaleY: 1 }}\r\n exit={{ scaleY: 0, transition: { duration: 0.3 } }}\r\n transition={{ duration: 0.5, ease: [0.4, 0, 0.2, 1] }}\r\n style={{ transformOrigin: \"bottom\" }}\r\n />\r\n )}\r\n </AnimatePresence>\r\n \r\n <AnimatePresence>\r\n {isFilling && (\r\n <>\r\n {[...Array(5)].map((_, i) => (\r\n <motion.div\r\n key={i}\r\n className=\"absolute w-1.5 h-1.5 bg-white/60 rounded-full\"\r\n style={{ left: `${20 + i * 15}%`, bottom: \"10%\" }}\r\n initial={{ y: 0, opacity: 0, scale: 0 }}\r\n animate={{ y: -60, opacity: [0, 1, 0], scale: [0, 1, 0.5] }}\r\n transition={{ duration: 0.6, delay: i * 0.08, ease: \"easeOut\" }}\r\n />\r\n ))}\r\n </>\r\n )}\r\n </AnimatePresence>\r\n\r\n <span className={cn(\r\n \"relative flex items-center justify-center gap-2 transition-colors duration-200 z-10\",\r\n isFilling && (variant === \"outline\" || variant === \"secondary\" ? \"text-white dark:text-zinc-900\" : \"text-white\")\r\n )}>\r\n {children}\r\n </span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default LiquidButton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SlideButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"outline\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n slideText?: string;\r\n}\r\n\r\nexport function SlideButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n slideText = \"Go!\",\r\n onClick,\r\n ...props\r\n}: SlideButtonProps) {\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n const sizeClasses = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\"\r\n };\r\n\r\n const variantClasses = {\r\n primary: \"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900\",\r\n secondary: \"bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-white\",\r\n outline: \"bg-transparent text-zinc-900 border-2 border-zinc-300 dark:text-white dark:border-zinc-600\"\r\n };\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-medium transition-all\",\r\n sizeClasses[size],\r\n variantClasses[variant],\r\n className\r\n )}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n onClick={onClick}\r\n {...props}\r\n >\r\n <motion.div\r\n className={cn(\r\n \"absolute inset-0\",\r\n variant === \"primary\" ? \"bg-blue-600 dark:bg-blue-500\" : \"bg-zinc-900 dark:bg-white\"\r\n )}\r\n initial={{ x: \"-100%\" }}\r\n animate={{ x: isHovered ? \"0%\" : \"-100%\" }}\r\n transition={{ duration: 0.3, ease: \"easeInOut\" }}\r\n />\r\n \r\n <motion.span\r\n className=\"relative flex items-center justify-center gap-2 z-10\"\r\n animate={{ x: isHovered ? 20 : 0, opacity: isHovered ? 0 : 1 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {children}\r\n </motion.span>\r\n \r\n <motion.span\r\n className={cn(\r\n \"absolute inset-0 flex items-center justify-center gap-2 z-10\",\r\n variant === \"outline\" || variant === \"secondary\" ? \"text-white dark:text-zinc-900\" : \"text-white\"\r\n )}\r\n initial={{ x: -20, opacity: 0 }}\r\n animate={{ x: isHovered ? 0 : -20, opacity: isHovered ? 1 : 0 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {slideText}\r\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M14 5l7 7m0 0l-7 7m7-7H3\" />\r\n </svg>\r\n </motion.span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default SlideButton;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GradientButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"sunset\" | \"ocean\" | \"forest\" | \"purple\" | \"fire\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst gradients = {\r\n sunset: \"from-orange-500 via-pink-500 to-purple-500\",\r\n ocean: \"from-cyan-500 via-blue-500 to-purple-500\",\r\n forest: \"from-green-500 via-emerald-500 to-teal-500\",\r\n purple: \"from-purple-500 via-violet-500 to-indigo-500\",\r\n fire: \"from-yellow-500 via-orange-500 to-red-500\",\r\n};\r\n\r\nconst sizes = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\",\r\n};\r\n\r\nexport function GradientButton({\r\n children,\r\n className,\r\n variant = \"ocean\",\r\n size = \"md\",\r\n ...props\r\n}: GradientButtonProps) {\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-semibold text-white\",\r\n \"bg-gradient-to-r\",\r\n gradients[variant],\r\n sizes[size],\r\n className\r\n )}\r\n whileHover={{ scale: 1.02 }}\r\n whileTap={{ scale: 0.98 }}\r\n {...props}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 bg-gradient-to-r from-white/0 via-white/25 to-white/0\"\r\n initial={{ x: \"-100%\" }}\r\n whileHover={{ x: \"100%\" }}\r\n transition={{ duration: 0.5 }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default GradientButton;\r\n","\"use client\";\r\n\r\nimport { useState, useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HoldButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n holdDuration?: number;\r\n onHoldComplete?: () => void;\r\n variant?: \"primary\" | \"danger\" | \"success\";\r\n}\r\n\r\nexport function HoldButton({\r\n children,\r\n className,\r\n holdDuration = 1000,\r\n onHoldComplete,\r\n variant = \"primary\",\r\n ...props\r\n}: HoldButtonProps) {\r\n const [progress, setProgress] = useState(0);\r\n const [isHolding, setIsHolding] = useState(false);\r\n const intervalRef = useRef<NodeJS.Timeout | null>(null);\r\n\r\n const variants = {\r\n primary: \"bg-zinc-900 dark:bg-white\",\r\n danger: \"bg-red-500\",\r\n success: \"bg-green-500\",\r\n };\r\n\r\n const progressColors = {\r\n primary: \"bg-blue-500\",\r\n danger: \"bg-red-700\",\r\n success: \"bg-green-700\",\r\n };\r\n\r\n const startHold = () => {\r\n setIsHolding(true);\r\n const startTime = Date.now();\r\n \r\n intervalRef.current = setInterval(() => {\r\n const elapsed = Date.now() - startTime;\r\n const newProgress = Math.min((elapsed / holdDuration) * 100, 100);\r\n setProgress(newProgress);\r\n \r\n if (newProgress >= 100) {\r\n stopHold();\r\n onHoldComplete?.();\r\n }\r\n }, 16);\r\n };\r\n\r\n const stopHold = () => {\r\n setIsHolding(false);\r\n setProgress(0);\r\n if (intervalRef.current) {\r\n clearInterval(intervalRef.current);\r\n intervalRef.current = null;\r\n }\r\n };\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg px-6 py-3 font-medium text-white dark:text-zinc-900\",\r\n variants[variant],\r\n className\r\n )}\r\n onMouseDown={startHold}\r\n onMouseUp={stopHold}\r\n onMouseLeave={stopHold}\r\n onTouchStart={startHold}\r\n onTouchEnd={stopHold}\r\n whileTap={{ scale: 0.98 }}\r\n {...props}\r\n >\r\n <motion.div\r\n className={cn(\"absolute inset-0 origin-left\", progressColors[variant])}\r\n style={{ scaleX: progress / 100 }}\r\n transition={{ duration: 0 }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default HoldButton;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ThreeDButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"danger\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst variants = {\r\n primary: {\r\n bg: \"bg-blue-500\",\r\n shadow: \"shadow-blue-700\",\r\n hover: \"hover:bg-blue-600\",\r\n },\r\n secondary: {\r\n bg: \"bg-zinc-700\",\r\n shadow: \"shadow-zinc-900\",\r\n hover: \"hover:bg-zinc-800\",\r\n },\r\n danger: {\r\n bg: \"bg-red-500\",\r\n shadow: \"shadow-red-700\",\r\n hover: \"hover:bg-red-600\",\r\n },\r\n};\r\n\r\nconst sizes = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\",\r\n};\r\n\r\nexport function ThreeDButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n ...props\r\n}: ThreeDButtonProps) {\r\n const colors = variants[variant];\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative rounded-lg font-semibold text-white\",\r\n \"shadow-[0_6px_0_0]\",\r\n colors.bg,\r\n colors.shadow,\r\n colors.hover,\r\n sizes[size],\r\n className\r\n )}\r\n whileHover={{ y: -2 }}\r\n whileTap={{ y: 4, boxShadow: \"0 2px 0 0\" }}\r\n transition={{ duration: 0.1 }}\r\n {...props}\r\n >\r\n {children}\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default ThreeDButton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CopyButtonProps {\r\n text?: string;\r\n value?: string;\r\n onCopy?: () => void;\r\n className?: string;\r\n}\r\n\r\nexport function CopyButton({ \r\n text = \"Copy\",\r\n value,\r\n onCopy,\r\n className \r\n}: CopyButtonProps) {\r\n const [copied, setCopied] = useState(false);\r\n\r\n const handleCopy = async () => {\r\n try {\r\n if (value) {\r\n await navigator.clipboard.writeText(value);\r\n }\r\n onCopy?.();\r\n setCopied(true);\r\n setTimeout(() => setCopied(false), 2000);\r\n } catch (error) {\r\n console.error(\"Failed to copy:\", error);\r\n }\r\n };\r\n\r\n return (\r\n <button\r\n onClick={handleCopy}\r\n className={cn(\r\n \"inline-flex items-center gap-2 px-4 py-2\",\r\n \"bg-transparent hover:bg-zinc-100 dark:hover:bg-zinc-800\",\r\n \"text-zinc-900 dark:text-zinc-100\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"rounded-md transition-all duration-200 font-medium text-sm\",\r\n className\r\n )}\r\n >\r\n {copied ? (\r\n <>\r\n <svg className=\"w-4 h-4 text-green-600\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\r\n </svg>\r\n Copied!\r\n </>\r\n ) : (\r\n <>\r\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\" />\r\n </svg>\r\n {text}\r\n </>\r\n )}\r\n </button>\r\n );\r\n}\r\n\r\nexport default CopyButton;\r\n","\"use client\";\r\n\r\nimport { useState, useRef } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ParticleButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n onSuccess?: () => void;\r\n successDuration?: number;\r\n}\r\n\r\nfunction SuccessParticles({ buttonRef }: { buttonRef: React.RefObject<HTMLButtonElement> }) {\r\n const rect = buttonRef.current?.getBoundingClientRect();\r\n if (!rect) return null;\r\n\r\n const centerX = rect.left + rect.width / 2;\r\n const centerY = rect.top + rect.height / 2;\r\n\r\n return (\r\n <AnimatePresence>\r\n {[...Array(6)].map((_, i) => (\r\n <motion.div\r\n key={i}\r\n className=\"fixed w-1 h-1 bg-black dark:bg-white rounded-full\"\r\n style={{ left: centerX, top: centerY }}\r\n initial={{ scale: 0, x: 0, y: 0 }}\r\n animate={{ scale: [0, 1, 0], x: [0, (i % 2 ? 1 : -1) * (Math.random() * 50 + 20)], y: [0, -Math.random() * 50 - 20] }}\r\n transition={{ duration: 0.6, delay: i * 0.1, ease: \"easeOut\" }}\r\n />\r\n ))}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport function ParticleButton({\r\n children,\r\n onClick,\r\n onSuccess,\r\n successDuration = 1000,\r\n className,\r\n ...props\r\n}: ParticleButtonProps) {\r\n const [showParticles, setShowParticles] = useState(false);\r\n const buttonRef = useRef<HTMLButtonElement>(null);\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n setShowParticles(true);\r\n onClick?.(e);\r\n onSuccess?.();\r\n setTimeout(() => setShowParticles(false), successDuration);\r\n };\r\n\r\n return (\r\n <>\r\n {showParticles && <SuccessParticles buttonRef={buttonRef} />}\r\n <button\r\n ref={buttonRef}\r\n onClick={handleClick}\r\n className={cn(\r\n \"relative px-4 py-2 rounded-md bg-primary text-primary-foreground\",\r\n showParticles && \"scale-95\",\r\n \"transition-transform duration-100\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </>\r\n );\r\n}\r\n\r\nexport default ParticleButton;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\nimport { motion, useAnimation } from \"framer-motion\";\r\nimport { useEffect, useState, useCallback } from \"react\";\r\n\r\ninterface AttractButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n particleCount?: number;\r\n attractRadius?: number;\r\n children?: React.ReactNode;\r\n}\r\n\r\ninterface Particle {\r\n id: number;\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport function AttractButton({\r\n className,\r\n particleCount = 12,\r\n children,\r\n ...props\r\n}: AttractButtonProps) {\r\n const [isAttracting, setIsAttracting] = useState(false);\r\n const [particles, setParticles] = useState<Particle[]>([]);\r\n const particlesControl = useAnimation();\r\n\r\n useEffect(() => {\r\n const newParticles = Array.from({ length: particleCount }, (_, i) => ({\r\n id: i,\r\n x: Math.random() * 360 - 180,\r\n y: Math.random() * 360 - 180,\r\n }));\r\n setParticles(newParticles);\r\n }, [particleCount]);\r\n\r\n const handleInteractionStart = useCallback(async () => {\r\n setIsAttracting(true);\r\n await particlesControl.start({ x: 0, y: 0, transition: { type: \"spring\", stiffness: 50, damping: 10 } });\r\n }, [particlesControl]);\r\n\r\n const handleInteractionEnd = useCallback(async () => {\r\n setIsAttracting(false);\r\n await particlesControl.start((i) => ({\r\n x: particles[i].x,\r\n y: particles[i].y,\r\n transition: { type: \"spring\", stiffness: 100, damping: 15 },\r\n }));\r\n }, [particlesControl, particles]);\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"min-w-40 relative touch-none px-4 py-2 rounded-md\",\r\n \"bg-violet-100 dark:bg-violet-900\",\r\n \"hover:bg-violet-200 dark:hover:bg-violet-800\",\r\n \"text-violet-600 dark:text-violet-300\",\r\n \"border border-violet-300 dark:border-violet-700\",\r\n \"transition-all duration-300\",\r\n className\r\n )}\r\n onMouseEnter={handleInteractionStart}\r\n onMouseLeave={handleInteractionEnd}\r\n onTouchStart={handleInteractionStart}\r\n onTouchEnd={handleInteractionEnd}\r\n {...props}\r\n >\r\n {particles.map((_, index) => (\r\n <motion.div\r\n key={index}\r\n custom={index}\r\n initial={{ x: particles[index].x, y: particles[index].y }}\r\n animate={particlesControl}\r\n className={cn(\"absolute w-1.5 h-1.5 rounded-full bg-violet-400 dark:bg-violet-300 transition-opacity duration-300\", isAttracting ? \"opacity-100\" : \"opacity-40\")}\r\n />\r\n ))}\r\n <span className=\"relative w-full flex items-center justify-center gap-2\">\r\n {children || (isAttracting ? \"Attracting\" : \"Hover me\")}\r\n </span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default AttractButton;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CommandButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n shortcut?: string;\r\n}\r\n\r\nexport function CommandButton({ className, children, shortcut = \"CMD + K\", ...props }: CommandButtonProps) {\r\n return (\r\n <button\r\n {...props}\r\n className={cn(\r\n \"relative p-2 rounded-lg overflow-hidden\",\r\n \"bg-gradient-to-b from-zinc-50 to-zinc-100 dark:from-zinc-800 dark:to-zinc-900\",\r\n \"border border-zinc-200 dark:border-zinc-800\",\r\n \"hover:border-zinc-300 dark:hover:border-zinc-700\",\r\n \"transition-all duration-300 ease-out group\",\r\n \"inline-flex items-center justify-center gap-2\",\r\n className\r\n )}\r\n >\r\n <svg\r\n className={cn(\r\n \"w-4 h-4 text-zinc-600 dark:text-zinc-400\",\r\n \"transition-all duration-300\",\r\n \"group-hover:scale-110 group-hover:rotate-[-4deg] group-active:scale-95\"\r\n )}\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n >\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z\" />\r\n </svg>\r\n <span className=\"text-sm text-zinc-600 dark:text-zinc-400\">{children || shortcut}</span>\r\n <span className=\"absolute inset-0 bg-gradient-to-r from-indigo-500/0 via-indigo-500/10 to-indigo-500/0 translate-x-[-100%] group-hover:translate-x-[100%] transition-transform duration-500 ease-out\" />\r\n </button>\r\n );\r\n}\r\n\r\nexport default CommandButton;\r\n","\"use client\";\r\n\r\nimport React, { ReactNode } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GradientTextProps {\r\n children: ReactNode;\r\n className?: string;\r\n colors?: string[];\r\n animationSpeed?: number;\r\n}\r\n\r\nexport function GradientText({\r\n children,\r\n className = \"\",\r\n colors = [\"#40ffaa\", \"#4079ff\", \"#40ffaa\", \"#4079ff\", \"#40ffaa\"],\r\n animationSpeed = 8,\r\n}: GradientTextProps) {\r\n return (\r\n <span\r\n className={cn(\r\n \"bg-clip-text text-transparent bg-[length:200%_auto] animate-gradient\",\r\n className\r\n )}\r\n style={{\r\n backgroundImage: `linear-gradient(to right, ${colors.join(\", \")})`,\r\n animationDuration: `${animationSpeed}s`,\r\n }}\r\n >\r\n {children}\r\n </span>\r\n );\r\n}\r\n\r\nexport default GradientText;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ShimmerTextProps {\r\n text?: string;\r\n className?: string;\r\n}\r\n\r\nexport function ShimmerText({ text = \"Text Shimmer\", className }: ShimmerTextProps) {\r\n return (\r\n <div className=\"flex items-center justify-center p-8\">\r\n <motion.div\r\n className=\"relative px-4 py-2 overflow-hidden\"\r\n initial={{ opacity: 0, y: 20 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.5 }}\r\n >\r\n <motion.h1\r\n className={cn(\r\n \"text-3xl font-bold bg-gradient-to-r from-neutral-950 via-neutral-400 to-neutral-950 dark:from-white dark:via-neutral-600 dark:to-white bg-[length:200%_100%] bg-clip-text text-transparent\",\r\n className\r\n )}\r\n animate={{\r\n backgroundPosition: [\"200% center\", \"-200% center\"],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n ease: \"linear\",\r\n repeat: Infinity,\r\n }}\r\n >\r\n {text}\r\n </motion.h1>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ShimmerText;\r\n","\"use client\";\r\n\r\nimport React, { useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlitchTextProps {\r\n text?: string;\r\n className?: string;\r\n glitchIntensity?: \"light\" | \"medium\" | \"heavy\" | \"extreme\";\r\n color?: \"rainbow\" | \"blue\" | \"purple\" | \"cyan\" | \"pink\" | \"orange\";\r\n isStatic?: boolean;\r\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\";\r\n}\r\n\r\nexport function GlitchText({\r\n text = \"Glitch Text\",\r\n className,\r\n glitchIntensity = \"medium\",\r\n color = \"orange\",\r\n isStatic = false,\r\n size = \"md\",\r\n}: GlitchTextProps) {\r\n const colorSchemes = {\r\n rainbow: { primary: \"#a855f7\", before: \"#22d3ee\", after: \"#f472b6\" },\r\n blue: { primary: \"#3b82f6\", before: \"#60a5fa\", after: \"#1d4ed8\" },\r\n purple: { primary: \"#8b5cf6\", before: \"#a78bfa\", after: \"#6d28d9\" },\r\n cyan: { primary: \"#06b6d4\", before: \"#22d3ee\", after: \"#0891b2\" },\r\n pink: { primary: \"#ec4899\", before: \"#f472b6\", after: \"#db2777\" },\r\n orange: { primary: \"#f97316\", before: \"#fb923c\", after: \"#ea580c\" },\r\n };\r\n\r\n const selectedScheme = colorSchemes[color];\r\n\r\n const intensitySettings = {\r\n light: { translateRange: 2, skewRange: 0.5 },\r\n medium: { translateRange: 3, skewRange: 1 },\r\n heavy: { translateRange: 5, skewRange: 2 },\r\n extreme: { translateRange: 8, skewRange: 3 },\r\n };\r\n\r\n const settings = intensitySettings[glitchIntensity];\r\n\r\n const sizeMap = {\r\n sm: \"text-2xl\",\r\n md: \"text-4xl\",\r\n lg: \"text-5xl\",\r\n xl: \"text-6xl\",\r\n \"2xl\": \"text-7xl\",\r\n \"3xl\": \"text-8xl\",\r\n };\r\n\r\n const glitchAnimation = {\r\n animate: {\r\n x: [0, settings.translateRange, -settings.translateRange, 0],\r\n y: [0, -settings.translateRange, settings.translateRange, 0],\r\n skewX: [0, settings.skewRange, -settings.skewRange, 0],\r\n },\r\n transition: {\r\n duration: 0.5,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n },\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative flex items-center justify-center p-8\", className)}>\r\n <motion.div\r\n className={cn(\"relative font-bold tracking-wider\", sizeMap[size])}\r\n style={{ color: selectedScheme.primary }}\r\n animate={!isStatic ? glitchAnimation.animate : undefined}\r\n transition={glitchAnimation.transition}\r\n >\r\n {text}\r\n <motion.span\r\n className=\"absolute inset-0 pointer-events-none\"\r\n style={{ color: selectedScheme.before, opacity: 0.8 }}\r\n animate={!isStatic ? {\r\n x: [-settings.translateRange, settings.translateRange, 0],\r\n y: [settings.translateRange, -settings.translateRange, 0],\r\n } : undefined}\r\n transition={{ duration: 0.5, repeat: Infinity }}\r\n >\r\n {text}\r\n </motion.span>\r\n <motion.span\r\n className=\"absolute inset-0 pointer-events-none\"\r\n style={{ color: selectedScheme.after, opacity: 0.8 }}\r\n animate={!isStatic ? {\r\n x: [settings.translateRange, -settings.translateRange, 0],\r\n y: [-settings.translateRange, settings.translateRange, 0],\r\n } : undefined}\r\n transition={{ duration: 0.5, repeat: Infinity }}\r\n >\r\n {text}\r\n </motion.span>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default GlitchText;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BounceTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n duration?: number;\r\n}\r\n\r\nexport function BounceText({\r\n text,\r\n className,\r\n delay = 0,\r\n duration = 0.4,\r\n}: BounceTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{\r\n y: [0, -20, 0],\r\n }}\r\n transition={{\r\n delay: delay + index * 0.03,\r\n duration: duration,\r\n ease: \"easeInOut\",\r\n repeat: Infinity,\r\n repeatDelay: 0.5,\r\n }}\r\n >\r\n {letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default BounceText;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useRef, useState, useMemo } from \"react\";\r\nimport { motion, Transition } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BlurTextProps {\r\n text?: string;\r\n delay?: number;\r\n className?: string;\r\n animateBy?: \"words\" | \"letters\";\r\n direction?: \"top\" | \"bottom\";\r\n}\r\n\r\nexport function BlurText({\r\n text = \"\",\r\n delay = 200,\r\n className = \"\",\r\n animateBy = \"words\",\r\n direction = \"top\",\r\n}: BlurTextProps) {\r\n const elements = animateBy === \"words\" ? text.split(\" \") : text.split(\"\");\r\n const [inView, setInView] = useState(false);\r\n const ref = useRef<HTMLParagraphElement>(null);\r\n\r\n useEffect(() => {\r\n if (!ref.current) return;\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setInView(true);\r\n observer.unobserve(ref.current as Element);\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n observer.observe(ref.current);\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n const fromAnimation = useMemo(\r\n () =>\r\n direction === \"top\"\r\n ? { filter: \"blur(10px)\", opacity: 0, y: -50 }\r\n : { filter: \"blur(10px)\", opacity: 0, y: 50 },\r\n [direction]\r\n );\r\n\r\n const toAnimation = { filter: \"blur(0px)\", opacity: 1, y: 0 };\r\n\r\n return (\r\n <p ref={ref} className={cn(\"flex flex-wrap\", className)}>\r\n {elements.map((segment, index) => (\r\n <motion.span\r\n key={index}\r\n initial={fromAnimation}\r\n animate={inView ? toAnimation : fromAnimation}\r\n transition={{\r\n duration: 0.5,\r\n delay: (index * delay) / 1000,\r\n ease: \"easeOut\",\r\n }}\r\n className=\"inline-block\"\r\n style={{ willChange: \"transform, filter, opacity\" }}\r\n >\r\n {segment === \" \" ? \"\\u00A0\" : segment}\r\n {animateBy === \"words\" && index < elements.length - 1 && \"\\u00A0\"}\r\n </motion.span>\r\n ))}\r\n </p>\r\n );\r\n}\r\n\r\nexport default BlurText;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TypewriterProps {\r\n text?: string;\r\n className?: string;\r\n speed?: number;\r\n delay?: number;\r\n cursor?: boolean;\r\n loop?: boolean;\r\n}\r\n\r\nexport function Typewriter({\r\n text = \"Hello World\",\r\n className,\r\n speed = 50,\r\n delay = 0,\r\n cursor = true,\r\n loop = false,\r\n}: TypewriterProps) {\r\n const [displayText, setDisplayText] = useState(\"\");\r\n const [isTyping, setIsTyping] = useState(false);\r\n\r\n useEffect(() => {\r\n let timeout: NodeJS.Timeout;\r\n let i = 0;\r\n let isDeleting = false;\r\n\r\n const type = () => {\r\n setIsTyping(true);\r\n\r\n if (!isDeleting) {\r\n if (i < text.length) {\r\n setDisplayText(text.slice(0, i + 1));\r\n i++;\r\n timeout = setTimeout(type, speed);\r\n } else {\r\n setIsTyping(false);\r\n if (loop) {\r\n timeout = setTimeout(() => {\r\n isDeleting = true;\r\n type();\r\n }, 2000);\r\n }\r\n }\r\n } else {\r\n if (i > 0) {\r\n setDisplayText(text.slice(0, i - 1));\r\n i--;\r\n timeout = setTimeout(type, speed / 2);\r\n } else {\r\n isDeleting = false;\r\n timeout = setTimeout(type, 500);\r\n }\r\n }\r\n };\r\n\r\n timeout = setTimeout(type, delay);\r\n\r\n return () => clearTimeout(timeout);\r\n }, [text, speed, delay, loop]);\r\n\r\n return (\r\n <span className={cn(\"inline-block font-mono\", className)}>\r\n {displayText}\r\n {cursor && (\r\n <span\r\n className={cn(\r\n \"ml-0.5 inline-block w-[2px] h-[1em] bg-current\",\r\n isTyping ? \"animate-blink\" : \"\"\r\n )}\r\n />\r\n )}\r\n </span>\r\n );\r\n}\r\n\r\nexport default Typewriter;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface WaveTextProps {\r\n text: string;\r\n className?: string;\r\n amplitude?: number;\r\n frequency?: number;\r\n}\r\n\r\nexport function WaveText({\r\n text,\r\n className,\r\n amplitude = 10,\r\n frequency = 1.5,\r\n}: WaveTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{\r\n y: [0, -amplitude, 0, amplitude, 0],\r\n }}\r\n transition={{\r\n duration: frequency,\r\n repeat: Infinity,\r\n delay: index * 0.08,\r\n ease: \"easeInOut\",\r\n }}\r\n >\r\n {letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default WaveText;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FlipTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function FlipText({ text, className, delay = 0 }: FlipTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)} style={{ perspective: \"1000px\" }}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block origin-center\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{ rotateX: [0, 360] }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n delay: delay + index * 0.08,\r\n ease: \"easeInOut\",\r\n repeatDelay: 0.8,\r\n }}\r\n >\r\n {letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default FlipText;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ShinyTextProps {\r\n text: string;\r\n disabled?: boolean;\r\n speed?: number;\r\n className?: string;\r\n}\r\n\r\nexport function ShinyText({ \r\n text, \r\n disabled = false, \r\n speed = 5, \r\n className = \"\" \r\n}: ShinyTextProps) {\r\n return (\r\n <span \r\n className={cn(\r\n \"inline-block bg-gradient-to-r from-gray-900 via-gray-100 to-gray-900 bg-clip-text text-transparent bg-[length:200%_100%]\",\r\n !disabled && \"animate-[shine_var(--shine-speed)_linear_infinite]\",\r\n className\r\n )}\r\n style={{ \r\n \"--shine-speed\": `${speed}s`,\r\n backgroundImage: \"linear-gradient(90deg, #374151 25%, #f3f4f6 50%, #374151 75%)\"\r\n } as React.CSSProperties}\r\n >\r\n {text}\r\n <style>{`\r\n @keyframes shine {\r\n 0% { background-position: -200% 0; }\r\n 100% { background-position: 200% 0; }\r\n }\r\n `}</style>\r\n </span>\r\n );\r\n}\r\n\r\nexport default ShinyText;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useRef } from \"react\";\r\n\r\ninterface FuzzyTextProps {\r\n children: React.ReactNode;\r\n fontSize?: number | string;\r\n fontWeight?: string | number;\r\n fontFamily?: string;\r\n color?: string;\r\n enableHover?: boolean;\r\n baseIntensity?: number;\r\n hoverIntensity?: number;\r\n}\r\n\r\nexport function FuzzyText({\r\n children,\r\n fontSize = \"clamp(2rem, 8vw, 8rem)\",\r\n fontWeight = 900,\r\n fontFamily = \"inherit\",\r\n color = \"#fff\",\r\n enableHover = true,\r\n baseIntensity = 0.18,\r\n hoverIntensity = 0.5\r\n}: FuzzyTextProps) {\r\n const canvasRef = useRef<HTMLCanvasElement & { cleanupFuzzyText?: () => void }>(null);\r\n\r\n useEffect(() => {\r\n let animationFrameId: number;\r\n let isCancelled = false;\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n\r\n const init = async () => {\r\n if (document.fonts?.ready) await document.fonts.ready;\r\n if (isCancelled) return;\r\n\r\n const ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n const computedFontFamily = fontFamily === \"inherit\" \r\n ? window.getComputedStyle(canvas).fontFamily || \"sans-serif\" \r\n : fontFamily;\r\n\r\n const fontSizeStr = typeof fontSize === \"number\" ? `${fontSize}px` : fontSize;\r\n let numericFontSize: number;\r\n if (typeof fontSize === \"number\") {\r\n numericFontSize = fontSize;\r\n } else {\r\n const temp = document.createElement(\"span\");\r\n temp.style.fontSize = fontSize;\r\n document.body.appendChild(temp);\r\n numericFontSize = parseFloat(window.getComputedStyle(temp).fontSize);\r\n document.body.removeChild(temp);\r\n }\r\n\r\n const text = React.Children.toArray(children).join(\"\");\r\n const offscreen = document.createElement(\"canvas\");\r\n const offCtx = offscreen.getContext(\"2d\");\r\n if (!offCtx) return;\r\n\r\n offCtx.font = `${fontWeight} ${fontSizeStr} ${computedFontFamily}`;\r\n offCtx.textBaseline = \"alphabetic\";\r\n const metrics = offCtx.measureText(text);\r\n\r\n const actualLeft = metrics.actualBoundingBoxLeft ?? 0;\r\n const actualRight = metrics.actualBoundingBoxRight ?? metrics.width;\r\n const actualAscent = metrics.actualBoundingBoxAscent ?? numericFontSize;\r\n const actualDescent = metrics.actualBoundingBoxDescent ?? numericFontSize * 0.2;\r\n\r\n const textBoundingWidth = Math.ceil(actualLeft + actualRight);\r\n const tightHeight = Math.ceil(actualAscent + actualDescent);\r\n const extraWidthBuffer = 10;\r\n const offscreenWidth = textBoundingWidth + extraWidthBuffer;\r\n\r\n offscreen.width = offscreenWidth;\r\n offscreen.height = tightHeight;\r\n\r\n const xOffset = extraWidthBuffer / 2;\r\n offCtx.font = `${fontWeight} ${fontSizeStr} ${computedFontFamily}`;\r\n offCtx.textBaseline = \"alphabetic\";\r\n offCtx.fillStyle = color;\r\n offCtx.fillText(text, xOffset - actualLeft, actualAscent);\r\n\r\n const horizontalMargin = 50;\r\n const verticalMargin = 0;\r\n canvas.width = offscreenWidth + horizontalMargin * 2;\r\n canvas.height = tightHeight + verticalMargin * 2;\r\n ctx.translate(horizontalMargin, verticalMargin);\r\n\r\n const interactiveLeft = horizontalMargin + xOffset;\r\n const interactiveTop = verticalMargin;\r\n const interactiveRight = interactiveLeft + textBoundingWidth;\r\n const interactiveBottom = interactiveTop + tightHeight;\r\n\r\n let isHovering = false;\r\n const fuzzRange = 30;\r\n\r\n const run = () => {\r\n if (isCancelled) return;\r\n ctx.clearRect(-fuzzRange, -fuzzRange, offscreenWidth + 2 * fuzzRange, tightHeight + 2 * fuzzRange);\r\n const intensity = isHovering ? hoverIntensity : baseIntensity;\r\n for (let j = 0; j < tightHeight; j++) {\r\n const dx = Math.floor(intensity * (Math.random() - 0.5) * fuzzRange);\r\n ctx.drawImage(offscreen, 0, j, offscreenWidth, 1, dx, j, offscreenWidth, 1);\r\n }\r\n animationFrameId = window.requestAnimationFrame(run);\r\n };\r\n\r\n run();\r\n\r\n const isInsideTextArea = (x: number, y: number) =>\r\n x >= interactiveLeft && x <= interactiveRight && y >= interactiveTop && y <= interactiveBottom;\r\n\r\n const handleMouseMove = (e: MouseEvent) => {\r\n if (!enableHover) return;\r\n const rect = canvas.getBoundingClientRect();\r\n isHovering = isInsideTextArea(e.clientX - rect.left, e.clientY - rect.top);\r\n };\r\n\r\n const handleMouseLeave = () => { isHovering = false; };\r\n\r\n if (enableHover) {\r\n canvas.addEventListener(\"mousemove\", handleMouseMove);\r\n canvas.addEventListener(\"mouseleave\", handleMouseLeave);\r\n }\r\n\r\n canvas.cleanupFuzzyText = () => {\r\n window.cancelAnimationFrame(animationFrameId);\r\n if (enableHover) {\r\n canvas.removeEventListener(\"mousemove\", handleMouseMove);\r\n canvas.removeEventListener(\"mouseleave\", handleMouseLeave);\r\n }\r\n };\r\n };\r\n\r\n init();\r\n\r\n return () => {\r\n isCancelled = true;\r\n window.cancelAnimationFrame(animationFrameId);\r\n if (canvas?.cleanupFuzzyText) canvas.cleanupFuzzyText();\r\n };\r\n }, [children, fontSize, fontWeight, fontFamily, color, enableHover, baseIntensity, hoverIntensity]);\r\n\r\n return <canvas ref={canvasRef} className=\"max-w-full\" />;\r\n}\r\n\r\nexport default FuzzyText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MatrixTextProps {\r\n text: string;\r\n className?: string;\r\n speed?: number;\r\n color?: string;\r\n}\r\n\r\nexport function MatrixText({ \r\n text, \r\n className,\r\n speed = 50,\r\n color = \"#22c55e\"\r\n}: MatrixTextProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const intervalRef = useRef<NodeJS.Timeout | null>(null);\r\n\r\n useEffect(() => {\r\n const container = containerRef.current;\r\n if (!container) return;\r\n\r\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@#$%^&*\";\r\n const originalText = text;\r\n let iteration = 0;\r\n\r\n const animate = () => {\r\n container.innerText = originalText\r\n .split(\"\")\r\n .map((char, index) => {\r\n if (index < iteration) return originalText[index];\r\n return chars[Math.floor(Math.random() * chars.length)];\r\n })\r\n .join(\"\");\r\n\r\n if (iteration >= originalText.length) {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n return;\r\n }\r\n\r\n iteration += 1 / 3;\r\n };\r\n\r\n intervalRef.current = setInterval(animate, speed);\r\n\r\n return () => {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n };\r\n }, [text, speed]);\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={cn(\"font-mono\", className)}\r\n style={{ color }}\r\n >\r\n {text}\r\n </div>\r\n );\r\n}\r\n\r\nexport default MatrixText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LiquidTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function LiquidText({ text, className, delay = 0 }: LiquidTextProps) {\r\n const words = text.split(\" \");\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: (i = 1) => ({\r\n opacity: 1,\r\n transition: { staggerChildren: 0.12, delayChildren: delay * i },\r\n }),\r\n };\r\n\r\n const child = {\r\n visible: {\r\n opacity: 1,\r\n y: 0,\r\n filter: \"blur(0px)\",\r\n transition: {\r\n type: \"spring\",\r\n damping: 12,\r\n stiffness: 100,\r\n },\r\n },\r\n hidden: {\r\n opacity: 0,\r\n y: 20,\r\n filter: \"blur(10px)\",\r\n transition: {\r\n type: \"spring\",\r\n damping: 12,\r\n stiffness: 100,\r\n },\r\n },\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(\"flex flex-wrap\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {words.map((word, index) => (\r\n <motion.span\r\n variants={child}\r\n key={index}\r\n className=\"mr-2\"\r\n >\r\n {word}\r\n </motion.span>\r\n ))}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default LiquidText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SwooshTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function SwooshText({ text, className, delay = 0 }: SwooshTextProps) {\r\n const letters = text.split(\"\");\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: {\r\n opacity: 1,\r\n transition: { staggerChildren: 0.03, delayChildren: delay },\r\n },\r\n };\r\n\r\n const child = {\r\n hidden: {\r\n opacity: 0,\r\n x: -20,\r\n y: 10,\r\n rotate: -10,\r\n },\r\n visible: {\r\n opacity: 1,\r\n x: 0,\r\n y: 0,\r\n rotate: 0,\r\n transition: {\r\n type: \"spring\",\r\n damping: 12,\r\n stiffness: 200,\r\n },\r\n },\r\n };\r\n\r\n return (\r\n <motion.span\r\n className={cn(\"inline-flex\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={index}\r\n variants={child}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </motion.span>\r\n );\r\n}\r\n\r\nexport default SwooshText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ScrambledTextProps {\r\n text: string;\r\n className?: string;\r\n speed?: number;\r\n scrambleChars?: string;\r\n}\r\n\r\nexport function ScrambledText({\r\n text,\r\n className,\r\n speed = 50,\r\n scrambleChars = \"!<>-_\\\\/[]{}—=+*^?#________\"\r\n}: ScrambledTextProps) {\r\n const [displayText, setDisplayText] = useState(text);\r\n\r\n useEffect(() => {\r\n let iteration = 0;\r\n const interval = setInterval(() => {\r\n setDisplayText(\r\n text\r\n .split(\"\")\r\n .map((char, index) => {\r\n if (index < iteration) return text[index];\r\n return scrambleChars[Math.floor(Math.random() * scrambleChars.length)];\r\n })\r\n .join(\"\")\r\n );\r\n\r\n if (iteration >= text.length) {\r\n clearInterval(interval);\r\n }\r\n\r\n iteration += 1 / 3;\r\n }, speed);\r\n\r\n return () => clearInterval(interval);\r\n }, [text, speed, scrambleChars]);\r\n\r\n return (\r\n <span className={cn(\"font-mono\", className)}>\r\n {displayText}\r\n </span>\r\n );\r\n}\r\n\r\nexport default ScrambledText;\r\n","\"use client\";\r\n\r\nimport { useRef, useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MagneticTextProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n strength?: number;\r\n}\r\n\r\nexport function MagneticText({ children, className, strength = 0.5 }: MagneticTextProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [position, setPosition] = useState({ x: 0, y: 0 });\r\n\r\n const handleMouse = (e: React.MouseEvent<HTMLDivElement>) => {\r\n const { clientX, clientY } = e;\r\n const { height, width, left, top } = ref.current!.getBoundingClientRect();\r\n const middleX = clientX - (left + width / 2);\r\n const middleY = clientY - (top + height / 2);\r\n setPosition({ x: middleX * strength, y: middleY * strength });\r\n };\r\n\r\n const reset = () => {\r\n setPosition({ x: 0, y: 0 });\r\n };\r\n\r\n const { x, y } = position;\r\n\r\n return (\r\n <motion.div\r\n ref={ref}\r\n onMouseMove={handleMouse}\r\n onMouseLeave={reset}\r\n animate={{ x, y }}\r\n transition={{ type: \"spring\", stiffness: 150, damping: 15, mass: 0.1 }}\r\n className={cn(\"inline-block cursor-pointer\", className)}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default MagneticText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface DynamicTextProps {\r\n words: string[];\r\n className?: string;\r\n interval?: number;\r\n}\r\n\r\nexport function DynamicText({ words, className, interval = 3000 }: DynamicTextProps) {\r\n const [index, setIndex] = useState(0);\r\n\r\n useEffect(() => {\r\n const timer = setInterval(() => {\r\n setIndex((prev) => (prev + 1) % words.length);\r\n }, interval);\r\n return () => clearInterval(timer);\r\n }, [words.length, interval]);\r\n\r\n return (\r\n <div className={cn(\"relative inline-block overflow-hidden\", className)}>\r\n <AnimatePresence mode=\"wait\">\r\n <motion.span\r\n key={words[index]}\r\n initial={{ y: 20, opacity: 0 }}\r\n animate={{ y: 0, opacity: 1 }}\r\n exit={{ y: -20, opacity: 0 }}\r\n transition={{ duration: 0.3 }}\r\n className=\"inline-block\"\r\n >\r\n {words[index]}\r\n </motion.span>\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default DynamicText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RotatingTextProps {\r\n words: string[];\r\n className?: string;\r\n interval?: number;\r\n}\r\n\r\nexport function RotatingText({ words, className, interval = 2000 }: RotatingTextProps) {\r\n const [index, setIndex] = useState(0);\r\n\r\n useEffect(() => {\r\n const timer = setInterval(() => {\r\n setIndex((prev) => (prev + 1) % words.length);\r\n }, interval);\r\n return () => clearInterval(timer);\r\n }, [words.length, interval]);\r\n\r\n return (\r\n <span className={cn(\"inline-block relative\", className)}>\r\n <AnimatePresence mode=\"wait\">\r\n <motion.span\r\n key={words[index]}\r\n initial={{ rotateX: -90, opacity: 0 }}\r\n animate={{ rotateX: 0, opacity: 1 }}\r\n exit={{ rotateX: 90, opacity: 0 }}\r\n transition={{ duration: 0.4 }}\r\n className=\"inline-block\"\r\n style={{ transformStyle: \"preserve-3d\" }}\r\n >\r\n {words[index]}\r\n </motion.span>\r\n </AnimatePresence>\r\n </span>\r\n );\r\n}\r\n\r\nexport default RotatingText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface StaggerTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n staggerDelay?: number;\r\n}\r\n\r\nexport function StaggerText({ \r\n text, \r\n className, \r\n delay = 0,\r\n staggerDelay = 0.05 \r\n}: StaggerTextProps) {\r\n const letters = text.split(\"\");\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: {\r\n opacity: 1,\r\n transition: {\r\n staggerChildren: staggerDelay,\r\n delayChildren: delay,\r\n },\r\n },\r\n };\r\n\r\n const child = {\r\n hidden: { opacity: 0, y: 20 },\r\n visible: {\r\n opacity: 1,\r\n y: 0,\r\n transition: { type: \"spring\", damping: 12, stiffness: 200 },\r\n },\r\n };\r\n\r\n return (\r\n <motion.span\r\n className={cn(\"inline-flex\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={index}\r\n variants={child}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </motion.span>\r\n );\r\n}\r\n\r\nexport default StaggerText;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RainbowTextProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n speed?: number;\r\n}\r\n\r\nexport function RainbowText({ children, className, speed = 3 }: RainbowTextProps) {\r\n return (\r\n <span\r\n className={cn(\r\n \"inline-block bg-gradient-to-r from-red-500 via-yellow-500 via-green-500 via-blue-500 to-purple-500 bg-clip-text text-transparent bg-[length:200%_auto] animate-[rainbow_var(--rainbow-speed)_linear_infinite]\",\r\n className\r\n )}\r\n style={{ \"--rainbow-speed\": `${speed}s` } as React.CSSProperties}\r\n >\r\n {children}\r\n <style>{`\r\n @keyframes rainbow {\r\n 0% { background-position: 0% center; }\r\n 100% { background-position: 200% center; }\r\n }\r\n `}</style>\r\n </span>\r\n );\r\n}\r\n\r\nexport default RainbowText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CountUpProps {\r\n end: number;\r\n start?: number;\r\n duration?: number;\r\n className?: string;\r\n prefix?: string;\r\n suffix?: string;\r\n decimals?: number;\r\n}\r\n\r\nexport function CountUp({\r\n end,\r\n start = 0,\r\n duration = 2000,\r\n className,\r\n prefix = \"\",\r\n suffix = \"\",\r\n decimals = 0,\r\n}: CountUpProps) {\r\n const [count, setCount] = useState(start);\r\n\r\n useEffect(() => {\r\n let startTime: number | null = null;\r\n let animationFrame: number;\r\n\r\n const animate = (timestamp: number) => {\r\n if (!startTime) startTime = timestamp;\r\n const progress = Math.min((timestamp - startTime) / duration, 1);\r\n \r\n const easeOutQuart = 1 - Math.pow(1 - progress, 4);\r\n const currentCount = start + (end - start) * easeOutQuart;\r\n \r\n setCount(currentCount);\r\n\r\n if (progress < 1) {\r\n animationFrame = requestAnimationFrame(animate);\r\n }\r\n };\r\n\r\n animationFrame = requestAnimationFrame(animate);\r\n\r\n return () => cancelAnimationFrame(animationFrame);\r\n }, [start, end, duration]);\r\n\r\n return (\r\n <span className={cn(\"tabular-nums\", className)}>\r\n {prefix}\r\n {count.toFixed(decimals)}\r\n {suffix}\r\n </span>\r\n );\r\n}\r\n\r\nexport default CountUp;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RevealTextProps {\r\n text: string;\r\n className?: string;\r\n stagger?: number;\r\n}\r\n\r\nexport function RevealText({ text, className, stagger = 0.04 }: RevealTextProps) {\r\n const letters = Array.from(text);\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: {\r\n opacity: 1,\r\n transition: { staggerChildren: stagger, delayChildren: 0.02 },\r\n },\r\n };\r\n\r\n const child = {\r\n hidden: { opacity: 0, y: 20 },\r\n visible: {\r\n opacity: 1,\r\n y: 0,\r\n transition: { type: \"spring\", damping: 12, stiffness: 100 },\r\n },\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(\"flex overflow-hidden\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n variants={child}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default RevealText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SplitTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n duration?: number;\r\n splitType?: \"chars\" | \"words\";\r\n textAlign?: \"left\" | \"center\" | \"right\";\r\n}\r\n\r\nexport function SplitText({\r\n text,\r\n className = \"\",\r\n delay = 100,\r\n duration = 0.6,\r\n splitType = \"chars\",\r\n textAlign = \"center\",\r\n}: SplitTextProps) {\r\n const [inView, setInView] = useState(false);\r\n const ref = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (!ref.current) return;\r\n\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, rootMargin: \"-100px\" }\r\n );\r\n\r\n observer.observe(ref.current);\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n const elements = splitType === \"words\" ? text.split(\" \") : text.split(\"\");\r\n\r\n return (\r\n <div ref={ref} className={cn(\"overflow-hidden\", className)} style={{ textAlign }}>\r\n {elements.map((element, index) => (\r\n <motion.span\r\n key={index}\r\n initial={{ opacity: 0, y: 40 }}\r\n animate={inView ? { opacity: 1, y: 0 } : { opacity: 0, y: 40 }}\r\n transition={{ duration, delay: (index * delay) / 1000, ease: \"easeOut\" }}\r\n className=\"inline-block\"\r\n style={{ marginRight: splitType === \"words\" ? \"0.25em\" : \"0\" }}\r\n >\r\n {element === \" \" ? \"\\u00A0\" : element}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default SplitText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MorphTextProps {\r\n text: string;\r\n className?: string;\r\n}\r\n\r\nexport function MorphText({ text, className }: MorphTextProps) {\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 scaleY: [1, 0.5, 1.5, 0.8, 1],\r\n scaleX: [1, 1.5, 0.5, 1.2, 1],\r\n }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n delay: index * 0.08,\r\n ease: \"easeInOut\",\r\n repeatDelay: 0.3,\r\n }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default MorphText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface PerspectiveTextProps {\r\n text: string;\r\n className?: string;\r\n}\r\n\r\nexport function PerspectiveText({ text, className }: PerspectiveTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)} style={{ perspective: \"500px\" }}>\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 initial={{ rotateY: 90, opacity: 0 }}\r\n animate={{ rotateY: 0, opacity: 1 }}\r\n transition={{\r\n delay: index * 0.04,\r\n duration: 0.5,\r\n type: \"spring\",\r\n stiffness: 120,\r\n }}\r\n whileHover={{ rotateY: 180, transition: { duration: 0.3 } }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default PerspectiveText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ElasticTextProps {\r\n text: string;\r\n className?: string;\r\n}\r\n\r\nexport function ElasticText({ text, className }: ElasticTextProps) {\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 cursor-pointer\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n whileHover={{\r\n scale: [1, 1.5, 0.8, 1.2, 1],\r\n rotate: [0, 10, -10, 0],\r\n transition: { duration: 0.6, ease: \"easeInOut\" },\r\n }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ElasticText;\r\n","\"use client\";\r\n\r\nimport { useEffect } from \"react\";\r\nimport { motion, useAnimation, useMotionValue } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CircularTextProps {\r\n text: string;\r\n spinDuration?: number;\r\n onHover?: \"slowDown\" | \"speedUp\" | \"pause\" | \"goBonkers\";\r\n className?: string;\r\n}\r\n\r\nexport function CircularText({\r\n text,\r\n spinDuration = 20,\r\n onHover = \"speedUp\",\r\n className = \"\",\r\n}: CircularTextProps) {\r\n const letters = Array.from(text);\r\n const controls = useAnimation();\r\n const rotation = useMotionValue(0);\r\n\r\n useEffect(() => {\r\n const start = rotation.get();\r\n controls.start({\r\n rotate: start + 360,\r\n scale: 1,\r\n transition: {\r\n rotate: { from: start, to: start + 360, ease: \"linear\", duration: spinDuration, repeat: Infinity },\r\n scale: { type: \"spring\", damping: 20, stiffness: 300 },\r\n },\r\n });\r\n }, [spinDuration, controls, rotation]);\r\n\r\n const handleHoverStart = () => {\r\n const start = rotation.get();\r\n let duration = spinDuration;\r\n let scale = 1;\r\n\r\n switch (onHover) {\r\n case \"slowDown\": duration = spinDuration * 2; break;\r\n case \"speedUp\": duration = spinDuration / 4; break;\r\n case \"pause\": duration = 0; break;\r\n case \"goBonkers\": duration = spinDuration / 20; scale = 0.8; break;\r\n }\r\n\r\n if (onHover === \"pause\") {\r\n controls.stop();\r\n } else {\r\n controls.start({\r\n rotate: start + 360,\r\n scale,\r\n transition: {\r\n rotate: { from: start, to: start + 360, ease: \"linear\", duration, repeat: Infinity },\r\n scale: { type: \"spring\", damping: 20, stiffness: 300 },\r\n },\r\n });\r\n }\r\n };\r\n\r\n const handleHoverEnd = () => {\r\n const start = rotation.get();\r\n controls.start({\r\n rotate: start + 360,\r\n scale: 1,\r\n transition: {\r\n rotate: { from: start, to: start + 360, ease: \"linear\", duration: spinDuration, repeat: Infinity },\r\n scale: { type: \"spring\", damping: 20, stiffness: 300 },\r\n },\r\n });\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(\"relative w-32 h-32 cursor-pointer\", className)}\r\n style={{ rotate: rotation }}\r\n initial={{ rotate: 0 }}\r\n animate={controls}\r\n onMouseEnter={handleHoverStart}\r\n onMouseLeave={handleHoverEnd}\r\n >\r\n {letters.map((letter, i) => {\r\n const rotationDeg = (360 / letters.length) * i;\r\n const radius = 60;\r\n const angle = (rotationDeg * Math.PI) / 180;\r\n const x = Math.cos(angle) * radius;\r\n const y = Math.sin(angle) * radius;\r\n\r\n return (\r\n <span\r\n key={i}\r\n className=\"absolute text-lg font-bold\"\r\n style={{\r\n transform: `translate(-50%, -50%) translate(${x}px, ${y}px) rotate(${rotationDeg + 90}deg)`,\r\n left: \"50%\",\r\n top: \"50%\",\r\n }}\r\n >\r\n {letter}\r\n </span>\r\n );\r\n })}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default CircularText;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlowingTextProps {\r\n text: string;\r\n className?: string;\r\n glowColor?: string;\r\n hoverColor?: string;\r\n}\r\n\r\nexport function GlowingText({\r\n text,\r\n className,\r\n glowColor = \"#3b82f6\",\r\n hoverColor = \"#ec4899\",\r\n}: GlowingTextProps) {\r\n const [isHovered, setIsHovered] = useState(false);\r\n const currentColor = isHovered ? hoverColor : glowColor;\r\n\r\n return (\r\n <motion.div\r\n className={cn(\"font-bold cursor-pointer select-none\", className)}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n animate={{\r\n color: currentColor,\r\n textShadow: `0 0 10px ${currentColor}, 0 0 20px ${currentColor}, 0 0 30px ${currentColor}, 0 0 50px ${currentColor}`,\r\n }}\r\n transition={{ duration: 0.4, ease: \"easeInOut\" }}\r\n >\r\n {text}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default GlowingText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SlicedTextProps {\r\n text: string;\r\n className?: string;\r\n containerClassName?: string;\r\n splitSpacing?: number;\r\n}\r\n\r\nexport function SlicedText({\r\n text = \"Sliced Text\",\r\n className = \"\",\r\n containerClassName = \"\",\r\n splitSpacing = 2,\r\n}: SlicedTextProps) {\r\n return (\r\n <motion.div\r\n className={cn(\"w-full text-center relative inline-block\", containerClassName)}\r\n whileHover=\"hover\"\r\n initial=\"default\"\r\n >\r\n <motion.div\r\n className={cn(\"absolute w-full text-4xl -ml-0.5\", className)}\r\n variants={{\r\n default: { clipPath: \"inset(0 0 50% 0)\", y: -splitSpacing / 2, opacity: 1 },\r\n hover: { clipPath: \"inset(0 0 0 0)\", y: 0, opacity: 0 },\r\n }}\r\n transition={{ duration: 0.1 }}\r\n >\r\n {text}\r\n </motion.div>\r\n <motion.div\r\n className={cn(\"absolute w-full text-4xl\", className)}\r\n variants={{\r\n default: { clipPath: \"inset(50% 0 0 0)\", y: splitSpacing / 2, opacity: 1 },\r\n hover: { clipPath: \"inset(0 0 0 0)\", y: 0, opacity: 1 },\r\n }}\r\n transition={{ duration: 0.1 }}\r\n >\r\n {text}\r\n </motion.div>\r\n <div className={cn(\"invisible text-4xl\", className)}>{text}</div>\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default SlicedText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState, useRef } from \"react\";\r\nimport { motion, HTMLMotionProps } from \"framer-motion\";\r\n\r\ninterface DecryptedTextProps extends HTMLMotionProps<\"span\"> {\r\n text: string;\r\n speed?: number;\r\n maxIterations?: number;\r\n sequential?: boolean;\r\n revealDirection?: \"start\" | \"end\" | \"center\";\r\n useOriginalCharsOnly?: boolean;\r\n characters?: string;\r\n className?: string;\r\n parentClassName?: string;\r\n encryptedClassName?: string;\r\n animateOn?: \"view\" | \"hover\" | \"both\";\r\n}\r\n\r\nexport function DecryptedText({\r\n text,\r\n speed = 50,\r\n maxIterations = 10,\r\n sequential = false,\r\n revealDirection = \"start\",\r\n useOriginalCharsOnly = false,\r\n characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#$%^&*()_+\",\r\n className = \"\",\r\n parentClassName = \"\",\r\n encryptedClassName = \"\",\r\n animateOn = \"hover\",\r\n ...props\r\n}: DecryptedTextProps) {\r\n const [displayText, setDisplayText] = useState<string>(text);\r\n const [isHovering, setIsHovering] = useState<boolean>(false);\r\n const [isScrambling, setIsScrambling] = useState<boolean>(false);\r\n const [revealedIndices, setRevealedIndices] = useState<Set<number>>(new Set());\r\n const [hasAnimated, setHasAnimated] = useState<boolean>(false);\r\n const containerRef = useRef<HTMLSpanElement>(null);\r\n\r\n useEffect(() => {\r\n let interval: NodeJS.Timeout;\r\n let currentIteration = 0;\r\n\r\n const getNextIndex = (revealedSet: Set<number>): number => {\r\n const textLength = text.length;\r\n switch (revealDirection) {\r\n case \"start\":\r\n return revealedSet.size;\r\n case \"end\":\r\n return textLength - 1 - revealedSet.size;\r\n case \"center\": {\r\n const middle = Math.floor(textLength / 2);\r\n const offset = Math.floor(revealedSet.size / 2);\r\n const nextIndex = revealedSet.size % 2 === 0 ? middle + offset : middle - offset - 1;\r\n if (nextIndex >= 0 && nextIndex < textLength && !revealedSet.has(nextIndex)) {\r\n return nextIndex;\r\n }\r\n for (let i = 0; i < textLength; i++) {\r\n if (!revealedSet.has(i)) return i;\r\n }\r\n return 0;\r\n }\r\n default:\r\n return revealedSet.size;\r\n }\r\n };\r\n\r\n const availableChars = useOriginalCharsOnly\r\n ? Array.from(new Set(text.split(\"\"))).filter((char) => char !== \" \")\r\n : characters.split(\"\");\r\n\r\n const shuffleText = (originalText: string, currentRevealed: Set<number>): string => {\r\n if (useOriginalCharsOnly) {\r\n const positions = originalText.split(\"\").map((char, i) => ({\r\n char,\r\n isSpace: char === \" \",\r\n index: i,\r\n isRevealed: currentRevealed.has(i),\r\n }));\r\n\r\n const nonSpaceChars = positions.filter((p) => !p.isSpace && !p.isRevealed).map((p) => p.char);\r\n\r\n for (let i = nonSpaceChars.length - 1; i > 0; i--) {\r\n const j = Math.floor(Math.random() * (i + 1));\r\n [nonSpaceChars[i], nonSpaceChars[j]] = [nonSpaceChars[j], nonSpaceChars[i]];\r\n }\r\n\r\n let charIndex = 0;\r\n return positions\r\n .map((p) => {\r\n if (p.isSpace) return \" \";\r\n if (p.isRevealed) return originalText[p.index];\r\n return nonSpaceChars[charIndex++];\r\n })\r\n .join(\"\");\r\n } else {\r\n return originalText\r\n .split(\"\")\r\n .map((char, i) => {\r\n if (char === \" \") return \" \";\r\n if (currentRevealed.has(i)) return originalText[i];\r\n return availableChars[Math.floor(Math.random() * availableChars.length)];\r\n })\r\n .join(\"\");\r\n }\r\n };\r\n\r\n if (isHovering) {\r\n setIsScrambling(true);\r\n interval = setInterval(() => {\r\n setRevealedIndices((prevRevealed) => {\r\n if (sequential) {\r\n if (prevRevealed.size < text.length) {\r\n const nextIndex = getNextIndex(prevRevealed);\r\n const newRevealed = new Set(prevRevealed);\r\n newRevealed.add(nextIndex);\r\n setDisplayText(shuffleText(text, newRevealed));\r\n return newRevealed;\r\n } else {\r\n clearInterval(interval);\r\n setIsScrambling(false);\r\n return prevRevealed;\r\n }\r\n } else {\r\n setDisplayText(shuffleText(text, prevRevealed));\r\n currentIteration++;\r\n if (currentIteration >= maxIterations) {\r\n clearInterval(interval);\r\n setIsScrambling(false);\r\n setDisplayText(text);\r\n }\r\n return prevRevealed;\r\n }\r\n });\r\n }, speed);\r\n } else {\r\n setDisplayText(text);\r\n setRevealedIndices(new Set());\r\n setIsScrambling(false);\r\n }\r\n\r\n return () => {\r\n if (interval) clearInterval(interval);\r\n };\r\n }, [isHovering, text, speed, maxIterations, sequential, revealDirection, characters, useOriginalCharsOnly]);\r\n\r\n useEffect(() => {\r\n if (animateOn !== \"view\" && animateOn !== \"both\") return;\r\n\r\n const observerCallback = (entries: IntersectionObserverEntry[]) => {\r\n entries.forEach((entry) => {\r\n if (entry.isIntersecting && !hasAnimated) {\r\n setIsHovering(true);\r\n setHasAnimated(true);\r\n }\r\n });\r\n };\r\n\r\n const observer = new IntersectionObserver(observerCallback, { threshold: 0.1 });\r\n const currentRef = containerRef.current;\r\n if (currentRef) {\r\n observer.observe(currentRef);\r\n }\r\n\r\n return () => {\r\n if (currentRef) {\r\n observer.unobserve(currentRef);\r\n }\r\n };\r\n }, [animateOn, hasAnimated]);\r\n\r\n const hoverProps =\r\n animateOn === \"hover\" || animateOn === \"both\"\r\n ? {\r\n onMouseEnter: () => setIsHovering(true),\r\n onMouseLeave: () => setIsHovering(false),\r\n }\r\n : {};\r\n\r\n return (\r\n <motion.span\r\n className={parentClassName}\r\n ref={containerRef}\r\n style={{ display: \"inline-block\", whiteSpace: \"pre-wrap\" }}\r\n {...hoverProps}\r\n {...props}\r\n >\r\n <span className=\"sr-only\">{displayText}</span>\r\n <span aria-hidden=\"true\">\r\n {displayText.split(\"\").map((char, index) => {\r\n const isRevealedOrDone = revealedIndices.has(index) || !isScrambling || !isHovering;\r\n return (\r\n <span key={index} className={isRevealedOrDone ? className : encryptedClassName}>\r\n {char}\r\n </span>\r\n );\r\n })}\r\n </span>\r\n </motion.span>\r\n );\r\n}\r\n\r\nexport default DecryptedText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TrueFocusProps {\r\n sentence?: string;\r\n manualMode?: boolean;\r\n blurAmount?: number;\r\n borderColor?: string;\r\n glowColor?: string;\r\n animationDuration?: number;\r\n pauseBetweenAnimations?: number;\r\n className?: string;\r\n}\r\n\r\ninterface FocusRect {\r\n x: number;\r\n y: number;\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport function TrueFocus({\r\n sentence = \"True Focus\",\r\n manualMode = false,\r\n blurAmount = 5,\r\n borderColor = \"green\",\r\n glowColor = \"rgba(0, 255, 0, 0.6)\",\r\n animationDuration = 0.5,\r\n pauseBetweenAnimations = 1,\r\n className,\r\n}: TrueFocusProps) {\r\n const words = sentence.split(\" \");\r\n const [currentIndex, setCurrentIndex] = useState<number>(0);\r\n const [lastActiveIndex, setLastActiveIndex] = useState<number | null>(null);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const wordRefs = useRef<(HTMLSpanElement | null)[]>([]);\r\n const [focusRect, setFocusRect] = useState<FocusRect>({ x: 0, y: 0, width: 0, height: 0 });\r\n\r\n useEffect(() => {\r\n if (!manualMode) {\r\n const interval = setInterval(() => {\r\n setCurrentIndex((prev) => (prev + 1) % words.length);\r\n }, (animationDuration + pauseBetweenAnimations) * 1000);\r\n return () => clearInterval(interval);\r\n }\r\n }, [manualMode, animationDuration, pauseBetweenAnimations, words.length]);\r\n\r\n useEffect(() => {\r\n const updateFocusRect = () => {\r\n if (currentIndex === null || currentIndex === -1) return;\r\n if (!wordRefs.current[currentIndex] || !containerRef.current) return;\r\n const parentRect = containerRef.current.getBoundingClientRect();\r\n const activeRect = wordRefs.current[currentIndex]!.getBoundingClientRect();\r\n setFocusRect({\r\n x: activeRect.left - parentRect.left,\r\n y: activeRect.top - parentRect.top,\r\n width: activeRect.width,\r\n height: activeRect.height,\r\n });\r\n };\r\n updateFocusRect();\r\n window.addEventListener(\"resize\", updateFocusRect);\r\n return () => window.removeEventListener(\"resize\", updateFocusRect);\r\n }, [currentIndex, words.length]);\r\n\r\n return (\r\n <div ref={containerRef} className={cn(\"relative flex flex-wrap gap-3 p-12 items-center justify-center\", className)}>\r\n {words.map((word, index) => {\r\n const isActive = index === currentIndex;\r\n return (\r\n <span\r\n key={index}\r\n ref={(el) => { wordRefs.current[index] = el; }}\r\n className=\"text-4xl font-bold relative z-10\"\r\n style={{\r\n filter: isActive ? \"blur(0px)\" : `blur(${blurAmount}px)`,\r\n transition: `all ${animationDuration}s ease`,\r\n color: isActive ? \"#000\" : \"#666\",\r\n transform: isActive ? \"scale(1.05)\" : \"scale(1)\",\r\n }}\r\n onMouseEnter={() => manualMode && (setLastActiveIndex(index), setCurrentIndex(index))}\r\n onMouseLeave={() => manualMode && setCurrentIndex(lastActiveIndex ?? 0)}\r\n >\r\n {word}\r\n </span>\r\n );\r\n })}\r\n <motion.div\r\n className=\"absolute pointer-events-none\"\r\n animate={{ x: focusRect.x, y: focusRect.y, width: focusRect.width, height: focusRect.height, opacity: currentIndex >= 0 ? 1 : 0 }}\r\n transition={{ duration: animationDuration }}\r\n style={{ border: `2px solid ${borderColor}`, boxShadow: `0 0 10px ${glowColor}`, borderRadius: 4 }}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nexport default TrueFocus;\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 { cn } from \"../utils/cn\";\r\n\r\ninterface CardProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n hover?: boolean;\r\n}\r\n\r\nexport function Card({ children, className, hover = false }: CardProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"rounded-xl p-6\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-200 dark:border-zinc-800\",\r\n hover && \"transition-all duration-200 hover:shadow-lg hover:-translate-y-1\",\r\n className\r\n )}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\ninterface CardHeaderProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardHeader({ children, className }: CardHeaderProps) {\r\n return <div className={cn(\"mb-4\", className)}>{children}</div>;\r\n}\r\n\r\ninterface CardTitleProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardTitle({ children, className }: CardTitleProps) {\r\n return <h3 className={cn(\"text-lg font-semibold\", className)}>{children}</h3>;\r\n}\r\n\r\ninterface CardDescriptionProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardDescription({ children, className }: CardDescriptionProps) {\r\n return <p className={cn(\"text-sm text-zinc-500 dark:text-zinc-400\", className)}>{children}</p>;\r\n}\r\n\r\ninterface CardContentProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardContent({ children, className }: CardContentProps) {\r\n return <div className={cn(\"\", className)}>{children}</div>;\r\n}\r\n\r\ninterface CardFooterProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardFooter({ children, className }: CardFooterProps) {\r\n return <div className={cn(\"mt-4 pt-4 border-t border-zinc-200 dark:border-zinc-800\", className)}>{children}</div>;\r\n}\r\n\r\nexport default Card;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingDotsProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function LoadingDots({ className, size = \"md\" }: LoadingDotsProps) {\r\n const sizeClasses = {\r\n sm: \"w-1.5 h-1.5\",\r\n md: \"w-2.5 h-2.5\",\r\n lg: \"w-4 h-4\",\r\n };\r\n\r\n return (\r\n <div className={cn(\"flex items-center justify-center gap-1\", className)}>\r\n {[0, 1, 2].map((i) => (\r\n <div\r\n key={i}\r\n className={cn(\r\n sizeClasses[size],\r\n \"rounded-full bg-current animate-bounce\"\r\n )}\r\n style={{ animationDelay: `${i * 0.15}s` }}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingDots;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingSpinnerProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function LoadingSpinner({ className, size = \"md\" }: LoadingSpinnerProps) {\r\n const sizeClasses = {\r\n sm: \"w-4 h-4 border-2\",\r\n md: \"w-8 h-8 border-3\",\r\n lg: \"w-12 h-12 border-4\",\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\r\n sizeClasses[size],\r\n \"rounded-full border-current border-t-transparent animate-spin\",\r\n className\r\n )}\r\n />\r\n );\r\n}\r\n\r\nexport default LoadingSpinner;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingBarProps {\r\n className?: string;\r\n color?: string;\r\n}\r\n\r\nexport function LoadingBar({ className, color = \"bg-blue-500\" }: LoadingBarProps) {\r\n return (\r\n <div className={cn(\"h-1 w-full overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800\", className)}>\r\n <motion.div\r\n className={cn(\"h-full rounded-full\", color)}\r\n initial={{ x: \"-100%\" }}\r\n animate={{ x: \"100%\" }}\r\n transition={{\r\n repeat: Infinity,\r\n duration: 1.5,\r\n ease: \"easeInOut\",\r\n }}\r\n style={{ width: \"50%\" }}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingBar;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingPulseProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n color?: string;\r\n}\r\n\r\nconst sizes = {\r\n sm: \"w-8 h-8\",\r\n md: \"w-12 h-12\",\r\n lg: \"w-16 h-16\",\r\n};\r\n\r\nexport function LoadingPulse({ className, size = \"md\", color = \"bg-blue-500\" }: LoadingPulseProps) {\r\n return (\r\n <div className={cn(\"relative\", sizes[size], className)}>\r\n <motion.div\r\n className={cn(\"absolute inset-0 rounded-full\", color)}\r\n animate={{\r\n scale: [1, 1.5, 1],\r\n opacity: [0.5, 0, 0.5],\r\n }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n <div className={cn(\"absolute inset-2 rounded-full\", color)} />\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingPulse;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingBounceProps {\r\n className?: string;\r\n color?: string;\r\n}\r\n\r\nexport function LoadingBounce({ className, color = \"bg-zinc-900 dark:bg-white\" }: LoadingBounceProps) {\r\n return (\r\n <div className={cn(\"flex gap-1\", className)}>\r\n {[0, 1, 2].map((i) => (\r\n <motion.div\r\n key={i}\r\n className={cn(\"w-3 h-3 rounded-full\", color)}\r\n animate={{ y: [0, -10, 0] }}\r\n transition={{\r\n duration: 0.6,\r\n repeat: Infinity,\r\n delay: i * 0.1,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingBounce;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingFlowerProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingFlower({ className = \"\" }: LoadingFlowerProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"relative\">\r\n <div className=\"flex items-center justify-center\">\r\n {[...Array(8)].map((_, i) => (\r\n <div\r\n key={i}\r\n className=\"absolute w-3 h-3 rounded-full bg-black dark:bg-white\"\r\n style={{\r\n transform: `rotate(${i * 45}deg) translateY(-20px)`,\r\n animation: `flower-pulse 1.5s ease-in-out infinite`,\r\n animationDelay: `${i * 0.1}s`,\r\n }}\r\n />\r\n ))}\r\n <div className=\"w-4 h-4 rounded-full bg-zinc-400\" />\r\n </div>\r\n </div>\r\n <style jsx>{`\r\n @keyframes flower-pulse {\r\n 0%, 100% { opacity: 0.3; scale: 0.8; }\r\n 50% { opacity: 1; scale: 1.2; }\r\n }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingFlower;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingGeometricProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingGeometric({ className = \"\" }: LoadingGeometricProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"flex justify-center items-center\">\r\n <div className=\"w-36 h-36 flex justify-center items-center relative\">\r\n <div className=\"w-4 h-16 absolute bg-zinc-600 dark:bg-zinc-400 animate-[move-h_1.2s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\" />\r\n <div className=\"w-4 h-16 absolute bg-zinc-800 dark:bg-zinc-200 rotate-90 animate-[move-v_1.2s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\" />\r\n <div className=\"absolute top-4 left-5 font-black text-lg text-black dark:text-white animate-[rot_0.8s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\">X</div>\r\n <div className=\"absolute bottom-0 right-0 font-black text-3xl text-black dark:text-white animate-[scale_0.8s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\">*</div>\r\n </div>\r\n </div>\r\n <style jsx>{`\r\n @keyframes move-h { 0% { top: 0; opacity: 0; } 25% { opacity: 1; } 50% { top: 30%; opacity: 1; } 75% { opacity: 1; } 100% { top: 100%; opacity: 0; } }\r\n @keyframes move-v { 0% { left: 0; opacity: 0; } 25% { opacity: 1; } 50% { left: 45%; opacity: 1; } 75% { opacity: 1; } 100% { left: 100%; opacity: 0; } }\r\n @keyframes rot { 0% { transform: rotate(0deg); } 50% { transform: rotate(180deg); } 100% { transform: rotate(360deg); } }\r\n @keyframes scale { 0% { scale: 1; } 50% { scale: 1.9; } 100% { scale: 1; } }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingGeometric;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingMorphProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingMorph({ className = \"\" }: LoadingMorphProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"w-20 h-20 rounded-full border-8 border-transparent border-t-black dark:border-t-white border-r-zinc-600 dark:border-r-zinc-400 border-b-zinc-400 dark:border-b-zinc-600 border-l-zinc-200 dark:border-l-zinc-800 animate-[morph_2s_ease-in-out_infinite,rotate-color_2s_linear_infinite]\">\r\n <style jsx>{`\r\n @keyframes rotate-color { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }\r\n @keyframes morph { 0%, 100% { border-radius: 50%; width: 80px; height: 80px; } 50% { border-radius: 10%; width: 100px; height: 100px; } }\r\n `}</style>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingMorph;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingRingsProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingRings({ className = \"\" }: LoadingRingsProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"w-16 h-16\">\r\n <div className=\"box-border w-full h-full border-[10px] border-zinc-300 dark:border-zinc-800 border-t-zinc-700 dark:border-t-zinc-200 border-b-zinc-500 rounded-full animate-[rotate_5s_linear_infinite]\">\r\n <div className=\"box-border w-full h-full border-[10px] border-zinc-300 dark:border-zinc-800 border-t-zinc-600 dark:border-t-zinc-400 border-b-black dark:border-b-white rounded-full animate-[rotate_2.5s_linear_infinite]\" />\r\n </div>\r\n <style jsx>{`\r\n @keyframes rotate { 0% { transform: scale(1) rotate(360deg); } 50% { transform: scale(0.8) rotate(-360deg); } 100% { transform: scale(1) rotate(360deg); } }\r\n `}</style>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingRings;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingTextProps {\r\n text?: string;\r\n className?: string;\r\n}\r\n\r\nexport function LoadingText({ text = \"loading\", className = \"\" }: LoadingTextProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"relative w-20 h-12\">\r\n <span className=\"absolute top-0 left-0 m-0 p-0 text-black dark:text-white text-sm tracking-wider animate-[loading-text_3.5s_ease_both_infinite]\">\r\n {text}\r\n </span>\r\n <span className=\"absolute bottom-0 left-0 block h-4 w-4 rounded-full bg-black dark:bg-white animate-[loading-bar_3.5s_ease_both_infinite]\">\r\n <span className=\"absolute inset-0 rounded-full bg-zinc-400 dark:bg-zinc-500 animate-[loading-bar-before_3.5s_ease_both_infinite]\" />\r\n </span>\r\n <style jsx>{`\r\n @keyframes loading-text { 0% { letter-spacing: 1px; transform: translateX(0px); } 40% { letter-spacing: 2px; transform: translateX(26px); } 80% { letter-spacing: 1px; transform: translateX(32px); } 90% { letter-spacing: 2px; transform: translateX(0px); } 100% { letter-spacing: 1px; transform: translateX(0px); } }\r\n @keyframes loading-bar { 0% { width: 16px; transform: translateX(0px); } 40% { width: 100%; transform: translateX(0px); } 80% { width: 16px; transform: translateX(64px); } 90% { width: 100%; transform: translateX(0px); } 100% { width: 16px; transform: translateX(0px); } }\r\n @keyframes loading-bar-before { 0% { transform: translateX(0px); width: 16px; } 40% { transform: translateX(0%); width: 80%; } 80% { width: 100%; transform: translateX(0px); } 90% { width: 80%; transform: translateX(15px); } 100% { transform: translateX(0px); width: 16px; } }\r\n `}</style>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingText;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingWordsProps {\r\n words?: string[];\r\n className?: string;\r\n}\r\n\r\nexport function LoadingWords({\r\n words = [\"buttons\", \"forms\", \"switches\", \"cards\", \"loaders\"],\r\n className = \"\",\r\n}: LoadingWordsProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"text-zinc-400 dark:text-zinc-500 font-medium text-2xl box-border h-10 px-2.5 py-2 flex items-center rounded-lg\">\r\n <span className=\"mr-2\">loading</span>\r\n <div className=\"overflow-hidden relative h-full\">\r\n <div className=\"absolute inset-0 bg-gradient-to-b from-white via-transparent to-white dark:from-zinc-950 dark:via-transparent dark:to-zinc-950 z-10\" />\r\n {words.map((word, index) => (\r\n <span\r\n key={index}\r\n className=\"block h-full pl-1.5 text-black dark:text-white animate-[spin-words_4s_infinite]\"\r\n style={{ animationDelay: `${index * 0.8}s` }}\r\n >\r\n {word}\r\n </span>\r\n ))}\r\n </div>\r\n </div>\r\n <style jsx>{`\r\n @keyframes spin-words { 10% { transform: translateY(-102%); } 25% { transform: translateY(-100%); } 35% { transform: translateY(-202%); } 50% { transform: translateY(-200%); } 60% { transform: translateY(-302%); } 75% { transform: translateY(-300%); } 85% { transform: translateY(-402%); } 100% { transform: translateY(-400%); } }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingWords;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useMemo, useState } from \"react\";\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport interface AnimatedListProps {\r\n className?: string;\r\n children: React.ReactNode;\r\n delay?: number;\r\n}\r\n\r\nexport function AnimatedList({\r\n className,\r\n children,\r\n delay = 1000,\r\n}: AnimatedListProps) {\r\n const [index, setIndex] = useState(0);\r\n const childrenArray = React.Children.toArray(children);\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setIndex((prevIndex) => (prevIndex + 1) % childrenArray.length);\r\n }, delay);\r\n return () => clearInterval(interval);\r\n }, [childrenArray.length, delay]);\r\n\r\n const itemsToShow = useMemo(\r\n () => childrenArray.slice(0, index + 1).reverse(),\r\n [index, childrenArray]\r\n );\r\n\r\n return (\r\n <div className={cn(\"flex flex-col items-center gap-4\", className)}>\r\n <AnimatePresence>\r\n {itemsToShow.map((item, idx) => (\r\n <AnimatedListItem key={idx}>\r\n {item}\r\n </AnimatedListItem>\r\n ))}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport function AnimatedListItem({ children }: { children: React.ReactNode }) {\r\n return (\r\n <motion.div\r\n initial={{ scale: 0, opacity: 0 }}\r\n animate={{ scale: 1, opacity: 1 }}\r\n exit={{ scale: 0, opacity: 0 }}\r\n transition={{ type: \"spring\", stiffness: 350, damping: 40 }}\r\n layout\r\n className=\"mx-auto w-full\"\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default AnimatedList;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SkeletonProps {\r\n className?: string;\r\n variant?: \"text\" | \"circular\" | \"rectangular\";\r\n width?: string | number;\r\n height?: string | number;\r\n}\r\n\r\nexport function Skeleton({ \r\n className, \r\n variant = \"text\",\r\n width,\r\n height \r\n}: SkeletonProps) {\r\n const variants = {\r\n text: \"h-4 rounded\",\r\n circular: \"rounded-full\",\r\n rectangular: \"rounded-lg\",\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"animate-pulse bg-zinc-200 dark:bg-zinc-800\",\r\n variants[variant],\r\n className\r\n )}\r\n style={{ width, height }}\r\n />\r\n );\r\n}\r\n\r\nexport default Skeleton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TooltipProps {\r\n children: React.ReactNode;\r\n content: string;\r\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\r\n className?: string;\r\n}\r\n\r\nexport function Tooltip({ \r\n children, \r\n content, \r\n position = \"top\",\r\n className \r\n}: TooltipProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n\r\n const positions = {\r\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\r\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\r\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\r\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\r\n };\r\n\r\n const animations = {\r\n top: { initial: { opacity: 0, y: 5 }, animate: { opacity: 1, y: 0 } },\r\n bottom: { initial: { opacity: 0, y: -5 }, animate: { opacity: 1, y: 0 } },\r\n left: { initial: { opacity: 0, x: 5 }, animate: { opacity: 1, x: 0 } },\r\n right: { initial: { opacity: 0, x: -5 }, animate: { opacity: 1, x: 0 } },\r\n };\r\n\r\n return (\r\n <div\r\n className=\"relative inline-block\"\r\n onMouseEnter={() => setIsVisible(true)}\r\n onMouseLeave={() => setIsVisible(false)}\r\n >\r\n {children}\r\n <AnimatePresence>\r\n {isVisible && (\r\n <motion.div\r\n className={cn(\r\n \"absolute z-50 px-2 py-1 text-sm text-white bg-zinc-900 dark:bg-zinc-100 dark:text-zinc-900 rounded whitespace-nowrap\",\r\n positions[position],\r\n className\r\n )}\r\n initial={animations[position].initial}\r\n animate={animations[position].animate}\r\n exit={animations[position].initial}\r\n transition={{ duration: 0.15 }}\r\n >\r\n {content}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Tooltip;\r\n","\"use client\";\r\n\r\nimport { useState, useRef } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TooltipMinimalProps {\r\n content: string;\r\n children: React.ReactNode;\r\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\r\n delay?: number;\r\n className?: string;\r\n}\r\n\r\nexport function TooltipMinimal({\r\n content,\r\n children,\r\n position = \"top\",\r\n delay = 300,\r\n className,\r\n}: TooltipMinimalProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n const timeoutRef = useRef<NodeJS.Timeout>(undefined);\r\n\r\n const showTooltip = () => {\r\n timeoutRef.current = setTimeout(() => setIsVisible(true), delay);\r\n };\r\n\r\n const hideTooltip = () => {\r\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\r\n setIsVisible(false);\r\n };\r\n\r\n const getPositionClasses = () => {\r\n const positions = {\r\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\r\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\r\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\r\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\r\n };\r\n return positions[position];\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative inline-block\", className)} onMouseEnter={showTooltip} onMouseLeave={hideTooltip}>\r\n {children}\r\n <AnimatePresence>\r\n {isVisible && (\r\n <motion.div\r\n initial={{ opacity: 0, scale: 0.95 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n exit={{ opacity: 0, scale: 0.95 }}\r\n transition={{ duration: 0.15 }}\r\n className={cn(\"absolute z-50 px-3 py-2 text-sm bg-popover border border-border rounded-lg shadow-md whitespace-nowrap\", getPositionClasses())}\r\n >\r\n {content}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default TooltipMinimal;\r\n","\"use client\";\r\n\r\nimport { useState, useRef } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TooltipAnimatedProps {\r\n content: string;\r\n children: React.ReactNode;\r\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\r\n delay?: number;\r\n animation?: \"fade\" | \"slide\" | \"bounce\" | \"scale\";\r\n className?: string;\r\n}\r\n\r\nexport function TooltipAnimated({\r\n content,\r\n children,\r\n position = \"top\",\r\n delay = 200,\r\n animation = \"slide\",\r\n className,\r\n}: TooltipAnimatedProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n const timeoutRef = useRef<NodeJS.Timeout>(undefined);\r\n\r\n const showTooltip = () => {\r\n timeoutRef.current = setTimeout(() => setIsVisible(true), delay);\r\n };\r\n\r\n const hideTooltip = () => {\r\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\r\n setIsVisible(false);\r\n };\r\n\r\n const getPositionClasses = () => {\r\n const positions = {\r\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-3\",\r\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-3\",\r\n left: \"right-full top-1/2 -translate-y-1/2 mr-3\",\r\n right: \"left-full top-1/2 -translate-y-1/2 ml-3\",\r\n };\r\n return positions[position];\r\n };\r\n\r\n const getAnimationProps = () => {\r\n const slideOffset = 10;\r\n const offsets = { top: { y: slideOffset }, bottom: { y: -slideOffset }, left: { x: slideOffset }, right: { x: -slideOffset } };\r\n const { x = 0, y = 0 } = offsets[position];\r\n\r\n const animations = {\r\n fade: { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 } },\r\n scale: { initial: { opacity: 0, scale: 0.8 }, animate: { opacity: 1, scale: 1 }, exit: { opacity: 0, scale: 0.8 } },\r\n bounce: { initial: { opacity: 0, scale: 0.3, y: position === \"top\" ? 10 : -10 }, animate: { opacity: 1, scale: 1, y: 0 }, exit: { opacity: 0, scale: 0.3, y: position === \"top\" ? 10 : -10 } },\r\n slide: { initial: { opacity: 0, x, y }, animate: { opacity: 1, x: 0, y: 0 }, exit: { opacity: 0, x, y } },\r\n };\r\n return { ...animations[animation], transition: { type: \"spring\", stiffness: 300, damping: 25 } };\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative inline-block\", className)} onMouseEnter={showTooltip} onMouseLeave={hideTooltip}>\r\n {children}\r\n <AnimatePresence>\r\n {isVisible && (\r\n <motion.div {...getAnimationProps()} className={cn(\"absolute z-50 px-4 py-2 text-sm bg-popover border border-border rounded-xl shadow-lg whitespace-nowrap backdrop-blur-sm\", getPositionClasses())}>\r\n {content}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default TooltipAnimated;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BadgeProps {\r\n children: React.ReactNode;\r\n variant?: \"default\" | \"success\" | \"warning\" | \"danger\" | \"info\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n className?: string;\r\n}\r\n\r\nconst variants = {\r\n default: \"bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-zinc-100\",\r\n success: \"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400\",\r\n warning: \"bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400\",\r\n danger: \"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400\",\r\n info: \"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400\",\r\n};\r\n\r\nconst sizes = {\r\n sm: \"px-2 py-0.5 text-xs\",\r\n md: \"px-2.5 py-1 text-sm\",\r\n lg: \"px-3 py-1.5 text-base\",\r\n};\r\n\r\nexport function Badge({ \r\n children, \r\n variant = \"default\", \r\n size = \"md\",\r\n className \r\n}: BadgeProps) {\r\n return (\r\n <span\r\n className={cn(\r\n \"inline-flex items-center font-medium rounded-full\",\r\n variants[variant],\r\n sizes[size],\r\n className\r\n )}\r\n >\r\n {children}\r\n </span>\r\n );\r\n}\r\n\r\nexport default Badge;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface AvatarProps {\r\n src?: string;\r\n alt?: string;\r\n fallback?: string;\r\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n className?: string;\r\n}\r\n\r\nconst sizes = {\r\n sm: \"w-8 h-8 text-xs\",\r\n md: \"w-10 h-10 text-sm\",\r\n lg: \"w-12 h-12 text-base\",\r\n xl: \"w-16 h-16 text-lg\",\r\n};\r\n\r\nexport function Avatar({ \r\n src, \r\n alt = \"\", \r\n fallback,\r\n size = \"md\",\r\n className \r\n}: AvatarProps) {\r\n const initials = fallback || alt.split(\" \").map(n => n[0]).join(\"\").slice(0, 2).toUpperCase();\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"relative inline-flex items-center justify-center rounded-full bg-zinc-200 dark:bg-zinc-800 overflow-hidden\",\r\n sizes[size],\r\n className\r\n )}\r\n >\r\n {src ? (\r\n <img src={src} alt={alt} className=\"w-full h-full object-cover\" />\r\n ) : (\r\n <span className=\"font-medium text-zinc-600 dark:text-zinc-400\">\r\n {initials}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Avatar;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ProgressProps {\r\n value: number;\r\n max?: number;\r\n className?: string;\r\n color?: string;\r\n showLabel?: boolean;\r\n}\r\n\r\nexport function Progress({ \r\n value, \r\n max = 100, \r\n className,\r\n color = \"bg-blue-500\",\r\n showLabel = false\r\n}: ProgressProps) {\r\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\r\n\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n <div className=\"h-2 w-full overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800\">\r\n <motion.div\r\n className={cn(\"h-full rounded-full\", color)}\r\n initial={{ width: 0 }}\r\n animate={{ width: `${percentage}%` }}\r\n transition={{ duration: 0.5, ease: \"easeOut\" }}\r\n />\r\n </div>\r\n {showLabel && (\r\n <span className=\"mt-1 text-sm text-zinc-600 dark:text-zinc-400\">\r\n {Math.round(percentage)}%\r\n </span>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Progress;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SwitchProps {\r\n checked?: boolean;\r\n onChange?: (checked: boolean) => void;\r\n disabled?: boolean;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n className?: string;\r\n}\r\n\r\nconst sizes = {\r\n sm: { track: \"w-8 h-4\", thumb: \"w-3 h-3\", translate: 16 },\r\n md: { track: \"w-11 h-6\", thumb: \"w-5 h-5\", translate: 20 },\r\n lg: { track: \"w-14 h-7\", thumb: \"w-6 h-6\", translate: 28 },\r\n};\r\n\r\nexport function Switch({ \r\n checked = false, \r\n onChange, \r\n disabled = false,\r\n size = \"md\",\r\n className \r\n}: SwitchProps) {\r\n const sizeConfig = sizes[size];\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n role=\"switch\"\r\n aria-checked={checked}\r\n disabled={disabled}\r\n onClick={() => onChange?.(!checked)}\r\n className={cn(\r\n \"relative inline-flex shrink-0 cursor-pointer rounded-full transition-colors\",\r\n checked ? \"bg-blue-500\" : \"bg-zinc-300 dark:bg-zinc-700\",\r\n disabled && \"opacity-50 cursor-not-allowed\",\r\n sizeConfig.track,\r\n className\r\n )}\r\n >\r\n <motion.span\r\n className={cn(\r\n \"pointer-events-none inline-block rounded-full bg-white shadow-lg\",\r\n sizeConfig.thumb\r\n )}\r\n animate={{ x: checked ? sizeConfig.translate : 2 }}\r\n transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\r\n style={{ marginTop: 2 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default Switch;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface AccordionItem {\r\n title: string;\r\n content: React.ReactNode;\r\n}\r\n\r\ninterface AccordionProps {\r\n items: AccordionItem[];\r\n className?: string;\r\n allowMultiple?: boolean;\r\n}\r\n\r\nexport function Accordion({ items, className, allowMultiple = false }: AccordionProps) {\r\n const [openItems, setOpenItems] = useState<number[]>([]);\r\n\r\n const toggleItem = (index: number) => {\r\n if (allowMultiple) {\r\n setOpenItems((prev) =>\r\n prev.includes(index) ? prev.filter((i) => i !== index) : [...prev, index]\r\n );\r\n } else {\r\n setOpenItems((prev) => (prev.includes(index) ? [] : [index]));\r\n }\r\n };\r\n\r\n return (\r\n <div className={cn(\"w-full space-y-2\", className)}>\r\n {items.map((item, index) => (\r\n <div\r\n key={index}\r\n className=\"border border-zinc-200 dark:border-zinc-800 rounded-lg overflow-hidden\"\r\n >\r\n <button\r\n onClick={() => toggleItem(index)}\r\n className=\"w-full px-4 py-3 flex items-center justify-between text-left bg-zinc-50 dark:bg-zinc-900 hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors\"\r\n >\r\n <span className=\"font-medium\">{item.title}</span>\r\n <motion.svg\r\n animate={{ rotate: openItems.includes(index) ? 180 : 0 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"w-5 h-5\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\r\n </motion.svg>\r\n </button>\r\n <AnimatePresence>\r\n {openItems.includes(index) && (\r\n <motion.div\r\n initial={{ height: 0, opacity: 0 }}\r\n animate={{ height: \"auto\", opacity: 1 }}\r\n exit={{ height: 0, opacity: 0 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n <div className=\"px-4 py-3 bg-white dark:bg-zinc-950\">{item.content}</div>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Accordion;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface Tab {\r\n label: string;\r\n content: React.ReactNode;\r\n}\r\n\r\ninterface TabsProps {\r\n tabs: Tab[];\r\n className?: string;\r\n defaultIndex?: number;\r\n}\r\n\r\nexport function Tabs({ tabs, className, defaultIndex = 0 }: TabsProps) {\r\n const [activeIndex, setActiveIndex] = useState(defaultIndex);\r\n\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n <div className=\"relative flex border-b border-zinc-200 dark:border-zinc-800\">\r\n {tabs.map((tab, index) => (\r\n <button\r\n key={index}\r\n onClick={() => setActiveIndex(index)}\r\n className={cn(\r\n \"px-4 py-2 text-sm font-medium transition-colors relative\",\r\n activeIndex === index\r\n ? \"text-zinc-900 dark:text-white\"\r\n : \"text-zinc-500 hover:text-zinc-700 dark:text-zinc-400 dark:hover:text-zinc-200\"\r\n )}\r\n >\r\n {tab.label}\r\n {activeIndex === index && (\r\n <motion.div\r\n layoutId=\"activeTab\"\r\n className=\"absolute bottom-0 left-0 right-0 h-0.5 bg-zinc-900 dark:bg-white\"\r\n transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\r\n />\r\n )}\r\n </button>\r\n ))}\r\n </div>\r\n <motion.div\r\n key={activeIndex}\r\n initial={{ opacity: 0, y: 10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"py-4\"\r\n >\r\n {tabs[activeIndex].content}\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Tabs;\r\n","\"use client\";\r\n\r\nimport { useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ModalProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n className?: string;\r\n title?: string;\r\n}\r\n\r\nexport function Modal({ isOpen, onClose, children, className, title }: ModalProps) {\r\n useEffect(() => {\r\n const handleEscape = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") onClose();\r\n };\r\n if (isOpen) {\r\n document.addEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"hidden\";\r\n }\r\n return () => {\r\n document.removeEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"unset\";\r\n };\r\n }, [isOpen, onClose]);\r\n\r\n return (\r\n <AnimatePresence>\r\n {isOpen && (\r\n <>\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n onClick={onClose}\r\n className=\"fixed inset-0 bg-black/50 z-50\"\r\n />\r\n <motion.div\r\n initial={{ opacity: 0, scale: 0.95, y: 20 }}\r\n animate={{ opacity: 1, scale: 1, y: 0 }}\r\n exit={{ opacity: 0, scale: 0.95, y: 20 }}\r\n transition={{ type: \"spring\", damping: 25, stiffness: 300 }}\r\n className={cn(\r\n \"fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-50\",\r\n \"w-full max-w-md p-6 rounded-xl\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"shadow-xl\",\r\n className\r\n )}\r\n >\r\n {title && (\r\n <div className=\"flex items-center justify-between mb-4\">\r\n <h2 className=\"text-lg font-semibold\">{title}</h2>\r\n <button\r\n onClick={onClose}\r\n className=\"p-1 rounded-lg hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors\"\r\n >\r\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n </div>\r\n )}\r\n {children}\r\n </motion.div>\r\n </>\r\n )}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport default Modal;\r\n","\"use client\";\r\n\r\nimport { useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface DrawerProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n className?: string;\r\n position?: \"left\" | \"right\" | \"bottom\";\r\n}\r\n\r\nexport function Drawer({ isOpen, onClose, children, className, position = \"right\" }: DrawerProps) {\r\n useEffect(() => {\r\n const handleEscape = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") onClose();\r\n };\r\n if (isOpen) {\r\n document.addEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"hidden\";\r\n }\r\n return () => {\r\n document.removeEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"unset\";\r\n };\r\n }, [isOpen, onClose]);\r\n\r\n const variants = {\r\n left: { initial: { x: \"-100%\" }, animate: { x: 0 }, exit: { x: \"-100%\" } },\r\n right: { initial: { x: \"100%\" }, animate: { x: 0 }, exit: { x: \"100%\" } },\r\n bottom: { initial: { y: \"100%\" }, animate: { y: 0 }, exit: { y: \"100%\" } },\r\n };\r\n\r\n const positionClasses = {\r\n left: \"left-0 top-0 h-full w-80\",\r\n right: \"right-0 top-0 h-full w-80\",\r\n bottom: \"bottom-0 left-0 right-0 h-auto max-h-[80vh]\",\r\n };\r\n\r\n return (\r\n <AnimatePresence>\r\n {isOpen && (\r\n <>\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n onClick={onClose}\r\n className=\"fixed inset-0 bg-black/50 z-50\"\r\n />\r\n <motion.div\r\n initial={variants[position].initial}\r\n animate={variants[position].animate}\r\n exit={variants[position].exit}\r\n transition={{ type: \"spring\", damping: 25, stiffness: 300 }}\r\n className={cn(\r\n \"fixed z-50 p-6\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"shadow-xl\",\r\n positionClasses[position],\r\n className\r\n )}\r\n >\r\n <button\r\n onClick={onClose}\r\n className=\"absolute top-4 right-4 p-1 rounded-lg hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors\"\r\n >\r\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n {children}\r\n </motion.div>\r\n </>\r\n )}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport default Drawer;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface AlertProps {\r\n className?: string;\r\n close?: boolean;\r\n children?: React.ReactNode;\r\n onClose?: () => void;\r\n}\r\n\r\ninterface AlertIconProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\ninterface AlertTitleProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\ninterface AlertToolbarProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function Alert({ className = \"\", close = false, children, onClose }: AlertProps) {\r\n const [isVisible, setIsVisible] = React.useState(true);\r\n\r\n if (!isVisible) return null;\r\n\r\n const handleClose = () => {\r\n setIsVisible(false);\r\n onClose?.();\r\n };\r\n\r\n return (\r\n <div className={cn(\"min-h-[400px] w-full flex items-center justify-center p-4\", className)}>\r\n <div className=\"flex flex-col items-center w-full lg:max-w-[75%] gap-6\">\r\n <div className=\"relative flex items-center gap-3 rounded-lg border border-zinc-300 dark:border-zinc-700 bg-transparent px-4 py-3 shadow-sm w-full max-w-md transition-all duration-200\">\r\n {children}\r\n {close && (\r\n <button\r\n onClick={handleClose}\r\n className=\"absolute top-2 right-2 text-gray-500 hover:text-gray-700 dark:text-white/60 dark:hover:text-white transition-colors\"\r\n >\r\n <svg className=\"h-4 w-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport function AlertIcon({ children, className }: AlertIconProps) {\r\n return <div className={cn(\"text-primary flex-shrink-0\", className)}>{children}</div>;\r\n}\r\n\r\nexport function AlertTitle({ children, className }: AlertTitleProps) {\r\n return <span className={cn(\"text-foreground font-medium text-sm flex-1\", className)}>{children}</span>;\r\n}\r\n\r\nexport function AlertToolbar({ children, className }: AlertToolbarProps) {\r\n return <div className={cn(\"flex items-center gap-2\", className)}>{children}</div>;\r\n}\r\n","\"use client\";\r\n\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TerminalProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n title?: string;\r\n}\r\n\r\ninterface TypingAnimationProps {\r\n children: string;\r\n className?: string;\r\n delay?: number;\r\n speed?: number;\r\n}\r\n\r\ninterface AnimatedSpanProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function Terminal({ children, className, title = \"Terminal\" }: TerminalProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"relative w-full max-w-2xl mx-auto bg-zinc-100 dark:bg-black rounded-lg overflow-hidden shadow-2xl\",\r\n \"border border-zinc-300 dark:border-gray-800\",\r\n className\r\n )}\r\n >\r\n <div className=\"flex items-center justify-between px-4 py-3 bg-zinc-200 dark:bg-gray-800 border-b border-zinc-300 dark:border-gray-700\">\r\n <div className=\"flex items-center space-x-2\">\r\n <div className=\"w-3 h-3 bg-red-500 rounded-full\"></div>\r\n <div className=\"w-3 h-3 bg-yellow-500 rounded-full\"></div>\r\n <div className=\"w-3 h-3 bg-green-500 rounded-full\"></div>\r\n </div>\r\n <div className=\"text-zinc-600 dark:text-gray-400 text-sm font-mono\">{title}</div>\r\n <div className=\"w-16\"></div>\r\n </div>\r\n\r\n <div className=\"p-4 font-mono text-sm leading-relaxed space-y-2 min-h-[300px] bg-zinc-100 dark:bg-black text-zinc-900 dark:text-white\">\r\n {children}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport function TypingAnimation({ children, className, delay = 0, speed = 50 }: TypingAnimationProps) {\r\n const [displayedText, setDisplayedText] = useState(\"\");\r\n const [isComplete, setIsComplete] = useState(false);\r\n\r\n useEffect(() => {\r\n const timer = setTimeout(() => {\r\n let currentIndex = 0;\r\n const interval = setInterval(() => {\r\n if (currentIndex <= children.length) {\r\n setDisplayedText(children.slice(0, currentIndex));\r\n currentIndex++;\r\n } else {\r\n setIsComplete(true);\r\n clearInterval(interval);\r\n }\r\n }, speed);\r\n\r\n return () => clearInterval(interval);\r\n }, delay);\r\n\r\n return () => clearTimeout(timer);\r\n }, [children, delay, speed]);\r\n\r\n return (\r\n <div className={cn(\"flex items-center\", className)}>\r\n <span>{displayedText}</span>\r\n {!isComplete && <span className=\"ml-1 animate-pulse bg-white w-2 h-4 inline-block\"></span>}\r\n </div>\r\n );\r\n}\r\n\r\nexport function AnimatedSpan({ children, className, delay = 0 }: AnimatedSpanProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n\r\n useEffect(() => {\r\n const timer = setTimeout(() => {\r\n setIsVisible(true);\r\n }, delay);\r\n\r\n return () => clearTimeout(timer);\r\n }, [delay]);\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"transition-all duration-500 transform\",\r\n isVisible ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-2\",\r\n className\r\n )}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport React, { useState, Children, useRef, useLayoutEffect, HTMLAttributes, ReactNode } from \"react\";\r\nimport { motion, AnimatePresence, Variants } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport interface StepperProps extends HTMLAttributes<HTMLDivElement> {\r\n children: ReactNode;\r\n initialStep?: number;\r\n onStepChange?: (step: number) => void;\r\n onFinalStepCompleted?: () => void;\r\n backButtonText?: string;\r\n nextButtonText?: string;\r\n disableStepIndicators?: boolean;\r\n}\r\n\r\nexport function Stepper({\r\n children,\r\n initialStep = 1,\r\n onStepChange = () => {},\r\n onFinalStepCompleted = () => {},\r\n backButtonText = \"Back\",\r\n nextButtonText = \"Continue\",\r\n disableStepIndicators = false,\r\n className,\r\n ...rest\r\n}: StepperProps) {\r\n const [currentStep, setCurrentStep] = useState<number>(initialStep);\r\n const [direction, setDirection] = useState<number>(0);\r\n const stepsArray = Children.toArray(children);\r\n const totalSteps = stepsArray.length;\r\n const isCompleted = currentStep > totalSteps;\r\n const isLastStep = currentStep === totalSteps;\r\n\r\n const updateStep = (newStep: number) => {\r\n setCurrentStep(newStep);\r\n if (newStep > totalSteps) {\r\n onFinalStepCompleted();\r\n } else {\r\n onStepChange(newStep);\r\n }\r\n };\r\n\r\n const handleBack = () => {\r\n if (currentStep > 1) {\r\n setDirection(-1);\r\n updateStep(currentStep - 1);\r\n }\r\n };\r\n\r\n const handleNext = () => {\r\n if (!isLastStep) {\r\n setDirection(1);\r\n updateStep(currentStep + 1);\r\n }\r\n };\r\n\r\n const handleComplete = () => {\r\n setDirection(1);\r\n updateStep(totalSteps + 1);\r\n };\r\n\r\n return (\r\n <div className={cn(\"w-full max-w-md mx-auto\", className)} {...rest}>\r\n <div className=\"flex items-center justify-between mb-8\">\r\n {stepsArray.map((_, index) => {\r\n const stepNumber = index + 1;\r\n const isNotLastStep = index < totalSteps - 1;\r\n return (\r\n <React.Fragment key={stepNumber}>\r\n <StepIndicator\r\n step={stepNumber}\r\n disableStepIndicators={disableStepIndicators}\r\n currentStep={currentStep}\r\n onClickStep={(clicked) => {\r\n setDirection(clicked > currentStep ? 1 : -1);\r\n updateStep(clicked);\r\n }}\r\n />\r\n {isNotLastStep && <StepConnector isComplete={currentStep > stepNumber} />}\r\n </React.Fragment>\r\n );\r\n })}\r\n </div>\r\n\r\n <StepContentWrapper isCompleted={isCompleted} currentStep={currentStep} direction={direction}>\r\n {stepsArray[currentStep - 1]}\r\n </StepContentWrapper>\r\n\r\n {!isCompleted && (\r\n <div className={cn(\"flex mt-8\", currentStep !== 1 ? \"justify-between\" : \"justify-end\")}>\r\n {currentStep !== 1 && (\r\n <button\r\n onClick={handleBack}\r\n className=\"px-4 py-2 text-sm font-medium text-zinc-400 hover:text-white transition-colors rounded-lg hover:bg-zinc-800\"\r\n >\r\n {backButtonText}\r\n </button>\r\n )}\r\n <button\r\n onClick={isLastStep ? handleComplete : handleNext}\r\n className=\"px-4 py-2 text-sm font-medium bg-white text-black rounded-lg hover:bg-zinc-200 transition-colors\"\r\n >\r\n {isLastStep ? \"Complete\" : nextButtonText}\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\ninterface StepContentWrapperProps {\r\n isCompleted: boolean;\r\n currentStep: number;\r\n direction: number;\r\n children: ReactNode;\r\n}\r\n\r\nfunction StepContentWrapper({ isCompleted, currentStep, direction, children }: StepContentWrapperProps) {\r\n const [parentHeight, setParentHeight] = useState<number>(0);\r\n\r\n return (\r\n <motion.div\r\n className=\"relative overflow-hidden\"\r\n animate={{ height: isCompleted ? 0 : parentHeight }}\r\n transition={{ type: \"spring\", duration: 0.4 }}\r\n >\r\n <AnimatePresence initial={false} mode=\"sync\" custom={direction}>\r\n {!isCompleted && (\r\n <SlideTransition key={currentStep} direction={direction} onHeightReady={(h) => setParentHeight(h)}>\r\n {children}\r\n </SlideTransition>\r\n )}\r\n </AnimatePresence>\r\n </motion.div>\r\n );\r\n}\r\n\r\ninterface SlideTransitionProps {\r\n children: ReactNode;\r\n direction: number;\r\n onHeightReady: (h: number) => void;\r\n}\r\n\r\nfunction SlideTransition({ children, direction, onHeightReady }: SlideTransitionProps) {\r\n const containerRef = useRef<HTMLDivElement | null>(null);\r\n\r\n useLayoutEffect(() => {\r\n if (containerRef.current) {\r\n onHeightReady(containerRef.current.offsetHeight);\r\n }\r\n }, [children, onHeightReady]);\r\n\r\n const stepVariants: Variants = {\r\n enter: (dir: number) => ({ x: dir >= 0 ? \"-100%\" : \"100%\", opacity: 0 }),\r\n center: { x: \"0%\", opacity: 1 },\r\n exit: (dir: number) => ({ x: dir >= 0 ? \"50%\" : \"-50%\", opacity: 0 }),\r\n };\r\n\r\n return (\r\n <motion.div\r\n ref={containerRef}\r\n custom={direction}\r\n variants={stepVariants}\r\n initial=\"enter\"\r\n animate=\"center\"\r\n exit=\"exit\"\r\n transition={{ duration: 0.4 }}\r\n className=\"absolute left-0 right-0 top-0\"\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\ninterface StepProps {\r\n children: ReactNode;\r\n}\r\n\r\nexport function Step({ children }: StepProps): React.JSX.Element {\r\n return <div className=\"p-4 rounded-lg bg-zinc-900 border border-zinc-800\">{children}</div>;\r\n}\r\n\r\ninterface StepIndicatorProps {\r\n step: number;\r\n currentStep: number;\r\n onClickStep: (step: number) => void;\r\n disableStepIndicators?: boolean;\r\n}\r\n\r\nfunction StepIndicator({ step, currentStep, onClickStep, disableStepIndicators }: StepIndicatorProps) {\r\n const status = currentStep === step ? \"active\" : currentStep < step ? \"inactive\" : \"complete\";\r\n\r\n const handleClick = () => {\r\n if (step !== currentStep && !disableStepIndicators) {\r\n onClickStep(step);\r\n }\r\n };\r\n\r\n return (\r\n <motion.button\r\n onClick={handleClick}\r\n disabled={disableStepIndicators}\r\n className={cn(\r\n \"relative flex items-center justify-center w-10 h-10 rounded-full text-sm font-medium transition-all\",\r\n status === \"inactive\" && \"bg-zinc-800 text-zinc-500 border border-zinc-700\",\r\n status === \"active\" && \"bg-white text-black border-2 border-white\",\r\n status === \"complete\" && \"bg-white text-black border-2 border-white\",\r\n !disableStepIndicators && \"cursor-pointer hover:opacity-80\"\r\n )}\r\n animate={status}\r\n initial={false}\r\n >\r\n {status === \"complete\" ? (\r\n <svg className=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2.5}>\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M5 13l4 4L19 7\" />\r\n </svg>\r\n ) : (\r\n <span>{step}</span>\r\n )}\r\n </motion.button>\r\n );\r\n}\r\n\r\ninterface StepConnectorProps {\r\n isComplete: boolean;\r\n}\r\n\r\nfunction StepConnector({ isComplete }: StepConnectorProps) {\r\n return (\r\n <div className=\"flex-1 h-[2px] mx-2 bg-zinc-800 rounded-full overflow-hidden\">\r\n <motion.div\r\n className=\"h-full bg-white rounded-full\"\r\n initial={{ width: 0 }}\r\n animate={{ width: isComplete ? \"100%\" : \"0%\" }}\r\n transition={{ duration: 0.4 }}\r\n />\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport React, { createContext, forwardRef, useCallback, useContext, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TreeDataItem {\r\n id: string;\r\n name: string;\r\n icon?: React.ReactNode;\r\n children?: TreeDataItem[];\r\n isSelectable?: boolean;\r\n}\r\n\r\ntype TreeProps = React.HTMLAttributes<HTMLDivElement> & {\r\n data?: TreeDataItem[] | TreeDataItem;\r\n initialSelectedId?: string;\r\n onSelectChange?: (item: TreeDataItem | undefined) => void;\r\n initialExpandedItems?: string[];\r\n elements?: TreeDataItem[];\r\n};\r\n\r\nconst TreeContext = createContext<{\r\n selectedId: string | undefined;\r\n expandedItems: string[];\r\n handleExpand: (id: string) => void;\r\n handleSelect: (id: string) => void;\r\n data: TreeDataItem[] | TreeDataItem;\r\n} | null>(null);\r\n\r\nconst useTree = () => {\r\n const context = useContext(TreeContext);\r\n if (!context) {\r\n throw new Error(\"useTree must be used within a TreeProvider\");\r\n }\r\n return context;\r\n};\r\n\r\nconst Tree = forwardRef<HTMLDivElement, TreeProps>(\r\n ({ data, initialSelectedId, onSelectChange, initialExpandedItems = [], elements, className, ...props }, ref) => {\r\n const [selectedId, setSelectedId] = useState<string | undefined>(initialSelectedId);\r\n const [expandedItems, setExpandedItems] = useState<string[]>(initialExpandedItems);\r\n\r\n const handleExpand = useCallback((id: string) => {\r\n setExpandedItems((prev) => {\r\n if (prev.includes(id)) {\r\n return prev.filter((item) => item !== id);\r\n }\r\n return [...prev, id];\r\n });\r\n }, []);\r\n\r\n const handleSelect = useCallback(\r\n (id: string) => {\r\n const treeData = data || elements || [];\r\n const dataArray = Array.isArray(treeData) ? treeData : [treeData];\r\n\r\n const findItem = (items: TreeDataItem[]): TreeDataItem | undefined => {\r\n for (const item of items) {\r\n if (item.id === id) return item;\r\n if (item.children) {\r\n const found = findItem(item.children);\r\n if (found) return found;\r\n }\r\n }\r\n };\r\n\r\n const selectedItem = findItem(dataArray);\r\n if (selectedItem?.isSelectable) {\r\n setSelectedId(id);\r\n onSelectChange?.(selectedItem);\r\n }\r\n },\r\n [data, elements, onSelectChange]\r\n );\r\n\r\n const value = {\r\n selectedId,\r\n expandedItems,\r\n handleExpand,\r\n handleSelect,\r\n data: data || elements || [],\r\n };\r\n\r\n return (\r\n <TreeContext.Provider value={value}>\r\n <div className={cn(\"relative overflow-hidden\", className)} ref={ref} {...props}>\r\n {React.Children.map(props.children, (child) => child)}\r\n </div>\r\n </TreeContext.Provider>\r\n );\r\n }\r\n);\r\n\r\nTree.displayName = \"Tree\";\r\n\r\nconst Folder = forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & {\r\n element: string;\r\n value: string;\r\n isSelectable?: boolean;\r\n }\r\n>(({ className, element, value, isSelectable = true, children, ...props }, ref) => {\r\n const { selectedId, expandedItems, handleExpand, handleSelect } = useTree();\r\n\r\n return (\r\n <div ref={ref} className=\"relative\" {...props}>\r\n <div\r\n className={cn(\r\n \"flex cursor-pointer items-center gap-1 rounded-md px-2 py-1 text-sm hover:bg-muted\",\r\n selectedId === value && \"bg-muted\",\r\n className\r\n )}\r\n onClick={() => {\r\n handleExpand(value);\r\n if (isSelectable) {\r\n handleSelect(value);\r\n }\r\n }}\r\n >\r\n <svg\r\n className={cn(\"h-4 w-4 shrink-0 transition-transform duration-200\", expandedItems.includes(value) && \"rotate-90\")}\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n >\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\r\n </svg>\r\n <svg className=\"h-4 w-4 shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z\"\r\n />\r\n </svg>\r\n <span className=\"truncate\">{element}</span>\r\n </div>\r\n {expandedItems.includes(value) && <div className=\"ml-4 border-l border-muted pl-2\">{children}</div>}\r\n </div>\r\n );\r\n});\r\n\r\nFolder.displayName = \"Folder\";\r\n\r\nconst File = forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & {\r\n value: string;\r\n isSelectable?: boolean;\r\n }\r\n>(({ className, value, isSelectable = true, children, ...props }, ref) => {\r\n const { selectedId, handleSelect } = useTree();\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-pointer items-center gap-1 rounded-md px-2 py-1 text-sm hover:bg-muted\",\r\n selectedId === value && \"bg-muted\",\r\n className\r\n )}\r\n onClick={() => isSelectable && handleSelect(value)}\r\n {...props}\r\n >\r\n <svg className=\"h-4 w-4 shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\"\r\n />\r\n </svg>\r\n <div className=\"truncate\">{children}</div>\r\n </div>\r\n );\r\n});\r\n\r\nFile.displayName = \"File\";\r\n\r\nexport { Tree, Folder, File, type TreeDataItem };\r\n","\"use client\";\r\n\r\nimport { MotionValue, motion, useSpring, useTransform } from \"framer-motion\";\r\nimport { useEffect } from \"react\";\r\n\r\ninterface NumberProps {\r\n mv: MotionValue<number>;\r\n number: number;\r\n height: number;\r\n}\r\n\r\nfunction Number({ mv, number, height }: NumberProps) {\r\n const y = useTransform(mv, (latest) => {\r\n const placeValue = latest % 10;\r\n let offset = (10 + number - placeValue) % 10;\r\n let memo = offset * height;\r\n if (offset > 5) {\r\n memo -= 10 * height;\r\n }\r\n return memo;\r\n });\r\n\r\n return (\r\n <motion.span style={{ y, position: \"absolute\", inset: 0, display: \"flex\", justifyContent: \"center\" }}>\r\n {number}\r\n </motion.span>\r\n );\r\n}\r\n\r\ninterface DigitProps {\r\n place: number;\r\n value: number;\r\n height: number;\r\n digitStyle?: React.CSSProperties;\r\n}\r\n\r\nfunction Digit({ place, value, height, digitStyle }: DigitProps) {\r\n const valueRoundedToPlace = Math.floor(value / place);\r\n const animatedValue = useSpring(valueRoundedToPlace, { stiffness: 200, damping: 25 });\r\n\r\n useEffect(() => {\r\n animatedValue.set(valueRoundedToPlace);\r\n }, [animatedValue, valueRoundedToPlace]);\r\n\r\n return (\r\n <div style={{ height, position: \"relative\", overflow: \"hidden\", ...digitStyle }}>\r\n {Array.from({ length: 10 }, (_, i) => (\r\n <Number key={i} mv={animatedValue} number={i} height={height} />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport interface CounterProps {\r\n value: number;\r\n fontSize?: number;\r\n padding?: number;\r\n places?: number[];\r\n gap?: number;\r\n textColor?: string;\r\n fontWeight?: React.CSSProperties[\"fontWeight\"];\r\n containerStyle?: React.CSSProperties;\r\n digitStyle?: React.CSSProperties;\r\n}\r\n\r\nexport function Counter({\r\n value,\r\n fontSize = 100,\r\n padding = 0,\r\n places = [100, 10, 1],\r\n gap = 8,\r\n textColor = \"#000000\",\r\n fontWeight = 900,\r\n containerStyle,\r\n digitStyle,\r\n}: CounterProps) {\r\n const height = fontSize + padding;\r\n\r\n return (\r\n <div style={{ display: \"flex\", gap, fontSize, color: textColor, fontWeight, ...containerStyle }}>\r\n {places.map((place) => (\r\n <Digit key={place} place={place} value={value} height={height} digitStyle={digitStyle} />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Counter;\r\n","\"use client\";\r\n\r\nimport React, { useState, useRef } from \"react\";\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ToolbarItem {\r\n id: string;\r\n title: string;\r\n icon: React.ReactNode;\r\n}\r\n\r\ninterface ToolbarProps {\r\n className?: string;\r\n items: ToolbarItem[];\r\n defaultSelected?: string;\r\n onItemClick?: (itemId: string) => void;\r\n}\r\n\r\nconst buttonVariants = {\r\n initial: { gap: 0, paddingLeft: \".5rem\", paddingRight: \".5rem\" },\r\n animate: (isSelected: boolean) => ({\r\n gap: isSelected ? \".5rem\" : 0,\r\n paddingLeft: isSelected ? \"1rem\" : \".5rem\",\r\n paddingRight: isSelected ? \"1rem\" : \".5rem\",\r\n }),\r\n};\r\n\r\nconst spanVariants = {\r\n initial: { width: 0, opacity: 0 },\r\n animate: { width: \"auto\", opacity: 1 },\r\n exit: { width: 0, opacity: 0 },\r\n};\r\n\r\nconst transition = { type: \"spring\", bounce: 0, duration: 0.4 };\r\n\r\nexport function Toolbar({ className, items, defaultSelected, onItemClick }: ToolbarProps) {\r\n const [selected, setSelected] = useState<string | null>(defaultSelected || null);\r\n\r\n const handleItemClick = (itemId: string) => {\r\n setSelected(selected === itemId ? null : itemId);\r\n onItemClick?.(itemId);\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"flex items-center gap-3 p-2 relative\",\r\n \"bg-background border rounded-xl transition-all duration-200\",\r\n className\r\n )}\r\n >\r\n <div className=\"flex items-center gap-2\">\r\n {items.map((item) => (\r\n <motion.button\r\n key={item.id}\r\n variants={buttonVariants}\r\n initial={false}\r\n animate=\"animate\"\r\n custom={selected === item.id}\r\n onClick={() => handleItemClick(item.id)}\r\n transition={transition}\r\n className={cn(\r\n \"relative flex items-center rounded-none px-3 py-2\",\r\n \"text-sm font-medium transition-colors duration-300\",\r\n selected === item.id\r\n ? \"bg-[#1F9CFE] text-white rounded-lg\"\r\n : \"text-muted-foreground hover:bg-muted hover:text-foreground\"\r\n )}\r\n >\r\n {item.icon}\r\n <AnimatePresence initial={false}>\r\n {selected === item.id && (\r\n <motion.span\r\n variants={spanVariants}\r\n initial=\"initial\"\r\n animate=\"animate\"\r\n exit=\"exit\"\r\n transition={transition}\r\n className=\"overflow-hidden\"\r\n >\r\n {item.title}\r\n </motion.span>\r\n )}\r\n </AnimatePresence>\r\n </motion.button>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Toolbar;\r\n","\"use client\";\r\n\r\nimport React, { useRef } from \"react\";\r\nimport { motion, useMotionValue, useSpring, useTransform } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport interface DockProps {\r\n className?: string;\r\n children: React.ReactNode;\r\n direction?: \"top\" | \"middle\" | \"bottom\";\r\n}\r\n\r\nexport function Dock({ className, children, direction = \"middle\" }: DockProps) {\r\n const directionClasses = {\r\n top: \"items-start\",\r\n middle: \"items-center\",\r\n bottom: \"items-end\",\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(\r\n \"mx-auto w-max mt-8 h-[58px] p-2 flex gap-2 rounded-2xl border\",\r\n \"supports-backdrop-blur:bg-white/10 supports-backdrop-blur:dark:bg-black/10 backdrop-blur-md\",\r\n \"border-gray-200 bg-gray-50/80 dark:border-gray-800 dark:bg-gray-900/80\",\r\n directionClasses[direction],\r\n className\r\n )}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport interface DockIconProps {\r\n size?: number;\r\n magnification?: number;\r\n distance?: number;\r\n children?: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function DockIcon({\r\n size = 40,\r\n magnification = 60,\r\n distance = 140,\r\n children,\r\n className,\r\n}: DockIconProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const mouseX = useMotionValue(Infinity);\r\n\r\n const width = useSpring(\r\n useTransform(mouseX, [-distance, 0, distance], [size, magnification, size]),\r\n { mass: 0.1, stiffness: 150, damping: 12 }\r\n );\r\n\r\n return (\r\n <motion.div\r\n ref={ref}\r\n style={{ width }}\r\n onMouseMove={(e) => mouseX.set(e.pageX - ref.current!.offsetLeft - width.get() / 2)}\r\n onMouseLeave={() => mouseX.set(Infinity)}\r\n className={cn(\"flex aspect-square cursor-pointer items-center justify-center rounded-full\", className)}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n label?: string;\r\n error?: string;\r\n icon?: React.ReactNode;\r\n}\r\n\r\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\r\n ({ className, label, error, icon, ...props }, ref) => {\r\n return (\r\n <div className=\"w-full\">\r\n {label && (\r\n <label className=\"block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1\">\r\n {label}\r\n </label>\r\n )}\r\n <div className=\"relative\">\r\n {icon && (\r\n <div className=\"absolute left-3 top-1/2 -translate-y-1/2 text-zinc-400\">\r\n {icon}\r\n </div>\r\n )}\r\n <input\r\n ref={ref}\r\n className={cn(\r\n \"w-full px-4 py-2 rounded-lg\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"text-zinc-900 dark:text-zinc-100\",\r\n \"placeholder:text-zinc-400 dark:placeholder:text-zinc-500\",\r\n \"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\",\r\n \"transition-all duration-200\",\r\n icon && \"pl-10\",\r\n error && \"border-red-500 focus:ring-red-500\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </div>\r\n {error && <p className=\"mt-1 text-sm text-red-500\">{error}</p>}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nInput.displayName = \"Input\";\r\n\r\nexport default Input;\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\r\n label?: string;\r\n error?: string;\r\n}\r\n\r\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\r\n ({ className, label, error, ...props }, ref) => {\r\n return (\r\n <div className=\"w-full\">\r\n {label && (\r\n <label className=\"block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1\">\r\n {label}\r\n </label>\r\n )}\r\n <textarea\r\n ref={ref}\r\n className={cn(\r\n \"w-full px-4 py-2 rounded-lg min-h-[100px] resize-y\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"text-zinc-900 dark:text-zinc-100\",\r\n \"placeholder:text-zinc-400 dark:placeholder:text-zinc-500\",\r\n \"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\",\r\n \"transition-all duration-200\",\r\n error && \"border-red-500 focus:ring-red-500\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n {error && <p className=\"mt-1 text-sm text-red-500\">{error}</p>}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nTextarea.displayName = \"Textarea\";\r\n\r\nexport default Textarea;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CheckboxProps {\r\n checked?: boolean;\r\n onChange?: (checked: boolean) => void;\r\n label?: string;\r\n disabled?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function Checkbox({ checked = false, onChange, label, disabled = false, className }: CheckboxProps) {\r\n return (\r\n <label\r\n className={cn(\r\n \"inline-flex items-center gap-2 cursor-pointer\",\r\n disabled && \"opacity-50 cursor-not-allowed\",\r\n className\r\n )}\r\n >\r\n <button\r\n type=\"button\"\r\n role=\"checkbox\"\r\n aria-checked={checked}\r\n disabled={disabled}\r\n onClick={() => onChange?.(!checked)}\r\n className={cn(\r\n \"w-5 h-5 rounded border-2 flex items-center justify-center transition-colors\",\r\n checked\r\n ? \"bg-blue-500 border-blue-500\"\r\n : \"bg-transparent border-zinc-300 dark:border-zinc-600\"\r\n )}\r\n >\r\n <motion.svg\r\n initial={false}\r\n animate={{ scale: checked ? 1 : 0, opacity: checked ? 1 : 0 }}\r\n transition={{ duration: 0.15 }}\r\n className=\"w-3 h-3 text-white\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={3} d=\"M5 13l4 4L19 7\" />\r\n </motion.svg>\r\n </button>\r\n {label && <span className=\"text-sm\">{label}</span>}\r\n </label>\r\n );\r\n}\r\n\r\nexport default Checkbox;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RadioOption {\r\n value: string;\r\n label: string;\r\n}\r\n\r\ninterface RadioGroupProps {\r\n options: RadioOption[];\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n name: string;\r\n className?: string;\r\n direction?: \"horizontal\" | \"vertical\";\r\n}\r\n\r\nexport function RadioGroup({\r\n options,\r\n value,\r\n onChange,\r\n name,\r\n className,\r\n direction = \"vertical\",\r\n}: RadioGroupProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"flex gap-3\",\r\n direction === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\",\r\n className\r\n )}\r\n >\r\n {options.map((option) => (\r\n <label\r\n key={option.value}\r\n className=\"inline-flex items-center gap-2 cursor-pointer\"\r\n >\r\n <button\r\n type=\"button\"\r\n role=\"radio\"\r\n aria-checked={value === option.value}\r\n onClick={() => onChange?.(option.value)}\r\n className={cn(\r\n \"w-5 h-5 rounded-full border-2 flex items-center justify-center transition-colors\",\r\n value === option.value\r\n ? \"border-blue-500\"\r\n : \"border-zinc-300 dark:border-zinc-600\"\r\n )}\r\n >\r\n <motion.div\r\n initial={false}\r\n animate={{\r\n scale: value === option.value ? 1 : 0,\r\n opacity: value === option.value ? 1 : 0,\r\n }}\r\n transition={{ duration: 0.15 }}\r\n className=\"w-2.5 h-2.5 rounded-full bg-blue-500\"\r\n />\r\n </button>\r\n <span className=\"text-sm\">{option.label}</span>\r\n </label>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default RadioGroup;\r\n","\"use client\";\r\n\r\nimport { useState, useRef, useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SelectOption {\r\n value: string;\r\n label: string;\r\n}\r\n\r\ninterface SelectProps {\r\n options: SelectOption[];\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n placeholder?: string;\r\n className?: string;\r\n label?: string;\r\n}\r\n\r\nexport function Select({ options, value, onChange, placeholder = \"Select...\", className, label }: SelectProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const ref = useRef<HTMLDivElement>(null);\r\n\r\n const selectedOption = options.find((opt) => opt.value === value);\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (ref.current && !ref.current.contains(e.target as Node)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, []);\r\n\r\n return (\r\n <div className=\"w-full\">\r\n {label && (\r\n <label className=\"block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1\">\r\n {label}\r\n </label>\r\n )}\r\n <div ref={ref} className={cn(\"relative\", className)}>\r\n <button\r\n type=\"button\"\r\n onClick={() => setIsOpen(!isOpen)}\r\n className={cn(\r\n \"w-full px-4 py-2 rounded-lg text-left\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"flex items-center justify-between\",\r\n \"focus:outline-none focus:ring-2 focus:ring-blue-500\",\r\n \"transition-all duration-200\"\r\n )}\r\n >\r\n <span className={selectedOption ? \"\" : \"text-zinc-400\"}>\r\n {selectedOption?.label || placeholder}\r\n </span>\r\n <motion.svg\r\n animate={{ rotate: isOpen ? 180 : 0 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"w-5 h-5\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\r\n </motion.svg>\r\n </button>\r\n <AnimatePresence>\r\n {isOpen && (\r\n <motion.div\r\n initial={{ opacity: 0, y: -10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: -10 }}\r\n transition={{ duration: 0.15 }}\r\n className={cn(\r\n \"absolute z-50 w-full mt-1 rounded-lg overflow-hidden\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"shadow-lg\"\r\n )}\r\n >\r\n {options.map((option) => (\r\n <button\r\n key={option.value}\r\n type=\"button\"\r\n onClick={() => {\r\n onChange?.(option.value);\r\n setIsOpen(false);\r\n }}\r\n className={cn(\r\n \"w-full px-4 py-2 text-left\",\r\n \"hover:bg-zinc-100 dark:hover:bg-zinc-800\",\r\n \"transition-colors\",\r\n value === option.value && \"bg-blue-50 dark:bg-blue-900/20 text-blue-600\"\r\n )}\r\n >\r\n {option.label}\r\n </button>\r\n ))}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Select;\r\n","\"use client\";\r\n\r\nimport { useState, useRef, useEffect } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface InputOTPProps {\r\n maxLength?: number;\r\n onComplete?: (value: string) => void;\r\n onChange?: (value: string) => void;\r\n className?: string;\r\n}\r\n\r\nexport function InputOTP({\r\n maxLength = 6,\r\n onComplete,\r\n onChange,\r\n className = \"\",\r\n}: InputOTPProps) {\r\n const [values, setValues] = useState<string[]>(new Array(maxLength).fill(\"\"));\r\n const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\r\n\r\n useEffect(() => {\r\n const currentValue = values.join(\"\");\r\n onChange?.(currentValue);\r\n\r\n if (currentValue.length === maxLength) {\r\n onComplete?.(currentValue);\r\n }\r\n }, [values, maxLength, onChange, onComplete]);\r\n\r\n const handleChange = (index: number, value: string) => {\r\n if (value.length > 1) {\r\n const pastedValues = value.slice(0, maxLength).split(\"\");\r\n const newValues = [...values];\r\n pastedValues.forEach((val, i) => {\r\n if (index + i < maxLength) {\r\n newValues[index + i] = val;\r\n }\r\n });\r\n setValues(newValues);\r\n\r\n const nextIndex = Math.min(index + pastedValues.length, maxLength - 1);\r\n inputRefs.current[nextIndex]?.focus();\r\n return;\r\n }\r\n\r\n if (/^\\d*$/.test(value)) {\r\n const newValues = [...values];\r\n newValues[index] = value;\r\n setValues(newValues);\r\n\r\n if (value && index < maxLength - 1) {\r\n inputRefs.current[index + 1]?.focus();\r\n }\r\n }\r\n };\r\n\r\n const handleKeyDown = (\r\n index: number,\r\n e: React.KeyboardEvent<HTMLInputElement>\r\n ) => {\r\n if (e.key === \"Backspace\") {\r\n if (!values[index] && index > 0) {\r\n inputRefs.current[index - 1]?.focus();\r\n } else {\r\n const newValues = [...values];\r\n newValues[index] = \"\";\r\n setValues(newValues);\r\n }\r\n } else if (e.key === \"ArrowLeft\" && index > 0) {\r\n inputRefs.current[index - 1]?.focus();\r\n } else if (e.key === \"ArrowRight\" && index < maxLength - 1) {\r\n inputRefs.current[index + 1]?.focus();\r\n }\r\n };\r\n\r\n const handleFocus = (index: number) => {\r\n inputRefs.current[index]?.select();\r\n };\r\n\r\n return (\r\n <div className={cn(\"flex items-center gap-2\", className)}>\r\n {values.map((value, index) => (\r\n <input\r\n key={index}\r\n ref={(el) => {\r\n inputRefs.current[index] = el;\r\n }}\r\n type=\"text\"\r\n inputMode=\"numeric\"\r\n maxLength={1}\r\n value={value}\r\n onChange={(e) => handleChange(index, e.target.value)}\r\n onKeyDown={(e) => handleKeyDown(index, e)}\r\n onFocus={() => handleFocus(index)}\r\n className={cn(\r\n \"w-12 h-12 text-center text-lg font-semibold\",\r\n \"border-2 border-zinc-300 dark:border-zinc-600 rounded-md\",\r\n \"focus:border-zinc-900 dark:focus:border-white focus:outline-none\",\r\n \"bg-white dark:bg-zinc-800 text-zinc-900 dark:text-white\",\r\n \"transition-colors\"\r\n )}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default InputOTP;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HamburgerBasicProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerBasic({ className, onChange }: HamburgerBasicProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <label\r\n className={cn(\r\n \"relative w-10 h-8 bg-transparent cursor-pointer block\",\r\n className\r\n )}\r\n htmlFor=\"burger-basic\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n id=\"burger-basic\"\r\n className=\"hidden\"\r\n checked={isOpen}\r\n onChange={handleToggle}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out\",\r\n \"top-0 origin-left\",\r\n isOpen && \"rotate-45 top-0 left-1.5\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out\",\r\n \"top-1/2 -translate-y-1/2 origin-left\",\r\n isOpen && \"w-0 opacity-0\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out\",\r\n \"top-full -translate-y-full origin-left\",\r\n isOpen && \"-rotate-45 top-7 left-1.5\"\r\n )}\r\n />\r\n </label>\r\n );\r\n}\r\n\r\nexport default HamburgerBasic;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HamburgerSpinProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerSpin({ className, onChange }: HamburgerSpinProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <div className={cn(\"inline-block\", className)}>\r\n <input\r\n type=\"checkbox\"\r\n id=\"checkbox-spin\"\r\n className=\"hidden\"\r\n checked={isOpen}\r\n onChange={handleToggle}\r\n />\r\n <label\r\n htmlFor=\"checkbox-spin\"\r\n className={cn(\r\n \"relative w-10 h-10 cursor-pointer flex flex-col items-center justify-center gap-2.5 transition-all duration-500\",\r\n isOpen && \"rotate-180\"\r\n )}\r\n >\r\n <div\r\n className={cn(\r\n \"w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center\",\r\n isOpen && \"scale-x-[0.6] translate-y-[1px]\"\r\n )}\r\n />\r\n <div\r\n className={cn(\r\n \"w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center\",\r\n isOpen && \"rotate-90 scale-x-[1.2]\"\r\n )}\r\n />\r\n <div\r\n className={cn(\r\n \"w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center\",\r\n isOpen && \"scale-x-[0.6] -translate-y-[1px]\"\r\n )}\r\n />\r\n </label>\r\n </div>\r\n );\r\n}\r\n\r\nexport default HamburgerSpin;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerMorphProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerMorph({ className, onChange }: HamburgerMorphProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2\",\r\n className\r\n )}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { scaleX: 0 } : { scaleX: 1 }}\r\n transition={{ duration: 0.3, type: \"spring\", stiffness: 400, damping: 30 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { scaleX: 1.2 } : { scaleX: 1 }}\r\n transition={{ duration: 0.4, type: \"spring\", stiffness: 200, damping: 20 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { scaleX: 0 } : { scaleX: 1 }}\r\n transition={{ duration: 0.3, delay: 0.05, type: \"spring\", stiffness: 400, damping: 30 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default HamburgerMorph;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerSpringProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerSpring({ className, onChange }: HamburgerSpringProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2 p-2\",\r\n className\r\n )}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { y: -12, rotation: 90, scaleX: 0.8 } : { y: 0, rotation: 0, scaleX: 1 }}\r\n transition={{ duration: 0.5, type: \"spring\", stiffness: 200, damping: 15 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { rotation: 90, scaleX: 0.8 } : { rotation: 0, scaleX: 1 }}\r\n transition={{ duration: 0.5, type: \"spring\", stiffness: 200, damping: 15 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { y: 12, rotation: 90, scaleX: 0.8 } : { y: 0, rotation: 0, scaleX: 1 }}\r\n transition={{ duration: 0.5, type: \"spring\", stiffness: 200, damping: 15 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default HamburgerSpring;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerWaveProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerWave({ className, onChange }: HamburgerWaveProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex items-center justify-center\",\r\n className\r\n )}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <div className=\"relative w-8 h-8\">\r\n <span\r\n className={cn(\r\n \"absolute w-2 h-2 bg-black dark:bg-white rounded-sm transition-all duration-300 ease-out\",\r\n isOpen \r\n ? \"top-0 left-0\" \r\n : \"top-0 left-1/2 -translate-x-1/2 w-8 h-0.5 rounded-full\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"absolute w-2 h-2 bg-black dark:bg-white rounded-sm transition-all duration-300 ease-out delay-75\",\r\n isOpen \r\n ? \"top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\" \r\n : \"top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-8 h-0.5 rounded-full\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"absolute w-2 h-2 bg-black dark:bg-white rounded-sm transition-all duration-300 ease-out delay-150\",\r\n isOpen \r\n ? \"bottom-0 right-0\" \r\n : \"bottom-0 left-1/2 -translate-x-1/2 w-8 h-0.5 rounded-full\"\r\n )}\r\n />\r\n </div>\r\n </button>\r\n );\r\n}\r\n\r\nexport default HamburgerWave;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerStaggerProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerStagger({ className, onChange }: HamburgerStaggerProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <label\r\n className={cn(\r\n \"w-12 h-8 cursor-pointer relative block\",\r\n className\r\n )}\r\n htmlFor=\"burger-stagger\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n id=\"burger-stagger\"\r\n className=\"hidden w-full h-full\"\r\n checked={isOpen}\r\n onChange={handleToggle}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute w-full rounded-lg border-[3px] border-black dark:border-white bg-black dark:bg-white transition-all duration-150 ease-in-out\",\r\n \"top-0 right-0 origin-right\",\r\n isOpen && \"w-1/2 top-1/2 -translate-y-[30%] rotate-[40deg]\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute w-full rounded-lg border-[3px] border-black dark:border-white bg-black dark:bg-white transition-all duration-150 ease-in-out\",\r\n \"top-1/2 -translate-y-1/2\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute w-full rounded-lg border-[3px] border-black dark:border-white bg-black dark:bg-white transition-all duration-150 ease-in-out\",\r\n \"top-full right-0 origin-right -translate-y-full\",\r\n isOpen && \"w-1/2 top-1/2 -translate-y-[70%] -rotate-[40deg]\"\r\n )}\r\n />\r\n </label>\r\n );\r\n}\r\n\r\nexport default HamburgerStagger;\r\n","\"use client\";\r\n\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface Hamburger3DProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function Hamburger3D({ className, onChange }: Hamburger3DProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2 p-2\",\r\n className\r\n )}\r\n style={{ transformStyle: \"preserve-3d\", perspective: \"800px\" }}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <motion.div\r\n className=\"w-8 h-0.5 bg-black dark:bg-white rounded\"\r\n animate={isOpen ? { \r\n width: 10, \r\n height: 10, \r\n borderRadius: \"50%\",\r\n y: -6 \r\n } : { \r\n width: 32, \r\n height: 2, \r\n borderRadius: \"4px\",\r\n y: 0 \r\n }}\r\n transition={{ duration: 0.3, ease: \"easeInOut\" }}\r\n />\r\n <motion.div\r\n className=\"w-8 h-0.5 bg-black dark:bg-white rounded\"\r\n animate={isOpen ? { \r\n width: 10, \r\n height: 10, \r\n borderRadius: \"50%\",\r\n x: -8,\r\n y: 6 \r\n } : { \r\n width: 32, \r\n height: 2, \r\n borderRadius: \"4px\",\r\n x: 0,\r\n y: 0 \r\n }}\r\n transition={{ duration: 0.35, ease: \"easeInOut\" }}\r\n />\r\n <motion.div\r\n className=\"w-8 h-0.5 bg-black dark:bg-white rounded\"\r\n animate={isOpen ? { \r\n width: 10, \r\n height: 10, \r\n borderRadius: \"50%\",\r\n x: 8,\r\n y: 6 \r\n } : { \r\n width: 32, \r\n height: 2, \r\n borderRadius: \"4px\",\r\n x: 0,\r\n y: 0 \r\n }}\r\n transition={{ duration: 0.4, ease: \"easeInOut\" }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default Hamburger3D;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerElasticProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerElastic({ className, onChange }: HamburgerElasticProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2\",\r\n className\r\n )}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { rotateX: 90, y: 0, opacity: 0 } : { rotateX: 0, y: 0, opacity: 1 }}\r\n transition={{ duration: 0.3, type: \"spring\", stiffness: 300, damping: 30 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { scaleY: 3 } : { scaleY: 1 }}\r\n transition={{ duration: 0.6, type: \"spring\", stiffness: 200, damping: 15 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { rotateX: 90, y: 0, opacity: 0 } : { rotateX: 0, y: 0, opacity: 1 }}\r\n transition={{ duration: 0.3, type: \"spring\", stiffness: 300, damping: 30 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default HamburgerElastic;\r\n","\"use client\";\r\n\r\nimport { useRef, useEffect, useCallback, ReactNode } from \"react\";\r\n\r\ninterface ClickSparkProps {\r\n sparkColor?: string;\r\n sparkSize?: number;\r\n sparkRadius?: number;\r\n sparkCount?: number;\r\n duration?: number;\r\n easing?: string;\r\n extraScale?: number;\r\n children: ReactNode;\r\n}\r\n\r\nexport function ClickSpark({\r\n sparkColor = \"#000000\",\r\n sparkSize = 10,\r\n sparkRadius = 15,\r\n sparkCount = 8,\r\n duration = 400,\r\n easing = \"ease-out\",\r\n extraScale = 1.0,\r\n children,\r\n}: ClickSparkProps) {\r\n const canvasRef = useRef<HTMLCanvasElement>(null);\r\n const sparksRef = useRef<\r\n Array<{\r\n x: number;\r\n y: number;\r\n angle: number;\r\n startTime: number;\r\n }>\r\n >([]);\r\n const startTimeRef = useRef<number | null>(null);\r\n\r\n useEffect(() => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n\r\n const parent = canvas.parentElement;\r\n if (!parent) return;\r\n\r\n let resizeTimeout: ReturnType<typeof setTimeout>;\r\n\r\n const resizeCanvas = () => {\r\n const { width, height } = parent.getBoundingClientRect();\r\n if (canvas.width !== width || canvas.height !== height) {\r\n canvas.width = width;\r\n canvas.height = height;\r\n }\r\n };\r\n\r\n const handleResize = () => {\r\n clearTimeout(resizeTimeout);\r\n resizeTimeout = setTimeout(resizeCanvas, 100);\r\n };\r\n\r\n const ro = new ResizeObserver(handleResize);\r\n ro.observe(parent);\r\n\r\n resizeCanvas();\r\n\r\n return () => {\r\n ro.disconnect();\r\n clearTimeout(resizeTimeout);\r\n };\r\n }, []);\r\n\r\n const easeFunc = useCallback(\r\n (t: number) => {\r\n switch (easing) {\r\n case \"linear\":\r\n return t;\r\n case \"ease-in\":\r\n return t * t;\r\n case \"ease-in-out\":\r\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\r\n default:\r\n return t * (2 - t);\r\n }\r\n },\r\n [easing]\r\n );\r\n\r\n useEffect(() => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n const ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n let animationId: number;\r\n\r\n const draw = (timestamp: number) => {\r\n if (!startTimeRef.current) {\r\n startTimeRef.current = timestamp;\r\n }\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n sparksRef.current = sparksRef.current.filter((spark) => {\r\n const elapsed = timestamp - spark.startTime;\r\n if (elapsed >= duration) {\r\n return false;\r\n }\r\n\r\n const progress = elapsed / duration;\r\n const eased = easeFunc(progress);\r\n\r\n const distance = eased * sparkRadius * extraScale;\r\n const lineLength = sparkSize * (1 - eased);\r\n\r\n const x1 = spark.x + distance * Math.cos(spark.angle);\r\n const y1 = spark.y + distance * Math.sin(spark.angle);\r\n const x2 = spark.x + (distance + lineLength) * Math.cos(spark.angle);\r\n const y2 = spark.y + (distance + lineLength) * Math.sin(spark.angle);\r\n\r\n ctx.strokeStyle = sparkColor;\r\n ctx.lineWidth = 2;\r\n ctx.beginPath();\r\n ctx.moveTo(x1, y1);\r\n ctx.lineTo(x2, y2);\r\n ctx.stroke();\r\n\r\n return true;\r\n });\r\n\r\n animationId = requestAnimationFrame(draw);\r\n };\r\n\r\n animationId = requestAnimationFrame(draw);\r\n\r\n return () => {\r\n cancelAnimationFrame(animationId);\r\n };\r\n }, [sparkColor, sparkSize, sparkRadius, duration, easeFunc, extraScale]);\r\n\r\n const handleClick = (e: React.MouseEvent) => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n const rect = canvas.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n\r\n const now = performance.now();\r\n const newSparks = Array.from({ length: sparkCount }, (_, i) => ({\r\n x,\r\n y,\r\n angle: (2 * Math.PI * i) / sparkCount,\r\n startTime: now,\r\n }));\r\n\r\n sparksRef.current.push(...newSparks);\r\n };\r\n\r\n return (\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n }}\r\n onClick={handleClick}\r\n >\r\n <canvas\r\n ref={canvasRef}\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n display: \"block\",\r\n userSelect: \"none\",\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n pointerEvents: \"none\",\r\n }}\r\n />\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ClickSpark;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { motion, useMotionValue, useSpring } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SmoothCursorProps {\r\n className?: string;\r\n}\r\n\r\nexport function SmoothCursor({ className }: SmoothCursorProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n const cursorX = useMotionValue(-100);\r\n const cursorY = useMotionValue(-100);\r\n\r\n const springConfig = { damping: 25, stiffness: 700 };\r\n const cursorXSpring = useSpring(cursorX, springConfig);\r\n const cursorYSpring = useSpring(cursorY, springConfig);\r\n\r\n useEffect(() => {\r\n const moveCursor = (e: MouseEvent) => {\r\n cursorX.set(e.clientX - 16);\r\n cursorY.set(e.clientY - 16);\r\n setIsVisible(true);\r\n };\r\n\r\n const hideCursor = () => {\r\n setIsVisible(false);\r\n };\r\n\r\n window.addEventListener(\"mousemove\", moveCursor);\r\n window.addEventListener(\"mouseleave\", hideCursor);\r\n\r\n return () => {\r\n window.removeEventListener(\"mousemove\", moveCursor);\r\n window.removeEventListener(\"mouseleave\", hideCursor);\r\n };\r\n }, [cursorX, cursorY]);\r\n\r\n return (\r\n <motion.div\r\n className={cn(\r\n \"pointer-events-none fixed left-0 top-0 z-50 h-8 w-8 rounded-full bg-zinc-400 mix-blend-difference\",\r\n isVisible ? \"opacity-100\" : \"opacity-0\",\r\n className\r\n )}\r\n style={{\r\n x: cursorXSpring,\r\n y: cursorYSpring,\r\n }}\r\n transition={{\r\n type: \"spring\",\r\n stiffness: 500,\r\n damping: 28,\r\n }}\r\n />\r\n );\r\n}\r\n\r\nexport default SmoothCursor;\r\n","\"use client\";\r\n\r\nimport { ReactNode } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FloatEffectProps {\r\n children?: ReactNode;\r\n className?: string;\r\n duration?: number;\r\n distance?: number;\r\n}\r\n\r\nexport function FloatEffect({\r\n children,\r\n className,\r\n duration = 5,\r\n distance = 50,\r\n}: FloatEffectProps) {\r\n return (\r\n <motion.div\r\n className={cn(\"relative\", className)}\r\n animate={{\r\n y: [0, -distance, 0],\r\n }}\r\n transition={{\r\n duration,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n }}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default FloatEffect;\r\n","\"use client\";\r\n\r\nimport { ReactNode } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlowEffectProps {\r\n children?: ReactNode;\r\n className?: string;\r\n glowColor?: string;\r\n duration?: number;\r\n}\r\n\r\nexport function GlowEffect({\r\n children,\r\n className,\r\n glowColor = \"rgba(255, 255, 255, 0.4)\",\r\n duration = 3,\r\n}: GlowEffectProps) {\r\n return (\r\n <motion.div\r\n className={cn(\r\n \"relative p-8 rounded-3xl border-2 border-white/30\",\r\n className\r\n )}\r\n style={{\r\n background:\r\n \"radial-gradient(circle at center, rgba(255,255,255,0.05) 0%, transparent 70%)\",\r\n }}\r\n animate={{\r\n boxShadow: [\r\n `0 0 40px ${glowColor}, 0 0 80px ${glowColor.replace(\"0.4\", \"0.2\")}`,\r\n `0 0 80px ${glowColor.replace(\"0.4\", \"0.8\")}, 0 0 160px ${glowColor.replace(\"0.4\", \"0.5\")}`,\r\n `0 0 40px ${glowColor}, 0 0 80px ${glowColor.replace(\"0.4\", \"0.2\")}`,\r\n ],\r\n borderColor: [\r\n \"rgba(255, 255, 255, 0.3)\",\r\n \"rgba(255, 255, 255, 0.6)\",\r\n \"rgba(255, 255, 255, 0.3)\",\r\n ],\r\n }}\r\n transition={{\r\n duration,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n }}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default GlowEffect;\r\n","\"use client\";\r\n\r\nimport { ReactNode } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BlurFadeProps {\r\n children: ReactNode;\r\n className?: string;\r\n delay?: number;\r\n duration?: number;\r\n blur?: number;\r\n inView?: boolean;\r\n inViewMargin?: string;\r\n yOffset?: number;\r\n}\r\n\r\nexport function BlurFade({\r\n children,\r\n className,\r\n delay = 0,\r\n duration = 0.8,\r\n blur = 10,\r\n inView = false,\r\n inViewMargin = \"-50px\",\r\n yOffset = 6,\r\n}: BlurFadeProps) {\r\n const variants = {\r\n hidden: {\r\n opacity: 0,\r\n filter: `blur(${blur}px)`,\r\n y: yOffset,\r\n },\r\n visible: {\r\n opacity: 1,\r\n filter: \"blur(0px)\",\r\n y: 0,\r\n },\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(className)}\r\n initial=\"hidden\"\r\n animate={inView ? undefined : \"visible\"}\r\n whileInView={inView ? \"visible\" : undefined}\r\n viewport={{ once: true, margin: inViewMargin }}\r\n variants={variants}\r\n transition={{\r\n duration,\r\n delay,\r\n ease: [0.25, 0.1, 0.25, 1],\r\n }}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default BlurFade;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, ReactNode } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nclass Pixel {\r\n width: number;\r\n height: number;\r\n ctx: CanvasRenderingContext2D;\r\n x: number;\r\n y: number;\r\n color: string;\r\n speed: number;\r\n size: number;\r\n sizeStep: number;\r\n minSize: number;\r\n maxSizeInteger: number;\r\n maxSize: number;\r\n delay: number;\r\n counter: number;\r\n counterStep: number;\r\n isIdle: boolean;\r\n isReverse: boolean;\r\n isShimmer: boolean;\r\n\r\n constructor(\r\n canvas: HTMLCanvasElement,\r\n context: CanvasRenderingContext2D,\r\n x: number,\r\n y: number,\r\n color: string,\r\n speed: number,\r\n delay: number\r\n ) {\r\n this.width = canvas.width;\r\n this.height = canvas.height;\r\n this.ctx = context;\r\n this.x = x;\r\n this.y = y;\r\n this.color = color;\r\n this.speed = this.getRandomValue(0.1, 0.9) * speed;\r\n this.size = 0;\r\n this.sizeStep = Math.random() * 0.4;\r\n this.minSize = 0.5;\r\n this.maxSizeInteger = 2;\r\n this.maxSize = this.getRandomValue(this.minSize, this.maxSizeInteger);\r\n this.delay = delay;\r\n this.counter = 0;\r\n this.counterStep = Math.random() * 4 + (this.width + this.height) * 0.01;\r\n this.isIdle = false;\r\n this.isReverse = false;\r\n this.isShimmer = false;\r\n }\r\n\r\n getRandomValue(min: number, max: number) {\r\n return Math.random() * (max - min) + min;\r\n }\r\n\r\n draw() {\r\n const centerOffset = this.maxSizeInteger * 0.5 - this.size * 0.5;\r\n this.ctx.fillStyle = this.color;\r\n this.ctx.fillRect(\r\n this.x + centerOffset,\r\n this.y + centerOffset,\r\n this.size,\r\n this.size\r\n );\r\n }\r\n\r\n appear() {\r\n this.isIdle = false;\r\n if (this.counter <= this.delay) {\r\n this.counter += this.counterStep;\r\n return;\r\n }\r\n if (this.size >= this.maxSize) {\r\n this.isShimmer = true;\r\n }\r\n if (this.isShimmer) {\r\n this.shimmer();\r\n } else {\r\n this.size += this.sizeStep;\r\n }\r\n this.draw();\r\n }\r\n\r\n disappear() {\r\n this.isShimmer = false;\r\n this.counter = 0;\r\n if (this.size <= 0) {\r\n this.isIdle = true;\r\n return;\r\n } else {\r\n this.size -= 0.1;\r\n }\r\n this.draw();\r\n }\r\n\r\n shimmer() {\r\n if (this.size >= this.maxSize) {\r\n this.isReverse = true;\r\n } else if (this.size <= this.minSize) {\r\n this.isReverse = false;\r\n }\r\n if (this.isReverse) {\r\n this.size -= this.speed;\r\n } else {\r\n this.size += this.speed;\r\n }\r\n }\r\n}\r\n\r\nconst VARIANTS = {\r\n default: {\r\n gap: 5,\r\n speed: 35,\r\n colors: \"#71717a,#a1a1aa,#d4d4d8\",\r\n noFocus: false,\r\n },\r\n blue: {\r\n gap: 10,\r\n speed: 25,\r\n colors: \"#0ea5e9,#38bdf8,#7dd3fc\",\r\n noFocus: false,\r\n },\r\n yellow: {\r\n gap: 3,\r\n speed: 20,\r\n colors: \"#ca8a04,#eab308,#facc15\",\r\n noFocus: false,\r\n },\r\n pink: {\r\n gap: 6,\r\n speed: 80,\r\n colors: \"#be123c,#e11d48,#f43f5e\",\r\n noFocus: true,\r\n },\r\n};\r\n\r\ninterface PixelCardProps {\r\n variant?: \"default\" | \"blue\" | \"yellow\" | \"pink\";\r\n gap?: number;\r\n speed?: number;\r\n colors?: string;\r\n noFocus?: boolean;\r\n className?: string;\r\n children: ReactNode;\r\n}\r\n\r\nfunction getEffectiveSpeed(value: number, reducedMotion: boolean) {\r\n const min = 0;\r\n const max = 100;\r\n const throttle = 0.001;\r\n\r\n if (value <= min || reducedMotion) {\r\n return min;\r\n } else if (value >= max) {\r\n return max * throttle;\r\n } else {\r\n return value * throttle;\r\n }\r\n}\r\n\r\nexport function PixelCard({\r\n variant = \"default\",\r\n gap,\r\n speed,\r\n colors,\r\n noFocus,\r\n className = \"\",\r\n children,\r\n}: PixelCardProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const canvasRef = useRef<HTMLCanvasElement>(null);\r\n const pixelsRef = useRef<Pixel[]>([]);\r\n const animationRef = useRef<ReturnType<typeof requestAnimationFrame> | null>(\r\n null\r\n );\r\n const timePreviousRef = useRef(\r\n typeof performance !== \"undefined\" ? performance.now() : 0\r\n );\r\n const reducedMotion = useRef(\r\n typeof window !== \"undefined\"\r\n ? window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches\r\n : false\r\n ).current;\r\n\r\n const variantCfg = VARIANTS[variant] || VARIANTS.default;\r\n const finalGap = gap ?? variantCfg.gap;\r\n const finalSpeed = speed ?? variantCfg.speed;\r\n const finalColors = colors ?? variantCfg.colors;\r\n const finalNoFocus = noFocus ?? variantCfg.noFocus;\r\n\r\n const initPixels = () => {\r\n if (!containerRef.current || !canvasRef.current) return;\r\n\r\n const rect = containerRef.current.getBoundingClientRect();\r\n const width = Math.floor(rect.width) || 300;\r\n const height = Math.floor(rect.height) || 400;\r\n const ctx = canvasRef.current.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n canvasRef.current.width = width;\r\n canvasRef.current.height = height;\r\n canvasRef.current.style.width = `${width}px`;\r\n canvasRef.current.style.height = `${height}px`;\r\n\r\n const colorsArray = finalColors.split(\",\").map((c) => c.trim());\r\n const pxs: Pixel[] = [];\r\n const gapValue = Math.max(parseInt(finalGap.toString(), 10), 3);\r\n\r\n for (let x = 0; x < width; x += gapValue) {\r\n for (let y = 0; y < height; y += gapValue) {\r\n const color = colorsArray[Math.floor(Math.random() * colorsArray.length)];\r\n const dx = x - width / 2;\r\n const dy = y - height / 2;\r\n const distance = Math.sqrt(dx * dx + dy * dy);\r\n const delay = reducedMotion ? 0 : distance;\r\n pxs.push(\r\n new Pixel(\r\n canvasRef.current!,\r\n ctx,\r\n x,\r\n y,\r\n color,\r\n getEffectiveSpeed(finalSpeed, reducedMotion),\r\n delay\r\n )\r\n );\r\n }\r\n }\r\n pixelsRef.current = pxs;\r\n };\r\n\r\n const doAnimate = (fnName: \"appear\" | \"disappear\") => {\r\n animationRef.current = requestAnimationFrame(() => doAnimate(fnName));\r\n const timeNow = performance.now();\r\n const timePassed = timeNow - timePreviousRef.current;\r\n const timeInterval = 1000 / 60;\r\n\r\n if (timePassed < timeInterval) return;\r\n timePreviousRef.current = timeNow - (timePassed % timeInterval);\r\n\r\n const ctx = canvasRef.current?.getContext(\"2d\");\r\n if (!ctx || !canvasRef.current) return;\r\n\r\n ctx.clearRect(0, 0, canvasRef.current.width, canvasRef.current.height);\r\n\r\n let allIdle = true;\r\n for (let i = 0; i < pixelsRef.current.length; i++) {\r\n const pixel = pixelsRef.current[i];\r\n pixel[fnName]();\r\n if (!pixel.isIdle) {\r\n allIdle = false;\r\n }\r\n }\r\n if (allIdle && animationRef.current) {\r\n cancelAnimationFrame(animationRef.current);\r\n }\r\n };\r\n\r\n const handleAnimation = (name: \"appear\" | \"disappear\") => {\r\n if (animationRef.current !== null) {\r\n cancelAnimationFrame(animationRef.current);\r\n }\r\n animationRef.current = requestAnimationFrame(() => doAnimate(name));\r\n };\r\n\r\n const onMouseEnter = () => handleAnimation(\"appear\");\r\n const onMouseLeave = () => handleAnimation(\"disappear\");\r\n const onFocus: React.FocusEventHandler<HTMLDivElement> = (e) => {\r\n if (e.currentTarget.contains(e.relatedTarget as Node)) return;\r\n handleAnimation(\"appear\");\r\n };\r\n const onBlur: React.FocusEventHandler<HTMLDivElement> = (e) => {\r\n if (e.currentTarget.contains(e.relatedTarget as Node)) return;\r\n handleAnimation(\"disappear\");\r\n };\r\n\r\n useEffect(() => {\r\n initPixels();\r\n const observer = new ResizeObserver(() => {\r\n initPixels();\r\n });\r\n if (containerRef.current) {\r\n observer.observe(containerRef.current);\r\n }\r\n return () => {\r\n observer.disconnect();\r\n if (animationRef.current !== null) {\r\n cancelAnimationFrame(animationRef.current);\r\n }\r\n };\r\n }, [finalGap, finalSpeed, finalColors, finalNoFocus]);\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={cn(\r\n \"relative overflow-hidden rounded-xl border border-zinc-200 dark:border-zinc-800 bg-zinc-100 dark:bg-zinc-900\",\r\n className\r\n )}\r\n onMouseEnter={onMouseEnter}\r\n onMouseLeave={onMouseLeave}\r\n onFocus={finalNoFocus ? undefined : onFocus}\r\n onBlur={finalNoFocus ? undefined : onBlur}\r\n tabIndex={finalNoFocus ? -1 : 0}\r\n >\r\n <canvas\r\n className=\"absolute inset-0 w-full h-full pointer-events-none\"\r\n ref={canvasRef}\r\n />\r\n <div className=\"relative z-10\">{children}</div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default PixelCard;\r\n","\"use client\";\r\n\r\nimport { useRef, useState, ReactNode, CSSProperties } from \"react\";\r\nimport { motion, useMotionValue, useSpring, SpringOptions } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TiltedCardProps {\r\n imageSrc: string;\r\n altText?: string;\r\n captionText?: string;\r\n containerHeight?: CSSProperties[\"height\"];\r\n containerWidth?: CSSProperties[\"width\"];\r\n imageHeight?: CSSProperties[\"height\"];\r\n imageWidth?: CSSProperties[\"width\"];\r\n scaleOnHover?: number;\r\n rotateAmplitude?: number;\r\n showMobileWarning?: boolean;\r\n showTooltip?: boolean;\r\n overlayContent?: ReactNode;\r\n displayOverlayContent?: boolean;\r\n className?: string;\r\n}\r\n\r\nconst springValues: SpringOptions = {\r\n damping: 30,\r\n stiffness: 100,\r\n mass: 2,\r\n};\r\n\r\nexport function TiltedCard({\r\n imageSrc,\r\n altText = \"Tilted card image\",\r\n captionText = \"\",\r\n containerHeight = \"300px\",\r\n containerWidth = \"100%\",\r\n imageHeight = \"300px\",\r\n imageWidth = \"300px\",\r\n scaleOnHover = 1.1,\r\n rotateAmplitude = 14,\r\n showMobileWarning = false,\r\n showTooltip = true,\r\n overlayContent = null,\r\n displayOverlayContent = false,\r\n className,\r\n}: TiltedCardProps) {\r\n const ref = useRef<HTMLElement>(null);\r\n\r\n const x = useMotionValue(0);\r\n const y = useMotionValue(0);\r\n const rotateX = useSpring(useMotionValue(0), springValues);\r\n const rotateY = useSpring(useMotionValue(0), springValues);\r\n const scale = useSpring(1, springValues);\r\n const opacity = useSpring(0);\r\n const rotateFigcaption = useSpring(0, {\r\n stiffness: 350,\r\n damping: 30,\r\n mass: 1,\r\n });\r\n\r\n const [lastY, setLastY] = useState<number>(0);\r\n\r\n function handleMouse(e: React.MouseEvent<HTMLElement>) {\r\n if (!ref.current) return;\r\n\r\n const rect = ref.current.getBoundingClientRect();\r\n const offsetX = e.clientX - rect.left - rect.width / 2;\r\n const offsetY = e.clientY - rect.top - rect.height / 2;\r\n\r\n const rotationX = (offsetY / (rect.height / 2)) * -rotateAmplitude;\r\n const rotationY = (offsetX / (rect.width / 2)) * rotateAmplitude;\r\n\r\n rotateX.set(rotationX);\r\n rotateY.set(rotationY);\r\n\r\n x.set(e.clientX - rect.left);\r\n y.set(e.clientY - rect.top);\r\n\r\n const velocityY = offsetY - lastY;\r\n rotateFigcaption.set(-velocityY * 0.6);\r\n setLastY(offsetY);\r\n }\r\n\r\n function handleMouseEnter() {\r\n scale.set(scaleOnHover);\r\n opacity.set(1);\r\n }\r\n\r\n function handleMouseLeave() {\r\n opacity.set(0);\r\n scale.set(1);\r\n rotateX.set(0);\r\n rotateY.set(0);\r\n rotateFigcaption.set(0);\r\n }\r\n\r\n return (\r\n <figure\r\n ref={ref}\r\n className={cn(\r\n \"relative flex items-center justify-center [perspective:800px]\",\r\n className\r\n )}\r\n style={{\r\n height: containerHeight,\r\n width: containerWidth,\r\n }}\r\n onMouseMove={handleMouse}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n >\r\n {showMobileWarning && (\r\n <div className=\"absolute top-2 left-2 text-xs text-muted-foreground md:hidden\">\r\n Best viewed on desktop\r\n </div>\r\n )}\r\n\r\n <motion.div\r\n className=\"relative [transform-style:preserve-3d]\"\r\n style={{\r\n width: imageWidth,\r\n height: imageHeight,\r\n rotateX,\r\n rotateY,\r\n scale,\r\n }}\r\n >\r\n <motion.img\r\n src={imageSrc}\r\n alt={altText}\r\n className=\"absolute inset-0 w-full h-full object-cover rounded-lg\"\r\n style={{\r\n width: imageWidth,\r\n height: imageHeight,\r\n }}\r\n />\r\n\r\n {displayOverlayContent && overlayContent && (\r\n <motion.div className=\"absolute inset-0 flex items-center justify-center bg-black/50 rounded-lg\">\r\n {overlayContent}\r\n </motion.div>\r\n )}\r\n </motion.div>\r\n\r\n {showTooltip && captionText && (\r\n <motion.figcaption\r\n className=\"pointer-events-none absolute px-3 py-1.5 text-sm bg-white dark:bg-zinc-900 rounded-full shadow-lg whitespace-nowrap\"\r\n style={{\r\n x,\r\n y,\r\n opacity,\r\n rotate: rotateFigcaption,\r\n }}\r\n >\r\n {captionText}\r\n </motion.figcaption>\r\n )}\r\n </figure>\r\n );\r\n}\r\n\r\nexport default TiltedCard;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, ReactNode } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface InfiniteScrollProps {\r\n children: ReactNode;\r\n speed?: number;\r\n direction?: \"left\" | \"right\";\r\n pauseOnHover?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function InfiniteScroll({\r\n children,\r\n speed = 30,\r\n direction = \"left\",\r\n pauseOnHover = true,\r\n className,\r\n}: InfiniteScrollProps) {\r\n const scrollerRef = useRef<HTMLDivElement>(null);\r\n const scrollerInnerRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (!scrollerRef.current || !scrollerInnerRef.current) return;\r\n\r\n const scrollerContent = Array.from(scrollerInnerRef.current.children);\r\n\r\n scrollerContent.forEach((item) => {\r\n const duplicatedItem = item.cloneNode(true);\r\n if (scrollerInnerRef.current) {\r\n scrollerInnerRef.current.appendChild(duplicatedItem);\r\n }\r\n });\r\n\r\n scrollerRef.current.style.setProperty(\"--animation-duration\", `${speed}s`);\r\n scrollerRef.current.style.setProperty(\r\n \"--animation-direction\",\r\n direction === \"left\" ? \"forwards\" : \"reverse\"\r\n );\r\n }, [speed, direction]);\r\n\r\n return (\r\n <div\r\n ref={scrollerRef}\r\n className={cn(\r\n \"group relative flex overflow-hidden [mask-image:linear-gradient(to_right,transparent,white_20%,white_80%,transparent)]\",\r\n className\r\n )}\r\n >\r\n <div\r\n ref={scrollerInnerRef}\r\n className={cn(\r\n \"flex min-w-full shrink-0 gap-4 py-4 w-max flex-nowrap\",\r\n \"animate-scroll\",\r\n pauseOnHover && \"group-hover:[animation-play-state:paused]\"\r\n )}\r\n style={{\r\n animation: `scroll var(--animation-duration, 30s) var(--animation-direction, forwards) linear infinite`,\r\n }}\r\n >\r\n {children}\r\n </div>\r\n <style jsx>{`\r\n @keyframes scroll {\r\n from {\r\n transform: translateX(0);\r\n }\r\n to {\r\n transform: translateX(calc(-50% - 0.5rem));\r\n }\r\n }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default InfiniteScroll;\r\n","\"use client\";\r\n\r\nimport { useState, useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingState {\r\n text: string;\r\n}\r\n\r\ninterface MultiStepLoaderProps {\r\n loadingStates: LoadingState[];\r\n loading: boolean;\r\n duration?: number;\r\n loop?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function MultiStepLoader({\r\n loadingStates,\r\n loading,\r\n duration = 2000,\r\n loop = true,\r\n className,\r\n}: MultiStepLoaderProps) {\r\n const [currentState, setCurrentState] = useState(0);\r\n\r\n useEffect(() => {\r\n if (!loading) {\r\n setCurrentState(0);\r\n return;\r\n }\r\n\r\n const interval = setInterval(() => {\r\n setCurrentState((prevState) => {\r\n if (prevState === loadingStates.length - 1) {\r\n return loop ? 0 : prevState;\r\n }\r\n return prevState + 1;\r\n });\r\n }, duration / loadingStates.length);\r\n\r\n return () => clearInterval(interval);\r\n }, [loading, loadingStates.length, duration, loop]);\r\n\r\n return (\r\n <AnimatePresence>\r\n {loading && (\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n className={cn(\r\n \"fixed inset-0 z-[100] flex items-center justify-center bg-black/80 backdrop-blur-sm\",\r\n className\r\n )}\r\n >\r\n <div className=\"bg-white dark:bg-zinc-900 rounded-lg p-8 shadow-2xl max-w-md w-full mx-4\">\r\n <div className=\"text-center\">\r\n <div className=\"mb-4\">\r\n <div className=\"inline-flex items-center justify-center w-16 h-16 bg-blue-100 dark:bg-blue-900/20 rounded-full mb-4\">\r\n <div className=\"w-8 h-8 border-4 border-blue-600 border-t-transparent rounded-full animate-spin\" />\r\n </div>\r\n </div>\r\n\r\n <AnimatePresence mode=\"wait\">\r\n <motion.p\r\n key={currentState}\r\n initial={{ opacity: 0, y: 10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: -10 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"text-lg font-medium text-zinc-900 dark:text-white\"\r\n >\r\n {loadingStates[currentState]?.text}\r\n </motion.p>\r\n </AnimatePresence>\r\n\r\n <div className=\"mt-6 flex justify-center\">\r\n <div className=\"flex space-x-1\">\r\n {loadingStates.map((_, index) => (\r\n <div\r\n key={index}\r\n className={cn(\r\n \"h-2 w-2 rounded-full transition-colors duration-200\",\r\n index === currentState\r\n ? \"bg-blue-600\"\r\n : index < currentState\r\n ? \"bg-green-500\"\r\n : \"bg-zinc-300 dark:bg-zinc-600\"\r\n )}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport default MultiStepLoader;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ASCIITextProps {\r\n text: string;\r\n enableWaves?: boolean;\r\n asciiFontSize?: number;\r\n textFontSize?: number;\r\n textColor?: string;\r\n planeBaseHeight?: number;\r\n className?: string;\r\n}\r\n\r\nconst ASCII_CHARS = ' .:-=+*#%@';\r\n\r\nexport function ASCIIText({\r\n text,\r\n enableWaves = true,\r\n asciiFontSize = 8,\r\n textFontSize = 200,\r\n textColor = \"#ffffff\",\r\n planeBaseHeight = 0.2,\r\n className,\r\n}: ASCIITextProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const [asciiArt, setAsciiArt] = useState<string>(\"\");\r\n\r\n useEffect(() => {\r\n const canvas = document.createElement(\"canvas\");\r\n const ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n // Set canvas size based on text\r\n ctx.font = `bold ${textFontSize}px monospace`;\r\n const metrics = ctx.measureText(text);\r\n const width = Math.ceil(metrics.width);\r\n const height = textFontSize * 1.2;\r\n\r\n canvas.width = width;\r\n canvas.height = height;\r\n\r\n // Draw text\r\n ctx.fillStyle = textColor;\r\n ctx.font = `bold ${textFontSize}px monospace`;\r\n ctx.textBaseline = \"middle\";\r\n ctx.fillText(text, 0, height / 2);\r\n\r\n // Get image data\r\n const imageData = ctx.getImageData(0, 0, width, height);\r\n const pixels = imageData.data;\r\n\r\n // Convert to ASCII\r\n const cols = Math.floor(width / asciiFontSize);\r\n const rows = Math.floor(height / asciiFontSize);\r\n let ascii = \"\";\r\n\r\n for (let y = 0; y < rows; y++) {\r\n for (let x = 0; x < cols; x++) {\r\n const px = x * asciiFontSize;\r\n const py = y * asciiFontSize;\r\n const idx = (py * width + px) * 4;\r\n const brightness = (pixels[idx] + pixels[idx + 1] + pixels[idx + 2]) / 3;\r\n const charIdx = Math.floor((brightness / 255) * (ASCII_CHARS.length - 1));\r\n ascii += ASCII_CHARS[charIdx];\r\n }\r\n ascii += \"\\n\";\r\n }\r\n\r\n setAsciiArt(ascii);\r\n }, [text, asciiFontSize, textFontSize, textColor]);\r\n\r\n return (\r\n <div ref={containerRef} className={cn(\"font-mono whitespace-pre\", className)}>\r\n <pre\r\n style={{\r\n fontSize: `${asciiFontSize}px`,\r\n lineHeight: 1,\r\n color: textColor,\r\n }}\r\n >\r\n {asciiArt}\r\n </pre>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ASCIIText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FallingTextProps {\r\n text: string;\r\n highlightWords?: string[];\r\n highlightClass?: string;\r\n trigger?: \"auto\" | \"hover\" | \"click\" | \"scroll\";\r\n delay?: number;\r\n staggerDelay?: number;\r\n className?: string;\r\n}\r\n\r\nexport function FallingText({\r\n text,\r\n highlightWords = [],\r\n highlightClass = \"text-primary\",\r\n trigger = \"auto\",\r\n delay = 0,\r\n staggerDelay = 0.05,\r\n className,\r\n}: FallingTextProps) {\r\n const [isVisible, setIsVisible] = useState(trigger === \"auto\");\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const words = text.split(\" \");\r\n\r\n useEffect(() => {\r\n if (trigger === \"scroll\" && containerRef.current) {\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setIsVisible(true);\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n observer.observe(containerRef.current);\r\n return () => observer.disconnect();\r\n }\r\n }, [trigger]);\r\n\r\n const handleInteraction = () => {\r\n if (trigger === \"hover\" || trigger === \"click\") {\r\n setIsVisible(true);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={cn(\"flex flex-wrap gap-2\", className)}\r\n onMouseEnter={trigger === \"hover\" ? handleInteraction : undefined}\r\n onClick={trigger === \"click\" ? handleInteraction : undefined}\r\n >\r\n <AnimatePresence>\r\n {words.map((word, index) => {\r\n const isHighlighted = highlightWords.includes(word.toLowerCase());\r\n return (\r\n <motion.span\r\n key={`${word}-${index}`}\r\n initial={{ opacity: 0, y: -50, rotateX: -90 }}\r\n animate={\r\n isVisible\r\n ? { opacity: 1, y: 0, rotateX: 0 }\r\n : { opacity: 0, y: -50, rotateX: -90 }\r\n }\r\n transition={{\r\n duration: 0.5,\r\n delay: delay + index * staggerDelay,\r\n ease: [0.25, 0.46, 0.45, 0.94],\r\n }}\r\n className={cn(isHighlighted && highlightClass)}\r\n >\r\n {word}\r\n </motion.span>\r\n );\r\n })}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default FallingText;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { motion, useMotionValue, useSpring, useTransform } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface AnimatedCircularProgressBarProps {\r\n max?: number;\r\n min?: number;\r\n value?: number;\r\n gaugePrimaryColor?: string;\r\n gaugeSecondaryColor?: string;\r\n className?: string;\r\n size?: number;\r\n strokeWidth?: number;\r\n showValue?: boolean;\r\n duration?: number;\r\n autoAnimate?: boolean;\r\n}\r\n\r\nexport function AnimatedCircularProgressBar({\r\n max = 100,\r\n min = 0,\r\n value = 0,\r\n gaugePrimaryColor = \"#a1a1aa\",\r\n gaugeSecondaryColor = \"#27272a\",\r\n className,\r\n size = 200,\r\n strokeWidth = 8,\r\n showValue = true,\r\n duration = 2,\r\n autoAnimate = true,\r\n}: AnimatedCircularProgressBarProps) {\r\n const [currentValue, setCurrentValue] = useState(autoAnimate ? min : value);\r\n \r\n const radius = (size - strokeWidth) / 2;\r\n const circumference = 2 * Math.PI * radius;\r\n \r\n const motionValue = useMotionValue(currentValue);\r\n const springValue = useSpring(motionValue, {\r\n damping: 30,\r\n stiffness: 100,\r\n });\r\n \r\n const strokeDasharray = useTransform(\r\n springValue,\r\n [min, max],\r\n [0, circumference]\r\n );\r\n \r\n const displayValue = useTransform(springValue, (latest) => Math.round(latest));\r\n\r\n useEffect(() => {\r\n if (autoAnimate) {\r\n const interval = setInterval(() => {\r\n setCurrentValue(prev => {\r\n const next = prev + 1;\r\n if (next > max) {\r\n return min;\r\n }\r\n return next;\r\n });\r\n }, duration * 10);\r\n\r\n return () => clearInterval(interval);\r\n } else {\r\n setCurrentValue(value);\r\n }\r\n }, [autoAnimate, value, max, min, duration]);\r\n\r\n useEffect(() => {\r\n motionValue.set(currentValue);\r\n }, [currentValue, motionValue]);\r\n\r\n return (\r\n <div \r\n className={cn(\"relative flex items-center justify-center\", className)}\r\n style={{ width: size, height: size }}\r\n >\r\n <svg\r\n width={size}\r\n height={size}\r\n className=\"transform -rotate-90\"\r\n >\r\n <circle\r\n cx={size / 2}\r\n cy={size / 2}\r\n r={radius}\r\n stroke={gaugeSecondaryColor}\r\n strokeWidth={strokeWidth}\r\n fill=\"none\"\r\n className=\"opacity-20\"\r\n />\r\n \r\n <motion.circle\r\n cx={size / 2}\r\n cy={size / 2}\r\n r={radius}\r\n stroke={gaugePrimaryColor}\r\n strokeWidth={strokeWidth}\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeDasharray={circumference}\r\n strokeDashoffset={useTransform(strokeDasharray, (latest) => circumference - latest)}\r\n className=\"transition-all duration-300 ease-in-out\"\r\n style={{\r\n filter: \"drop-shadow(0 0 6px rgba(59, 130, 246, 0.4))\",\r\n }}\r\n />\r\n \r\n <motion.circle\r\n cx={size / 2}\r\n cy={size / 2}\r\n r={radius}\r\n stroke={gaugePrimaryColor}\r\n strokeWidth={strokeWidth / 2}\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeDasharray={circumference}\r\n strokeDashoffset={useTransform(strokeDasharray, (latest) => circumference - latest)}\r\n className=\"opacity-50 blur-sm\"\r\n />\r\n </svg>\r\n \r\n {showValue && (\r\n <div className=\"absolute inset-0 flex flex-col items-center justify-center\">\r\n <motion.span \r\n className=\"text-3xl font-semibold text-zinc-900 dark:text-zinc-100\"\r\n style={{ fontSize: size / 8 }}\r\n >\r\n {displayValue}\r\n </motion.span>\r\n <span \r\n className=\"text-sm text-zinc-500\"\r\n style={{ fontSize: size / 16 }}\r\n >\r\n {autoAnimate ? \"Auto\" : \"%\"}\r\n </span>\r\n </div>\r\n )}\r\n \r\n <div className=\"absolute inset-0\">\r\n {[...Array(8)].map((_, i) => {\r\n const angle = (i * 45) - 90;\r\n const x = size / 2 + (radius + strokeWidth) * Math.cos((angle * Math.PI) / 180);\r\n const y = size / 2 + (radius + strokeWidth) * Math.sin((angle * Math.PI) / 180);\r\n \r\n return (\r\n <motion.div\r\n key={i}\r\n className=\"absolute w-1 h-1 bg-zinc-500 rounded-full\"\r\n style={{\r\n left: x - 2,\r\n top: y - 2,\r\n }}\r\n animate={{\r\n opacity: [0.3, 1, 0.3],\r\n scale: [0.8, 1.2, 0.8],\r\n }}\r\n transition={{\r\n duration: 2,\r\n repeat: Infinity,\r\n delay: i * 0.2,\r\n }}\r\n />\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default AnimatedCircularProgressBar;\r\n","\"use client\";\r\n\r\ninterface LoadingInvertProps {\r\n text?: string;\r\n className?: string;\r\n}\r\n\r\nexport function LoadingInvert({ text = \"Loading...\", className = \"\" }: LoadingInvertProps) {\r\n return (\r\n <div className={`w-full h-full min-h-[400px] flex items-center justify-center ${className}`}>\r\n <div className=\"relative h-fit min-w-12 w-fit text-4xl font-bold tracking-wider text-black dark:text-white\">\r\n <p className=\"relative z-0\">{text}</p>\r\n <div \r\n className=\"absolute h-full aspect-square left-0 top-0 rounded-[20%] bg-foreground/10 backdrop-invert\"\r\n style={{\r\n animation: \"invert-move 2s ease-in-out infinite\"\r\n }}\r\n />\r\n <style dangerouslySetInnerHTML={{\r\n __html: `\r\n @keyframes invert-move { 50% { left: calc(100% - 3rem); } }\r\n `\r\n }} />\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingInvert;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface LoaderProps extends React.HTMLAttributes<HTMLDivElement> {\r\n title?: string;\r\n subtitle?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function Loader({\r\n title = \"Configuring your account...\",\r\n subtitle = \"Please wait while we prepare everything for you\",\r\n size = \"md\",\r\n className,\r\n ...props\r\n}: LoaderProps) {\r\n const sizeConfig = {\r\n sm: {\r\n container: \"size-20\",\r\n titleClass: \"text-sm/tight font-medium\",\r\n subtitleClass: \"text-xs/relaxed\",\r\n spacing: \"space-y-2\",\r\n maxWidth: \"max-w-48\",\r\n },\r\n md: {\r\n container: \"size-32\",\r\n titleClass: \"text-base/snug font-medium\",\r\n subtitleClass: \"text-sm/relaxed\",\r\n spacing: \"space-y-3\",\r\n maxWidth: \"max-w-56\",\r\n },\r\n lg: {\r\n container: \"size-40\",\r\n titleClass: \"text-lg/tight font-semibold\",\r\n subtitleClass: \"text-base/relaxed\",\r\n spacing: \"space-y-4\",\r\n maxWidth: \"max-w-64\",\r\n },\r\n };\r\n\r\n const config = sizeConfig[size];\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"flex flex-col items-center justify-center gap-8 p-8\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <motion.div\r\n className={cn(\"relative\", config.container)}\r\n animate={{\r\n scale: [1, 1.02, 1],\r\n }}\r\n transition={{\r\n duration: 4,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full\"\r\n style={{\r\n background: `conic-gradient(from 0deg, transparent 0deg, rgb(0, 0, 0) 90deg, transparent 180deg)`,\r\n mask: `radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)`,\r\n WebkitMask: `radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)`,\r\n opacity: 0.8,\r\n }}\r\n animate={{\r\n rotate: [0, 360],\r\n }}\r\n transition={{\r\n duration: 3,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full\"\r\n style={{\r\n background: `conic-gradient(from 0deg, transparent 0deg, rgb(0, 0, 0) 120deg, rgba(0, 0, 0, 0.5) 240deg, transparent 360deg)`,\r\n mask: `radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)`,\r\n WebkitMask: `radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)`,\r\n opacity: 0.9,\r\n }}\r\n animate={{\r\n rotate: [0, 360],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n />\r\n\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full dark:block hidden\"\r\n style={{\r\n background: `conic-gradient(from 0deg, transparent 0deg, rgb(255, 255, 255) 90deg, transparent 180deg)`,\r\n mask: `radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)`,\r\n WebkitMask: `radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)`,\r\n opacity: 0.8,\r\n }}\r\n animate={{\r\n rotate: [0, 360],\r\n }}\r\n transition={{\r\n duration: 3,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full dark:block hidden\"\r\n style={{\r\n background: `conic-gradient(from 0deg, transparent 0deg, rgb(255, 255, 255) 120deg, rgba(255, 255, 255, 0.5) 240deg, transparent 360deg)`,\r\n mask: `radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)`,\r\n WebkitMask: `radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)`,\r\n opacity: 0.9,\r\n }}\r\n animate={{\r\n rotate: [0, 360],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n />\r\n </motion.div>\r\n\r\n <motion.div\r\n className={cn(\"text-center\", config.spacing, config.maxWidth)}\r\n initial={{ opacity: 0, y: 12 }}\r\n animate={{\r\n opacity: 1,\r\n y: 0,\r\n }}\r\n transition={{\r\n delay: 0.4,\r\n duration: 1,\r\n ease: [0.4, 0, 0.2, 1],\r\n }}\r\n >\r\n <motion.h1\r\n className={cn(\r\n config.titleClass,\r\n \"text-black/90 dark:text-white/90 font-medium tracking-[-0.02em] leading-[1.15] antialiased\"\r\n )}\r\n initial={{ opacity: 0, y: 12 }}\r\n animate={{\r\n opacity: 1,\r\n y: 0,\r\n }}\r\n transition={{\r\n delay: 0.6,\r\n duration: 0.8,\r\n ease: [0.4, 0, 0.2, 1],\r\n }}\r\n >\r\n <motion.span\r\n animate={{\r\n opacity: [0.9, 0.7, 0.9],\r\n }}\r\n transition={{\r\n duration: 3,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n >\r\n {title}\r\n </motion.span>\r\n </motion.h1>\r\n\r\n <motion.p\r\n className={cn(\r\n config.subtitleClass,\r\n \"text-black/60 dark:text-white/60 font-normal tracking-[-0.01em] leading-[1.45] antialiased\"\r\n )}\r\n initial={{ opacity: 0, y: 8 }}\r\n animate={{\r\n opacity: 1,\r\n y: 0,\r\n }}\r\n transition={{\r\n delay: 0.8,\r\n duration: 0.8,\r\n ease: [0.4, 0, 0.2, 1],\r\n }}\r\n >\r\n <motion.span\r\n animate={{\r\n opacity: [0.6, 0.4, 0.6],\r\n }}\r\n transition={{\r\n duration: 4,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n >\r\n {subtitle}\r\n </motion.span>\r\n </motion.p>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Loader;\r\n","\"use client\";\r\n\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface AnimatedThemeTogglerProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n onChange?: (isDark: boolean) => void;\r\n}\r\n\r\nexport function AnimatedThemeToggler({ \r\n className, \r\n size = \"md\",\r\n onChange \r\n}: AnimatedThemeTogglerProps) {\r\n const [isDark, setIsDark] = useState(false);\r\n\r\n useEffect(() => {\r\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\r\n setIsDark(prefersDark);\r\n }, []);\r\n\r\n const toggleTheme = () => {\r\n const newTheme = !isDark;\r\n setIsDark(newTheme);\r\n \r\n if (newTheme) {\r\n document.documentElement.classList.add(\"dark\");\r\n } else {\r\n document.documentElement.classList.remove(\"dark\");\r\n }\r\n \r\n onChange?.(newTheme);\r\n };\r\n\r\n const sizeClasses = {\r\n sm: \"w-12 h-6\",\r\n md: \"w-14 h-7\",\r\n lg: \"w-16 h-8\"\r\n };\r\n\r\n const iconSizes = {\r\n sm: \"w-4 h-4\",\r\n md: \"w-5 h-5\",\r\n lg: \"w-6 h-6\"\r\n };\r\n\r\n return (\r\n <motion.button\r\n onClick={toggleTheme}\r\n className={cn(\r\n \"relative rounded-full border transition-all duration-300 ease-in-out focus:outline-none focus:ring-2 focus:ring-zinc-500 focus:ring-offset-2 focus:ring-offset-zinc-900\",\r\n sizeClasses[size],\r\n isDark \r\n ? \"bg-zinc-800 border-zinc-700\" \r\n : \"bg-zinc-700 border-zinc-600\",\r\n className\r\n )}\r\n whileTap={{ scale: 0.95 }}\r\n initial={false}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full\"\r\n animate={{\r\n background: isDark \r\n ? \"linear-gradient(135deg, #27272a 0%, #18181b 100%)\"\r\n : \"linear-gradient(135deg, #3f3f46 0%, #27272a 100%)\"\r\n }}\r\n transition={{ duration: 0.3 }}\r\n />\r\n \r\n <motion.div\r\n className={cn(\r\n \"absolute top-0.5 rounded-full shadow-lg flex items-center justify-center\",\r\n size === \"sm\" ? \"w-5 h-5\" : size === \"md\" ? \"w-6 h-6\" : \"w-7 h-7\",\r\n isDark ? \"bg-zinc-300\" : \"bg-zinc-100\"\r\n )}\r\n animate={{\r\n x: isDark ? (size === \"sm\" ? 24 : size === \"md\" ? 28 : 32) : 2,\r\n }}\r\n transition={{\r\n type: \"spring\",\r\n stiffness: 500,\r\n damping: 30\r\n }}\r\n >\r\n <AnimatePresence mode=\"wait\">\r\n {isDark ? (\r\n <motion.svg\r\n key=\"moon\"\r\n className={cn(\"text-zinc-700\", iconSizes[size])}\r\n fill=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n initial={{ opacity: 0, rotate: -90 }}\r\n animate={{ opacity: 1, rotate: 0 }}\r\n exit={{ opacity: 0, rotate: 90 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n <path d=\"M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z\" />\r\n </motion.svg>\r\n ) : (\r\n <motion.svg\r\n key=\"sun\"\r\n className={cn(\"text-zinc-600\", iconSizes[size])}\r\n fill=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n initial={{ opacity: 0, rotate: -90 }}\r\n animate={{ opacity: 1, rotate: 0 }}\r\n exit={{ opacity: 0, rotate: 90 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n <path d=\"M12 2.25a.75.75 0 01.75.75v2.25a.75.75 0 01-1.5 0V3a.75.75 0 01.75-.75zM7.5 12a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0zM18.894 6.166a.75.75 0 00-1.06-1.06l-1.591 1.59a.75.75 0 101.06 1.061l1.591-1.59zM21.75 12a.75.75 0 01-.75.75h-2.25a.75.75 0 010-1.5H21a.75.75 0 01.75.75zM17.834 18.894a.75.75 0 001.06-1.06l-1.59-1.591a.75.75 0 10-1.061 1.06l1.59 1.591zM12 18a.75.75 0 01.75.75V21a.75.75 0 01-1.5 0v-2.25A.75.75 0 0112 18zM7.758 17.303a.75.75 0 00-1.061-1.06l-1.591 1.59a.75.75 0 001.06 1.061l1.591-1.59zM6 12a.75.75 0 01-.75.75H3a.75.75 0 010-1.5h2.25A.75.75 0 016 12zM6.697 7.757a.75.75 0 001.06-1.06l-1.59-1.591a.75.75 0 00-1.061 1.06l1.59 1.591z\" />\r\n </motion.svg>\r\n )}\r\n </AnimatePresence>\r\n </motion.div>\r\n \r\n <motion.div\r\n className=\"absolute inset-0 rounded-full opacity-20\"\r\n animate={{\r\n boxShadow: isDark \r\n ? \"0 0 20px rgba(161, 161, 170, 0.2)\" \r\n : \"0 0 20px rgba(161, 161, 170, 0.3)\"\r\n }}\r\n transition={{ duration: 0.3 }}\r\n />\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default AnimatedThemeToggler;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface ShimmerEffectProps {\r\n children?: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function ShimmerEffect({\r\n children,\r\n className,\r\n}: ShimmerEffectProps) {\r\n return (\r\n <div className={cn(\"relative w-full min-h-[500px] flex items-center justify-center overflow-hidden bg-white dark:bg-zinc-900 rounded-xl border border-zinc-200 dark:border-zinc-800\", className)}>\r\n <motion.div\r\n className=\"absolute inset-0\"\r\n style={{\r\n background: \"linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.08) 50%, transparent 100%)\",\r\n }}\r\n animate={{\r\n x: [\"-200%\", \"200%\"],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n \r\n <motion.div\r\n className=\"absolute inset-0\"\r\n style={{\r\n background: \"linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.05) 50%, transparent 100%)\",\r\n }}\r\n animate={{\r\n x: [\"-200%\", \"200%\"],\r\n }}\r\n transition={{\r\n duration: 3,\r\n delay: 0.5,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n \r\n <motion.div\r\n className=\"absolute inset-0\"\r\n style={{\r\n background: \"linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.03) 50%, transparent 100%)\",\r\n }}\r\n animate={{\r\n x: [\"-200%\", \"200%\"],\r\n }}\r\n transition={{\r\n duration: 3.5,\r\n delay: 1,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n \r\n <motion.div\r\n className=\"absolute inset-0 hidden dark:block\"\r\n style={{\r\n background: \"linear-gradient(90deg, transparent 0%, rgba(161,161,170,0.15) 50%, transparent 100%)\",\r\n }}\r\n animate={{\r\n x: [\"-200%\", \"200%\"],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n \r\n <div className=\"absolute inset-0 opacity-10 dark:opacity-5\" style={{\r\n backgroundImage: \"radial-gradient(circle at 2px 2px, #71717a 1px, transparent 0)\",\r\n backgroundSize: \"40px 40px\"\r\n }} />\r\n \r\n <div className=\"relative z-10 text-center px-8\">\r\n {children || (\r\n <motion.div\r\n initial={{ opacity: 0, y: 20 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.8 }}\r\n >\r\n <h2 className=\"text-7xl font-bold text-zinc-900 dark:text-zinc-100 mb-4 tracking-tight\" style={{\r\n fontFamily: \"system-ui, -apple-system, sans-serif\",\r\n letterSpacing: \"-0.02em\"\r\n }}>\r\n SHIMMER WAVE\r\n </h2>\r\n <p className=\"text-xl text-zinc-500 font-light tracking-wide\">\r\n Advanced Shimmer Effect\r\n </p>\r\n </motion.div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ShimmerEffect;\r\n","\"use client\";\r\n\r\nimport React, { useRef, useLayoutEffect, useState } from \"react\";\r\nimport {\r\n motion,\r\n useScroll,\r\n useSpring,\r\n useTransform,\r\n useMotionValue,\r\n useVelocity,\r\n useAnimationFrame\r\n} from \"framer-motion\";\r\n\r\ninterface VelocityMapping {\r\n input: [number, number];\r\n output: [number, number];\r\n}\r\n\r\ninterface ScrollVelocityProps {\r\n scrollContainerRef?: React.RefObject<HTMLElement>;\r\n texts?: string[];\r\n velocity?: number;\r\n className?: string;\r\n damping?: number;\r\n stiffness?: number;\r\n numCopies?: number;\r\n velocityMapping?: VelocityMapping;\r\n}\r\n\r\nfunction useElementWidth<T extends HTMLElement>(ref: React.RefObject<T | null>): number {\r\n const [width, setWidth] = useState(0);\r\n\r\n useLayoutEffect(() => {\r\n function updateWidth() {\r\n if (ref.current) {\r\n setWidth(ref.current.offsetWidth);\r\n }\r\n }\r\n updateWidth();\r\n window.addEventListener(\"resize\", updateWidth);\r\n return () => window.removeEventListener(\"resize\", updateWidth);\r\n }, [ref]);\r\n\r\n return width;\r\n}\r\n\r\nexport function ScrollVelocity({\r\n scrollContainerRef,\r\n texts = [\"Scroll Velocity\", \"Bynana UI\"],\r\n velocity = 100,\r\n className = \"\",\r\n damping = 50,\r\n stiffness = 400,\r\n numCopies = 6,\r\n velocityMapping = { input: [0, 1000], output: [0, 5] },\r\n}: ScrollVelocityProps) {\r\n function VelocityText({\r\n children,\r\n baseVelocity,\r\n }: {\r\n children: React.ReactNode;\r\n baseVelocity: number;\r\n }) {\r\n const baseX = useMotionValue(0);\r\n const scrollOptions = scrollContainerRef ? { container: scrollContainerRef } : {};\r\n const { scrollY } = useScroll(scrollOptions);\r\n const scrollVelocity = useVelocity(scrollY);\r\n const smoothVelocity = useSpring(scrollVelocity, { damping, stiffness });\r\n const velocityFactor = useTransform(\r\n smoothVelocity,\r\n velocityMapping.input,\r\n velocityMapping.output,\r\n { clamp: false }\r\n );\r\n\r\n const copyRef = useRef<HTMLSpanElement>(null);\r\n const copyWidth = useElementWidth(copyRef);\r\n\r\n function wrap(min: number, max: number, v: number): number {\r\n const range = max - min;\r\n const mod = (((v - min) % range) + range) % range;\r\n return mod + min;\r\n }\r\n\r\n const x = useTransform(baseX, v => {\r\n if (copyWidth === 0) return \"0px\";\r\n return `${wrap(-copyWidth, 0, v)}px`;\r\n });\r\n\r\n const directionFactor = useRef<number>(1);\r\n useAnimationFrame((t, delta) => {\r\n let moveBy = directionFactor.current * baseVelocity * (delta / 1000);\r\n if (velocityFactor.get() < 0) directionFactor.current = -1;\r\n else if (velocityFactor.get() > 0) directionFactor.current = 1;\r\n moveBy += directionFactor.current * moveBy * velocityFactor.get();\r\n baseX.set(baseX.get() + moveBy);\r\n });\r\n\r\n const spans = [];\r\n for (let i = 0; i < numCopies; i++) {\r\n spans.push(\r\n <span className={className} key={i} ref={i === 0 ? copyRef : null}>\r\n {children}\r\n </span>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"overflow-hidden whitespace-nowrap\">\r\n <motion.div className=\"flex\" style={{ x }}>\r\n {spans}\r\n </motion.div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <section>\r\n {texts.map((text, index) => (\r\n <VelocityText key={index} baseVelocity={index % 2 !== 0 ? -velocity : velocity}>\r\n {text}&nbsp;\r\n </VelocityText>\r\n ))}\r\n </section>\r\n );\r\n}\r\n\r\nexport default ScrollVelocity;\r\n","\"use client\";\r\n\r\nimport React, { useState, useEffect, useRef } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\n\r\ninterface TrailItem {\r\n id: number;\r\n x: number;\r\n y: number;\r\n angle: number;\r\n randomX?: number;\r\n randomY?: number;\r\n randomRotate?: number;\r\n}\r\n\r\ninterface TextCursorProps {\r\n text?: string;\r\n delay?: number;\r\n spacing?: number;\r\n followMouseDirection?: boolean;\r\n randomFloat?: boolean;\r\n exitDuration?: number;\r\n removalInterval?: number;\r\n maxPoints?: number;\r\n}\r\n\r\nexport function TextCursor({\r\n text = \"⚛️\",\r\n delay = 0.01,\r\n spacing = 100,\r\n followMouseDirection = true,\r\n randomFloat = true,\r\n exitDuration = 0.5,\r\n removalInterval = 30,\r\n maxPoints = 5\r\n}: TextCursorProps) {\r\n const [trail, setTrail] = useState<TrailItem[]>([]);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const lastMoveTimeRef = useRef<number>(Date.now());\r\n const idCounter = useRef<number>(0);\r\n\r\n const handleMouseMove = (e: MouseEvent) => {\r\n if (!containerRef.current) return;\r\n const rect = containerRef.current.getBoundingClientRect();\r\n const mouseX = e.clientX - rect.left;\r\n const mouseY = e.clientY - rect.top;\r\n\r\n setTrail(prev => {\r\n let newTrail = [...prev];\r\n if (newTrail.length === 0) {\r\n newTrail.push({\r\n id: idCounter.current++,\r\n x: mouseX,\r\n y: mouseY,\r\n angle: 0,\r\n ...(randomFloat && {\r\n randomX: Math.random() * 10 - 5,\r\n randomY: Math.random() * 10 - 5,\r\n randomRotate: Math.random() * 10 - 5\r\n })\r\n });\r\n } else {\r\n const last = newTrail[newTrail.length - 1];\r\n const dx = mouseX - last.x;\r\n const dy = mouseY - last.y;\r\n const distance = Math.sqrt(dx * dx + dy * dy);\r\n if (distance >= spacing) {\r\n let rawAngle = (Math.atan2(dy, dx) * 180) / Math.PI;\r\n if (rawAngle > 90) rawAngle -= 180;\r\n else if (rawAngle < -90) rawAngle += 180;\r\n const computedAngle = followMouseDirection ? rawAngle : 0;\r\n const steps = Math.floor(distance / spacing);\r\n for (let i = 1; i <= steps; i++) {\r\n const t = (spacing * i) / distance;\r\n newTrail.push({\r\n id: idCounter.current++,\r\n x: last.x + dx * t,\r\n y: last.y + dy * t,\r\n angle: computedAngle,\r\n ...(randomFloat && {\r\n randomX: Math.random() * 10 - 5,\r\n randomY: Math.random() * 10 - 5,\r\n randomRotate: Math.random() * 10 - 5\r\n })\r\n });\r\n }\r\n }\r\n }\r\n if (newTrail.length > maxPoints) {\r\n newTrail = newTrail.slice(newTrail.length - maxPoints);\r\n }\r\n return newTrail;\r\n });\r\n lastMoveTimeRef.current = Date.now();\r\n };\r\n\r\n useEffect(() => {\r\n const container = containerRef.current;\r\n if (!container) return;\r\n container.addEventListener(\"mousemove\", handleMouseMove);\r\n return () => container.removeEventListener(\"mousemove\", handleMouseMove);\r\n }, []);\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n if (Date.now() - lastMoveTimeRef.current > 100) {\r\n setTrail(prev => (prev.length > 0 ? prev.slice(1) : prev));\r\n }\r\n }, removalInterval);\r\n return () => clearInterval(interval);\r\n }, [removalInterval]);\r\n\r\n return (\r\n <div ref={containerRef} className=\"w-full h-full min-h-[200px] relative rounded-lg bg-zinc-50 dark:bg-zinc-900/50\">\r\n <div className=\"absolute inset-0 flex items-center justify-center text-zinc-400 text-sm pointer-events-none\">\r\n Move your mouse around\r\n </div>\r\n <AnimatePresence>\r\n {trail.map(item => (\r\n <motion.div\r\n key={item.id}\r\n initial={{ opacity: 0, scale: 1, rotate: item.angle }}\r\n animate={{ opacity: 1, scale: 1, rotate: item.angle }}\r\n exit={{ opacity: 0, scale: 0 }}\r\n transition={{ opacity: { duration: exitDuration, ease: \"easeOut\", delay } }}\r\n className=\"absolute text-2xl pointer-events-none\"\r\n style={{ left: item.x, top: item.y, transform: \"translate(-50%, -50%)\" }}\r\n >\r\n {text}\r\n </motion.div>\r\n ))}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default TextCursor;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface SocialButtonProps {\r\n icon: React.ReactNode;\r\n label: string;\r\n href?: string;\r\n onClick?: () => void;\r\n className?: string;\r\n variant?: \"default\" | \"outline\" | \"ghost\";\r\n}\r\n\r\nexport function SocialButton({\r\n icon,\r\n label,\r\n href,\r\n onClick,\r\n className,\r\n variant = \"default\",\r\n}: SocialButtonProps) {\r\n const variants = {\r\n default: \"bg-zinc-900 dark:bg-zinc-100 text-white dark:text-zinc-900 hover:bg-zinc-800 dark:hover:bg-zinc-200\",\r\n outline: \"border border-zinc-300 dark:border-zinc-700 hover:bg-zinc-100 dark:hover:bg-zinc-800\",\r\n ghost: \"hover:bg-zinc-100 dark:hover:bg-zinc-800\",\r\n };\r\n\r\n const Component = href ? \"a\" : \"button\";\r\n\r\n return (\r\n <motion.div whileHover={{ scale: 1.05 }} whileTap={{ scale: 0.95 }}>\r\n <Component\r\n href={href}\r\n onClick={onClick}\r\n className={cn(\r\n \"inline-flex items-center gap-2 px-4 py-2 rounded-lg font-medium transition-colors\",\r\n variants[variant],\r\n className\r\n )}\r\n target={href ? \"_blank\" : undefined}\r\n rel={href ? \"noopener noreferrer\" : undefined}\r\n >\r\n {icon}\r\n <span>{label}</span>\r\n </Component>\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default SocialButton;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface V0ButtonProps {\r\n children: React.ReactNode;\r\n onClick?: () => void;\r\n className?: string;\r\n disabled?: boolean;\r\n}\r\n\r\nexport function V0Button({\r\n children,\r\n onClick,\r\n className,\r\n disabled = false,\r\n}: V0ButtonProps) {\r\n return (\r\n <motion.button\r\n onClick={onClick}\r\n disabled={disabled}\r\n className={cn(\r\n \"relative inline-flex items-center justify-center px-6 py-3 overflow-hidden font-medium rounded-xl\",\r\n \"bg-gradient-to-r from-zinc-900 to-zinc-800 dark:from-zinc-100 dark:to-zinc-200\",\r\n \"text-white dark:text-zinc-900\",\r\n \"border border-zinc-700 dark:border-zinc-300\",\r\n \"shadow-lg shadow-zinc-900/20 dark:shadow-zinc-100/20\",\r\n \"transition-all duration-300\",\r\n \"hover:shadow-xl hover:shadow-zinc-900/30 dark:hover:shadow-zinc-100/30\",\r\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\r\n className\r\n )}\r\n whileHover={{ scale: disabled ? 1 : 1.02 }}\r\n whileTap={{ scale: disabled ? 1 : 0.98 }}\r\n >\r\n <motion.span\r\n className=\"absolute inset-0 bg-gradient-to-r from-transparent via-white/10 to-transparent\"\r\n initial={{ x: \"-100%\" }}\r\n whileHover={{ x: \"100%\" }}\r\n transition={{ duration: 0.6, ease: \"easeInOut\" }}\r\n />\r\n <span className=\"relative z-10 flex items-center gap-2\">\r\n {children}\r\n </span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default V0Button;\r\n","\"use client\";\r\n\r\nimport { useMemo } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface ContributionGraphProps {\r\n data?: number[];\r\n weeks?: number;\r\n className?: string;\r\n colors?: string[];\r\n}\r\n\r\nexport function ContributionGraph({\r\n data,\r\n weeks = 52,\r\n className,\r\n colors = [\r\n \"bg-zinc-100 dark:bg-zinc-800\",\r\n \"bg-emerald-200 dark:bg-emerald-900\",\r\n \"bg-emerald-300 dark:bg-emerald-700\",\r\n \"bg-emerald-400 dark:bg-emerald-500\",\r\n \"bg-emerald-500 dark:bg-emerald-400\",\r\n ],\r\n}: ContributionGraphProps) {\r\n const contributions = useMemo(() => {\r\n if (data) return data;\r\n return Array.from({ length: weeks * 7 }, () => Math.floor(Math.random() * 5));\r\n }, [data, weeks]);\r\n\r\n const getColor = (level: number) => colors[Math.min(level, colors.length - 1)];\r\n\r\n return (\r\n <div className={cn(\"overflow-x-auto\", className)}>\r\n <div className=\"flex gap-1\">\r\n {Array.from({ length: weeks }).map((_, weekIndex) => (\r\n <div key={weekIndex} className=\"flex flex-col gap-1\">\r\n {Array.from({ length: 7 }).map((_, dayIndex) => {\r\n const index = weekIndex * 7 + dayIndex;\r\n const level = contributions[index] || 0;\r\n return (\r\n <motion.div\r\n key={dayIndex}\r\n className={cn(\r\n \"w-3 h-3 rounded-sm\",\r\n getColor(level)\r\n )}\r\n initial={{ scale: 0, opacity: 0 }}\r\n animate={{ scale: 1, opacity: 1 }}\r\n transition={{\r\n delay: index * 0.002,\r\n type: \"spring\",\r\n stiffness: 300,\r\n damping: 20,\r\n }}\r\n whileHover={{ scale: 1.3 }}\r\n />\r\n );\r\n })}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ContributionGraph;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion, useMotionValue, useTransform, animate } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface ElasticSliderProps {\r\n defaultValue?: number;\r\n min?: number;\r\n max?: number;\r\n step?: number;\r\n onChange?: (value: number) => void;\r\n className?: string;\r\n trackClassName?: string;\r\n thumbClassName?: string;\r\n}\r\n\r\nexport function ElasticSlider({\r\n defaultValue = 50,\r\n min = 0,\r\n max = 100,\r\n step = 1,\r\n onChange,\r\n className,\r\n trackClassName,\r\n thumbClassName,\r\n}: ElasticSliderProps) {\r\n const [value, setValue] = useState(defaultValue);\r\n const [isDragging, setIsDragging] = useState(false);\r\n \r\n const percentage = ((value - min) / (max - min)) * 100;\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const newValue = Number(e.target.value);\r\n setValue(newValue);\r\n onChange?.(newValue);\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative w-full h-12 flex items-center\", className)}>\r\n <div className={cn(\r\n \"absolute w-full h-2 rounded-full bg-zinc-200 dark:bg-zinc-800\",\r\n trackClassName\r\n )}>\r\n <motion.div\r\n className=\"h-full rounded-full bg-zinc-900 dark:bg-zinc-100\"\r\n style={{ width: `${percentage}%` }}\r\n animate={{ scaleY: isDragging ? 1.5 : 1 }}\r\n transition={{ type: \"spring\", stiffness: 400, damping: 25 }}\r\n />\r\n </div>\r\n \r\n <motion.div\r\n className={cn(\r\n \"absolute w-6 h-6 rounded-full bg-zinc-900 dark:bg-zinc-100 shadow-lg cursor-grab\",\r\n \"border-2 border-white dark:border-zinc-900\",\r\n thumbClassName\r\n )}\r\n style={{ left: `calc(${percentage}% - 12px)` }}\r\n animate={{ \r\n scale: isDragging ? 1.3 : 1,\r\n y: isDragging ? -4 : 0\r\n }}\r\n transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\r\n />\r\n \r\n <input\r\n type=\"range\"\r\n min={min}\r\n max={max}\r\n step={step}\r\n value={value}\r\n onChange={handleChange}\r\n onMouseDown={() => setIsDragging(true)}\r\n onMouseUp={() => setIsDragging(false)}\r\n onTouchStart={() => setIsDragging(true)}\r\n onTouchEnd={() => setIsDragging(false)}\r\n className=\"absolute w-full h-full opacity-0 cursor-grab active:cursor-grabbing\"\r\n />\r\n \r\n <motion.span\r\n className=\"absolute -top-8 left-1/2 -translate-x-1/2 text-sm font-medium text-zinc-900 dark:text-zinc-100\"\r\n animate={{ opacity: isDragging ? 1 : 0, y: isDragging ? 0 : 10 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {value}\r\n </motion.span>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ElasticSlider;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FlowingMenuItem {\r\n link: string;\r\n text: string;\r\n image?: string;\r\n}\r\n\r\ninterface FlowingMenuProps {\r\n items?: FlowingMenuItem[];\r\n className?: string;\r\n}\r\n\r\nconst DEFAULT_ITEMS: FlowingMenuItem[] = [\r\n { link: \"#\", text: \"About\", image: \"https://images.unsplash.com/photo-1618005182384-a83a8bd57fbe?w=800&q=80\" },\r\n { link: \"#\", text: \"Services\", image: \"https://images.unsplash.com/photo-1618556450994-a6a128ef0d9d?w=800&q=80\" },\r\n { link: \"#\", text: \"Work\", image: \"https://images.unsplash.com/photo-1618556450991-2f1af64e8191?w=800&q=80\" },\r\n { link: \"#\", text: \"Contact\", image: \"https://images.unsplash.com/photo-1618556450783-953e03f0bb7a?w=800&q=80\" },\r\n];\r\n\r\nexport function FlowingMenu({ items = DEFAULT_ITEMS, className = \"\" }: FlowingMenuProps) {\r\n const [activeIndex, setActiveIndex] = useState<number>(-1);\r\n const [hoveredIndex, setHoveredIndex] = useState<number>(-1);\r\n\r\n return (\r\n <div className={cn(\"flex gap-8\", className)}>\r\n {/* Menu */}\r\n <div className=\"flex-1\">\r\n <div className=\"mb-6\">\r\n <h2 className=\"text-2xl font-bold text-white\">Menu</h2>\r\n <p className=\"text-sm text-zinc-400\">Explore our pages</p>\r\n </div>\r\n\r\n <nav className=\"flex flex-col gap-2\">\r\n {items.map((item, index) => (\r\n <a\r\n key={index}\r\n href={item.link}\r\n className={cn(\r\n \"group flex items-center gap-4 py-4 px-4 rounded-lg transition-all duration-300\",\r\n hoveredIndex === index\r\n ? \"bg-zinc-800 translate-x-4\"\r\n : \"bg-transparent\"\r\n )}\r\n onMouseEnter={() => setHoveredIndex(index)}\r\n onMouseLeave={() => setHoveredIndex(-1)}\r\n onClick={() => setActiveIndex(index)}\r\n >\r\n <span className=\"text-sm text-zinc-500 font-mono\">\r\n {String(index + 1).padStart(2, \"0\")}\r\n </span>\r\n <span\r\n className={cn(\r\n \"text-xl font-medium transition-colors\",\r\n hoveredIndex === index ? \"text-white\" : \"text-zinc-400\"\r\n )}\r\n >\r\n {item.text}\r\n </span>\r\n <span\r\n className={cn(\r\n \"ml-auto text-xl transition-all duration-300\",\r\n hoveredIndex === index\r\n ? \"opacity-100 translate-x-0\"\r\n : \"opacity-0 -translate-x-2\"\r\n )}\r\n >\r\n →\r\n </span>\r\n </a>\r\n ))}\r\n </nav>\r\n </div>\r\n\r\n {/* Preview */}\r\n <div\r\n className={cn(\r\n \"w-80 h-80 rounded-2xl overflow-hidden transition-all duration-500\",\r\n hoveredIndex >= 0 ? \"opacity-100 scale-100\" : \"opacity-0 scale-95\"\r\n )}\r\n >\r\n {hoveredIndex >= 0 && items[hoveredIndex]?.image && (\r\n <div className=\"relative w-full h-full\">\r\n <img\r\n src={items[hoveredIndex].image}\r\n alt={items[hoveredIndex].text}\r\n className=\"w-full h-full object-cover\"\r\n />\r\n <div className=\"absolute inset-0 bg-gradient-to-t from-black/60 to-transparent\" />\r\n <h3 className=\"absolute bottom-4 left-4 text-2xl font-bold text-white\">\r\n {items[hoveredIndex].text}\r\n </h3>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default FlowingMenu;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GooeyNavItem {\r\n label: string;\r\n href: string;\r\n}\r\n\r\nexport interface GooeyNavProps {\r\n items?: GooeyNavItem[];\r\n className?: string;\r\n activeColor?: string;\r\n inactiveColor?: string;\r\n backgroundColor?: string;\r\n}\r\n\r\nconst DEFAULT_ITEMS: GooeyNavItem[] = [\r\n { label: \"Home\", href: \"#\" },\r\n { label: \"About\", href: \"#\" },\r\n { label: \"Services\", href: \"#\" },\r\n { label: \"Contact\", href: \"#\" },\r\n];\r\n\r\nexport function GooeyNav({\r\n items = DEFAULT_ITEMS,\r\n className = \"\",\r\n activeColor = \"#8b5cf6\",\r\n inactiveColor = \"#a1a1aa\",\r\n backgroundColor = \"#18181b\",\r\n}: GooeyNavProps) {\r\n const [activeIndex, setActiveIndex] = useState<number>(0);\r\n\r\n const handleClick = (index: number, event: React.MouseEvent<HTMLAnchorElement>) => {\r\n event.preventDefault();\r\n setActiveIndex(index);\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative\", className)}>\r\n <nav\r\n className=\"relative rounded-full px-2 py-2\"\r\n style={{ backgroundColor }}\r\n >\r\n <ul className=\"flex items-center gap-1\">\r\n {items.map((item, index) => (\r\n <li key={index} className=\"relative\">\r\n <a\r\n href={item.href}\r\n className={cn(\r\n \"relative z-10 block px-4 py-2 text-sm font-medium rounded-full transition-all duration-300\",\r\n activeIndex === index && \"text-white\"\r\n )}\r\n style={{\r\n color: activeIndex === index ? \"#fff\" : inactiveColor,\r\n }}\r\n onClick={(e) => handleClick(index, e)}\r\n >\r\n {item.label}\r\n {activeIndex === index && (\r\n <span\r\n className=\"absolute inset-0 rounded-full -z-10 animate-pulse\"\r\n style={{\r\n backgroundColor: activeColor,\r\n boxShadow: `0 0 20px ${activeColor}`,\r\n }}\r\n />\r\n )}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </nav>\r\n </div>\r\n );\r\n}\r\n\r\nexport default GooeyNav;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport type PillNavItem = {\r\n label: string;\r\n href: string;\r\n ariaLabel?: string;\r\n};\r\n\r\nexport interface PillNavProps {\r\n logo?: string;\r\n logoAlt?: string;\r\n items: PillNavItem[];\r\n activeHref?: string;\r\n className?: string;\r\n baseColor?: string;\r\n pillColor?: string;\r\n hoveredPillTextColor?: string;\r\n pillTextColor?: string;\r\n onMobileMenuClick?: () => void;\r\n}\r\n\r\nexport function PillNav({\r\n logo,\r\n logoAlt = \"Logo\",\r\n items,\r\n activeHref,\r\n className = \"\",\r\n baseColor = \"#fff\",\r\n pillColor = \"#000000\",\r\n hoveredPillTextColor = \"#ffffff\",\r\n pillTextColor,\r\n onMobileMenuClick,\r\n}: PillNavProps) {\r\n const resolvedPillTextColor = pillTextColor ?? baseColor;\r\n const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);\r\n const [hoveredIndex, setHoveredIndex] = useState<number | null>(null);\r\n\r\n const toggleMobileMenu = () => {\r\n setIsMobileMenuOpen(!isMobileMenuOpen);\r\n onMobileMenuClick?.();\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative\", className)}>\r\n <nav\r\n className=\"flex items-center gap-4 px-4 py-2 rounded-full\"\r\n style={{ backgroundColor: pillColor }}\r\n aria-label=\"Primary\"\r\n >\r\n {logo && (\r\n <a href={items?.[0]?.href || \"#\"} aria-label=\"Home\" className=\"flex-shrink-0\">\r\n <img src={logo} alt={logoAlt} className=\"h-8 w-8 object-contain\" />\r\n </a>\r\n )}\r\n\r\n {/* Desktop Navigation */}\r\n <div className=\"hidden md:flex items-center gap-1\">\r\n <ul className=\"flex items-center gap-1\" role=\"menubar\">\r\n {items.map((item, i) => (\r\n <li key={item.href} role=\"none\">\r\n <a\r\n role=\"menuitem\"\r\n href={item.href}\r\n className={cn(\r\n \"relative px-4 py-2 rounded-full text-sm font-medium transition-all duration-300\",\r\n activeHref === item.href && \"font-semibold\"\r\n )}\r\n style={{\r\n color: hoveredIndex === i ? hoveredPillTextColor : resolvedPillTextColor,\r\n backgroundColor: hoveredIndex === i ? baseColor : \"transparent\",\r\n }}\r\n aria-label={item.ariaLabel || item.label}\r\n onMouseEnter={() => setHoveredIndex(i)}\r\n onMouseLeave={() => setHoveredIndex(null)}\r\n >\r\n {item.label}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n\r\n {/* Mobile Menu Button */}\r\n <button\r\n className=\"md:hidden flex flex-col gap-1 p-2\"\r\n onClick={toggleMobileMenu}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <span\r\n className={cn(\r\n \"w-5 h-0.5 transition-all duration-300\",\r\n isMobileMenuOpen && \"rotate-45 translate-y-1.5\"\r\n )}\r\n style={{ backgroundColor: baseColor }}\r\n />\r\n <span\r\n className={cn(\r\n \"w-5 h-0.5 transition-all duration-300\",\r\n isMobileMenuOpen && \"-rotate-45 -translate-y-1\"\r\n )}\r\n style={{ backgroundColor: baseColor }}\r\n />\r\n </button>\r\n </nav>\r\n\r\n {/* Mobile Menu */}\r\n {isMobileMenuOpen && (\r\n <div\r\n className=\"md:hidden absolute top-full left-0 right-0 mt-2 rounded-xl p-4 shadow-lg\"\r\n style={{ backgroundColor: pillColor }}\r\n >\r\n <ul className=\"flex flex-col gap-2\">\r\n {items.map((item) => (\r\n <li key={item.href}>\r\n <a\r\n href={item.href}\r\n className={cn(\r\n \"block px-4 py-2 rounded-lg text-sm font-medium transition-colors\",\r\n activeHref === item.href && \"font-semibold\"\r\n )}\r\n style={{ color: resolvedPillTextColor }}\r\n onClick={() => setIsMobileMenuOpen(false)}\r\n >\r\n {item.label}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default PillNav;\r\n","\"use client\";\r\n\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SmoothDrawerProps {\r\n trigger?: React.ReactNode;\r\n title?: string;\r\n description?: string;\r\n children?: React.ReactNode;\r\n className?: string;\r\n side?: \"left\" | \"right\" | \"top\" | \"bottom\";\r\n}\r\n\r\nexport function SmoothDrawer({\r\n trigger,\r\n title = \"Drawer Title\",\r\n description,\r\n children,\r\n className,\r\n side = \"right\",\r\n}: SmoothDrawerProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n document.body.style.overflow = \"hidden\";\r\n } else {\r\n document.body.style.overflow = \"\";\r\n }\r\n return () => {\r\n document.body.style.overflow = \"\";\r\n };\r\n }, [isOpen]);\r\n\r\n const sideStyles = {\r\n left: \"left-0 top-0 h-full w-80 -translate-x-full data-[open=true]:translate-x-0\",\r\n right: \"right-0 top-0 h-full w-80 translate-x-full data-[open=true]:translate-x-0\",\r\n top: \"top-0 left-0 w-full h-80 -translate-y-full data-[open=true]:translate-y-0\",\r\n bottom: \"bottom-0 left-0 w-full h-80 translate-y-full data-[open=true]:translate-y-0\",\r\n };\r\n\r\n return (\r\n <>\r\n {/* Trigger */}\r\n <div onClick={() => setIsOpen(true)} className=\"cursor-pointer\">\r\n {trigger || (\r\n <button className=\"px-4 py-2 bg-zinc-900 dark:bg-white text-white dark:text-zinc-900 rounded-lg font-medium hover:opacity-90 transition-opacity\">\r\n Open Drawer\r\n </button>\r\n )}\r\n </div>\r\n\r\n {/* Overlay */}\r\n {isOpen && (\r\n <div\r\n className=\"fixed inset-0 z-50 bg-black/50 backdrop-blur-sm transition-opacity duration-300\"\r\n onClick={() => setIsOpen(false)}\r\n />\r\n )}\r\n\r\n {/* Drawer */}\r\n <div\r\n data-open={isOpen}\r\n className={cn(\r\n \"fixed z-50 bg-white dark:bg-zinc-900 shadow-xl transition-transform duration-300 ease-out\",\r\n sideStyles[side],\r\n className\r\n )}\r\n >\r\n <div className=\"flex flex-col h-full\">\r\n {/* Header */}\r\n <div className=\"flex items-center justify-between p-4 border-b border-zinc-200 dark:border-zinc-800\">\r\n <div>\r\n <h2 className=\"text-lg font-semibold text-zinc-900 dark:text-white\">\r\n {title}\r\n </h2>\r\n {description && (\r\n <p className=\"text-sm text-zinc-500 dark:text-zinc-400\">\r\n {description}\r\n </p>\r\n )}\r\n </div>\r\n <button\r\n onClick={() => setIsOpen(false)}\r\n className=\"p-2 rounded-lg hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors\"\r\n aria-label=\"Close drawer\"\r\n >\r\n <svg\r\n className=\"w-5 h-5 text-zinc-500\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M6 18L18 6M6 6l12 12\"\r\n />\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n {/* Content */}\r\n <div className=\"flex-1 overflow-auto p-4\">{children}</div>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n}\r\n\r\nexport default SmoothDrawer;\r\n","\"use client\";\r\n\r\nimport React, { useState, useRef, useLayoutEffect } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TabItem {\r\n id: string;\r\n title: string;\r\n content?: React.ReactNode;\r\n color?: string;\r\n}\r\n\r\ninterface SmoothTabProps {\r\n items?: TabItem[];\r\n defaultTabId?: string;\r\n className?: string;\r\n activeColor?: string;\r\n onChange?: (tabId: string) => void;\r\n}\r\n\r\nconst DEFAULT_TABS: TabItem[] = [\r\n { id: \"tab1\", title: \"Tab 1\", color: \"bg-blue-500\" },\r\n { id: \"tab2\", title: \"Tab 2\", color: \"bg-purple-500\" },\r\n { id: \"tab3\", title: \"Tab 3\", color: \"bg-emerald-500\" },\r\n { id: \"tab4\", title: \"Tab 4\", color: \"bg-amber-500\" },\r\n];\r\n\r\nexport function SmoothTab({\r\n items = DEFAULT_TABS,\r\n defaultTabId,\r\n className,\r\n activeColor = \"bg-blue-500\",\r\n onChange,\r\n}: SmoothTabProps) {\r\n const [selected, setSelected] = useState<string>(defaultTabId || items[0]?.id || \"\");\r\n const [dimensions, setDimensions] = useState({ width: 0, left: 0 });\r\n const buttonRefs = useRef<Map<string, HTMLButtonElement>>(new Map());\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n\r\n useLayoutEffect(() => {\r\n const updateDimensions = () => {\r\n const selectedButton = buttonRefs.current.get(selected);\r\n const container = containerRef.current;\r\n\r\n if (selectedButton && container) {\r\n const rect = selectedButton.getBoundingClientRect();\r\n const containerRect = container.getBoundingClientRect();\r\n\r\n setDimensions({\r\n width: rect.width,\r\n left: rect.left - containerRect.left,\r\n });\r\n }\r\n };\r\n\r\n requestAnimationFrame(updateDimensions);\r\n window.addEventListener(\"resize\", updateDimensions);\r\n return () => window.removeEventListener(\"resize\", updateDimensions);\r\n }, [selected]);\r\n\r\n const handleTabClick = (tabId: string) => {\r\n setSelected(tabId);\r\n onChange?.(tabId);\r\n };\r\n\r\n const selectedItem = items.find((item) => item.id === selected);\r\n\r\n return (\r\n <div className={cn(\"flex flex-col\", className)}>\r\n {/* Content Area */}\r\n {selectedItem?.content && (\r\n <div className=\"mb-4 p-6 bg-zinc-100 dark:bg-zinc-900 rounded-lg min-h-[200px]\">\r\n {selectedItem.content}\r\n </div>\r\n )}\r\n\r\n {/* Tab Bar */}\r\n <div\r\n ref={containerRef}\r\n role=\"tablist\"\r\n className={cn(\r\n \"relative flex items-center gap-1 p-1\",\r\n \"bg-zinc-100 dark:bg-zinc-900 rounded-xl\",\r\n \"border border-zinc-200 dark:border-zinc-800\"\r\n )}\r\n >\r\n {/* Sliding Background */}\r\n <div\r\n className={cn(\r\n \"absolute rounded-lg transition-all duration-300 ease-out\",\r\n selectedItem?.color || activeColor\r\n )}\r\n style={{\r\n width: dimensions.width - 8,\r\n left: dimensions.left + 4,\r\n height: \"calc(100% - 8px)\",\r\n top: \"4px\",\r\n }}\r\n />\r\n\r\n {/* Tab Buttons */}\r\n {items.map((item) => {\r\n const isSelected = selected === item.id;\r\n return (\r\n <button\r\n key={item.id}\r\n ref={(el) => {\r\n if (el) buttonRefs.current.set(item.id, el);\r\n else buttonRefs.current.delete(item.id);\r\n }}\r\n type=\"button\"\r\n role=\"tab\"\r\n aria-selected={isSelected}\r\n onClick={() => handleTabClick(item.id)}\r\n className={cn(\r\n \"relative z-10 flex-1 px-4 py-2 rounded-lg\",\r\n \"text-sm font-medium transition-colors duration-300\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500\",\r\n isSelected\r\n ? \"text-white\"\r\n : \"text-zinc-600 dark:text-zinc-400 hover:text-zinc-900 dark:hover:text-zinc-100\"\r\n )}\r\n >\r\n {item.title}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default SmoothTab;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useRef, ReactNode } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface DecayCardProps {\r\n width?: number;\r\n height?: number;\r\n image?: string;\r\n children?: ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function DecayCard({\r\n width = 300,\r\n height = 400,\r\n image = \"https://picsum.photos/300/400?grayscale\",\r\n children,\r\n className,\r\n}: DecayCardProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const displacementMapRef = useRef<SVGFEDisplacementMapElement>(null);\r\n const cursor = useRef({ x: 0, y: 0 });\r\n const cachedCursor = useRef({ x: 0, y: 0 });\r\n const imgTransforms = useRef({ x: 0, y: 0, rz: 0 });\r\n const displacementScale = useRef(0);\r\n const animationRef = useRef<number>();\r\n\r\n useEffect(() => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n cursor.current = { x: window.innerWidth / 2, y: window.innerHeight / 2 };\r\n cachedCursor.current = { ...cursor.current };\r\n\r\n const lerp = (a: number, b: number, n: number) => (1 - n) * a + n * b;\r\n const map = (x: number, a: number, b: number, c: number, d: number) =>\r\n ((x - a) * (d - c)) / (b - a) + c;\r\n const distance = (x1: number, x2: number, y1: number, y2: number) =>\r\n Math.hypot(x1 - x2, y1 - y2);\r\n\r\n const handleMouseMove = (ev: MouseEvent) => {\r\n cursor.current = { x: ev.clientX, y: ev.clientY };\r\n };\r\n\r\n window.addEventListener(\"mousemove\", handleMouseMove);\r\n\r\n const render = () => {\r\n const winWidth = window.innerWidth;\r\n const winHeight = window.innerHeight;\r\n\r\n let targetX = lerp(\r\n imgTransforms.current.x,\r\n map(cursor.current.x, 0, winWidth, -120, 120),\r\n 0.1\r\n );\r\n let targetY = lerp(\r\n imgTransforms.current.y,\r\n map(cursor.current.y, 0, winHeight, -120, 120),\r\n 0.1\r\n );\r\n let targetRz = lerp(\r\n imgTransforms.current.rz,\r\n map(cursor.current.x, 0, winWidth, -10, 10),\r\n 0.1\r\n );\r\n\r\n const bound = 50;\r\n if (targetX > bound) targetX = bound + (targetX - bound) * 0.2;\r\n if (targetX < -bound) targetX = -bound + (targetX + bound) * 0.2;\r\n if (targetY > bound) targetY = bound + (targetY - bound) * 0.2;\r\n if (targetY < -bound) targetY = -bound + (targetY + bound) * 0.2;\r\n\r\n imgTransforms.current = { x: targetX, y: targetY, rz: targetRz };\r\n\r\n if (containerRef.current) {\r\n containerRef.current.style.transform = `translate(${targetX}px, ${targetY}px) rotateZ(${targetRz}deg)`;\r\n }\r\n\r\n const cursorTravelledDistance = distance(\r\n cachedCursor.current.x,\r\n cursor.current.x,\r\n cachedCursor.current.y,\r\n cursor.current.y\r\n );\r\n\r\n displacementScale.current = lerp(\r\n displacementScale.current,\r\n map(cursorTravelledDistance, 0, 200, 0, 400),\r\n 0.06\r\n );\r\n\r\n if (displacementMapRef.current) {\r\n displacementMapRef.current.setAttribute(\r\n \"scale\",\r\n String(displacementScale.current)\r\n );\r\n }\r\n\r\n cachedCursor.current = { ...cursor.current };\r\n animationRef.current = requestAnimationFrame(render);\r\n };\r\n\r\n render();\r\n\r\n return () => {\r\n window.removeEventListener(\"mousemove\", handleMouseMove);\r\n if (animationRef.current) {\r\n cancelAnimationFrame(animationRef.current);\r\n }\r\n };\r\n }, []);\r\n\r\n const filterId = `imgFilter-${Math.random().toString(36).substr(2, 9)}`;\r\n\r\n return (\r\n <div\r\n className={cn(\"relative\", className)}\r\n style={{ width: `${width}px`, height: `${height}px` }}\r\n ref={containerRef}\r\n >\r\n <svg\r\n viewBox=\"-60 -75 720 900\"\r\n preserveAspectRatio=\"xMidYMid slice\"\r\n className=\"w-full h-full\"\r\n >\r\n <defs>\r\n <filter id={filterId}>\r\n <feTurbulence\r\n type=\"turbulence\"\r\n baseFrequency=\"0.015\"\r\n numOctaves=\"5\"\r\n seed=\"4\"\r\n stitchTiles=\"stitch\"\r\n x=\"0%\"\r\n y=\"0%\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n result=\"turbulence1\"\r\n />\r\n <feDisplacementMap\r\n ref={displacementMapRef}\r\n in=\"SourceGraphic\"\r\n in2=\"turbulence1\"\r\n scale=\"0\"\r\n xChannelSelector=\"R\"\r\n yChannelSelector=\"B\"\r\n x=\"0%\"\r\n y=\"0%\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n result=\"displacementMap3\"\r\n />\r\n </filter>\r\n </defs>\r\n <g>\r\n <image\r\n href={image}\r\n x=\"0\"\r\n y=\"0\"\r\n width=\"600\"\r\n height=\"750\"\r\n filter={`url(#${filterId})`}\r\n preserveAspectRatio=\"xMidYMid slice\"\r\n />\r\n </g>\r\n </svg>\r\n {children && (\r\n <div className=\"absolute inset-0 flex items-end p-6\">\r\n <div className=\"text-white\">{children}</div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default DecayCard;\r\n","\"use client\";\r\n\r\nimport React, { useId } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nconst GLASS_SHADOW =\r\n \"shadow-[0_0_6px_rgba(0,0,0,0.03),0_2px_6px_rgba(0,0,0,0.08),inset_3px_3px_0.5px_-3px_rgba(0,0,0,0.9),inset_-3px_-3px_0.5px_-3px_rgba(0,0,0,0.85),inset_1px_1px_1px_-0.5px_rgba(0,0,0,0.6),inset_-1px_-1px_1px_-0.5px_rgba(0,0,0,0.6),inset_0_0_6px_6px_rgba(0,0,0,0.12),inset_0_0_2px_2px_rgba(0,0,0,0.06),0_0_12px_rgba(255,255,255,0.15)] dark:shadow-[0_0_8px_rgba(0,0,0,0.03),0_2px_6px_rgba(0,0,0,0.08),inset_3px_3px_0.5px_-3.5px_rgba(255,255,255,0.09),inset_-3px_-3px_0.5px_-3.5px_rgba(255,255,255,0.85),inset_1px_1px_1px_-0.5px_rgba(255,255,255,0.6),inset_-1px_-1px_1px_-0.5px_rgba(255,255,255,0.6),inset_0_0_6px_6px_rgba(255,255,255,0.12),inset_0_0_2px_2px_rgba(255,255,255,0.06),0_0_12px_rgba(0,0,0,0.15)]\";\r\n\r\ninterface GlassFilterProps {\r\n id: string;\r\n scale?: number;\r\n}\r\n\r\nconst GlassFilter = React.memo(({ id, scale = 30 }: GlassFilterProps) => (\r\n <svg className=\"hidden\">\r\n <title>Glass Effect Filter</title>\r\n <defs>\r\n <filter\r\n colorInterpolationFilters=\"sRGB\"\r\n height=\"200%\"\r\n id={id}\r\n width=\"200%\"\r\n x=\"-50%\"\r\n y=\"-50%\"\r\n >\r\n <feTurbulence\r\n baseFrequency=\"0.05 0.05\"\r\n numOctaves=\"1\"\r\n result=\"turbulence\"\r\n seed=\"1\"\r\n type=\"fractalNoise\"\r\n />\r\n <feGaussianBlur in=\"turbulence\" result=\"blurredNoise\" stdDeviation=\"2\" />\r\n <feDisplacementMap\r\n in=\"SourceGraphic\"\r\n in2=\"blurredNoise\"\r\n result=\"displaced\"\r\n scale={scale}\r\n xChannelSelector=\"R\"\r\n yChannelSelector=\"B\"\r\n />\r\n <feGaussianBlur in=\"displaced\" result=\"finalBlur\" stdDeviation=\"4\" />\r\n <feComposite in=\"finalBlur\" in2=\"finalBlur\" operator=\"over\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n));\r\nGlassFilter.displayName = \"GlassFilter\";\r\n\r\ninterface LiquidGlassCardProps extends React.HTMLAttributes<HTMLDivElement> {\r\n glassSize?: \"sm\" | \"default\" | \"lg\";\r\n glassEffect?: boolean;\r\n}\r\n\r\nexport function LiquidGlassCard({\r\n className,\r\n glassSize = \"default\",\r\n glassEffect = true,\r\n children,\r\n ...props\r\n}: LiquidGlassCardProps) {\r\n const filterId = useId();\r\n\r\n const sizeClasses = {\r\n sm: \"p-4\",\r\n default: \"p-6\",\r\n lg: \"p-8\",\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"group relative overflow-hidden rounded-lg border border-zinc-200 dark:border-zinc-800\",\r\n \"bg-white/20 dark:bg-zinc-900/20 backdrop-blur-[2px]\",\r\n \"transition-all duration-300\",\r\n sizeClasses[glassSize],\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div\r\n className={cn(\r\n \"pointer-events-none absolute inset-0 rounded-lg transition-all\",\r\n GLASS_SHADOW\r\n )}\r\n />\r\n\r\n {glassEffect && (\r\n <>\r\n <div\r\n className=\"-z-10 pointer-events-none absolute inset-0 overflow-hidden rounded-lg\"\r\n style={{ backdropFilter: `url(\"#${filterId}\")` }}\r\n />\r\n <GlassFilter id={filterId} scale={30} />\r\n </>\r\n )}\r\n\r\n <div className=\"relative z-10\">{children}</div>\r\n\r\n <div className=\"pointer-events-none absolute inset-0 z-20 rounded-lg bg-gradient-to-r from-transparent via-black/5 to-transparent opacity-0 transition-opacity duration-200 group-hover:opacity-100 dark:via-white/5\" />\r\n </div>\r\n );\r\n}\r\n\r\ninterface LiquidButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"default\" | \"ghost\";\r\n}\r\n\r\nexport function LiquidButton({\r\n className,\r\n variant = \"default\",\r\n children,\r\n ...props\r\n}: LiquidButtonProps) {\r\n const filterId = useId();\r\n\r\n return (\r\n <>\r\n <button\r\n className={cn(\r\n \"relative px-4 py-2 rounded-full font-medium transition-transform duration-300 hover:scale-105\",\r\n variant === \"default\" &&\r\n \"bg-zinc-900 dark:bg-white text-white dark:text-zinc-900\",\r\n variant === \"ghost\" &&\r\n \"bg-transparent text-zinc-700 dark:text-zinc-300 hover:bg-zinc-200/80 dark:hover:bg-zinc-800/80\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div\r\n className={cn(\r\n \"pointer-events-none absolute inset-0 rounded-full transition-all\",\r\n GLASS_SHADOW\r\n )}\r\n />\r\n <div\r\n className=\"-z-10 pointer-events-none absolute inset-0 isolate overflow-hidden rounded-full\"\r\n style={{ backdropFilter: `url(\"#${filterId}\")` }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </button>\r\n <GlassFilter id={filterId} scale={70} />\r\n </>\r\n );\r\n}\r\n\r\nexport default LiquidGlassCard;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TargetCursorProps {\r\n targetSelector?: string;\r\n spinDuration?: number;\r\n hideDefaultCursor?: boolean;\r\n color?: string;\r\n className?: string;\r\n}\r\n\r\nexport function TargetCursor({\r\n targetSelector = \".cursor-target\",\r\n spinDuration = 2,\r\n hideDefaultCursor = true,\r\n color = \"#000000\",\r\n className,\r\n}: TargetCursorProps) {\r\n const cursorRef = useRef<HTMLDivElement>(null);\r\n const dotRef = useRef<HTMLDivElement>(null);\r\n const [position, setPosition] = useState({ x: 0, y: 0 });\r\n const [isHovering, setIsHovering] = useState(false);\r\n const [rotation, setRotation] = useState(0);\r\n const animationRef = useRef<number>();\r\n\r\n useEffect(() => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const originalCursor = document.body.style.cursor;\r\n if (hideDefaultCursor) {\r\n document.body.style.cursor = \"none\";\r\n }\r\n\r\n setPosition({ x: window.innerWidth / 2, y: window.innerHeight / 2 });\r\n\r\n const handleMouseMove = (e: MouseEvent) => {\r\n setPosition({ x: e.clientX, y: e.clientY });\r\n };\r\n\r\n const handleMouseOver = (e: MouseEvent) => {\r\n const target = e.target as Element;\r\n if (target.matches(targetSelector) || target.closest(targetSelector)) {\r\n setIsHovering(true);\r\n }\r\n };\r\n\r\n const handleMouseOut = (e: MouseEvent) => {\r\n const target = e.target as Element;\r\n if (target.matches(targetSelector) || target.closest(targetSelector)) {\r\n setIsHovering(false);\r\n }\r\n };\r\n\r\n window.addEventListener(\"mousemove\", handleMouseMove);\r\n window.addEventListener(\"mouseover\", handleMouseOver);\r\n window.addEventListener(\"mouseout\", handleMouseOut);\r\n\r\n // Rotation animation\r\n let startTime: number;\r\n const animate = (timestamp: number) => {\r\n if (!startTime) startTime = timestamp;\r\n const elapsed = timestamp - startTime;\r\n const newRotation = (elapsed / (spinDuration * 1000)) * 360;\r\n setRotation(newRotation % 360);\r\n animationRef.current = requestAnimationFrame(animate);\r\n };\r\n animationRef.current = requestAnimationFrame(animate);\r\n\r\n return () => {\r\n window.removeEventListener(\"mousemove\", handleMouseMove);\r\n window.removeEventListener(\"mouseover\", handleMouseOver);\r\n window.removeEventListener(\"mouseout\", handleMouseOut);\r\n document.body.style.cursor = originalCursor;\r\n if (animationRef.current) {\r\n cancelAnimationFrame(animationRef.current);\r\n }\r\n };\r\n }, [targetSelector, spinDuration, hideDefaultCursor]);\r\n\r\n const cornerSize = 12;\r\n const borderWidth = 3;\r\n\r\n return (\r\n <div\r\n ref={cursorRef}\r\n className={cn(\"fixed pointer-events-none z-[10000]\", className)}\r\n style={{\r\n left: position.x,\r\n top: position.y,\r\n transform: `translate(-50%, -50%) rotate(${isHovering ? 0 : rotation}deg)`,\r\n transition: isHovering ? \"transform 0.2s ease\" : \"none\",\r\n }}\r\n >\r\n {/* Center dot */}\r\n <div\r\n ref={dotRef}\r\n className=\"absolute rounded-full\"\r\n style={{\r\n width: 6,\r\n height: 6,\r\n backgroundColor: color,\r\n left: \"50%\",\r\n top: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n }}\r\n />\r\n\r\n {/* Corners */}\r\n {[\"tl\", \"tr\", \"br\", \"bl\"].map((corner) => {\r\n const isTop = corner.includes(\"t\");\r\n const isLeft = corner.includes(\"l\");\r\n const offset = isHovering ? 20 : cornerSize * 1.5;\r\n\r\n return (\r\n <div\r\n key={corner}\r\n className=\"absolute transition-all duration-200\"\r\n style={{\r\n width: cornerSize,\r\n height: cornerSize,\r\n borderColor: color,\r\n borderWidth: borderWidth,\r\n borderStyle: \"solid\",\r\n borderTopWidth: isTop ? borderWidth : 0,\r\n borderBottomWidth: !isTop ? borderWidth : 0,\r\n borderLeftWidth: isLeft ? borderWidth : 0,\r\n borderRightWidth: !isLeft ? borderWidth : 0,\r\n left: isLeft ? -offset : \"auto\",\r\n right: !isLeft ? -offset : \"auto\",\r\n top: isTop ? -offset : \"auto\",\r\n bottom: !isTop ? -offset : \"auto\",\r\n }}\r\n />\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n\r\nexport default TargetCursor;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useRef } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CrosshairProps {\r\n color?: string;\r\n containerRef?: React.RefObject<HTMLElement>;\r\n className?: string;\r\n}\r\n\r\nconst lerp = (a: number, b: number, n: number) => (1 - n) * a + n * b;\r\n\r\nexport function Crosshair({\r\n color = \"#000000\",\r\n containerRef = null,\r\n className,\r\n}: CrosshairProps) {\r\n const cursorRef = useRef<HTMLDivElement>(null);\r\n const lineHorizontalRef = useRef<HTMLDivElement>(null);\r\n const lineVerticalRef = useRef<HTMLDivElement>(null);\r\n const mouseRef = useRef({ x: 0, y: 0 });\r\n const renderedRef = useRef({ x: 0, y: 0 });\r\n const animationRef = useRef<number>();\r\n\r\n useEffect(() => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const getMousePos = (e: MouseEvent, container?: HTMLElement) => {\r\n if (container) {\r\n const bounds = container.getBoundingClientRect();\r\n return {\r\n x: e.clientX - bounds.left,\r\n y: e.clientY - bounds.top,\r\n };\r\n }\r\n return { x: e.clientX, y: e.clientY };\r\n };\r\n\r\n const handleMouseMove = (ev: MouseEvent) => {\r\n mouseRef.current = getMousePos(ev, containerRef?.current || undefined);\r\n\r\n if (containerRef?.current) {\r\n const bounds = containerRef.current.getBoundingClientRect();\r\n const isOutside =\r\n ev.clientX < bounds.left ||\r\n ev.clientX > bounds.right ||\r\n ev.clientY < bounds.top ||\r\n ev.clientY > bounds.bottom;\r\n\r\n if (lineHorizontalRef.current && lineVerticalRef.current) {\r\n lineHorizontalRef.current.style.opacity = isOutside ? \"0\" : \"1\";\r\n lineVerticalRef.current.style.opacity = isOutside ? \"0\" : \"1\";\r\n }\r\n }\r\n };\r\n\r\n const target = containerRef?.current || window;\r\n target.addEventListener(\"mousemove\", handleMouseMove as any);\r\n\r\n // Initial setup\r\n if (lineHorizontalRef.current && lineVerticalRef.current) {\r\n lineHorizontalRef.current.style.opacity = \"0\";\r\n lineVerticalRef.current.style.opacity = \"0\";\r\n }\r\n\r\n const onFirstMove = () => {\r\n renderedRef.current = { ...mouseRef.current };\r\n if (lineHorizontalRef.current && lineVerticalRef.current) {\r\n lineHorizontalRef.current.style.opacity = \"1\";\r\n lineVerticalRef.current.style.opacity = \"1\";\r\n }\r\n target.removeEventListener(\"mousemove\", onFirstMove as any);\r\n };\r\n target.addEventListener(\"mousemove\", onFirstMove as any);\r\n\r\n const render = () => {\r\n renderedRef.current.x = lerp(renderedRef.current.x, mouseRef.current.x, 0.15);\r\n renderedRef.current.y = lerp(renderedRef.current.y, mouseRef.current.y, 0.15);\r\n\r\n if (lineHorizontalRef.current && lineVerticalRef.current) {\r\n lineVerticalRef.current.style.transform = `translateX(${renderedRef.current.x}px)`;\r\n lineHorizontalRef.current.style.transform = `translateY(${renderedRef.current.y}px)`;\r\n }\r\n\r\n animationRef.current = requestAnimationFrame(render);\r\n };\r\n\r\n render();\r\n\r\n return () => {\r\n target.removeEventListener(\"mousemove\", handleMouseMove as any);\r\n if (animationRef.current) {\r\n cancelAnimationFrame(animationRef.current);\r\n }\r\n };\r\n }, [containerRef]);\r\n\r\n return (\r\n <div\r\n ref={cursorRef}\r\n className={cn(\"pointer-events-none z-[10000]\", className)}\r\n style={{\r\n position: containerRef ? \"absolute\" : \"fixed\",\r\n top: 0,\r\n left: 0,\r\n width: \"100%\",\r\n height: \"100%\",\r\n }}\r\n >\r\n <div\r\n ref={lineHorizontalRef}\r\n style={{\r\n position: \"absolute\",\r\n width: \"100%\",\r\n height: \"1px\",\r\n background: color,\r\n pointerEvents: \"none\",\r\n opacity: 0,\r\n transition: \"opacity 0.3s ease\",\r\n }}\r\n />\r\n <div\r\n ref={lineVerticalRef}\r\n style={{\r\n position: \"absolute\",\r\n height: \"100%\",\r\n width: \"1px\",\r\n background: color,\r\n pointerEvents: \"none\",\r\n opacity: 0,\r\n transition: \"opacity 0.3s ease\",\r\n }}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nexport default Crosshair;\r\n","\"use client\";\r\n\r\nimport React, { useRef, useState, useEffect } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ScrollTextProps {\r\n texts?: string[];\r\n className?: string;\r\n}\r\n\r\nexport function ScrollText({\r\n texts = [\r\n \"TailwindCSS\",\r\n \"React\",\r\n \"Next.js\",\r\n \"TypeScript\",\r\n \"Vercel\",\r\n \"Motion\",\r\n ],\r\n className,\r\n}: ScrollTextProps) {\r\n const [activeIndex, setActiveIndex] = useState(0);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const itemsRef = useRef<(HTMLDivElement | null)[]>([]);\r\n\r\n useEffect(() => {\r\n if (!containerRef.current) return;\r\n\r\n const observer = new IntersectionObserver(\r\n (entries) => {\r\n entries.forEach((entry) => {\r\n if (entry.isIntersecting) {\r\n const index = itemsRef.current.findIndex(\r\n (item) => item === entry.target\r\n );\r\n if (index !== -1) {\r\n setActiveIndex(index);\r\n }\r\n }\r\n });\r\n },\r\n {\r\n threshold: 0.7,\r\n root: containerRef.current,\r\n rootMargin: \"-45% 0px -45% 0px\",\r\n }\r\n );\r\n\r\n itemsRef.current.forEach((item) => {\r\n if (item) observer.observe(item);\r\n });\r\n\r\n return () => observer.disconnect();\r\n }, [texts]);\r\n\r\n return (\r\n <div className={cn(\"w-full max-w-3xl mx-auto\", className)}>\r\n <div\r\n ref={containerRef}\r\n className={cn(\r\n \"h-[300px] overflow-y-auto\",\r\n \"relative flex flex-col items-center\",\r\n \"[&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]\"\r\n )}\r\n >\r\n <div className=\"h-[150px]\" />\r\n <div className=\"flex flex-col items-center w-full\">\r\n {texts.map((text, index) => (\r\n <div\r\n key={`${text}-${index}`}\r\n ref={(el) => {\r\n itemsRef.current[index] = el;\r\n }}\r\n className={cn(\r\n \"text-5xl font-bold py-8 px-4 whitespace-nowrap\",\r\n \"transition-all duration-300\",\r\n activeIndex === index\r\n ? \"text-zinc-900 dark:text-white scale-100 opacity-100\"\r\n : \"text-zinc-400/50 dark:text-zinc-600 scale-95 opacity-50\"\r\n )}\r\n >\r\n {text}\r\n </div>\r\n ))}\r\n </div>\r\n <div className=\"h-[150px]\" />\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ScrollText;\r\n"]}