/* Copyright 2026 Marimo. All rights reserved. */ import { useAtomValue } from "jotai"; import { AlertCircleIcon } from "lucide-react"; import type React from "react"; import { Spinner } from "@/components/icons/spinner"; import { Tooltip } from "@/components/ui/tooltip"; import { wasmInitializationAtom, wasmInitStatusAtom } from "@/core/wasm/state"; import { isWasm } from "@/core/wasm/utils"; /** * Footer indicator that surfaces Pyodide initialization progress. Mirrors * the "Kernel" indicator but tracks the WASM runtime instead of the server * connection. Hides itself once Pyodide is ready. */ export const PyodideStatus: React.FC = () => { const status = useAtomValue(wasmInitStatusAtom); const message = useAtomValue(wasmInitializationAtom); if (!isWasm() || status === "ready") { return null; } const icon = status === "error" ? ( ) : ( ); const tooltip = status === "error" ? "Pyodide failed to initialize" : message; return ( {tooltip}} data-testid="footer-pyodide-status" >
{icon} Pyodide
); };