import { useEffect, useState } from "react"; import { cn } from "@/lib/utils"; import AeThexOSLogo from "./AeThexOSLogo"; interface LoadingScreenProps { message?: string; variant?: "full" | "overlay" | "inline"; size?: "sm" | "md" | "lg"; showProgress?: boolean; duration?: number; accentColor?: string; armLogo?: string; showOSLogo?: boolean; } export default function LoadingScreen({ message = "Loading...", variant = "full", size = "md", showProgress = false, duration = 3000, accentColor = "from-aethex-500 to-neon-blue", armLogo, showOSLogo = true, }: 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++; }, 1200); 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 (
{message}
); } const containerClasses = variant === "full" ? "fixed inset-0 bg-background/95 backdrop-blur-sm z-50" : "absolute inset-0 bg-background/80 backdrop-blur-sm z-40"; return (
{/* Large OS Logo with Arm Logo Overlay */}
{/* Large OS Frame Background */} {showOSLogo && (
)} {/* Arm Logo or Default - ENLARGED */}
{armLogo ? ( Arm Logo ) : ( )}
{/* Orbiting Decorative Elements */}
{/* Animated Loading Bars - LARGER */}
{[...Array(8)].map((_, i) => { const colorMap: Record = { "from-yellow-500 to-yellow-400": "bg-yellow-400", "from-green-500 to-green-400": "bg-green-400", "from-blue-500 to-blue-400": "bg-blue-400", "from-red-500 to-red-400": "bg-red-400", "from-cyan-500 to-cyan-400": "bg-cyan-400", "from-purple-500 to-purple-400": "bg-purple-400", "from-pink-500 to-pink-400": "bg-pink-400", "from-aethex-500 to-neon-blue": "bg-aethex-400", }; const barColor = colorMap[accentColor] || "bg-aethex-400"; return (
); })}
{/* Progress Bar */} {showProgress && (
{Math.round(progress)}% Complete
)} {/* Loading Message - ENLARGED */}

AeThex OS

{currentMessage}

{/* System Status Info */}
KERNEL AeThex v2.0
STATUS BOOTING...
Please wait while we prepare your experience
); }