mirror of
https://github.com/supabase/supabase.git
synced 2026-10-09 19:35:06 +03:00
**Stack 3/6** of the TanStack Start migration (#46424). Stacked on **#47110** (S2) → review that first; this PR's diff is the app shell. > [!NOTE] > Thin route wrappers that render the existing pages-router page components through the compat shims (S2). Next is untouched — it builds `pages/` and ignores `routes/`. The app doesn't function end-to-end on TanStack until the API + project routes land (S4/S5) and the flag is flipped. ## What's in this PR - `routes/__root.tsx` — root layout + a `beforeLoad` that runs the shared redirect rules; `router.tsx`. - `routes/_auth/*` — sign-in/up, forgot/reset password, SSO/MFA/partner sign-in, CLI login, Stripe-projects login. - `routes/_app/*` — account (me/security/audit/tokens), `org/$slug/*` (general/billing/team/usage/…), support. - `routeTree.gen.ts` — **regenerated** by the tanstackStart vite plugin for exactly the routes in this PR (the migration branch's tree references all ~300 routes, so it can't be copied verbatim here). It's a generated artifact; the meaningful review surface is the route files. ## Verification On top of S1+S2: `studio` typecheck ✓, lint (0 errors) ✓. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Refactor** * Enhanced internal routing infrastructure to improve application performance and code organization. These behind-the-scenes updates ensure a more stable and maintainable foundation for the platform without affecting existing functionality or user experience. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Alaister Young <10985857+alaister@users.noreply.github.com> Co-authored-by: Ivan Vasilov <vasilov.ivan@gmail.com>
24 lines
678 B
TypeScript
24 lines
678 B
TypeScript
import { createFileRoute, Outlet, useMatches } from '@tanstack/react-router'
|
|
|
|
import OrganizationLayout from '@/components/layouts/OrganizationLayout'
|
|
|
|
export const Route = createFileRoute('/_app/org')({
|
|
component: OrgShell,
|
|
})
|
|
|
|
function OrgShell() {
|
|
// `select` form: only re-render when the selected title changes, not on
|
|
// every router tick. See routes/_app.tsx for the full rationale.
|
|
const title = useMatches({
|
|
select: (matches) =>
|
|
(matches[matches.length - 1]?.staticData as { orgLayoutTitle?: string } | undefined)
|
|
?.orgLayoutTitle ?? '',
|
|
})
|
|
|
|
return (
|
|
<OrganizationLayout title={title}>
|
|
<Outlet />
|
|
</OrganizationLayout>
|
|
)
|
|
}
|