'use client' import { useEffect, useState } from 'react' import Link from 'next/link' import { listSites, deleteSite, type Site } from '@/lib/api/sites' import { toast } from 'sonner' import { LoadingOverlay } from '@ciphera-net/ui' import { useAuth } from '@/lib/auth/context' import { BarChartIcon } from '@ciphera-net/ui' export default function SiteList() { const { user } = useAuth() const [sites, setSites] = useState([]) const [loading, setLoading] = useState(true) useEffect(() => { loadSites() }, []) const loadSites = async () => { try { setLoading(true) const data = await listSites() setSites(Array.isArray(data) ? data : []) } catch (error: any) { toast.error('Failed to load sites: ' + (error.message || 'Unknown error')) setSites([]) // Ensure sites is always an array } finally { setLoading(false) } } const handleDelete = async (id: string) => { if (!confirm('Are you sure you want to delete this site? This action cannot be undone.')) { return } try { await deleteSite(id) toast.success('Site deleted successfully') loadSites() } catch (error: any) { toast.error('Failed to delete site: ' + (error.message || 'Unknown error')) } } if (loading) { return } if (sites.length === 0) { return (

No sites yet

Create your first site to get started.

) } return (
{sites.map((site) => (

{site.name}

{site.domain}

View Dashboard {(user?.role === 'owner' || user?.role === 'admin') && ( )}
))}
) }