69 lines
2.0 KiB
TypeScript
69 lines
2.0 KiB
TypeScript
import type { Metadata } from 'next';
|
||
import '@/styles/globals.css';
|
||
import { ToastContainer } from '@/components/ui/Toast';
|
||
import AuthProvider from '@/components/SessionProvider';
|
||
import { PostHogProvider } from '@/components/PostHogProvider';
|
||
import CookieBanner from '@/components/CookieBanner';
|
||
|
||
const isIndexable = process.env.NEXT_PUBLIC_INDEXABLE === 'true';
|
||
|
||
export const metadata: Metadata = {
|
||
metadataBase: new URL('https://www.qrmaster.net'),
|
||
title: {
|
||
default: 'QR Master – Smart QR Generator & Analytics',
|
||
template: '%s | QR Master',
|
||
},
|
||
description: 'Create dynamic QR codes, track scans, and scale campaigns with secure analytics.',
|
||
keywords: 'QR code, QR generator, dynamic QR, QR tracking, QR analytics, branded QR, bulk QR generator',
|
||
robots: isIndexable
|
||
? { index: true, follow: true }
|
||
: { index: false, follow: false },
|
||
icons: {
|
||
icon: [
|
||
{ url: '/favicon.svg', type: 'image/svg+xml' },
|
||
{ url: '/logo.svg', type: 'image/svg+xml' },
|
||
],
|
||
apple: '/logo.svg',
|
||
},
|
||
twitter: {
|
||
card: 'summary_large_image',
|
||
site: '@qrmaster',
|
||
images: ['https://www.qrmaster.net/static/og-image.png'],
|
||
},
|
||
openGraph: {
|
||
type: 'website',
|
||
siteName: 'QR Master',
|
||
title: 'QR Master – Smart QR Generator & Analytics',
|
||
description: 'Create dynamic QR codes, track scans, and scale campaigns with secure analytics.',
|
||
url: 'https://www.qrmaster.net',
|
||
images: [
|
||
{
|
||
url: 'https://www.qrmaster.net/static/og-image.png',
|
||
width: 1200,
|
||
height: 630,
|
||
alt: 'QR Master - Dynamic QR Code Generator and Analytics Platform',
|
||
},
|
||
],
|
||
locale: 'en_US',
|
||
},
|
||
};
|
||
|
||
export default function RootLayout({
|
||
children,
|
||
}: {
|
||
children: React.ReactNode;
|
||
}) {
|
||
return (
|
||
<html lang="en">
|
||
<body className="font-sans">
|
||
<PostHogProvider>
|
||
<AuthProvider>
|
||
{children}
|
||
</AuthProvider>
|
||
<CookieBanner />
|
||
<ToastContainer />
|
||
</PostHogProvider>
|
||
</body>
|
||
</html>
|
||
);
|
||
} |