{session.display_name || session.tool_type_name || "Unnamed Session"}
+ + {session.status} + ++ {session.project_name} · {session.repository_name} +
+{session.tool_type_name}
+diff --git a/apps/web/src/components/features/dashboard/ActiveSessionsList.tsx b/apps/web/src/components/features/dashboard/ActiveSessionsList.tsx new file mode 100644 index 0000000..95aa8dc --- /dev/null +++ b/apps/web/src/components/features/dashboard/ActiveSessionsList.tsx @@ -0,0 +1,82 @@ +import type { Session } from "../../../types/session"; +import { Icon } from "../../../components/icon"; + +interface ActiveSessionsListProps { + sessions: Session[]; + actionBusy: string | null; + onOpen: (session: Session) => void; + onStop: (session: Session) => void; + onDelete: (session: Session) => void; + onRecreateTunnel: (session: Session) => void; +} + +export const ActiveSessionsList = ({ + sessions, + actionBusy, + onOpen, + onStop, + onDelete, + onRecreateTunnel, +}: ActiveSessionsListProps) => { + if (sessions.length === 0) { + return
No active sessions right now.
; + } + + return ( ++ {session.project_name} · {session.repository_name} +
+{session.tool_type_name}
+{card.label}
++ {card.key === "openSessions" + ? activeSessionsCount + : card.key === "projects" + ? summary.projects + : summary.repositories} +
+No projects yet.
; + } + + return ( +{project.description}
+ )} +Recent sessions
+