import Header from "@/src/components/layouts/header"; import ContainerPage from "@/src/components/layouts/container-page"; import { Breadcrumb, BreadcrumbItem, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from "@/src/components/ui/breadcrumb"; import { Button } from "@/src/components/ui/button"; import { Card } from "@/src/components/ui/card"; import { NewOrganizationForm } from "@/src/features/organizations/components/NewOrganizationForm"; import { NewProjectForm } from "@/src/features/projects/components/NewProjectForm"; import { useQueryProjectOrOrganization } from "@/src/features/projects/hooks"; import { MembershipInvitesPage } from "@/src/features/rbac/components/MembershipInvitesPage"; import { MembersTable } from "@/src/features/rbac/components/MembersTable"; import { createProjectRoute, inviteMembersRoute, } from "@/src/features/setup/setupRoutes"; import { cn } from "@/src/utils/tailwind"; import { Check } from "lucide-react"; import { useRouter } from "next/router"; import { StringParam, useQueryParam } from "use-query-params"; // Multi-step setup process // 1. Create Organization: /setup // 2. Invite Members: /organization/:orgId/setup // 3. Create Project: /organization/:orgId/setup?step=create-project export function SetupPage() { const { project, organization } = useQueryProjectOrOrganization(); const router = useRouter(); const [orgStep] = useQueryParam("orgstep", StringParam); // "invite-members" | "create-project" // starts at 1 to align with breadcrumb const stepInt = !organization ? 1 : project ? 3 : orgStep === "create-project" ? 3 : 2; return ( 1. Create Organization {stepInt > 1 && } 2. Invite Members {stepInt > 2 && } 3. Create Project { // 1. Create Org stepInt === 1 && (

Organizations are used to manage your projects and teams.

{ router.push(inviteMembersRoute(orgId)); }} />
) } { // 2. Invite Members stepInt === 2 && organization && (

Invite members to your organization to collaborate on projects. You can always add more members later.

) } { // 3. Create Project stepInt === 3 && organization && (

Projects are used to group traces, datasets, evals and prompts. Multiple environments are best separated via tags within a project.

router.push(`/project/${projectId}/traces`) } />
) }
{stepInt === 2 && organization && ( )}
); }