diff --git a/ui/src/App.tsx b/ui/src/App.tsx index ed6c9c51..1cfdd9df 100644 --- a/ui/src/App.tsx +++ b/ui/src/App.tsx @@ -1,5 +1,5 @@ import { useEffect, useRef } from "react"; -import { Navigate, Outlet, Route, Routes, useLocation } from "@/lib/router"; +import { Navigate, Outlet, Route, Routes, useLocation, useParams } from "@/lib/router"; import { useQuery } from "@tanstack/react-query"; import { Button } from "@/components/ui/button"; import { Layout } from "./components/Layout"; @@ -108,6 +108,7 @@ function boardRoutes() { <> } /> } /> + } /> } /> } /> } /> @@ -164,6 +165,57 @@ function LegacySettingsRedirect() { return ; } +function OnboardingRoutePage() { + const { companies, loading } = useCompany(); + const { onboardingOpen, openOnboarding } = useDialog(); + const { companyPrefix } = useParams<{ companyPrefix?: string }>(); + const opened = useRef(false); + const matchedCompany = companyPrefix + ? companies.find((company) => company.issuePrefix.toUpperCase() === companyPrefix.toUpperCase()) ?? null + : null; + + useEffect(() => { + if (loading || opened.current || onboardingOpen) return; + opened.current = true; + if (matchedCompany) { + openOnboarding({ initialStep: 2, companyId: matchedCompany.id }); + return; + } + openOnboarding(); + }, [companyPrefix, loading, matchedCompany, onboardingOpen, openOnboarding]); + + const title = matchedCompany + ? `Add another agent to ${matchedCompany.name}` + : companies.length > 0 + ? "Create another company" + : "Create your first company"; + const description = matchedCompany + ? "Run onboarding again to add an agent and a starter task for this company." + : companies.length > 0 + ? "Run onboarding again to create another company and seed its first agent." + : "Get started by creating a company and your first agent."; + + return ( +
+
+

{title}

+

{description}

+
+ +
+
+
+ ); +} + function CompanyRootRedirect() { const { companies, selectedCompany, loading } = useCompany(); const { onboardingOpen } = useDialog(); @@ -242,6 +294,7 @@ export function App() { }> } /> + } /> } /> }> } />