Fix: Fonts selbst hosten (next/font/local) + Bootstrap an Superadmin-Store anpassen
- next/font/google lud Open Sans/Poppins zur Build-Zeit von Google -> flakiger 'Failed to fetch from Google Fonts' bricht den Prod-Build ab. Jetzt committete woff2 (src/app/fonts) via next/font/local -> reproduzierbarer Offline-Build, DSGVO. - scripts/bootstrap-admin.ts: provisionTenant nimmt kein isPlatformAdmin mehr; der Superadmin ist jetzt das eigene Modell platformAdmin (Login /platform/login, MFA). Bootstrap legt Mandant+Mandanten-Admin UND platformAdmin an (idempotent). - node:22-Docker-Build lokal verifiziert (kompiliert + TypeCheck + Routen). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+21
-8
@@ -1,20 +1,33 @@
|
||||
import type { Metadata } from "next";
|
||||
import { Open_Sans, Poppins } from "next/font/google";
|
||||
import localFont from "next/font/local";
|
||||
import { NextIntlClientProvider } from "next-intl";
|
||||
import { getLocale } from "next-intl/server";
|
||||
import "./globals.css";
|
||||
|
||||
// Self-hosted über next/font (kein Google-CDN-Aufruf zur Laufzeit, DSGVO)
|
||||
const openSans = Open_Sans({
|
||||
// Selbst gehostet über next/font/local (committete woff2 in ./fonts) — kein
|
||||
// Google-Fonts-Fetch zur Build- oder Laufzeit. DSGVO-konform und macht den
|
||||
// Produktiv-Build reproduzierbar/offline (next/font/google lud die Schriften
|
||||
// sonst zur Build-Zeit von Google, was flakig fehlschlagen kann).
|
||||
const openSans = localFont({
|
||||
variable: "--font-open-sans",
|
||||
subsets: ["latin"],
|
||||
weight: ["300", "400", "600", "700"],
|
||||
display: "swap",
|
||||
src: [
|
||||
{ path: "./fonts/open-sans-300.woff2", weight: "300", style: "normal" },
|
||||
{ path: "./fonts/open-sans-400.woff2", weight: "400", style: "normal" },
|
||||
{ path: "./fonts/open-sans-600.woff2", weight: "600", style: "normal" },
|
||||
{ path: "./fonts/open-sans-700.woff2", weight: "700", style: "normal" },
|
||||
],
|
||||
});
|
||||
|
||||
const poppins = Poppins({
|
||||
const poppins = localFont({
|
||||
variable: "--font-poppins",
|
||||
subsets: ["latin"],
|
||||
weight: ["300", "500", "600", "700"],
|
||||
display: "swap",
|
||||
src: [
|
||||
{ path: "./fonts/poppins-300.woff2", weight: "300", style: "normal" },
|
||||
{ path: "./fonts/poppins-500.woff2", weight: "500", style: "normal" },
|
||||
{ path: "./fonts/poppins-600.woff2", weight: "600", style: "normal" },
|
||||
{ path: "./fonts/poppins-700.woff2", weight: "700", style: "normal" },
|
||||
],
|
||||
});
|
||||
|
||||
export const metadata: Metadata = {
|
||||
|
||||
Reference in New Issue
Block a user