Files
supabase/apps/studio/routes/project/$ref/sql.tsx
Alaister Young 7d3f72ec7d feat(studio): TanStack project routes — data surfaces (stack 5.1/6, from #46424) (#47117)
**Stack 5.1/6** of the TanStack Start migration (#46424). The original
S5 (174 files) was over CodeRabbit's 150-file review cap, so it's split
into 5.1 + 5.2 by product. Stacked on **#47113** (S4).

> [!NOTE]
> Thin route wrappers rendering the existing pages-router components via
compat shims. Next-safe (full Next build run). The TanStack app isn't
functional end-to-end until 5.2 + the matrix flip.

## What's in this PR
- **Data-cluster project routes:** database, editor, sql, storage,
realtime, branches.
- **Top-level / onboarding routes:** `authorize`, `join`, `logout`,
`redeem`, `verify-email`, `claim-project`, aws-marketplace,
Vercel/GitHub integration entrypoints; `_app`/`_auth` layout shells;
`/org/_` + `/project/_` catch-alls.
- **Supporting edits:** hoist `BranchesPageWrapper` out of `getLayout`,
`ConnectStepsSection` `import.meta.glob`, `api/server.js`.
- `routeTree.gen.ts` regenerated for the routes present so far.

## Verification
On top of S1–S4: `studio` typecheck ✓, lint (0 errors) ✓, **Next build ✓
(181/181 pages)**.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Refactor**
* Restructured application routing infrastructure for improved code
organization and maintainability.
* Extracted and refactored layout wrapper components for enhanced
reusability across different sections of the application.
<!-- 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>
2026-07-03 21:22:06 +08:00

30 lines
1.2 KiB
TypeScript

import { createFileRoute, Outlet } from '@tanstack/react-router'
import { EditorBaseLayout } from '@/components/layouts/editors/EditorBaseLayout'
import SQLEditorLayout from '@/components/layouts/SQLEditorLayout/SQLEditorLayout'
import { SQLEditorMenu } from '@/components/layouts/SQLEditorLayout/SQLEditorMenu'
export const Route = createFileRoute('/project/$ref/sql')({
component: SQLEditorShell,
})
// Twin of routes/project/$ref/editor.tsx — all four sql/* leaves share
// identical layout wrapping (`<DefaultLayout><EditorBaseLayout productMenu>
// <SQLEditorLayout>{page}</SQLEditorLayout></EditorBaseLayout>`), so the
// shell hardcodes the props with no staticData overrides. DefaultLayout
// is provided by the parent `routes/project/$ref.tsx` shell.
//
// EditorBaseLayout wraps in <ProjectLayoutWithAuth>; SQLEditorLayout adds
// its own `withAuth` HOC but doesn't add another ProjectLayout — so no
// double-render concerns, only doubled auth check (a no-op when already
// authenticated).
function SQLEditorShell() {
return (
<EditorBaseLayout productMenu={<SQLEditorMenu />} product="SQL Editor">
<SQLEditorLayout>
<Outlet />
</SQLEditorLayout>
</EditorBaseLayout>
)
}