import React from "react"; import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui"; import { Badge } from "@/components/ui"; import { Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/ui"; import { Button } from "@/components/ui"; import { X, Loader2 } from "lucide-react"; import { YamlEditor } from "./YamlEditor"; import { scaleDeploymentCmd, restartDeploymentCmd, rollbackDeploymentCmd } from "@/lib/tauriCommands"; import type { DeploymentInfo } from "@/lib/tauriCommands"; interface DeploymentDetailProps { clusterId: string; namespace: string; deployment: DeploymentInfo; onClose?: () => void; } export function DeploymentDetail({ clusterId, namespace, deployment, onClose }: DeploymentDetailProps) { const [activeTab, setActiveTab] = React.useState("overview"); const [replicaCount, setReplicaCount] = React.useState(deployment.replicas); const [scaleLoading, setScaleLoading] = React.useState(false); const [scaleError, setScaleError] = React.useState(null); const [scaleSuccess, setScaleSuccess] = React.useState(false); const [restartLoading, setRestartLoading] = React.useState(false); const [restartError, setRestartError] = React.useState(null); const [rollbackLoading, setRollbackLoading] = React.useState(false); const [rollbackError, setRollbackError] = React.useState(null); const handleScale = async () => { setScaleLoading(true); setScaleError(null); setScaleSuccess(false); try { await scaleDeploymentCmd(clusterId, namespace, deployment.name, replicaCount); setScaleSuccess(true); } catch (err) { setScaleError(err instanceof Error ? err.message : String(err)); } finally { setScaleLoading(false); } }; const handleRestart = async () => { setRestartLoading(true); setRestartError(null); try { await restartDeploymentCmd(clusterId, namespace, deployment.name); } catch (err) { setRestartError(err instanceof Error ? err.message : String(err)); } finally { setRestartLoading(false); } }; const handleRollback = async () => { setRollbackLoading(true); setRollbackError(null); try { await rollbackDeploymentCmd(clusterId, namespace, deployment.name); } catch (err) { setRollbackError(err instanceof Error ? err.message : String(err)); } finally { setRollbackLoading(false); } }; return (

Deployment: {deployment.name}

{namespace}
Overview Actions YAML
Deployment Information
Name {deployment.name}
Namespace {namespace}
Ready {deployment.ready}
Replicas {deployment.replicas}
Up-to-date {deployment.up_to_date}
Available {deployment.available}
Age {deployment.age}
{Object.keys(deployment.labels).length > 0 && ( Labels
{Object.entries(deployment.labels).map(([k, v]) => ( {k}={v} ))}
)}
Scale
setReplicaCount(Number(e.target.value))} className="w-24 border rounded px-2 py-1 text-sm bg-background" />
{scaleLoading && (
Scaling deployment…
)} {scaleError && (
Scale failed: {scaleError}
)} {scaleSuccess && (
Scaled to {replicaCount} replica{replicaCount !== 1 ? "s" : ""}.
)}
Restart

Performs a rolling restart of all pods in this deployment.

{restartError && (
Restart failed: {restartError}
)}
Rollback

Roll back to the previous revision of this deployment.

{rollbackError && (
Rollback failed: {rollbackError}
)}
); }