/* Copyright 2026 Marimo. All rights reserved. */ import { ArrowRightSquareIcon } from "lucide-react"; import { API } from "@/core/network/api"; import { Banner } from "@/plugins/impl/common/error-banner"; import { prettyError } from "@/utils/errors"; import { reloadSafe } from "@/utils/reload-safe"; import { Button } from "../ui/button"; import { toast } from "../ui/use-toast"; interface DisconnectedProps { reason: string; canTakeover: boolean | undefined; } export const Disconnected = ({ reason, canTakeover = false, }: DisconnectedProps) => { const handleTakeover = async () => { try { const searchParams = new URL(window.location.href).searchParams; await API.post(`/kernel/takeover?${searchParams.toString()}`, {}); // Refresh the page to reconnect reloadSafe(); } catch (error) { toast({ title: "Failed to take over session", description: prettyError(error), variant: "danger", }); } }; if (canTakeover) { return (
Notebook already connected
{reason} {canTakeover && ( )}
); } return (

{reason}

); };