"use client"; import { useState, useEffect } from "react"; import type { ReactElement } from "react"; import { RecentTasksWidget } from "@/components/dashboard/RecentTasksWidget"; import { UpcomingEventsWidget } from "@/components/dashboard/UpcomingEventsWidget"; import { QuickCaptureWidget } from "@/components/dashboard/QuickCaptureWidget"; import { DomainOverviewWidget } from "@/components/dashboard/DomainOverviewWidget"; import { mockTasks } from "@/lib/api/tasks"; import { mockEvents } from "@/lib/api/events"; import type { Task, Event } from "@mosaic/shared"; export default function DashboardPage(): ReactElement { const [tasks, setTasks] = useState([]); const [events, setEvents] = useState([]); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { void loadDashboardData(); }, []); async function loadDashboardData(): Promise { setIsLoading(true); setError(null); try { // TODO: Replace with real API calls when backend is ready // const [tasksData, eventsData] = await Promise.all([fetchTasks(), fetchEvents()]); await new Promise((resolve) => setTimeout(resolve, 300)); setTasks(mockTasks); setEvents(mockEvents); } catch (err) { setError( err instanceof Error ? err.message : "We had trouble loading your dashboard. Please try again when you're ready." ); } finally { setIsLoading(false); } } return (

Dashboard

Welcome back! Here's your overview

{error !== null ? (

{error}

) : (
{/* Top row: Domain Overview and Quick Capture */}
)}
); }