@ankhorage/surface 2.1.1 → 2.2.0
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.
- package/CHANGELOG.md +6 -0
- package/README.md +1 -654
- package/dist/theme/colorEngine.d.ts +2 -2
- package/dist/theme/colorEngine.d.ts.map +1 -1
- package/dist/theme/colorEngine.js.map +1 -1
- package/dist/theme/createTheme.d.ts +2 -2
- package/dist/theme/createTheme.d.ts.map +1 -1
- package/dist/theme/createTheme.js +33 -92
- package/dist/theme/createTheme.js.map +1 -1
- package/dist/theme/defaultTokens.d.ts +3 -0
- package/dist/theme/defaultTokens.d.ts.map +1 -0
- package/dist/theme/defaultTokens.js +56 -0
- package/dist/theme/defaultTokens.js.map +1 -0
- package/dist/theme/resolveGlobalTokens.d.ts +6 -0
- package/dist/theme/resolveGlobalTokens.d.ts.map +1 -0
- package/dist/theme/resolveGlobalTokens.js +46 -0
- package/dist/theme/resolveGlobalTokens.js.map +1 -0
- package/dist/theme/resolveHeadingTokenOverrides.d.ts +6 -0
- package/dist/theme/resolveHeadingTokenOverrides.d.ts.map +1 -0
- package/dist/theme/resolveHeadingTokenOverrides.js +38 -0
- package/dist/theme/resolveHeadingTokenOverrides.js.map +1 -0
- package/dist/theme/resolveNumericTokenOverrides.d.ts +2 -0
- package/dist/theme/resolveNumericTokenOverrides.d.ts.map +1 -0
- package/dist/theme/resolveNumericTokenOverrides.js +15 -0
- package/dist/theme/resolveNumericTokenOverrides.js.map +1 -0
- package/dist/theme/resolveWeightTokenOverrides.d.ts +3 -0
- package/dist/theme/resolveWeightTokenOverrides.d.ts.map +1 -0
- package/dist/theme/resolveWeightTokenOverrides.js +43 -0
- package/dist/theme/resolveWeightTokenOverrides.js.map +1 -0
- package/dist/theme/types.d.ts +1 -0
- package/dist/theme/types.d.ts.map +1 -1
- package/dist/theme/types.js.map +1 -1
- package/package.json +3 -3
- package/src/theme/colorEngine.ts +3 -2
- package/src/theme/createTheme.ts +35 -95
- package/src/theme/createThemeOverrides.test.ts +51 -0
- package/src/theme/createThemeValidation.test.ts +50 -0
- package/src/theme/defaultTokens.ts +58 -0
- package/src/theme/resolveGlobalTokens.ts +55 -0
- package/src/theme/resolveHeadingTokenOverrides.ts +61 -0
- package/src/theme/resolveNumericTokenOverrides.ts +19 -0
- package/src/theme/resolveWeightTokenOverrides.ts +48 -0
- package/src/theme/types.ts +1 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { GeneratedThemeModeColors, GeneratedThemeSwatches, HexColor, SemanticColorReferenceMap, SemanticColorToken } from '@ankhorage/color-theory';
|
|
2
2
|
import type { ThemeConfig } from '@ankhorage/contracts';
|
|
3
|
-
import type { ThemeSemantics } from './types';
|
|
3
|
+
import type { ThemeSemantics, ThemeTokens } from './types';
|
|
4
4
|
/**
|
|
5
5
|
* Surface semantic resolver: maps color-theory SemanticColorToken references
|
|
6
6
|
* to hex values from the generated swatches.
|
|
@@ -8,7 +8,7 @@ import type { ThemeSemantics } from './types';
|
|
|
8
8
|
export type SurfaceSemanticColors = Record<SemanticColorToken, HexColor>;
|
|
9
9
|
export declare function resolveSemanticColors(generated: GeneratedThemeModeColors, references: SemanticColorReferenceMap): SurfaceSemanticColors;
|
|
10
10
|
export declare function generatePalette(config: ThemeConfig, mode?: 'light' | 'dark'): {
|
|
11
|
-
colors:
|
|
11
|
+
colors: ThemeTokens['colors'];
|
|
12
12
|
swatches: GeneratedThemeSwatches;
|
|
13
13
|
semantics: ThemeSemantics;
|
|
14
14
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colorEngine.d.ts","sourceRoot":"","sources":["../../src/theme/colorEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,wBAAwB,EACxB,sBAAsB,EACtB,QAAQ,EACR,yBAAyB,EACzB,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAOjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAOV,cAAc,
|
|
1
|
+
{"version":3,"file":"colorEngine.d.ts","sourceRoot":"","sources":["../../src/theme/colorEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,wBAAwB,EACxB,sBAAsB,EACtB,QAAQ,EACR,yBAAyB,EACzB,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAOjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAOV,cAAc,EACd,WAAW,EACZ,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AAEzE,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,wBAAwB,EACnC,UAAU,EAAE,yBAAyB,GACpC,qBAAqB,CAUvB;AA8DD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,IAAI,GAAE,OAAO,GAAG,MAAgB,GAC/B;IACD,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9B,QAAQ,EAAE,sBAAsB,CAAC;IACjC,SAAS,EAAE,cAAc,CAAC;CAC3B,CA8FA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colorEngine.js","sourceRoot":"","sources":["../../src/theme/colorEngine.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ColorSwatch,\n GeneratedThemeModeColors,\n GeneratedThemeSwatches,\n HexColor,\n SemanticColorReferenceMap,\n SemanticColorToken,\n} from '@ankhorage/color-theory';\nimport {\n createDefaultSemanticStatusSwatches,\n generateThemeModeColors,\n getReadableForeground,\n parseHexColorOrThrow,\n} from '@ankhorage/color-theory';\nimport type { ThemeConfig } from '@ankhorage/contracts';\n\nimport type {\n ActionSemantics,\n BorderSemantics,\n ContentSemantics,\n NeutralSemantics,\n RoleSemantics,\n SurfaceSemantics,\n ThemeSemantics,\n} from './types';\n\n/**\n * Surface semantic resolver: maps color-theory SemanticColorToken references\n * to hex values from the generated swatches.\n */\nexport type SurfaceSemanticColors = Record<SemanticColorToken, HexColor>;\n\nexport function resolveSemanticColors(\n generated: GeneratedThemeModeColors,\n references: SemanticColorReferenceMap,\n): SurfaceSemanticColors {\n return Object.fromEntries(\n Object.entries(references).map(([token, ref]) => {\n const swatch = generated.swatches[ref.role];\n if (!swatch) {\n throw new Error(`Missing swatch for role '${ref.role}' (token: '${token}')`);\n }\n return [token, swatch[ref.step]];\n }),\n ) as SurfaceSemanticColors;\n}\n\nfunction buildNeutralSemantics(neutralSwatch: ColorSwatch, isDark: boolean): NeutralSemantics {\n if (isDark) {\n return {\n bg: neutralSwatch[950],\n bgSubtle: neutralSwatch[900],\n surface: neutralSwatch[900],\n surfaceHover: neutralSwatch[800],\n surfaceActive: neutralSwatch[700],\n border: neutralSwatch[800],\n borderStrong: neutralSwatch[600],\n divider: neutralSwatch[800],\n text: neutralSwatch[50],\n textMuted: neutralSwatch[200],\n textSubtle: neutralSwatch[300],\n };\n }\n return {\n bg: neutralSwatch[50],\n bgSubtle: neutralSwatch[100],\n surface: neutralSwatch[100],\n surfaceHover: neutralSwatch[200],\n surfaceActive: neutralSwatch[300],\n border: neutralSwatch[200],\n borderStrong: neutralSwatch[300],\n divider: neutralSwatch[200],\n text: neutralSwatch[900],\n textMuted: neutralSwatch[700],\n textSubtle: neutralSwatch[600],\n };\n}\n\nfunction buildRoleSemantics(swatch: ColorSwatch, isDark: boolean): RoleSemantics {\n const base = swatch[500];\n const { foreground: onSolidText } = getReadableForeground(base);\n\n if (isDark) {\n return {\n base,\n hover: swatch[400],\n strong: swatch[300],\n softBg: swatch[900],\n softHover: swatch[800],\n softActive: swatch[700],\n outline: swatch[500],\n onSolidText,\n };\n }\n\n return {\n base,\n hover: swatch[600],\n strong: swatch[700],\n softBg: swatch[100],\n softHover: swatch[200],\n softActive: swatch[300],\n outline: swatch[400],\n onSolidText,\n };\n}\n\nexport function generatePalette(\n config: ThemeConfig,\n mode: 'light' | 'dark' = 'light',\n): {\n colors: Record<string, string>;\n swatches: GeneratedThemeSwatches;\n semantics: ThemeSemantics;\n} {\n const modeConfig = mode === 'dark' ? config.dark : config.light;\n const isDark = mode === 'dark';\n\n // Throws deterministically on invalid primary color\n parseHexColorOrThrow(modeConfig.primaryColor);\n\n const generated = generateThemeModeColors(modeConfig);\n const { swatches } = generated;\n const neutralSwatch = swatches.neutral;\n\n const neutral = buildNeutralSemantics(neutralSwatch, isDark);\n const brand = buildRoleSemantics(swatches.primary, isDark);\n\n // Fallback to primary swatch for missing ordinal roles\n const secondarySwatch = swatches.secondary ?? swatches.primary;\n const tertiarySwatch = swatches.tertiary ?? swatches.primary;\n const quaternarySwatch = swatches.quaternary ?? swatches.primary;\n\n const semanticStatusSwatches = createDefaultSemanticStatusSwatches().swatches;\n\n const danger = buildRoleSemantics(semanticStatusSwatches.danger, isDark);\n const success = buildRoleSemantics(semanticStatusSwatches.success, isDark);\n const warning = buildRoleSemantics(semanticStatusSwatches.warning, isDark);\n // Keep destructive action and feedback error aligned until a dedicated error status swatch is introduced.\n const error = danger;\n const info = buildRoleSemantics(secondarySwatch, isDark);\n const inverseSurface = isDark ? neutralSwatch[50] : neutralSwatch[900];\n const inverseOnSurface = isDark ? neutralSwatch[900] : neutralSwatch[50];\n\n const surfaceSemantics: SurfaceSemantics = {\n default: neutral.surface,\n subtle: neutral.bgSubtle,\n raised: neutral.surface,\n inverse: inverseSurface,\n };\n\n const content: ContentSemantics = {\n default: neutral.text,\n muted: neutral.textMuted,\n subtle: neutral.textSubtle,\n inverse: inverseOnSurface,\n };\n\n const border: BorderSemantics = {\n default: neutral.border,\n strong: neutral.borderStrong,\n focus: brand.outline,\n };\n\n const action: ActionSemantics = {\n primary: brand,\n neutral: buildRoleSemantics(neutralSwatch, isDark),\n danger,\n };\n\n const colors: Record<string, string> = {\n primary: brand.base,\n secondary: secondarySwatch[500],\n accent: tertiarySwatch[500],\n highlight: quaternarySwatch[500],\n tertiary: tertiarySwatch[500],\n quaternary: quaternarySwatch[500],\n background: neutral.bg,\n surface: neutral.surface,\n text: neutral.text,\n textSecondary: neutral.textMuted,\n border: neutral.border,\n error: error.base,\n success: success.base,\n warning: warning.base,\n info: info.base,\n };\n\n return {\n colors,\n swatches,\n semantics: {\n neutral,\n brand,\n secondary: buildRoleSemantics(secondarySwatch, isDark),\n accent: buildRoleSemantics(tertiarySwatch, isDark),\n highlight: buildRoleSemantics(quaternarySwatch, isDark),\n danger,\n success,\n warning,\n error,\n info,\n surface: surfaceSemantics,\n content,\n border,\n action,\n },\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"colorEngine.js","sourceRoot":"","sources":["../../src/theme/colorEngine.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ColorSwatch,\n GeneratedThemeModeColors,\n GeneratedThemeSwatches,\n HexColor,\n SemanticColorReferenceMap,\n SemanticColorToken,\n} from '@ankhorage/color-theory';\nimport {\n createDefaultSemanticStatusSwatches,\n generateThemeModeColors,\n getReadableForeground,\n parseHexColorOrThrow,\n} from '@ankhorage/color-theory';\nimport type { ThemeConfig } from '@ankhorage/contracts';\n\nimport type {\n ActionSemantics,\n BorderSemantics,\n ContentSemantics,\n NeutralSemantics,\n RoleSemantics,\n SurfaceSemantics,\n ThemeSemantics,\n ThemeTokens,\n} from './types';\n\n/**\n * Surface semantic resolver: maps color-theory SemanticColorToken references\n * to hex values from the generated swatches.\n */\nexport type SurfaceSemanticColors = Record<SemanticColorToken, HexColor>;\n\nexport function resolveSemanticColors(\n generated: GeneratedThemeModeColors,\n references: SemanticColorReferenceMap,\n): SurfaceSemanticColors {\n return Object.fromEntries(\n Object.entries(references).map(([token, ref]) => {\n const swatch = generated.swatches[ref.role];\n if (!swatch) {\n throw new Error(`Missing swatch for role '${ref.role}' (token: '${token}')`);\n }\n return [token, swatch[ref.step]];\n }),\n ) as SurfaceSemanticColors;\n}\n\nfunction buildNeutralSemantics(neutralSwatch: ColorSwatch, isDark: boolean): NeutralSemantics {\n if (isDark) {\n return {\n bg: neutralSwatch[950],\n bgSubtle: neutralSwatch[900],\n surface: neutralSwatch[900],\n surfaceHover: neutralSwatch[800],\n surfaceActive: neutralSwatch[700],\n border: neutralSwatch[800],\n borderStrong: neutralSwatch[600],\n divider: neutralSwatch[800],\n text: neutralSwatch[50],\n textMuted: neutralSwatch[200],\n textSubtle: neutralSwatch[300],\n };\n }\n return {\n bg: neutralSwatch[50],\n bgSubtle: neutralSwatch[100],\n surface: neutralSwatch[100],\n surfaceHover: neutralSwatch[200],\n surfaceActive: neutralSwatch[300],\n border: neutralSwatch[200],\n borderStrong: neutralSwatch[300],\n divider: neutralSwatch[200],\n text: neutralSwatch[900],\n textMuted: neutralSwatch[700],\n textSubtle: neutralSwatch[600],\n };\n}\n\nfunction buildRoleSemantics(swatch: ColorSwatch, isDark: boolean): RoleSemantics {\n const base = swatch[500];\n const { foreground: onSolidText } = getReadableForeground(base);\n\n if (isDark) {\n return {\n base,\n hover: swatch[400],\n strong: swatch[300],\n softBg: swatch[900],\n softHover: swatch[800],\n softActive: swatch[700],\n outline: swatch[500],\n onSolidText,\n };\n }\n\n return {\n base,\n hover: swatch[600],\n strong: swatch[700],\n softBg: swatch[100],\n softHover: swatch[200],\n softActive: swatch[300],\n outline: swatch[400],\n onSolidText,\n };\n}\n\nexport function generatePalette(\n config: ThemeConfig,\n mode: 'light' | 'dark' = 'light',\n): {\n colors: ThemeTokens['colors'];\n swatches: GeneratedThemeSwatches;\n semantics: ThemeSemantics;\n} {\n const modeConfig = mode === 'dark' ? config.dark : config.light;\n const isDark = mode === 'dark';\n\n // Throws deterministically on invalid primary color\n parseHexColorOrThrow(modeConfig.primaryColor);\n\n const generated = generateThemeModeColors(modeConfig);\n const { swatches } = generated;\n const neutralSwatch = swatches.neutral;\n\n const neutral = buildNeutralSemantics(neutralSwatch, isDark);\n const brand = buildRoleSemantics(swatches.primary, isDark);\n\n // Fallback to primary swatch for missing ordinal roles\n const secondarySwatch = swatches.secondary ?? swatches.primary;\n const tertiarySwatch = swatches.tertiary ?? swatches.primary;\n const quaternarySwatch = swatches.quaternary ?? swatches.primary;\n\n const semanticStatusSwatches = createDefaultSemanticStatusSwatches().swatches;\n\n const danger = buildRoleSemantics(semanticStatusSwatches.danger, isDark);\n const success = buildRoleSemantics(semanticStatusSwatches.success, isDark);\n const warning = buildRoleSemantics(semanticStatusSwatches.warning, isDark);\n // Keep destructive action and feedback error aligned until a dedicated error status swatch is introduced.\n const error = danger;\n const info = buildRoleSemantics(secondarySwatch, isDark);\n const inverseSurface = isDark ? neutralSwatch[50] : neutralSwatch[900];\n const inverseOnSurface = isDark ? neutralSwatch[900] : neutralSwatch[50];\n\n const surfaceSemantics: SurfaceSemantics = {\n default: neutral.surface,\n subtle: neutral.bgSubtle,\n raised: neutral.surface,\n inverse: inverseSurface,\n };\n\n const content: ContentSemantics = {\n default: neutral.text,\n muted: neutral.textMuted,\n subtle: neutral.textSubtle,\n inverse: inverseOnSurface,\n };\n\n const border: BorderSemantics = {\n default: neutral.border,\n strong: neutral.borderStrong,\n focus: brand.outline,\n };\n\n const action: ActionSemantics = {\n primary: brand,\n neutral: buildRoleSemantics(neutralSwatch, isDark),\n danger,\n };\n\n const colors: ThemeTokens['colors'] = {\n primary: brand.base,\n secondary: secondarySwatch[500],\n accent: tertiarySwatch[500],\n highlight: quaternarySwatch[500],\n tertiary: tertiarySwatch[500],\n quaternary: quaternarySwatch[500],\n background: neutral.bg,\n surface: neutral.surface,\n text: neutral.text,\n textSecondary: neutral.textMuted,\n border: neutral.border,\n error: error.base,\n success: success.base,\n warning: warning.base,\n info: info.base,\n };\n\n return {\n colors,\n swatches,\n semantics: {\n neutral,\n brand,\n secondary: buildRoleSemantics(secondarySwatch, isDark),\n accent: buildRoleSemantics(tertiarySwatch, isDark),\n highlight: buildRoleSemantics(quaternarySwatch, isDark),\n danger,\n success,\n warning,\n error,\n info,\n surface: surfaceSemantics,\n content,\n border,\n action,\n },\n };\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { SurfaceTheme, ThemeConfig
|
|
2
|
-
export
|
|
1
|
+
import type { SurfaceTheme, ThemeConfig } from './types';
|
|
2
|
+
export { DEFAULT_TOKENS } from './defaultTokens';
|
|
3
3
|
export declare const DEFAULT_CONFIG: ThemeConfig;
|
|
4
4
|
export declare function createTheme(config?: ThemeConfig, mode?: 'light' | 'dark', activeFontId?: string | null): SurfaceTheme;
|
|
5
5
|
//# sourceMappingURL=createTheme.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createTheme.d.ts","sourceRoot":"","sources":["../../src/theme/createTheme.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createTheme.d.ts","sourceRoot":"","sources":["../../src/theme/createTheme.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAc,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAErE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,eAAO,MAAM,cAAc,EAAE,WAK5B,CAAC;AAcF,wBAAgB,WAAW,CACzB,MAAM,GAAE,WAA4B,EACpC,IAAI,GAAE,OAAO,GAAG,MAAgB,EAChC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAC3B,YAAY,CAYd"}
|
|
@@ -1,107 +1,48 @@
|
|
|
1
1
|
import { generatePalette } from './colorEngine';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
none: 0,
|
|
5
|
-
xs: 4,
|
|
6
|
-
s: 8,
|
|
7
|
-
m: 16,
|
|
8
|
-
l: 24,
|
|
9
|
-
xl: 32,
|
|
10
|
-
xxl: 48,
|
|
11
|
-
},
|
|
12
|
-
radii: {
|
|
13
|
-
none: 0,
|
|
14
|
-
s: 4,
|
|
15
|
-
m: 8,
|
|
16
|
-
l: 16,
|
|
17
|
-
full: 9999,
|
|
18
|
-
},
|
|
19
|
-
typography: {
|
|
20
|
-
headings: {
|
|
21
|
-
1: { size: 32, lineHeight: 40, weight: 'bold' },
|
|
22
|
-
2: { size: 24, lineHeight: 32, weight: 'bold' },
|
|
23
|
-
3: { size: 20, lineHeight: 28, weight: 'bold' },
|
|
24
|
-
4: { size: 18, lineHeight: 24, weight: 'semiBold' },
|
|
25
|
-
5: { size: 16, lineHeight: 22, weight: 'semiBold' },
|
|
26
|
-
6: { size: 14, lineHeight: 20, weight: 'semiBold' },
|
|
27
|
-
},
|
|
28
|
-
sizes: {
|
|
29
|
-
xs: 12,
|
|
30
|
-
s: 14,
|
|
31
|
-
m: 16,
|
|
32
|
-
l: 18,
|
|
33
|
-
xl: 20,
|
|
34
|
-
xxl: 24,
|
|
35
|
-
'3xl': 30,
|
|
36
|
-
h1: 32,
|
|
37
|
-
h2: 24,
|
|
38
|
-
h3: 20,
|
|
39
|
-
h4: 18,
|
|
40
|
-
h5: 16,
|
|
41
|
-
h6: 14,
|
|
42
|
-
},
|
|
43
|
-
weights: {
|
|
44
|
-
thin: '100',
|
|
45
|
-
extraLight: '200',
|
|
46
|
-
light: '300',
|
|
47
|
-
regular: '400',
|
|
48
|
-
medium: '500',
|
|
49
|
-
semiBold: '600',
|
|
50
|
-
bold: '700',
|
|
51
|
-
extraBold: '800',
|
|
52
|
-
black: '900',
|
|
53
|
-
},
|
|
54
|
-
fonts: {
|
|
55
|
-
normal: {},
|
|
56
|
-
italic: {},
|
|
57
|
-
},
|
|
58
|
-
},
|
|
59
|
-
shadows: {
|
|
60
|
-
soft: 2,
|
|
61
|
-
medium: 4,
|
|
62
|
-
hard: 8,
|
|
63
|
-
},
|
|
64
|
-
};
|
|
2
|
+
import { resolveGlobalTokens } from './resolveGlobalTokens';
|
|
3
|
+
export { DEFAULT_TOKENS } from './defaultTokens';
|
|
65
4
|
export const DEFAULT_CONFIG = {
|
|
66
5
|
id: 'default',
|
|
67
6
|
name: 'Default',
|
|
68
|
-
light: {
|
|
69
|
-
|
|
70
|
-
harmony: 'monochromatic',
|
|
71
|
-
},
|
|
72
|
-
dark: {
|
|
73
|
-
primaryColor: '#3B82F6',
|
|
74
|
-
harmony: 'monochromatic',
|
|
75
|
-
},
|
|
7
|
+
light: { primaryColor: '#3B82F6', harmony: 'monochromatic' },
|
|
8
|
+
dark: { primaryColor: '#3B82F6', harmony: 'monochromatic' },
|
|
76
9
|
};
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
10
|
+
const ACTIVE_FONT_WEIGHTS = [
|
|
11
|
+
'100',
|
|
12
|
+
'200',
|
|
13
|
+
'300',
|
|
14
|
+
'400',
|
|
15
|
+
'500',
|
|
16
|
+
'600',
|
|
17
|
+
'700',
|
|
18
|
+
'800',
|
|
19
|
+
'900',
|
|
20
|
+
];
|
|
87
21
|
export function createTheme(config = DEFAULT_CONFIG, mode = 'light', activeFontId) {
|
|
88
22
|
const { colors, swatches, semantics } = generatePalette(config, mode);
|
|
89
23
|
const theme = {
|
|
90
|
-
...
|
|
91
|
-
colors
|
|
24
|
+
...resolveGlobalTokens(config.tokens),
|
|
25
|
+
colors,
|
|
92
26
|
swatches,
|
|
93
27
|
semantics,
|
|
94
28
|
config,
|
|
95
29
|
};
|
|
96
|
-
|
|
97
|
-
const familyName = toPascalCase(activeFontId);
|
|
98
|
-
const weights = ['100', '200', '300', '400', '500', '600', '700', '800', '900'];
|
|
99
|
-
weights.forEach((w) => {
|
|
100
|
-
// Convention from GoogleFonts plugin: Family_WeightRegular
|
|
101
|
-
theme.typography.fonts.normal[w] = `${familyName}_${w}Regular`;
|
|
102
|
-
theme.typography.fonts.italic[w] = `${familyName}_${w}Italic`;
|
|
103
|
-
});
|
|
104
|
-
}
|
|
30
|
+
applyActiveFont(theme, activeFontId);
|
|
105
31
|
return theme;
|
|
106
32
|
}
|
|
33
|
+
function applyActiveFont(theme, activeFontId) {
|
|
34
|
+
if (!activeFontId)
|
|
35
|
+
return;
|
|
36
|
+
const familyName = toPascalCase(activeFontId);
|
|
37
|
+
for (const weight of ACTIVE_FONT_WEIGHTS) {
|
|
38
|
+
theme.typography.fonts.normal[weight] = `${familyName}_${weight}Regular`;
|
|
39
|
+
theme.typography.fonts.italic[weight] = `${familyName}_${weight}Italic`;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function toPascalCase(value) {
|
|
43
|
+
return value
|
|
44
|
+
.split(/[- ]+/)
|
|
45
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
46
|
+
.join('');
|
|
47
|
+
}
|
|
107
48
|
//# sourceMappingURL=createTheme.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createTheme.js","sourceRoot":"","sources":["../../src/theme/createTheme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"createTheme.js","sourceRoot":"","sources":["../../src/theme/createTheme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE;IAC5D,IAAI,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE;CAC5D,CAAC;AAEF,MAAM,mBAAmB,GAA0B;IACjD,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;CACN,CAAC;AAEF,MAAM,UAAU,WAAW,CACzB,SAAsB,cAAc,EACpC,OAAyB,OAAO,EAChC,YAA4B;IAE5B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtE,MAAM,KAAK,GAAiB;QAC1B,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC;QACrC,MAAM;QACN,QAAQ;QACR,SAAS;QACT,MAAM;KACP,CAAC;IAEF,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,KAAmB,EAAE,YAAuC;IACnF,IAAI,CAAC,YAAY;QAAE,OAAO;IAE1B,MAAM,UAAU,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAC9C,KAAK,MAAM,MAAM,IAAI,mBAAmB,EAAE,CAAC;QACzC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,UAAU,IAAI,MAAM,SAAS,CAAC;QACzE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,UAAU,IAAI,MAAM,QAAQ,CAAC;IAC1E,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK;SACT,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC","sourcesContent":["import { generatePalette } from './colorEngine';\nimport { resolveGlobalTokens } from './resolveGlobalTokens';\nimport type { FontWeight, SurfaceTheme, ThemeConfig } from './types';\n\nexport { DEFAULT_TOKENS } from './defaultTokens';\n\nexport const DEFAULT_CONFIG: ThemeConfig = {\n id: 'default',\n name: 'Default',\n light: { primaryColor: '#3B82F6', harmony: 'monochromatic' },\n dark: { primaryColor: '#3B82F6', harmony: 'monochromatic' },\n};\n\nconst ACTIVE_FONT_WEIGHTS: readonly FontWeight[] = [\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n];\n\nexport function createTheme(\n config: ThemeConfig = DEFAULT_CONFIG,\n mode: 'light' | 'dark' = 'light',\n activeFontId?: string | null,\n): SurfaceTheme {\n const { colors, swatches, semantics } = generatePalette(config, mode);\n const theme: SurfaceTheme = {\n ...resolveGlobalTokens(config.tokens),\n colors,\n swatches,\n semantics,\n config,\n };\n\n applyActiveFont(theme, activeFontId);\n return theme;\n}\n\nfunction applyActiveFont(theme: SurfaceTheme, activeFontId: string | null | undefined): void {\n if (!activeFontId) return;\n\n const familyName = toPascalCase(activeFontId);\n for (const weight of ACTIVE_FONT_WEIGHTS) {\n theme.typography.fonts.normal[weight] = `${familyName}_${weight}Regular`;\n theme.typography.fonts.italic[weight] = `${familyName}_${weight}Italic`;\n }\n}\n\nfunction toPascalCase(value: string): string {\n return value\n .split(/[- ]+/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join('');\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultTokens.d.ts","sourceRoot":"","sources":["../../src/theme/defaultTokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,WAAW,EAAE,MAAM,SAAS,CAAC;AAgBvD,eAAO,MAAM,cAAc,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,UAAU,GAAG,WAAW,CAyCjF,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
const EMPTY_FONT_MAP = {
|
|
2
|
+
'100': undefined,
|
|
3
|
+
'200': undefined,
|
|
4
|
+
'300': undefined,
|
|
5
|
+
'400': undefined,
|
|
6
|
+
'500': undefined,
|
|
7
|
+
'600': undefined,
|
|
8
|
+
'700': undefined,
|
|
9
|
+
'800': undefined,
|
|
10
|
+
'900': undefined,
|
|
11
|
+
bold: undefined,
|
|
12
|
+
normal: undefined,
|
|
13
|
+
};
|
|
14
|
+
export const DEFAULT_TOKENS = {
|
|
15
|
+
spacing: { none: 0, xs: 4, s: 8, m: 16, l: 24, xl: 32, xxl: 48 },
|
|
16
|
+
radii: { none: 0, s: 4, m: 8, l: 16, full: 9999 },
|
|
17
|
+
typography: {
|
|
18
|
+
headings: {
|
|
19
|
+
1: { size: 32, lineHeight: 40, weight: 'bold' },
|
|
20
|
+
2: { size: 24, lineHeight: 32, weight: 'bold' },
|
|
21
|
+
3: { size: 20, lineHeight: 28, weight: 'bold' },
|
|
22
|
+
4: { size: 18, lineHeight: 24, weight: 'semiBold' },
|
|
23
|
+
5: { size: 16, lineHeight: 22, weight: 'semiBold' },
|
|
24
|
+
6: { size: 14, lineHeight: 20, weight: 'semiBold' },
|
|
25
|
+
},
|
|
26
|
+
sizes: {
|
|
27
|
+
xs: 12,
|
|
28
|
+
s: 14,
|
|
29
|
+
m: 16,
|
|
30
|
+
l: 18,
|
|
31
|
+
xl: 20,
|
|
32
|
+
xxl: 24,
|
|
33
|
+
'3xl': 30,
|
|
34
|
+
h1: 32,
|
|
35
|
+
h2: 24,
|
|
36
|
+
h3: 20,
|
|
37
|
+
h4: 18,
|
|
38
|
+
h5: 16,
|
|
39
|
+
h6: 14,
|
|
40
|
+
},
|
|
41
|
+
weights: {
|
|
42
|
+
thin: '100',
|
|
43
|
+
extraLight: '200',
|
|
44
|
+
light: '300',
|
|
45
|
+
regular: '400',
|
|
46
|
+
medium: '500',
|
|
47
|
+
semiBold: '600',
|
|
48
|
+
bold: '700',
|
|
49
|
+
extraBold: '800',
|
|
50
|
+
black: '900',
|
|
51
|
+
},
|
|
52
|
+
fonts: { normal: { ...EMPTY_FONT_MAP }, italic: { ...EMPTY_FONT_MAP } },
|
|
53
|
+
},
|
|
54
|
+
shadows: { soft: 2, medium: 4, hard: 8 },
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=defaultTokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultTokens.js","sourceRoot":"","sources":["../../src/theme/defaultTokens.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAA2C;IAC7D,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,SAAS;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAA2D;IACpF,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;IAChE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACjD,UAAU,EAAE;QACV,QAAQ,EAAE;YACR,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;YAC/C,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;YAC/C,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;YAC/C,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;YACnD,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;YACnD,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;SACpD;QACD,KAAK,EAAE;YACL,EAAE,EAAE,EAAE;YACN,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,EAAE;YACL,EAAE,EAAE,EAAE;YACN,GAAG,EAAE,EAAE;YACP,KAAK,EAAE,EAAE;YACT,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;SACP;QACD,OAAO,EAAE;YACP,IAAI,EAAE,KAAK;YACX,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,cAAc,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,cAAc,EAAE,EAAE;KACxE;IACD,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;CACzC,CAAC","sourcesContent":["import type { FontWeight, ThemeTokens } from './types';\n\nconst EMPTY_FONT_MAP: Record<FontWeight, string | undefined> = {\n '100': undefined,\n '200': undefined,\n '300': undefined,\n '400': undefined,\n '500': undefined,\n '600': undefined,\n '700': undefined,\n '800': undefined,\n '900': undefined,\n bold: undefined,\n normal: undefined,\n};\n\nexport const DEFAULT_TOKENS: Omit<ThemeTokens, 'colors' | 'swatches' | 'semantics'> = {\n spacing: { none: 0, xs: 4, s: 8, m: 16, l: 24, xl: 32, xxl: 48 },\n radii: { none: 0, s: 4, m: 8, l: 16, full: 9999 },\n typography: {\n headings: {\n 1: { size: 32, lineHeight: 40, weight: 'bold' },\n 2: { size: 24, lineHeight: 32, weight: 'bold' },\n 3: { size: 20, lineHeight: 28, weight: 'bold' },\n 4: { size: 18, lineHeight: 24, weight: 'semiBold' },\n 5: { size: 16, lineHeight: 22, weight: 'semiBold' },\n 6: { size: 14, lineHeight: 20, weight: 'semiBold' },\n },\n sizes: {\n xs: 12,\n s: 14,\n m: 16,\n l: 18,\n xl: 20,\n xxl: 24,\n '3xl': 30,\n h1: 32,\n h2: 24,\n h3: 20,\n h4: 18,\n h5: 16,\n h6: 14,\n },\n weights: {\n thin: '100',\n extraLight: '200',\n light: '300',\n regular: '400',\n medium: '500',\n semiBold: '600',\n bold: '700',\n extraBold: '800',\n black: '900',\n },\n fonts: { normal: { ...EMPTY_FONT_MAP }, italic: { ...EMPTY_FONT_MAP } },\n },\n shadows: { soft: 2, medium: 4, hard: 8 },\n};\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ThemeGlobalTokenOverrides } from '@ankhorage/contracts';
|
|
2
|
+
import type { ThemeTokens } from './types';
|
|
3
|
+
type GlobalThemeTokens = Omit<ThemeTokens, 'colors' | 'swatches' | 'semantics'>;
|
|
4
|
+
export declare function resolveGlobalTokens(overrides?: ThemeGlobalTokenOverrides): GlobalThemeTokens;
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=resolveGlobalTokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveGlobalTokens.d.ts","sourceRoot":"","sources":["../../src/theme/resolveGlobalTokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAMtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,KAAK,iBAAiB,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC,CAAC;AAEhF,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,yBAAyB,GAAG,iBAAiB,CAmC5F"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { DEFAULT_TOKENS } from './defaultTokens';
|
|
2
|
+
import { resolveHeadingTokenOverrides } from './resolveHeadingTokenOverrides';
|
|
3
|
+
import { resolveNumericTokenOverrides } from './resolveNumericTokenOverrides';
|
|
4
|
+
import { resolveWeightTokenOverrides } from './resolveWeightTokenOverrides';
|
|
5
|
+
export function resolveGlobalTokens(overrides) {
|
|
6
|
+
validateZeroTokens(overrides);
|
|
7
|
+
const typography = overrides?.typography;
|
|
8
|
+
return {
|
|
9
|
+
spacing: {
|
|
10
|
+
...DEFAULT_TOKENS.spacing,
|
|
11
|
+
...resolveNumericTokenOverrides('spacing', overrides?.spacing),
|
|
12
|
+
},
|
|
13
|
+
radii: {
|
|
14
|
+
...DEFAULT_TOKENS.radii,
|
|
15
|
+
...resolveNumericTokenOverrides('radii', overrides?.radii),
|
|
16
|
+
},
|
|
17
|
+
typography: {
|
|
18
|
+
headings: resolveHeadingTokenOverrides(DEFAULT_TOKENS.typography.headings, typography?.headings),
|
|
19
|
+
sizes: {
|
|
20
|
+
...DEFAULT_TOKENS.typography.sizes,
|
|
21
|
+
...resolveNumericTokenOverrides('typography.sizes', typography?.sizes, true),
|
|
22
|
+
},
|
|
23
|
+
weights: {
|
|
24
|
+
...DEFAULT_TOKENS.typography.weights,
|
|
25
|
+
...resolveWeightTokenOverrides(typography?.weights),
|
|
26
|
+
},
|
|
27
|
+
fonts: {
|
|
28
|
+
normal: { ...DEFAULT_TOKENS.typography.fonts.normal },
|
|
29
|
+
italic: { ...DEFAULT_TOKENS.typography.fonts.italic },
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
shadows: {
|
|
33
|
+
...DEFAULT_TOKENS.shadows,
|
|
34
|
+
...resolveNumericTokenOverrides('shadows', overrides?.shadows),
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function validateZeroTokens(overrides) {
|
|
39
|
+
if (overrides?.spacing?.none !== undefined && overrides.spacing.none !== 0) {
|
|
40
|
+
throw new RangeError('Theme token spacing.none must remain 0.');
|
|
41
|
+
}
|
|
42
|
+
if (overrides?.radii?.none !== undefined && overrides.radii.none !== 0) {
|
|
43
|
+
throw new RangeError('Theme token radii.none must remain 0.');
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=resolveGlobalTokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveGlobalTokens.js","sourceRoot":"","sources":["../../src/theme/resolveGlobalTokens.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAK5E,MAAM,UAAU,mBAAmB,CAAC,SAAqC;IACvE,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC9B,MAAM,UAAU,GAAG,SAAS,EAAE,UAAU,CAAC;IACzC,OAAO;QACL,OAAO,EAAE;YACP,GAAG,cAAc,CAAC,OAAO;YACzB,GAAG,4BAA4B,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC;SAC/D;QACD,KAAK,EAAE;YACL,GAAG,cAAc,CAAC,KAAK;YACvB,GAAG,4BAA4B,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC;SAC3D;QACD,UAAU,EAAE;YACV,QAAQ,EAAE,4BAA4B,CACpC,cAAc,CAAC,UAAU,CAAC,QAAQ,EAClC,UAAU,EAAE,QAAQ,CACrB;YACD,KAAK,EAAE;gBACL,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK;gBAClC,GAAG,4BAA4B,CAAC,kBAAkB,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC;aAC7E;YACD,OAAO,EAAE;gBACP,GAAG,cAAc,CAAC,UAAU,CAAC,OAAO;gBACpC,GAAG,2BAA2B,CAAC,UAAU,EAAE,OAAO,CAAC;aACpD;YACD,KAAK,EAAE;gBACL,MAAM,EAAE,EAAE,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE;gBACrD,MAAM,EAAE,EAAE,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE;aACtD;SACF;QACD,OAAO,EAAE;YACP,GAAG,cAAc,CAAC,OAAO;YACzB,GAAG,4BAA4B,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC;SAC/D;KACF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAgD;IAC1E,IAAI,SAAS,EAAE,OAAO,EAAE,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,UAAU,CAAC,yCAAyC,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,SAAS,EAAE,KAAK,EAAE,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,UAAU,CAAC,uCAAuC,CAAC,CAAC;IAChE,CAAC;AACH,CAAC","sourcesContent":["import type { ThemeGlobalTokenOverrides } from '@ankhorage/contracts';\n\nimport { DEFAULT_TOKENS } from './defaultTokens';\nimport { resolveHeadingTokenOverrides } from './resolveHeadingTokenOverrides';\nimport { resolveNumericTokenOverrides } from './resolveNumericTokenOverrides';\nimport { resolveWeightTokenOverrides } from './resolveWeightTokenOverrides';\nimport type { ThemeTokens } from './types';\n\ntype GlobalThemeTokens = Omit<ThemeTokens, 'colors' | 'swatches' | 'semantics'>;\n\nexport function resolveGlobalTokens(overrides?: ThemeGlobalTokenOverrides): GlobalThemeTokens {\n validateZeroTokens(overrides);\n const typography = overrides?.typography;\n return {\n spacing: {\n ...DEFAULT_TOKENS.spacing,\n ...resolveNumericTokenOverrides('spacing', overrides?.spacing),\n },\n radii: {\n ...DEFAULT_TOKENS.radii,\n ...resolveNumericTokenOverrides('radii', overrides?.radii),\n },\n typography: {\n headings: resolveHeadingTokenOverrides(\n DEFAULT_TOKENS.typography.headings,\n typography?.headings,\n ),\n sizes: {\n ...DEFAULT_TOKENS.typography.sizes,\n ...resolveNumericTokenOverrides('typography.sizes', typography?.sizes, true),\n },\n weights: {\n ...DEFAULT_TOKENS.typography.weights,\n ...resolveWeightTokenOverrides(typography?.weights),\n },\n fonts: {\n normal: { ...DEFAULT_TOKENS.typography.fonts.normal },\n italic: { ...DEFAULT_TOKENS.typography.fonts.italic },\n },\n },\n shadows: {\n ...DEFAULT_TOKENS.shadows,\n ...resolveNumericTokenOverrides('shadows', overrides?.shadows),\n },\n };\n}\n\nfunction validateZeroTokens(overrides: ThemeGlobalTokenOverrides | undefined): void {\n if (overrides?.spacing?.none !== undefined && overrides.spacing.none !== 0) {\n throw new RangeError('Theme token spacing.none must remain 0.');\n }\n if (overrides?.radii?.none !== undefined && overrides.radii.none !== 0) {\n throw new RangeError('Theme token radii.none must remain 0.');\n }\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ThemeTypographyHeadingOverrides } from '@ankhorage/contracts';
|
|
2
|
+
import type { ThemeTokens } from './types';
|
|
3
|
+
type HeadingTokens = ThemeTokens['typography']['headings'];
|
|
4
|
+
export declare function resolveHeadingTokenOverrides(defaults: HeadingTokens, overrides: Readonly<Record<string, ThemeTypographyHeadingOverrides>> | undefined): HeadingTokens;
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=resolveHeadingTokenOverrides.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveHeadingTokenOverrides.d.ts","sourceRoot":"","sources":["../../src/theme/resolveHeadingTokenOverrides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AAE5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,KAAK,aAAa,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC;AAO3D,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,+BAA+B,CAAC,CAAC,GAAG,SAAS,GAC/E,aAAa,CAUf"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const HEADING_KEYS = new Set(['1', '2', '3', '4', '5', '6']);
|
|
2
|
+
const HEADING_WEIGHTS = new Set(['regular', 'medium', 'semiBold', 'bold']);
|
|
3
|
+
export function resolveHeadingTokenOverrides(defaults, overrides) {
|
|
4
|
+
validateHeadingKeys(overrides);
|
|
5
|
+
return {
|
|
6
|
+
1: resolveHeading('1', defaults[1], overrides?.['1']),
|
|
7
|
+
2: resolveHeading('2', defaults[2], overrides?.['2']),
|
|
8
|
+
3: resolveHeading('3', defaults[3], overrides?.['3']),
|
|
9
|
+
4: resolveHeading('4', defaults[4], overrides?.['4']),
|
|
10
|
+
5: resolveHeading('5', defaults[5], overrides?.['5']),
|
|
11
|
+
6: resolveHeading('6', defaults[6], overrides?.['6']),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function validateHeadingKeys(overrides) {
|
|
15
|
+
for (const key of Object.keys(overrides ?? {})) {
|
|
16
|
+
if (!HEADING_KEYS.has(key))
|
|
17
|
+
throw new RangeError(`Unknown typography heading token: ${key}.`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function resolveHeading(key, fallback, override) {
|
|
21
|
+
const size = override?.size ?? fallback.size;
|
|
22
|
+
const lineHeight = override?.lineHeight ?? fallback.lineHeight;
|
|
23
|
+
const weight = override?.weight ?? fallback.weight;
|
|
24
|
+
if (!Number.isFinite(size) || size <= 0) {
|
|
25
|
+
throw new RangeError(`Theme token typography.headings.${key}.size must be a finite positive number.`);
|
|
26
|
+
}
|
|
27
|
+
if (!Number.isFinite(lineHeight) || lineHeight <= 0) {
|
|
28
|
+
throw new RangeError(`Theme token typography.headings.${key}.lineHeight must be a finite positive number.`);
|
|
29
|
+
}
|
|
30
|
+
if (!isHeadingWeight(weight)) {
|
|
31
|
+
throw new RangeError(`Invalid heading weight for typography.headings.${key}: ${weight}.`);
|
|
32
|
+
}
|
|
33
|
+
return { size, lineHeight, weight };
|
|
34
|
+
}
|
|
35
|
+
function isHeadingWeight(value) {
|
|
36
|
+
return HEADING_WEIGHTS.has(value);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=resolveHeadingTokenOverrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveHeadingTokenOverrides.js","sourceRoot":"","sources":["../../src/theme/resolveHeadingTokenOverrides.ts"],"names":[],"mappings":"AAQA,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACrE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AAEnF,MAAM,UAAU,4BAA4B,CAC1C,QAAuB,EACvB,SAAgF;IAEhF,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC/B,OAAO;QACL,CAAC,EAAE,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;QACrD,CAAC,EAAE,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;QACrD,CAAC,EAAE,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;QACrD,CAAC,EAAE,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;QACrD,CAAC,EAAE,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;QACrD,CAAC,EAAE,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,SAAgF;IAEhF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,qCAAqC,GAAG,GAAG,CAAC,CAAC;IAChG,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CACrB,GAAW,EACX,QAAsB,EACtB,QAAqD;IAErD,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;IAC7C,MAAM,UAAU,GAAG,QAAQ,EAAE,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC;IAC/D,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,UAAU,CAClB,mCAAmC,GAAG,yCAAyC,CAChF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,UAAU,CAClB,mCAAmC,GAAG,+CAA+C,CACtF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,UAAU,CAAC,kDAAkD,GAAG,KAAK,MAAM,GAAG,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC","sourcesContent":["import type { ThemeTypographyHeadingOverrides } from '@ankhorage/contracts';\n\nimport type { ThemeTokens } from './types';\n\ntype HeadingTokens = ThemeTokens['typography']['headings'];\ntype HeadingToken = HeadingTokens[1];\ntype HeadingWeight = HeadingToken['weight'];\n\nconst HEADING_KEYS = new Set<string>(['1', '2', '3', '4', '5', '6']);\nconst HEADING_WEIGHTS = new Set<string>(['regular', 'medium', 'semiBold', 'bold']);\n\nexport function resolveHeadingTokenOverrides(\n defaults: HeadingTokens,\n overrides: Readonly<Record<string, ThemeTypographyHeadingOverrides>> | undefined,\n): HeadingTokens {\n validateHeadingKeys(overrides);\n return {\n 1: resolveHeading('1', defaults[1], overrides?.['1']),\n 2: resolveHeading('2', defaults[2], overrides?.['2']),\n 3: resolveHeading('3', defaults[3], overrides?.['3']),\n 4: resolveHeading('4', defaults[4], overrides?.['4']),\n 5: resolveHeading('5', defaults[5], overrides?.['5']),\n 6: resolveHeading('6', defaults[6], overrides?.['6']),\n };\n}\n\nfunction validateHeadingKeys(\n overrides: Readonly<Record<string, ThemeTypographyHeadingOverrides>> | undefined,\n): void {\n for (const key of Object.keys(overrides ?? {})) {\n if (!HEADING_KEYS.has(key)) throw new RangeError(`Unknown typography heading token: ${key}.`);\n }\n}\n\nfunction resolveHeading(\n key: string,\n fallback: HeadingToken,\n override: ThemeTypographyHeadingOverrides | undefined,\n): HeadingToken {\n const size = override?.size ?? fallback.size;\n const lineHeight = override?.lineHeight ?? fallback.lineHeight;\n const weight = override?.weight ?? fallback.weight;\n if (!Number.isFinite(size) || size <= 0) {\n throw new RangeError(\n `Theme token typography.headings.${key}.size must be a finite positive number.`,\n );\n }\n if (!Number.isFinite(lineHeight) || lineHeight <= 0) {\n throw new RangeError(\n `Theme token typography.headings.${key}.lineHeight must be a finite positive number.`,\n );\n }\n if (!isHeadingWeight(weight)) {\n throw new RangeError(`Invalid heading weight for typography.headings.${key}: ${weight}.`);\n }\n return { size, lineHeight, weight };\n}\n\nfunction isHeadingWeight(value: string): value is HeadingWeight {\n return HEADING_WEIGHTS.has(value);\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveNumericTokenOverrides.d.ts","sourceRoot":"","sources":["../../src/theme/resolveNumericTokenOverrides.ts"],"names":[],"mappings":"AAAA,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,EACvD,eAAe,UAAQ,GACtB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAclC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function resolveNumericTokenOverrides(family, overrides, requirePositive = false) {
|
|
2
|
+
if (overrides === undefined)
|
|
3
|
+
return {};
|
|
4
|
+
for (const [token, value] of Object.entries(overrides)) {
|
|
5
|
+
const invalid = !Number.isFinite(value) || (requirePositive ? value <= 0 : value < 0);
|
|
6
|
+
if (invalid) {
|
|
7
|
+
const expectation = requirePositive
|
|
8
|
+
? 'a finite positive number'
|
|
9
|
+
: 'a finite non-negative number';
|
|
10
|
+
throw new RangeError(`Theme token ${family}.${token} must be ${expectation}.`);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return { ...overrides };
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=resolveNumericTokenOverrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveNumericTokenOverrides.js","sourceRoot":"","sources":["../../src/theme/resolveNumericTokenOverrides.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,4BAA4B,CAC1C,MAAc,EACd,SAAuD,EACvD,eAAe,GAAG,KAAK;IAEvB,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAEvC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACvD,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACtF,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,WAAW,GAAG,eAAe;gBACjC,CAAC,CAAC,0BAA0B;gBAC5B,CAAC,CAAC,8BAA8B,CAAC;YACnC,MAAM,IAAI,UAAU,CAAC,eAAe,MAAM,IAAI,KAAK,YAAY,WAAW,GAAG,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,OAAO,EAAE,GAAG,SAAS,EAAE,CAAC;AAC1B,CAAC","sourcesContent":["export function resolveNumericTokenOverrides(\n family: string,\n overrides: Readonly<Record<string, number>> | undefined,\n requirePositive = false,\n): Readonly<Record<string, number>> {\n if (overrides === undefined) return {};\n\n for (const [token, value] of Object.entries(overrides)) {\n const invalid = !Number.isFinite(value) || (requirePositive ? value <= 0 : value < 0);\n if (invalid) {\n const expectation = requirePositive\n ? 'a finite positive number'\n : 'a finite non-negative number';\n throw new RangeError(`Theme token ${family}.${token} must be ${expectation}.`);\n }\n }\n\n return { ...overrides };\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveWeightTokenOverrides.d.ts","sourceRoot":"","sources":["../../src/theme/resolveWeightTokenOverrides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AA2B1C,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,GACtD,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CActC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const WEIGHT_TOKEN_KEYS = new Set([
|
|
2
|
+
'thin',
|
|
3
|
+
'extraLight',
|
|
4
|
+
'light',
|
|
5
|
+
'regular',
|
|
6
|
+
'medium',
|
|
7
|
+
'semiBold',
|
|
8
|
+
'bold',
|
|
9
|
+
'extraBold',
|
|
10
|
+
'black',
|
|
11
|
+
]);
|
|
12
|
+
const FONT_WEIGHT_VALUES = new Set([
|
|
13
|
+
'100',
|
|
14
|
+
'200',
|
|
15
|
+
'300',
|
|
16
|
+
'400',
|
|
17
|
+
'500',
|
|
18
|
+
'600',
|
|
19
|
+
'700',
|
|
20
|
+
'800',
|
|
21
|
+
'900',
|
|
22
|
+
'bold',
|
|
23
|
+
'normal',
|
|
24
|
+
]);
|
|
25
|
+
export function resolveWeightTokenOverrides(overrides) {
|
|
26
|
+
if (overrides === undefined)
|
|
27
|
+
return {};
|
|
28
|
+
const resolved = {};
|
|
29
|
+
for (const [token, value] of Object.entries(overrides)) {
|
|
30
|
+
if (!WEIGHT_TOKEN_KEYS.has(token)) {
|
|
31
|
+
throw new RangeError(`Unknown typography weight token: ${token}.`);
|
|
32
|
+
}
|
|
33
|
+
if (!isFontWeight(value)) {
|
|
34
|
+
throw new RangeError(`Invalid font weight for typography.weights.${token}: ${value}.`);
|
|
35
|
+
}
|
|
36
|
+
resolved[token] = value;
|
|
37
|
+
}
|
|
38
|
+
return resolved;
|
|
39
|
+
}
|
|
40
|
+
function isFontWeight(value) {
|
|
41
|
+
return FONT_WEIGHT_VALUES.has(value);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=resolveWeightTokenOverrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveWeightTokenOverrides.js","sourceRoot":"","sources":["../../src/theme/resolveWeightTokenOverrides.ts"],"names":[],"mappings":"AAEA,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS;IACxC,MAAM;IACN,YAAY;IACZ,OAAO;IACP,SAAS;IACT,QAAQ;IACR,UAAU;IACV,MAAM;IACN,WAAW;IACX,OAAO;CACR,CAAC,CAAC;AACH,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAS;IACzC,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,UAAU,2BAA2B,CACzC,SAAuD;IAEvD,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAEvC,MAAM,QAAQ,GAA+B,EAAE,CAAC;IAChD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,UAAU,CAAC,oCAAoC,KAAK,GAAG,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,UAAU,CAAC,8CAA8C,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;QACzF,CAAC;QACD,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC","sourcesContent":["import type { FontWeight } from './types';\n\nconst WEIGHT_TOKEN_KEYS = new Set<string>([\n 'thin',\n 'extraLight',\n 'light',\n 'regular',\n 'medium',\n 'semiBold',\n 'bold',\n 'extraBold',\n 'black',\n]);\nconst FONT_WEIGHT_VALUES = new Set<string>([\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n 'bold',\n 'normal',\n]);\n\nexport function resolveWeightTokenOverrides(\n overrides: Readonly<Record<string, string>> | undefined,\n): Readonly<Record<string, FontWeight>> {\n if (overrides === undefined) return {};\n\n const resolved: Record<string, FontWeight> = {};\n for (const [token, value] of Object.entries(overrides)) {\n if (!WEIGHT_TOKEN_KEYS.has(token)) {\n throw new RangeError(`Unknown typography weight token: ${token}.`);\n }\n if (!isFontWeight(value)) {\n throw new RangeError(`Invalid font weight for typography.weights.${token}: ${value}.`);\n }\n resolved[token] = value;\n }\n return resolved;\n}\n\nfunction isFontWeight(value: string): value is FontWeight {\n return FONT_WEIGHT_VALUES.has(value);\n}\n"]}
|
package/dist/theme/types.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/theme/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/theme/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEhF,YAAY,EACV,YAAY,EACZ,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,QAAQ,EACR,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEzE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,aAAa,CAAC;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,aAAa,CAAC;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,MAAM,UAAU,GAClB,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,MAAM,GACN,QAAQ,CAAC;AAEb,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,EAAE,sBAAsB,CAAC;IACjC,SAAS,EAAE,cAAc,CAAC;IAC1B,OAAO,EAAE;QACP,IAAI,EAAE,CAAC,CAAC;QACR,EAAE,EAAE,MAAM,CAAC;QACX,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,EAAE,EAAE,MAAM,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;KACvB,CAAC;IACF,KAAK,EAAE;QACL,IAAI,EAAE,CAAC,CAAC;QACR,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,IAAI,EAAE,MAAM,CAAC;QACb,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;KACvB,CAAC;IACF,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CACd,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EACrB;YACE,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,MAAM,CAAC;YACnB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;SACpD,CACF,CAAC;QACF,KAAK,EAAE;YACL,EAAE,EAAE,MAAM,CAAC;YACX,CAAC,EAAE,MAAM,CAAC;YACV,CAAC,EAAE,MAAM,CAAC;YACV,CAAC,EAAE,MAAM,CAAC;YACV,EAAE,EAAE,MAAM,CAAC;YACX,GAAG,EAAE,MAAM,CAAC;YACZ,KAAK,EAAE,MAAM,CAAC;YACd,EAAE,EAAE,MAAM,CAAC;YACX,EAAE,EAAE,MAAM,CAAC;YACX,EAAE,EAAE,MAAM,CAAC;YACX,EAAE,EAAE,MAAM,CAAC;YACX,EAAE,EAAE,MAAM,CAAC;YACX,EAAE,EAAE,MAAM,CAAC;YACX,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;SACvB,CAAC;QACF,OAAO,EAAE;YACP,IAAI,EAAE,UAAU,CAAC;YACjB,UAAU,EAAE,UAAU,CAAC;YACvB,KAAK,EAAE,UAAU,CAAC;YAClB,OAAO,EAAE,UAAU,CAAC;YACpB,MAAM,EAAE,UAAU,CAAC;YACnB,QAAQ,EAAE,UAAU,CAAC;YACrB,IAAI,EAAE,UAAU,CAAC;YACjB,SAAS,EAAE,UAAU,CAAC;YACtB,KAAK,EAAE,UAAU,CAAC;SACnB,CAAC;QACF,KAAK,EAAE;YACL,wDAAwD;YACxD,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;YAC/C,wDAAwD;YACxD,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;SAChD,CAAC;KACH,CAAC;IACF,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,MAAM,EAAE,oBAAoB,CAAC;CAC9B"}
|