119 lines
3.4 KiB
TypeScript
119 lines
3.4 KiB
TypeScript
import type { Metadata, Viewport } from 'next'
|
||
import { Inter } from 'next/font/google'
|
||
import './globals.css'
|
||
import { Toaster } from '@/components/ui/toaster'
|
||
import { AuthProvider } from '@/components/providers/auth-provider'
|
||
import { ServiceWorkerRegister } from '@/components/providers/sw-register'
|
||
import { CookieConsent } from '@/components/ui/cookie-consent'
|
||
|
||
const inter = Inter({
|
||
subsets: ['latin'],
|
||
weight: ['400', '500', '600', '700'],
|
||
display: 'swap',
|
||
})
|
||
|
||
const siteUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://lageplan.ch'
|
||
|
||
export const metadata: Metadata = {
|
||
metadataBase: new URL(siteUrl),
|
||
title: {
|
||
default: 'Lageplan – Digitale Einsatzdokumentation für Feuerwehren',
|
||
template: '%s | Lageplan',
|
||
},
|
||
description:
|
||
'Die moderne Krokier-App für Schweizer Feuerwehren. Einsatzpläne digital erstellen, Journal führen, Rapporte generieren – direkt im Browser, ohne Installation.',
|
||
keywords: [
|
||
'Feuerwehr Software',
|
||
'Krokier App',
|
||
'Lageplan Feuerwehr',
|
||
'Einsatzdokumentation',
|
||
'Einsatzplanung',
|
||
'Feuerwehr App Schweiz',
|
||
'Einsatzjournal',
|
||
'Rapport Feuerwehr',
|
||
'Feuerwehr Krokierung',
|
||
'Einsatzleitung Software',
|
||
'Feuerwehr digital',
|
||
],
|
||
authors: [{ name: 'Lageplan.ch' }],
|
||
creator: 'Lageplan.ch',
|
||
publisher: 'Lageplan.ch',
|
||
robots: {
|
||
index: true,
|
||
follow: true,
|
||
googleBot: {
|
||
index: true,
|
||
follow: true,
|
||
'max-video-preview': -1,
|
||
'max-image-preview': 'large',
|
||
'max-snippet': -1,
|
||
},
|
||
},
|
||
openGraph: {
|
||
type: 'website',
|
||
locale: 'de_CH',
|
||
url: siteUrl,
|
||
siteName: 'Lageplan',
|
||
title: 'Lageplan – Digitale Einsatzdokumentation für Feuerwehren',
|
||
description:
|
||
'Die moderne Krokier-App für Schweizer Feuerwehren. Einsatzpläne digital erstellen, Journal führen, Rapporte generieren.',
|
||
images: [
|
||
{
|
||
url: '/og-image.png',
|
||
width: 1200,
|
||
height: 630,
|
||
alt: 'Lageplan – Feuerwehr Krokier-App',
|
||
},
|
||
],
|
||
},
|
||
twitter: {
|
||
card: 'summary_large_image',
|
||
title: 'Lageplan – Digitale Einsatzdokumentation für Feuerwehren',
|
||
description:
|
||
'Die moderne Krokier-App für Schweizer Feuerwehren. Einsatzpläne digital erstellen, Journal führen, Rapporte generieren.',
|
||
images: ['/og-image.png'],
|
||
},
|
||
alternates: {
|
||
canonical: siteUrl,
|
||
},
|
||
icons: {
|
||
icon: '/logo.svg',
|
||
apple: '/logo.svg',
|
||
},
|
||
category: 'technology',
|
||
}
|
||
|
||
export const viewport: Viewport = {
|
||
width: 'device-width',
|
||
initialScale: 1,
|
||
maximumScale: 1,
|
||
interactiveWidget: 'resizes-content',
|
||
}
|
||
|
||
export default function RootLayout({
|
||
children,
|
||
}: {
|
||
children: React.ReactNode
|
||
}) {
|
||
return (
|
||
<html lang="de" suppressHydrationWarning>
|
||
<head>
|
||
<link rel="manifest" href="/manifest.json" />
|
||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||
<meta name="apple-mobile-web-app-title" content="Lageplan" />
|
||
<meta name="mobile-web-app-capable" content="yes" />
|
||
<meta name="theme-color" content="#dc2626" />
|
||
</head>
|
||
<body className={`${inter.className} antialiased`} style={{ fontFeatureSettings: '"tnum", "cv01"' }}>
|
||
<AuthProvider>
|
||
<ServiceWorkerRegister />
|
||
{children}
|
||
<Toaster />
|
||
<CookieConsent />
|
||
</AuthProvider>
|
||
</body>
|
||
</html>
|
||
)
|
||
}
|