"use client"; import { useState } from "react"; import Link from "next/link"; import styles from "@/app/_components/Shell.module.css"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { normalizeProjects } from "@/lib/normalize"; import { useCreateProjectProjectsPost, useListProjectsProjectsGet, } from "@/api/generated/projects/projects"; export default function ProjectsPage() { const [name, setName] = useState(""); const projects = useListProjectsProjectsGet(); const projectList = normalizeProjects(projects.data); const createProject = useCreateProjectProjectsPost({ mutation: { onSuccess: () => { setName(""); projects.refetch(); }, }, }); const sorted = projectList.slice().sort((a, b) => a.name.localeCompare(b.name)); return (

Projects

Create, view, and drill into projects.

Create project
setName(e.target.value)} /> {createProject.error ? (
{(createProject.error as Error).message}
) : null}
All projects {sorted.length} total
{sorted.map((p) => (
{p.name}
{p.status} {p.id ? ( Open ) : null}
))} {sorted.length === 0 ?
No projects yet.
: null}
); }