@ankhorage/surface 0.1.6 → 0.1.7
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
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/layout/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StyleProp, ViewStyle } from 'react-native';\n\nimport { resolveResponsive } from '../core/responsive/resolve';\nimport type { Breakpoint, Responsive } from '../core/responsive/types';\nimport { resolveToken } from '../theme/resolveToken';\nimport type { AnkhTheme } from '../theme/types';\n\ntype SpaceToken = keyof AnkhTheme['spacing'];\ntype RadiusToken = keyof AnkhTheme['radii'];\ntype ColorToken = keyof AnkhTheme['colors'];\n\nexport type SpaceValue = number | SpaceToken;\nexport type RadiusValue = number | RadiusToken;\nexport type ColorValue = string | ColorToken;\n\nexport interface BoxStyleProps {\n p?: Responsive<SpaceValue>;\n px?: Responsive<SpaceValue>;\n py?: Responsive<SpaceValue>;\n pt?: Responsive<SpaceValue>;\n pb?: Responsive<SpaceValue>;\n pl?: Responsive<SpaceValue>;\n pr?: Responsive<SpaceValue>;\n m?: Responsive<SpaceValue>;\n mx?: Responsive<SpaceValue>;\n my?: Responsive<SpaceValue>;\n mt?: Responsive<SpaceValue>;\n mb?: Responsive<SpaceValue>;\n ml?: Responsive<SpaceValue>;\n mr?: Responsive<SpaceValue>;\n bg?: Responsive<ColorValue>;\n radius?: Responsive<RadiusValue>;\n borderWidth?: Responsive<number>;\n borderColor?: Responsive<ColorValue>;\n width?: Responsive<number | string>;\n height?: Responsive<number | string>;\n minWidth?: Responsive<number | string>;\n maxWidth?: Responsive<number | string>;\n minHeight?: Responsive<number | string>;\n maxHeight?: Responsive<number | string>;\n flex?: Responsive<number>;\n flexGrow?: Responsive<number>;\n flexShrink?: Responsive<number>;\n flexBasis?: Responsive<number | string>;\n alignSelf?: Responsive<ViewStyle['alignSelf']>;\n position?: Responsive<ViewStyle['position']>;\n top?: Responsive<number>;\n bottom?: Responsive<number>;\n left?: Responsive<number>;\n right?: Responsive<number>;\n overflow?: Responsive<ViewStyle['overflow']>;\n zIndex?: Responsive<number>;\n opacity?: Responsive<number>;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function resolveSpacing(\n theme: AnkhTheme,\n value: SpaceValue | undefined,\n): number | undefined {\n if (value === undefined) return undefined;\n if (typeof value === 'number') return value;\n return theme.spacing[value as SpaceToken];\n}\n\nexport function resolveRadius(\n theme: AnkhTheme,\n value: RadiusValue | undefined,\n): number | undefined {\n if (value === undefined) return undefined;\n if (typeof value === 'number') return value;\n return theme.radii[value];\n}\n\nexport function resolveColor(theme: AnkhTheme, value: ColorValue | undefined): string | undefined {\n if (value === undefined) return undefined;\n if (Object.prototype.hasOwnProperty.call(theme.colors, value)) {\n return theme.colors[value as ColorToken];\n }\n return value as string;\n}\n\nexport function resolveDimension(\n theme: AnkhTheme,\n value: number | string | undefined,\n): number | string | undefined {\n if (value === undefined || typeof value === 'number') return value;\n return resolveToken(theme.spacing, value);\n}\n\nfunction assignIfDefined<T, K extends keyof T>(target: T, key: K, value: T[K] | undefined) {\n if (value !== undefined) target[key] = value;\n}\n\nexport function resolveBoxStyles(\n theme: AnkhTheme,\n breakpoint: Breakpoint,\n props: BoxStyleProps,\n): ViewStyle {\n const styles: ViewStyle = {\n elevation: 0,\n };\n\n const p = resolveSpacing(theme, resolveResponsive(props.p, breakpoint));\n const px = resolveSpacing(theme, resolveResponsive(props.px, breakpoint));\n const py = resolveSpacing(theme, resolveResponsive(props.py, breakpoint));\n const pt = resolveSpacing(theme, resolveResponsive(props.pt, breakpoint));\n const pb = resolveSpacing(theme, resolveResponsive(props.pb, breakpoint));\n const pl = resolveSpacing(theme, resolveResponsive(props.pl, breakpoint));\n const pr = resolveSpacing(theme, resolveResponsive(props.pr, breakpoint));\n const m = resolveSpacing(theme, resolveResponsive(props.m, breakpoint));\n const mx = resolveSpacing(theme, resolveResponsive(props.mx, breakpoint));\n const my = resolveSpacing(theme, resolveResponsive(props.my, breakpoint));\n const mt = resolveSpacing(theme, resolveResponsive(props.mt, breakpoint));\n const mb = resolveSpacing(theme, resolveResponsive(props.mb, breakpoint));\n const ml = resolveSpacing(theme, resolveResponsive(props.ml, breakpoint));\n const mr = resolveSpacing(theme, resolveResponsive(props.mr, breakpoint));\n\n assignIfDefined(styles, 'padding', p as ViewStyle['padding']);\n assignIfDefined(styles, 'paddingHorizontal', px as ViewStyle['paddingHorizontal']);\n assignIfDefined(styles, 'paddingVertical', py as ViewStyle['paddingVertical']);\n assignIfDefined(styles, 'paddingTop', pt as ViewStyle['paddingTop']);\n assignIfDefined(styles, 'paddingBottom', pb as ViewStyle['paddingBottom']);\n assignIfDefined(styles, 'paddingLeft', pl as ViewStyle['paddingLeft']);\n assignIfDefined(styles, 'paddingRight', pr as ViewStyle['paddingRight']);\n assignIfDefined(styles, 'margin', m as ViewStyle['margin']);\n assignIfDefined(styles, 'marginHorizontal', mx as ViewStyle['marginHorizontal']);\n assignIfDefined(styles, 'marginVertical', my as ViewStyle['marginVertical']);\n assignIfDefined(styles, 'marginTop', mt as ViewStyle['marginTop']);\n assignIfDefined(styles, 'marginBottom', mb as ViewStyle['marginBottom']);\n assignIfDefined(styles, 'marginLeft', ml as ViewStyle['marginLeft']);\n assignIfDefined(styles, 'marginRight', mr as ViewStyle['marginRight']);\n\n assignIfDefined(\n styles,\n 'backgroundColor',\n resolveColor(theme, resolveResponsive(props.bg, breakpoint)),\n );\n assignIfDefined(\n styles,\n 'borderRadius',\n resolveRadius(theme, resolveResponsive(props.radius, breakpoint)) as ViewStyle['borderRadius'],\n );\n assignIfDefined(styles, 'borderWidth', resolveResponsive(props.borderWidth, breakpoint));\n assignIfDefined(\n styles,\n 'borderColor',\n resolveColor(theme, resolveResponsive(props.borderColor, breakpoint)),\n );\n\n assignIfDefined(\n styles,\n 'width',\n resolveDimension(theme, resolveResponsive(props.width, breakpoint)) as ViewStyle['width'],\n );\n assignIfDefined(\n styles,\n 'height',\n resolveDimension(theme, resolveResponsive(props.height, breakpoint)) as ViewStyle['height'],\n );\n assignIfDefined(\n styles,\n 'minWidth',\n resolveDimension(theme, resolveResponsive(props.minWidth, breakpoint)) as ViewStyle['minWidth'],\n );\n assignIfDefined(\n styles,\n 'maxWidth',\n resolveDimension(theme, resolveResponsive(props.maxWidth, breakpoint)) as ViewStyle['maxWidth'],\n );\n assignIfDefined(\n styles,\n 'minHeight',\n resolveDimension(\n theme,\n resolveResponsive(props.minHeight, breakpoint),\n ) as ViewStyle['minHeight'],\n );\n assignIfDefined(\n styles,\n 'maxHeight',\n resolveDimension(\n theme,\n resolveResponsive(props.maxHeight, breakpoint),\n ) as ViewStyle['maxHeight'],\n );\n\n assignIfDefined(styles, 'flex', resolveResponsive(props.flex, breakpoint));\n assignIfDefined(styles, 'flexGrow', resolveResponsive(props.flexGrow, breakpoint));\n assignIfDefined(styles, 'flexShrink', resolveResponsive(props.flexShrink, breakpoint));\n assignIfDefined(\n styles,\n 'flexBasis',\n resolveResponsive(props.flexBasis, breakpoint) as ViewStyle['flexBasis'],\n );\n assignIfDefined(styles, 'alignSelf', resolveResponsive(props.alignSelf, breakpoint));\n\n assignIfDefined(styles, 'position', resolveResponsive(props.position, breakpoint));\n assignIfDefined(styles, 'top', resolveResponsive(props.top, breakpoint));\n assignIfDefined(styles, 'bottom', resolveResponsive(props.bottom, breakpoint));\n assignIfDefined(styles, 'left', resolveResponsive(props.left, breakpoint));\n assignIfDefined(styles, 'right', resolveResponsive(props.right, breakpoint));\n assignIfDefined(styles, 'overflow', resolveResponsive(props.overflow, breakpoint));\n assignIfDefined(styles, 'zIndex', resolveResponsive(props.zIndex, breakpoint));\n assignIfDefined(styles, 'opacity', resolveResponsive(props.opacity, breakpoint));\n\n return styles;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/layout/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StyleProp, ViewStyle } from 'react-native';\n\nimport { resolveResponsive } from '../core/responsive/resolve';\nimport type { Breakpoint, Responsive } from '../core/responsive/types';\nimport { resolveToken } from '../theme/resolveToken';\nimport type { AnkhTheme } from '../theme/types';\n\ntype SpaceToken = keyof AnkhTheme['spacing'];\ntype RadiusToken = keyof AnkhTheme['radii'];\ntype ColorToken = keyof AnkhTheme['colors'];\n\nexport type SpaceValue = number | SpaceToken;\nexport type RadiusValue = number | RadiusToken;\nexport type ColorValue = string | ColorToken;\n\nexport interface BoxStyleProps {\n p?: Responsive<SpaceValue>;\n px?: Responsive<SpaceValue>;\n py?: Responsive<SpaceValue>;\n pt?: Responsive<SpaceValue>;\n pb?: Responsive<SpaceValue>;\n pl?: Responsive<SpaceValue>;\n pr?: Responsive<SpaceValue>;\n m?: Responsive<SpaceValue>;\n mx?: Responsive<SpaceValue>;\n my?: Responsive<SpaceValue>;\n mt?: Responsive<SpaceValue>;\n mb?: Responsive<SpaceValue>;\n ml?: Responsive<SpaceValue>;\n mr?: Responsive<SpaceValue>;\n bg?: Responsive<ColorValue>;\n radius?: Responsive<RadiusValue>;\n borderWidth?: Responsive<number>;\n borderColor?: Responsive<ColorValue>;\n width?: Responsive<number | string>;\n height?: Responsive<number | string>;\n minWidth?: Responsive<number | string>;\n maxWidth?: Responsive<number | string>;\n minHeight?: Responsive<number | string>;\n maxHeight?: Responsive<number | string>;\n flex?: Responsive<number>;\n flexGrow?: Responsive<number>;\n flexShrink?: Responsive<number>;\n flexBasis?: Responsive<number | string>;\n alignSelf?: Responsive<ViewStyle['alignSelf']>;\n position?: Responsive<ViewStyle['position']>;\n top?: Responsive<number>;\n bottom?: Responsive<number>;\n left?: Responsive<number>;\n right?: Responsive<number>;\n overflow?: Responsive<ViewStyle['overflow']>;\n zIndex?: Responsive<number>;\n opacity?: Responsive<number>;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function resolveSpacing(\n theme: AnkhTheme,\n value: SpaceValue | undefined,\n): number | undefined {\n if (value === undefined) return undefined;\n if (typeof value === 'number') return value;\n return theme.spacing[value as SpaceToken];\n}\n\nexport function resolveRadius(\n theme: AnkhTheme,\n value: RadiusValue | undefined,\n): number | undefined {\n if (value === undefined) return undefined;\n if (typeof value === 'number') return value;\n return theme.radii[value];\n}\n\nexport function resolveColor(theme: AnkhTheme, value: ColorValue | undefined): string | undefined {\n if (value === undefined) return undefined;\n if (Object.prototype.hasOwnProperty.call(theme.colors, value)) {\n return theme.colors[value];\n }\n return value as string;\n}\n\nexport function resolveDimension(\n theme: AnkhTheme,\n value: number | string | undefined,\n): number | string | undefined {\n if (value === undefined || typeof value === 'number') return value;\n return resolveToken(theme.spacing, value);\n}\n\nfunction assignIfDefined<T, K extends keyof T>(target: T, key: K, value: T[K] | undefined) {\n if (value !== undefined) target[key] = value;\n}\n\nexport function resolveBoxStyles(\n theme: AnkhTheme,\n breakpoint: Breakpoint,\n props: BoxStyleProps,\n): ViewStyle {\n const styles: ViewStyle = {\n elevation: 0,\n };\n\n const p = resolveSpacing(theme, resolveResponsive(props.p, breakpoint));\n const px = resolveSpacing(theme, resolveResponsive(props.px, breakpoint));\n const py = resolveSpacing(theme, resolveResponsive(props.py, breakpoint));\n const pt = resolveSpacing(theme, resolveResponsive(props.pt, breakpoint));\n const pb = resolveSpacing(theme, resolveResponsive(props.pb, breakpoint));\n const pl = resolveSpacing(theme, resolveResponsive(props.pl, breakpoint));\n const pr = resolveSpacing(theme, resolveResponsive(props.pr, breakpoint));\n const m = resolveSpacing(theme, resolveResponsive(props.m, breakpoint));\n const mx = resolveSpacing(theme, resolveResponsive(props.mx, breakpoint));\n const my = resolveSpacing(theme, resolveResponsive(props.my, breakpoint));\n const mt = resolveSpacing(theme, resolveResponsive(props.mt, breakpoint));\n const mb = resolveSpacing(theme, resolveResponsive(props.mb, breakpoint));\n const ml = resolveSpacing(theme, resolveResponsive(props.ml, breakpoint));\n const mr = resolveSpacing(theme, resolveResponsive(props.mr, breakpoint));\n\n assignIfDefined(styles, 'padding', p as ViewStyle['padding']);\n assignIfDefined(styles, 'paddingHorizontal', px as ViewStyle['paddingHorizontal']);\n assignIfDefined(styles, 'paddingVertical', py as ViewStyle['paddingVertical']);\n assignIfDefined(styles, 'paddingTop', pt as ViewStyle['paddingTop']);\n assignIfDefined(styles, 'paddingBottom', pb as ViewStyle['paddingBottom']);\n assignIfDefined(styles, 'paddingLeft', pl as ViewStyle['paddingLeft']);\n assignIfDefined(styles, 'paddingRight', pr as ViewStyle['paddingRight']);\n assignIfDefined(styles, 'margin', m as ViewStyle['margin']);\n assignIfDefined(styles, 'marginHorizontal', mx as ViewStyle['marginHorizontal']);\n assignIfDefined(styles, 'marginVertical', my as ViewStyle['marginVertical']);\n assignIfDefined(styles, 'marginTop', mt as ViewStyle['marginTop']);\n assignIfDefined(styles, 'marginBottom', mb as ViewStyle['marginBottom']);\n assignIfDefined(styles, 'marginLeft', ml as ViewStyle['marginLeft']);\n assignIfDefined(styles, 'marginRight', mr as ViewStyle['marginRight']);\n\n assignIfDefined(\n styles,\n 'backgroundColor',\n resolveColor(theme, resolveResponsive(props.bg, breakpoint)),\n );\n assignIfDefined(\n styles,\n 'borderRadius',\n resolveRadius(theme, resolveResponsive(props.radius, breakpoint)) as ViewStyle['borderRadius'],\n );\n assignIfDefined(styles, 'borderWidth', resolveResponsive(props.borderWidth, breakpoint));\n assignIfDefined(\n styles,\n 'borderColor',\n resolveColor(theme, resolveResponsive(props.borderColor, breakpoint)),\n );\n\n assignIfDefined(\n styles,\n 'width',\n resolveDimension(theme, resolveResponsive(props.width, breakpoint)) as ViewStyle['width'],\n );\n assignIfDefined(\n styles,\n 'height',\n resolveDimension(theme, resolveResponsive(props.height, breakpoint)) as ViewStyle['height'],\n );\n assignIfDefined(\n styles,\n 'minWidth',\n resolveDimension(theme, resolveResponsive(props.minWidth, breakpoint)) as ViewStyle['minWidth'],\n );\n assignIfDefined(\n styles,\n 'maxWidth',\n resolveDimension(theme, resolveResponsive(props.maxWidth, breakpoint)) as ViewStyle['maxWidth'],\n );\n assignIfDefined(\n styles,\n 'minHeight',\n resolveDimension(\n theme,\n resolveResponsive(props.minHeight, breakpoint),\n ) as ViewStyle['minHeight'],\n );\n assignIfDefined(\n styles,\n 'maxHeight',\n resolveDimension(\n theme,\n resolveResponsive(props.maxHeight, breakpoint),\n ) as ViewStyle['maxHeight'],\n );\n\n assignIfDefined(styles, 'flex', resolveResponsive(props.flex, breakpoint));\n assignIfDefined(styles, 'flexGrow', resolveResponsive(props.flexGrow, breakpoint));\n assignIfDefined(styles, 'flexShrink', resolveResponsive(props.flexShrink, breakpoint));\n assignIfDefined(\n styles,\n 'flexBasis',\n resolveResponsive(props.flexBasis, breakpoint) as ViewStyle['flexBasis'],\n );\n assignIfDefined(styles, 'alignSelf', resolveResponsive(props.alignSelf, breakpoint));\n\n assignIfDefined(styles, 'position', resolveResponsive(props.position, breakpoint));\n assignIfDefined(styles, 'top', resolveResponsive(props.top, breakpoint));\n assignIfDefined(styles, 'bottom', resolveResponsive(props.bottom, breakpoint));\n assignIfDefined(styles, 'left', resolveResponsive(props.left, breakpoint));\n assignIfDefined(styles, 'right', resolveResponsive(props.right, breakpoint));\n assignIfDefined(styles, 'overflow', resolveResponsive(props.overflow, breakpoint));\n assignIfDefined(styles, 'zIndex', resolveResponsive(props.zIndex, breakpoint));\n assignIfDefined(styles, 'opacity', resolveResponsive(props.opacity, breakpoint));\n\n return styles;\n}\n"]}
|
|
@@ -197,7 +197,7 @@ export function generatePalette(config, mode = 'light') {
|
|
|
197
197
|
console.warn(`[colorEngine] Invalid primary color: "${primaryColor}". Falling back to default blue.`);
|
|
198
198
|
base = oklch('#3B82F6');
|
|
199
199
|
}
|
|
200
|
-
const baseHue = base
|
|
200
|
+
const baseHue = base?.h ?? 0;
|
|
201
201
|
const hues = getHarmonyHues(baseHue, harmony);
|
|
202
202
|
const toneMap = getSystemToneMapping(systemTone);
|
|
203
203
|
// 1. Resolve Chromas
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colorEngine.js","sourceRoot":"","sources":["../../src/theme/colorEngine.ts"],"names":[],"mappings":"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","sourcesContent":["import { formatHex, modeOklch, oklch, useMode } from 'culori';\n\nimport type {\n ActionSemantics,\n BorderSemantics,\n ColorHarmony,\n ColorScale,\n ColorTone,\n ContentSemantics,\n NeutralSemantics,\n RoleSemantics,\n SurfaceSemantics,\n SystemTone,\n ThemeConfig,\n ThemeSemantics,\n} from './types';\n\nuseMode(modeOklch);\n\ninterface OklchColor {\n mode: 'oklch';\n l: number;\n c: number;\n h?: number;\n}\n\nexport const SCALE_STEPS = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950] as const;\n\n/**\n * Deterministic Lightness Curves (OKLCH L)\n */\nconst LIGHTNESS_CURVES = {\n light: [0.98, 0.95, 0.9, 0.82, 0.72, 0.62, 0.52, 0.42, 0.32, 0.22, 0.15],\n dark: [0.12, 0.16, 0.2, 0.26, 0.34, 0.62, 0.7, 0.78, 0.86, 0.92, 0.96],\n} as const;\n\n/**\n * Lightness anchors per tone\n */\nconst TONE_LIGHTNESS_ANCHORS: Record<ColorTone, number> = {\n grayscale: 0.62,\n earth: 0.55,\n pastel: 0.7,\n jewel: 0.62,\n fluorescent: 0.65,\n};\n\n/**\n * Chroma curve per step to prevent \"tinted whites\" and \"glow\"\n * Peak energy at 500, falloff at extremes.\n */\nconst CHROMA_BY_STEP = [0.1, 0.18, 0.3, 0.45, 0.7, 1.0, 0.92, 0.8, 0.6, 0.4, 0.25] as const;\n\n/**\n * Deterministic Chroma Anchors (OKLCH C)\n */\nconst CHROMA_ANCHORS: Record<ColorTone, number> = {\n grayscale: 0,\n earth: 0.05,\n pastel: 0.08,\n jewel: 0.16,\n fluorescent: 0.26,\n};\n\n/**\n * Chroma Hierarchy Rule\n */\nconst CHROMA_HIERARCHY = {\n primary: 1.0,\n secondary: 0.7,\n accent: 0.4,\n surface: 0.1,\n} as const;\n\n/**\n * Semantic Step Mapping\n */\nconst SEMANTIC_STEPS = {\n light: {\n bg: 0, // 50\n bgSubtle: 1, // 100\n surface: 1, // 100\n surfaceHover: 2, // 200\n surfaceActive: 3, // 300\n border: 3, // 300\n borderStrong: 4, // 400\n divider: 2, // 200\n text: 9, // 900\n textMuted: 7, // 700\n textSubtle: 6, // 600\n solid: 5, // 500\n softBg: 1, // 100\n softHover: 2, // 200\n softActive: 3, // 300\n outline: 4, // 400\n },\n dark: {\n bg: 0, // 50\n bgSubtle: 1, // 100\n surface: 1, // 100\n surfaceHover: 2, // 200\n surfaceActive: 3, // 300\n border: 3, // 300\n borderStrong: 4, // 400\n divider: 2, // 200\n text: 10, // 950\n textMuted: 8, // 800\n textSubtle: 7, // 700\n solid: 5, // 500\n softBg: 1, // 100\n softHover: 2, // 200\n softActive: 3, // 300\n outline: 4, // 400\n },\n} as const;\n\nexport function generateColorScale(baseColor: OklchColor, isDark: boolean): ColorScale {\n const scale: Partial<ColorScale> = {};\n const curve = isDark ? LIGHTNESS_CURVES.dark : LIGHTNESS_CURVES.light;\n\n // Dark-mode chroma rule: reduce chroma by 25%\n const chromaMultiplier = isDark ? 0.75 : 1.0;\n const targetChroma = baseColor.c * chromaMultiplier;\n\n SCALE_STEPS.forEach((step, index) => {\n const lightness = curve[index];\n const chromaByStep = CHROMA_BY_STEP[index];\n if (lightness === undefined || chromaByStep === undefined) {\n return;\n }\n // Apply chroma falloff curve per step\n const stepChroma = targetChroma * chromaByStep;\n const stepColor = { ...baseColor, l: lightness, c: stepChroma };\n scale[step as keyof ColorScale] = formatHex(stepColor);\n });\n\n return scale as ColorScale;\n}\n\n/**\n * Deterministic Harmony Hues\n */\nfunction getHarmonyHues(baseHue: number, mode: ColorHarmony): number[] {\n const h = (baseHue + 360) % 360;\n switch (mode) {\n case 'monochromatic':\n return [h];\n case 'analogous':\n return [h, (h - 30 + 360) % 360, (h + 30) % 360];\n case 'complementary':\n return [h, (h + 180) % 360];\n case 'splitComplementary':\n return [h, (h + 150) % 360, (h + 210) % 360];\n case 'triadic':\n return [h, (h + 120) % 360, (h + 240) % 360];\n case 'tetradic':\n return [h, (h + 90) % 360, (h + 180) % 360, (h + 270) % 360];\n default:\n return [h];\n }\n}\n\n/**\n * System Tone Assignment Logic\n */\nfunction getSystemToneMapping(system: SystemTone): {\n bg: ColorTone;\n surface: ColorTone;\n primary: ColorTone;\n secondary: ColorTone;\n accent: ColorTone;\n highlight: ColorTone;\n} {\n switch (system) {\n case 'pastel':\n return {\n bg: 'pastel',\n surface: 'pastel',\n primary: 'pastel',\n secondary: 'pastel',\n accent: 'jewel',\n highlight: 'fluorescent',\n };\n case 'earth':\n return {\n bg: 'earth',\n surface: 'earth',\n primary: 'earth',\n secondary: 'earth',\n accent: 'jewel',\n highlight: 'jewel',\n };\n case 'jewel':\n return {\n bg: 'grayscale',\n surface: 'grayscale',\n primary: 'jewel',\n secondary: 'jewel',\n accent: 'jewel',\n highlight: 'fluorescent',\n };\n case 'fluorescent':\n return {\n bg: 'grayscale',\n surface: 'grayscale',\n primary: 'jewel',\n secondary: 'jewel',\n accent: 'fluorescent',\n highlight: 'fluorescent',\n };\n default: // neutral\n return {\n bg: 'grayscale',\n surface: 'grayscale',\n primary: 'jewel',\n secondary: 'pastel',\n accent: 'jewel',\n highlight: 'fluorescent',\n };\n }\n}\n\n/**\n * Simple OKLCH L-based contrast check\n */\nfunction getBestContrast(solidHex: string, neutral50: string, neutral950: string): string {\n const solid = oklch(solidHex);\n const n50 = oklch(neutral50);\n const n950 = oklch(neutral950);\n\n if (!solid || !n50 || !n950) return neutral50;\n\n const diff50 = Math.abs(solid.l - n50.l);\n const diff950 = Math.abs(solid.l - n950.l);\n\n return diff50 >= diff950 ? neutral50 : neutral950;\n}\n\nexport function generatePalette(\n config: ThemeConfig,\n mode: 'light' | 'dark' = 'light',\n): {\n colors: Record<string, string>;\n scales: Record<string, ColorScale>;\n semantics: ThemeSemantics;\n} {\n const modeConfig = mode === 'dark' ? config.dark : config.light;\n const { primaryColor, harmony, systemTone } = modeConfig;\n\n let base = oklch(primaryColor) as OklchColor | undefined;\n if (!base) {\n console.warn(\n `[colorEngine] Invalid primary color: \"${primaryColor}\". Falling back to default blue.`,\n );\n base = oklch('#3B82F6') as OklchColor;\n }\n\n const baseHue = base.h ?? 0;\n const hues = getHarmonyHues(baseHue, harmony);\n const toneMap = getSystemToneMapping(systemTone);\n\n // 1. Resolve Chromas\n const getC = (t: ColorTone) => CHROMA_ANCHORS[t];\n const getHue = (index: number, fallback: number) => hues[index] ?? fallback;\n\n const primaryChroma = getC(toneMap.primary);\n const secondaryChroma = getC(toneMap.secondary) * CHROMA_HIERARCHY.secondary;\n const tertiaryChroma = getC(toneMap.accent) * CHROMA_HIERARCHY.accent;\n const highlightChroma = getC(toneMap.highlight);\n const surfaceChroma = Math.min(0.02, getC(toneMap.bg) * CHROMA_HIERARCHY.surface);\n\n // 2. Stable Role Assignment\n let pHue = getHue(0, baseHue);\n let sHue = getHue(0, baseHue);\n let aHue = getHue(0, baseHue);\n let hHue =\n harmony === 'tetradic' ? getHue(3, getHue(0, baseHue)) : (getHue(0, baseHue) + 60) % 360; // Yellow-ish offset if no tetradic\n\n switch (harmony) {\n case 'complementary':\n pHue = getHue(0, pHue);\n aHue = getHue(1, pHue);\n sHue = (getHue(0, pHue) + 30) % 360;\n break;\n case 'splitComplementary':\n case 'triadic':\n pHue = getHue(0, pHue);\n sHue = getHue(1, pHue);\n aHue = getHue(2, sHue);\n break;\n case 'tetradic':\n pHue = getHue(0, pHue);\n sHue = getHue(1, pHue);\n aHue = getHue(2, sHue);\n hHue = getHue(3, aHue);\n break;\n case 'analogous':\n pHue = getHue(1, pHue);\n sHue = getHue(0, pHue);\n aHue = getHue(2, sHue);\n break;\n }\n\n // 3. Build Bases with tuned lightness\n const getL = (t: ColorTone) => TONE_LIGHTNESS_ANCHORS[t];\n\n const primaryBase: OklchColor = {\n mode: 'oklch',\n l: getL(toneMap.primary),\n c: primaryChroma,\n h: pHue,\n };\n const secondaryBase: OklchColor = {\n mode: 'oklch',\n l: getL(toneMap.secondary),\n c: secondaryChroma,\n h: sHue,\n };\n const accentBase: OklchColor = {\n mode: 'oklch',\n l: getL(toneMap.accent),\n c: tertiaryChroma,\n h: aHue,\n };\n const highlightBase: OklchColor = {\n mode: 'oklch',\n l: getL(toneMap.highlight),\n c: highlightChroma,\n h: hHue,\n };\n const dangerBase: OklchColor = {\n mode: 'oklch',\n l: 0.6,\n c: 0.2,\n h: 25,\n };\n const successBase: OklchColor = {\n mode: 'oklch',\n l: 0.6,\n c: 0.2,\n h: 145,\n };\n const warningBase: OklchColor = {\n mode: 'oklch',\n l: 0.75,\n c: 0.15,\n h: 85,\n };\n\n const neutralBase: OklchColor =\n surfaceChroma === 0\n ? { mode: 'oklch', l: 0.62, c: 0 }\n : { mode: 'oklch', l: 0.62, c: surfaceChroma, h: 260 };\n\n // 4. Generate Scales\n const isDark = mode === 'dark';\n const scales = {\n primary: generateColorScale(primaryBase, isDark),\n secondary: generateColorScale(secondaryBase, isDark),\n accent: generateColorScale(accentBase, isDark),\n highlight: generateColorScale(highlightBase, isDark),\n neutral: generateColorScale(neutralBase, isDark),\n danger: generateColorScale(dangerBase, isDark),\n success: generateColorScale(successBase, isDark),\n warning: generateColorScale(warningBase, isDark),\n };\n\n // 5. Mappings\n const steps = isDark ? SEMANTIC_STEPS.dark : SEMANTIC_STEPS.light;\n const getStep = (s: ColorScale, idx: number) => {\n const key = SCALE_STEPS[idx] ?? SCALE_STEPS[SCALE_STEPS.length - 1] ?? 950;\n return s[key];\n };\n\n const getNeutralMapping = (scale: ColorScale): NeutralSemantics => ({\n bg: getStep(scale, steps.bg),\n bgSubtle: getStep(scale, steps.bgSubtle),\n surface: getStep(scale, steps.surface),\n surfaceHover: getStep(scale, steps.surfaceHover),\n surfaceActive: getStep(scale, steps.surfaceActive),\n border: getStep(scale, steps.border),\n borderStrong: getStep(scale, steps.borderStrong),\n divider: getStep(scale, steps.divider),\n text: getStep(scale, steps.text),\n textMuted: getStep(scale, steps.textMuted),\n textSubtle: getStep(scale, steps.textSubtle),\n });\n\n const getColorMapping = (scale: ColorScale, neutralScale: ColorScale): RoleSemantics => {\n const solid = getStep(scale, steps.solid);\n const softChromaLimit = 0.08;\n\n // Chroma capping for soft tokens\n const getSoftStep = (idx: number) => {\n const hex = getStep(scale, idx);\n const color = oklch(hex);\n if (color && color.c > softChromaLimit) {\n return formatHex({ ...color, c: softChromaLimit });\n }\n return hex;\n };\n\n return {\n base: solid,\n hover: getStep(scale, 6), // 600\n strong: getStep(scale, 7), // 700\n softBg: getSoftStep(steps.softBg),\n softHover: getSoftStep(steps.softHover),\n softActive: getSoftStep(steps.softActive),\n outline: getStep(scale, steps.outline),\n onSolidText: getBestContrast(solid, getStep(neutralScale, 0), getStep(neutralScale, 10)),\n };\n };\n\n const neutral = getNeutralMapping(scales.neutral);\n const brand = getColorMapping(scales.primary, scales.neutral);\n const neutralAction = getColorMapping(scales.neutral, scales.neutral);\n const danger = getColorMapping(scales.danger, scales.neutral);\n const success = getColorMapping(scales.success, scales.neutral);\n const warning = getColorMapping(scales.warning, scales.neutral);\n\n const colors: Record<string, string> = {\n primary: getStep(scales.primary, steps.solid),\n secondary: getStep(scales.secondary, steps.solid),\n accent: getStep(scales.accent, steps.solid),\n highlight: getStep(scales.highlight, steps.solid),\n background: neutral.bg,\n surface: neutral.surface,\n text: neutral.text,\n textSecondary: neutral.textMuted,\n border: neutral.border,\n error: getStep(scales.danger, steps.solid),\n success: getStep(scales.success, steps.solid),\n warning: getStep(scales.warning, steps.solid),\n };\n\n const surface: SurfaceSemantics = {\n default: neutral.surface,\n subtle: neutral.bgSubtle,\n raised: neutral.surface,\n };\n\n const content: ContentSemantics = {\n default: neutral.text,\n muted: neutral.textMuted,\n subtle: neutral.textSubtle,\n inverse: brand.onSolidText,\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: neutralAction,\n danger,\n };\n\n return {\n colors,\n scales,\n semantics: {\n neutral,\n brand,\n secondary: getColorMapping(scales.secondary, scales.neutral),\n accent: getColorMapping(scales.accent, scales.neutral),\n highlight: getColorMapping(scales.highlight, scales.neutral),\n danger,\n success,\n warning,\n surface,\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 { formatHex, modeOklch, oklch, useMode } from 'culori';\n\nimport type {\n ActionSemantics,\n BorderSemantics,\n ColorHarmony,\n ColorScale,\n ColorTone,\n ContentSemantics,\n NeutralSemantics,\n RoleSemantics,\n SurfaceSemantics,\n SystemTone,\n ThemeConfig,\n ThemeSemantics,\n} from './types';\n\nuseMode(modeOklch);\n\ninterface OklchColor {\n mode: 'oklch';\n l: number;\n c: number;\n h?: number;\n}\n\nexport const SCALE_STEPS = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950] as const;\n\n/**\n * Deterministic Lightness Curves (OKLCH L)\n */\nconst LIGHTNESS_CURVES = {\n light: [0.98, 0.95, 0.9, 0.82, 0.72, 0.62, 0.52, 0.42, 0.32, 0.22, 0.15],\n dark: [0.12, 0.16, 0.2, 0.26, 0.34, 0.62, 0.7, 0.78, 0.86, 0.92, 0.96],\n} as const;\n\n/**\n * Lightness anchors per tone\n */\nconst TONE_LIGHTNESS_ANCHORS: Record<ColorTone, number> = {\n grayscale: 0.62,\n earth: 0.55,\n pastel: 0.7,\n jewel: 0.62,\n fluorescent: 0.65,\n};\n\n/**\n * Chroma curve per step to prevent \"tinted whites\" and \"glow\"\n * Peak energy at 500, falloff at extremes.\n */\nconst CHROMA_BY_STEP = [0.1, 0.18, 0.3, 0.45, 0.7, 1.0, 0.92, 0.8, 0.6, 0.4, 0.25] as const;\n\n/**\n * Deterministic Chroma Anchors (OKLCH C)\n */\nconst CHROMA_ANCHORS: Record<ColorTone, number> = {\n grayscale: 0,\n earth: 0.05,\n pastel: 0.08,\n jewel: 0.16,\n fluorescent: 0.26,\n};\n\n/**\n * Chroma Hierarchy Rule\n */\nconst CHROMA_HIERARCHY = {\n primary: 1.0,\n secondary: 0.7,\n accent: 0.4,\n surface: 0.1,\n} as const;\n\n/**\n * Semantic Step Mapping\n */\nconst SEMANTIC_STEPS = {\n light: {\n bg: 0, // 50\n bgSubtle: 1, // 100\n surface: 1, // 100\n surfaceHover: 2, // 200\n surfaceActive: 3, // 300\n border: 3, // 300\n borderStrong: 4, // 400\n divider: 2, // 200\n text: 9, // 900\n textMuted: 7, // 700\n textSubtle: 6, // 600\n solid: 5, // 500\n softBg: 1, // 100\n softHover: 2, // 200\n softActive: 3, // 300\n outline: 4, // 400\n },\n dark: {\n bg: 0, // 50\n bgSubtle: 1, // 100\n surface: 1, // 100\n surfaceHover: 2, // 200\n surfaceActive: 3, // 300\n border: 3, // 300\n borderStrong: 4, // 400\n divider: 2, // 200\n text: 10, // 950\n textMuted: 8, // 800\n textSubtle: 7, // 700\n solid: 5, // 500\n softBg: 1, // 100\n softHover: 2, // 200\n softActive: 3, // 300\n outline: 4, // 400\n },\n} as const;\n\nexport function generateColorScale(baseColor: OklchColor, isDark: boolean): ColorScale {\n const scale: Partial<ColorScale> = {};\n const curve = isDark ? LIGHTNESS_CURVES.dark : LIGHTNESS_CURVES.light;\n\n // Dark-mode chroma rule: reduce chroma by 25%\n const chromaMultiplier = isDark ? 0.75 : 1.0;\n const targetChroma = baseColor.c * chromaMultiplier;\n\n SCALE_STEPS.forEach((step, index) => {\n const lightness = curve[index];\n const chromaByStep = CHROMA_BY_STEP[index];\n if (lightness === undefined || chromaByStep === undefined) {\n return;\n }\n // Apply chroma falloff curve per step\n const stepChroma = targetChroma * chromaByStep;\n const stepColor = { ...baseColor, l: lightness, c: stepChroma };\n scale[step as keyof ColorScale] = formatHex(stepColor);\n });\n\n return scale as ColorScale;\n}\n\n/**\n * Deterministic Harmony Hues\n */\nfunction getHarmonyHues(baseHue: number, mode: ColorHarmony): number[] {\n const h = (baseHue + 360) % 360;\n switch (mode) {\n case 'monochromatic':\n return [h];\n case 'analogous':\n return [h, (h - 30 + 360) % 360, (h + 30) % 360];\n case 'complementary':\n return [h, (h + 180) % 360];\n case 'splitComplementary':\n return [h, (h + 150) % 360, (h + 210) % 360];\n case 'triadic':\n return [h, (h + 120) % 360, (h + 240) % 360];\n case 'tetradic':\n return [h, (h + 90) % 360, (h + 180) % 360, (h + 270) % 360];\n default:\n return [h];\n }\n}\n\n/**\n * System Tone Assignment Logic\n */\nfunction getSystemToneMapping(system: SystemTone): {\n bg: ColorTone;\n surface: ColorTone;\n primary: ColorTone;\n secondary: ColorTone;\n accent: ColorTone;\n highlight: ColorTone;\n} {\n switch (system) {\n case 'pastel':\n return {\n bg: 'pastel',\n surface: 'pastel',\n primary: 'pastel',\n secondary: 'pastel',\n accent: 'jewel',\n highlight: 'fluorescent',\n };\n case 'earth':\n return {\n bg: 'earth',\n surface: 'earth',\n primary: 'earth',\n secondary: 'earth',\n accent: 'jewel',\n highlight: 'jewel',\n };\n case 'jewel':\n return {\n bg: 'grayscale',\n surface: 'grayscale',\n primary: 'jewel',\n secondary: 'jewel',\n accent: 'jewel',\n highlight: 'fluorescent',\n };\n case 'fluorescent':\n return {\n bg: 'grayscale',\n surface: 'grayscale',\n primary: 'jewel',\n secondary: 'jewel',\n accent: 'fluorescent',\n highlight: 'fluorescent',\n };\n default: // neutral\n return {\n bg: 'grayscale',\n surface: 'grayscale',\n primary: 'jewel',\n secondary: 'pastel',\n accent: 'jewel',\n highlight: 'fluorescent',\n };\n }\n}\n\n/**\n * Simple OKLCH L-based contrast check\n */\nfunction getBestContrast(solidHex: string, neutral50: string, neutral950: string): string {\n const solid = oklch(solidHex);\n const n50 = oklch(neutral50);\n const n950 = oklch(neutral950);\n\n if (!solid || !n50 || !n950) return neutral50;\n\n const diff50 = Math.abs(solid.l - n50.l);\n const diff950 = Math.abs(solid.l - n950.l);\n\n return diff50 >= diff950 ? neutral50 : neutral950;\n}\n\nexport function generatePalette(\n config: ThemeConfig,\n mode: 'light' | 'dark' = 'light',\n): {\n colors: Record<string, string>;\n scales: Record<string, ColorScale>;\n semantics: ThemeSemantics;\n} {\n const modeConfig = mode === 'dark' ? config.dark : config.light;\n const { primaryColor, harmony, systemTone } = modeConfig;\n\n let base = oklch(primaryColor);\n if (!base) {\n console.warn(\n `[colorEngine] Invalid primary color: \"${primaryColor}\". Falling back to default blue.`,\n );\n base = oklch('#3B82F6');\n }\n\n const baseHue = base?.h ?? 0;\n const hues = getHarmonyHues(baseHue, harmony);\n const toneMap = getSystemToneMapping(systemTone);\n\n // 1. Resolve Chromas\n const getC = (t: ColorTone) => CHROMA_ANCHORS[t];\n const getHue = (index: number, fallback: number) => hues[index] ?? fallback;\n\n const primaryChroma = getC(toneMap.primary);\n const secondaryChroma = getC(toneMap.secondary) * CHROMA_HIERARCHY.secondary;\n const tertiaryChroma = getC(toneMap.accent) * CHROMA_HIERARCHY.accent;\n const highlightChroma = getC(toneMap.highlight);\n const surfaceChroma = Math.min(0.02, getC(toneMap.bg) * CHROMA_HIERARCHY.surface);\n\n // 2. Stable Role Assignment\n let pHue = getHue(0, baseHue);\n let sHue = getHue(0, baseHue);\n let aHue = getHue(0, baseHue);\n let hHue =\n harmony === 'tetradic' ? getHue(3, getHue(0, baseHue)) : (getHue(0, baseHue) + 60) % 360; // Yellow-ish offset if no tetradic\n\n switch (harmony) {\n case 'complementary':\n pHue = getHue(0, pHue);\n aHue = getHue(1, pHue);\n sHue = (getHue(0, pHue) + 30) % 360;\n break;\n case 'splitComplementary':\n case 'triadic':\n pHue = getHue(0, pHue);\n sHue = getHue(1, pHue);\n aHue = getHue(2, sHue);\n break;\n case 'tetradic':\n pHue = getHue(0, pHue);\n sHue = getHue(1, pHue);\n aHue = getHue(2, sHue);\n hHue = getHue(3, aHue);\n break;\n case 'analogous':\n pHue = getHue(1, pHue);\n sHue = getHue(0, pHue);\n aHue = getHue(2, sHue);\n break;\n }\n\n // 3. Build Bases with tuned lightness\n const getL = (t: ColorTone) => TONE_LIGHTNESS_ANCHORS[t];\n\n const primaryBase: OklchColor = {\n mode: 'oklch',\n l: getL(toneMap.primary),\n c: primaryChroma,\n h: pHue,\n };\n const secondaryBase: OklchColor = {\n mode: 'oklch',\n l: getL(toneMap.secondary),\n c: secondaryChroma,\n h: sHue,\n };\n const accentBase: OklchColor = {\n mode: 'oklch',\n l: getL(toneMap.accent),\n c: tertiaryChroma,\n h: aHue,\n };\n const highlightBase: OklchColor = {\n mode: 'oklch',\n l: getL(toneMap.highlight),\n c: highlightChroma,\n h: hHue,\n };\n const dangerBase: OklchColor = {\n mode: 'oklch',\n l: 0.6,\n c: 0.2,\n h: 25,\n };\n const successBase: OklchColor = {\n mode: 'oklch',\n l: 0.6,\n c: 0.2,\n h: 145,\n };\n const warningBase: OklchColor = {\n mode: 'oklch',\n l: 0.75,\n c: 0.15,\n h: 85,\n };\n\n const neutralBase: OklchColor =\n surfaceChroma === 0\n ? { mode: 'oklch', l: 0.62, c: 0 }\n : { mode: 'oklch', l: 0.62, c: surfaceChroma, h: 260 };\n\n // 4. Generate Scales\n const isDark = mode === 'dark';\n const scales = {\n primary: generateColorScale(primaryBase, isDark),\n secondary: generateColorScale(secondaryBase, isDark),\n accent: generateColorScale(accentBase, isDark),\n highlight: generateColorScale(highlightBase, isDark),\n neutral: generateColorScale(neutralBase, isDark),\n danger: generateColorScale(dangerBase, isDark),\n success: generateColorScale(successBase, isDark),\n warning: generateColorScale(warningBase, isDark),\n };\n\n // 5. Mappings\n const steps = isDark ? SEMANTIC_STEPS.dark : SEMANTIC_STEPS.light;\n const getStep = (s: ColorScale, idx: number) => {\n const key = SCALE_STEPS[idx] ?? SCALE_STEPS[SCALE_STEPS.length - 1] ?? 950;\n return s[key];\n };\n\n const getNeutralMapping = (scale: ColorScale): NeutralSemantics => ({\n bg: getStep(scale, steps.bg),\n bgSubtle: getStep(scale, steps.bgSubtle),\n surface: getStep(scale, steps.surface),\n surfaceHover: getStep(scale, steps.surfaceHover),\n surfaceActive: getStep(scale, steps.surfaceActive),\n border: getStep(scale, steps.border),\n borderStrong: getStep(scale, steps.borderStrong),\n divider: getStep(scale, steps.divider),\n text: getStep(scale, steps.text),\n textMuted: getStep(scale, steps.textMuted),\n textSubtle: getStep(scale, steps.textSubtle),\n });\n\n const getColorMapping = (scale: ColorScale, neutralScale: ColorScale): RoleSemantics => {\n const solid = getStep(scale, steps.solid);\n const softChromaLimit = 0.08;\n\n // Chroma capping for soft tokens\n const getSoftStep = (idx: number) => {\n const hex = getStep(scale, idx);\n const color = oklch(hex);\n if (color && color.c > softChromaLimit) {\n return formatHex({ ...color, c: softChromaLimit });\n }\n return hex;\n };\n\n return {\n base: solid,\n hover: getStep(scale, 6), // 600\n strong: getStep(scale, 7), // 700\n softBg: getSoftStep(steps.softBg),\n softHover: getSoftStep(steps.softHover),\n softActive: getSoftStep(steps.softActive),\n outline: getStep(scale, steps.outline),\n onSolidText: getBestContrast(solid, getStep(neutralScale, 0), getStep(neutralScale, 10)),\n };\n };\n\n const neutral = getNeutralMapping(scales.neutral);\n const brand = getColorMapping(scales.primary, scales.neutral);\n const neutralAction = getColorMapping(scales.neutral, scales.neutral);\n const danger = getColorMapping(scales.danger, scales.neutral);\n const success = getColorMapping(scales.success, scales.neutral);\n const warning = getColorMapping(scales.warning, scales.neutral);\n\n const colors: Record<string, string> = {\n primary: getStep(scales.primary, steps.solid),\n secondary: getStep(scales.secondary, steps.solid),\n accent: getStep(scales.accent, steps.solid),\n highlight: getStep(scales.highlight, steps.solid),\n background: neutral.bg,\n surface: neutral.surface,\n text: neutral.text,\n textSecondary: neutral.textMuted,\n border: neutral.border,\n error: getStep(scales.danger, steps.solid),\n success: getStep(scales.success, steps.solid),\n warning: getStep(scales.warning, steps.solid),\n };\n\n const surface: SurfaceSemantics = {\n default: neutral.surface,\n subtle: neutral.bgSubtle,\n raised: neutral.surface,\n };\n\n const content: ContentSemantics = {\n default: neutral.text,\n muted: neutral.textMuted,\n subtle: neutral.textSubtle,\n inverse: brand.onSolidText,\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: neutralAction,\n danger,\n };\n\n return {\n colors,\n scales,\n semantics: {\n neutral,\n brand,\n secondary: getColorMapping(scales.secondary, scales.neutral),\n accent: getColorMapping(scales.accent, scales.neutral),\n highlight: getColorMapping(scales.highlight, scales.neutral),\n danger,\n success,\n warning,\n surface,\n content,\n border,\n action,\n },\n };\n}\n"]}
|
package/package.json
CHANGED
package/src/layout/helpers.ts
CHANGED
|
@@ -75,7 +75,7 @@ export function resolveRadius(
|
|
|
75
75
|
export function resolveColor(theme: AnkhTheme, value: ColorValue | undefined): string | undefined {
|
|
76
76
|
if (value === undefined) return undefined;
|
|
77
77
|
if (Object.prototype.hasOwnProperty.call(theme.colors, value)) {
|
|
78
|
-
return theme.colors[value
|
|
78
|
+
return theme.colors[value];
|
|
79
79
|
}
|
|
80
80
|
return value as string;
|
|
81
81
|
}
|
package/src/theme/colorEngine.ts
CHANGED
|
@@ -247,15 +247,15 @@ export function generatePalette(
|
|
|
247
247
|
const modeConfig = mode === 'dark' ? config.dark : config.light;
|
|
248
248
|
const { primaryColor, harmony, systemTone } = modeConfig;
|
|
249
249
|
|
|
250
|
-
let base = oklch(primaryColor)
|
|
250
|
+
let base = oklch(primaryColor);
|
|
251
251
|
if (!base) {
|
|
252
252
|
console.warn(
|
|
253
253
|
`[colorEngine] Invalid primary color: "${primaryColor}". Falling back to default blue.`,
|
|
254
254
|
);
|
|
255
|
-
base = oklch('#3B82F6')
|
|
255
|
+
base = oklch('#3B82F6');
|
|
256
256
|
}
|
|
257
257
|
|
|
258
|
-
const baseHue = base
|
|
258
|
+
const baseHue = base?.h ?? 0;
|
|
259
259
|
const hues = getHarmonyHues(baseHue, harmony);
|
|
260
260
|
const toneMap = getSystemToneMapping(systemTone);
|
|
261
261
|
|