@newtonedev/configurator 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Configurator.d.ts +13 -0
- package/dist/Configurator.d.ts.map +1 -0
- package/dist/Configurator.types.d.ts +13 -0
- package/dist/Configurator.types.d.ts.map +1 -0
- package/dist/bridge/toCSS.d.ts +7 -0
- package/dist/bridge/toCSS.d.ts.map +1 -0
- package/dist/bridge/toJSON.d.ts +15 -0
- package/dist/bridge/toJSON.d.ts.map +1 -0
- package/dist/bridge/toThemeConfig.d.ts +8 -0
- package/dist/bridge/toThemeConfig.d.ts.map +1 -0
- package/dist/constants.d.ts +16 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/hooks/useConfigurator.d.ts +11 -0
- package/dist/hooks/useConfigurator.d.ts.map +1 -0
- package/dist/hooks/usePreviewColors.d.ts +8 -0
- package/dist/hooks/usePreviewColors.d.ts.map +1 -0
- package/dist/hue-conversion.d.ts +10 -0
- package/dist/hue-conversion.d.ts.map +1 -0
- package/dist/index.cjs +827 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +814 -0
- package/dist/index.js.map +1 -0
- package/dist/panels/CanvasPanel.d.ts +8 -0
- package/dist/panels/CanvasPanel.d.ts.map +1 -0
- package/dist/panels/ExportPanel.d.ts +8 -0
- package/dist/panels/ExportPanel.d.ts.map +1 -0
- package/dist/panels/GlobalPanel.d.ts +10 -0
- package/dist/panels/GlobalPanel.d.ts.map +1 -0
- package/dist/panels/PalettePanel.d.ts +13 -0
- package/dist/panels/PalettePanel.d.ts.map +1 -0
- package/dist/panels/PreviewPanel.d.ts +12 -0
- package/dist/panels/PreviewPanel.d.ts.map +1 -0
- package/dist/state/actions.d.ts +62 -0
- package/dist/state/actions.d.ts.map +1 -0
- package/dist/state/defaults.d.ts +9 -0
- package/dist/state/defaults.d.ts.map +1 -0
- package/dist/state/reducer.d.ts +4 -0
- package/dist/state/reducer.d.ts.map +1 -0
- package/dist/types.d.ts +35 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +56 -0
- package/src/Configurator.tsx +177 -0
- package/src/Configurator.types.ts +13 -0
- package/src/bridge/toCSS.ts +43 -0
- package/src/bridge/toJSON.ts +24 -0
- package/src/bridge/toThemeConfig.ts +58 -0
- package/src/constants.ts +16 -0
- package/src/hooks/useConfigurator.ts +30 -0
- package/src/hooks/usePreviewColors.ts +40 -0
- package/src/hue-conversion.ts +25 -0
- package/src/index.ts +24 -0
- package/src/panels/CanvasPanel.tsx +90 -0
- package/src/panels/ExportPanel.tsx +95 -0
- package/src/panels/GlobalPanel.tsx +126 -0
- package/src/panels/PalettePanel.tsx +145 -0
- package/src/panels/PreviewPanel.tsx +124 -0
- package/src/state/actions.ts +27 -0
- package/src/state/defaults.ts +74 -0
- package/src/state/reducer.ts +163 -0
- package/src/types.ts +37 -0
|
@@ -0,0 +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/panels/PalettePanel.tsx","../src/panels/GlobalPanel.tsx","../src/panels/PreviewPanel.tsx","../src/bridge/toCSS.ts","../src/bridge/toJSON.ts","../src/panels/ExportPanel.tsx","../src/Configurator.tsx"],"names":["srgbToOklch","useReducer","useMemo","useCallback","generatePreview","useTokens","React","Card","Text","srgbToHex","View","HueSlider","Slider","Select","Toggle","StyleSheet","STRENGTH_OPTIONS","styles","Button","TextInput","NewtoneProvider","computeTokens","useState","useNewtoneTheme","useRef","useEffect","Pressable"],"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};\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 // 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 // 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 } from '../types';\nimport type { NewtoneThemeConfig } from '@newtonedev/components';\nimport type { PaletteConfig, DynamicRange, HueGrading, HueGradingEndpoint } from 'newtone';\nimport { traditionalHueToOklch } from '../hue-conversion';\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 { hue: oklchHue, saturation: p.saturation, desaturation, paletteHueGrading };\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 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 };\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 React from 'react';\nimport { View, Text, StyleSheet } from 'react-native';\nimport { Card, HueSlider, Slider, Select, Toggle, useTokens } from '@newtonedev/components';\nimport { srgbToHex } from 'newtone';\nimport type { ColorResult } from 'newtone';\nimport type { PaletteState } from '../types';\nimport type { ConfiguratorAction } from '../state/actions';\nimport type { DesaturationStrength, HueGradingStrength } from 'newtone';\nimport { SEMANTIC_HUE_RANGES } from '../constants';\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}\n\nexport function PalettePanel({ palette, index, dispatch, previewColors }: PalettePanelProps) {\n const tokens = useTokens(1);\n const hueRange = SEMANTIC_HUE_RANGES[index];\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 {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});\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 );\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, { 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';\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 {/* 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 />\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 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"]}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { Configurator } from './Configurator';
|
|
2
|
+
export type { ConfiguratorProps } from './Configurator.types';
|
|
3
|
+
export type { ConfiguratorState, PaletteState, HueGradingEndpointState } from './types';
|
|
4
|
+
export type { ConfiguratorAction } from './state/actions';
|
|
5
|
+
export { toThemeConfig } from './bridge/toThemeConfig';
|
|
6
|
+
export { toCSS } from './bridge/toCSS';
|
|
7
|
+
export { toJSON } from './bridge/toJSON';
|
|
8
|
+
export type { ConfiguratorExport } from './bridge/toJSON';
|
|
9
|
+
export { traditionalHueToOklch } from './hue-conversion';
|
|
10
|
+
export { DEFAULT_CONFIGURATOR_STATE } from './state/defaults';
|
|
11
|
+
export { useConfigurator } from './hooks/useConfigurator';
|
|
12
|
+
export type { UseConfiguratorResult } from './hooks/useConfigurator';
|
|
13
|
+
export { usePreviewColors } from './hooks/usePreviewColors';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AACxF,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG1D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAGzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAG9D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,YAAY,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC"}
|