/* 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
);
};