import { useMutation, useQuery } from "@tanstack/react-query"; import { Play, ShieldCheck } from "lucide-react"; import { useState } from "react"; import { api, Cluster, Policy } from "../api/client"; import { buttonClass, Field, secondaryButtonClass, selectClass } from "../components/FormControls"; import { PageHeader } from "../components/PageHeader"; export function FirewallPreview() { const policies = useQuery({ queryKey: ["policies"], queryFn: () => api("/policies") }); const clusters = useQuery({ queryKey: ["clusters"], queryFn: () => api("/clusters") }); const [policyId, setPolicyId] = useState(""); const [clusterId, setClusterId] = useState(""); const [dryRun, setDryRun] = useState(true); const preview = useMutation({ mutationFn: (policyId: string) => api>(`/firewall/preview/${policyId}`, { method: "POST" }), }); const apply = useMutation({ mutationFn: () => api>("/firewall/apply", { method: "POST", body: JSON.stringify({ policy_id: policyId || policies.data?.[0]?.id, cluster_id: clusterId || clusters.data?.[0]?.id, confirm: true, dry_run: dryRun, }), }), }); const selectedPolicyId = policyId || policies.data?.[0]?.id || ""; return ( <>
          {apply.data ? JSON.stringify(apply.data, null, 2) : preview.data ? JSON.stringify(preview.data, null, 2) : "No firewall output yet."}
        
); }