Files
0pt/app/layout.tsx
admin 9888c0078c
Deploy to Coolify / deploy (push) Failing after 2s
CI (SIAX Cloud) / security (push) Successful in 19s
CI (SIAX Cloud) / quality (push) Successful in 40s
feat(contract): OpenAPI 3.1 SSOT (orders/estimates/enrich/resolve/provenance) + AR-4 fixes (drop @vercel/analytics + next/font/google -> self-hosted fontsource) + repo hygiene
2026-08-10 04:10:30 +02:00

63 lines
2.4 KiB
TypeScript

import React from "react";
import type { Metadata } from "next";
import { Toaster } from "sonner";
import { LocaleProvider } from "@/components/locale-provider";
import { ThemeProvider } from "@/components/theme-provider";
import { RouteReveal } from "@/components/route-reveal";
import "./globals.css";
export const metadata: Metadata = {
title: "0pt — your data",
description:
"Data services on demand for the Nordics & Europe. Provenance per field, GDPR-native. Compose your data job, pay 50% to start, watch production live, and validate the result with full transparency.",
generator: "0pt.app",
metadataBase: new URL("https://0pt.app"),
openGraph: {
title: "0pt — your data",
description: "Nordic & European data services. Provenance per field. GDPR-native. 50/50 escrow.",
url: "https://0pt.app",
siteName: "0pt",
locale: "en_US",
type: "website",
},
twitter: {
card: "summary",
title: "0pt — your data",
description: "Nordic & European data services. Provenance per field. GDPR-native.",
},
robots: {
index: true,
follow: true,
},
icons: {
icon: [
{ url: "/icon-light-32x32.png", sizes: "32x32", type: "image/png", media: "(prefers-color-scheme: light)" },
{ url: "/icon-dark-32x32.png", sizes: "32x32", type: "image/png", media: "(prefers-color-scheme: dark)" },
{ url: "/icon.svg", type: "image/svg+xml" },
],
apple: "/apple-icon.png",
},
};
export default function RootLayout({ children }: Readonly<{ children: React.ReactNode }>) {
return (
<html lang="en">
<body className="font-sans antialiased">
<a
href="#main-content"
className="sr-only focus:not-sr-only focus:fixed focus:left-4 focus:top-4 focus:z-[100] focus:bg-foreground focus:px-4 focus:py-2 focus:font-mono focus:text-[11px] focus:uppercase focus:tracking-[0.12em] focus:text-background"
>
Skip to content
</a>
<ThemeProvider attribute="class" defaultTheme="light" enableSystem={false}>
<LocaleProvider>
<RouteReveal />
{children}
</LocaleProvider>
</ThemeProvider>
<Toaster position="bottom-right" toastOptions={{ classNames: { toast: "font-mono text-xs tracking-[0.06em] rounded-none border border-border bg-background text-foreground", title: "font-mono", description: "font-mono text-muted-foreground" } }} />
</body>
</html>
);
}