Files
zeekayandHanzo Dev 56e004e4b2 feat(fonts): Zen only — delete the nine faces that were not ours
The kit shipped ten typefaces. One is ours.

Deleted: font-inter, font-silkscreen, font-cherry-bomb, font-nohemi,
font-dm-sans, font-dm-serif-display, font-fira-mono, font-glusp, font-munro.
Six of those had no dependent in the workspace at all. font-zen stays, and so do
font-size, get-font-sized and font, which size and register rather than name a
face. Published versions remain on the registry, so anything pinned to one keeps
resolving.

@hanzogui/config's DEFAULT entry built heading and body from Inter — v4 was
already system fonts and v5 already Zen, so an app on the default got a face
nobody chose. It builds from Zen now. dev-config, which drives gui.hanzo.ai, was
worse: Inter for text, Berkeley Mono for code, plus Cherry Bomb and Silkscreen.
Every size, weight, letter-spacing and transform value is unchanged — only the
faces moved.

The pixel ROLE was worth keeping and only its face was borrowed, so font-zen
gained Zen Pixel Square (createZenPixelFont, --font-zen-pixel-*) and the token is
`$pixel`. `$silkscreen` and `$cherryBomb` are gone across ~35 call sites. Cherry
Bomb had no role of its own and no Zen counterpart, so it is deleted rather than
substituted.

gui.hanzo.ai now self-hosts three Zen files in place of four foreign ones — one
variable file per family instead of a weight per request — and its OG-image
route renders cards in the same faces as the pages they link to. The Inter,
Berkeley, Silkscreen and glusp binaries are gone from public/fonts, including an
otf directory of 20 Inter cuts.

Native is honestly short: @hanzo/font ships woff2 and react-native wants
otf/ttf, so the expo starter and kitchen-sink's native entry load no custom face
and say why, rather than keeping Inter because it happened to be there.

bun install 0 · build 161/161 · typecheck passed.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-24 11:44:08 -07:00

28 lines
1.3 KiB
TypeScript

import type { TextProps, YStackProps } from '@hanzo/gui'
export const optionValues = {
inverseAccent: [false, true],
borderRadius: ['$0', '$2', '$4', '$5', '$6'] as YStackProps['borderRadius'][],
borderWidth: [0 as const, 0.5 as const, 1 as const],
headingFontFamily: ['$heading', '$mono', '$pixel'] as TextProps['fontFamily'][],
fillStyle: ['filled' as const, 'outlined' as const],
elevation: [0, '$1', '$2'] as YStackProps['elevation'][],
spacing: ['sm' as const, 'md' as const, 'lg' as const],
textAccent: ['low' as const, 'high' as const],
backgroundAccent: ['low' as const, 'high' as const],
}
export const demoOptions = {
inverseAccent: false,
borderRadius: '$5' as (typeof optionValues)['borderRadius'][number],
borderWidth: 0.5 as (typeof optionValues)['borderWidth'][number],
headingFontFamily: '$heading' as (typeof optionValues)['headingFontFamily'][number],
fillStyle: 'filled' as (typeof optionValues)['fillStyle'][number],
elevation: 0 as (typeof optionValues)['elevation'][number],
spacing: 'md' as (typeof optionValues)['spacing'][number],
textAccent: 'high' as (typeof optionValues)['textAccent'][number],
backgroundAccent: 'low' as (typeof optionValues)['backgroundAccent'][number],
}
export type DemoOptions = typeof demoOptions