Files
supabase/apps/studio/routes/project/$ref/functions/$functionSlug.tsx
Alaister Young 4129c8954d feat(studio): TanStack project routes — auth/logs/settings/functions (stack 5.2/6, from #46424) (#47118)
**Stack 5.2/6** of the TanStack Start migration (#46424) — second half
of the project routes (S5 was split for CodeRabbit's 150-file cap).
Stacked on **#47117** (5.1).

> [!NOTE]
> Same shape as 5.1 — thin route wrappers over the existing pages-router
components. With this PR every route is present, so `routeTree.gen.ts`
is now **byte-identical to the migration branch**.

## What's in this PR
- **Remaining project routes:** auth, logs, settings, observability,
functions, advisors, project-level integrations.
- **Supporting edits:** hoist `EdgeFunctionsIndexPageWrapper` out of
`getLayout`, `functions/secrets`, and move `DefaultLayout` to the root
for the logs page.
- `routeTree.gen.ts` regenerated for the full set.

## Verification
On top of S1–5.1: `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**
* Reorganized internal routing and page structure to improve navigation
and maintainability across project settings, logs, functions,
authentication, integrations, and observability sections.

<!-- 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-06 18:31:18 +08:00

28 lines
898 B
TypeScript

import { createFileRoute, Outlet, useMatches } from '@tanstack/react-router'
import EdgeFunctionDetailsLayout from '@/components/layouts/EdgeFunctionsLayout/EdgeFunctionDetailsLayout'
export const Route = createFileRoute('/project/$ref/functions/$functionSlug')({
component: FunctionDetailsShell,
// EdgeFunctionDetailsLayout already wraps <EdgeFunctionsLayout>
// internally. Tell the parent functions.tsx shell to skip its own
// EdgeFunctionsLayout wrap so we don't double-wrap.
staticData: {
skipFunctionsLayout: true,
},
})
function FunctionDetailsShell() {
const title = useMatches({
select: (matches) =>
(matches[matches.length - 1]?.staticData as { edgeFunctionDetailsTitle?: string } | undefined)
?.edgeFunctionDetailsTitle ?? '',
})
return (
<EdgeFunctionDetailsLayout title={title}>
<Outlet />
</EdgeFunctionDetailsLayout>
)
}