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"; 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(); return ( <> {space?.name || "Untitled"} ), }, ]} tabs={[ { label: "Overview", value: "overview", isActive: location.pathname.includes("/overview"), onClick: () => navigate(`/home/space/${space.id}/overview`), }, { label: "Facts", value: "facts", isActive: location.pathname.includes("/facts"), onClick: () => navigate(`/home/space/${space.id}/facts`), }, { label: "Patterns", value: "patterns", isActive: location.pathname.includes("/patterns"), onClick: () => navigate(`/home/space/${space.id}/patterns`), }, ]} actionsNode={ } > {() => ( )} } />
); }