'use client'; import { forwardRef, ButtonHTMLAttributes } from 'react'; export interface NeonToggleProps extends Omit, 'onChange'> { checked: boolean; onChange: (checked: boolean) => void; variant?: 'cyan' | 'pink' | 'green' | 'purple'; size?: 'sm' | 'md' | 'lg'; } const sizeStyles = { sm: { track: 'w-10 h-5', thumb: 'w-4 h-4', translate: 'translate-x-5' }, md: { track: 'w-[52px] h-7', thumb: 'w-5 h-5', translate: 'translate-x-6' }, lg: { track: 'w-16 h-8', thumb: 'w-6 h-6', translate: 'translate-x-8' }, }; const variantStyles = { cyan: { active: 'bg-cyan-400/20 border-cyan-400 shadow-[0_0_10px_#00f0ff]', thumb: 'bg-cyan-400 shadow-[0_0_10px_#00f0ff]' }, pink: { active: 'bg-fuchsia-500/20 border-fuchsia-500 shadow-[0_0_10px_#ff00ff]', thumb: 'bg-fuchsia-500 shadow-[0_0_10px_#ff00ff]' }, green: { active: 'bg-emerald-400/20 border-emerald-400 shadow-[0_0_10px_#00ff88]', thumb: 'bg-emerald-400 shadow-[0_0_10px_#00ff88]' }, purple: { active: 'bg-purple-500/20 border-purple-500 shadow-[0_0_10px_#a855f7]', thumb: 'bg-purple-500 shadow-[0_0_10px_#a855f7]' }, }; export const NeonToggle = forwardRef( ({ checked, onChange, variant = 'cyan', size = 'md', disabled = false, className = '', ...props }, ref) => { const sizes = sizeStyles[size]; const colors = variantStyles[variant]; return ( ); } ); NeonToggle.displayName = 'NeonToggle'; export default NeonToggle;