import { type ReactNode, useEffect } from 'react'; import { cn } from '@/lib/utils'; import { SparkBurst, useSparkTrigger } from './effects/SparkBurst'; interface ShimmerBadgeProps { children: ReactNode; className?: string; } /** * Prominent gradient-shimmer eyebrow pill: an animated violet -> fuchsia -> * amber gradient rim over a dark interior, a shimmer sweep, a fuchsia spark * burst, and gradient-clipped text. Shared by the landing hero and the * marketing homepage. Sparks fire on mount, every 10s, and on hover. */ export function ShimmerBadge({ children, className }: ShimmerBadgeProps) { const [sparkTrigger, fireSpark] = useSparkTrigger(); // Re-fire pill sparks every 10 seconds useEffect(() => { const interval = setInterval(fireSpark, 10000); return () => clearInterval(interval); }, [fireSpark]); return ( // biome-ignore lint/a11y/noStaticElementInteractions: decorative hover spark effect {/* Animated gradient border */} {/* Inner fill */} {/* Shimmer highlight overlay */} {/* Spark burst: fires on mount, every 10s, and on hover */} {/* Text content */} {children} ); }