Files
zeekayandHanzo Dev ab6e14c3a2 the face is Zen, and it ships from @hanzo/font
One family. Font stacks name Zen and fall back to the native faces, tokens
name the role rather than a face, and the packages that used to supply a
face now point at @hanzo/font.

Self-hosted @font-face blocks are removed rather than renamed: rewriting the
family in one would leave a src pointing at a file this repo no longer ships.
@hanzo/font carries the binaries and declares the faces, so the local copies
go with the declaration that used them.

Comments naming a face we no longer use are deleted, not reworded.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-08 14:10:53 -07:00

39 lines
1.3 KiB
TypeScript

import './global.css'
import type { Metadata, Viewport } from 'next'
import type { ReactNode } from 'react'
import { ThemeProvider } from '@/lib/theme/theme-provider'
import { Providers } from '@/lib/providers'
// app/global.css (@hanzo/design/tokens/fonts.css), which is also where
// --font-sans and --font-mono get their values. next/font/google used to load
// them here, and that was the silent bug: it mints a scoped family name like
// `__Geist_Mono_abc123` and binds it to --font-mono, so @hanzo/ui's `.mono`
// — which asks for the literal family 'Zen Mono' — never matched and every
// money figure fell through to ui-monospace. One owner of the faces, and it is
// the package that ships the woff2.
export const metadata: Metadata = {
title: 'Hanzo Billing',
description: 'Manage your billing, payment methods, subscriptions, and invoices.',
metadataBase: new URL('https://billing.hanzo.ai'),
}
export const viewport: Viewport = {
themeColor: [
{ media: '(prefers-color-scheme: dark)', color: '#050505' },
{ media: '(prefers-color-scheme: light)', color: '#fafafa' },
],
}
export default function RootLayout({ children }: { children: ReactNode }) {
return (
<html lang="en">
<body className="antialiased">
<ThemeProvider>
<Providers>{children}</Providers>
</ThemeProvider>
</body>
</html>
)
}