"use client" import Sidebar from "@/components/Sidebar" import useSite from "@/hooks/useSites" import { useEffect, useState, useRef } from "react" import { Network } from "@/app/types" import Loading from "@/components/Loading" import { EditModeToggle } from "@/components/EditModeToggle" import AddNetwork from "@/components/dialogues/AddNetwork" import { Plus, Pencil, Trash, Info, Cpu } from "lucide-react" import EditNetwork from "@/components/dialogues/EditNetwork" import DeleteNetwork from "@/components/dialogues/DeleteNetwork" import EditSite from "@/components/dialogues/EditSite" import DeleteSite from "@/components/dialogues/DeleteSite" interface SitesPageProps { username: string name: string siteId: number } export default function SitesPage({ username, name, siteId }: SitesPageProps) { const { site, loadSite, updateSite, setSiteId, loading } = useSite() const [isEditMode, setIsEditMode] = useState(false) const editSiteRef = useRef<{ resetForm: () => void }>(null) const [selectedNetwork, setSelectedNetwork] = useState(null) const [selectedNetworkId, setSelectedNetworkId] = useState(null) useEffect(() => { if (siteId) { setSiteId(siteId) } }, [siteId, setSiteId]) const handleEditClick = () => { editSiteRef.current?.resetForm() ;(document.getElementById('edit_site') as HTMLDialogElement)?.showModal() } return (
{loading ? (
) : (

Site - {site.name}

{isEditMode && ( <> )}

Description

{site.description || "No description provided for this site."}

Networks

{isEditMode && ( )}
{site.networks && site.networks.length > 0 ? (
{isEditMode && } {site.networks.map((network, index) => ( {isEditMode && ( )} ))}
# Network Name IPv4 Subnet IPv6 Subnet GatewayActions
{index + 1} {network.name} {network.ipv4Subnet || "—"} {network.ipv6Subnet || "—"} {network.gateway || "—"}
) : (

No networks have been added to this site yet.

{isEditMode && ( )}
)}
)} {selectedNetwork && ( )} {selectedNetworkId && ( )}
) }