"use client" import { useState, useEffect, forwardRef, useImperativeHandle } from "react" import axios from "axios" import { Site } from "@/app/types" import { PencilLine, Building2, FileText } from "lucide-react" import ErrorToast from "@/components/Error" import SuccessToast from "@/components/Success" import useSite from "@/hooks/useSites" interface EditSiteProps { site: Site onSiteEdited?: () => void } const EditSite = forwardRef<{ resetForm: () => void }, EditSiteProps>(({ site, onSiteEdited }, ref) => { const [name, setName] = useState(site.name) const [description, setDescription] = useState(site.description || "") const [error, setError] = useState("") const [success, setSuccess] = useState("") const { editSite } = useSite() const resetForm = () => { setName(site.name) setDescription(site.description || "") } useImperativeHandle(ref, () => ({ resetForm })) useEffect(() => { resetForm() }, [site]) const handleEditSite = async () => { const result = editSite({ id: site.id, name, description, networks: site.networks }) if (typeof result === "string") { setError(result) return } try { const successMessage = await result if (onSiteEdited && successMessage) { onSiteEdited() setSuccess(successMessage) } } catch (apiError) { setError(typeof apiError === "string" ? apiError : "Failed to edit site") } } return (

Edit Site

setName(e.target.value)} />