- Avatar upload to Supabase Storage with pencil overlay in settings - Show username initials as avatar fallback (instead of name initials) - Round avatar in navbar (rounded-full with natural shadow) - Connected Accounts section in settings showing Google status - Connect Google directly from settings without signing out - Add Vercel Analytics, Speed Insights, and Toolbar - Update page title to "Pascal Editor" Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
import type { Metadata } from 'next'
|
|
import localFont from 'next/font/local'
|
|
import { Analytics } from '@vercel/analytics/react'
|
|
import { SpeedInsights } from '@vercel/speed-insights/next'
|
|
import { VercelToolbar } from '@vercel/toolbar/next'
|
|
import { UsernameGate } from '@/features/community/components/username-gate'
|
|
import './globals.css'
|
|
|
|
const geistSans = localFont({
|
|
src: './fonts/GeistVF.woff',
|
|
variable: '--font-geist-sans',
|
|
})
|
|
const geistMono = localFont({
|
|
src: './fonts/GeistMonoVF.woff',
|
|
variable: '--font-geist-mono',
|
|
})
|
|
|
|
export const metadata: Metadata = {
|
|
title: 'Pascal Editor',
|
|
description: 'Open-source 3D building editor',
|
|
}
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: Readonly<{
|
|
children: React.ReactNode
|
|
}>) {
|
|
const shouldShowToolbar = process.env.NODE_ENV === 'development'
|
|
|
|
return (
|
|
<html lang="en">
|
|
<body className={`${geistSans.variable} ${geistMono.variable}`}>
|
|
<UsernameGate>{children}</UsernameGate>
|
|
<Analytics />
|
|
<SpeedInsights />
|
|
{shouldShowToolbar && <VercelToolbar />}
|
|
</body>
|
|
</html>
|
|
)
|
|
}
|