import type { Metadata, Viewport } from "next";
import localFont from "next/font/local";
import "./globals.css";

export const dynamic = "force-dynamic";

/* A fonte sai dos arquivos do próprio app (next/font/local), e não do Google:
   o build não pode depender do Google Fonts. O next/font/google baixava a
   fonte durante o build e, quando o Google mudou o formato do endereço, o
   deploy caiu. O arquivo é a fonte variável do repositório google/fonts,
   cortada para latim e latim estendido (licença no OFL.txt ao lado). Há um
   item por peso que antes era pedido ao Google, todos no mesmo arquivo, para
   o navegador escolher os pesos exatamente como antes. As opções precisam ser
   literais: o next/font lê esse objeto em tempo de build. */
const fontSans = localFont({
  variable: "--font-ktalogu-sans",
  src: [
    { path: "../fonts/plus-jakarta-sans/PlusJakartaSans-Variavel.woff2", weight: "400", style: "normal" },
    { path: "../fonts/plus-jakarta-sans/PlusJakartaSans-Variavel.woff2", weight: "500", style: "normal" },
    { path: "../fonts/plus-jakarta-sans/PlusJakartaSans-Variavel.woff2", weight: "600", style: "normal" },
    { path: "../fonts/plus-jakarta-sans/PlusJakartaSans-Variavel.woff2", weight: "700", style: "normal" },
    { path: "../fonts/plus-jakarta-sans/PlusJakartaSans-Variavel.woff2", weight: "800", style: "normal" },
  ],
});

export const metadata: Metadata = {
  title: "Ktalogu - Gestão",
  description: "Sistema de gestão para catálogos digitais e orçamentos.",
  /* O manifesto é o que torna o sistema instalável — e no iPhone é o que
     libera a notificação, que sem ele não chega de jeito nenhum. */
  manifest: "/manifest.webmanifest",
  appleWebApp: {
    capable: true,
    title: "Ktalogu",
    statusBarStyle: "default",
  },
};

export const viewport: Viewport = {
  themeColor: "#4425A7",
};

export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  return (
    <html lang="pt-BR">
      <body className={`ks-body ${fontSans.variable}`}>
        {children}
      </body>
    </html>
  );
}
