"use client";
import { useState } from "react";
import { useRouter } from "next/navigation";
import { AdminDialog } from "@/components/ui/admin-dialog";
import { createSite, updateSite, toggleSiteActive } from "./actions";
const INPUT = "w-full rounded-lg border border-neutral-300 px-3 py-2 text-sm focus:border-primary-500 focus:outline-none focus:ring-2 focus:ring-primary-500/20";
type SiteRow = { id: string; name: string; code: string; address: string | null; latitude: number | null; longitude: number | null; isActive: boolean };
function SiteFormFields({ site }: { site?: SiteRow }) {
return (
);
}
export function AddSiteButton() {
const router = useRouter();
const [open, setOpen] = useState(false);
const [pending, setPending] = useState(false);
const [error, setError] = useState("");
async function handleSubmit(e: React.FormEvent) {
e.preventDefault(); setPending(true); setError("");
const result = await createSite(new FormData(e.currentTarget));
if ("error" in result) { setError(result.error); setPending(false); }
else { setOpen(false); router.refresh(); }
}
return (
<>
setOpen(false)} title="Add Site">
>
);
}
export function EditSiteButton({ site }: { site: SiteRow }) {
const router = useRouter();
const [open, setOpen] = useState(false);
const [pending, setPending] = useState(false);
const [error, setError] = useState("");
async function handleSubmit(e: React.FormEvent) {
e.preventDefault(); setPending(true); setError("");
const result = await updateSite(site.id, new FormData(e.currentTarget));
if ("error" in result) { setError(result.error); setPending(false); }
else { setOpen(false); router.refresh(); }
}
async function handleToggle() {
await toggleSiteActive(site.id); router.refresh();
}
return (
<>
setOpen(false)} title={`Edit — ${site.name}`}>
>
);
}