"use client"; import { useState, useEffect } from "react"; import type { Domain } from "@mosaic/shared"; import { DomainList } from "@/components/domains/DomainList"; import { fetchDomains, deleteDomain } from "@/lib/api/domains"; export default function DomainsPage(): React.ReactElement { const [domains, setDomains] = useState([]); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { void loadDomains(); }, []); async function loadDomains(): Promise { try { setIsLoading(true); const response = await fetchDomains(); setDomains(response.data); setError(null); } catch (err) { setError(err instanceof Error ? err.message : "Failed to load domains"); } finally { setIsLoading(false); } } function handleEdit(domain: Domain): void { // TODO: Open edit modal/form console.log("Edit domain:", domain); } async function handleDelete(domain: Domain): Promise { if (!confirm(`Are you sure you want to delete "${domain.name}"?`)) { return; } try { await deleteDomain(domain.id); await loadDomains(); } catch (err) { setError(err instanceof Error ? err.message : "Failed to delete domain"); } } return (

Domains

Organize your tasks and projects by life areas

{error && (
{error}
)}
); }