'use client'; import { forwardRef, ButtonHTMLAttributes } from 'react'; export interface GlitchButtonProps extends ButtonHTMLAttributes { /** Button variant */ variant?: 'default' | 'outline' | 'ghost'; /** Glitch intensity on hover */ intensity?: 'subtle' | 'medium' | 'intense'; /** Primary glitch color (hex or CSS color) */ glitchColor?: string; /** Secondary glitch color (hex or CSS color) */ glitchColorAlt?: string; } const variantClasses = { default: 'bg-neutral-950 text-neutral-50 border border-neutral-800', outline: 'bg-transparent text-neutral-50 border-2 border-current', ghost: 'bg-transparent text-neutral-50 border-none', }; const intensityClasses = { subtle: { layer1: 'hover:opacity-50 hover:animate-[glitch-subtle_0.5s_infinite]', layer2: 'hover:opacity-30 hover:animate-[glitch-subtle-alt_0.5s_infinite]', button: '', }, medium: { layer1: 'hover:opacity-70 hover:animate-[glitch-medium_0.2s_infinite]', layer2: 'hover:opacity-50 hover:animate-[glitch-medium-alt_0.2s_infinite]', button: '', }, intense: { layer1: 'hover:opacity-90 hover:animate-[glitch-intense_0.1s_infinite]', layer2: 'hover:opacity-70 hover:animate-[glitch-intense-alt_0.1s_infinite]', button: 'hover:animate-[button-shake_0.1s_infinite]', }, }; export const GlitchButton = forwardRef( ( { children, variant = 'default', intensity = 'medium', glitchColor = '#ff0040', glitchColorAlt = '#00ffff', className, style, ...props }, ref ) => { const intensityClass = intensityClasses[intensity]; return ( ); } ); GlitchButton.displayName = 'GlitchButton'; export default GlitchButton;