feat(web): user dashboard — my meshes, detail view, invites list
Four new routes under /dashboard/(user)/*:
- /dashboard/meshes — card grid of user's meshes with myRole badge,
memberCount, tier, archived state. Empty state with "Create first mesh"
CTA.
- /dashboard/meshes/[id] — mesh detail (members list + active invites)
with "Generate invite link" CTA in header.
- /dashboard/meshes/new — placeholder route for create form (form lands
in next commit).
- /dashboard/meshes/[id]/invite — placeholder route for invite generator
(generator lands in next commit).
- /dashboard/invites — table of invites the user has issued across all
meshes, with derived status (active/revoked/expired/exhausted).
Sidebar nav (user group) extended with Meshes + Invites entries. paths
config extended with dashboard.user.meshes.{index,new,mesh,invite} and
dashboard.user.invites.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -90,6 +90,13 @@ const pathsConfig = {
|
||||
index: DASHBOARD_PREFIX,
|
||||
ai: `${DASHBOARD_PREFIX}/ai`,
|
||||
vocabulary: `${DASHBOARD_PREFIX}/vocabulary`,
|
||||
meshes: {
|
||||
index: `${DASHBOARD_PREFIX}/meshes`,
|
||||
new: `${DASHBOARD_PREFIX}/meshes/new`,
|
||||
mesh: (id: string) => `${DASHBOARD_PREFIX}/meshes/${id}`,
|
||||
invite: (id: string) => `${DASHBOARD_PREFIX}/meshes/${id}/invite`,
|
||||
},
|
||||
invites: `${DASHBOARD_PREFIX}/invites`,
|
||||
settings: {
|
||||
index: `${DASHBOARD_PREFIX}/settings`,
|
||||
security: `${DASHBOARD_PREFIX}/settings/security`,
|
||||
|
||||
Reference in New Issue
Block a user