Files
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
JSON

{
"name": "example-react-router",
"private": true,
"type": "module",
"scripts": {
"build": "react-router build",
"dev": "react-router dev",
"start": "react-router-serve ./build/server/index.js",
"types:check": "react-router typegen && @hanzo/docs-mdx && tsc --noEmit"
},
"dependencies": {
"@hanzo/docs-core": "workspace:*",
"@hanzo/docs-mdx": "workspace:*",
"@hanzo/docs-ui": "workspace:*",
"@hanzo/font": "^1.8.8",
"@react-router/node": "^7.13.2",
"@react-router/serve": "^7.13.2",
"@takumi-rs/image-response": "^0.73.1",
"isbot": "^5.1.36",
"lucide-react": "^1.0.1",
"react": "^19.2.4",
"react-dom": "^19.2.4",
"react-router": "^7.13.2",
"tailwind-merge": "^3.5.0"
},
"devDependencies": {
"@react-router/dev": "^7.15.1",
"@tailwindcss/vite": "^4.3.0",
"@types/mdx": "^2.0.13",
"@types/node": "^25.9.1",
"@types/react": "^19.2.15",
"@types/react-dom": "^19.2.3",
"react-router-devtools": "^6.2.0",
"tailwindcss": "^4.3.0",
"typescript": "^6.0.3",
"vite": "^8.0.14"
}
}