@newtonedev/configurator 0.1.4 → 0.1.5

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.
@@ -1,6 +1,7 @@
1
1
  import type { DesaturationStrength, HueGradingStrength } from 'newtone';
2
2
  import type { ColorMode } from '@newtonedev/components';
3
- import type { ConfiguratorState, FontConfig, SpacingPreset } from '../types';
3
+ import type { TextRole } from '@newtonedev/fonts';
4
+ import type { ConfiguratorState, FontSlotConfig, FontScope, SpacingPreset } from '../types';
4
5
  export type ConfiguratorAction = {
5
6
  readonly type: 'SET_PALETTE_HUE';
6
7
  readonly index: number;
@@ -80,20 +81,16 @@ export type ConfiguratorAction = {
80
81
  readonly type: 'SET_ROUNDNESS_INTENSITY';
81
82
  readonly intensity: number;
82
83
  } | {
83
- readonly type: 'SET_TYPOGRAPHY_BASE_SIZE';
84
- readonly baseSize: number;
84
+ readonly type: 'SET_FONT';
85
+ readonly scope: FontScope;
86
+ readonly font: FontSlotConfig;
85
87
  } | {
86
- readonly type: 'SET_TYPOGRAPHY_RATIO';
87
- readonly ratio: number;
88
+ readonly type: 'SET_TYPE_SCALE_OFFSET';
89
+ readonly offset: number;
88
90
  } | {
89
- readonly type: 'SET_FONT_MONO';
90
- readonly font: FontConfig;
91
- } | {
92
- readonly type: 'SET_FONT_DISPLAY';
93
- readonly font: FontConfig;
94
- } | {
95
- readonly type: 'SET_FONT_DEFAULT';
96
- readonly font: FontConfig;
91
+ readonly type: 'SET_ROLE_WEIGHT';
92
+ readonly role: TextRole;
93
+ readonly weight: number;
97
94
  } | {
98
95
  readonly type: 'SET_ICON_VARIANT';
99
96
  readonly variant: 'outlined' | 'rounded' | 'sharp';
@@ -1 +1 @@
1
- {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/state/actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/state/actions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/state/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,EAAE,iBA+FxC,CAAC"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/state/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,EAAE,iBA+GxC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../src/state/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAgB,MAAM,UAAU,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAoBpD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,kBAAkB,GACzB,iBAAiB,CAyTnB"}
1
+ {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../src/state/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAgB,MAAM,UAAU,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAoBpD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,kBAAkB,GACzB,iBAAiB,CAwRnB"}
package/dist/types.d.ts CHANGED
@@ -1,5 +1,8 @@
1
1
  import type { DesaturationStrength, HueGradingStrength } from 'newtone';
2
2
  import type { ColorMode } from '@newtonedev/components';
3
+ export type { FontConfig, FontScope } from '@newtonedev/fonts';
4
+ export type { FontSlot as FontSlotConfig } from '@newtonedev/fonts';
5
+ import type { FontSlot, TextRole } from '@newtonedev/fonts';
3
6
  /** Spacing preset options */
4
7
  export type SpacingPreset = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
5
8
  /** Per-palette state in the configurator (human-readable, traditional hues) */
@@ -20,13 +23,6 @@ export interface HueGradingEndpointState {
20
23
  readonly strength: HueGradingStrength;
21
24
  readonly hue: number;
22
25
  }
23
- /** Font configuration for a single font slot */
24
- export interface FontConfig {
25
- readonly type: 'system' | 'google' | 'custom';
26
- readonly family: string;
27
- readonly customUrl?: string;
28
- readonly fallback: string;
29
- }
30
26
  /** Complete configurator state */
31
27
  export interface ConfiguratorState {
32
28
  readonly palettes: readonly PaletteState[];
@@ -49,14 +45,13 @@ export interface ConfiguratorState {
49
45
  };
50
46
  readonly typography?: {
51
47
  readonly fonts: {
52
- readonly mono: FontConfig;
53
- readonly display: FontConfig;
54
- readonly default: FontConfig;
55
- };
56
- readonly scale: {
57
- readonly baseSize: number;
58
- readonly ratio: number;
48
+ readonly main: FontSlot;
49
+ readonly display: FontSlot;
50
+ readonly mono: FontSlot;
51
+ readonly currency: FontSlot;
59
52
  };
53
+ readonly typeScaleOffset?: number;
54
+ readonly roleWeights?: Partial<Record<TextRole, number>>;
60
55
  };
61
56
  readonly icons?: {
62
57
  readonly variant: 'outlined' | 'rounded' | 'sharp';
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@newtonedev/configurator",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "description": "Embeddable palette builder widget for Newtone color systems",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,6 +38,7 @@
38
38
  "react-native": ">=0.70.0"
39
39
  },
40
40
  "dependencies": {
41
+ "@newtonedev/fonts": "file:../../../newtone-fonts",
41
42
  "newtone": "^0.1.0",
42
43
  "@newtonedev/components": "^0.1.0",
43
44
  "react-native-web": "^0.19.10"
@@ -1,5 +1,6 @@
1
1
  import type { ConfiguratorState, SpacingPreset } from '../types';
2
- import type { NewtoneThemeConfig, FontConfig } from '@newtonedev/components';
2
+ import type { NewtoneThemeConfig } from '@newtonedev/components';
3
+ import { DEFAULT_FONT_SIZES, DEFAULT_LINE_HEIGHTS, DEFAULT_ROLE_SCALES, DEFAULT_FONT_SLOTS, ROLE_DEFAULT_WEIGHTS, migrateToFontSlot, computeBreakpointRoleScales, applyTypeScaleOffset } from '@newtonedev/fonts';
3
4
  import type { PaletteConfig, DynamicRange, HueGrading, HueGradingEndpoint } from 'newtone';
4
5
  import { traditionalHueToOklch } from '../hue-conversion';
5
6
 
@@ -21,43 +22,6 @@ function roundnessToMultiplier(intensity: number): number {
21
22
  return intensity * 2.0; // lerp(0, 2.0, intensity)
22
23
  }
23
24
 
24
- /**
25
- * Compute typography scale from base size and ratio.
26
- * Uses modular scale: baseSize * ratio^n
27
- */
28
- function computeTypographyScale(baseSize: number, ratio: number) {
29
- return {
30
- xs: Math.round(baseSize / (ratio ** 2)),
31
- sm: Math.round(baseSize / ratio),
32
- base: baseSize,
33
- md: Math.round(baseSize * ratio),
34
- lg: Math.round(baseSize * (ratio ** 2)),
35
- xl: Math.round(baseSize * (ratio ** 3)),
36
- xxl: Math.round(baseSize * (ratio ** 4)),
37
- };
38
- }
39
-
40
- /**
41
- * Default font configurations using system fonts
42
- */
43
- const DEFAULT_FONTS: { readonly mono: FontConfig; readonly display: FontConfig; readonly default: FontConfig } = {
44
- mono: {
45
- type: 'system',
46
- family: 'ui-monospace',
47
- fallback: 'SFMono-Regular, Menlo, Monaco, Consolas, monospace',
48
- },
49
- display: {
50
- type: 'system',
51
- family: 'system-ui',
52
- fallback: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
53
- },
54
- default: {
55
- type: 'system',
56
- family: 'system-ui',
57
- fallback: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
58
- },
59
- };
60
-
61
25
  /**
62
26
  * Default icon configuration using Material Symbols Rounded
63
27
  */
@@ -145,15 +109,24 @@ export function toThemeConfig(state: ConfiguratorState): NewtoneThemeConfig {
145
109
  xl: Math.round(12 * radiusMultiplier),
146
110
  pill: 999,
147
111
  },
148
- typography: {
149
- fonts: state.typography?.fonts ?? DEFAULT_FONTS,
150
- scale: computeTypographyScale(
151
- state.typography?.scale.baseSize ?? 16,
152
- state.typography?.scale.ratio ?? 1.25
153
- ),
154
- lineHeight: { tight: 1.25, normal: 1.5, relaxed: 1.75 },
155
- fontWeight: { regular: 400, medium: 500, semibold: 600, bold: 700 },
156
- },
112
+ typography: (() => {
113
+ const roles = state.typography?.typeScaleOffset != null
114
+ ? applyTypeScaleOffset(DEFAULT_ROLE_SCALES, state.typography.typeScaleOffset)
115
+ : DEFAULT_ROLE_SCALES;
116
+ return {
117
+ fonts: {
118
+ main: migrateToFontSlot(state.typography?.fonts.main ?? (state.typography?.fonts as any)?.default, DEFAULT_FONT_SLOTS.main),
119
+ display: migrateToFontSlot(state.typography?.fonts.display, DEFAULT_FONT_SLOTS.display),
120
+ mono: migrateToFontSlot(state.typography?.fonts.mono, DEFAULT_FONT_SLOTS.mono),
121
+ currency: migrateToFontSlot(state.typography?.fonts.currency, DEFAULT_FONT_SLOTS.currency),
122
+ },
123
+ fontSizes: DEFAULT_FONT_SIZES,
124
+ lineHeights: DEFAULT_LINE_HEIGHTS,
125
+ roles,
126
+ breakpointRoles: computeBreakpointRoleScales(roles),
127
+ roleWeights: { ...ROLE_DEFAULT_WEIGHTS, ...state.typography?.roleWeights },
128
+ };
129
+ })(),
157
130
  icons: state.icons ?? DEFAULT_ICONS,
158
131
  };
159
132
  }
package/src/index.ts CHANGED
@@ -3,7 +3,7 @@ export { Configurator } from './Configurator';
3
3
  export type { ConfiguratorProps } from './Configurator.types';
4
4
 
5
5
  // State types
6
- export type { ConfiguratorState, PaletteState, HueGradingEndpointState, SpacingPreset } from './types';
6
+ export type { ConfiguratorState, PaletteState, HueGradingEndpointState, SpacingPreset, FontConfig, FontScope, FontSlotConfig } from './types';
7
7
  export type { ConfiguratorAction } from './state/actions';
8
8
 
9
9
  // Bridge functions (for headless usage)
@@ -31,8 +31,6 @@ export function DesignPanel({ state, dispatch }: DesignPanelProps) {
31
31
 
32
32
  const spacingPreset = state.spacing?.preset ?? 'md';
33
33
  const intensity = state.roundness?.intensity ?? 0.5;
34
- const baseSize = state.typography?.scale.baseSize ?? 16;
35
- const ratio = state.typography?.scale.ratio ?? 1.25;
36
34
  const variant = state.icons?.variant ?? 'rounded';
37
35
  const weight = state.icons?.weight ?? 400;
38
36
  return (
@@ -71,35 +69,6 @@ export function DesignPanel({ state, dispatch }: DesignPanelProps) {
71
69
  showValue
72
70
  />
73
71
 
74
- {/* Typography Section */}
75
- <Text style={[styles.subtitle, { color: srgbToHex(tokens.textSecondary.srgb) }]}>
76
- Typography
77
- </Text>
78
- <View style={styles.row}>
79
- <View style={styles.flex}>
80
- <Slider
81
- value={baseSize}
82
- onValueChange={(v) => dispatch({ type: 'SET_TYPOGRAPHY_BASE_SIZE', baseSize: v })}
83
- min={12}
84
- max={24}
85
- step={1}
86
- label="Base Size"
87
- showValue
88
- />
89
- </View>
90
- <View style={styles.flex}>
91
- <Slider
92
- value={Math.round(ratio * 100)}
93
- onValueChange={(v) => dispatch({ type: 'SET_TYPOGRAPHY_RATIO', ratio: v / 100 })}
94
- min={110}
95
- max={150}
96
- step={5}
97
- label="Scale Ratio"
98
- showValue
99
- />
100
- </View>
101
- </View>
102
-
103
72
  {/* Icons Section */}
104
73
  <Text style={[styles.subtitle, { color: srgbToHex(tokens.textSecondary.srgb) }]}>
105
74
  Icons
@@ -1,6 +1,7 @@
1
1
  import type { DesaturationStrength, HueGradingStrength } from 'newtone';
2
2
  import type { ColorMode } from '@newtonedev/components';
3
- import type { ConfiguratorState, FontConfig, SpacingPreset } from '../types';
3
+ import type { TextRole } from '@newtonedev/fonts';
4
+ import type { ConfiguratorState, FontSlotConfig, FontScope, SpacingPreset } from '../types';
4
5
 
5
6
  export type ConfiguratorAction =
6
7
  // Palette actions
@@ -30,11 +31,9 @@ export type ConfiguratorAction =
30
31
  // Roundness actions
31
32
  | { readonly type: 'SET_ROUNDNESS_INTENSITY'; readonly intensity: number }
32
33
  // Typography actions
33
- | { readonly type: 'SET_TYPOGRAPHY_BASE_SIZE'; readonly baseSize: number }
34
- | { readonly type: 'SET_TYPOGRAPHY_RATIO'; readonly ratio: number }
35
- | { readonly type: 'SET_FONT_MONO'; readonly font: FontConfig }
36
- | { readonly type: 'SET_FONT_DISPLAY'; readonly font: FontConfig }
37
- | { readonly type: 'SET_FONT_DEFAULT'; readonly font: FontConfig }
34
+ | { readonly type: 'SET_FONT'; readonly scope: FontScope; readonly font: FontSlotConfig }
35
+ | { readonly type: 'SET_TYPE_SCALE_OFFSET'; readonly offset: number }
36
+ | { readonly type: 'SET_ROLE_WEIGHT'; readonly role: TextRole; readonly weight: number }
38
37
  // Icons actions
39
38
  | { readonly type: 'SET_ICON_VARIANT'; readonly variant: 'outlined' | 'rounded' | 'sharp' }
40
39
  | { readonly type: 'SET_ICON_WEIGHT'; readonly weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 }
@@ -78,23 +78,39 @@ export const DEFAULT_CONFIGURATOR_STATE: ConfiguratorState = {
78
78
  },
79
79
  typography: {
80
80
  fonts: {
81
- mono: {
82
- type: 'system',
83
- family: 'ui-monospace',
84
- fallback: 'SFMono-Regular, Menlo, Monaco, Consolas, monospace',
81
+ main: {
82
+ config: {
83
+ type: 'system',
84
+ family: 'system-ui',
85
+ fallback: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
86
+ },
87
+ weights: { regular: 400, medium: 500, bold: 700 },
85
88
  },
86
89
  display: {
87
- type: 'system',
88
- family: 'system-ui',
89
- fallback: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
90
+ config: {
91
+ type: 'system',
92
+ family: 'system-ui',
93
+ fallback: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
94
+ },
95
+ weights: { regular: 400, medium: 500, bold: 700 },
96
+ },
97
+ mono: {
98
+ config: {
99
+ type: 'system',
100
+ family: 'ui-monospace',
101
+ fallback: 'SFMono-Regular, Menlo, Monaco, Consolas, monospace',
102
+ },
103
+ weights: { regular: 400, medium: 500, bold: 700 },
90
104
  },
91
- default: {
92
- type: 'system',
93
- family: 'system-ui',
94
- fallback: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
105
+ currency: {
106
+ config: {
107
+ type: 'system',
108
+ family: 'system-ui',
109
+ fallback: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
110
+ },
111
+ weights: { regular: 400, medium: 500, bold: 700 },
95
112
  },
96
113
  },
97
- scale: { baseSize: 16, ratio: 1.25 },
98
114
  },
99
115
  icons: {
100
116
  variant: 'rounded', // Material Design 3 aesthetic
@@ -208,75 +208,42 @@ export function configuratorReducer(
208
208
  };
209
209
 
210
210
  // Typography actions
211
- case 'SET_TYPOGRAPHY_BASE_SIZE': {
211
+ case 'SET_FONT': {
212
212
  const defaultTypography = DEFAULT_CONFIGURATOR_STATE.typography!;
213
+ const currentFonts = state.typography?.fonts ?? defaultTypography.fonts;
213
214
  return {
214
215
  ...state,
215
216
  typography: {
216
- fonts: state.typography?.fonts ?? defaultTypography.fonts,
217
- scale: {
218
- baseSize: clamp(action.baseSize, 12, 24),
219
- ratio: state.typography?.scale.ratio ?? defaultTypography.scale.ratio,
220
- },
221
- },
222
- };
223
- }
224
-
225
- case 'SET_TYPOGRAPHY_RATIO': {
226
- const defaultTypography = DEFAULT_CONFIGURATOR_STATE.typography!;
227
- return {
228
- ...state,
229
- typography: {
230
- fonts: state.typography?.fonts ?? defaultTypography.fonts,
231
- scale: {
232
- baseSize: state.typography?.scale.baseSize ?? defaultTypography.scale.baseSize,
233
- ratio: clamp(action.ratio, 1.1, 1.5),
234
- },
217
+ fonts: { ...currentFonts, [action.scope]: action.font },
235
218
  },
236
219
  };
237
220
  }
238
221
 
239
- case 'SET_FONT_MONO': {
222
+ case 'SET_TYPE_SCALE_OFFSET': {
240
223
  const defaultTypography = DEFAULT_CONFIGURATOR_STATE.typography!;
224
+ const currentFonts = state.typography?.fonts ?? defaultTypography.fonts;
241
225
  return {
242
226
  ...state,
243
227
  typography: {
244
- fonts: {
245
- mono: action.font,
246
- display: state.typography?.fonts.display ?? defaultTypography.fonts.display,
247
- default: state.typography?.fonts.default ?? defaultTypography.fonts.default,
248
- },
249
- scale: state.typography?.scale ?? defaultTypography.scale,
250
- },
251
- };
252
- }
253
-
254
- case 'SET_FONT_DISPLAY': {
255
- const defaultTypography = DEFAULT_CONFIGURATOR_STATE.typography!;
256
- return {
257
- ...state,
258
- typography: {
259
- fonts: {
260
- mono: state.typography?.fonts.mono ?? defaultTypography.fonts.mono,
261
- display: action.font,
262
- default: state.typography?.fonts.default ?? defaultTypography.fonts.default,
263
- },
264
- scale: state.typography?.scale ?? defaultTypography.scale,
228
+ ...state.typography,
229
+ fonts: currentFonts,
230
+ typeScaleOffset: clamp(action.offset, 0, 1),
265
231
  },
266
232
  };
267
233
  }
268
234
 
269
- case 'SET_FONT_DEFAULT': {
235
+ case 'SET_ROLE_WEIGHT': {
270
236
  const defaultTypography = DEFAULT_CONFIGURATOR_STATE.typography!;
237
+ const currentFonts = state.typography?.fonts ?? defaultTypography.fonts;
271
238
  return {
272
239
  ...state,
273
240
  typography: {
274
- fonts: {
275
- mono: state.typography?.fonts.mono ?? defaultTypography.fonts.mono,
276
- display: state.typography?.fonts.display ?? defaultTypography.fonts.display,
277
- default: action.font,
241
+ ...state.typography,
242
+ fonts: currentFonts,
243
+ roleWeights: {
244
+ ...state.typography?.roleWeights,
245
+ [action.role]: clamp(action.weight, 100, 900),
278
246
  },
279
- scale: state.typography?.scale ?? defaultTypography.scale,
280
247
  },
281
248
  };
282
249
  }
package/src/types.ts CHANGED
@@ -1,6 +1,12 @@
1
1
  import type { DesaturationStrength, HueGradingStrength } from 'newtone';
2
2
  import type { ColorMode } from '@newtonedev/components';
3
3
 
4
+ // Re-export font types from @newtonedev/fonts (canonical source)
5
+ export type { FontConfig, FontScope } from '@newtonedev/fonts';
6
+ // Backward-compatible alias: configurator historically used this name
7
+ export type { FontSlot as FontSlotConfig } from '@newtonedev/fonts';
8
+ import type { FontSlot, TextRole } from '@newtonedev/fonts';
9
+
4
10
  /** Spacing preset options */
5
11
  export type SpacingPreset = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
6
12
 
@@ -24,14 +30,6 @@ export interface HueGradingEndpointState {
24
30
  readonly hue: number; // Traditional HSL hue [0, 359]
25
31
  }
26
32
 
27
- /** Font configuration for a single font slot */
28
- export interface FontConfig {
29
- readonly type: 'system' | 'google' | 'custom';
30
- readonly family: string; // 'ui-monospace' | 'Roboto' | custom name
31
- readonly customUrl?: string; // Supabase Storage URL for custom fonts
32
- readonly fallback: string; // CSS fallback stack
33
- }
34
-
35
33
  /** Complete configurator state */
36
34
  export interface ConfiguratorState {
37
35
  readonly palettes: readonly PaletteState[];
@@ -54,14 +52,13 @@ export interface ConfiguratorState {
54
52
  };
55
53
  readonly typography?: {
56
54
  readonly fonts: {
57
- readonly mono: FontConfig; // currencies, code, amounts
58
- readonly display: FontConfig; // headlines
59
- readonly default: FontConfig; // fallback
60
- };
61
- readonly scale: {
62
- readonly baseSize: number; // px (default: 16)
63
- readonly ratio: number; // scale ratio (default: 1.25)
55
+ readonly main: FontSlot; // Body/default font
56
+ readonly display: FontSlot; // Headlines, titles
57
+ readonly mono: FontSlot; // Code, technical content
58
+ readonly currency: FontSlot; // Monetary amounts, financial data
64
59
  };
60
+ readonly typeScaleOffset?: number; // [0, 1], 0.5 = identity (default)
61
+ readonly roleWeights?: Partial<Record<TextRole, number>>; // CSS font-weight per role (100-900)
65
62
  };
66
63
  readonly icons?: {
67
64
  readonly variant: 'outlined' | 'rounded' | 'sharp';