diff --git a/apps/studio/app/dashboard/v2/[projectRef]/page.tsx b/apps/studio/app/dashboard/v2/[projectRef]/page.tsx new file mode 100644 index 00000000000..17d7d1fad2a --- /dev/null +++ b/apps/studio/app/dashboard/v2/[projectRef]/page.tsx @@ -0,0 +1,10 @@ +import { redirect } from 'next/navigation' + +export default async function V2ProjectShortcutPage({ + params, +}: { + params: Promise<{ projectRef: string }> +}) { + const { projectRef } = await params + redirect(`/dashboard/v2/project/${projectRef}`) +} diff --git a/apps/studio/app/dashboard/v2/org/[orgSlug]/page.tsx b/apps/studio/app/dashboard/v2/org/[orgSlug]/page.tsx new file mode 100644 index 00000000000..ec05a7b19fb --- /dev/null +++ b/apps/studio/app/dashboard/v2/org/[orgSlug]/page.tsx @@ -0,0 +1,58 @@ +'use client' + +import Link from 'next/link' +import { useParams } from 'next/navigation' +import { useOrgProjectsInfiniteQuery } from 'data/projects/org-projects-infinite-query' +import { useOrganizationsQuery } from 'data/organizations/organizations-query' +import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' + +import { V2OrgParamsProvider } from '@/app/v2/V2ParamsContext' + +function OrgDashboardContent() { + const params = useParams() + const orgSlug = params?.orgSlug as string | undefined + + const { data: org } = useOrganizationsQuery({ + select: (orgs) => orgs?.find((o) => o.slug === orgSlug), + }) + const { data: projectsData, isPending } = useOrgProjectsInfiniteQuery( + { slug: orgSlug, limit: 50 }, + { enabled: Boolean(orgSlug) } + ) + const projects = projectsData?.pages?.flatMap((p) => p.projects) ?? [] + + if (!orgSlug) { + return

Select an organization.

+ } + + return ( +
+

{org?.name ?? orgSlug}

+

Projects

+ {isPending ? ( + + ) : ( + + )} +
+ ) +} + +export default function V2OrgPage() { + return ( + + + + ) +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/ProjectShell.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/ProjectShell.tsx new file mode 100644 index 00000000000..174d4db8f5e --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/ProjectShell.tsx @@ -0,0 +1,32 @@ +'use client' + +import { useParams } from 'next/navigation' +import { useMemo } from 'react' + +import { V2ParamsProvider } from '@/app/v2/V2ParamsContext' +import { Shell } from '@/components/v2/Shell' +import { useOrganizationsQuery } from 'data/organizations/organizations-query' +import { useProjectDetailQuery } from 'data/projects/project-detail-query' + +export function ProjectShell({ children }: { children: React.ReactNode }) { + const params = useParams() + const projectRef = params?.projectRef as string | undefined + + const { data: project } = useProjectDetailQuery( + { ref: projectRef }, + { enabled: Boolean(projectRef) } + ) + const { data: organizations } = useOrganizationsQuery() + + const orgSlug = useMemo(() => { + if (!project?.organization_id || !organizations) return undefined + const org = organizations.find((o) => o.id === project.organization_id) + return org?.slug + }, [project?.organization_id, organizations]) + + return ( + + {children} + + ) +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/data/buckets/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/data/buckets/page.tsx new file mode 100644 index 00000000000..72ec5997b4f --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/data/buckets/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function DataBucketsPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/data/channels/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/data/channels/page.tsx new file mode 100644 index 00000000000..90f8a6e6f81 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/data/channels/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function DataChannelsPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/data/edge-functions/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/data/edge-functions/page.tsx new file mode 100644 index 00000000000..df8dcfe2125 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/data/edge-functions/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function DataEdgeFunctionsPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/data/extensions/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/data/extensions/page.tsx new file mode 100644 index 00000000000..ae8745bd11f --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/data/extensions/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function DataExtensionsPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/data/functions/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/data/functions/page.tsx new file mode 100644 index 00000000000..86d8e57617c --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/data/functions/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function DataFunctionsPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/data/indexes/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/data/indexes/page.tsx new file mode 100644 index 00000000000..ef6d011283e --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/data/indexes/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function DataIndexesPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/data/oauth-apps/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/data/oauth-apps/page.tsx new file mode 100644 index 00000000000..27a3d7d38c5 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/data/oauth-apps/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function DataOAuthAppsPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/data/providers/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/data/providers/page.tsx new file mode 100644 index 00000000000..2c9b9b2175c --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/data/providers/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function DataProvidersPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/data/publications/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/data/publications/page.tsx new file mode 100644 index 00000000000..96688665f86 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/data/publications/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function DataPublicationsPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/data/roles/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/data/roles/page.tsx new file mode 100644 index 00000000000..bd6617a547f --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/data/roles/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function DataRolesPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/[tableId]/data/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/[tableId]/data/page.tsx new file mode 100644 index 00000000000..dc96fc53e5d --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/[tableId]/data/page.tsx @@ -0,0 +1,5 @@ +import { V2TableDetailView } from '@/components/v2/views/V2TableDetailView' + +export default function TableDataPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/[tableId]/indexes/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/[tableId]/indexes/page.tsx new file mode 100644 index 00000000000..48aaeb8ec08 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/[tableId]/indexes/page.tsx @@ -0,0 +1,5 @@ +import { V2TableDetailView } from '@/components/v2/views/V2TableDetailView' + +export default function TableIndexesPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/[tableId]/layout.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/[tableId]/layout.tsx new file mode 100644 index 00000000000..fbaafaea94a --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/[tableId]/layout.tsx @@ -0,0 +1,54 @@ +'use client' + +import Link from 'next/link' +import { useParams, usePathname } from 'next/navigation' +import { cn } from 'ui' + +import { useV2Params } from '@/app/v2/V2ParamsContext' + +const SUB_TABS = [ + { slug: 'data', label: 'Data' }, + { slug: 'schema', label: 'Schema' }, + { slug: 'policies', label: 'Policies' }, + { slug: 'indexes', label: 'Indexes' }, + { slug: 'settings', label: 'Settings' }, +] + +export default function TableDetailLayout({ + children, +}: { + children: React.ReactNode +}) { + const params = useParams() + const pathname = usePathname() + const { projectRef } = useV2Params() + const tableId = params?.tableId as string + + const base = projectRef ? `/dashboard/v2/project/${projectRef}/data/tables/${tableId}` : '' + + return ( +
+
+ {SUB_TABS.map((tab) => { + const href = `${base}/${tab.slug}` + const isActive = pathname === href || pathname?.startsWith(href + '/') + return ( + + {tab.label} + + ) + })} +
+
{children}
+
+ ) +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/[tableId]/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/[tableId]/page.tsx new file mode 100644 index 00000000000..ad763a45ee7 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/[tableId]/page.tsx @@ -0,0 +1,10 @@ +import { redirect } from 'next/navigation' + +export default async function TableDetailPage({ + params, +}: { + params: Promise<{ projectRef: string; tableId: string }> +}) { + const { projectRef, tableId } = await params + redirect(`/dashboard/v2/project/${projectRef}/data/tables/${tableId}/data`) +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/[tableId]/policies/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/[tableId]/policies/page.tsx new file mode 100644 index 00000000000..db18ae596a1 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/[tableId]/policies/page.tsx @@ -0,0 +1,5 @@ +import { V2TableDetailView } from '@/components/v2/views/V2TableDetailView' + +export default function TablePoliciesPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/[tableId]/schema/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/[tableId]/schema/page.tsx new file mode 100644 index 00000000000..b80f6301261 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/[tableId]/schema/page.tsx @@ -0,0 +1,5 @@ +import { V2TableDetailView } from '@/components/v2/views/V2TableDetailView' + +export default function TableSchemaPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/[tableId]/settings/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/[tableId]/settings/page.tsx new file mode 100644 index 00000000000..0bc59d9b30c --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/[tableId]/settings/page.tsx @@ -0,0 +1,5 @@ +import { V2TableDetailView } from '@/components/v2/views/V2TableDetailView' + +export default function TableSettingsPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/page.tsx new file mode 100644 index 00000000000..10084a7aeda --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/data/tables/page.tsx @@ -0,0 +1,5 @@ +import { V2TablesList } from '@/components/v2/views/V2TablesList' + +export default function DataTablesPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/data/types/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/data/types/page.tsx new file mode 100644 index 00000000000..b59e212011d --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/data/types/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function DataTypesPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/data/users/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/data/users/page.tsx new file mode 100644 index 00000000000..f3a410d2e77 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/data/users/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function DataUsersPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/layout.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/layout.tsx new file mode 100644 index 00000000000..99d16fa2341 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/layout.tsx @@ -0,0 +1,9 @@ +import { ProjectShell } from './ProjectShell' + +export default function ProjectLayout({ + children, +}: { + children: React.ReactNode +}) { + return {children} +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/obs/alerts/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/obs/alerts/page.tsx new file mode 100644 index 00000000000..38bf2643be8 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/obs/alerts/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function ObsAlertsPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/obs/logs/api/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/obs/logs/api/page.tsx new file mode 100644 index 00000000000..c6407030269 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/obs/logs/api/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function ObsLogsApiPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/obs/logs/auth/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/obs/logs/auth/page.tsx new file mode 100644 index 00000000000..6228bfc536f --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/obs/logs/auth/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function ObsLogsAuthPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/obs/logs/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/obs/logs/page.tsx new file mode 100644 index 00000000000..fc548badbb0 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/obs/logs/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function ObsLogsPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/obs/logs/postgres/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/obs/logs/postgres/page.tsx new file mode 100644 index 00000000000..45c70583532 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/obs/logs/postgres/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function ObsLogsPostgresPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/obs/metrics/connections/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/obs/metrics/connections/page.tsx new file mode 100644 index 00000000000..30cdf6e0a2c --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/obs/metrics/connections/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function ObsMetricsConnectionsPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/obs/metrics/cpu/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/obs/metrics/cpu/page.tsx new file mode 100644 index 00000000000..513055b5969 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/obs/metrics/cpu/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function ObsMetricsCpuPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/obs/metrics/disk/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/obs/metrics/disk/page.tsx new file mode 100644 index 00000000000..2301a7e4dd3 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/obs/metrics/disk/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function ObsMetricsDiskPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/obs/metrics/memory/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/obs/metrics/memory/page.tsx new file mode 100644 index 00000000000..5fe6a1620f4 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/obs/metrics/memory/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function ObsMetricsMemoryPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/page.tsx new file mode 100644 index 00000000000..5fce7ef4e58 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/page.tsx @@ -0,0 +1,10 @@ +import { redirect } from 'next/navigation' + +export default async function V2ProjectPage({ + params, +}: { + params: Promise<{ projectRef: string }> +}) { + const { projectRef } = await params + redirect(`/dashboard/v2/project/${projectRef}/data/tables`) +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/settings/api-keys/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/api-keys/page.tsx new file mode 100644 index 00000000000..8c62569a565 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/api-keys/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function SettingsApiKeysPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/settings/auth/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/auth/page.tsx new file mode 100644 index 00000000000..e90d25ad538 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/auth/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function SettingsAuthPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/settings/billing/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/billing/page.tsx new file mode 100644 index 00000000000..7f01294d722 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/billing/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function SettingsBillingPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/settings/branches/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/branches/page.tsx new file mode 100644 index 00000000000..9e4addbe973 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/branches/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function SettingsBranchesPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/settings/compute/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/compute/page.tsx new file mode 100644 index 00000000000..e08b892a0a7 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/compute/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function SettingsComputePage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/settings/functions/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/functions/page.tsx new file mode 100644 index 00000000000..c6183b6674f --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/functions/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function SettingsFunctionsPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/settings/general/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/general/page.tsx new file mode 100644 index 00000000000..e4f3696280d --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/general/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function SettingsGeneralPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/settings/members/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/members/page.tsx new file mode 100644 index 00000000000..8665362dd2e --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/members/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function SettingsMembersPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/settings/merge-requests/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/merge-requests/page.tsx new file mode 100644 index 00000000000..7f2da09c9aa --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/merge-requests/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function SettingsMergeRequestsPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/settings/network/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/network/page.tsx new file mode 100644 index 00000000000..8fec1e08546 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/network/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function SettingsNetworkPage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/settings/realtime/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/realtime/page.tsx new file mode 100644 index 00000000000..5dd95007e14 --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/realtime/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function SettingsRealtimePage() { + return +} diff --git a/apps/studio/app/dashboard/v2/project/[projectRef]/settings/storage/page.tsx b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/storage/page.tsx new file mode 100644 index 00000000000..ed0eb19cf5f --- /dev/null +++ b/apps/studio/app/dashboard/v2/project/[projectRef]/settings/storage/page.tsx @@ -0,0 +1,5 @@ +import { V2PlaceholderView } from '@/components/v2/views/V2PlaceholderView' + +export default function SettingsStoragePage() { + return +} diff --git a/apps/studio/app/layout.tsx b/apps/studio/app/layout.tsx new file mode 100644 index 00000000000..6f7fe9e284f --- /dev/null +++ b/apps/studio/app/layout.tsx @@ -0,0 +1,46 @@ +import type { Metadata } from 'next' + +import { AppRouterProviders } from '@/app/v2/AppRouterProviders' +import { genFaviconData } from 'common/MetaFavicons/app-router' +import 'react-data-grid/lib/styles.css' +import 'styles/code.scss' +import 'styles/contextMenu.scss' +import 'styles/editor.scss' +import 'styles/focus.scss' +import 'styles/graphiql-base.scss' +import 'styles/grid.scss' +import 'styles/main.scss' +import 'styles/markdown-preview.scss' +import 'styles/monaco.scss' +import 'styles/react-data-grid-logs.scss' +import 'styles/reactflow.scss' +import 'styles/storage.scss' +import 'styles/stripe.scss' +import 'styles/toast.scss' +import 'styles/typography.scss' +import 'styles/ui.scss' +import 'ui-patterns/ShimmeringLoader/index.css' +import 'ui/build/css/themes/dark.css' +import 'ui/build/css/themes/light.css' + +const BASE_PATH = process.env.NEXT_PUBLIC_BASE_PATH ?? '' + +export const metadata: Metadata = { + applicationName: 'Supabase Studio', + title: 'Supabase', + icons: genFaviconData(BASE_PATH), +} + +export default function RootLayout({ + children, +}: { + children: React.ReactNode +}) { + return ( + + + {children} + + + ) +} diff --git a/apps/studio/app/v2/AppRouterProviders.tsx b/apps/studio/app/v2/AppRouterProviders.tsx new file mode 100644 index 00000000000..562ca655fab --- /dev/null +++ b/apps/studio/app/v2/AppRouterProviders.tsx @@ -0,0 +1,35 @@ +'use client' + +import { QueryClientProvider } from '@tanstack/react-query' +import { ThemeProvider } from 'common' +import { useRootQueryClient } from 'data/query-client' +import { customFont, sourceCodePro } from 'fonts' +import { AuthProvider } from 'lib/auth' +import { ReactNode } from 'react' +import { TooltipProvider } from 'ui' + +export function AppRouterProviders({ children }: { children: ReactNode }) { + const queryClient = useRootQueryClient() + + return ( + + +