import { Spinner } from "~/components/ui/spinner";
import type { ServerUpdateState } from "@t3tools/client-runtime/state/server";
import { CircleAlertIcon, DownloadIcon } from "lucide-react";
import { useId, useState } from "react";
import { serverUpdateStageLabel } from "../ServerUpdateAction";
import { Tooltip, TooltipPopup, TooltipTrigger } from "../ui/tooltip";
import { ComposerBanner } from "./ComposerBanner";
export function ComposerServerUpdateIcon({
status,
}: {
readonly status: ServerUpdateState["status"];
}) {
if (status === "running") {
return ;
}
if (status === "failed") {
return ;
}
return ;
}
/** One text line, clipped at the end so the error detail never squeezes its title. */
export function ComposerServerUpdateStatus({
state,
serverLabel = "server",
}: {
readonly state: Exclude;
readonly serverLabel?: string;
}) {
const [detailsOpen, setDetailsOpen] = useState(false);
const triggerId = useId();
const title = `${state.status === "failed" ? "Could not update" : "Updating"} ${serverLabel}`;
const detail = state.status === "failed" ? state.message : serverUpdateStageLabel(state.stage);
return (
setDetailsOpen(true)}
>
{title}
{detail}
}
/>
{title}: {detail}
);
}