bynana-ui 1.6.2 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/action-search-bar/index.js +17 -0
- package/dist/action-search-bar/index.js.map +1 -0
- package/dist/action-search-bar/index.mjs +17 -0
- package/dist/action-search-bar/index.mjs.map +1 -0
- package/dist/ai-bar/index.js +19 -0
- package/dist/ai-bar/index.js.map +1 -0
- package/dist/ai-bar/index.mjs +19 -0
- package/dist/ai-bar/index.mjs.map +1 -0
- package/dist/ai-loading/index.js +2 -0
- package/dist/ai-loading/index.js.map +1 -0
- package/dist/ai-loading/index.mjs +2 -0
- package/dist/ai-loading/index.mjs.map +1 -0
- package/dist/ai-prompt/index.js +17 -0
- package/dist/ai-prompt/index.js.map +1 -0
- package/dist/ai-prompt/index.mjs +17 -0
- package/dist/ai-prompt/index.mjs.map +1 -0
- package/dist/ai-text-loading/index.js +2 -0
- package/dist/ai-text-loading/index.js.map +1 -0
- package/dist/ai-text-loading/index.mjs +2 -0
- package/dist/ai-text-loading/index.mjs.map +1 -0
- package/dist/ai-voice/index.js +3 -0
- package/dist/ai-voice/index.js.map +1 -0
- package/dist/ai-voice/index.mjs +3 -0
- package/dist/ai-voice/index.mjs.map +1 -0
- package/dist/aurora/index.js +2 -0
- package/dist/aurora/index.js.map +1 -0
- package/dist/aurora/index.mjs +2 -0
- package/dist/aurora/index.mjs.map +1 -0
- package/dist/background-paths/index.js +2 -0
- package/dist/background-paths/index.js.map +1 -0
- package/dist/background-paths/index.mjs +2 -0
- package/dist/background-paths/index.mjs.map +1 -0
- package/dist/elastic-search/index.js +17 -0
- package/dist/elastic-search/index.js.map +1 -0
- package/dist/elastic-search/index.mjs +17 -0
- package/dist/elastic-search/index.mjs.map +1 -0
- package/dist/faqs-accordion/index.js +16 -0
- package/dist/faqs-accordion/index.js.map +1 -0
- package/dist/faqs-accordion/index.mjs +16 -0
- package/dist/faqs-accordion/index.mjs.map +1 -0
- package/dist/faqs-grid/index.js +2 -0
- package/dist/faqs-grid/index.js.map +1 -0
- package/dist/faqs-grid/index.mjs +2 -0
- package/dist/faqs-grid/index.mjs.map +1 -0
- package/dist/floating-paths/index.js +2 -0
- package/dist/floating-paths/index.js.map +1 -0
- package/dist/floating-paths/index.mjs +2 -0
- package/dist/floating-paths/index.mjs.map +1 -0
- package/dist/folder/index.js +2 -0
- package/dist/folder/index.js.map +1 -0
- package/dist/folder/index.mjs +2 -0
- package/dist/folder/index.mjs.map +1 -0
- package/dist/footer-complex/index.js +2 -0
- package/dist/footer-complex/index.js.map +1 -0
- package/dist/footer-complex/index.mjs +2 -0
- package/dist/footer-complex/index.mjs.map +1 -0
- package/dist/footer-simple/index.js +2 -0
- package/dist/footer-simple/index.js.map +1 -0
- package/dist/footer-simple/index.mjs +2 -0
- package/dist/footer-simple/index.mjs.map +1 -0
- package/dist/glare-hover/index.js +32 -0
- package/dist/glare-hover/index.js.map +1 -0
- package/dist/glare-hover/index.mjs +32 -0
- package/dist/glare-hover/index.mjs.map +1 -0
- package/dist/hero-grid/index.js +16 -0
- package/dist/hero-grid/index.js.map +1 -0
- package/dist/hero-grid/index.mjs +16 -0
- package/dist/hero-grid/index.mjs.map +1 -0
- package/dist/hero-showcase/index.js +17 -0
- package/dist/hero-showcase/index.js.map +1 -0
- package/dist/hero-showcase/index.mjs +17 -0
- package/dist/hero-showcase/index.mjs.map +1 -0
- package/dist/index.js +85 -13
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +85 -13
- package/dist/index.mjs.map +1 -1
- package/dist/job-listing/index.js +19 -0
- package/dist/job-listing/index.js.map +1 -0
- package/dist/job-listing/index.mjs +19 -0
- package/dist/job-listing/index.mjs.map +1 -0
- package/dist/logo-cloud/index.js +14 -0
- package/dist/logo-cloud/index.js.map +1 -0
- package/dist/logo-cloud/index.mjs +14 -0
- package/dist/logo-cloud/index.mjs.map +1 -0
- package/dist/logo-loop/index.js +2 -0
- package/dist/logo-loop/index.js.map +1 -0
- package/dist/logo-loop/index.mjs +2 -0
- package/dist/logo-loop/index.mjs.map +1 -0
- package/dist/magnet/index.js +2 -0
- package/dist/magnet/index.js.map +1 -0
- package/dist/magnet/index.mjs +2 -0
- package/dist/magnet/index.mjs.map +1 -0
- package/dist/magnet-lines/index.js +2 -0
- package/dist/magnet-lines/index.js.map +1 -0
- package/dist/magnet-lines/index.mjs +2 -0
- package/dist/magnet-lines/index.mjs.map +1 -0
- package/dist/pricing-modern/index.js +16 -0
- package/dist/pricing-modern/index.js.map +1 -0
- package/dist/pricing-modern/index.mjs +16 -0
- package/dist/pricing-modern/index.mjs.map +1 -0
- package/dist/scroll-float/index.js +2 -0
- package/dist/scroll-float/index.js.map +1 -0
- package/dist/scroll-float/index.mjs +2 -0
- package/dist/scroll-float/index.mjs.map +1 -0
- package/dist/scroll-reveal/index.js +2 -0
- package/dist/scroll-reveal/index.js.map +1 -0
- package/dist/scroll-reveal/index.mjs +2 -0
- package/dist/scroll-reveal/index.mjs.map +1 -0
- package/dist/scroll-stack/index.js +2 -0
- package/dist/scroll-stack/index.js.map +1 -0
- package/dist/scroll-stack/index.mjs +2 -0
- package/dist/scroll-stack/index.mjs.map +1 -0
- package/dist/squares/index.js +2 -0
- package/dist/squares/index.js.map +1 -0
- package/dist/squares/index.mjs +2 -0
- package/dist/squares/index.mjs.map +1 -0
- package/dist/team-carousel/index.js +17 -0
- package/dist/team-carousel/index.js.map +1 -0
- package/dist/team-carousel/index.mjs +17 -0
- package/dist/team-carousel/index.mjs.map +1 -0
- package/dist/team-selector/index.js +3 -0
- package/dist/team-selector/index.js.map +1 -0
- package/dist/team-selector/index.mjs +3 -0
- package/dist/team-selector/index.mjs.map +1 -0
- package/dist/testimonials-grid/index.js +17 -0
- package/dist/testimonials-grid/index.js.map +1 -0
- package/dist/testimonials-grid/index.mjs +17 -0
- package/dist/testimonials-grid/index.mjs.map +1 -0
- package/dist/testimonials-simple/index.js +3 -0
- package/dist/testimonials-simple/index.js.map +1 -0
- package/dist/testimonials-simple/index.mjs +3 -0
- package/dist/testimonials-simple/index.mjs.map +1 -0
- package/dist/testimonials-stars/index.js +3 -0
- package/dist/testimonials-stars/index.js.map +1 -0
- package/dist/testimonials-stars/index.mjs +3 -0
- package/dist/testimonials-stars/index.mjs.map +1 -0
- package/dist/text-type/index.js +2 -0
- package/dist/text-type/index.js.map +1 -0
- package/dist/text-type/index.mjs +2 -0
- package/dist/text-type/index.mjs.map +1 -0
- package/dist/threads/index.js +2 -0
- package/dist/threads/index.js.map +1 -0
- package/dist/threads/index.mjs +2 -0
- package/dist/threads/index.mjs.map +1 -0
- package/dist/tooltip-interactive/index.js +2 -0
- package/dist/tooltip-interactive/index.js.map +1 -0
- package/dist/tooltip-interactive/index.mjs +2 -0
- package/dist/tooltip-interactive/index.mjs.map +1 -0
- package/dist/tooltip-magnetic/index.js +2 -0
- package/dist/tooltip-magnetic/index.js.map +1 -0
- package/dist/tooltip-magnetic/index.mjs +2 -0
- package/dist/tooltip-magnetic/index.mjs.map +1 -0
- package/dist/tooltip-rich/index.js +2 -0
- package/dist/tooltip-rich/index.js.map +1 -0
- package/dist/tooltip-rich/index.mjs +2 -0
- package/dist/tooltip-rich/index.mjs.map +1 -0
- package/dist/waves/index.js +2 -0
- package/dist/waves/index.js.map +1 -0
- package/dist/waves/index.mjs +2 -0
- package/dist/waves/index.mjs.map +1 -0
- package/package.json +41 -2
package/dist/index.mjs.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.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ShineButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function ShineButton({ children, className, ...props }: ShineButtonProps) {\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden px-6 py-3 rounded-xl font-medium\",\r\n \"bg-zinc-900 text-white hover:bg-zinc-800\",\r\n \"dark:bg-zinc-800 dark:hover:bg-zinc-700 dark:text-white\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span\r\n className={cn(\r\n \"absolute inset-0 overflow-hidden rounded-[inherit]\",\r\n \"before:absolute before:inset-0\",\r\n \"before:-translate-x-full\",\r\n \"before:animate-shimmer\",\r\n \"before:bg-gradient-to-r\",\r\n \"before:from-transparent before:via-white/40 before:to-transparent\",\r\n \"before:skew-x-[-20deg]\"\r\n )}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default ShineButton;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RippleButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function RippleButton({ children, className, onClick, ...props }: RippleButtonProps) {\r\n const [ripples, setRipples] = useState<Array<{ x: number; y: number; id: number }>>([]);\r\n\r\n function handleClick(e: React.MouseEvent<HTMLButtonElement>) {\r\n const button = e.currentTarget;\r\n const rect = button.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n const newRipple = { x, y, id: Date.now() };\r\n\r\n setRipples((prev) => [...prev, newRipple]);\r\n setTimeout(() => {\r\n setRipples((prev) => prev.filter((r) => r.id !== newRipple.id));\r\n }, 1000);\r\n\r\n onClick?.(e);\r\n }\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden px-6 py-3 rounded-xl font-medium\",\r\n \"bg-zinc-900 text-white hover:bg-zinc-800\",\r\n \"dark:bg-zinc-100 dark:text-black dark:hover:bg-zinc-200\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n onClick={handleClick}\r\n {...props}\r\n >\r\n <AnimatePresence>\r\n {ripples.map((ripple) => (\r\n <motion.span\r\n key={ripple.id}\r\n className=\"absolute rounded-full pointer-events-none border-2 border-white/50 dark:border-black/50\"\r\n style={{\r\n left: ripple.x,\r\n top: ripple.y,\r\n transform: \"translate(-50%, -50%)\",\r\n }}\r\n initial={{ width: 0, height: 0, opacity: 0.9 }}\r\n animate={{ width: 500, height: 500, opacity: 0 }}\r\n exit={{ opacity: 0 }}\r\n transition={{ duration: 1, ease: [0.4, 0, 0.2, 1] }}\r\n />\r\n ))}\r\n </AnimatePresence>\r\n <span className=\"relative z-10\">{children}</span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default RippleButton;\r\n","\"use client\";\r\n\r\nimport React, { useRef, useState } from \"react\";\r\nimport { motion, useMotionValue, useSpring } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MagneticButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n strength?: number;\r\n radius?: number;\r\n}\r\n\r\nexport function MagneticButton({\r\n children,\r\n className,\r\n strength = 0.5,\r\n radius = 200,\r\n ...props\r\n}: MagneticButtonProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n const x = useMotionValue(0);\r\n const y = useMotionValue(0);\r\n\r\n const springConfig = { damping: 20, stiffness: 300, mass: 0.5 };\r\n const xSpring = useSpring(x, springConfig);\r\n const ySpring = useSpring(y, springConfig);\r\n\r\n const handleMouseMove = (e: React.MouseEvent) => {\r\n if (!ref.current) return;\r\n const rect = ref.current.getBoundingClientRect();\r\n const centerX = rect.left + rect.width / 2;\r\n const centerY = rect.top + rect.height / 2;\r\n const distanceX = e.clientX - centerX;\r\n const distanceY = e.clientY - centerY;\r\n const distance = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\r\n\r\n if (distance < radius) {\r\n const factor = 1 - distance / radius;\r\n x.set(distanceX * strength * factor);\r\n y.set(distanceY * strength * factor);\r\n }\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n setIsHovered(false);\r\n x.set(0);\r\n y.set(0);\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className=\"relative inline-flex items-center justify-center\"\r\n onMouseMove={handleMouseMove}\r\n onMouseLeave={handleMouseLeave}\r\n onMouseEnter={() => setIsHovered(true)}\r\n style={{ padding: radius / 2, margin: -radius / 2 }}\r\n >\r\n <motion.div style={{ x: xSpring, y: ySpring }}>\r\n <button\r\n className={cn(\r\n \"px-6 py-3 rounded-xl font-medium\",\r\n \"bg-zinc-900 text-white hover:bg-zinc-800\",\r\n \"dark:bg-zinc-100 dark:text-black dark:hover:bg-zinc-200\",\r\n \"transition-shadow duration-300\",\r\n isHovered && \"shadow-lg\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default MagneticButton;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BounceButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function BounceButton({ children, className, onClick, ...props }: BounceButtonProps) {\r\n const [isBouncing, setIsBouncing] = useState(false);\r\n\r\n function handleClick(e: React.MouseEvent<HTMLButtonElement>) {\r\n setIsBouncing(true);\r\n setTimeout(() => setIsBouncing(false), 1500);\r\n onClick?.(e);\r\n }\r\n\r\n return (\r\n <div className=\"relative inline-block\">\r\n <motion.div\r\n className=\"absolute -bottom-2 left-1/2 w-16 h-2 bg-black/20 rounded-full blur-sm\"\r\n animate={isBouncing ? {\r\n scaleX: [1, 0.8, 1.2, 0.9, 1.1, 0.95, 1],\r\n opacity: [0.3, 0.6, 0.2, 0.5, 0.3, 0.4, 0.3],\r\n } : {}}\r\n style={{ x: \"-50%\" }}\r\n transition={{ duration: 1.5, ease: \"easeOut\" }}\r\n />\r\n\r\n <motion.div\r\n animate={isBouncing ? {\r\n y: [0, -40, -20, -35, -10, -25, -5, -15, 0],\r\n rotate: [0, -5, 2, -3, 1, -2, 0.5, -1, 0],\r\n } : {}}\r\n transition={{\r\n duration: 1.5,\r\n ease: \"easeOut\",\r\n times: [0, 0.2, 0.35, 0.5, 0.65, 0.75, 0.85, 0.95, 1],\r\n }}\r\n whileHover={!isBouncing ? { y: [0, -8, 0] } : {}}\r\n >\r\n <button\r\n className={cn(\r\n \"px-6 py-3 rounded-xl font-medium\",\r\n \"bg-orange-500 hover:bg-orange-600 text-white\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n onClick={handleClick}\r\n disabled={isBouncing}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default BounceButton;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlowButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n glowColor?: string;\r\n}\r\n\r\nexport function GlowButton({\r\n children,\r\n className,\r\n glowColor = \"rgba(59, 130, 246, 0.8)\",\r\n ...props\r\n}: GlowButtonProps) {\r\n const [isGlowing, setIsGlowing] = useState(false);\r\n\r\n return (\r\n <motion.div\r\n className=\"relative inline-block\"\r\n onMouseEnter={() => setIsGlowing(true)}\r\n onMouseLeave={() => setIsGlowing(false)}\r\n animate={{\r\n filter: isGlowing\r\n ? [\r\n `drop-shadow(0 0 10px ${glowColor})`,\r\n `drop-shadow(0 0 25px ${glowColor})`,\r\n `drop-shadow(0 0 10px ${glowColor})`,\r\n ]\r\n : \"drop-shadow(0 0 0px transparent)\",\r\n }}\r\n transition={{\r\n duration: isGlowing ? 1.5 : 0.3,\r\n repeat: isGlowing ? Infinity : 0,\r\n }}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 rounded-xl\"\r\n animate={isGlowing ? {\r\n boxShadow: [\r\n `0 0 20px ${glowColor}`,\r\n `0 0 40px ${glowColor}`,\r\n `0 0 20px ${glowColor}`,\r\n ],\r\n scale: [1, 1.05, 1],\r\n } : {\r\n boxShadow: \"0 0 0px transparent\",\r\n scale: 1,\r\n }}\r\n transition={{\r\n duration: 2,\r\n repeat: isGlowing ? Infinity : 0,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n\r\n <button\r\n className={cn(\r\n \"relative px-6 py-3 rounded-xl font-medium\",\r\n \"bg-blue-600 hover:bg-blue-700 text-white\",\r\n \"transition-all duration-300\",\r\n isGlowing && \"bg-blue-500\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default GlowButton;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface PulseButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n pulseColor?: string;\r\n}\r\n\r\nexport function PulseButton({\r\n children,\r\n className,\r\n pulseColor = \"rgba(239, 68, 68, 0.5)\",\r\n ...props\r\n}: PulseButtonProps) {\r\n return (\r\n <div className=\"relative inline-block\">\r\n <motion.div\r\n className=\"absolute inset-0 rounded-xl\"\r\n style={{ backgroundColor: pulseColor }}\r\n animate={{\r\n scale: [1, 1.3, 1, 1.2, 1],\r\n opacity: [0.6, 0, 0.6, 0, 0.6],\r\n }}\r\n transition={{\r\n duration: 1.2,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n times: [0, 0.2, 0.4, 0.6, 1],\r\n }}\r\n />\r\n\r\n <motion.div\r\n className=\"absolute inset-0 rounded-xl\"\r\n style={{ backgroundColor: pulseColor }}\r\n animate={{\r\n scale: [1, 1.5, 1, 1.4, 1],\r\n opacity: [0.4, 0, 0.4, 0, 0.4],\r\n }}\r\n transition={{\r\n duration: 1.2,\r\n delay: 0.1,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n times: [0, 0.2, 0.4, 0.6, 1],\r\n }}\r\n />\r\n\r\n <motion.div\r\n animate={{\r\n scale: [1, 1.05, 1, 1.03, 1],\r\n }}\r\n transition={{\r\n duration: 1.2,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n times: [0, 0.2, 0.4, 0.6, 1],\r\n }}\r\n >\r\n <button\r\n className={cn(\r\n \"relative px-6 py-3 rounded-xl font-medium\",\r\n \"bg-red-500 hover:bg-red-600 text-white\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default PulseButton;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface NeonButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n color?: \"pink\" | \"cyan\" | \"green\" | \"purple\" | \"orange\";\r\n size?: \"sm\" | \"default\" | \"lg\";\r\n}\r\n\r\nconst colorVariants = {\r\n pink: {\r\n border: \"border-pink-500\",\r\n text: \"text-pink-400\",\r\n shadow: \"shadow-pink-500/50\",\r\n glow: \"rgba(236, 72, 153, 0.6)\",\r\n bg: \"hover:bg-pink-500/10\",\r\n },\r\n cyan: {\r\n border: \"border-cyan-500\",\r\n text: \"text-cyan-400\",\r\n shadow: \"shadow-cyan-500/50\",\r\n glow: \"rgba(6, 182, 212, 0.6)\",\r\n bg: \"hover:bg-cyan-500/10\",\r\n },\r\n green: {\r\n border: \"border-green-500\",\r\n text: \"text-green-400\",\r\n shadow: \"shadow-green-500/50\",\r\n glow: \"rgba(34, 197, 94, 0.6)\",\r\n bg: \"hover:bg-green-500/10\",\r\n },\r\n purple: {\r\n border: \"border-purple-500\",\r\n text: \"text-purple-400\",\r\n shadow: \"shadow-purple-500/50\",\r\n glow: \"rgba(168, 85, 247, 0.6)\",\r\n bg: \"hover:bg-purple-500/10\",\r\n },\r\n orange: {\r\n border: \"border-orange-500\",\r\n text: \"text-orange-400\",\r\n shadow: \"shadow-orange-500/50\",\r\n glow: \"rgba(249, 115, 22, 0.6)\",\r\n bg: \"hover:bg-orange-500/10\",\r\n },\r\n};\r\n\r\nconst sizeVariants = {\r\n sm: \"h-8 px-3 text-xs\",\r\n default: \"h-10 px-6 text-sm\",\r\n lg: \"h-12 px-8 text-base\",\r\n};\r\n\r\nexport function NeonButton({\r\n children,\r\n className,\r\n color = \"cyan\",\r\n size = \"default\",\r\n ...props\r\n}: NeonButtonProps) {\r\n const colors = colorVariants[color];\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative inline-flex items-center justify-center\",\r\n \"font-semibold tracking-wide uppercase\",\r\n \"border-2 rounded-lg\",\r\n \"bg-transparent\",\r\n \"transition-colors duration-200\",\r\n colors.border,\r\n colors.text,\r\n colors.bg,\r\n sizeVariants[size],\r\n className\r\n )}\r\n whileHover={{\r\n boxShadow: `0 0 20px ${colors.glow}, 0 0 40px ${colors.glow}, 0 0 60px ${colors.glow}`,\r\n }}\r\n whileTap={{ scale: 0.98 }}\r\n transition={{ duration: 0.2 }}\r\n {...props}\r\n >\r\n <motion.span\r\n className={cn(\"absolute inset-0 rounded-lg opacity-0\", colors.border)}\r\n animate={{ opacity: [0.5, 1, 0.5] }}\r\n transition={{ duration: 2, repeat: Infinity, ease: \"easeInOut\" }}\r\n style={{ boxShadow: `inset 0 0 10px ${colors.glow}` }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default NeonButton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LiquidButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"outline\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function LiquidButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n onClick,\r\n ...props\r\n}: LiquidButtonProps) {\r\n const [isFilling, setIsFilling] = useState(false);\r\n\r\n function handleClick(e: React.MouseEvent<HTMLButtonElement>) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setIsFilling(true);\r\n setTimeout(() => setIsFilling(false), 800);\r\n if (onClick) onClick(e);\r\n }\r\n\r\n const sizeClasses = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\"\r\n };\r\n\r\n const variantClasses = {\r\n primary: \"bg-zinc-900 text-white border-zinc-900 dark:bg-white dark:text-zinc-900 dark:border-white\",\r\n secondary: \"bg-zinc-100 text-zinc-900 border-zinc-200 dark:bg-zinc-800 dark:text-white dark:border-zinc-700\",\r\n outline: \"bg-transparent text-zinc-900 border-zinc-300 dark:text-white dark:border-zinc-600\"\r\n };\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-medium border-2 transition-colors\",\r\n sizeClasses[size],\r\n variantClasses[variant],\r\n className\r\n )}\r\n onClick={handleClick}\r\n {...props}\r\n >\r\n <AnimatePresence>\r\n {isFilling && (\r\n <motion.div\r\n key=\"liquid-fill\"\r\n className={cn(\r\n \"absolute inset-0 origin-bottom\",\r\n variant === \"primary\" ? \"bg-blue-500 dark:bg-blue-400\" : \"bg-zinc-900 dark:bg-white\"\r\n )}\r\n initial={{ scaleY: 0 }}\r\n animate={{ scaleY: 1 }}\r\n exit={{ scaleY: 0, transition: { duration: 0.3 } }}\r\n transition={{ duration: 0.5, ease: [0.4, 0, 0.2, 1] }}\r\n style={{ transformOrigin: \"bottom\" }}\r\n />\r\n )}\r\n </AnimatePresence>\r\n \r\n <AnimatePresence>\r\n {isFilling && (\r\n <>\r\n {[...Array(5)].map((_, i) => (\r\n <motion.div\r\n key={i}\r\n className=\"absolute w-1.5 h-1.5 bg-white/60 rounded-full\"\r\n style={{ left: `${20 + i * 15}%`, bottom: \"10%\" }}\r\n initial={{ y: 0, opacity: 0, scale: 0 }}\r\n animate={{ y: -60, opacity: [0, 1, 0], scale: [0, 1, 0.5] }}\r\n transition={{ duration: 0.6, delay: i * 0.08, ease: \"easeOut\" }}\r\n />\r\n ))}\r\n </>\r\n )}\r\n </AnimatePresence>\r\n\r\n <span className={cn(\r\n \"relative flex items-center justify-center gap-2 transition-colors duration-200 z-10\",\r\n isFilling && (variant === \"outline\" || variant === \"secondary\" ? \"text-white dark:text-zinc-900\" : \"text-white\")\r\n )}>\r\n {children}\r\n </span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default LiquidButton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SlideButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"outline\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n slideText?: string;\r\n}\r\n\r\nexport function SlideButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n slideText = \"Go!\",\r\n onClick,\r\n ...props\r\n}: SlideButtonProps) {\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n const sizeClasses = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\"\r\n };\r\n\r\n const variantClasses = {\r\n primary: \"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900\",\r\n secondary: \"bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-white\",\r\n outline: \"bg-transparent text-zinc-900 border-2 border-zinc-300 dark:text-white dark:border-zinc-600\"\r\n };\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-medium transition-all\",\r\n sizeClasses[size],\r\n variantClasses[variant],\r\n className\r\n )}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n onClick={onClick}\r\n {...props}\r\n >\r\n <motion.div\r\n className={cn(\r\n \"absolute inset-0\",\r\n variant === \"primary\" ? \"bg-blue-600 dark:bg-blue-500\" : \"bg-zinc-900 dark:bg-white\"\r\n )}\r\n initial={{ x: \"-100%\" }}\r\n animate={{ x: isHovered ? \"0%\" : \"-100%\" }}\r\n transition={{ duration: 0.3, ease: \"easeInOut\" }}\r\n />\r\n \r\n <motion.span\r\n className=\"relative flex items-center justify-center gap-2 z-10\"\r\n animate={{ x: isHovered ? 20 : 0, opacity: isHovered ? 0 : 1 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {children}\r\n </motion.span>\r\n \r\n <motion.span\r\n className={cn(\r\n \"absolute inset-0 flex items-center justify-center gap-2 z-10\",\r\n variant === \"outline\" || variant === \"secondary\" ? \"text-white dark:text-zinc-900\" : \"text-white\"\r\n )}\r\n initial={{ x: -20, opacity: 0 }}\r\n animate={{ x: isHovered ? 0 : -20, opacity: isHovered ? 1 : 0 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {slideText}\r\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M14 5l7 7m0 0l-7 7m7-7H3\" />\r\n </svg>\r\n </motion.span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default SlideButton;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GradientButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"sunset\" | \"ocean\" | \"forest\" | \"purple\" | \"fire\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst gradients = {\r\n sunset: \"from-orange-500 via-pink-500 to-purple-500\",\r\n ocean: \"from-cyan-500 via-blue-500 to-purple-500\",\r\n forest: \"from-green-500 via-emerald-500 to-teal-500\",\r\n purple: \"from-purple-500 via-violet-500 to-indigo-500\",\r\n fire: \"from-yellow-500 via-orange-500 to-red-500\",\r\n};\r\n\r\nconst sizes = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\",\r\n};\r\n\r\nexport function GradientButton({\r\n children,\r\n className,\r\n variant = \"ocean\",\r\n size = \"md\",\r\n ...props\r\n}: GradientButtonProps) {\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-semibold text-white\",\r\n \"bg-gradient-to-r\",\r\n gradients[variant],\r\n sizes[size],\r\n className\r\n )}\r\n whileHover={{ scale: 1.02 }}\r\n whileTap={{ scale: 0.98 }}\r\n {...props}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 bg-gradient-to-r from-white/0 via-white/25 to-white/0\"\r\n initial={{ x: \"-100%\" }}\r\n whileHover={{ x: \"100%\" }}\r\n transition={{ duration: 0.5 }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default GradientButton;\r\n","\"use client\";\r\n\r\nimport { useState, useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HoldButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n holdDuration?: number;\r\n onHoldComplete?: () => void;\r\n variant?: \"primary\" | \"danger\" | \"success\";\r\n}\r\n\r\nexport function HoldButton({\r\n children,\r\n className,\r\n holdDuration = 1000,\r\n onHoldComplete,\r\n variant = \"primary\",\r\n ...props\r\n}: HoldButtonProps) {\r\n const [progress, setProgress] = useState(0);\r\n const [isHolding, setIsHolding] = useState(false);\r\n const intervalRef = useRef<NodeJS.Timeout | null>(null);\r\n\r\n const variants = {\r\n primary: \"bg-zinc-900 dark:bg-white\",\r\n danger: \"bg-red-500\",\r\n success: \"bg-green-500\",\r\n };\r\n\r\n const progressColors = {\r\n primary: \"bg-blue-500\",\r\n danger: \"bg-red-700\",\r\n success: \"bg-green-700\",\r\n };\r\n\r\n const startHold = () => {\r\n setIsHolding(true);\r\n const startTime = Date.now();\r\n \r\n intervalRef.current = setInterval(() => {\r\n const elapsed = Date.now() - startTime;\r\n const newProgress = Math.min((elapsed / holdDuration) * 100, 100);\r\n setProgress(newProgress);\r\n \r\n if (newProgress >= 100) {\r\n stopHold();\r\n onHoldComplete?.();\r\n }\r\n }, 16);\r\n };\r\n\r\n const stopHold = () => {\r\n setIsHolding(false);\r\n setProgress(0);\r\n if (intervalRef.current) {\r\n clearInterval(intervalRef.current);\r\n intervalRef.current = null;\r\n }\r\n };\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg px-6 py-3 font-medium text-white dark:text-zinc-900\",\r\n variants[variant],\r\n className\r\n )}\r\n onMouseDown={startHold}\r\n onMouseUp={stopHold}\r\n onMouseLeave={stopHold}\r\n onTouchStart={startHold}\r\n onTouchEnd={stopHold}\r\n whileTap={{ scale: 0.98 }}\r\n {...props}\r\n >\r\n <motion.div\r\n className={cn(\"absolute inset-0 origin-left\", progressColors[variant])}\r\n style={{ scaleX: progress / 100 }}\r\n transition={{ duration: 0 }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default HoldButton;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ThreeDButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"danger\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst variants = {\r\n primary: {\r\n bg: \"bg-blue-500\",\r\n shadow: \"shadow-blue-700\",\r\n hover: \"hover:bg-blue-600\",\r\n },\r\n secondary: {\r\n bg: \"bg-zinc-700\",\r\n shadow: \"shadow-zinc-900\",\r\n hover: \"hover:bg-zinc-800\",\r\n },\r\n danger: {\r\n bg: \"bg-red-500\",\r\n shadow: \"shadow-red-700\",\r\n hover: \"hover:bg-red-600\",\r\n },\r\n};\r\n\r\nconst sizes = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\",\r\n};\r\n\r\nexport function ThreeDButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n ...props\r\n}: ThreeDButtonProps) {\r\n const colors = variants[variant];\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative rounded-lg font-semibold text-white\",\r\n \"shadow-[0_6px_0_0]\",\r\n colors.bg,\r\n colors.shadow,\r\n colors.hover,\r\n sizes[size],\r\n className\r\n )}\r\n whileHover={{ y: -2 }}\r\n whileTap={{ y: 4, boxShadow: \"0 2px 0 0\" }}\r\n transition={{ duration: 0.1 }}\r\n {...props}\r\n >\r\n {children}\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default ThreeDButton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CopyButtonProps {\r\n text?: string;\r\n value?: string;\r\n onCopy?: () => void;\r\n className?: string;\r\n}\r\n\r\nexport function CopyButton({ \r\n text = \"Copy\",\r\n value,\r\n onCopy,\r\n className \r\n}: CopyButtonProps) {\r\n const [copied, setCopied] = useState(false);\r\n\r\n const handleCopy = async () => {\r\n try {\r\n if (value) {\r\n await navigator.clipboard.writeText(value);\r\n }\r\n onCopy?.();\r\n setCopied(true);\r\n setTimeout(() => setCopied(false), 2000);\r\n } catch (error) {\r\n console.error(\"Failed to copy:\", error);\r\n }\r\n };\r\n\r\n return (\r\n <button\r\n onClick={handleCopy}\r\n className={cn(\r\n \"inline-flex items-center gap-2 px-4 py-2\",\r\n \"bg-transparent hover:bg-zinc-100 dark:hover:bg-zinc-800\",\r\n \"text-zinc-900 dark:text-zinc-100\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"rounded-md transition-all duration-200 font-medium text-sm\",\r\n className\r\n )}\r\n >\r\n {copied ? (\r\n <>\r\n <svg className=\"w-4 h-4 text-green-600\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\r\n </svg>\r\n Copied!\r\n </>\r\n ) : (\r\n <>\r\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\" />\r\n </svg>\r\n {text}\r\n </>\r\n )}\r\n </button>\r\n );\r\n}\r\n\r\nexport default CopyButton;\r\n","\"use client\";\r\n\r\nimport { useState, useRef } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ParticleButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n onSuccess?: () => void;\r\n successDuration?: number;\r\n}\r\n\r\nfunction SuccessParticles({ buttonRef }: { buttonRef: React.RefObject<HTMLButtonElement> }) {\r\n const rect = buttonRef.current?.getBoundingClientRect();\r\n if (!rect) return null;\r\n\r\n const centerX = rect.left + rect.width / 2;\r\n const centerY = rect.top + rect.height / 2;\r\n\r\n return (\r\n <AnimatePresence>\r\n {[...Array(6)].map((_, i) => (\r\n <motion.div\r\n key={i}\r\n className=\"fixed w-1 h-1 bg-black dark:bg-white rounded-full\"\r\n style={{ left: centerX, top: centerY }}\r\n initial={{ scale: 0, x: 0, y: 0 }}\r\n animate={{ scale: [0, 1, 0], x: [0, (i % 2 ? 1 : -1) * (Math.random() * 50 + 20)], y: [0, -Math.random() * 50 - 20] }}\r\n transition={{ duration: 0.6, delay: i * 0.1, ease: \"easeOut\" }}\r\n />\r\n ))}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport function ParticleButton({\r\n children,\r\n onClick,\r\n onSuccess,\r\n successDuration = 1000,\r\n className,\r\n ...props\r\n}: ParticleButtonProps) {\r\n const [showParticles, setShowParticles] = useState(false);\r\n const buttonRef = useRef<HTMLButtonElement>(null);\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n setShowParticles(true);\r\n onClick?.(e);\r\n onSuccess?.();\r\n setTimeout(() => setShowParticles(false), successDuration);\r\n };\r\n\r\n return (\r\n <>\r\n {showParticles && <SuccessParticles buttonRef={buttonRef} />}\r\n <button\r\n ref={buttonRef}\r\n onClick={handleClick}\r\n className={cn(\r\n \"relative px-4 py-2 rounded-md bg-primary text-primary-foreground\",\r\n showParticles && \"scale-95\",\r\n \"transition-transform duration-100\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </>\r\n );\r\n}\r\n\r\nexport default ParticleButton;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\nimport { motion, useAnimation } from \"framer-motion\";\r\nimport { useEffect, useState, useCallback } from \"react\";\r\n\r\ninterface AttractButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n particleCount?: number;\r\n attractRadius?: number;\r\n children?: React.ReactNode;\r\n}\r\n\r\ninterface Particle {\r\n id: number;\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport function AttractButton({\r\n className,\r\n particleCount = 12,\r\n children,\r\n ...props\r\n}: AttractButtonProps) {\r\n const [isAttracting, setIsAttracting] = useState(false);\r\n const [particles, setParticles] = useState<Particle[]>([]);\r\n const particlesControl = useAnimation();\r\n\r\n useEffect(() => {\r\n const newParticles = Array.from({ length: particleCount }, (_, i) => ({\r\n id: i,\r\n x: Math.random() * 360 - 180,\r\n y: Math.random() * 360 - 180,\r\n }));\r\n setParticles(newParticles);\r\n }, [particleCount]);\r\n\r\n const handleInteractionStart = useCallback(async () => {\r\n setIsAttracting(true);\r\n await particlesControl.start({ x: 0, y: 0, transition: { type: \"spring\", stiffness: 50, damping: 10 } });\r\n }, [particlesControl]);\r\n\r\n const handleInteractionEnd = useCallback(async () => {\r\n setIsAttracting(false);\r\n await particlesControl.start((i) => ({\r\n x: particles[i].x,\r\n y: particles[i].y,\r\n transition: { type: \"spring\", stiffness: 100, damping: 15 },\r\n }));\r\n }, [particlesControl, particles]);\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"min-w-40 relative touch-none px-4 py-2 rounded-md\",\r\n \"bg-violet-100 dark:bg-violet-900\",\r\n \"hover:bg-violet-200 dark:hover:bg-violet-800\",\r\n \"text-violet-600 dark:text-violet-300\",\r\n \"border border-violet-300 dark:border-violet-700\",\r\n \"transition-all duration-300\",\r\n className\r\n )}\r\n onMouseEnter={handleInteractionStart}\r\n onMouseLeave={handleInteractionEnd}\r\n onTouchStart={handleInteractionStart}\r\n onTouchEnd={handleInteractionEnd}\r\n {...props}\r\n >\r\n {particles.map((_, index) => (\r\n <motion.div\r\n key={index}\r\n custom={index}\r\n initial={{ x: particles[index].x, y: particles[index].y }}\r\n animate={particlesControl}\r\n className={cn(\"absolute w-1.5 h-1.5 rounded-full bg-violet-400 dark:bg-violet-300 transition-opacity duration-300\", isAttracting ? \"opacity-100\" : \"opacity-40\")}\r\n />\r\n ))}\r\n <span className=\"relative w-full flex items-center justify-center gap-2\">\r\n {children || (isAttracting ? \"Attracting\" : \"Hover me\")}\r\n </span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default AttractButton;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CommandButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n shortcut?: string;\r\n}\r\n\r\nexport function CommandButton({ className, children, shortcut = \"CMD + K\", ...props }: CommandButtonProps) {\r\n return (\r\n <button\r\n {...props}\r\n className={cn(\r\n \"relative p-2 rounded-lg overflow-hidden\",\r\n \"bg-gradient-to-b from-zinc-50 to-zinc-100 dark:from-zinc-800 dark:to-zinc-900\",\r\n \"border border-zinc-200 dark:border-zinc-800\",\r\n \"hover:border-zinc-300 dark:hover:border-zinc-700\",\r\n \"transition-all duration-300 ease-out group\",\r\n \"inline-flex items-center justify-center gap-2\",\r\n className\r\n )}\r\n >\r\n <svg\r\n className={cn(\r\n \"w-4 h-4 text-zinc-600 dark:text-zinc-400\",\r\n \"transition-all duration-300\",\r\n \"group-hover:scale-110 group-hover:rotate-[-4deg] group-active:scale-95\"\r\n )}\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n >\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z\" />\r\n </svg>\r\n <span className=\"text-sm text-zinc-600 dark:text-zinc-400\">{children || shortcut}</span>\r\n <span className=\"absolute inset-0 bg-gradient-to-r from-indigo-500/0 via-indigo-500/10 to-indigo-500/0 translate-x-[-100%] group-hover:translate-x-[100%] transition-transform duration-500 ease-out\" />\r\n </button>\r\n );\r\n}\r\n\r\nexport default CommandButton;\r\n","\"use client\";\r\n\r\nimport React, { ReactNode } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GradientTextProps {\r\n children: ReactNode;\r\n className?: string;\r\n colors?: string[];\r\n animationSpeed?: number;\r\n}\r\n\r\nexport function GradientText({\r\n children,\r\n className = \"\",\r\n colors = [\"#40ffaa\", \"#4079ff\", \"#40ffaa\", \"#4079ff\", \"#40ffaa\"],\r\n animationSpeed = 8,\r\n}: GradientTextProps) {\r\n return (\r\n <span\r\n className={cn(\r\n \"bg-clip-text text-transparent bg-[length:200%_auto] animate-gradient\",\r\n className\r\n )}\r\n style={{\r\n backgroundImage: `linear-gradient(to right, ${colors.join(\", \")})`,\r\n animationDuration: `${animationSpeed}s`,\r\n }}\r\n >\r\n {children}\r\n </span>\r\n );\r\n}\r\n\r\nexport default GradientText;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ShimmerTextProps {\r\n text?: string;\r\n className?: string;\r\n}\r\n\r\nexport function ShimmerText({ text = \"Text Shimmer\", className }: ShimmerTextProps) {\r\n return (\r\n <div className=\"flex items-center justify-center p-8\">\r\n <motion.div\r\n className=\"relative px-4 py-2 overflow-hidden\"\r\n initial={{ opacity: 0, y: 20 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.5 }}\r\n >\r\n <motion.h1\r\n className={cn(\r\n \"text-3xl font-bold bg-gradient-to-r from-neutral-950 via-neutral-400 to-neutral-950 dark:from-white dark:via-neutral-600 dark:to-white bg-[length:200%_100%] bg-clip-text text-transparent\",\r\n className\r\n )}\r\n animate={{\r\n backgroundPosition: [\"200% center\", \"-200% center\"],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n ease: \"linear\",\r\n repeat: Infinity,\r\n }}\r\n >\r\n {text}\r\n </motion.h1>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ShimmerText;\r\n","\"use client\";\r\n\r\nimport React, { useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlitchTextProps {\r\n text?: string;\r\n className?: string;\r\n glitchIntensity?: \"light\" | \"medium\" | \"heavy\" | \"extreme\";\r\n color?: \"rainbow\" | \"blue\" | \"purple\" | \"cyan\" | \"pink\" | \"orange\";\r\n isStatic?: boolean;\r\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\";\r\n}\r\n\r\nexport function GlitchText({\r\n text = \"Glitch Text\",\r\n className,\r\n glitchIntensity = \"medium\",\r\n color = \"orange\",\r\n isStatic = false,\r\n size = \"md\",\r\n}: GlitchTextProps) {\r\n const colorSchemes = {\r\n rainbow: { primary: \"#a855f7\", before: \"#22d3ee\", after: \"#f472b6\" },\r\n blue: { primary: \"#3b82f6\", before: \"#60a5fa\", after: \"#1d4ed8\" },\r\n purple: { primary: \"#8b5cf6\", before: \"#a78bfa\", after: \"#6d28d9\" },\r\n cyan: { primary: \"#06b6d4\", before: \"#22d3ee\", after: \"#0891b2\" },\r\n pink: { primary: \"#ec4899\", before: \"#f472b6\", after: \"#db2777\" },\r\n orange: { primary: \"#f97316\", before: \"#fb923c\", after: \"#ea580c\" },\r\n };\r\n\r\n const selectedScheme = colorSchemes[color];\r\n\r\n const intensitySettings = {\r\n light: { translateRange: 2, skewRange: 0.5 },\r\n medium: { translateRange: 3, skewRange: 1 },\r\n heavy: { translateRange: 5, skewRange: 2 },\r\n extreme: { translateRange: 8, skewRange: 3 },\r\n };\r\n\r\n const settings = intensitySettings[glitchIntensity];\r\n\r\n const sizeMap = {\r\n sm: \"text-2xl\",\r\n md: \"text-4xl\",\r\n lg: \"text-5xl\",\r\n xl: \"text-6xl\",\r\n \"2xl\": \"text-7xl\",\r\n \"3xl\": \"text-8xl\",\r\n };\r\n\r\n const glitchAnimation = {\r\n animate: {\r\n x: [0, settings.translateRange, -settings.translateRange, 0],\r\n y: [0, -settings.translateRange, settings.translateRange, 0],\r\n skewX: [0, settings.skewRange, -settings.skewRange, 0],\r\n },\r\n transition: {\r\n duration: 0.5,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n },\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative flex items-center justify-center p-8\", className)}>\r\n <motion.div\r\n className={cn(\"relative font-bold tracking-wider\", sizeMap[size])}\r\n style={{ color: selectedScheme.primary }}\r\n animate={!isStatic ? glitchAnimation.animate : undefined}\r\n transition={glitchAnimation.transition}\r\n >\r\n {text}\r\n <motion.span\r\n className=\"absolute inset-0 pointer-events-none\"\r\n style={{ color: selectedScheme.before, opacity: 0.8 }}\r\n animate={!isStatic ? {\r\n x: [-settings.translateRange, settings.translateRange, 0],\r\n y: [settings.translateRange, -settings.translateRange, 0],\r\n } : undefined}\r\n transition={{ duration: 0.5, repeat: Infinity }}\r\n >\r\n {text}\r\n </motion.span>\r\n <motion.span\r\n className=\"absolute inset-0 pointer-events-none\"\r\n style={{ color: selectedScheme.after, opacity: 0.8 }}\r\n animate={!isStatic ? {\r\n x: [settings.translateRange, -settings.translateRange, 0],\r\n y: [-settings.translateRange, settings.translateRange, 0],\r\n } : undefined}\r\n transition={{ duration: 0.5, repeat: Infinity }}\r\n >\r\n {text}\r\n </motion.span>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default GlitchText;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BounceTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n duration?: number;\r\n}\r\n\r\nexport function BounceText({\r\n text,\r\n className,\r\n delay = 0,\r\n duration = 0.4,\r\n}: BounceTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{\r\n y: [0, -20, 0],\r\n }}\r\n transition={{\r\n delay: delay + index * 0.03,\r\n duration: duration,\r\n ease: \"easeInOut\",\r\n repeat: Infinity,\r\n repeatDelay: 0.5,\r\n }}\r\n >\r\n {letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default BounceText;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useRef, useState, useMemo } from \"react\";\r\nimport { motion, Transition } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BlurTextProps {\r\n text?: string;\r\n delay?: number;\r\n className?: string;\r\n animateBy?: \"words\" | \"letters\";\r\n direction?: \"top\" | \"bottom\";\r\n}\r\n\r\nexport function BlurText({\r\n text = \"\",\r\n delay = 200,\r\n className = \"\",\r\n animateBy = \"words\",\r\n direction = \"top\",\r\n}: BlurTextProps) {\r\n const elements = animateBy === \"words\" ? text.split(\" \") : text.split(\"\");\r\n const [inView, setInView] = useState(false);\r\n const ref = useRef<HTMLParagraphElement>(null);\r\n\r\n useEffect(() => {\r\n if (!ref.current) return;\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setInView(true);\r\n observer.unobserve(ref.current as Element);\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n observer.observe(ref.current);\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n const fromAnimation = useMemo(\r\n () =>\r\n direction === \"top\"\r\n ? { filter: \"blur(10px)\", opacity: 0, y: -50 }\r\n : { filter: \"blur(10px)\", opacity: 0, y: 50 },\r\n [direction]\r\n );\r\n\r\n const toAnimation = { filter: \"blur(0px)\", opacity: 1, y: 0 };\r\n\r\n return (\r\n <p ref={ref} className={cn(\"flex flex-wrap\", className)}>\r\n {elements.map((segment, index) => (\r\n <motion.span\r\n key={index}\r\n initial={fromAnimation}\r\n animate={inView ? toAnimation : fromAnimation}\r\n transition={{\r\n duration: 0.5,\r\n delay: (index * delay) / 1000,\r\n ease: \"easeOut\",\r\n }}\r\n className=\"inline-block\"\r\n style={{ willChange: \"transform, filter, opacity\" }}\r\n >\r\n {segment === \" \" ? \"\\u00A0\" : segment}\r\n {animateBy === \"words\" && index < elements.length - 1 && \"\\u00A0\"}\r\n </motion.span>\r\n ))}\r\n </p>\r\n );\r\n}\r\n\r\nexport default BlurText;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TypewriterProps {\r\n text?: string;\r\n className?: string;\r\n speed?: number;\r\n delay?: number;\r\n cursor?: boolean;\r\n loop?: boolean;\r\n}\r\n\r\nexport function Typewriter({\r\n text = \"Hello World\",\r\n className,\r\n speed = 50,\r\n delay = 0,\r\n cursor = true,\r\n loop = false,\r\n}: TypewriterProps) {\r\n const [displayText, setDisplayText] = useState(\"\");\r\n const [isTyping, setIsTyping] = useState(false);\r\n\r\n useEffect(() => {\r\n let timeout: NodeJS.Timeout;\r\n let i = 0;\r\n let isDeleting = false;\r\n\r\n const type = () => {\r\n setIsTyping(true);\r\n\r\n if (!isDeleting) {\r\n if (i < text.length) {\r\n setDisplayText(text.slice(0, i + 1));\r\n i++;\r\n timeout = setTimeout(type, speed);\r\n } else {\r\n setIsTyping(false);\r\n if (loop) {\r\n timeout = setTimeout(() => {\r\n isDeleting = true;\r\n type();\r\n }, 2000);\r\n }\r\n }\r\n } else {\r\n if (i > 0) {\r\n setDisplayText(text.slice(0, i - 1));\r\n i--;\r\n timeout = setTimeout(type, speed / 2);\r\n } else {\r\n isDeleting = false;\r\n timeout = setTimeout(type, 500);\r\n }\r\n }\r\n };\r\n\r\n timeout = setTimeout(type, delay);\r\n\r\n return () => clearTimeout(timeout);\r\n }, [text, speed, delay, loop]);\r\n\r\n return (\r\n <span className={cn(\"inline-block font-mono\", className)}>\r\n {displayText}\r\n {cursor && (\r\n <span\r\n className={cn(\r\n \"ml-0.5 inline-block w-[2px] h-[1em] bg-current\",\r\n isTyping ? \"animate-blink\" : \"\"\r\n )}\r\n />\r\n )}\r\n </span>\r\n );\r\n}\r\n\r\nexport default Typewriter;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface WaveTextProps {\r\n text: string;\r\n className?: string;\r\n amplitude?: number;\r\n frequency?: number;\r\n}\r\n\r\nexport function WaveText({\r\n text,\r\n className,\r\n amplitude = 10,\r\n frequency = 1.5,\r\n}: WaveTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{\r\n y: [0, -amplitude, 0, amplitude, 0],\r\n }}\r\n transition={{\r\n duration: frequency,\r\n repeat: Infinity,\r\n delay: index * 0.08,\r\n ease: \"easeInOut\",\r\n }}\r\n >\r\n {letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default WaveText;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FlipTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function FlipText({ text, className, delay = 0 }: FlipTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)} style={{ perspective: \"1000px\" }}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block origin-center\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{ rotateX: [0, 360] }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n delay: delay + index * 0.08,\r\n ease: \"easeInOut\",\r\n repeatDelay: 0.8,\r\n }}\r\n >\r\n {letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default FlipText;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ShinyTextProps {\r\n text: string;\r\n disabled?: boolean;\r\n speed?: number;\r\n className?: string;\r\n}\r\n\r\nexport function ShinyText({ \r\n text, \r\n disabled = false, \r\n speed = 5, \r\n className = \"\" \r\n}: ShinyTextProps) {\r\n return (\r\n <span \r\n className={cn(\r\n \"inline-block bg-gradient-to-r from-gray-900 via-gray-100 to-gray-900 bg-clip-text text-transparent bg-[length:200%_100%]\",\r\n !disabled && \"animate-[shine_var(--shine-speed)_linear_infinite]\",\r\n className\r\n )}\r\n style={{ \r\n \"--shine-speed\": `${speed}s`,\r\n backgroundImage: \"linear-gradient(90deg, #374151 25%, #f3f4f6 50%, #374151 75%)\"\r\n } as React.CSSProperties}\r\n >\r\n {text}\r\n <style>{`\r\n @keyframes shine {\r\n 0% { background-position: -200% 0; }\r\n 100% { background-position: 200% 0; }\r\n }\r\n `}</style>\r\n </span>\r\n );\r\n}\r\n\r\nexport default ShinyText;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useRef } from \"react\";\r\n\r\ninterface FuzzyTextProps {\r\n children: React.ReactNode;\r\n fontSize?: number | string;\r\n fontWeight?: string | number;\r\n fontFamily?: string;\r\n color?: string;\r\n enableHover?: boolean;\r\n baseIntensity?: number;\r\n hoverIntensity?: number;\r\n}\r\n\r\nexport function FuzzyText({\r\n children,\r\n fontSize = \"clamp(2rem, 8vw, 8rem)\",\r\n fontWeight = 900,\r\n fontFamily = \"inherit\",\r\n color = \"#fff\",\r\n enableHover = true,\r\n baseIntensity = 0.18,\r\n hoverIntensity = 0.5\r\n}: FuzzyTextProps) {\r\n const canvasRef = useRef<HTMLCanvasElement & { cleanupFuzzyText?: () => void }>(null);\r\n\r\n useEffect(() => {\r\n let animationFrameId: number;\r\n let isCancelled = false;\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n\r\n const init = async () => {\r\n if (document.fonts?.ready) await document.fonts.ready;\r\n if (isCancelled) return;\r\n\r\n const ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n const computedFontFamily = fontFamily === \"inherit\" \r\n ? window.getComputedStyle(canvas).fontFamily || \"sans-serif\" \r\n : fontFamily;\r\n\r\n const fontSizeStr = typeof fontSize === \"number\" ? `${fontSize}px` : fontSize;\r\n let numericFontSize: number;\r\n if (typeof fontSize === \"number\") {\r\n numericFontSize = fontSize;\r\n } else {\r\n const temp = document.createElement(\"span\");\r\n temp.style.fontSize = fontSize;\r\n document.body.appendChild(temp);\r\n numericFontSize = parseFloat(window.getComputedStyle(temp).fontSize);\r\n document.body.removeChild(temp);\r\n }\r\n\r\n const text = React.Children.toArray(children).join(\"\");\r\n const offscreen = document.createElement(\"canvas\");\r\n const offCtx = offscreen.getContext(\"2d\");\r\n if (!offCtx) return;\r\n\r\n offCtx.font = `${fontWeight} ${fontSizeStr} ${computedFontFamily}`;\r\n offCtx.textBaseline = \"alphabetic\";\r\n const metrics = offCtx.measureText(text);\r\n\r\n const actualLeft = metrics.actualBoundingBoxLeft ?? 0;\r\n const actualRight = metrics.actualBoundingBoxRight ?? metrics.width;\r\n const actualAscent = metrics.actualBoundingBoxAscent ?? numericFontSize;\r\n const actualDescent = metrics.actualBoundingBoxDescent ?? numericFontSize * 0.2;\r\n\r\n const textBoundingWidth = Math.ceil(actualLeft + actualRight);\r\n const tightHeight = Math.ceil(actualAscent + actualDescent);\r\n const extraWidthBuffer = 10;\r\n const offscreenWidth = textBoundingWidth + extraWidthBuffer;\r\n\r\n offscreen.width = offscreenWidth;\r\n offscreen.height = tightHeight;\r\n\r\n const xOffset = extraWidthBuffer / 2;\r\n offCtx.font = `${fontWeight} ${fontSizeStr} ${computedFontFamily}`;\r\n offCtx.textBaseline = \"alphabetic\";\r\n offCtx.fillStyle = color;\r\n offCtx.fillText(text, xOffset - actualLeft, actualAscent);\r\n\r\n const horizontalMargin = 50;\r\n const verticalMargin = 0;\r\n canvas.width = offscreenWidth + horizontalMargin * 2;\r\n canvas.height = tightHeight + verticalMargin * 2;\r\n ctx.translate(horizontalMargin, verticalMargin);\r\n\r\n const interactiveLeft = horizontalMargin + xOffset;\r\n const interactiveTop = verticalMargin;\r\n const interactiveRight = interactiveLeft + textBoundingWidth;\r\n const interactiveBottom = interactiveTop + tightHeight;\r\n\r\n let isHovering = false;\r\n const fuzzRange = 30;\r\n\r\n const run = () => {\r\n if (isCancelled) return;\r\n ctx.clearRect(-fuzzRange, -fuzzRange, offscreenWidth + 2 * fuzzRange, tightHeight + 2 * fuzzRange);\r\n const intensity = isHovering ? hoverIntensity : baseIntensity;\r\n for (let j = 0; j < tightHeight; j++) {\r\n const dx = Math.floor(intensity * (Math.random() - 0.5) * fuzzRange);\r\n ctx.drawImage(offscreen, 0, j, offscreenWidth, 1, dx, j, offscreenWidth, 1);\r\n }\r\n animationFrameId = window.requestAnimationFrame(run);\r\n };\r\n\r\n run();\r\n\r\n const isInsideTextArea = (x: number, y: number) =>\r\n x >= interactiveLeft && x <= interactiveRight && y >= interactiveTop && y <= interactiveBottom;\r\n\r\n const handleMouseMove = (e: MouseEvent) => {\r\n if (!enableHover) return;\r\n const rect = canvas.getBoundingClientRect();\r\n isHovering = isInsideTextArea(e.clientX - rect.left, e.clientY - rect.top);\r\n };\r\n\r\n const handleMouseLeave = () => { isHovering = false; };\r\n\r\n if (enableHover) {\r\n canvas.addEventListener(\"mousemove\", handleMouseMove);\r\n canvas.addEventListener(\"mouseleave\", handleMouseLeave);\r\n }\r\n\r\n canvas.cleanupFuzzyText = () => {\r\n window.cancelAnimationFrame(animationFrameId);\r\n if (enableHover) {\r\n canvas.removeEventListener(\"mousemove\", handleMouseMove);\r\n canvas.removeEventListener(\"mouseleave\", handleMouseLeave);\r\n }\r\n };\r\n };\r\n\r\n init();\r\n\r\n return () => {\r\n isCancelled = true;\r\n window.cancelAnimationFrame(animationFrameId);\r\n if (canvas?.cleanupFuzzyText) canvas.cleanupFuzzyText();\r\n };\r\n }, [children, fontSize, fontWeight, fontFamily, color, enableHover, baseIntensity, hoverIntensity]);\r\n\r\n return <canvas ref={canvasRef} className=\"max-w-full\" />;\r\n}\r\n\r\nexport default FuzzyText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MatrixTextProps {\r\n text: string;\r\n className?: string;\r\n speed?: number;\r\n color?: string;\r\n}\r\n\r\nexport function MatrixText({ \r\n text, \r\n className,\r\n speed = 50,\r\n color = \"#22c55e\"\r\n}: MatrixTextProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const intervalRef = useRef<NodeJS.Timeout | null>(null);\r\n\r\n useEffect(() => {\r\n const container = containerRef.current;\r\n if (!container) return;\r\n\r\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@#$%^&*\";\r\n const originalText = text;\r\n let iteration = 0;\r\n\r\n const animate = () => {\r\n container.innerText = originalText\r\n .split(\"\")\r\n .map((char, index) => {\r\n if (index < iteration) return originalText[index];\r\n return chars[Math.floor(Math.random() * chars.length)];\r\n })\r\n .join(\"\");\r\n\r\n if (iteration >= originalText.length) {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n return;\r\n }\r\n\r\n iteration += 1 / 3;\r\n };\r\n\r\n intervalRef.current = setInterval(animate, speed);\r\n\r\n return () => {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n };\r\n }, [text, speed]);\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={cn(\"font-mono\", className)}\r\n style={{ color }}\r\n >\r\n {text}\r\n </div>\r\n );\r\n}\r\n\r\nexport default MatrixText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LiquidTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function LiquidText({ text, className, delay = 0 }: LiquidTextProps) {\r\n const words = text.split(\" \");\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: (i = 1) => ({\r\n opacity: 1,\r\n transition: { staggerChildren: 0.12, delayChildren: delay * i },\r\n }),\r\n };\r\n\r\n const child = {\r\n visible: {\r\n opacity: 1,\r\n y: 0,\r\n filter: \"blur(0px)\",\r\n transition: {\r\n type: \"spring\",\r\n damping: 12,\r\n stiffness: 100,\r\n },\r\n },\r\n hidden: {\r\n opacity: 0,\r\n y: 20,\r\n filter: \"blur(10px)\",\r\n transition: {\r\n type: \"spring\",\r\n damping: 12,\r\n stiffness: 100,\r\n },\r\n },\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(\"flex flex-wrap\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {words.map((word, index) => (\r\n <motion.span\r\n variants={child}\r\n key={index}\r\n className=\"mr-2\"\r\n >\r\n {word}\r\n </motion.span>\r\n ))}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default LiquidText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SwooshTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function SwooshText({ text, className, delay = 0 }: SwooshTextProps) {\r\n const letters = text.split(\"\");\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: {\r\n opacity: 1,\r\n transition: { staggerChildren: 0.03, delayChildren: delay },\r\n },\r\n };\r\n\r\n const child = {\r\n hidden: {\r\n opacity: 0,\r\n x: -20,\r\n y: 10,\r\n rotate: -10,\r\n },\r\n visible: {\r\n opacity: 1,\r\n x: 0,\r\n y: 0,\r\n rotate: 0,\r\n transition: {\r\n type: \"spring\",\r\n damping: 12,\r\n stiffness: 200,\r\n },\r\n },\r\n };\r\n\r\n return (\r\n <motion.span\r\n className={cn(\"inline-flex\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={index}\r\n variants={child}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </motion.span>\r\n );\r\n}\r\n\r\nexport default SwooshText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ScrambledTextProps {\r\n text: string;\r\n className?: string;\r\n speed?: number;\r\n scrambleChars?: string;\r\n}\r\n\r\nexport function ScrambledText({\r\n text,\r\n className,\r\n speed = 50,\r\n scrambleChars = \"!<>-_\\\\/[]{}—=+*^?#________\"\r\n}: ScrambledTextProps) {\r\n const [displayText, setDisplayText] = useState(text);\r\n\r\n useEffect(() => {\r\n let iteration = 0;\r\n const interval = setInterval(() => {\r\n setDisplayText(\r\n text\r\n .split(\"\")\r\n .map((char, index) => {\r\n if (index < iteration) return text[index];\r\n return scrambleChars[Math.floor(Math.random() * scrambleChars.length)];\r\n })\r\n .join(\"\")\r\n );\r\n\r\n if (iteration >= text.length) {\r\n clearInterval(interval);\r\n }\r\n\r\n iteration += 1 / 3;\r\n }, speed);\r\n\r\n return () => clearInterval(interval);\r\n }, [text, speed, scrambleChars]);\r\n\r\n return (\r\n <span className={cn(\"font-mono\", className)}>\r\n {displayText}\r\n </span>\r\n );\r\n}\r\n\r\nexport default ScrambledText;\r\n","\"use client\";\r\n\r\nimport { useRef, useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MagneticTextProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n strength?: number;\r\n}\r\n\r\nexport function MagneticText({ children, className, strength = 0.5 }: MagneticTextProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [position, setPosition] = useState({ x: 0, y: 0 });\r\n\r\n const handleMouse = (e: React.MouseEvent<HTMLDivElement>) => {\r\n const { clientX, clientY } = e;\r\n const { height, width, left, top } = ref.current!.getBoundingClientRect();\r\n const middleX = clientX - (left + width / 2);\r\n const middleY = clientY - (top + height / 2);\r\n setPosition({ x: middleX * strength, y: middleY * strength });\r\n };\r\n\r\n const reset = () => {\r\n setPosition({ x: 0, y: 0 });\r\n };\r\n\r\n const { x, y } = position;\r\n\r\n return (\r\n <motion.div\r\n ref={ref}\r\n onMouseMove={handleMouse}\r\n onMouseLeave={reset}\r\n animate={{ x, y }}\r\n transition={{ type: \"spring\", stiffness: 150, damping: 15, mass: 0.1 }}\r\n className={cn(\"inline-block cursor-pointer\", className)}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default MagneticText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface DynamicTextProps {\r\n words: string[];\r\n className?: string;\r\n interval?: number;\r\n}\r\n\r\nexport function DynamicText({ words, className, interval = 3000 }: DynamicTextProps) {\r\n const [index, setIndex] = useState(0);\r\n\r\n useEffect(() => {\r\n const timer = setInterval(() => {\r\n setIndex((prev) => (prev + 1) % words.length);\r\n }, interval);\r\n return () => clearInterval(timer);\r\n }, [words.length, interval]);\r\n\r\n return (\r\n <div className={cn(\"relative inline-block overflow-hidden\", className)}>\r\n <AnimatePresence mode=\"wait\">\r\n <motion.span\r\n key={words[index]}\r\n initial={{ y: 20, opacity: 0 }}\r\n animate={{ y: 0, opacity: 1 }}\r\n exit={{ y: -20, opacity: 0 }}\r\n transition={{ duration: 0.3 }}\r\n className=\"inline-block\"\r\n >\r\n {words[index]}\r\n </motion.span>\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default DynamicText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RotatingTextProps {\r\n words: string[];\r\n className?: string;\r\n interval?: number;\r\n}\r\n\r\nexport function RotatingText({ words, className, interval = 2000 }: RotatingTextProps) {\r\n const [index, setIndex] = useState(0);\r\n\r\n useEffect(() => {\r\n const timer = setInterval(() => {\r\n setIndex((prev) => (prev + 1) % words.length);\r\n }, interval);\r\n return () => clearInterval(timer);\r\n }, [words.length, interval]);\r\n\r\n return (\r\n <span className={cn(\"inline-block relative\", className)}>\r\n <AnimatePresence mode=\"wait\">\r\n <motion.span\r\n key={words[index]}\r\n initial={{ rotateX: -90, opacity: 0 }}\r\n animate={{ rotateX: 0, opacity: 1 }}\r\n exit={{ rotateX: 90, opacity: 0 }}\r\n transition={{ duration: 0.4 }}\r\n className=\"inline-block\"\r\n style={{ transformStyle: \"preserve-3d\" }}\r\n >\r\n {words[index]}\r\n </motion.span>\r\n </AnimatePresence>\r\n </span>\r\n );\r\n}\r\n\r\nexport default RotatingText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface StaggerTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n staggerDelay?: number;\r\n}\r\n\r\nexport function StaggerText({ \r\n text, \r\n className, \r\n delay = 0,\r\n staggerDelay = 0.05 \r\n}: StaggerTextProps) {\r\n const letters = text.split(\"\");\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: {\r\n opacity: 1,\r\n transition: {\r\n staggerChildren: staggerDelay,\r\n delayChildren: delay,\r\n },\r\n },\r\n };\r\n\r\n const child = {\r\n hidden: { opacity: 0, y: 20 },\r\n visible: {\r\n opacity: 1,\r\n y: 0,\r\n transition: { type: \"spring\", damping: 12, stiffness: 200 },\r\n },\r\n };\r\n\r\n return (\r\n <motion.span\r\n className={cn(\"inline-flex\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={index}\r\n variants={child}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </motion.span>\r\n );\r\n}\r\n\r\nexport default StaggerText;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RainbowTextProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n speed?: number;\r\n}\r\n\r\nexport function RainbowText({ children, className, speed = 3 }: RainbowTextProps) {\r\n return (\r\n <span\r\n className={cn(\r\n \"inline-block bg-gradient-to-r from-red-500 via-yellow-500 via-green-500 via-blue-500 to-purple-500 bg-clip-text text-transparent bg-[length:200%_auto] animate-[rainbow_var(--rainbow-speed)_linear_infinite]\",\r\n className\r\n )}\r\n style={{ \"--rainbow-speed\": `${speed}s` } as React.CSSProperties}\r\n >\r\n {children}\r\n <style>{`\r\n @keyframes rainbow {\r\n 0% { background-position: 0% center; }\r\n 100% { background-position: 200% center; }\r\n }\r\n `}</style>\r\n </span>\r\n );\r\n}\r\n\r\nexport default RainbowText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CountUpProps {\r\n end: number;\r\n start?: number;\r\n duration?: number;\r\n className?: string;\r\n prefix?: string;\r\n suffix?: string;\r\n decimals?: number;\r\n}\r\n\r\nexport function CountUp({\r\n end,\r\n start = 0,\r\n duration = 2000,\r\n className,\r\n prefix = \"\",\r\n suffix = \"\",\r\n decimals = 0,\r\n}: CountUpProps) {\r\n const [count, setCount] = useState(start);\r\n\r\n useEffect(() => {\r\n let startTime: number | null = null;\r\n let animationFrame: number;\r\n\r\n const animate = (timestamp: number) => {\r\n if (!startTime) startTime = timestamp;\r\n const progress = Math.min((timestamp - startTime) / duration, 1);\r\n \r\n const easeOutQuart = 1 - Math.pow(1 - progress, 4);\r\n const currentCount = start + (end - start) * easeOutQuart;\r\n \r\n setCount(currentCount);\r\n\r\n if (progress < 1) {\r\n animationFrame = requestAnimationFrame(animate);\r\n }\r\n };\r\n\r\n animationFrame = requestAnimationFrame(animate);\r\n\r\n return () => cancelAnimationFrame(animationFrame);\r\n }, [start, end, duration]);\r\n\r\n return (\r\n <span className={cn(\"tabular-nums\", className)}>\r\n {prefix}\r\n {count.toFixed(decimals)}\r\n {suffix}\r\n </span>\r\n );\r\n}\r\n\r\nexport default CountUp;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RevealTextProps {\r\n text: string;\r\n className?: string;\r\n stagger?: number;\r\n}\r\n\r\nexport function RevealText({ text, className, stagger = 0.04 }: RevealTextProps) {\r\n const letters = Array.from(text);\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: {\r\n opacity: 1,\r\n transition: { staggerChildren: stagger, delayChildren: 0.02 },\r\n },\r\n };\r\n\r\n const child = {\r\n hidden: { opacity: 0, y: 20 },\r\n visible: {\r\n opacity: 1,\r\n y: 0,\r\n transition: { type: \"spring\", damping: 12, stiffness: 100 },\r\n },\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(\"flex overflow-hidden\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n variants={child}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default RevealText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SplitTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n duration?: number;\r\n splitType?: \"chars\" | \"words\";\r\n textAlign?: \"left\" | \"center\" | \"right\";\r\n}\r\n\r\nexport function SplitText({\r\n text,\r\n className = \"\",\r\n delay = 100,\r\n duration = 0.6,\r\n splitType = \"chars\",\r\n textAlign = \"center\",\r\n}: SplitTextProps) {\r\n const [inView, setInView] = useState(false);\r\n const ref = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (!ref.current) return;\r\n\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setInView(true);\r\n observer.unobserve(ref.current as Element);\r\n }\r\n },\r\n { threshold: 0.1, rootMargin: \"-100px\" }\r\n );\r\n\r\n observer.observe(ref.current);\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n const elements = splitType === \"words\" ? text.split(\" \") : text.split(\"\");\r\n\r\n return (\r\n <div ref={ref} className={cn(\"overflow-hidden\", className)} style={{ textAlign }}>\r\n {elements.map((element, index) => (\r\n <motion.span\r\n key={index}\r\n initial={{ opacity: 0, y: 40 }}\r\n animate={inView ? { opacity: 1, y: 0 } : { opacity: 0, y: 40 }}\r\n transition={{ duration, delay: (index * delay) / 1000, ease: \"easeOut\" }}\r\n className=\"inline-block\"\r\n style={{ marginRight: splitType === \"words\" ? \"0.25em\" : \"0\" }}\r\n >\r\n {element === \" \" ? \"\\u00A0\" : element}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default SplitText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MorphTextProps {\r\n text: string;\r\n className?: string;\r\n}\r\n\r\nexport function MorphText({ text, className }: MorphTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{\r\n scaleY: [1, 0.5, 1.5, 0.8, 1],\r\n scaleX: [1, 1.5, 0.5, 1.2, 1],\r\n }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n delay: index * 0.08,\r\n ease: \"easeInOut\",\r\n repeatDelay: 0.3,\r\n }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default MorphText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface PerspectiveTextProps {\r\n text: string;\r\n className?: string;\r\n}\r\n\r\nexport function PerspectiveText({ text, className }: PerspectiveTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)} style={{ perspective: \"500px\" }}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n initial={{ rotateY: 90, opacity: 0 }}\r\n animate={{ rotateY: 0, opacity: 1 }}\r\n transition={{\r\n delay: index * 0.04,\r\n duration: 0.5,\r\n type: \"spring\",\r\n stiffness: 120,\r\n }}\r\n whileHover={{ rotateY: 180, transition: { duration: 0.3 } }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default PerspectiveText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ElasticTextProps {\r\n text: string;\r\n className?: string;\r\n}\r\n\r\nexport function ElasticText({ text, className }: ElasticTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block cursor-pointer\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n whileHover={{\r\n scale: [1, 1.5, 0.8, 1.2, 1],\r\n rotate: [0, 10, -10, 0],\r\n transition: { duration: 0.6, ease: \"easeInOut\" },\r\n }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ElasticText;\r\n","\"use client\";\r\n\r\nimport { useEffect } from \"react\";\r\nimport { motion, useAnimation, useMotionValue } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CircularTextProps {\r\n text: string;\r\n spinDuration?: number;\r\n onHover?: \"slowDown\" | \"speedUp\" | \"pause\" | \"goBonkers\";\r\n className?: string;\r\n}\r\n\r\nexport function CircularText({\r\n text,\r\n spinDuration = 20,\r\n onHover = \"speedUp\",\r\n className = \"\",\r\n}: CircularTextProps) {\r\n const letters = Array.from(text);\r\n const controls = useAnimation();\r\n const rotation = useMotionValue(0);\r\n\r\n useEffect(() => {\r\n const start = rotation.get();\r\n controls.start({\r\n rotate: start + 360,\r\n scale: 1,\r\n transition: {\r\n rotate: { from: start, to: start + 360, ease: \"linear\", duration: spinDuration, repeat: Infinity },\r\n scale: { type: \"spring\", damping: 20, stiffness: 300 },\r\n },\r\n });\r\n }, [spinDuration, controls, rotation]);\r\n\r\n const handleHoverStart = () => {\r\n const start = rotation.get();\r\n let duration = spinDuration;\r\n let scale = 1;\r\n\r\n switch (onHover) {\r\n case \"slowDown\": duration = spinDuration * 2; break;\r\n case \"speedUp\": duration = spinDuration / 4; break;\r\n case \"pause\": duration = 0; break;\r\n case \"goBonkers\": duration = spinDuration / 20; scale = 0.8; break;\r\n }\r\n\r\n if (onHover === \"pause\") {\r\n controls.stop();\r\n } else {\r\n controls.start({\r\n rotate: start + 360,\r\n scale,\r\n transition: {\r\n rotate: { from: start, to: start + 360, ease: \"linear\", duration, repeat: Infinity },\r\n scale: { type: \"spring\", damping: 20, stiffness: 300 },\r\n },\r\n });\r\n }\r\n };\r\n\r\n const handleHoverEnd = () => {\r\n const start = rotation.get();\r\n controls.start({\r\n rotate: start + 360,\r\n scale: 1,\r\n transition: {\r\n rotate: { from: start, to: start + 360, ease: \"linear\", duration: spinDuration, repeat: Infinity },\r\n scale: { type: \"spring\", damping: 20, stiffness: 300 },\r\n },\r\n });\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(\"relative w-32 h-32 cursor-pointer\", className)}\r\n style={{ rotate: rotation }}\r\n initial={{ rotate: 0 }}\r\n animate={controls}\r\n onMouseEnter={handleHoverStart}\r\n onMouseLeave={handleHoverEnd}\r\n >\r\n {letters.map((letter, i) => {\r\n const rotationDeg = (360 / letters.length) * i;\r\n const radius = 60;\r\n const angle = (rotationDeg * Math.PI) / 180;\r\n const x = Math.cos(angle) * radius;\r\n const y = Math.sin(angle) * radius;\r\n\r\n return (\r\n <span\r\n key={i}\r\n className=\"absolute text-lg font-bold\"\r\n style={{\r\n transform: `translate(-50%, -50%) translate(${x}px, ${y}px) rotate(${rotationDeg + 90}deg)`,\r\n left: \"50%\",\r\n top: \"50%\",\r\n }}\r\n >\r\n {letter}\r\n </span>\r\n );\r\n })}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default CircularText;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlowingTextProps {\r\n text: string;\r\n className?: string;\r\n glowColor?: string;\r\n hoverColor?: string;\r\n}\r\n\r\nexport function GlowingText({\r\n text,\r\n className,\r\n glowColor = \"#3b82f6\",\r\n hoverColor = \"#ec4899\",\r\n}: GlowingTextProps) {\r\n const [isHovered, setIsHovered] = useState(false);\r\n const currentColor = isHovered ? hoverColor : glowColor;\r\n\r\n return (\r\n <motion.div\r\n className={cn(\"font-bold cursor-pointer select-none\", className)}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n animate={{\r\n color: currentColor,\r\n textShadow: `0 0 10px ${currentColor}, 0 0 20px ${currentColor}, 0 0 30px ${currentColor}, 0 0 50px ${currentColor}`,\r\n }}\r\n transition={{ duration: 0.4, ease: \"easeInOut\" }}\r\n >\r\n {text}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default GlowingText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SlicedTextProps {\r\n text: string;\r\n className?: string;\r\n containerClassName?: string;\r\n splitSpacing?: number;\r\n}\r\n\r\nexport function SlicedText({\r\n text = \"Sliced Text\",\r\n className = \"\",\r\n containerClassName = \"\",\r\n splitSpacing = 2,\r\n}: SlicedTextProps) {\r\n return (\r\n <motion.div\r\n className={cn(\"w-full text-center relative inline-block\", containerClassName)}\r\n whileHover=\"hover\"\r\n initial=\"default\"\r\n >\r\n <motion.div\r\n className={cn(\"absolute w-full text-4xl -ml-0.5\", className)}\r\n variants={{\r\n default: { clipPath: \"inset(0 0 50% 0)\", y: -splitSpacing / 2, opacity: 1 },\r\n hover: { clipPath: \"inset(0 0 0 0)\", y: 0, opacity: 0 },\r\n }}\r\n transition={{ duration: 0.1 }}\r\n >\r\n {text}\r\n </motion.div>\r\n <motion.div\r\n className={cn(\"absolute w-full text-4xl\", className)}\r\n variants={{\r\n default: { clipPath: \"inset(50% 0 0 0)\", y: splitSpacing / 2, opacity: 1 },\r\n hover: { clipPath: \"inset(0 0 0 0)\", y: 0, opacity: 1 },\r\n }}\r\n transition={{ duration: 0.1 }}\r\n >\r\n {text}\r\n </motion.div>\r\n <div className={cn(\"invisible text-4xl\", className)}>{text}</div>\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default SlicedText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState, useRef } from \"react\";\r\nimport { motion, HTMLMotionProps } from \"framer-motion\";\r\n\r\ninterface DecryptedTextProps extends HTMLMotionProps<\"span\"> {\r\n text: string;\r\n speed?: number;\r\n maxIterations?: number;\r\n sequential?: boolean;\r\n revealDirection?: \"start\" | \"end\" | \"center\";\r\n useOriginalCharsOnly?: boolean;\r\n characters?: string;\r\n className?: string;\r\n parentClassName?: string;\r\n encryptedClassName?: string;\r\n animateOn?: \"view\" | \"hover\" | \"both\";\r\n}\r\n\r\nexport function DecryptedText({\r\n text,\r\n speed = 50,\r\n maxIterations = 10,\r\n sequential = false,\r\n revealDirection = \"start\",\r\n useOriginalCharsOnly = false,\r\n characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#$%^&*()_+\",\r\n className = \"\",\r\n parentClassName = \"\",\r\n encryptedClassName = \"\",\r\n animateOn = \"hover\",\r\n ...props\r\n}: DecryptedTextProps) {\r\n const [displayText, setDisplayText] = useState<string>(text);\r\n const [isHovering, setIsHovering] = useState<boolean>(false);\r\n const [isScrambling, setIsScrambling] = useState<boolean>(false);\r\n const [revealedIndices, setRevealedIndices] = useState<Set<number>>(new Set());\r\n const [hasAnimated, setHasAnimated] = useState<boolean>(false);\r\n const containerRef = useRef<HTMLSpanElement>(null);\r\n\r\n useEffect(() => {\r\n let interval: NodeJS.Timeout;\r\n let currentIteration = 0;\r\n\r\n const getNextIndex = (revealedSet: Set<number>): number => {\r\n const textLength = text.length;\r\n switch (revealDirection) {\r\n case \"start\":\r\n return revealedSet.size;\r\n case \"end\":\r\n return textLength - 1 - revealedSet.size;\r\n case \"center\": {\r\n const middle = Math.floor(textLength / 2);\r\n const offset = Math.floor(revealedSet.size / 2);\r\n const nextIndex = revealedSet.size % 2 === 0 ? middle + offset : middle - offset - 1;\r\n if (nextIndex >= 0 && nextIndex < textLength && !revealedSet.has(nextIndex)) {\r\n return nextIndex;\r\n }\r\n for (let i = 0; i < textLength; i++) {\r\n if (!revealedSet.has(i)) return i;\r\n }\r\n return 0;\r\n }\r\n default:\r\n return revealedSet.size;\r\n }\r\n };\r\n\r\n const availableChars = useOriginalCharsOnly\r\n ? Array.from(new Set(text.split(\"\"))).filter((char) => char !== \" \")\r\n : characters.split(\"\");\r\n\r\n const shuffleText = (originalText: string, currentRevealed: Set<number>): string => {\r\n if (useOriginalCharsOnly) {\r\n const positions = originalText.split(\"\").map((char, i) => ({\r\n char,\r\n isSpace: char === \" \",\r\n index: i,\r\n isRevealed: currentRevealed.has(i),\r\n }));\r\n\r\n const nonSpaceChars = positions.filter((p) => !p.isSpace && !p.isRevealed).map((p) => p.char);\r\n\r\n for (let i = nonSpaceChars.length - 1; i > 0; i--) {\r\n const j = Math.floor(Math.random() * (i + 1));\r\n [nonSpaceChars[i], nonSpaceChars[j]] = [nonSpaceChars[j], nonSpaceChars[i]];\r\n }\r\n\r\n let charIndex = 0;\r\n return positions\r\n .map((p) => {\r\n if (p.isSpace) return \" \";\r\n if (p.isRevealed) return originalText[p.index];\r\n return nonSpaceChars[charIndex++];\r\n })\r\n .join(\"\");\r\n } else {\r\n return originalText\r\n .split(\"\")\r\n .map((char, i) => {\r\n if (char === \" \") return \" \";\r\n if (currentRevealed.has(i)) return originalText[i];\r\n return availableChars[Math.floor(Math.random() * availableChars.length)];\r\n })\r\n .join(\"\");\r\n }\r\n };\r\n\r\n if (isHovering) {\r\n setIsScrambling(true);\r\n interval = setInterval(() => {\r\n setRevealedIndices((prevRevealed) => {\r\n if (sequential) {\r\n if (prevRevealed.size < text.length) {\r\n const nextIndex = getNextIndex(prevRevealed);\r\n const newRevealed = new Set(prevRevealed);\r\n newRevealed.add(nextIndex);\r\n setDisplayText(shuffleText(text, newRevealed));\r\n return newRevealed;\r\n } else {\r\n clearInterval(interval);\r\n setIsScrambling(false);\r\n return prevRevealed;\r\n }\r\n } else {\r\n setDisplayText(shuffleText(text, prevRevealed));\r\n currentIteration++;\r\n if (currentIteration >= maxIterations) {\r\n clearInterval(interval);\r\n setIsScrambling(false);\r\n setDisplayText(text);\r\n }\r\n return prevRevealed;\r\n }\r\n });\r\n }, speed);\r\n } else {\r\n setDisplayText(text);\r\n setRevealedIndices(new Set());\r\n setIsScrambling(false);\r\n }\r\n\r\n return () => {\r\n if (interval) clearInterval(interval);\r\n };\r\n }, [isHovering, text, speed, maxIterations, sequential, revealDirection, characters, useOriginalCharsOnly]);\r\n\r\n useEffect(() => {\r\n if (animateOn !== \"view\" && animateOn !== \"both\") return;\r\n\r\n const observerCallback = (entries: IntersectionObserverEntry[]) => {\r\n entries.forEach((entry) => {\r\n if (entry.isIntersecting && !hasAnimated) {\r\n setIsHovering(true);\r\n setHasAnimated(true);\r\n }\r\n });\r\n };\r\n\r\n const observer = new IntersectionObserver(observerCallback, { threshold: 0.1 });\r\n const currentRef = containerRef.current;\r\n if (currentRef) {\r\n observer.observe(currentRef);\r\n }\r\n\r\n return () => {\r\n if (currentRef) {\r\n observer.unobserve(currentRef);\r\n }\r\n };\r\n }, [animateOn, hasAnimated]);\r\n\r\n const hoverProps =\r\n animateOn === \"hover\" || animateOn === \"both\"\r\n ? {\r\n onMouseEnter: () => setIsHovering(true),\r\n onMouseLeave: () => setIsHovering(false),\r\n }\r\n : {};\r\n\r\n return (\r\n <motion.span\r\n className={parentClassName}\r\n ref={containerRef}\r\n style={{ display: \"inline-block\", whiteSpace: \"pre-wrap\" }}\r\n {...hoverProps}\r\n {...props}\r\n >\r\n <span className=\"sr-only\">{displayText}</span>\r\n <span aria-hidden=\"true\">\r\n {displayText.split(\"\").map((char, index) => {\r\n const isRevealedOrDone = revealedIndices.has(index) || !isScrambling || !isHovering;\r\n return (\r\n <span key={index} className={isRevealedOrDone ? className : encryptedClassName}>\r\n {char}\r\n </span>\r\n );\r\n })}\r\n </span>\r\n </motion.span>\r\n );\r\n}\r\n\r\nexport default DecryptedText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TrueFocusProps {\r\n sentence?: string;\r\n manualMode?: boolean;\r\n blurAmount?: number;\r\n borderColor?: string;\r\n glowColor?: string;\r\n animationDuration?: number;\r\n pauseBetweenAnimations?: number;\r\n className?: string;\r\n}\r\n\r\ninterface FocusRect {\r\n x: number;\r\n y: number;\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport function TrueFocus({\r\n sentence = \"True Focus\",\r\n manualMode = false,\r\n blurAmount = 5,\r\n borderColor = \"green\",\r\n glowColor = \"rgba(0, 255, 0, 0.6)\",\r\n animationDuration = 0.5,\r\n pauseBetweenAnimations = 1,\r\n className,\r\n}: TrueFocusProps) {\r\n const words = sentence.split(\" \");\r\n const [currentIndex, setCurrentIndex] = useState<number>(0);\r\n const [lastActiveIndex, setLastActiveIndex] = useState<number | null>(null);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const wordRefs = useRef<(HTMLSpanElement | null)[]>([]);\r\n const [focusRect, setFocusRect] = useState<FocusRect>({ x: 0, y: 0, width: 0, height: 0 });\r\n\r\n useEffect(() => {\r\n if (!manualMode) {\r\n const interval = setInterval(() => {\r\n setCurrentIndex((prev) => (prev + 1) % words.length);\r\n }, (animationDuration + pauseBetweenAnimations) * 1000);\r\n return () => clearInterval(interval);\r\n }\r\n }, [manualMode, animationDuration, pauseBetweenAnimations, words.length]);\r\n\r\n useEffect(() => {\r\n const updateFocusRect = () => {\r\n if (currentIndex === null || currentIndex === -1) return;\r\n if (!wordRefs.current[currentIndex] || !containerRef.current) return;\r\n const parentRect = containerRef.current.getBoundingClientRect();\r\n const activeRect = wordRefs.current[currentIndex]!.getBoundingClientRect();\r\n setFocusRect({\r\n x: activeRect.left - parentRect.left,\r\n y: activeRect.top - parentRect.top,\r\n width: activeRect.width,\r\n height: activeRect.height,\r\n });\r\n };\r\n updateFocusRect();\r\n window.addEventListener(\"resize\", updateFocusRect);\r\n return () => window.removeEventListener(\"resize\", updateFocusRect);\r\n }, [currentIndex, words.length]);\r\n\r\n return (\r\n <div ref={containerRef} className={cn(\"relative flex flex-wrap gap-3 p-12 items-center justify-center\", className)}>\r\n {words.map((word, index) => {\r\n const isActive = index === currentIndex;\r\n return (\r\n <span\r\n key={index}\r\n ref={(el) => { wordRefs.current[index] = el; }}\r\n className=\"text-4xl font-bold relative z-10\"\r\n style={{\r\n filter: isActive ? \"blur(0px)\" : `blur(${blurAmount}px)`,\r\n transition: `all ${animationDuration}s ease`,\r\n color: isActive ? \"#000\" : \"#666\",\r\n transform: isActive ? \"scale(1.05)\" : \"scale(1)\",\r\n }}\r\n onMouseEnter={() => manualMode && (setLastActiveIndex(index), setCurrentIndex(index))}\r\n onMouseLeave={() => manualMode && setCurrentIndex(lastActiveIndex ?? 0)}\r\n >\r\n {word}\r\n </span>\r\n );\r\n })}\r\n <motion.div\r\n className=\"absolute pointer-events-none\"\r\n animate={{ x: focusRect.x, y: focusRect.y, width: focusRect.width, height: focusRect.height, opacity: currentIndex >= 0 ? 1 : 0 }}\r\n transition={{ duration: animationDuration }}\r\n style={{ border: `2px solid ${borderColor}`, boxShadow: `0 0 10px ${glowColor}`, borderRadius: 4 }}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nexport default TrueFocus;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlassCardProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function GlassCard({ children, className, ...props }: GlassCardProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"rounded-2xl p-6\",\r\n \"bg-white/10 dark:bg-black/10\",\r\n \"backdrop-blur-xl\",\r\n \"border border-white/20 dark:border-white/10\",\r\n \"shadow-xl\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default GlassCard;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HoverCardProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function HoverCard({ children, className, ...props }: HoverCardProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"rounded-2xl p-6\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-200 dark:border-zinc-800\",\r\n \"shadow-lg\",\r\n \"transition-all duration-300 ease-out\",\r\n \"hover:shadow-2xl hover:-translate-y-1\",\r\n \"hover:border-zinc-300 dark:hover:border-zinc-700\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default HoverCard;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CardFlipProps {\r\n frontContent: React.ReactNode;\r\n backContent: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardFlip({ frontContent, backContent, className }: CardFlipProps) {\r\n const [isFlipped, setIsFlipped] = useState(false);\r\n\r\n return (\r\n <div\r\n className={cn(\"relative w-full h-full [perspective:1000px]\", className)}\r\n onMouseEnter={() => setIsFlipped(true)}\r\n onMouseLeave={() => setIsFlipped(false)}\r\n >\r\n <div\r\n className={cn(\r\n \"relative w-full h-full [transform-style:preserve-3d] transition-transform duration-700\",\r\n isFlipped ? \"[transform:rotateY(180deg)]\" : \"\"\r\n )}\r\n >\r\n {/* Front */}\r\n <div\r\n className={cn(\r\n \"absolute inset-0 w-full h-full [backface-visibility:hidden]\",\r\n \"rounded-2xl bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-200 dark:border-zinc-800\",\r\n \"shadow-lg p-6\"\r\n )}\r\n >\r\n {frontContent}\r\n </div>\r\n\r\n {/* Back */}\r\n <div\r\n className={cn(\r\n \"absolute inset-0 w-full h-full [backface-visibility:hidden] [transform:rotateY(180deg)]\",\r\n \"rounded-2xl bg-zinc-100 dark:bg-zinc-800\",\r\n \"border border-zinc-200 dark:border-zinc-700\",\r\n \"shadow-lg p-6\"\r\n )}\r\n >\r\n {backContent}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default CardFlip;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CardProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n hover?: boolean;\r\n}\r\n\r\nexport function Card({ children, className, hover = false }: CardProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"rounded-xl p-6\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-200 dark:border-zinc-800\",\r\n hover && \"transition-all duration-200 hover:shadow-lg hover:-translate-y-1\",\r\n className\r\n )}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\ninterface CardHeaderProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardHeader({ children, className }: CardHeaderProps) {\r\n return <div className={cn(\"mb-4\", className)}>{children}</div>;\r\n}\r\n\r\ninterface CardTitleProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardTitle({ children, className }: CardTitleProps) {\r\n return <h3 className={cn(\"text-lg font-semibold\", className)}>{children}</h3>;\r\n}\r\n\r\ninterface CardDescriptionProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardDescription({ children, className }: CardDescriptionProps) {\r\n return <p className={cn(\"text-sm text-zinc-500 dark:text-zinc-400\", className)}>{children}</p>;\r\n}\r\n\r\ninterface CardContentProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardContent({ children, className }: CardContentProps) {\r\n return <div className={cn(\"\", className)}>{children}</div>;\r\n}\r\n\r\ninterface CardFooterProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardFooter({ children, className }: CardFooterProps) {\r\n return <div className={cn(\"mt-4 pt-4 border-t border-zinc-200 dark:border-zinc-800\", className)}>{children}</div>;\r\n}\r\n\r\nexport default Card;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingDotsProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function LoadingDots({ className, size = \"md\" }: LoadingDotsProps) {\r\n const sizeClasses = {\r\n sm: \"w-1.5 h-1.5\",\r\n md: \"w-2.5 h-2.5\",\r\n lg: \"w-4 h-4\",\r\n };\r\n\r\n return (\r\n <div className={cn(\"flex items-center justify-center gap-1\", className)}>\r\n {[0, 1, 2].map((i) => (\r\n <div\r\n key={i}\r\n className={cn(\r\n sizeClasses[size],\r\n \"rounded-full bg-current animate-bounce\"\r\n )}\r\n style={{ animationDelay: `${i * 0.15}s` }}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingDots;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingSpinnerProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function LoadingSpinner({ className, size = \"md\" }: LoadingSpinnerProps) {\r\n const sizeClasses = {\r\n sm: \"w-4 h-4 border-2\",\r\n md: \"w-8 h-8 border-3\",\r\n lg: \"w-12 h-12 border-4\",\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\r\n sizeClasses[size],\r\n \"rounded-full border-current border-t-transparent animate-spin\",\r\n className\r\n )}\r\n />\r\n );\r\n}\r\n\r\nexport default LoadingSpinner;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingBarProps {\r\n className?: string;\r\n color?: string;\r\n}\r\n\r\nexport function LoadingBar({ className, color = \"bg-blue-500\" }: LoadingBarProps) {\r\n return (\r\n <div className={cn(\"h-1 w-full overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800\", className)}>\r\n <motion.div\r\n className={cn(\"h-full rounded-full\", color)}\r\n initial={{ x: \"-100%\" }}\r\n animate={{ x: \"100%\" }}\r\n transition={{\r\n repeat: Infinity,\r\n duration: 1.5,\r\n ease: \"easeInOut\",\r\n }}\r\n style={{ width: \"50%\" }}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingBar;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingPulseProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n color?: string;\r\n}\r\n\r\nconst sizes = {\r\n sm: \"w-8 h-8\",\r\n md: \"w-12 h-12\",\r\n lg: \"w-16 h-16\",\r\n};\r\n\r\nexport function LoadingPulse({ className, size = \"md\", color = \"bg-blue-500\" }: LoadingPulseProps) {\r\n return (\r\n <div className={cn(\"relative\", sizes[size], className)}>\r\n <motion.div\r\n className={cn(\"absolute inset-0 rounded-full\", color)}\r\n animate={{\r\n scale: [1, 1.5, 1],\r\n opacity: [0.5, 0, 0.5],\r\n }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n <div className={cn(\"absolute inset-2 rounded-full\", color)} />\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingPulse;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingBounceProps {\r\n className?: string;\r\n color?: string;\r\n}\r\n\r\nexport function LoadingBounce({ className, color = \"bg-zinc-900 dark:bg-white\" }: LoadingBounceProps) {\r\n return (\r\n <div className={cn(\"flex gap-1\", className)}>\r\n {[0, 1, 2].map((i) => (\r\n <motion.div\r\n key={i}\r\n className={cn(\"w-3 h-3 rounded-full\", color)}\r\n animate={{ y: [0, -10, 0] }}\r\n transition={{\r\n duration: 0.6,\r\n repeat: Infinity,\r\n delay: i * 0.1,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingBounce;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingFlowerProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingFlower({ className = \"\" }: LoadingFlowerProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"relative\">\r\n <div className=\"flex items-center justify-center\">\r\n {[...Array(8)].map((_, i) => (\r\n <div\r\n key={i}\r\n className=\"absolute w-3 h-3 rounded-full bg-black dark:bg-white\"\r\n style={{\r\n transform: `rotate(${i * 45}deg) translateY(-20px)`,\r\n animation: `flower-pulse 1.5s ease-in-out infinite`,\r\n animationDelay: `${i * 0.1}s`,\r\n }}\r\n />\r\n ))}\r\n <div className=\"w-4 h-4 rounded-full bg-zinc-400\" />\r\n </div>\r\n </div>\r\n <style jsx>{`\r\n @keyframes flower-pulse {\r\n 0%, 100% { opacity: 0.3; scale: 0.8; }\r\n 50% { opacity: 1; scale: 1.2; }\r\n }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingFlower;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingGeometricProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingGeometric({ className = \"\" }: LoadingGeometricProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"flex justify-center items-center\">\r\n <div className=\"w-36 h-36 flex justify-center items-center relative\">\r\n <div className=\"w-4 h-16 absolute bg-zinc-600 dark:bg-zinc-400 animate-[move-h_1.2s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\" />\r\n <div className=\"w-4 h-16 absolute bg-zinc-800 dark:bg-zinc-200 rotate-90 animate-[move-v_1.2s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\" />\r\n <div className=\"absolute top-4 left-5 font-black text-lg text-black dark:text-white animate-[rot_0.8s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\">X</div>\r\n <div className=\"absolute bottom-0 right-0 font-black text-3xl text-black dark:text-white animate-[scale_0.8s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\">*</div>\r\n </div>\r\n </div>\r\n <style jsx>{`\r\n @keyframes move-h { 0% { top: 0; opacity: 0; } 25% { opacity: 1; } 50% { top: 30%; opacity: 1; } 75% { opacity: 1; } 100% { top: 100%; opacity: 0; } }\r\n @keyframes move-v { 0% { left: 0; opacity: 0; } 25% { opacity: 1; } 50% { left: 45%; opacity: 1; } 75% { opacity: 1; } 100% { left: 100%; opacity: 0; } }\r\n @keyframes rot { 0% { transform: rotate(0deg); } 50% { transform: rotate(180deg); } 100% { transform: rotate(360deg); } }\r\n @keyframes scale { 0% { scale: 1; } 50% { scale: 1.9; } 100% { scale: 1; } }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingGeometric;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingMorphProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingMorph({ className = \"\" }: LoadingMorphProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"w-20 h-20 rounded-full border-8 border-transparent border-t-black dark:border-t-white border-r-zinc-600 dark:border-r-zinc-400 border-b-zinc-400 dark:border-b-zinc-600 border-l-zinc-200 dark:border-l-zinc-800 animate-[morph_2s_ease-in-out_infinite,rotate-color_2s_linear_infinite]\">\r\n <style jsx>{`\r\n @keyframes rotate-color { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }\r\n @keyframes morph { 0%, 100% { border-radius: 50%; width: 80px; height: 80px; } 50% { border-radius: 10%; width: 100px; height: 100px; } }\r\n `}</style>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingMorph;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingRingsProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingRings({ className = \"\" }: LoadingRingsProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"w-16 h-16\">\r\n <div className=\"box-border w-full h-full border-[10px] border-zinc-300 dark:border-zinc-800 border-t-zinc-700 dark:border-t-zinc-200 border-b-zinc-500 rounded-full animate-[rotate_5s_linear_infinite]\">\r\n <div className=\"box-border w-full h-full border-[10px] border-zinc-300 dark:border-zinc-800 border-t-zinc-600 dark:border-t-zinc-400 border-b-black dark:border-b-white rounded-full animate-[rotate_2.5s_linear_infinite]\" />\r\n </div>\r\n <style jsx>{`\r\n @keyframes rotate { 0% { transform: scale(1) rotate(360deg); } 50% { transform: scale(0.8) rotate(-360deg); } 100% { transform: scale(1) rotate(360deg); } }\r\n `}</style>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingRings;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingTextProps {\r\n text?: string;\r\n className?: string;\r\n}\r\n\r\nexport function LoadingText({ text = \"loading\", className = \"\" }: LoadingTextProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"relative w-20 h-12\">\r\n <span className=\"absolute top-0 left-0 m-0 p-0 text-black dark:text-white text-sm tracking-wider animate-[loading-text_3.5s_ease_both_infinite]\">\r\n {text}\r\n </span>\r\n <span className=\"absolute bottom-0 left-0 block h-4 w-4 rounded-full bg-black dark:bg-white animate-[loading-bar_3.5s_ease_both_infinite]\">\r\n <span className=\"absolute inset-0 rounded-full bg-zinc-400 dark:bg-zinc-500 animate-[loading-bar-before_3.5s_ease_both_infinite]\" />\r\n </span>\r\n <style jsx>{`\r\n @keyframes loading-text { 0% { letter-spacing: 1px; transform: translateX(0px); } 40% { letter-spacing: 2px; transform: translateX(26px); } 80% { letter-spacing: 1px; transform: translateX(32px); } 90% { letter-spacing: 2px; transform: translateX(0px); } 100% { letter-spacing: 1px; transform: translateX(0px); } }\r\n @keyframes loading-bar { 0% { width: 16px; transform: translateX(0px); } 40% { width: 100%; transform: translateX(0px); } 80% { width: 16px; transform: translateX(64px); } 90% { width: 100%; transform: translateX(0px); } 100% { width: 16px; transform: translateX(0px); } }\r\n @keyframes loading-bar-before { 0% { transform: translateX(0px); width: 16px; } 40% { transform: translateX(0%); width: 80%; } 80% { width: 100%; transform: translateX(0px); } 90% { width: 80%; transform: translateX(15px); } 100% { transform: translateX(0px); width: 16px; } }\r\n `}</style>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingText;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingWordsProps {\r\n words?: string[];\r\n className?: string;\r\n}\r\n\r\nexport function LoadingWords({\r\n words = [\"buttons\", \"forms\", \"switches\", \"cards\", \"loaders\"],\r\n className = \"\",\r\n}: LoadingWordsProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"text-zinc-400 dark:text-zinc-500 font-medium text-2xl box-border h-10 px-2.5 py-2 flex items-center rounded-lg\">\r\n <span className=\"mr-2\">loading</span>\r\n <div className=\"overflow-hidden relative h-full\">\r\n <div className=\"absolute inset-0 bg-gradient-to-b from-white via-transparent to-white dark:from-zinc-950 dark:via-transparent dark:to-zinc-950 z-10\" />\r\n {words.map((word, index) => (\r\n <span\r\n key={index}\r\n className=\"block h-full pl-1.5 text-black dark:text-white animate-[spin-words_4s_infinite]\"\r\n style={{ animationDelay: `${index * 0.8}s` }}\r\n >\r\n {word}\r\n </span>\r\n ))}\r\n </div>\r\n </div>\r\n <style jsx>{`\r\n @keyframes spin-words { 10% { transform: translateY(-102%); } 25% { transform: translateY(-100%); } 35% { transform: translateY(-202%); } 50% { transform: translateY(-200%); } 60% { transform: translateY(-302%); } 75% { transform: translateY(-300%); } 85% { transform: translateY(-402%); } 100% { transform: translateY(-400%); } }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingWords;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useMemo, useState } from \"react\";\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport interface AnimatedListProps {\r\n className?: string;\r\n children: React.ReactNode;\r\n delay?: number;\r\n}\r\n\r\nexport function AnimatedList({\r\n className,\r\n children,\r\n delay = 1000,\r\n}: AnimatedListProps) {\r\n const [index, setIndex] = useState(0);\r\n const childrenArray = React.Children.toArray(children);\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setIndex((prevIndex) => (prevIndex + 1) % childrenArray.length);\r\n }, delay);\r\n return () => clearInterval(interval);\r\n }, [childrenArray.length, delay]);\r\n\r\n const itemsToShow = useMemo(\r\n () => childrenArray.slice(0, index + 1).reverse(),\r\n [index, childrenArray]\r\n );\r\n\r\n return (\r\n <div className={cn(\"flex flex-col items-center gap-4\", className)}>\r\n <AnimatePresence>\r\n {itemsToShow.map((item, idx) => (\r\n <AnimatedListItem key={idx}>\r\n {item}\r\n </AnimatedListItem>\r\n ))}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport function AnimatedListItem({ children }: { children: React.ReactNode }) {\r\n return (\r\n <motion.div\r\n initial={{ scale: 0, opacity: 0 }}\r\n animate={{ scale: 1, opacity: 1 }}\r\n exit={{ scale: 0, opacity: 0 }}\r\n transition={{ type: \"spring\", stiffness: 350, damping: 40 }}\r\n layout\r\n className=\"mx-auto w-full\"\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default AnimatedList;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SkeletonProps {\r\n className?: string;\r\n variant?: \"text\" | \"circular\" | \"rectangular\";\r\n width?: string | number;\r\n height?: string | number;\r\n}\r\n\r\nexport function Skeleton({ \r\n className, \r\n variant = \"text\",\r\n width,\r\n height \r\n}: SkeletonProps) {\r\n const variants = {\r\n text: \"h-4 rounded\",\r\n circular: \"rounded-full\",\r\n rectangular: \"rounded-lg\",\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"animate-pulse bg-zinc-200 dark:bg-zinc-800\",\r\n variants[variant],\r\n className\r\n )}\r\n style={{ width, height }}\r\n />\r\n );\r\n}\r\n\r\nexport default Skeleton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TooltipProps {\r\n children: React.ReactNode;\r\n content: string;\r\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\r\n className?: string;\r\n}\r\n\r\nexport function Tooltip({ \r\n children, \r\n content, \r\n position = \"top\",\r\n className \r\n}: TooltipProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n\r\n const positions = {\r\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\r\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\r\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\r\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\r\n };\r\n\r\n const animations = {\r\n top: { initial: { opacity: 0, y: 5 }, animate: { opacity: 1, y: 0 } },\r\n bottom: { initial: { opacity: 0, y: -5 }, animate: { opacity: 1, y: 0 } },\r\n left: { initial: { opacity: 0, x: 5 }, animate: { opacity: 1, x: 0 } },\r\n right: { initial: { opacity: 0, x: -5 }, animate: { opacity: 1, x: 0 } },\r\n };\r\n\r\n return (\r\n <div\r\n className=\"relative inline-block\"\r\n onMouseEnter={() => setIsVisible(true)}\r\n onMouseLeave={() => setIsVisible(false)}\r\n >\r\n {children}\r\n <AnimatePresence>\r\n {isVisible && (\r\n <motion.div\r\n className={cn(\r\n \"absolute z-50 px-2 py-1 text-sm text-white bg-zinc-900 dark:bg-zinc-100 dark:text-zinc-900 rounded whitespace-nowrap\",\r\n positions[position],\r\n className\r\n )}\r\n initial={animations[position].initial}\r\n animate={animations[position].animate}\r\n exit={animations[position].initial}\r\n transition={{ duration: 0.15 }}\r\n >\r\n {content}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Tooltip;\r\n","\"use client\";\r\n\r\nimport { useState, useRef } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TooltipMinimalProps {\r\n content: string;\r\n children: React.ReactNode;\r\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\r\n delay?: number;\r\n className?: string;\r\n}\r\n\r\nexport function TooltipMinimal({\r\n content,\r\n children,\r\n position = \"top\",\r\n delay = 300,\r\n className,\r\n}: TooltipMinimalProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n const timeoutRef = useRef<NodeJS.Timeout>(undefined);\r\n\r\n const showTooltip = () => {\r\n timeoutRef.current = setTimeout(() => setIsVisible(true), delay);\r\n };\r\n\r\n const hideTooltip = () => {\r\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\r\n setIsVisible(false);\r\n };\r\n\r\n const getPositionClasses = () => {\r\n const positions = {\r\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\r\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\r\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\r\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\r\n };\r\n return positions[position];\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative inline-block\", className)} onMouseEnter={showTooltip} onMouseLeave={hideTooltip}>\r\n {children}\r\n <AnimatePresence>\r\n {isVisible && (\r\n <motion.div\r\n initial={{ opacity: 0, scale: 0.95 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n exit={{ opacity: 0, scale: 0.95 }}\r\n transition={{ duration: 0.15 }}\r\n className={cn(\"absolute z-50 px-3 py-2 text-sm bg-popover border border-border rounded-lg shadow-md whitespace-nowrap\", getPositionClasses())}\r\n >\r\n {content}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default TooltipMinimal;\r\n","\"use client\";\r\n\r\nimport { useState, useRef } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TooltipAnimatedProps {\r\n content: string;\r\n children: React.ReactNode;\r\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\r\n delay?: number;\r\n animation?: \"fade\" | \"slide\" | \"bounce\" | \"scale\";\r\n className?: string;\r\n}\r\n\r\nexport function TooltipAnimated({\r\n content,\r\n children,\r\n position = \"top\",\r\n delay = 200,\r\n animation = \"slide\",\r\n className,\r\n}: TooltipAnimatedProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n const timeoutRef = useRef<NodeJS.Timeout>(undefined);\r\n\r\n const showTooltip = () => {\r\n timeoutRef.current = setTimeout(() => setIsVisible(true), delay);\r\n };\r\n\r\n const hideTooltip = () => {\r\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\r\n setIsVisible(false);\r\n };\r\n\r\n const getPositionClasses = () => {\r\n const positions = {\r\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-3\",\r\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-3\",\r\n left: \"right-full top-1/2 -translate-y-1/2 mr-3\",\r\n right: \"left-full top-1/2 -translate-y-1/2 ml-3\",\r\n };\r\n return positions[position];\r\n };\r\n\r\n const getAnimationProps = () => {\r\n const slideOffset = 10;\r\n const offsets = { top: { y: slideOffset }, bottom: { y: -slideOffset }, left: { x: slideOffset }, right: { x: -slideOffset } };\r\n const { x = 0, y = 0 } = offsets[position];\r\n\r\n const animations = {\r\n fade: { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 } },\r\n scale: { initial: { opacity: 0, scale: 0.8 }, animate: { opacity: 1, scale: 1 }, exit: { opacity: 0, scale: 0.8 } },\r\n bounce: { initial: { opacity: 0, scale: 0.3, y: position === \"top\" ? 10 : -10 }, animate: { opacity: 1, scale: 1, y: 0 }, exit: { opacity: 0, scale: 0.3, y: position === \"top\" ? 10 : -10 } },\r\n slide: { initial: { opacity: 0, x, y }, animate: { opacity: 1, x: 0, y: 0 }, exit: { opacity: 0, x, y } },\r\n };\r\n return { ...animations[animation], transition: { type: \"spring\", stiffness: 300, damping: 25 } };\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative inline-block\", className)} onMouseEnter={showTooltip} onMouseLeave={hideTooltip}>\r\n {children}\r\n <AnimatePresence>\r\n {isVisible && (\r\n <motion.div {...getAnimationProps()} className={cn(\"absolute z-50 px-4 py-2 text-sm bg-popover border border-border rounded-xl shadow-lg whitespace-nowrap backdrop-blur-sm\", getPositionClasses())}>\r\n {content}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default TooltipAnimated;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BadgeProps {\r\n children: React.ReactNode;\r\n variant?: \"default\" | \"success\" | \"warning\" | \"danger\" | \"info\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n className?: string;\r\n}\r\n\r\nconst variants = {\r\n default: \"bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-zinc-100\",\r\n success: \"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400\",\r\n warning: \"bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400\",\r\n danger: \"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400\",\r\n info: \"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400\",\r\n};\r\n\r\nconst sizes = {\r\n sm: \"px-2 py-0.5 text-xs\",\r\n md: \"px-2.5 py-1 text-sm\",\r\n lg: \"px-3 py-1.5 text-base\",\r\n};\r\n\r\nexport function Badge({ \r\n children, \r\n variant = \"default\", \r\n size = \"md\",\r\n className \r\n}: BadgeProps) {\r\n return (\r\n <span\r\n className={cn(\r\n \"inline-flex items-center font-medium rounded-full\",\r\n variants[variant],\r\n sizes[size],\r\n className\r\n )}\r\n >\r\n {children}\r\n </span>\r\n );\r\n}\r\n\r\nexport default Badge;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface AvatarProps {\r\n src?: string;\r\n alt?: string;\r\n fallback?: string;\r\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n className?: string;\r\n}\r\n\r\nconst sizes = {\r\n sm: \"w-8 h-8 text-xs\",\r\n md: \"w-10 h-10 text-sm\",\r\n lg: \"w-12 h-12 text-base\",\r\n xl: \"w-16 h-16 text-lg\",\r\n};\r\n\r\nexport function Avatar({ \r\n src, \r\n alt = \"\", \r\n fallback,\r\n size = \"md\",\r\n className \r\n}: AvatarProps) {\r\n const initials = fallback || alt.split(\" \").map(n => n[0]).join(\"\").slice(0, 2).toUpperCase();\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"relative inline-flex items-center justify-center rounded-full bg-zinc-200 dark:bg-zinc-800 overflow-hidden\",\r\n sizes[size],\r\n className\r\n )}\r\n >\r\n {src ? (\r\n <img src={src} alt={alt} className=\"w-full h-full object-cover\" />\r\n ) : (\r\n <span className=\"font-medium text-zinc-600 dark:text-zinc-400\">\r\n {initials}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Avatar;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ProgressProps {\r\n value: number;\r\n max?: number;\r\n className?: string;\r\n color?: string;\r\n showLabel?: boolean;\r\n}\r\n\r\nexport function Progress({ \r\n value, \r\n max = 100, \r\n className,\r\n color = \"bg-blue-500\",\r\n showLabel = false\r\n}: ProgressProps) {\r\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\r\n\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n <div className=\"h-2 w-full overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800\">\r\n <motion.div\r\n className={cn(\"h-full rounded-full\", color)}\r\n initial={{ width: 0 }}\r\n animate={{ width: `${percentage}%` }}\r\n transition={{ duration: 0.5, ease: \"easeOut\" }}\r\n />\r\n </div>\r\n {showLabel && (\r\n <span className=\"mt-1 text-sm text-zinc-600 dark:text-zinc-400\">\r\n {Math.round(percentage)}%\r\n </span>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Progress;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SwitchProps {\r\n checked?: boolean;\r\n onChange?: (checked: boolean) => void;\r\n disabled?: boolean;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n className?: string;\r\n}\r\n\r\nconst sizes = {\r\n sm: { track: \"w-8 h-4\", thumb: \"w-3 h-3\", translate: 16 },\r\n md: { track: \"w-11 h-6\", thumb: \"w-5 h-5\", translate: 20 },\r\n lg: { track: \"w-14 h-7\", thumb: \"w-6 h-6\", translate: 28 },\r\n};\r\n\r\nexport function Switch({ \r\n checked = false, \r\n onChange, \r\n disabled = false,\r\n size = \"md\",\r\n className \r\n}: SwitchProps) {\r\n const sizeConfig = sizes[size];\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n role=\"switch\"\r\n aria-checked={checked}\r\n disabled={disabled}\r\n onClick={() => onChange?.(!checked)}\r\n className={cn(\r\n \"relative inline-flex shrink-0 cursor-pointer rounded-full transition-colors\",\r\n checked ? \"bg-blue-500\" : \"bg-zinc-300 dark:bg-zinc-700\",\r\n disabled && \"opacity-50 cursor-not-allowed\",\r\n sizeConfig.track,\r\n className\r\n )}\r\n >\r\n <motion.span\r\n className={cn(\r\n \"pointer-events-none inline-block rounded-full bg-white shadow-lg\",\r\n sizeConfig.thumb\r\n )}\r\n animate={{ x: checked ? sizeConfig.translate : 2 }}\r\n transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\r\n style={{ marginTop: 2 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default Switch;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface AccordionItem {\r\n title: string;\r\n content: React.ReactNode;\r\n}\r\n\r\ninterface AccordionProps {\r\n items: AccordionItem[];\r\n className?: string;\r\n allowMultiple?: boolean;\r\n}\r\n\r\nexport function Accordion({ items, className, allowMultiple = false }: AccordionProps) {\r\n const [openItems, setOpenItems] = useState<number[]>([]);\r\n\r\n const toggleItem = (index: number) => {\r\n if (allowMultiple) {\r\n setOpenItems((prev) =>\r\n prev.includes(index) ? prev.filter((i) => i !== index) : [...prev, index]\r\n );\r\n } else {\r\n setOpenItems((prev) => (prev.includes(index) ? [] : [index]));\r\n }\r\n };\r\n\r\n return (\r\n <div className={cn(\"w-full space-y-2\", className)}>\r\n {items.map((item, index) => (\r\n <div\r\n key={index}\r\n className=\"border border-zinc-200 dark:border-zinc-800 rounded-lg overflow-hidden\"\r\n >\r\n <button\r\n onClick={() => toggleItem(index)}\r\n className=\"w-full px-4 py-3 flex items-center justify-between text-left bg-zinc-50 dark:bg-zinc-900 hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors\"\r\n >\r\n <span className=\"font-medium\">{item.title}</span>\r\n <motion.svg\r\n animate={{ rotate: openItems.includes(index) ? 180 : 0 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"w-5 h-5\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\r\n </motion.svg>\r\n </button>\r\n <AnimatePresence>\r\n {openItems.includes(index) && (\r\n <motion.div\r\n initial={{ height: 0, opacity: 0 }}\r\n animate={{ height: \"auto\", opacity: 1 }}\r\n exit={{ height: 0, opacity: 0 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n <div className=\"px-4 py-3 bg-white dark:bg-zinc-950\">{item.content}</div>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Accordion;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface Tab {\r\n label: string;\r\n content: React.ReactNode;\r\n}\r\n\r\ninterface TabsProps {\r\n tabs: Tab[];\r\n className?: string;\r\n defaultIndex?: number;\r\n}\r\n\r\nexport function Tabs({ tabs, className, defaultIndex = 0 }: TabsProps) {\r\n const [activeIndex, setActiveIndex] = useState(defaultIndex);\r\n\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n <div className=\"relative flex border-b border-zinc-200 dark:border-zinc-800\">\r\n {tabs.map((tab, index) => (\r\n <button\r\n key={index}\r\n onClick={() => setActiveIndex(index)}\r\n className={cn(\r\n \"px-4 py-2 text-sm font-medium transition-colors relative\",\r\n activeIndex === index\r\n ? \"text-zinc-900 dark:text-white\"\r\n : \"text-zinc-500 hover:text-zinc-700 dark:text-zinc-400 dark:hover:text-zinc-200\"\r\n )}\r\n >\r\n {tab.label}\r\n {activeIndex === index && (\r\n <motion.div\r\n layoutId=\"activeTab\"\r\n className=\"absolute bottom-0 left-0 right-0 h-0.5 bg-zinc-900 dark:bg-white\"\r\n transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\r\n />\r\n )}\r\n </button>\r\n ))}\r\n </div>\r\n <motion.div\r\n key={activeIndex}\r\n initial={{ opacity: 0, y: 10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"py-4\"\r\n >\r\n {tabs[activeIndex].content}\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Tabs;\r\n","\"use client\";\r\n\r\nimport { useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ModalProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n className?: string;\r\n title?: string;\r\n}\r\n\r\nexport function Modal({ isOpen, onClose, children, className, title }: ModalProps) {\r\n useEffect(() => {\r\n const handleEscape = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") onClose();\r\n };\r\n if (isOpen) {\r\n document.addEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"hidden\";\r\n }\r\n return () => {\r\n document.removeEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"unset\";\r\n };\r\n }, [isOpen, onClose]);\r\n\r\n return (\r\n <AnimatePresence>\r\n {isOpen && (\r\n <>\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n onClick={onClose}\r\n className=\"fixed inset-0 bg-black/50 z-50\"\r\n />\r\n <motion.div\r\n initial={{ opacity: 0, scale: 0.95, y: 20 }}\r\n animate={{ opacity: 1, scale: 1, y: 0 }}\r\n exit={{ opacity: 0, scale: 0.95, y: 20 }}\r\n transition={{ type: \"spring\", damping: 25, stiffness: 300 }}\r\n className={cn(\r\n \"fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-50\",\r\n \"w-full max-w-md p-6 rounded-xl\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"shadow-xl\",\r\n className\r\n )}\r\n >\r\n {title && (\r\n <div className=\"flex items-center justify-between mb-4\">\r\n <h2 className=\"text-lg font-semibold\">{title}</h2>\r\n <button\r\n onClick={onClose}\r\n className=\"p-1 rounded-lg hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors\"\r\n >\r\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n </div>\r\n )}\r\n {children}\r\n </motion.div>\r\n </>\r\n )}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport default Modal;\r\n","\"use client\";\r\n\r\nimport { useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface DrawerProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n className?: string;\r\n position?: \"left\" | \"right\" | \"bottom\";\r\n}\r\n\r\nexport function Drawer({ isOpen, onClose, children, className, position = \"right\" }: DrawerProps) {\r\n useEffect(() => {\r\n const handleEscape = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") onClose();\r\n };\r\n if (isOpen) {\r\n document.addEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"hidden\";\r\n }\r\n return () => {\r\n document.removeEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"unset\";\r\n };\r\n }, [isOpen, onClose]);\r\n\r\n const variants = {\r\n left: { initial: { x: \"-100%\" }, animate: { x: 0 }, exit: { x: \"-100%\" } },\r\n right: { initial: { x: \"100%\" }, animate: { x: 0 }, exit: { x: \"100%\" } },\r\n bottom: { initial: { y: \"100%\" }, animate: { y: 0 }, exit: { y: \"100%\" } },\r\n };\r\n\r\n const positionClasses = {\r\n left: \"left-0 top-0 h-full w-80\",\r\n right: \"right-0 top-0 h-full w-80\",\r\n bottom: \"bottom-0 left-0 right-0 h-auto max-h-[80vh]\",\r\n };\r\n\r\n return (\r\n <AnimatePresence>\r\n {isOpen && (\r\n <>\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n onClick={onClose}\r\n className=\"fixed inset-0 bg-black/50 z-50\"\r\n />\r\n <motion.div\r\n initial={variants[position].initial}\r\n animate={variants[position].animate}\r\n exit={variants[position].exit}\r\n transition={{ type: \"spring\", damping: 25, stiffness: 300 }}\r\n className={cn(\r\n \"fixed z-50 p-6\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"shadow-xl\",\r\n positionClasses[position],\r\n className\r\n )}\r\n >\r\n <button\r\n onClick={onClose}\r\n className=\"absolute top-4 right-4 p-1 rounded-lg hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors\"\r\n >\r\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n {children}\r\n </motion.div>\r\n </>\r\n )}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport default Drawer;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface AlertProps {\r\n className?: string;\r\n close?: boolean;\r\n children?: React.ReactNode;\r\n onClose?: () => void;\r\n}\r\n\r\ninterface AlertIconProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\ninterface AlertTitleProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\ninterface AlertToolbarProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function Alert({ className = \"\", close = false, children, onClose }: AlertProps) {\r\n const [isVisible, setIsVisible] = React.useState(true);\r\n\r\n if (!isVisible) return null;\r\n\r\n const handleClose = () => {\r\n setIsVisible(false);\r\n onClose?.();\r\n };\r\n\r\n return (\r\n <div className={cn(\"min-h-[400px] w-full flex items-center justify-center p-4\", className)}>\r\n <div className=\"flex flex-col items-center w-full lg:max-w-[75%] gap-6\">\r\n <div className=\"relative flex items-center gap-3 rounded-lg border border-zinc-300 dark:border-zinc-700 bg-transparent px-4 py-3 shadow-sm w-full max-w-md transition-all duration-200\">\r\n {children}\r\n {close && (\r\n <button\r\n onClick={handleClose}\r\n className=\"absolute top-2 right-2 text-gray-500 hover:text-gray-700 dark:text-white/60 dark:hover:text-white transition-colors\"\r\n >\r\n <svg className=\"h-4 w-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport function AlertIcon({ children, className }: AlertIconProps) {\r\n return <div className={cn(\"text-primary flex-shrink-0\", className)}>{children}</div>;\r\n}\r\n\r\nexport function AlertTitle({ children, className }: AlertTitleProps) {\r\n return <span className={cn(\"text-foreground font-medium text-sm flex-1\", className)}>{children}</span>;\r\n}\r\n\r\nexport function AlertToolbar({ children, className }: AlertToolbarProps) {\r\n return <div className={cn(\"flex items-center gap-2\", className)}>{children}</div>;\r\n}\r\n","\"use client\";\r\n\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TerminalProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n title?: string;\r\n}\r\n\r\ninterface TypingAnimationProps {\r\n children: string;\r\n className?: string;\r\n delay?: number;\r\n speed?: number;\r\n}\r\n\r\ninterface AnimatedSpanProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function Terminal({ children, className, title = \"Terminal\" }: TerminalProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"relative w-full max-w-2xl mx-auto bg-zinc-100 dark:bg-black rounded-lg overflow-hidden shadow-2xl\",\r\n \"border border-zinc-300 dark:border-gray-800\",\r\n className\r\n )}\r\n >\r\n <div className=\"flex items-center justify-between px-4 py-3 bg-zinc-200 dark:bg-gray-800 border-b border-zinc-300 dark:border-gray-700\">\r\n <div className=\"flex items-center space-x-2\">\r\n <div className=\"w-3 h-3 bg-red-500 rounded-full\"></div>\r\n <div className=\"w-3 h-3 bg-yellow-500 rounded-full\"></div>\r\n <div className=\"w-3 h-3 bg-green-500 rounded-full\"></div>\r\n </div>\r\n <div className=\"text-zinc-600 dark:text-gray-400 text-sm font-mono\">{title}</div>\r\n <div className=\"w-16\"></div>\r\n </div>\r\n\r\n <div className=\"p-4 font-mono text-sm leading-relaxed space-y-2 min-h-[300px] bg-zinc-100 dark:bg-black text-zinc-900 dark:text-white\">\r\n {children}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport function TypingAnimation({ children, className, delay = 0, speed = 50 }: TypingAnimationProps) {\r\n const [displayedText, setDisplayedText] = useState(\"\");\r\n const [isComplete, setIsComplete] = useState(false);\r\n\r\n useEffect(() => {\r\n const timer = setTimeout(() => {\r\n let currentIndex = 0;\r\n const interval = setInterval(() => {\r\n if (currentIndex <= children.length) {\r\n setDisplayedText(children.slice(0, currentIndex));\r\n currentIndex++;\r\n } else {\r\n setIsComplete(true);\r\n clearInterval(interval);\r\n }\r\n }, speed);\r\n\r\n return () => clearInterval(interval);\r\n }, delay);\r\n\r\n return () => clearTimeout(timer);\r\n }, [children, delay, speed]);\r\n\r\n return (\r\n <div className={cn(\"flex items-center\", className)}>\r\n <span>{displayedText}</span>\r\n {!isComplete && <span className=\"ml-1 animate-pulse bg-white w-2 h-4 inline-block\"></span>}\r\n </div>\r\n );\r\n}\r\n\r\nexport function AnimatedSpan({ children, className, delay = 0 }: AnimatedSpanProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n\r\n useEffect(() => {\r\n const timer = setTimeout(() => {\r\n setIsVisible(true);\r\n }, delay);\r\n\r\n return () => clearTimeout(timer);\r\n }, [delay]);\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"transition-all duration-500 transform\",\r\n isVisible ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-2\",\r\n className\r\n )}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport React, { useState, Children, useRef, useLayoutEffect, HTMLAttributes, ReactNode } from \"react\";\r\nimport { motion, AnimatePresence, Variants } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport interface StepperProps extends HTMLAttributes<HTMLDivElement> {\r\n children: ReactNode;\r\n initialStep?: number;\r\n onStepChange?: (step: number) => void;\r\n onFinalStepCompleted?: () => void;\r\n backButtonText?: string;\r\n nextButtonText?: string;\r\n disableStepIndicators?: boolean;\r\n}\r\n\r\nexport function Stepper({\r\n children,\r\n initialStep = 1,\r\n onStepChange = () => {},\r\n onFinalStepCompleted = () => {},\r\n backButtonText = \"Back\",\r\n nextButtonText = \"Continue\",\r\n disableStepIndicators = false,\r\n className,\r\n ...rest\r\n}: StepperProps) {\r\n const [currentStep, setCurrentStep] = useState<number>(initialStep);\r\n const [direction, setDirection] = useState<number>(0);\r\n const stepsArray = Children.toArray(children);\r\n const totalSteps = stepsArray.length;\r\n const isCompleted = currentStep > totalSteps;\r\n const isLastStep = currentStep === totalSteps;\r\n\r\n const updateStep = (newStep: number) => {\r\n setCurrentStep(newStep);\r\n if (newStep > totalSteps) {\r\n onFinalStepCompleted();\r\n } else {\r\n onStepChange(newStep);\r\n }\r\n };\r\n\r\n const handleBack = () => {\r\n if (currentStep > 1) {\r\n setDirection(-1);\r\n updateStep(currentStep - 1);\r\n }\r\n };\r\n\r\n const handleNext = () => {\r\n if (!isLastStep) {\r\n setDirection(1);\r\n updateStep(currentStep + 1);\r\n }\r\n };\r\n\r\n const handleComplete = () => {\r\n setDirection(1);\r\n updateStep(totalSteps + 1);\r\n };\r\n\r\n return (\r\n <div className={cn(\"w-full max-w-md mx-auto\", className)} {...rest}>\r\n <div className=\"flex items-center justify-between mb-8\">\r\n {stepsArray.map((_, index) => {\r\n const stepNumber = index + 1;\r\n const isNotLastStep = index < totalSteps - 1;\r\n return (\r\n <React.Fragment key={stepNumber}>\r\n <StepIndicator\r\n step={stepNumber}\r\n disableStepIndicators={disableStepIndicators}\r\n currentStep={currentStep}\r\n onClickStep={(clicked) => {\r\n setDirection(clicked > currentStep ? 1 : -1);\r\n updateStep(clicked);\r\n }}\r\n />\r\n {isNotLastStep && <StepConnector isComplete={currentStep > stepNumber} />}\r\n </React.Fragment>\r\n );\r\n })}\r\n </div>\r\n\r\n <StepContentWrapper isCompleted={isCompleted} currentStep={currentStep} direction={direction}>\r\n {stepsArray[currentStep - 1]}\r\n </StepContentWrapper>\r\n\r\n {!isCompleted && (\r\n <div className={cn(\"flex mt-8\", currentStep !== 1 ? \"justify-between\" : \"justify-end\")}>\r\n {currentStep !== 1 && (\r\n <button\r\n onClick={handleBack}\r\n className=\"px-4 py-2 text-sm font-medium text-zinc-400 hover:text-white transition-colors rounded-lg hover:bg-zinc-800\"\r\n >\r\n {backButtonText}\r\n </button>\r\n )}\r\n <button\r\n onClick={isLastStep ? handleComplete : handleNext}\r\n className=\"px-4 py-2 text-sm font-medium bg-white text-black rounded-lg hover:bg-zinc-200 transition-colors\"\r\n >\r\n {isLastStep ? \"Complete\" : nextButtonText}\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\ninterface StepContentWrapperProps {\r\n isCompleted: boolean;\r\n currentStep: number;\r\n direction: number;\r\n children: ReactNode;\r\n}\r\n\r\nfunction StepContentWrapper({ isCompleted, currentStep, direction, children }: StepContentWrapperProps) {\r\n const [parentHeight, setParentHeight] = useState<number>(0);\r\n\r\n return (\r\n <motion.div\r\n className=\"relative overflow-hidden\"\r\n animate={{ height: isCompleted ? 0 : parentHeight }}\r\n transition={{ type: \"spring\", duration: 0.4 }}\r\n >\r\n <AnimatePresence initial={false} mode=\"sync\" custom={direction}>\r\n {!isCompleted && (\r\n <SlideTransition key={currentStep} direction={direction} onHeightReady={(h) => setParentHeight(h)}>\r\n {children}\r\n </SlideTransition>\r\n )}\r\n </AnimatePresence>\r\n </motion.div>\r\n );\r\n}\r\n\r\ninterface SlideTransitionProps {\r\n children: ReactNode;\r\n direction: number;\r\n onHeightReady: (h: number) => void;\r\n}\r\n\r\nfunction SlideTransition({ children, direction, onHeightReady }: SlideTransitionProps) {\r\n const containerRef = useRef<HTMLDivElement | null>(null);\r\n\r\n useLayoutEffect(() => {\r\n if (containerRef.current) {\r\n onHeightReady(containerRef.current.offsetHeight);\r\n }\r\n }, [children, onHeightReady]);\r\n\r\n const stepVariants: Variants = {\r\n enter: (dir: number) => ({ x: dir >= 0 ? \"-100%\" : \"100%\", opacity: 0 }),\r\n center: { x: \"0%\", opacity: 1 },\r\n exit: (dir: number) => ({ x: dir >= 0 ? \"50%\" : \"-50%\", opacity: 0 }),\r\n };\r\n\r\n return (\r\n <motion.div\r\n ref={containerRef}\r\n custom={direction}\r\n variants={stepVariants}\r\n initial=\"enter\"\r\n animate=\"center\"\r\n exit=\"exit\"\r\n transition={{ duration: 0.4 }}\r\n className=\"absolute left-0 right-0 top-0\"\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\ninterface StepProps {\r\n children: ReactNode;\r\n}\r\n\r\nexport function Step({ children }: StepProps): React.JSX.Element {\r\n return <div className=\"p-4 rounded-lg bg-zinc-900 border border-zinc-800\">{children}</div>;\r\n}\r\n\r\ninterface StepIndicatorProps {\r\n step: number;\r\n currentStep: number;\r\n onClickStep: (step: number) => void;\r\n disableStepIndicators?: boolean;\r\n}\r\n\r\nfunction StepIndicator({ step, currentStep, onClickStep, disableStepIndicators }: StepIndicatorProps) {\r\n const status = currentStep === step ? \"active\" : currentStep < step ? \"inactive\" : \"complete\";\r\n\r\n const handleClick = () => {\r\n if (step !== currentStep && !disableStepIndicators) {\r\n onClickStep(step);\r\n }\r\n };\r\n\r\n return (\r\n <motion.button\r\n onClick={handleClick}\r\n disabled={disableStepIndicators}\r\n className={cn(\r\n \"relative flex items-center justify-center w-10 h-10 rounded-full text-sm font-medium transition-all\",\r\n status === \"inactive\" && \"bg-zinc-800 text-zinc-500 border border-zinc-700\",\r\n status === \"active\" && \"bg-white text-black border-2 border-white\",\r\n status === \"complete\" && \"bg-white text-black border-2 border-white\",\r\n !disableStepIndicators && \"cursor-pointer hover:opacity-80\"\r\n )}\r\n animate={status}\r\n initial={false}\r\n >\r\n {status === \"complete\" ? (\r\n <svg className=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2.5}>\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M5 13l4 4L19 7\" />\r\n </svg>\r\n ) : (\r\n <span>{step}</span>\r\n )}\r\n </motion.button>\r\n );\r\n}\r\n\r\ninterface StepConnectorProps {\r\n isComplete: boolean;\r\n}\r\n\r\nfunction StepConnector({ isComplete }: StepConnectorProps) {\r\n return (\r\n <div className=\"flex-1 h-[2px] mx-2 bg-zinc-800 rounded-full overflow-hidden\">\r\n <motion.div\r\n className=\"h-full bg-white rounded-full\"\r\n initial={{ width: 0 }}\r\n animate={{ width: isComplete ? \"100%\" : \"0%\" }}\r\n transition={{ duration: 0.4 }}\r\n />\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport React, { createContext, forwardRef, useCallback, useContext, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TreeDataItem {\r\n id: string;\r\n name: string;\r\n icon?: React.ReactNode;\r\n children?: TreeDataItem[];\r\n isSelectable?: boolean;\r\n}\r\n\r\ntype TreeProps = React.HTMLAttributes<HTMLDivElement> & {\r\n data?: TreeDataItem[] | TreeDataItem;\r\n initialSelectedId?: string;\r\n onSelectChange?: (item: TreeDataItem | undefined) => void;\r\n initialExpandedItems?: string[];\r\n elements?: TreeDataItem[];\r\n};\r\n\r\nconst TreeContext = createContext<{\r\n selectedId: string | undefined;\r\n expandedItems: string[];\r\n handleExpand: (id: string) => void;\r\n handleSelect: (id: string) => void;\r\n data: TreeDataItem[] | TreeDataItem;\r\n} | null>(null);\r\n\r\nconst useTree = () => {\r\n const context = useContext(TreeContext);\r\n if (!context) {\r\n throw new Error(\"useTree must be used within a TreeProvider\");\r\n }\r\n return context;\r\n};\r\n\r\nconst Tree = forwardRef<HTMLDivElement, TreeProps>(\r\n ({ data, initialSelectedId, onSelectChange, initialExpandedItems = [], elements, className, ...props }, ref) => {\r\n const [selectedId, setSelectedId] = useState<string | undefined>(initialSelectedId);\r\n const [expandedItems, setExpandedItems] = useState<string[]>(initialExpandedItems);\r\n\r\n const handleExpand = useCallback((id: string) => {\r\n setExpandedItems((prev) => {\r\n if (prev.includes(id)) {\r\n return prev.filter((item) => item !== id);\r\n }\r\n return [...prev, id];\r\n });\r\n }, []);\r\n\r\n const handleSelect = useCallback(\r\n (id: string) => {\r\n const treeData = data || elements || [];\r\n const dataArray = Array.isArray(treeData) ? treeData : [treeData];\r\n\r\n const findItem = (items: TreeDataItem[]): TreeDataItem | undefined => {\r\n for (const item of items) {\r\n if (item.id === id) return item;\r\n if (item.children) {\r\n const found = findItem(item.children);\r\n if (found) return found;\r\n }\r\n }\r\n };\r\n\r\n const selectedItem = findItem(dataArray);\r\n if (selectedItem?.isSelectable) {\r\n setSelectedId(id);\r\n onSelectChange?.(selectedItem);\r\n }\r\n },\r\n [data, elements, onSelectChange]\r\n );\r\n\r\n const value = {\r\n selectedId,\r\n expandedItems,\r\n handleExpand,\r\n handleSelect,\r\n data: data || elements || [],\r\n };\r\n\r\n return (\r\n <TreeContext.Provider value={value}>\r\n <div className={cn(\"relative overflow-hidden\", className)} ref={ref} {...props}>\r\n {React.Children.map(props.children, (child) => child)}\r\n </div>\r\n </TreeContext.Provider>\r\n );\r\n }\r\n);\r\n\r\nTree.displayName = \"Tree\";\r\n\r\nconst Folder = forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & {\r\n element: string;\r\n value: string;\r\n isSelectable?: boolean;\r\n }\r\n>(({ className, element, value, isSelectable = true, children, ...props }, ref) => {\r\n const { selectedId, expandedItems, handleExpand, handleSelect } = useTree();\r\n\r\n return (\r\n <div ref={ref} className=\"relative\" {...props}>\r\n <div\r\n className={cn(\r\n \"flex cursor-pointer items-center gap-1 rounded-md px-2 py-1 text-sm hover:bg-muted\",\r\n selectedId === value && \"bg-muted\",\r\n className\r\n )}\r\n onClick={() => {\r\n handleExpand(value);\r\n if (isSelectable) {\r\n handleSelect(value);\r\n }\r\n }}\r\n >\r\n <svg\r\n className={cn(\"h-4 w-4 shrink-0 transition-transform duration-200\", expandedItems.includes(value) && \"rotate-90\")}\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n >\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\r\n </svg>\r\n <svg className=\"h-4 w-4 shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z\"\r\n />\r\n </svg>\r\n <span className=\"truncate\">{element}</span>\r\n </div>\r\n {expandedItems.includes(value) && <div className=\"ml-4 border-l border-muted pl-2\">{children}</div>}\r\n </div>\r\n );\r\n});\r\n\r\nFolder.displayName = \"Folder\";\r\n\r\nconst File = forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & {\r\n value: string;\r\n isSelectable?: boolean;\r\n }\r\n>(({ className, value, isSelectable = true, children, ...props }, ref) => {\r\n const { selectedId, handleSelect } = useTree();\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-pointer items-center gap-1 rounded-md px-2 py-1 text-sm hover:bg-muted\",\r\n selectedId === value && \"bg-muted\",\r\n className\r\n )}\r\n onClick={() => isSelectable && handleSelect(value)}\r\n {...props}\r\n >\r\n <svg className=\"h-4 w-4 shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\"\r\n />\r\n </svg>\r\n <div className=\"truncate\">{children}</div>\r\n </div>\r\n );\r\n});\r\n\r\nFile.displayName = \"File\";\r\n\r\nexport { Tree, Folder, File, type TreeDataItem };\r\n","\"use client\";\r\n\r\nimport { MotionValue, motion, useSpring, useTransform } from \"framer-motion\";\r\nimport { useEffect } from \"react\";\r\n\r\ninterface NumberProps {\r\n mv: MotionValue<number>;\r\n number: number;\r\n height: number;\r\n}\r\n\r\nfunction Number({ mv, number, height }: NumberProps) {\r\n const y = useTransform(mv, (latest) => {\r\n const placeValue = latest % 10;\r\n let offset = (10 + number - placeValue) % 10;\r\n let memo = offset * height;\r\n if (offset > 5) {\r\n memo -= 10 * height;\r\n }\r\n return memo;\r\n });\r\n\r\n return (\r\n <motion.span style={{ y, position: \"absolute\", inset: 0, display: \"flex\", justifyContent: \"center\" }}>\r\n {number}\r\n </motion.span>\r\n );\r\n}\r\n\r\ninterface DigitProps {\r\n place: number;\r\n value: number;\r\n height: number;\r\n digitStyle?: React.CSSProperties;\r\n}\r\n\r\nfunction Digit({ place, value, height, digitStyle }: DigitProps) {\r\n const valueRoundedToPlace = Math.floor(value / place);\r\n const animatedValue = useSpring(valueRoundedToPlace, { stiffness: 200, damping: 25 });\r\n\r\n useEffect(() => {\r\n animatedValue.set(valueRoundedToPlace);\r\n }, [animatedValue, valueRoundedToPlace]);\r\n\r\n return (\r\n <div style={{ height, position: \"relative\", overflow: \"hidden\", ...digitStyle }}>\r\n {Array.from({ length: 10 }, (_, i) => (\r\n <Number key={i} mv={animatedValue} number={i} height={height} />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport interface CounterProps {\r\n value: number;\r\n fontSize?: number;\r\n padding?: number;\r\n places?: number[];\r\n gap?: number;\r\n textColor?: string;\r\n fontWeight?: React.CSSProperties[\"fontWeight\"];\r\n containerStyle?: React.CSSProperties;\r\n digitStyle?: React.CSSProperties;\r\n}\r\n\r\nexport function Counter({\r\n value,\r\n fontSize = 100,\r\n padding = 0,\r\n places = [100, 10, 1],\r\n gap = 8,\r\n textColor = \"#000000\",\r\n fontWeight = 900,\r\n containerStyle,\r\n digitStyle,\r\n}: CounterProps) {\r\n const height = fontSize + padding;\r\n\r\n return (\r\n <div style={{ display: \"flex\", gap, fontSize, color: textColor, fontWeight, ...containerStyle }}>\r\n {places.map((place) => (\r\n <Digit key={place} place={place} value={value} height={height} digitStyle={digitStyle} />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Counter;\r\n","\"use client\";\r\n\r\nimport React, { useState, useRef } from \"react\";\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ToolbarItem {\r\n id: string;\r\n title: string;\r\n icon: React.ReactNode;\r\n}\r\n\r\ninterface ToolbarProps {\r\n className?: string;\r\n items: ToolbarItem[];\r\n defaultSelected?: string;\r\n onItemClick?: (itemId: string) => void;\r\n}\r\n\r\nconst buttonVariants = {\r\n initial: { gap: 0, paddingLeft: \".5rem\", paddingRight: \".5rem\" },\r\n animate: (isSelected: boolean) => ({\r\n gap: isSelected ? \".5rem\" : 0,\r\n paddingLeft: isSelected ? \"1rem\" : \".5rem\",\r\n paddingRight: isSelected ? \"1rem\" : \".5rem\",\r\n }),\r\n};\r\n\r\nconst spanVariants = {\r\n initial: { width: 0, opacity: 0 },\r\n animate: { width: \"auto\", opacity: 1 },\r\n exit: { width: 0, opacity: 0 },\r\n};\r\n\r\nconst transition = { type: \"spring\", bounce: 0, duration: 0.4 };\r\n\r\nexport function Toolbar({ className, items, defaultSelected, onItemClick }: ToolbarProps) {\r\n const [selected, setSelected] = useState<string | null>(defaultSelected || null);\r\n\r\n const handleItemClick = (itemId: string) => {\r\n setSelected(selected === itemId ? null : itemId);\r\n onItemClick?.(itemId);\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"flex items-center gap-3 p-2 relative\",\r\n \"bg-background border rounded-xl transition-all duration-200\",\r\n className\r\n )}\r\n >\r\n <div className=\"flex items-center gap-2\">\r\n {items.map((item) => (\r\n <motion.button\r\n key={item.id}\r\n variants={buttonVariants}\r\n initial={false}\r\n animate=\"animate\"\r\n custom={selected === item.id}\r\n onClick={() => handleItemClick(item.id)}\r\n transition={transition}\r\n className={cn(\r\n \"relative flex items-center rounded-none px-3 py-2\",\r\n \"text-sm font-medium transition-colors duration-300\",\r\n selected === item.id\r\n ? \"bg-[#1F9CFE] text-white rounded-lg\"\r\n : \"text-muted-foreground hover:bg-muted hover:text-foreground\"\r\n )}\r\n >\r\n {item.icon}\r\n <AnimatePresence initial={false}>\r\n {selected === item.id && (\r\n <motion.span\r\n variants={spanVariants}\r\n initial=\"initial\"\r\n animate=\"animate\"\r\n exit=\"exit\"\r\n transition={transition}\r\n className=\"overflow-hidden\"\r\n >\r\n {item.title}\r\n </motion.span>\r\n )}\r\n </AnimatePresence>\r\n </motion.button>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Toolbar;\r\n","\"use client\";\r\n\r\nimport React, { useRef } from \"react\";\r\nimport { motion, useMotionValue, useSpring, useTransform } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport interface DockProps {\r\n className?: string;\r\n children: React.ReactNode;\r\n direction?: \"top\" | \"middle\" | \"bottom\";\r\n}\r\n\r\nexport function Dock({ className, children, direction = \"middle\" }: DockProps) {\r\n const directionClasses = {\r\n top: \"items-start\",\r\n middle: \"items-center\",\r\n bottom: \"items-end\",\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(\r\n \"mx-auto w-max mt-8 h-[58px] p-2 flex gap-2 rounded-2xl border\",\r\n \"supports-backdrop-blur:bg-white/10 supports-backdrop-blur:dark:bg-black/10 backdrop-blur-md\",\r\n \"border-gray-200 bg-gray-50/80 dark:border-gray-800 dark:bg-gray-900/80\",\r\n directionClasses[direction],\r\n className\r\n )}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport interface DockIconProps {\r\n size?: number;\r\n magnification?: number;\r\n distance?: number;\r\n children?: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function DockIcon({\r\n size = 40,\r\n magnification = 60,\r\n distance = 140,\r\n children,\r\n className,\r\n}: DockIconProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const mouseX = useMotionValue(Infinity);\r\n\r\n const width = useSpring(\r\n useTransform(mouseX, [-distance, 0, distance], [size, magnification, size]),\r\n { mass: 0.1, stiffness: 150, damping: 12 }\r\n );\r\n\r\n return (\r\n <motion.div\r\n ref={ref}\r\n style={{ width }}\r\n onMouseMove={(e) => mouseX.set(e.pageX - ref.current!.offsetLeft - width.get() / 2)}\r\n onMouseLeave={() => mouseX.set(Infinity)}\r\n className={cn(\"flex aspect-square cursor-pointer items-center justify-center rounded-full\", className)}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n label?: string;\r\n error?: string;\r\n icon?: React.ReactNode;\r\n}\r\n\r\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\r\n ({ className, label, error, icon, ...props }, ref) => {\r\n return (\r\n <div className=\"w-full\">\r\n {label && (\r\n <label className=\"block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1\">\r\n {label}\r\n </label>\r\n )}\r\n <div className=\"relative\">\r\n {icon && (\r\n <div className=\"absolute left-3 top-1/2 -translate-y-1/2 text-zinc-400\">\r\n {icon}\r\n </div>\r\n )}\r\n <input\r\n ref={ref}\r\n className={cn(\r\n \"w-full px-4 py-2 rounded-lg\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"text-zinc-900 dark:text-zinc-100\",\r\n \"placeholder:text-zinc-400 dark:placeholder:text-zinc-500\",\r\n \"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\",\r\n \"transition-all duration-200\",\r\n icon && \"pl-10\",\r\n error && \"border-red-500 focus:ring-red-500\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </div>\r\n {error && <p className=\"mt-1 text-sm text-red-500\">{error}</p>}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nInput.displayName = \"Input\";\r\n\r\nexport default Input;\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\r\n label?: string;\r\n error?: string;\r\n}\r\n\r\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\r\n ({ className, label, error, ...props }, ref) => {\r\n return (\r\n <div className=\"w-full\">\r\n {label && (\r\n <label className=\"block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1\">\r\n {label}\r\n </label>\r\n )}\r\n <textarea\r\n ref={ref}\r\n className={cn(\r\n \"w-full px-4 py-2 rounded-lg min-h-[100px] resize-y\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"text-zinc-900 dark:text-zinc-100\",\r\n \"placeholder:text-zinc-400 dark:placeholder:text-zinc-500\",\r\n \"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\",\r\n \"transition-all duration-200\",\r\n error && \"border-red-500 focus:ring-red-500\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n {error && <p className=\"mt-1 text-sm text-red-500\">{error}</p>}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nTextarea.displayName = \"Textarea\";\r\n\r\nexport default Textarea;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CheckboxProps {\r\n checked?: boolean;\r\n onChange?: (checked: boolean) => void;\r\n label?: string;\r\n disabled?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function Checkbox({ checked = false, onChange, label, disabled = false, className }: CheckboxProps) {\r\n return (\r\n <label\r\n className={cn(\r\n \"inline-flex items-center gap-2 cursor-pointer\",\r\n disabled && \"opacity-50 cursor-not-allowed\",\r\n className\r\n )}\r\n >\r\n <button\r\n type=\"button\"\r\n role=\"checkbox\"\r\n aria-checked={checked}\r\n disabled={disabled}\r\n onClick={() => onChange?.(!checked)}\r\n className={cn(\r\n \"w-5 h-5 rounded border-2 flex items-center justify-center transition-colors\",\r\n checked\r\n ? \"bg-blue-500 border-blue-500\"\r\n : \"bg-transparent border-zinc-300 dark:border-zinc-600\"\r\n )}\r\n >\r\n <motion.svg\r\n initial={false}\r\n animate={{ scale: checked ? 1 : 0, opacity: checked ? 1 : 0 }}\r\n transition={{ duration: 0.15 }}\r\n className=\"w-3 h-3 text-white\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={3} d=\"M5 13l4 4L19 7\" />\r\n </motion.svg>\r\n </button>\r\n {label && <span className=\"text-sm\">{label}</span>}\r\n </label>\r\n );\r\n}\r\n\r\nexport default Checkbox;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RadioOption {\r\n value: string;\r\n label: string;\r\n}\r\n\r\ninterface RadioGroupProps {\r\n options: RadioOption[];\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n name: string;\r\n className?: string;\r\n direction?: \"horizontal\" | \"vertical\";\r\n}\r\n\r\nexport function RadioGroup({\r\n options,\r\n value,\r\n onChange,\r\n name,\r\n className,\r\n direction = \"vertical\",\r\n}: RadioGroupProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"flex gap-3\",\r\n direction === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\",\r\n className\r\n )}\r\n >\r\n {options.map((option) => (\r\n <label\r\n key={option.value}\r\n className=\"inline-flex items-center gap-2 cursor-pointer\"\r\n >\r\n <button\r\n type=\"button\"\r\n role=\"radio\"\r\n aria-checked={value === option.value}\r\n onClick={() => onChange?.(option.value)}\r\n className={cn(\r\n \"w-5 h-5 rounded-full border-2 flex items-center justify-center transition-colors\",\r\n value === option.value\r\n ? \"border-blue-500\"\r\n : \"border-zinc-300 dark:border-zinc-600\"\r\n )}\r\n >\r\n <motion.div\r\n initial={false}\r\n animate={{\r\n scale: value === option.value ? 1 : 0,\r\n opacity: value === option.value ? 1 : 0,\r\n }}\r\n transition={{ duration: 0.15 }}\r\n className=\"w-2.5 h-2.5 rounded-full bg-blue-500\"\r\n />\r\n </button>\r\n <span className=\"text-sm\">{option.label}</span>\r\n </label>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default RadioGroup;\r\n","\"use client\";\r\n\r\nimport { useState, useRef, useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SelectOption {\r\n value: string;\r\n label: string;\r\n}\r\n\r\ninterface SelectProps {\r\n options: SelectOption[];\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n placeholder?: string;\r\n className?: string;\r\n label?: string;\r\n}\r\n\r\nexport function Select({ options, value, onChange, placeholder = \"Select...\", className, label }: SelectProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const ref = useRef<HTMLDivElement>(null);\r\n\r\n const selectedOption = options.find((opt) => opt.value === value);\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (ref.current && !ref.current.contains(e.target as Node)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, []);\r\n\r\n return (\r\n <div className=\"w-full\">\r\n {label && (\r\n <label className=\"block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1\">\r\n {label}\r\n </label>\r\n )}\r\n <div ref={ref} className={cn(\"relative\", className)}>\r\n <button\r\n type=\"button\"\r\n onClick={() => setIsOpen(!isOpen)}\r\n className={cn(\r\n \"w-full px-4 py-2 rounded-lg text-left\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"flex items-center justify-between\",\r\n \"focus:outline-none focus:ring-2 focus:ring-blue-500\",\r\n \"transition-all duration-200\"\r\n )}\r\n >\r\n <span className={selectedOption ? \"\" : \"text-zinc-400\"}>\r\n {selectedOption?.label || placeholder}\r\n </span>\r\n <motion.svg\r\n animate={{ rotate: isOpen ? 180 : 0 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"w-5 h-5\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\r\n </motion.svg>\r\n </button>\r\n <AnimatePresence>\r\n {isOpen && (\r\n <motion.div\r\n initial={{ opacity: 0, y: -10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: -10 }}\r\n transition={{ duration: 0.15 }}\r\n className={cn(\r\n \"absolute z-50 w-full mt-1 rounded-lg overflow-hidden\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"shadow-lg\"\r\n )}\r\n >\r\n {options.map((option) => (\r\n <button\r\n key={option.value}\r\n type=\"button\"\r\n onClick={() => {\r\n onChange?.(option.value);\r\n setIsOpen(false);\r\n }}\r\n className={cn(\r\n \"w-full px-4 py-2 text-left\",\r\n \"hover:bg-zinc-100 dark:hover:bg-zinc-800\",\r\n \"transition-colors\",\r\n value === option.value && \"bg-blue-50 dark:bg-blue-900/20 text-blue-600\"\r\n )}\r\n >\r\n {option.label}\r\n </button>\r\n ))}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Select;\r\n","\"use client\";\r\n\r\nimport { useState, useRef, useEffect } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface InputOTPProps {\r\n maxLength?: number;\r\n onComplete?: (value: string) => void;\r\n onChange?: (value: string) => void;\r\n className?: string;\r\n}\r\n\r\nexport function InputOTP({\r\n maxLength = 6,\r\n onComplete,\r\n onChange,\r\n className = \"\",\r\n}: InputOTPProps) {\r\n const [values, setValues] = useState<string[]>(new Array(maxLength).fill(\"\"));\r\n const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\r\n\r\n useEffect(() => {\r\n const currentValue = values.join(\"\");\r\n onChange?.(currentValue);\r\n\r\n if (currentValue.length === maxLength) {\r\n onComplete?.(currentValue);\r\n }\r\n }, [values, maxLength, onChange, onComplete]);\r\n\r\n const handleChange = (index: number, value: string) => {\r\n if (value.length > 1) {\r\n const pastedValues = value.slice(0, maxLength).split(\"\");\r\n const newValues = [...values];\r\n pastedValues.forEach((val, i) => {\r\n if (index + i < maxLength) {\r\n newValues[index + i] = val;\r\n }\r\n });\r\n setValues(newValues);\r\n\r\n const nextIndex = Math.min(index + pastedValues.length, maxLength - 1);\r\n inputRefs.current[nextIndex]?.focus();\r\n return;\r\n }\r\n\r\n if (/^\\d*$/.test(value)) {\r\n const newValues = [...values];\r\n newValues[index] = value;\r\n setValues(newValues);\r\n\r\n if (value && index < maxLength - 1) {\r\n inputRefs.current[index + 1]?.focus();\r\n }\r\n }\r\n };\r\n\r\n const handleKeyDown = (\r\n index: number,\r\n e: React.KeyboardEvent<HTMLInputElement>\r\n ) => {\r\n if (e.key === \"Backspace\") {\r\n if (!values[index] && index > 0) {\r\n inputRefs.current[index - 1]?.focus();\r\n } else {\r\n const newValues = [...values];\r\n newValues[index] = \"\";\r\n setValues(newValues);\r\n }\r\n } else if (e.key === \"ArrowLeft\" && index > 0) {\r\n inputRefs.current[index - 1]?.focus();\r\n } else if (e.key === \"ArrowRight\" && index < maxLength - 1) {\r\n inputRefs.current[index + 1]?.focus();\r\n }\r\n };\r\n\r\n const handleFocus = (index: number) => {\r\n inputRefs.current[index]?.select();\r\n };\r\n\r\n return (\r\n <div className={cn(\"flex items-center gap-2\", className)}>\r\n {values.map((value, index) => (\r\n <input\r\n key={index}\r\n ref={(el) => {\r\n inputRefs.current[index] = el;\r\n }}\r\n type=\"text\"\r\n inputMode=\"numeric\"\r\n maxLength={1}\r\n value={value}\r\n onChange={(e) => handleChange(index, e.target.value)}\r\n onKeyDown={(e) => handleKeyDown(index, e)}\r\n onFocus={() => handleFocus(index)}\r\n className={cn(\r\n \"w-12 h-12 text-center text-lg font-semibold\",\r\n \"border-2 border-zinc-300 dark:border-zinc-600 rounded-md\",\r\n \"focus:border-zinc-900 dark:focus:border-white focus:outline-none\",\r\n \"bg-white dark:bg-zinc-800 text-zinc-900 dark:text-white\",\r\n \"transition-colors\"\r\n )}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default InputOTP;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HamburgerBasicProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerBasic({ className, onChange }: HamburgerBasicProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <label\r\n className={cn(\r\n \"relative w-10 h-8 bg-transparent cursor-pointer block\",\r\n className\r\n )}\r\n htmlFor=\"burger-basic\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n id=\"burger-basic\"\r\n className=\"hidden\"\r\n checked={isOpen}\r\n onChange={handleToggle}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out\",\r\n \"top-0 origin-left\",\r\n isOpen && \"rotate-45 top-0 left-1.5\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out\",\r\n \"top-1/2 -translate-y-1/2 origin-left\",\r\n isOpen && \"w-0 opacity-0\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out\",\r\n \"top-full -translate-y-full origin-left\",\r\n isOpen && \"-rotate-45 top-7 left-1.5\"\r\n )}\r\n />\r\n </label>\r\n );\r\n}\r\n\r\nexport default HamburgerBasic;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HamburgerSpinProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerSpin({ className, onChange }: HamburgerSpinProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <div className={cn(\"inline-block\", className)}>\r\n <input\r\n type=\"checkbox\"\r\n id=\"checkbox-spin\"\r\n className=\"hidden\"\r\n checked={isOpen}\r\n onChange={handleToggle}\r\n />\r\n <label\r\n htmlFor=\"checkbox-spin\"\r\n className={cn(\r\n \"relative w-10 h-10 cursor-pointer flex flex-col items-center justify-center gap-2.5 transition-all duration-500\",\r\n isOpen && \"rotate-180\"\r\n )}\r\n >\r\n <div\r\n className={cn(\r\n \"w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center\",\r\n isOpen && \"scale-x-[0.6] translate-y-[1px]\"\r\n )}\r\n />\r\n <div\r\n className={cn(\r\n \"w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center\",\r\n isOpen && \"rotate-90 scale-x-[1.2]\"\r\n )}\r\n />\r\n <div\r\n className={cn(\r\n \"w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center\",\r\n isOpen && \"scale-x-[0.6] -translate-y-[1px]\"\r\n )}\r\n />\r\n </label>\r\n </div>\r\n );\r\n}\r\n\r\nexport default HamburgerSpin;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerMorphProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerMorph({ className, onChange }: HamburgerMorphProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2\",\r\n className\r\n )}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { scaleX: 0 } : { scaleX: 1 }}\r\n transition={{ duration: 0.3, type: \"spring\", stiffness: 400, damping: 30 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { scaleX: 1.2 } : { scaleX: 1 }}\r\n transition={{ duration: 0.4, type: \"spring\", stiffness: 200, damping: 20 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { scaleX: 0 } : { scaleX: 1 }}\r\n transition={{ duration: 0.3, delay: 0.05, type: \"spring\", stiffness: 400, damping: 30 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default HamburgerMorph;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerSpringProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerSpring({ className, onChange }: HamburgerSpringProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2 p-2\",\r\n className\r\n )}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { y: -12, rotation: 90, scaleX: 0.8 } : { y: 0, rotation: 0, scaleX: 1 }}\r\n transition={{ duration: 0.5, type: \"spring\", stiffness: 200, damping: 15 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { rotation: 90, scaleX: 0.8 } : { rotation: 0, scaleX: 1 }}\r\n transition={{ duration: 0.5, type: \"spring\", stiffness: 200, damping: 15 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { y: 12, rotation: 90, scaleX: 0.8 } : { y: 0, rotation: 0, scaleX: 1 }}\r\n transition={{ duration: 0.5, type: \"spring\", stiffness: 200, damping: 15 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default HamburgerSpring;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerWaveProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerWave({ className, onChange }: HamburgerWaveProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex items-center justify-center\",\r\n className\r\n )}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <div className=\"relative w-8 h-8\">\r\n <span\r\n className={cn(\r\n \"absolute w-2 h-2 bg-black dark:bg-white rounded-sm transition-all duration-300 ease-out\",\r\n isOpen \r\n ? \"top-0 left-0\" \r\n : \"top-0 left-1/2 -translate-x-1/2 w-8 h-0.5 rounded-full\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"absolute w-2 h-2 bg-black dark:bg-white rounded-sm transition-all duration-300 ease-out delay-75\",\r\n isOpen \r\n ? \"top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\" \r\n : \"top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-8 h-0.5 rounded-full\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"absolute w-2 h-2 bg-black dark:bg-white rounded-sm transition-all duration-300 ease-out delay-150\",\r\n isOpen \r\n ? \"bottom-0 right-0\" \r\n : \"bottom-0 left-1/2 -translate-x-1/2 w-8 h-0.5 rounded-full\"\r\n )}\r\n />\r\n </div>\r\n </button>\r\n );\r\n}\r\n\r\nexport default HamburgerWave;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerStaggerProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerStagger({ className, onChange }: HamburgerStaggerProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <label\r\n className={cn(\r\n \"w-12 h-8 cursor-pointer relative block\",\r\n className\r\n )}\r\n htmlFor=\"burger-stagger\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n id=\"burger-stagger\"\r\n className=\"hidden w-full h-full\"\r\n checked={isOpen}\r\n onChange={handleToggle}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute w-full rounded-lg border-[3px] border-black dark:border-white bg-black dark:bg-white transition-all duration-150 ease-in-out\",\r\n \"top-0 right-0 origin-right\",\r\n isOpen && \"w-1/2 top-1/2 -translate-y-[30%] rotate-[40deg]\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute w-full rounded-lg border-[3px] border-black dark:border-white bg-black dark:bg-white transition-all duration-150 ease-in-out\",\r\n \"top-1/2 -translate-y-1/2\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute w-full rounded-lg border-[3px] border-black dark:border-white bg-black dark:bg-white transition-all duration-150 ease-in-out\",\r\n \"top-full right-0 origin-right -translate-y-full\",\r\n isOpen && \"w-1/2 top-1/2 -translate-y-[70%] -rotate-[40deg]\"\r\n )}\r\n />\r\n </label>\r\n );\r\n}\r\n\r\nexport default HamburgerStagger;\r\n","\"use client\";\r\n\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface Hamburger3DProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function Hamburger3D({ className, onChange }: Hamburger3DProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2 p-2\",\r\n className\r\n )}\r\n style={{ transformStyle: \"preserve-3d\", perspective: \"800px\" }}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <motion.div\r\n className=\"w-8 h-0.5 bg-black dark:bg-white rounded\"\r\n animate={isOpen ? { \r\n width: 10, \r\n height: 10, \r\n borderRadius: \"50%\",\r\n y: -6 \r\n } : { \r\n width: 32, \r\n height: 2, \r\n borderRadius: \"4px\",\r\n y: 0 \r\n }}\r\n transition={{ duration: 0.3, ease: \"easeInOut\" }}\r\n />\r\n <motion.div\r\n className=\"w-8 h-0.5 bg-black dark:bg-white rounded\"\r\n animate={isOpen ? { \r\n width: 10, \r\n height: 10, \r\n borderRadius: \"50%\",\r\n x: -8,\r\n y: 6 \r\n } : { \r\n width: 32, \r\n height: 2, \r\n borderRadius: \"4px\",\r\n x: 0,\r\n y: 0 \r\n }}\r\n transition={{ duration: 0.35, ease: \"easeInOut\" }}\r\n />\r\n <motion.div\r\n className=\"w-8 h-0.5 bg-black dark:bg-white rounded\"\r\n animate={isOpen ? { \r\n width: 10, \r\n height: 10, \r\n borderRadius: \"50%\",\r\n x: 8,\r\n y: 6 \r\n } : { \r\n width: 32, \r\n height: 2, \r\n borderRadius: \"4px\",\r\n x: 0,\r\n y: 0 \r\n }}\r\n transition={{ duration: 0.4, ease: \"easeInOut\" }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default Hamburger3D;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerElasticProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerElastic({ className, onChange }: HamburgerElasticProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2\",\r\n className\r\n )}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { rotateX: 90, y: 0, opacity: 0 } : { rotateX: 0, y: 0, opacity: 1 }}\r\n transition={{ duration: 0.3, type: \"spring\", stiffness: 300, damping: 30 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { scaleY: 3 } : { scaleY: 1 }}\r\n transition={{ duration: 0.6, type: \"spring\", stiffness: 200, damping: 15 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { rotateX: 90, y: 0, opacity: 0 } : { rotateX: 0, y: 0, opacity: 1 }}\r\n transition={{ duration: 0.3, type: \"spring\", stiffness: 300, damping: 30 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default HamburgerElastic;\r\n","\"use client\";\r\n\r\nimport { useRef, useEffect, useCallback, ReactNode } from \"react\";\r\n\r\ninterface ClickSparkProps {\r\n sparkColor?: string;\r\n sparkSize?: number;\r\n sparkRadius?: number;\r\n sparkCount?: number;\r\n duration?: number;\r\n easing?: string;\r\n extraScale?: number;\r\n children: ReactNode;\r\n}\r\n\r\nexport function ClickSpark({\r\n sparkColor = \"#000000\",\r\n sparkSize = 10,\r\n sparkRadius = 15,\r\n sparkCount = 8,\r\n duration = 400,\r\n easing = \"ease-out\",\r\n extraScale = 1.0,\r\n children,\r\n}: ClickSparkProps) {\r\n const canvasRef = useRef<HTMLCanvasElement>(null);\r\n const sparksRef = useRef<\r\n Array<{\r\n x: number;\r\n y: number;\r\n angle: number;\r\n startTime: number;\r\n }>\r\n >([]);\r\n const startTimeRef = useRef<number | null>(null);\r\n\r\n useEffect(() => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n\r\n const parent = canvas.parentElement;\r\n if (!parent) return;\r\n\r\n let resizeTimeout: ReturnType<typeof setTimeout>;\r\n\r\n const resizeCanvas = () => {\r\n const { width, height } = parent.getBoundingClientRect();\r\n if (canvas.width !== width || canvas.height !== height) {\r\n canvas.width = width;\r\n canvas.height = height;\r\n }\r\n };\r\n\r\n const handleResize = () => {\r\n clearTimeout(resizeTimeout);\r\n resizeTimeout = setTimeout(resizeCanvas, 100);\r\n };\r\n\r\n const ro = new ResizeObserver(handleResize);\r\n ro.observe(parent);\r\n\r\n resizeCanvas();\r\n\r\n return () => {\r\n ro.disconnect();\r\n clearTimeout(resizeTimeout);\r\n };\r\n }, []);\r\n\r\n const easeFunc = useCallback(\r\n (t: number) => {\r\n switch (easing) {\r\n case \"linear\":\r\n return t;\r\n case \"ease-in\":\r\n return t * t;\r\n case \"ease-in-out\":\r\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\r\n default:\r\n return t * (2 - t);\r\n }\r\n },\r\n [easing]\r\n );\r\n\r\n useEffect(() => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n const ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n let animationId: number;\r\n\r\n const draw = (timestamp: number) => {\r\n if (!startTimeRef.current) {\r\n startTimeRef.current = timestamp;\r\n }\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n sparksRef.current = sparksRef.current.filter((spark) => {\r\n const elapsed = timestamp - spark.startTime;\r\n if (elapsed >= duration) {\r\n return false;\r\n }\r\n\r\n const progress = elapsed / duration;\r\n const eased = easeFunc(progress);\r\n\r\n const distance = eased * sparkRadius * extraScale;\r\n const lineLength = sparkSize * (1 - eased);\r\n\r\n const x1 = spark.x + distance * Math.cos(spark.angle);\r\n const y1 = spark.y + distance * Math.sin(spark.angle);\r\n const x2 = spark.x + (distance + lineLength) * Math.cos(spark.angle);\r\n const y2 = spark.y + (distance + lineLength) * Math.sin(spark.angle);\r\n\r\n ctx.strokeStyle = sparkColor;\r\n ctx.lineWidth = 2;\r\n ctx.beginPath();\r\n ctx.moveTo(x1, y1);\r\n ctx.lineTo(x2, y2);\r\n ctx.stroke();\r\n\r\n return true;\r\n });\r\n\r\n animationId = requestAnimationFrame(draw);\r\n };\r\n\r\n animationId = requestAnimationFrame(draw);\r\n\r\n return () => {\r\n cancelAnimationFrame(animationId);\r\n };\r\n }, [sparkColor, sparkSize, sparkRadius, duration, easeFunc, extraScale]);\r\n\r\n const handleClick = (e: React.MouseEvent) => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n const rect = canvas.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n\r\n const now = performance.now();\r\n const newSparks = Array.from({ length: sparkCount }, (_, i) => ({\r\n x,\r\n y,\r\n angle: (2 * Math.PI * i) / sparkCount,\r\n startTime: now,\r\n }));\r\n\r\n sparksRef.current.push(...newSparks);\r\n };\r\n\r\n return (\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n }}\r\n onClick={handleClick}\r\n >\r\n <canvas\r\n ref={canvasRef}\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n display: \"block\",\r\n userSelect: \"none\",\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n pointerEvents: \"none\",\r\n }}\r\n />\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ClickSpark;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { motion, useMotionValue, useSpring } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SmoothCursorProps {\r\n className?: string;\r\n}\r\n\r\nexport function SmoothCursor({ className }: SmoothCursorProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n const cursorX = useMotionValue(-100);\r\n const cursorY = useMotionValue(-100);\r\n\r\n const springConfig = { damping: 25, stiffness: 700 };\r\n const cursorXSpring = useSpring(cursorX, springConfig);\r\n const cursorYSpring = useSpring(cursorY, springConfig);\r\n\r\n useEffect(() => {\r\n const moveCursor = (e: MouseEvent) => {\r\n cursorX.set(e.clientX - 16);\r\n cursorY.set(e.clientY - 16);\r\n setIsVisible(true);\r\n };\r\n\r\n const hideCursor = () => {\r\n setIsVisible(false);\r\n };\r\n\r\n window.addEventListener(\"mousemove\", moveCursor);\r\n window.addEventListener(\"mouseleave\", hideCursor);\r\n\r\n return () => {\r\n window.removeEventListener(\"mousemove\", moveCursor);\r\n window.removeEventListener(\"mouseleave\", hideCursor);\r\n };\r\n }, [cursorX, cursorY]);\r\n\r\n return (\r\n <motion.div\r\n className={cn(\r\n \"pointer-events-none fixed left-0 top-0 z-50 h-8 w-8 rounded-full bg-zinc-400 mix-blend-difference\",\r\n isVisible ? \"opacity-100\" : \"opacity-0\",\r\n className\r\n )}\r\n style={{\r\n x: cursorXSpring,\r\n y: cursorYSpring,\r\n }}\r\n transition={{\r\n type: \"spring\",\r\n stiffness: 500,\r\n damping: 28,\r\n }}\r\n />\r\n );\r\n}\r\n\r\nexport default SmoothCursor;\r\n","\"use client\";\r\n\r\nimport { ReactNode } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FloatEffectProps {\r\n children?: ReactNode;\r\n className?: string;\r\n duration?: number;\r\n distance?: number;\r\n}\r\n\r\nexport function FloatEffect({\r\n children,\r\n className,\r\n duration = 5,\r\n distance = 50,\r\n}: FloatEffectProps) {\r\n return (\r\n <motion.div\r\n className={cn(\"relative\", className)}\r\n animate={{\r\n y: [0, -distance, 0],\r\n }}\r\n transition={{\r\n duration,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n }}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default FloatEffect;\r\n","\"use client\";\r\n\r\nimport { ReactNode } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlowEffectProps {\r\n children?: ReactNode;\r\n className?: string;\r\n glowColor?: string;\r\n duration?: number;\r\n}\r\n\r\nexport function GlowEffect({\r\n children,\r\n className,\r\n glowColor = \"rgba(255, 255, 255, 0.4)\",\r\n duration = 3,\r\n}: GlowEffectProps) {\r\n return (\r\n <motion.div\r\n className={cn(\r\n \"relative p-8 rounded-3xl border-2 border-white/30\",\r\n className\r\n )}\r\n style={{\r\n background:\r\n \"radial-gradient(circle at center, rgba(255,255,255,0.05) 0%, transparent 70%)\",\r\n }}\r\n animate={{\r\n boxShadow: [\r\n `0 0 40px ${glowColor}, 0 0 80px ${glowColor.replace(\"0.4\", \"0.2\")}`,\r\n `0 0 80px ${glowColor.replace(\"0.4\", \"0.8\")}, 0 0 160px ${glowColor.replace(\"0.4\", \"0.5\")}`,\r\n `0 0 40px ${glowColor}, 0 0 80px ${glowColor.replace(\"0.4\", \"0.2\")}`,\r\n ],\r\n borderColor: [\r\n \"rgba(255, 255, 255, 0.3)\",\r\n \"rgba(255, 255, 255, 0.6)\",\r\n \"rgba(255, 255, 255, 0.3)\",\r\n ],\r\n }}\r\n transition={{\r\n duration,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n }}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default GlowEffect;\r\n","\"use client\";\r\n\r\nimport { ReactNode } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BlurFadeProps {\r\n children: ReactNode;\r\n className?: string;\r\n delay?: number;\r\n duration?: number;\r\n blur?: number;\r\n inView?: boolean;\r\n inViewMargin?: string;\r\n yOffset?: number;\r\n}\r\n\r\nexport function BlurFade({\r\n children,\r\n className,\r\n delay = 0,\r\n duration = 0.8,\r\n blur = 10,\r\n inView = false,\r\n inViewMargin = \"-50px\",\r\n yOffset = 6,\r\n}: BlurFadeProps) {\r\n const variants = {\r\n hidden: {\r\n opacity: 0,\r\n filter: `blur(${blur}px)`,\r\n y: yOffset,\r\n },\r\n visible: {\r\n opacity: 1,\r\n filter: \"blur(0px)\",\r\n y: 0,\r\n },\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(className)}\r\n initial=\"hidden\"\r\n animate={inView ? undefined : \"visible\"}\r\n whileInView={inView ? \"visible\" : undefined}\r\n viewport={{ once: true, margin: inViewMargin }}\r\n variants={variants}\r\n transition={{\r\n duration,\r\n delay,\r\n ease: [0.25, 0.1, 0.25, 1],\r\n }}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default BlurFade;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, ReactNode } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nclass Pixel {\r\n width: number;\r\n height: number;\r\n ctx: CanvasRenderingContext2D;\r\n x: number;\r\n y: number;\r\n color: string;\r\n speed: number;\r\n size: number;\r\n sizeStep: number;\r\n minSize: number;\r\n maxSizeInteger: number;\r\n maxSize: number;\r\n delay: number;\r\n counter: number;\r\n counterStep: number;\r\n isIdle: boolean;\r\n isReverse: boolean;\r\n isShimmer: boolean;\r\n\r\n constructor(\r\n canvas: HTMLCanvasElement,\r\n context: CanvasRenderingContext2D,\r\n x: number,\r\n y: number,\r\n color: string,\r\n speed: number,\r\n delay: number\r\n ) {\r\n this.width = canvas.width;\r\n this.height = canvas.height;\r\n this.ctx = context;\r\n this.x = x;\r\n this.y = y;\r\n this.color = color;\r\n this.speed = this.getRandomValue(0.1, 0.9) * speed;\r\n this.size = 0;\r\n this.sizeStep = Math.random() * 0.4;\r\n this.minSize = 0.5;\r\n this.maxSizeInteger = 2;\r\n this.maxSize = this.getRandomValue(this.minSize, this.maxSizeInteger);\r\n this.delay = delay;\r\n this.counter = 0;\r\n this.counterStep = Math.random() * 4 + (this.width + this.height) * 0.01;\r\n this.isIdle = false;\r\n this.isReverse = false;\r\n this.isShimmer = false;\r\n }\r\n\r\n getRandomValue(min: number, max: number) {\r\n return Math.random() * (max - min) + min;\r\n }\r\n\r\n draw() {\r\n const centerOffset = this.maxSizeInteger * 0.5 - this.size * 0.5;\r\n this.ctx.fillStyle = this.color;\r\n this.ctx.fillRect(\r\n this.x + centerOffset,\r\n this.y + centerOffset,\r\n this.size,\r\n this.size\r\n );\r\n }\r\n\r\n appear() {\r\n this.isIdle = false;\r\n if (this.counter <= this.delay) {\r\n this.counter += this.counterStep;\r\n return;\r\n }\r\n if (this.size >= this.maxSize) {\r\n this.isShimmer = true;\r\n }\r\n if (this.isShimmer) {\r\n this.shimmer();\r\n } else {\r\n this.size += this.sizeStep;\r\n }\r\n this.draw();\r\n }\r\n\r\n disappear() {\r\n this.isShimmer = false;\r\n this.counter = 0;\r\n if (this.size <= 0) {\r\n this.isIdle = true;\r\n return;\r\n } else {\r\n this.size -= 0.1;\r\n }\r\n this.draw();\r\n }\r\n\r\n shimmer() {\r\n if (this.size >= this.maxSize) {\r\n this.isReverse = true;\r\n } else if (this.size <= this.minSize) {\r\n this.isReverse = false;\r\n }\r\n if (this.isReverse) {\r\n this.size -= this.speed;\r\n } else {\r\n this.size += this.speed;\r\n }\r\n }\r\n}\r\n\r\nconst VARIANTS = {\r\n default: {\r\n gap: 5,\r\n speed: 35,\r\n colors: \"#71717a,#a1a1aa,#d4d4d8\",\r\n noFocus: false,\r\n },\r\n blue: {\r\n gap: 10,\r\n speed: 25,\r\n colors: \"#0ea5e9,#38bdf8,#7dd3fc\",\r\n noFocus: false,\r\n },\r\n yellow: {\r\n gap: 3,\r\n speed: 20,\r\n colors: \"#ca8a04,#eab308,#facc15\",\r\n noFocus: false,\r\n },\r\n pink: {\r\n gap: 6,\r\n speed: 80,\r\n colors: \"#be123c,#e11d48,#f43f5e\",\r\n noFocus: true,\r\n },\r\n};\r\n\r\ninterface PixelCardProps {\r\n variant?: \"default\" | \"blue\" | \"yellow\" | \"pink\";\r\n gap?: number;\r\n speed?: number;\r\n colors?: string;\r\n noFocus?: boolean;\r\n className?: string;\r\n children: ReactNode;\r\n}\r\n\r\nfunction getEffectiveSpeed(value: number, reducedMotion: boolean) {\r\n const min = 0;\r\n const max = 100;\r\n const throttle = 0.001;\r\n\r\n if (value <= min || reducedMotion) {\r\n return min;\r\n } else if (value >= max) {\r\n return max * throttle;\r\n } else {\r\n return value * throttle;\r\n }\r\n}\r\n\r\nexport function PixelCard({\r\n variant = \"default\",\r\n gap,\r\n speed,\r\n colors,\r\n noFocus,\r\n className = \"\",\r\n children,\r\n}: PixelCardProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const canvasRef = useRef<HTMLCanvasElement>(null);\r\n const pixelsRef = useRef<Pixel[]>([]);\r\n const animationRef = useRef<ReturnType<typeof requestAnimationFrame> | null>(\r\n null\r\n );\r\n const timePreviousRef = useRef(\r\n typeof performance !== \"undefined\" ? performance.now() : 0\r\n );\r\n const reducedMotion = useRef(\r\n typeof window !== \"undefined\"\r\n ? window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches\r\n : false\r\n ).current;\r\n\r\n const variantCfg = VARIANTS[variant] || VARIANTS.default;\r\n const finalGap = gap ?? variantCfg.gap;\r\n const finalSpeed = speed ?? variantCfg.speed;\r\n const finalColors = colors ?? variantCfg.colors;\r\n const finalNoFocus = noFocus ?? variantCfg.noFocus;\r\n\r\n const initPixels = () => {\r\n if (!containerRef.current || !canvasRef.current) return;\r\n\r\n const rect = containerRef.current.getBoundingClientRect();\r\n const width = Math.floor(rect.width) || 300;\r\n const height = Math.floor(rect.height) || 400;\r\n const ctx = canvasRef.current.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n canvasRef.current.width = width;\r\n canvasRef.current.height = height;\r\n canvasRef.current.style.width = `${width}px`;\r\n canvasRef.current.style.height = `${height}px`;\r\n\r\n const colorsArray = finalColors.split(\",\").map((c) => c.trim());\r\n const pxs: Pixel[] = [];\r\n const gapValue = Math.max(parseInt(finalGap.toString(), 10), 3);\r\n\r\n for (let x = 0; x < width; x += gapValue) {\r\n for (let y = 0; y < height; y += gapValue) {\r\n const color = colorsArray[Math.floor(Math.random() * colorsArray.length)];\r\n const dx = x - width / 2;\r\n const dy = y - height / 2;\r\n const distance = Math.sqrt(dx * dx + dy * dy);\r\n const delay = reducedMotion ? 0 : distance;\r\n pxs.push(\r\n new Pixel(\r\n canvasRef.current!,\r\n ctx,\r\n x,\r\n y,\r\n color,\r\n getEffectiveSpeed(finalSpeed, reducedMotion),\r\n delay\r\n )\r\n );\r\n }\r\n }\r\n pixelsRef.current = pxs;\r\n };\r\n\r\n const doAnimate = (fnName: \"appear\" | \"disappear\") => {\r\n animationRef.current = requestAnimationFrame(() => doAnimate(fnName));\r\n const timeNow = performance.now();\r\n const timePassed = timeNow - timePreviousRef.current;\r\n const timeInterval = 1000 / 60;\r\n\r\n if (timePassed < timeInterval) return;\r\n timePreviousRef.current = timeNow - (timePassed % timeInterval);\r\n\r\n const ctx = canvasRef.current?.getContext(\"2d\");\r\n if (!ctx || !canvasRef.current) return;\r\n\r\n ctx.clearRect(0, 0, canvasRef.current.width, canvasRef.current.height);\r\n\r\n let allIdle = true;\r\n for (let i = 0; i < pixelsRef.current.length; i++) {\r\n const pixel = pixelsRef.current[i];\r\n pixel[fnName]();\r\n if (!pixel.isIdle) {\r\n allIdle = false;\r\n }\r\n }\r\n if (allIdle && animationRef.current) {\r\n cancelAnimationFrame(animationRef.current);\r\n }\r\n };\r\n\r\n const handleAnimation = (name: \"appear\" | \"disappear\") => {\r\n if (animationRef.current !== null) {\r\n cancelAnimationFrame(animationRef.current);\r\n }\r\n animationRef.current = requestAnimationFrame(() => doAnimate(name));\r\n };\r\n\r\n const onMouseEnter = () => handleAnimation(\"appear\");\r\n const onMouseLeave = () => handleAnimation(\"disappear\");\r\n const onFocus: React.FocusEventHandler<HTMLDivElement> = (e) => {\r\n if (e.currentTarget.contains(e.relatedTarget as Node)) return;\r\n handleAnimation(\"appear\");\r\n };\r\n const onBlur: React.FocusEventHandler<HTMLDivElement> = (e) => {\r\n if (e.currentTarget.contains(e.relatedTarget as Node)) return;\r\n handleAnimation(\"disappear\");\r\n };\r\n\r\n useEffect(() => {\r\n initPixels();\r\n const observer = new ResizeObserver(() => {\r\n initPixels();\r\n });\r\n if (containerRef.current) {\r\n observer.observe(containerRef.current);\r\n }\r\n return () => {\r\n observer.disconnect();\r\n if (animationRef.current !== null) {\r\n cancelAnimationFrame(animationRef.current);\r\n }\r\n };\r\n }, [finalGap, finalSpeed, finalColors, finalNoFocus]);\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={cn(\r\n \"relative overflow-hidden rounded-xl border border-zinc-200 dark:border-zinc-800 bg-zinc-100 dark:bg-zinc-900\",\r\n className\r\n )}\r\n onMouseEnter={onMouseEnter}\r\n onMouseLeave={onMouseLeave}\r\n onFocus={finalNoFocus ? undefined : onFocus}\r\n onBlur={finalNoFocus ? undefined : onBlur}\r\n tabIndex={finalNoFocus ? -1 : 0}\r\n >\r\n <canvas\r\n className=\"absolute inset-0 w-full h-full pointer-events-none\"\r\n ref={canvasRef}\r\n />\r\n <div className=\"relative z-10\">{children}</div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default PixelCard;\r\n","\"use client\";\r\n\r\nimport { useRef, useState, ReactNode, CSSProperties } from \"react\";\r\nimport { motion, useMotionValue, useSpring, SpringOptions } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TiltedCardProps {\r\n imageSrc: string;\r\n altText?: string;\r\n captionText?: string;\r\n containerHeight?: CSSProperties[\"height\"];\r\n containerWidth?: CSSProperties[\"width\"];\r\n imageHeight?: CSSProperties[\"height\"];\r\n imageWidth?: CSSProperties[\"width\"];\r\n scaleOnHover?: number;\r\n rotateAmplitude?: number;\r\n showMobileWarning?: boolean;\r\n showTooltip?: boolean;\r\n overlayContent?: ReactNode;\r\n displayOverlayContent?: boolean;\r\n className?: string;\r\n}\r\n\r\nconst springValues: SpringOptions = {\r\n damping: 30,\r\n stiffness: 100,\r\n mass: 2,\r\n};\r\n\r\nexport function TiltedCard({\r\n imageSrc,\r\n altText = \"Tilted card image\",\r\n captionText = \"\",\r\n containerHeight = \"300px\",\r\n containerWidth = \"100%\",\r\n imageHeight = \"300px\",\r\n imageWidth = \"300px\",\r\n scaleOnHover = 1.1,\r\n rotateAmplitude = 14,\r\n showMobileWarning = false,\r\n showTooltip = true,\r\n overlayContent = null,\r\n displayOverlayContent = false,\r\n className,\r\n}: TiltedCardProps) {\r\n const ref = useRef<HTMLElement>(null);\r\n\r\n const x = useMotionValue(0);\r\n const y = useMotionValue(0);\r\n const rotateX = useSpring(useMotionValue(0), springValues);\r\n const rotateY = useSpring(useMotionValue(0), springValues);\r\n const scale = useSpring(1, springValues);\r\n const opacity = useSpring(0);\r\n const rotateFigcaption = useSpring(0, {\r\n stiffness: 350,\r\n damping: 30,\r\n mass: 1,\r\n });\r\n\r\n const [lastY, setLastY] = useState<number>(0);\r\n\r\n function handleMouse(e: React.MouseEvent<HTMLElement>) {\r\n if (!ref.current) return;\r\n\r\n const rect = ref.current.getBoundingClientRect();\r\n const offsetX = e.clientX - rect.left - rect.width / 2;\r\n const offsetY = e.clientY - rect.top - rect.height / 2;\r\n\r\n const rotationX = (offsetY / (rect.height / 2)) * -rotateAmplitude;\r\n const rotationY = (offsetX / (rect.width / 2)) * rotateAmplitude;\r\n\r\n rotateX.set(rotationX);\r\n rotateY.set(rotationY);\r\n\r\n x.set(e.clientX - rect.left);\r\n y.set(e.clientY - rect.top);\r\n\r\n const velocityY = offsetY - lastY;\r\n rotateFigcaption.set(-velocityY * 0.6);\r\n setLastY(offsetY);\r\n }\r\n\r\n function handleMouseEnter() {\r\n scale.set(scaleOnHover);\r\n opacity.set(1);\r\n }\r\n\r\n function handleMouseLeave() {\r\n opacity.set(0);\r\n scale.set(1);\r\n rotateX.set(0);\r\n rotateY.set(0);\r\n rotateFigcaption.set(0);\r\n }\r\n\r\n return (\r\n <figure\r\n ref={ref}\r\n className={cn(\r\n \"relative flex items-center justify-center [perspective:800px]\",\r\n className\r\n )}\r\n style={{\r\n height: containerHeight,\r\n width: containerWidth,\r\n }}\r\n onMouseMove={handleMouse}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n >\r\n {showMobileWarning && (\r\n <div className=\"absolute top-2 left-2 text-xs text-muted-foreground md:hidden\">\r\n Best viewed on desktop\r\n </div>\r\n )}\r\n\r\n <motion.div\r\n className=\"relative [transform-style:preserve-3d]\"\r\n style={{\r\n width: imageWidth,\r\n height: imageHeight,\r\n rotateX,\r\n rotateY,\r\n scale,\r\n }}\r\n >\r\n <motion.img\r\n src={imageSrc}\r\n alt={altText}\r\n className=\"absolute inset-0 w-full h-full object-cover rounded-lg\"\r\n style={{\r\n width: imageWidth,\r\n height: imageHeight,\r\n }}\r\n />\r\n\r\n {displayOverlayContent && overlayContent && (\r\n <motion.div className=\"absolute inset-0 flex items-center justify-center bg-black/50 rounded-lg\">\r\n {overlayContent}\r\n </motion.div>\r\n )}\r\n </motion.div>\r\n\r\n {showTooltip && captionText && (\r\n <motion.figcaption\r\n className=\"pointer-events-none absolute px-3 py-1.5 text-sm bg-white dark:bg-zinc-900 rounded-full shadow-lg whitespace-nowrap\"\r\n style={{\r\n x,\r\n y,\r\n opacity,\r\n rotate: rotateFigcaption,\r\n }}\r\n >\r\n {captionText}\r\n </motion.figcaption>\r\n )}\r\n </figure>\r\n );\r\n}\r\n\r\nexport default TiltedCard;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, ReactNode } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface InfiniteScrollProps {\r\n children: ReactNode;\r\n speed?: number;\r\n direction?: \"left\" | \"right\";\r\n pauseOnHover?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function InfiniteScroll({\r\n children,\r\n speed = 30,\r\n direction = \"left\",\r\n pauseOnHover = true,\r\n className,\r\n}: InfiniteScrollProps) {\r\n const scrollerRef = useRef<HTMLDivElement>(null);\r\n const scrollerInnerRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (!scrollerRef.current || !scrollerInnerRef.current) return;\r\n\r\n const scrollerContent = Array.from(scrollerInnerRef.current.children);\r\n\r\n scrollerContent.forEach((item) => {\r\n const duplicatedItem = item.cloneNode(true);\r\n if (scrollerInnerRef.current) {\r\n scrollerInnerRef.current.appendChild(duplicatedItem);\r\n }\r\n });\r\n\r\n scrollerRef.current.style.setProperty(\"--animation-duration\", `${speed}s`);\r\n scrollerRef.current.style.setProperty(\r\n \"--animation-direction\",\r\n direction === \"left\" ? \"forwards\" : \"reverse\"\r\n );\r\n }, [speed, direction]);\r\n\r\n return (\r\n <div\r\n ref={scrollerRef}\r\n className={cn(\r\n \"group relative flex overflow-hidden [mask-image:linear-gradient(to_right,transparent,white_20%,white_80%,transparent)]\",\r\n className\r\n )}\r\n >\r\n <div\r\n ref={scrollerInnerRef}\r\n className={cn(\r\n \"flex min-w-full shrink-0 gap-4 py-4 w-max flex-nowrap\",\r\n \"animate-scroll\",\r\n pauseOnHover && \"group-hover:[animation-play-state:paused]\"\r\n )}\r\n style={{\r\n animation: `scroll var(--animation-duration, 30s) var(--animation-direction, forwards) linear infinite`,\r\n }}\r\n >\r\n {children}\r\n </div>\r\n <style jsx>{`\r\n @keyframes scroll {\r\n from {\r\n transform: translateX(0);\r\n }\r\n to {\r\n transform: translateX(calc(-50% - 0.5rem));\r\n }\r\n }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default InfiniteScroll;\r\n","\"use client\";\r\n\r\nimport { useState, useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingState {\r\n text: string;\r\n}\r\n\r\ninterface MultiStepLoaderProps {\r\n loadingStates: LoadingState[];\r\n loading: boolean;\r\n duration?: number;\r\n loop?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function MultiStepLoader({\r\n loadingStates,\r\n loading,\r\n duration = 2000,\r\n loop = true,\r\n className,\r\n}: MultiStepLoaderProps) {\r\n const [currentState, setCurrentState] = useState(0);\r\n\r\n useEffect(() => {\r\n if (!loading) {\r\n setCurrentState(0);\r\n return;\r\n }\r\n\r\n const interval = setInterval(() => {\r\n setCurrentState((prevState) => {\r\n if (prevState === loadingStates.length - 1) {\r\n return loop ? 0 : prevState;\r\n }\r\n return prevState + 1;\r\n });\r\n }, duration / loadingStates.length);\r\n\r\n return () => clearInterval(interval);\r\n }, [loading, loadingStates.length, duration, loop]);\r\n\r\n return (\r\n <AnimatePresence>\r\n {loading && (\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n className={cn(\r\n \"fixed inset-0 z-[100] flex items-center justify-center bg-black/80 backdrop-blur-sm\",\r\n className\r\n )}\r\n >\r\n <div className=\"bg-white dark:bg-zinc-900 rounded-lg p-8 shadow-2xl max-w-md w-full mx-4\">\r\n <div className=\"text-center\">\r\n <div className=\"mb-4\">\r\n <div className=\"inline-flex items-center justify-center w-16 h-16 bg-blue-100 dark:bg-blue-900/20 rounded-full mb-4\">\r\n <div className=\"w-8 h-8 border-4 border-blue-600 border-t-transparent rounded-full animate-spin\" />\r\n </div>\r\n </div>\r\n\r\n <AnimatePresence mode=\"wait\">\r\n <motion.p\r\n key={currentState}\r\n initial={{ opacity: 0, y: 10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: -10 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"text-lg font-medium text-zinc-900 dark:text-white\"\r\n >\r\n {loadingStates[currentState]?.text}\r\n </motion.p>\r\n </AnimatePresence>\r\n\r\n <div className=\"mt-6 flex justify-center\">\r\n <div className=\"flex space-x-1\">\r\n {loadingStates.map((_, index) => (\r\n <div\r\n key={index}\r\n className={cn(\r\n \"h-2 w-2 rounded-full transition-colors duration-200\",\r\n index === currentState\r\n ? \"bg-blue-600\"\r\n : index < currentState\r\n ? \"bg-green-500\"\r\n : \"bg-zinc-300 dark:bg-zinc-600\"\r\n )}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport default MultiStepLoader;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ASCIITextProps {\r\n text: string;\r\n enableWaves?: boolean;\r\n asciiFontSize?: number;\r\n textFontSize?: number;\r\n textColor?: string;\r\n planeBaseHeight?: number;\r\n className?: string;\r\n}\r\n\r\nconst ASCII_CHARS = ' .:-=+*#%@';\r\n\r\nexport function ASCIIText({\r\n text,\r\n enableWaves = true,\r\n asciiFontSize = 8,\r\n textFontSize = 200,\r\n textColor = \"#ffffff\",\r\n planeBaseHeight = 0.2,\r\n className,\r\n}: ASCIITextProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const [asciiArt, setAsciiArt] = useState<string>(\"\");\r\n\r\n useEffect(() => {\r\n const canvas = document.createElement(\"canvas\");\r\n const ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n // Set canvas size based on text\r\n ctx.font = `bold ${textFontSize}px monospace`;\r\n const metrics = ctx.measureText(text);\r\n const width = Math.ceil(metrics.width);\r\n const height = textFontSize * 1.2;\r\n\r\n canvas.width = width;\r\n canvas.height = height;\r\n\r\n // Draw text\r\n ctx.fillStyle = textColor;\r\n ctx.font = `bold ${textFontSize}px monospace`;\r\n ctx.textBaseline = \"middle\";\r\n ctx.fillText(text, 0, height / 2);\r\n\r\n // Get image data\r\n const imageData = ctx.getImageData(0, 0, width, height);\r\n const pixels = imageData.data;\r\n\r\n // Convert to ASCII\r\n const cols = Math.floor(width / asciiFontSize);\r\n const rows = Math.floor(height / asciiFontSize);\r\n let ascii = \"\";\r\n\r\n for (let y = 0; y < rows; y++) {\r\n for (let x = 0; x < cols; x++) {\r\n const px = x * asciiFontSize;\r\n const py = y * asciiFontSize;\r\n const idx = (py * width + px) * 4;\r\n const brightness = (pixels[idx] + pixels[idx + 1] + pixels[idx + 2]) / 3;\r\n const charIdx = Math.floor((brightness / 255) * (ASCII_CHARS.length - 1));\r\n ascii += ASCII_CHARS[charIdx];\r\n }\r\n ascii += \"\\n\";\r\n }\r\n\r\n setAsciiArt(ascii);\r\n }, [text, asciiFontSize, textFontSize, textColor]);\r\n\r\n return (\r\n <div ref={containerRef} className={cn(\"font-mono whitespace-pre\", className)}>\r\n <pre\r\n style={{\r\n fontSize: `${asciiFontSize}px`,\r\n lineHeight: 1,\r\n color: textColor,\r\n }}\r\n >\r\n {asciiArt}\r\n </pre>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ASCIIText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FallingTextProps {\r\n text: string;\r\n highlightWords?: string[];\r\n highlightClass?: string;\r\n trigger?: \"auto\" | \"hover\" | \"click\" | \"scroll\";\r\n delay?: number;\r\n staggerDelay?: number;\r\n className?: string;\r\n}\r\n\r\nexport function FallingText({\r\n text,\r\n highlightWords = [],\r\n highlightClass = \"text-primary\",\r\n trigger = \"auto\",\r\n delay = 0,\r\n staggerDelay = 0.05,\r\n className,\r\n}: FallingTextProps) {\r\n const [isVisible, setIsVisible] = useState(trigger === \"auto\");\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const words = text.split(\" \");\r\n\r\n useEffect(() => {\r\n if (trigger === \"scroll\" && containerRef.current) {\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setIsVisible(true);\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n observer.observe(containerRef.current);\r\n return () => observer.disconnect();\r\n }\r\n }, [trigger]);\r\n\r\n const handleInteraction = () => {\r\n if (trigger === \"hover\" || trigger === \"click\") {\r\n setIsVisible(true);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={cn(\"flex flex-wrap gap-2\", className)}\r\n onMouseEnter={trigger === \"hover\" ? handleInteraction : undefined}\r\n onClick={trigger === \"click\" ? handleInteraction : undefined}\r\n >\r\n <AnimatePresence>\r\n {words.map((word, index) => {\r\n const isHighlighted = highlightWords.includes(word.toLowerCase());\r\n return (\r\n <motion.span\r\n key={`${word}-${index}`}\r\n initial={{ opacity: 0, y: -50, rotateX: -90 }}\r\n animate={\r\n isVisible\r\n ? { opacity: 1, y: 0, rotateX: 0 }\r\n : { opacity: 0, y: -50, rotateX: -90 }\r\n }\r\n transition={{\r\n duration: 0.5,\r\n delay: delay + index * staggerDelay,\r\n ease: [0.25, 0.46, 0.45, 0.94],\r\n }}\r\n className={cn(isHighlighted && highlightClass)}\r\n >\r\n {word}\r\n </motion.span>\r\n );\r\n })}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default FallingText;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { motion, useMotionValue, useSpring, useTransform } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface AnimatedCircularProgressBarProps {\r\n max?: number;\r\n min?: number;\r\n value?: number;\r\n gaugePrimaryColor?: string;\r\n gaugeSecondaryColor?: string;\r\n className?: string;\r\n size?: number;\r\n strokeWidth?: number;\r\n showValue?: boolean;\r\n duration?: number;\r\n autoAnimate?: boolean;\r\n}\r\n\r\nexport function AnimatedCircularProgressBar({\r\n max = 100,\r\n min = 0,\r\n value = 0,\r\n gaugePrimaryColor = \"#a1a1aa\",\r\n gaugeSecondaryColor = \"#27272a\",\r\n className,\r\n size = 200,\r\n strokeWidth = 8,\r\n showValue = true,\r\n duration = 2,\r\n autoAnimate = true,\r\n}: AnimatedCircularProgressBarProps) {\r\n const [currentValue, setCurrentValue] = useState(autoAnimate ? min : value);\r\n \r\n const radius = (size - strokeWidth) / 2;\r\n const circumference = 2 * Math.PI * radius;\r\n \r\n const motionValue = useMotionValue(currentValue);\r\n const springValue = useSpring(motionValue, {\r\n damping: 30,\r\n stiffness: 100,\r\n });\r\n \r\n const strokeDasharray = useTransform(\r\n springValue,\r\n [min, max],\r\n [0, circumference]\r\n );\r\n \r\n const displayValue = useTransform(springValue, (latest) => Math.round(latest));\r\n\r\n useEffect(() => {\r\n if (autoAnimate) {\r\n const interval = setInterval(() => {\r\n setCurrentValue(prev => {\r\n const next = prev + 1;\r\n if (next > max) {\r\n return min;\r\n }\r\n return next;\r\n });\r\n }, duration * 10);\r\n\r\n return () => clearInterval(interval);\r\n } else {\r\n setCurrentValue(value);\r\n }\r\n }, [autoAnimate, value, max, min, duration]);\r\n\r\n useEffect(() => {\r\n motionValue.set(currentValue);\r\n }, [currentValue, motionValue]);\r\n\r\n return (\r\n <div \r\n className={cn(\"relative flex items-center justify-center\", className)}\r\n style={{ width: size, height: size }}\r\n >\r\n <svg\r\n width={size}\r\n height={size}\r\n className=\"transform -rotate-90\"\r\n >\r\n <circle\r\n cx={size / 2}\r\n cy={size / 2}\r\n r={radius}\r\n stroke={gaugeSecondaryColor}\r\n strokeWidth={strokeWidth}\r\n fill=\"none\"\r\n className=\"opacity-20\"\r\n />\r\n \r\n <motion.circle\r\n cx={size / 2}\r\n cy={size / 2}\r\n r={radius}\r\n stroke={gaugePrimaryColor}\r\n strokeWidth={strokeWidth}\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeDasharray={circumference}\r\n strokeDashoffset={useTransform(strokeDasharray, (latest) => circumference - latest)}\r\n className=\"transition-all duration-300 ease-in-out\"\r\n style={{\r\n filter: \"drop-shadow(0 0 6px rgba(59, 130, 246, 0.4))\",\r\n }}\r\n />\r\n \r\n <motion.circle\r\n cx={size / 2}\r\n cy={size / 2}\r\n r={radius}\r\n stroke={gaugePrimaryColor}\r\n strokeWidth={strokeWidth / 2}\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeDasharray={circumference}\r\n strokeDashoffset={useTransform(strokeDasharray, (latest) => circumference - latest)}\r\n className=\"opacity-50 blur-sm\"\r\n />\r\n </svg>\r\n \r\n {showValue && (\r\n <div className=\"absolute inset-0 flex flex-col items-center justify-center\">\r\n <motion.span \r\n className=\"text-3xl font-semibold text-zinc-900 dark:text-zinc-100\"\r\n style={{ fontSize: size / 8 }}\r\n >\r\n {displayValue}\r\n </motion.span>\r\n <span \r\n className=\"text-sm text-zinc-500\"\r\n style={{ fontSize: size / 16 }}\r\n >\r\n {autoAnimate ? \"Auto\" : \"%\"}\r\n </span>\r\n </div>\r\n )}\r\n \r\n <div className=\"absolute inset-0\">\r\n {[...Array(8)].map((_, i) => {\r\n const angle = (i * 45) - 90;\r\n const x = size / 2 + (radius + strokeWidth) * Math.cos((angle * Math.PI) / 180);\r\n const y = size / 2 + (radius + strokeWidth) * Math.sin((angle * Math.PI) / 180);\r\n \r\n return (\r\n <motion.div\r\n key={i}\r\n className=\"absolute w-1 h-1 bg-zinc-500 rounded-full\"\r\n style={{\r\n left: x - 2,\r\n top: y - 2,\r\n }}\r\n animate={{\r\n opacity: [0.3, 1, 0.3],\r\n scale: [0.8, 1.2, 0.8],\r\n }}\r\n transition={{\r\n duration: 2,\r\n repeat: Infinity,\r\n delay: i * 0.2,\r\n }}\r\n />\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default AnimatedCircularProgressBar;\r\n","\"use client\";\r\n\r\ninterface LoadingInvertProps {\r\n text?: string;\r\n className?: string;\r\n}\r\n\r\nexport function LoadingInvert({ text = \"Loading...\", className = \"\" }: LoadingInvertProps) {\r\n return (\r\n <div className={`w-full h-full min-h-[400px] flex items-center justify-center ${className}`}>\r\n <div className=\"relative h-fit min-w-12 w-fit text-4xl font-bold tracking-wider text-black dark:text-white\">\r\n <p className=\"relative z-0\">{text}</p>\r\n <div \r\n className=\"absolute h-full aspect-square left-0 top-0 rounded-[20%] bg-foreground/10 backdrop-invert\"\r\n style={{\r\n animation: \"invert-move 2s ease-in-out infinite\"\r\n }}\r\n />\r\n <style dangerouslySetInnerHTML={{\r\n __html: `\r\n @keyframes invert-move { 50% { left: calc(100% - 3rem); } }\r\n `\r\n }} />\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingInvert;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface LoaderProps extends React.HTMLAttributes<HTMLDivElement> {\r\n title?: string;\r\n subtitle?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function Loader({\r\n title = \"Configuring your account...\",\r\n subtitle = \"Please wait while we prepare everything for you\",\r\n size = \"md\",\r\n className,\r\n ...props\r\n}: LoaderProps) {\r\n const sizeConfig = {\r\n sm: {\r\n container: \"size-20\",\r\n titleClass: \"text-sm/tight font-medium\",\r\n subtitleClass: \"text-xs/relaxed\",\r\n spacing: \"space-y-2\",\r\n maxWidth: \"max-w-48\",\r\n },\r\n md: {\r\n container: \"size-32\",\r\n titleClass: \"text-base/snug font-medium\",\r\n subtitleClass: \"text-sm/relaxed\",\r\n spacing: \"space-y-3\",\r\n maxWidth: \"max-w-56\",\r\n },\r\n lg: {\r\n container: \"size-40\",\r\n titleClass: \"text-lg/tight font-semibold\",\r\n subtitleClass: \"text-base/relaxed\",\r\n spacing: \"space-y-4\",\r\n maxWidth: \"max-w-64\",\r\n },\r\n };\r\n\r\n const config = sizeConfig[size];\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"flex flex-col items-center justify-center gap-8 p-8\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <motion.div\r\n className={cn(\"relative\", config.container)}\r\n animate={{\r\n scale: [1, 1.02, 1],\r\n }}\r\n transition={{\r\n duration: 4,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full\"\r\n style={{\r\n background: `conic-gradient(from 0deg, transparent 0deg, rgb(0, 0, 0) 90deg, transparent 180deg)`,\r\n mask: `radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)`,\r\n WebkitMask: `radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)`,\r\n opacity: 0.8,\r\n }}\r\n animate={{\r\n rotate: [0, 360],\r\n }}\r\n transition={{\r\n duration: 3,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full\"\r\n style={{\r\n background: `conic-gradient(from 0deg, transparent 0deg, rgb(0, 0, 0) 120deg, rgba(0, 0, 0, 0.5) 240deg, transparent 360deg)`,\r\n mask: `radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)`,\r\n WebkitMask: `radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)`,\r\n opacity: 0.9,\r\n }}\r\n animate={{\r\n rotate: [0, 360],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n />\r\n\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full dark:block hidden\"\r\n style={{\r\n background: `conic-gradient(from 0deg, transparent 0deg, rgb(255, 255, 255) 90deg, transparent 180deg)`,\r\n mask: `radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)`,\r\n WebkitMask: `radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)`,\r\n opacity: 0.8,\r\n }}\r\n animate={{\r\n rotate: [0, 360],\r\n }}\r\n transition={{\r\n duration: 3,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full dark:block hidden\"\r\n style={{\r\n background: `conic-gradient(from 0deg, transparent 0deg, rgb(255, 255, 255) 120deg, rgba(255, 255, 255, 0.5) 240deg, transparent 360deg)`,\r\n mask: `radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)`,\r\n WebkitMask: `radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)`,\r\n opacity: 0.9,\r\n }}\r\n animate={{\r\n rotate: [0, 360],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n />\r\n </motion.div>\r\n\r\n <motion.div\r\n className={cn(\"text-center\", config.spacing, config.maxWidth)}\r\n initial={{ opacity: 0, y: 12 }}\r\n animate={{\r\n opacity: 1,\r\n y: 0,\r\n }}\r\n transition={{\r\n delay: 0.4,\r\n duration: 1,\r\n ease: [0.4, 0, 0.2, 1],\r\n }}\r\n >\r\n <motion.h1\r\n className={cn(\r\n config.titleClass,\r\n \"text-black/90 dark:text-white/90 font-medium tracking-[-0.02em] leading-[1.15] antialiased\"\r\n )}\r\n initial={{ opacity: 0, y: 12 }}\r\n animate={{\r\n opacity: 1,\r\n y: 0,\r\n }}\r\n transition={{\r\n delay: 0.6,\r\n duration: 0.8,\r\n ease: [0.4, 0, 0.2, 1],\r\n }}\r\n >\r\n <motion.span\r\n animate={{\r\n opacity: [0.9, 0.7, 0.9],\r\n }}\r\n transition={{\r\n duration: 3,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n >\r\n {title}\r\n </motion.span>\r\n </motion.h1>\r\n\r\n <motion.p\r\n className={cn(\r\n config.subtitleClass,\r\n \"text-black/60 dark:text-white/60 font-normal tracking-[-0.01em] leading-[1.45] antialiased\"\r\n )}\r\n initial={{ opacity: 0, y: 8 }}\r\n animate={{\r\n opacity: 1,\r\n y: 0,\r\n }}\r\n transition={{\r\n delay: 0.8,\r\n duration: 0.8,\r\n ease: [0.4, 0, 0.2, 1],\r\n }}\r\n >\r\n <motion.span\r\n animate={{\r\n opacity: [0.6, 0.4, 0.6],\r\n }}\r\n transition={{\r\n duration: 4,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n >\r\n {subtitle}\r\n </motion.span>\r\n </motion.p>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Loader;\r\n","\"use client\";\r\n\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface AnimatedThemeTogglerProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n onChange?: (isDark: boolean) => void;\r\n}\r\n\r\nexport function AnimatedThemeToggler({ \r\n className, \r\n size = \"md\",\r\n onChange \r\n}: AnimatedThemeTogglerProps) {\r\n const [isDark, setIsDark] = useState(false);\r\n\r\n useEffect(() => {\r\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\r\n setIsDark(prefersDark);\r\n }, []);\r\n\r\n const toggleTheme = () => {\r\n const newTheme = !isDark;\r\n setIsDark(newTheme);\r\n \r\n if (newTheme) {\r\n document.documentElement.classList.add(\"dark\");\r\n } else {\r\n document.documentElement.classList.remove(\"dark\");\r\n }\r\n \r\n onChange?.(newTheme);\r\n };\r\n\r\n const sizeClasses = {\r\n sm: \"w-12 h-6\",\r\n md: \"w-14 h-7\",\r\n lg: \"w-16 h-8\"\r\n };\r\n\r\n const iconSizes = {\r\n sm: \"w-4 h-4\",\r\n md: \"w-5 h-5\",\r\n lg: \"w-6 h-6\"\r\n };\r\n\r\n return (\r\n <motion.button\r\n onClick={toggleTheme}\r\n className={cn(\r\n \"relative rounded-full border transition-all duration-300 ease-in-out focus:outline-none focus:ring-2 focus:ring-zinc-500 focus:ring-offset-2 focus:ring-offset-zinc-900\",\r\n sizeClasses[size],\r\n isDark \r\n ? \"bg-zinc-800 border-zinc-700\" \r\n : \"bg-zinc-700 border-zinc-600\",\r\n className\r\n )}\r\n whileTap={{ scale: 0.95 }}\r\n initial={false}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full\"\r\n animate={{\r\n background: isDark \r\n ? \"linear-gradient(135deg, #27272a 0%, #18181b 100%)\"\r\n : \"linear-gradient(135deg, #3f3f46 0%, #27272a 100%)\"\r\n }}\r\n transition={{ duration: 0.3 }}\r\n />\r\n \r\n <motion.div\r\n className={cn(\r\n \"absolute top-0.5 rounded-full shadow-lg flex items-center justify-center\",\r\n size === \"sm\" ? \"w-5 h-5\" : size === \"md\" ? \"w-6 h-6\" : \"w-7 h-7\",\r\n isDark ? \"bg-zinc-300\" : \"bg-zinc-100\"\r\n )}\r\n animate={{\r\n x: isDark ? (size === \"sm\" ? 24 : size === \"md\" ? 28 : 32) : 2,\r\n }}\r\n transition={{\r\n type: \"spring\",\r\n stiffness: 500,\r\n damping: 30\r\n }}\r\n >\r\n <AnimatePresence mode=\"wait\">\r\n {isDark ? (\r\n <motion.svg\r\n key=\"moon\"\r\n className={cn(\"text-zinc-700\", iconSizes[size])}\r\n fill=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n initial={{ opacity: 0, rotate: -90 }}\r\n animate={{ opacity: 1, rotate: 0 }}\r\n exit={{ opacity: 0, rotate: 90 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n <path d=\"M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z\" />\r\n </motion.svg>\r\n ) : (\r\n <motion.svg\r\n key=\"sun\"\r\n className={cn(\"text-zinc-600\", iconSizes[size])}\r\n fill=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n initial={{ opacity: 0, rotate: -90 }}\r\n animate={{ opacity: 1, rotate: 0 }}\r\n exit={{ opacity: 0, rotate: 90 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n <path d=\"M12 2.25a.75.75 0 01.75.75v2.25a.75.75 0 01-1.5 0V3a.75.75 0 01.75-.75zM7.5 12a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0zM18.894 6.166a.75.75 0 00-1.06-1.06l-1.591 1.59a.75.75 0 101.06 1.061l1.591-1.59zM21.75 12a.75.75 0 01-.75.75h-2.25a.75.75 0 010-1.5H21a.75.75 0 01.75.75zM17.834 18.894a.75.75 0 001.06-1.06l-1.59-1.591a.75.75 0 10-1.061 1.06l1.59 1.591zM12 18a.75.75 0 01.75.75V21a.75.75 0 01-1.5 0v-2.25A.75.75 0 0112 18zM7.758 17.303a.75.75 0 00-1.061-1.06l-1.591 1.59a.75.75 0 001.06 1.061l1.591-1.59zM6 12a.75.75 0 01-.75.75H3a.75.75 0 010-1.5h2.25A.75.75 0 016 12zM6.697 7.757a.75.75 0 001.06-1.06l-1.59-1.591a.75.75 0 00-1.061 1.06l1.59 1.591z\" />\r\n </motion.svg>\r\n )}\r\n </AnimatePresence>\r\n </motion.div>\r\n \r\n <motion.div\r\n className=\"absolute inset-0 rounded-full opacity-20\"\r\n animate={{\r\n boxShadow: isDark \r\n ? \"0 0 20px rgba(161, 161, 170, 0.2)\" \r\n : \"0 0 20px rgba(161, 161, 170, 0.3)\"\r\n }}\r\n transition={{ duration: 0.3 }}\r\n />\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default AnimatedThemeToggler;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface ShimmerEffectProps {\r\n children?: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function ShimmerEffect({\r\n children,\r\n className,\r\n}: ShimmerEffectProps) {\r\n return (\r\n <div className={cn(\"relative w-full min-h-[500px] flex items-center justify-center overflow-hidden bg-white dark:bg-zinc-900 rounded-xl border border-zinc-200 dark:border-zinc-800\", className)}>\r\n <motion.div\r\n className=\"absolute inset-0\"\r\n style={{\r\n background: \"linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.08) 50%, transparent 100%)\",\r\n }}\r\n animate={{\r\n x: [\"-200%\", \"200%\"],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n \r\n <motion.div\r\n className=\"absolute inset-0\"\r\n style={{\r\n background: \"linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.05) 50%, transparent 100%)\",\r\n }}\r\n animate={{\r\n x: [\"-200%\", \"200%\"],\r\n }}\r\n transition={{\r\n duration: 3,\r\n delay: 0.5,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n \r\n <motion.div\r\n className=\"absolute inset-0\"\r\n style={{\r\n background: \"linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.03) 50%, transparent 100%)\",\r\n }}\r\n animate={{\r\n x: [\"-200%\", \"200%\"],\r\n }}\r\n transition={{\r\n duration: 3.5,\r\n delay: 1,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n \r\n <motion.div\r\n className=\"absolute inset-0 hidden dark:block\"\r\n style={{\r\n background: \"linear-gradient(90deg, transparent 0%, rgba(161,161,170,0.15) 50%, transparent 100%)\",\r\n }}\r\n animate={{\r\n x: [\"-200%\", \"200%\"],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n \r\n <div className=\"absolute inset-0 opacity-10 dark:opacity-5\" style={{\r\n backgroundImage: \"radial-gradient(circle at 2px 2px, #71717a 1px, transparent 0)\",\r\n backgroundSize: \"40px 40px\"\r\n }} />\r\n \r\n <div className=\"relative z-10 text-center px-8\">\r\n {children || (\r\n <motion.div\r\n initial={{ opacity: 0, y: 20 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.8 }}\r\n >\r\n <h2 className=\"text-7xl font-bold text-zinc-900 dark:text-zinc-100 mb-4 tracking-tight\" style={{\r\n fontFamily: \"system-ui, -apple-system, sans-serif\",\r\n letterSpacing: \"-0.02em\"\r\n }}>\r\n SHIMMER WAVE\r\n </h2>\r\n <p className=\"text-xl text-zinc-500 font-light tracking-wide\">\r\n Advanced Shimmer Effect\r\n </p>\r\n </motion.div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ShimmerEffect;\r\n","\"use client\";\r\n\r\nimport React, { useRef, useLayoutEffect, useState } from \"react\";\r\nimport {\r\n motion,\r\n useScroll,\r\n useSpring,\r\n useTransform,\r\n useMotionValue,\r\n useVelocity,\r\n useAnimationFrame\r\n} from \"framer-motion\";\r\n\r\ninterface VelocityMapping {\r\n input: [number, number];\r\n output: [number, number];\r\n}\r\n\r\ninterface ScrollVelocityProps {\r\n scrollContainerRef?: React.RefObject<HTMLElement>;\r\n texts?: string[];\r\n velocity?: number;\r\n className?: string;\r\n damping?: number;\r\n stiffness?: number;\r\n numCopies?: number;\r\n velocityMapping?: VelocityMapping;\r\n}\r\n\r\nfunction useElementWidth<T extends HTMLElement>(ref: React.RefObject<T | null>): number {\r\n const [width, setWidth] = useState(0);\r\n\r\n useLayoutEffect(() => {\r\n function updateWidth() {\r\n if (ref.current) {\r\n setWidth(ref.current.offsetWidth);\r\n }\r\n }\r\n updateWidth();\r\n window.addEventListener(\"resize\", updateWidth);\r\n return () => window.removeEventListener(\"resize\", updateWidth);\r\n }, [ref]);\r\n\r\n return width;\r\n}\r\n\r\nexport function ScrollVelocity({\r\n scrollContainerRef,\r\n texts = [\"Scroll Velocity\", \"Bynana UI\"],\r\n velocity = 100,\r\n className = \"\",\r\n damping = 50,\r\n stiffness = 400,\r\n numCopies = 6,\r\n velocityMapping = { input: [0, 1000], output: [0, 5] },\r\n}: ScrollVelocityProps) {\r\n function VelocityText({\r\n children,\r\n baseVelocity,\r\n }: {\r\n children: React.ReactNode;\r\n baseVelocity: number;\r\n }) {\r\n const baseX = useMotionValue(0);\r\n const scrollOptions = scrollContainerRef ? { container: scrollContainerRef } : {};\r\n const { scrollY } = useScroll(scrollOptions);\r\n const scrollVelocity = useVelocity(scrollY);\r\n const smoothVelocity = useSpring(scrollVelocity, { damping, stiffness });\r\n const velocityFactor = useTransform(\r\n smoothVelocity,\r\n velocityMapping.input,\r\n velocityMapping.output,\r\n { clamp: false }\r\n );\r\n\r\n const copyRef = useRef<HTMLSpanElement>(null);\r\n const copyWidth = useElementWidth(copyRef);\r\n\r\n function wrap(min: number, max: number, v: number): number {\r\n const range = max - min;\r\n const mod = (((v - min) % range) + range) % range;\r\n return mod + min;\r\n }\r\n\r\n const x = useTransform(baseX, v => {\r\n if (copyWidth === 0) return \"0px\";\r\n return `${wrap(-copyWidth, 0, v)}px`;\r\n });\r\n\r\n const directionFactor = useRef<number>(1);\r\n useAnimationFrame((t, delta) => {\r\n let moveBy = directionFactor.current * baseVelocity * (delta / 1000);\r\n if (velocityFactor.get() < 0) directionFactor.current = -1;\r\n else if (velocityFactor.get() > 0) directionFactor.current = 1;\r\n moveBy += directionFactor.current * moveBy * velocityFactor.get();\r\n baseX.set(baseX.get() + moveBy);\r\n });\r\n\r\n const spans = [];\r\n for (let i = 0; i < numCopies; i++) {\r\n spans.push(\r\n <span className={className} key={i} ref={i === 0 ? copyRef : null}>\r\n {children}\r\n </span>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"overflow-hidden whitespace-nowrap\">\r\n <motion.div className=\"flex\" style={{ x }}>\r\n {spans}\r\n </motion.div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <section>\r\n {texts.map((text, index) => (\r\n <VelocityText key={index} baseVelocity={index % 2 !== 0 ? -velocity : velocity}>\r\n {text} \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","../src/magnet/index.tsx","../src/text-type/index.tsx","../src/ai-voice/index.tsx","../src/folder/index.tsx","../src/testimonials-stars/index.tsx","../src/logo-loop/index.tsx","../src/floating-paths/index.tsx","../src/background-paths/index.tsx","../src/team-selector/index.tsx","../src/ai-text-loading/index.tsx","../src/tooltip-interactive/index.tsx","../src/tooltip-magnetic/index.tsx","../src/tooltip-rich/index.tsx","../src/magnet-lines/index.tsx","../src/glare-hover/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","map","b","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","Magnet","magnetStrength","activeTransition","inactiveTransition","wrapperClassName","innerClassName","setIsActive","magnetRef","distX","distY","transitionStyle","TextType","typingSpeed","initialDelay","pauseDuration","deletingSpeed","showCursor","hideCursorWhileTyping","cursorCharacter","cursorClassName","cursorBlinkDuration","textColors","variableSpeed","onSentenceComplete","startOnVisible","reverseMode","currentCharIndex","setCurrentCharIndex","setIsDeleting","currentTextIndex","setCurrentTextIndex","cursorVisible","setCursorVisible","textArray","getRandomSpeed","getCurrentTextColor","currentText","processedText","executeTypingAnimation","shouldHideCursor","MicIcon","AIVoice","autoDemo","onListeningChange","submitted","setSubmitted","setTime","isClient","setIsClient","isDemo","setIsDemo","intervalId","formatTime","seconds","mins","secs","timeoutId","runAnimation","initialTimeout","darkenColor","hex","percent","num","g","papers","open","setOpen","paperOffsets","setPaperOffsets","folderBackColor","handlePaperMouseMove","newOffsets","handlePaperMouseLeave","StarIcon","filled","defaultTestimonials","TestimonialsStars","ANIMATION_CONFIG","LogoLoop","logoHeight","fadeOut","fadeOutColor","ariaLabel","trackRef","seqRef","seqWidth","setSeqWidth","copyCount","setCopyCount","targetVelocity","magnitude","directionMultiplier","speedMultiplier","sequenceWidth","copiesNeeded","observers","images","remainingImages","handleImageLoad","img","htmlImg","track","rafId","lastTimestamp","deltaTime","easingFactor","nextOffset","translateX","renderLogoItem","key","isNodeItem","itemAriaLabel","itemContent","logoLists","copyIndex","itemIndex","FloatingPaths","paths","path","generateAestheticPath","baseAmplitude","phase","points","segments","endX","endY","baseY","amplitudeFactor","wave1","wave2","wave3","point","prevPoint","cp1x","cp1y","cp2x","cp2y","generateUniqueId","primaryPaths","secondaryPaths","accentPaths","sharedAnimationProps","AnimatedTitle","BackgroundPaths","MAX_TEAM_SIZE","DEFAULT_TEAM_MEMBERS","TeamSelector","maxSize","peopleCount","setPeopleCount","isVibrating","setIsVibrating","handleIncrement","newCount","triggerVibration","handleDecrement","renderAvatars","AITextLoading","TooltipInteractive","persistent","tooltipRef","triggerProps","TooltipMagnetic","springX","springY","deltaX","deltaY","maxDistance","magneticStrength","TooltipRich","maxWidth","MagnetLines","columns","containerSize","lineHeight","baseAngle","onPointerMove","pointer","handlePointerMove","middleIndex","total","GlareHover","borderRadius","glareColor","glareOpacity","glareAngle","glareSize","transitionDuration","playOnce","rgba","glareStyles","vars"],"mappings":"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","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ShineButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function ShineButton({ children, className, ...props }: ShineButtonProps) {\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden px-6 py-3 rounded-xl font-medium\",\r\n \"bg-zinc-900 text-white hover:bg-zinc-800\",\r\n \"dark:bg-zinc-800 dark:hover:bg-zinc-700 dark:text-white\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span\r\n className={cn(\r\n \"absolute inset-0 overflow-hidden rounded-[inherit]\",\r\n \"before:absolute before:inset-0\",\r\n \"before:-translate-x-full\",\r\n \"before:animate-shimmer\",\r\n \"before:bg-gradient-to-r\",\r\n \"before:from-transparent before:via-white/40 before:to-transparent\",\r\n \"before:skew-x-[-20deg]\"\r\n )}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default ShineButton;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RippleButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function RippleButton({ children, className, onClick, ...props }: RippleButtonProps) {\r\n const [ripples, setRipples] = useState<Array<{ x: number; y: number; id: number }>>([]);\r\n\r\n function handleClick(e: React.MouseEvent<HTMLButtonElement>) {\r\n const button = e.currentTarget;\r\n const rect = button.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n const newRipple = { x, y, id: Date.now() };\r\n\r\n setRipples((prev) => [...prev, newRipple]);\r\n setTimeout(() => {\r\n setRipples((prev) => prev.filter((r) => r.id !== newRipple.id));\r\n }, 1000);\r\n\r\n onClick?.(e);\r\n }\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden px-6 py-3 rounded-xl font-medium\",\r\n \"bg-zinc-900 text-white hover:bg-zinc-800\",\r\n \"dark:bg-zinc-100 dark:text-black dark:hover:bg-zinc-200\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n onClick={handleClick}\r\n {...props}\r\n >\r\n <AnimatePresence>\r\n {ripples.map((ripple) => (\r\n <motion.span\r\n key={ripple.id}\r\n className=\"absolute rounded-full pointer-events-none border-2 border-white/50 dark:border-black/50\"\r\n style={{\r\n left: ripple.x,\r\n top: ripple.y,\r\n transform: \"translate(-50%, -50%)\",\r\n }}\r\n initial={{ width: 0, height: 0, opacity: 0.9 }}\r\n animate={{ width: 500, height: 500, opacity: 0 }}\r\n exit={{ opacity: 0 }}\r\n transition={{ duration: 1, ease: [0.4, 0, 0.2, 1] }}\r\n />\r\n ))}\r\n </AnimatePresence>\r\n <span className=\"relative z-10\">{children}</span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default RippleButton;\r\n","\"use client\";\r\n\r\nimport React, { useRef, useState } from \"react\";\r\nimport { motion, useMotionValue, useSpring } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MagneticButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n strength?: number;\r\n radius?: number;\r\n}\r\n\r\nexport function MagneticButton({\r\n children,\r\n className,\r\n strength = 0.5,\r\n radius = 200,\r\n ...props\r\n}: MagneticButtonProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n const x = useMotionValue(0);\r\n const y = useMotionValue(0);\r\n\r\n const springConfig = { damping: 20, stiffness: 300, mass: 0.5 };\r\n const xSpring = useSpring(x, springConfig);\r\n const ySpring = useSpring(y, springConfig);\r\n\r\n const handleMouseMove = (e: React.MouseEvent) => {\r\n if (!ref.current) return;\r\n const rect = ref.current.getBoundingClientRect();\r\n const centerX = rect.left + rect.width / 2;\r\n const centerY = rect.top + rect.height / 2;\r\n const distanceX = e.clientX - centerX;\r\n const distanceY = e.clientY - centerY;\r\n const distance = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\r\n\r\n if (distance < radius) {\r\n const factor = 1 - distance / radius;\r\n x.set(distanceX * strength * factor);\r\n y.set(distanceY * strength * factor);\r\n }\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n setIsHovered(false);\r\n x.set(0);\r\n y.set(0);\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className=\"relative inline-flex items-center justify-center\"\r\n onMouseMove={handleMouseMove}\r\n onMouseLeave={handleMouseLeave}\r\n onMouseEnter={() => setIsHovered(true)}\r\n style={{ padding: radius / 2, margin: -radius / 2 }}\r\n >\r\n <motion.div style={{ x: xSpring, y: ySpring }}>\r\n <button\r\n className={cn(\r\n \"px-6 py-3 rounded-xl font-medium\",\r\n \"bg-zinc-900 text-white hover:bg-zinc-800\",\r\n \"dark:bg-zinc-100 dark:text-black dark:hover:bg-zinc-200\",\r\n \"transition-shadow duration-300\",\r\n isHovered && \"shadow-lg\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default MagneticButton;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BounceButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function BounceButton({ children, className, onClick, ...props }: BounceButtonProps) {\r\n const [isBouncing, setIsBouncing] = useState(false);\r\n\r\n function handleClick(e: React.MouseEvent<HTMLButtonElement>) {\r\n setIsBouncing(true);\r\n setTimeout(() => setIsBouncing(false), 1500);\r\n onClick?.(e);\r\n }\r\n\r\n return (\r\n <div className=\"relative inline-block\">\r\n <motion.div\r\n className=\"absolute -bottom-2 left-1/2 w-16 h-2 bg-black/20 rounded-full blur-sm\"\r\n animate={isBouncing ? {\r\n scaleX: [1, 0.8, 1.2, 0.9, 1.1, 0.95, 1],\r\n opacity: [0.3, 0.6, 0.2, 0.5, 0.3, 0.4, 0.3],\r\n } : {}}\r\n style={{ x: \"-50%\" }}\r\n transition={{ duration: 1.5, ease: \"easeOut\" }}\r\n />\r\n\r\n <motion.div\r\n animate={isBouncing ? {\r\n y: [0, -40, -20, -35, -10, -25, -5, -15, 0],\r\n rotate: [0, -5, 2, -3, 1, -2, 0.5, -1, 0],\r\n } : {}}\r\n transition={{\r\n duration: 1.5,\r\n ease: \"easeOut\",\r\n times: [0, 0.2, 0.35, 0.5, 0.65, 0.75, 0.85, 0.95, 1],\r\n }}\r\n whileHover={!isBouncing ? { y: [0, -8, 0] } : {}}\r\n >\r\n <button\r\n className={cn(\r\n \"px-6 py-3 rounded-xl font-medium\",\r\n \"bg-orange-500 hover:bg-orange-600 text-white\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n onClick={handleClick}\r\n disabled={isBouncing}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default BounceButton;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlowButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n glowColor?: string;\r\n}\r\n\r\nexport function GlowButton({\r\n children,\r\n className,\r\n glowColor = \"rgba(59, 130, 246, 0.8)\",\r\n ...props\r\n}: GlowButtonProps) {\r\n const [isGlowing, setIsGlowing] = useState(false);\r\n\r\n return (\r\n <motion.div\r\n className=\"relative inline-block\"\r\n onMouseEnter={() => setIsGlowing(true)}\r\n onMouseLeave={() => setIsGlowing(false)}\r\n animate={{\r\n filter: isGlowing\r\n ? [\r\n `drop-shadow(0 0 10px ${glowColor})`,\r\n `drop-shadow(0 0 25px ${glowColor})`,\r\n `drop-shadow(0 0 10px ${glowColor})`,\r\n ]\r\n : \"drop-shadow(0 0 0px transparent)\",\r\n }}\r\n transition={{\r\n duration: isGlowing ? 1.5 : 0.3,\r\n repeat: isGlowing ? Infinity : 0,\r\n }}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 rounded-xl\"\r\n animate={isGlowing ? {\r\n boxShadow: [\r\n `0 0 20px ${glowColor}`,\r\n `0 0 40px ${glowColor}`,\r\n `0 0 20px ${glowColor}`,\r\n ],\r\n scale: [1, 1.05, 1],\r\n } : {\r\n boxShadow: \"0 0 0px transparent\",\r\n scale: 1,\r\n }}\r\n transition={{\r\n duration: 2,\r\n repeat: isGlowing ? Infinity : 0,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n\r\n <button\r\n className={cn(\r\n \"relative px-6 py-3 rounded-xl font-medium\",\r\n \"bg-blue-600 hover:bg-blue-700 text-white\",\r\n \"transition-all duration-300\",\r\n isGlowing && \"bg-blue-500\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default GlowButton;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface PulseButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n pulseColor?: string;\r\n}\r\n\r\nexport function PulseButton({\r\n children,\r\n className,\r\n pulseColor = \"rgba(239, 68, 68, 0.5)\",\r\n ...props\r\n}: PulseButtonProps) {\r\n return (\r\n <div className=\"relative inline-block\">\r\n <motion.div\r\n className=\"absolute inset-0 rounded-xl\"\r\n style={{ backgroundColor: pulseColor }}\r\n animate={{\r\n scale: [1, 1.3, 1, 1.2, 1],\r\n opacity: [0.6, 0, 0.6, 0, 0.6],\r\n }}\r\n transition={{\r\n duration: 1.2,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n times: [0, 0.2, 0.4, 0.6, 1],\r\n }}\r\n />\r\n\r\n <motion.div\r\n className=\"absolute inset-0 rounded-xl\"\r\n style={{ backgroundColor: pulseColor }}\r\n animate={{\r\n scale: [1, 1.5, 1, 1.4, 1],\r\n opacity: [0.4, 0, 0.4, 0, 0.4],\r\n }}\r\n transition={{\r\n duration: 1.2,\r\n delay: 0.1,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n times: [0, 0.2, 0.4, 0.6, 1],\r\n }}\r\n />\r\n\r\n <motion.div\r\n animate={{\r\n scale: [1, 1.05, 1, 1.03, 1],\r\n }}\r\n transition={{\r\n duration: 1.2,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n times: [0, 0.2, 0.4, 0.6, 1],\r\n }}\r\n >\r\n <button\r\n className={cn(\r\n \"relative px-6 py-3 rounded-xl font-medium\",\r\n \"bg-red-500 hover:bg-red-600 text-white\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default PulseButton;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface NeonButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n color?: \"pink\" | \"cyan\" | \"green\" | \"purple\" | \"orange\";\r\n size?: \"sm\" | \"default\" | \"lg\";\r\n}\r\n\r\nconst colorVariants = {\r\n pink: {\r\n border: \"border-pink-500\",\r\n text: \"text-pink-400\",\r\n shadow: \"shadow-pink-500/50\",\r\n glow: \"rgba(236, 72, 153, 0.6)\",\r\n bg: \"hover:bg-pink-500/10\",\r\n },\r\n cyan: {\r\n border: \"border-cyan-500\",\r\n text: \"text-cyan-400\",\r\n shadow: \"shadow-cyan-500/50\",\r\n glow: \"rgba(6, 182, 212, 0.6)\",\r\n bg: \"hover:bg-cyan-500/10\",\r\n },\r\n green: {\r\n border: \"border-green-500\",\r\n text: \"text-green-400\",\r\n shadow: \"shadow-green-500/50\",\r\n glow: \"rgba(34, 197, 94, 0.6)\",\r\n bg: \"hover:bg-green-500/10\",\r\n },\r\n purple: {\r\n border: \"border-purple-500\",\r\n text: \"text-purple-400\",\r\n shadow: \"shadow-purple-500/50\",\r\n glow: \"rgba(168, 85, 247, 0.6)\",\r\n bg: \"hover:bg-purple-500/10\",\r\n },\r\n orange: {\r\n border: \"border-orange-500\",\r\n text: \"text-orange-400\",\r\n shadow: \"shadow-orange-500/50\",\r\n glow: \"rgba(249, 115, 22, 0.6)\",\r\n bg: \"hover:bg-orange-500/10\",\r\n },\r\n};\r\n\r\nconst sizeVariants = {\r\n sm: \"h-8 px-3 text-xs\",\r\n default: \"h-10 px-6 text-sm\",\r\n lg: \"h-12 px-8 text-base\",\r\n};\r\n\r\nexport function NeonButton({\r\n children,\r\n className,\r\n color = \"cyan\",\r\n size = \"default\",\r\n ...props\r\n}: NeonButtonProps) {\r\n const colors = colorVariants[color];\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative inline-flex items-center justify-center\",\r\n \"font-semibold tracking-wide uppercase\",\r\n \"border-2 rounded-lg\",\r\n \"bg-transparent\",\r\n \"transition-colors duration-200\",\r\n colors.border,\r\n colors.text,\r\n colors.bg,\r\n sizeVariants[size],\r\n className\r\n )}\r\n whileHover={{\r\n boxShadow: `0 0 20px ${colors.glow}, 0 0 40px ${colors.glow}, 0 0 60px ${colors.glow}`,\r\n }}\r\n whileTap={{ scale: 0.98 }}\r\n transition={{ duration: 0.2 }}\r\n {...props}\r\n >\r\n <motion.span\r\n className={cn(\"absolute inset-0 rounded-lg opacity-0\", colors.border)}\r\n animate={{ opacity: [0.5, 1, 0.5] }}\r\n transition={{ duration: 2, repeat: Infinity, ease: \"easeInOut\" }}\r\n style={{ boxShadow: `inset 0 0 10px ${colors.glow}` }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default NeonButton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LiquidButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"outline\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function LiquidButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n onClick,\r\n ...props\r\n}: LiquidButtonProps) {\r\n const [isFilling, setIsFilling] = useState(false);\r\n\r\n function handleClick(e: React.MouseEvent<HTMLButtonElement>) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setIsFilling(true);\r\n setTimeout(() => setIsFilling(false), 800);\r\n if (onClick) onClick(e);\r\n }\r\n\r\n const sizeClasses = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\"\r\n };\r\n\r\n const variantClasses = {\r\n primary: \"bg-zinc-900 text-white border-zinc-900 dark:bg-white dark:text-zinc-900 dark:border-white\",\r\n secondary: \"bg-zinc-100 text-zinc-900 border-zinc-200 dark:bg-zinc-800 dark:text-white dark:border-zinc-700\",\r\n outline: \"bg-transparent text-zinc-900 border-zinc-300 dark:text-white dark:border-zinc-600\"\r\n };\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-medium border-2 transition-colors\",\r\n sizeClasses[size],\r\n variantClasses[variant],\r\n className\r\n )}\r\n onClick={handleClick}\r\n {...props}\r\n >\r\n <AnimatePresence>\r\n {isFilling && (\r\n <motion.div\r\n key=\"liquid-fill\"\r\n className={cn(\r\n \"absolute inset-0 origin-bottom\",\r\n variant === \"primary\" ? \"bg-blue-500 dark:bg-blue-400\" : \"bg-zinc-900 dark:bg-white\"\r\n )}\r\n initial={{ scaleY: 0 }}\r\n animate={{ scaleY: 1 }}\r\n exit={{ scaleY: 0, transition: { duration: 0.3 } }}\r\n transition={{ duration: 0.5, ease: [0.4, 0, 0.2, 1] }}\r\n style={{ transformOrigin: \"bottom\" }}\r\n />\r\n )}\r\n </AnimatePresence>\r\n \r\n <AnimatePresence>\r\n {isFilling && (\r\n <>\r\n {[...Array(5)].map((_, i) => (\r\n <motion.div\r\n key={i}\r\n className=\"absolute w-1.5 h-1.5 bg-white/60 rounded-full\"\r\n style={{ left: `${20 + i * 15}%`, bottom: \"10%\" }}\r\n initial={{ y: 0, opacity: 0, scale: 0 }}\r\n animate={{ y: -60, opacity: [0, 1, 0], scale: [0, 1, 0.5] }}\r\n transition={{ duration: 0.6, delay: i * 0.08, ease: \"easeOut\" }}\r\n />\r\n ))}\r\n </>\r\n )}\r\n </AnimatePresence>\r\n\r\n <span className={cn(\r\n \"relative flex items-center justify-center gap-2 transition-colors duration-200 z-10\",\r\n isFilling && (variant === \"outline\" || variant === \"secondary\" ? \"text-white dark:text-zinc-900\" : \"text-white\")\r\n )}>\r\n {children}\r\n </span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default LiquidButton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SlideButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"outline\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n slideText?: string;\r\n}\r\n\r\nexport function SlideButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n slideText = \"Go!\",\r\n onClick,\r\n ...props\r\n}: SlideButtonProps) {\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n const sizeClasses = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\"\r\n };\r\n\r\n const variantClasses = {\r\n primary: \"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900\",\r\n secondary: \"bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-white\",\r\n outline: \"bg-transparent text-zinc-900 border-2 border-zinc-300 dark:text-white dark:border-zinc-600\"\r\n };\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-medium transition-all\",\r\n sizeClasses[size],\r\n variantClasses[variant],\r\n className\r\n )}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n onClick={onClick}\r\n {...props}\r\n >\r\n <motion.div\r\n className={cn(\r\n \"absolute inset-0\",\r\n variant === \"primary\" ? \"bg-blue-600 dark:bg-blue-500\" : \"bg-zinc-900 dark:bg-white\"\r\n )}\r\n initial={{ x: \"-100%\" }}\r\n animate={{ x: isHovered ? \"0%\" : \"-100%\" }}\r\n transition={{ duration: 0.3, ease: \"easeInOut\" }}\r\n />\r\n \r\n <motion.span\r\n className=\"relative flex items-center justify-center gap-2 z-10\"\r\n animate={{ x: isHovered ? 20 : 0, opacity: isHovered ? 0 : 1 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {children}\r\n </motion.span>\r\n \r\n <motion.span\r\n className={cn(\r\n \"absolute inset-0 flex items-center justify-center gap-2 z-10\",\r\n variant === \"outline\" || variant === \"secondary\" ? \"text-white dark:text-zinc-900\" : \"text-white\"\r\n )}\r\n initial={{ x: -20, opacity: 0 }}\r\n animate={{ x: isHovered ? 0 : -20, opacity: isHovered ? 1 : 0 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {slideText}\r\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M14 5l7 7m0 0l-7 7m7-7H3\" />\r\n </svg>\r\n </motion.span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default SlideButton;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GradientButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"sunset\" | \"ocean\" | \"forest\" | \"purple\" | \"fire\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst gradients = {\r\n sunset: \"from-orange-500 via-pink-500 to-purple-500\",\r\n ocean: \"from-cyan-500 via-blue-500 to-purple-500\",\r\n forest: \"from-green-500 via-emerald-500 to-teal-500\",\r\n purple: \"from-purple-500 via-violet-500 to-indigo-500\",\r\n fire: \"from-yellow-500 via-orange-500 to-red-500\",\r\n};\r\n\r\nconst sizes = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\",\r\n};\r\n\r\nexport function GradientButton({\r\n children,\r\n className,\r\n variant = \"ocean\",\r\n size = \"md\",\r\n ...props\r\n}: GradientButtonProps) {\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-semibold text-white\",\r\n \"bg-gradient-to-r\",\r\n gradients[variant],\r\n sizes[size],\r\n className\r\n )}\r\n whileHover={{ scale: 1.02 }}\r\n whileTap={{ scale: 0.98 }}\r\n {...props}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 bg-gradient-to-r from-white/0 via-white/25 to-white/0\"\r\n initial={{ x: \"-100%\" }}\r\n whileHover={{ x: \"100%\" }}\r\n transition={{ duration: 0.5 }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default GradientButton;\r\n","\"use client\";\r\n\r\nimport { useState, useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HoldButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n holdDuration?: number;\r\n onHoldComplete?: () => void;\r\n variant?: \"primary\" | \"danger\" | \"success\";\r\n}\r\n\r\nexport function HoldButton({\r\n children,\r\n className,\r\n holdDuration = 1000,\r\n onHoldComplete,\r\n variant = \"primary\",\r\n ...props\r\n}: HoldButtonProps) {\r\n const [progress, setProgress] = useState(0);\r\n const [isHolding, setIsHolding] = useState(false);\r\n const intervalRef = useRef<NodeJS.Timeout | null>(null);\r\n\r\n const variants = {\r\n primary: \"bg-zinc-900 dark:bg-white\",\r\n danger: \"bg-red-500\",\r\n success: \"bg-green-500\",\r\n };\r\n\r\n const progressColors = {\r\n primary: \"bg-blue-500\",\r\n danger: \"bg-red-700\",\r\n success: \"bg-green-700\",\r\n };\r\n\r\n const startHold = () => {\r\n setIsHolding(true);\r\n const startTime = Date.now();\r\n \r\n intervalRef.current = setInterval(() => {\r\n const elapsed = Date.now() - startTime;\r\n const newProgress = Math.min((elapsed / holdDuration) * 100, 100);\r\n setProgress(newProgress);\r\n \r\n if (newProgress >= 100) {\r\n stopHold();\r\n onHoldComplete?.();\r\n }\r\n }, 16);\r\n };\r\n\r\n const stopHold = () => {\r\n setIsHolding(false);\r\n setProgress(0);\r\n if (intervalRef.current) {\r\n clearInterval(intervalRef.current);\r\n intervalRef.current = null;\r\n }\r\n };\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg px-6 py-3 font-medium text-white dark:text-zinc-900\",\r\n variants[variant],\r\n className\r\n )}\r\n onMouseDown={startHold}\r\n onMouseUp={stopHold}\r\n onMouseLeave={stopHold}\r\n onTouchStart={startHold}\r\n onTouchEnd={stopHold}\r\n whileTap={{ scale: 0.98 }}\r\n {...props}\r\n >\r\n <motion.div\r\n className={cn(\"absolute inset-0 origin-left\", progressColors[variant])}\r\n style={{ scaleX: progress / 100 }}\r\n transition={{ duration: 0 }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default HoldButton;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ThreeDButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"danger\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst variants = {\r\n primary: {\r\n bg: \"bg-blue-500\",\r\n shadow: \"shadow-blue-700\",\r\n hover: \"hover:bg-blue-600\",\r\n },\r\n secondary: {\r\n bg: \"bg-zinc-700\",\r\n shadow: \"shadow-zinc-900\",\r\n hover: \"hover:bg-zinc-800\",\r\n },\r\n danger: {\r\n bg: \"bg-red-500\",\r\n shadow: \"shadow-red-700\",\r\n hover: \"hover:bg-red-600\",\r\n },\r\n};\r\n\r\nconst sizes = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\",\r\n};\r\n\r\nexport function ThreeDButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n ...props\r\n}: ThreeDButtonProps) {\r\n const colors = variants[variant];\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative rounded-lg font-semibold text-white\",\r\n \"shadow-[0_6px_0_0]\",\r\n colors.bg,\r\n colors.shadow,\r\n colors.hover,\r\n sizes[size],\r\n className\r\n )}\r\n whileHover={{ y: -2 }}\r\n whileTap={{ y: 4, boxShadow: \"0 2px 0 0\" }}\r\n transition={{ duration: 0.1 }}\r\n {...props}\r\n >\r\n {children}\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default ThreeDButton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CopyButtonProps {\r\n text?: string;\r\n value?: string;\r\n onCopy?: () => void;\r\n className?: string;\r\n}\r\n\r\nexport function CopyButton({ \r\n text = \"Copy\",\r\n value,\r\n onCopy,\r\n className \r\n}: CopyButtonProps) {\r\n const [copied, setCopied] = useState(false);\r\n\r\n const handleCopy = async () => {\r\n try {\r\n if (value) {\r\n await navigator.clipboard.writeText(value);\r\n }\r\n onCopy?.();\r\n setCopied(true);\r\n setTimeout(() => setCopied(false), 2000);\r\n } catch (error) {\r\n console.error(\"Failed to copy:\", error);\r\n }\r\n };\r\n\r\n return (\r\n <button\r\n onClick={handleCopy}\r\n className={cn(\r\n \"inline-flex items-center gap-2 px-4 py-2\",\r\n \"bg-transparent hover:bg-zinc-100 dark:hover:bg-zinc-800\",\r\n \"text-zinc-900 dark:text-zinc-100\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"rounded-md transition-all duration-200 font-medium text-sm\",\r\n className\r\n )}\r\n >\r\n {copied ? (\r\n <>\r\n <svg className=\"w-4 h-4 text-green-600\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\r\n </svg>\r\n Copied!\r\n </>\r\n ) : (\r\n <>\r\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\" />\r\n </svg>\r\n {text}\r\n </>\r\n )}\r\n </button>\r\n );\r\n}\r\n\r\nexport default CopyButton;\r\n","\"use client\";\r\n\r\nimport { useState, useRef } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ParticleButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n onSuccess?: () => void;\r\n successDuration?: number;\r\n}\r\n\r\nfunction SuccessParticles({ buttonRef }: { buttonRef: React.RefObject<HTMLButtonElement> }) {\r\n const rect = buttonRef.current?.getBoundingClientRect();\r\n if (!rect) return null;\r\n\r\n const centerX = rect.left + rect.width / 2;\r\n const centerY = rect.top + rect.height / 2;\r\n\r\n return (\r\n <AnimatePresence>\r\n {[...Array(6)].map((_, i) => (\r\n <motion.div\r\n key={i}\r\n className=\"fixed w-1 h-1 bg-black dark:bg-white rounded-full\"\r\n style={{ left: centerX, top: centerY }}\r\n initial={{ scale: 0, x: 0, y: 0 }}\r\n animate={{ scale: [0, 1, 0], x: [0, (i % 2 ? 1 : -1) * (Math.random() * 50 + 20)], y: [0, -Math.random() * 50 - 20] }}\r\n transition={{ duration: 0.6, delay: i * 0.1, ease: \"easeOut\" }}\r\n />\r\n ))}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport function ParticleButton({\r\n children,\r\n onClick,\r\n onSuccess,\r\n successDuration = 1000,\r\n className,\r\n ...props\r\n}: ParticleButtonProps) {\r\n const [showParticles, setShowParticles] = useState(false);\r\n const buttonRef = useRef<HTMLButtonElement>(null);\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n setShowParticles(true);\r\n onClick?.(e);\r\n onSuccess?.();\r\n setTimeout(() => setShowParticles(false), successDuration);\r\n };\r\n\r\n return (\r\n <>\r\n {showParticles && <SuccessParticles buttonRef={buttonRef} />}\r\n <button\r\n ref={buttonRef}\r\n onClick={handleClick}\r\n className={cn(\r\n \"relative px-4 py-2 rounded-md bg-primary text-primary-foreground\",\r\n showParticles && \"scale-95\",\r\n \"transition-transform duration-100\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </>\r\n );\r\n}\r\n\r\nexport default ParticleButton;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\nimport { motion, useAnimation } from \"framer-motion\";\r\nimport { useEffect, useState, useCallback } from \"react\";\r\n\r\ninterface AttractButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n particleCount?: number;\r\n attractRadius?: number;\r\n children?: React.ReactNode;\r\n}\r\n\r\ninterface Particle {\r\n id: number;\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport function AttractButton({\r\n className,\r\n particleCount = 12,\r\n children,\r\n ...props\r\n}: AttractButtonProps) {\r\n const [isAttracting, setIsAttracting] = useState(false);\r\n const [particles, setParticles] = useState<Particle[]>([]);\r\n const particlesControl = useAnimation();\r\n\r\n useEffect(() => {\r\n const newParticles = Array.from({ length: particleCount }, (_, i) => ({\r\n id: i,\r\n x: Math.random() * 360 - 180,\r\n y: Math.random() * 360 - 180,\r\n }));\r\n setParticles(newParticles);\r\n }, [particleCount]);\r\n\r\n const handleInteractionStart = useCallback(async () => {\r\n setIsAttracting(true);\r\n await particlesControl.start({ x: 0, y: 0, transition: { type: \"spring\", stiffness: 50, damping: 10 } });\r\n }, [particlesControl]);\r\n\r\n const handleInteractionEnd = useCallback(async () => {\r\n setIsAttracting(false);\r\n await particlesControl.start((i) => ({\r\n x: particles[i].x,\r\n y: particles[i].y,\r\n transition: { type: \"spring\", stiffness: 100, damping: 15 },\r\n }));\r\n }, [particlesControl, particles]);\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"min-w-40 relative touch-none px-4 py-2 rounded-md\",\r\n \"bg-violet-100 dark:bg-violet-900\",\r\n \"hover:bg-violet-200 dark:hover:bg-violet-800\",\r\n \"text-violet-600 dark:text-violet-300\",\r\n \"border border-violet-300 dark:border-violet-700\",\r\n \"transition-all duration-300\",\r\n className\r\n )}\r\n onMouseEnter={handleInteractionStart}\r\n onMouseLeave={handleInteractionEnd}\r\n onTouchStart={handleInteractionStart}\r\n onTouchEnd={handleInteractionEnd}\r\n {...props}\r\n >\r\n {particles.map((_, index) => (\r\n <motion.div\r\n key={index}\r\n custom={index}\r\n initial={{ x: particles[index].x, y: particles[index].y }}\r\n animate={particlesControl}\r\n className={cn(\"absolute w-1.5 h-1.5 rounded-full bg-violet-400 dark:bg-violet-300 transition-opacity duration-300\", isAttracting ? \"opacity-100\" : \"opacity-40\")}\r\n />\r\n ))}\r\n <span className=\"relative w-full flex items-center justify-center gap-2\">\r\n {children || (isAttracting ? \"Attracting\" : \"Hover me\")}\r\n </span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default AttractButton;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CommandButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n shortcut?: string;\r\n}\r\n\r\nexport function CommandButton({ className, children, shortcut = \"CMD + K\", ...props }: CommandButtonProps) {\r\n return (\r\n <button\r\n {...props}\r\n className={cn(\r\n \"relative p-2 rounded-lg overflow-hidden\",\r\n \"bg-gradient-to-b from-zinc-50 to-zinc-100 dark:from-zinc-800 dark:to-zinc-900\",\r\n \"border border-zinc-200 dark:border-zinc-800\",\r\n \"hover:border-zinc-300 dark:hover:border-zinc-700\",\r\n \"transition-all duration-300 ease-out group\",\r\n \"inline-flex items-center justify-center gap-2\",\r\n className\r\n )}\r\n >\r\n <svg\r\n className={cn(\r\n \"w-4 h-4 text-zinc-600 dark:text-zinc-400\",\r\n \"transition-all duration-300\",\r\n \"group-hover:scale-110 group-hover:rotate-[-4deg] group-active:scale-95\"\r\n )}\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n >\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z\" />\r\n </svg>\r\n <span className=\"text-sm text-zinc-600 dark:text-zinc-400\">{children || shortcut}</span>\r\n <span className=\"absolute inset-0 bg-gradient-to-r from-indigo-500/0 via-indigo-500/10 to-indigo-500/0 translate-x-[-100%] group-hover:translate-x-[100%] transition-transform duration-500 ease-out\" />\r\n </button>\r\n );\r\n}\r\n\r\nexport default CommandButton;\r\n","\"use client\";\r\n\r\nimport React, { ReactNode } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GradientTextProps {\r\n children: ReactNode;\r\n className?: string;\r\n colors?: string[];\r\n animationSpeed?: number;\r\n}\r\n\r\nexport function GradientText({\r\n children,\r\n className = \"\",\r\n colors = [\"#40ffaa\", \"#4079ff\", \"#40ffaa\", \"#4079ff\", \"#40ffaa\"],\r\n animationSpeed = 8,\r\n}: GradientTextProps) {\r\n return (\r\n <span\r\n className={cn(\r\n \"bg-clip-text text-transparent bg-[length:200%_auto] animate-gradient\",\r\n className\r\n )}\r\n style={{\r\n backgroundImage: `linear-gradient(to right, ${colors.join(\", \")})`,\r\n animationDuration: `${animationSpeed}s`,\r\n }}\r\n >\r\n {children}\r\n </span>\r\n );\r\n}\r\n\r\nexport default GradientText;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ShimmerTextProps {\r\n text?: string;\r\n className?: string;\r\n}\r\n\r\nexport function ShimmerText({ text = \"Text Shimmer\", className }: ShimmerTextProps) {\r\n return (\r\n <div className=\"flex items-center justify-center p-8\">\r\n <motion.div\r\n className=\"relative px-4 py-2 overflow-hidden\"\r\n initial={{ opacity: 0, y: 20 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.5 }}\r\n >\r\n <motion.h1\r\n className={cn(\r\n \"text-3xl font-bold bg-gradient-to-r from-neutral-950 via-neutral-400 to-neutral-950 dark:from-white dark:via-neutral-600 dark:to-white bg-[length:200%_100%] bg-clip-text text-transparent\",\r\n className\r\n )}\r\n animate={{\r\n backgroundPosition: [\"200% center\", \"-200% center\"],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n ease: \"linear\",\r\n repeat: Infinity,\r\n }}\r\n >\r\n {text}\r\n </motion.h1>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ShimmerText;\r\n","\"use client\";\r\n\r\nimport React, { useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlitchTextProps {\r\n text?: string;\r\n className?: string;\r\n glitchIntensity?: \"light\" | \"medium\" | \"heavy\" | \"extreme\";\r\n color?: \"rainbow\" | \"blue\" | \"purple\" | \"cyan\" | \"pink\" | \"orange\";\r\n isStatic?: boolean;\r\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\";\r\n}\r\n\r\nexport function GlitchText({\r\n text = \"Glitch Text\",\r\n className,\r\n glitchIntensity = \"medium\",\r\n color = \"orange\",\r\n isStatic = false,\r\n size = \"md\",\r\n}: GlitchTextProps) {\r\n const colorSchemes = {\r\n rainbow: { primary: \"#a855f7\", before: \"#22d3ee\", after: \"#f472b6\" },\r\n blue: { primary: \"#3b82f6\", before: \"#60a5fa\", after: \"#1d4ed8\" },\r\n purple: { primary: \"#8b5cf6\", before: \"#a78bfa\", after: \"#6d28d9\" },\r\n cyan: { primary: \"#06b6d4\", before: \"#22d3ee\", after: \"#0891b2\" },\r\n pink: { primary: \"#ec4899\", before: \"#f472b6\", after: \"#db2777\" },\r\n orange: { primary: \"#f97316\", before: \"#fb923c\", after: \"#ea580c\" },\r\n };\r\n\r\n const selectedScheme = colorSchemes[color];\r\n\r\n const intensitySettings = {\r\n light: { translateRange: 2, skewRange: 0.5 },\r\n medium: { translateRange: 3, skewRange: 1 },\r\n heavy: { translateRange: 5, skewRange: 2 },\r\n extreme: { translateRange: 8, skewRange: 3 },\r\n };\r\n\r\n const settings = intensitySettings[glitchIntensity];\r\n\r\n const sizeMap = {\r\n sm: \"text-2xl\",\r\n md: \"text-4xl\",\r\n lg: \"text-5xl\",\r\n xl: \"text-6xl\",\r\n \"2xl\": \"text-7xl\",\r\n \"3xl\": \"text-8xl\",\r\n };\r\n\r\n const glitchAnimation = {\r\n animate: {\r\n x: [0, settings.translateRange, -settings.translateRange, 0],\r\n y: [0, -settings.translateRange, settings.translateRange, 0],\r\n skewX: [0, settings.skewRange, -settings.skewRange, 0],\r\n },\r\n transition: {\r\n duration: 0.5,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n },\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative flex items-center justify-center p-8\", className)}>\r\n <motion.div\r\n className={cn(\"relative font-bold tracking-wider\", sizeMap[size])}\r\n style={{ color: selectedScheme.primary }}\r\n animate={!isStatic ? glitchAnimation.animate : undefined}\r\n transition={glitchAnimation.transition}\r\n >\r\n {text}\r\n <motion.span\r\n className=\"absolute inset-0 pointer-events-none\"\r\n style={{ color: selectedScheme.before, opacity: 0.8 }}\r\n animate={!isStatic ? {\r\n x: [-settings.translateRange, settings.translateRange, 0],\r\n y: [settings.translateRange, -settings.translateRange, 0],\r\n } : undefined}\r\n transition={{ duration: 0.5, repeat: Infinity }}\r\n >\r\n {text}\r\n </motion.span>\r\n <motion.span\r\n className=\"absolute inset-0 pointer-events-none\"\r\n style={{ color: selectedScheme.after, opacity: 0.8 }}\r\n animate={!isStatic ? {\r\n x: [settings.translateRange, -settings.translateRange, 0],\r\n y: [-settings.translateRange, settings.translateRange, 0],\r\n } : undefined}\r\n transition={{ duration: 0.5, repeat: Infinity }}\r\n >\r\n {text}\r\n </motion.span>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default GlitchText;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BounceTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n duration?: number;\r\n}\r\n\r\nexport function BounceText({\r\n text,\r\n className,\r\n delay = 0,\r\n duration = 0.4,\r\n}: BounceTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{\r\n y: [0, -20, 0],\r\n }}\r\n transition={{\r\n delay: delay + index * 0.03,\r\n duration: duration,\r\n ease: \"easeInOut\",\r\n repeat: Infinity,\r\n repeatDelay: 0.5,\r\n }}\r\n >\r\n {letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default BounceText;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useRef, useState, useMemo } from \"react\";\r\nimport { motion, Transition } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BlurTextProps {\r\n text?: string;\r\n delay?: number;\r\n className?: string;\r\n animateBy?: \"words\" | \"letters\";\r\n direction?: \"top\" | \"bottom\";\r\n}\r\n\r\nexport function BlurText({\r\n text = \"\",\r\n delay = 200,\r\n className = \"\",\r\n animateBy = \"words\",\r\n direction = \"top\",\r\n}: BlurTextProps) {\r\n const elements = animateBy === \"words\" ? text.split(\" \") : text.split(\"\");\r\n const [inView, setInView] = useState(false);\r\n const ref = useRef<HTMLParagraphElement>(null);\r\n\r\n useEffect(() => {\r\n if (!ref.current) return;\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setInView(true);\r\n observer.unobserve(ref.current as Element);\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n observer.observe(ref.current);\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n const fromAnimation = useMemo(\r\n () =>\r\n direction === \"top\"\r\n ? { filter: \"blur(10px)\", opacity: 0, y: -50 }\r\n : { filter: \"blur(10px)\", opacity: 0, y: 50 },\r\n [direction]\r\n );\r\n\r\n const toAnimation = { filter: \"blur(0px)\", opacity: 1, y: 0 };\r\n\r\n return (\r\n <p ref={ref} className={cn(\"flex flex-wrap\", className)}>\r\n {elements.map((segment, index) => (\r\n <motion.span\r\n key={index}\r\n initial={fromAnimation}\r\n animate={inView ? toAnimation : fromAnimation}\r\n transition={{\r\n duration: 0.5,\r\n delay: (index * delay) / 1000,\r\n ease: \"easeOut\",\r\n }}\r\n className=\"inline-block\"\r\n style={{ willChange: \"transform, filter, opacity\" }}\r\n >\r\n {segment === \" \" ? \"\\u00A0\" : segment}\r\n {animateBy === \"words\" && index < elements.length - 1 && \"\\u00A0\"}\r\n </motion.span>\r\n ))}\r\n </p>\r\n );\r\n}\r\n\r\nexport default BlurText;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TypewriterProps {\r\n text?: string;\r\n className?: string;\r\n speed?: number;\r\n delay?: number;\r\n cursor?: boolean;\r\n loop?: boolean;\r\n}\r\n\r\nexport function Typewriter({\r\n text = \"Hello World\",\r\n className,\r\n speed = 50,\r\n delay = 0,\r\n cursor = true,\r\n loop = false,\r\n}: TypewriterProps) {\r\n const [displayText, setDisplayText] = useState(\"\");\r\n const [isTyping, setIsTyping] = useState(false);\r\n\r\n useEffect(() => {\r\n let timeout: NodeJS.Timeout;\r\n let i = 0;\r\n let isDeleting = false;\r\n\r\n const type = () => {\r\n setIsTyping(true);\r\n\r\n if (!isDeleting) {\r\n if (i < text.length) {\r\n setDisplayText(text.slice(0, i + 1));\r\n i++;\r\n timeout = setTimeout(type, speed);\r\n } else {\r\n setIsTyping(false);\r\n if (loop) {\r\n timeout = setTimeout(() => {\r\n isDeleting = true;\r\n type();\r\n }, 2000);\r\n }\r\n }\r\n } else {\r\n if (i > 0) {\r\n setDisplayText(text.slice(0, i - 1));\r\n i--;\r\n timeout = setTimeout(type, speed / 2);\r\n } else {\r\n isDeleting = false;\r\n timeout = setTimeout(type, 500);\r\n }\r\n }\r\n };\r\n\r\n timeout = setTimeout(type, delay);\r\n\r\n return () => clearTimeout(timeout);\r\n }, [text, speed, delay, loop]);\r\n\r\n return (\r\n <span className={cn(\"inline-block font-mono\", className)}>\r\n {displayText}\r\n {cursor && (\r\n <span\r\n className={cn(\r\n \"ml-0.5 inline-block w-[2px] h-[1em] bg-current\",\r\n isTyping ? \"animate-blink\" : \"\"\r\n )}\r\n />\r\n )}\r\n </span>\r\n );\r\n}\r\n\r\nexport default Typewriter;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface WaveTextProps {\r\n text: string;\r\n className?: string;\r\n amplitude?: number;\r\n frequency?: number;\r\n}\r\n\r\nexport function WaveText({\r\n text,\r\n className,\r\n amplitude = 10,\r\n frequency = 1.5,\r\n}: WaveTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{\r\n y: [0, -amplitude, 0, amplitude, 0],\r\n }}\r\n transition={{\r\n duration: frequency,\r\n repeat: Infinity,\r\n delay: index * 0.08,\r\n ease: \"easeInOut\",\r\n }}\r\n >\r\n {letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default WaveText;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FlipTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function FlipText({ text, className, delay = 0 }: FlipTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)} style={{ perspective: \"1000px\" }}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block origin-center\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{ rotateX: [0, 360] }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n delay: delay + index * 0.08,\r\n ease: \"easeInOut\",\r\n repeatDelay: 0.8,\r\n }}\r\n >\r\n {letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default FlipText;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ShinyTextProps {\r\n text: string;\r\n disabled?: boolean;\r\n speed?: number;\r\n className?: string;\r\n}\r\n\r\nexport function ShinyText({ \r\n text, \r\n disabled = false, \r\n speed = 5, \r\n className = \"\" \r\n}: ShinyTextProps) {\r\n return (\r\n <span \r\n className={cn(\r\n \"inline-block bg-gradient-to-r from-gray-900 via-gray-100 to-gray-900 bg-clip-text text-transparent bg-[length:200%_100%]\",\r\n !disabled && \"animate-[shine_var(--shine-speed)_linear_infinite]\",\r\n className\r\n )}\r\n style={{ \r\n \"--shine-speed\": `${speed}s`,\r\n backgroundImage: \"linear-gradient(90deg, #374151 25%, #f3f4f6 50%, #374151 75%)\"\r\n } as React.CSSProperties}\r\n >\r\n {text}\r\n <style>{`\r\n @keyframes shine {\r\n 0% { background-position: -200% 0; }\r\n 100% { background-position: 200% 0; }\r\n }\r\n `}</style>\r\n </span>\r\n );\r\n}\r\n\r\nexport default ShinyText;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useRef } from \"react\";\r\n\r\ninterface FuzzyTextProps {\r\n children: React.ReactNode;\r\n fontSize?: number | string;\r\n fontWeight?: string | number;\r\n fontFamily?: string;\r\n color?: string;\r\n enableHover?: boolean;\r\n baseIntensity?: number;\r\n hoverIntensity?: number;\r\n}\r\n\r\nexport function FuzzyText({\r\n children,\r\n fontSize = \"clamp(2rem, 8vw, 8rem)\",\r\n fontWeight = 900,\r\n fontFamily = \"inherit\",\r\n color = \"#fff\",\r\n enableHover = true,\r\n baseIntensity = 0.18,\r\n hoverIntensity = 0.5\r\n}: FuzzyTextProps) {\r\n const canvasRef = useRef<HTMLCanvasElement & { cleanupFuzzyText?: () => void }>(null);\r\n\r\n useEffect(() => {\r\n let animationFrameId: number;\r\n let isCancelled = false;\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n\r\n const init = async () => {\r\n if (document.fonts?.ready) await document.fonts.ready;\r\n if (isCancelled) return;\r\n\r\n const ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n const computedFontFamily = fontFamily === \"inherit\" \r\n ? window.getComputedStyle(canvas).fontFamily || \"sans-serif\" \r\n : fontFamily;\r\n\r\n const fontSizeStr = typeof fontSize === \"number\" ? `${fontSize}px` : fontSize;\r\n let numericFontSize: number;\r\n if (typeof fontSize === \"number\") {\r\n numericFontSize = fontSize;\r\n } else {\r\n const temp = document.createElement(\"span\");\r\n temp.style.fontSize = fontSize;\r\n document.body.appendChild(temp);\r\n numericFontSize = parseFloat(window.getComputedStyle(temp).fontSize);\r\n document.body.removeChild(temp);\r\n }\r\n\r\n const text = React.Children.toArray(children).join(\"\");\r\n const offscreen = document.createElement(\"canvas\");\r\n const offCtx = offscreen.getContext(\"2d\");\r\n if (!offCtx) return;\r\n\r\n offCtx.font = `${fontWeight} ${fontSizeStr} ${computedFontFamily}`;\r\n offCtx.textBaseline = \"alphabetic\";\r\n const metrics = offCtx.measureText(text);\r\n\r\n const actualLeft = metrics.actualBoundingBoxLeft ?? 0;\r\n const actualRight = metrics.actualBoundingBoxRight ?? metrics.width;\r\n const actualAscent = metrics.actualBoundingBoxAscent ?? numericFontSize;\r\n const actualDescent = metrics.actualBoundingBoxDescent ?? numericFontSize * 0.2;\r\n\r\n const textBoundingWidth = Math.ceil(actualLeft + actualRight);\r\n const tightHeight = Math.ceil(actualAscent + actualDescent);\r\n const extraWidthBuffer = 10;\r\n const offscreenWidth = textBoundingWidth + extraWidthBuffer;\r\n\r\n offscreen.width = offscreenWidth;\r\n offscreen.height = tightHeight;\r\n\r\n const xOffset = extraWidthBuffer / 2;\r\n offCtx.font = `${fontWeight} ${fontSizeStr} ${computedFontFamily}`;\r\n offCtx.textBaseline = \"alphabetic\";\r\n offCtx.fillStyle = color;\r\n offCtx.fillText(text, xOffset - actualLeft, actualAscent);\r\n\r\n const horizontalMargin = 50;\r\n const verticalMargin = 0;\r\n canvas.width = offscreenWidth + horizontalMargin * 2;\r\n canvas.height = tightHeight + verticalMargin * 2;\r\n ctx.translate(horizontalMargin, verticalMargin);\r\n\r\n const interactiveLeft = horizontalMargin + xOffset;\r\n const interactiveTop = verticalMargin;\r\n const interactiveRight = interactiveLeft + textBoundingWidth;\r\n const interactiveBottom = interactiveTop + tightHeight;\r\n\r\n let isHovering = false;\r\n const fuzzRange = 30;\r\n\r\n const run = () => {\r\n if (isCancelled) return;\r\n ctx.clearRect(-fuzzRange, -fuzzRange, offscreenWidth + 2 * fuzzRange, tightHeight + 2 * fuzzRange);\r\n const intensity = isHovering ? hoverIntensity : baseIntensity;\r\n for (let j = 0; j < tightHeight; j++) {\r\n const dx = Math.floor(intensity * (Math.random() - 0.5) * fuzzRange);\r\n ctx.drawImage(offscreen, 0, j, offscreenWidth, 1, dx, j, offscreenWidth, 1);\r\n }\r\n animationFrameId = window.requestAnimationFrame(run);\r\n };\r\n\r\n run();\r\n\r\n const isInsideTextArea = (x: number, y: number) =>\r\n x >= interactiveLeft && x <= interactiveRight && y >= interactiveTop && y <= interactiveBottom;\r\n\r\n const handleMouseMove = (e: MouseEvent) => {\r\n if (!enableHover) return;\r\n const rect = canvas.getBoundingClientRect();\r\n isHovering = isInsideTextArea(e.clientX - rect.left, e.clientY - rect.top);\r\n };\r\n\r\n const handleMouseLeave = () => { isHovering = false; };\r\n\r\n if (enableHover) {\r\n canvas.addEventListener(\"mousemove\", handleMouseMove);\r\n canvas.addEventListener(\"mouseleave\", handleMouseLeave);\r\n }\r\n\r\n canvas.cleanupFuzzyText = () => {\r\n window.cancelAnimationFrame(animationFrameId);\r\n if (enableHover) {\r\n canvas.removeEventListener(\"mousemove\", handleMouseMove);\r\n canvas.removeEventListener(\"mouseleave\", handleMouseLeave);\r\n }\r\n };\r\n };\r\n\r\n init();\r\n\r\n return () => {\r\n isCancelled = true;\r\n window.cancelAnimationFrame(animationFrameId);\r\n if (canvas?.cleanupFuzzyText) canvas.cleanupFuzzyText();\r\n };\r\n }, [children, fontSize, fontWeight, fontFamily, color, enableHover, baseIntensity, hoverIntensity]);\r\n\r\n return <canvas ref={canvasRef} className=\"max-w-full\" />;\r\n}\r\n\r\nexport default FuzzyText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MatrixTextProps {\r\n text: string;\r\n className?: string;\r\n speed?: number;\r\n color?: string;\r\n}\r\n\r\nexport function MatrixText({ \r\n text, \r\n className,\r\n speed = 50,\r\n color = \"#22c55e\"\r\n}: MatrixTextProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const intervalRef = useRef<NodeJS.Timeout | null>(null);\r\n\r\n useEffect(() => {\r\n const container = containerRef.current;\r\n if (!container) return;\r\n\r\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@#$%^&*\";\r\n const originalText = text;\r\n let iteration = 0;\r\n\r\n const animate = () => {\r\n container.innerText = originalText\r\n .split(\"\")\r\n .map((char, index) => {\r\n if (index < iteration) return originalText[index];\r\n return chars[Math.floor(Math.random() * chars.length)];\r\n })\r\n .join(\"\");\r\n\r\n if (iteration >= originalText.length) {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n return;\r\n }\r\n\r\n iteration += 1 / 3;\r\n };\r\n\r\n intervalRef.current = setInterval(animate, speed);\r\n\r\n return () => {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n };\r\n }, [text, speed]);\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={cn(\"font-mono\", className)}\r\n style={{ color }}\r\n >\r\n {text}\r\n </div>\r\n );\r\n}\r\n\r\nexport default MatrixText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LiquidTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function LiquidText({ text, className, delay = 0 }: LiquidTextProps) {\r\n const words = text.split(\" \");\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: (i = 1) => ({\r\n opacity: 1,\r\n transition: { staggerChildren: 0.12, delayChildren: delay * i },\r\n }),\r\n };\r\n\r\n const child = {\r\n visible: {\r\n opacity: 1,\r\n y: 0,\r\n filter: \"blur(0px)\",\r\n transition: {\r\n type: \"spring\",\r\n damping: 12,\r\n stiffness: 100,\r\n },\r\n },\r\n hidden: {\r\n opacity: 0,\r\n y: 20,\r\n filter: \"blur(10px)\",\r\n transition: {\r\n type: \"spring\",\r\n damping: 12,\r\n stiffness: 100,\r\n },\r\n },\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(\"flex flex-wrap\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {words.map((word, index) => (\r\n <motion.span\r\n variants={child}\r\n key={index}\r\n className=\"mr-2\"\r\n >\r\n {word}\r\n </motion.span>\r\n ))}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default LiquidText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SwooshTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function SwooshText({ text, className, delay = 0 }: SwooshTextProps) {\r\n const letters = text.split(\"\");\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: {\r\n opacity: 1,\r\n transition: { staggerChildren: 0.03, delayChildren: delay },\r\n },\r\n };\r\n\r\n const child = {\r\n hidden: {\r\n opacity: 0,\r\n x: -20,\r\n y: 10,\r\n rotate: -10,\r\n },\r\n visible: {\r\n opacity: 1,\r\n x: 0,\r\n y: 0,\r\n rotate: 0,\r\n transition: {\r\n type: \"spring\",\r\n damping: 12,\r\n stiffness: 200,\r\n },\r\n },\r\n };\r\n\r\n return (\r\n <motion.span\r\n className={cn(\"inline-flex\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={index}\r\n variants={child}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </motion.span>\r\n );\r\n}\r\n\r\nexport default SwooshText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ScrambledTextProps {\r\n text: string;\r\n className?: string;\r\n speed?: number;\r\n scrambleChars?: string;\r\n}\r\n\r\nexport function ScrambledText({\r\n text,\r\n className,\r\n speed = 50,\r\n scrambleChars = \"!<>-_\\\\/[]{}—=+*^?#________\"\r\n}: ScrambledTextProps) {\r\n const [displayText, setDisplayText] = useState(text);\r\n\r\n useEffect(() => {\r\n let iteration = 0;\r\n const interval = setInterval(() => {\r\n setDisplayText(\r\n text\r\n .split(\"\")\r\n .map((char, index) => {\r\n if (index < iteration) return text[index];\r\n return scrambleChars[Math.floor(Math.random() * scrambleChars.length)];\r\n })\r\n .join(\"\")\r\n );\r\n\r\n if (iteration >= text.length) {\r\n clearInterval(interval);\r\n }\r\n\r\n iteration += 1 / 3;\r\n }, speed);\r\n\r\n return () => clearInterval(interval);\r\n }, [text, speed, scrambleChars]);\r\n\r\n return (\r\n <span className={cn(\"font-mono\", className)}>\r\n {displayText}\r\n </span>\r\n );\r\n}\r\n\r\nexport default ScrambledText;\r\n","\"use client\";\r\n\r\nimport { useRef, useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MagneticTextProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n strength?: number;\r\n}\r\n\r\nexport function MagneticText({ children, className, strength = 0.5 }: MagneticTextProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [position, setPosition] = useState({ x: 0, y: 0 });\r\n\r\n const handleMouse = (e: React.MouseEvent<HTMLDivElement>) => {\r\n const { clientX, clientY } = e;\r\n const { height, width, left, top } = ref.current!.getBoundingClientRect();\r\n const middleX = clientX - (left + width / 2);\r\n const middleY = clientY - (top + height / 2);\r\n setPosition({ x: middleX * strength, y: middleY * strength });\r\n };\r\n\r\n const reset = () => {\r\n setPosition({ x: 0, y: 0 });\r\n };\r\n\r\n const { x, y } = position;\r\n\r\n return (\r\n <motion.div\r\n ref={ref}\r\n onMouseMove={handleMouse}\r\n onMouseLeave={reset}\r\n animate={{ x, y }}\r\n transition={{ type: \"spring\", stiffness: 150, damping: 15, mass: 0.1 }}\r\n className={cn(\"inline-block cursor-pointer\", className)}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default MagneticText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface DynamicTextProps {\r\n words: string[];\r\n className?: string;\r\n interval?: number;\r\n}\r\n\r\nexport function DynamicText({ words, className, interval = 3000 }: DynamicTextProps) {\r\n const [index, setIndex] = useState(0);\r\n\r\n useEffect(() => {\r\n const timer = setInterval(() => {\r\n setIndex((prev) => (prev + 1) % words.length);\r\n }, interval);\r\n return () => clearInterval(timer);\r\n }, [words.length, interval]);\r\n\r\n return (\r\n <div className={cn(\"relative inline-block overflow-hidden\", className)}>\r\n <AnimatePresence mode=\"wait\">\r\n <motion.span\r\n key={words[index]}\r\n initial={{ y: 20, opacity: 0 }}\r\n animate={{ y: 0, opacity: 1 }}\r\n exit={{ y: -20, opacity: 0 }}\r\n transition={{ duration: 0.3 }}\r\n className=\"inline-block\"\r\n >\r\n {words[index]}\r\n </motion.span>\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default DynamicText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RotatingTextProps {\r\n words: string[];\r\n className?: string;\r\n interval?: number;\r\n}\r\n\r\nexport function RotatingText({ words, className, interval = 2000 }: RotatingTextProps) {\r\n const [index, setIndex] = useState(0);\r\n\r\n useEffect(() => {\r\n const timer = setInterval(() => {\r\n setIndex((prev) => (prev + 1) % words.length);\r\n }, interval);\r\n return () => clearInterval(timer);\r\n }, [words.length, interval]);\r\n\r\n return (\r\n <span className={cn(\"inline-block relative\", className)}>\r\n <AnimatePresence mode=\"wait\">\r\n <motion.span\r\n key={words[index]}\r\n initial={{ rotateX: -90, opacity: 0 }}\r\n animate={{ rotateX: 0, opacity: 1 }}\r\n exit={{ rotateX: 90, opacity: 0 }}\r\n transition={{ duration: 0.4 }}\r\n className=\"inline-block\"\r\n style={{ transformStyle: \"preserve-3d\" }}\r\n >\r\n {words[index]}\r\n </motion.span>\r\n </AnimatePresence>\r\n </span>\r\n );\r\n}\r\n\r\nexport default RotatingText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface StaggerTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n staggerDelay?: number;\r\n}\r\n\r\nexport function StaggerText({ \r\n text, \r\n className, \r\n delay = 0,\r\n staggerDelay = 0.05 \r\n}: StaggerTextProps) {\r\n const letters = text.split(\"\");\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: {\r\n opacity: 1,\r\n transition: {\r\n staggerChildren: staggerDelay,\r\n delayChildren: delay,\r\n },\r\n },\r\n };\r\n\r\n const child = {\r\n hidden: { opacity: 0, y: 20 },\r\n visible: {\r\n opacity: 1,\r\n y: 0,\r\n transition: { type: \"spring\", damping: 12, stiffness: 200 },\r\n },\r\n };\r\n\r\n return (\r\n <motion.span\r\n className={cn(\"inline-flex\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={index}\r\n variants={child}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </motion.span>\r\n );\r\n}\r\n\r\nexport default StaggerText;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RainbowTextProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n speed?: number;\r\n}\r\n\r\nexport function RainbowText({ children, className, speed = 3 }: RainbowTextProps) {\r\n return (\r\n <span\r\n className={cn(\r\n \"inline-block bg-gradient-to-r from-red-500 via-yellow-500 via-green-500 via-blue-500 to-purple-500 bg-clip-text text-transparent bg-[length:200%_auto] animate-[rainbow_var(--rainbow-speed)_linear_infinite]\",\r\n className\r\n )}\r\n style={{ \"--rainbow-speed\": `${speed}s` } as React.CSSProperties}\r\n >\r\n {children}\r\n <style>{`\r\n @keyframes rainbow {\r\n 0% { background-position: 0% center; }\r\n 100% { background-position: 200% center; }\r\n }\r\n `}</style>\r\n </span>\r\n );\r\n}\r\n\r\nexport default RainbowText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CountUpProps {\r\n end: number;\r\n start?: number;\r\n duration?: number;\r\n className?: string;\r\n prefix?: string;\r\n suffix?: string;\r\n decimals?: number;\r\n}\r\n\r\nexport function CountUp({\r\n end,\r\n start = 0,\r\n duration = 2000,\r\n className,\r\n prefix = \"\",\r\n suffix = \"\",\r\n decimals = 0,\r\n}: CountUpProps) {\r\n const [count, setCount] = useState(start);\r\n\r\n useEffect(() => {\r\n let startTime: number | null = null;\r\n let animationFrame: number;\r\n\r\n const animate = (timestamp: number) => {\r\n if (!startTime) startTime = timestamp;\r\n const progress = Math.min((timestamp - startTime) / duration, 1);\r\n \r\n const easeOutQuart = 1 - Math.pow(1 - progress, 4);\r\n const currentCount = start + (end - start) * easeOutQuart;\r\n \r\n setCount(currentCount);\r\n\r\n if (progress < 1) {\r\n animationFrame = requestAnimationFrame(animate);\r\n }\r\n };\r\n\r\n animationFrame = requestAnimationFrame(animate);\r\n\r\n return () => cancelAnimationFrame(animationFrame);\r\n }, [start, end, duration]);\r\n\r\n return (\r\n <span className={cn(\"tabular-nums\", className)}>\r\n {prefix}\r\n {count.toFixed(decimals)}\r\n {suffix}\r\n </span>\r\n );\r\n}\r\n\r\nexport default CountUp;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RevealTextProps {\r\n text: string;\r\n className?: string;\r\n stagger?: number;\r\n}\r\n\r\nexport function RevealText({ text, className, stagger = 0.04 }: RevealTextProps) {\r\n const letters = Array.from(text);\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: {\r\n opacity: 1,\r\n transition: { staggerChildren: stagger, delayChildren: 0.02 },\r\n },\r\n };\r\n\r\n const child = {\r\n hidden: { opacity: 0, y: 20 },\r\n visible: {\r\n opacity: 1,\r\n y: 0,\r\n transition: { type: \"spring\", damping: 12, stiffness: 100 },\r\n },\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(\"flex overflow-hidden\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n variants={child}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default RevealText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SplitTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n duration?: number;\r\n splitType?: \"chars\" | \"words\";\r\n textAlign?: \"left\" | \"center\" | \"right\";\r\n}\r\n\r\nexport function SplitText({\r\n text,\r\n className = \"\",\r\n delay = 100,\r\n duration = 0.6,\r\n splitType = \"chars\",\r\n textAlign = \"center\",\r\n}: SplitTextProps) {\r\n const [inView, setInView] = useState(false);\r\n const ref = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (!ref.current) return;\r\n\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setInView(true);\r\n observer.unobserve(ref.current as Element);\r\n }\r\n },\r\n { threshold: 0.1, rootMargin: \"-100px\" }\r\n );\r\n\r\n observer.observe(ref.current);\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n const elements = splitType === \"words\" ? text.split(\" \") : text.split(\"\");\r\n\r\n return (\r\n <div ref={ref} className={cn(\"overflow-hidden\", className)} style={{ textAlign }}>\r\n {elements.map((element, index) => (\r\n <motion.span\r\n key={index}\r\n initial={{ opacity: 0, y: 40 }}\r\n animate={inView ? { opacity: 1, y: 0 } : { opacity: 0, y: 40 }}\r\n transition={{ duration, delay: (index * delay) / 1000, ease: \"easeOut\" }}\r\n className=\"inline-block\"\r\n style={{ marginRight: splitType === \"words\" ? \"0.25em\" : \"0\" }}\r\n >\r\n {element === \" \" ? \"\\u00A0\" : element}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default SplitText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MorphTextProps {\r\n text: string;\r\n className?: string;\r\n}\r\n\r\nexport function MorphText({ text, className }: MorphTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{\r\n scaleY: [1, 0.5, 1.5, 0.8, 1],\r\n scaleX: [1, 1.5, 0.5, 1.2, 1],\r\n }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n delay: index * 0.08,\r\n ease: \"easeInOut\",\r\n repeatDelay: 0.3,\r\n }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default MorphText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface PerspectiveTextProps {\r\n text: string;\r\n className?: string;\r\n}\r\n\r\nexport function PerspectiveText({ text, className }: PerspectiveTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)} style={{ perspective: \"500px\" }}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n initial={{ rotateY: 90, opacity: 0 }}\r\n animate={{ rotateY: 0, opacity: 1 }}\r\n transition={{\r\n delay: index * 0.04,\r\n duration: 0.5,\r\n type: \"spring\",\r\n stiffness: 120,\r\n }}\r\n whileHover={{ rotateY: 180, transition: { duration: 0.3 } }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default PerspectiveText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ElasticTextProps {\r\n text: string;\r\n className?: string;\r\n}\r\n\r\nexport function ElasticText({ text, className }: ElasticTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block cursor-pointer\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n whileHover={{\r\n scale: [1, 1.5, 0.8, 1.2, 1],\r\n rotate: [0, 10, -10, 0],\r\n transition: { duration: 0.6, ease: \"easeInOut\" },\r\n }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ElasticText;\r\n","\"use client\";\r\n\r\nimport { useEffect } from \"react\";\r\nimport { motion, useAnimation, useMotionValue } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CircularTextProps {\r\n text: string;\r\n spinDuration?: number;\r\n onHover?: \"slowDown\" | \"speedUp\" | \"pause\" | \"goBonkers\";\r\n className?: string;\r\n}\r\n\r\nexport function CircularText({\r\n text,\r\n spinDuration = 20,\r\n onHover = \"speedUp\",\r\n className = \"\",\r\n}: CircularTextProps) {\r\n const letters = Array.from(text);\r\n const controls = useAnimation();\r\n const rotation = useMotionValue(0);\r\n\r\n useEffect(() => {\r\n const start = rotation.get();\r\n controls.start({\r\n rotate: start + 360,\r\n scale: 1,\r\n transition: {\r\n rotate: { from: start, to: start + 360, ease: \"linear\", duration: spinDuration, repeat: Infinity },\r\n scale: { type: \"spring\", damping: 20, stiffness: 300 },\r\n },\r\n });\r\n }, [spinDuration, controls, rotation]);\r\n\r\n const handleHoverStart = () => {\r\n const start = rotation.get();\r\n let duration = spinDuration;\r\n let scale = 1;\r\n\r\n switch (onHover) {\r\n case \"slowDown\": duration = spinDuration * 2; break;\r\n case \"speedUp\": duration = spinDuration / 4; break;\r\n case \"pause\": duration = 0; break;\r\n case \"goBonkers\": duration = spinDuration / 20; scale = 0.8; break;\r\n }\r\n\r\n if (onHover === \"pause\") {\r\n controls.stop();\r\n } else {\r\n controls.start({\r\n rotate: start + 360,\r\n scale,\r\n transition: {\r\n rotate: { from: start, to: start + 360, ease: \"linear\", duration, repeat: Infinity },\r\n scale: { type: \"spring\", damping: 20, stiffness: 300 },\r\n },\r\n });\r\n }\r\n };\r\n\r\n const handleHoverEnd = () => {\r\n const start = rotation.get();\r\n controls.start({\r\n rotate: start + 360,\r\n scale: 1,\r\n transition: {\r\n rotate: { from: start, to: start + 360, ease: \"linear\", duration: spinDuration, repeat: Infinity },\r\n scale: { type: \"spring\", damping: 20, stiffness: 300 },\r\n },\r\n });\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(\"relative w-32 h-32 cursor-pointer\", className)}\r\n style={{ rotate: rotation }}\r\n initial={{ rotate: 0 }}\r\n animate={controls}\r\n onMouseEnter={handleHoverStart}\r\n onMouseLeave={handleHoverEnd}\r\n >\r\n {letters.map((letter, i) => {\r\n const rotationDeg = (360 / letters.length) * i;\r\n const radius = 60;\r\n const angle = (rotationDeg * Math.PI) / 180;\r\n const x = Math.cos(angle) * radius;\r\n const y = Math.sin(angle) * radius;\r\n\r\n return (\r\n <span\r\n key={i}\r\n className=\"absolute text-lg font-bold\"\r\n style={{\r\n transform: `translate(-50%, -50%) translate(${x}px, ${y}px) rotate(${rotationDeg + 90}deg)`,\r\n left: \"50%\",\r\n top: \"50%\",\r\n }}\r\n >\r\n {letter}\r\n </span>\r\n );\r\n })}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default CircularText;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlowingTextProps {\r\n text: string;\r\n className?: string;\r\n glowColor?: string;\r\n hoverColor?: string;\r\n}\r\n\r\nexport function GlowingText({\r\n text,\r\n className,\r\n glowColor = \"#3b82f6\",\r\n hoverColor = \"#ec4899\",\r\n}: GlowingTextProps) {\r\n const [isHovered, setIsHovered] = useState(false);\r\n const currentColor = isHovered ? hoverColor : glowColor;\r\n\r\n return (\r\n <motion.div\r\n className={cn(\"font-bold cursor-pointer select-none\", className)}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n animate={{\r\n color: currentColor,\r\n textShadow: `0 0 10px ${currentColor}, 0 0 20px ${currentColor}, 0 0 30px ${currentColor}, 0 0 50px ${currentColor}`,\r\n }}\r\n transition={{ duration: 0.4, ease: \"easeInOut\" }}\r\n >\r\n {text}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default GlowingText;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SlicedTextProps {\r\n text: string;\r\n className?: string;\r\n containerClassName?: string;\r\n splitSpacing?: number;\r\n}\r\n\r\nexport function SlicedText({\r\n text = \"Sliced Text\",\r\n className = \"\",\r\n containerClassName = \"\",\r\n splitSpacing = 2,\r\n}: SlicedTextProps) {\r\n return (\r\n <motion.div\r\n className={cn(\"w-full text-center relative inline-block\", containerClassName)}\r\n whileHover=\"hover\"\r\n initial=\"default\"\r\n >\r\n <motion.div\r\n className={cn(\"absolute w-full text-4xl -ml-0.5\", className)}\r\n variants={{\r\n default: { clipPath: \"inset(0 0 50% 0)\", y: -splitSpacing / 2, opacity: 1 },\r\n hover: { clipPath: \"inset(0 0 0 0)\", y: 0, opacity: 0 },\r\n }}\r\n transition={{ duration: 0.1 }}\r\n >\r\n {text}\r\n </motion.div>\r\n <motion.div\r\n className={cn(\"absolute w-full text-4xl\", className)}\r\n variants={{\r\n default: { clipPath: \"inset(50% 0 0 0)\", y: splitSpacing / 2, opacity: 1 },\r\n hover: { clipPath: \"inset(0 0 0 0)\", y: 0, opacity: 1 },\r\n }}\r\n transition={{ duration: 0.1 }}\r\n >\r\n {text}\r\n </motion.div>\r\n <div className={cn(\"invisible text-4xl\", className)}>{text}</div>\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default SlicedText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState, useRef } from \"react\";\r\nimport { motion, HTMLMotionProps } from \"framer-motion\";\r\n\r\ninterface DecryptedTextProps extends HTMLMotionProps<\"span\"> {\r\n text: string;\r\n speed?: number;\r\n maxIterations?: number;\r\n sequential?: boolean;\r\n revealDirection?: \"start\" | \"end\" | \"center\";\r\n useOriginalCharsOnly?: boolean;\r\n characters?: string;\r\n className?: string;\r\n parentClassName?: string;\r\n encryptedClassName?: string;\r\n animateOn?: \"view\" | \"hover\" | \"both\";\r\n}\r\n\r\nexport function DecryptedText({\r\n text,\r\n speed = 50,\r\n maxIterations = 10,\r\n sequential = false,\r\n revealDirection = \"start\",\r\n useOriginalCharsOnly = false,\r\n characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#$%^&*()_+\",\r\n className = \"\",\r\n parentClassName = \"\",\r\n encryptedClassName = \"\",\r\n animateOn = \"hover\",\r\n ...props\r\n}: DecryptedTextProps) {\r\n const [displayText, setDisplayText] = useState<string>(text);\r\n const [isHovering, setIsHovering] = useState<boolean>(false);\r\n const [isScrambling, setIsScrambling] = useState<boolean>(false);\r\n const [revealedIndices, setRevealedIndices] = useState<Set<number>>(new Set());\r\n const [hasAnimated, setHasAnimated] = useState<boolean>(false);\r\n const containerRef = useRef<HTMLSpanElement>(null);\r\n\r\n useEffect(() => {\r\n let interval: NodeJS.Timeout;\r\n let currentIteration = 0;\r\n\r\n const getNextIndex = (revealedSet: Set<number>): number => {\r\n const textLength = text.length;\r\n switch (revealDirection) {\r\n case \"start\":\r\n return revealedSet.size;\r\n case \"end\":\r\n return textLength - 1 - revealedSet.size;\r\n case \"center\": {\r\n const middle = Math.floor(textLength / 2);\r\n const offset = Math.floor(revealedSet.size / 2);\r\n const nextIndex = revealedSet.size % 2 === 0 ? middle + offset : middle - offset - 1;\r\n if (nextIndex >= 0 && nextIndex < textLength && !revealedSet.has(nextIndex)) {\r\n return nextIndex;\r\n }\r\n for (let i = 0; i < textLength; i++) {\r\n if (!revealedSet.has(i)) return i;\r\n }\r\n return 0;\r\n }\r\n default:\r\n return revealedSet.size;\r\n }\r\n };\r\n\r\n const availableChars = useOriginalCharsOnly\r\n ? Array.from(new Set(text.split(\"\"))).filter((char) => char !== \" \")\r\n : characters.split(\"\");\r\n\r\n const shuffleText = (originalText: string, currentRevealed: Set<number>): string => {\r\n if (useOriginalCharsOnly) {\r\n const positions = originalText.split(\"\").map((char, i) => ({\r\n char,\r\n isSpace: char === \" \",\r\n index: i,\r\n isRevealed: currentRevealed.has(i),\r\n }));\r\n\r\n const nonSpaceChars = positions.filter((p) => !p.isSpace && !p.isRevealed).map((p) => p.char);\r\n\r\n for (let i = nonSpaceChars.length - 1; i > 0; i--) {\r\n const j = Math.floor(Math.random() * (i + 1));\r\n [nonSpaceChars[i], nonSpaceChars[j]] = [nonSpaceChars[j], nonSpaceChars[i]];\r\n }\r\n\r\n let charIndex = 0;\r\n return positions\r\n .map((p) => {\r\n if (p.isSpace) return \" \";\r\n if (p.isRevealed) return originalText[p.index];\r\n return nonSpaceChars[charIndex++];\r\n })\r\n .join(\"\");\r\n } else {\r\n return originalText\r\n .split(\"\")\r\n .map((char, i) => {\r\n if (char === \" \") return \" \";\r\n if (currentRevealed.has(i)) return originalText[i];\r\n return availableChars[Math.floor(Math.random() * availableChars.length)];\r\n })\r\n .join(\"\");\r\n }\r\n };\r\n\r\n if (isHovering) {\r\n setIsScrambling(true);\r\n interval = setInterval(() => {\r\n setRevealedIndices((prevRevealed) => {\r\n if (sequential) {\r\n if (prevRevealed.size < text.length) {\r\n const nextIndex = getNextIndex(prevRevealed);\r\n const newRevealed = new Set(prevRevealed);\r\n newRevealed.add(nextIndex);\r\n setDisplayText(shuffleText(text, newRevealed));\r\n return newRevealed;\r\n } else {\r\n clearInterval(interval);\r\n setIsScrambling(false);\r\n return prevRevealed;\r\n }\r\n } else {\r\n setDisplayText(shuffleText(text, prevRevealed));\r\n currentIteration++;\r\n if (currentIteration >= maxIterations) {\r\n clearInterval(interval);\r\n setIsScrambling(false);\r\n setDisplayText(text);\r\n }\r\n return prevRevealed;\r\n }\r\n });\r\n }, speed);\r\n } else {\r\n setDisplayText(text);\r\n setRevealedIndices(new Set());\r\n setIsScrambling(false);\r\n }\r\n\r\n return () => {\r\n if (interval) clearInterval(interval);\r\n };\r\n }, [isHovering, text, speed, maxIterations, sequential, revealDirection, characters, useOriginalCharsOnly]);\r\n\r\n useEffect(() => {\r\n if (animateOn !== \"view\" && animateOn !== \"both\") return;\r\n\r\n const observerCallback = (entries: IntersectionObserverEntry[]) => {\r\n entries.forEach((entry) => {\r\n if (entry.isIntersecting && !hasAnimated) {\r\n setIsHovering(true);\r\n setHasAnimated(true);\r\n }\r\n });\r\n };\r\n\r\n const observer = new IntersectionObserver(observerCallback, { threshold: 0.1 });\r\n const currentRef = containerRef.current;\r\n if (currentRef) {\r\n observer.observe(currentRef);\r\n }\r\n\r\n return () => {\r\n if (currentRef) {\r\n observer.unobserve(currentRef);\r\n }\r\n };\r\n }, [animateOn, hasAnimated]);\r\n\r\n const hoverProps =\r\n animateOn === \"hover\" || animateOn === \"both\"\r\n ? {\r\n onMouseEnter: () => setIsHovering(true),\r\n onMouseLeave: () => setIsHovering(false),\r\n }\r\n : {};\r\n\r\n return (\r\n <motion.span\r\n className={parentClassName}\r\n ref={containerRef}\r\n style={{ display: \"inline-block\", whiteSpace: \"pre-wrap\" }}\r\n {...hoverProps}\r\n {...props}\r\n >\r\n <span className=\"sr-only\">{displayText}</span>\r\n <span aria-hidden=\"true\">\r\n {displayText.split(\"\").map((char, index) => {\r\n const isRevealedOrDone = revealedIndices.has(index) || !isScrambling || !isHovering;\r\n return (\r\n <span key={index} className={isRevealedOrDone ? className : encryptedClassName}>\r\n {char}\r\n </span>\r\n );\r\n })}\r\n </span>\r\n </motion.span>\r\n );\r\n}\r\n\r\nexport default DecryptedText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TrueFocusProps {\r\n sentence?: string;\r\n manualMode?: boolean;\r\n blurAmount?: number;\r\n borderColor?: string;\r\n glowColor?: string;\r\n animationDuration?: number;\r\n pauseBetweenAnimations?: number;\r\n className?: string;\r\n}\r\n\r\ninterface FocusRect {\r\n x: number;\r\n y: number;\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport function TrueFocus({\r\n sentence = \"True Focus\",\r\n manualMode = false,\r\n blurAmount = 5,\r\n borderColor = \"green\",\r\n glowColor = \"rgba(0, 255, 0, 0.6)\",\r\n animationDuration = 0.5,\r\n pauseBetweenAnimations = 1,\r\n className,\r\n}: TrueFocusProps) {\r\n const words = sentence.split(\" \");\r\n const [currentIndex, setCurrentIndex] = useState<number>(0);\r\n const [lastActiveIndex, setLastActiveIndex] = useState<number | null>(null);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const wordRefs = useRef<(HTMLSpanElement | null)[]>([]);\r\n const [focusRect, setFocusRect] = useState<FocusRect>({ x: 0, y: 0, width: 0, height: 0 });\r\n\r\n useEffect(() => {\r\n if (!manualMode) {\r\n const interval = setInterval(() => {\r\n setCurrentIndex((prev) => (prev + 1) % words.length);\r\n }, (animationDuration + pauseBetweenAnimations) * 1000);\r\n return () => clearInterval(interval);\r\n }\r\n }, [manualMode, animationDuration, pauseBetweenAnimations, words.length]);\r\n\r\n useEffect(() => {\r\n const updateFocusRect = () => {\r\n if (currentIndex === null || currentIndex === -1) return;\r\n if (!wordRefs.current[currentIndex] || !containerRef.current) return;\r\n const parentRect = containerRef.current.getBoundingClientRect();\r\n const activeRect = wordRefs.current[currentIndex]!.getBoundingClientRect();\r\n setFocusRect({\r\n x: activeRect.left - parentRect.left,\r\n y: activeRect.top - parentRect.top,\r\n width: activeRect.width,\r\n height: activeRect.height,\r\n });\r\n };\r\n updateFocusRect();\r\n window.addEventListener(\"resize\", updateFocusRect);\r\n return () => window.removeEventListener(\"resize\", updateFocusRect);\r\n }, [currentIndex, words.length]);\r\n\r\n return (\r\n <div ref={containerRef} className={cn(\"relative flex flex-wrap gap-3 p-12 items-center justify-center\", className)}>\r\n {words.map((word, index) => {\r\n const isActive = index === currentIndex;\r\n return (\r\n <span\r\n key={index}\r\n ref={(el) => { wordRefs.current[index] = el; }}\r\n className=\"text-4xl font-bold relative z-10\"\r\n style={{\r\n filter: isActive ? \"blur(0px)\" : `blur(${blurAmount}px)`,\r\n transition: `all ${animationDuration}s ease`,\r\n color: isActive ? \"#000\" : \"#666\",\r\n transform: isActive ? \"scale(1.05)\" : \"scale(1)\",\r\n }}\r\n onMouseEnter={() => manualMode && (setLastActiveIndex(index), setCurrentIndex(index))}\r\n onMouseLeave={() => manualMode && setCurrentIndex(lastActiveIndex ?? 0)}\r\n >\r\n {word}\r\n </span>\r\n );\r\n })}\r\n <motion.div\r\n className=\"absolute pointer-events-none\"\r\n animate={{ x: focusRect.x, y: focusRect.y, width: focusRect.width, height: focusRect.height, opacity: currentIndex >= 0 ? 1 : 0 }}\r\n transition={{ duration: animationDuration }}\r\n style={{ border: `2px solid ${borderColor}`, boxShadow: `0 0 10px ${glowColor}`, borderRadius: 4 }}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nexport default TrueFocus;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlassCardProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function GlassCard({ children, className, ...props }: GlassCardProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"rounded-2xl p-6\",\r\n \"bg-white/10 dark:bg-black/10\",\r\n \"backdrop-blur-xl\",\r\n \"border border-white/20 dark:border-white/10\",\r\n \"shadow-xl\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default GlassCard;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HoverCardProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function HoverCard({ children, className, ...props }: HoverCardProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"rounded-2xl p-6\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-200 dark:border-zinc-800\",\r\n \"shadow-lg\",\r\n \"transition-all duration-300 ease-out\",\r\n \"hover:shadow-2xl hover:-translate-y-1\",\r\n \"hover:border-zinc-300 dark:hover:border-zinc-700\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default HoverCard;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CardFlipProps {\r\n frontContent: React.ReactNode;\r\n backContent: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardFlip({ frontContent, backContent, className }: CardFlipProps) {\r\n const [isFlipped, setIsFlipped] = useState(false);\r\n\r\n return (\r\n <div\r\n className={cn(\"relative w-full h-full [perspective:1000px]\", className)}\r\n onMouseEnter={() => setIsFlipped(true)}\r\n onMouseLeave={() => setIsFlipped(false)}\r\n >\r\n <div\r\n className={cn(\r\n \"relative w-full h-full [transform-style:preserve-3d] transition-transform duration-700\",\r\n isFlipped ? \"[transform:rotateY(180deg)]\" : \"\"\r\n )}\r\n >\r\n {/* Front */}\r\n <div\r\n className={cn(\r\n \"absolute inset-0 w-full h-full [backface-visibility:hidden]\",\r\n \"rounded-2xl bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-200 dark:border-zinc-800\",\r\n \"shadow-lg p-6\"\r\n )}\r\n >\r\n {frontContent}\r\n </div>\r\n\r\n {/* Back */}\r\n <div\r\n className={cn(\r\n \"absolute inset-0 w-full h-full [backface-visibility:hidden] [transform:rotateY(180deg)]\",\r\n \"rounded-2xl bg-zinc-100 dark:bg-zinc-800\",\r\n \"border border-zinc-200 dark:border-zinc-700\",\r\n \"shadow-lg p-6\"\r\n )}\r\n >\r\n {backContent}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default CardFlip;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CardProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n hover?: boolean;\r\n}\r\n\r\nexport function Card({ children, className, hover = false }: CardProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"rounded-xl p-6\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-200 dark:border-zinc-800\",\r\n hover && \"transition-all duration-200 hover:shadow-lg hover:-translate-y-1\",\r\n className\r\n )}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\ninterface CardHeaderProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardHeader({ children, className }: CardHeaderProps) {\r\n return <div className={cn(\"mb-4\", className)}>{children}</div>;\r\n}\r\n\r\ninterface CardTitleProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardTitle({ children, className }: CardTitleProps) {\r\n return <h3 className={cn(\"text-lg font-semibold\", className)}>{children}</h3>;\r\n}\r\n\r\ninterface CardDescriptionProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardDescription({ children, className }: CardDescriptionProps) {\r\n return <p className={cn(\"text-sm text-zinc-500 dark:text-zinc-400\", className)}>{children}</p>;\r\n}\r\n\r\ninterface CardContentProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardContent({ children, className }: CardContentProps) {\r\n return <div className={cn(\"\", className)}>{children}</div>;\r\n}\r\n\r\ninterface CardFooterProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardFooter({ children, className }: CardFooterProps) {\r\n return <div className={cn(\"mt-4 pt-4 border-t border-zinc-200 dark:border-zinc-800\", className)}>{children}</div>;\r\n}\r\n\r\nexport default Card;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingDotsProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function LoadingDots({ className, size = \"md\" }: LoadingDotsProps) {\r\n const sizeClasses = {\r\n sm: \"w-1.5 h-1.5\",\r\n md: \"w-2.5 h-2.5\",\r\n lg: \"w-4 h-4\",\r\n };\r\n\r\n return (\r\n <div className={cn(\"flex items-center justify-center gap-1\", className)}>\r\n {[0, 1, 2].map((i) => (\r\n <div\r\n key={i}\r\n className={cn(\r\n sizeClasses[size],\r\n \"rounded-full bg-current animate-bounce\"\r\n )}\r\n style={{ animationDelay: `${i * 0.15}s` }}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingDots;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingSpinnerProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function LoadingSpinner({ className, size = \"md\" }: LoadingSpinnerProps) {\r\n const sizeClasses = {\r\n sm: \"w-4 h-4 border-2\",\r\n md: \"w-8 h-8 border-3\",\r\n lg: \"w-12 h-12 border-4\",\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\r\n sizeClasses[size],\r\n \"rounded-full border-current border-t-transparent animate-spin\",\r\n className\r\n )}\r\n />\r\n );\r\n}\r\n\r\nexport default LoadingSpinner;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingBarProps {\r\n className?: string;\r\n color?: string;\r\n}\r\n\r\nexport function LoadingBar({ className, color = \"bg-blue-500\" }: LoadingBarProps) {\r\n return (\r\n <div className={cn(\"h-1 w-full overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800\", className)}>\r\n <motion.div\r\n className={cn(\"h-full rounded-full\", color)}\r\n initial={{ x: \"-100%\" }}\r\n animate={{ x: \"100%\" }}\r\n transition={{\r\n repeat: Infinity,\r\n duration: 1.5,\r\n ease: \"easeInOut\",\r\n }}\r\n style={{ width: \"50%\" }}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingBar;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingPulseProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n color?: string;\r\n}\r\n\r\nconst sizes = {\r\n sm: \"w-8 h-8\",\r\n md: \"w-12 h-12\",\r\n lg: \"w-16 h-16\",\r\n};\r\n\r\nexport function LoadingPulse({ className, size = \"md\", color = \"bg-blue-500\" }: LoadingPulseProps) {\r\n return (\r\n <div className={cn(\"relative\", sizes[size], className)}>\r\n <motion.div\r\n className={cn(\"absolute inset-0 rounded-full\", color)}\r\n animate={{\r\n scale: [1, 1.5, 1],\r\n opacity: [0.5, 0, 0.5],\r\n }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n <div className={cn(\"absolute inset-2 rounded-full\", color)} />\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingPulse;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingBounceProps {\r\n className?: string;\r\n color?: string;\r\n}\r\n\r\nexport function LoadingBounce({ className, color = \"bg-zinc-900 dark:bg-white\" }: LoadingBounceProps) {\r\n return (\r\n <div className={cn(\"flex gap-1\", className)}>\r\n {[0, 1, 2].map((i) => (\r\n <motion.div\r\n key={i}\r\n className={cn(\"w-3 h-3 rounded-full\", color)}\r\n animate={{ y: [0, -10, 0] }}\r\n transition={{\r\n duration: 0.6,\r\n repeat: Infinity,\r\n delay: i * 0.1,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingBounce;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingFlowerProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingFlower({ className = \"\" }: LoadingFlowerProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"relative\">\r\n <div className=\"flex items-center justify-center\">\r\n {[...Array(8)].map((_, i) => (\r\n <div\r\n key={i}\r\n className=\"absolute w-3 h-3 rounded-full bg-black dark:bg-white\"\r\n style={{\r\n transform: `rotate(${i * 45}deg) translateY(-20px)`,\r\n animation: `flower-pulse 1.5s ease-in-out infinite`,\r\n animationDelay: `${i * 0.1}s`,\r\n }}\r\n />\r\n ))}\r\n <div className=\"w-4 h-4 rounded-full bg-zinc-400\" />\r\n </div>\r\n </div>\r\n <style jsx>{`\r\n @keyframes flower-pulse {\r\n 0%, 100% { opacity: 0.3; scale: 0.8; }\r\n 50% { opacity: 1; scale: 1.2; }\r\n }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingFlower;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingGeometricProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingGeometric({ className = \"\" }: LoadingGeometricProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"flex justify-center items-center\">\r\n <div className=\"w-36 h-36 flex justify-center items-center relative\">\r\n <div className=\"w-4 h-16 absolute bg-zinc-600 dark:bg-zinc-400 animate-[move-h_1.2s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\" />\r\n <div className=\"w-4 h-16 absolute bg-zinc-800 dark:bg-zinc-200 rotate-90 animate-[move-v_1.2s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\" />\r\n <div className=\"absolute top-4 left-5 font-black text-lg text-black dark:text-white animate-[rot_0.8s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\">X</div>\r\n <div className=\"absolute bottom-0 right-0 font-black text-3xl text-black dark:text-white animate-[scale_0.8s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\">*</div>\r\n </div>\r\n </div>\r\n <style jsx>{`\r\n @keyframes move-h { 0% { top: 0; opacity: 0; } 25% { opacity: 1; } 50% { top: 30%; opacity: 1; } 75% { opacity: 1; } 100% { top: 100%; opacity: 0; } }\r\n @keyframes move-v { 0% { left: 0; opacity: 0; } 25% { opacity: 1; } 50% { left: 45%; opacity: 1; } 75% { opacity: 1; } 100% { left: 100%; opacity: 0; } }\r\n @keyframes rot { 0% { transform: rotate(0deg); } 50% { transform: rotate(180deg); } 100% { transform: rotate(360deg); } }\r\n @keyframes scale { 0% { scale: 1; } 50% { scale: 1.9; } 100% { scale: 1; } }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingGeometric;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingMorphProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingMorph({ className = \"\" }: LoadingMorphProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"w-20 h-20 rounded-full border-8 border-transparent border-t-black dark:border-t-white border-r-zinc-600 dark:border-r-zinc-400 border-b-zinc-400 dark:border-b-zinc-600 border-l-zinc-200 dark:border-l-zinc-800 animate-[morph_2s_ease-in-out_infinite,rotate-color_2s_linear_infinite]\">\r\n <style jsx>{`\r\n @keyframes rotate-color { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }\r\n @keyframes morph { 0%, 100% { border-radius: 50%; width: 80px; height: 80px; } 50% { border-radius: 10%; width: 100px; height: 100px; } }\r\n `}</style>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingMorph;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingRingsProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingRings({ className = \"\" }: LoadingRingsProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"w-16 h-16\">\r\n <div className=\"box-border w-full h-full border-[10px] border-zinc-300 dark:border-zinc-800 border-t-zinc-700 dark:border-t-zinc-200 border-b-zinc-500 rounded-full animate-[rotate_5s_linear_infinite]\">\r\n <div className=\"box-border w-full h-full border-[10px] border-zinc-300 dark:border-zinc-800 border-t-zinc-600 dark:border-t-zinc-400 border-b-black dark:border-b-white rounded-full animate-[rotate_2.5s_linear_infinite]\" />\r\n </div>\r\n <style jsx>{`\r\n @keyframes rotate { 0% { transform: scale(1) rotate(360deg); } 50% { transform: scale(0.8) rotate(-360deg); } 100% { transform: scale(1) rotate(360deg); } }\r\n `}</style>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingRings;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingTextProps {\r\n text?: string;\r\n className?: string;\r\n}\r\n\r\nexport function LoadingText({ text = \"loading\", className = \"\" }: LoadingTextProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"relative w-20 h-12\">\r\n <span className=\"absolute top-0 left-0 m-0 p-0 text-black dark:text-white text-sm tracking-wider animate-[loading-text_3.5s_ease_both_infinite]\">\r\n {text}\r\n </span>\r\n <span className=\"absolute bottom-0 left-0 block h-4 w-4 rounded-full bg-black dark:bg-white animate-[loading-bar_3.5s_ease_both_infinite]\">\r\n <span className=\"absolute inset-0 rounded-full bg-zinc-400 dark:bg-zinc-500 animate-[loading-bar-before_3.5s_ease_both_infinite]\" />\r\n </span>\r\n <style jsx>{`\r\n @keyframes loading-text { 0% { letter-spacing: 1px; transform: translateX(0px); } 40% { letter-spacing: 2px; transform: translateX(26px); } 80% { letter-spacing: 1px; transform: translateX(32px); } 90% { letter-spacing: 2px; transform: translateX(0px); } 100% { letter-spacing: 1px; transform: translateX(0px); } }\r\n @keyframes loading-bar { 0% { width: 16px; transform: translateX(0px); } 40% { width: 100%; transform: translateX(0px); } 80% { width: 16px; transform: translateX(64px); } 90% { width: 100%; transform: translateX(0px); } 100% { width: 16px; transform: translateX(0px); } }\r\n @keyframes loading-bar-before { 0% { transform: translateX(0px); width: 16px; } 40% { transform: translateX(0%); width: 80%; } 80% { width: 100%; transform: translateX(0px); } 90% { width: 80%; transform: translateX(15px); } 100% { transform: translateX(0px); width: 16px; } }\r\n `}</style>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingText;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingWordsProps {\r\n words?: string[];\r\n className?: string;\r\n}\r\n\r\nexport function LoadingWords({\r\n words = [\"buttons\", \"forms\", \"switches\", \"cards\", \"loaders\"],\r\n className = \"\",\r\n}: LoadingWordsProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"text-zinc-400 dark:text-zinc-500 font-medium text-2xl box-border h-10 px-2.5 py-2 flex items-center rounded-lg\">\r\n <span className=\"mr-2\">loading</span>\r\n <div className=\"overflow-hidden relative h-full\">\r\n <div className=\"absolute inset-0 bg-gradient-to-b from-white via-transparent to-white dark:from-zinc-950 dark:via-transparent dark:to-zinc-950 z-10\" />\r\n {words.map((word, index) => (\r\n <span\r\n key={index}\r\n className=\"block h-full pl-1.5 text-black dark:text-white animate-[spin-words_4s_infinite]\"\r\n style={{ animationDelay: `${index * 0.8}s` }}\r\n >\r\n {word}\r\n </span>\r\n ))}\r\n </div>\r\n </div>\r\n <style jsx>{`\r\n @keyframes spin-words { 10% { transform: translateY(-102%); } 25% { transform: translateY(-100%); } 35% { transform: translateY(-202%); } 50% { transform: translateY(-200%); } 60% { transform: translateY(-302%); } 75% { transform: translateY(-300%); } 85% { transform: translateY(-402%); } 100% { transform: translateY(-400%); } }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingWords;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useMemo, useState } from \"react\";\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport interface AnimatedListProps {\r\n className?: string;\r\n children: React.ReactNode;\r\n delay?: number;\r\n}\r\n\r\nexport function AnimatedList({\r\n className,\r\n children,\r\n delay = 1000,\r\n}: AnimatedListProps) {\r\n const [index, setIndex] = useState(0);\r\n const childrenArray = React.Children.toArray(children);\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setIndex((prevIndex) => (prevIndex + 1) % childrenArray.length);\r\n }, delay);\r\n return () => clearInterval(interval);\r\n }, [childrenArray.length, delay]);\r\n\r\n const itemsToShow = useMemo(\r\n () => childrenArray.slice(0, index + 1).reverse(),\r\n [index, childrenArray]\r\n );\r\n\r\n return (\r\n <div className={cn(\"flex flex-col items-center gap-4\", className)}>\r\n <AnimatePresence>\r\n {itemsToShow.map((item, idx) => (\r\n <AnimatedListItem key={idx}>\r\n {item}\r\n </AnimatedListItem>\r\n ))}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport function AnimatedListItem({ children }: { children: React.ReactNode }) {\r\n return (\r\n <motion.div\r\n initial={{ scale: 0, opacity: 0 }}\r\n animate={{ scale: 1, opacity: 1 }}\r\n exit={{ scale: 0, opacity: 0 }}\r\n transition={{ type: \"spring\", stiffness: 350, damping: 40 }}\r\n layout\r\n className=\"mx-auto w-full\"\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default AnimatedList;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SkeletonProps {\r\n className?: string;\r\n variant?: \"text\" | \"circular\" | \"rectangular\";\r\n width?: string | number;\r\n height?: string | number;\r\n}\r\n\r\nexport function Skeleton({ \r\n className, \r\n variant = \"text\",\r\n width,\r\n height \r\n}: SkeletonProps) {\r\n const variants = {\r\n text: \"h-4 rounded\",\r\n circular: \"rounded-full\",\r\n rectangular: \"rounded-lg\",\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"animate-pulse bg-zinc-200 dark:bg-zinc-800\",\r\n variants[variant],\r\n className\r\n )}\r\n style={{ width, height }}\r\n />\r\n );\r\n}\r\n\r\nexport default Skeleton;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TooltipProps {\r\n children: React.ReactNode;\r\n content: string;\r\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\r\n className?: string;\r\n}\r\n\r\nexport function Tooltip({ \r\n children, \r\n content, \r\n position = \"top\",\r\n className \r\n}: TooltipProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n\r\n const positions = {\r\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\r\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\r\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\r\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\r\n };\r\n\r\n const animations = {\r\n top: { initial: { opacity: 0, y: 5 }, animate: { opacity: 1, y: 0 } },\r\n bottom: { initial: { opacity: 0, y: -5 }, animate: { opacity: 1, y: 0 } },\r\n left: { initial: { opacity: 0, x: 5 }, animate: { opacity: 1, x: 0 } },\r\n right: { initial: { opacity: 0, x: -5 }, animate: { opacity: 1, x: 0 } },\r\n };\r\n\r\n return (\r\n <div\r\n className=\"relative inline-block\"\r\n onMouseEnter={() => setIsVisible(true)}\r\n onMouseLeave={() => setIsVisible(false)}\r\n >\r\n {children}\r\n <AnimatePresence>\r\n {isVisible && (\r\n <motion.div\r\n className={cn(\r\n \"absolute z-50 px-2 py-1 text-sm text-white bg-zinc-900 dark:bg-zinc-100 dark:text-zinc-900 rounded whitespace-nowrap\",\r\n positions[position],\r\n className\r\n )}\r\n initial={animations[position].initial}\r\n animate={animations[position].animate}\r\n exit={animations[position].initial}\r\n transition={{ duration: 0.15 }}\r\n >\r\n {content}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Tooltip;\r\n","\"use client\";\r\n\r\nimport { useState, useRef } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TooltipMinimalProps {\r\n content: string;\r\n children: React.ReactNode;\r\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\r\n delay?: number;\r\n className?: string;\r\n}\r\n\r\nexport function TooltipMinimal({\r\n content,\r\n children,\r\n position = \"top\",\r\n delay = 300,\r\n className,\r\n}: TooltipMinimalProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n const timeoutRef = useRef<NodeJS.Timeout>(undefined);\r\n\r\n const showTooltip = () => {\r\n timeoutRef.current = setTimeout(() => setIsVisible(true), delay);\r\n };\r\n\r\n const hideTooltip = () => {\r\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\r\n setIsVisible(false);\r\n };\r\n\r\n const getPositionClasses = () => {\r\n const positions = {\r\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\r\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\r\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\r\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\r\n };\r\n return positions[position];\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative inline-block\", className)} onMouseEnter={showTooltip} onMouseLeave={hideTooltip}>\r\n {children}\r\n <AnimatePresence>\r\n {isVisible && (\r\n <motion.div\r\n initial={{ opacity: 0, scale: 0.95 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n exit={{ opacity: 0, scale: 0.95 }}\r\n transition={{ duration: 0.15 }}\r\n className={cn(\"absolute z-50 px-3 py-2 text-sm bg-popover border border-border rounded-lg shadow-md whitespace-nowrap\", getPositionClasses())}\r\n >\r\n {content}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default TooltipMinimal;\r\n","\"use client\";\r\n\r\nimport { useState, useRef } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TooltipAnimatedProps {\r\n content: string;\r\n children: React.ReactNode;\r\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\r\n delay?: number;\r\n animation?: \"fade\" | \"slide\" | \"bounce\" | \"scale\";\r\n className?: string;\r\n}\r\n\r\nexport function TooltipAnimated({\r\n content,\r\n children,\r\n position = \"top\",\r\n delay = 200,\r\n animation = \"slide\",\r\n className,\r\n}: TooltipAnimatedProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n const timeoutRef = useRef<NodeJS.Timeout>(undefined);\r\n\r\n const showTooltip = () => {\r\n timeoutRef.current = setTimeout(() => setIsVisible(true), delay);\r\n };\r\n\r\n const hideTooltip = () => {\r\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\r\n setIsVisible(false);\r\n };\r\n\r\n const getPositionClasses = () => {\r\n const positions = {\r\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-3\",\r\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-3\",\r\n left: \"right-full top-1/2 -translate-y-1/2 mr-3\",\r\n right: \"left-full top-1/2 -translate-y-1/2 ml-3\",\r\n };\r\n return positions[position];\r\n };\r\n\r\n const getAnimationProps = () => {\r\n const slideOffset = 10;\r\n const offsets = { top: { y: slideOffset }, bottom: { y: -slideOffset }, left: { x: slideOffset }, right: { x: -slideOffset } };\r\n const { x = 0, y = 0 } = offsets[position];\r\n\r\n const animations = {\r\n fade: { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 } },\r\n scale: { initial: { opacity: 0, scale: 0.8 }, animate: { opacity: 1, scale: 1 }, exit: { opacity: 0, scale: 0.8 } },\r\n bounce: { initial: { opacity: 0, scale: 0.3, y: position === \"top\" ? 10 : -10 }, animate: { opacity: 1, scale: 1, y: 0 }, exit: { opacity: 0, scale: 0.3, y: position === \"top\" ? 10 : -10 } },\r\n slide: { initial: { opacity: 0, x, y }, animate: { opacity: 1, x: 0, y: 0 }, exit: { opacity: 0, x, y } },\r\n };\r\n return { ...animations[animation], transition: { type: \"spring\", stiffness: 300, damping: 25 } };\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative inline-block\", className)} onMouseEnter={showTooltip} onMouseLeave={hideTooltip}>\r\n {children}\r\n <AnimatePresence>\r\n {isVisible && (\r\n <motion.div {...getAnimationProps()} className={cn(\"absolute z-50 px-4 py-2 text-sm bg-popover border border-border rounded-xl shadow-lg whitespace-nowrap backdrop-blur-sm\", getPositionClasses())}>\r\n {content}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default TooltipAnimated;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BadgeProps {\r\n children: React.ReactNode;\r\n variant?: \"default\" | \"success\" | \"warning\" | \"danger\" | \"info\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n className?: string;\r\n}\r\n\r\nconst variants = {\r\n default: \"bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-zinc-100\",\r\n success: \"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400\",\r\n warning: \"bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400\",\r\n danger: \"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400\",\r\n info: \"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400\",\r\n};\r\n\r\nconst sizes = {\r\n sm: \"px-2 py-0.5 text-xs\",\r\n md: \"px-2.5 py-1 text-sm\",\r\n lg: \"px-3 py-1.5 text-base\",\r\n};\r\n\r\nexport function Badge({ \r\n children, \r\n variant = \"default\", \r\n size = \"md\",\r\n className \r\n}: BadgeProps) {\r\n return (\r\n <span\r\n className={cn(\r\n \"inline-flex items-center font-medium rounded-full\",\r\n variants[variant],\r\n sizes[size],\r\n className\r\n )}\r\n >\r\n {children}\r\n </span>\r\n );\r\n}\r\n\r\nexport default Badge;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface AvatarProps {\r\n src?: string;\r\n alt?: string;\r\n fallback?: string;\r\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n className?: string;\r\n}\r\n\r\nconst sizes = {\r\n sm: \"w-8 h-8 text-xs\",\r\n md: \"w-10 h-10 text-sm\",\r\n lg: \"w-12 h-12 text-base\",\r\n xl: \"w-16 h-16 text-lg\",\r\n};\r\n\r\nexport function Avatar({ \r\n src, \r\n alt = \"\", \r\n fallback,\r\n size = \"md\",\r\n className \r\n}: AvatarProps) {\r\n const initials = fallback || alt.split(\" \").map(n => n[0]).join(\"\").slice(0, 2).toUpperCase();\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"relative inline-flex items-center justify-center rounded-full bg-zinc-200 dark:bg-zinc-800 overflow-hidden\",\r\n sizes[size],\r\n className\r\n )}\r\n >\r\n {src ? (\r\n <img src={src} alt={alt} className=\"w-full h-full object-cover\" />\r\n ) : (\r\n <span className=\"font-medium text-zinc-600 dark:text-zinc-400\">\r\n {initials}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Avatar;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ProgressProps {\r\n value: number;\r\n max?: number;\r\n className?: string;\r\n color?: string;\r\n showLabel?: boolean;\r\n}\r\n\r\nexport function Progress({ \r\n value, \r\n max = 100, \r\n className,\r\n color = \"bg-blue-500\",\r\n showLabel = false\r\n}: ProgressProps) {\r\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\r\n\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n <div className=\"h-2 w-full overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800\">\r\n <motion.div\r\n className={cn(\"h-full rounded-full\", color)}\r\n initial={{ width: 0 }}\r\n animate={{ width: `${percentage}%` }}\r\n transition={{ duration: 0.5, ease: \"easeOut\" }}\r\n />\r\n </div>\r\n {showLabel && (\r\n <span className=\"mt-1 text-sm text-zinc-600 dark:text-zinc-400\">\r\n {Math.round(percentage)}%\r\n </span>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Progress;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SwitchProps {\r\n checked?: boolean;\r\n onChange?: (checked: boolean) => void;\r\n disabled?: boolean;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n className?: string;\r\n}\r\n\r\nconst sizes = {\r\n sm: { track: \"w-8 h-4\", thumb: \"w-3 h-3\", translate: 16 },\r\n md: { track: \"w-11 h-6\", thumb: \"w-5 h-5\", translate: 20 },\r\n lg: { track: \"w-14 h-7\", thumb: \"w-6 h-6\", translate: 28 },\r\n};\r\n\r\nexport function Switch({ \r\n checked = false, \r\n onChange, \r\n disabled = false,\r\n size = \"md\",\r\n className \r\n}: SwitchProps) {\r\n const sizeConfig = sizes[size];\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n role=\"switch\"\r\n aria-checked={checked}\r\n disabled={disabled}\r\n onClick={() => onChange?.(!checked)}\r\n className={cn(\r\n \"relative inline-flex shrink-0 cursor-pointer rounded-full transition-colors\",\r\n checked ? \"bg-blue-500\" : \"bg-zinc-300 dark:bg-zinc-700\",\r\n disabled && \"opacity-50 cursor-not-allowed\",\r\n sizeConfig.track,\r\n className\r\n )}\r\n >\r\n <motion.span\r\n className={cn(\r\n \"pointer-events-none inline-block rounded-full bg-white shadow-lg\",\r\n sizeConfig.thumb\r\n )}\r\n animate={{ x: checked ? sizeConfig.translate : 2 }}\r\n transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\r\n style={{ marginTop: 2 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default Switch;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface AccordionItem {\r\n title: string;\r\n content: React.ReactNode;\r\n}\r\n\r\ninterface AccordionProps {\r\n items: AccordionItem[];\r\n className?: string;\r\n allowMultiple?: boolean;\r\n}\r\n\r\nexport function Accordion({ items, className, allowMultiple = false }: AccordionProps) {\r\n const [openItems, setOpenItems] = useState<number[]>([]);\r\n\r\n const toggleItem = (index: number) => {\r\n if (allowMultiple) {\r\n setOpenItems((prev) =>\r\n prev.includes(index) ? prev.filter((i) => i !== index) : [...prev, index]\r\n );\r\n } else {\r\n setOpenItems((prev) => (prev.includes(index) ? [] : [index]));\r\n }\r\n };\r\n\r\n return (\r\n <div className={cn(\"w-full space-y-2\", className)}>\r\n {items.map((item, index) => (\r\n <div\r\n key={index}\r\n className=\"border border-zinc-200 dark:border-zinc-800 rounded-lg overflow-hidden\"\r\n >\r\n <button\r\n onClick={() => toggleItem(index)}\r\n className=\"w-full px-4 py-3 flex items-center justify-between text-left bg-zinc-50 dark:bg-zinc-900 hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors\"\r\n >\r\n <span className=\"font-medium\">{item.title}</span>\r\n <motion.svg\r\n animate={{ rotate: openItems.includes(index) ? 180 : 0 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"w-5 h-5\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\r\n </motion.svg>\r\n </button>\r\n <AnimatePresence>\r\n {openItems.includes(index) && (\r\n <motion.div\r\n initial={{ height: 0, opacity: 0 }}\r\n animate={{ height: \"auto\", opacity: 1 }}\r\n exit={{ height: 0, opacity: 0 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n <div className=\"px-4 py-3 bg-white dark:bg-zinc-950\">{item.content}</div>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Accordion;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface Tab {\r\n label: string;\r\n content: React.ReactNode;\r\n}\r\n\r\ninterface TabsProps {\r\n tabs: Tab[];\r\n className?: string;\r\n defaultIndex?: number;\r\n}\r\n\r\nexport function Tabs({ tabs, className, defaultIndex = 0 }: TabsProps) {\r\n const [activeIndex, setActiveIndex] = useState(defaultIndex);\r\n\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n <div className=\"relative flex border-b border-zinc-200 dark:border-zinc-800\">\r\n {tabs.map((tab, index) => (\r\n <button\r\n key={index}\r\n onClick={() => setActiveIndex(index)}\r\n className={cn(\r\n \"px-4 py-2 text-sm font-medium transition-colors relative\",\r\n activeIndex === index\r\n ? \"text-zinc-900 dark:text-white\"\r\n : \"text-zinc-500 hover:text-zinc-700 dark:text-zinc-400 dark:hover:text-zinc-200\"\r\n )}\r\n >\r\n {tab.label}\r\n {activeIndex === index && (\r\n <motion.div\r\n layoutId=\"activeTab\"\r\n className=\"absolute bottom-0 left-0 right-0 h-0.5 bg-zinc-900 dark:bg-white\"\r\n transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\r\n />\r\n )}\r\n </button>\r\n ))}\r\n </div>\r\n <motion.div\r\n key={activeIndex}\r\n initial={{ opacity: 0, y: 10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"py-4\"\r\n >\r\n {tabs[activeIndex].content}\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Tabs;\r\n","\"use client\";\r\n\r\nimport { useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ModalProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n className?: string;\r\n title?: string;\r\n}\r\n\r\nexport function Modal({ isOpen, onClose, children, className, title }: ModalProps) {\r\n useEffect(() => {\r\n const handleEscape = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") onClose();\r\n };\r\n if (isOpen) {\r\n document.addEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"hidden\";\r\n }\r\n return () => {\r\n document.removeEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"unset\";\r\n };\r\n }, [isOpen, onClose]);\r\n\r\n return (\r\n <AnimatePresence>\r\n {isOpen && (\r\n <>\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n onClick={onClose}\r\n className=\"fixed inset-0 bg-black/50 z-50\"\r\n />\r\n <motion.div\r\n initial={{ opacity: 0, scale: 0.95, y: 20 }}\r\n animate={{ opacity: 1, scale: 1, y: 0 }}\r\n exit={{ opacity: 0, scale: 0.95, y: 20 }}\r\n transition={{ type: \"spring\", damping: 25, stiffness: 300 }}\r\n className={cn(\r\n \"fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-50\",\r\n \"w-full max-w-md p-6 rounded-xl\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"shadow-xl\",\r\n className\r\n )}\r\n >\r\n {title && (\r\n <div className=\"flex items-center justify-between mb-4\">\r\n <h2 className=\"text-lg font-semibold\">{title}</h2>\r\n <button\r\n onClick={onClose}\r\n className=\"p-1 rounded-lg hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors\"\r\n >\r\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n </div>\r\n )}\r\n {children}\r\n </motion.div>\r\n </>\r\n )}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport default Modal;\r\n","\"use client\";\r\n\r\nimport { useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface DrawerProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n className?: string;\r\n position?: \"left\" | \"right\" | \"bottom\";\r\n}\r\n\r\nexport function Drawer({ isOpen, onClose, children, className, position = \"right\" }: DrawerProps) {\r\n useEffect(() => {\r\n const handleEscape = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") onClose();\r\n };\r\n if (isOpen) {\r\n document.addEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"hidden\";\r\n }\r\n return () => {\r\n document.removeEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"unset\";\r\n };\r\n }, [isOpen, onClose]);\r\n\r\n const variants = {\r\n left: { initial: { x: \"-100%\" }, animate: { x: 0 }, exit: { x: \"-100%\" } },\r\n right: { initial: { x: \"100%\" }, animate: { x: 0 }, exit: { x: \"100%\" } },\r\n bottom: { initial: { y: \"100%\" }, animate: { y: 0 }, exit: { y: \"100%\" } },\r\n };\r\n\r\n const positionClasses = {\r\n left: \"left-0 top-0 h-full w-80\",\r\n right: \"right-0 top-0 h-full w-80\",\r\n bottom: \"bottom-0 left-0 right-0 h-auto max-h-[80vh]\",\r\n };\r\n\r\n return (\r\n <AnimatePresence>\r\n {isOpen && (\r\n <>\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n onClick={onClose}\r\n className=\"fixed inset-0 bg-black/50 z-50\"\r\n />\r\n <motion.div\r\n initial={variants[position].initial}\r\n animate={variants[position].animate}\r\n exit={variants[position].exit}\r\n transition={{ type: \"spring\", damping: 25, stiffness: 300 }}\r\n className={cn(\r\n \"fixed z-50 p-6\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"shadow-xl\",\r\n positionClasses[position],\r\n className\r\n )}\r\n >\r\n <button\r\n onClick={onClose}\r\n className=\"absolute top-4 right-4 p-1 rounded-lg hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors\"\r\n >\r\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n {children}\r\n </motion.div>\r\n </>\r\n )}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport default Drawer;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface AlertProps {\r\n className?: string;\r\n close?: boolean;\r\n children?: React.ReactNode;\r\n onClose?: () => void;\r\n}\r\n\r\ninterface AlertIconProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\ninterface AlertTitleProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\ninterface AlertToolbarProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function Alert({ className = \"\", close = false, children, onClose }: AlertProps) {\r\n const [isVisible, setIsVisible] = React.useState(true);\r\n\r\n if (!isVisible) return null;\r\n\r\n const handleClose = () => {\r\n setIsVisible(false);\r\n onClose?.();\r\n };\r\n\r\n return (\r\n <div className={cn(\"min-h-[400px] w-full flex items-center justify-center p-4\", className)}>\r\n <div className=\"flex flex-col items-center w-full lg:max-w-[75%] gap-6\">\r\n <div className=\"relative flex items-center gap-3 rounded-lg border border-zinc-300 dark:border-zinc-700 bg-transparent px-4 py-3 shadow-sm w-full max-w-md transition-all duration-200\">\r\n {children}\r\n {close && (\r\n <button\r\n onClick={handleClose}\r\n className=\"absolute top-2 right-2 text-gray-500 hover:text-gray-700 dark:text-white/60 dark:hover:text-white transition-colors\"\r\n >\r\n <svg className=\"h-4 w-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport function AlertIcon({ children, className }: AlertIconProps) {\r\n return <div className={cn(\"text-primary flex-shrink-0\", className)}>{children}</div>;\r\n}\r\n\r\nexport function AlertTitle({ children, className }: AlertTitleProps) {\r\n return <span className={cn(\"text-foreground font-medium text-sm flex-1\", className)}>{children}</span>;\r\n}\r\n\r\nexport function AlertToolbar({ children, className }: AlertToolbarProps) {\r\n return <div className={cn(\"flex items-center gap-2\", className)}>{children}</div>;\r\n}\r\n","\"use client\";\r\n\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TerminalProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n title?: string;\r\n}\r\n\r\ninterface TypingAnimationProps {\r\n children: string;\r\n className?: string;\r\n delay?: number;\r\n speed?: number;\r\n}\r\n\r\ninterface AnimatedSpanProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function Terminal({ children, className, title = \"Terminal\" }: TerminalProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"relative w-full max-w-2xl mx-auto bg-zinc-100 dark:bg-black rounded-lg overflow-hidden shadow-2xl\",\r\n \"border border-zinc-300 dark:border-gray-800\",\r\n className\r\n )}\r\n >\r\n <div className=\"flex items-center justify-between px-4 py-3 bg-zinc-200 dark:bg-gray-800 border-b border-zinc-300 dark:border-gray-700\">\r\n <div className=\"flex items-center space-x-2\">\r\n <div className=\"w-3 h-3 bg-red-500 rounded-full\"></div>\r\n <div className=\"w-3 h-3 bg-yellow-500 rounded-full\"></div>\r\n <div className=\"w-3 h-3 bg-green-500 rounded-full\"></div>\r\n </div>\r\n <div className=\"text-zinc-600 dark:text-gray-400 text-sm font-mono\">{title}</div>\r\n <div className=\"w-16\"></div>\r\n </div>\r\n\r\n <div className=\"p-4 font-mono text-sm leading-relaxed space-y-2 min-h-[300px] bg-zinc-100 dark:bg-black text-zinc-900 dark:text-white\">\r\n {children}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport function TypingAnimation({ children, className, delay = 0, speed = 50 }: TypingAnimationProps) {\r\n const [displayedText, setDisplayedText] = useState(\"\");\r\n const [isComplete, setIsComplete] = useState(false);\r\n\r\n useEffect(() => {\r\n const timer = setTimeout(() => {\r\n let currentIndex = 0;\r\n const interval = setInterval(() => {\r\n if (currentIndex <= children.length) {\r\n setDisplayedText(children.slice(0, currentIndex));\r\n currentIndex++;\r\n } else {\r\n setIsComplete(true);\r\n clearInterval(interval);\r\n }\r\n }, speed);\r\n\r\n return () => clearInterval(interval);\r\n }, delay);\r\n\r\n return () => clearTimeout(timer);\r\n }, [children, delay, speed]);\r\n\r\n return (\r\n <div className={cn(\"flex items-center\", className)}>\r\n <span>{displayedText}</span>\r\n {!isComplete && <span className=\"ml-1 animate-pulse bg-white w-2 h-4 inline-block\"></span>}\r\n </div>\r\n );\r\n}\r\n\r\nexport function AnimatedSpan({ children, className, delay = 0 }: AnimatedSpanProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n\r\n useEffect(() => {\r\n const timer = setTimeout(() => {\r\n setIsVisible(true);\r\n }, delay);\r\n\r\n return () => clearTimeout(timer);\r\n }, [delay]);\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"transition-all duration-500 transform\",\r\n isVisible ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-2\",\r\n className\r\n )}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport React, { useState, Children, useRef, useLayoutEffect, HTMLAttributes, ReactNode } from \"react\";\r\nimport { motion, AnimatePresence, Variants } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport interface StepperProps extends HTMLAttributes<HTMLDivElement> {\r\n children: ReactNode;\r\n initialStep?: number;\r\n onStepChange?: (step: number) => void;\r\n onFinalStepCompleted?: () => void;\r\n backButtonText?: string;\r\n nextButtonText?: string;\r\n disableStepIndicators?: boolean;\r\n}\r\n\r\nexport function Stepper({\r\n children,\r\n initialStep = 1,\r\n onStepChange = () => {},\r\n onFinalStepCompleted = () => {},\r\n backButtonText = \"Back\",\r\n nextButtonText = \"Continue\",\r\n disableStepIndicators = false,\r\n className,\r\n ...rest\r\n}: StepperProps) {\r\n const [currentStep, setCurrentStep] = useState<number>(initialStep);\r\n const [direction, setDirection] = useState<number>(0);\r\n const stepsArray = Children.toArray(children);\r\n const totalSteps = stepsArray.length;\r\n const isCompleted = currentStep > totalSteps;\r\n const isLastStep = currentStep === totalSteps;\r\n\r\n const updateStep = (newStep: number) => {\r\n setCurrentStep(newStep);\r\n if (newStep > totalSteps) {\r\n onFinalStepCompleted();\r\n } else {\r\n onStepChange(newStep);\r\n }\r\n };\r\n\r\n const handleBack = () => {\r\n if (currentStep > 1) {\r\n setDirection(-1);\r\n updateStep(currentStep - 1);\r\n }\r\n };\r\n\r\n const handleNext = () => {\r\n if (!isLastStep) {\r\n setDirection(1);\r\n updateStep(currentStep + 1);\r\n }\r\n };\r\n\r\n const handleComplete = () => {\r\n setDirection(1);\r\n updateStep(totalSteps + 1);\r\n };\r\n\r\n return (\r\n <div className={cn(\"w-full max-w-md mx-auto\", className)} {...rest}>\r\n <div className=\"flex items-center justify-between mb-8\">\r\n {stepsArray.map((_, index) => {\r\n const stepNumber = index + 1;\r\n const isNotLastStep = index < totalSteps - 1;\r\n return (\r\n <React.Fragment key={stepNumber}>\r\n <StepIndicator\r\n step={stepNumber}\r\n disableStepIndicators={disableStepIndicators}\r\n currentStep={currentStep}\r\n onClickStep={(clicked) => {\r\n setDirection(clicked > currentStep ? 1 : -1);\r\n updateStep(clicked);\r\n }}\r\n />\r\n {isNotLastStep && <StepConnector isComplete={currentStep > stepNumber} />}\r\n </React.Fragment>\r\n );\r\n })}\r\n </div>\r\n\r\n <StepContentWrapper isCompleted={isCompleted} currentStep={currentStep} direction={direction}>\r\n {stepsArray[currentStep - 1]}\r\n </StepContentWrapper>\r\n\r\n {!isCompleted && (\r\n <div className={cn(\"flex mt-8\", currentStep !== 1 ? \"justify-between\" : \"justify-end\")}>\r\n {currentStep !== 1 && (\r\n <button\r\n onClick={handleBack}\r\n className=\"px-4 py-2 text-sm font-medium text-zinc-400 hover:text-white transition-colors rounded-lg hover:bg-zinc-800\"\r\n >\r\n {backButtonText}\r\n </button>\r\n )}\r\n <button\r\n onClick={isLastStep ? handleComplete : handleNext}\r\n className=\"px-4 py-2 text-sm font-medium bg-white text-black rounded-lg hover:bg-zinc-200 transition-colors\"\r\n >\r\n {isLastStep ? \"Complete\" : nextButtonText}\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\ninterface StepContentWrapperProps {\r\n isCompleted: boolean;\r\n currentStep: number;\r\n direction: number;\r\n children: ReactNode;\r\n}\r\n\r\nfunction StepContentWrapper({ isCompleted, currentStep, direction, children }: StepContentWrapperProps) {\r\n const [parentHeight, setParentHeight] = useState<number>(0);\r\n\r\n return (\r\n <motion.div\r\n className=\"relative overflow-hidden\"\r\n animate={{ height: isCompleted ? 0 : parentHeight }}\r\n transition={{ type: \"spring\", duration: 0.4 }}\r\n >\r\n <AnimatePresence initial={false} mode=\"sync\" custom={direction}>\r\n {!isCompleted && (\r\n <SlideTransition key={currentStep} direction={direction} onHeightReady={(h) => setParentHeight(h)}>\r\n {children}\r\n </SlideTransition>\r\n )}\r\n </AnimatePresence>\r\n </motion.div>\r\n );\r\n}\r\n\r\ninterface SlideTransitionProps {\r\n children: ReactNode;\r\n direction: number;\r\n onHeightReady: (h: number) => void;\r\n}\r\n\r\nfunction SlideTransition({ children, direction, onHeightReady }: SlideTransitionProps) {\r\n const containerRef = useRef<HTMLDivElement | null>(null);\r\n\r\n useLayoutEffect(() => {\r\n if (containerRef.current) {\r\n onHeightReady(containerRef.current.offsetHeight);\r\n }\r\n }, [children, onHeightReady]);\r\n\r\n const stepVariants: Variants = {\r\n enter: (dir: number) => ({ x: dir >= 0 ? \"-100%\" : \"100%\", opacity: 0 }),\r\n center: { x: \"0%\", opacity: 1 },\r\n exit: (dir: number) => ({ x: dir >= 0 ? \"50%\" : \"-50%\", opacity: 0 }),\r\n };\r\n\r\n return (\r\n <motion.div\r\n ref={containerRef}\r\n custom={direction}\r\n variants={stepVariants}\r\n initial=\"enter\"\r\n animate=\"center\"\r\n exit=\"exit\"\r\n transition={{ duration: 0.4 }}\r\n className=\"absolute left-0 right-0 top-0\"\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\ninterface StepProps {\r\n children: ReactNode;\r\n}\r\n\r\nexport function Step({ children }: StepProps): React.JSX.Element {\r\n return <div className=\"p-4 rounded-lg bg-zinc-900 border border-zinc-800\">{children}</div>;\r\n}\r\n\r\ninterface StepIndicatorProps {\r\n step: number;\r\n currentStep: number;\r\n onClickStep: (step: number) => void;\r\n disableStepIndicators?: boolean;\r\n}\r\n\r\nfunction StepIndicator({ step, currentStep, onClickStep, disableStepIndicators }: StepIndicatorProps) {\r\n const status = currentStep === step ? \"active\" : currentStep < step ? \"inactive\" : \"complete\";\r\n\r\n const handleClick = () => {\r\n if (step !== currentStep && !disableStepIndicators) {\r\n onClickStep(step);\r\n }\r\n };\r\n\r\n return (\r\n <motion.button\r\n onClick={handleClick}\r\n disabled={disableStepIndicators}\r\n className={cn(\r\n \"relative flex items-center justify-center w-10 h-10 rounded-full text-sm font-medium transition-all\",\r\n status === \"inactive\" && \"bg-zinc-800 text-zinc-500 border border-zinc-700\",\r\n status === \"active\" && \"bg-white text-black border-2 border-white\",\r\n status === \"complete\" && \"bg-white text-black border-2 border-white\",\r\n !disableStepIndicators && \"cursor-pointer hover:opacity-80\"\r\n )}\r\n animate={status}\r\n initial={false}\r\n >\r\n {status === \"complete\" ? (\r\n <svg className=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2.5}>\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M5 13l4 4L19 7\" />\r\n </svg>\r\n ) : (\r\n <span>{step}</span>\r\n )}\r\n </motion.button>\r\n );\r\n}\r\n\r\ninterface StepConnectorProps {\r\n isComplete: boolean;\r\n}\r\n\r\nfunction StepConnector({ isComplete }: StepConnectorProps) {\r\n return (\r\n <div className=\"flex-1 h-[2px] mx-2 bg-zinc-800 rounded-full overflow-hidden\">\r\n <motion.div\r\n className=\"h-full bg-white rounded-full\"\r\n initial={{ width: 0 }}\r\n animate={{ width: isComplete ? \"100%\" : \"0%\" }}\r\n transition={{ duration: 0.4 }}\r\n />\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport React, { createContext, forwardRef, useCallback, useContext, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TreeDataItem {\r\n id: string;\r\n name: string;\r\n icon?: React.ReactNode;\r\n children?: TreeDataItem[];\r\n isSelectable?: boolean;\r\n}\r\n\r\ntype TreeProps = React.HTMLAttributes<HTMLDivElement> & {\r\n data?: TreeDataItem[] | TreeDataItem;\r\n initialSelectedId?: string;\r\n onSelectChange?: (item: TreeDataItem | undefined) => void;\r\n initialExpandedItems?: string[];\r\n elements?: TreeDataItem[];\r\n};\r\n\r\nconst TreeContext = createContext<{\r\n selectedId: string | undefined;\r\n expandedItems: string[];\r\n handleExpand: (id: string) => void;\r\n handleSelect: (id: string) => void;\r\n data: TreeDataItem[] | TreeDataItem;\r\n} | null>(null);\r\n\r\nconst useTree = () => {\r\n const context = useContext(TreeContext);\r\n if (!context) {\r\n throw new Error(\"useTree must be used within a TreeProvider\");\r\n }\r\n return context;\r\n};\r\n\r\nconst Tree = forwardRef<HTMLDivElement, TreeProps>(\r\n ({ data, initialSelectedId, onSelectChange, initialExpandedItems = [], elements, className, ...props }, ref) => {\r\n const [selectedId, setSelectedId] = useState<string | undefined>(initialSelectedId);\r\n const [expandedItems, setExpandedItems] = useState<string[]>(initialExpandedItems);\r\n\r\n const handleExpand = useCallback((id: string) => {\r\n setExpandedItems((prev) => {\r\n if (prev.includes(id)) {\r\n return prev.filter((item) => item !== id);\r\n }\r\n return [...prev, id];\r\n });\r\n }, []);\r\n\r\n const handleSelect = useCallback(\r\n (id: string) => {\r\n const treeData = data || elements || [];\r\n const dataArray = Array.isArray(treeData) ? treeData : [treeData];\r\n\r\n const findItem = (items: TreeDataItem[]): TreeDataItem | undefined => {\r\n for (const item of items) {\r\n if (item.id === id) return item;\r\n if (item.children) {\r\n const found = findItem(item.children);\r\n if (found) return found;\r\n }\r\n }\r\n };\r\n\r\n const selectedItem = findItem(dataArray);\r\n if (selectedItem?.isSelectable) {\r\n setSelectedId(id);\r\n onSelectChange?.(selectedItem);\r\n }\r\n },\r\n [data, elements, onSelectChange]\r\n );\r\n\r\n const value = {\r\n selectedId,\r\n expandedItems,\r\n handleExpand,\r\n handleSelect,\r\n data: data || elements || [],\r\n };\r\n\r\n return (\r\n <TreeContext.Provider value={value}>\r\n <div className={cn(\"relative overflow-hidden\", className)} ref={ref} {...props}>\r\n {React.Children.map(props.children, (child) => child)}\r\n </div>\r\n </TreeContext.Provider>\r\n );\r\n }\r\n);\r\n\r\nTree.displayName = \"Tree\";\r\n\r\nconst Folder = forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & {\r\n element: string;\r\n value: string;\r\n isSelectable?: boolean;\r\n }\r\n>(({ className, element, value, isSelectable = true, children, ...props }, ref) => {\r\n const { selectedId, expandedItems, handleExpand, handleSelect } = useTree();\r\n\r\n return (\r\n <div ref={ref} className=\"relative\" {...props}>\r\n <div\r\n className={cn(\r\n \"flex cursor-pointer items-center gap-1 rounded-md px-2 py-1 text-sm hover:bg-muted\",\r\n selectedId === value && \"bg-muted\",\r\n className\r\n )}\r\n onClick={() => {\r\n handleExpand(value);\r\n if (isSelectable) {\r\n handleSelect(value);\r\n }\r\n }}\r\n >\r\n <svg\r\n className={cn(\"h-4 w-4 shrink-0 transition-transform duration-200\", expandedItems.includes(value) && \"rotate-90\")}\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n >\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\r\n </svg>\r\n <svg className=\"h-4 w-4 shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z\"\r\n />\r\n </svg>\r\n <span className=\"truncate\">{element}</span>\r\n </div>\r\n {expandedItems.includes(value) && <div className=\"ml-4 border-l border-muted pl-2\">{children}</div>}\r\n </div>\r\n );\r\n});\r\n\r\nFolder.displayName = \"Folder\";\r\n\r\nconst File = forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & {\r\n value: string;\r\n isSelectable?: boolean;\r\n }\r\n>(({ className, value, isSelectable = true, children, ...props }, ref) => {\r\n const { selectedId, handleSelect } = useTree();\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-pointer items-center gap-1 rounded-md px-2 py-1 text-sm hover:bg-muted\",\r\n selectedId === value && \"bg-muted\",\r\n className\r\n )}\r\n onClick={() => isSelectable && handleSelect(value)}\r\n {...props}\r\n >\r\n <svg className=\"h-4 w-4 shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\"\r\n />\r\n </svg>\r\n <div className=\"truncate\">{children}</div>\r\n </div>\r\n );\r\n});\r\n\r\nFile.displayName = \"File\";\r\n\r\nexport { Tree, Folder, File, type TreeDataItem };\r\n","\"use client\";\r\n\r\nimport { MotionValue, motion, useSpring, useTransform } from \"framer-motion\";\r\nimport { useEffect } from \"react\";\r\n\r\ninterface NumberProps {\r\n mv: MotionValue<number>;\r\n number: number;\r\n height: number;\r\n}\r\n\r\nfunction Number({ mv, number, height }: NumberProps) {\r\n const y = useTransform(mv, (latest) => {\r\n const placeValue = latest % 10;\r\n let offset = (10 + number - placeValue) % 10;\r\n let memo = offset * height;\r\n if (offset > 5) {\r\n memo -= 10 * height;\r\n }\r\n return memo;\r\n });\r\n\r\n return (\r\n <motion.span style={{ y, position: \"absolute\", inset: 0, display: \"flex\", justifyContent: \"center\" }}>\r\n {number}\r\n </motion.span>\r\n );\r\n}\r\n\r\ninterface DigitProps {\r\n place: number;\r\n value: number;\r\n height: number;\r\n digitStyle?: React.CSSProperties;\r\n}\r\n\r\nfunction Digit({ place, value, height, digitStyle }: DigitProps) {\r\n const valueRoundedToPlace = Math.floor(value / place);\r\n const animatedValue = useSpring(valueRoundedToPlace, { stiffness: 200, damping: 25 });\r\n\r\n useEffect(() => {\r\n animatedValue.set(valueRoundedToPlace);\r\n }, [animatedValue, valueRoundedToPlace]);\r\n\r\n return (\r\n <div style={{ height, position: \"relative\", overflow: \"hidden\", ...digitStyle }}>\r\n {Array.from({ length: 10 }, (_, i) => (\r\n <Number key={i} mv={animatedValue} number={i} height={height} />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport interface CounterProps {\r\n value: number;\r\n fontSize?: number;\r\n padding?: number;\r\n places?: number[];\r\n gap?: number;\r\n textColor?: string;\r\n fontWeight?: React.CSSProperties[\"fontWeight\"];\r\n containerStyle?: React.CSSProperties;\r\n digitStyle?: React.CSSProperties;\r\n}\r\n\r\nexport function Counter({\r\n value,\r\n fontSize = 100,\r\n padding = 0,\r\n places = [100, 10, 1],\r\n gap = 8,\r\n textColor = \"#000000\",\r\n fontWeight = 900,\r\n containerStyle,\r\n digitStyle,\r\n}: CounterProps) {\r\n const height = fontSize + padding;\r\n\r\n return (\r\n <div style={{ display: \"flex\", gap, fontSize, color: textColor, fontWeight, ...containerStyle }}>\r\n {places.map((place) => (\r\n <Digit key={place} place={place} value={value} height={height} digitStyle={digitStyle} />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Counter;\r\n","\"use client\";\r\n\r\nimport React, { useState, useRef } from \"react\";\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ToolbarItem {\r\n id: string;\r\n title: string;\r\n icon: React.ReactNode;\r\n}\r\n\r\ninterface ToolbarProps {\r\n className?: string;\r\n items: ToolbarItem[];\r\n defaultSelected?: string;\r\n onItemClick?: (itemId: string) => void;\r\n}\r\n\r\nconst buttonVariants = {\r\n initial: { gap: 0, paddingLeft: \".5rem\", paddingRight: \".5rem\" },\r\n animate: (isSelected: boolean) => ({\r\n gap: isSelected ? \".5rem\" : 0,\r\n paddingLeft: isSelected ? \"1rem\" : \".5rem\",\r\n paddingRight: isSelected ? \"1rem\" : \".5rem\",\r\n }),\r\n};\r\n\r\nconst spanVariants = {\r\n initial: { width: 0, opacity: 0 },\r\n animate: { width: \"auto\", opacity: 1 },\r\n exit: { width: 0, opacity: 0 },\r\n};\r\n\r\nconst transition = { type: \"spring\", bounce: 0, duration: 0.4 };\r\n\r\nexport function Toolbar({ className, items, defaultSelected, onItemClick }: ToolbarProps) {\r\n const [selected, setSelected] = useState<string | null>(defaultSelected || null);\r\n\r\n const handleItemClick = (itemId: string) => {\r\n setSelected(selected === itemId ? null : itemId);\r\n onItemClick?.(itemId);\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"flex items-center gap-3 p-2 relative\",\r\n \"bg-background border rounded-xl transition-all duration-200\",\r\n className\r\n )}\r\n >\r\n <div className=\"flex items-center gap-2\">\r\n {items.map((item) => (\r\n <motion.button\r\n key={item.id}\r\n variants={buttonVariants}\r\n initial={false}\r\n animate=\"animate\"\r\n custom={selected === item.id}\r\n onClick={() => handleItemClick(item.id)}\r\n transition={transition}\r\n className={cn(\r\n \"relative flex items-center rounded-none px-3 py-2\",\r\n \"text-sm font-medium transition-colors duration-300\",\r\n selected === item.id\r\n ? \"bg-[#1F9CFE] text-white rounded-lg\"\r\n : \"text-muted-foreground hover:bg-muted hover:text-foreground\"\r\n )}\r\n >\r\n {item.icon}\r\n <AnimatePresence initial={false}>\r\n {selected === item.id && (\r\n <motion.span\r\n variants={spanVariants}\r\n initial=\"initial\"\r\n animate=\"animate\"\r\n exit=\"exit\"\r\n transition={transition}\r\n className=\"overflow-hidden\"\r\n >\r\n {item.title}\r\n </motion.span>\r\n )}\r\n </AnimatePresence>\r\n </motion.button>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Toolbar;\r\n","\"use client\";\r\n\r\nimport React, { useRef } from \"react\";\r\nimport { motion, useMotionValue, useSpring, useTransform } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport interface DockProps {\r\n className?: string;\r\n children: React.ReactNode;\r\n direction?: \"top\" | \"middle\" | \"bottom\";\r\n}\r\n\r\nexport function Dock({ className, children, direction = \"middle\" }: DockProps) {\r\n const directionClasses = {\r\n top: \"items-start\",\r\n middle: \"items-center\",\r\n bottom: \"items-end\",\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(\r\n \"mx-auto w-max mt-8 h-[58px] p-2 flex gap-2 rounded-2xl border\",\r\n \"supports-backdrop-blur:bg-white/10 supports-backdrop-blur:dark:bg-black/10 backdrop-blur-md\",\r\n \"border-gray-200 bg-gray-50/80 dark:border-gray-800 dark:bg-gray-900/80\",\r\n directionClasses[direction],\r\n className\r\n )}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport interface DockIconProps {\r\n size?: number;\r\n magnification?: number;\r\n distance?: number;\r\n children?: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function DockIcon({\r\n size = 40,\r\n magnification = 60,\r\n distance = 140,\r\n children,\r\n className,\r\n}: DockIconProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const mouseX = useMotionValue(Infinity);\r\n\r\n const width = useSpring(\r\n useTransform(mouseX, [-distance, 0, distance], [size, magnification, size]),\r\n { mass: 0.1, stiffness: 150, damping: 12 }\r\n );\r\n\r\n return (\r\n <motion.div\r\n ref={ref}\r\n style={{ width }}\r\n onMouseMove={(e) => mouseX.set(e.pageX - ref.current!.offsetLeft - width.get() / 2)}\r\n onMouseLeave={() => mouseX.set(Infinity)}\r\n className={cn(\"flex aspect-square cursor-pointer items-center justify-center rounded-full\", className)}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n label?: string;\r\n error?: string;\r\n icon?: React.ReactNode;\r\n}\r\n\r\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\r\n ({ className, label, error, icon, ...props }, ref) => {\r\n return (\r\n <div className=\"w-full\">\r\n {label && (\r\n <label className=\"block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1\">\r\n {label}\r\n </label>\r\n )}\r\n <div className=\"relative\">\r\n {icon && (\r\n <div className=\"absolute left-3 top-1/2 -translate-y-1/2 text-zinc-400\">\r\n {icon}\r\n </div>\r\n )}\r\n <input\r\n ref={ref}\r\n className={cn(\r\n \"w-full px-4 py-2 rounded-lg\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"text-zinc-900 dark:text-zinc-100\",\r\n \"placeholder:text-zinc-400 dark:placeholder:text-zinc-500\",\r\n \"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\",\r\n \"transition-all duration-200\",\r\n icon && \"pl-10\",\r\n error && \"border-red-500 focus:ring-red-500\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </div>\r\n {error && <p className=\"mt-1 text-sm text-red-500\">{error}</p>}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nInput.displayName = \"Input\";\r\n\r\nexport default Input;\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\r\n label?: string;\r\n error?: string;\r\n}\r\n\r\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\r\n ({ className, label, error, ...props }, ref) => {\r\n return (\r\n <div className=\"w-full\">\r\n {label && (\r\n <label className=\"block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1\">\r\n {label}\r\n </label>\r\n )}\r\n <textarea\r\n ref={ref}\r\n className={cn(\r\n \"w-full px-4 py-2 rounded-lg min-h-[100px] resize-y\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"text-zinc-900 dark:text-zinc-100\",\r\n \"placeholder:text-zinc-400 dark:placeholder:text-zinc-500\",\r\n \"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\",\r\n \"transition-all duration-200\",\r\n error && \"border-red-500 focus:ring-red-500\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n {error && <p className=\"mt-1 text-sm text-red-500\">{error}</p>}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nTextarea.displayName = \"Textarea\";\r\n\r\nexport default Textarea;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CheckboxProps {\r\n checked?: boolean;\r\n onChange?: (checked: boolean) => void;\r\n label?: string;\r\n disabled?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function Checkbox({ checked = false, onChange, label, disabled = false, className }: CheckboxProps) {\r\n return (\r\n <label\r\n className={cn(\r\n \"inline-flex items-center gap-2 cursor-pointer\",\r\n disabled && \"opacity-50 cursor-not-allowed\",\r\n className\r\n )}\r\n >\r\n <button\r\n type=\"button\"\r\n role=\"checkbox\"\r\n aria-checked={checked}\r\n disabled={disabled}\r\n onClick={() => onChange?.(!checked)}\r\n className={cn(\r\n \"w-5 h-5 rounded border-2 flex items-center justify-center transition-colors\",\r\n checked\r\n ? \"bg-blue-500 border-blue-500\"\r\n : \"bg-transparent border-zinc-300 dark:border-zinc-600\"\r\n )}\r\n >\r\n <motion.svg\r\n initial={false}\r\n animate={{ scale: checked ? 1 : 0, opacity: checked ? 1 : 0 }}\r\n transition={{ duration: 0.15 }}\r\n className=\"w-3 h-3 text-white\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={3} d=\"M5 13l4 4L19 7\" />\r\n </motion.svg>\r\n </button>\r\n {label && <span className=\"text-sm\">{label}</span>}\r\n </label>\r\n );\r\n}\r\n\r\nexport default Checkbox;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RadioOption {\r\n value: string;\r\n label: string;\r\n}\r\n\r\ninterface RadioGroupProps {\r\n options: RadioOption[];\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n name: string;\r\n className?: string;\r\n direction?: \"horizontal\" | \"vertical\";\r\n}\r\n\r\nexport function RadioGroup({\r\n options,\r\n value,\r\n onChange,\r\n name,\r\n className,\r\n direction = \"vertical\",\r\n}: RadioGroupProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"flex gap-3\",\r\n direction === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\",\r\n className\r\n )}\r\n >\r\n {options.map((option) => (\r\n <label\r\n key={option.value}\r\n className=\"inline-flex items-center gap-2 cursor-pointer\"\r\n >\r\n <button\r\n type=\"button\"\r\n role=\"radio\"\r\n aria-checked={value === option.value}\r\n onClick={() => onChange?.(option.value)}\r\n className={cn(\r\n \"w-5 h-5 rounded-full border-2 flex items-center justify-center transition-colors\",\r\n value === option.value\r\n ? \"border-blue-500\"\r\n : \"border-zinc-300 dark:border-zinc-600\"\r\n )}\r\n >\r\n <motion.div\r\n initial={false}\r\n animate={{\r\n scale: value === option.value ? 1 : 0,\r\n opacity: value === option.value ? 1 : 0,\r\n }}\r\n transition={{ duration: 0.15 }}\r\n className=\"w-2.5 h-2.5 rounded-full bg-blue-500\"\r\n />\r\n </button>\r\n <span className=\"text-sm\">{option.label}</span>\r\n </label>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default RadioGroup;\r\n","\"use client\";\r\n\r\nimport { useState, useRef, useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SelectOption {\r\n value: string;\r\n label: string;\r\n}\r\n\r\ninterface SelectProps {\r\n options: SelectOption[];\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n placeholder?: string;\r\n className?: string;\r\n label?: string;\r\n}\r\n\r\nexport function Select({ options, value, onChange, placeholder = \"Select...\", className, label }: SelectProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const ref = useRef<HTMLDivElement>(null);\r\n\r\n const selectedOption = options.find((opt) => opt.value === value);\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (ref.current && !ref.current.contains(e.target as Node)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, []);\r\n\r\n return (\r\n <div className=\"w-full\">\r\n {label && (\r\n <label className=\"block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1\">\r\n {label}\r\n </label>\r\n )}\r\n <div ref={ref} className={cn(\"relative\", className)}>\r\n <button\r\n type=\"button\"\r\n onClick={() => setIsOpen(!isOpen)}\r\n className={cn(\r\n \"w-full px-4 py-2 rounded-lg text-left\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"flex items-center justify-between\",\r\n \"focus:outline-none focus:ring-2 focus:ring-blue-500\",\r\n \"transition-all duration-200\"\r\n )}\r\n >\r\n <span className={selectedOption ? \"\" : \"text-zinc-400\"}>\r\n {selectedOption?.label || placeholder}\r\n </span>\r\n <motion.svg\r\n animate={{ rotate: isOpen ? 180 : 0 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"w-5 h-5\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\r\n </motion.svg>\r\n </button>\r\n <AnimatePresence>\r\n {isOpen && (\r\n <motion.div\r\n initial={{ opacity: 0, y: -10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: -10 }}\r\n transition={{ duration: 0.15 }}\r\n className={cn(\r\n \"absolute z-50 w-full mt-1 rounded-lg overflow-hidden\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"shadow-lg\"\r\n )}\r\n >\r\n {options.map((option) => (\r\n <button\r\n key={option.value}\r\n type=\"button\"\r\n onClick={() => {\r\n onChange?.(option.value);\r\n setIsOpen(false);\r\n }}\r\n className={cn(\r\n \"w-full px-4 py-2 text-left\",\r\n \"hover:bg-zinc-100 dark:hover:bg-zinc-800\",\r\n \"transition-colors\",\r\n value === option.value && \"bg-blue-50 dark:bg-blue-900/20 text-blue-600\"\r\n )}\r\n >\r\n {option.label}\r\n </button>\r\n ))}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Select;\r\n","\"use client\";\r\n\r\nimport { useState, useRef, useEffect } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface InputOTPProps {\r\n maxLength?: number;\r\n onComplete?: (value: string) => void;\r\n onChange?: (value: string) => void;\r\n className?: string;\r\n}\r\n\r\nexport function InputOTP({\r\n maxLength = 6,\r\n onComplete,\r\n onChange,\r\n className = \"\",\r\n}: InputOTPProps) {\r\n const [values, setValues] = useState<string[]>(new Array(maxLength).fill(\"\"));\r\n const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\r\n\r\n useEffect(() => {\r\n const currentValue = values.join(\"\");\r\n onChange?.(currentValue);\r\n\r\n if (currentValue.length === maxLength) {\r\n onComplete?.(currentValue);\r\n }\r\n }, [values, maxLength, onChange, onComplete]);\r\n\r\n const handleChange = (index: number, value: string) => {\r\n if (value.length > 1) {\r\n const pastedValues = value.slice(0, maxLength).split(\"\");\r\n const newValues = [...values];\r\n pastedValues.forEach((val, i) => {\r\n if (index + i < maxLength) {\r\n newValues[index + i] = val;\r\n }\r\n });\r\n setValues(newValues);\r\n\r\n const nextIndex = Math.min(index + pastedValues.length, maxLength - 1);\r\n inputRefs.current[nextIndex]?.focus();\r\n return;\r\n }\r\n\r\n if (/^\\d*$/.test(value)) {\r\n const newValues = [...values];\r\n newValues[index] = value;\r\n setValues(newValues);\r\n\r\n if (value && index < maxLength - 1) {\r\n inputRefs.current[index + 1]?.focus();\r\n }\r\n }\r\n };\r\n\r\n const handleKeyDown = (\r\n index: number,\r\n e: React.KeyboardEvent<HTMLInputElement>\r\n ) => {\r\n if (e.key === \"Backspace\") {\r\n if (!values[index] && index > 0) {\r\n inputRefs.current[index - 1]?.focus();\r\n } else {\r\n const newValues = [...values];\r\n newValues[index] = \"\";\r\n setValues(newValues);\r\n }\r\n } else if (e.key === \"ArrowLeft\" && index > 0) {\r\n inputRefs.current[index - 1]?.focus();\r\n } else if (e.key === \"ArrowRight\" && index < maxLength - 1) {\r\n inputRefs.current[index + 1]?.focus();\r\n }\r\n };\r\n\r\n const handleFocus = (index: number) => {\r\n inputRefs.current[index]?.select();\r\n };\r\n\r\n return (\r\n <div className={cn(\"flex items-center gap-2\", className)}>\r\n {values.map((value, index) => (\r\n <input\r\n key={index}\r\n ref={(el) => {\r\n inputRefs.current[index] = el;\r\n }}\r\n type=\"text\"\r\n inputMode=\"numeric\"\r\n maxLength={1}\r\n value={value}\r\n onChange={(e) => handleChange(index, e.target.value)}\r\n onKeyDown={(e) => handleKeyDown(index, e)}\r\n onFocus={() => handleFocus(index)}\r\n className={cn(\r\n \"w-12 h-12 text-center text-lg font-semibold\",\r\n \"border-2 border-zinc-300 dark:border-zinc-600 rounded-md\",\r\n \"focus:border-zinc-900 dark:focus:border-white focus:outline-none\",\r\n \"bg-white dark:bg-zinc-800 text-zinc-900 dark:text-white\",\r\n \"transition-colors\"\r\n )}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default InputOTP;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HamburgerBasicProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerBasic({ className, onChange }: HamburgerBasicProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <label\r\n className={cn(\r\n \"relative w-10 h-8 bg-transparent cursor-pointer block\",\r\n className\r\n )}\r\n htmlFor=\"burger-basic\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n id=\"burger-basic\"\r\n className=\"hidden\"\r\n checked={isOpen}\r\n onChange={handleToggle}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out\",\r\n \"top-0 origin-left\",\r\n isOpen && \"rotate-45 top-0 left-1.5\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out\",\r\n \"top-1/2 -translate-y-1/2 origin-left\",\r\n isOpen && \"w-0 opacity-0\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out\",\r\n \"top-full -translate-y-full origin-left\",\r\n isOpen && \"-rotate-45 top-7 left-1.5\"\r\n )}\r\n />\r\n </label>\r\n );\r\n}\r\n\r\nexport default HamburgerBasic;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HamburgerSpinProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerSpin({ className, onChange }: HamburgerSpinProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <div className={cn(\"inline-block\", className)}>\r\n <input\r\n type=\"checkbox\"\r\n id=\"checkbox-spin\"\r\n className=\"hidden\"\r\n checked={isOpen}\r\n onChange={handleToggle}\r\n />\r\n <label\r\n htmlFor=\"checkbox-spin\"\r\n className={cn(\r\n \"relative w-10 h-10 cursor-pointer flex flex-col items-center justify-center gap-2.5 transition-all duration-500\",\r\n isOpen && \"rotate-180\"\r\n )}\r\n >\r\n <div\r\n className={cn(\r\n \"w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center\",\r\n isOpen && \"scale-x-[0.6] translate-y-[1px]\"\r\n )}\r\n />\r\n <div\r\n className={cn(\r\n \"w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center\",\r\n isOpen && \"rotate-90 scale-x-[1.2]\"\r\n )}\r\n />\r\n <div\r\n className={cn(\r\n \"w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center\",\r\n isOpen && \"scale-x-[0.6] -translate-y-[1px]\"\r\n )}\r\n />\r\n </label>\r\n </div>\r\n );\r\n}\r\n\r\nexport default HamburgerSpin;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerMorphProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerMorph({ className, onChange }: HamburgerMorphProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2\",\r\n className\r\n )}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { scaleX: 0 } : { scaleX: 1 }}\r\n transition={{ duration: 0.3, type: \"spring\", stiffness: 400, damping: 30 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { scaleX: 1.2 } : { scaleX: 1 }}\r\n transition={{ duration: 0.4, type: \"spring\", stiffness: 200, damping: 20 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { scaleX: 0 } : { scaleX: 1 }}\r\n transition={{ duration: 0.3, delay: 0.05, type: \"spring\", stiffness: 400, damping: 30 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default HamburgerMorph;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerSpringProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerSpring({ className, onChange }: HamburgerSpringProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2 p-2\",\r\n className\r\n )}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { y: -12, rotation: 90, scaleX: 0.8 } : { y: 0, rotation: 0, scaleX: 1 }}\r\n transition={{ duration: 0.5, type: \"spring\", stiffness: 200, damping: 15 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { rotation: 90, scaleX: 0.8 } : { rotation: 0, scaleX: 1 }}\r\n transition={{ duration: 0.5, type: \"spring\", stiffness: 200, damping: 15 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { y: 12, rotation: 90, scaleX: 0.8 } : { y: 0, rotation: 0, scaleX: 1 }}\r\n transition={{ duration: 0.5, type: \"spring\", stiffness: 200, damping: 15 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default HamburgerSpring;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerWaveProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerWave({ className, onChange }: HamburgerWaveProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex items-center justify-center\",\r\n className\r\n )}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <div className=\"relative w-8 h-8\">\r\n <span\r\n className={cn(\r\n \"absolute w-2 h-2 bg-black dark:bg-white rounded-sm transition-all duration-300 ease-out\",\r\n isOpen \r\n ? \"top-0 left-0\" \r\n : \"top-0 left-1/2 -translate-x-1/2 w-8 h-0.5 rounded-full\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"absolute w-2 h-2 bg-black dark:bg-white rounded-sm transition-all duration-300 ease-out delay-75\",\r\n isOpen \r\n ? \"top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\" \r\n : \"top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-8 h-0.5 rounded-full\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"absolute w-2 h-2 bg-black dark:bg-white rounded-sm transition-all duration-300 ease-out delay-150\",\r\n isOpen \r\n ? \"bottom-0 right-0\" \r\n : \"bottom-0 left-1/2 -translate-x-1/2 w-8 h-0.5 rounded-full\"\r\n )}\r\n />\r\n </div>\r\n </button>\r\n );\r\n}\r\n\r\nexport default HamburgerWave;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerStaggerProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerStagger({ className, onChange }: HamburgerStaggerProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <label\r\n className={cn(\r\n \"w-12 h-8 cursor-pointer relative block\",\r\n className\r\n )}\r\n htmlFor=\"burger-stagger\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n id=\"burger-stagger\"\r\n className=\"hidden w-full h-full\"\r\n checked={isOpen}\r\n onChange={handleToggle}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute w-full rounded-lg border-[3px] border-black dark:border-white bg-black dark:bg-white transition-all duration-150 ease-in-out\",\r\n \"top-0 right-0 origin-right\",\r\n isOpen && \"w-1/2 top-1/2 -translate-y-[30%] rotate-[40deg]\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute w-full rounded-lg border-[3px] border-black dark:border-white bg-black dark:bg-white transition-all duration-150 ease-in-out\",\r\n \"top-1/2 -translate-y-1/2\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute w-full rounded-lg border-[3px] border-black dark:border-white bg-black dark:bg-white transition-all duration-150 ease-in-out\",\r\n \"top-full right-0 origin-right -translate-y-full\",\r\n isOpen && \"w-1/2 top-1/2 -translate-y-[70%] -rotate-[40deg]\"\r\n )}\r\n />\r\n </label>\r\n );\r\n}\r\n\r\nexport default HamburgerStagger;\r\n","\"use client\";\r\n\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface Hamburger3DProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function Hamburger3D({ className, onChange }: Hamburger3DProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2 p-2\",\r\n className\r\n )}\r\n style={{ transformStyle: \"preserve-3d\", perspective: \"800px\" }}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <motion.div\r\n className=\"w-8 h-0.5 bg-black dark:bg-white rounded\"\r\n animate={isOpen ? { \r\n width: 10, \r\n height: 10, \r\n borderRadius: \"50%\",\r\n y: -6 \r\n } : { \r\n width: 32, \r\n height: 2, \r\n borderRadius: \"4px\",\r\n y: 0 \r\n }}\r\n transition={{ duration: 0.3, ease: \"easeInOut\" }}\r\n />\r\n <motion.div\r\n className=\"w-8 h-0.5 bg-black dark:bg-white rounded\"\r\n animate={isOpen ? { \r\n width: 10, \r\n height: 10, \r\n borderRadius: \"50%\",\r\n x: -8,\r\n y: 6 \r\n } : { \r\n width: 32, \r\n height: 2, \r\n borderRadius: \"4px\",\r\n x: 0,\r\n y: 0 \r\n }}\r\n transition={{ duration: 0.35, ease: \"easeInOut\" }}\r\n />\r\n <motion.div\r\n className=\"w-8 h-0.5 bg-black dark:bg-white rounded\"\r\n animate={isOpen ? { \r\n width: 10, \r\n height: 10, \r\n borderRadius: \"50%\",\r\n x: 8,\r\n y: 6 \r\n } : { \r\n width: 32, \r\n height: 2, \r\n borderRadius: \"4px\",\r\n x: 0,\r\n y: 0 \r\n }}\r\n transition={{ duration: 0.4, ease: \"easeInOut\" }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default Hamburger3D;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerElasticProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerElastic({ className, onChange }: HamburgerElasticProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2\",\r\n className\r\n )}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { rotateX: 90, y: 0, opacity: 0 } : { rotateX: 0, y: 0, opacity: 1 }}\r\n transition={{ duration: 0.3, type: \"spring\", stiffness: 300, damping: 30 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { scaleY: 3 } : { scaleY: 1 }}\r\n transition={{ duration: 0.6, type: \"spring\", stiffness: 200, damping: 15 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { rotateX: 90, y: 0, opacity: 0 } : { rotateX: 0, y: 0, opacity: 1 }}\r\n transition={{ duration: 0.3, type: \"spring\", stiffness: 300, damping: 30 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default HamburgerElastic;\r\n","\"use client\";\r\n\r\nimport { useRef, useEffect, useCallback, ReactNode } from \"react\";\r\n\r\ninterface ClickSparkProps {\r\n sparkColor?: string;\r\n sparkSize?: number;\r\n sparkRadius?: number;\r\n sparkCount?: number;\r\n duration?: number;\r\n easing?: string;\r\n extraScale?: number;\r\n children: ReactNode;\r\n}\r\n\r\nexport function ClickSpark({\r\n sparkColor = \"#000000\",\r\n sparkSize = 10,\r\n sparkRadius = 15,\r\n sparkCount = 8,\r\n duration = 400,\r\n easing = \"ease-out\",\r\n extraScale = 1.0,\r\n children,\r\n}: ClickSparkProps) {\r\n const canvasRef = useRef<HTMLCanvasElement>(null);\r\n const sparksRef = useRef<\r\n Array<{\r\n x: number;\r\n y: number;\r\n angle: number;\r\n startTime: number;\r\n }>\r\n >([]);\r\n const startTimeRef = useRef<number | null>(null);\r\n\r\n useEffect(() => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n\r\n const parent = canvas.parentElement;\r\n if (!parent) return;\r\n\r\n let resizeTimeout: ReturnType<typeof setTimeout>;\r\n\r\n const resizeCanvas = () => {\r\n const { width, height } = parent.getBoundingClientRect();\r\n if (canvas.width !== width || canvas.height !== height) {\r\n canvas.width = width;\r\n canvas.height = height;\r\n }\r\n };\r\n\r\n const handleResize = () => {\r\n clearTimeout(resizeTimeout);\r\n resizeTimeout = setTimeout(resizeCanvas, 100);\r\n };\r\n\r\n const ro = new ResizeObserver(handleResize);\r\n ro.observe(parent);\r\n\r\n resizeCanvas();\r\n\r\n return () => {\r\n ro.disconnect();\r\n clearTimeout(resizeTimeout);\r\n };\r\n }, []);\r\n\r\n const easeFunc = useCallback(\r\n (t: number) => {\r\n switch (easing) {\r\n case \"linear\":\r\n return t;\r\n case \"ease-in\":\r\n return t * t;\r\n case \"ease-in-out\":\r\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\r\n default:\r\n return t * (2 - t);\r\n }\r\n },\r\n [easing]\r\n );\r\n\r\n useEffect(() => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n const ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n let animationId: number;\r\n\r\n const draw = (timestamp: number) => {\r\n if (!startTimeRef.current) {\r\n startTimeRef.current = timestamp;\r\n }\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n sparksRef.current = sparksRef.current.filter((spark) => {\r\n const elapsed = timestamp - spark.startTime;\r\n if (elapsed >= duration) {\r\n return false;\r\n }\r\n\r\n const progress = elapsed / duration;\r\n const eased = easeFunc(progress);\r\n\r\n const distance = eased * sparkRadius * extraScale;\r\n const lineLength = sparkSize * (1 - eased);\r\n\r\n const x1 = spark.x + distance * Math.cos(spark.angle);\r\n const y1 = spark.y + distance * Math.sin(spark.angle);\r\n const x2 = spark.x + (distance + lineLength) * Math.cos(spark.angle);\r\n const y2 = spark.y + (distance + lineLength) * Math.sin(spark.angle);\r\n\r\n ctx.strokeStyle = sparkColor;\r\n ctx.lineWidth = 2;\r\n ctx.beginPath();\r\n ctx.moveTo(x1, y1);\r\n ctx.lineTo(x2, y2);\r\n ctx.stroke();\r\n\r\n return true;\r\n });\r\n\r\n animationId = requestAnimationFrame(draw);\r\n };\r\n\r\n animationId = requestAnimationFrame(draw);\r\n\r\n return () => {\r\n cancelAnimationFrame(animationId);\r\n };\r\n }, [sparkColor, sparkSize, sparkRadius, duration, easeFunc, extraScale]);\r\n\r\n const handleClick = (e: React.MouseEvent) => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n const rect = canvas.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n\r\n const now = performance.now();\r\n const newSparks = Array.from({ length: sparkCount }, (_, i) => ({\r\n x,\r\n y,\r\n angle: (2 * Math.PI * i) / sparkCount,\r\n startTime: now,\r\n }));\r\n\r\n sparksRef.current.push(...newSparks);\r\n };\r\n\r\n return (\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n }}\r\n onClick={handleClick}\r\n >\r\n <canvas\r\n ref={canvasRef}\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n display: \"block\",\r\n userSelect: \"none\",\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n pointerEvents: \"none\",\r\n }}\r\n />\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ClickSpark;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { motion, useMotionValue, useSpring } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SmoothCursorProps {\r\n className?: string;\r\n}\r\n\r\nexport function SmoothCursor({ className }: SmoothCursorProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n const cursorX = useMotionValue(-100);\r\n const cursorY = useMotionValue(-100);\r\n\r\n const springConfig = { damping: 25, stiffness: 700 };\r\n const cursorXSpring = useSpring(cursorX, springConfig);\r\n const cursorYSpring = useSpring(cursorY, springConfig);\r\n\r\n useEffect(() => {\r\n const moveCursor = (e: MouseEvent) => {\r\n cursorX.set(e.clientX - 16);\r\n cursorY.set(e.clientY - 16);\r\n setIsVisible(true);\r\n };\r\n\r\n const hideCursor = () => {\r\n setIsVisible(false);\r\n };\r\n\r\n window.addEventListener(\"mousemove\", moveCursor);\r\n window.addEventListener(\"mouseleave\", hideCursor);\r\n\r\n return () => {\r\n window.removeEventListener(\"mousemove\", moveCursor);\r\n window.removeEventListener(\"mouseleave\", hideCursor);\r\n };\r\n }, [cursorX, cursorY]);\r\n\r\n return (\r\n <motion.div\r\n className={cn(\r\n \"pointer-events-none fixed left-0 top-0 z-50 h-8 w-8 rounded-full bg-zinc-400 mix-blend-difference\",\r\n isVisible ? \"opacity-100\" : \"opacity-0\",\r\n className\r\n )}\r\n style={{\r\n x: cursorXSpring,\r\n y: cursorYSpring,\r\n }}\r\n transition={{\r\n type: \"spring\",\r\n stiffness: 500,\r\n damping: 28,\r\n }}\r\n />\r\n );\r\n}\r\n\r\nexport default SmoothCursor;\r\n","\"use client\";\r\n\r\nimport { ReactNode } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FloatEffectProps {\r\n children?: ReactNode;\r\n className?: string;\r\n duration?: number;\r\n distance?: number;\r\n}\r\n\r\nexport function FloatEffect({\r\n children,\r\n className,\r\n duration = 5,\r\n distance = 50,\r\n}: FloatEffectProps) {\r\n return (\r\n <motion.div\r\n className={cn(\"relative\", className)}\r\n animate={{\r\n y: [0, -distance, 0],\r\n }}\r\n transition={{\r\n duration,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n }}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default FloatEffect;\r\n","\"use client\";\r\n\r\nimport { ReactNode } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlowEffectProps {\r\n children?: ReactNode;\r\n className?: string;\r\n glowColor?: string;\r\n duration?: number;\r\n}\r\n\r\nexport function GlowEffect({\r\n children,\r\n className,\r\n glowColor = \"rgba(255, 255, 255, 0.4)\",\r\n duration = 3,\r\n}: GlowEffectProps) {\r\n return (\r\n <motion.div\r\n className={cn(\r\n \"relative p-8 rounded-3xl border-2 border-white/30\",\r\n className\r\n )}\r\n style={{\r\n background:\r\n \"radial-gradient(circle at center, rgba(255,255,255,0.05) 0%, transparent 70%)\",\r\n }}\r\n animate={{\r\n boxShadow: [\r\n `0 0 40px ${glowColor}, 0 0 80px ${glowColor.replace(\"0.4\", \"0.2\")}`,\r\n `0 0 80px ${glowColor.replace(\"0.4\", \"0.8\")}, 0 0 160px ${glowColor.replace(\"0.4\", \"0.5\")}`,\r\n `0 0 40px ${glowColor}, 0 0 80px ${glowColor.replace(\"0.4\", \"0.2\")}`,\r\n ],\r\n borderColor: [\r\n \"rgba(255, 255, 255, 0.3)\",\r\n \"rgba(255, 255, 255, 0.6)\",\r\n \"rgba(255, 255, 255, 0.3)\",\r\n ],\r\n }}\r\n transition={{\r\n duration,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n }}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default GlowEffect;\r\n","\"use client\";\r\n\r\nimport { ReactNode } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BlurFadeProps {\r\n children: ReactNode;\r\n className?: string;\r\n delay?: number;\r\n duration?: number;\r\n blur?: number;\r\n inView?: boolean;\r\n inViewMargin?: string;\r\n yOffset?: number;\r\n}\r\n\r\nexport function BlurFade({\r\n children,\r\n className,\r\n delay = 0,\r\n duration = 0.8,\r\n blur = 10,\r\n inView = false,\r\n inViewMargin = \"-50px\",\r\n yOffset = 6,\r\n}: BlurFadeProps) {\r\n const variants = {\r\n hidden: {\r\n opacity: 0,\r\n filter: `blur(${blur}px)`,\r\n y: yOffset,\r\n },\r\n visible: {\r\n opacity: 1,\r\n filter: \"blur(0px)\",\r\n y: 0,\r\n },\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(className)}\r\n initial=\"hidden\"\r\n animate={inView ? undefined : \"visible\"}\r\n whileInView={inView ? \"visible\" : undefined}\r\n viewport={{ once: true, margin: inViewMargin }}\r\n variants={variants}\r\n transition={{\r\n duration,\r\n delay,\r\n ease: [0.25, 0.1, 0.25, 1],\r\n }}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default BlurFade;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, ReactNode } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nclass Pixel {\r\n width: number;\r\n height: number;\r\n ctx: CanvasRenderingContext2D;\r\n x: number;\r\n y: number;\r\n color: string;\r\n speed: number;\r\n size: number;\r\n sizeStep: number;\r\n minSize: number;\r\n maxSizeInteger: number;\r\n maxSize: number;\r\n delay: number;\r\n counter: number;\r\n counterStep: number;\r\n isIdle: boolean;\r\n isReverse: boolean;\r\n isShimmer: boolean;\r\n\r\n constructor(\r\n canvas: HTMLCanvasElement,\r\n context: CanvasRenderingContext2D,\r\n x: number,\r\n y: number,\r\n color: string,\r\n speed: number,\r\n delay: number\r\n ) {\r\n this.width = canvas.width;\r\n this.height = canvas.height;\r\n this.ctx = context;\r\n this.x = x;\r\n this.y = y;\r\n this.color = color;\r\n this.speed = this.getRandomValue(0.1, 0.9) * speed;\r\n this.size = 0;\r\n this.sizeStep = Math.random() * 0.4;\r\n this.minSize = 0.5;\r\n this.maxSizeInteger = 2;\r\n this.maxSize = this.getRandomValue(this.minSize, this.maxSizeInteger);\r\n this.delay = delay;\r\n this.counter = 0;\r\n this.counterStep = Math.random() * 4 + (this.width + this.height) * 0.01;\r\n this.isIdle = false;\r\n this.isReverse = false;\r\n this.isShimmer = false;\r\n }\r\n\r\n getRandomValue(min: number, max: number) {\r\n return Math.random() * (max - min) + min;\r\n }\r\n\r\n draw() {\r\n const centerOffset = this.maxSizeInteger * 0.5 - this.size * 0.5;\r\n this.ctx.fillStyle = this.color;\r\n this.ctx.fillRect(\r\n this.x + centerOffset,\r\n this.y + centerOffset,\r\n this.size,\r\n this.size\r\n );\r\n }\r\n\r\n appear() {\r\n this.isIdle = false;\r\n if (this.counter <= this.delay) {\r\n this.counter += this.counterStep;\r\n return;\r\n }\r\n if (this.size >= this.maxSize) {\r\n this.isShimmer = true;\r\n }\r\n if (this.isShimmer) {\r\n this.shimmer();\r\n } else {\r\n this.size += this.sizeStep;\r\n }\r\n this.draw();\r\n }\r\n\r\n disappear() {\r\n this.isShimmer = false;\r\n this.counter = 0;\r\n if (this.size <= 0) {\r\n this.isIdle = true;\r\n return;\r\n } else {\r\n this.size -= 0.1;\r\n }\r\n this.draw();\r\n }\r\n\r\n shimmer() {\r\n if (this.size >= this.maxSize) {\r\n this.isReverse = true;\r\n } else if (this.size <= this.minSize) {\r\n this.isReverse = false;\r\n }\r\n if (this.isReverse) {\r\n this.size -= this.speed;\r\n } else {\r\n this.size += this.speed;\r\n }\r\n }\r\n}\r\n\r\nconst VARIANTS = {\r\n default: {\r\n gap: 5,\r\n speed: 35,\r\n colors: \"#71717a,#a1a1aa,#d4d4d8\",\r\n noFocus: false,\r\n },\r\n blue: {\r\n gap: 10,\r\n speed: 25,\r\n colors: \"#0ea5e9,#38bdf8,#7dd3fc\",\r\n noFocus: false,\r\n },\r\n yellow: {\r\n gap: 3,\r\n speed: 20,\r\n colors: \"#ca8a04,#eab308,#facc15\",\r\n noFocus: false,\r\n },\r\n pink: {\r\n gap: 6,\r\n speed: 80,\r\n colors: \"#be123c,#e11d48,#f43f5e\",\r\n noFocus: true,\r\n },\r\n};\r\n\r\ninterface PixelCardProps {\r\n variant?: \"default\" | \"blue\" | \"yellow\" | \"pink\";\r\n gap?: number;\r\n speed?: number;\r\n colors?: string;\r\n noFocus?: boolean;\r\n className?: string;\r\n children: ReactNode;\r\n}\r\n\r\nfunction getEffectiveSpeed(value: number, reducedMotion: boolean) {\r\n const min = 0;\r\n const max = 100;\r\n const throttle = 0.001;\r\n\r\n if (value <= min || reducedMotion) {\r\n return min;\r\n } else if (value >= max) {\r\n return max * throttle;\r\n } else {\r\n return value * throttle;\r\n }\r\n}\r\n\r\nexport function PixelCard({\r\n variant = \"default\",\r\n gap,\r\n speed,\r\n colors,\r\n noFocus,\r\n className = \"\",\r\n children,\r\n}: PixelCardProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const canvasRef = useRef<HTMLCanvasElement>(null);\r\n const pixelsRef = useRef<Pixel[]>([]);\r\n const animationRef = useRef<ReturnType<typeof requestAnimationFrame> | null>(\r\n null\r\n );\r\n const timePreviousRef = useRef(\r\n typeof performance !== \"undefined\" ? performance.now() : 0\r\n );\r\n const reducedMotion = useRef(\r\n typeof window !== \"undefined\"\r\n ? window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches\r\n : false\r\n ).current;\r\n\r\n const variantCfg = VARIANTS[variant] || VARIANTS.default;\r\n const finalGap = gap ?? variantCfg.gap;\r\n const finalSpeed = speed ?? variantCfg.speed;\r\n const finalColors = colors ?? variantCfg.colors;\r\n const finalNoFocus = noFocus ?? variantCfg.noFocus;\r\n\r\n const initPixels = () => {\r\n if (!containerRef.current || !canvasRef.current) return;\r\n\r\n const rect = containerRef.current.getBoundingClientRect();\r\n const width = Math.floor(rect.width) || 300;\r\n const height = Math.floor(rect.height) || 400;\r\n const ctx = canvasRef.current.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n canvasRef.current.width = width;\r\n canvasRef.current.height = height;\r\n canvasRef.current.style.width = `${width}px`;\r\n canvasRef.current.style.height = `${height}px`;\r\n\r\n const colorsArray = finalColors.split(\",\").map((c) => c.trim());\r\n const pxs: Pixel[] = [];\r\n const gapValue = Math.max(parseInt(finalGap.toString(), 10), 3);\r\n\r\n for (let x = 0; x < width; x += gapValue) {\r\n for (let y = 0; y < height; y += gapValue) {\r\n const color = colorsArray[Math.floor(Math.random() * colorsArray.length)];\r\n const dx = x - width / 2;\r\n const dy = y - height / 2;\r\n const distance = Math.sqrt(dx * dx + dy * dy);\r\n const delay = reducedMotion ? 0 : distance;\r\n pxs.push(\r\n new Pixel(\r\n canvasRef.current!,\r\n ctx,\r\n x,\r\n y,\r\n color,\r\n getEffectiveSpeed(finalSpeed, reducedMotion),\r\n delay\r\n )\r\n );\r\n }\r\n }\r\n pixelsRef.current = pxs;\r\n };\r\n\r\n const doAnimate = (fnName: \"appear\" | \"disappear\") => {\r\n animationRef.current = requestAnimationFrame(() => doAnimate(fnName));\r\n const timeNow = performance.now();\r\n const timePassed = timeNow - timePreviousRef.current;\r\n const timeInterval = 1000 / 60;\r\n\r\n if (timePassed < timeInterval) return;\r\n timePreviousRef.current = timeNow - (timePassed % timeInterval);\r\n\r\n const ctx = canvasRef.current?.getContext(\"2d\");\r\n if (!ctx || !canvasRef.current) return;\r\n\r\n ctx.clearRect(0, 0, canvasRef.current.width, canvasRef.current.height);\r\n\r\n let allIdle = true;\r\n for (let i = 0; i < pixelsRef.current.length; i++) {\r\n const pixel = pixelsRef.current[i];\r\n pixel[fnName]();\r\n if (!pixel.isIdle) {\r\n allIdle = false;\r\n }\r\n }\r\n if (allIdle && animationRef.current) {\r\n cancelAnimationFrame(animationRef.current);\r\n }\r\n };\r\n\r\n const handleAnimation = (name: \"appear\" | \"disappear\") => {\r\n if (animationRef.current !== null) {\r\n cancelAnimationFrame(animationRef.current);\r\n }\r\n animationRef.current = requestAnimationFrame(() => doAnimate(name));\r\n };\r\n\r\n const onMouseEnter = () => handleAnimation(\"appear\");\r\n const onMouseLeave = () => handleAnimation(\"disappear\");\r\n const onFocus: React.FocusEventHandler<HTMLDivElement> = (e) => {\r\n if (e.currentTarget.contains(e.relatedTarget as Node)) return;\r\n handleAnimation(\"appear\");\r\n };\r\n const onBlur: React.FocusEventHandler<HTMLDivElement> = (e) => {\r\n if (e.currentTarget.contains(e.relatedTarget as Node)) return;\r\n handleAnimation(\"disappear\");\r\n };\r\n\r\n useEffect(() => {\r\n initPixels();\r\n const observer = new ResizeObserver(() => {\r\n initPixels();\r\n });\r\n if (containerRef.current) {\r\n observer.observe(containerRef.current);\r\n }\r\n return () => {\r\n observer.disconnect();\r\n if (animationRef.current !== null) {\r\n cancelAnimationFrame(animationRef.current);\r\n }\r\n };\r\n }, [finalGap, finalSpeed, finalColors, finalNoFocus]);\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={cn(\r\n \"relative overflow-hidden rounded-xl border border-zinc-200 dark:border-zinc-800 bg-zinc-100 dark:bg-zinc-900\",\r\n className\r\n )}\r\n onMouseEnter={onMouseEnter}\r\n onMouseLeave={onMouseLeave}\r\n onFocus={finalNoFocus ? undefined : onFocus}\r\n onBlur={finalNoFocus ? undefined : onBlur}\r\n tabIndex={finalNoFocus ? -1 : 0}\r\n >\r\n <canvas\r\n className=\"absolute inset-0 w-full h-full pointer-events-none\"\r\n ref={canvasRef}\r\n />\r\n <div className=\"relative z-10\">{children}</div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default PixelCard;\r\n","\"use client\";\r\n\r\nimport { useRef, useState, ReactNode, CSSProperties } from \"react\";\r\nimport { motion, useMotionValue, useSpring, SpringOptions } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TiltedCardProps {\r\n imageSrc: string;\r\n altText?: string;\r\n captionText?: string;\r\n containerHeight?: CSSProperties[\"height\"];\r\n containerWidth?: CSSProperties[\"width\"];\r\n imageHeight?: CSSProperties[\"height\"];\r\n imageWidth?: CSSProperties[\"width\"];\r\n scaleOnHover?: number;\r\n rotateAmplitude?: number;\r\n showMobileWarning?: boolean;\r\n showTooltip?: boolean;\r\n overlayContent?: ReactNode;\r\n displayOverlayContent?: boolean;\r\n className?: string;\r\n}\r\n\r\nconst springValues: SpringOptions = {\r\n damping: 30,\r\n stiffness: 100,\r\n mass: 2,\r\n};\r\n\r\nexport function TiltedCard({\r\n imageSrc,\r\n altText = \"Tilted card image\",\r\n captionText = \"\",\r\n containerHeight = \"300px\",\r\n containerWidth = \"100%\",\r\n imageHeight = \"300px\",\r\n imageWidth = \"300px\",\r\n scaleOnHover = 1.1,\r\n rotateAmplitude = 14,\r\n showMobileWarning = false,\r\n showTooltip = true,\r\n overlayContent = null,\r\n displayOverlayContent = false,\r\n className,\r\n}: TiltedCardProps) {\r\n const ref = useRef<HTMLElement>(null);\r\n\r\n const x = useMotionValue(0);\r\n const y = useMotionValue(0);\r\n const rotateX = useSpring(useMotionValue(0), springValues);\r\n const rotateY = useSpring(useMotionValue(0), springValues);\r\n const scale = useSpring(1, springValues);\r\n const opacity = useSpring(0);\r\n const rotateFigcaption = useSpring(0, {\r\n stiffness: 350,\r\n damping: 30,\r\n mass: 1,\r\n });\r\n\r\n const [lastY, setLastY] = useState<number>(0);\r\n\r\n function handleMouse(e: React.MouseEvent<HTMLElement>) {\r\n if (!ref.current) return;\r\n\r\n const rect = ref.current.getBoundingClientRect();\r\n const offsetX = e.clientX - rect.left - rect.width / 2;\r\n const offsetY = e.clientY - rect.top - rect.height / 2;\r\n\r\n const rotationX = (offsetY / (rect.height / 2)) * -rotateAmplitude;\r\n const rotationY = (offsetX / (rect.width / 2)) * rotateAmplitude;\r\n\r\n rotateX.set(rotationX);\r\n rotateY.set(rotationY);\r\n\r\n x.set(e.clientX - rect.left);\r\n y.set(e.clientY - rect.top);\r\n\r\n const velocityY = offsetY - lastY;\r\n rotateFigcaption.set(-velocityY * 0.6);\r\n setLastY(offsetY);\r\n }\r\n\r\n function handleMouseEnter() {\r\n scale.set(scaleOnHover);\r\n opacity.set(1);\r\n }\r\n\r\n function handleMouseLeave() {\r\n opacity.set(0);\r\n scale.set(1);\r\n rotateX.set(0);\r\n rotateY.set(0);\r\n rotateFigcaption.set(0);\r\n }\r\n\r\n return (\r\n <figure\r\n ref={ref}\r\n className={cn(\r\n \"relative flex items-center justify-center [perspective:800px]\",\r\n className\r\n )}\r\n style={{\r\n height: containerHeight,\r\n width: containerWidth,\r\n }}\r\n onMouseMove={handleMouse}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n >\r\n {showMobileWarning && (\r\n <div className=\"absolute top-2 left-2 text-xs text-muted-foreground md:hidden\">\r\n Best viewed on desktop\r\n </div>\r\n )}\r\n\r\n <motion.div\r\n className=\"relative [transform-style:preserve-3d]\"\r\n style={{\r\n width: imageWidth,\r\n height: imageHeight,\r\n rotateX,\r\n rotateY,\r\n scale,\r\n }}\r\n >\r\n <motion.img\r\n src={imageSrc}\r\n alt={altText}\r\n className=\"absolute inset-0 w-full h-full object-cover rounded-lg\"\r\n style={{\r\n width: imageWidth,\r\n height: imageHeight,\r\n }}\r\n />\r\n\r\n {displayOverlayContent && overlayContent && (\r\n <motion.div className=\"absolute inset-0 flex items-center justify-center bg-black/50 rounded-lg\">\r\n {overlayContent}\r\n </motion.div>\r\n )}\r\n </motion.div>\r\n\r\n {showTooltip && captionText && (\r\n <motion.figcaption\r\n className=\"pointer-events-none absolute px-3 py-1.5 text-sm bg-white dark:bg-zinc-900 rounded-full shadow-lg whitespace-nowrap\"\r\n style={{\r\n x,\r\n y,\r\n opacity,\r\n rotate: rotateFigcaption,\r\n }}\r\n >\r\n {captionText}\r\n </motion.figcaption>\r\n )}\r\n </figure>\r\n );\r\n}\r\n\r\nexport default TiltedCard;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, ReactNode } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface InfiniteScrollProps {\r\n children: ReactNode;\r\n speed?: number;\r\n direction?: \"left\" | \"right\";\r\n pauseOnHover?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function InfiniteScroll({\r\n children,\r\n speed = 30,\r\n direction = \"left\",\r\n pauseOnHover = true,\r\n className,\r\n}: InfiniteScrollProps) {\r\n const scrollerRef = useRef<HTMLDivElement>(null);\r\n const scrollerInnerRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (!scrollerRef.current || !scrollerInnerRef.current) return;\r\n\r\n const scrollerContent = Array.from(scrollerInnerRef.current.children);\r\n\r\n scrollerContent.forEach((item) => {\r\n const duplicatedItem = item.cloneNode(true);\r\n if (scrollerInnerRef.current) {\r\n scrollerInnerRef.current.appendChild(duplicatedItem);\r\n }\r\n });\r\n\r\n scrollerRef.current.style.setProperty(\"--animation-duration\", `${speed}s`);\r\n scrollerRef.current.style.setProperty(\r\n \"--animation-direction\",\r\n direction === \"left\" ? \"forwards\" : \"reverse\"\r\n );\r\n }, [speed, direction]);\r\n\r\n return (\r\n <div\r\n ref={scrollerRef}\r\n className={cn(\r\n \"group relative flex overflow-hidden [mask-image:linear-gradient(to_right,transparent,white_20%,white_80%,transparent)]\",\r\n className\r\n )}\r\n >\r\n <div\r\n ref={scrollerInnerRef}\r\n className={cn(\r\n \"flex min-w-full shrink-0 gap-4 py-4 w-max flex-nowrap\",\r\n \"animate-scroll\",\r\n pauseOnHover && \"group-hover:[animation-play-state:paused]\"\r\n )}\r\n style={{\r\n animation: `scroll var(--animation-duration, 30s) var(--animation-direction, forwards) linear infinite`,\r\n }}\r\n >\r\n {children}\r\n </div>\r\n <style jsx>{`\r\n @keyframes scroll {\r\n from {\r\n transform: translateX(0);\r\n }\r\n to {\r\n transform: translateX(calc(-50% - 0.5rem));\r\n }\r\n }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default InfiniteScroll;\r\n","\"use client\";\r\n\r\nimport { useState, useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingState {\r\n text: string;\r\n}\r\n\r\ninterface MultiStepLoaderProps {\r\n loadingStates: LoadingState[];\r\n loading: boolean;\r\n duration?: number;\r\n loop?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function MultiStepLoader({\r\n loadingStates,\r\n loading,\r\n duration = 2000,\r\n loop = true,\r\n className,\r\n}: MultiStepLoaderProps) {\r\n const [currentState, setCurrentState] = useState(0);\r\n\r\n useEffect(() => {\r\n if (!loading) {\r\n setCurrentState(0);\r\n return;\r\n }\r\n\r\n const interval = setInterval(() => {\r\n setCurrentState((prevState) => {\r\n if (prevState === loadingStates.length - 1) {\r\n return loop ? 0 : prevState;\r\n }\r\n return prevState + 1;\r\n });\r\n }, duration / loadingStates.length);\r\n\r\n return () => clearInterval(interval);\r\n }, [loading, loadingStates.length, duration, loop]);\r\n\r\n return (\r\n <AnimatePresence>\r\n {loading && (\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n className={cn(\r\n \"fixed inset-0 z-[100] flex items-center justify-center bg-black/80 backdrop-blur-sm\",\r\n className\r\n )}\r\n >\r\n <div className=\"bg-white dark:bg-zinc-900 rounded-lg p-8 shadow-2xl max-w-md w-full mx-4\">\r\n <div className=\"text-center\">\r\n <div className=\"mb-4\">\r\n <div className=\"inline-flex items-center justify-center w-16 h-16 bg-blue-100 dark:bg-blue-900/20 rounded-full mb-4\">\r\n <div className=\"w-8 h-8 border-4 border-blue-600 border-t-transparent rounded-full animate-spin\" />\r\n </div>\r\n </div>\r\n\r\n <AnimatePresence mode=\"wait\">\r\n <motion.p\r\n key={currentState}\r\n initial={{ opacity: 0, y: 10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: -10 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"text-lg font-medium text-zinc-900 dark:text-white\"\r\n >\r\n {loadingStates[currentState]?.text}\r\n </motion.p>\r\n </AnimatePresence>\r\n\r\n <div className=\"mt-6 flex justify-center\">\r\n <div className=\"flex space-x-1\">\r\n {loadingStates.map((_, index) => (\r\n <div\r\n key={index}\r\n className={cn(\r\n \"h-2 w-2 rounded-full transition-colors duration-200\",\r\n index === currentState\r\n ? \"bg-blue-600\"\r\n : index < currentState\r\n ? \"bg-green-500\"\r\n : \"bg-zinc-300 dark:bg-zinc-600\"\r\n )}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport default MultiStepLoader;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ASCIITextProps {\r\n text: string;\r\n enableWaves?: boolean;\r\n asciiFontSize?: number;\r\n textFontSize?: number;\r\n textColor?: string;\r\n planeBaseHeight?: number;\r\n className?: string;\r\n}\r\n\r\nconst ASCII_CHARS = ' .:-=+*#%@';\r\n\r\nexport function ASCIIText({\r\n text,\r\n enableWaves = true,\r\n asciiFontSize = 8,\r\n textFontSize = 200,\r\n textColor = \"#ffffff\",\r\n planeBaseHeight = 0.2,\r\n className,\r\n}: ASCIITextProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const [asciiArt, setAsciiArt] = useState<string>(\"\");\r\n\r\n useEffect(() => {\r\n const canvas = document.createElement(\"canvas\");\r\n const ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n // Set canvas size based on text\r\n ctx.font = `bold ${textFontSize}px monospace`;\r\n const metrics = ctx.measureText(text);\r\n const width = Math.ceil(metrics.width);\r\n const height = textFontSize * 1.2;\r\n\r\n canvas.width = width;\r\n canvas.height = height;\r\n\r\n // Draw text\r\n ctx.fillStyle = textColor;\r\n ctx.font = `bold ${textFontSize}px monospace`;\r\n ctx.textBaseline = \"middle\";\r\n ctx.fillText(text, 0, height / 2);\r\n\r\n // Get image data\r\n const imageData = ctx.getImageData(0, 0, width, height);\r\n const pixels = imageData.data;\r\n\r\n // Convert to ASCII\r\n const cols = Math.floor(width / asciiFontSize);\r\n const rows = Math.floor(height / asciiFontSize);\r\n let ascii = \"\";\r\n\r\n for (let y = 0; y < rows; y++) {\r\n for (let x = 0; x < cols; x++) {\r\n const px = x * asciiFontSize;\r\n const py = y * asciiFontSize;\r\n const idx = (py * width + px) * 4;\r\n const brightness = (pixels[idx] + pixels[idx + 1] + pixels[idx + 2]) / 3;\r\n const charIdx = Math.floor((brightness / 255) * (ASCII_CHARS.length - 1));\r\n ascii += ASCII_CHARS[charIdx];\r\n }\r\n ascii += \"\\n\";\r\n }\r\n\r\n setAsciiArt(ascii);\r\n }, [text, asciiFontSize, textFontSize, textColor]);\r\n\r\n return (\r\n <div ref={containerRef} className={cn(\"font-mono whitespace-pre\", className)}>\r\n <pre\r\n style={{\r\n fontSize: `${asciiFontSize}px`,\r\n lineHeight: 1,\r\n color: textColor,\r\n }}\r\n >\r\n {asciiArt}\r\n </pre>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ASCIIText;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FallingTextProps {\r\n text: string;\r\n highlightWords?: string[];\r\n highlightClass?: string;\r\n trigger?: \"auto\" | \"hover\" | \"click\" | \"scroll\";\r\n delay?: number;\r\n staggerDelay?: number;\r\n className?: string;\r\n}\r\n\r\nexport function FallingText({\r\n text,\r\n highlightWords = [],\r\n highlightClass = \"text-primary\",\r\n trigger = \"auto\",\r\n delay = 0,\r\n staggerDelay = 0.05,\r\n className,\r\n}: FallingTextProps) {\r\n const [isVisible, setIsVisible] = useState(trigger === \"auto\");\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const words = text.split(\" \");\r\n\r\n useEffect(() => {\r\n if (trigger === \"scroll\" && containerRef.current) {\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setIsVisible(true);\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n observer.observe(containerRef.current);\r\n return () => observer.disconnect();\r\n }\r\n }, [trigger]);\r\n\r\n const handleInteraction = () => {\r\n if (trigger === \"hover\" || trigger === \"click\") {\r\n setIsVisible(true);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={cn(\"flex flex-wrap gap-2\", className)}\r\n onMouseEnter={trigger === \"hover\" ? handleInteraction : undefined}\r\n onClick={trigger === \"click\" ? handleInteraction : undefined}\r\n >\r\n <AnimatePresence>\r\n {words.map((word, index) => {\r\n const isHighlighted = highlightWords.includes(word.toLowerCase());\r\n return (\r\n <motion.span\r\n key={`${word}-${index}`}\r\n initial={{ opacity: 0, y: -50, rotateX: -90 }}\r\n animate={\r\n isVisible\r\n ? { opacity: 1, y: 0, rotateX: 0 }\r\n : { opacity: 0, y: -50, rotateX: -90 }\r\n }\r\n transition={{\r\n duration: 0.5,\r\n delay: delay + index * staggerDelay,\r\n ease: [0.25, 0.46, 0.45, 0.94],\r\n }}\r\n className={cn(isHighlighted && highlightClass)}\r\n >\r\n {word}\r\n </motion.span>\r\n );\r\n })}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default FallingText;\r\n","\"use client\";\r\n\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { motion, useMotionValue, useSpring, useTransform } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface AnimatedCircularProgressBarProps {\r\n max?: number;\r\n min?: number;\r\n value?: number;\r\n gaugePrimaryColor?: string;\r\n gaugeSecondaryColor?: string;\r\n className?: string;\r\n size?: number;\r\n strokeWidth?: number;\r\n showValue?: boolean;\r\n duration?: number;\r\n autoAnimate?: boolean;\r\n}\r\n\r\nexport function AnimatedCircularProgressBar({\r\n max = 100,\r\n min = 0,\r\n value = 0,\r\n gaugePrimaryColor = \"#a1a1aa\",\r\n gaugeSecondaryColor = \"#27272a\",\r\n className,\r\n size = 200,\r\n strokeWidth = 8,\r\n showValue = true,\r\n duration = 2,\r\n autoAnimate = true,\r\n}: AnimatedCircularProgressBarProps) {\r\n const [currentValue, setCurrentValue] = useState(autoAnimate ? min : value);\r\n \r\n const radius = (size - strokeWidth) / 2;\r\n const circumference = 2 * Math.PI * radius;\r\n \r\n const motionValue = useMotionValue(currentValue);\r\n const springValue = useSpring(motionValue, {\r\n damping: 30,\r\n stiffness: 100,\r\n });\r\n \r\n const strokeDasharray = useTransform(\r\n springValue,\r\n [min, max],\r\n [0, circumference]\r\n );\r\n \r\n const displayValue = useTransform(springValue, (latest) => Math.round(latest));\r\n\r\n useEffect(() => {\r\n if (autoAnimate) {\r\n const interval = setInterval(() => {\r\n setCurrentValue(prev => {\r\n const next = prev + 1;\r\n if (next > max) {\r\n return min;\r\n }\r\n return next;\r\n });\r\n }, duration * 10);\r\n\r\n return () => clearInterval(interval);\r\n } else {\r\n setCurrentValue(value);\r\n }\r\n }, [autoAnimate, value, max, min, duration]);\r\n\r\n useEffect(() => {\r\n motionValue.set(currentValue);\r\n }, [currentValue, motionValue]);\r\n\r\n return (\r\n <div \r\n className={cn(\"relative flex items-center justify-center\", className)}\r\n style={{ width: size, height: size }}\r\n >\r\n <svg\r\n width={size}\r\n height={size}\r\n className=\"transform -rotate-90\"\r\n >\r\n <circle\r\n cx={size / 2}\r\n cy={size / 2}\r\n r={radius}\r\n stroke={gaugeSecondaryColor}\r\n strokeWidth={strokeWidth}\r\n fill=\"none\"\r\n className=\"opacity-20\"\r\n />\r\n \r\n <motion.circle\r\n cx={size / 2}\r\n cy={size / 2}\r\n r={radius}\r\n stroke={gaugePrimaryColor}\r\n strokeWidth={strokeWidth}\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeDasharray={circumference}\r\n strokeDashoffset={useTransform(strokeDasharray, (latest) => circumference - latest)}\r\n className=\"transition-all duration-300 ease-in-out\"\r\n style={{\r\n filter: \"drop-shadow(0 0 6px rgba(59, 130, 246, 0.4))\",\r\n }}\r\n />\r\n \r\n <motion.circle\r\n cx={size / 2}\r\n cy={size / 2}\r\n r={radius}\r\n stroke={gaugePrimaryColor}\r\n strokeWidth={strokeWidth / 2}\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeDasharray={circumference}\r\n strokeDashoffset={useTransform(strokeDasharray, (latest) => circumference - latest)}\r\n className=\"opacity-50 blur-sm\"\r\n />\r\n </svg>\r\n \r\n {showValue && (\r\n <div className=\"absolute inset-0 flex flex-col items-center justify-center\">\r\n <motion.span \r\n className=\"text-3xl font-semibold text-zinc-900 dark:text-zinc-100\"\r\n style={{ fontSize: size / 8 }}\r\n >\r\n {displayValue}\r\n </motion.span>\r\n <span \r\n className=\"text-sm text-zinc-500\"\r\n style={{ fontSize: size / 16 }}\r\n >\r\n {autoAnimate ? \"Auto\" : \"%\"}\r\n </span>\r\n </div>\r\n )}\r\n \r\n <div className=\"absolute inset-0\">\r\n {[...Array(8)].map((_, i) => {\r\n const angle = (i * 45) - 90;\r\n const x = size / 2 + (radius + strokeWidth) * Math.cos((angle * Math.PI) / 180);\r\n const y = size / 2 + (radius + strokeWidth) * Math.sin((angle * Math.PI) / 180);\r\n \r\n return (\r\n <motion.div\r\n key={i}\r\n className=\"absolute w-1 h-1 bg-zinc-500 rounded-full\"\r\n style={{\r\n left: x - 2,\r\n top: y - 2,\r\n }}\r\n animate={{\r\n opacity: [0.3, 1, 0.3],\r\n scale: [0.8, 1.2, 0.8],\r\n }}\r\n transition={{\r\n duration: 2,\r\n repeat: Infinity,\r\n delay: i * 0.2,\r\n }}\r\n />\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default AnimatedCircularProgressBar;\r\n","\"use client\";\r\n\r\ninterface LoadingInvertProps {\r\n text?: string;\r\n className?: string;\r\n}\r\n\r\nexport function LoadingInvert({ text = \"Loading...\", className = \"\" }: LoadingInvertProps) {\r\n return (\r\n <div className={`w-full h-full min-h-[400px] flex items-center justify-center ${className}`}>\r\n <div className=\"relative h-fit min-w-12 w-fit text-4xl font-bold tracking-wider text-black dark:text-white\">\r\n <p className=\"relative z-0\">{text}</p>\r\n <div \r\n className=\"absolute h-full aspect-square left-0 top-0 rounded-[20%] bg-foreground/10 backdrop-invert\"\r\n style={{\r\n animation: \"invert-move 2s ease-in-out infinite\"\r\n }}\r\n />\r\n <style dangerouslySetInnerHTML={{\r\n __html: `\r\n @keyframes invert-move { 50% { left: calc(100% - 3rem); } }\r\n `\r\n }} />\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingInvert;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface LoaderProps extends React.HTMLAttributes<HTMLDivElement> {\r\n title?: string;\r\n subtitle?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function Loader({\r\n title = \"Configuring your account...\",\r\n subtitle = \"Please wait while we prepare everything for you\",\r\n size = \"md\",\r\n className,\r\n ...props\r\n}: LoaderProps) {\r\n const sizeConfig = {\r\n sm: {\r\n container: \"size-20\",\r\n titleClass: \"text-sm/tight font-medium\",\r\n subtitleClass: \"text-xs/relaxed\",\r\n spacing: \"space-y-2\",\r\n maxWidth: \"max-w-48\",\r\n },\r\n md: {\r\n container: \"size-32\",\r\n titleClass: \"text-base/snug font-medium\",\r\n subtitleClass: \"text-sm/relaxed\",\r\n spacing: \"space-y-3\",\r\n maxWidth: \"max-w-56\",\r\n },\r\n lg: {\r\n container: \"size-40\",\r\n titleClass: \"text-lg/tight font-semibold\",\r\n subtitleClass: \"text-base/relaxed\",\r\n spacing: \"space-y-4\",\r\n maxWidth: \"max-w-64\",\r\n },\r\n };\r\n\r\n const config = sizeConfig[size];\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"flex flex-col items-center justify-center gap-8 p-8\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <motion.div\r\n className={cn(\"relative\", config.container)}\r\n animate={{\r\n scale: [1, 1.02, 1],\r\n }}\r\n transition={{\r\n duration: 4,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full\"\r\n style={{\r\n background: `conic-gradient(from 0deg, transparent 0deg, rgb(0, 0, 0) 90deg, transparent 180deg)`,\r\n mask: `radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)`,\r\n WebkitMask: `radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)`,\r\n opacity: 0.8,\r\n }}\r\n animate={{\r\n rotate: [0, 360],\r\n }}\r\n transition={{\r\n duration: 3,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full\"\r\n style={{\r\n background: `conic-gradient(from 0deg, transparent 0deg, rgb(0, 0, 0) 120deg, rgba(0, 0, 0, 0.5) 240deg, transparent 360deg)`,\r\n mask: `radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)`,\r\n WebkitMask: `radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)`,\r\n opacity: 0.9,\r\n }}\r\n animate={{\r\n rotate: [0, 360],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n />\r\n\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full dark:block hidden\"\r\n style={{\r\n background: `conic-gradient(from 0deg, transparent 0deg, rgb(255, 255, 255) 90deg, transparent 180deg)`,\r\n mask: `radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)`,\r\n WebkitMask: `radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)`,\r\n opacity: 0.8,\r\n }}\r\n animate={{\r\n rotate: [0, 360],\r\n }}\r\n transition={{\r\n duration: 3,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full dark:block hidden\"\r\n style={{\r\n background: `conic-gradient(from 0deg, transparent 0deg, rgb(255, 255, 255) 120deg, rgba(255, 255, 255, 0.5) 240deg, transparent 360deg)`,\r\n mask: `radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)`,\r\n WebkitMask: `radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)`,\r\n opacity: 0.9,\r\n }}\r\n animate={{\r\n rotate: [0, 360],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n />\r\n </motion.div>\r\n\r\n <motion.div\r\n className={cn(\"text-center\", config.spacing, config.maxWidth)}\r\n initial={{ opacity: 0, y: 12 }}\r\n animate={{\r\n opacity: 1,\r\n y: 0,\r\n }}\r\n transition={{\r\n delay: 0.4,\r\n duration: 1,\r\n ease: [0.4, 0, 0.2, 1],\r\n }}\r\n >\r\n <motion.h1\r\n className={cn(\r\n config.titleClass,\r\n \"text-black/90 dark:text-white/90 font-medium tracking-[-0.02em] leading-[1.15] antialiased\"\r\n )}\r\n initial={{ opacity: 0, y: 12 }}\r\n animate={{\r\n opacity: 1,\r\n y: 0,\r\n }}\r\n transition={{\r\n delay: 0.6,\r\n duration: 0.8,\r\n ease: [0.4, 0, 0.2, 1],\r\n }}\r\n >\r\n <motion.span\r\n animate={{\r\n opacity: [0.9, 0.7, 0.9],\r\n }}\r\n transition={{\r\n duration: 3,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n >\r\n {title}\r\n </motion.span>\r\n </motion.h1>\r\n\r\n <motion.p\r\n className={cn(\r\n config.subtitleClass,\r\n \"text-black/60 dark:text-white/60 font-normal tracking-[-0.01em] leading-[1.45] antialiased\"\r\n )}\r\n initial={{ opacity: 0, y: 8 }}\r\n animate={{\r\n opacity: 1,\r\n y: 0,\r\n }}\r\n transition={{\r\n delay: 0.8,\r\n duration: 0.8,\r\n ease: [0.4, 0, 0.2, 1],\r\n }}\r\n >\r\n <motion.span\r\n animate={{\r\n opacity: [0.6, 0.4, 0.6],\r\n }}\r\n transition={{\r\n duration: 4,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n >\r\n {subtitle}\r\n </motion.span>\r\n </motion.p>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Loader;\r\n","\"use client\";\r\n\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface AnimatedThemeTogglerProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n onChange?: (isDark: boolean) => void;\r\n}\r\n\r\nexport function AnimatedThemeToggler({ \r\n className, \r\n size = \"md\",\r\n onChange \r\n}: AnimatedThemeTogglerProps) {\r\n const [isDark, setIsDark] = useState(false);\r\n\r\n useEffect(() => {\r\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\r\n setIsDark(prefersDark);\r\n }, []);\r\n\r\n const toggleTheme = () => {\r\n const newTheme = !isDark;\r\n setIsDark(newTheme);\r\n \r\n if (newTheme) {\r\n document.documentElement.classList.add(\"dark\");\r\n } else {\r\n document.documentElement.classList.remove(\"dark\");\r\n }\r\n \r\n onChange?.(newTheme);\r\n };\r\n\r\n const sizeClasses = {\r\n sm: \"w-12 h-6\",\r\n md: \"w-14 h-7\",\r\n lg: \"w-16 h-8\"\r\n };\r\n\r\n const iconSizes = {\r\n sm: \"w-4 h-4\",\r\n md: \"w-5 h-5\",\r\n lg: \"w-6 h-6\"\r\n };\r\n\r\n return (\r\n <motion.button\r\n onClick={toggleTheme}\r\n className={cn(\r\n \"relative rounded-full border transition-all duration-300 ease-in-out focus:outline-none focus:ring-2 focus:ring-zinc-500 focus:ring-offset-2 focus:ring-offset-zinc-900\",\r\n sizeClasses[size],\r\n isDark \r\n ? \"bg-zinc-800 border-zinc-700\" \r\n : \"bg-zinc-700 border-zinc-600\",\r\n className\r\n )}\r\n whileTap={{ scale: 0.95 }}\r\n initial={false}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full\"\r\n animate={{\r\n background: isDark \r\n ? \"linear-gradient(135deg, #27272a 0%, #18181b 100%)\"\r\n : \"linear-gradient(135deg, #3f3f46 0%, #27272a 100%)\"\r\n }}\r\n transition={{ duration: 0.3 }}\r\n />\r\n \r\n <motion.div\r\n className={cn(\r\n \"absolute top-0.5 rounded-full shadow-lg flex items-center justify-center\",\r\n size === \"sm\" ? \"w-5 h-5\" : size === \"md\" ? \"w-6 h-6\" : \"w-7 h-7\",\r\n isDark ? \"bg-zinc-300\" : \"bg-zinc-100\"\r\n )}\r\n animate={{\r\n x: isDark ? (size === \"sm\" ? 24 : size === \"md\" ? 28 : 32) : 2,\r\n }}\r\n transition={{\r\n type: \"spring\",\r\n stiffness: 500,\r\n damping: 30\r\n }}\r\n >\r\n <AnimatePresence mode=\"wait\">\r\n {isDark ? (\r\n <motion.svg\r\n key=\"moon\"\r\n className={cn(\"text-zinc-700\", iconSizes[size])}\r\n fill=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n initial={{ opacity: 0, rotate: -90 }}\r\n animate={{ opacity: 1, rotate: 0 }}\r\n exit={{ opacity: 0, rotate: 90 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n <path d=\"M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z\" />\r\n </motion.svg>\r\n ) : (\r\n <motion.svg\r\n key=\"sun\"\r\n className={cn(\"text-zinc-600\", iconSizes[size])}\r\n fill=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n initial={{ opacity: 0, rotate: -90 }}\r\n animate={{ opacity: 1, rotate: 0 }}\r\n exit={{ opacity: 0, rotate: 90 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n <path d=\"M12 2.25a.75.75 0 01.75.75v2.25a.75.75 0 01-1.5 0V3a.75.75 0 01.75-.75zM7.5 12a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0zM18.894 6.166a.75.75 0 00-1.06-1.06l-1.591 1.59a.75.75 0 101.06 1.061l1.591-1.59zM21.75 12a.75.75 0 01-.75.75h-2.25a.75.75 0 010-1.5H21a.75.75 0 01.75.75zM17.834 18.894a.75.75 0 001.06-1.06l-1.59-1.591a.75.75 0 10-1.061 1.06l1.59 1.591zM12 18a.75.75 0 01.75.75V21a.75.75 0 01-1.5 0v-2.25A.75.75 0 0112 18zM7.758 17.303a.75.75 0 00-1.061-1.06l-1.591 1.59a.75.75 0 001.06 1.061l1.591-1.59zM6 12a.75.75 0 01-.75.75H3a.75.75 0 010-1.5h2.25A.75.75 0 016 12zM6.697 7.757a.75.75 0 001.06-1.06l-1.59-1.591a.75.75 0 00-1.061 1.06l1.59 1.591z\" />\r\n </motion.svg>\r\n )}\r\n </AnimatePresence>\r\n </motion.div>\r\n \r\n <motion.div\r\n className=\"absolute inset-0 rounded-full opacity-20\"\r\n animate={{\r\n boxShadow: isDark \r\n ? \"0 0 20px rgba(161, 161, 170, 0.2)\" \r\n : \"0 0 20px rgba(161, 161, 170, 0.3)\"\r\n }}\r\n transition={{ duration: 0.3 }}\r\n />\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default AnimatedThemeToggler;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface ShimmerEffectProps {\r\n children?: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function ShimmerEffect({\r\n children,\r\n className,\r\n}: ShimmerEffectProps) {\r\n return (\r\n <div className={cn(\"relative w-full min-h-[500px] flex items-center justify-center overflow-hidden bg-white dark:bg-zinc-900 rounded-xl border border-zinc-200 dark:border-zinc-800\", className)}>\r\n <motion.div\r\n className=\"absolute inset-0\"\r\n style={{\r\n background: \"linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.08) 50%, transparent 100%)\",\r\n }}\r\n animate={{\r\n x: [\"-200%\", \"200%\"],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n \r\n <motion.div\r\n className=\"absolute inset-0\"\r\n style={{\r\n background: \"linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.05) 50%, transparent 100%)\",\r\n }}\r\n animate={{\r\n x: [\"-200%\", \"200%\"],\r\n }}\r\n transition={{\r\n duration: 3,\r\n delay: 0.5,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n \r\n <motion.div\r\n className=\"absolute inset-0\"\r\n style={{\r\n background: \"linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.03) 50%, transparent 100%)\",\r\n }}\r\n animate={{\r\n x: [\"-200%\", \"200%\"],\r\n }}\r\n transition={{\r\n duration: 3.5,\r\n delay: 1,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n \r\n <motion.div\r\n className=\"absolute inset-0 hidden dark:block\"\r\n style={{\r\n background: \"linear-gradient(90deg, transparent 0%, rgba(161,161,170,0.15) 50%, transparent 100%)\",\r\n }}\r\n animate={{\r\n x: [\"-200%\", \"200%\"],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n \r\n <div className=\"absolute inset-0 opacity-10 dark:opacity-5\" style={{\r\n backgroundImage: \"radial-gradient(circle at 2px 2px, #71717a 1px, transparent 0)\",\r\n backgroundSize: \"40px 40px\"\r\n }} />\r\n \r\n <div className=\"relative z-10 text-center px-8\">\r\n {children || (\r\n <motion.div\r\n initial={{ opacity: 0, y: 20 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.8 }}\r\n >\r\n <h2 className=\"text-7xl font-bold text-zinc-900 dark:text-zinc-100 mb-4 tracking-tight\" style={{\r\n fontFamily: \"system-ui, -apple-system, sans-serif\",\r\n letterSpacing: \"-0.02em\"\r\n }}>\r\n SHIMMER WAVE\r\n </h2>\r\n <p className=\"text-xl text-zinc-500 font-light tracking-wide\">\r\n Advanced Shimmer Effect\r\n </p>\r\n </motion.div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ShimmerEffect;\r\n","\"use client\";\r\n\r\nimport React, { useRef, useLayoutEffect, useState } from \"react\";\r\nimport {\r\n motion,\r\n useScroll,\r\n useSpring,\r\n useTransform,\r\n useMotionValue,\r\n useVelocity,\r\n useAnimationFrame\r\n} from \"framer-motion\";\r\n\r\ninterface VelocityMapping {\r\n input: [number, number];\r\n output: [number, number];\r\n}\r\n\r\ninterface ScrollVelocityProps {\r\n scrollContainerRef?: React.RefObject<HTMLElement>;\r\n texts?: string[];\r\n velocity?: number;\r\n className?: string;\r\n damping?: number;\r\n stiffness?: number;\r\n numCopies?: number;\r\n velocityMapping?: VelocityMapping;\r\n}\r\n\r\nfunction useElementWidth<T extends HTMLElement>(ref: React.RefObject<T | null>): number {\r\n const [width, setWidth] = useState(0);\r\n\r\n useLayoutEffect(() => {\r\n function updateWidth() {\r\n if (ref.current) {\r\n setWidth(ref.current.offsetWidth);\r\n }\r\n }\r\n updateWidth();\r\n window.addEventListener(\"resize\", updateWidth);\r\n return () => window.removeEventListener(\"resize\", updateWidth);\r\n }, [ref]);\r\n\r\n return width;\r\n}\r\n\r\nexport function ScrollVelocity({\r\n scrollContainerRef,\r\n texts = [\"Scroll Velocity\", \"Bynana UI\"],\r\n velocity = 100,\r\n className = \"\",\r\n damping = 50,\r\n stiffness = 400,\r\n numCopies = 6,\r\n velocityMapping = { input: [0, 1000], output: [0, 5] },\r\n}: ScrollVelocityProps) {\r\n function VelocityText({\r\n children,\r\n baseVelocity,\r\n }: {\r\n children: React.ReactNode;\r\n baseVelocity: number;\r\n }) {\r\n const baseX = useMotionValue(0);\r\n const scrollOptions = scrollContainerRef ? { container: scrollContainerRef } : {};\r\n const { scrollY } = useScroll(scrollOptions);\r\n const scrollVelocity = useVelocity(scrollY);\r\n const smoothVelocity = useSpring(scrollVelocity, { damping, stiffness });\r\n const velocityFactor = useTransform(\r\n smoothVelocity,\r\n velocityMapping.input,\r\n velocityMapping.output,\r\n { clamp: false }\r\n );\r\n\r\n const copyRef = useRef<HTMLSpanElement>(null);\r\n const copyWidth = useElementWidth(copyRef);\r\n\r\n function wrap(min: number, max: number, v: number): number {\r\n const range = max - min;\r\n const mod = (((v - min) % range) + range) % range;\r\n return mod + min;\r\n }\r\n\r\n const x = useTransform(baseX, v => {\r\n if (copyWidth === 0) return \"0px\";\r\n return `${wrap(-copyWidth, 0, v)}px`;\r\n });\r\n\r\n const directionFactor = useRef<number>(1);\r\n useAnimationFrame((t, delta) => {\r\n let moveBy = directionFactor.current * baseVelocity * (delta / 1000);\r\n if (velocityFactor.get() < 0) directionFactor.current = -1;\r\n else if (velocityFactor.get() > 0) directionFactor.current = 1;\r\n moveBy += directionFactor.current * moveBy * velocityFactor.get();\r\n baseX.set(baseX.get() + moveBy);\r\n });\r\n\r\n const spans = [];\r\n for (let i = 0; i < numCopies; i++) {\r\n spans.push(\r\n <span className={className} key={i} ref={i === 0 ? copyRef : null}>\r\n {children}\r\n </span>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"overflow-hidden whitespace-nowrap\">\r\n <motion.div className=\"flex\" style={{ x }}>\r\n {spans}\r\n </motion.div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <section>\r\n {texts.map((text, index) => (\r\n <VelocityText key={index} baseVelocity={index % 2 !== 0 ? -velocity : velocity}>\r\n {text} \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  - 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  - 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  - 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  - 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  - 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  - 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  - 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  - 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  - 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  - 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  - 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  - 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  - 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  - 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  - 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  - 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  - 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  - 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","\"use client\";\r\n\r\nimport { useState, useEffect, useRef } from \"react\";\r\n\r\ninterface MagnetProps {\r\n children: React.ReactNode;\r\n padding?: number;\r\n disabled?: boolean;\r\n magnetStrength?: number;\r\n activeTransition?: string;\r\n inactiveTransition?: string;\r\n wrapperClassName?: string;\r\n innerClassName?: string;\r\n}\r\n\r\nexport function Magnet({\r\n children,\r\n padding = 100,\r\n disabled = false,\r\n magnetStrength = 8,\r\n activeTransition = \"transform 0.8s ease-out\",\r\n inactiveTransition = \"transform 1.2s ease-in-out\",\r\n wrapperClassName = \"\",\r\n innerClassName = \"\",\r\n ...props\r\n}: MagnetProps & React.HTMLAttributes<HTMLDivElement>) {\r\n const [isActive, setIsActive] = useState(false);\r\n const [position, setPosition] = useState({ x: 0, y: 0 });\r\n const magnetRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (disabled) {\r\n setPosition({ x: 0, y: 0 });\r\n return;\r\n }\r\n\r\n const handleMouseMove = (e: MouseEvent) => {\r\n if (!magnetRef.current) return;\r\n\r\n const { left, top, width, height } =\r\n magnetRef.current.getBoundingClientRect();\r\n const centerX = left + width / 2;\r\n const centerY = top + height / 2;\r\n\r\n const distX = Math.abs(centerX - e.clientX);\r\n const distY = Math.abs(centerY - e.clientY);\r\n\r\n if (distX < width / 2 + padding && distY < height / 2 + padding) {\r\n setIsActive(true);\r\n\r\n const offsetX = (e.clientX - centerX) / magnetStrength;\r\n const offsetY = (e.clientY - centerY) / magnetStrength;\r\n setPosition({ x: offsetX, y: offsetY });\r\n } else {\r\n setIsActive(false);\r\n setPosition({ x: 0, y: 0 });\r\n }\r\n };\r\n\r\n window.addEventListener(\"mousemove\", handleMouseMove);\r\n return () => {\r\n window.removeEventListener(\"mousemove\", handleMouseMove);\r\n };\r\n }, [padding, disabled, magnetStrength]);\r\n\r\n const transitionStyle = isActive ? activeTransition : inactiveTransition;\r\n\r\n return (\r\n <div\r\n ref={magnetRef}\r\n className={wrapperClassName}\r\n style={{ position: \"relative\", display: \"inline-block\" }}\r\n {...props}\r\n >\r\n <div\r\n className={innerClassName}\r\n style={{\r\n transform: `translate3d(${position.x}px, ${position.y}px, 0)`,\r\n transition: transitionStyle,\r\n willChange: \"transform\",\r\n }}\r\n >\r\n {children}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Magnet;\r\n","\"use client\";\r\n\r\nimport {\r\n ElementType,\r\n useEffect,\r\n useRef,\r\n useState,\r\n createElement,\r\n useMemo,\r\n useCallback,\r\n} from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TextTypeProps {\r\n className?: string;\r\n showCursor?: boolean;\r\n hideCursorWhileTyping?: boolean;\r\n cursorCharacter?: string | React.ReactNode;\r\n cursorBlinkDuration?: number;\r\n cursorClassName?: string;\r\n text: string | string[];\r\n as?: ElementType;\r\n typingSpeed?: number;\r\n initialDelay?: number;\r\n pauseDuration?: number;\r\n deletingSpeed?: number;\r\n loop?: boolean;\r\n textColors?: string[];\r\n variableSpeed?: { min: number; max: number };\r\n onSentenceComplete?: (sentence: string, index: number) => void;\r\n startOnVisible?: boolean;\r\n reverseMode?: boolean;\r\n}\r\n\r\nexport function TextType({\r\n text,\r\n as: Component = \"div\",\r\n typingSpeed = 50,\r\n initialDelay = 0,\r\n pauseDuration = 2000,\r\n deletingSpeed = 30,\r\n loop = true,\r\n className = \"\",\r\n showCursor = true,\r\n hideCursorWhileTyping = false,\r\n cursorCharacter = \"|\",\r\n cursorClassName = \"\",\r\n cursorBlinkDuration = 0.5,\r\n textColors = [],\r\n variableSpeed,\r\n onSentenceComplete,\r\n startOnVisible = false,\r\n reverseMode = false,\r\n ...props\r\n}: TextTypeProps & React.HTMLAttributes<HTMLElement>) {\r\n const [displayedText, setDisplayedText] = useState(\"\");\r\n const [currentCharIndex, setCurrentCharIndex] = useState(0);\r\n const [isDeleting, setIsDeleting] = useState(false);\r\n const [currentTextIndex, setCurrentTextIndex] = useState(0);\r\n const [isVisible, setIsVisible] = useState(!startOnVisible);\r\n const [cursorVisible, setCursorVisible] = useState(true);\r\n const containerRef = useRef<HTMLElement>(null);\r\n\r\n const textArray = useMemo(\r\n () => (Array.isArray(text) ? text : [text]),\r\n [text]\r\n );\r\n\r\n const getRandomSpeed = useCallback(() => {\r\n if (!variableSpeed) return typingSpeed;\r\n const { min, max } = variableSpeed;\r\n return Math.random() * (max - min) + min;\r\n }, [variableSpeed, typingSpeed]);\r\n\r\n const getCurrentTextColor = () => {\r\n if (textColors.length === 0) return;\r\n return textColors[currentTextIndex % textColors.length];\r\n };\r\n\r\n useEffect(() => {\r\n if (!startOnVisible || !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 setIsVisible(true);\r\n }\r\n });\r\n },\r\n { threshold: 0.1 }\r\n );\r\n\r\n observer.observe(containerRef.current);\r\n return () => observer.disconnect();\r\n }, [startOnVisible]);\r\n\r\n useEffect(() => {\r\n if (showCursor) {\r\n const interval = setInterval(() => {\r\n setCursorVisible((prev) => !prev);\r\n }, cursorBlinkDuration * 1000);\r\n return () => clearInterval(interval);\r\n }\r\n }, [showCursor, cursorBlinkDuration]);\r\n\r\n useEffect(() => {\r\n if (!isVisible) return;\r\n\r\n let timeout: NodeJS.Timeout;\r\n\r\n const currentText = textArray[currentTextIndex];\r\n const processedText = reverseMode\r\n ? currentText.split(\"\").reverse().join(\"\")\r\n : currentText;\r\n\r\n const executeTypingAnimation = () => {\r\n if (isDeleting) {\r\n if (displayedText === \"\") {\r\n setIsDeleting(false);\r\n if (currentTextIndex === textArray.length - 1 && !loop) {\r\n return;\r\n }\r\n\r\n if (onSentenceComplete) {\r\n onSentenceComplete(textArray[currentTextIndex], currentTextIndex);\r\n }\r\n\r\n setCurrentTextIndex((prev) => (prev + 1) % textArray.length);\r\n setCurrentCharIndex(0);\r\n timeout = setTimeout(() => {}, pauseDuration);\r\n } else {\r\n timeout = setTimeout(() => {\r\n setDisplayedText((prev) => prev.slice(0, -1));\r\n }, deletingSpeed);\r\n }\r\n } else {\r\n if (currentCharIndex < processedText.length) {\r\n timeout = setTimeout(\r\n () => {\r\n setDisplayedText((prev) => prev + processedText[currentCharIndex]);\r\n setCurrentCharIndex((prev) => prev + 1);\r\n },\r\n variableSpeed ? getRandomSpeed() : typingSpeed\r\n );\r\n } else if (textArray.length > 1) {\r\n timeout = setTimeout(() => {\r\n setIsDeleting(true);\r\n }, pauseDuration);\r\n }\r\n }\r\n };\r\n\r\n if (currentCharIndex === 0 && !isDeleting && displayedText === \"\") {\r\n timeout = setTimeout(executeTypingAnimation, initialDelay);\r\n } else {\r\n executeTypingAnimation();\r\n }\r\n\r\n return () => clearTimeout(timeout);\r\n }, [\r\n currentCharIndex,\r\n displayedText,\r\n isDeleting,\r\n typingSpeed,\r\n deletingSpeed,\r\n pauseDuration,\r\n textArray,\r\n currentTextIndex,\r\n loop,\r\n initialDelay,\r\n isVisible,\r\n reverseMode,\r\n variableSpeed,\r\n onSentenceComplete,\r\n getRandomSpeed,\r\n ]);\r\n\r\n const shouldHideCursor =\r\n hideCursorWhileTyping &&\r\n (currentCharIndex < textArray[currentTextIndex].length || isDeleting);\r\n\r\n return createElement(\r\n Component,\r\n {\r\n ref: containerRef,\r\n className: cn(\"inline-flex\", className),\r\n ...props,\r\n },\r\n <span style={{ color: getCurrentTextColor() || \"inherit\" }}>\r\n {displayedText}\r\n </span>,\r\n showCursor && (\r\n <span\r\n className={cn(\r\n \"transition-opacity\",\r\n cursorClassName,\r\n shouldHideCursor && \"opacity-0\",\r\n !cursorVisible && \"opacity-0\"\r\n )}\r\n >\r\n {cursorCharacter}\r\n </span>\r\n )\r\n );\r\n}\r\n\r\nexport default TextType;\r\n","\"use client\";\r\n\r\nimport { useState, useEffect } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface AIVoiceProps {\r\n className?: string;\r\n autoDemo?: boolean;\r\n onListeningChange?: (isListening: boolean) => void;\r\n}\r\n\r\nconst MicIcon = ({ className }: { className?: string }) => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n className={className}\r\n >\r\n <path d=\"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z\" />\r\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\" />\r\n <line x1=\"12\" x2=\"12\" y1=\"19\" y2=\"22\" />\r\n </svg>\r\n);\r\n\r\nexport function AIVoice({\r\n className,\r\n autoDemo = true,\r\n onListeningChange,\r\n}: AIVoiceProps) {\r\n const [submitted, setSubmitted] = useState(false);\r\n const [time, setTime] = useState(0);\r\n const [isClient, setIsClient] = useState(false);\r\n const [isDemo, setIsDemo] = useState(autoDemo);\r\n\r\n useEffect(() => {\r\n setIsClient(true);\r\n }, []);\r\n\r\n useEffect(() => {\r\n let intervalId: NodeJS.Timeout;\r\n\r\n if (submitted) {\r\n intervalId = setInterval(() => {\r\n setTime((t) => t + 1);\r\n }, 1000);\r\n } else {\r\n setTime(0);\r\n }\r\n\r\n return () => clearInterval(intervalId);\r\n }, [submitted]);\r\n\r\n useEffect(() => {\r\n onListeningChange?.(submitted);\r\n }, [submitted, onListeningChange]);\r\n\r\n const formatTime = (seconds: number) => {\r\n const mins = Math.floor(seconds / 60);\r\n const secs = seconds % 60;\r\n return `${mins.toString().padStart(2, \"0\")}:${secs.toString().padStart(2, \"0\")}`;\r\n };\r\n\r\n useEffect(() => {\r\n if (!isDemo) return;\r\n\r\n let timeoutId: NodeJS.Timeout;\r\n const runAnimation = () => {\r\n setSubmitted(true);\r\n timeoutId = setTimeout(() => {\r\n setSubmitted(false);\r\n timeoutId = setTimeout(runAnimation, 1000);\r\n }, 3000);\r\n };\r\n\r\n const initialTimeout = setTimeout(runAnimation, 100);\r\n return () => {\r\n clearTimeout(timeoutId);\r\n clearTimeout(initialTimeout);\r\n };\r\n }, [isDemo]);\r\n\r\n const handleClick = () => {\r\n if (isDemo) {\r\n setIsDemo(false);\r\n setSubmitted(false);\r\n } else {\r\n setSubmitted((prev) => !prev);\r\n }\r\n };\r\n\r\n return (\r\n <div className={cn(\"w-full py-4\", className)}>\r\n <div className=\"relative max-w-xl w-full mx-auto flex items-center flex-col gap-2\">\r\n <button\r\n className={cn(\r\n \"group w-16 h-16 rounded-xl flex items-center justify-center transition-colors\",\r\n submitted\r\n ? \"bg-none\"\r\n : \"bg-none hover:bg-black/5 dark:hover:bg-white/5\"\r\n )}\r\n type=\"button\"\r\n onClick={handleClick}\r\n >\r\n {submitted ? (\r\n <div\r\n className=\"w-6 h-6 rounded-sm animate-spin bg-black dark:bg-white cursor-pointer pointer-events-auto\"\r\n style={{ animationDuration: \"3s\" }}\r\n />\r\n ) : (\r\n <MicIcon className=\"w-6 h-6 text-black/90 dark:text-white/90\" />\r\n )}\r\n </button>\r\n\r\n <span\r\n className={cn(\r\n \"font-mono text-sm transition-opacity duration-300\",\r\n submitted\r\n ? \"text-black/70 dark:text-white/70\"\r\n : \"text-black/30 dark:text-white/30\"\r\n )}\r\n >\r\n {formatTime(time)}\r\n </span>\r\n\r\n <div className=\"h-4 w-64 flex items-center justify-center gap-0.5\">\r\n {[...Array(48)].map((_, i) => (\r\n <div\r\n key={i}\r\n className={cn(\r\n \"w-0.5 rounded-full transition-all duration-300\",\r\n submitted\r\n ? \"bg-black/50 dark:bg-white/50 animate-pulse\"\r\n : \"bg-black/10 dark:bg-white/10 h-1\"\r\n )}\r\n style={\r\n submitted && isClient\r\n ? {\r\n height: `${20 + Math.random() * 80}%`,\r\n animationDelay: `${i * 0.05}s`,\r\n }\r\n : undefined\r\n }\r\n />\r\n ))}\r\n </div>\r\n\r\n <p className=\"h-4 text-xs text-black/70 dark:text-white/70\">\r\n {submitted ? \"Listening...\" : \"Click to speak\"}\r\n </p>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default AIVoice;\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FolderProps {\r\n color?: string;\r\n size?: number;\r\n items?: React.ReactNode[];\r\n className?: string;\r\n}\r\n\r\nconst darkenColor = (hex: string, percent: number): string => {\r\n let color = hex.startsWith(\"#\") ? hex.slice(1) : hex;\r\n if (color.length === 3) {\r\n color = color\r\n .split(\"\")\r\n .map((c) => c + c)\r\n .join(\"\");\r\n }\r\n const num = parseInt(color, 16);\r\n let r = (num >> 16) & 0xff;\r\n let g = (num >> 8) & 0xff;\r\n let b = num & 0xff;\r\n r = Math.max(0, Math.min(255, Math.floor(r * (1 - percent))));\r\n g = Math.max(0, Math.min(255, Math.floor(g * (1 - percent))));\r\n b = Math.max(0, Math.min(255, Math.floor(b * (1 - percent))));\r\n return (\r\n \"#\" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1).toUpperCase()\r\n );\r\n};\r\n\r\nexport function Folder({\r\n color = \"#18181b\",\r\n size = 1,\r\n items = [],\r\n className = \"\",\r\n}: FolderProps) {\r\n const maxItems = 3;\r\n const papers = items.slice(0, maxItems);\r\n while (papers.length < maxItems) {\r\n papers.push(null);\r\n }\r\n\r\n const [open, setOpen] = useState(false);\r\n const [paperOffsets, setPaperOffsets] = useState<{ x: number; y: number }[]>(\r\n Array.from({ length: maxItems }, () => ({ x: 0, y: 0 }))\r\n );\r\n\r\n const folderBackColor = darkenColor(color, 0.08);\r\n\r\n const handleClick = () => {\r\n setOpen((prev) => !prev);\r\n if (open) {\r\n setPaperOffsets(\r\n Array.from({ length: maxItems }, () => ({ x: 0, y: 0 }))\r\n );\r\n }\r\n };\r\n\r\n const handlePaperMouseMove = (\r\n e: React.MouseEvent<HTMLDivElement>,\r\n index: number\r\n ) => {\r\n if (!open) return;\r\n const rect = e.currentTarget.getBoundingClientRect();\r\n const offsetX = (e.clientX - (rect.left + rect.width / 2)) * 0.15;\r\n const offsetY = (e.clientY - (rect.top + rect.height / 2)) * 0.15;\r\n setPaperOffsets((prev) => {\r\n const newOffsets = [...prev];\r\n newOffsets[index] = { x: offsetX, y: offsetY };\r\n return newOffsets;\r\n });\r\n };\r\n\r\n const handlePaperMouseLeave = (index: number) => {\r\n setPaperOffsets((prev) => {\r\n const newOffsets = [...prev];\r\n newOffsets[index] = { x: 0, y: 0 };\r\n return newOffsets;\r\n });\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\"relative cursor-pointer\", className)}\r\n style={{ transform: `scale(${size})` }}\r\n >\r\n <div\r\n className={cn(\r\n \"relative w-32 h-24 transition-all duration-300\",\r\n open && \"transform -translate-y-2\"\r\n )}\r\n onClick={handleClick}\r\n >\r\n {/* Folder back */}\r\n <div\r\n className=\"absolute inset-0 rounded-lg\"\r\n style={{ backgroundColor: folderBackColor }}\r\n >\r\n {/* Papers */}\r\n {papers.map((item, i) => (\r\n <div\r\n key={i}\r\n className={cn(\r\n \"absolute left-1/2 -translate-x-1/2 w-[85%] h-[70%] rounded-md transition-all duration-300\",\r\n open ? \"opacity-100\" : \"opacity-0\"\r\n )}\r\n onMouseMove={(e) => handlePaperMouseMove(e, i)}\r\n onMouseLeave={() => handlePaperMouseLeave(i)}\r\n style={{\r\n backgroundColor: i === 0 ? \"#f4f4f5\" : i === 1 ? \"#fafafa\" : \"#ffffff\",\r\n bottom: open ? `${60 + i * 20}%` : \"50%\",\r\n transform: open\r\n ? `translateX(calc(-50% + ${paperOffsets[i]?.x || 0}px)) translateY(${paperOffsets[i]?.y || 0}px) rotate(${(i - 1) * 3}deg)`\r\n : \"translateX(-50%)\",\r\n zIndex: 3 - i,\r\n }}\r\n >\r\n {item}\r\n </div>\r\n ))}\r\n </div>\r\n\r\n {/* Folder front */}\r\n <div\r\n className={cn(\r\n \"absolute bottom-0 left-0 right-0 h-[75%] rounded-lg transition-all duration-300\",\r\n open && \"transform translate-y-1\"\r\n )}\r\n style={{ backgroundColor: color }}\r\n >\r\n {/* Folder tab */}\r\n <div\r\n className=\"absolute -top-3 left-2 w-8 h-4 rounded-t-md\"\r\n style={{ backgroundColor: color }}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Folder;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\nconst StarIcon = ({ filled, className }: { filled: boolean; className?: string }) => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill={filled ? \"currentColor\" : \"none\"}\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n className={className}\r\n >\r\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\" />\r\n </svg>\r\n);\r\n\r\nexport interface TestimonialItem {\r\n content: string;\r\n avatar: string;\r\n name: string;\r\n role: string;\r\n stars?: number;\r\n}\r\n\r\ninterface TestimonialsStarsProps {\r\n className?: string;\r\n title?: string;\r\n description?: string;\r\n testimonials?: TestimonialItem[];\r\n}\r\n\r\nconst defaultTestimonials: TestimonialItem[] = [\r\n {\r\n content:\r\n \"This UI library has revolutionized how we build user interfaces. The animations are buttery smooth and the developer experience is incredible.\",\r\n avatar: \"https://i.pravatar.cc/150?img=1\",\r\n name: \"Eduardo Calvo\",\r\n role: \"CEO & Founder\",\r\n stars: 5,\r\n },\r\n {\r\n content:\r\n \"The design system is incredibly well thought out. Every component feels intentional and polished.\",\r\n avatar: \"https://i.pravatar.cc/150?img=2\",\r\n name: \"Drew Cano\",\r\n role: \"Head of Design\",\r\n stars: 5,\r\n },\r\n {\r\n content:\r\n \"Best UI library I've used. The TypeScript support is excellent and the components are highly customizable.\",\r\n avatar: \"https://i.pravatar.cc/150?img=3\",\r\n name: \"Marcus Johnson\",\r\n role: \"Lead Developer\",\r\n stars: 5,\r\n },\r\n {\r\n content:\r\n \"Our users love the smooth interactions. It's made our product feel premium and professional.\",\r\n avatar: \"https://i.pravatar.cc/150?img=4\",\r\n name: \"Emily Rodriguez\",\r\n role: \"Product Manager\",\r\n stars: 4,\r\n },\r\n];\r\n\r\nexport function TestimonialsStars({\r\n className = \"\",\r\n title = \"Developer Reviews\",\r\n description = \"See what the community is saying. Real feedback from developers building amazing user experiences.\",\r\n testimonials = defaultTestimonials,\r\n}: TestimonialsStarsProps) {\r\n return (\r\n <div className={cn(\"min-h-[400px] w-full py-24\", className)}>\r\n <div className=\"container mx-auto w-full max-w-5xl px-6\">\r\n <div className=\"mb-12\">\r\n <h2 className=\"text-zinc-900 dark:text-zinc-100 text-4xl font-semibold\">\r\n {title}\r\n </h2>\r\n <p className=\"text-zinc-600 dark:text-zinc-500 my-4 text-lg text-balance\">\r\n {description}\r\n </p>\r\n </div>\r\n\r\n <div className=\"grid gap-6 lg:grid-cols-2\">\r\n {testimonials.map((testimonial) => (\r\n <div\r\n key={testimonial.name}\r\n className=\"group hover:bg-zinc-50 dark:hover:bg-zinc-950 hover:border-zinc-400 dark:hover:border-zinc-700 rounded-2xl border border-zinc-300 dark:border-zinc-800 bg-white dark:bg-zinc-950 px-4 py-3 duration-200 transition-all hover:-translate-y-1\"\r\n >\r\n <div className=\"flex gap-1\">\r\n {Array.from({ length: 5 }).map((_, i) => (\r\n <StarIcon\r\n key={`${testimonial.name}-star-${i}`}\r\n filled={i < (testimonial.stars || 0)}\r\n className={cn(\r\n \"size-4 transition-colors duration-200\",\r\n i < (testimonial.stars || 0)\r\n ? \"fill-pink-400 stroke-pink-400\"\r\n : \"fill-zinc-300 dark:fill-zinc-700 stroke-zinc-400 dark:stroke-zinc-600\"\r\n )}\r\n />\r\n ))}\r\n </div>\r\n\r\n <p className=\"text-zinc-900 dark:text-zinc-100 my-4\">\r\n {testimonial.content}\r\n </p>\r\n\r\n <div className=\"flex items-center gap-2\">\r\n <img\r\n src={testimonial.avatar}\r\n alt={testimonial.name}\r\n className=\"size-6 rounded-full border border-zinc-300 dark:border-zinc-700 object-cover\"\r\n />\r\n <div className=\"text-zinc-900 dark:text-zinc-100 text-sm font-medium\">\r\n {testimonial.name}\r\n </div>\r\n <span\r\n aria-hidden\r\n className=\"bg-zinc-400 dark:bg-zinc-600 size-1 rounded-full\"\r\n />\r\n <span className=\"text-zinc-500 text-sm\">{testimonial.role}</span>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default TestimonialsStars;\r\n","\"use client\";\r\n\r\nimport {\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n useState,\r\n memo,\r\n} from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nconst ANIMATION_CONFIG = {\r\n SMOOTH_TAU: 0.25,\r\n MIN_COPIES: 2,\r\n COPY_HEADROOM: 2,\r\n};\r\n\r\ninterface LogoItem {\r\n node?: React.ReactNode;\r\n src?: string;\r\n srcSet?: string;\r\n sizes?: string;\r\n width?: number;\r\n height?: number;\r\n alt?: string;\r\n title?: string;\r\n href?: string;\r\n ariaLabel?: string;\r\n}\r\n\r\ninterface LogoLoopProps {\r\n logos: LogoItem[];\r\n speed?: number;\r\n direction?: \"left\" | \"right\";\r\n width?: string | number;\r\n logoHeight?: number;\r\n gap?: number;\r\n pauseOnHover?: boolean;\r\n fadeOut?: boolean;\r\n fadeOutColor?: string;\r\n scaleOnHover?: boolean;\r\n ariaLabel?: string;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport const LogoLoop = memo<LogoLoopProps>(\r\n ({\r\n logos,\r\n speed = 120,\r\n direction = \"left\",\r\n width = \"100%\",\r\n logoHeight = 28,\r\n gap = 32,\r\n pauseOnHover = true,\r\n fadeOut = false,\r\n fadeOutColor,\r\n scaleOnHover = false,\r\n ariaLabel = \"Partner logos\",\r\n className,\r\n style,\r\n }) => {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const trackRef = useRef<HTMLDivElement>(null);\r\n const seqRef = useRef<HTMLUListElement>(null);\r\n\r\n const [seqWidth, setSeqWidth] = useState<number>(0);\r\n const [copyCount, setCopyCount] = useState<number>(ANIMATION_CONFIG.MIN_COPIES);\r\n const [isHovered, setIsHovered] = useState<boolean>(false);\r\n\r\n const targetVelocity = useMemo(() => {\r\n const magnitude = Math.abs(speed);\r\n const directionMultiplier = direction === \"left\" ? 1 : -1;\r\n const speedMultiplier = speed < 0 ? -1 : 1;\r\n return magnitude * directionMultiplier * speedMultiplier;\r\n }, [speed, direction]);\r\n\r\n const updateDimensions = useCallback(() => {\r\n const containerWidth = containerRef.current?.clientWidth ?? 0;\r\n const sequenceWidth = seqRef.current?.getBoundingClientRect?.()?.width ?? 0;\r\n\r\n if (sequenceWidth > 0) {\r\n setSeqWidth(Math.ceil(sequenceWidth));\r\n const copiesNeeded =\r\n Math.ceil(containerWidth / sequenceWidth) + ANIMATION_CONFIG.COPY_HEADROOM;\r\n setCopyCount(Math.max(ANIMATION_CONFIG.MIN_COPIES, copiesNeeded));\r\n }\r\n }, []);\r\n\r\n // Resize observer\r\n useEffect(() => {\r\n if (!window.ResizeObserver) {\r\n const handleResize = () => updateDimensions();\r\n window.addEventListener(\"resize\", handleResize);\r\n updateDimensions();\r\n return () => window.removeEventListener(\"resize\", handleResize);\r\n }\r\n\r\n const observers: ResizeObserver[] = [];\r\n [containerRef, seqRef].forEach((ref) => {\r\n if (ref.current) {\r\n const observer = new ResizeObserver(updateDimensions);\r\n observer.observe(ref.current);\r\n observers.push(observer);\r\n }\r\n });\r\n\r\n updateDimensions();\r\n\r\n return () => {\r\n observers.forEach((observer) => observer.disconnect());\r\n };\r\n }, [updateDimensions, logos, gap, logoHeight]);\r\n\r\n // Image loader\r\n useEffect(() => {\r\n const images = seqRef.current?.querySelectorAll(\"img\") ?? [];\r\n\r\n if (images.length === 0) {\r\n updateDimensions();\r\n return;\r\n }\r\n\r\n let remainingImages = images.length;\r\n const handleImageLoad = () => {\r\n remainingImages -= 1;\r\n if (remainingImages === 0) {\r\n updateDimensions();\r\n }\r\n };\r\n\r\n images.forEach((img) => {\r\n const htmlImg = img as HTMLImageElement;\r\n if (htmlImg.complete) {\r\n handleImageLoad();\r\n } else {\r\n htmlImg.addEventListener(\"load\", handleImageLoad, { once: true });\r\n htmlImg.addEventListener(\"error\", handleImageLoad, { once: true });\r\n }\r\n });\r\n\r\n return () => {\r\n images.forEach((img) => {\r\n img.removeEventListener(\"load\", handleImageLoad);\r\n img.removeEventListener(\"error\", handleImageLoad);\r\n });\r\n };\r\n }, [logos, gap, logoHeight, updateDimensions]);\r\n\r\n // Animation loop\r\n useEffect(() => {\r\n const track = trackRef.current;\r\n if (!track) return;\r\n\r\n let rafId: number | null = null;\r\n let lastTimestamp: number | null = null;\r\n let offset = 0;\r\n let velocity = 0;\r\n\r\n if (seqWidth > 0) {\r\n offset = ((offset % seqWidth) + seqWidth) % seqWidth;\r\n track.style.transform = `translate3d(${-offset}px, 0, 0)`;\r\n }\r\n\r\n const animate = (timestamp: number) => {\r\n if (lastTimestamp === null) {\r\n lastTimestamp = timestamp;\r\n }\r\n\r\n const deltaTime = Math.max(0, timestamp - lastTimestamp) / 1000;\r\n lastTimestamp = timestamp;\r\n\r\n const target = pauseOnHover && isHovered ? 0 : targetVelocity;\r\n\r\n const easingFactor = 1 - Math.exp(-deltaTime / ANIMATION_CONFIG.SMOOTH_TAU);\r\n velocity += (target - velocity) * easingFactor;\r\n\r\n if (seqWidth > 0) {\r\n let nextOffset = offset + velocity * deltaTime;\r\n nextOffset = ((nextOffset % seqWidth) + seqWidth) % seqWidth;\r\n offset = nextOffset;\r\n\r\n const translateX = -offset;\r\n track.style.transform = `translate3d(${translateX}px, 0, 0)`;\r\n }\r\n\r\n rafId = requestAnimationFrame(animate);\r\n };\r\n\r\n rafId = requestAnimationFrame(animate);\r\n\r\n return () => {\r\n if (rafId !== null) {\r\n cancelAnimationFrame(rafId);\r\n }\r\n };\r\n }, [targetVelocity, seqWidth, isHovered, pauseOnHover]);\r\n\r\n const handleMouseEnter = useCallback(() => {\r\n if (pauseOnHover) setIsHovered(true);\r\n }, [pauseOnHover]);\r\n\r\n const handleMouseLeave = useCallback(() => {\r\n if (pauseOnHover) setIsHovered(false);\r\n }, [pauseOnHover]);\r\n\r\n const renderLogoItem = useCallback((item: LogoItem, key: string) => {\r\n const isNodeItem = \"node\" in item && item.node;\r\n\r\n const content = isNodeItem ? (\r\n <span aria-hidden={!!item.href && !item.ariaLabel}>{item.node}</span>\r\n ) : (\r\n <img\r\n src={item.src}\r\n srcSet={item.srcSet}\r\n sizes={item.sizes}\r\n width={item.width}\r\n height={item.height}\r\n alt={item.alt ?? \"\"}\r\n title={item.title}\r\n loading=\"lazy\"\r\n decoding=\"async\"\r\n draggable={false}\r\n style={{ height: logoHeight, width: \"auto\" }}\r\n />\r\n );\r\n\r\n const itemAriaLabel = isNodeItem\r\n ? item.ariaLabel ?? item.title\r\n : item.alt ?? item.title;\r\n\r\n const itemContent = item.href ? (\r\n <a\r\n href={item.href}\r\n aria-label={itemAriaLabel || \"logo link\"}\r\n target=\"_blank\"\r\n rel=\"noreferrer noopener\"\r\n className={cn(scaleOnHover && \"transition-transform hover:scale-110\")}\r\n >\r\n {content}\r\n </a>\r\n ) : (\r\n <span className={cn(scaleOnHover && \"transition-transform hover:scale-110\")}>\r\n {content}\r\n </span>\r\n );\r\n\r\n return (\r\n <li\r\n key={key}\r\n role=\"listitem\"\r\n className=\"flex-shrink-0\"\r\n style={{ marginRight: gap }}\r\n >\r\n {itemContent}\r\n </li>\r\n );\r\n }, [gap, logoHeight, scaleOnHover]);\r\n\r\n const logoLists = useMemo(\r\n () =>\r\n Array.from({ length: copyCount }, (_, copyIndex) => (\r\n <ul\r\n key={`copy-${copyIndex}`}\r\n role=\"list\"\r\n aria-hidden={copyIndex > 0}\r\n ref={copyIndex === 0 ? seqRef : undefined}\r\n className=\"flex items-center\"\r\n style={{ height: logoHeight }}\r\n >\r\n {logos.map((item, itemIndex) =>\r\n renderLogoItem(item, `${copyIndex}-${itemIndex}`)\r\n )}\r\n </ul>\r\n )),\r\n [copyCount, logos, renderLogoItem, logoHeight]\r\n );\r\n\r\n const containerStyle = useMemo(\r\n () => ({\r\n width: typeof width === \"number\" ? `${width}px` : width,\r\n ...style,\r\n }),\r\n [width, style]\r\n );\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={cn(\r\n \"relative overflow-hidden\",\r\n fadeOut &&\r\n \"before:absolute before:left-0 before:top-0 before:bottom-0 before:w-24 before:bg-gradient-to-r before:from-white before:to-transparent before:z-10 after:absolute after:right-0 after:top-0 after:bottom-0 after:w-24 after:bg-gradient-to-l after:from-white after:to-transparent after:z-10 dark:before:from-black dark:after:from-black\",\r\n className\r\n )}\r\n style={containerStyle}\r\n role=\"region\"\r\n aria-label={ariaLabel}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n >\r\n <div ref={trackRef} className=\"flex will-change-transform\">\r\n {logoLists}\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nLogoLoop.displayName = \"LogoLoop\";\r\n\r\nexport default LogoLoop;\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\n\r\nexport interface FloatingPathsProps {\r\n position?: number;\r\n className?: string;\r\n}\r\n\r\nexport function FloatingPaths({ position = 1, className }: FloatingPathsProps) {\r\n const paths = Array.from({ length: 36 }, (_, i) => ({\r\n id: i,\r\n d: `M-${380 - i * 5 * position} -${189 + i * 6}C-${\r\n 380 - i * 5 * position\r\n } -${189 + i * 6} -${312 - i * 5 * position} ${216 - i * 6} ${\r\n 152 - i * 5 * position\r\n } ${343 - i * 6}C${616 - i * 5 * position} ${470 - i * 6} ${\r\n 684 - i * 5 * position\r\n } ${875 - i * 6} ${684 - i * 5 * position} ${875 - i * 6}`,\r\n color: `rgba(15,23,42,${0.1 + i * 0.03})`,\r\n width: 0.5 + i * 0.03,\r\n }));\r\n\r\n return (\r\n <div className={`pointer-events-none absolute inset-0 ${className || \"\"}`}>\r\n <svg\r\n className=\"h-full w-full text-slate-950 dark:text-white\"\r\n fill=\"none\"\r\n viewBox=\"0 0 696 316\"\r\n >\r\n <title>Background Paths</title>\r\n {paths.map((path) => (\r\n <motion.path\r\n animate={{\r\n pathLength: 1,\r\n opacity: [0.3, 0.6, 0.3],\r\n pathOffset: [0, 1, 0],\r\n }}\r\n d={path.d}\r\n initial={{ pathLength: 0.3, opacity: 0.6 }}\r\n key={path.id}\r\n stroke=\"currentColor\"\r\n strokeOpacity={0.1 + path.id * 0.03}\r\n strokeWidth={path.width}\r\n transition={{\r\n duration: 20 + Math.random() * 10,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n ))}\r\n </svg>\r\n </div>\r\n );\r\n}\r\n\r\nexport default FloatingPaths;\r\n","\"use client\";\r\n\r\nimport { memo, useMemo } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\ninterface Point {\r\n x: number;\r\n y: number;\r\n}\r\n\r\ninterface PathData {\r\n id: string;\r\n d: string;\r\n opacity: number;\r\n width: number;\r\n duration: number;\r\n delay: number;\r\n}\r\n\r\nfunction generateAestheticPath(\r\n index: number,\r\n position: number,\r\n type: \"primary\" | \"secondary\" | \"accent\"\r\n): string {\r\n const baseAmplitude =\r\n type === \"primary\" ? 150 : type === \"secondary\" ? 100 : 60;\r\n const phase = index * 0.2;\r\n const points: Point[] = [];\r\n const segments = type === \"primary\" ? 10 : type === \"secondary\" ? 8 : 6;\r\n\r\n const startX = 2400;\r\n const startY = 800;\r\n const endX = -2400;\r\n const endY = -800 + index * 25;\r\n\r\n for (let i = 0; i <= segments; i++) {\r\n const progress = i / segments;\r\n const eased = 1 - (1 - progress) ** 2;\r\n\r\n const baseX = startX + (endX - startX) * eased;\r\n const baseY = startY + (endY - startY) * eased;\r\n\r\n const amplitudeFactor = 1 - eased * 0.3;\r\n const wave1 =\r\n Math.sin(progress * Math.PI * 3 + phase) *\r\n (baseAmplitude * 0.7 * amplitudeFactor);\r\n const wave2 =\r\n Math.cos(progress * Math.PI * 4 + phase) *\r\n (baseAmplitude * 0.3 * amplitudeFactor);\r\n const wave3 =\r\n Math.sin(progress * Math.PI * 2 + phase) *\r\n (baseAmplitude * 0.2 * amplitudeFactor);\r\n\r\n points.push({\r\n x: baseX * position,\r\n y: baseY + wave1 + wave2 + wave3,\r\n });\r\n }\r\n\r\n const pathCommands = points.map((point: Point, i: number) => {\r\n if (i === 0) return `M ${point.x} ${point.y}`;\r\n const prevPoint = points[i - 1];\r\n const tension = 0.4;\r\n const cp1x = prevPoint.x + (point.x - prevPoint.x) * tension;\r\n const cp1y = prevPoint.y;\r\n const cp2x = prevPoint.x + (point.x - prevPoint.x) * (1 - tension);\r\n const cp2y = point.y;\r\n return `C ${cp1x} ${cp1y}, ${cp2x} ${cp2y}, ${point.x} ${point.y}`;\r\n });\r\n\r\n return pathCommands.join(\" \");\r\n}\r\n\r\nconst generateUniqueId = (prefix: string): string =>\r\n `${prefix}-${Math.random().toString(36).substr(2, 9)}`;\r\n\r\nconst FloatingPaths = memo(function FloatingPaths({\r\n position,\r\n}: {\r\n position: number;\r\n}) {\r\n const primaryPaths: PathData[] = useMemo(\r\n () =>\r\n Array.from({ length: 12 }, (_, i) => ({\r\n id: generateUniqueId(\"primary\"),\r\n d: generateAestheticPath(i, position, \"primary\"),\r\n opacity: 0.15 + i * 0.02,\r\n width: 4 + i * 0.3,\r\n duration: 25,\r\n delay: 0,\r\n })),\r\n [position]\r\n );\r\n\r\n const secondaryPaths: PathData[] = useMemo(\r\n () =>\r\n Array.from({ length: 15 }, (_, i) => ({\r\n id: generateUniqueId(\"secondary\"),\r\n d: generateAestheticPath(i, position, \"secondary\"),\r\n opacity: 0.12 + i * 0.015,\r\n width: 3 + i * 0.25,\r\n duration: 20,\r\n delay: 0,\r\n })),\r\n [position]\r\n );\r\n\r\n const accentPaths: PathData[] = useMemo(\r\n () =>\r\n Array.from({ length: 10 }, (_, i) => ({\r\n id: generateUniqueId(\"accent\"),\r\n d: generateAestheticPath(i, position, \"accent\"),\r\n opacity: 0.08 + i * 0.12,\r\n width: 2 + i * 0.2,\r\n duration: 15,\r\n delay: 0,\r\n })),\r\n [position]\r\n );\r\n\r\n const sharedAnimationProps = {\r\n opacity: 1,\r\n scale: 1,\r\n transition: {\r\n opacity: { duration: 1 },\r\n scale: { duration: 1 },\r\n },\r\n };\r\n\r\n return (\r\n <div className=\"absolute inset-0 pointer-events-none overflow-hidden\">\r\n <svg\r\n className=\"w-full h-full text-slate-950/40 dark:text-white/40\"\r\n viewBox=\"-2400 -800 4800 1600\"\r\n fill=\"none\"\r\n preserveAspectRatio=\"xMidYMid slice\"\r\n >\r\n <title>Background Paths</title>\r\n <defs>\r\n <linearGradient\r\n id=\"sharedGradient\"\r\n x1=\"0%\"\r\n y1=\"0%\"\r\n x2=\"100%\"\r\n y2=\"0%\"\r\n >\r\n <stop offset=\"0%\" stopColor=\"rgba(147, 51, 234, 0.5)\" />\r\n <stop offset=\"50%\" stopColor=\"rgba(236, 72, 153, 0.5)\" />\r\n <stop offset=\"100%\" stopColor=\"rgba(59, 130, 246, 0.5)\" />\r\n </linearGradient>\r\n </defs>\r\n\r\n <g className=\"primary-waves\">\r\n {primaryPaths.map((path) => (\r\n <motion.path\r\n key={path.id}\r\n d={path.d}\r\n stroke=\"url(#sharedGradient)\"\r\n strokeWidth={path.width}\r\n strokeLinecap=\"round\"\r\n initial={{ opacity: 0, scale: 0.8 }}\r\n animate={{\r\n ...sharedAnimationProps,\r\n y: [0, -15, 0],\r\n }}\r\n transition={{\r\n ...sharedAnimationProps.transition,\r\n y: {\r\n duration: 8,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n repeatType: \"reverse\",\r\n },\r\n }}\r\n style={{ opacity: path.opacity }}\r\n />\r\n ))}\r\n </g>\r\n\r\n <g className=\"secondary-waves\" style={{ opacity: 0.8 }}>\r\n {secondaryPaths.map((path) => (\r\n <motion.path\r\n key={path.id}\r\n d={path.d}\r\n stroke=\"url(#sharedGradient)\"\r\n strokeWidth={path.width}\r\n strokeLinecap=\"round\"\r\n initial={{ opacity: 0, scale: 0.9 }}\r\n animate={{\r\n ...sharedAnimationProps,\r\n y: [0, -10, 0],\r\n }}\r\n transition={{\r\n ...sharedAnimationProps.transition,\r\n y: {\r\n duration: 6,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n repeatType: \"reverse\",\r\n },\r\n }}\r\n style={{ opacity: path.opacity }}\r\n />\r\n ))}\r\n </g>\r\n\r\n <g className=\"accent-waves\" style={{ opacity: 0.6 }}>\r\n {accentPaths.map((path) => (\r\n <motion.path\r\n key={path.id}\r\n d={path.d}\r\n stroke=\"url(#sharedGradient)\"\r\n strokeWidth={path.width}\r\n strokeLinecap=\"round\"\r\n initial={{ opacity: 0, scale: 0.95 }}\r\n animate={{\r\n ...sharedAnimationProps,\r\n y: [0, -5, 0],\r\n }}\r\n transition={{\r\n ...sharedAnimationProps.transition,\r\n y: {\r\n duration: 4,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n repeatType: \"reverse\",\r\n },\r\n }}\r\n style={{ opacity: path.opacity }}\r\n />\r\n ))}\r\n </g>\r\n </svg>\r\n </div>\r\n );\r\n});\r\n\r\nconst AnimatedTitle = memo(function AnimatedTitle({\r\n title,\r\n}: {\r\n title: string;\r\n}) {\r\n return (\r\n <motion.h1\r\n className=\"text-3xl sm:text-5xl md:text-5xl font-bold mb-8 tracking-tighter text-transparent bg-clip-text bg-gradient-to-r from-neutral-800/90 to-neutral-600/90 dark:from-white/90 dark:to-white/70\"\r\n initial={{ opacity: 0, y: 20 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{\r\n duration: 1.2,\r\n ease: [0.2, 0.65, 0.3, 0.9],\r\n }}\r\n >\r\n {title}\r\n </motion.h1>\r\n );\r\n});\r\n\r\nexport interface BackgroundPathsProps {\r\n title?: string;\r\n className?: string;\r\n}\r\n\r\nexport const BackgroundPaths = memo(function BackgroundPaths({\r\n title = \"Background Paths\",\r\n className,\r\n}: BackgroundPathsProps) {\r\n return (\r\n <div className={`relative min-h-screen w-full flex items-center justify-center overflow-hidden bg-black dark:bg-neutral-950 ${className || \"\"}`}>\r\n <div className=\"absolute inset-0\">\r\n <FloatingPaths position={1} />\r\n </div>\r\n\r\n <div className=\"relative z-10 container mx-auto px-4 md:px-6 text-center\">\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n transition={{ duration: 2 }}\r\n className=\"max-w-4xl mx-auto\"\r\n >\r\n <AnimatedTitle title={title} />\r\n </motion.div>\r\n </div>\r\n </div>\r\n );\r\n});\r\n\r\nexport default BackgroundPaths;\r\n","\"use client\";\r\n\r\nimport { AnimatePresence, motion, type Variants } from \"framer-motion\";\r\nimport { useState } from \"react\";\r\n\r\nconst MAX_TEAM_SIZE = 4;\r\n\r\ninterface TeamMember {\r\n id: string;\r\n avatarUrl: string;\r\n name: string;\r\n}\r\n\r\nconst DEFAULT_TEAM_MEMBERS: TeamMember[] = [\r\n {\r\n id: \"member-1\",\r\n avatarUrl: \"https://i.pravatar.cc/150?img=1\",\r\n name: \"Team Member 1\",\r\n },\r\n {\r\n id: \"member-2\",\r\n avatarUrl: \"https://i.pravatar.cc/150?img=2\",\r\n name: \"Team Member 2\",\r\n },\r\n {\r\n id: \"member-3\",\r\n avatarUrl: \"https://i.pravatar.cc/150?img=3\",\r\n name: \"Team Member 3\",\r\n },\r\n {\r\n id: \"member-4\",\r\n avatarUrl: \"https://i.pravatar.cc/150?img=4\",\r\n name: \"Team Member 4\",\r\n },\r\n];\r\n\r\nconst animations = {\r\n container: {\r\n initial: { opacity: 0, y: 20 },\r\n animate: { opacity: 1, y: 0 },\r\n exit: { opacity: 0, y: -20 },\r\n } satisfies Variants,\r\n avatar: {\r\n initial: { opacity: 0, scale: 0.8 },\r\n animate: {\r\n opacity: 1,\r\n scale: 1,\r\n transition: { duration: 0.3 },\r\n },\r\n exit: {\r\n opacity: 0,\r\n scale: 0.8,\r\n transition: { duration: 0.15 },\r\n },\r\n } satisfies Variants,\r\n vibration: {\r\n initial: { x: 0 },\r\n animate: {\r\n x: [-5, 5, -5, 5, 0],\r\n transition: { duration: 0.3 },\r\n },\r\n } satisfies Variants,\r\n number: {\r\n initial: { scale: 0.8, opacity: 0 },\r\n animate: {\r\n scale: 1,\r\n opacity: 1,\r\n transition: {\r\n type: \"spring\",\r\n stiffness: 400,\r\n damping: 25,\r\n },\r\n },\r\n } satisfies Variants,\r\n};\r\n\r\nexport interface TeamSelectorProps {\r\n defaultValue?: number;\r\n onChange?: (size: number) => void;\r\n className?: string;\r\n members?: TeamMember[];\r\n maxSize?: number;\r\n}\r\n\r\nexport function TeamSelector({\r\n defaultValue = 1,\r\n onChange,\r\n className = \"\",\r\n members = DEFAULT_TEAM_MEMBERS,\r\n maxSize = MAX_TEAM_SIZE,\r\n}: TeamSelectorProps) {\r\n const [peopleCount, setPeopleCount] = useState(defaultValue);\r\n const [isVibrating, setIsVibrating] = useState(false);\r\n\r\n const handleIncrement = (e: React.MouseEvent | React.KeyboardEvent) => {\r\n e.preventDefault();\r\n if (peopleCount < maxSize) {\r\n const newCount = peopleCount + 1;\r\n setPeopleCount(newCount);\r\n onChange?.(newCount);\r\n } else {\r\n triggerVibration();\r\n }\r\n };\r\n\r\n const handleDecrement = (e: React.MouseEvent | React.KeyboardEvent) => {\r\n e.preventDefault();\r\n if (peopleCount > 1) {\r\n const newCount = peopleCount - 1;\r\n setPeopleCount(newCount);\r\n onChange?.(newCount);\r\n } else {\r\n triggerVibration();\r\n }\r\n };\r\n\r\n const triggerVibration = () => {\r\n setIsVibrating(true);\r\n setTimeout(() => setIsVibrating(false), 300);\r\n };\r\n\r\n const handleKeyDown = (\r\n e: React.KeyboardEvent,\r\n action: \"increment\" | \"decrement\"\r\n ) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n action === \"increment\" ? handleIncrement(e) : handleDecrement(e);\r\n }\r\n };\r\n\r\n const renderAvatars = () =>\r\n members.slice(0, peopleCount).map((member, index) => (\r\n <motion.div\r\n key={member.id}\r\n variants={animations.avatar}\r\n initial=\"initial\"\r\n animate=\"animate\"\r\n exit=\"exit\"\r\n className=\"flex items-center justify-center\"\r\n style={{\r\n zIndex: peopleCount - index,\r\n marginLeft: index === 0 ? 0 : -24,\r\n }}\r\n >\r\n <img\r\n src={member.avatarUrl}\r\n width={96}\r\n height={96}\r\n alt={member.name}\r\n className=\"rounded-full object-cover w-24 h-24 shadow-lg bg-gradient-to-b from-white/5 to-white/20 dark:from-white/5 dark:to-black/20 backdrop-blur-sm hover:shadow-xl transition-all duration-300 border border-white/10 dark:border-white/5\"\r\n />\r\n </motion.div>\r\n ));\r\n\r\n return (\r\n <motion.div\r\n variants={animations.container}\r\n initial=\"initial\"\r\n animate=\"animate\"\r\n exit=\"exit\"\r\n className={`flex w-full flex-col items-center justify-center gap-8 ${className}`}\r\n >\r\n <fieldset className=\"w-full\">\r\n <legend className=\"sr-only\">Team size selector</legend>\r\n <div className=\"relative h-24 w-full flex justify-center\">\r\n <AnimatePresence mode=\"popLayout\">{renderAvatars()}</AnimatePresence>\r\n </div>\r\n\r\n <motion.div\r\n variants={isVibrating ? animations.vibration : undefined}\r\n initial=\"initial\"\r\n animate={isVibrating ? \"animate\" : \"initial\"}\r\n className=\"flex items-center justify-center gap-8 mt-8\"\r\n >\r\n <button\r\n type=\"button\"\r\n onClick={handleDecrement}\r\n onKeyDown={(e) => handleKeyDown(e, \"decrement\")}\r\n disabled={peopleCount <= 1}\r\n aria-label=\"Decrease team size\"\r\n className=\"h-12 w-12 rounded-full bg-gradient-to-b from-white to-zinc-50 dark:from-zinc-800 dark:to-zinc-900 border border-zinc-200/80 dark:border-zinc-700/80 shadow-md hover:shadow-lg hover:border-zinc-300 dark:hover:border-zinc-600 active:from-zinc-50 active:to-zinc-100 dark:active:from-zinc-900 dark:active:to-zinc-800 text-zinc-900 dark:text-zinc-100 disabled:opacity-40 disabled:cursor-not-allowed transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-zinc-500/30 dark:focus-visible:ring-zinc-400/30 focus-visible:ring-offset-2\"\r\n >\r\n <span className=\"text-2xl font-medium select-none\">-</span>\r\n </button>\r\n\r\n <motion.output\r\n key={peopleCount}\r\n variants={animations.number}\r\n initial=\"initial\"\r\n animate=\"animate\"\r\n className=\"text-2xl font-medium bg-clip-text text-transparent bg-gradient-to-b from-zinc-800 to-zinc-600 dark:from-zinc-200 dark:to-zinc-400 select-none\"\r\n aria-label={`Current team size: ${peopleCount}`}\r\n >\r\n {peopleCount}\r\n </motion.output>\r\n\r\n <button\r\n type=\"button\"\r\n onClick={handleIncrement}\r\n onKeyDown={(e) => handleKeyDown(e, \"increment\")}\r\n disabled={peopleCount >= maxSize}\r\n aria-label=\"Increase team size\"\r\n className=\"h-12 w-12 rounded-full bg-gradient-to-b from-white to-zinc-50 dark:from-zinc-800 dark:to-zinc-900 border border-zinc-200/80 dark:border-zinc-700/80 shadow-md hover:shadow-lg hover:border-zinc-300 dark:hover:border-zinc-600 active:from-zinc-50 active:to-zinc-100 dark:active:from-zinc-900 dark:active:to-zinc-800 text-zinc-900 dark:text-zinc-100 disabled:opacity-40 disabled:cursor-not-allowed transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-zinc-500/30 dark:focus-visible:ring-zinc-400/30 focus-visible:ring-offset-2\"\r\n >\r\n <span className=\"text-2xl font-medium select-none\">+</span>\r\n </button>\r\n </motion.div>\r\n </fieldset>\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default TeamSelector;\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\ninterface AITextLoadingProps {\r\n texts?: string[];\r\n className?: string;\r\n interval?: number;\r\n}\r\n\r\nexport function AITextLoading({\r\n texts = [\r\n \"Thinking...\",\r\n \"Processing...\",\r\n \"Analyzing...\",\r\n \"Computing...\",\r\n \"Almost...\",\r\n ],\r\n className,\r\n interval = 1500,\r\n}: AITextLoadingProps) {\r\n const [currentTextIndex, setCurrentTextIndex] = useState(0);\r\n\r\n useEffect(() => {\r\n const timer = setInterval(() => {\r\n setCurrentTextIndex((prevIndex) => (prevIndex + 1) % texts.length);\r\n }, interval);\r\n\r\n return () => clearInterval(timer);\r\n }, [interval, texts.length]);\r\n\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 w-full\"\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n transition={{ duration: 0.4 }}\r\n >\r\n <AnimatePresence mode=\"wait\">\r\n <motion.div\r\n key={currentTextIndex}\r\n initial={{ opacity: 0, y: 20 }}\r\n animate={{\r\n opacity: 1,\r\n y: 0,\r\n backgroundPosition: [\"200% center\", \"-200% center\"],\r\n }}\r\n exit={{ opacity: 0, y: -20 }}\r\n transition={{\r\n opacity: { duration: 0.3 },\r\n y: { duration: 0.3 },\r\n backgroundPosition: {\r\n duration: 2.5,\r\n ease: \"linear\",\r\n repeat: Infinity,\r\n },\r\n }}\r\n className={cn(\r\n \"flex justify-center 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 whitespace-nowrap min-w-max\",\r\n className\r\n )}\r\n >\r\n {texts[currentTextIndex]}\r\n </motion.div>\r\n </AnimatePresence>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default AITextLoading;\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 TooltipAction {\r\n label: string;\r\n onClick: () => void;\r\n variant?: \"default\" | \"secondary\" | \"destructive\";\r\n}\r\n\r\nexport interface TooltipInteractiveProps {\r\n title?: string;\r\n content: string;\r\n actions?: TooltipAction[];\r\n children: React.ReactNode;\r\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\r\n trigger?: \"hover\" | \"click\";\r\n persistent?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function TooltipInteractive({\r\n title,\r\n content,\r\n actions = [],\r\n children,\r\n position = \"top\",\r\n trigger = \"hover\",\r\n persistent = false,\r\n className,\r\n}: TooltipInteractiveProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n const [isHovered, setIsHovered] = useState(false);\r\n const timeoutRef = useRef<NodeJS.Timeout>(undefined);\r\n const tooltipRef = useRef<HTMLDivElement>(null);\r\n\r\n const showTooltip = () => {\r\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\r\n setIsVisible(true);\r\n };\r\n\r\n const hideTooltip = () => {\r\n if (persistent && isHovered) return;\r\n timeoutRef.current = setTimeout(() => setIsVisible(false), 100);\r\n };\r\n\r\n const handleClick = () => {\r\n if (trigger === \"click\") setIsVisible(!isVisible);\r\n };\r\n\r\n const handleClose = () => setIsVisible(false);\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (event: MouseEvent) => {\r\n if (tooltipRef.current && !tooltipRef.current.contains(event.target as Node)) {\r\n if (trigger === \"click\") setIsVisible(false);\r\n }\r\n };\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, [trigger]);\r\n\r\n const getPositionClasses = () => {\r\n switch (position) {\r\n case \"top\": return \"bottom-full left-1/2 -translate-x-1/2 mb-3\";\r\n case \"bottom\": return \"top-full left-1/2 -translate-x-1/2 mt-3\";\r\n case \"left\": return \"right-full top-1/2 -translate-y-1/2 mr-3\";\r\n case \"right\": return \"left-full top-1/2 -translate-y-1/2 ml-3\";\r\n default: return \"bottom-full left-1/2 -translate-x-1/2 mb-3\";\r\n }\r\n };\r\n\r\n const triggerProps = trigger === \"hover\"\r\n ? { onMouseEnter: showTooltip, onMouseLeave: hideTooltip }\r\n : { onClick: handleClick };\r\n\r\n return (\r\n <div className={cn(\"relative inline-block\", className)} {...triggerProps}>\r\n {children}\r\n <AnimatePresence>\r\n {isVisible && (\r\n <motion.div\r\n ref={tooltipRef}\r\n initial={{ opacity: 0, scale: 0.95, y: position === \"top\" ? 10 : -10 }}\r\n animate={{ opacity: 1, scale: 1, y: 0 }}\r\n exit={{ opacity: 0, scale: 0.95, y: position === \"top\" ? 10 : -10 }}\r\n transition={{ type: \"spring\", stiffness: 300, damping: 25 }}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => { setIsHovered(false); if (trigger === \"hover\") hideTooltip(); }}\r\n className={cn(\"absolute z-50 w-80 bg-white dark:bg-zinc-900 border border-zinc-200 dark:border-zinc-800 rounded-xl shadow-xl backdrop-blur-sm\", getPositionClasses())}\r\n >\r\n <div className=\"p-4 space-y-3\">\r\n <div className=\"flex items-start justify-between gap-2\">\r\n <div className=\"flex-1 space-y-1\">\r\n {title && <h3 className=\"font-semibold text-zinc-900 dark:text-zinc-100 text-sm\">{title}</h3>}\r\n <p className=\"text-sm text-zinc-600 dark:text-zinc-400 leading-relaxed\">{content}</p>\r\n </div>\r\n {(trigger === \"click\" || persistent) && (\r\n <button onClick={handleClose} className=\"text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-200 transition-colors p-1 rounded-md hover:bg-zinc-100 dark:hover:bg-zinc-800\">\r\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" /></svg>\r\n </button>\r\n )}\r\n </div>\r\n {actions.length > 0 && (\r\n <div className=\"flex gap-2 pt-2 border-t border-zinc-200 dark:border-zinc-800\">\r\n {actions.map((action, index) => (\r\n <button key={index} onClick={() => { action.onClick(); if (!persistent) handleClose(); }}\r\n className={cn(\"text-xs h-8 px-3 rounded-md font-medium transition-colors\",\r\n action.variant === \"destructive\" ? \"bg-red-500 text-white hover:bg-red-600\" :\r\n action.variant === \"secondary\" ? \"bg-zinc-100 dark:bg-zinc-800 text-zinc-900 dark:text-zinc-100 hover:bg-zinc-200 dark:hover:bg-zinc-700\" :\r\n \"bg-zinc-900 dark:bg-white text-white dark:text-zinc-900 hover:bg-zinc-800 dark:hover:bg-zinc-100\"\r\n )}\r\n >{action.label}</button>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default TooltipInteractive;\r\n","\"use client\";\r\n\r\nimport { useState, useRef, useCallback } from \"react\";\r\nimport { motion, AnimatePresence, useSpring, useMotionValue } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport interface TooltipMagneticProps {\r\n content: string;\r\n children: React.ReactNode;\r\n offset?: number;\r\n springConfig?: { stiffness: number; damping: number };\r\n className?: string;\r\n}\r\n\r\nexport function TooltipMagnetic({\r\n content,\r\n children,\r\n offset = 20,\r\n springConfig = { stiffness: 300, damping: 30 },\r\n className,\r\n}: TooltipMagneticProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n\r\n const mouseX = useMotionValue(0);\r\n const mouseY = useMotionValue(0);\r\n\r\n const springX = useSpring(mouseX, springConfig);\r\n const springY = useSpring(mouseY, springConfig);\r\n\r\n const handleMouseMove = useCallback(\r\n (event: React.MouseEvent) => {\r\n if (!containerRef.current) return;\r\n\r\n const rect = containerRef.current.getBoundingClientRect();\r\n const centerX = rect.left + rect.width / 2;\r\n const centerY = rect.top + rect.height / 2;\r\n\r\n const deltaX = event.clientX - centerX;\r\n const deltaY = event.clientY - centerY;\r\n\r\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\r\n const maxDistance = Math.max(rect.width, rect.height);\r\n\r\n const normalizedDistance = Math.min(distance / maxDistance, 1);\r\n const magneticStrength = 1 - normalizedDistance;\r\n\r\n mouseX.set(deltaX * magneticStrength * 0.5);\r\n mouseY.set(deltaY * magneticStrength * 0.5);\r\n },\r\n [mouseX, mouseY]\r\n );\r\n\r\n const handleMouseEnter = () => setIsVisible(true);\r\n const handleMouseLeave = () => {\r\n setIsVisible(false);\r\n mouseX.set(0);\r\n mouseY.set(0);\r\n };\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={cn(\"relative inline-block\", className)}\r\n onMouseMove={handleMouseMove}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n >\r\n {children}\r\n\r\n <AnimatePresence>\r\n {isVisible && (\r\n <motion.div\r\n style={{ x: springX, y: springY }}\r\n initial={{ opacity: 0, scale: 0.8 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n exit={{ opacity: 0, scale: 0.8 }}\r\n transition={{ type: \"spring\", stiffness: 400, damping: 25 }}\r\n className=\"absolute z-50 pointer-events-none\"\r\n >\r\n <motion.div\r\n className=\"relative px-4 py-2 text-sm text-zinc-900 dark:text-zinc-100 bg-white dark:bg-zinc-900 border border-zinc-200 dark:border-zinc-800 rounded-xl shadow-xl backdrop-blur-sm whitespace-nowrap\"\r\n style={{ translateX: \"-50%\", translateY: `calc(-100% - ${offset}px)` }}\r\n whileHover={{ scale: 1.05 }}\r\n >\r\n {content}\r\n <motion.div\r\n className=\"absolute inset-0 bg-gradient-to-r from-blue-500/20 to-purple-500/20 rounded-xl -z-10 blur-sm\"\r\n animate={{ scale: [1, 1.1, 1], opacity: [0.5, 0.8, 0.5] }}\r\n transition={{ duration: 2, repeat: Infinity, ease: \"easeInOut\" }}\r\n />\r\n <motion.div\r\n initial={{ scale: 0 }}\r\n animate={{ scale: 1 }}\r\n transition={{ delay: 0.1, type: \"spring\", stiffness: 400 }}\r\n className=\"absolute top-full left-1/2 -translate-x-1/2 w-0 h-0 border-4 border-l-transparent border-r-transparent border-b-transparent border-t-white dark:border-t-zinc-900\"\r\n />\r\n <motion.div\r\n className=\"absolute inset-0 rounded-xl border border-blue-500/30 -z-10\"\r\n animate={{ scale: [1, 1.2, 1], opacity: [0.3, 0.6, 0.3] }}\r\n transition={{ duration: 1.5, repeat: Infinity, ease: \"easeInOut\" }}\r\n />\r\n </motion.div>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default TooltipMagnetic;\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\nexport interface TooltipRichProps {\r\n title?: string;\r\n content: string;\r\n icon?: React.ReactNode;\r\n children: React.ReactNode;\r\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\r\n delay?: number;\r\n maxWidth?: string;\r\n className?: string;\r\n}\r\n\r\nexport function TooltipRich({\r\n title,\r\n content,\r\n icon,\r\n children,\r\n position = \"top\",\r\n delay = 300,\r\n maxWidth = \"max-w-xs\",\r\n className,\r\n}: TooltipRichProps) {\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 switch (position) {\r\n case \"top\": return \"bottom-full left-1/2 -translate-x-1/2 mb-3\";\r\n case \"bottom\": return \"top-full left-1/2 -translate-x-1/2 mt-3\";\r\n case \"left\": return \"right-full top-1/2 -translate-y-1/2 mr-3\";\r\n case \"right\": return \"left-full top-1/2 -translate-y-1/2 ml-3\";\r\n default: return \"bottom-full left-1/2 -translate-x-1/2 mb-3\";\r\n }\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, y: position === \"top\" ? 10 : -10 }}\r\n animate={{ opacity: 1, scale: 1, y: 0 }}\r\n exit={{ opacity: 0, scale: 0.95, y: position === \"top\" ? 10 : -10 }}\r\n transition={{ type: \"spring\", stiffness: 300, damping: 25 }}\r\n\r\n className={cn(\"absolute z-50 bg-white dark:bg-zinc-900 border border-zinc-200 dark:border-zinc-800 rounded-xl shadow-xl backdrop-blur-sm\", maxWidth, getPositionClasses())}\r\n >\r\n <div className=\"p-4 space-y-2\">\r\n {(title || icon) && (\r\n <motion.div initial={{ opacity: 0, y: -5 }} animate={{ opacity: 1, y: 0 }} transition={{ delay: 0.1 }} className=\"flex items-center gap-2\">\r\n {icon && <div className=\"text-blue-500\">{icon}</div>}\r\n {title && <h3 className=\"font-semibold text-zinc-900 dark:text-zinc-100 text-sm\">{title}</h3>}\r\n </motion.div>\r\n )}\r\n <motion.p initial={{ opacity: 0 }} animate={{ opacity: 1 }} transition={{ delay: 0.15 }} className=\"text-sm text-zinc-600 dark:text-zinc-400 leading-relaxed\">\r\n {content}\r\n </motion.p>\r\n </div>\r\n <motion.div initial={{ opacity: 0 }} animate={{ opacity: 1 }} transition={{ delay: 0.2 }} className=\"absolute inset-0 bg-gradient-to-br from-blue-500/5 to-purple-500/5 rounded-xl pointer-events-none\" />\r\n <motion.div\r\n initial={{ scale: 0 }}\r\n animate={{ scale: 1 }}\r\n transition={{ delay: 0.1, type: \"spring\", stiffness: 400 }}\r\n className={cn(\r\n \"absolute w-0 h-0 border-8\",\r\n position === \"top\" && \"top-full left-1/2 -translate-x-1/2 border-l-transparent border-r-transparent border-b-transparent border-t-white dark:border-t-zinc-900\",\r\n position === \"bottom\" && \"bottom-full left-1/2 -translate-x-1/2 border-l-transparent border-r-transparent border-t-transparent border-b-white dark:border-b-zinc-900\",\r\n position === \"left\" && \"left-full top-1/2 -translate-y-1/2 border-t-transparent border-b-transparent border-r-transparent border-l-white dark:border-l-zinc-900\",\r\n position === \"right\" && \"right-full top-1/2 -translate-y-1/2 border-t-transparent border-b-transparent border-l-transparent border-r-white dark:border-r-zinc-900\"\r\n )}\r\n />\r\n <motion.div initial={{ opacity: 0, scale: 0.8 }} animate={{ opacity: 1, scale: 1 }} transition={{ delay: 0.05, duration: 0.4 }} className=\"absolute inset-0 rounded-xl border border-blue-500/20 pointer-events-none\" />\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default TooltipRich;\r\n","\"use client\";\r\n\r\nimport { useRef, useEffect } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport interface MagnetLinesProps {\r\n rows?: number;\r\n columns?: number;\r\n containerSize?: string;\r\n lineColor?: string;\r\n lineWidth?: string;\r\n lineHeight?: string;\r\n baseAngle?: number;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport function MagnetLines({\r\n rows = 9,\r\n columns = 9,\r\n containerSize = \"60vmin\",\r\n lineColor = \"#a1a1aa\",\r\n lineWidth = \"0.8vmin\",\r\n lineHeight = \"5vmin\",\r\n baseAngle = 0,\r\n className = \"\",\r\n style = {},\r\n}: MagnetLinesProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n const container = containerRef.current;\r\n if (!container) return;\r\n\r\n const items = container.querySelectorAll(\"span\");\r\n\r\n const onPointerMove = (pointer: { x: number; y: number }) => {\r\n items.forEach((item) => {\r\n const rect = item.getBoundingClientRect();\r\n const centerX = rect.x + rect.width / 2;\r\n const centerY = rect.y + rect.height / 2;\r\n\r\n const b = pointer.x - centerX;\r\n const a = pointer.y - centerY;\r\n const c = Math.sqrt(a * a + b * b) || 1;\r\n const r = ((Math.acos(b / c) * 180) / Math.PI) * (pointer.y > centerY ? 1 : -1);\r\n\r\n (item as HTMLElement).style.setProperty(\"--rotate\", `${r}deg`);\r\n });\r\n };\r\n\r\n const handlePointerMove = (e: PointerEvent) => {\r\n onPointerMove({ x: e.clientX, y: e.clientY });\r\n };\r\n\r\n window.addEventListener(\"pointermove\", handlePointerMove);\r\n\r\n if (items.length) {\r\n const middleIndex = Math.floor(items.length / 2);\r\n const rect = items[middleIndex].getBoundingClientRect();\r\n onPointerMove({ x: rect.x, y: rect.y });\r\n }\r\n\r\n return () => window.removeEventListener(\"pointermove\", handlePointerMove);\r\n }, []);\r\n\r\n const total = rows * columns;\r\n const spans = Array.from({ length: total }, (_, i) => (\r\n <span\r\n key={i}\r\n style={{\r\n \"--rotate\": `${baseAngle}deg`,\r\n backgroundColor: lineColor,\r\n width: lineWidth,\r\n height: lineHeight,\r\n transform: \"rotate(var(--rotate))\",\r\n transition: \"transform 0.3s ease\",\r\n borderRadius: \"9999px\",\r\n } as React.CSSProperties}\r\n />\r\n ));\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={cn(\"place-items-center\", className)}\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\r\n gridTemplateRows: `repeat(${rows}, 1fr)`,\r\n width: containerSize,\r\n height: containerSize,\r\n ...style,\r\n }}\r\n >\r\n {spans}\r\n </div>\r\n );\r\n}\r\n\r\nexport default MagnetLines;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport interface GlareHoverProps {\r\n width?: string;\r\n height?: string;\r\n background?: string;\r\n borderRadius?: string;\r\n borderColor?: string;\r\n children: React.ReactNode;\r\n glareColor?: string;\r\n glareOpacity?: number;\r\n glareAngle?: number;\r\n glareSize?: number;\r\n transitionDuration?: number;\r\n playOnce?: boolean;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport function GlareHover({\r\n width = \"500px\",\r\n height = \"500px\",\r\n background = \"#ffffff\",\r\n borderRadius = \"12px\",\r\n borderColor = \"#e5e5e5\",\r\n children,\r\n glareColor = \"#000000\",\r\n glareOpacity = 0.15,\r\n glareAngle = -45,\r\n glareSize = 250,\r\n transitionDuration = 650,\r\n playOnce = false,\r\n className = \"\",\r\n style = {},\r\n}: GlareHoverProps) {\r\n const hex = glareColor.replace(\"#\", \"\");\r\n let rgba = glareColor;\r\n if (/^[0-9A-Fa-f]{6}$/.test(hex)) {\r\n const r = parseInt(hex.slice(0, 2), 16);\r\n const g = parseInt(hex.slice(2, 4), 16);\r\n const b = parseInt(hex.slice(4, 6), 16);\r\n rgba = `rgba(${r}, ${g}, ${b}, ${glareOpacity})`;\r\n } else if (/^[0-9A-Fa-f]{3}$/.test(hex)) {\r\n const r = parseInt(hex[0] + hex[0], 16);\r\n const g = parseInt(hex[1] + hex[1], 16);\r\n const b = parseInt(hex[2] + hex[2], 16);\r\n rgba = `rgba(${r}, ${g}, ${b}, ${glareOpacity})`;\r\n }\r\n\r\n const glareStyles = `\r\n .glare-hover {\r\n position: relative;\r\n overflow: hidden;\r\n width: var(--gh-width);\r\n height: var(--gh-height);\r\n background: var(--gh-bg);\r\n border-radius: var(--gh-br);\r\n border: 1px solid var(--gh-border);\r\n }\r\n .glare-hover::before {\r\n content: \"\";\r\n position: absolute;\r\n top: 0;\r\n left: -100%;\r\n width: var(--gh-size);\r\n height: 100%;\r\n background: linear-gradient(var(--gh-angle), transparent, var(--gh-rgba), transparent);\r\n transition: left var(--gh-duration) ease;\r\n }\r\n .glare-hover:hover::before {\r\n left: 100%;\r\n }\r\n .glare-hover--play-once::before {\r\n animation: glare-once var(--gh-duration) ease forwards;\r\n }\r\n @keyframes glare-once {\r\n 0% { left: -100%; }\r\n 100% { left: 100%; }\r\n }\r\n `;\r\n\r\n const vars = {\r\n \"--gh-width\": width,\r\n \"--gh-height\": height,\r\n \"--gh-bg\": background,\r\n \"--gh-br\": borderRadius,\r\n \"--gh-angle\": `${glareAngle}deg`,\r\n \"--gh-duration\": `${transitionDuration}ms`,\r\n \"--gh-size\": `${glareSize}%`,\r\n \"--gh-rgba\": rgba,\r\n \"--gh-border\": borderColor,\r\n } as React.CSSProperties;\r\n\r\n return (\r\n <>\r\n <style>{glareStyles}</style>\r\n <div\r\n className={cn(\"glare-hover\", playOnce && \"glare-hover--play-once\", className)}\r\n style={{ ...vars, ...style }}\r\n >\r\n {children}\r\n </div>\r\n </>\r\n );\r\n}\r\n\r\nexport default GlareHover;\r\n"]}
|