From bfc6a9746661302768becbb6fa42317c6592583a Mon Sep 17 00:00:00 2001 From: Ben Senescu <44480372+bensenescu@users.noreply.github.com> Date: Tue, 24 Mar 2026 17:50:35 -0400 Subject: [PATCH] refactor project layouts around route boundaries (#45) * refactor: align app layouts with route boundaries * fix: honor auth redirect search in auth layout --- src/client/components/Sidebar.tsx | 57 +- .../components/UnauthenticatedErrorCard.tsx | 17 +- src/client/features/auth/AuthPage.tsx | 17 +- src/client/layout/AppShell.tsx | 335 +++++------- src/client/layout/AppShellParts.tsx | 163 ++++++ src/lib/auth-redirect.ts | 26 +- src/routeTree.gen.ts | 514 ++++++++++-------- src/routes/__root.tsx | 119 +--- .../{ => _app}/help/dataforseo-api-key.tsx | 2 +- src/routes/{ => _app}/index.tsx | 2 +- src/routes/_app/route.tsx | 14 + src/routes/_auth.sign-in.tsx | 4 +- src/routes/_auth.sign-up.tsx | 4 +- src/routes/_auth.tsx | 30 +- src/routes/{ => _project}/p/$projectId/ai.tsx | 2 +- .../{ => _project}/p/$projectId/audit.tsx | 2 +- .../p/$projectId/audit/index.tsx | 4 +- .../p/$projectId/audit/issues/$resultId.tsx | 4 +- .../{ => _project}/p/$projectId/backlinks.tsx | 2 +- .../{ => _project}/p/$projectId/domain.tsx | 2 +- .../{ => _project}/p/$projectId/index.tsx | 2 +- .../{ => _project}/p/$projectId/keywords.tsx | 2 +- src/routes/_project/p/$projectId/route.tsx | 48 ++ .../{ => _project}/p/$projectId/saved.tsx | 2 +- src/routes/_project/route.tsx | 9 + src/routes/p/$projectId/route.tsx | 41 -- 26 files changed, 748 insertions(+), 676 deletions(-) create mode 100644 src/client/layout/AppShellParts.tsx rename src/routes/{ => _app}/help/dataforseo-api-key.tsx (97%) rename src/routes/{ => _app}/index.tsx (97%) create mode 100644 src/routes/_app/route.tsx rename src/routes/{ => _project}/p/$projectId/ai.tsx (98%) rename src/routes/{ => _project}/p/$projectId/audit.tsx (68%) rename src/routes/{ => _project}/p/$projectId/audit/index.tsx (98%) rename src/routes/{ => _project}/p/$projectId/audit/issues/$resultId.tsx (90%) rename src/routes/{ => _project}/p/$projectId/backlinks.tsx (93%) rename src/routes/{ => _project}/p/$projectId/domain.tsx (93%) rename src/routes/{ => _project}/p/$projectId/index.tsx (77%) rename src/routes/{ => _project}/p/$projectId/keywords.tsx (95%) create mode 100644 src/routes/_project/p/$projectId/route.tsx rename src/routes/{ => _project}/p/$projectId/saved.tsx (99%) create mode 100644 src/routes/_project/route.tsx delete mode 100644 src/routes/p/$projectId/route.tsx diff --git a/src/client/components/Sidebar.tsx b/src/client/components/Sidebar.tsx index 8383828..9927f1f 100644 --- a/src/client/components/Sidebar.tsx +++ b/src/client/components/Sidebar.tsx @@ -3,42 +3,12 @@ import { ChevronsUpDown, X } from "lucide-react"; import { getProjectNavItems } from "@/client/navigation/items"; interface SidebarProps { - currentPath: string; - projectId: string | null; + projectId: string; onNavigate?: () => void; onClose?: () => void; } -export function Sidebar({ - currentPath, - projectId, - onNavigate, - onClose, -}: SidebarProps) { - // If we don't have a projectId yet (e.g., root redirect hasn't fired), - // don't render nav links since we can't build the URLs. - if (!projectId) { - return ( -
-
- OpenSEO - {onClose && ( - - )} -
-
- -
-
- ); - } - +export function Sidebar({ projectId, onNavigate, onClose }: SidebarProps) { const projectNavItems = getProjectNavItems(projectId); return ( @@ -73,25 +43,26 @@ export function Sidebar({ {/* Navigation */}