import Link from "next/link"; import { redirect } from "next/navigation"; import { getMyMeshesResponseSchema } from "@turbostarter/api/schema"; import { handle } from "@turbostarter/api/utils"; import { Badge } from "@turbostarter/ui-web/badge"; import { buttonVariants } from "@turbostarter/ui-web/button"; import { pathsConfig } from "~/config/paths"; import { api } from "~/lib/api/server"; import { getMetadata } from "~/lib/metadata"; export const generateMetadata = getMetadata({ title: "Dashboard", description: "Your meshes.", }); export default async function DashboardHomePage() { const { data } = await handle(api.my.meshes.$get, { schema: getMyMeshesResponseSchema, })({ query: { page: "1", perPage: "6", sort: JSON.stringify([]) }, }); // First-time onboarding: 0-mesh user → bounce to create if (data.length === 0) { redirect(`${pathsConfig.dashboard.user.meshes.new}?onboarding=1`); } return (

Your meshes

Open one to see its members, generate invites, or share it.

{data.map((m) => (

{m.name}

{m.slug}

{m.isOwner ? "owner" : m.myRole}
{m.tier} {m.memberCount} {m.memberCount === 1 ? "member" : "members"}
))}
All meshes New mesh
); }