@newtonedev/configurator 0.1.2 → 0.1.3
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/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/state/defaults.ts","../src/state/reducer.ts","../src/hue-conversion.ts","../src/bridge/toThemeConfig.ts","../src/hooks/useConfigurator.ts","../src/hooks/usePreviewColors.ts","../src/constants.ts","../src/hooks/useWcagValidation.ts","../src/hex-conversion.ts","../src/panels/PalettePanel.tsx","../src/panels/GlobalPanel.tsx","../src/panels/PreviewPanel.tsx","../src/bridge/toCSS.ts","../src/bridge/toJSON.ts","../src/panels/ExportPanel.tsx","../src/panels/DesignPanel.tsx","../src/Configurator.tsx"],"names":["srgbToOklch","useReducer","useMemo","useCallback","generatePreview","getColor","getColorByContrast","lightnessToNormalizedValue","getWcagContrastRatio","hexToSrgb","findMaxChromaInGamut","srgbToHex","useTokens","React","Card","Text","ColorScaleSlider","View","TextInput","Pressable","HueSlider","Slider","Select","Toggle","StyleSheet","STRENGTH_OPTIONS","styles","Button","NewtoneProvider","computeTokens","useState","useNewtoneTheme","useRef","useEffect"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { ConfiguratorState } from '../types';\n\n/**\n * Default configurator state.\n * Traditional hues match the playground defaults.\n * These are HSL hues (0=red, 60=yellow, 120=green, etc.),\n * NOT OKLCH hues — the bridge converts them.\n */\nexport const DEFAULT_CONFIGURATOR_STATE: ConfiguratorState = {\n palettes: [\n {\n name: 'Neutral',\n hue: 220,\n saturation: 24,\n desaturationStrength: 'none',\n desaturationDirection: 'light',\n hueGradeStrength: 'none',\n hueGradeHue: 0,\n hueGradeDirection: 'light',\n },\n {\n name: 'Accent',\n hue: 24,\n saturation: 80,\n desaturationStrength: 'none',\n desaturationDirection: 'light',\n hueGradeStrength: 'none',\n hueGradeHue: 0,\n hueGradeDirection: 'light',\n },\n {\n name: 'Success',\n hue: 145,\n saturation: 64,\n desaturationStrength: 'none',\n desaturationDirection: 'light',\n hueGradeStrength: 'none',\n hueGradeHue: 0,\n hueGradeDirection: 'light',\n },\n {\n name: 'Warning',\n hue: 40,\n saturation: 80,\n desaturationStrength: 'none',\n desaturationDirection: 'light',\n hueGradeStrength: 'none',\n hueGradeHue: 0,\n hueGradeDirection: 'light',\n },\n {\n name: 'Error',\n hue: 0,\n saturation: 80,\n desaturationStrength: 'none',\n desaturationDirection: 'light',\n hueGradeStrength: 'none',\n hueGradeHue: 0,\n hueGradeDirection: 'light',\n },\n ],\n dynamicRange: {\n lightest: 1,\n darkest: 1,\n },\n globalHueGrading: {\n light: { strength: 'none', hue: 30 },\n dark: { strength: 'none', hue: 220 },\n },\n preview: {\n mode: 'light',\n theme: 'neutral',\n },\n spacing: {\n preset: 'md', // Medium (8px base): default/balanced spacing\n },\n roundness: {\n intensity: 0.5, // 1.0x multiplier = preserves current hardcoded values\n },\n typography: {\n fonts: {\n mono: {\n type: 'system',\n family: 'ui-monospace',\n fallback: 'SFMono-Regular, Menlo, Monaco, Consolas, monospace',\n },\n display: {\n type: 'system',\n family: 'system-ui',\n fallback: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n },\n default: {\n type: 'system',\n family: 'system-ui',\n fallback: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n },\n },\n scale: { baseSize: 16, ratio: 1.25 },\n },\n icons: {\n variant: 'rounded', // Material Design 3 aesthetic\n weight: 400, // Normal weight\n autoGrade: true, // Enable mode-aware grade\n },\n};\n","import type { ConfiguratorState, PaletteState } from '../types';\nimport type { ConfiguratorAction } from './actions';\nimport { DEFAULT_CONFIGURATOR_STATE } from './defaults';\n\nfunction updatePalette(\n palettes: readonly PaletteState[],\n index: number,\n update: Partial<PaletteState>,\n): readonly PaletteState[] {\n if (index < 0 || index >= palettes.length) return palettes;\n return palettes.map((p, i) => (i === index ? { ...p, ...update } : p));\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n}\n\nfunction wrapHue(hue: number): number {\n return ((hue % 360) + 360) % 360;\n}\n\nexport function configuratorReducer(\n state: ConfiguratorState,\n action: ConfiguratorAction,\n): ConfiguratorState {\n switch (action.type) {\n // Palette actions\n case 'SET_PALETTE_HUE':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n hue: wrapHue(action.hue),\n }),\n };\n\n case 'SET_PALETTE_SATURATION':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n saturation: clamp(action.saturation, 0, 100),\n }),\n };\n\n case 'SET_PALETTE_DESAT_STRENGTH':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n desaturationStrength: action.strength,\n }),\n };\n\n case 'SET_PALETTE_DESAT_DIRECTION':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n desaturationDirection: action.direction,\n }),\n };\n\n case 'SET_PALETTE_HUE_GRADE_STRENGTH':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n hueGradeStrength: action.strength,\n }),\n };\n\n case 'SET_PALETTE_HUE_GRADE_HUE':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n hueGradeHue: wrapHue(action.hue),\n }),\n };\n\n case 'SET_PALETTE_HUE_GRADE_DIRECTION':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n hueGradeDirection: action.direction,\n }),\n };\n\n case 'SET_PALETTE_KEY_COLOR':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n keyColor: clamp(action.normalizedValue, 0, 1),\n }),\n };\n\n case 'CLEAR_PALETTE_KEY_COLOR':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n keyColor: undefined,\n }),\n };\n\n case 'SET_PALETTE_FROM_HEX':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n hue: wrapHue(action.hue),\n saturation: clamp(action.saturation, 0, 100),\n keyColor: clamp(action.keyColor, 0, 1),\n }),\n };\n\n case 'SET_PALETTE_KEY_COLOR_DARK':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n keyColorDark: clamp(action.normalizedValue, 0, 1),\n }),\n };\n\n case 'CLEAR_PALETTE_KEY_COLOR_DARK':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n keyColorDark: undefined,\n }),\n };\n\n case 'SET_PALETTE_FROM_HEX_DARK':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n hue: wrapHue(action.hue),\n saturation: clamp(action.saturation, 0, 100),\n keyColorDark: clamp(action.keyColor, 0, 1),\n }),\n };\n\n // Dynamic range actions\n case 'SET_LIGHTEST':\n return {\n ...state,\n dynamicRange: {\n ...state.dynamicRange,\n lightest: clamp(action.value, 0, 1),\n },\n };\n\n case 'SET_DARKEST':\n return {\n ...state,\n dynamicRange: {\n ...state.dynamicRange,\n darkest: clamp(action.value, 0, 1),\n },\n };\n\n // Global hue grading actions\n case 'SET_GLOBAL_GRADE_LIGHT_STRENGTH':\n return {\n ...state,\n globalHueGrading: {\n ...state.globalHueGrading,\n light: { ...state.globalHueGrading.light, strength: action.strength },\n },\n };\n\n case 'SET_GLOBAL_GRADE_LIGHT_HUE':\n return {\n ...state,\n globalHueGrading: {\n ...state.globalHueGrading,\n light: { ...state.globalHueGrading.light, hue: wrapHue(action.hue) },\n },\n };\n\n case 'SET_GLOBAL_GRADE_DARK_STRENGTH':\n return {\n ...state,\n globalHueGrading: {\n ...state.globalHueGrading,\n dark: { ...state.globalHueGrading.dark, strength: action.strength },\n },\n };\n\n case 'SET_GLOBAL_GRADE_DARK_HUE':\n return {\n ...state,\n globalHueGrading: {\n ...state.globalHueGrading,\n dark: { ...state.globalHueGrading.dark, hue: wrapHue(action.hue) },\n },\n };\n\n // Spacing actions\n case 'SET_SPACING_PRESET':\n return {\n ...state,\n spacing: {\n preset: action.preset,\n },\n };\n\n // Roundness actions\n case 'SET_ROUNDNESS_INTENSITY':\n return {\n ...state,\n roundness: {\n intensity: clamp(action.intensity, 0, 1),\n },\n };\n\n // Typography actions\n case 'SET_TYPOGRAPHY_BASE_SIZE': {\n const defaultTypography = DEFAULT_CONFIGURATOR_STATE.typography!;\n return {\n ...state,\n typography: {\n fonts: state.typography?.fonts ?? defaultTypography.fonts,\n scale: {\n baseSize: clamp(action.baseSize, 12, 24),\n ratio: state.typography?.scale.ratio ?? defaultTypography.scale.ratio,\n },\n },\n };\n }\n\n case 'SET_TYPOGRAPHY_RATIO': {\n const defaultTypography = DEFAULT_CONFIGURATOR_STATE.typography!;\n return {\n ...state,\n typography: {\n fonts: state.typography?.fonts ?? defaultTypography.fonts,\n scale: {\n baseSize: state.typography?.scale.baseSize ?? defaultTypography.scale.baseSize,\n ratio: clamp(action.ratio, 1.1, 1.5),\n },\n },\n };\n }\n\n case 'SET_FONT_MONO': {\n const defaultTypography = DEFAULT_CONFIGURATOR_STATE.typography!;\n return {\n ...state,\n typography: {\n fonts: {\n mono: action.font,\n display: state.typography?.fonts.display ?? defaultTypography.fonts.display,\n default: state.typography?.fonts.default ?? defaultTypography.fonts.default,\n },\n scale: state.typography?.scale ?? defaultTypography.scale,\n },\n };\n }\n\n case 'SET_FONT_DISPLAY': {\n const defaultTypography = DEFAULT_CONFIGURATOR_STATE.typography!;\n return {\n ...state,\n typography: {\n fonts: {\n mono: state.typography?.fonts.mono ?? defaultTypography.fonts.mono,\n display: action.font,\n default: state.typography?.fonts.default ?? defaultTypography.fonts.default,\n },\n scale: state.typography?.scale ?? defaultTypography.scale,\n },\n };\n }\n\n case 'SET_FONT_DEFAULT': {\n const defaultTypography = DEFAULT_CONFIGURATOR_STATE.typography!;\n return {\n ...state,\n typography: {\n fonts: {\n mono: state.typography?.fonts.mono ?? defaultTypography.fonts.mono,\n display: state.typography?.fonts.display ?? defaultTypography.fonts.display,\n default: action.font,\n },\n scale: state.typography?.scale ?? defaultTypography.scale,\n },\n };\n }\n\n // Icons actions\n case 'SET_ICON_VARIANT': {\n const defaultIcons = DEFAULT_CONFIGURATOR_STATE.icons!;\n return {\n ...state,\n icons: {\n variant: action.variant,\n weight: state.icons?.weight ?? defaultIcons.weight,\n autoGrade: state.icons?.autoGrade ?? defaultIcons.autoGrade,\n },\n };\n }\n\n case 'SET_ICON_WEIGHT': {\n const defaultIcons = DEFAULT_CONFIGURATOR_STATE.icons!;\n return {\n ...state,\n icons: {\n variant: state.icons?.variant ?? defaultIcons.variant,\n weight: action.weight,\n autoGrade: state.icons?.autoGrade ?? defaultIcons.autoGrade,\n },\n };\n }\n\n case 'SET_ICON_AUTO_GRADE': {\n const defaultIcons = DEFAULT_CONFIGURATOR_STATE.icons!;\n return {\n ...state,\n icons: {\n variant: state.icons?.variant ?? defaultIcons.variant,\n weight: state.icons?.weight ?? defaultIcons.weight,\n autoGrade: action.autoGrade,\n },\n };\n }\n\n // Preview actions\n case 'SET_PREVIEW_MODE':\n return {\n ...state,\n preview: { ...state.preview, mode: action.mode },\n };\n\n case 'SET_PREVIEW_THEME':\n return {\n ...state,\n preview: { ...state.preview, theme: action.theme },\n };\n\n // Control actions\n case 'RESET':\n return DEFAULT_CONFIGURATOR_STATE;\n\n case 'LOAD_STATE':\n return action.state;\n\n default:\n return state;\n }\n}\n","import { srgbToOklch } from 'newtone';\nimport type { Srgb } from 'newtone';\n\n/**\n * Convert a traditional HSL color wheel hue (0-359) to its equivalent OKLCH hue.\n *\n * Uses the fully saturated HSL color (S=1, L=0.5) at the given hue,\n * converts to sRGB, then extracts the OKLCH hue component.\n *\n * Traditional hues: 0=red, 60=yellow, 120=green, 180=cyan, 240=blue, 300=magenta.\n */\nexport function traditionalHueToOklch(hue: number): number {\n const h = ((hue % 360) + 360) % 360;\n const x = 1 - Math.abs((h / 60) % 2 - 1);\n\n let r: number, g: number, b: number;\n if (h < 60) { r = 1; g = x; b = 0; }\n else if (h < 120) { r = x; g = 1; b = 0; }\n else if (h < 180) { r = 0; g = 1; b = x; }\n else if (h < 240) { r = 0; g = x; b = 1; }\n else if (h < 300) { r = x; g = 0; b = 1; }\n else { r = 1; g = 0; b = x; }\n\n return srgbToOklch({ r, g, b } as Srgb).h;\n}\n","import type { ConfiguratorState, SpacingPreset } from '../types';\nimport type { NewtoneThemeConfig, FontConfig } from '@newtonedev/components';\nimport type { PaletteConfig, DynamicRange, HueGrading, HueGradingEndpoint } from 'newtone';\nimport { traditionalHueToOklch } from '../hue-conversion';\n\n/**\n * Spacing preset to base pixel value mapping\n */\nconst SPACING_PRESET_TO_BASE: Record<SpacingPreset, number> = {\n xs: 6, // Extra Small: compact/dense UI\n sm: 7, // Small: tighter spacing\n md: 8, // Medium: default/balanced\n lg: 9, // Large: more spacious\n xl: 10, // Extra Large: maximum spacing\n};\n\n/**\n * Convert roundness intensity [0, 1] to radius multiplier [0, 2.0]\n */\nfunction roundnessToMultiplier(intensity: number): number {\n return intensity * 2.0; // lerp(0, 2.0, intensity)\n}\n\n/**\n * Compute typography scale from base size and ratio.\n * Uses modular scale: baseSize * ratio^n\n */\nfunction computeTypographyScale(baseSize: number, ratio: number) {\n return {\n xs: Math.round(baseSize / (ratio ** 2)),\n sm: Math.round(baseSize / ratio),\n base: baseSize,\n md: Math.round(baseSize * ratio),\n lg: Math.round(baseSize * (ratio ** 2)),\n xl: Math.round(baseSize * (ratio ** 3)),\n xxl: Math.round(baseSize * (ratio ** 4)),\n };\n}\n\n/**\n * Default font configurations using system fonts\n */\nconst DEFAULT_FONTS: { readonly mono: FontConfig; readonly display: FontConfig; readonly default: FontConfig } = {\n mono: {\n type: 'system',\n family: 'ui-monospace',\n fallback: 'SFMono-Regular, Menlo, Monaco, Consolas, monospace',\n },\n display: {\n type: 'system',\n family: 'system-ui',\n fallback: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n },\n default: {\n type: 'system',\n family: 'system-ui',\n fallback: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n },\n};\n\n/**\n * Default icon configuration using Material Symbols Rounded\n */\nconst DEFAULT_ICONS = {\n variant: 'rounded' as const, // Material Design 3 aesthetic\n weight: 400 as const, // Normal weight\n autoGrade: true, // Enable mode-aware grade\n};\n\n/**\n * Convert configurator state (traditional hues, human-readable controls)\n * to a NewtoneThemeConfig (OKLCH hues, engine-ready format).\n */\nexport function toThemeConfig(state: ConfiguratorState): NewtoneThemeConfig {\n const palettes: readonly PaletteConfig[] = state.palettes.map(p => {\n const oklchHue = traditionalHueToOklch(p.hue);\n\n const desaturation = p.desaturationStrength !== 'none'\n ? { direction: p.desaturationDirection, strength: p.desaturationStrength } as const\n : undefined;\n\n const paletteHueGrading = p.hueGradeStrength !== 'none'\n ? {\n hue: traditionalHueToOklch(p.hueGradeHue),\n strength: p.hueGradeStrength,\n direction: p.hueGradeDirection,\n } as const\n : undefined;\n\n return {\n hue: oklchHue,\n saturation: p.saturation,\n desaturation,\n paletteHueGrading,\n ...(p.keyColor !== undefined ? { keyNormalizedValue: p.keyColor } : {}),\n ...(p.keyColorDark !== undefined ? { keyNormalizedValueDark: p.keyColorDark } : {}),\n };\n });\n\n // Build global hue grading\n const light: HueGradingEndpoint | undefined = state.globalHueGrading.light.strength !== 'none'\n ? { hue: traditionalHueToOklch(state.globalHueGrading.light.hue), strength: state.globalHueGrading.light.strength }\n : undefined;\n\n const dark: HueGradingEndpoint | undefined = state.globalHueGrading.dark.strength !== 'none'\n ? { hue: traditionalHueToOklch(state.globalHueGrading.dark.hue), strength: state.globalHueGrading.dark.strength }\n : undefined;\n\n const hueGrading: HueGrading | undefined = (light || dark) ? { light, dark } : undefined;\n\n const dynamicRange: DynamicRange = {\n lightest: state.dynamicRange.lightest,\n darkest: state.dynamicRange.darkest,\n ...(hueGrading ? { hueGrading } : {}),\n };\n\n // Compute spacing base from preset (default 'md' = 8px base)\n const spacingBase = SPACING_PRESET_TO_BASE[state.spacing?.preset ?? 'md'];\n\n // Compute radius multiplier from roundness intensity slider (default 0.5 = 1.0x multiplier)\n const radiusMultiplier = roundnessToMultiplier(state.roundness?.intensity ?? 0.5);\n\n return {\n colorSystem: { dynamicRange, palettes },\n themes: {\n neutral: { paletteIndex: 0, lightModeNv: 0.95, darkModeNv: 0.1 },\n primary: { paletteIndex: 1, lightModeNv: 0.95, darkModeNv: 0.1 },\n secondary: { paletteIndex: 1, lightModeNv: 0.85, darkModeNv: 0.15 },\n strong: { paletteIndex: 0, lightModeNv: 0.1, darkModeNv: 0.95 },\n },\n elevation: {\n offsets: [-0.02, 0, 0.04] as const,\n },\n spacing: {\n '00': Math.round(spacingBase * 0), // Always 0\n '02': Math.round(spacingBase * 0.25),\n '04': Math.round(spacingBase * 0.5),\n '06': Math.round(spacingBase * 0.75),\n '08': Math.round(spacingBase * 1), // Equals base\n '10': Math.round(spacingBase * 1.25),\n '12': Math.round(spacingBase * 1.5),\n '16': Math.round(spacingBase * 2),\n '20': Math.round(spacingBase * 2.5),\n '24': Math.round(spacingBase * 3),\n '32': Math.round(spacingBase * 4),\n '40': Math.round(spacingBase * 5),\n '48': Math.round(spacingBase * 6),\n },\n radius: {\n none: 0,\n sm: Math.round(4 * radiusMultiplier),\n md: Math.round(6 * radiusMultiplier),\n lg: Math.round(8 * radiusMultiplier),\n xl: Math.round(12 * radiusMultiplier),\n pill: 999,\n },\n typography: {\n fonts: state.typography?.fonts ?? DEFAULT_FONTS,\n scale: computeTypographyScale(\n state.typography?.scale.baseSize ?? 16,\n state.typography?.scale.ratio ?? 1.25\n ),\n lineHeight: { tight: 1.25, normal: 1.5, relaxed: 1.75 },\n fontWeight: { regular: 400, medium: 500, semibold: 600, bold: 700 },\n },\n icons: state.icons ?? DEFAULT_ICONS,\n };\n}\n","import { useReducer, useCallback, useMemo } from 'react';\nimport type { ConfiguratorState } from '../types';\nimport type { ConfiguratorAction } from '../state/actions';\nimport type { NewtoneThemeConfig } from '@newtonedev/components';\nimport { configuratorReducer } from '../state/reducer';\nimport { DEFAULT_CONFIGURATOR_STATE } from '../state/defaults';\nimport { toThemeConfig } from '../bridge/toThemeConfig';\n\nexport interface UseConfiguratorResult {\n readonly state: ConfiguratorState;\n readonly dispatch: (action: ConfiguratorAction) => void;\n readonly themeConfig: NewtoneThemeConfig;\n readonly reset: () => void;\n}\n\nexport function useConfigurator(\n initialState?: Partial<ConfiguratorState>,\n): UseConfiguratorResult {\n const mergedInitial: ConfiguratorState = initialState\n ? { ...DEFAULT_CONFIGURATOR_STATE, ...initialState }\n : DEFAULT_CONFIGURATOR_STATE;\n\n const [state, dispatch] = useReducer(configuratorReducer, mergedInitial);\n\n const themeConfig = useMemo(() => toThemeConfig(state), [state]);\n\n const reset = useCallback(() => dispatch({ type: 'RESET' }), []);\n\n return { state, dispatch, themeConfig, reset };\n}\n","import { useMemo } from 'react';\nimport { generatePreview } from 'newtone';\nimport type { ColorResult, DynamicRange } from 'newtone';\nimport type { ConfiguratorState } from '../types';\nimport { traditionalHueToOklch } from '../hue-conversion';\n\nconst PREVIEW_STEPS = 26;\n\n/**\n * Compute preview swatches for all palettes.\n * Returns an array of arrays: one preview row per palette.\n */\nexport function usePreviewColors(state: ConfiguratorState): readonly (readonly ColorResult[])[] {\n return useMemo(() => {\n const light = state.globalHueGrading.light.strength !== 'none'\n ? { hue: traditionalHueToOklch(state.globalHueGrading.light.hue), strength: state.globalHueGrading.light.strength }\n : undefined;\n const dark = state.globalHueGrading.dark.strength !== 'none'\n ? { hue: traditionalHueToOklch(state.globalHueGrading.dark.hue), strength: state.globalHueGrading.dark.strength }\n : undefined;\n const hueGrading = (light || dark) ? { light, dark } : undefined;\n\n const dynamicRange: DynamicRange = {\n lightest: state.dynamicRange.lightest,\n darkest: state.dynamicRange.darkest,\n ...(hueGrading ? { hueGrading } : {}),\n };\n\n return state.palettes.map(p => {\n const oklchHue = traditionalHueToOklch(p.hue);\n const desat = p.desaturationStrength !== 'none'\n ? { direction: p.desaturationDirection, strength: p.desaturationStrength } as const\n : undefined;\n const phg = p.hueGradeStrength !== 'none'\n ? { hue: traditionalHueToOklch(p.hueGradeHue), strength: p.hueGradeStrength, direction: p.hueGradeDirection } as const\n : undefined;\n return generatePreview(oklchHue, p.saturation, dynamicRange, PREVIEW_STEPS, desat, phg);\n });\n }, [state]);\n}\n","/**\n * Hue ranges for semantic palettes (traditional HSL hues).\n * Indices 0 (Neutral) and 1 (Accent) are unconstrained.\n *\n * For wrapping ranges (e.g. Error crosses 0°), max exceeds 359.\n * The HueSlider component normalizes values to [0, 359] via % 360.\n *\n * Gaps between ranges prevent adjacent semantics from overlapping:\n * - 15–25: gap between Error (reds) and Warning (yellows)\n * - 55–80: gap between Warning and Success (greens)\n */\nexport const SEMANTIC_HUE_RANGES: Readonly<Record<number, { readonly min: number; readonly max: number }>> = {\n 2: { min: 80, max: 160 }, // Success (greens)\n 3: { min: 25, max: 55 }, // Warning (yellow/orange)\n 4: { min: 345, max: 375 }, // Error (reds, wraps 0°)\n};\n","import { useMemo } from 'react';\nimport {\n getColor,\n getColorByContrast,\n getWcagContrastRatio,\n lightnessToNormalizedValue,\n} from 'newtone';\nimport type { DynamicRange } from 'newtone';\nimport type { ConfiguratorState } from '../types';\nimport { traditionalHueToOklch } from '../hue-conversion';\n\nexport interface WcagValidation {\n /** WCAG contrast ratio at the key color position (null if no keyColor set) */\n readonly keyColorContrast: number | null;\n /** Whether the key color passes WCAG AA for normal text (>= 4.5:1) */\n readonly passesAA: boolean;\n /** Whether the key color passes WCAG AA for large text (>= 3:1) */\n readonly passesAALargeText: boolean;\n /** The normalizedValue where auto contrast search would place the key color */\n readonly autoNormalizedValue: number;\n}\n\n/**\n * Compute WCAG validation info for a non-neutral palette's key color.\n *\n * Validates the palette's key color against the neutral background\n * in the current preview mode. Also computes where the auto contrast\n * search would place the key color (for showing the default position).\n */\nexport function useWcagValidation(\n state: ConfiguratorState,\n paletteIndex: number,\n): WcagValidation {\n return useMemo(() => {\n const palette = state.palettes[paletteIndex];\n const neutral = state.palettes[0];\n if (!palette || !neutral) {\n return { keyColorContrast: null, passesAA: true, passesAALargeText: true, autoNormalizedValue: 0.5 };\n }\n\n const mode = state.preview.mode;\n\n // Build dynamic range with global hue grading\n const light = state.globalHueGrading.light.strength !== 'none'\n ? { hue: traditionalHueToOklch(state.globalHueGrading.light.hue), strength: state.globalHueGrading.light.strength }\n : undefined;\n const dark = state.globalHueGrading.dark.strength !== 'none'\n ? { hue: traditionalHueToOklch(state.globalHueGrading.dark.hue), strength: state.globalHueGrading.dark.strength }\n : undefined;\n const hueGrading = (light || dark) ? { light, dark } : undefined;\n\n const dynamicRange: DynamicRange = {\n lightest: state.dynamicRange.lightest,\n darkest: state.dynamicRange.darkest,\n ...(hueGrading ? { hueGrading } : {}),\n };\n\n // Compute neutral background for the current preview mode\n const neutralOklchHue = traditionalHueToOklch(neutral.hue);\n const neutralDesat = neutral.desaturationStrength !== 'none'\n ? { direction: neutral.desaturationDirection, strength: neutral.desaturationStrength } as const\n : undefined;\n const neutralPhg = neutral.hueGradeStrength !== 'none'\n ? { hue: traditionalHueToOklch(neutral.hueGradeHue), strength: neutral.hueGradeStrength, direction: neutral.hueGradeDirection } as const\n : undefined;\n\n const backgroundNv = mode === 'light' ? 0.95 : 0.1;\n const background = getColor(neutralOklchHue, neutral.saturation, dynamicRange, backgroundNv, neutralDesat, neutralPhg);\n\n // Build palette engine params\n const paletteOklchHue = traditionalHueToOklch(palette.hue);\n const effectiveTextMode = mode === 'light' ? 'light' as const : 'dark' as const;\n const paletteDesat = palette.desaturationStrength !== 'none'\n ? { direction: palette.desaturationDirection, strength: palette.desaturationStrength } as const\n : undefined;\n const palettePhg = palette.hueGradeStrength !== 'none'\n ? { hue: traditionalHueToOklch(palette.hueGradeHue), strength: palette.hueGradeStrength, direction: palette.hueGradeDirection } as const\n : undefined;\n\n // Compute auto position: where contrast search would place the key color\n const autoColor = getColorByContrast(\n paletteOklchHue, palette.saturation, dynamicRange,\n 4.5, effectiveTextMode, paletteDesat, palettePhg, background,\n );\n const autoNormalizedValue = lightnessToNormalizedValue(dynamicRange, autoColor.oklch.L);\n\n // Resolve per-mode key color: light mode uses keyColor, dark uses keyColorDark\n const effectiveKeyColor = mode === 'dark' ? palette.keyColorDark : palette.keyColor;\n\n // If no key color set for this mode, everything passes (auto is always WCAG-compliant)\n if (effectiveKeyColor === undefined) {\n return { keyColorContrast: null, passesAA: true, passesAALargeText: true, autoNormalizedValue };\n }\n\n // Compute the actual color at the user-chosen key position for this mode\n const keyColor = getColor(\n paletteOklchHue, palette.saturation, dynamicRange,\n effectiveKeyColor, paletteDesat, palettePhg,\n );\n\n // Compute WCAG contrast against the neutral background\n const contrast = getWcagContrastRatio(keyColor.srgb, background.srgb);\n\n return {\n keyColorContrast: contrast,\n passesAA: contrast >= 4.5,\n passesAALargeText: contrast >= 3.0,\n autoNormalizedValue,\n };\n }, [state, paletteIndex]);\n}\n","import {\n hexToSrgb,\n srgbToOklch,\n findMaxChromaInGamut,\n lightnessToNormalizedValue,\n} from 'newtone';\nimport type { DynamicRange } from 'newtone';\nimport { traditionalHueToOklch } from './hue-conversion';\n\n/** Result of decomposing a hex color into palette parameters */\nexport interface HexPaletteParams {\n /** Traditional HSL hue [0, 359] */\n readonly hue: number;\n /** Saturation as % of max in-gamut chroma [0, 100] */\n readonly saturation: number;\n /** Position on the luminosity scale [0, 1] */\n readonly normalizedValue: number;\n}\n\n// Achromatic threshold — below this chroma, the color has no meaningful hue\nconst ACHROMATIC_THRESHOLD = 0.005;\n\n// Lookup table for OKLCH hue → traditional hue (built once, lazily)\nlet traditionalHueLut: readonly number[] | null = null;\n\nfunction buildTraditionalHueLut(): readonly number[] {\n const lut: number[] = new Array(360);\n for (let h = 0; h < 360; h++) {\n lut[h] = traditionalHueToOklch(h);\n }\n return lut;\n}\n\n/**\n * Convert an OKLCH hue back to the nearest traditional HSL hue.\n * Uses a precomputed lookup table with 1° resolution.\n */\nexport function oklchHueToTraditional(oklchHue: number): number {\n if (!traditionalHueLut) {\n traditionalHueLut = buildTraditionalHueLut();\n }\n\n const target = ((oklchHue % 360) + 360) % 360;\n let bestHue = 0;\n let bestDelta = Infinity;\n\n for (let h = 0; h < 360; h++) {\n // Shortest angular distance\n const raw = Math.abs(traditionalHueLut[h] - target);\n const delta = Math.min(raw, 360 - raw);\n if (delta < bestDelta) {\n bestDelta = delta;\n bestHue = h;\n }\n }\n\n return bestHue;\n}\n\n/**\n * Decompose a hex color string into palette parameters (hue, saturation, luminosity).\n *\n * Returns null if the hex string is invalid.\n *\n * @param hex - Hex color string (e.g., \"#FF0000\", \"#f00\", \"FF0000\")\n * @param dynamicRange - Current dynamic range for normalizedValue mapping\n */\nexport function hexToPaletteParams(\n hex: string,\n dynamicRange: DynamicRange,\n): HexPaletteParams | null {\n // Validate hex format\n const cleaned = hex.startsWith('#') ? hex.slice(1) : hex;\n if (!/^[0-9a-fA-F]{3}$/.test(cleaned) && !/^[0-9a-fA-F]{6}$/.test(cleaned)) {\n return null;\n }\n\n const srgb = hexToSrgb(hex);\n const oklch = srgbToOklch(srgb);\n\n // Map OKLCH lightness to normalizedValue within the dynamic range\n const normalizedValue = lightnessToNormalizedValue(dynamicRange, oklch.L);\n\n // Achromatic case: no meaningful hue\n if (oklch.C < ACHROMATIC_THRESHOLD) {\n return { hue: 0, saturation: 0, normalizedValue };\n }\n\n // Reverse-map OKLCH hue to traditional hue\n const hue = oklchHueToTraditional(oklch.h);\n\n // Compute saturation as percentage of max available chroma at this L and h\n const maxChroma = findMaxChromaInGamut(oklch.L, oklch.h);\n const saturation = maxChroma > 0\n ? Math.min(100, Math.round(oklch.C / maxChroma * 100))\n : 0;\n\n return { hue, saturation, normalizedValue };\n}\n","import React from 'react';\nimport { View, Text, Pressable, StyleSheet } from 'react-native';\nimport { Card, HueSlider, Slider, Select, Toggle, ColorScaleSlider, TextInput, useTokens } from '@newtonedev/components';\nimport { srgbToHex } from 'newtone';\nimport type { ColorResult, DynamicRange } from 'newtone';\nimport type { ConfiguratorState, PaletteState } from '../types';\nimport type { ConfiguratorAction } from '../state/actions';\nimport type { DesaturationStrength, HueGradingStrength } from 'newtone';\nimport { SEMANTIC_HUE_RANGES } from '../constants';\nimport { useWcagValidation } from '../hooks/useWcagValidation';\nimport { hexToPaletteParams } from '../hex-conversion';\nimport { traditionalHueToOklch } from '../hue-conversion';\n\nconst STRENGTH_OPTIONS = [\n { label: 'None', value: 'none' },\n { label: 'Low', value: 'low' },\n { label: 'Medium', value: 'medium' },\n { label: 'Hard', value: 'hard' },\n];\n\ninterface PalettePanelProps {\n readonly palette: PaletteState;\n readonly index: number;\n readonly dispatch: (action: ConfiguratorAction) => void;\n readonly previewColors?: readonly ColorResult[];\n readonly state: ConfiguratorState;\n}\n\n/** Get the hex color at a normalizedValue from the preview colors array */\nfunction getHexAtNv(previewColors: readonly ColorResult[], nv: number): string {\n const idx = Math.round((1 - nv) * (previewColors.length - 1));\n const clamped = Math.max(0, Math.min(previewColors.length - 1, idx));\n return srgbToHex(previewColors[clamped].srgb);\n}\n\nexport function PalettePanel({ palette, index, dispatch, previewColors, state }: PalettePanelProps) {\n const tokens = useTokens(1);\n const hueRange = SEMANTIC_HUE_RANGES[index];\n const isNeutral = index === 0;\n const mode = state.preview.mode;\n\n // Resolve per-mode key color\n const effectiveKeyColor = mode === 'dark' ? palette.keyColorDark : palette.keyColor;\n\n // Mode-aware action types\n const setKeyColorAction = mode === 'dark' ? 'SET_PALETTE_KEY_COLOR_DARK' as const : 'SET_PALETTE_KEY_COLOR' as const;\n const clearKeyColorAction = mode === 'dark' ? 'CLEAR_PALETTE_KEY_COLOR_DARK' as const : 'CLEAR_PALETTE_KEY_COLOR' as const;\n const hexActionType = mode === 'dark' ? 'SET_PALETTE_FROM_HEX_DARK' as const : 'SET_PALETTE_FROM_HEX' as const;\n\n // WCAG validation for non-neutral palettes (already mode-aware)\n const wcag = useWcagValidation(state, index);\n\n // Hex input state\n const [hexText, setHexText] = React.useState('');\n const [hexError, setHexError] = React.useState('');\n const [isEditingHex, setIsEditingHex] = React.useState(false);\n const [isHexUserSet, setIsHexUserSet] = React.useState(false);\n\n // Reset hex input state when mode changes\n React.useEffect(() => {\n setHexText('');\n setHexError('');\n setIsEditingHex(false);\n setIsHexUserSet(false);\n }, [mode]);\n\n // Compute displayed hex from current key color position\n const displayedHex = React.useMemo(() => {\n if (!previewColors || previewColors.length === 0) return '';\n const nv = effectiveKeyColor ?? wcag.autoNormalizedValue;\n return getHexAtNv(previewColors, nv);\n }, [previewColors, effectiveKeyColor, wcag.autoNormalizedValue]);\n\n // Sync hex text when not actively editing and not user-submitted\n React.useEffect(() => {\n if (!isEditingHex && !isHexUserSet) {\n setHexText(displayedHex);\n }\n }, [displayedHex, isEditingHex, isHexUserSet]);\n\n // Build dynamic range for hex conversion\n const dynamicRange = React.useMemo((): DynamicRange => {\n const light = state.globalHueGrading.light.strength !== 'none'\n ? { hue: traditionalHueToOklch(state.globalHueGrading.light.hue), strength: state.globalHueGrading.light.strength }\n : undefined;\n const dark = state.globalHueGrading.dark.strength !== 'none'\n ? { hue: traditionalHueToOklch(state.globalHueGrading.dark.hue), strength: state.globalHueGrading.dark.strength }\n : undefined;\n const hueGrading = (light || dark) ? { light, dark } : undefined;\n return {\n lightest: state.dynamicRange.lightest,\n darkest: state.dynamicRange.darkest,\n ...(hueGrading ? { hueGrading } : {}),\n };\n }, [state.dynamicRange, state.globalHueGrading]);\n\n const handleHexSubmit = React.useCallback(() => {\n setIsEditingHex(false);\n const trimmed = hexText.trim();\n if (!trimmed) {\n setHexError('');\n return;\n }\n\n const hex = trimmed.startsWith('#') ? trimmed : `#${trimmed}`;\n const params = hexToPaletteParams(hex, dynamicRange);\n\n if (!params) {\n setHexError('Invalid hex color');\n return;\n }\n\n setHexError('');\n setIsHexUserSet(true);\n dispatch({\n type: hexActionType,\n index,\n hue: params.hue,\n saturation: params.saturation,\n keyColor: params.normalizedValue,\n });\n }, [hexText, dynamicRange, dispatch, index, hexActionType]);\n\n const handleClearKeyColor = React.useCallback(() => {\n dispatch({ type: clearKeyColorAction, index });\n setHexError('');\n setIsHexUserSet(false);\n }, [dispatch, index, clearKeyColorAction]);\n\n // Build WCAG warning message\n const wcagWarning = React.useMemo(() => {\n if (effectiveKeyColor === undefined || wcag.keyColorContrast === null) return undefined;\n if (wcag.passesAA) return undefined;\n const ratio = wcag.keyColorContrast.toFixed(1);\n if (wcag.passesAALargeText) {\n return `Contrast ${ratio}:1 — passes large text (AA) but fails normal text (requires 4.5:1)`;\n }\n return `Contrast ${ratio}:1 — fails WCAG AA (requires 4.5:1 for normal text, 3:1 for large text)`;\n }, [effectiveKeyColor, wcag]);\n\n return (\n <Card elevation={1} style={styles.container}>\n <Text style={[styles.title, { color: srgbToHex(tokens.textPrimary.srgb) }]}>\n {palette.name}\n </Text>\n\n {/* Non-neutral: interactive luminosity slider + hex input */}\n {!isNeutral && previewColors && (\n <>\n <ColorScaleSlider\n colors={previewColors}\n value={effectiveKeyColor ?? wcag.autoNormalizedValue}\n onValueChange={(nv) => { setIsHexUserSet(false); dispatch({ type: setKeyColorAction, index, normalizedValue: nv }); }}\n label=\"Key Color\"\n warning={wcagWarning}\n trimEnds\n snap\n animateValue\n />\n <View style={styles.hexRow}>\n <View style={styles.hexInputContainer}>\n <TextInput\n label=\"Hex\"\n value={hexText}\n onChangeText={(text) => {\n setIsEditingHex(true);\n setHexText(text);\n setHexError('');\n }}\n onBlur={handleHexSubmit}\n onSubmitEditing={handleHexSubmit}\n placeholder=\"#000000\"\n />\n </View>\n {effectiveKeyColor !== undefined && (\n <Pressable onPress={handleClearKeyColor} style={styles.autoButton}>\n <Text style={[styles.autoText, { color: srgbToHex(tokens.interactive.srgb) }]}>\n Auto\n </Text>\n </Pressable>\n )}\n </View>\n {hexError !== '' && (\n <Text style={[styles.errorText, { color: srgbToHex(tokens.error.srgb) }]}>\n {hexError}\n </Text>\n )}\n </>\n )}\n\n {/* Neutral: static swatches (unchanged) */}\n {isNeutral && previewColors && (\n <View style={styles.inlineSwatches}>\n {previewColors.map((color, i) => (\n <View\n key={i}\n style={[styles.inlineSwatch, { backgroundColor: srgbToHex(color.srgb) }]}\n />\n ))}\n </View>\n )}\n\n <HueSlider\n value={palette.hue}\n onValueChange={(hue) => dispatch({ type: 'SET_PALETTE_HUE', index, hue })}\n label=\"Hue\"\n showValue\n {...(hueRange ? { min: hueRange.min, max: hueRange.max } : {})}\n />\n\n <Slider\n value={palette.saturation}\n onValueChange={(saturation) => dispatch({ type: 'SET_PALETTE_SATURATION', index, saturation })}\n min={0}\n max={100}\n label=\"Saturation\"\n showValue\n />\n\n <View style={styles.row}>\n <View style={styles.flex}>\n <Select\n options={STRENGTH_OPTIONS}\n value={palette.desaturationStrength}\n onValueChange={(strength) => dispatch({ type: 'SET_PALETTE_DESAT_STRENGTH', index, strength: strength as DesaturationStrength })}\n label=\"Desaturation\"\n />\n </View>\n {palette.desaturationStrength !== 'none' && (\n <View style={styles.toggleContainer}>\n <Toggle\n value={palette.desaturationDirection === 'dark'}\n onValueChange={(v) => dispatch({ type: 'SET_PALETTE_DESAT_DIRECTION', index, direction: v ? 'dark' : 'light' })}\n label=\"Invert\"\n />\n </View>\n )}\n </View>\n\n <View style={styles.row}>\n <View style={styles.flex}>\n <Select\n options={STRENGTH_OPTIONS}\n value={palette.hueGradeStrength}\n onValueChange={(strength) => dispatch({ type: 'SET_PALETTE_HUE_GRADE_STRENGTH', index, strength: strength as HueGradingStrength })}\n label=\"Hue Grading\"\n />\n </View>\n {palette.hueGradeStrength !== 'none' && (\n <View style={styles.toggleContainer}>\n <Toggle\n value={palette.hueGradeDirection === 'dark'}\n onValueChange={(v) => dispatch({ type: 'SET_PALETTE_HUE_GRADE_DIRECTION', index, direction: v ? 'dark' : 'light' })}\n label=\"Invert\"\n />\n </View>\n )}\n </View>\n\n {palette.hueGradeStrength !== 'none' && (\n <HueSlider\n value={palette.hueGradeHue}\n onValueChange={(hue) => dispatch({ type: 'SET_PALETTE_HUE_GRADE_HUE', index, hue })}\n label=\"Grade Target\"\n showValue\n />\n )}\n </Card>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n gap: 12,\n marginBottom: 12,\n },\n title: {\n fontSize: 16,\n fontWeight: '700',\n },\n inlineSwatches: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 1,\n },\n inlineSwatch: {\n width: 20,\n height: 16,\n borderRadius: 2,\n },\n row: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n gap: 12,\n },\n flex: {\n flex: 1,\n },\n toggleContainer: {\n paddingBottom: 2,\n },\n hexRow: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n gap: 8,\n },\n hexInputContainer: {\n flex: 1,\n },\n autoButton: {\n paddingBottom: 6,\n },\n autoText: {\n fontSize: 13,\n fontWeight: '600',\n },\n errorText: {\n fontSize: 12,\n fontWeight: '500',\n },\n});\n","import React from 'react';\nimport { View, Text, StyleSheet } from 'react-native';\nimport { Card, Slider, Select, HueSlider, useTokens } from '@newtonedev/components';\nimport { srgbToHex } from 'newtone';\nimport type { ConfiguratorState } from '../types';\nimport type { ConfiguratorAction } from '../state/actions';\nimport type { HueGradingStrength } from 'newtone';\n\nconst STRENGTH_OPTIONS = [\n { label: 'None', value: 'none' },\n { label: 'Low', value: 'low' },\n { label: 'Medium', value: 'medium' },\n { label: 'Hard', value: 'hard' },\n];\n\ninterface GlobalPanelProps {\n readonly state: ConfiguratorState;\n readonly dispatch: (action: ConfiguratorAction) => void;\n}\n\nexport function GlobalPanel({ state, dispatch }: GlobalPanelProps) {\n const tokens = useTokens(1);\n\n return (\n <Card elevation={1} style={styles.container}>\n <Text style={[styles.title, { color: srgbToHex(tokens.textPrimary.srgb) }]}>\n Dynamic Range\n </Text>\n\n <View style={styles.row}>\n <View style={styles.flex}>\n <Slider\n value={Math.round(state.dynamicRange.lightest * 100)}\n onValueChange={(v) => dispatch({ type: 'SET_LIGHTEST', value: v / 100 })}\n min={0}\n max={100}\n label=\"Lightest\"\n showValue\n />\n </View>\n <View style={styles.flex}>\n <Slider\n value={Math.round(state.dynamicRange.darkest * 100)}\n onValueChange={(v) => dispatch({ type: 'SET_DARKEST', value: v / 100 })}\n min={0}\n max={100}\n label=\"Darkest\"\n showValue\n />\n </View>\n </View>\n\n <Text style={[styles.subtitle, { color: srgbToHex(tokens.textSecondary.srgb) }]}>\n Global Hue Grading — Light End\n </Text>\n\n <View style={styles.row}>\n <View style={styles.flex}>\n <Select\n options={STRENGTH_OPTIONS}\n value={state.globalHueGrading.light.strength}\n onValueChange={(s) => dispatch({ type: 'SET_GLOBAL_GRADE_LIGHT_STRENGTH', strength: s as HueGradingStrength })}\n label=\"Strength\"\n />\n </View>\n {state.globalHueGrading.light.strength !== 'none' && (\n <View style={styles.flex}>\n <HueSlider\n value={state.globalHueGrading.light.hue}\n onValueChange={(hue) => dispatch({ type: 'SET_GLOBAL_GRADE_LIGHT_HUE', hue })}\n label=\"Target Hue\"\n showValue\n />\n </View>\n )}\n </View>\n\n <Text style={[styles.subtitle, { color: srgbToHex(tokens.textSecondary.srgb) }]}>\n Global Hue Grading — Dark End\n </Text>\n\n <View style={styles.row}>\n <View style={styles.flex}>\n <Select\n options={STRENGTH_OPTIONS}\n value={state.globalHueGrading.dark.strength}\n onValueChange={(s) => dispatch({ type: 'SET_GLOBAL_GRADE_DARK_STRENGTH', strength: s as HueGradingStrength })}\n label=\"Strength\"\n />\n </View>\n {state.globalHueGrading.dark.strength !== 'none' && (\n <View style={styles.flex}>\n <HueSlider\n value={state.globalHueGrading.dark.hue}\n onValueChange={(hue) => dispatch({ type: 'SET_GLOBAL_GRADE_DARK_HUE', hue })}\n label=\"Target Hue\"\n showValue\n />\n </View>\n )}\n </View>\n </Card>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n gap: 12,\n },\n title: {\n fontSize: 16,\n fontWeight: '700',\n },\n subtitle: {\n fontSize: 13,\n fontWeight: '600',\n marginTop: 4,\n },\n row: {\n flexDirection: 'row',\n gap: 12,\n },\n flex: {\n flex: 1,\n },\n});\n","import React from 'react';\nimport { View, Text, StyleSheet } from 'react-native';\nimport {\n Card,\n Button,\n TextInput,\n Select,\n NewtoneProvider,\n useTokens,\n} from '@newtonedev/components';\nimport { srgbToHex } from 'newtone';\nimport type { ConfiguratorState } from '../types';\nimport type { ConfiguratorAction } from '../state/actions';\nimport type { ThemeName, NewtoneThemeConfig } from '@newtonedev/components';\n\nconst THEME_OPTIONS = [\n { label: 'Neutral', value: 'neutral' },\n { label: 'Primary', value: 'primary' },\n { label: 'Secondary', value: 'secondary' },\n { label: 'Strong', value: 'strong' },\n];\n\ninterface PreviewPanelProps {\n readonly state: ConfiguratorState;\n readonly dispatch: (action: ConfiguratorAction) => void;\n readonly themeConfig: NewtoneThemeConfig;\n}\n\n/** Inner card that reads tokens from the nested provider, so its background reflects the selected theme. */\nfunction PreviewCard({\n state,\n dispatch,\n}: {\n readonly state: ConfiguratorState;\n readonly dispatch: (action: ConfiguratorAction) => void;\n}) {\n const tokens = useTokens(1);\n\n return (\n <Card elevation={1} style={styles.container}>\n <Text style={[styles.title, { color: srgbToHex(tokens.textPrimary.srgb) }]}>\n Component Preview\n </Text>\n\n <View style={styles.controls}>\n <Select\n options={THEME_OPTIONS}\n value={state.preview.theme}\n onValueChange={(t) => dispatch({ type: 'SET_PREVIEW_THEME', theme: t as ThemeName })}\n label=\"Theme\"\n />\n </View>\n\n <View style={previewStyles.wrapper}>\n <View style={previewStyles.row}>\n <Button variant=\"primary\" size=\"sm\">Primary</Button>\n <Button variant=\"secondary\" size=\"sm\">Secondary</Button>\n <Button variant=\"ghost\" size=\"sm\">Ghost</Button>\n <Button variant=\"outline\" size=\"sm\">Outline</Button>\n </View>\n\n <TextInput label=\"Sample Input\" value=\"Hello, Newtone\" onChangeText={() => {}} />\n\n <View style={previewStyles.row}>\n <View style={[previewStyles.statusDot, { backgroundColor: srgbToHex(tokens.success.srgb) }]} />\n <Text style={[previewStyles.statusText, { color: srgbToHex(tokens.textPrimary.srgb) }]}>Success</Text>\n <View style={[previewStyles.statusDot, { backgroundColor: srgbToHex(tokens.warning.srgb) }]} />\n <Text style={[previewStyles.statusText, { color: srgbToHex(tokens.textPrimary.srgb) }]}>Warning</Text>\n <View style={[previewStyles.statusDot, { backgroundColor: srgbToHex(tokens.error.srgb) }]} />\n <Text style={[previewStyles.statusText, { color: srgbToHex(tokens.textPrimary.srgb) }]}>Error</Text>\n </View>\n </View>\n </Card>\n );\n}\n\nexport function PreviewPanel({ state, dispatch, themeConfig }: PreviewPanelProps) {\n return (\n <NewtoneProvider\n key={`${state.preview.mode}-${state.preview.theme}`}\n config={themeConfig}\n initialMode={state.preview.mode}\n initialTheme={state.preview.theme}\n >\n <PreviewCard state={state} dispatch={dispatch} />\n </NewtoneProvider>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n gap: 12,\n },\n title: {\n fontSize: 16,\n fontWeight: '700',\n },\n controls: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n gap: 16,\n },\n});\n\nconst previewStyles = StyleSheet.create({\n wrapper: {\n gap: 12,\n },\n row: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n flexWrap: 'wrap',\n },\n statusDot: {\n width: 12,\n height: 12,\n borderRadius: 6,\n },\n statusText: {\n fontSize: 13,\n marginRight: 8,\n },\n});\n","import type { ConfiguratorState } from '../types';\nimport type { ColorMode } from '@newtonedev/components';\nimport { computeTokens } from '@newtonedev/components';\nimport { srgbToHex } from 'newtone';\nimport { toThemeConfig } from './toThemeConfig';\n\n/**\n * Generate CSS custom properties for both light and dark modes.\n * Computes all 12 design tokens for the neutral theme at default elevation.\n */\nexport function toCSS(state: ConfiguratorState): string {\n const config = toThemeConfig(state);\n const modes: readonly ColorMode[] = ['light', 'dark'];\n\n let css = '';\n for (const mode of modes) {\n const tokens = computeTokens(\n config.colorSystem,\n mode,\n config.themes.neutral,\n 1,\n config.elevation.offsets,\n config.spacing,\n config.radius,\n config.typography,\n config.icons\n );\n\n const selector = mode === 'light' ? ':root' : '[data-theme=\"dark\"]';\n css += `${selector} {\\n`;\n css += ` --newtone-background: ${srgbToHex(tokens.background.srgb)};\\n`;\n css += ` --newtone-background-elevated: ${srgbToHex(tokens.backgroundElevated.srgb)};\\n`;\n css += ` --newtone-background-sunken: ${srgbToHex(tokens.backgroundSunken.srgb)};\\n`;\n css += ` --newtone-text-primary: ${srgbToHex(tokens.textPrimary.srgb)};\\n`;\n css += ` --newtone-text-secondary: ${srgbToHex(tokens.textSecondary.srgb)};\\n`;\n css += ` --newtone-interactive: ${srgbToHex(tokens.interactive.srgb)};\\n`;\n css += ` --newtone-interactive-hover: ${srgbToHex(tokens.interactiveHover.srgb)};\\n`;\n css += ` --newtone-interactive-active: ${srgbToHex(tokens.interactiveActive.srgb)};\\n`;\n css += ` --newtone-border: ${srgbToHex(tokens.border.srgb)};\\n`;\n css += ` --newtone-success: ${srgbToHex(tokens.success.srgb)};\\n`;\n css += ` --newtone-warning: ${srgbToHex(tokens.warning.srgb)};\\n`;\n css += ` --newtone-error: ${srgbToHex(tokens.error.srgb)};\\n`;\n css += `}\\n\\n`;\n }\n\n return css;\n}\n","import type { ConfiguratorState } from '../types';\nimport type { NewtoneThemeConfig } from '@newtonedev/components';\nimport { toThemeConfig } from './toThemeConfig';\n\n/** Serializable configurator export format */\nexport interface ConfiguratorExport {\n readonly version: '1.0';\n readonly configuratorState: ConfiguratorState;\n readonly themeConfig: NewtoneThemeConfig;\n}\n\n/**\n * Export the configurator state as a JSON string.\n * Includes both the human-readable state (for round-tripping)\n * and the engine-ready theme config.\n */\nexport function toJSON(state: ConfiguratorState): string {\n const output: ConfiguratorExport = {\n version: '1.0',\n configuratorState: state,\n themeConfig: toThemeConfig(state),\n };\n return JSON.stringify(output, null, 2);\n}\n","import React, { useMemo, useState, useCallback } from 'react';\nimport { View, Text, StyleSheet } from 'react-native';\nimport { Card, Button, useTokens } from '@newtonedev/components';\nimport { srgbToHex } from 'newtone';\nimport type { ConfiguratorState } from '../types';\nimport { toCSS } from '../bridge/toCSS';\nimport { toJSON } from '../bridge/toJSON';\n\ninterface ExportPanelProps {\n readonly state: ConfiguratorState;\n}\n\ntype ExportFormat = 'css' | 'json';\n\nexport function ExportPanel({ state }: ExportPanelProps) {\n const tokens = useTokens(1);\n const [format, setFormat] = useState<ExportFormat>('css');\n const [copied, setCopied] = useState(false);\n\n const output = useMemo(() => {\n return format === 'css' ? toCSS(state) : toJSON(state);\n }, [state, format]);\n\n const handleCopy = useCallback(() => {\n if (typeof navigator !== 'undefined' && navigator.clipboard) {\n navigator.clipboard.writeText(output).then(() => {\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n });\n }\n }, [output]);\n\n return (\n <Card elevation={1} style={styles.container}>\n <Text style={[styles.title, { color: srgbToHex(tokens.textPrimary.srgb) }]}>\n Export\n </Text>\n\n <View style={styles.tabs}>\n <Button\n variant={format === 'css' ? 'primary' : 'ghost'}\n size=\"sm\"\n onPress={() => setFormat('css')}\n >\n CSS Variables\n </Button>\n <Button\n variant={format === 'json' ? 'primary' : 'ghost'}\n size=\"sm\"\n onPress={() => setFormat('json')}\n >\n JSON\n </Button>\n <Button variant=\"outline\" size=\"sm\" onPress={handleCopy}>\n {copied ? 'Copied!' : 'Copy'}\n </Button>\n </View>\n\n <View style={[styles.codeBlock, { backgroundColor: srgbToHex(tokens.backgroundSunken.srgb) }]}>\n <Text\n style={[styles.code, { color: srgbToHex(tokens.textPrimary.srgb) }]}\n selectable\n >\n {output}\n </Text>\n </View>\n </Card>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n gap: 12,\n marginBottom: 12,\n },\n title: {\n fontSize: 16,\n fontWeight: '700',\n },\n tabs: {\n flexDirection: 'row',\n gap: 8,\n },\n codeBlock: {\n borderRadius: 6,\n padding: 12,\n maxHeight: 300,\n overflow: 'scroll' as unknown as 'visible',\n },\n code: {\n fontSize: 11,\n fontFamily: 'monospace',\n lineHeight: 16,\n },\n});\n","import React from 'react';\nimport { View, Text, StyleSheet } from 'react-native';\nimport { Card, Slider, Select, useTokens } from '@newtonedev/components';\nimport { srgbToHex } from 'newtone';\nimport type { ConfiguratorState, SpacingPreset } from '../types';\nimport type { ConfiguratorAction } from '../state/actions';\n\nconst ICON_VARIANT_OPTIONS = [\n { label: 'Outlined', value: 'outlined' },\n { label: 'Rounded', value: 'rounded' },\n { label: 'Sharp', value: 'sharp' },\n];\n\nconst ICON_WEIGHT_OPTIONS = [\n { label: '100', value: '100' },\n { label: '200', value: '200' },\n { label: '300', value: '300' },\n { label: '400', value: '400' },\n { label: '500', value: '500' },\n { label: '600', value: '600' },\n { label: '700', value: '700' },\n];\n\ninterface DesignPanelProps {\n readonly state: ConfiguratorState;\n readonly dispatch: (action: ConfiguratorAction) => void;\n}\n\nexport function DesignPanel({ state, dispatch }: DesignPanelProps) {\n const tokens = useTokens(1);\n\n const spacingPreset = state.spacing?.preset ?? 'md';\n const intensity = state.roundness?.intensity ?? 0.5;\n const baseSize = state.typography?.scale.baseSize ?? 16;\n const ratio = state.typography?.scale.ratio ?? 1.25;\n const variant = state.icons?.variant ?? 'rounded';\n const weight = state.icons?.weight ?? 400;\n return (\n <Card elevation={1} style={styles.container}>\n <Text style={[styles.title, { color: srgbToHex(tokens.textPrimary.srgb) }]}>\n Design System\n </Text>\n\n {/* Spacing Section */}\n <Text style={[styles.subtitle, { color: srgbToHex(tokens.textSecondary.srgb) }]}>\n Spacing\n </Text>\n <Select\n value={spacingPreset}\n onValueChange={(preset) => dispatch({ type: 'SET_SPACING_PRESET', preset: preset as SpacingPreset })}\n options={[\n { value: 'xs', label: 'Extra Small' },\n { value: 'sm', label: 'Small' },\n { value: 'md', label: 'Medium' },\n { value: 'lg', label: 'Large' },\n { value: 'xl', label: 'Extra Large' },\n ]}\n label=\"Preset\"\n />\n\n {/* Roundness Section */}\n <Text style={[styles.subtitle, { color: srgbToHex(tokens.textSecondary.srgb) }]}>\n Roundness\n </Text>\n <Slider\n value={Math.round(intensity * 100)}\n onValueChange={(v) => dispatch({ type: 'SET_ROUNDNESS_INTENSITY', intensity: v / 100 })}\n min={0}\n max={100}\n label=\"Intensity\"\n showValue\n />\n\n {/* Typography Section */}\n <Text style={[styles.subtitle, { color: srgbToHex(tokens.textSecondary.srgb) }]}>\n Typography\n </Text>\n <View style={styles.row}>\n <View style={styles.flex}>\n <Slider\n value={baseSize}\n onValueChange={(v) => dispatch({ type: 'SET_TYPOGRAPHY_BASE_SIZE', baseSize: v })}\n min={12}\n max={24}\n step={1}\n label=\"Base Size\"\n showValue\n />\n </View>\n <View style={styles.flex}>\n <Slider\n value={Math.round(ratio * 100)}\n onValueChange={(v) => dispatch({ type: 'SET_TYPOGRAPHY_RATIO', ratio: v / 100 })}\n min={110}\n max={150}\n step={5}\n label=\"Scale Ratio\"\n showValue\n />\n </View>\n </View>\n\n {/* Icons Section */}\n <Text style={[styles.subtitle, { color: srgbToHex(tokens.textSecondary.srgb) }]}>\n Icons\n </Text>\n <View style={styles.row}>\n <View style={styles.flex}>\n <Select\n options={ICON_VARIANT_OPTIONS}\n value={variant}\n onValueChange={(v) => dispatch({ type: 'SET_ICON_VARIANT', variant: v as 'outlined' | 'rounded' | 'sharp' })}\n label=\"Variant\"\n />\n </View>\n <View style={styles.flex}>\n <Select\n options={ICON_WEIGHT_OPTIONS}\n value={weight.toString()}\n onValueChange={(v) => dispatch({ type: 'SET_ICON_WEIGHT', weight: parseInt(v) as 100 | 200 | 300 | 400 | 500 | 600 | 700 })}\n label=\"Weight\"\n />\n </View>\n </View>\n </Card>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n gap: 12,\n },\n title: {\n fontSize: 16,\n fontWeight: '700',\n },\n subtitle: {\n fontSize: 13,\n fontWeight: '600',\n marginTop: 4,\n },\n row: {\n flexDirection: 'row',\n gap: 12,\n },\n flex: {\n flex: 1,\n },\n});\n","import React, { useEffect, useRef, useState } from 'react';\nimport { View, Text, Pressable, StyleSheet } from 'react-native';\nimport { Toggle, useTokens, useNewtoneTheme } from '@newtonedev/components';\nimport { srgbToHex } from 'newtone';\nimport type { ConfiguratorProps } from './Configurator.types';\nimport { useConfigurator } from './hooks/useConfigurator';\nimport { usePreviewColors } from './hooks/usePreviewColors';\nimport { PalettePanel } from './panels/PalettePanel';\nimport { GlobalPanel } from './panels/GlobalPanel';\nimport { PreviewPanel } from './panels/PreviewPanel';\nimport { ExportPanel } from './panels/ExportPanel';\nimport { DesignPanel } from './panels/DesignPanel';\n\n/**\n * Newtone Configurator — embeddable palette builder widget.\n *\n * Must be rendered inside a NewtoneProvider owned by the consuming app.\n * The configurator reads tokens via useTokens() for self-affecting styling.\n *\n * The consuming app should update its NewtoneProvider config prop\n * based on the onChange callback, creating the self-affecting loop.\n */\nexport function Configurator({\n initialState,\n onChange,\n showExport = true,\n showPreview = true,\n}: ConfiguratorProps) {\n const { state, dispatch, themeConfig, reset } = useConfigurator(initialState);\n const tokens = useTokens(1);\n const { setMode } = useNewtoneTheme();\n const isInitialRender = useRef(true);\n const [activePaletteIndex, setActivePaletteIndex] = useState(0);\n const previews = usePreviewColors(state);\n\n // Sync mode to parent provider on mount\n useEffect(() => {\n setMode(state.preview.mode);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Fire onChange whenever state changes (skip initial render)\n useEffect(() => {\n if (isInitialRender.current) {\n isInitialRender.current = false;\n return;\n }\n onChange?.(state, themeConfig);\n }, [state, themeConfig, onChange]);\n\n return (\n <View style={[styles.container, { backgroundColor: srgbToHex(tokens.backgroundSunken.srgb) }]}>\n {/* Mode toggle at top */}\n <View style={styles.topBar}>\n <Toggle\n value={state.preview.mode === 'dark'}\n onValueChange={(isDark) => {\n const mode = isDark ? 'dark' : 'light';\n dispatch({ type: 'SET_PREVIEW_MODE', mode });\n setMode(mode);\n }}\n label=\"Dark Mode\"\n />\n </View>\n\n {/* Dynamic Range + Component Preview side by side */}\n <View style={styles.topRow}>\n <View style={styles.topRowPanel}>\n <GlobalPanel state={state} dispatch={dispatch} />\n </View>\n {showPreview && (\n <View style={styles.topRowPanel}>\n <PreviewPanel state={state} dispatch={dispatch} themeConfig={themeConfig} />\n </View>\n )}\n </View>\n\n {/* Design System controls */}\n <View style={styles.designRow}>\n <DesignPanel state={state} dispatch={dispatch} />\n </View>\n\n {/* Palette tab bar */}\n <View style={styles.tabBar}>\n {state.palettes.map((palette, index) => (\n <Pressable\n key={index}\n onPress={() => setActivePaletteIndex(index)}\n style={[\n styles.tab,\n {\n backgroundColor: index === activePaletteIndex\n ? srgbToHex(tokens.background.srgb)\n : 'transparent',\n borderColor: index === activePaletteIndex\n ? srgbToHex(tokens.border.srgb)\n : 'transparent',\n },\n ]}\n >\n <Text style={[\n styles.tabText,\n {\n color: srgbToHex(\n index === activePaletteIndex\n ? tokens.textPrimary.srgb\n : tokens.textSecondary.srgb\n ),\n fontWeight: index === activePaletteIndex ? '700' : '500',\n },\n ]}>\n {palette.name}\n </Text>\n </Pressable>\n ))}\n </View>\n\n {/* Active palette panel with inline preview */}\n <PalettePanel\n palette={state.palettes[activePaletteIndex]}\n index={activePaletteIndex}\n dispatch={dispatch}\n previewColors={previews[activePaletteIndex]}\n state={state}\n />\n\n {showExport && <ExportPanel state={state} />}\n\n {/* Safety: hardcoded styling so this button is always readable */}\n <button\n onClick={() => reset()}\n style={{\n marginTop: 16,\n padding: '8px 16px',\n backgroundColor: '#ffffff',\n color: '#000000',\n border: '2px solid #000000',\n borderRadius: 4,\n fontWeight: 700,\n fontSize: 14,\n cursor: 'pointer',\n }}\n >\n Reset to Defaults\n </button>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: 8,\n padding: 16,\n gap: 4,\n },\n topBar: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n alignItems: 'center',\n marginBottom: 8,\n },\n topRow: {\n flexDirection: 'row',\n gap: 8,\n marginBottom: 4,\n },\n topRowPanel: {\n flex: 1,\n },\n designRow: {\n marginBottom: 4,\n },\n tabBar: {\n flexDirection: 'row',\n gap: 4,\n marginBottom: 4,\n },\n tab: {\n paddingVertical: 8,\n paddingHorizontal: 12,\n borderRadius: 6,\n borderWidth: 1,\n },\n tabText: {\n fontSize: 13,\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/state/defaults.ts","../src/state/reducer.ts","../src/hue-conversion.ts","../src/bridge/toThemeConfig.ts","../src/hooks/useConfigurator.ts","../src/hooks/usePreviewColors.ts","../src/constants.ts","../src/hooks/useWcagValidation.ts","../src/hex-conversion.ts","../src/panels/PalettePanel.tsx","../src/panels/GlobalPanel.tsx","../src/panels/PreviewPanel.tsx","../src/bridge/toCSS.ts","../src/bridge/toJSON.ts","../src/panels/ExportPanel.tsx","../src/panels/DesignPanel.tsx","../src/Configurator.tsx"],"names":["srgbToOklch","useReducer","useMemo","useCallback","generatePreview","getColor","getColorByContrast","lightnessToNormalizedValue","getWcagContrastRatio","hexToSrgb","findMaxChromaInGamut","srgbToHex","useTokens","React","Card","Text","ColorScaleSlider","View","TextInput","Pressable","HueSlider","Slider","Select","Toggle","StyleSheet","STRENGTH_OPTIONS","styles","Button","NewtoneProvider","computeTokens","useState","useNewtoneTheme","useRef","useEffect"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { ConfiguratorState } from '../types';\n\n/**\n * Default configurator state.\n * Traditional hues match the playground defaults.\n * These are HSL hues (0=red, 60=yellow, 120=green, etc.),\n * NOT OKLCH hues — the bridge converts them.\n */\nexport const DEFAULT_CONFIGURATOR_STATE: ConfiguratorState = {\n palettes: [\n {\n name: 'Neutral',\n hue: 220,\n saturation: 24,\n desaturationStrength: 'none',\n desaturationDirection: 'light',\n hueGradeStrength: 'none',\n hueGradeHue: 0,\n hueGradeDirection: 'light',\n },\n {\n name: 'Accent',\n hue: 24,\n saturation: 80,\n desaturationStrength: 'none',\n desaturationDirection: 'light',\n hueGradeStrength: 'none',\n hueGradeHue: 0,\n hueGradeDirection: 'light',\n },\n {\n name: 'Success',\n hue: 145,\n saturation: 64,\n desaturationStrength: 'none',\n desaturationDirection: 'light',\n hueGradeStrength: 'none',\n hueGradeHue: 0,\n hueGradeDirection: 'light',\n },\n {\n name: 'Warning',\n hue: 40,\n saturation: 80,\n desaturationStrength: 'none',\n desaturationDirection: 'light',\n hueGradeStrength: 'none',\n hueGradeHue: 0,\n hueGradeDirection: 'light',\n },\n {\n name: 'Error',\n hue: 0,\n saturation: 80,\n desaturationStrength: 'none',\n desaturationDirection: 'light',\n hueGradeStrength: 'none',\n hueGradeHue: 0,\n hueGradeDirection: 'light',\n },\n ],\n dynamicRange: {\n lightest: 1,\n darkest: 1,\n },\n globalHueGrading: {\n light: { strength: 'none', hue: 30 },\n dark: { strength: 'none', hue: 220 },\n },\n preview: {\n mode: 'light',\n theme: 'neutral',\n },\n spacing: {\n preset: 'md', // Medium (8px base): default/balanced spacing\n },\n roundness: {\n intensity: 0.5, // 1.0x multiplier = preserves current hardcoded values\n },\n typography: {\n fonts: {\n mono: {\n type: 'system',\n family: 'ui-monospace',\n fallback: 'SFMono-Regular, Menlo, Monaco, Consolas, monospace',\n },\n display: {\n type: 'system',\n family: 'system-ui',\n fallback: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n },\n default: {\n type: 'system',\n family: 'system-ui',\n fallback: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n },\n },\n scale: { baseSize: 16, ratio: 1.25 },\n },\n icons: {\n variant: 'rounded', // Material Design 3 aesthetic\n weight: 400, // Normal weight\n autoGrade: true, // Enable mode-aware grade\n },\n};\n","import type { ConfiguratorState, PaletteState } from '../types';\nimport type { ConfiguratorAction } from './actions';\nimport { DEFAULT_CONFIGURATOR_STATE } from './defaults';\n\nfunction updatePalette(\n palettes: readonly PaletteState[],\n index: number,\n update: Partial<PaletteState>,\n): readonly PaletteState[] {\n if (index < 0 || index >= palettes.length) return palettes;\n return palettes.map((p, i) => (i === index ? { ...p, ...update } : p));\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n}\n\nfunction wrapHue(hue: number): number {\n return ((hue % 360) + 360) % 360;\n}\n\nexport function configuratorReducer(\n state: ConfiguratorState,\n action: ConfiguratorAction,\n): ConfiguratorState {\n switch (action.type) {\n // Palette actions\n case 'SET_PALETTE_HUE':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n hue: wrapHue(action.hue),\n }),\n };\n\n case 'SET_PALETTE_SATURATION':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n saturation: clamp(action.saturation, 0, 100),\n }),\n };\n\n case 'SET_PALETTE_DESAT_STRENGTH':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n desaturationStrength: action.strength,\n }),\n };\n\n case 'SET_PALETTE_DESAT_DIRECTION':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n desaturationDirection: action.direction,\n }),\n };\n\n case 'SET_PALETTE_HUE_GRADE_STRENGTH':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n hueGradeStrength: action.strength,\n }),\n };\n\n case 'SET_PALETTE_HUE_GRADE_HUE':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n hueGradeHue: wrapHue(action.hue),\n }),\n };\n\n case 'SET_PALETTE_HUE_GRADE_DIRECTION':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n hueGradeDirection: action.direction,\n }),\n };\n\n case 'SET_PALETTE_KEY_COLOR':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n keyColor: clamp(action.normalizedValue, 0, 1),\n }),\n };\n\n case 'CLEAR_PALETTE_KEY_COLOR':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n keyColor: undefined,\n }),\n };\n\n case 'SET_PALETTE_FROM_HEX':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n hue: wrapHue(action.hue),\n saturation: clamp(action.saturation, 0, 100),\n keyColor: clamp(action.keyColor, 0, 1),\n }),\n };\n\n case 'SET_PALETTE_KEY_COLOR_DARK':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n keyColorDark: clamp(action.normalizedValue, 0, 1),\n }),\n };\n\n case 'CLEAR_PALETTE_KEY_COLOR_DARK':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n keyColorDark: undefined,\n }),\n };\n\n case 'SET_PALETTE_FROM_HEX_DARK':\n return {\n ...state,\n palettes: updatePalette(state.palettes, action.index, {\n hue: wrapHue(action.hue),\n saturation: clamp(action.saturation, 0, 100),\n keyColorDark: clamp(action.keyColor, 0, 1),\n }),\n };\n\n // Dynamic range actions\n case 'SET_LIGHTEST':\n return {\n ...state,\n dynamicRange: {\n ...state.dynamicRange,\n lightest: clamp(action.value, 0, 1),\n },\n };\n\n case 'SET_DARKEST':\n return {\n ...state,\n dynamicRange: {\n ...state.dynamicRange,\n darkest: clamp(action.value, 0, 1),\n },\n };\n\n // Global hue grading actions\n case 'SET_GLOBAL_GRADE_LIGHT_STRENGTH':\n return {\n ...state,\n globalHueGrading: {\n ...state.globalHueGrading,\n light: { ...state.globalHueGrading.light, strength: action.strength },\n },\n };\n\n case 'SET_GLOBAL_GRADE_LIGHT_HUE':\n return {\n ...state,\n globalHueGrading: {\n ...state.globalHueGrading,\n light: { ...state.globalHueGrading.light, hue: wrapHue(action.hue) },\n },\n };\n\n case 'SET_GLOBAL_GRADE_DARK_STRENGTH':\n return {\n ...state,\n globalHueGrading: {\n ...state.globalHueGrading,\n dark: { ...state.globalHueGrading.dark, strength: action.strength },\n },\n };\n\n case 'SET_GLOBAL_GRADE_DARK_HUE':\n return {\n ...state,\n globalHueGrading: {\n ...state.globalHueGrading,\n dark: { ...state.globalHueGrading.dark, hue: wrapHue(action.hue) },\n },\n };\n\n // Spacing actions\n case 'SET_SPACING_PRESET':\n return {\n ...state,\n spacing: {\n preset: action.preset,\n },\n };\n\n // Roundness actions\n case 'SET_ROUNDNESS_INTENSITY':\n return {\n ...state,\n roundness: {\n intensity: clamp(action.intensity, 0, 1),\n },\n };\n\n // Typography actions\n case 'SET_TYPOGRAPHY_BASE_SIZE': {\n const defaultTypography = DEFAULT_CONFIGURATOR_STATE.typography!;\n return {\n ...state,\n typography: {\n fonts: state.typography?.fonts ?? defaultTypography.fonts,\n scale: {\n baseSize: clamp(action.baseSize, 12, 24),\n ratio: state.typography?.scale.ratio ?? defaultTypography.scale.ratio,\n },\n },\n };\n }\n\n case 'SET_TYPOGRAPHY_RATIO': {\n const defaultTypography = DEFAULT_CONFIGURATOR_STATE.typography!;\n return {\n ...state,\n typography: {\n fonts: state.typography?.fonts ?? defaultTypography.fonts,\n scale: {\n baseSize: state.typography?.scale.baseSize ?? defaultTypography.scale.baseSize,\n ratio: clamp(action.ratio, 1.1, 1.5),\n },\n },\n };\n }\n\n case 'SET_FONT_MONO': {\n const defaultTypography = DEFAULT_CONFIGURATOR_STATE.typography!;\n return {\n ...state,\n typography: {\n fonts: {\n mono: action.font,\n display: state.typography?.fonts.display ?? defaultTypography.fonts.display,\n default: state.typography?.fonts.default ?? defaultTypography.fonts.default,\n },\n scale: state.typography?.scale ?? defaultTypography.scale,\n },\n };\n }\n\n case 'SET_FONT_DISPLAY': {\n const defaultTypography = DEFAULT_CONFIGURATOR_STATE.typography!;\n return {\n ...state,\n typography: {\n fonts: {\n mono: state.typography?.fonts.mono ?? defaultTypography.fonts.mono,\n display: action.font,\n default: state.typography?.fonts.default ?? defaultTypography.fonts.default,\n },\n scale: state.typography?.scale ?? defaultTypography.scale,\n },\n };\n }\n\n case 'SET_FONT_DEFAULT': {\n const defaultTypography = DEFAULT_CONFIGURATOR_STATE.typography!;\n return {\n ...state,\n typography: {\n fonts: {\n mono: state.typography?.fonts.mono ?? defaultTypography.fonts.mono,\n display: state.typography?.fonts.display ?? defaultTypography.fonts.display,\n default: action.font,\n },\n scale: state.typography?.scale ?? defaultTypography.scale,\n },\n };\n }\n\n // Icons actions\n case 'SET_ICON_VARIANT': {\n const defaultIcons = DEFAULT_CONFIGURATOR_STATE.icons!;\n return {\n ...state,\n icons: {\n variant: action.variant,\n weight: state.icons?.weight ?? defaultIcons.weight,\n autoGrade: state.icons?.autoGrade ?? defaultIcons.autoGrade,\n },\n };\n }\n\n case 'SET_ICON_WEIGHT': {\n const defaultIcons = DEFAULT_CONFIGURATOR_STATE.icons!;\n return {\n ...state,\n icons: {\n variant: state.icons?.variant ?? defaultIcons.variant,\n weight: action.weight,\n autoGrade: state.icons?.autoGrade ?? defaultIcons.autoGrade,\n },\n };\n }\n\n case 'SET_ICON_AUTO_GRADE': {\n const defaultIcons = DEFAULT_CONFIGURATOR_STATE.icons!;\n return {\n ...state,\n icons: {\n variant: state.icons?.variant ?? defaultIcons.variant,\n weight: state.icons?.weight ?? defaultIcons.weight,\n autoGrade: action.autoGrade,\n },\n };\n }\n\n // Preview actions\n case 'SET_PREVIEW_MODE':\n return {\n ...state,\n preview: { ...state.preview, mode: action.mode },\n };\n\n case 'SET_PREVIEW_THEME':\n return {\n ...state,\n preview: { ...state.preview, theme: action.theme },\n };\n\n // Control actions\n case 'RESET':\n return DEFAULT_CONFIGURATOR_STATE;\n\n case 'LOAD_STATE':\n return action.state;\n\n default:\n return state;\n }\n}\n","import { srgbToOklch } from 'newtone';\nimport type { Srgb } from 'newtone';\n\n/**\n * Convert a traditional HSL color wheel hue (0-359) to its equivalent OKLCH hue.\n *\n * Uses the fully saturated HSL color (S=1, L=0.5) at the given hue,\n * converts to sRGB, then extracts the OKLCH hue component.\n *\n * Traditional hues: 0=red, 60=yellow, 120=green, 180=cyan, 240=blue, 300=magenta.\n */\nexport function traditionalHueToOklch(hue: number): number {\n const h = ((hue % 360) + 360) % 360;\n const x = 1 - Math.abs((h / 60) % 2 - 1);\n\n let r: number, g: number, b: number;\n if (h < 60) { r = 1; g = x; b = 0; }\n else if (h < 120) { r = x; g = 1; b = 0; }\n else if (h < 180) { r = 0; g = 1; b = x; }\n else if (h < 240) { r = 0; g = x; b = 1; }\n else if (h < 300) { r = x; g = 0; b = 1; }\n else { r = 1; g = 0; b = x; }\n\n return srgbToOklch({ r, g, b } as Srgb).h;\n}\n","import type { ConfiguratorState, SpacingPreset } from '../types';\nimport type { NewtoneThemeConfig, FontConfig } from '@newtonedev/components';\nimport type { PaletteConfig, DynamicRange, HueGrading, HueGradingEndpoint } from 'newtone';\nimport { traditionalHueToOklch } from '../hue-conversion';\n\n/**\n * Spacing preset to base pixel value mapping\n */\nconst SPACING_PRESET_TO_BASE: Record<SpacingPreset, number> = {\n xs: 6, // Extra Small: compact/dense UI\n sm: 7, // Small: tighter spacing\n md: 8, // Medium: default/balanced\n lg: 9, // Large: more spacious\n xl: 10, // Extra Large: maximum spacing\n};\n\n/**\n * Convert roundness intensity [0, 1] to radius multiplier [0, 2.0]\n */\nfunction roundnessToMultiplier(intensity: number): number {\n return intensity * 2.0; // lerp(0, 2.0, intensity)\n}\n\n/**\n * Compute typography scale from base size and ratio.\n * Uses modular scale: baseSize * ratio^n\n */\nfunction computeTypographyScale(baseSize: number, ratio: number) {\n return {\n xs: Math.round(baseSize / (ratio ** 2)),\n sm: Math.round(baseSize / ratio),\n base: baseSize,\n md: Math.round(baseSize * ratio),\n lg: Math.round(baseSize * (ratio ** 2)),\n xl: Math.round(baseSize * (ratio ** 3)),\n xxl: Math.round(baseSize * (ratio ** 4)),\n };\n}\n\n/**\n * Default font configurations using system fonts\n */\nconst DEFAULT_FONTS: { readonly mono: FontConfig; readonly display: FontConfig; readonly default: FontConfig } = {\n mono: {\n type: 'system',\n family: 'ui-monospace',\n fallback: 'SFMono-Regular, Menlo, Monaco, Consolas, monospace',\n },\n display: {\n type: 'system',\n family: 'system-ui',\n fallback: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n },\n default: {\n type: 'system',\n family: 'system-ui',\n fallback: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n },\n};\n\n/**\n * Default icon configuration using Material Symbols Rounded\n */\nconst DEFAULT_ICONS = {\n variant: 'rounded' as const, // Material Design 3 aesthetic\n weight: 400 as const, // Normal weight\n autoGrade: true, // Enable mode-aware grade\n};\n\n/**\n * Convert configurator state (traditional hues, human-readable controls)\n * to a NewtoneThemeConfig (OKLCH hues, engine-ready format).\n */\nexport function toThemeConfig(state: ConfiguratorState): NewtoneThemeConfig {\n const palettes: readonly PaletteConfig[] = state.palettes.map(p => {\n const oklchHue = traditionalHueToOklch(p.hue);\n\n const desaturation = p.desaturationStrength !== 'none'\n ? { direction: p.desaturationDirection, strength: p.desaturationStrength } as const\n : undefined;\n\n const paletteHueGrading = p.hueGradeStrength !== 'none'\n ? {\n hue: traditionalHueToOklch(p.hueGradeHue),\n strength: p.hueGradeStrength,\n direction: p.hueGradeDirection,\n } as const\n : undefined;\n\n return {\n hue: oklchHue,\n saturation: p.saturation,\n desaturation,\n paletteHueGrading,\n ...(p.keyColor !== undefined ? { keyNormalizedValue: p.keyColor } : {}),\n ...(p.keyColorDark !== undefined ? { keyNormalizedValueDark: p.keyColorDark } : {}),\n };\n });\n\n // Build global hue grading\n const light: HueGradingEndpoint | undefined = state.globalHueGrading.light.strength !== 'none'\n ? { hue: traditionalHueToOklch(state.globalHueGrading.light.hue), strength: state.globalHueGrading.light.strength }\n : undefined;\n\n const dark: HueGradingEndpoint | undefined = state.globalHueGrading.dark.strength !== 'none'\n ? { hue: traditionalHueToOklch(state.globalHueGrading.dark.hue), strength: state.globalHueGrading.dark.strength }\n : undefined;\n\n const hueGrading: HueGrading | undefined = (light || dark) ? { light, dark } : undefined;\n\n const dynamicRange: DynamicRange = {\n lightest: state.dynamicRange.lightest,\n darkest: state.dynamicRange.darkest,\n ...(hueGrading ? { hueGrading } : {}),\n };\n\n // Compute spacing base from preset (default 'md' = 8px base)\n const spacingBase = SPACING_PRESET_TO_BASE[state.spacing?.preset ?? 'md'];\n\n // Compute radius multiplier from roundness intensity slider (default 0.5 = 1.0x multiplier)\n const radiusMultiplier = roundnessToMultiplier(state.roundness?.intensity ?? 0.5);\n\n return {\n colorSystem: { dynamicRange, palettes },\n themes: {\n neutral: { paletteIndex: 0, lightModeNv: 0.95, darkModeNv: 0.1 },\n primary: { paletteIndex: 1, lightModeNv: 0.95, darkModeNv: 0.1 },\n secondary: { paletteIndex: 1, lightModeNv: 0.85, darkModeNv: 0.15 },\n strong: { paletteIndex: 0, lightModeNv: 0.1, darkModeNv: 0.95 },\n },\n elevation: {\n offsets: [-0.02, 0, 0.04] as const,\n },\n spacing: {\n '00': Math.round(spacingBase * 0), // Always 0\n '02': Math.round(spacingBase * 0.25),\n '04': Math.round(spacingBase * 0.5),\n '06': Math.round(spacingBase * 0.75),\n '08': Math.round(spacingBase * 1), // Equals base\n '10': Math.round(spacingBase * 1.25),\n '12': Math.round(spacingBase * 1.5),\n '16': Math.round(spacingBase * 2),\n '20': Math.round(spacingBase * 2.5),\n '24': Math.round(spacingBase * 3),\n '32': Math.round(spacingBase * 4),\n '40': Math.round(spacingBase * 5),\n '48': Math.round(spacingBase * 6),\n },\n radius: {\n none: 0,\n sm: Math.round(4 * radiusMultiplier),\n md: Math.round(6 * radiusMultiplier),\n lg: Math.round(8 * radiusMultiplier),\n xl: Math.round(12 * radiusMultiplier),\n pill: 999,\n },\n typography: {\n fonts: state.typography?.fonts ?? DEFAULT_FONTS,\n scale: computeTypographyScale(\n state.typography?.scale.baseSize ?? 16,\n state.typography?.scale.ratio ?? 1.25\n ),\n lineHeight: { tight: 1.25, normal: 1.5, relaxed: 1.75 },\n fontWeight: { regular: 400, medium: 500, semibold: 600, bold: 700 },\n },\n icons: state.icons ?? DEFAULT_ICONS,\n };\n}\n","import { useReducer, useCallback, useMemo } from 'react';\nimport type { ConfiguratorState } from '../types';\nimport type { ConfiguratorAction } from '../state/actions';\nimport type { NewtoneThemeConfig } from '@newtonedev/components';\nimport { configuratorReducer } from '../state/reducer';\nimport { DEFAULT_CONFIGURATOR_STATE } from '../state/defaults';\nimport { toThemeConfig } from '../bridge/toThemeConfig';\n\nexport interface UseConfiguratorResult {\n readonly state: ConfiguratorState;\n readonly dispatch: (action: ConfiguratorAction) => void;\n readonly themeConfig: NewtoneThemeConfig;\n readonly reset: () => void;\n}\n\nexport function useConfigurator(\n initialState?: Partial<ConfiguratorState>,\n): UseConfiguratorResult {\n const mergedInitial: ConfiguratorState = initialState\n ? { ...DEFAULT_CONFIGURATOR_STATE, ...initialState }\n : DEFAULT_CONFIGURATOR_STATE;\n\n const [state, dispatch] = useReducer(configuratorReducer, mergedInitial);\n\n const themeConfig = useMemo(() => toThemeConfig(state), [state]);\n\n const reset = useCallback(() => dispatch({ type: 'RESET' }), []);\n\n return { state, dispatch, themeConfig, reset };\n}\n","import { useMemo } from 'react';\nimport { generatePreview } from 'newtone';\nimport type { ColorResult, DynamicRange } from 'newtone';\nimport type { ConfiguratorState } from '../types';\nimport { traditionalHueToOklch } from '../hue-conversion';\n\nconst PREVIEW_STEPS = 26;\n\n/**\n * Compute preview swatches for all palettes.\n * Returns an array of arrays: one preview row per palette.\n */\nexport function usePreviewColors(state: ConfiguratorState): readonly (readonly ColorResult[])[] {\n return useMemo(() => {\n const light = state.globalHueGrading.light.strength !== 'none'\n ? { hue: traditionalHueToOklch(state.globalHueGrading.light.hue), strength: state.globalHueGrading.light.strength }\n : undefined;\n const dark = state.globalHueGrading.dark.strength !== 'none'\n ? { hue: traditionalHueToOklch(state.globalHueGrading.dark.hue), strength: state.globalHueGrading.dark.strength }\n : undefined;\n const hueGrading = (light || dark) ? { light, dark } : undefined;\n\n const dynamicRange: DynamicRange = {\n lightest: state.dynamicRange.lightest,\n darkest: state.dynamicRange.darkest,\n ...(hueGrading ? { hueGrading } : {}),\n };\n\n return state.palettes.map(p => {\n const oklchHue = traditionalHueToOklch(p.hue);\n const desat = p.desaturationStrength !== 'none'\n ? { direction: p.desaturationDirection, strength: p.desaturationStrength } as const\n : undefined;\n const phg = p.hueGradeStrength !== 'none'\n ? { hue: traditionalHueToOklch(p.hueGradeHue), strength: p.hueGradeStrength, direction: p.hueGradeDirection } as const\n : undefined;\n return generatePreview(oklchHue, p.saturation, dynamicRange, PREVIEW_STEPS, desat, phg);\n });\n }, [state]);\n}\n","/**\n * Hue ranges for semantic palettes (traditional HSL hues).\n * Indices 0 (Neutral) and 1 (Accent) are unconstrained.\n *\n * For wrapping ranges (e.g. Error crosses 0°), max exceeds 359.\n * The HueSlider component normalizes values to [0, 359] via % 360.\n *\n * Gaps between ranges prevent adjacent semantics from overlapping:\n * - 15–25: gap between Error (reds) and Warning (yellows)\n * - 55–80: gap between Warning and Success (greens)\n */\nexport const SEMANTIC_HUE_RANGES: Readonly<Record<number, { readonly min: number; readonly max: number }>> = {\n 2: { min: 80, max: 160 }, // Success (greens)\n 3: { min: 25, max: 55 }, // Warning (yellow/orange)\n 4: { min: 345, max: 375 }, // Error (reds, wraps 0°)\n};\n","import { useMemo } from 'react';\nimport {\n getColor,\n getColorByContrast,\n getWcagContrastRatio,\n lightnessToNormalizedValue,\n} from 'newtone';\nimport type { DynamicRange } from 'newtone';\nimport type { ConfiguratorState } from '../types';\nimport { traditionalHueToOklch } from '../hue-conversion';\n\nexport interface WcagValidation {\n /** WCAG contrast ratio at the key color position (null if no keyColor set) */\n readonly keyColorContrast: number | null;\n /** Whether the key color passes WCAG AA for normal text (>= 4.5:1) */\n readonly passesAA: boolean;\n /** Whether the key color passes WCAG AA for large text (>= 3:1) */\n readonly passesAALargeText: boolean;\n /** The normalizedValue where auto contrast search would place the key color */\n readonly autoNormalizedValue: number;\n}\n\n/**\n * Compute WCAG validation info for a non-neutral palette's key color.\n *\n * Validates the palette's key color against the neutral background\n * in the current preview mode. Also computes where the auto contrast\n * search would place the key color (for showing the default position).\n */\nexport function useWcagValidation(\n state: ConfiguratorState,\n paletteIndex: number,\n): WcagValidation {\n return useMemo(() => {\n const palette = state.palettes[paletteIndex];\n const neutral = state.palettes[0];\n if (!palette || !neutral) {\n return { keyColorContrast: null, passesAA: true, passesAALargeText: true, autoNormalizedValue: 0.5 };\n }\n\n const mode = state.preview.mode;\n\n // Build dynamic range with global hue grading\n const light = state.globalHueGrading.light.strength !== 'none'\n ? { hue: traditionalHueToOklch(state.globalHueGrading.light.hue), strength: state.globalHueGrading.light.strength }\n : undefined;\n const dark = state.globalHueGrading.dark.strength !== 'none'\n ? { hue: traditionalHueToOklch(state.globalHueGrading.dark.hue), strength: state.globalHueGrading.dark.strength }\n : undefined;\n const hueGrading = (light || dark) ? { light, dark } : undefined;\n\n const dynamicRange: DynamicRange = {\n lightest: state.dynamicRange.lightest,\n darkest: state.dynamicRange.darkest,\n ...(hueGrading ? { hueGrading } : {}),\n };\n\n // Compute neutral background for the current preview mode\n const neutralOklchHue = traditionalHueToOklch(neutral.hue);\n const neutralDesat = neutral.desaturationStrength !== 'none'\n ? { direction: neutral.desaturationDirection, strength: neutral.desaturationStrength } as const\n : undefined;\n const neutralPhg = neutral.hueGradeStrength !== 'none'\n ? { hue: traditionalHueToOklch(neutral.hueGradeHue), strength: neutral.hueGradeStrength, direction: neutral.hueGradeDirection } as const\n : undefined;\n\n const backgroundNv = mode === 'light' ? 0.95 : 0.1;\n const background = getColor(neutralOklchHue, neutral.saturation, dynamicRange, backgroundNv, neutralDesat, neutralPhg);\n\n // Build palette engine params\n const paletteOklchHue = traditionalHueToOklch(palette.hue);\n const effectiveTextMode = mode === 'light' ? 'light' as const : 'dark' as const;\n const paletteDesat = palette.desaturationStrength !== 'none'\n ? { direction: palette.desaturationDirection, strength: palette.desaturationStrength } as const\n : undefined;\n const palettePhg = palette.hueGradeStrength !== 'none'\n ? { hue: traditionalHueToOklch(palette.hueGradeHue), strength: palette.hueGradeStrength, direction: palette.hueGradeDirection } as const\n : undefined;\n\n // Compute auto position: where contrast search would place the key color\n const autoColor = getColorByContrast(\n paletteOklchHue, palette.saturation, dynamicRange,\n 4.5, effectiveTextMode, paletteDesat, palettePhg, background,\n );\n const autoNormalizedValue = lightnessToNormalizedValue(dynamicRange, autoColor.oklch.L);\n\n // Resolve per-mode key color: light mode uses keyColor, dark uses keyColorDark\n const effectiveKeyColor = mode === 'dark' ? palette.keyColorDark : palette.keyColor;\n\n // If no key color set for this mode, everything passes (auto is always WCAG-compliant)\n if (effectiveKeyColor === undefined) {\n return { keyColorContrast: null, passesAA: true, passesAALargeText: true, autoNormalizedValue };\n }\n\n // Compute the actual color at the user-chosen key position for this mode\n const keyColor = getColor(\n paletteOklchHue, palette.saturation, dynamicRange,\n effectiveKeyColor, paletteDesat, palettePhg,\n );\n\n // Compute WCAG contrast against the neutral background\n const contrast = getWcagContrastRatio(keyColor.srgb, background.srgb);\n\n return {\n keyColorContrast: contrast,\n passesAA: contrast >= 4.5,\n passesAALargeText: contrast >= 3.0,\n autoNormalizedValue,\n };\n }, [state, paletteIndex]);\n}\n","import {\n hexToSrgb,\n srgbToOklch,\n findMaxChromaInGamut,\n lightnessToNormalizedValue,\n} from 'newtone';\nimport type { DynamicRange } from 'newtone';\nimport { traditionalHueToOklch } from './hue-conversion';\n\n/** Result of decomposing a hex color into palette parameters */\nexport interface HexPaletteParams {\n /** Traditional HSL hue [0, 359] */\n readonly hue: number;\n /** Saturation as % of max in-gamut chroma [0, 100] */\n readonly saturation: number;\n /** Position on the luminosity scale [0, 1] */\n readonly normalizedValue: number;\n}\n\n// Achromatic threshold — below this chroma, the color has no meaningful hue\nconst ACHROMATIC_THRESHOLD = 0.005;\n\n// Lookup table for OKLCH hue → traditional hue (built once, lazily)\nlet traditionalHueLut: readonly number[] | null = null;\n\nfunction buildTraditionalHueLut(): readonly number[] {\n const lut: number[] = new Array(360);\n for (let h = 0; h < 360; h++) {\n lut[h] = traditionalHueToOklch(h);\n }\n return lut;\n}\n\n/**\n * Convert an OKLCH hue back to the nearest traditional HSL hue.\n * Uses a precomputed lookup table with 1° resolution.\n */\nexport function oklchHueToTraditional(oklchHue: number): number {\n if (!traditionalHueLut) {\n traditionalHueLut = buildTraditionalHueLut();\n }\n\n const target = ((oklchHue % 360) + 360) % 360;\n let bestHue = 0;\n let bestDelta = Infinity;\n\n for (let h = 0; h < 360; h++) {\n // Shortest angular distance\n const raw = Math.abs(traditionalHueLut[h] - target);\n const delta = Math.min(raw, 360 - raw);\n if (delta < bestDelta) {\n bestDelta = delta;\n bestHue = h;\n }\n }\n\n return bestHue;\n}\n\n/**\n * Decompose a hex color string into palette parameters (hue, saturation, luminosity).\n *\n * Returns null if the hex string is invalid.\n *\n * @param hex - Hex color string (e.g., \"#FF0000\", \"#f00\", \"FF0000\")\n * @param dynamicRange - Current dynamic range for normalizedValue mapping\n */\nexport function hexToPaletteParams(\n hex: string,\n dynamicRange: DynamicRange,\n): HexPaletteParams | null {\n // Validate hex format\n const cleaned = hex.startsWith('#') ? hex.slice(1) : hex;\n if (!/^[0-9a-fA-F]{3}$/.test(cleaned) && !/^[0-9a-fA-F]{6}$/.test(cleaned)) {\n return null;\n }\n\n const srgb = hexToSrgb(hex);\n const oklch = srgbToOklch(srgb);\n\n // Map OKLCH lightness to normalizedValue within the dynamic range\n const normalizedValue = lightnessToNormalizedValue(dynamicRange, oklch.L);\n\n // Achromatic case: no meaningful hue\n if (oklch.C < ACHROMATIC_THRESHOLD) {\n return { hue: 0, saturation: 0, normalizedValue };\n }\n\n // Reverse-map OKLCH hue to traditional hue\n const hue = oklchHueToTraditional(oklch.h);\n\n // Compute saturation as percentage of max available chroma at this L and h\n const maxChroma = findMaxChromaInGamut(oklch.L, oklch.h);\n const saturation = maxChroma > 0\n ? Math.min(100, Math.round(oklch.C / maxChroma * 100))\n : 0;\n\n return { hue, saturation, normalizedValue };\n}\n","import React from 'react';\nimport { View, Text, Pressable, StyleSheet } from 'react-native';\nimport { Card, HueSlider, Slider, Select, Toggle, ColorScaleSlider, TextInput, useTokens } from '@newtonedev/components';\nimport { srgbToHex } from 'newtone';\nimport type { ColorResult, DynamicRange } from 'newtone';\nimport type { ConfiguratorState, PaletteState } from '../types';\nimport type { ConfiguratorAction } from '../state/actions';\nimport type { DesaturationStrength, HueGradingStrength } from 'newtone';\nimport { SEMANTIC_HUE_RANGES } from '../constants';\nimport { useWcagValidation } from '../hooks/useWcagValidation';\nimport { hexToPaletteParams } from '../hex-conversion';\nimport { traditionalHueToOklch } from '../hue-conversion';\n\nconst STRENGTH_OPTIONS = [\n { label: 'None', value: 'none' },\n { label: 'Low', value: 'low' },\n { label: 'Medium', value: 'medium' },\n { label: 'Hard', value: 'hard' },\n];\n\ninterface PalettePanelProps {\n readonly palette: PaletteState;\n readonly index: number;\n readonly dispatch: (action: ConfiguratorAction) => void;\n readonly previewColors?: readonly ColorResult[];\n readonly state: ConfiguratorState;\n}\n\n/** Get the hex color at a normalizedValue from the preview colors array */\nfunction getHexAtNv(previewColors: readonly ColorResult[], nv: number): string {\n const idx = Math.round((1 - nv) * (previewColors.length - 1));\n const clamped = Math.max(0, Math.min(previewColors.length - 1, idx));\n return srgbToHex(previewColors[clamped].srgb);\n}\n\nexport function PalettePanel({ palette, index, dispatch, previewColors, state }: PalettePanelProps) {\n const tokens = useTokens(1);\n const hueRange = SEMANTIC_HUE_RANGES[index];\n const isNeutral = index === 0;\n const mode = state.preview.mode;\n\n // Resolve per-mode key color\n const effectiveKeyColor = mode === 'dark' ? palette.keyColorDark : palette.keyColor;\n\n // Mode-aware action types\n const setKeyColorAction = mode === 'dark' ? 'SET_PALETTE_KEY_COLOR_DARK' as const : 'SET_PALETTE_KEY_COLOR' as const;\n const clearKeyColorAction = mode === 'dark' ? 'CLEAR_PALETTE_KEY_COLOR_DARK' as const : 'CLEAR_PALETTE_KEY_COLOR' as const;\n const hexActionType = mode === 'dark' ? 'SET_PALETTE_FROM_HEX_DARK' as const : 'SET_PALETTE_FROM_HEX' as const;\n\n // WCAG validation for non-neutral palettes (already mode-aware)\n const wcag = useWcagValidation(state, index);\n\n // Hex input state\n const [hexText, setHexText] = React.useState('');\n const [hexError, setHexError] = React.useState('');\n const [isEditingHex, setIsEditingHex] = React.useState(false);\n const [isHexUserSet, setIsHexUserSet] = React.useState(false);\n\n // Reset hex input state when mode changes\n React.useEffect(() => {\n setHexText('');\n setHexError('');\n setIsEditingHex(false);\n setIsHexUserSet(false);\n }, [mode]);\n\n // Compute displayed hex from current key color position\n const displayedHex = React.useMemo(() => {\n if (!previewColors || previewColors.length === 0) return '';\n const nv = effectiveKeyColor ?? wcag.autoNormalizedValue;\n return getHexAtNv(previewColors, nv);\n }, [previewColors, effectiveKeyColor, wcag.autoNormalizedValue]);\n\n // Sync hex text when not actively editing and not user-submitted\n React.useEffect(() => {\n if (!isEditingHex && !isHexUserSet) {\n setHexText(displayedHex);\n }\n }, [displayedHex, isEditingHex, isHexUserSet]);\n\n // Build dynamic range for hex conversion\n const dynamicRange = React.useMemo((): DynamicRange => {\n const light = state.globalHueGrading.light.strength !== 'none'\n ? { hue: traditionalHueToOklch(state.globalHueGrading.light.hue), strength: state.globalHueGrading.light.strength }\n : undefined;\n const dark = state.globalHueGrading.dark.strength !== 'none'\n ? { hue: traditionalHueToOklch(state.globalHueGrading.dark.hue), strength: state.globalHueGrading.dark.strength }\n : undefined;\n const hueGrading = (light || dark) ? { light, dark } : undefined;\n return {\n lightest: state.dynamicRange.lightest,\n darkest: state.dynamicRange.darkest,\n ...(hueGrading ? { hueGrading } : {}),\n };\n }, [state.dynamicRange, state.globalHueGrading]);\n\n const handleHexSubmit = React.useCallback(() => {\n setIsEditingHex(false);\n const trimmed = hexText.trim();\n if (!trimmed) {\n setHexError('');\n return;\n }\n\n const hex = trimmed.startsWith('#') ? trimmed : `#${trimmed}`;\n const params = hexToPaletteParams(hex, dynamicRange);\n\n if (!params) {\n setHexError('Invalid hex color');\n return;\n }\n\n setHexError('');\n setIsHexUserSet(true);\n dispatch({\n type: hexActionType,\n index,\n hue: params.hue,\n saturation: params.saturation,\n keyColor: params.normalizedValue,\n });\n }, [hexText, dynamicRange, dispatch, index, hexActionType]);\n\n const handleClearKeyColor = React.useCallback(() => {\n dispatch({ type: clearKeyColorAction, index });\n setHexError('');\n setIsHexUserSet(false);\n }, [dispatch, index, clearKeyColorAction]);\n\n // Build WCAG warning message\n const wcagWarning = React.useMemo(() => {\n if (effectiveKeyColor === undefined || wcag.keyColorContrast === null) return undefined;\n if (wcag.passesAA) return undefined;\n const ratio = wcag.keyColorContrast.toFixed(1);\n if (wcag.passesAALargeText) {\n return `Contrast ${ratio}:1 — passes large text (AA) but fails normal text (requires 4.5:1)`;\n }\n return `Contrast ${ratio}:1 — fails WCAG AA (requires 4.5:1 for normal text, 3:1 for large text)`;\n }, [effectiveKeyColor, wcag]);\n\n return (\n <Card elevation={1} style={styles.container}>\n <Text style={[styles.title, { color: srgbToHex(tokens.textPrimary.srgb) }]}>\n {palette.name}\n </Text>\n\n {/* Non-neutral: interactive luminosity slider + hex input */}\n {!isNeutral && previewColors && (\n <>\n <ColorScaleSlider\n colors={previewColors}\n value={effectiveKeyColor ?? wcag.autoNormalizedValue}\n onValueChange={(nv) => { setIsHexUserSet(false); dispatch({ type: setKeyColorAction, index, normalizedValue: nv }); }}\n label=\"Key Color\"\n warning={wcagWarning}\n trimEnds\n snap\n animateValue\n />\n <View style={styles.hexRow}>\n <View style={styles.hexInputContainer}>\n <TextInput\n label=\"Hex\"\n value={hexText}\n onChangeText={(text) => {\n setIsEditingHex(true);\n setHexText(text);\n setHexError('');\n }}\n onBlur={handleHexSubmit}\n onSubmitEditing={handleHexSubmit}\n placeholder=\"#000000\"\n />\n </View>\n {effectiveKeyColor !== undefined && (\n <Pressable onPress={handleClearKeyColor} style={styles.autoButton}>\n <Text style={[styles.autoText, { color: srgbToHex(tokens.interactive.srgb) }]}>\n Auto\n </Text>\n </Pressable>\n )}\n </View>\n {hexError !== '' && (\n <Text style={[styles.errorText, { color: srgbToHex(tokens.error.srgb) }]}>\n {hexError}\n </Text>\n )}\n </>\n )}\n\n {/* Neutral: static swatches (unchanged) */}\n {isNeutral && previewColors && (\n <View style={styles.inlineSwatches}>\n {previewColors.map((color, i) => (\n <View\n key={i}\n style={[styles.inlineSwatch, { backgroundColor: srgbToHex(color.srgb) }]}\n />\n ))}\n </View>\n )}\n\n <HueSlider\n value={palette.hue}\n onValueChange={(hue) => dispatch({ type: 'SET_PALETTE_HUE', index, hue })}\n label=\"Hue\"\n showValue\n {...(hueRange ? { min: hueRange.min, max: hueRange.max } : {})}\n />\n\n <Slider\n value={palette.saturation}\n onValueChange={(saturation) => dispatch({ type: 'SET_PALETTE_SATURATION', index, saturation })}\n min={0}\n max={100}\n label=\"Saturation\"\n showValue\n />\n\n <View style={styles.row}>\n <View style={styles.flex}>\n <Select\n options={STRENGTH_OPTIONS}\n value={palette.desaturationStrength}\n onValueChange={(strength) => dispatch({ type: 'SET_PALETTE_DESAT_STRENGTH', index, strength: strength as DesaturationStrength })}\n label=\"Desaturation\"\n />\n </View>\n {palette.desaturationStrength !== 'none' && (\n <View style={styles.toggleContainer}>\n <Toggle\n value={palette.desaturationDirection === 'dark'}\n onValueChange={(v) => dispatch({ type: 'SET_PALETTE_DESAT_DIRECTION', index, direction: v ? 'dark' : 'light' })}\n label=\"Invert\"\n />\n </View>\n )}\n </View>\n\n <View style={styles.row}>\n <View style={styles.flex}>\n <Select\n options={STRENGTH_OPTIONS}\n value={palette.hueGradeStrength}\n onValueChange={(strength) => dispatch({ type: 'SET_PALETTE_HUE_GRADE_STRENGTH', index, strength: strength as HueGradingStrength })}\n label=\"Hue Grading\"\n />\n </View>\n {palette.hueGradeStrength !== 'none' && (\n <View style={styles.toggleContainer}>\n <Toggle\n value={palette.hueGradeDirection === 'dark'}\n onValueChange={(v) => dispatch({ type: 'SET_PALETTE_HUE_GRADE_DIRECTION', index, direction: v ? 'dark' : 'light' })}\n label=\"Invert\"\n />\n </View>\n )}\n </View>\n\n {palette.hueGradeStrength !== 'none' && (\n <HueSlider\n value={palette.hueGradeHue}\n onValueChange={(hue) => dispatch({ type: 'SET_PALETTE_HUE_GRADE_HUE', index, hue })}\n label=\"Grade Target\"\n showValue\n />\n )}\n </Card>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n gap: 12,\n marginBottom: 12,\n },\n title: {\n fontSize: 16,\n fontWeight: '700',\n },\n inlineSwatches: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 1,\n },\n inlineSwatch: {\n width: 20,\n height: 16,\n borderRadius: 2,\n },\n row: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n gap: 12,\n },\n flex: {\n flex: 1,\n },\n toggleContainer: {\n paddingBottom: 2,\n },\n hexRow: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n gap: 8,\n },\n hexInputContainer: {\n flex: 1,\n },\n autoButton: {\n paddingBottom: 6,\n },\n autoText: {\n fontSize: 13,\n fontWeight: '600',\n },\n errorText: {\n fontSize: 12,\n fontWeight: '500',\n },\n});\n","import React from 'react';\nimport { View, Text, StyleSheet } from 'react-native';\nimport { Card, Slider, Select, HueSlider, useTokens } from '@newtonedev/components';\nimport { srgbToHex } from 'newtone';\nimport type { ConfiguratorState } from '../types';\nimport type { ConfiguratorAction } from '../state/actions';\nimport type { HueGradingStrength } from 'newtone';\n\nconst STRENGTH_OPTIONS = [\n { label: 'None', value: 'none' },\n { label: 'Low', value: 'low' },\n { label: 'Medium', value: 'medium' },\n { label: 'Hard', value: 'hard' },\n];\n\ninterface GlobalPanelProps {\n readonly state: ConfiguratorState;\n readonly dispatch: (action: ConfiguratorAction) => void;\n}\n\nexport function GlobalPanel({ state, dispatch }: GlobalPanelProps) {\n const tokens = useTokens(1);\n\n return (\n <Card elevation={1} style={styles.container}>\n <Text style={[styles.title, { color: srgbToHex(tokens.textPrimary.srgb) }]}>\n Dynamic Range\n </Text>\n\n <View style={styles.row}>\n <View style={styles.flex}>\n <Slider\n value={Math.round(state.dynamicRange.lightest * 100)}\n onValueChange={(v) => dispatch({ type: 'SET_LIGHTEST', value: v / 100 })}\n min={0}\n max={100}\n label=\"Lightest\"\n showValue\n />\n </View>\n <View style={styles.flex}>\n <Slider\n value={Math.round(state.dynamicRange.darkest * 100)}\n onValueChange={(v) => dispatch({ type: 'SET_DARKEST', value: v / 100 })}\n min={0}\n max={100}\n label=\"Darkest\"\n showValue\n />\n </View>\n </View>\n\n <Text style={[styles.subtitle, { color: srgbToHex(tokens.textSecondary.srgb) }]}>\n Global Hue Grading — Light End\n </Text>\n\n <View style={styles.row}>\n <View style={styles.flex}>\n <Select\n options={STRENGTH_OPTIONS}\n value={state.globalHueGrading.light.strength}\n onValueChange={(s) => dispatch({ type: 'SET_GLOBAL_GRADE_LIGHT_STRENGTH', strength: s as HueGradingStrength })}\n label=\"Strength\"\n />\n </View>\n {state.globalHueGrading.light.strength !== 'none' && (\n <View style={styles.flex}>\n <HueSlider\n value={state.globalHueGrading.light.hue}\n onValueChange={(hue) => dispatch({ type: 'SET_GLOBAL_GRADE_LIGHT_HUE', hue })}\n label=\"Target Hue\"\n showValue\n />\n </View>\n )}\n </View>\n\n <Text style={[styles.subtitle, { color: srgbToHex(tokens.textSecondary.srgb) }]}>\n Global Hue Grading — Dark End\n </Text>\n\n <View style={styles.row}>\n <View style={styles.flex}>\n <Select\n options={STRENGTH_OPTIONS}\n value={state.globalHueGrading.dark.strength}\n onValueChange={(s) => dispatch({ type: 'SET_GLOBAL_GRADE_DARK_STRENGTH', strength: s as HueGradingStrength })}\n label=\"Strength\"\n />\n </View>\n {state.globalHueGrading.dark.strength !== 'none' && (\n <View style={styles.flex}>\n <HueSlider\n value={state.globalHueGrading.dark.hue}\n onValueChange={(hue) => dispatch({ type: 'SET_GLOBAL_GRADE_DARK_HUE', hue })}\n label=\"Target Hue\"\n showValue\n />\n </View>\n )}\n </View>\n </Card>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n gap: 12,\n },\n title: {\n fontSize: 16,\n fontWeight: '700',\n },\n subtitle: {\n fontSize: 13,\n fontWeight: '600',\n marginTop: 4,\n },\n row: {\n flexDirection: 'row',\n gap: 12,\n },\n flex: {\n flex: 1,\n },\n});\n","import React from 'react';\nimport { View, Text, StyleSheet } from 'react-native';\nimport {\n Card,\n Button,\n TextInput,\n Select,\n NewtoneProvider,\n useTokens,\n} from '@newtonedev/components';\nimport { srgbToHex } from 'newtone';\nimport type { ConfiguratorState } from '../types';\nimport type { ConfiguratorAction } from '../state/actions';\nimport type { ThemeName, NewtoneThemeConfig } from '@newtonedev/components';\n\nconst THEME_OPTIONS = [\n { label: 'Neutral', value: 'neutral' },\n { label: 'Primary', value: 'primary' },\n { label: 'Secondary', value: 'secondary' },\n { label: 'Strong', value: 'strong' },\n];\n\ninterface PreviewPanelProps {\n readonly state: ConfiguratorState;\n readonly dispatch: (action: ConfiguratorAction) => void;\n readonly themeConfig: NewtoneThemeConfig;\n}\n\n/** Inner card that reads tokens from the nested provider, so its background reflects the selected theme. */\nfunction PreviewCard({\n state,\n dispatch,\n}: {\n readonly state: ConfiguratorState;\n readonly dispatch: (action: ConfiguratorAction) => void;\n}) {\n const tokens = useTokens(1);\n\n return (\n <Card elevation={1} style={styles.container}>\n <Text style={[styles.title, { color: srgbToHex(tokens.textPrimary.srgb) }]}>\n Component Preview\n </Text>\n\n <View style={styles.controls}>\n <Select\n options={THEME_OPTIONS}\n value={state.preview.theme}\n onValueChange={(t) => dispatch({ type: 'SET_PREVIEW_THEME', theme: t as ThemeName })}\n label=\"Theme\"\n />\n </View>\n\n <View style={previewStyles.wrapper}>\n <View style={previewStyles.row}>\n <Button variant=\"primary\" semantic=\"accent\" size=\"sm\">Primary</Button>\n <Button variant=\"primary\" semantic=\"neutral\" size=\"sm\">Secondary</Button>\n <Button variant=\"tertiary\" semantic=\"neutral\" size=\"sm\">Ghost</Button>\n <Button variant=\"secondary\" semantic=\"neutral\" size=\"sm\">Outline</Button>\n </View>\n\n <TextInput label=\"Sample Input\" value=\"Hello, Newtone\" onChangeText={() => {}} />\n\n <View style={previewStyles.row}>\n <View style={[previewStyles.statusDot, { backgroundColor: srgbToHex(tokens.success.srgb) }]} />\n <Text style={[previewStyles.statusText, { color: srgbToHex(tokens.textPrimary.srgb) }]}>Success</Text>\n <View style={[previewStyles.statusDot, { backgroundColor: srgbToHex(tokens.warning.srgb) }]} />\n <Text style={[previewStyles.statusText, { color: srgbToHex(tokens.textPrimary.srgb) }]}>Warning</Text>\n <View style={[previewStyles.statusDot, { backgroundColor: srgbToHex(tokens.error.srgb) }]} />\n <Text style={[previewStyles.statusText, { color: srgbToHex(tokens.textPrimary.srgb) }]}>Error</Text>\n </View>\n </View>\n </Card>\n );\n}\n\nexport function PreviewPanel({ state, dispatch, themeConfig }: PreviewPanelProps) {\n return (\n <NewtoneProvider\n key={`${state.preview.mode}-${state.preview.theme}`}\n config={themeConfig}\n initialMode={state.preview.mode}\n initialTheme={state.preview.theme}\n >\n <PreviewCard state={state} dispatch={dispatch} />\n </NewtoneProvider>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n gap: 12,\n },\n title: {\n fontSize: 16,\n fontWeight: '700',\n },\n controls: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n gap: 16,\n },\n});\n\nconst previewStyles = StyleSheet.create({\n wrapper: {\n gap: 12,\n },\n row: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n flexWrap: 'wrap',\n },\n statusDot: {\n width: 12,\n height: 12,\n borderRadius: 6,\n },\n statusText: {\n fontSize: 13,\n marginRight: 8,\n },\n});\n","import type { ConfiguratorState } from '../types';\nimport type { ColorMode } from '@newtonedev/components';\nimport { computeTokens } from '@newtonedev/components';\nimport { srgbToHex } from 'newtone';\nimport { toThemeConfig } from './toThemeConfig';\n\n/**\n * Generate CSS custom properties for both light and dark modes.\n * Computes all 12 design tokens for the neutral theme at default elevation.\n */\nexport function toCSS(state: ConfiguratorState): string {\n const config = toThemeConfig(state);\n const modes: readonly ColorMode[] = ['light', 'dark'];\n\n let css = '';\n for (const mode of modes) {\n const tokens = computeTokens(\n config.colorSystem,\n mode,\n config.themes.neutral,\n 1,\n config.elevation.offsets,\n config.spacing,\n config.radius,\n config.typography,\n config.icons\n );\n\n const selector = mode === 'light' ? ':root' : '[data-theme=\"dark\"]';\n css += `${selector} {\\n`;\n css += ` --newtone-background: ${srgbToHex(tokens.background.srgb)};\\n`;\n css += ` --newtone-background-elevated: ${srgbToHex(tokens.backgroundElevated.srgb)};\\n`;\n css += ` --newtone-background-sunken: ${srgbToHex(tokens.backgroundSunken.srgb)};\\n`;\n css += ` --newtone-text-primary: ${srgbToHex(tokens.textPrimary.srgb)};\\n`;\n css += ` --newtone-text-secondary: ${srgbToHex(tokens.textSecondary.srgb)};\\n`;\n css += ` --newtone-interactive: ${srgbToHex(tokens.interactive.srgb)};\\n`;\n css += ` --newtone-interactive-hover: ${srgbToHex(tokens.interactiveHover.srgb)};\\n`;\n css += ` --newtone-interactive-active: ${srgbToHex(tokens.interactiveActive.srgb)};\\n`;\n css += ` --newtone-border: ${srgbToHex(tokens.border.srgb)};\\n`;\n css += ` --newtone-success: ${srgbToHex(tokens.success.srgb)};\\n`;\n css += ` --newtone-warning: ${srgbToHex(tokens.warning.srgb)};\\n`;\n css += ` --newtone-error: ${srgbToHex(tokens.error.srgb)};\\n`;\n css += `}\\n\\n`;\n }\n\n return css;\n}\n","import type { ConfiguratorState } from '../types';\nimport type { NewtoneThemeConfig } from '@newtonedev/components';\nimport { toThemeConfig } from './toThemeConfig';\n\n/** Serializable configurator export format */\nexport interface ConfiguratorExport {\n readonly version: '1.0';\n readonly configuratorState: ConfiguratorState;\n readonly themeConfig: NewtoneThemeConfig;\n}\n\n/**\n * Export the configurator state as a JSON string.\n * Includes both the human-readable state (for round-tripping)\n * and the engine-ready theme config.\n */\nexport function toJSON(state: ConfiguratorState): string {\n const output: ConfiguratorExport = {\n version: '1.0',\n configuratorState: state,\n themeConfig: toThemeConfig(state),\n };\n return JSON.stringify(output, null, 2);\n}\n","import React, { useMemo, useState, useCallback } from 'react';\nimport { View, Text, StyleSheet } from 'react-native';\nimport { Card, Button, useTokens } from '@newtonedev/components';\nimport { srgbToHex } from 'newtone';\nimport type { ConfiguratorState } from '../types';\nimport { toCSS } from '../bridge/toCSS';\nimport { toJSON } from '../bridge/toJSON';\n\ninterface ExportPanelProps {\n readonly state: ConfiguratorState;\n}\n\ntype ExportFormat = 'css' | 'json';\n\nexport function ExportPanel({ state }: ExportPanelProps) {\n const tokens = useTokens(1);\n const [format, setFormat] = useState<ExportFormat>('css');\n const [copied, setCopied] = useState(false);\n\n const output = useMemo(() => {\n return format === 'css' ? toCSS(state) : toJSON(state);\n }, [state, format]);\n\n const handleCopy = useCallback(() => {\n if (typeof navigator !== 'undefined' && navigator.clipboard) {\n navigator.clipboard.writeText(output).then(() => {\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n });\n }\n }, [output]);\n\n return (\n <Card elevation={1} style={styles.container}>\n <Text style={[styles.title, { color: srgbToHex(tokens.textPrimary.srgb) }]}>\n Export\n </Text>\n\n <View style={styles.tabs}>\n <Button\n variant={format === 'css' ? 'primary' : 'tertiary'}\n semantic={format === 'css' ? 'accent' : 'neutral'}\n size=\"sm\"\n onPress={() => setFormat('css')}\n >\n CSS Variables\n </Button>\n <Button\n variant={format === 'json' ? 'primary' : 'tertiary'}\n semantic={format === 'json' ? 'accent' : 'neutral'}\n size=\"sm\"\n onPress={() => setFormat('json')}\n >\n JSON\n </Button>\n <Button variant=\"secondary\" semantic=\"neutral\" size=\"sm\" onPress={handleCopy}>\n {copied ? 'Copied!' : 'Copy'}\n </Button>\n </View>\n\n <View style={[styles.codeBlock, { backgroundColor: srgbToHex(tokens.backgroundSunken.srgb) }]}>\n <Text\n style={[styles.code, { color: srgbToHex(tokens.textPrimary.srgb) }]}\n selectable\n >\n {output}\n </Text>\n </View>\n </Card>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n gap: 12,\n marginBottom: 12,\n },\n title: {\n fontSize: 16,\n fontWeight: '700',\n },\n tabs: {\n flexDirection: 'row',\n gap: 8,\n },\n codeBlock: {\n borderRadius: 6,\n padding: 12,\n maxHeight: 300,\n overflow: 'scroll' as unknown as 'visible',\n },\n code: {\n fontSize: 11,\n fontFamily: 'monospace',\n lineHeight: 16,\n },\n});\n","import React from 'react';\nimport { View, Text, StyleSheet } from 'react-native';\nimport { Card, Slider, Select, useTokens } from '@newtonedev/components';\nimport { srgbToHex } from 'newtone';\nimport type { ConfiguratorState, SpacingPreset } from '../types';\nimport type { ConfiguratorAction } from '../state/actions';\n\nconst ICON_VARIANT_OPTIONS = [\n { label: 'Outlined', value: 'outlined' },\n { label: 'Rounded', value: 'rounded' },\n { label: 'Sharp', value: 'sharp' },\n];\n\nconst ICON_WEIGHT_OPTIONS = [\n { label: '100', value: '100' },\n { label: '200', value: '200' },\n { label: '300', value: '300' },\n { label: '400', value: '400' },\n { label: '500', value: '500' },\n { label: '600', value: '600' },\n { label: '700', value: '700' },\n];\n\ninterface DesignPanelProps {\n readonly state: ConfiguratorState;\n readonly dispatch: (action: ConfiguratorAction) => void;\n}\n\nexport function DesignPanel({ state, dispatch }: DesignPanelProps) {\n const tokens = useTokens(1);\n\n const spacingPreset = state.spacing?.preset ?? 'md';\n const intensity = state.roundness?.intensity ?? 0.5;\n const baseSize = state.typography?.scale.baseSize ?? 16;\n const ratio = state.typography?.scale.ratio ?? 1.25;\n const variant = state.icons?.variant ?? 'rounded';\n const weight = state.icons?.weight ?? 400;\n return (\n <Card elevation={1} style={styles.container}>\n <Text style={[styles.title, { color: srgbToHex(tokens.textPrimary.srgb) }]}>\n Design System\n </Text>\n\n {/* Spacing Section */}\n <Text style={[styles.subtitle, { color: srgbToHex(tokens.textSecondary.srgb) }]}>\n Spacing\n </Text>\n <Select\n value={spacingPreset}\n onValueChange={(preset) => dispatch({ type: 'SET_SPACING_PRESET', preset: preset as SpacingPreset })}\n options={[\n { value: 'xs', label: 'Extra Small' },\n { value: 'sm', label: 'Small' },\n { value: 'md', label: 'Medium' },\n { value: 'lg', label: 'Large' },\n { value: 'xl', label: 'Extra Large' },\n ]}\n label=\"Preset\"\n />\n\n {/* Roundness Section */}\n <Text style={[styles.subtitle, { color: srgbToHex(tokens.textSecondary.srgb) }]}>\n Roundness\n </Text>\n <Slider\n value={Math.round(intensity * 100)}\n onValueChange={(v) => dispatch({ type: 'SET_ROUNDNESS_INTENSITY', intensity: v / 100 })}\n min={0}\n max={100}\n label=\"Intensity\"\n showValue\n />\n\n {/* Typography Section */}\n <Text style={[styles.subtitle, { color: srgbToHex(tokens.textSecondary.srgb) }]}>\n Typography\n </Text>\n <View style={styles.row}>\n <View style={styles.flex}>\n <Slider\n value={baseSize}\n onValueChange={(v) => dispatch({ type: 'SET_TYPOGRAPHY_BASE_SIZE', baseSize: v })}\n min={12}\n max={24}\n step={1}\n label=\"Base Size\"\n showValue\n />\n </View>\n <View style={styles.flex}>\n <Slider\n value={Math.round(ratio * 100)}\n onValueChange={(v) => dispatch({ type: 'SET_TYPOGRAPHY_RATIO', ratio: v / 100 })}\n min={110}\n max={150}\n step={5}\n label=\"Scale Ratio\"\n showValue\n />\n </View>\n </View>\n\n {/* Icons Section */}\n <Text style={[styles.subtitle, { color: srgbToHex(tokens.textSecondary.srgb) }]}>\n Icons\n </Text>\n <View style={styles.row}>\n <View style={styles.flex}>\n <Select\n options={ICON_VARIANT_OPTIONS}\n value={variant}\n onValueChange={(v) => dispatch({ type: 'SET_ICON_VARIANT', variant: v as 'outlined' | 'rounded' | 'sharp' })}\n label=\"Variant\"\n />\n </View>\n <View style={styles.flex}>\n <Select\n options={ICON_WEIGHT_OPTIONS}\n value={weight.toString()}\n onValueChange={(v) => dispatch({ type: 'SET_ICON_WEIGHT', weight: parseInt(v) as 100 | 200 | 300 | 400 | 500 | 600 | 700 })}\n label=\"Weight\"\n />\n </View>\n </View>\n </Card>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n gap: 12,\n },\n title: {\n fontSize: 16,\n fontWeight: '700',\n },\n subtitle: {\n fontSize: 13,\n fontWeight: '600',\n marginTop: 4,\n },\n row: {\n flexDirection: 'row',\n gap: 12,\n },\n flex: {\n flex: 1,\n },\n});\n","import React, { useEffect, useRef, useState } from 'react';\nimport { View, Text, Pressable, StyleSheet } from 'react-native';\nimport { Toggle, useTokens, useNewtoneTheme } from '@newtonedev/components';\nimport { srgbToHex } from 'newtone';\nimport type { ConfiguratorProps } from './Configurator.types';\nimport { useConfigurator } from './hooks/useConfigurator';\nimport { usePreviewColors } from './hooks/usePreviewColors';\nimport { PalettePanel } from './panels/PalettePanel';\nimport { GlobalPanel } from './panels/GlobalPanel';\nimport { PreviewPanel } from './panels/PreviewPanel';\nimport { ExportPanel } from './panels/ExportPanel';\nimport { DesignPanel } from './panels/DesignPanel';\n\n/**\n * Newtone Configurator — embeddable palette builder widget.\n *\n * Must be rendered inside a NewtoneProvider owned by the consuming app.\n * The configurator reads tokens via useTokens() for self-affecting styling.\n *\n * The consuming app should update its NewtoneProvider config prop\n * based on the onChange callback, creating the self-affecting loop.\n */\nexport function Configurator({\n initialState,\n onChange,\n showExport = true,\n showPreview = true,\n}: ConfiguratorProps) {\n const { state, dispatch, themeConfig, reset } = useConfigurator(initialState);\n const tokens = useTokens(1);\n const { setMode } = useNewtoneTheme();\n const isInitialRender = useRef(true);\n const [activePaletteIndex, setActivePaletteIndex] = useState(0);\n const previews = usePreviewColors(state);\n\n // Sync mode to parent provider on mount\n useEffect(() => {\n setMode(state.preview.mode);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Fire onChange whenever state changes (skip initial render)\n useEffect(() => {\n if (isInitialRender.current) {\n isInitialRender.current = false;\n return;\n }\n onChange?.(state, themeConfig);\n }, [state, themeConfig, onChange]);\n\n return (\n <View style={[styles.container, { backgroundColor: srgbToHex(tokens.backgroundSunken.srgb) }]}>\n {/* Mode toggle at top */}\n <View style={styles.topBar}>\n <Toggle\n value={state.preview.mode === 'dark'}\n onValueChange={(isDark) => {\n const mode = isDark ? 'dark' : 'light';\n dispatch({ type: 'SET_PREVIEW_MODE', mode });\n setMode(mode);\n }}\n label=\"Dark Mode\"\n />\n </View>\n\n {/* Dynamic Range + Component Preview side by side */}\n <View style={styles.topRow}>\n <View style={styles.topRowPanel}>\n <GlobalPanel state={state} dispatch={dispatch} />\n </View>\n {showPreview && (\n <View style={styles.topRowPanel}>\n <PreviewPanel state={state} dispatch={dispatch} themeConfig={themeConfig} />\n </View>\n )}\n </View>\n\n {/* Design System controls */}\n <View style={styles.designRow}>\n <DesignPanel state={state} dispatch={dispatch} />\n </View>\n\n {/* Palette tab bar */}\n <View style={styles.tabBar}>\n {state.palettes.map((palette, index) => (\n <Pressable\n key={index}\n onPress={() => setActivePaletteIndex(index)}\n style={[\n styles.tab,\n {\n backgroundColor: index === activePaletteIndex\n ? srgbToHex(tokens.background.srgb)\n : 'transparent',\n borderColor: index === activePaletteIndex\n ? srgbToHex(tokens.border.srgb)\n : 'transparent',\n },\n ]}\n >\n <Text style={[\n styles.tabText,\n {\n color: srgbToHex(\n index === activePaletteIndex\n ? tokens.textPrimary.srgb\n : tokens.textSecondary.srgb\n ),\n fontWeight: index === activePaletteIndex ? '700' : '500',\n },\n ]}>\n {palette.name}\n </Text>\n </Pressable>\n ))}\n </View>\n\n {/* Active palette panel with inline preview */}\n <PalettePanel\n palette={state.palettes[activePaletteIndex]}\n index={activePaletteIndex}\n dispatch={dispatch}\n previewColors={previews[activePaletteIndex]}\n state={state}\n />\n\n {showExport && <ExportPanel state={state} />}\n\n {/* Safety: hardcoded styling so this button is always readable */}\n <button\n onClick={() => reset()}\n style={{\n marginTop: 16,\n padding: '8px 16px',\n backgroundColor: '#ffffff',\n color: '#000000',\n border: '2px solid #000000',\n borderRadius: 4,\n fontWeight: 700,\n fontSize: 14,\n cursor: 'pointer',\n }}\n >\n Reset to Defaults\n </button>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: 8,\n padding: 16,\n gap: 4,\n },\n topBar: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n alignItems: 'center',\n marginBottom: 8,\n },\n topRow: {\n flexDirection: 'row',\n gap: 8,\n marginBottom: 4,\n },\n topRowPanel: {\n flex: 1,\n },\n designRow: {\n marginBottom: 4,\n },\n tabBar: {\n flexDirection: 'row',\n gap: 4,\n marginBottom: 4,\n },\n tab: {\n paddingVertical: 8,\n paddingHorizontal: 12,\n borderRadius: 6,\n borderWidth: 1,\n },\n tabText: {\n fontSize: 13,\n },\n});\n"]}
|