Files
zeekay 48f9b8faf0 Serve Zen, and stop serving Inter's bytes
The Geist->Zen rename reached the stylesheets and stopped there. Four layers
were still handing users another vendor's face.

frontend/public still carried Inter.woff2/woff, the real upstream binaries
signed RSMS, and fonts.scss declared three static Inter weights on top of the
variable face; one variable file spans 100-900, so those three collapse into it.
The Zen pair here named only Hanzo in its copyright, which OFL does not allow
for a cut of Geist — @hanzo/font's identity check reads family, vendor tag and
both notices out of the name table and refuses to publish a face that fails, so
the bytes now come from there.

common/tailwind/dist/tailwind.css is a build artifact. .gitignore names it,
`insightscli doctor` deletes it, nothing imports it (the app imports the source
tailwind.css), and a single upstream merge dragged it in. Its
--default-font-family still said MatterSQ, two renames behind the config it is
supposed to come from. Untracked rather than hand-edited.

@hanzo/quill's tokens set --font-sans behind [data-quill], a later declaration
than base.scss's :root, so every component inside a quill subtree resolved to
the token's own Inter stack instead of the app's. The token now leads with Zen,
and each package's own build regenerates its dist.

The preload lookup in build.mjs matched /Inter(-hash)?\.woff2/ and throws when
it resolves empty, so it had to move with the file. It was also warming the
second family in --font-sans rather than the first.

Two smaller ones: the region picker fetched Inter from fonts.googleapis.com on
an unauthenticated page, and quill's storybook depended on
@fontsource-variable/inter, which declares the family "Inter Variable" — a name
no stack in this repo asks for, so it downloaded and painted nothing.
2026-08-28 17:12:24 -07:00

88 lines
3.3 KiB
CSS

/*
* Storybook runs as the authoring environment for @hanzo/quill, NOT
* a downstream-consumer sanity check. That distinction drives every
* decision in this file:
*
* - Tokens come from `@hanzo/quill-tokens` directly (workspace
* package), not from `@hanzo/quill/tokens.css`. The tokens CSS
* files are watched by vite, and `quillTokensWatcher` in main.ts
* regenerates them whenever a `.ts` in packages/tokens/src edits.
*
* - `@source` points at primitives/components/blocks *source*, not
* the compiled `@hanzo/quill/dist/*.js`. Editing any `.tsx` in
* those packages hot-reloads instantly — no intermediate build.
*
* - The base reset (`* { border-border outline-ring/50 }`) is
* inlined rather than imported from `@hanzo/quill/base.css`,
* again so the tsx → render loop has zero build dependency.
*
* - Pure Tailwind v4 (no `@config`), so native defaults like
* `--leading-relaxed`, `--tracking-tight`, etc. are available
* automatically. The downstream-compat shims quill ships for
* consumers that still use `@config` legacy mode aren't needed
* here.
*
* Downstream consumers (real apps pinning `@hanzo/quill` from npm)
* should instead follow the README and import:
* @import "@hanzo/quill/tokens.css";
* @import "@hanzo/quill/base.css";
* @import "@hanzo/quill/tailwind.css";
*/
@import 'tailwindcss';
/* Edge-fade utilities (`scroll-mask-*`) for scrollable lists/popups. */
@import 'tailwindcss-scroll-mask';
/* Design tokens — CSS custom property values + the @theme inline block. */
@import '@hanzo/quill-tokens/color-system.css';
@import '@hanzo/quill-tokens/tailwind-lib.css';
/*
* Materialize the `@theme inline` vars from tokens as real `:root` custom
* properties so primitive BEM CSS (which references them via `var()`) can
* resolve them. `@theme inline` only resolves during Tailwind utility
* generation; it does not emit on `:root`.
*/
@import '../../../packages/primitives/src/styles/layers.css';
/*
* Primitive BEM styles, from the built package. Components stories (e.g.
* DataTable) import primitives via `@hanzo/quill-primitives`, whose JS does
* NOT inject CSS — so without this they render with classnames but no styles.
* The primitives' OWN stories import from source and still hot-reload their BEM;
* this only backstops cross-package consumers. Rebuild primitives to refresh.
*/
@import '../../../packages/primitives/dist/quill-primitives.css';
/*
* Scan sources, not dist. Vite HMR forwards any .tsx change in these
* trees to Tailwind's scanner and we get new utilities emitted on the
* next tick.
*/
@source "../stories/**/*.{ts,tsx}";
@source "../../../packages/primitives/src/**/*.{ts,tsx}";
@source "../../../packages/components/src/**/*.{ts,tsx}";
@source "../../../packages/blocks/src/**/*.{ts,tsx}";
@source "../../../packages/charts/src/**/*.{ts,tsx}";
@layer base {
* {
@apply border-border outline-ring/50;
}
body {
@apply bg-background text-foreground;
}
}
/* Disable animations during visual regression tests */
body.storybook-test-runner *,
body.storybook-test-runner *::before,
body.storybook-test-runner *::after {
transition-delay: 0s !important;
transition-duration: 0s !important;
animation-duration: 0s !important;
animation-delay: 0s !important;
}