import { Show, onMount, onCleanup, createSignal } from "solid-js"; import { useSplash } from "../context/splash"; const spinnerChars = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]; export function TerminalSplash() { const { showSplash, setShowSplash } = useSplash(); const [showing, setShowing] = createSignal(0); const [isVisible, setIsVisible] = createSignal(true); onMount(() => { const interval = setInterval(() => { setShowing((prev) => (prev + 1) % spinnerChars.length); }, 50); // Hide splash after 1.5 seconds const timeoutId = setTimeout(() => { setShowSplash(false); }, 1500); onCleanup(() => { clearInterval(interval); clearTimeout(timeoutId); }); }); // Handle fade out when splash is hidden const shouldRender = () => showSplash() || isVisible(); // Trigger fade out, then hide after transition const opacity = () => { if (!showSplash() && isVisible()) { setTimeout(() => setIsVisible(false), 500); return "0"; } if (showSplash()) { setIsVisible(true); return "1"; } return "0"; }; return (
{spinnerChars[showing()]}
); }