bynana-ui 1.6.2 → 1.7.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 (101) hide show
  1. package/dist/action-search-bar/index.js +17 -0
  2. package/dist/action-search-bar/index.js.map +1 -0
  3. package/dist/action-search-bar/index.mjs +17 -0
  4. package/dist/action-search-bar/index.mjs.map +1 -0
  5. package/dist/ai-bar/index.js +19 -0
  6. package/dist/ai-bar/index.js.map +1 -0
  7. package/dist/ai-bar/index.mjs +19 -0
  8. package/dist/ai-bar/index.mjs.map +1 -0
  9. package/dist/ai-loading/index.js +2 -0
  10. package/dist/ai-loading/index.js.map +1 -0
  11. package/dist/ai-loading/index.mjs +2 -0
  12. package/dist/ai-loading/index.mjs.map +1 -0
  13. package/dist/ai-prompt/index.js +17 -0
  14. package/dist/ai-prompt/index.js.map +1 -0
  15. package/dist/ai-prompt/index.mjs +17 -0
  16. package/dist/ai-prompt/index.mjs.map +1 -0
  17. package/dist/aurora/index.js +2 -0
  18. package/dist/aurora/index.js.map +1 -0
  19. package/dist/aurora/index.mjs +2 -0
  20. package/dist/aurora/index.mjs.map +1 -0
  21. package/dist/elastic-search/index.js +17 -0
  22. package/dist/elastic-search/index.js.map +1 -0
  23. package/dist/elastic-search/index.mjs +17 -0
  24. package/dist/elastic-search/index.mjs.map +1 -0
  25. package/dist/faqs-accordion/index.js +16 -0
  26. package/dist/faqs-accordion/index.js.map +1 -0
  27. package/dist/faqs-accordion/index.mjs +16 -0
  28. package/dist/faqs-accordion/index.mjs.map +1 -0
  29. package/dist/faqs-grid/index.js +2 -0
  30. package/dist/faqs-grid/index.js.map +1 -0
  31. package/dist/faqs-grid/index.mjs +2 -0
  32. package/dist/faqs-grid/index.mjs.map +1 -0
  33. package/dist/footer-complex/index.js +2 -0
  34. package/dist/footer-complex/index.js.map +1 -0
  35. package/dist/footer-complex/index.mjs +2 -0
  36. package/dist/footer-complex/index.mjs.map +1 -0
  37. package/dist/footer-simple/index.js +2 -0
  38. package/dist/footer-simple/index.js.map +1 -0
  39. package/dist/footer-simple/index.mjs +2 -0
  40. package/dist/footer-simple/index.mjs.map +1 -0
  41. package/dist/hero-grid/index.js +16 -0
  42. package/dist/hero-grid/index.js.map +1 -0
  43. package/dist/hero-grid/index.mjs +16 -0
  44. package/dist/hero-grid/index.mjs.map +1 -0
  45. package/dist/hero-showcase/index.js +17 -0
  46. package/dist/hero-showcase/index.js.map +1 -0
  47. package/dist/hero-showcase/index.mjs +17 -0
  48. package/dist/hero-showcase/index.mjs.map +1 -0
  49. package/dist/index.js +55 -13
  50. package/dist/index.js.map +1 -1
  51. package/dist/index.mjs +55 -13
  52. package/dist/index.mjs.map +1 -1
  53. package/dist/job-listing/index.js +19 -0
  54. package/dist/job-listing/index.js.map +1 -0
  55. package/dist/job-listing/index.mjs +19 -0
  56. package/dist/job-listing/index.mjs.map +1 -0
  57. package/dist/logo-cloud/index.js +14 -0
  58. package/dist/logo-cloud/index.js.map +1 -0
  59. package/dist/logo-cloud/index.mjs +14 -0
  60. package/dist/logo-cloud/index.mjs.map +1 -0
  61. package/dist/pricing-modern/index.js +16 -0
  62. package/dist/pricing-modern/index.js.map +1 -0
  63. package/dist/pricing-modern/index.mjs +16 -0
  64. package/dist/pricing-modern/index.mjs.map +1 -0
  65. package/dist/scroll-float/index.js +2 -0
  66. package/dist/scroll-float/index.js.map +1 -0
  67. package/dist/scroll-float/index.mjs +2 -0
  68. package/dist/scroll-float/index.mjs.map +1 -0
  69. package/dist/scroll-reveal/index.js +2 -0
  70. package/dist/scroll-reveal/index.js.map +1 -0
  71. package/dist/scroll-reveal/index.mjs +2 -0
  72. package/dist/scroll-reveal/index.mjs.map +1 -0
  73. package/dist/scroll-stack/index.js +2 -0
  74. package/dist/scroll-stack/index.js.map +1 -0
  75. package/dist/scroll-stack/index.mjs +2 -0
  76. package/dist/scroll-stack/index.mjs.map +1 -0
  77. package/dist/squares/index.js +2 -0
  78. package/dist/squares/index.js.map +1 -0
  79. package/dist/squares/index.mjs +2 -0
  80. package/dist/squares/index.mjs.map +1 -0
  81. package/dist/team-carousel/index.js +17 -0
  82. package/dist/team-carousel/index.js.map +1 -0
  83. package/dist/team-carousel/index.mjs +17 -0
  84. package/dist/team-carousel/index.mjs.map +1 -0
  85. package/dist/testimonials-grid/index.js +17 -0
  86. package/dist/testimonials-grid/index.js.map +1 -0
  87. package/dist/testimonials-grid/index.mjs +17 -0
  88. package/dist/testimonials-grid/index.mjs.map +1 -0
  89. package/dist/testimonials-simple/index.js +3 -0
  90. package/dist/testimonials-simple/index.js.map +1 -0
  91. package/dist/testimonials-simple/index.mjs +3 -0
  92. package/dist/testimonials-simple/index.mjs.map +1 -0
  93. package/dist/threads/index.js +2 -0
  94. package/dist/threads/index.js.map +1 -0
  95. package/dist/threads/index.mjs +2 -0
  96. package/dist/threads/index.mjs.map +1 -0
  97. package/dist/waves/index.js +2 -0
  98. package/dist/waves/index.js.map +1 -0
  99. package/dist/waves/index.mjs +2 -0
  100. package/dist/waves/index.mjs.map +1 -0
  101. package/package.json +26 -2
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/cn.ts","../src/shine-button/index.tsx","../src/ripple-button/index.tsx","../src/magnetic-button/index.tsx","../src/bounce-button/index.tsx","../src/glow-button/index.tsx","../src/pulse-button/index.tsx","../src/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","../src/card-stack/index.tsx","../src/apple-activity-card/index.tsx","../src/tweet-card/index.tsx","../src/stats-cards/index.tsx","../src/stats-grid/index.tsx","../src/bento-grid/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","totalCards","isExpanded","defaultX","defaultY","defaultRotate","cardWidth","cardOverlap","expandedCenterOffset","spreadX","spreadRotate","spec","CardStack","defaultExpanded","setIsExpanded","CircleProgress","gradientId","defaultActivities","AppleActivityCard","activities","activity","VerifiedIcon","XIcon","TweetCard","authorName","authorHandle","authorImage","isVerified","reply","StatsCards","stats","isInView","useInView","stat","StatsGrid","BentoGrid","BentoCard","background","Icon","cta"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ShineButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function ShineButton({ children, className, ...props }: ShineButtonProps) {\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden px-6 py-3 rounded-xl font-medium\",\r\n \"bg-zinc-900 text-white hover:bg-zinc-800\",\r\n \"dark:bg-zinc-800 dark:hover:bg-zinc-700 dark:text-white\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span\r\n className={cn(\r\n \"absolute inset-0 overflow-hidden rounded-[inherit]\",\r\n \"before:absolute before:inset-0\",\r\n \"before:-translate-x-full\",\r\n \"before:animate-shimmer\",\r\n \"before:bg-gradient-to-r\",\r\n \"before:from-transparent before:via-white/40 before:to-transparent\",\r\n \"before:skew-x-[-20deg]\"\r\n )}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default ShineButton;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RippleButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function RippleButton({ children, className, onClick, ...props }: RippleButtonProps) {\r\n const [ripples, setRipples] = useState<Array<{ x: number; y: number; id: number }>>([]);\r\n\r\n function handleClick(e: React.MouseEvent<HTMLButtonElement>) {\r\n const button = e.currentTarget;\r\n const rect = button.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n const newRipple = { x, y, id: Date.now() };\r\n\r\n setRipples((prev) => [...prev, newRipple]);\r\n setTimeout(() => {\r\n setRipples((prev) => prev.filter((r) => r.id !== newRipple.id));\r\n }, 1000);\r\n\r\n onClick?.(e);\r\n }\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden px-6 py-3 rounded-xl font-medium\",\r\n \"bg-zinc-900 text-white hover:bg-zinc-800\",\r\n \"dark:bg-zinc-100 dark:text-black dark:hover:bg-zinc-200\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n onClick={handleClick}\r\n {...props}\r\n >\r\n <AnimatePresence>\r\n {ripples.map((ripple) => (\r\n <motion.span\r\n key={ripple.id}\r\n className=\"absolute rounded-full pointer-events-none border-2 border-white/50 dark:border-black/50\"\r\n style={{\r\n left: ripple.x,\r\n top: ripple.y,\r\n transform: \"translate(-50%, -50%)\",\r\n }}\r\n initial={{ width: 0, height: 0, opacity: 0.9 }}\r\n animate={{ width: 500, height: 500, opacity: 0 }}\r\n exit={{ opacity: 0 }}\r\n transition={{ duration: 1, ease: [0.4, 0, 0.2, 1] }}\r\n />\r\n ))}\r\n </AnimatePresence>\r\n <span className=\"relative z-10\">{children}</span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default RippleButton;\r\n","\"use client\";\r\n\r\nimport React, { useRef, useState } from \"react\";\r\nimport { motion, useMotionValue, useSpring } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MagneticButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n strength?: number;\r\n radius?: number;\r\n}\r\n\r\nexport function MagneticButton({\r\n children,\r\n className,\r\n strength = 0.5,\r\n radius = 200,\r\n ...props\r\n}: MagneticButtonProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n const x = useMotionValue(0);\r\n const y = useMotionValue(0);\r\n\r\n const springConfig = { damping: 20, stiffness: 300, mass: 0.5 };\r\n const xSpring = useSpring(x, springConfig);\r\n const ySpring = useSpring(y, springConfig);\r\n\r\n const handleMouseMove = (e: React.MouseEvent) => {\r\n if (!ref.current) return;\r\n const rect = ref.current.getBoundingClientRect();\r\n const centerX = rect.left + rect.width / 2;\r\n const centerY = rect.top + rect.height / 2;\r\n const distanceX = e.clientX - centerX;\r\n const distanceY = e.clientY - centerY;\r\n const distance = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\r\n\r\n if (distance < radius) {\r\n const factor = 1 - distance / radius;\r\n x.set(distanceX * strength * factor);\r\n y.set(distanceY * strength * factor);\r\n }\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n setIsHovered(false);\r\n x.set(0);\r\n y.set(0);\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className=\"relative inline-flex items-center justify-center\"\r\n onMouseMove={handleMouseMove}\r\n onMouseLeave={handleMouseLeave}\r\n onMouseEnter={() => setIsHovered(true)}\r\n style={{ padding: radius / 2, margin: -radius / 2 }}\r\n >\r\n <motion.div style={{ x: xSpring, y: ySpring }}>\r\n <button\r\n className={cn(\r\n \"px-6 py-3 rounded-xl font-medium\",\r\n \"bg-zinc-900 text-white hover:bg-zinc-800\",\r\n \"dark:bg-zinc-100 dark:text-black dark:hover:bg-zinc-200\",\r\n \"transition-shadow duration-300\",\r\n isHovered && \"shadow-lg\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default MagneticButton;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BounceButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function BounceButton({ children, className, onClick, ...props }: BounceButtonProps) {\r\n const [isBouncing, setIsBouncing] = useState(false);\r\n\r\n function handleClick(e: React.MouseEvent<HTMLButtonElement>) {\r\n setIsBouncing(true);\r\n setTimeout(() => setIsBouncing(false), 1500);\r\n onClick?.(e);\r\n }\r\n\r\n return (\r\n <div className=\"relative inline-block\">\r\n <motion.div\r\n className=\"absolute -bottom-2 left-1/2 w-16 h-2 bg-black/20 rounded-full blur-sm\"\r\n animate={isBouncing ? {\r\n scaleX: [1, 0.8, 1.2, 0.9, 1.1, 0.95, 1],\r\n opacity: [0.3, 0.6, 0.2, 0.5, 0.3, 0.4, 0.3],\r\n } : {}}\r\n style={{ x: \"-50%\" }}\r\n transition={{ duration: 1.5, ease: \"easeOut\" }}\r\n />\r\n\r\n <motion.div\r\n animate={isBouncing ? {\r\n y: [0, -40, -20, -35, -10, -25, -5, -15, 0],\r\n rotate: [0, -5, 2, -3, 1, -2, 0.5, -1, 0],\r\n } : {}}\r\n transition={{\r\n duration: 1.5,\r\n ease: \"easeOut\",\r\n times: [0, 0.2, 0.35, 0.5, 0.65, 0.75, 0.85, 0.95, 1],\r\n }}\r\n whileHover={!isBouncing ? { y: [0, -8, 0] } : {}}\r\n >\r\n <button\r\n className={cn(\r\n \"px-6 py-3 rounded-xl font-medium\",\r\n \"bg-orange-500 hover:bg-orange-600 text-white\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n onClick={handleClick}\r\n disabled={isBouncing}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default BounceButton;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlowButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n glowColor?: string;\r\n}\r\n\r\nexport function GlowButton({\r\n children,\r\n className,\r\n glowColor = \"rgba(59, 130, 246, 0.8)\",\r\n ...props\r\n}: GlowButtonProps) {\r\n const [isGlowing, setIsGlowing] = useState(false);\r\n\r\n return (\r\n <motion.div\r\n className=\"relative inline-block\"\r\n onMouseEnter={() => setIsGlowing(true)}\r\n onMouseLeave={() => setIsGlowing(false)}\r\n animate={{\r\n filter: isGlowing\r\n ? [\r\n `drop-shadow(0 0 10px ${glowColor})`,\r\n `drop-shadow(0 0 25px ${glowColor})`,\r\n `drop-shadow(0 0 10px ${glowColor})`,\r\n ]\r\n : \"drop-shadow(0 0 0px transparent)\",\r\n }}\r\n transition={{\r\n duration: isGlowing ? 1.5 : 0.3,\r\n repeat: isGlowing ? Infinity : 0,\r\n }}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 rounded-xl\"\r\n animate={isGlowing ? {\r\n boxShadow: [\r\n `0 0 20px ${glowColor}`,\r\n `0 0 40px ${glowColor}`,\r\n `0 0 20px ${glowColor}`,\r\n ],\r\n scale: [1, 1.05, 1],\r\n } : {\r\n boxShadow: \"0 0 0px transparent\",\r\n scale: 1,\r\n }}\r\n transition={{\r\n duration: 2,\r\n repeat: isGlowing ? Infinity : 0,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n\r\n <button\r\n className={cn(\r\n \"relative px-6 py-3 rounded-xl font-medium\",\r\n \"bg-blue-600 hover:bg-blue-700 text-white\",\r\n \"transition-all duration-300\",\r\n isGlowing && \"bg-blue-500\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default GlowButton;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface PulseButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n pulseColor?: string;\r\n}\r\n\r\nexport function PulseButton({\r\n children,\r\n className,\r\n pulseColor = \"rgba(239, 68, 68, 0.5)\",\r\n ...props\r\n}: PulseButtonProps) {\r\n return (\r\n <div className=\"relative inline-block\">\r\n <motion.div\r\n className=\"absolute inset-0 rounded-xl\"\r\n style={{ backgroundColor: pulseColor }}\r\n animate={{\r\n scale: [1, 1.3, 1, 1.2, 1],\r\n opacity: [0.6, 0, 0.6, 0, 0.6],\r\n }}\r\n transition={{\r\n duration: 1.2,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n times: [0, 0.2, 0.4, 0.6, 1],\r\n }}\r\n />\r\n\r\n <motion.div\r\n className=\"absolute inset-0 rounded-xl\"\r\n style={{ backgroundColor: pulseColor }}\r\n animate={{\r\n scale: [1, 1.5, 1, 1.4, 1],\r\n opacity: [0.4, 0, 0.4, 0, 0.4],\r\n }}\r\n transition={{\r\n duration: 1.2,\r\n delay: 0.1,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n times: [0, 0.2, 0.4, 0.6, 1],\r\n }}\r\n />\r\n\r\n <motion.div\r\n animate={{\r\n scale: [1, 1.05, 1, 1.03, 1],\r\n }}\r\n transition={{\r\n duration: 1.2,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n times: [0, 0.2, 0.4, 0.6, 1],\r\n }}\r\n >\r\n <button\r\n className={cn(\r\n \"relative px-6 py-3 rounded-xl font-medium\",\r\n \"bg-red-500 hover:bg-red-600 text-white\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default PulseButton;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface NeonButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n color?: \"pink\" | \"cyan\" | \"green\" | \"purple\" | \"orange\";\r\n size?: \"sm\" | \"default\" | \"lg\";\r\n}\r\n\r\nconst colorVariants = {\r\n pink: {\r\n border: \"border-pink-500\",\r\n text: \"text-pink-400\",\r\n shadow: \"shadow-pink-500/50\",\r\n glow: \"rgba(236, 72, 153, 0.6)\",\r\n bg: \"hover:bg-pink-500/10\",\r\n },\r\n cyan: {\r\n border: \"border-cyan-500\",\r\n text: \"text-cyan-400\",\r\n shadow: \"shadow-cyan-500/50\",\r\n glow: \"rgba(6, 182, 212, 0.6)\",\r\n bg: \"hover:bg-cyan-500/10\",\r\n },\r\n green: {\r\n border: \"border-green-500\",\r\n text: \"text-green-400\",\r\n shadow: \"shadow-green-500/50\",\r\n glow: \"rgba(34, 197, 94, 0.6)\",\r\n bg: \"hover:bg-green-500/10\",\r\n },\r\n purple: {\r\n border: \"border-purple-500\",\r\n text: \"text-purple-400\",\r\n shadow: \"shadow-purple-500/50\",\r\n glow: \"rgba(168, 85, 247, 0.6)\",\r\n bg: \"hover:bg-purple-500/10\",\r\n },\r\n orange: {\r\n border: \"border-orange-500\",\r\n text: \"text-orange-400\",\r\n shadow: \"shadow-orange-500/50\",\r\n glow: \"rgba(249, 115, 22, 0.6)\",\r\n bg: \"hover:bg-orange-500/10\",\r\n },\r\n};\r\n\r\nconst sizeVariants = {\r\n sm: \"h-8 px-3 text-xs\",\r\n default: \"h-10 px-6 text-sm\",\r\n lg: \"h-12 px-8 text-base\",\r\n};\r\n\r\nexport function NeonButton({\r\n children,\r\n className,\r\n color = \"cyan\",\r\n size = \"default\",\r\n ...props\r\n}: NeonButtonProps) {\r\n const colors = colorVariants[color];\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative inline-flex items-center justify-center\",\r\n \"font-semibold tracking-wide uppercase\",\r\n \"border-2 rounded-lg\",\r\n \"bg-transparent\",\r\n \"transition-colors duration-200\",\r\n colors.border,\r\n colors.text,\r\n colors.bg,\r\n sizeVariants[size],\r\n className\r\n )}\r\n whileHover={{\r\n boxShadow: `0 0 20px ${colors.glow}, 0 0 40px ${colors.glow}, 0 0 60px ${colors.glow}`,\r\n }}\r\n whileTap={{ scale: 0.98 }}\r\n transition={{ duration: 0.2 }}\r\n {...props}\r\n >\r\n <motion.span\r\n className={cn(\"absolute inset-0 rounded-lg opacity-0\", colors.border)}\r\n animate={{ opacity: [0.5, 1, 0.5] }}\r\n transition={{ duration: 2, repeat: Infinity, ease: \"easeInOut\" }}\r\n style={{ boxShadow: `inset 0 0 10px ${colors.glow}` }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default NeonButton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LiquidButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"outline\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function LiquidButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n onClick,\r\n ...props\r\n}: LiquidButtonProps) {\r\n const [isFilling, setIsFilling] = useState(false);\r\n\r\n function handleClick(e: React.MouseEvent<HTMLButtonElement>) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setIsFilling(true);\r\n setTimeout(() => setIsFilling(false), 800);\r\n if (onClick) onClick(e);\r\n }\r\n\r\n const sizeClasses = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\"\r\n };\r\n\r\n const variantClasses = {\r\n primary: \"bg-zinc-900 text-white border-zinc-900 dark:bg-white dark:text-zinc-900 dark:border-white\",\r\n secondary: \"bg-zinc-100 text-zinc-900 border-zinc-200 dark:bg-zinc-800 dark:text-white dark:border-zinc-700\",\r\n outline: \"bg-transparent text-zinc-900 border-zinc-300 dark:text-white dark:border-zinc-600\"\r\n };\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-medium border-2 transition-colors\",\r\n sizeClasses[size],\r\n variantClasses[variant],\r\n className\r\n )}\r\n onClick={handleClick}\r\n {...props}\r\n >\r\n <AnimatePresence>\r\n {isFilling && (\r\n <motion.div\r\n key=\"liquid-fill\"\r\n className={cn(\r\n \"absolute inset-0 origin-bottom\",\r\n variant === \"primary\" ? \"bg-blue-500 dark:bg-blue-400\" : \"bg-zinc-900 dark:bg-white\"\r\n )}\r\n initial={{ scaleY: 0 }}\r\n animate={{ scaleY: 1 }}\r\n exit={{ scaleY: 0, transition: { duration: 0.3 } }}\r\n transition={{ duration: 0.5, ease: [0.4, 0, 0.2, 1] }}\r\n style={{ transformOrigin: \"bottom\" }}\r\n />\r\n )}\r\n </AnimatePresence>\r\n \r\n <AnimatePresence>\r\n {isFilling && (\r\n <>\r\n {[...Array(5)].map((_, i) => (\r\n <motion.div\r\n key={i}\r\n className=\"absolute w-1.5 h-1.5 bg-white/60 rounded-full\"\r\n style={{ left: `${20 + i * 15}%`, bottom: \"10%\" }}\r\n initial={{ y: 0, opacity: 0, scale: 0 }}\r\n animate={{ y: -60, opacity: [0, 1, 0], scale: [0, 1, 0.5] }}\r\n transition={{ duration: 0.6, delay: i * 0.08, ease: \"easeOut\" }}\r\n />\r\n ))}\r\n </>\r\n )}\r\n </AnimatePresence>\r\n\r\n <span className={cn(\r\n \"relative flex items-center justify-center gap-2 transition-colors duration-200 z-10\",\r\n isFilling && (variant === \"outline\" || variant === \"secondary\" ? \"text-white dark:text-zinc-900\" : \"text-white\")\r\n )}>\r\n {children}\r\n </span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default LiquidButton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SlideButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"outline\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n slideText?: string;\r\n}\r\n\r\nexport function SlideButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n slideText = \"Go!\",\r\n onClick,\r\n ...props\r\n}: SlideButtonProps) {\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n const sizeClasses = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\"\r\n };\r\n\r\n const variantClasses = {\r\n primary: \"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900\",\r\n secondary: \"bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-white\",\r\n outline: \"bg-transparent text-zinc-900 border-2 border-zinc-300 dark:text-white dark:border-zinc-600\"\r\n };\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-medium transition-all\",\r\n sizeClasses[size],\r\n variantClasses[variant],\r\n className\r\n )}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n onClick={onClick}\r\n {...props}\r\n >\r\n <motion.div\r\n className={cn(\r\n \"absolute inset-0\",\r\n variant === \"primary\" ? \"bg-blue-600 dark:bg-blue-500\" : \"bg-zinc-900 dark:bg-white\"\r\n )}\r\n initial={{ x: \"-100%\" }}\r\n animate={{ x: isHovered ? \"0%\" : \"-100%\" }}\r\n transition={{ duration: 0.3, ease: \"easeInOut\" }}\r\n />\r\n \r\n <motion.span\r\n className=\"relative flex items-center justify-center gap-2 z-10\"\r\n animate={{ x: isHovered ? 20 : 0, opacity: isHovered ? 0 : 1 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {children}\r\n </motion.span>\r\n \r\n <motion.span\r\n className={cn(\r\n \"absolute inset-0 flex items-center justify-center gap-2 z-10\",\r\n variant === \"outline\" || variant === \"secondary\" ? \"text-white dark:text-zinc-900\" : \"text-white\"\r\n )}\r\n initial={{ x: -20, opacity: 0 }}\r\n animate={{ x: isHovered ? 0 : -20, opacity: isHovered ? 1 : 0 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {slideText}\r\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M14 5l7 7m0 0l-7 7m7-7H3\" />\r\n </svg>\r\n </motion.span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default SlideButton;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GradientButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"sunset\" | \"ocean\" | \"forest\" | \"purple\" | \"fire\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst gradients = {\r\n sunset: \"from-orange-500 via-pink-500 to-purple-500\",\r\n ocean: \"from-cyan-500 via-blue-500 to-purple-500\",\r\n forest: \"from-green-500 via-emerald-500 to-teal-500\",\r\n purple: \"from-purple-500 via-violet-500 to-indigo-500\",\r\n fire: \"from-yellow-500 via-orange-500 to-red-500\",\r\n};\r\n\r\nconst sizes = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\",\r\n};\r\n\r\nexport function GradientButton({\r\n children,\r\n className,\r\n variant = \"ocean\",\r\n size = \"md\",\r\n ...props\r\n}: GradientButtonProps) {\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-semibold text-white\",\r\n \"bg-gradient-to-r\",\r\n gradients[variant],\r\n sizes[size],\r\n className\r\n )}\r\n whileHover={{ scale: 1.02 }}\r\n whileTap={{ scale: 0.98 }}\r\n {...props}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 bg-gradient-to-r from-white/0 via-white/25 to-white/0\"\r\n initial={{ x: \"-100%\" }}\r\n whileHover={{ x: \"100%\" }}\r\n transition={{ duration: 0.5 }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default GradientButton;\r\n","\"use client\";\r\n\r\nimport { useState, useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HoldButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n holdDuration?: number;\r\n onHoldComplete?: () => void;\r\n variant?: \"primary\" | \"danger\" | \"success\";\r\n}\r\n\r\nexport function HoldButton({\r\n children,\r\n className,\r\n holdDuration = 1000,\r\n onHoldComplete,\r\n variant = \"primary\",\r\n ...props\r\n}: HoldButtonProps) {\r\n const [progress, setProgress] = useState(0);\r\n const [isHolding, setIsHolding] = useState(false);\r\n const intervalRef = useRef<NodeJS.Timeout | null>(null);\r\n\r\n const variants = {\r\n primary: \"bg-zinc-900 dark:bg-white\",\r\n danger: \"bg-red-500\",\r\n success: \"bg-green-500\",\r\n };\r\n\r\n const progressColors = {\r\n primary: \"bg-blue-500\",\r\n danger: \"bg-red-700\",\r\n success: \"bg-green-700\",\r\n };\r\n\r\n const startHold = () => {\r\n setIsHolding(true);\r\n const startTime = Date.now();\r\n \r\n intervalRef.current = setInterval(() => {\r\n const elapsed = Date.now() - startTime;\r\n const newProgress = Math.min((elapsed / holdDuration) * 100, 100);\r\n setProgress(newProgress);\r\n \r\n if (newProgress >= 100) {\r\n stopHold();\r\n onHoldComplete?.();\r\n }\r\n }, 16);\r\n };\r\n\r\n const stopHold = () => {\r\n setIsHolding(false);\r\n setProgress(0);\r\n if (intervalRef.current) {\r\n clearInterval(intervalRef.current);\r\n intervalRef.current = null;\r\n }\r\n };\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg px-6 py-3 font-medium text-white dark:text-zinc-900\",\r\n variants[variant],\r\n className\r\n )}\r\n onMouseDown={startHold}\r\n onMouseUp={stopHold}\r\n onMouseLeave={stopHold}\r\n onTouchStart={startHold}\r\n onTouchEnd={stopHold}\r\n whileTap={{ scale: 0.98 }}\r\n {...props}\r\n >\r\n <motion.div\r\n className={cn(\"absolute inset-0 origin-left\", progressColors[variant])}\r\n style={{ scaleX: progress / 100 }}\r\n transition={{ duration: 0 }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default HoldButton;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ThreeDButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"danger\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst variants = {\r\n primary: {\r\n bg: \"bg-blue-500\",\r\n shadow: \"shadow-blue-700\",\r\n hover: \"hover:bg-blue-600\",\r\n },\r\n secondary: {\r\n bg: \"bg-zinc-700\",\r\n shadow: \"shadow-zinc-900\",\r\n hover: \"hover:bg-zinc-800\",\r\n },\r\n danger: {\r\n bg: \"bg-red-500\",\r\n shadow: \"shadow-red-700\",\r\n hover: \"hover:bg-red-600\",\r\n },\r\n};\r\n\r\nconst sizes = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\",\r\n};\r\n\r\nexport function ThreeDButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n ...props\r\n}: ThreeDButtonProps) {\r\n const colors = variants[variant];\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative rounded-lg font-semibold text-white\",\r\n \"shadow-[0_6px_0_0]\",\r\n colors.bg,\r\n colors.shadow,\r\n colors.hover,\r\n sizes[size],\r\n className\r\n )}\r\n whileHover={{ y: -2 }}\r\n whileTap={{ y: 4, boxShadow: \"0 2px 0 0\" }}\r\n transition={{ duration: 0.1 }}\r\n {...props}\r\n >\r\n {children}\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default ThreeDButton;\r\n","\"use client\";\r\n\r\nimport { 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","\"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 Specification {\r\n label: string;\r\n value: string;\r\n}\r\n\r\ninterface CardStackItem {\r\n id: string;\r\n title: string;\r\n subtitle: string;\r\n image: string;\r\n specs: Specification[];\r\n description?: string;\r\n}\r\n\r\ninterface CardProps {\r\n item: CardStackItem;\r\n index: number;\r\n totalCards: number;\r\n isExpanded: boolean;\r\n}\r\n\r\nconst Card = ({ item, index, totalCards, isExpanded }: CardProps) => {\r\n const centerOffset = (totalCards - 1) * 5;\r\n const defaultX = index * 10 - centerOffset;\r\n const defaultY = index * 2;\r\n const defaultRotate = index * 1.5;\r\n\r\n const cardWidth = 320;\r\n const cardOverlap = 240;\r\n const totalExpandedWidth = cardWidth + (totalCards - 1) * (cardWidth - cardOverlap);\r\n const expandedCenterOffset = totalExpandedWidth / 2;\r\n\r\n const spreadX = index * (cardWidth - cardOverlap) - expandedCenterOffset + cardWidth / 2;\r\n const spreadRotate = index * 5 - (totalCards - 1) * 2.5;\r\n\r\n return (\r\n <motion.div\r\n initial={{ x: defaultX, y: defaultY, rotate: defaultRotate, scale: 1 }}\r\n animate={{\r\n x: isExpanded ? spreadX : defaultX,\r\n y: isExpanded ? 0 : defaultY,\r\n rotate: isExpanded ? spreadRotate : defaultRotate,\r\n scale: 1,\r\n zIndex: totalCards - index,\r\n }}\r\n transition={{ type: \"spring\", stiffness: 350, damping: 30, mass: 0.8 }}\r\n className={cn(\r\n \"absolute inset-0 rounded-2xl p-6 w-full\",\r\n \"bg-gradient-to-br from-white/40 via-neutral-50/30 to-neutral-100/20\",\r\n \"dark:from-neutral-800/40 dark:via-neutral-900/30 dark:to-black/20\",\r\n \"border border-white/20 dark:border-neutral-800/20\",\r\n \"backdrop-blur-xl backdrop-saturate-150\",\r\n \"shadow-[0_8px_20px_rgb(0,0,0,0.08)] dark:shadow-[0_8px_20px_rgb(0,0,0,0.3)]\",\r\n \"transition-all duration-500 ease-out transform-gpu overflow-hidden\"\r\n )}\r\n style={{ maxWidth: \"320px\", left: \"50%\", marginLeft: \"-160px\" }}\r\n >\r\n <div className=\"absolute inset-1 rounded-xl bg-neutral-900/50 backdrop-blur-sm border border-neutral-200/50 dark:border-neutral-700/50\" />\r\n <div className=\"relative z-10\">\r\n <dl className=\"mb-4 grid grid-cols-4 gap-2\">\r\n {item.specs.map((spec) => (\r\n <div key={spec.label} className=\"text-[10px] flex flex-col items-start\">\r\n <dd className=\"font-medium text-gray-500 dark:text-gray-400\">{spec.value}</dd>\r\n <dt className=\"text-white dark:text-gray-100\">{spec.label}</dt>\r\n </div>\r\n ))}\r\n </dl>\r\n <div className=\"aspect-[16/11] w-full overflow-hidden rounded-lg bg-neutral-100 dark:bg-neutral-900 border border-neutral-200/50 dark:border-neutral-700/50\">\r\n <img src={item.image} alt={item.title} className=\"object-cover w-full h-full\" loading=\"lazy\" />\r\n </div>\r\n <div className=\"mt-4\">\r\n <h2 className=\"text-3xl font-bold tracking-tight text-white\">{item.title}</h2>\r\n <span className=\"block text-3xl font-semibold tracking-tight bg-gradient-to-r from-gray-400 via-gray-300 to-gray-500 bg-clip-text text-transparent\">\r\n {item.subtitle}\r\n </span>\r\n {item.description && <p className=\"mt-2 text-sm text-gray-500 dark:text-gray-400\">{item.description}</p>}\r\n </div>\r\n </div>\r\n </motion.div>\r\n );\r\n};\r\n\r\ninterface CardStackProps {\r\n items: CardStackItem[];\r\n className?: string;\r\n defaultExpanded?: boolean;\r\n}\r\n\r\nexport function CardStack({ items, className, defaultExpanded = false }: CardStackProps) {\r\n const [isExpanded, setIsExpanded] = useState(defaultExpanded);\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative mx-auto cursor-pointer min-h-[440px] w-full max-w-[90vw] md:max-w-[1200px]\",\r\n \"appearance-none bg-transparent border-0 p-0 flex items-center justify-center mb-8\",\r\n className\r\n )}\r\n onClick={() => setIsExpanded(!isExpanded)}\r\n aria-label=\"Toggle card stack\"\r\n type=\"button\"\r\n >\r\n {items.map((item, index) => (\r\n <Card key={item.id} item={item} index={index} totalCards={items.length} isExpanded={isExpanded} />\r\n ))}\r\n </button>\r\n );\r\n}\r\n\r\nexport type { CardStackItem, Specification };\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ActivityData {\r\n label: string;\r\n value: number;\r\n color: string;\r\n size: number;\r\n current: number;\r\n target: number;\r\n unit: string;\r\n}\r\n\r\ninterface CircleProgressProps {\r\n data: ActivityData;\r\n index: number;\r\n}\r\n\r\nconst CircleProgress = ({ data, index }: CircleProgressProps) => {\r\n const strokeWidth = 16;\r\n const radius = (data.size - strokeWidth) / 2;\r\n const circumference = radius * 2 * Math.PI;\r\n const progress = ((100 - data.value) / 100) * circumference;\r\n const gradientId = `gradient-${data.label.toLowerCase()}-${index}`;\r\n\r\n return (\r\n <motion.div\r\n className=\"absolute inset-0 flex items-center justify-center\"\r\n initial={{ opacity: 0, scale: 0.8 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n transition={{ duration: 0.8, delay: index * 0.2, ease: \"easeOut\" }}\r\n >\r\n <svg\r\n width={data.size}\r\n height={data.size}\r\n viewBox={`0 0 ${data.size} ${data.size}`}\r\n className=\"transform -rotate-90\"\r\n aria-label={`${data.label} Activity Progress - ${data.value}%`}\r\n >\r\n <title>{`${data.label} Activity Progress - ${data.value}%`}</title>\r\n <defs>\r\n <linearGradient id={gradientId} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\r\n <stop offset=\"0%\" style={{ stopColor: data.color, stopOpacity: 1 }} />\r\n <stop\r\n offset=\"100%\"\r\n style={{\r\n stopColor: data.color === \"#FF2D55\" ? \"#FF6B8B\" : data.color === \"#A3F900\" ? \"#C5FF4D\" : \"#4DDFED\",\r\n stopOpacity: 1,\r\n }}\r\n />\r\n </linearGradient>\r\n </defs>\r\n <circle\r\n cx={data.size / 2}\r\n cy={data.size / 2}\r\n r={radius}\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth={strokeWidth}\r\n className=\"text-zinc-200/50 dark:text-zinc-800/50\"\r\n />\r\n <motion.circle\r\n cx={data.size / 2}\r\n cy={data.size / 2}\r\n r={radius}\r\n fill=\"none\"\r\n stroke={`url(#${gradientId})`}\r\n strokeWidth={strokeWidth}\r\n strokeDasharray={circumference}\r\n initial={{ strokeDashoffset: circumference }}\r\n animate={{ strokeDashoffset: progress }}\r\n transition={{ duration: 1.8, delay: index * 0.2, ease: \"easeInOut\" }}\r\n strokeLinecap=\"round\"\r\n style={{ filter: \"drop-shadow(0 0 6px rgba(0,0,0,0.15))\" }}\r\n />\r\n </svg>\r\n </motion.div>\r\n );\r\n};\r\n\r\ninterface AppleActivityCardProps {\r\n title?: string;\r\n className?: string;\r\n activities?: ActivityData[];\r\n}\r\n\r\nconst defaultActivities: ActivityData[] = [\r\n { label: \"MOVE\", value: 85, color: \"#FF2D55\", size: 200, current: 479, target: 800, unit: \"CAL\" },\r\n { label: \"EXERCISE\", value: 60, color: \"#A3F900\", size: 160, current: 24, target: 30, unit: \"MIN\" },\r\n { label: \"STAND\", value: 30, color: \"#04C7DD\", size: 120, current: 6, target: 12, unit: \"HR\" },\r\n];\r\n\r\nexport function AppleActivityCard({ title = \"Activity Rings\", className, activities = defaultActivities }: AppleActivityCardProps) {\r\n return (\r\n <div className={cn(\"relative w-full max-w-3xl mx-auto p-8 rounded-3xl text-zinc-900 dark:text-white\", className)}>\r\n <div className=\"flex flex-col items-center gap-8\">\r\n <motion.h2\r\n className=\"text-2xl font-medium text-zinc-900 dark:text-white\"\r\n initial={{ opacity: 0, y: -20 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.5 }}\r\n >\r\n {title}\r\n </motion.h2>\r\n <div className=\"flex items-center\">\r\n <div className=\"relative w-[180px] h-[180px]\">\r\n {activities.map((activity, index) => (\r\n <CircleProgress key={activity.label} data={activity} index={index} />\r\n ))}\r\n </div>\r\n <motion.div\r\n className=\"flex flex-col gap-6 ml-8\"\r\n initial={{ opacity: 0, x: 20 }}\r\n animate={{ opacity: 1, x: 0 }}\r\n transition={{ duration: 0.5, delay: 0.3 }}\r\n >\r\n {activities.map((activity) => (\r\n <div key={activity.label} className=\"flex flex-col\">\r\n <span className=\"text-sm font-medium text-zinc-600 dark:text-zinc-400\">{activity.label}</span>\r\n <span className=\"text-2xl font-semibold\" style={{ color: activity.color }}>\r\n {activity.current}/{activity.target}\r\n <span className=\"text-base ml-1 text-zinc-600 dark:text-zinc-400\">{activity.unit}</span>\r\n </span>\r\n </div>\r\n ))}\r\n </motion.div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport type { ActivityData };\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ReplyProps {\r\n authorName: string;\r\n authorHandle: string;\r\n authorImage: string;\r\n content: string;\r\n isVerified?: boolean;\r\n timestamp: string;\r\n}\r\n\r\ninterface TweetCardProps {\r\n authorName: string;\r\n authorHandle: string;\r\n authorImage: string;\r\n content: string[];\r\n isVerified?: boolean;\r\n timestamp: string;\r\n reply?: ReplyProps;\r\n href?: string;\r\n className?: string;\r\n}\r\n\r\nconst VerifiedIcon = ({ className }: { className?: string }) => (\r\n <svg className={className} viewBox=\"0 0 22 22\" fill=\"currentColor\">\r\n <path d=\"M20.396 11c-.018-.646-.215-1.275-.57-1.816-.354-.54-.852-.972-1.438-1.246.223-.607.27-1.264.14-1.897-.131-.634-.437-1.218-.882-1.687-.47-.445-1.053-.75-1.687-.882-.633-.13-1.29-.083-1.897.14-.273-.587-.704-1.086-1.245-1.44S11.647 1.62 11 1.604c-.646.017-1.273.213-1.813.568s-.969.854-1.24 1.44c-.608-.223-1.267-.272-1.902-.14-.635.13-1.22.436-1.69.882-.445.47-.749 1.055-.878 1.688-.13.633-.08 1.29.144 1.896-.587.274-1.087.705-1.443 1.245-.356.54-.555 1.17-.574 1.817.02.647.218 1.276.574 1.817.356.54.856.972 1.443 1.245-.224.606-.274 1.263-.144 1.896.13.634.433 1.218.877 1.688.47.443 1.054.747 1.687.878.633.132 1.29.084 1.897-.136.274.586.705 1.084 1.246 1.439.54.354 1.17.551 1.816.569.647-.016 1.276-.213 1.817-.567s.972-.854 1.245-1.44c.604.239 1.266.296 1.903.164.636-.132 1.22-.447 1.68-.907.46-.46.776-1.044.908-1.681s.075-1.299-.165-1.903c.586-.274 1.084-.705 1.439-1.246.354-.54.551-1.17.569-1.816zM9.662 14.85l-3.429-3.428 1.293-1.302 2.072 2.072 4.4-4.794 1.347 1.246z\" />\r\n </svg>\r\n);\r\n\r\nconst XIcon = ({ className }: { className?: string }) => (\r\n <svg className={className} viewBox=\"0 0 1200 1227\" fill=\"none\">\r\n <title>X</title>\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M714.163 519.284 1160.89 0h-105.86L667.137 450.887 357.328 0H0l468.492 681.821L0 1226.37h105.866l409.625-476.152 327.181 476.152H1200L714.137 519.284h.026ZM569.165 687.828l-47.468-67.894-377.686-540.24h162.604l304.797 435.991 47.468 67.894 396.2 566.721H892.476L569.165 687.854v-.026Z\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport function TweetCard({\r\n authorName,\r\n authorHandle,\r\n authorImage,\r\n content,\r\n isVerified = false,\r\n timestamp,\r\n reply,\r\n href,\r\n className,\r\n}: TweetCardProps) {\r\n const Wrapper = href ? \"a\" : \"div\";\r\n const wrapperProps = href ? { href, target: \"_blank\", rel: \"noopener noreferrer\" } : {};\r\n\r\n return (\r\n <Wrapper\r\n {...wrapperProps}\r\n className={cn(\r\n \"block w-full min-w-[400px] md:min-w-[500px] max-w-xl p-1.5 rounded-2xl relative isolate overflow-hidden\",\r\n \"bg-black/90 dark:bg-black/90\",\r\n \"backdrop-blur-xl backdrop-saturate-[180%]\",\r\n \"border border-black/10 dark:border-white/10\",\r\n \"shadow-[0_8px_16px_rgb(0_0_0_/_0.15)] dark:shadow-[0_8px_16px_rgb(0_0_0_/_0.25)]\",\r\n className\r\n )}\r\n >\r\n <div\r\n className={cn(\r\n \"w-full p-5 rounded-xl relative\",\r\n \"bg-gradient-to-br from-black/[0.05] to-transparent dark:from-white/[0.08] dark:to-transparent\",\r\n \"backdrop-blur-md backdrop-saturate-150\",\r\n \"border border-black/[0.05] dark:border-white/[0.08]\",\r\n \"text-white/90 dark:text-white\"\r\n )}\r\n >\r\n <div className=\"flex gap-3\">\r\n <div className=\"shrink-0\">\r\n <div className=\"h-10 w-10 rounded-full overflow-hidden\">\r\n <img src={authorImage} alt={authorName} className=\"h-full w-full object-cover\" />\r\n </div>\r\n </div>\r\n <div className=\"flex-1\">\r\n <div className=\"flex justify-between items-start\">\r\n <div className=\"flex flex-col\">\r\n <div className=\"flex items-center gap-1\">\r\n <span className=\"font-semibold text-white dark:text-white/90 hover:underline cursor-pointer\">\r\n {authorName}\r\n </span>\r\n {isVerified && <VerifiedIcon className=\"h-4 w-4 text-blue-400\" />}\r\n </div>\r\n <span className=\"text-white/60 text-sm\">@{authorHandle}</span>\r\n </div>\r\n <div className=\"h-8 w-8 text-white/80 hover:text-white hover:bg-white/10 rounded-lg p-1 flex items-center justify-center\">\r\n <XIcon className=\"w-4 h-4\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"mt-2\">\r\n {content.map((item, index) => (\r\n <p key={index} className=\"text-white dark:text-white/90 text-base\">\r\n {item}\r\n </p>\r\n ))}\r\n <span className=\"text-white/50 text-sm mt-2 block\">{timestamp}</span>\r\n </div>\r\n {reply && (\r\n <div className=\"mt-4 pt-4 border-t border-white/[0.08]\">\r\n <div className=\"flex gap-3\">\r\n <div className=\"shrink-0\">\r\n <div className=\"h-10 w-10 rounded-full overflow-hidden\">\r\n <img src={reply.authorImage} alt={reply.authorName} className=\"h-full w-full object-cover\" />\r\n </div>\r\n </div>\r\n <div className=\"flex-1\">\r\n <div className=\"flex items-center gap-1\">\r\n <span className=\"font-semibold text-white/90 hover:underline cursor-pointer\">{reply.authorName}</span>\r\n {reply.isVerified && <VerifiedIcon className=\"h-4 w-4 text-blue-400\" />}\r\n <span className=\"text-white/60 text-sm\">@{reply.authorHandle}</span>\r\n <span className=\"text-white/60 text-sm\">·</span>\r\n <span className=\"text-white/60 text-sm\">{reply.timestamp}</span>\r\n </div>\r\n <p className=\"text-white/80 text-sm mt-1\">{reply.content}</p>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </Wrapper>\r\n );\r\n}\r\n\r\nexport type { TweetCardProps, ReplyProps };\r\n","\"use client\";\r\n\r\nimport React, { useRef } from \"react\";\r\nimport { motion, useInView } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface StatItem {\r\n value: string;\r\n label: string;\r\n description?: string;\r\n icon?: React.ReactNode;\r\n trend?: {\r\n value: string;\r\n direction: \"up\" | \"down\";\r\n };\r\n}\r\n\r\ninterface StatsCardsProps {\r\n title?: string;\r\n description?: string;\r\n stats: StatItem[];\r\n className?: string;\r\n}\r\n\r\nexport function StatsCards({\r\n title = \"Key Metrics\",\r\n description = \"Track your success with these important numbers\",\r\n stats,\r\n className,\r\n}: StatsCardsProps) {\r\n const ref = useRef(null);\r\n const isInView = useInView(ref, { once: true });\r\n\r\n return (\r\n <div className={cn(\"min-h-[400px] w-full\", className)}>\r\n <section className=\"py-20\">\r\n <div className=\"mx-auto max-w-7xl px-6\">\r\n <motion.div\r\n initial={{ opacity: 0, y: 20 }}\r\n whileInView={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.6 }}\r\n viewport={{ once: true }}\r\n className=\"mb-16 text-center\"\r\n >\r\n <h2 className=\"text-zinc-900 dark:text-zinc-100 mb-4 text-3xl font-bold lg:text-4xl\">{title}</h2>\r\n <p className=\"text-zinc-600 dark:text-zinc-400 mx-auto max-w-2xl text-lg\">{description}</p>\r\n </motion.div>\r\n\r\n <div ref={ref} className=\"grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-4\">\r\n {stats.map((stat, index) => (\r\n <motion.div\r\n key={stat.label}\r\n initial={{ opacity: 0, y: 30, scale: 0.9 }}\r\n animate={isInView ? { opacity: 1, y: 0, scale: 1 } : { opacity: 0, y: 30, scale: 0.9 }}\r\n transition={{ duration: 0.6, delay: index * 0.1, type: \"spring\", stiffness: 100 }}\r\n className=\"group border-zinc-300 dark:border-zinc-700 bg-transparent hover:border-zinc-500 dark:hover:border-zinc-600 relative overflow-hidden rounded-2xl border p-6 transition-all hover:scale-105 hover:shadow-xl\"\r\n >\r\n {stat.icon && (\r\n <motion.div\r\n className=\"mb-4 text-3xl text-zinc-900 dark:text-zinc-100\"\r\n initial={{ rotate: -10, scale: 0.8 }}\r\n animate={isInView ? { rotate: 0, scale: 1 } : { rotate: -10, scale: 0.8 }}\r\n transition={{ duration: 0.6, delay: index * 0.1 + 0.2, type: \"spring\", stiffness: 200 }}\r\n >\r\n {stat.icon}\r\n </motion.div>\r\n )}\r\n <motion.div\r\n className=\"text-zinc-900 dark:text-zinc-100 mb-1 text-2xl font-bold lg:text-3xl\"\r\n initial={{ scale: 0.5 }}\r\n animate={isInView ? { scale: 1 } : { scale: 0.5 }}\r\n transition={{ duration: 0.8, delay: index * 0.1 + 0.3, type: \"spring\", stiffness: 200 }}\r\n >\r\n {stat.value}\r\n </motion.div>\r\n <h3 className=\"text-zinc-900 dark:text-zinc-100 mb-2 text-sm font-semibold tracking-wide uppercase\">\r\n {stat.label}\r\n </h3>\r\n {stat.description && <p className=\"text-zinc-600 dark:text-zinc-400 mb-3 text-xs\">{stat.description}</p>}\r\n {stat.trend && (\r\n <motion.div\r\n className={cn(\r\n \"inline-flex items-center rounded-full px-2 py-1 text-xs font-medium\",\r\n stat.trend.direction === \"up\" ? \"bg-green-900/20 text-green-400\" : \"bg-red-900/20 text-red-400\"\r\n )}\r\n initial={{ opacity: 0, x: -10 }}\r\n animate={isInView ? { opacity: 1, x: 0 } : { opacity: 0, x: -10 }}\r\n transition={{ duration: 0.4, delay: index * 0.1 + 0.5 }}\r\n >\r\n <span className=\"mr-1\">{stat.trend.direction === \"up\" ? \"↗\" : \"↘\"}</span>\r\n {stat.trend.value}\r\n </motion.div>\r\n )}\r\n </motion.div>\r\n ))}\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n );\r\n}\r\n\r\nexport type { StatsCardsProps, StatItem };\r\n","\"use client\";\r\n\r\nimport { useRef } from \"react\";\r\nimport { motion, useInView } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface StatGridItem {\r\n value: string;\r\n label: string;\r\n description?: string;\r\n}\r\n\r\ninterface StatsGridProps {\r\n title?: string;\r\n description?: string;\r\n stats: StatGridItem[];\r\n className?: string;\r\n}\r\n\r\nexport function StatsGrid({\r\n title = \"Our Impact in Numbers\",\r\n description = \"See how we're making a difference across the globe\",\r\n stats,\r\n className,\r\n}: StatsGridProps) {\r\n const ref = useRef(null);\r\n const isInView = useInView(ref, { once: true });\r\n\r\n return (\r\n <div className={cn(\"min-h-[400px] w-full\", className)}>\r\n <section className=\"py-20\">\r\n <div className=\"mx-auto max-w-7xl px-6\">\r\n <motion.div\r\n initial={{ opacity: 0, y: 20 }}\r\n whileInView={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.6 }}\r\n viewport={{ once: true }}\r\n className=\"mb-16 text-center\"\r\n >\r\n <h2 className=\"text-zinc-900 dark:text-zinc-100 mb-4 text-3xl font-bold lg:text-4xl\">{title}</h2>\r\n <p className=\"text-zinc-600 dark:text-zinc-400 mx-auto max-w-2xl text-lg\">{description}</p>\r\n </motion.div>\r\n\r\n <div ref={ref} className=\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-4\">\r\n {stats.map((stat, index) => (\r\n <motion.div\r\n key={stat.label}\r\n initial={{ opacity: 0, y: 30 }}\r\n animate={isInView ? { opacity: 1, y: 0 } : { opacity: 0, y: 30 }}\r\n transition={{ duration: 0.6, delay: index * 0.1 }}\r\n className=\"group bg-transparent hover:border-zinc-500 dark:hover:border-zinc-600 relative overflow-hidden rounded-2xl border border-zinc-300 dark:border-zinc-700 p-8 text-center transition-all hover:shadow-lg\"\r\n >\r\n <motion.div\r\n className=\"text-zinc-900 dark:text-zinc-100 mb-2 text-4xl font-bold lg:text-5xl\"\r\n initial={{ scale: 0.5 }}\r\n animate={isInView ? { scale: 1 } : { scale: 0.5 }}\r\n transition={{ duration: 0.8, delay: index * 0.1 + 0.2, type: \"spring\", stiffness: 200 }}\r\n >\r\n {stat.value}\r\n </motion.div>\r\n <h3 className=\"text-zinc-900 dark:text-zinc-100 mb-2 text-lg font-semibold\">{stat.label}</h3>\r\n {stat.description && <p className=\"text-zinc-600 dark:text-zinc-400 text-sm\">{stat.description}</p>}\r\n </motion.div>\r\n ))}\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n );\r\n}\r\n\r\nexport type { StatsGridProps, StatGridItem };\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BentoCardProps {\r\n name: string;\r\n className?: string;\r\n background?: React.ReactNode | string;\r\n Icon?: React.ComponentType<{ className?: string }>;\r\n description: string;\r\n href?: string;\r\n cta?: string;\r\n onClick?: () => void;\r\n}\r\n\r\ninterface BentoGridProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function BentoGrid({ children, className }: BentoGridProps) {\r\n return <div className={cn(\"grid w-full auto-rows-[22rem] grid-cols-3 gap-4\", className)}>{children}</div>;\r\n}\r\n\r\nexport function BentoCard({ name, className, background, Icon, description, href, cta, onClick }: BentoCardProps) {\r\n const Wrapper = href ? \"a\" : \"div\";\r\n const wrapperProps = href ? { href, target: \"_blank\", rel: \"noopener noreferrer\" } : {};\r\n\r\n return (\r\n <Wrapper\r\n {...wrapperProps}\r\n onClick={onClick}\r\n className={cn(\r\n \"group relative col-span-3 flex flex-col justify-between overflow-hidden rounded-xl cursor-pointer\",\r\n \"bg-white [box-shadow:0_0_0_1px_rgba(0,0,0,.03),0_2px_4px_rgba(0,0,0,.05),0_12px_24px_rgba(0,0,0,.05)]\",\r\n \"transform-gpu dark:bg-black dark:[border:1px_solid_rgba(255,255,255,.1)] dark:[box-shadow:0_-20px_80px_-20px_#ffffff1f_inset]\",\r\n className\r\n )}\r\n >\r\n {typeof background === \"string\" ? (\r\n <div className={cn(\"absolute inset-0\", background)} />\r\n ) : (\r\n <div className=\"absolute inset-0\">{background}</div>\r\n )}\r\n\r\n <div className=\"pointer-events-none z-10 flex transform-gpu flex-col gap-1 p-6 transition-all duration-300 group-hover:-translate-y-10\">\r\n {Icon && (\r\n <Icon className=\"h-12 w-12 origin-left transform-gpu text-neutral-700 transition-all duration-300 ease-in-out group-hover:scale-75 dark:text-neutral-300\" />\r\n )}\r\n <h3 className=\"text-xl font-semibold text-neutral-700 dark:text-neutral-300\">{name}</h3>\r\n <p className=\"max-w-lg text-neutral-400\">{description}</p>\r\n </div>\r\n\r\n {cta && (\r\n <div className=\"pointer-events-none absolute bottom-0 flex w-full translate-y-10 transform-gpu flex-row items-center p-4 opacity-0 transition-all duration-300 group-hover:translate-y-0 group-hover:opacity-100\">\r\n <span className=\"pointer-events-auto ml-auto flex items-center gap-2 rounded-lg bg-black px-4 py-2 text-white dark:bg-white dark:text-black\">\r\n {cta}\r\n <svg className=\"ml-2 h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\r\n </svg>\r\n </span>\r\n </div>\r\n )}\r\n <div className=\"pointer-events-none absolute inset-0 transform-gpu transition-all duration-300 group-hover:bg-black/[.03] group-hover:dark:bg-neutral-800/10\" />\r\n </Wrapper>\r\n );\r\n}\r\n\r\nexport type { BentoCardProps, BentoGridProps };\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","../src/card-stack/index.tsx","../src/apple-activity-card/index.tsx","../src/tweet-card/index.tsx","../src/stats-cards/index.tsx","../src/stats-grid/index.tsx","../src/bento-grid/index.tsx","../src/aurora/index.tsx","../src/threads/index.tsx","../src/squares/index.tsx","../src/waves/index.tsx","../../../node_modules/shared/src/utils.ts","../../../node_modules/lucide-react/src/defaultAttributes.ts","../../../node_modules/lucide-react/src/Icon.ts","../../../node_modules/lucide-react/src/createLucideIcon.ts","../../../node_modules/lucide-react/src/icons/arrow-down-right.ts","../../../node_modules/lucide-react/src/icons/briefcase.ts","../../../node_modules/lucide-react/src/icons/check.ts","../../../node_modules/lucide-react/src/icons/chevron-down.ts","../../../node_modules/lucide-react/src/icons/chevron-left.ts","../../../node_modules/lucide-react/src/icons/chevron-right.ts","../../../node_modules/lucide-react/src/icons/clock.ts","../../../node_modules/lucide-react/src/icons/command.ts","../../../node_modules/lucide-react/src/icons/dollar-sign.ts","../../../node_modules/lucide-react/src/icons/external-link.ts","../../../node_modules/lucide-react/src/icons/map-pin.ts","../../../node_modules/lucide-react/src/icons/mic.ts","../../../node_modules/lucide-react/src/icons/paperclip.ts","../../../node_modules/lucide-react/src/icons/search.ts","../../../node_modules/lucide-react/src/icons/send.ts","../../../node_modules/lucide-react/src/icons/sparkles.ts","../../../node_modules/lucide-react/src/icons/star.ts","../../../node_modules/lucide-react/src/icons/x.ts","../src/hero-grid/index.tsx","../src/hero-showcase/index.tsx","../src/testimonials-simple/index.tsx","../src/testimonials-grid/index.tsx","../src/pricing-modern/index.tsx","../src/footer-simple/index.tsx","../src/footer-complex/index.tsx","../src/logo-cloud/index.tsx","../src/faqs-accordion/index.tsx","../src/faqs-grid/index.tsx","../src/team-carousel/index.tsx","../src/job-listing/index.tsx","../src/elastic-search/index.tsx","../src/action-search-bar/index.tsx","../src/ai-loading/index.tsx","../src/ai-prompt/index.tsx","../src/ai-bar/index.tsx","../src/scroll-reveal/index.tsx","../src/scroll-float/index.tsx","../src/scroll-stack/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","totalCards","isExpanded","defaultX","defaultY","defaultRotate","cardWidth","cardOverlap","expandedCenterOffset","spreadX","spreadRotate","spec","CardStack","defaultExpanded","setIsExpanded","CircleProgress","gradientId","defaultActivities","AppleActivityCard","activities","activity","VerifiedIcon","XIcon","TweetCard","authorName","authorHandle","authorImage","isVerified","reply","StatsCards","stats","isInView","useInView","stat","StatsGrid","BentoGrid","BentoCard","background","Icon","cta","Aurora","colorStops","blend","time","resize","gradient","noise","alpha","Threads","lineCount","lineColor","lineWidth","animationIdRef","lines","line","wave","Squares","squareSize","hoverFillColor","requestRef","gridOffset","hoveredSquare","drawGrid","startX","startY","squareX","squareY","updateAnimation","effectiveSpeed","Waves","waveSpeedX","waveSpeedY","waveAmpX","waveAmpY","xGap","yGap","friction","tension","maxCursorMove","style","frameIdRef","waveX","waveY","toKebabCase","string","toCamelCase","match","p1","p2","toPascalCase","camelCase","mergeClasses","array","hasA11yProp","prop","defaultAttributes","absoluteStrokeWidth","iconNode","createElement","tag","attrs","createLucideIcon","iconName","__iconNode","ArrowDownRight","Briefcase","Check","ChevronDown","ChevronLeft","ChevronRight","Clock","Command","DollarSign","ExternalLink","MapPin","Mic","Paperclip","Search","Send","Sparkles","Star","X","HeroGrid","heading","highlightedText","primaryButton","secondaryButton","HeroShowcase","buttons","reviews","avatar","star","TestimonialsSimple","testimonials","TestimonialsGrid","autoplay","active","setActive","handlePrev","testimonial","PricingModern","plans","isAnnual","setIsAnnual","plan","feature","FooterSimple","companyName","links","copyright","link","FooterComplex","newsletter","LogoCloud","logos","FaqsAccordion","faqs","openIndex","setOpenIndex","toggleAccordion","faq","FaqsGrid","categories","activeTab","setActiveTab","category","faqIndex","TeamCarousel","members","isAutoPlaying","setIsAutoPlaying","cardsPerView","nextSlide","maxIndex","prevSlide","member","JobListing","jobs","job","ElasticSearch","results","onSearch","onSelect","query","setQuery","selectedIndex","setSelectedIndex","inputRef","result","ActionSearchBar","actions","filteredActions","action","AILoading","AIPrompt","suggestions","onSubmit","handleSubmit","handleSuggestion","suggestion","AIBar","showMic","showAttach","isFocused","setIsFocused","ScrollReveal","ScrollFloat","ScrollStack"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ShineButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function ShineButton({ children, className, ...props }: ShineButtonProps) {\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden px-6 py-3 rounded-xl font-medium\",\r\n \"bg-zinc-900 text-white hover:bg-zinc-800\",\r\n \"dark:bg-zinc-800 dark:hover:bg-zinc-700 dark:text-white\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span\r\n className={cn(\r\n \"absolute inset-0 overflow-hidden rounded-[inherit]\",\r\n \"before:absolute before:inset-0\",\r\n \"before:-translate-x-full\",\r\n \"before:animate-shimmer\",\r\n \"before:bg-gradient-to-r\",\r\n \"before:from-transparent before:via-white/40 before:to-transparent\",\r\n \"before:skew-x-[-20deg]\"\r\n )}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default ShineButton;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RippleButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function RippleButton({ children, className, onClick, ...props }: RippleButtonProps) {\r\n const [ripples, setRipples] = useState<Array<{ x: number; y: number; id: number }>>([]);\r\n\r\n function handleClick(e: React.MouseEvent<HTMLButtonElement>) {\r\n const button = e.currentTarget;\r\n const rect = button.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n const newRipple = { x, y, id: Date.now() };\r\n\r\n setRipples((prev) => [...prev, newRipple]);\r\n setTimeout(() => {\r\n setRipples((prev) => prev.filter((r) => r.id !== newRipple.id));\r\n }, 1000);\r\n\r\n onClick?.(e);\r\n }\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden px-6 py-3 rounded-xl font-medium\",\r\n \"bg-zinc-900 text-white hover:bg-zinc-800\",\r\n \"dark:bg-zinc-100 dark:text-black dark:hover:bg-zinc-200\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n onClick={handleClick}\r\n {...props}\r\n >\r\n <AnimatePresence>\r\n {ripples.map((ripple) => (\r\n <motion.span\r\n key={ripple.id}\r\n className=\"absolute rounded-full pointer-events-none border-2 border-white/50 dark:border-black/50\"\r\n style={{\r\n left: ripple.x,\r\n top: ripple.y,\r\n transform: \"translate(-50%, -50%)\",\r\n }}\r\n initial={{ width: 0, height: 0, opacity: 0.9 }}\r\n animate={{ width: 500, height: 500, opacity: 0 }}\r\n exit={{ opacity: 0 }}\r\n transition={{ duration: 1, ease: [0.4, 0, 0.2, 1] }}\r\n />\r\n ))}\r\n </AnimatePresence>\r\n <span className=\"relative z-10\">{children}</span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default RippleButton;\r\n","\"use client\";\r\n\r\nimport React, { useRef, useState } from \"react\";\r\nimport { motion, useMotionValue, useSpring } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MagneticButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n strength?: number;\r\n radius?: number;\r\n}\r\n\r\nexport function MagneticButton({\r\n children,\r\n className,\r\n strength = 0.5,\r\n radius = 200,\r\n ...props\r\n}: MagneticButtonProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n const x = useMotionValue(0);\r\n const y = useMotionValue(0);\r\n\r\n const springConfig = { damping: 20, stiffness: 300, mass: 0.5 };\r\n const xSpring = useSpring(x, springConfig);\r\n const ySpring = useSpring(y, springConfig);\r\n\r\n const handleMouseMove = (e: React.MouseEvent) => {\r\n if (!ref.current) return;\r\n const rect = ref.current.getBoundingClientRect();\r\n const centerX = rect.left + rect.width / 2;\r\n const centerY = rect.top + rect.height / 2;\r\n const distanceX = e.clientX - centerX;\r\n const distanceY = e.clientY - centerY;\r\n const distance = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\r\n\r\n if (distance < radius) {\r\n const factor = 1 - distance / radius;\r\n x.set(distanceX * strength * factor);\r\n y.set(distanceY * strength * factor);\r\n }\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n setIsHovered(false);\r\n x.set(0);\r\n y.set(0);\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className=\"relative inline-flex items-center justify-center\"\r\n onMouseMove={handleMouseMove}\r\n onMouseLeave={handleMouseLeave}\r\n onMouseEnter={() => setIsHovered(true)}\r\n style={{ padding: radius / 2, margin: -radius / 2 }}\r\n >\r\n <motion.div style={{ x: xSpring, y: ySpring }}>\r\n <button\r\n className={cn(\r\n \"px-6 py-3 rounded-xl font-medium\",\r\n \"bg-zinc-900 text-white hover:bg-zinc-800\",\r\n \"dark:bg-zinc-100 dark:text-black dark:hover:bg-zinc-200\",\r\n \"transition-shadow duration-300\",\r\n isHovered && \"shadow-lg\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default MagneticButton;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BounceButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function BounceButton({ children, className, onClick, ...props }: BounceButtonProps) {\r\n const [isBouncing, setIsBouncing] = useState(false);\r\n\r\n function handleClick(e: React.MouseEvent<HTMLButtonElement>) {\r\n setIsBouncing(true);\r\n setTimeout(() => setIsBouncing(false), 1500);\r\n onClick?.(e);\r\n }\r\n\r\n return (\r\n <div className=\"relative inline-block\">\r\n <motion.div\r\n className=\"absolute -bottom-2 left-1/2 w-16 h-2 bg-black/20 rounded-full blur-sm\"\r\n animate={isBouncing ? {\r\n scaleX: [1, 0.8, 1.2, 0.9, 1.1, 0.95, 1],\r\n opacity: [0.3, 0.6, 0.2, 0.5, 0.3, 0.4, 0.3],\r\n } : {}}\r\n style={{ x: \"-50%\" }}\r\n transition={{ duration: 1.5, ease: \"easeOut\" }}\r\n />\r\n\r\n <motion.div\r\n animate={isBouncing ? {\r\n y: [0, -40, -20, -35, -10, -25, -5, -15, 0],\r\n rotate: [0, -5, 2, -3, 1, -2, 0.5, -1, 0],\r\n } : {}}\r\n transition={{\r\n duration: 1.5,\r\n ease: \"easeOut\",\r\n times: [0, 0.2, 0.35, 0.5, 0.65, 0.75, 0.85, 0.95, 1],\r\n }}\r\n whileHover={!isBouncing ? { y: [0, -8, 0] } : {}}\r\n >\r\n <button\r\n className={cn(\r\n \"px-6 py-3 rounded-xl font-medium\",\r\n \"bg-orange-500 hover:bg-orange-600 text-white\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n onClick={handleClick}\r\n disabled={isBouncing}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default BounceButton;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlowButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n glowColor?: string;\r\n}\r\n\r\nexport function GlowButton({\r\n children,\r\n className,\r\n glowColor = \"rgba(59, 130, 246, 0.8)\",\r\n ...props\r\n}: GlowButtonProps) {\r\n const [isGlowing, setIsGlowing] = useState(false);\r\n\r\n return (\r\n <motion.div\r\n className=\"relative inline-block\"\r\n onMouseEnter={() => setIsGlowing(true)}\r\n onMouseLeave={() => setIsGlowing(false)}\r\n animate={{\r\n filter: isGlowing\r\n ? [\r\n `drop-shadow(0 0 10px ${glowColor})`,\r\n `drop-shadow(0 0 25px ${glowColor})`,\r\n `drop-shadow(0 0 10px ${glowColor})`,\r\n ]\r\n : \"drop-shadow(0 0 0px transparent)\",\r\n }}\r\n transition={{\r\n duration: isGlowing ? 1.5 : 0.3,\r\n repeat: isGlowing ? Infinity : 0,\r\n }}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 rounded-xl\"\r\n animate={isGlowing ? {\r\n boxShadow: [\r\n `0 0 20px ${glowColor}`,\r\n `0 0 40px ${glowColor}`,\r\n `0 0 20px ${glowColor}`,\r\n ],\r\n scale: [1, 1.05, 1],\r\n } : {\r\n boxShadow: \"0 0 0px transparent\",\r\n scale: 1,\r\n }}\r\n transition={{\r\n duration: 2,\r\n repeat: isGlowing ? Infinity : 0,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n\r\n <button\r\n className={cn(\r\n \"relative px-6 py-3 rounded-xl font-medium\",\r\n \"bg-blue-600 hover:bg-blue-700 text-white\",\r\n \"transition-all duration-300\",\r\n isGlowing && \"bg-blue-500\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default GlowButton;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface PulseButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n pulseColor?: string;\r\n}\r\n\r\nexport function PulseButton({\r\n children,\r\n className,\r\n pulseColor = \"rgba(239, 68, 68, 0.5)\",\r\n ...props\r\n}: PulseButtonProps) {\r\n return (\r\n <div className=\"relative inline-block\">\r\n <motion.div\r\n className=\"absolute inset-0 rounded-xl\"\r\n style={{ backgroundColor: pulseColor }}\r\n animate={{\r\n scale: [1, 1.3, 1, 1.2, 1],\r\n opacity: [0.6, 0, 0.6, 0, 0.6],\r\n }}\r\n transition={{\r\n duration: 1.2,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n times: [0, 0.2, 0.4, 0.6, 1],\r\n }}\r\n />\r\n\r\n <motion.div\r\n className=\"absolute inset-0 rounded-xl\"\r\n style={{ backgroundColor: pulseColor }}\r\n animate={{\r\n scale: [1, 1.5, 1, 1.4, 1],\r\n opacity: [0.4, 0, 0.4, 0, 0.4],\r\n }}\r\n transition={{\r\n duration: 1.2,\r\n delay: 0.1,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n times: [0, 0.2, 0.4, 0.6, 1],\r\n }}\r\n />\r\n\r\n <motion.div\r\n animate={{\r\n scale: [1, 1.05, 1, 1.03, 1],\r\n }}\r\n transition={{\r\n duration: 1.2,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n times: [0, 0.2, 0.4, 0.6, 1],\r\n }}\r\n >\r\n <button\r\n className={cn(\r\n \"relative px-6 py-3 rounded-xl font-medium\",\r\n \"bg-red-500 hover:bg-red-600 text-white\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default PulseButton;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface NeonButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n color?: \"pink\" | \"cyan\" | \"green\" | \"purple\" | \"orange\";\r\n size?: \"sm\" | \"default\" | \"lg\";\r\n}\r\n\r\nconst colorVariants = {\r\n pink: {\r\n border: \"border-pink-500\",\r\n text: \"text-pink-400\",\r\n shadow: \"shadow-pink-500/50\",\r\n glow: \"rgba(236, 72, 153, 0.6)\",\r\n bg: \"hover:bg-pink-500/10\",\r\n },\r\n cyan: {\r\n border: \"border-cyan-500\",\r\n text: \"text-cyan-400\",\r\n shadow: \"shadow-cyan-500/50\",\r\n glow: \"rgba(6, 182, 212, 0.6)\",\r\n bg: \"hover:bg-cyan-500/10\",\r\n },\r\n green: {\r\n border: \"border-green-500\",\r\n text: \"text-green-400\",\r\n shadow: \"shadow-green-500/50\",\r\n glow: \"rgba(34, 197, 94, 0.6)\",\r\n bg: \"hover:bg-green-500/10\",\r\n },\r\n purple: {\r\n border: \"border-purple-500\",\r\n text: \"text-purple-400\",\r\n shadow: \"shadow-purple-500/50\",\r\n glow: \"rgba(168, 85, 247, 0.6)\",\r\n bg: \"hover:bg-purple-500/10\",\r\n },\r\n orange: {\r\n border: \"border-orange-500\",\r\n text: \"text-orange-400\",\r\n shadow: \"shadow-orange-500/50\",\r\n glow: \"rgba(249, 115, 22, 0.6)\",\r\n bg: \"hover:bg-orange-500/10\",\r\n },\r\n};\r\n\r\nconst sizeVariants = {\r\n sm: \"h-8 px-3 text-xs\",\r\n default: \"h-10 px-6 text-sm\",\r\n lg: \"h-12 px-8 text-base\",\r\n};\r\n\r\nexport function NeonButton({\r\n children,\r\n className,\r\n color = \"cyan\",\r\n size = \"default\",\r\n ...props\r\n}: NeonButtonProps) {\r\n const colors = colorVariants[color];\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative inline-flex items-center justify-center\",\r\n \"font-semibold tracking-wide uppercase\",\r\n \"border-2 rounded-lg\",\r\n \"bg-transparent\",\r\n \"transition-colors duration-200\",\r\n colors.border,\r\n colors.text,\r\n colors.bg,\r\n sizeVariants[size],\r\n className\r\n )}\r\n whileHover={{\r\n boxShadow: `0 0 20px ${colors.glow}, 0 0 40px ${colors.glow}, 0 0 60px ${colors.glow}`,\r\n }}\r\n whileTap={{ scale: 0.98 }}\r\n transition={{ duration: 0.2 }}\r\n {...props}\r\n >\r\n <motion.span\r\n className={cn(\"absolute inset-0 rounded-lg opacity-0\", colors.border)}\r\n animate={{ opacity: [0.5, 1, 0.5] }}\r\n transition={{ duration: 2, repeat: Infinity, ease: \"easeInOut\" }}\r\n style={{ boxShadow: `inset 0 0 10px ${colors.glow}` }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default NeonButton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LiquidButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"outline\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function LiquidButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n onClick,\r\n ...props\r\n}: LiquidButtonProps) {\r\n const [isFilling, setIsFilling] = useState(false);\r\n\r\n function handleClick(e: React.MouseEvent<HTMLButtonElement>) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setIsFilling(true);\r\n setTimeout(() => setIsFilling(false), 800);\r\n if (onClick) onClick(e);\r\n }\r\n\r\n const sizeClasses = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\"\r\n };\r\n\r\n const variantClasses = {\r\n primary: \"bg-zinc-900 text-white border-zinc-900 dark:bg-white dark:text-zinc-900 dark:border-white\",\r\n secondary: \"bg-zinc-100 text-zinc-900 border-zinc-200 dark:bg-zinc-800 dark:text-white dark:border-zinc-700\",\r\n outline: \"bg-transparent text-zinc-900 border-zinc-300 dark:text-white dark:border-zinc-600\"\r\n };\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-medium border-2 transition-colors\",\r\n sizeClasses[size],\r\n variantClasses[variant],\r\n className\r\n )}\r\n onClick={handleClick}\r\n {...props}\r\n >\r\n <AnimatePresence>\r\n {isFilling && (\r\n <motion.div\r\n key=\"liquid-fill\"\r\n className={cn(\r\n \"absolute inset-0 origin-bottom\",\r\n variant === \"primary\" ? \"bg-blue-500 dark:bg-blue-400\" : \"bg-zinc-900 dark:bg-white\"\r\n )}\r\n initial={{ scaleY: 0 }}\r\n animate={{ scaleY: 1 }}\r\n exit={{ scaleY: 0, transition: { duration: 0.3 } }}\r\n transition={{ duration: 0.5, ease: [0.4, 0, 0.2, 1] }}\r\n style={{ transformOrigin: \"bottom\" }}\r\n />\r\n )}\r\n </AnimatePresence>\r\n \r\n <AnimatePresence>\r\n {isFilling && (\r\n <>\r\n {[...Array(5)].map((_, i) => (\r\n <motion.div\r\n key={i}\r\n className=\"absolute w-1.5 h-1.5 bg-white/60 rounded-full\"\r\n style={{ left: `${20 + i * 15}%`, bottom: \"10%\" }}\r\n initial={{ y: 0, opacity: 0, scale: 0 }}\r\n animate={{ y: -60, opacity: [0, 1, 0], scale: [0, 1, 0.5] }}\r\n transition={{ duration: 0.6, delay: i * 0.08, ease: \"easeOut\" }}\r\n />\r\n ))}\r\n </>\r\n )}\r\n </AnimatePresence>\r\n\r\n <span className={cn(\r\n \"relative flex items-center justify-center gap-2 transition-colors duration-200 z-10\",\r\n isFilling && (variant === \"outline\" || variant === \"secondary\" ? \"text-white dark:text-zinc-900\" : \"text-white\")\r\n )}>\r\n {children}\r\n </span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default LiquidButton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SlideButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"outline\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n slideText?: string;\r\n}\r\n\r\nexport function SlideButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n slideText = \"Go!\",\r\n onClick,\r\n ...props\r\n}: SlideButtonProps) {\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n const sizeClasses = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\"\r\n };\r\n\r\n const variantClasses = {\r\n primary: \"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900\",\r\n secondary: \"bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-white\",\r\n outline: \"bg-transparent text-zinc-900 border-2 border-zinc-300 dark:text-white dark:border-zinc-600\"\r\n };\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-medium transition-all\",\r\n sizeClasses[size],\r\n variantClasses[variant],\r\n className\r\n )}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n onClick={onClick}\r\n {...props}\r\n >\r\n <motion.div\r\n className={cn(\r\n \"absolute inset-0\",\r\n variant === \"primary\" ? \"bg-blue-600 dark:bg-blue-500\" : \"bg-zinc-900 dark:bg-white\"\r\n )}\r\n initial={{ x: \"-100%\" }}\r\n animate={{ x: isHovered ? \"0%\" : \"-100%\" }}\r\n transition={{ duration: 0.3, ease: \"easeInOut\" }}\r\n />\r\n \r\n <motion.span\r\n className=\"relative flex items-center justify-center gap-2 z-10\"\r\n animate={{ x: isHovered ? 20 : 0, opacity: isHovered ? 0 : 1 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {children}\r\n </motion.span>\r\n \r\n <motion.span\r\n className={cn(\r\n \"absolute inset-0 flex items-center justify-center gap-2 z-10\",\r\n variant === \"outline\" || variant === \"secondary\" ? \"text-white dark:text-zinc-900\" : \"text-white\"\r\n )}\r\n initial={{ x: -20, opacity: 0 }}\r\n animate={{ x: isHovered ? 0 : -20, opacity: isHovered ? 1 : 0 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {slideText}\r\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M14 5l7 7m0 0l-7 7m7-7H3\" />\r\n </svg>\r\n </motion.span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default SlideButton;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GradientButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"sunset\" | \"ocean\" | \"forest\" | \"purple\" | \"fire\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst gradients = {\r\n sunset: \"from-orange-500 via-pink-500 to-purple-500\",\r\n ocean: \"from-cyan-500 via-blue-500 to-purple-500\",\r\n forest: \"from-green-500 via-emerald-500 to-teal-500\",\r\n purple: \"from-purple-500 via-violet-500 to-indigo-500\",\r\n fire: \"from-yellow-500 via-orange-500 to-red-500\",\r\n};\r\n\r\nconst sizes = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\",\r\n};\r\n\r\nexport function GradientButton({\r\n children,\r\n className,\r\n variant = \"ocean\",\r\n size = \"md\",\r\n ...props\r\n}: GradientButtonProps) {\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-semibold text-white\",\r\n \"bg-gradient-to-r\",\r\n gradients[variant],\r\n sizes[size],\r\n className\r\n )}\r\n whileHover={{ scale: 1.02 }}\r\n whileTap={{ scale: 0.98 }}\r\n {...props}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 bg-gradient-to-r from-white/0 via-white/25 to-white/0\"\r\n initial={{ x: \"-100%\" }}\r\n whileHover={{ x: \"100%\" }}\r\n transition={{ duration: 0.5 }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default GradientButton;\r\n","\"use client\";\r\n\r\nimport { useState, useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HoldButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n holdDuration?: number;\r\n onHoldComplete?: () => void;\r\n variant?: \"primary\" | \"danger\" | \"success\";\r\n}\r\n\r\nexport function HoldButton({\r\n children,\r\n className,\r\n holdDuration = 1000,\r\n onHoldComplete,\r\n variant = \"primary\",\r\n ...props\r\n}: HoldButtonProps) {\r\n const [progress, setProgress] = useState(0);\r\n const [isHolding, setIsHolding] = useState(false);\r\n const intervalRef = useRef<NodeJS.Timeout | null>(null);\r\n\r\n const variants = {\r\n primary: \"bg-zinc-900 dark:bg-white\",\r\n danger: \"bg-red-500\",\r\n success: \"bg-green-500\",\r\n };\r\n\r\n const progressColors = {\r\n primary: \"bg-blue-500\",\r\n danger: \"bg-red-700\",\r\n success: \"bg-green-700\",\r\n };\r\n\r\n const startHold = () => {\r\n setIsHolding(true);\r\n const startTime = Date.now();\r\n \r\n intervalRef.current = setInterval(() => {\r\n const elapsed = Date.now() - startTime;\r\n const newProgress = Math.min((elapsed / holdDuration) * 100, 100);\r\n setProgress(newProgress);\r\n \r\n if (newProgress >= 100) {\r\n stopHold();\r\n onHoldComplete?.();\r\n }\r\n }, 16);\r\n };\r\n\r\n const stopHold = () => {\r\n setIsHolding(false);\r\n setProgress(0);\r\n if (intervalRef.current) {\r\n clearInterval(intervalRef.current);\r\n intervalRef.current = null;\r\n }\r\n };\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg px-6 py-3 font-medium text-white dark:text-zinc-900\",\r\n variants[variant],\r\n className\r\n )}\r\n onMouseDown={startHold}\r\n onMouseUp={stopHold}\r\n onMouseLeave={stopHold}\r\n onTouchStart={startHold}\r\n onTouchEnd={stopHold}\r\n whileTap={{ scale: 0.98 }}\r\n {...props}\r\n >\r\n <motion.div\r\n className={cn(\"absolute inset-0 origin-left\", progressColors[variant])}\r\n style={{ scaleX: progress / 100 }}\r\n transition={{ duration: 0 }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default HoldButton;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ThreeDButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"danger\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst variants = {\r\n primary: {\r\n bg: \"bg-blue-500\",\r\n shadow: \"shadow-blue-700\",\r\n hover: \"hover:bg-blue-600\",\r\n },\r\n secondary: {\r\n bg: \"bg-zinc-700\",\r\n shadow: \"shadow-zinc-900\",\r\n hover: \"hover:bg-zinc-800\",\r\n },\r\n danger: {\r\n bg: \"bg-red-500\",\r\n shadow: \"shadow-red-700\",\r\n hover: \"hover:bg-red-600\",\r\n },\r\n};\r\n\r\nconst sizes = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\",\r\n};\r\n\r\nexport function ThreeDButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n ...props\r\n}: ThreeDButtonProps) {\r\n const colors = variants[variant];\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative rounded-lg font-semibold text-white\",\r\n \"shadow-[0_6px_0_0]\",\r\n colors.bg,\r\n colors.shadow,\r\n colors.hover,\r\n sizes[size],\r\n className\r\n )}\r\n whileHover={{ y: -2 }}\r\n whileTap={{ y: 4, boxShadow: \"0 2px 0 0\" }}\r\n transition={{ duration: 0.1 }}\r\n {...props}\r\n >\r\n {children}\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default ThreeDButton;\r\n","\"use client\";\r\n\r\nimport { 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","\"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 Specification {\r\n label: string;\r\n value: string;\r\n}\r\n\r\ninterface CardStackItem {\r\n id: string;\r\n title: string;\r\n subtitle: string;\r\n image: string;\r\n specs: Specification[];\r\n description?: string;\r\n}\r\n\r\ninterface CardProps {\r\n item: CardStackItem;\r\n index: number;\r\n totalCards: number;\r\n isExpanded: boolean;\r\n}\r\n\r\nconst Card = ({ item, index, totalCards, isExpanded }: CardProps) => {\r\n const centerOffset = (totalCards - 1) * 5;\r\n const defaultX = index * 10 - centerOffset;\r\n const defaultY = index * 2;\r\n const defaultRotate = index * 1.5;\r\n\r\n const cardWidth = 320;\r\n const cardOverlap = 240;\r\n const totalExpandedWidth = cardWidth + (totalCards - 1) * (cardWidth - cardOverlap);\r\n const expandedCenterOffset = totalExpandedWidth / 2;\r\n\r\n const spreadX = index * (cardWidth - cardOverlap) - expandedCenterOffset + cardWidth / 2;\r\n const spreadRotate = index * 5 - (totalCards - 1) * 2.5;\r\n\r\n return (\r\n <motion.div\r\n initial={{ x: defaultX, y: defaultY, rotate: defaultRotate, scale: 1 }}\r\n animate={{\r\n x: isExpanded ? spreadX : defaultX,\r\n y: isExpanded ? 0 : defaultY,\r\n rotate: isExpanded ? spreadRotate : defaultRotate,\r\n scale: 1,\r\n zIndex: totalCards - index,\r\n }}\r\n transition={{ type: \"spring\", stiffness: 350, damping: 30, mass: 0.8 }}\r\n className={cn(\r\n \"absolute inset-0 rounded-2xl p-6 w-full\",\r\n \"bg-gradient-to-br from-white/40 via-neutral-50/30 to-neutral-100/20\",\r\n \"dark:from-neutral-800/40 dark:via-neutral-900/30 dark:to-black/20\",\r\n \"border border-white/20 dark:border-neutral-800/20\",\r\n \"backdrop-blur-xl backdrop-saturate-150\",\r\n \"shadow-[0_8px_20px_rgb(0,0,0,0.08)] dark:shadow-[0_8px_20px_rgb(0,0,0,0.3)]\",\r\n \"transition-all duration-500 ease-out transform-gpu overflow-hidden\"\r\n )}\r\n style={{ maxWidth: \"320px\", left: \"50%\", marginLeft: \"-160px\" }}\r\n >\r\n <div className=\"absolute inset-1 rounded-xl bg-neutral-900/50 backdrop-blur-sm border border-neutral-200/50 dark:border-neutral-700/50\" />\r\n <div className=\"relative z-10\">\r\n <dl className=\"mb-4 grid grid-cols-4 gap-2\">\r\n {item.specs.map((spec) => (\r\n <div key={spec.label} className=\"text-[10px] flex flex-col items-start\">\r\n <dd className=\"font-medium text-gray-500 dark:text-gray-400\">{spec.value}</dd>\r\n <dt className=\"text-white dark:text-gray-100\">{spec.label}</dt>\r\n </div>\r\n ))}\r\n </dl>\r\n <div className=\"aspect-[16/11] w-full overflow-hidden rounded-lg bg-neutral-100 dark:bg-neutral-900 border border-neutral-200/50 dark:border-neutral-700/50\">\r\n <img src={item.image} alt={item.title} className=\"object-cover w-full h-full\" loading=\"lazy\" />\r\n </div>\r\n <div className=\"mt-4\">\r\n <h2 className=\"text-3xl font-bold tracking-tight text-white\">{item.title}</h2>\r\n <span className=\"block text-3xl font-semibold tracking-tight bg-gradient-to-r from-gray-400 via-gray-300 to-gray-500 bg-clip-text text-transparent\">\r\n {item.subtitle}\r\n </span>\r\n {item.description && <p className=\"mt-2 text-sm text-gray-500 dark:text-gray-400\">{item.description}</p>}\r\n </div>\r\n </div>\r\n </motion.div>\r\n );\r\n};\r\n\r\ninterface CardStackProps {\r\n items: CardStackItem[];\r\n className?: string;\r\n defaultExpanded?: boolean;\r\n}\r\n\r\nexport function CardStack({ items, className, defaultExpanded = false }: CardStackProps) {\r\n const [isExpanded, setIsExpanded] = useState(defaultExpanded);\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative mx-auto cursor-pointer min-h-[440px] w-full max-w-[90vw] md:max-w-[1200px]\",\r\n \"appearance-none bg-transparent border-0 p-0 flex items-center justify-center mb-8\",\r\n className\r\n )}\r\n onClick={() => setIsExpanded(!isExpanded)}\r\n aria-label=\"Toggle card stack\"\r\n type=\"button\"\r\n >\r\n {items.map((item, index) => (\r\n <Card key={item.id} item={item} index={index} totalCards={items.length} isExpanded={isExpanded} />\r\n ))}\r\n </button>\r\n );\r\n}\r\n\r\nexport type { CardStackItem, Specification };\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ActivityData {\r\n label: string;\r\n value: number;\r\n color: string;\r\n size: number;\r\n current: number;\r\n target: number;\r\n unit: string;\r\n}\r\n\r\ninterface CircleProgressProps {\r\n data: ActivityData;\r\n index: number;\r\n}\r\n\r\nconst CircleProgress = ({ data, index }: CircleProgressProps) => {\r\n const strokeWidth = 16;\r\n const radius = (data.size - strokeWidth) / 2;\r\n const circumference = radius * 2 * Math.PI;\r\n const progress = ((100 - data.value) / 100) * circumference;\r\n const gradientId = `gradient-${data.label.toLowerCase()}-${index}`;\r\n\r\n return (\r\n <motion.div\r\n className=\"absolute inset-0 flex items-center justify-center\"\r\n initial={{ opacity: 0, scale: 0.8 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n transition={{ duration: 0.8, delay: index * 0.2, ease: \"easeOut\" }}\r\n >\r\n <svg\r\n width={data.size}\r\n height={data.size}\r\n viewBox={`0 0 ${data.size} ${data.size}`}\r\n className=\"transform -rotate-90\"\r\n aria-label={`${data.label} Activity Progress - ${data.value}%`}\r\n >\r\n <title>{`${data.label} Activity Progress - ${data.value}%`}</title>\r\n <defs>\r\n <linearGradient id={gradientId} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\r\n <stop offset=\"0%\" style={{ stopColor: data.color, stopOpacity: 1 }} />\r\n <stop\r\n offset=\"100%\"\r\n style={{\r\n stopColor: data.color === \"#FF2D55\" ? \"#FF6B8B\" : data.color === \"#A3F900\" ? \"#C5FF4D\" : \"#4DDFED\",\r\n stopOpacity: 1,\r\n }}\r\n />\r\n </linearGradient>\r\n </defs>\r\n <circle\r\n cx={data.size / 2}\r\n cy={data.size / 2}\r\n r={radius}\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth={strokeWidth}\r\n className=\"text-zinc-200/50 dark:text-zinc-800/50\"\r\n />\r\n <motion.circle\r\n cx={data.size / 2}\r\n cy={data.size / 2}\r\n r={radius}\r\n fill=\"none\"\r\n stroke={`url(#${gradientId})`}\r\n strokeWidth={strokeWidth}\r\n strokeDasharray={circumference}\r\n initial={{ strokeDashoffset: circumference }}\r\n animate={{ strokeDashoffset: progress }}\r\n transition={{ duration: 1.8, delay: index * 0.2, ease: \"easeInOut\" }}\r\n strokeLinecap=\"round\"\r\n style={{ filter: \"drop-shadow(0 0 6px rgba(0,0,0,0.15))\" }}\r\n />\r\n </svg>\r\n </motion.div>\r\n );\r\n};\r\n\r\ninterface AppleActivityCardProps {\r\n title?: string;\r\n className?: string;\r\n activities?: ActivityData[];\r\n}\r\n\r\nconst defaultActivities: ActivityData[] = [\r\n { label: \"MOVE\", value: 85, color: \"#FF2D55\", size: 200, current: 479, target: 800, unit: \"CAL\" },\r\n { label: \"EXERCISE\", value: 60, color: \"#A3F900\", size: 160, current: 24, target: 30, unit: \"MIN\" },\r\n { label: \"STAND\", value: 30, color: \"#04C7DD\", size: 120, current: 6, target: 12, unit: \"HR\" },\r\n];\r\n\r\nexport function AppleActivityCard({ title = \"Activity Rings\", className, activities = defaultActivities }: AppleActivityCardProps) {\r\n return (\r\n <div className={cn(\"relative w-full max-w-3xl mx-auto p-8 rounded-3xl text-zinc-900 dark:text-white\", className)}>\r\n <div className=\"flex flex-col items-center gap-8\">\r\n <motion.h2\r\n className=\"text-2xl font-medium text-zinc-900 dark:text-white\"\r\n initial={{ opacity: 0, y: -20 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.5 }}\r\n >\r\n {title}\r\n </motion.h2>\r\n <div className=\"flex items-center\">\r\n <div className=\"relative w-[180px] h-[180px]\">\r\n {activities.map((activity, index) => (\r\n <CircleProgress key={activity.label} data={activity} index={index} />\r\n ))}\r\n </div>\r\n <motion.div\r\n className=\"flex flex-col gap-6 ml-8\"\r\n initial={{ opacity: 0, x: 20 }}\r\n animate={{ opacity: 1, x: 0 }}\r\n transition={{ duration: 0.5, delay: 0.3 }}\r\n >\r\n {activities.map((activity) => (\r\n <div key={activity.label} className=\"flex flex-col\">\r\n <span className=\"text-sm font-medium text-zinc-600 dark:text-zinc-400\">{activity.label}</span>\r\n <span className=\"text-2xl font-semibold\" style={{ color: activity.color }}>\r\n {activity.current}/{activity.target}\r\n <span className=\"text-base ml-1 text-zinc-600 dark:text-zinc-400\">{activity.unit}</span>\r\n </span>\r\n </div>\r\n ))}\r\n </motion.div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport type { ActivityData };\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ReplyProps {\r\n authorName: string;\r\n authorHandle: string;\r\n authorImage: string;\r\n content: string;\r\n isVerified?: boolean;\r\n timestamp: string;\r\n}\r\n\r\ninterface TweetCardProps {\r\n authorName: string;\r\n authorHandle: string;\r\n authorImage: string;\r\n content: string[];\r\n isVerified?: boolean;\r\n timestamp: string;\r\n reply?: ReplyProps;\r\n href?: string;\r\n className?: string;\r\n}\r\n\r\nconst VerifiedIcon = ({ className }: { className?: string }) => (\r\n <svg className={className} viewBox=\"0 0 22 22\" fill=\"currentColor\">\r\n <path d=\"M20.396 11c-.018-.646-.215-1.275-.57-1.816-.354-.54-.852-.972-1.438-1.246.223-.607.27-1.264.14-1.897-.131-.634-.437-1.218-.882-1.687-.47-.445-1.053-.75-1.687-.882-.633-.13-1.29-.083-1.897.14-.273-.587-.704-1.086-1.245-1.44S11.647 1.62 11 1.604c-.646.017-1.273.213-1.813.568s-.969.854-1.24 1.44c-.608-.223-1.267-.272-1.902-.14-.635.13-1.22.436-1.69.882-.445.47-.749 1.055-.878 1.688-.13.633-.08 1.29.144 1.896-.587.274-1.087.705-1.443 1.245-.356.54-.555 1.17-.574 1.817.02.647.218 1.276.574 1.817.356.54.856.972 1.443 1.245-.224.606-.274 1.263-.144 1.896.13.634.433 1.218.877 1.688.47.443 1.054.747 1.687.878.633.132 1.29.084 1.897-.136.274.586.705 1.084 1.246 1.439.54.354 1.17.551 1.816.569.647-.016 1.276-.213 1.817-.567s.972-.854 1.245-1.44c.604.239 1.266.296 1.903.164.636-.132 1.22-.447 1.68-.907.46-.46.776-1.044.908-1.681s.075-1.299-.165-1.903c.586-.274 1.084-.705 1.439-1.246.354-.54.551-1.17.569-1.816zM9.662 14.85l-3.429-3.428 1.293-1.302 2.072 2.072 4.4-4.794 1.347 1.246z\" />\r\n </svg>\r\n);\r\n\r\nconst XIcon = ({ className }: { className?: string }) => (\r\n <svg className={className} viewBox=\"0 0 1200 1227\" fill=\"none\">\r\n <title>X</title>\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M714.163 519.284 1160.89 0h-105.86L667.137 450.887 357.328 0H0l468.492 681.821L0 1226.37h105.866l409.625-476.152 327.181 476.152H1200L714.137 519.284h.026ZM569.165 687.828l-47.468-67.894-377.686-540.24h162.604l304.797 435.991 47.468 67.894 396.2 566.721H892.476L569.165 687.854v-.026Z\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport function TweetCard({\r\n authorName,\r\n authorHandle,\r\n authorImage,\r\n content,\r\n isVerified = false,\r\n timestamp,\r\n reply,\r\n href,\r\n className,\r\n}: TweetCardProps) {\r\n const Wrapper = href ? \"a\" : \"div\";\r\n const wrapperProps = href ? { href, target: \"_blank\", rel: \"noopener noreferrer\" } : {};\r\n\r\n return (\r\n <Wrapper\r\n {...wrapperProps}\r\n className={cn(\r\n \"block w-full min-w-[400px] md:min-w-[500px] max-w-xl p-1.5 rounded-2xl relative isolate overflow-hidden\",\r\n \"bg-black/90 dark:bg-black/90\",\r\n \"backdrop-blur-xl backdrop-saturate-[180%]\",\r\n \"border border-black/10 dark:border-white/10\",\r\n \"shadow-[0_8px_16px_rgb(0_0_0_/_0.15)] dark:shadow-[0_8px_16px_rgb(0_0_0_/_0.25)]\",\r\n className\r\n )}\r\n >\r\n <div\r\n className={cn(\r\n \"w-full p-5 rounded-xl relative\",\r\n \"bg-gradient-to-br from-black/[0.05] to-transparent dark:from-white/[0.08] dark:to-transparent\",\r\n \"backdrop-blur-md backdrop-saturate-150\",\r\n \"border border-black/[0.05] dark:border-white/[0.08]\",\r\n \"text-white/90 dark:text-white\"\r\n )}\r\n >\r\n <div className=\"flex gap-3\">\r\n <div className=\"shrink-0\">\r\n <div className=\"h-10 w-10 rounded-full overflow-hidden\">\r\n <img src={authorImage} alt={authorName} className=\"h-full w-full object-cover\" />\r\n </div>\r\n </div>\r\n <div className=\"flex-1\">\r\n <div className=\"flex justify-between items-start\">\r\n <div className=\"flex flex-col\">\r\n <div className=\"flex items-center gap-1\">\r\n <span className=\"font-semibold text-white dark:text-white/90 hover:underline cursor-pointer\">\r\n {authorName}\r\n </span>\r\n {isVerified && <VerifiedIcon className=\"h-4 w-4 text-blue-400\" />}\r\n </div>\r\n <span className=\"text-white/60 text-sm\">@{authorHandle}</span>\r\n </div>\r\n <div className=\"h-8 w-8 text-white/80 hover:text-white hover:bg-white/10 rounded-lg p-1 flex items-center justify-center\">\r\n <XIcon className=\"w-4 h-4\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"mt-2\">\r\n {content.map((item, index) => (\r\n <p key={index} className=\"text-white dark:text-white/90 text-base\">\r\n {item}\r\n </p>\r\n ))}\r\n <span className=\"text-white/50 text-sm mt-2 block\">{timestamp}</span>\r\n </div>\r\n {reply && (\r\n <div className=\"mt-4 pt-4 border-t border-white/[0.08]\">\r\n <div className=\"flex gap-3\">\r\n <div className=\"shrink-0\">\r\n <div className=\"h-10 w-10 rounded-full overflow-hidden\">\r\n <img src={reply.authorImage} alt={reply.authorName} className=\"h-full w-full object-cover\" />\r\n </div>\r\n </div>\r\n <div className=\"flex-1\">\r\n <div className=\"flex items-center gap-1\">\r\n <span className=\"font-semibold text-white/90 hover:underline cursor-pointer\">{reply.authorName}</span>\r\n {reply.isVerified && <VerifiedIcon className=\"h-4 w-4 text-blue-400\" />}\r\n <span className=\"text-white/60 text-sm\">@{reply.authorHandle}</span>\r\n <span className=\"text-white/60 text-sm\">·</span>\r\n <span className=\"text-white/60 text-sm\">{reply.timestamp}</span>\r\n </div>\r\n <p className=\"text-white/80 text-sm mt-1\">{reply.content}</p>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </Wrapper>\r\n );\r\n}\r\n\r\nexport type { TweetCardProps, ReplyProps };\r\n","\"use client\";\r\n\r\nimport React, { useRef } from \"react\";\r\nimport { motion, useInView } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface StatItem {\r\n value: string;\r\n label: string;\r\n description?: string;\r\n icon?: React.ReactNode;\r\n trend?: {\r\n value: string;\r\n direction: \"up\" | \"down\";\r\n };\r\n}\r\n\r\ninterface StatsCardsProps {\r\n title?: string;\r\n description?: string;\r\n stats: StatItem[];\r\n className?: string;\r\n}\r\n\r\nexport function StatsCards({\r\n title = \"Key Metrics\",\r\n description = \"Track your success with these important numbers\",\r\n stats,\r\n className,\r\n}: StatsCardsProps) {\r\n const ref = useRef(null);\r\n const isInView = useInView(ref, { once: true });\r\n\r\n return (\r\n <div className={cn(\"min-h-[400px] w-full\", className)}>\r\n <section className=\"py-20\">\r\n <div className=\"mx-auto max-w-7xl px-6\">\r\n <motion.div\r\n initial={{ opacity: 0, y: 20 }}\r\n whileInView={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.6 }}\r\n viewport={{ once: true }}\r\n className=\"mb-16 text-center\"\r\n >\r\n <h2 className=\"text-zinc-900 dark:text-zinc-100 mb-4 text-3xl font-bold lg:text-4xl\">{title}</h2>\r\n <p className=\"text-zinc-600 dark:text-zinc-400 mx-auto max-w-2xl text-lg\">{description}</p>\r\n </motion.div>\r\n\r\n <div ref={ref} className=\"grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-4\">\r\n {stats.map((stat, index) => (\r\n <motion.div\r\n key={stat.label}\r\n initial={{ opacity: 0, y: 30, scale: 0.9 }}\r\n animate={isInView ? { opacity: 1, y: 0, scale: 1 } : { opacity: 0, y: 30, scale: 0.9 }}\r\n transition={{ duration: 0.6, delay: index * 0.1, type: \"spring\", stiffness: 100 }}\r\n className=\"group border-zinc-300 dark:border-zinc-700 bg-transparent hover:border-zinc-500 dark:hover:border-zinc-600 relative overflow-hidden rounded-2xl border p-6 transition-all hover:scale-105 hover:shadow-xl\"\r\n >\r\n {stat.icon && (\r\n <motion.div\r\n className=\"mb-4 text-3xl text-zinc-900 dark:text-zinc-100\"\r\n initial={{ rotate: -10, scale: 0.8 }}\r\n animate={isInView ? { rotate: 0, scale: 1 } : { rotate: -10, scale: 0.8 }}\r\n transition={{ duration: 0.6, delay: index * 0.1 + 0.2, type: \"spring\", stiffness: 200 }}\r\n >\r\n {stat.icon}\r\n </motion.div>\r\n )}\r\n <motion.div\r\n className=\"text-zinc-900 dark:text-zinc-100 mb-1 text-2xl font-bold lg:text-3xl\"\r\n initial={{ scale: 0.5 }}\r\n animate={isInView ? { scale: 1 } : { scale: 0.5 }}\r\n transition={{ duration: 0.8, delay: index * 0.1 + 0.3, type: \"spring\", stiffness: 200 }}\r\n >\r\n {stat.value}\r\n </motion.div>\r\n <h3 className=\"text-zinc-900 dark:text-zinc-100 mb-2 text-sm font-semibold tracking-wide uppercase\">\r\n {stat.label}\r\n </h3>\r\n {stat.description && <p className=\"text-zinc-600 dark:text-zinc-400 mb-3 text-xs\">{stat.description}</p>}\r\n {stat.trend && (\r\n <motion.div\r\n className={cn(\r\n \"inline-flex items-center rounded-full px-2 py-1 text-xs font-medium\",\r\n stat.trend.direction === \"up\" ? \"bg-green-900/20 text-green-400\" : \"bg-red-900/20 text-red-400\"\r\n )}\r\n initial={{ opacity: 0, x: -10 }}\r\n animate={isInView ? { opacity: 1, x: 0 } : { opacity: 0, x: -10 }}\r\n transition={{ duration: 0.4, delay: index * 0.1 + 0.5 }}\r\n >\r\n <span className=\"mr-1\">{stat.trend.direction === \"up\" ? \"↗\" : \"↘\"}</span>\r\n {stat.trend.value}\r\n </motion.div>\r\n )}\r\n </motion.div>\r\n ))}\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n );\r\n}\r\n\r\nexport type { StatsCardsProps, StatItem };\r\n","\"use client\";\r\n\r\nimport { useRef } from \"react\";\r\nimport { motion, useInView } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface StatGridItem {\r\n value: string;\r\n label: string;\r\n description?: string;\r\n}\r\n\r\ninterface StatsGridProps {\r\n title?: string;\r\n description?: string;\r\n stats: StatGridItem[];\r\n className?: string;\r\n}\r\n\r\nexport function StatsGrid({\r\n title = \"Our Impact in Numbers\",\r\n description = \"See how we're making a difference across the globe\",\r\n stats,\r\n className,\r\n}: StatsGridProps) {\r\n const ref = useRef(null);\r\n const isInView = useInView(ref, { once: true });\r\n\r\n return (\r\n <div className={cn(\"min-h-[400px] w-full\", className)}>\r\n <section className=\"py-20\">\r\n <div className=\"mx-auto max-w-7xl px-6\">\r\n <motion.div\r\n initial={{ opacity: 0, y: 20 }}\r\n whileInView={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.6 }}\r\n viewport={{ once: true }}\r\n className=\"mb-16 text-center\"\r\n >\r\n <h2 className=\"text-zinc-900 dark:text-zinc-100 mb-4 text-3xl font-bold lg:text-4xl\">{title}</h2>\r\n <p className=\"text-zinc-600 dark:text-zinc-400 mx-auto max-w-2xl text-lg\">{description}</p>\r\n </motion.div>\r\n\r\n <div ref={ref} className=\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-4\">\r\n {stats.map((stat, index) => (\r\n <motion.div\r\n key={stat.label}\r\n initial={{ opacity: 0, y: 30 }}\r\n animate={isInView ? { opacity: 1, y: 0 } : { opacity: 0, y: 30 }}\r\n transition={{ duration: 0.6, delay: index * 0.1 }}\r\n className=\"group bg-transparent hover:border-zinc-500 dark:hover:border-zinc-600 relative overflow-hidden rounded-2xl border border-zinc-300 dark:border-zinc-700 p-8 text-center transition-all hover:shadow-lg\"\r\n >\r\n <motion.div\r\n className=\"text-zinc-900 dark:text-zinc-100 mb-2 text-4xl font-bold lg:text-5xl\"\r\n initial={{ scale: 0.5 }}\r\n animate={isInView ? { scale: 1 } : { scale: 0.5 }}\r\n transition={{ duration: 0.8, delay: index * 0.1 + 0.2, type: \"spring\", stiffness: 200 }}\r\n >\r\n {stat.value}\r\n </motion.div>\r\n <h3 className=\"text-zinc-900 dark:text-zinc-100 mb-2 text-lg font-semibold\">{stat.label}</h3>\r\n {stat.description && <p className=\"text-zinc-600 dark:text-zinc-400 text-sm\">{stat.description}</p>}\r\n </motion.div>\r\n ))}\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n );\r\n}\r\n\r\nexport type { StatsGridProps, StatGridItem };\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BentoCardProps {\r\n name: string;\r\n className?: string;\r\n background?: React.ReactNode | string;\r\n Icon?: React.ComponentType<{ className?: string }>;\r\n description: string;\r\n href?: string;\r\n cta?: string;\r\n onClick?: () => void;\r\n}\r\n\r\ninterface BentoGridProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function BentoGrid({ children, className }: BentoGridProps) {\r\n return <div className={cn(\"grid w-full auto-rows-[22rem] grid-cols-3 gap-4\", className)}>{children}</div>;\r\n}\r\n\r\nexport function BentoCard({ name, className, background, Icon, description, href, cta, onClick }: BentoCardProps) {\r\n const Wrapper = href ? \"a\" : \"div\";\r\n const wrapperProps = href ? { href, target: \"_blank\", rel: \"noopener noreferrer\" } : {};\r\n\r\n return (\r\n <Wrapper\r\n {...wrapperProps}\r\n onClick={onClick}\r\n className={cn(\r\n \"group relative col-span-3 flex flex-col justify-between overflow-hidden rounded-xl cursor-pointer\",\r\n \"bg-white [box-shadow:0_0_0_1px_rgba(0,0,0,.03),0_2px_4px_rgba(0,0,0,.05),0_12px_24px_rgba(0,0,0,.05)]\",\r\n \"transform-gpu dark:bg-black dark:[border:1px_solid_rgba(255,255,255,.1)] dark:[box-shadow:0_-20px_80px_-20px_#ffffff1f_inset]\",\r\n className\r\n )}\r\n >\r\n {typeof background === \"string\" ? (\r\n <div className={cn(\"absolute inset-0\", background)} />\r\n ) : (\r\n <div className=\"absolute inset-0\">{background}</div>\r\n )}\r\n\r\n <div className=\"pointer-events-none z-10 flex transform-gpu flex-col gap-1 p-6 transition-all duration-300 group-hover:-translate-y-10\">\r\n {Icon && (\r\n <Icon className=\"h-12 w-12 origin-left transform-gpu text-neutral-700 transition-all duration-300 ease-in-out group-hover:scale-75 dark:text-neutral-300\" />\r\n )}\r\n <h3 className=\"text-xl font-semibold text-neutral-700 dark:text-neutral-300\">{name}</h3>\r\n <p className=\"max-w-lg text-neutral-400\">{description}</p>\r\n </div>\r\n\r\n {cta && (\r\n <div className=\"pointer-events-none absolute bottom-0 flex w-full translate-y-10 transform-gpu flex-row items-center p-4 opacity-0 transition-all duration-300 group-hover:translate-y-0 group-hover:opacity-100\">\r\n <span className=\"pointer-events-auto ml-auto flex items-center gap-2 rounded-lg bg-black px-4 py-2 text-white dark:bg-white dark:text-black\">\r\n {cta}\r\n <svg className=\"ml-2 h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\r\n </svg>\r\n </span>\r\n </div>\r\n )}\r\n <div className=\"pointer-events-none absolute inset-0 transform-gpu transition-all duration-300 group-hover:bg-black/[.03] group-hover:dark:bg-neutral-800/10\" />\r\n </Wrapper>\r\n );\r\n}\r\n\r\nexport type { BentoCardProps, BentoGridProps };\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef } from \"react\";\r\n\r\ninterface AuroraProps {\r\n colorStops?: string[];\r\n amplitude?: number;\r\n blend?: number;\r\n speed?: number;\r\n className?: string;\r\n}\r\n\r\nexport function Aurora({\r\n colorStops = [\"#5227FF\", \"#7cff67\", \"#5227FF\"],\r\n amplitude = 1.0,\r\n blend = 0.5,\r\n speed = 1.0,\r\n className = \"\",\r\n}: AuroraProps) {\r\n const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n useEffect(() => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n\r\n const ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n let animationId: number;\r\n let time = 0;\r\n\r\n const resize = () => {\r\n canvas.width = canvas.offsetWidth;\r\n canvas.height = canvas.offsetHeight;\r\n };\r\n\r\n const hexToRgb = (hex: string) => {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result\r\n ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16),\r\n }\r\n : { r: 0, g: 0, b: 0 };\r\n };\r\n\r\n const draw = () => {\r\n if (!ctx || !canvas) return;\r\n\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n const gradient = ctx.createLinearGradient(0, 0, canvas.width, 0);\r\n colorStops.forEach((color, i) => {\r\n gradient.addColorStop(i / (colorStops.length - 1), color);\r\n });\r\n\r\n for (let y = 0; y < canvas.height; y++) {\r\n const noise = Math.sin(y * 0.02 + time * speed * 0.1) * amplitude * 50;\r\n const alpha = Math.max(0, Math.min(1, (y / canvas.height) * blend + noise * 0.01));\r\n\r\n ctx.fillStyle = gradient;\r\n ctx.globalAlpha = alpha * 0.3;\r\n ctx.fillRect(0, y, canvas.width, 1);\r\n }\r\n\r\n ctx.globalAlpha = 1;\r\n time += 1;\r\n animationId = requestAnimationFrame(draw);\r\n };\r\n\r\n resize();\r\n window.addEventListener(\"resize\", resize);\r\n draw();\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\", resize);\r\n cancelAnimationFrame(animationId);\r\n };\r\n }, [colorStops, amplitude, blend, speed]);\r\n\r\n return (\r\n <canvas\r\n ref={canvasRef}\r\n className={`absolute inset-0 w-full h-full ${className}`}\r\n />\r\n );\r\n}\r\n\r\nexport default Aurora;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef } from \"react\";\r\n\r\ninterface ThreadsProps {\r\n lineCount?: number;\r\n lineColor?: string;\r\n lineWidth?: number;\r\n speed?: number;\r\n amplitude?: number;\r\n className?: string;\r\n}\r\n\r\nexport function Threads({\r\n lineCount = 50,\r\n lineColor = \"rgba(255, 255, 255, 0.1)\",\r\n lineWidth = 1,\r\n speed = 0.5,\r\n amplitude = 100,\r\n className = \"\",\r\n}: ThreadsProps) {\r\n const canvasRef = useRef<HTMLCanvasElement>(null);\r\n const animationIdRef = 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 ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n const resizeCanvas = () => {\r\n canvas.width = canvas.offsetWidth;\r\n canvas.height = canvas.offsetHeight;\r\n };\r\n\r\n window.addEventListener(\"resize\", resizeCanvas);\r\n resizeCanvas();\r\n\r\n const lines: Array<{ y: number; offset: number; speed: number }> = [];\r\n\r\n for (let i = 0; i < lineCount; i++) {\r\n lines.push({\r\n y: (canvas.height / lineCount) * i,\r\n offset: Math.random() * Math.PI * 2,\r\n speed: 0.5 + Math.random() * speed,\r\n });\r\n }\r\n\r\n let time = 0;\r\n\r\n const animate = () => {\r\n if (!ctx || !canvas) return;\r\n\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n ctx.strokeStyle = lineColor;\r\n ctx.lineWidth = lineWidth;\r\n\r\n lines.forEach((line) => {\r\n ctx.beginPath();\r\n\r\n for (let x = 0; x <= canvas.width; x += 5) {\r\n const wave = Math.sin(x * 0.01 + time * line.speed + line.offset) * amplitude;\r\n const y = line.y + wave;\r\n\r\n if (x === 0) {\r\n ctx.moveTo(x, y);\r\n } else {\r\n ctx.lineTo(x, y);\r\n }\r\n }\r\n\r\n ctx.stroke();\r\n });\r\n\r\n time += 0.01;\r\n animationIdRef.current = requestAnimationFrame(animate);\r\n };\r\n\r\n animate();\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\", resizeCanvas);\r\n if (animationIdRef.current) {\r\n cancelAnimationFrame(animationIdRef.current);\r\n }\r\n };\r\n }, [lineCount, lineColor, lineWidth, speed, amplitude]);\r\n\r\n return <canvas ref={canvasRef} className={`w-full h-full ${className}`} />;\r\n}\r\n\r\nexport default Threads;\r\n","\"use client\";\r\n\r\nimport { useRef, useEffect } from \"react\";\r\n\r\ninterface SquaresProps {\r\n direction?: \"diagonal\" | \"up\" | \"right\" | \"down\" | \"left\";\r\n speed?: number;\r\n borderColor?: string;\r\n squareSize?: number;\r\n hoverFillColor?: string;\r\n className?: string;\r\n}\r\n\r\nexport function Squares({\r\n direction = \"right\",\r\n speed = 1,\r\n borderColor = \"#999\",\r\n squareSize = 40,\r\n hoverFillColor = \"#222\",\r\n className = \"\",\r\n}: SquaresProps) {\r\n const canvasRef = useRef<HTMLCanvasElement>(null);\r\n const requestRef = useRef<number | null>(null);\r\n const gridOffset = useRef({ x: 0, y: 0 });\r\n const hoveredSquare = useRef<{ x: number; y: number } | null>(null);\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\r\n const resizeCanvas = () => {\r\n canvas.width = canvas.offsetWidth;\r\n canvas.height = canvas.offsetHeight;\r\n };\r\n\r\n window.addEventListener(\"resize\", resizeCanvas);\r\n resizeCanvas();\r\n\r\n const drawGrid = () => {\r\n if (!ctx) return;\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n const startX = Math.floor(gridOffset.current.x / squareSize) * squareSize;\r\n const startY = Math.floor(gridOffset.current.y / squareSize) * squareSize;\r\n\r\n for (let x = startX; x < canvas.width + squareSize; x += squareSize) {\r\n for (let y = startY; y < canvas.height + squareSize; y += squareSize) {\r\n const squareX = x - (gridOffset.current.x % squareSize);\r\n const squareY = y - (gridOffset.current.y % squareSize);\r\n\r\n if (\r\n hoveredSquare.current &&\r\n Math.floor((x - startX) / squareSize) === hoveredSquare.current.x &&\r\n Math.floor((y - startY) / squareSize) === hoveredSquare.current.y\r\n ) {\r\n ctx.fillStyle = hoverFillColor;\r\n ctx.fillRect(squareX, squareY, squareSize, squareSize);\r\n }\r\n\r\n ctx.strokeStyle = borderColor;\r\n ctx.strokeRect(squareX, squareY, squareSize, squareSize);\r\n }\r\n }\r\n };\r\n\r\n const updateAnimation = () => {\r\n const effectiveSpeed = Math.max(speed, 0.1);\r\n switch (direction) {\r\n case \"right\":\r\n gridOffset.current.x = (gridOffset.current.x - effectiveSpeed + squareSize) % squareSize;\r\n break;\r\n case \"left\":\r\n gridOffset.current.x = (gridOffset.current.x + effectiveSpeed + squareSize) % squareSize;\r\n break;\r\n case \"up\":\r\n gridOffset.current.y = (gridOffset.current.y + effectiveSpeed + squareSize) % squareSize;\r\n break;\r\n case \"down\":\r\n gridOffset.current.y = (gridOffset.current.y - effectiveSpeed + squareSize) % squareSize;\r\n break;\r\n case \"diagonal\":\r\n gridOffset.current.x = (gridOffset.current.x - effectiveSpeed + squareSize) % squareSize;\r\n gridOffset.current.y = (gridOffset.current.y - effectiveSpeed + squareSize) % squareSize;\r\n break;\r\n }\r\n\r\n drawGrid();\r\n requestRef.current = requestAnimationFrame(updateAnimation);\r\n };\r\n\r\n const handleMouseMove = (event: MouseEvent) => {\r\n const rect = canvas.getBoundingClientRect();\r\n const mouseX = event.clientX - rect.left;\r\n const mouseY = event.clientY - rect.top;\r\n\r\n const startX = Math.floor(gridOffset.current.x / squareSize) * squareSize;\r\n const startY = Math.floor(gridOffset.current.y / squareSize) * squareSize;\r\n\r\n hoveredSquare.current = {\r\n x: Math.floor((mouseX + gridOffset.current.x - startX) / squareSize),\r\n y: Math.floor((mouseY + gridOffset.current.y - startY) / squareSize),\r\n };\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n hoveredSquare.current = null;\r\n };\r\n\r\n canvas.addEventListener(\"mousemove\", handleMouseMove);\r\n canvas.addEventListener(\"mouseleave\", handleMouseLeave);\r\n requestRef.current = requestAnimationFrame(updateAnimation);\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\", resizeCanvas);\r\n if (requestRef.current) cancelAnimationFrame(requestRef.current);\r\n canvas.removeEventListener(\"mousemove\", handleMouseMove);\r\n canvas.removeEventListener(\"mouseleave\", handleMouseLeave);\r\n };\r\n }, [direction, speed, borderColor, hoverFillColor, squareSize]);\r\n\r\n return <canvas ref={canvasRef} className={`w-full h-full ${className}`} />;\r\n}\r\n\r\nexport default Squares;\r\n","\"use client\";\r\n\r\nimport { useRef, useEffect, CSSProperties } from \"react\";\r\n\r\ninterface WavesProps {\r\n lineColor?: string;\r\n backgroundColor?: string;\r\n waveSpeedX?: number;\r\n waveSpeedY?: number;\r\n waveAmpX?: number;\r\n waveAmpY?: number;\r\n xGap?: number;\r\n yGap?: number;\r\n friction?: number;\r\n tension?: number;\r\n maxCursorMove?: number;\r\n style?: CSSProperties;\r\n className?: string;\r\n}\r\n\r\nexport function Waves({\r\n lineColor = \"black\",\r\n backgroundColor = \"transparent\",\r\n waveSpeedX = 0.0125,\r\n waveSpeedY = 0.005,\r\n waveAmpX = 32,\r\n waveAmpY = 16,\r\n xGap = 10,\r\n yGap = 32,\r\n friction = 0.925,\r\n tension = 0.005,\r\n maxCursorMove = 100,\r\n style = {},\r\n className = \"\",\r\n}: WavesProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const canvasRef = useRef<HTMLCanvasElement>(null);\r\n const frameIdRef = useRef<number | null>(null);\r\n\r\n useEffect(() => {\r\n const canvas = canvasRef.current;\r\n const container = containerRef.current;\r\n if (!canvas || !container) return;\r\n\r\n const ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n let time = 0;\r\n\r\n const resize = () => {\r\n const rect = container.getBoundingClientRect();\r\n canvas.width = rect.width;\r\n canvas.height = rect.height;\r\n };\r\n\r\n const draw = () => {\r\n if (!ctx || !canvas) return;\r\n\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n ctx.strokeStyle = lineColor;\r\n ctx.lineWidth = 1;\r\n\r\n const cols = Math.ceil(canvas.width / xGap);\r\n const rows = Math.ceil(canvas.height / yGap);\r\n\r\n for (let i = 0; i <= cols; i++) {\r\n ctx.beginPath();\r\n for (let j = 0; j <= rows; j++) {\r\n const x = i * xGap;\r\n const y = j * yGap;\r\n const waveX = Math.sin(y * 0.01 + time * waveSpeedX) * waveAmpX;\r\n const waveY = Math.cos(x * 0.01 + time * waveSpeedY) * waveAmpY;\r\n\r\n if (j === 0) {\r\n ctx.moveTo(x + waveX, y + waveY);\r\n } else {\r\n ctx.lineTo(x + waveX, y + waveY);\r\n }\r\n }\r\n ctx.stroke();\r\n }\r\n\r\n time += 1;\r\n frameIdRef.current = requestAnimationFrame(draw);\r\n };\r\n\r\n resize();\r\n window.addEventListener(\"resize\", resize);\r\n draw();\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\", resize);\r\n if (frameIdRef.current !== null) {\r\n cancelAnimationFrame(frameIdRef.current);\r\n }\r\n };\r\n }, [lineColor, waveSpeedX, waveSpeedY, waveAmpX, waveAmpY, xGap, yGap]);\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={`absolute inset-0 overflow-hidden ${className}`}\r\n style={{ backgroundColor, ...style }}\r\n >\r\n <canvas ref={canvasRef} className=\"w-full h-full\" />\r\n </div>\r\n );\r\n}\r\n\r\nexport default Waves;\r\n","import { CamelToPascal } from './utility-types';\n\n/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\n/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n\n/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n\n/**\n * Is empty string\n *\n * @param {unknown} value\n * @returns {boolean} Whether the value is an empty string\n */\nexport const isEmptyString = (value: unknown): boolean => value === '';\n\n/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n};\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm7 7 10 10', key: '1fmybs' }],\n ['path', { d: 'M17 7v10H7', key: '6fjiku' }],\n];\n\n/**\n * @component @name ArrowDownRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNyA3IDEwIDEwIiAvPgogIDxwYXRoIGQ9Ik0xNyA3djEwSDciIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/arrow-down-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowDownRight = createLucideIcon('arrow-down-right', __iconNode);\n\nexport default ArrowDownRight;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16', key: 'jecpp' }],\n ['rect', { width: '20', height: '14', x: '2', y: '6', rx: '2', key: 'i6l2r4' }],\n];\n\n/**\n * @component @name Briefcase\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTYgMjBWNGEyIDIgMCAwIDAtMi0yaC00YTIgMiAwIDAgMC0yIDJ2MTYiIC8+CiAgPHJlY3Qgd2lkdGg9IjIwIiBoZWlnaHQ9IjE0IiB4PSIyIiB5PSI2IiByeD0iMiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/briefcase\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Briefcase = createLucideIcon('briefcase', __iconNode);\n\nexport default Briefcase;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M20 6 9 17l-5-5', key: '1gmf2c' }]];\n\n/**\n * @component @name Check\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgNiA5IDE3bC01LTUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Check = createLucideIcon('check', __iconNode);\n\nexport default Check;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm6 9 6 6 6-6', key: 'qrunsl' }]];\n\n/**\n * @component @name ChevronDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNiA5IDYgNiA2LTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/chevron-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronDown = createLucideIcon('chevron-down', __iconNode);\n\nexport default ChevronDown;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm15 18-6-6 6-6', key: '1wnfg3' }]];\n\n/**\n * @component @name ChevronLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTUgMTgtNi02IDYtNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/chevron-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronLeft = createLucideIcon('chevron-left', __iconNode);\n\nexport default ChevronLeft;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm9 18 6-6-6-6', key: 'mthhwq' }]];\n\n/**\n * @component @name ChevronRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtOSAxOCA2LTYtNi02IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/chevron-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronRight = createLucideIcon('chevron-right', __iconNode);\n\nexport default ChevronRight;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 6v6l4 2', key: 'mmk7yg' }],\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n];\n\n/**\n * @component @name Clock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgNnY2bDQgMiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/clock\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Clock = createLucideIcon('clock', __iconNode);\n\nexport default Clock;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n { d: 'M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3', key: '11bfej' },\n ],\n];\n\n/**\n * @component @name Command\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgNnYxMmEzIDMgMCAxIDAgMy0zSDZhMyAzIDAgMSAwIDMgM1Y2YTMgMyAwIDEgMC0zIDNoMTJhMyAzIDAgMSAwLTMtMyIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/command\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Command = createLucideIcon('command', __iconNode);\n\nexport default Command;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['line', { x1: '12', x2: '12', y1: '2', y2: '22', key: '7eqyqh' }],\n ['path', { d: 'M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6', key: '1b0p4s' }],\n];\n\n/**\n * @component @name DollarSign\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8bGluZSB4MT0iMTIiIHgyPSIxMiIgeTE9IjIiIHkyPSIyMiIgLz4KICA8cGF0aCBkPSJNMTcgNUg5LjVhMy41IDMuNSAwIDAgMCAwIDdoNWEzLjUgMy41IDAgMCAxIDAgN0g2IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/dollar-sign\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst DollarSign = createLucideIcon('dollar-sign', __iconNode);\n\nexport default DollarSign;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'M10 14 21 3', key: 'gplh6r' }],\n ['path', { d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6', key: 'a6xqqp' }],\n];\n\n/**\n * @component @name ExternalLink\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgM2g2djYiIC8+CiAgPHBhdGggZD0iTTEwIDE0IDIxIDMiIC8+CiAgPHBhdGggZD0iTTE4IDEzdjZhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/external-link\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ExternalLink = createLucideIcon('external-link', __iconNode);\n\nexport default ExternalLink;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0',\n key: '1r0f0z',\n },\n ],\n ['circle', { cx: '12', cy: '10', r: '3', key: 'ilqhr7' }],\n];\n\n/**\n * @component @name MapPin\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgMTBjMCA0Ljk5My01LjUzOSAxMC4xOTMtNy4zOTkgMTEuNzk5YTEgMSAwIDAgMS0xLjIwMiAwQzkuNTM5IDIwLjE5MyA0IDE0Ljk5MyA0IDEwYTggOCAwIDAgMSAxNiAwIiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTAiIHI9IjMiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/map-pin\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst MapPin = createLucideIcon('map-pin', __iconNode);\n\nexport default MapPin;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 19v3', key: 'npa21l' }],\n ['path', { d: 'M19 10v2a7 7 0 0 1-14 0v-2', key: '1vc78b' }],\n ['rect', { x: '9', y: '2', width: '6', height: '13', rx: '3', key: 's6n7sd' }],\n];\n\n/**\n * @component @name Mic\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMTl2MyIgLz4KICA8cGF0aCBkPSJNMTkgMTB2MmE3IDcgMCAwIDEtMTQgMHYtMiIgLz4KICA8cmVjdCB4PSI5IiB5PSIyIiB3aWR0aD0iNiIgaGVpZ2h0PSIxMyIgcng9IjMiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/mic\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Mic = createLucideIcon('mic', __iconNode);\n\nexport default Mic;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'm16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551',\n key: '1miecu',\n },\n ],\n];\n\n/**\n * @component @name Paperclip\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTYgNi04LjQxNCA4LjU4NmEyIDIgMCAwIDAgMi44MjkgMi44MjlsOC40MTQtOC41ODZhNCA0IDAgMSAwLTUuNjU3LTUuNjU3bC04LjM3OSA4LjU1MWE2IDYgMCAxIDAgOC40ODUgOC40ODVsOC4zNzktOC41NTEiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/paperclip\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Paperclip = createLucideIcon('paperclip', __iconNode);\n\nexport default Paperclip;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm21 21-4.34-4.34', key: '14j7rj' }],\n ['circle', { cx: '11', cy: '11', r: '8', key: '4ej97u' }],\n];\n\n/**\n * @component @name Search\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMjEgMjEtNC4zNC00LjM0IiAvPgogIDxjaXJjbGUgY3g9IjExIiBjeT0iMTEiIHI9IjgiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/search\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Search = createLucideIcon('search', __iconNode);\n\nexport default Search;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z',\n key: '1ffxy3',\n },\n ],\n ['path', { d: 'm21.854 2.147-10.94 10.939', key: '12cjpa' }],\n];\n\n/**\n * @component @name Send\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTQuNTM2IDIxLjY4NmEuNS41IDAgMCAwIC45MzctLjAyNGw2LjUtMTlhLjQ5Ni40OTYgMCAwIDAtLjYzNS0uNjM1bC0xOSA2LjVhLjUuNSAwIDAgMC0uMDI0LjkzN2w3LjkzIDMuMThhMiAyIDAgMCAxIDEuMTEyIDEuMTF6IiAvPgogIDxwYXRoIGQ9Im0yMS44NTQgMi4xNDctMTAuOTQgMTAuOTM5IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/send\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Send = createLucideIcon('send', __iconNode);\n\nexport default Send;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z',\n key: '1s2grr',\n },\n ],\n ['path', { d: 'M20 2v4', key: '1rf3ol' }],\n ['path', { d: 'M22 4h-4', key: 'gwowj6' }],\n ['circle', { cx: '4', cy: '20', r: '2', key: '6kqj1y' }],\n];\n\n/**\n * @component @name Sparkles\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTEuMDE3IDIuODE0YTEgMSAwIDAgMSAxLjk2NiAwbDEuMDUxIDUuNTU4YTIgMiAwIDAgMCAxLjU5NCAxLjU5NGw1LjU1OCAxLjA1MWExIDEgMCAwIDEgMCAxLjk2NmwtNS41NTggMS4wNTFhMiAyIDAgMCAwLTEuNTk0IDEuNTk0bC0xLjA1MSA1LjU1OGExIDEgMCAwIDEtMS45NjYgMGwtMS4wNTEtNS41NThhMiAyIDAgMCAwLTEuNTk0LTEuNTk0bC01LjU1OC0xLjA1MWExIDEgMCAwIDEgMC0xLjk2Nmw1LjU1OC0xLjA1MWEyIDIgMCAwIDAgMS41OTQtMS41OTR6IiAvPgogIDxwYXRoIGQ9Ik0yMCAydjQiIC8+CiAgPHBhdGggZD0iTTIyIDRoLTQiIC8+CiAgPGNpcmNsZSBjeD0iNCIgY3k9IjIwIiByPSIyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/sparkles\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Sparkles = createLucideIcon('sparkles', __iconNode);\n\nexport default Sparkles;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z',\n key: 'r04s7s',\n },\n ],\n];\n\n/**\n * @component @name Star\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTEuNTI1IDIuMjk1YS41My41MyAwIDAgMSAuOTUgMGwyLjMxIDQuNjc5YTIuMTIzIDIuMTIzIDAgMCAwIDEuNTk1IDEuMTZsNS4xNjYuNzU2YS41My41MyAwIDAgMSAuMjk0LjkwNGwtMy43MzYgMy42MzhhMi4xMjMgMi4xMjMgMCAwIDAtLjYxMSAxLjg3OGwuODgyIDUuMTRhLjUzLjUzIDAgMCAxLS43NzEuNTZsLTQuNjE4LTIuNDI4YTIuMTIyIDIuMTIyIDAgMCAwLTEuOTczIDBMNi4zOTYgMjEuMDFhLjUzLjUzIDAgMCAxLS43Ny0uNTZsLjg4MS01LjEzOWEyLjEyMiAyLjEyMiAwIDAgMC0uNjExLTEuODc5TDIuMTYgOS43OTVhLjUzLjUzIDAgMCAxIC4yOTQtLjkwNmw1LjE2NS0uNzU1YTIuMTIyIDIuMTIyIDAgMCAwIDEuNTk3LTEuMTZ6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/star\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Star = createLucideIcon('star', __iconNode);\n\nexport default Star;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M18 6 6 18', key: '1bl5f8' }],\n ['path', { d: 'm6 6 12 12', key: 'd8bk6v' }],\n];\n\n/**\n * @component @name X\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTggNiA2IDE4IiAvPgogIDxwYXRoIGQ9Im02IDYgMTIgMTIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/x\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst X = createLucideIcon('x', __iconNode);\n\nexport default X;\n","\"use client\";\r\n\r\nimport { ExternalLink } from \"lucide-react\";\r\n\r\ninterface HeroGridProps {\r\n heading?: string;\r\n highlightedText?: string;\r\n description?: string;\r\n primaryButton?: { text: string; url: string };\r\n secondaryButton?: { text: string; url: string };\r\n className?: string;\r\n}\r\n\r\nexport function HeroGrid({\r\n heading = \"Build your next project with\",\r\n highlightedText = \"Bynana UI\",\r\n description = \"Create stunning, animated interfaces in minutes.\",\r\n primaryButton = { text: \"Get Started\", url: \"#\" },\r\n secondaryButton = { text: \"Learn more\", url: \"#\" },\r\n className = \"\",\r\n}: HeroGridProps) {\r\n return (\r\n <section className={`relative overflow-hidden py-36 ${className}`}>\r\n <div className=\"relative z-10 flex flex-col items-center gap-6 text-center px-6\">\r\n <div>\r\n <h1 className=\"mb-6 text-2xl font-bold tracking-tight lg:text-5xl\">\r\n {heading}{\" \"}\r\n <span className=\"text-transparent bg-gradient-to-r from-pink-400 to-purple-400 bg-clip-text\">\r\n {highlightedText}\r\n </span>\r\n </h1>\r\n <p className=\"text-muted-foreground mx-auto max-w-3xl lg:text-xl\">{description}</p>\r\n </div>\r\n\r\n <div className=\"mt-6 flex justify-center gap-3\">\r\n <a\r\n href={primaryButton.url}\r\n className=\"border border-input hover:bg-accent px-6 py-3 rounded-md font-medium\"\r\n >\r\n {primaryButton.text}\r\n </a>\r\n <a\r\n href={secondaryButton.url}\r\n className=\"bg-primary text-primary-foreground hover:bg-primary/90 px-6 py-3 rounded-md font-medium inline-flex items-center gap-2\"\r\n >\r\n {secondaryButton.text}\r\n <ExternalLink className=\"w-4 h-4\" />\r\n </a>\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n\r\nexport default HeroGrid;\r\n","\"use client\";\r\n\r\nimport { Star, ArrowDownRight } from \"lucide-react\";\r\n\r\ninterface HeroShowcaseProps {\r\n heading?: string;\r\n description?: string;\r\n buttons?: {\r\n primary?: { text: string; url: string };\r\n secondary?: { text: string; url: string };\r\n };\r\n reviews?: {\r\n count: number;\r\n avatars: { src: string; alt: string }[];\r\n rating?: number;\r\n };\r\n className?: string;\r\n}\r\n\r\nexport function HeroShowcase({\r\n heading = \"Build beautiful UIs, effortlessly.\",\r\n description = \"Create stunning, animated interfaces in minutes.\",\r\n buttons = {\r\n primary: { text: \"Get Started\", url: \"#\" },\r\n secondary: { text: \"Watch demo\", url: \"#\" },\r\n },\r\n reviews = {\r\n count: 200,\r\n rating: 5.0,\r\n avatars: [\r\n { src: \"https://i.pravatar.cc/150?img=1\", alt: \"User 1\" },\r\n { src: \"https://i.pravatar.cc/150?img=2\", alt: \"User 2\" },\r\n { src: \"https://i.pravatar.cc/150?img=3\", alt: \"User 3\" },\r\n ],\r\n },\r\n className = \"\",\r\n}: HeroShowcaseProps) {\r\n return (\r\n <section className={`py-24 ${className}`}>\r\n <div className=\"mx-auto max-w-5xl px-6\">\r\n <div className=\"flex flex-col items-center text-center\">\r\n <h1 className=\"my-6 text-4xl font-bold lg:text-6xl\">{heading}</h1>\r\n <p className=\"text-muted-foreground mb-8 max-w-xl lg:text-xl\">{description}</p>\r\n\r\n <div className=\"mb-12 flex items-center gap-4\">\r\n <span className=\"inline-flex -space-x-4\">\r\n {reviews.avatars.map((avatar, index) => (\r\n <img\r\n key={index}\r\n src={avatar.src}\r\n alt={avatar.alt}\r\n className=\"size-12 rounded-full border-2 border-background\"\r\n />\r\n ))}\r\n </span>\r\n <div>\r\n <div className=\"flex items-center gap-1\">\r\n {[1, 2, 3, 4, 5].map((star) => (\r\n <Star key={star} className=\"size-5 fill-yellow-400 text-yellow-400\" />\r\n ))}\r\n <span className=\"ml-1 font-semibold\">{reviews.rating?.toFixed(1)}</span>\r\n </div>\r\n <p className=\"text-muted-foreground text-sm\">from {reviews.count}+ reviews</p>\r\n </div>\r\n </div>\r\n\r\n <div className=\"flex gap-4\">\r\n {buttons.primary && (\r\n <a\r\n href={buttons.primary.url}\r\n className=\"bg-primary text-primary-foreground hover:bg-primary/90 px-6 py-3 rounded-md font-medium\"\r\n >\r\n {buttons.primary.text}\r\n </a>\r\n )}\r\n {buttons.secondary && (\r\n <a\r\n href={buttons.secondary.url}\r\n className=\"border border-input hover:bg-accent px-6 py-3 rounded-md font-medium inline-flex items-center gap-2\"\r\n >\r\n {buttons.secondary.text}\r\n <ArrowDownRight className=\"size-4\" />\r\n </a>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n\r\nexport default HeroShowcase;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\n\r\ninterface Testimonial {\r\n quote: string;\r\n avatar: string;\r\n name: string;\r\n role: string;\r\n}\r\n\r\ninterface TestimonialsSimpleProps {\r\n testimonials?: Testimonial[];\r\n duration?: number;\r\n className?: string;\r\n}\r\n\r\nexport function TestimonialsSimple({\r\n testimonials = [\r\n {\r\n quote: \"This has revolutionized how we build user interfaces. The animations are buttery smooth.\",\r\n avatar: \"https://i.pravatar.cc/150?img=1\",\r\n name: \"Eduardo Calvo\",\r\n role: \"CEO & Founder\",\r\n },\r\n {\r\n quote: \"The design system is incredibly well thought out. Every component feels intentional.\",\r\n avatar: \"https://i.pravatar.cc/150?img=2\",\r\n name: \"Drew Cano\",\r\n role: \"Head of Design\",\r\n },\r\n {\r\n quote: \"Best UI library I've used. The TypeScript support is excellent.\",\r\n avatar: \"https://i.pravatar.cc/150?img=3\",\r\n name: \"Marcus Johnson\",\r\n role: \"Lead Developer\",\r\n },\r\n ],\r\n duration = 5000,\r\n className = \"\",\r\n}: TestimonialsSimpleProps) {\r\n const [index, setIndex] = useState(0);\r\n const timeoutRef = useRef<NodeJS.Timeout | null>(null);\r\n\r\n useEffect(() => {\r\n timeoutRef.current = setTimeout(() => {\r\n setIndex((prev) => (prev + 1) % testimonials.length);\r\n }, duration);\r\n return () => {\r\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\r\n };\r\n }, [index, testimonials.length, duration]);\r\n\r\n return (\r\n <div className={`flex flex-col items-center justify-center py-16 ${className}`}>\r\n <div className=\"flex w-full max-w-5xl flex-col items-center justify-center px-4\">\r\n <blockquote className=\"mb-8 text-center text-2xl leading-tight font-semibold md:text-4xl transition-all duration-500\">\r\n \"{testimonials[index].quote}\"\r\n </blockquote>\r\n\r\n <div className=\"flex items-center gap-4\">\r\n <img\r\n src={testimonials[index].avatar}\r\n alt={testimonials[index].name}\r\n className=\"h-12 w-12 rounded-full border object-cover\"\r\n />\r\n <div className=\"border-l mx-4 h-8\" />\r\n <div className=\"text-left\">\r\n <div className=\"text-lg font-medium italic\">{testimonials[index].name}</div>\r\n <div className=\"text-muted-foreground text-base\">{testimonials[index].role}</div>\r\n </div>\r\n </div>\r\n\r\n <div className=\"mx-auto mt-8 flex gap-3\">\r\n {testimonials.map((_, i) => (\r\n <span\r\n key={i}\r\n className={`block h-3 rounded-full transition-all duration-400 ${\r\n i === index ? \"w-12 bg-primary\" : \"w-3 bg-muted\"\r\n }`}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default TestimonialsSimple;\r\n","\"use client\";\r\n\r\nimport { useCallback, useEffect, useState } from \"react\";\r\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\r\n\r\ninterface Testimonial {\r\n content: string;\r\n avatar: string;\r\n name: string;\r\n role: string;\r\n}\r\n\r\ninterface TestimonialsGridProps {\r\n title?: string;\r\n description?: string;\r\n testimonials?: Testimonial[];\r\n autoplay?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function TestimonialsGrid({\r\n title = \"What Developers Say\",\r\n description = \"See what developers are saying about their experience.\",\r\n testimonials = [\r\n {\r\n content: \"This has revolutionized how we build user interfaces.\",\r\n avatar: \"https://i.pravatar.cc/150?img=1\",\r\n name: \"Eduardo Calvo\",\r\n role: \"CEO & Founder\",\r\n },\r\n {\r\n content: \"The design system is incredibly well thought out.\",\r\n avatar: \"https://i.pravatar.cc/150?img=2\",\r\n name: \"Drew Cano\",\r\n role: \"Head of Design\",\r\n },\r\n {\r\n content: \"Best UI library I've used. Excellent TypeScript support.\",\r\n avatar: \"https://i.pravatar.cc/150?img=3\",\r\n name: \"Marcus Johnson\",\r\n role: \"Lead Developer\",\r\n },\r\n ],\r\n autoplay = false,\r\n className = \"\",\r\n}: TestimonialsGridProps) {\r\n const [active, setActive] = useState(0);\r\n\r\n const handleNext = useCallback(() => {\r\n setActive((prev) => (prev + 1) % testimonials.length);\r\n }, [testimonials.length]);\r\n\r\n const handlePrev = () => {\r\n setActive((prev) => (prev - 1 + testimonials.length) % testimonials.length);\r\n };\r\n\r\n useEffect(() => {\r\n if (autoplay) {\r\n const interval = setInterval(handleNext, 5000);\r\n return () => clearInterval(interval);\r\n }\r\n }, [autoplay, handleNext]);\r\n\r\n return (\r\n <div className={`py-24 ${className}`}>\r\n <div className=\"container mx-auto max-w-6xl px-6\">\r\n <div className=\"grid grid-cols-1 gap-8 lg:grid-cols-2 lg:gap-12\">\r\n <div className=\"flex flex-col justify-center\">\r\n <h2 className=\"mb-4 text-4xl font-semibold\">{title}</h2>\r\n <p className=\"text-muted-foreground text-lg\">{description}</p>\r\n </div>\r\n\r\n <div className=\"relative flex flex-col items-end\">\r\n <div className=\"mb-4 flex gap-2\">\r\n <button\r\n onClick={handlePrev}\r\n className=\"flex h-8 w-8 items-center justify-center rounded-full border hover:bg-accent\"\r\n >\r\n <ChevronLeft className=\"h-5 w-5\" />\r\n </button>\r\n <button\r\n onClick={handleNext}\r\n className=\"flex h-8 w-8 items-center justify-center rounded-full border hover:bg-accent\"\r\n >\r\n <ChevronRight className=\"h-5 w-5\" />\r\n </button>\r\n </div>\r\n\r\n <div className=\"relative h-full w-full max-w-md\">\r\n {testimonials.map((testimonial, index) => (\r\n <div\r\n key={testimonial.name}\r\n className={`absolute inset-0 transition-all duration-400 ${\r\n index === active ? \"opacity-100 scale-100 z-10\" : \"opacity-0 scale-95 z-0\"\r\n }`}\r\n >\r\n <div className=\"rounded-2xl border px-6 py-6 shadow-lg\">\r\n <p className=\"mb-6 text-lg\">{testimonial.content}</p>\r\n <div className=\"flex items-center gap-3\">\r\n <img\r\n src={testimonial.avatar}\r\n alt={testimonial.name}\r\n className=\"size-8 rounded-full border object-cover\"\r\n />\r\n <div>\r\n <div className=\"font-semibold\">{testimonial.name}</div>\r\n <span className=\"text-muted-foreground text-sm\">{testimonial.role}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default TestimonialsGrid;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { Check } from \"lucide-react\";\r\n\r\ninterface PricingPlan {\r\n name: string;\r\n price: { monthly: number; annually: number } | \"custom\";\r\n description: string;\r\n features: string[];\r\n featured?: boolean;\r\n buttonText?: string;\r\n}\r\n\r\ninterface PricingModernProps {\r\n title?: string;\r\n description?: string;\r\n plans?: PricingPlan[];\r\n className?: string;\r\n}\r\n\r\nexport function PricingModern({\r\n title = \"Choose your perfect plan\",\r\n description = \"Modern pricing plans designed for teams of all sizes.\",\r\n plans = [\r\n {\r\n name: \"Basic\",\r\n price: { monthly: 15, annually: 10 },\r\n description: \"Perfect for startups\",\r\n features: [\"1 Project\", \"Email Support\", \"Core Features\", \"Basic Analytics\"],\r\n },\r\n {\r\n name: \"Pro\",\r\n price: { monthly: 35, annually: 25 },\r\n description: \"Best for teams\",\r\n features: [\"Unlimited Projects\", \"Priority Support\", \"Team Collaboration\", \"Advanced Analytics\"],\r\n featured: true,\r\n },\r\n {\r\n name: \"Enterprise\",\r\n price: \"custom\",\r\n description: \"Tailored solutions\",\r\n features: [\"Everything in Pro\", \"Dedicated Manager\", \"Custom Integrations\", \"SLA & Support\"],\r\n buttonText: \"Contact Sales\",\r\n },\r\n ],\r\n className = \"\",\r\n}: PricingModernProps) {\r\n const [isAnnual, setIsAnnual] = useState(true);\r\n\r\n return (\r\n <section className={`py-16 md:py-32 ${className}`}>\r\n <div className=\"mx-auto max-w-5xl px-6\">\r\n <div className=\"mx-auto max-w-2xl text-center\">\r\n <h2 className=\"text-3xl font-bold md:text-4xl lg:text-5xl\">{title}</h2>\r\n <p className=\"text-muted-foreground mx-auto mt-4 max-w-xl text-lg\">{description}</p>\r\n\r\n <div className=\"my-12\">\r\n <div className=\"relative mx-auto grid w-fit grid-cols-2 rounded-full border p-1\">\r\n <div\r\n className={`pointer-events-none absolute inset-1 w-1/2 rounded-full bg-primary transition-transform duration-500 ${\r\n isAnnual ? \"translate-x-full\" : \"translate-x-0\"\r\n }`}\r\n />\r\n <button\r\n onClick={() => setIsAnnual(false)}\r\n className={`relative h-8 w-24 rounded-full text-sm ${!isAnnual ? \"text-primary-foreground font-medium\" : \"\"}`}\r\n >\r\n Monthly\r\n </button>\r\n <button\r\n onClick={() => setIsAnnual(true)}\r\n className={`relative h-8 w-24 rounded-full text-sm ${isAnnual ? \"text-primary-foreground font-medium\" : \"\"}`}\r\n >\r\n Annually\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className=\"grid grid-cols-1 gap-6 md:grid-cols-3\">\r\n {plans.map((plan) => (\r\n <div\r\n key={plan.name}\r\n className={`relative flex flex-col rounded-2xl border p-8 ${\r\n plan.featured ? \"border-2 border-primary\" : \"\"\r\n }`}\r\n >\r\n {plan.featured && (\r\n <div className=\"absolute top-0 right-0 bg-primary text-primary-foreground rounded-full px-2 py-1 text-xs font-bold m-4\">\r\n Most Popular\r\n </div>\r\n )}\r\n\r\n <h3 className=\"mb-4 text-2xl font-bold\">{plan.name}</h3>\r\n\r\n <div className=\"mb-6\">\r\n <span className=\"text-3xl font-semibold\">\r\n {plan.price === \"custom\"\r\n ? \"Custom\"\r\n : `${isAnnual ? plan.price.annually : plan.price.monthly}€`}\r\n </span>\r\n <span className=\"text-muted-foreground mx-2\">•</span>\r\n <span className=\"text-muted-foreground\">{plan.description}</span>\r\n </div>\r\n\r\n <button className=\"bg-primary text-primary-foreground hover:bg-primary/90 mb-6 h-10 w-full rounded-md px-4 py-2 text-sm font-medium\">\r\n {plan.buttonText || \"Get Started\"}\r\n </button>\r\n\r\n <ul className=\"space-y-3\">\r\n {plan.features.map((feature) => (\r\n <li key={feature} className=\"flex items-center gap-3 text-sm\">\r\n <div className=\"flex h-4 w-4 items-center justify-center rounded-full bg-primary\">\r\n <Check className=\"h-2 w-2 text-primary-foreground\" />\r\n </div>\r\n {feature}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n\r\nexport default PricingModern;\r\n","\"use client\";\r\n\r\ninterface FooterLink {\r\n name: string;\r\n url: string;\r\n}\r\n\r\ninterface FooterSimpleProps {\r\n companyName?: string;\r\n description?: string;\r\n links?: {\r\n product?: FooterLink[];\r\n company?: FooterLink[];\r\n support?: FooterLink[];\r\n };\r\n social?: {\r\n twitter?: string;\r\n linkedin?: string;\r\n github?: string;\r\n discord?: string;\r\n };\r\n copyright?: string;\r\n className?: string;\r\n}\r\n\r\nexport function FooterSimple({\r\n companyName = \"Bynana UI\",\r\n description = \"Build beautiful UIs, effortlessly.\",\r\n links = {\r\n product: [\r\n { name: \"Features\", url: \"#\" },\r\n { name: \"Pricing\", url: \"#\" },\r\n { name: \"Documentation\", url: \"#\" },\r\n ],\r\n company: [\r\n { name: \"About\", url: \"#\" },\r\n { name: \"Blog\", url: \"#\" },\r\n { name: \"Careers\", url: \"#\" },\r\n ],\r\n support: [\r\n { name: \"Help Center\", url: \"#\" },\r\n { name: \"Community\", url: \"#\" },\r\n { name: \"Status\", url: \"#\" },\r\n ],\r\n },\r\n copyright = \"© 2024 Bynana UI. All rights reserved.\",\r\n className = \"\",\r\n}: FooterSimpleProps) {\r\n return (\r\n <footer className={`border-t ${className}`}>\r\n <div className=\"mx-auto max-w-7xl px-6 py-12\">\r\n <div className=\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-5\">\r\n <div className=\"lg:col-span-2\">\r\n <h3 className=\"mb-4 text-2xl font-bold\">{companyName}</h3>\r\n <p className=\"text-muted-foreground mb-6 max-w-md text-sm\">{description}</p>\r\n </div>\r\n\r\n <div className=\"grid grid-cols-1 gap-8 sm:grid-cols-3 lg:col-span-3\">\r\n {links.product && (\r\n <div>\r\n <h4 className=\"mb-4 text-sm font-semibold uppercase tracking-wide\">Product</h4>\r\n <ul className=\"space-y-3\">\r\n {links.product.map((link) => (\r\n <li key={link.name}>\r\n <a href={link.url} className=\"text-muted-foreground hover:text-foreground text-sm\">\r\n {link.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {links.company && (\r\n <div>\r\n <h4 className=\"mb-4 text-sm font-semibold uppercase tracking-wide\">Company</h4>\r\n <ul className=\"space-y-3\">\r\n {links.company.map((link) => (\r\n <li key={link.name}>\r\n <a href={link.url} className=\"text-muted-foreground hover:text-foreground text-sm\">\r\n {link.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {links.support && (\r\n <div>\r\n <h4 className=\"mb-4 text-sm font-semibold uppercase tracking-wide\">Support</h4>\r\n <ul className=\"space-y-3\">\r\n {links.support.map((link) => (\r\n <li key={link.name}>\r\n <a href={link.url} className=\"text-muted-foreground hover:text-foreground text-sm\">\r\n {link.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n\r\n <div className=\"mt-12 border-t pt-8 text-center\">\r\n <p className=\"text-muted-foreground text-sm\">{copyright}</p>\r\n </div>\r\n </div>\r\n </footer>\r\n );\r\n}\r\n\r\nexport default FooterSimple;\r\n","\"use client\";\r\n\r\ninterface FooterLink {\r\n name: string;\r\n url: string;\r\n}\r\n\r\ninterface FooterComplexProps {\r\n companyName?: string;\r\n description?: string;\r\n newsletter?: {\r\n title: string;\r\n description: string;\r\n placeholder: string;\r\n buttonText: string;\r\n };\r\n links?: {\r\n product?: FooterLink[];\r\n company?: FooterLink[];\r\n support?: FooterLink[];\r\n legal?: FooterLink[];\r\n };\r\n copyright?: string;\r\n className?: string;\r\n}\r\n\r\nexport function FooterComplex({\r\n companyName = \"Bynana UI\",\r\n description = \"Build beautiful UIs, effortlessly. The modern way to create stunning interfaces.\",\r\n newsletter = {\r\n title: \"Stay updated\",\r\n description: \"Get the latest news delivered to your inbox.\",\r\n placeholder: \"Enter your email\",\r\n buttonText: \"Subscribe\",\r\n },\r\n links = {\r\n product: [\r\n { name: \"Features\", url: \"#\" },\r\n { name: \"Pricing\", url: \"#\" },\r\n { name: \"Documentation\", url: \"#\" },\r\n ],\r\n company: [\r\n { name: \"About Us\", url: \"#\" },\r\n { name: \"Blog\", url: \"#\" },\r\n { name: \"Careers\", url: \"#\" },\r\n ],\r\n support: [\r\n { name: \"Help Center\", url: \"#\" },\r\n { name: \"Community\", url: \"#\" },\r\n { name: \"Status Page\", url: \"#\" },\r\n ],\r\n legal: [\r\n { name: \"Privacy Policy\", url: \"#\" },\r\n { name: \"Terms of Service\", url: \"#\" },\r\n { name: \"Cookie Policy\", url: \"#\" },\r\n ],\r\n },\r\n copyright = \"© 2024 Bynana UI. All rights reserved.\",\r\n className = \"\",\r\n}: FooterComplexProps) {\r\n return (\r\n <footer className={`border-t ${className}`}>\r\n <div className=\"mx-auto max-w-7xl px-6 py-16\">\r\n <div className=\"grid grid-cols-1 gap-12 lg:grid-cols-12\">\r\n <div className=\"lg:col-span-5\">\r\n <h3 className=\"mb-4 text-2xl font-bold\">{companyName}</h3>\r\n <p className=\"text-muted-foreground mb-8 max-w-md text-sm leading-relaxed\">{description}</p>\r\n\r\n <div className=\"mb-8\">\r\n <h4 className=\"mb-2 text-lg font-semibold\">{newsletter.title}</h4>\r\n <p className=\"text-muted-foreground mb-4 text-sm\">{newsletter.description}</p>\r\n <div className=\"flex gap-2\">\r\n <input\r\n type=\"email\"\r\n placeholder={newsletter.placeholder}\r\n className=\"flex-1 rounded-lg border bg-background px-4 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring\"\r\n />\r\n <button className=\"bg-primary text-primary-foreground hover:bg-primary/90 rounded-lg px-6 py-2 text-sm font-medium\">\r\n {newsletter.buttonText}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className=\"grid grid-cols-2 gap-8 lg:col-span-7 lg:grid-cols-4\">\r\n {links.product && (\r\n <div>\r\n <h4 className=\"mb-4 text-sm font-semibold uppercase tracking-wide\">Product</h4>\r\n <ul className=\"space-y-3\">\r\n {links.product.map((link) => (\r\n <li key={link.name}>\r\n <a href={link.url} className=\"text-muted-foreground hover:text-foreground text-sm\">\r\n {link.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {links.company && (\r\n <div>\r\n <h4 className=\"mb-4 text-sm font-semibold uppercase tracking-wide\">Company</h4>\r\n <ul className=\"space-y-3\">\r\n {links.company.map((link) => (\r\n <li key={link.name}>\r\n <a href={link.url} className=\"text-muted-foreground hover:text-foreground text-sm\">\r\n {link.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {links.support && (\r\n <div>\r\n <h4 className=\"mb-4 text-sm font-semibold uppercase tracking-wide\">Support</h4>\r\n <ul className=\"space-y-3\">\r\n {links.support.map((link) => (\r\n <li key={link.name}>\r\n <a href={link.url} className=\"text-muted-foreground hover:text-foreground text-sm\">\r\n {link.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {links.legal && (\r\n <div>\r\n <h4 className=\"mb-4 text-sm font-semibold uppercase tracking-wide\">Legal</h4>\r\n <ul className=\"space-y-3\">\r\n {links.legal.map((link) => (\r\n <li key={link.name}>\r\n <a href={link.url} className=\"text-muted-foreground hover:text-foreground text-sm\">\r\n {link.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n\r\n <div className=\"mt-12 border-t pt-8 text-center\">\r\n <p className=\"text-muted-foreground text-sm\">{copyright}</p>\r\n </div>\r\n </div>\r\n </footer>\r\n );\r\n}\r\n\r\nexport default FooterComplex;\r\n","\"use client\";\r\n\r\nimport { ReactNode } from \"react\";\r\n\r\ninterface LogoCloudProps {\r\n title?: string;\r\n description?: string;\r\n logos?: Array<{\r\n name: string;\r\n logo: ReactNode;\r\n url?: string;\r\n }>;\r\n className?: string;\r\n}\r\n\r\nexport function LogoCloud({\r\n title = \"Trusted by the world's most innovative teams\",\r\n description = \"Join thousands of developers building with us\",\r\n logos = [],\r\n className = \"\",\r\n}: LogoCloudProps) {\r\n return (\r\n <div className={`overflow-hidden py-20 ${className}`}>\r\n <div className=\"mx-auto max-w-7xl px-6\">\r\n <div className=\"mb-16 text-center\">\r\n <h2 className=\"mb-4 text-2xl font-bold lg:text-3xl\">{title}</h2>\r\n <p className=\"text-muted-foreground text-lg\">{description}</p>\r\n </div>\r\n\r\n <div\r\n className=\"relative overflow-hidden\"\r\n style={{\r\n maskImage:\r\n \"linear-gradient(to right, transparent, black 20%, black 80%, transparent)\",\r\n WebkitMaskImage:\r\n \"linear-gradient(to right, transparent, black 20%, black 80%, transparent)\",\r\n }}\r\n >\r\n <div className=\"flex animate-scroll gap-8\">\r\n {[...logos, ...logos, ...logos].map((logo, index) => (\r\n <a\r\n key={`${logo.name}-${index}`}\r\n href={logo.url}\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n className=\"flex flex-shrink-0 items-center justify-center p-6 transition-all hover:scale-105\"\r\n >\r\n <div className=\"text-4xl hover:scale-110 transition-transform\">{logo.logo}</div>\r\n </a>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <style jsx>{`\r\n @keyframes scroll {\r\n 0% {\r\n transform: translateX(0);\r\n }\r\n 100% {\r\n transform: translateX(-33.333%);\r\n }\r\n }\r\n .animate-scroll {\r\n animation: scroll 25s linear infinite;\r\n }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LogoCloud;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { ChevronDown } from \"lucide-react\";\r\n\r\ninterface FAQ {\r\n question: string;\r\n answer: string;\r\n}\r\n\r\ninterface FaqsAccordionProps {\r\n title?: string;\r\n description?: string;\r\n faqs?: FAQ[];\r\n className?: string;\r\n}\r\n\r\nexport function FaqsAccordion({\r\n title = \"Frequently Asked Questions\",\r\n description = \"Find answers to common questions about our product and services\",\r\n faqs = [\r\n {\r\n question: \"What is Bynana UI?\",\r\n answer:\r\n \"Bynana UI is a modern UI component library that provides beautiful, animated components for building stunning user interfaces.\",\r\n },\r\n {\r\n question: \"How do I get started?\",\r\n answer:\r\n \"Getting started is easy! Simply install the package via npm or yarn, import the components you need, and start building.\",\r\n },\r\n {\r\n question: \"Is it free to use?\",\r\n answer:\r\n \"Yes! Bynana UI is completely free. You can use it in both personal and commercial projects without any restrictions.\",\r\n },\r\n ],\r\n className = \"\",\r\n}: FaqsAccordionProps) {\r\n const [openIndex, setOpenIndex] = useState<number | null>(0);\r\n\r\n const toggleAccordion = (index: number) => {\r\n setOpenIndex(openIndex === index ? null : index);\r\n };\r\n\r\n return (\r\n <section className={`py-20 ${className}`}>\r\n <div className=\"mx-auto max-w-4xl px-6\">\r\n <div className=\"text-center mb-16\">\r\n <h2 className=\"mb-4 text-3xl font-bold lg:text-4xl\">{title}</h2>\r\n <p className=\"text-muted-foreground text-lg max-w-2xl mx-auto\">{description}</p>\r\n </div>\r\n\r\n <div className=\"space-y-4\">\r\n {faqs.map((faq, index) => (\r\n <div\r\n key={index}\r\n className=\"overflow-hidden rounded-2xl border transition-all hover:border-primary/50\"\r\n >\r\n <button\r\n onClick={() => toggleAccordion(index)}\r\n className=\"flex w-full items-center justify-between p-6 text-left hover:bg-accent/50\"\r\n >\r\n <h3 className=\"text-lg font-semibold pr-4\">{faq.question}</h3>\r\n <ChevronDown\r\n className={`h-5 w-5 text-muted-foreground transition-transform duration-300 ${\r\n openIndex === index ? \"rotate-180\" : \"\"\r\n }`}\r\n />\r\n </button>\r\n\r\n <div\r\n className={`overflow-hidden transition-all duration-300 ${\r\n openIndex === index ? \"max-h-96\" : \"max-h-0\"\r\n }`}\r\n >\r\n <div className=\"px-6 pb-6\">\r\n <p className=\"text-muted-foreground leading-relaxed\">{faq.answer}</p>\r\n </div>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n\r\nexport default FaqsAccordion;\r\n","\"use client\";\r\n\r\nimport { useState, ReactNode } from \"react\";\r\n\r\ninterface FAQ {\r\n question: string;\r\n answer: string;\r\n icon?: ReactNode;\r\n}\r\n\r\ninterface FaqCategory {\r\n name: string;\r\n id: string;\r\n faqs: FAQ[];\r\n}\r\n\r\ninterface FaqsGridProps {\r\n title?: string;\r\n description?: string;\r\n categories?: FaqCategory[];\r\n className?: string;\r\n}\r\n\r\nexport function FaqsGrid({\r\n title = \"FAQs\",\r\n description = \"Discover quick and comprehensive answers to common questions.\",\r\n categories = [\r\n {\r\n name: \"General\",\r\n id: \"general\",\r\n faqs: [\r\n {\r\n question: \"How do I install?\",\r\n answer: \"You can install using npm or yarn. Run `npm install bynana-ui` in your project.\",\r\n },\r\n {\r\n question: \"What are the requirements?\",\r\n answer: \"Works with React 16.8+ and supports all modern browsers.\",\r\n },\r\n {\r\n question: \"Is it free to use?\",\r\n answer: \"Yes! Completely free for personal and commercial projects.\",\r\n },\r\n ],\r\n },\r\n {\r\n name: \"Components\",\r\n id: \"components\",\r\n faqs: [\r\n {\r\n question: \"How many components?\",\r\n answer: \"Over 150+ pre-built components including buttons, forms, navigation, and more.\",\r\n },\r\n {\r\n question: \"Can I customize styling?\",\r\n answer: \"Absolutely! All components are fully customizable using CSS variables or Tailwind.\",\r\n },\r\n {\r\n question: \"Are they accessible?\",\r\n answer: \"Yes, all components follow WCAG guidelines with proper ARIA attributes.\",\r\n },\r\n ],\r\n },\r\n ],\r\n className = \"\",\r\n}: FaqsGridProps) {\r\n const [activeTab, setActiveTab] = useState(0);\r\n\r\n return (\r\n <section className={`py-16 md:py-24 ${className}`}>\r\n <div className=\"mx-auto max-w-5xl px-6\">\r\n <div className=\"max-w-lg\">\r\n <h2 className=\"text-4xl font-semibold\">{title}</h2>\r\n <p className=\"text-muted-foreground mt-4 text-lg\">{description}</p>\r\n </div>\r\n\r\n <div className=\"mt-8 md:mt-12\">\r\n <div className=\"flex flex-wrap gap-2 border-b\">\r\n {categories.map((category, index) => (\r\n <button\r\n key={category.id}\r\n onClick={() => setActiveTab(index)}\r\n className={`relative rounded-t-lg px-4 py-2 text-sm font-medium transition-all ${\r\n activeTab === index ? \"text-foreground\" : \"text-muted-foreground hover:text-foreground\"\r\n }`}\r\n >\r\n {category.name}\r\n {activeTab === index && (\r\n <div className=\"absolute right-0 bottom-0 left-0 h-0.5 rounded-t-full bg-primary\" />\r\n )}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n <div className=\"mt-8\">\r\n <dl className=\"grid gap-12 sm:grid-cols-2 lg:grid-cols-3\">\r\n {categories[activeTab].faqs.map((faq, faqIndex) => (\r\n <div key={faqIndex} className=\"space-y-3\">\r\n <dt className=\"font-semibold\">{faq.question}</dt>\r\n <dd className=\"text-muted-foreground\">{faq.answer}</dd>\r\n </div>\r\n ))}\r\n </dl>\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n\r\nexport default FaqsGrid;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\r\n\r\ninterface TeamMember {\r\n name: string;\r\n role: string;\r\n experience: string;\r\n avatar: string;\r\n}\r\n\r\ninterface TeamCarouselProps {\r\n title?: string;\r\n subtitle?: string;\r\n description?: string;\r\n members?: TeamMember[];\r\n className?: string;\r\n}\r\n\r\nexport function TeamCarousel({\r\n title = \"Tech Pioneers\",\r\n subtitle = \"building the future\",\r\n description = \"We bring together brilliant developers and innovators.\",\r\n members = [\r\n {\r\n name: \"Emily Rodriguez\",\r\n role: \"Product Manager\",\r\n experience: \"6+ years\",\r\n avatar: \"https://i.pravatar.cc/160?img=1\",\r\n },\r\n {\r\n name: \"Mollie Hall\",\r\n role: \"CTO\",\r\n experience: \"12+ years\",\r\n avatar: \"https://i.pravatar.cc/160?img=2\",\r\n },\r\n {\r\n name: \"Alec Whitten\",\r\n role: \"UX Researcher\",\r\n experience: \"5+ years\",\r\n avatar: \"https://i.pravatar.cc/160?img=3\",\r\n },\r\n ],\r\n className = \"\",\r\n}: TeamCarouselProps) {\r\n const [currentIndex, setCurrentIndex] = useState(0);\r\n const [isAutoPlaying, setIsAutoPlaying] = useState(true);\r\n const cardsPerView = 3;\r\n\r\n useEffect(() => {\r\n if (!isAutoPlaying) return;\r\n\r\n const interval = setInterval(() => {\r\n setCurrentIndex((prev) => (prev + 1) % Math.max(1, members.length - cardsPerView + 1));\r\n }, 5000);\r\n\r\n return () => clearInterval(interval);\r\n }, [members.length, isAutoPlaying]);\r\n\r\n const nextSlide = () => {\r\n const maxIndex = Math.max(0, members.length - cardsPerView);\r\n if (currentIndex >= maxIndex) return;\r\n setCurrentIndex((prev) => Math.min(prev + 1, maxIndex));\r\n setIsAutoPlaying(false);\r\n setTimeout(() => setIsAutoPlaying(true), 1500);\r\n };\r\n\r\n const prevSlide = () => {\r\n if (currentIndex <= 0) return;\r\n setCurrentIndex((prev) => Math.max(prev - 1, 0));\r\n setIsAutoPlaying(false);\r\n setTimeout(() => setIsAutoPlaying(true), 1500);\r\n };\r\n\r\n return (\r\n <section className={`overflow-hidden py-32 ${className}`}>\r\n <div className=\"mx-auto max-w-5xl px-8 lg:px-0\">\r\n <div>\r\n <h2 className=\"text-5xl font-medium md:text-6xl\">\r\n {title} <br />\r\n <span className=\"text-muted-foreground\">{subtitle}</span>\r\n </h2>\r\n <p className=\"text-muted-foreground mt-6 max-w-md\">{description}</p>\r\n </div>\r\n\r\n <div className=\"relative\">\r\n <div className=\"mt-4 hidden items-center justify-end gap-4 md:flex\">\r\n <button\r\n onClick={prevSlide}\r\n disabled={currentIndex === 0}\r\n className=\"flex h-11 w-11 items-center justify-center rounded-full border hover:bg-accent disabled:opacity-50\"\r\n >\r\n <ChevronLeft className=\"h-5 w-5\" />\r\n </button>\r\n <button\r\n onClick={nextSlide}\r\n disabled={currentIndex >= members.length - cardsPerView}\r\n className=\"flex h-11 w-11 items-center justify-center rounded-full border hover:bg-accent disabled:opacity-50\"\r\n >\r\n <ChevronRight className=\"h-5 w-5\" />\r\n </button>\r\n </div>\r\n\r\n <div className=\"mt-16 overflow-hidden\">\r\n <div\r\n className=\"flex gap-4 transition-transform duration-500\"\r\n style={{ transform: `translateX(-${currentIndex * 304}px)` }}\r\n >\r\n {members.map((member) => (\r\n <div key={member.name} className=\"w-72 flex-shrink-0 rounded-2xl border p-7 text-center\">\r\n <img\r\n src={member.avatar}\r\n alt={member.name}\r\n className=\"mx-auto h-20 w-20 rounded-full border\"\r\n />\r\n <div className=\"mt-6\">\r\n <p className=\"text-lg font-medium\">{member.name}</p>\r\n <p className=\"text-muted-foreground text-sm\">{member.role}</p>\r\n </div>\r\n <div className=\"my-6 h-px bg-border\" />\r\n <p className=\"text-muted-foreground text-sm\">{member.experience}</p>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n\r\nexport default TeamCarousel;\r\n","\"use client\";\r\n\r\nimport { MapPin, Clock, DollarSign, Briefcase } from \"lucide-react\";\r\n\r\ninterface Job {\r\n title: string;\r\n department: string;\r\n location: string;\r\n type: string;\r\n salary?: string;\r\n url?: string;\r\n}\r\n\r\ninterface JobListingProps {\r\n title?: string;\r\n description?: string;\r\n jobs?: Job[];\r\n className?: string;\r\n}\r\n\r\nexport function JobListing({\r\n title = \"Open Positions\",\r\n description = \"Join our team and help build the future of UI development.\",\r\n jobs = [\r\n {\r\n title: \"Senior Frontend Engineer\",\r\n department: \"Engineering\",\r\n location: \"Remote\",\r\n type: \"Full-time\",\r\n salary: \"$120k - $180k\",\r\n url: \"#\",\r\n },\r\n {\r\n title: \"Product Designer\",\r\n department: \"Design\",\r\n location: \"San Francisco, CA\",\r\n type: \"Full-time\",\r\n salary: \"$100k - $150k\",\r\n url: \"#\",\r\n },\r\n {\r\n title: \"Developer Advocate\",\r\n department: \"Marketing\",\r\n location: \"Remote\",\r\n type: \"Full-time\",\r\n salary: \"$90k - $130k\",\r\n url: \"#\",\r\n },\r\n ],\r\n className = \"\",\r\n}: JobListingProps) {\r\n return (\r\n <section className={`py-20 ${className}`}>\r\n <div className=\"mx-auto max-w-4xl px-6\">\r\n <div className=\"text-center mb-12\">\r\n <h2 className=\"mb-4 text-3xl font-bold lg:text-4xl\">{title}</h2>\r\n <p className=\"text-muted-foreground text-lg max-w-2xl mx-auto\">{description}</p>\r\n </div>\r\n\r\n <div className=\"space-y-4\">\r\n {jobs.map((job, index) => (\r\n <a\r\n key={index}\r\n href={job.url}\r\n className=\"block rounded-xl border p-6 transition-all hover:border-primary/50 hover:shadow-md\"\r\n >\r\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\r\n <div>\r\n <h3 className=\"text-xl font-semibold\">{job.title}</h3>\r\n <div className=\"mt-2 flex flex-wrap items-center gap-4 text-sm text-muted-foreground\">\r\n <span className=\"flex items-center gap-1\">\r\n <Briefcase className=\"h-4 w-4\" />\r\n {job.department}\r\n </span>\r\n <span className=\"flex items-center gap-1\">\r\n <MapPin className=\"h-4 w-4\" />\r\n {job.location}\r\n </span>\r\n <span className=\"flex items-center gap-1\">\r\n <Clock className=\"h-4 w-4\" />\r\n {job.type}\r\n </span>\r\n {job.salary && (\r\n <span className=\"flex items-center gap-1\">\r\n <DollarSign className=\"h-4 w-4\" />\r\n {job.salary}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n <button className=\"bg-primary text-primary-foreground hover:bg-primary/90 rounded-md px-4 py-2 text-sm font-medium\">\r\n Apply Now\r\n </button>\r\n </div>\r\n </a>\r\n ))}\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n\r\nexport default JobListing;\r\n","\"use client\";\r\n\r\nimport { useState, useRef, useEffect } from \"react\";\r\nimport { Search, X, Command } from \"lucide-react\";\r\n\r\ninterface SearchResult {\r\n id: string;\r\n title: string;\r\n description?: string;\r\n category?: string;\r\n}\r\n\r\ninterface ElasticSearchProps {\r\n placeholder?: string;\r\n results?: SearchResult[];\r\n onSearch?: (query: string) => void;\r\n onSelect?: (result: SearchResult) => void;\r\n className?: string;\r\n}\r\n\r\nexport function ElasticSearch({\r\n placeholder = \"Search...\",\r\n results = [],\r\n onSearch,\r\n onSelect,\r\n className = \"\",\r\n}: ElasticSearchProps) {\r\n const [query, setQuery] = useState(\"\");\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [selectedIndex, setSelectedIndex] = useState(0);\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n\r\n useEffect(() => {\r\n if (query && onSearch) {\r\n onSearch(query);\r\n }\r\n }, [query, onSearch]);\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n setSelectedIndex((prev) => Math.min(prev + 1, results.length - 1));\r\n } else if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n setSelectedIndex((prev) => Math.max(prev - 1, 0));\r\n } else if (e.key === \"Enter\" && results[selectedIndex]) {\r\n e.preventDefault();\r\n onSelect?.(results[selectedIndex]);\r\n setIsOpen(false);\r\n } else if (e.key === \"Escape\") {\r\n setIsOpen(false);\r\n }\r\n };\r\n\r\n return (\r\n <div className={`relative w-full max-w-lg ${className}`}>\r\n <div className=\"relative\">\r\n <Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\r\n <input\r\n ref={inputRef}\r\n type=\"text\"\r\n value={query}\r\n onChange={(e) => {\r\n setQuery(e.target.value);\r\n setIsOpen(true);\r\n setSelectedIndex(0);\r\n }}\r\n onFocus={() => setIsOpen(true)}\r\n onKeyDown={handleKeyDown}\r\n placeholder={placeholder}\r\n className=\"w-full rounded-lg border bg-background py-2 pl-10 pr-10 text-sm outline-none focus:border-primary focus:ring-2 focus:ring-primary/20\"\r\n />\r\n {query && (\r\n <button\r\n onClick={() => {\r\n setQuery(\"\");\r\n inputRef.current?.focus();\r\n }}\r\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground\"\r\n >\r\n <X className=\"h-4 w-4\" />\r\n </button>\r\n )}\r\n </div>\r\n\r\n {isOpen && results.length > 0 && (\r\n <div className=\"absolute top-full left-0 right-0 mt-2 rounded-lg border bg-background shadow-lg z-50\">\r\n {results.map((result, index) => (\r\n <button\r\n key={result.id}\r\n onClick={() => {\r\n onSelect?.(result);\r\n setIsOpen(false);\r\n }}\r\n className={`w-full px-4 py-3 text-left hover:bg-accent ${\r\n index === selectedIndex ? \"bg-accent\" : \"\"\r\n }`}\r\n >\r\n <div className=\"font-medium\">{result.title}</div>\r\n {result.description && (\r\n <div className=\"text-sm text-muted-foreground\">{result.description}</div>\r\n )}\r\n </button>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ElasticSearch;\r\n","\"use client\";\r\n\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport { Search, Command, ArrowRight } from \"lucide-react\";\r\n\r\ninterface Action {\r\n id: string;\r\n label: string;\r\n shortcut?: string;\r\n icon?: React.ReactNode;\r\n onSelect?: () => void;\r\n}\r\n\r\ninterface ActionSearchBarProps {\r\n placeholder?: string;\r\n actions?: Action[];\r\n onSearch?: (query: string) => void;\r\n className?: string;\r\n}\r\n\r\nexport function ActionSearchBar({\r\n placeholder = \"Type a command or search...\",\r\n actions = [],\r\n onSearch,\r\n className = \"\",\r\n}: ActionSearchBarProps) {\r\n const [query, setQuery] = useState(\"\");\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [selectedIndex, setSelectedIndex] = useState(0);\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n\r\n const filteredActions = actions.filter((action) =>\r\n action.label.toLowerCase().includes(query.toLowerCase())\r\n );\r\n\r\n useEffect(() => {\r\n const handleKeyDown = (e: KeyboardEvent) => {\r\n if ((e.metaKey || e.ctrlKey) && e.key === \"k\") {\r\n e.preventDefault();\r\n setIsOpen(true);\r\n inputRef.current?.focus();\r\n }\r\n };\r\n\r\n document.addEventListener(\"keydown\", handleKeyDown);\r\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\r\n }, []);\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n setSelectedIndex((prev) => Math.min(prev + 1, filteredActions.length - 1));\r\n } else if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n setSelectedIndex((prev) => Math.max(prev - 1, 0));\r\n } else if (e.key === \"Enter\" && filteredActions[selectedIndex]) {\r\n e.preventDefault();\r\n filteredActions[selectedIndex].onSelect?.();\r\n setIsOpen(false);\r\n setQuery(\"\");\r\n } else if (e.key === \"Escape\") {\r\n setIsOpen(false);\r\n }\r\n };\r\n\r\n return (\r\n <div className={`relative w-full max-w-lg ${className}`}>\r\n <div className=\"relative\">\r\n <Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\r\n <input\r\n ref={inputRef}\r\n type=\"text\"\r\n value={query}\r\n onChange={(e) => {\r\n setQuery(e.target.value);\r\n setIsOpen(true);\r\n setSelectedIndex(0);\r\n onSearch?.(e.target.value);\r\n }}\r\n onFocus={() => setIsOpen(true)}\r\n onKeyDown={handleKeyDown}\r\n placeholder={placeholder}\r\n className=\"w-full rounded-lg border bg-background py-2 pl-10 pr-16 text-sm outline-none focus:border-primary focus:ring-2 focus:ring-primary/20\"\r\n />\r\n <div className=\"absolute right-3 top-1/2 -translate-y-1/2 flex items-center gap-1 text-xs text-muted-foreground\">\r\n <Command className=\"h-3 w-3\" />\r\n <span>K</span>\r\n </div>\r\n </div>\r\n\r\n {isOpen && filteredActions.length > 0 && (\r\n <div className=\"absolute top-full left-0 right-0 mt-2 rounded-lg border bg-background shadow-lg z-50 overflow-hidden\">\r\n {filteredActions.map((action, index) => (\r\n <button\r\n key={action.id}\r\n onClick={() => {\r\n action.onSelect?.();\r\n setIsOpen(false);\r\n setQuery(\"\");\r\n }}\r\n className={`w-full px-4 py-3 text-left flex items-center justify-between hover:bg-accent ${\r\n index === selectedIndex ? \"bg-accent\" : \"\"\r\n }`}\r\n >\r\n <div className=\"flex items-center gap-3\">\r\n {action.icon}\r\n <span>{action.label}</span>\r\n </div>\r\n {action.shortcut && (\r\n <span className=\"text-xs text-muted-foreground\">{action.shortcut}</span>\r\n )}\r\n </button>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ActionSearchBar;\r\n","\"use client\";\r\n\r\ninterface AILoadingProps {\r\n text?: string;\r\n className?: string;\r\n}\r\n\r\nexport function AILoading({ text = \"Thinking...\", className = \"\" }: AILoadingProps) {\r\n return (\r\n <div className={`flex items-center gap-3 ${className}`}>\r\n <div className=\"flex gap-1\">\r\n <span\r\n className=\"h-2 w-2 rounded-full bg-primary animate-bounce\"\r\n style={{ animationDelay: \"0ms\" }}\r\n />\r\n <span\r\n className=\"h-2 w-2 rounded-full bg-primary animate-bounce\"\r\n style={{ animationDelay: \"150ms\" }}\r\n />\r\n <span\r\n className=\"h-2 w-2 rounded-full bg-primary animate-bounce\"\r\n style={{ animationDelay: \"300ms\" }}\r\n />\r\n </div>\r\n <span className=\"text-sm text-muted-foreground\">{text}</span>\r\n </div>\r\n );\r\n}\r\n\r\nexport default AILoading;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { Send, Sparkles } from \"lucide-react\";\r\n\r\ninterface AIPromptProps {\r\n title?: string;\r\n placeholder?: string;\r\n suggestions?: string[];\r\n onSubmit?: (message: string) => void;\r\n className?: string;\r\n}\r\n\r\nexport function AIPrompt({\r\n title = \"How can I help you today?\",\r\n placeholder = \"Type your message...\",\r\n suggestions = [\"Write a blog post\", \"Generate code\", \"Explain a concept\", \"Create a summary\"],\r\n onSubmit,\r\n className = \"\",\r\n}: AIPromptProps) {\r\n const [value, setValue] = useState(\"\");\r\n\r\n const handleSubmit = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n if (value.trim() && onSubmit) {\r\n onSubmit(value.trim());\r\n setValue(\"\");\r\n }\r\n };\r\n\r\n const handleSuggestion = (suggestion: string) => {\r\n setValue(suggestion);\r\n if (onSubmit) {\r\n onSubmit(suggestion);\r\n }\r\n };\r\n\r\n return (\r\n <div className={`w-full max-w-2xl mx-auto ${className}`}>\r\n <div className=\"text-center mb-8\">\r\n <div className=\"inline-flex items-center justify-center w-12 h-12 rounded-full bg-primary/10 mb-4\">\r\n <Sparkles className=\"h-6 w-6 text-primary\" />\r\n </div>\r\n <h2 className=\"text-2xl font-bold\">{title}</h2>\r\n </div>\r\n\r\n <form onSubmit={handleSubmit} className=\"relative mb-6\">\r\n <textarea\r\n value={value}\r\n onChange={(e) => setValue(e.target.value)}\r\n placeholder={placeholder}\r\n rows={3}\r\n className=\"w-full rounded-xl border bg-background px-4 py-3 pr-12 text-sm outline-none focus:border-primary focus:ring-2 focus:ring-primary/20 resize-none\"\r\n />\r\n <button\r\n type=\"submit\"\r\n disabled={!value.trim()}\r\n className=\"absolute right-3 bottom-3 rounded-lg bg-primary p-2 text-primary-foreground hover:bg-primary/90 disabled:opacity-50\"\r\n >\r\n <Send className=\"h-4 w-4\" />\r\n </button>\r\n </form>\r\n\r\n <div className=\"flex flex-wrap gap-2 justify-center\">\r\n {suggestions.map((suggestion, index) => (\r\n <button\r\n key={index}\r\n onClick={() => handleSuggestion(suggestion)}\r\n className=\"rounded-full border px-4 py-2 text-sm hover:bg-accent transition-colors\"\r\n >\r\n {suggestion}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default AIPrompt;\r\n","\"use client\";\r\n\r\nimport { useState, useRef, useEffect } from \"react\";\r\nimport { Send, Mic, Paperclip, Sparkles } from \"lucide-react\";\r\n\r\ninterface AIBarProps {\r\n placeholder?: string;\r\n onSubmit?: (message: string) => void;\r\n showMic?: boolean;\r\n showAttach?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function AIBar({\r\n placeholder = \"Ask me anything...\",\r\n onSubmit,\r\n showMic = true,\r\n showAttach = true,\r\n className = \"\",\r\n}: AIBarProps) {\r\n const [value, setValue] = useState(\"\");\r\n const [isFocused, setIsFocused] = useState(false);\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n\r\n const handleSubmit = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n if (value.trim() && onSubmit) {\r\n onSubmit(value.trim());\r\n setValue(\"\");\r\n }\r\n };\r\n\r\n return (\r\n <form\r\n onSubmit={handleSubmit}\r\n className={`relative flex items-center gap-2 rounded-full border bg-background px-4 py-2 transition-all ${\r\n isFocused ? \"border-primary ring-2 ring-primary/20\" : \"\"\r\n } ${className}`}\r\n >\r\n <Sparkles className=\"h-5 w-5 text-primary\" />\r\n\r\n <input\r\n ref={inputRef}\r\n type=\"text\"\r\n value={value}\r\n onChange={(e) => setValue(e.target.value)}\r\n onFocus={() => setIsFocused(true)}\r\n onBlur={() => setIsFocused(false)}\r\n placeholder={placeholder}\r\n className=\"flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground\"\r\n />\r\n\r\n <div className=\"flex items-center gap-1\">\r\n {showAttach && (\r\n <button\r\n type=\"button\"\r\n className=\"rounded-full p-2 hover:bg-accent text-muted-foreground hover:text-foreground\"\r\n >\r\n <Paperclip className=\"h-4 w-4\" />\r\n </button>\r\n )}\r\n\r\n {showMic && (\r\n <button\r\n type=\"button\"\r\n className=\"rounded-full p-2 hover:bg-accent text-muted-foreground hover:text-foreground\"\r\n >\r\n <Mic className=\"h-4 w-4\" />\r\n </button>\r\n )}\r\n\r\n <button\r\n type=\"submit\"\r\n disabled={!value.trim()}\r\n className=\"rounded-full bg-primary p-2 text-primary-foreground hover:bg-primary/90 disabled:opacity-50\"\r\n >\r\n <Send className=\"h-4 w-4\" />\r\n </button>\r\n </div>\r\n </form>\r\n );\r\n}\r\n\r\nexport default AIBar;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState, ReactNode } from \"react\";\r\n\r\ninterface ScrollRevealProps {\r\n children: ReactNode;\r\n direction?: \"up\" | \"down\" | \"left\" | \"right\";\r\n distance?: number;\r\n duration?: number;\r\n delay?: number;\r\n className?: string;\r\n}\r\n\r\nexport function ScrollReveal({\r\n children,\r\n direction = \"up\",\r\n distance = 30,\r\n duration = 0.6,\r\n delay = 0,\r\n className = \"\",\r\n}: ScrollRevealProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [isVisible, setIsVisible] = useState(false);\r\n\r\n useEffect(() => {\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setIsVisible(true);\r\n observer.disconnect();\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n\r\n if (ref.current) {\r\n observer.observe(ref.current);\r\n }\r\n\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n const getTransform = () => {\r\n if (isVisible) return \"translate(0, 0)\";\r\n switch (direction) {\r\n case \"up\":\r\n return `translateY(${distance}px)`;\r\n case \"down\":\r\n return `translateY(-${distance}px)`;\r\n case \"left\":\r\n return `translateX(${distance}px)`;\r\n case \"right\":\r\n return `translateX(-${distance}px)`;\r\n default:\r\n return `translateY(${distance}px)`;\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={className}\r\n style={{\r\n transform: getTransform(),\r\n opacity: isVisible ? 1 : 0,\r\n transition: `transform ${duration}s ease-out ${delay}s, opacity ${duration}s ease-out ${delay}s`,\r\n }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ScrollReveal;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState, ReactNode } from \"react\";\r\n\r\ninterface ScrollFloatProps {\r\n children: ReactNode;\r\n offset?: number;\r\n duration?: number;\r\n className?: string;\r\n}\r\n\r\nexport function ScrollFloat({\r\n children,\r\n offset = 50,\r\n duration = 0.6,\r\n className = \"\",\r\n}: ScrollFloatProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [isVisible, setIsVisible] = useState(false);\r\n\r\n useEffect(() => {\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setIsVisible(true);\r\n observer.disconnect();\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n\r\n if (ref.current) {\r\n observer.observe(ref.current);\r\n }\r\n\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={className}\r\n style={{\r\n transform: isVisible ? \"translateY(0)\" : `translateY(${offset}px)`,\r\n opacity: isVisible ? 1 : 0,\r\n transition: `transform ${duration}s ease-out, opacity ${duration}s ease-out`,\r\n }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ScrollFloat;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState, ReactNode } from \"react\";\r\n\r\ninterface ScrollStackProps {\r\n children: ReactNode[];\r\n stagger?: number;\r\n className?: string;\r\n}\r\n\r\nexport function ScrollStack({ children, stagger = 0.1, className = \"\" }: ScrollStackProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [isVisible, setIsVisible] = useState(false);\r\n\r\n useEffect(() => {\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setIsVisible(true);\r\n observer.disconnect();\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n\r\n if (ref.current) {\r\n observer.observe(ref.current);\r\n }\r\n\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n return (\r\n <div ref={ref} className={className}>\r\n {children.map((child, index) => (\r\n <div\r\n key={index}\r\n style={{\r\n transform: isVisible ? \"translateY(0)\" : \"translateY(30px)\",\r\n opacity: isVisible ? 1 : 0,\r\n transition: `transform 0.6s ease-out ${index * stagger}s, opacity 0.6s ease-out ${index * stagger}s`,\r\n }}\r\n >\r\n {child}\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ScrollStack;\r\n"]}