Files
zeekay 7ce84ffddf the binary serves the face it names
pkg/api embedded 56KB of genuine Geist and served it at /fonts/Geist-Variable.woff2, and the landing page's @font-face asked for it by name — so mpc.hanzo.ai painted its only pre-auth surface in a typeface the estate does not use. The bytes are Zen now; checked at the name table, family 'Zen', with the OFL notice the licence requires intact.

The dashboard was worse than wrong, it was blank: its layout published --font-geist-sans off the geist package while tailwind.config.ts asked for --font-zen-sans, so font-sans resolved to nothing and every screen fell back to the browser default. The docs layout imported Zen under the name GeistSans, which compiles and lies.
2026-08-28 11:36:40 -07:00

35 lines
1.0 KiB
TypeScript

import type { Metadata } from 'next'
import { headers } from 'next/headers'
import { Zen } from '@hanzo/font/sans'
import { ZenMono } from '@hanzo/font/mono'
import { resolveWhiteLabel } from '@luxfi/ui/white-label'
import { Providers } from './providers'
import './globals.css'
// Title from the Host header — the same resolution the client uses, so the tab
// and the chrome can never disagree about which brand this is.
export async function generateMetadata(): Promise<Metadata> {
const h = await headers()
const wl = resolveWhiteLabel(h.get('host'))
return {
title: `${wl.name} MPC`,
description: `Multi-Party Computation wallet platform by ${wl.name}`,
}
}
export default function RootLayout({
children,
}: {
children: React.ReactNode
}) {
return (
<html lang="en" className={`dark ${Zen.variable} ${ZenMono.variable}`}>
<body className="font-sans min-h-screen bg-background text-foreground antialiased">
<Providers>
{children}
</Providers>
</body>
</html>
)
}