@hanzo/design 0.5.20 → 0.5.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -307,7 +307,7 @@ exports.fonts = {
307
307
  'font-display': 'var(--font-sans)',
308
308
  'font-mono': '"Zen Mono",ui-monospace,SFMono-Regular,monospace',
309
309
  'font-serif': 'Georgia,serif',
310
- 'font-feature-settings': '"ss01","ss02","cv01","cv02","cv03"',
310
+ 'font-feature-settings': 'normal',
311
311
  };
312
312
  /** base tokens (from tokens/base.css). Values are raw CSS. */
313
313
  exports.base = {
@@ -592,6 +592,6 @@ exports.cssVars = {
592
592
  '--font-display': 'var(--font-sans)',
593
593
  '--font-mono': '"Zen Mono",ui-monospace,SFMono-Regular,monospace',
594
594
  '--font-serif': 'Georgia,serif',
595
- '--font-feature-settings': '"ss01","ss02","cv01","cv02","cv03"',
595
+ '--font-feature-settings': 'normal',
596
596
  '--ring-offset': '-2px',
597
597
  };
@@ -301,7 +301,7 @@ export declare const fonts: {
301
301
  readonly 'font-display': "var(--font-sans)";
302
302
  readonly 'font-mono': "\"Zen Mono\",ui-monospace,SFMono-Regular,monospace";
303
303
  readonly 'font-serif': "Georgia,serif";
304
- readonly 'font-feature-settings': "\"ss01\",\"ss02\",\"cv01\",\"cv02\",\"cv03\"";
304
+ readonly 'font-feature-settings': "normal";
305
305
  };
306
306
  /** base tokens (from tokens/base.css). Values are raw CSS. */
307
307
  export declare const base: {
@@ -586,7 +586,7 @@ export declare const cssVars: {
586
586
  readonly '--font-display': "var(--font-sans)";
587
587
  readonly '--font-mono': "\"Zen Mono\",ui-monospace,SFMono-Regular,monospace";
588
588
  readonly '--font-serif': "Georgia,serif";
589
- readonly '--font-feature-settings': "\"ss01\",\"ss02\",\"cv01\",\"cv02\",\"cv03\"";
589
+ readonly '--font-feature-settings': "normal";
590
590
  readonly '--ring-offset': "-2px";
591
591
  };
592
592
  export type CssVarName = keyof typeof cssVars;
@@ -304,7 +304,7 @@ export const fonts = {
304
304
  'font-display': 'var(--font-sans)',
305
305
  'font-mono': '"Zen Mono",ui-monospace,SFMono-Regular,monospace',
306
306
  'font-serif': 'Georgia,serif',
307
- 'font-feature-settings': '"ss01","ss02","cv01","cv02","cv03"',
307
+ 'font-feature-settings': 'normal',
308
308
  };
309
309
  /** base tokens (from tokens/base.css). Values are raw CSS. */
310
310
  export const base = {
@@ -589,6 +589,6 @@ export const cssVars = {
589
589
  '--font-display': 'var(--font-sans)',
590
590
  '--font-mono': '"Zen Mono",ui-monospace,SFMono-Regular,monospace',
591
591
  '--font-serif': 'Georgia,serif',
592
- '--font-feature-settings': '"ss01","ss02","cv01","cv02","cv03"',
592
+ '--font-feature-settings': 'normal',
593
593
  '--ring-offset': '-2px',
594
594
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hanzo/design",
3
- "version": "0.5.20",
3
+ "version": "0.5.21",
4
4
  "packageManager": "pnpm@11.17.0",
5
5
  "description": "Hanzo Design System \u2014 monochrome, dark-default tokens + components + brand assets, the single source of truth for every Hanzo surface. CSS + typed programmatic tokens.",
6
6
  "license": "MIT OR Apache-2.0",
package/src/tokens.gen.ts CHANGED
@@ -313,7 +313,7 @@ export const fonts = {
313
313
  'font-display': 'var(--font-sans)',
314
314
  'font-mono': '"Zen Mono",ui-monospace,SFMono-Regular,monospace',
315
315
  'font-serif': 'Georgia,serif',
316
- 'font-feature-settings': '"ss01","ss02","cv01","cv02","cv03"',
316
+ 'font-feature-settings': 'normal',
317
317
  } as const
318
318
 
319
319
  /** base tokens (from tokens/base.css). Values are raw CSS. */
@@ -600,7 +600,7 @@ export const cssVars = {
600
600
  '--font-display': 'var(--font-sans)',
601
601
  '--font-mono': '"Zen Mono",ui-monospace,SFMono-Regular,monospace',
602
602
  '--font-serif': 'Georgia,serif',
603
- '--font-feature-settings': '"ss01","ss02","cv01","cv02","cv03"',
603
+ '--font-feature-settings': 'normal',
604
604
  '--ring-offset': '-2px',
605
605
  } as const
606
606
 
package/styles.css CHANGED
@@ -897,9 +897,25 @@
897
897
  --font-display:var(--font-sans);
898
898
  --font-mono:"Zen Mono",ui-monospace,SFMono-Regular,monospace;
899
899
  --font-serif:Georgia,serif;
900
- /* hanzo.ai sets these OpenType features on <body>. ss01 is Zen's
901
- single-storey a the neo-grotesque letterform. */
902
- --font-feature-settings:"ss01","ss02","cv01","cv02","cv03";
900
+ /* The default is Zen as drawn, and that is a decision rather than an omission.
901
+ `base.css` puts this on <body>, so whatever is here is the voice of every
902
+ surface in the estate — which is exactly why it should not carry a brand's.
903
+
904
+ It used to read `"ss01","ss02","cv01","cv02","cv03"`, of which FOUR did
905
+ nothing: Zen has no cv01/cv02/cv03 at all, and ss01 and ss02 both remap `a`,
906
+ so ss01 substitutes first and ss02 never matches the glyph it was written
907
+ for. The one that did work quietly gave Lux and Zoo the single-storey `a`
908
+ that belongs to Hanzo.
909
+
910
+ A brand sets its own voice by overriding THIS token — one knob, one place:
911
+ Hanzo "ss01" single-storey a, the neo-grotesque register
912
+ Lux "ss04" straight-leg R, to sit under the wordmark
913
+ Zoo normal the humanist default, the warmest of the three
914
+ Zen ships eleven sets; ss03 is a tailed l, ss05 a serifed I, ss06 an
915
+ alternate G and ss09 a slashed zero with a serif one. Kerning, ligatures and
916
+ contextual alternates are on by default in every browser and do not belong
917
+ in this list. */
918
+ --font-feature-settings:normal;
903
919
  }
904
920
 
905
921
  /* ── tokens/base.css ─────────────────────────────────────── */
package/tokens/fonts.css CHANGED
@@ -57,7 +57,23 @@
57
57
  --font-display:var(--font-sans);
58
58
  --font-mono:"Zen Mono",ui-monospace,SFMono-Regular,monospace;
59
59
  --font-serif:Georgia,serif;
60
- /* hanzo.ai sets these OpenType features on <body>. ss01 is Zen's
61
- single-storey a the neo-grotesque letterform. */
62
- --font-feature-settings:"ss01","ss02","cv01","cv02","cv03";
60
+ /* The default is Zen as drawn, and that is a decision rather than an omission.
61
+ `base.css` puts this on <body>, so whatever is here is the voice of every
62
+ surface in the estate — which is exactly why it should not carry a brand's.
63
+
64
+ It used to read `"ss01","ss02","cv01","cv02","cv03"`, of which FOUR did
65
+ nothing: Zen has no cv01/cv02/cv03 at all, and ss01 and ss02 both remap `a`,
66
+ so ss01 substitutes first and ss02 never matches the glyph it was written
67
+ for. The one that did work quietly gave Lux and Zoo the single-storey `a`
68
+ that belongs to Hanzo.
69
+
70
+ A brand sets its own voice by overriding THIS token — one knob, one place:
71
+ Hanzo "ss01" single-storey a, the neo-grotesque register
72
+ Lux "ss04" straight-leg R, to sit under the wordmark
73
+ Zoo normal the humanist default, the warmest of the three
74
+ Zen ships eleven sets; ss03 is a tailed l, ss05 a serifed I, ss06 an
75
+ alternate G and ss09 a slashed zero with a serif one. Kerning, ligatures and
76
+ contextual alternates are on by default in every browser and do not belong
77
+ in this list. */
78
+ --font-feature-settings:normal;
63
79
  }