"use client"; import React, { useEffect, useRef, useState } from "react"; import { AnimatePresence, motion } from "motion/react"; import { cn } from "@/lib/utils"; export const GlowingStarsBackgroundCard = ({ className, children, }: { className?: string; children?: React.ReactNode; }) => { const [mouseEnter, setMouseEnter] = useState(false); return (
{ setMouseEnter(true); }} onMouseLeave={() => { setMouseEnter(false); }} className={cn( "bg-[linear-gradient(110deg,#333_0.6%,#222)] p-4 max-w-md max-h-[20rem] h-full w-full rounded-xl border border-[#eaeaea] dark:border-neutral-600", className )} >
{children}
); }; export const GlowingStarsDescription = ({ className, children, }: { className?: string; children?: React.ReactNode; }) => { return (

{children}

); }; export const GlowingStarsTitle = ({ className, children, }: { className?: string; children?: React.ReactNode; }) => { return (

{children}

); }; export const Illustration = ({ mouseEnter }: { mouseEnter: boolean }) => { const stars = 108; const columns = 18; const [glowingStars, setGlowingStars] = useState([]); const highlightedStars = useRef([]); useEffect(() => { const interval = setInterval(() => { highlightedStars.current = Array.from({ length: 5 }, () => Math.floor(Math.random() * stars) ); setGlowingStars([...highlightedStars.current]); }, 3000); return () => clearInterval(interval); }, []); return (
{[...Array(stars)].map((_, starIdx) => { const isGlowing = glowingStars.includes(starIdx); const delay = (starIdx % 10) * 0.1; const staticDelay = starIdx * 0.01; return (
{mouseEnter && } {isGlowing && }
); })}
); }; const Star = ({ isGlowing, delay }: { isGlowing: boolean; delay: number }) => { return ( ); }; const Glow = ({ delay }: { delay: number }) => { return ( ); };