'use client'; import { forwardRef, HTMLAttributes } from 'react'; export interface CyberLoaderProps extends HTMLAttributes { variant?: 'spinner' | 'dots' | 'bars'; color?: 'cyan' | 'pink' | 'green' | 'purple'; size?: 'sm' | 'md' | 'lg'; } const colorStyles = { cyan: { bg: 'bg-cyan-400', border: 'border-t-cyan-400', shadow: 'shadow-[0_0_10px_#00f0ff]' }, pink: { bg: 'bg-fuchsia-500', border: 'border-t-fuchsia-500', shadow: 'shadow-[0_0_10px_#ff00ff]' }, green: { bg: 'bg-emerald-400', border: 'border-t-emerald-400', shadow: 'shadow-[0_0_10px_#00ff88]' }, purple: { bg: 'bg-purple-500', border: 'border-t-purple-500', shadow: 'shadow-[0_0_10px_#a855f7]' }, }; const sizeStyles = { sm: 'w-6 h-6', md: 'w-10 h-10', lg: 'w-16 h-16' }; export const CyberLoader = forwardRef( ({ variant = 'spinner', color = 'cyan', size = 'md', className = '', ...props }, ref) => { const colors = colorStyles[color]; if (variant === 'spinner') { return (
); } if (variant === 'dots') { return (
{[0, 1, 2].map((i) => ( ))}
); } return (
{[0, 1, 2, 3].map((i) => ( ))}
); } ); CyberLoader.displayName = 'CyberLoader'; export default CyberLoader;