import { useState } from 'react' import { IconChevronRight, IconEggCracked, IconLoader2, IconPlus } from '@tabler/icons-react' import { Link, useLocation } from 'wouter' import { useDiscoveredWorkspaces, useWorkspacePreview, useWorkspaces, useWorkspaceSetupInfo } from './api' import { CreateWorkspaceDialog } from './workspace-setup/CreateWorkspaceDialog' import { ImportWorkspaceDialog } from './workspace-setup/ImportWorkspaceDialog' import { DemoDialog } from './workspace-setup/DemoDialog' import { useWorkspaceImport } from './workspace-setup/useWorkspaceImport' import { HomeLogo } from './HomeLogo' import { useAppConfig } from '@/client/api/app-config' import { Button } from '@/client/components/ui/button' import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/client/components/ui/collapsible' import { cn } from '@/client/lib/cn' import { getWorkspaceThemeStyle, usePreloadWorkspaceFonts } from '@/client/runtime/workspace-theme' import { useUiStore } from '@/client/store/ui' import { WorkspaceAgentIcons, workspaceDisplayName, workspaceProviderIcon } from '@/client/features/home/workspace-presentation' import type { DiscoveredWorkspace, WorkspaceEntry } from '@/lib/types' import { WorkspacePreview } from './WorkspacePreview' export function HomePage() { usePreloadWorkspaceFonts() const [, navigate] = useLocation() const workspacesQuery = useWorkspaces() const discoveredQuery = useDiscoveredWorkspaces() const setupInfo = useWorkspaceSetupInfo() const importFlow = useWorkspaceImport({ onSuccess: entry => navigate(`/workspace/${entry.id}`) }) const appConfig = useAppConfig() const [promoDialogOpen, setPromoDialogOpen] = useState(false) const discoveredWorkspacesOpen = useUiStore(state => state.discoveredWorkspacesOpen) const setDiscoveredWorkspacesOpen = useUiStore(state => state.setDiscoveredWorkspacesOpen) if (workspacesQuery.isPending || discoveredQuery.isPending) { return (
Could not load spaces.
Workspace is a place for all the chats, widgets, and views that share the same context. Create a new one or import an existing folder you’ve worked in before.