Files
docs/apps/cloud/app/layout.tsx
zooqueen b605993234 Zen is the family across every app, example and static page
The docs estate declared its typeface in 30 root layouts and one linked
stylesheet, each pulling a third-party family off a hosted font CDN on the
critical path of every route. Two of those surfaces also self-hosted the
faces, so the same bytes were vendored by hand in the repo.

@hanzo/font 1.8.8 is where Zen is authored. It is now mounted the way this
repo already mounts every other package stylesheet — `@import '@hanzo/font/css'`
at the top of the app's own sheet — which declares the @font-face rules and
publishes --font-zen-sans / --font-zen-mono. A single :root block per app binds
those to --font-sans / --font-mono, the pair every rule and every font-*
utility already read, so the variable contract is untouched and the next face
swap is two lines rather than a sweep. Genuine system fallbacks stay.

Mounting through the sheet rather than a JS side-effect import also drops the
untyped bare subpath TypeScript could not resolve, so no per-app declaration
shim is needed.

public/reference/ is static HTML with no bundler, so it keeps its own
@font-face; scripts/sync-reference-fonts.ts copies the two variable faces out
of the installed package on each build and the directory is ignored, the same
rule public/openapi/ already follows. The hand-vendored faces are deleted.

Also corrects the brand typography table, which still named a face Hanzo does
not ship, and the three sample configs and two skill pages that repeated it.
2026-08-24 13:20:49 -07:00

39 lines
1.1 KiB
TypeScript

import './global.css';
import type { Metadata, Viewport } from 'next';
import type { ReactNode } from 'react';
export const metadata: Metadata = {
title: 'Hanzo Cloud — AI Infrastructure Platform',
description:
'Unified AI infrastructure platform. AI API, usage analytics, team management, and API key provisioning.',
openGraph: {
title: 'Hanzo Cloud — AI Infrastructure Platform',
description:
'Unified AI infrastructure platform with AI API, analytics, and team management.',
url: 'https://cloud.hanzo.ai',
siteName: 'Hanzo Cloud',
type: 'website',
},
twitter: {
card: 'summary_large_image',
site: '@hanikidev',
creator: '@hanikidev',
},
metadataBase: new URL('https://cloud.hanzo.ai'),
};
export const viewport: Viewport = {
themeColor: [
{ media: '(prefers-color-scheme: dark)', color: '#0A0A0A' },
{ media: '(prefers-color-scheme: light)', color: '#0A0A0A' },
],
};
export default function RootLayout({ children }: { children: ReactNode }) {
return (
<html lang="en" className="dark">
<body className="antialiased">{children}</body>
</html>
);
}