import type { Metadata, Viewport } from 'next' import { Nunito } from 'next/font/google' import { NextIntlClientProvider } from 'next-intl' import { getLocale } from 'next-intl/server' import { SwRegister } from '@/components/sw-register' import { LocaleBootstrap } from '@/components/locale-bootstrap' import './globals.css' const nunito = Nunito({ subsets: ['latin'], variable: '--font-nunito', display: 'swap', }) export const metadata: Metadata = { // Trengs for at relative og:image-URL-er (MinIO-runden, ikke bygget ennå) // skal løses til en fullstendig URL -- uten denne advarer Next.js ved // build og faller tilbake til en gjettet verdi. metadataBase: new URL('https://teecup.golf'), title: 'TeeCup — Logg inn', description: 'Logg inn på TeeCup, din golfturnerings-app. Passordløs innlogging med magisk lenke.', generator: 'v0.app', icons: { icon: [ { url: '/icon-light-32x32.png', media: '(prefers-color-scheme: light)', }, { url: '/icon-dark-32x32.png', media: '(prefers-color-scheme: dark)', }, { url: '/icon.svg', type: 'image/svg+xml', }, ], apple: '/apple-icon.png', }, // PWA-installasjon (ADR-028). iOS Safari leser ikke manifest.json for // «Legg til på hjemskjerm»-oppførsel -- disse Apple-spesifikke metafeltene // trengs i tillegg til selve manifestet (app/manifest.ts). appleWebApp: { capable: true, statusBarStyle: 'default', title: 'TeeCup', }, } export const viewport: Viewport = { colorScheme: 'light dark', themeColor: [ { media: '(prefers-color-scheme: light)', color: '#f3f6ec' }, { media: '(prefers-color-scheme: dark)', color: '#131a0f' }, ], } export default async function RootLayout({ children, }: Readonly<{ children: React.ReactNode }>) { // i18n (ADR-094) -- locale kommer fra en cookie (se i18n/request.ts), // ALDRI fra URL-en. LocaleBootstrap synker inn brukerens preferred_locale // fra /auth/me på klienten dersom ingen cookie er satt ennå. const locale = await getLocale() return ( {children} ) }