/** Workspaces list page. */ import { useState } from "react"; import { Icon } from "../components/icon"; import { useWorkspaces } from "../hooks/use-workspaces"; import { useWorkspaceActions } from "../hooks/use-workspace-actions"; import { WorkspaceCard } from "../components/features/workspace/workspace-card"; import { WorkspaceCreateForm } from "../components/features/workspace/workspace-create-form"; import { ToolStarter } from "../components/features/tool/tool-starter"; import type { Workspace } from "../types/workspace"; export function WorkspacesPage() { const [showCreate, setShowCreate] = useState(false); const [startWorkspace, setStartWorkspace] = useState(null); const { workspaces, loading, error, refresh } = useWorkspaces(); const actions = useWorkspaceActions(); const handleDelete = async (workspace: Workspace) => { await actions.delete(workspace, refresh); }; const handleSync = async (workspace: Workspace) => { await actions.sync( workspace.project_id, workspace.repo_id, workspace, refresh, ); }; return (

Workspaces

{error &&
{error}
} {showCreate && ( { setShowCreate(false); await refresh(); }} onCancel={() => setShowCreate(false)} /> )} {loading && workspaces.length === 0 ? (
Loading workspaces...
) : workspaces.length === 0 ? (

No workspaces yet.

) : (
{workspaces.map((ws) => ( ))}
)} {startWorkspace && (
setStartWorkspace(null)}>
e.stopPropagation()}>

Start Tool

{ setStartWorkspace(null); void refresh(); }} onCancel={() => setStartWorkspace(null)} />
)}
); }