import { useState } from "react"; import { Link, useNavigate, useParams } from "@tanstack/react-router"; import { motion, type Variants } from "framer-motion"; import { MessageSquare, ChevronRight, Clock, CircleDot, ArrowLeft } from "lucide-react"; import { useSessions } from "@/api/queries"; import { PageLoader } from "@/components/shared/LoadingSpinner"; import { ErrorAlert } from "@/components/shared/ErrorAlert"; import { Pagination } from "@/components/shared/Pagination"; import { EmptyState } from "@/components/shared/EmptyState"; import type { components } from "@/api/schema.d.ts"; type Session = components["schemas"]["Session"]; const container: Variants = { hidden: { opacity: 0 }, show: { opacity: 1, transition: { staggerChildren: 0.05 } }, }; const item: Variants = { hidden: { opacity: 0, y: 10 }, show: { opacity: 1, y: 0, transition: { type: "spring", stiffness: 280, damping: 24 } }, }; export function SessionList() { const { workspaceId } = useParams({ strict: false }) as { workspaceId: string }; const [page, setPage] = useState(1); const navigate = useNavigate(); const { data, isLoading, error } = useSessions(workspaceId, page); const sessions: Session[] = (data as { items?: Session[] } | undefined)?.items ?? []; const totalPages = (data as { pages?: number } | undefined)?.pages ?? 1; const total = (data as { total?: number } | undefined)?.total ?? 0; return (
{workspaceId}

Sessions

{total > 0 && ( {total} )}

{workspaceId}

{isLoading && } {!isLoading && sessions.length === 0 && ( )} {!isLoading && sessions.length > 0 && ( <> {sessions.map((session) => ( navigate({ to: "/workspaces/$workspaceId/sessions/$sessionId", params: { workspaceId, sessionId: session.id } as never, }) } className="w-full text-left rounded-xl px-5 py-4 group" style={{ background: "rgba(255,255,255,0.02)", border: "1px solid rgba(255,255,255,0.06)", }} whileHover={{ background: "rgba(99,102,241,0.06)", borderColor: "rgba(99,102,241,0.2)", x: 2, }} >
{session.id}
{session.is_active && (
Active
)}
{session.created_at && (

{new Date(session.created_at).toLocaleString()}

)}
))}
)}
); }