import { PageHeader } from "~/components/common/page-header"; import { type LoaderFunctionArgs } from "@remix-run/server-runtime"; import { requireUserId } from "~/services/session.server"; import { ClientOnly } from "remix-utils/client-only"; import { SpaceService } from "~/services/space.server"; import { useTypedLoaderData } from "remix-typedjson"; import { Outlet, useLocation, useNavigate } from "@remix-run/react"; import { SpaceOptions } from "~/components/spaces/space-options"; import { LoaderCircle } from "lucide-react"; import { Button } from "~/components/ui"; import React from "react"; import { AddMemoryDialog } from "~/components/command-bar/memory-dialog.client"; export async function loader({ request, params }: LoaderFunctionArgs) { const userId = await requireUserId(request); const spaceService = new SpaceService(); const spaceId = params.spaceId; // Get spaceId from URL params const space = await spaceService.getSpace(spaceId as string, userId); return space; } export default function Space() { const space = useTypedLoaderData(); const location = useLocation(); const navigate = useNavigate(); const [showAddMemory, setShowAddMemory] = React.useState(false); return ( <> {space?.name || "Untitled"} ), }, ]} tabs={[ { label: "Overview", value: "overview", isActive: location.pathname.includes("/overview"), onClick: () => navigate(`/home/space/${space.id}/overview`), }, { label: "Episodes", value: "edpisodes", isActive: location.pathname.includes("/episodes"), onClick: () => navigate(`/home/space/${space.id}/episodes`), }, ]} actionsNode={ } > {() => (
)}
} />
{showAddMemory && ( )}
); }