import { useEffect, useState } from "react"; import { cn } from "@/lib/utils"; interface LoadingScreenProps { message?: string; variant?: 'full' | 'overlay' | 'inline'; size?: 'sm' | 'md' | 'lg'; showProgress?: boolean; duration?: number; } export default function LoadingScreen({ message = "Loading...", variant = 'full', size = 'md', showProgress = false, duration = 3000 }: LoadingScreenProps) { const [progress, setProgress] = useState(0); const [currentMessage, setCurrentMessage] = useState(message); useEffect(() => { if (showProgress) { const interval = setInterval(() => { setProgress(prev => { const newProgress = prev + (100 / (duration / 100)); return newProgress > 100 ? 100 : newProgress; }); }, 100); return () => clearInterval(interval); } }, [showProgress, duration]); useEffect(() => { const messages = [ "Initializing AeThex OS...", "Loading quantum processors...", "Calibrating neural networks...", "Synchronizing data streams...", "Preparing your experience..." ]; if (variant === 'full') { let index = 0; const interval = setInterval(() => { setCurrentMessage(messages[index % messages.length]); index++; }, 800); return () => clearInterval(interval); } }, [variant]); const sizeClasses = { sm: 'h-4 w-4', md: 'h-8 w-8', lg: 'h-12 w-12' }; if (variant === 'inline') { return (