Next.js Supabase V3 (#463)

Version 3 of the kit:
- Radix UI replaced with Base UI (using the Shadcn UI patterns)
- next-intl replaces react-i18next
- enhanceAction deprecated; usage moved to next-safe-action
- main layout now wrapped with [locale] path segment
- Teams only mode
- Layout updates
- Zod v4
- Next.js 16.2
- Typescript 6
- All other dependencies updated
- Removed deprecated Edge CSRF
- Dynamic Github Action runner
This commit is contained in:
Giancarlo Buomprisco
2026-03-24 13:40:38 +08:00
committed by GitHub
parent 4912e402a3
commit 7ebff31475
840 changed files with 71395 additions and 20095 deletions

View File

@@ -1,58 +1,5 @@
import { headers } from 'next/headers';
import { Toaster } from '@kit/ui/sonner';
import { cn } from '@kit/ui/utils';
import { RootProviders } from '~/components/root-providers';
import { getFontsClassName } from '~/lib/fonts';
import { createI18nServerInstance } from '~/lib/i18n/i18n.server';
import { generateRootMetadata } from '~/lib/root-metadata';
import { getRootTheme } from '~/lib/root-theme';
import '../styles/globals.css';
export const generateMetadata = () => {
return generateRootMetadata();
};
export default async function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
const [theme, nonce, i18n] = await Promise.all([
getRootTheme(),
getCspNonce(),
createI18nServerInstance(),
]);
const className = getRootClassName(theme);
const language = i18n.language;
return (
<html lang={language} className={className}>
<body>
<RootProviders theme={theme} lang={language} nonce={nonce}>
{children}
</RootProviders>
<Toaster richColors={true} theme={theme} position="top-center" />
</body>
</html>
);
}
function getRootClassName(theme: string) {
const fontsClassName = getFontsClassName(theme);
return cn(
'bg-background min-h-screen antialiased md:overscroll-y-none',
fontsClassName,
);
}
async function getCspNonce() {
const headersStore = await headers();
return headersStore.get('x-nonce') ?? undefined;
export default function RootLayout({ children }: React.PropsWithChildren) {
return children;
}