diff --git a/packages/web/src/routes/initiatives/index.tsx b/packages/web/src/routes/initiatives/index.tsx index 8d7177f..69faebb 100644 --- a/packages/web/src/routes/initiatives/index.tsx +++ b/packages/web/src/routes/initiatives/index.tsx @@ -1,19 +1,76 @@ -import { createFileRoute } from '@tanstack/react-router' -import { trpc } from '../../lib/trpc' +import { useState } from "react"; +import { createFileRoute, useNavigate } from "@tanstack/react-router"; +import { Plus } from "lucide-react"; +import { Button } from "@/components/ui/button"; +import { InitiativeList } from "@/components/InitiativeList"; +import { CreateInitiativeDialog } from "@/components/CreateInitiativeDialog"; -export const Route = createFileRoute('/initiatives/')({ +export const Route = createFileRoute("/initiatives/")({ component: DashboardPage, -}) +}); + +type StatusFilter = "all" | "active" | "completed" | "archived"; + +const filterOptions: { value: StatusFilter; label: string }[] = [ + { value: "all", label: "All" }, + { value: "active", label: "Active" }, + { value: "completed", label: "Completed" }, + { value: "archived", label: "Archived" }, +]; function DashboardPage() { - const health = trpc.health.useQuery() + const navigate = useNavigate(); + const [statusFilter, setStatusFilter] = useState("all"); + const [createDialogOpen, setCreateDialogOpen] = useState(false); + return ( -
-

Initiative Dashboard

-

- Server: {health.data?.status ?? 'connecting...'} -

-

Content coming in Phase 17

+
+ {/* Page header */} +
+

Initiatives

+
+ + +
+
+ + {/* Initiative list */} + setCreateDialogOpen(true)} + onViewInitiative={(id) => + navigate({ to: "/initiatives/$id", params: { id } }) + } + onSpawnArchitect={(_initiativeId, _mode) => { + // Architect spawning is self-contained within SpawnArchitectDropdown + // This callback is available for future toast notifications + }} + onDeleteInitiative={(_id) => { + // Delete is a placeholder (no deleteInitiative tRPC procedure yet) + // ActionMenu handles this internally when implemented + }} + /> + + {/* Create initiative dialog */} +
- ) + ); }