@newtonedev/editor 0.1.1
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/Editor.d.ts +3 -0
- package/dist/Editor.d.ts.map +1 -0
- package/dist/components/CodeBlock.d.ts +7 -0
- package/dist/components/CodeBlock.d.ts.map +1 -0
- package/dist/components/EditorHeader.d.ts +16 -0
- package/dist/components/EditorHeader.d.ts.map +1 -0
- package/dist/components/EditorShell.d.ts +10 -0
- package/dist/components/EditorShell.d.ts.map +1 -0
- package/dist/components/FontPicker.d.ts +11 -0
- package/dist/components/FontPicker.d.ts.map +1 -0
- package/dist/components/PresetSelector.d.ts +14 -0
- package/dist/components/PresetSelector.d.ts.map +1 -0
- package/dist/components/PreviewWindow.d.ts +11 -0
- package/dist/components/PreviewWindow.d.ts.map +1 -0
- package/dist/components/RightSidebar.d.ts +12 -0
- package/dist/components/RightSidebar.d.ts.map +1 -0
- package/dist/components/Sidebar.d.ts +25 -0
- package/dist/components/Sidebar.d.ts.map +1 -0
- package/dist/components/TableOfContents.d.ts +9 -0
- package/dist/components/TableOfContents.d.ts.map +1 -0
- package/dist/components/ThemeBar.d.ts +8 -0
- package/dist/components/ThemeBar.d.ts.map +1 -0
- package/dist/components/sections/ColorsSection.d.ts +14 -0
- package/dist/components/sections/ColorsSection.d.ts.map +1 -0
- package/dist/components/sections/DynamicRangeSection.d.ts +9 -0
- package/dist/components/sections/DynamicRangeSection.d.ts.map +1 -0
- package/dist/components/sections/FontsSection.d.ts +9 -0
- package/dist/components/sections/FontsSection.d.ts.map +1 -0
- package/dist/components/sections/IconsSection.d.ts +9 -0
- package/dist/components/sections/IconsSection.d.ts.map +1 -0
- package/dist/components/sections/OthersSection.d.ts +9 -0
- package/dist/components/sections/OthersSection.d.ts.map +1 -0
- package/dist/components/sections/index.d.ts +6 -0
- package/dist/components/sections/index.d.ts.map +1 -0
- package/dist/hooks/useEditorState.d.ts +53 -0
- package/dist/hooks/useEditorState.d.ts.map +1 -0
- package/dist/hooks/useHover.d.ts +8 -0
- package/dist/hooks/useHover.d.ts.map +1 -0
- package/dist/hooks/usePresets.d.ts +33 -0
- package/dist/hooks/usePresets.d.ts.map +1 -0
- package/dist/index.cjs +3846 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3819 -0
- package/dist/index.js.map +1 -0
- package/dist/preview/CategoryView.d.ts +7 -0
- package/dist/preview/CategoryView.d.ts.map +1 -0
- package/dist/preview/ComponentDetailView.d.ts +9 -0
- package/dist/preview/ComponentDetailView.d.ts.map +1 -0
- package/dist/preview/ComponentRenderer.d.ts +7 -0
- package/dist/preview/ComponentRenderer.d.ts.map +1 -0
- package/dist/preview/OverviewView.d.ts +7 -0
- package/dist/preview/OverviewView.d.ts.map +1 -0
- package/dist/types.d.ts +69 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/utils/presets.d.ts +5 -0
- package/dist/utils/presets.d.ts.map +1 -0
- package/package.json +51 -0
- package/src/Editor.tsx +128 -0
- package/src/components/CodeBlock.tsx +58 -0
- package/src/components/EditorHeader.tsx +86 -0
- package/src/components/EditorShell.tsx +67 -0
- package/src/components/FontPicker.tsx +351 -0
- package/src/components/PresetSelector.tsx +455 -0
- package/src/components/PreviewWindow.tsx +69 -0
- package/src/components/RightSidebar.tsx +374 -0
- package/src/components/Sidebar.tsx +332 -0
- package/src/components/TableOfContents.tsx +152 -0
- package/src/components/ThemeBar.tsx +76 -0
- package/src/components/sections/ColorsSection.tsx +485 -0
- package/src/components/sections/DynamicRangeSection.tsx +399 -0
- package/src/components/sections/FontsSection.tsx +132 -0
- package/src/components/sections/IconsSection.tsx +66 -0
- package/src/components/sections/OthersSection.tsx +70 -0
- package/src/components/sections/index.ts +5 -0
- package/src/hooks/useEditorState.ts +381 -0
- package/src/hooks/useHover.ts +8 -0
- package/src/hooks/usePresets.ts +254 -0
- package/src/index.ts +52 -0
- package/src/preview/CategoryView.tsx +134 -0
- package/src/preview/ComponentDetailView.tsx +126 -0
- package/src/preview/ComponentRenderer.tsx +107 -0
- package/src/preview/OverviewView.tsx +177 -0
- package/src/types.ts +77 -0
- package/src/utils/presets.ts +24 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/presets.ts","../src/hooks/useHover.ts","../src/hooks/usePresets.ts","../src/hooks/useEditorState.ts","../src/components/EditorShell.tsx","../src/components/sections/ColorsSection.tsx","../src/components/sections/DynamicRangeSection.tsx","../src/components/sections/IconsSection.tsx","../src/components/FontPicker.tsx","../src/components/sections/FontsSection.tsx","../src/components/sections/OthersSection.tsx","../src/components/PresetSelector.tsx","../src/components/Sidebar.tsx","../src/components/EditorHeader.tsx","../src/components/ThemeBar.tsx","../src/components/TableOfContents.tsx","../src/preview/ComponentRenderer.tsx","../src/preview/OverviewView.tsx","../src/preview/CategoryView.tsx","../src/preview/ComponentDetailView.tsx","../src/components/PreviewWindow.tsx","../src/components/CodeBlock.tsx","../src/components/RightSidebar.tsx","../src/Editor.tsx"],"names":["useState","useCallback","useRef","srgbToHex","useTokens","useEffect","useMemo","jsxs","jsx","STRENGTH_OPTIONS","Select","HueSlider","Slider","SIDEBAR_WIDTH","Toggle","TextInput","Button","CATEGORIES","getComponentsByCategory","getComponent","Fragment"],"mappings":"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","file":"index.js","sourcesContent":["import type { Preset } from \"../types\";\n\nexport function findPreset(\n presets: readonly Preset[],\n presetId: string,\n): Preset | undefined {\n return presets.find((p) => p.id === presetId);\n}\n\nexport function updatePresetInArray(\n presets: readonly Preset[],\n presetId: string,\n updater: (preset: Preset) => Preset,\n): readonly Preset[] {\n return presets.map((p) => (p.id === presetId ? updater(p) : p));\n}\n\nexport function presetHasUnpublishedChanges(preset: Preset): boolean {\n if (preset.published_state === null) return true;\n return (\n JSON.stringify(preset.draft_state) !==\n JSON.stringify(preset.published_state)\n );\n}\n","import { useState, useCallback } from \"react\";\n\nexport function useHover() {\n const [isHovered, setIsHovered] = useState(false);\n const onMouseEnter = useCallback(() => setIsHovered(true), []);\n const onMouseLeave = useCallback(() => setIsHovered(false), []);\n return { isHovered, hoverProps: { onMouseEnter, onMouseLeave } };\n}\n","import { useState, useCallback, useRef } from \"react\";\nimport type { ConfiguratorState } from \"@newtonedev/configurator\";\nimport type { Preset } from \"../types\";\n\ninterface UsePresetsOptions {\n readonly initialPresets: readonly Preset[];\n readonly initialActivePresetId: string;\n readonly initialPublishedPresetId: string | null;\n readonly defaultState: ConfiguratorState;\n readonly onPresetSwitch: (newState: ConfiguratorState) => void;\n readonly getCurrentState: () => ConfiguratorState;\n readonly flushPendingSave: () => Promise<void>;\n readonly persistPresets: (params: {\n readonly presets: readonly Preset[];\n readonly activePresetId: string;\n readonly publishedPresetId: string | null;\n }) => Promise<void>;\n}\n\ninterface UsePresetsReturn {\n readonly presets: readonly Preset[];\n readonly activePresetId: string;\n readonly publishedPresetId: string | null;\n readonly activePreset: Preset;\n readonly switchPreset: (presetId: string) => Promise<void>;\n readonly createPreset: (name: string) => Promise<string>;\n readonly renamePreset: (presetId: string, name: string) => void;\n readonly deletePreset: (presetId: string) => Promise<void>;\n readonly duplicatePreset: (\n presetId: string,\n newName: string,\n ) => Promise<string>;\n readonly updateActivePresetDraftState: (\n state: ConfiguratorState,\n ) => readonly Preset[];\n readonly publishActivePreset: (\n state: ConfiguratorState,\n ) => readonly Preset[];\n readonly revertActivePreset: () => ConfiguratorState | null;\n}\n\nexport function usePresets({\n initialPresets,\n initialActivePresetId,\n initialPublishedPresetId,\n defaultState,\n onPresetSwitch,\n getCurrentState,\n flushPendingSave,\n persistPresets,\n}: UsePresetsOptions): UsePresetsReturn {\n const [presets, setPresets] = useState<readonly Preset[]>(initialPresets);\n const [activePresetId, setActivePresetId] = useState(initialActivePresetId);\n const [publishedPresetId, setPublishedPresetId] = useState<string | null>(\n initialPublishedPresetId,\n );\n const presetsRef = useRef(presets);\n\n // Keep ref in sync\n presetsRef.current = presets;\n\n const activePreset =\n presets.find((p) => p.id === activePresetId) ?? presets[0];\n\n // --- Switch active preset ---\n const switchPreset = useCallback(\n async (presetId: string) => {\n if (presetId === activePresetId) return;\n\n // Flush any pending auto-save for current preset\n await flushPendingSave();\n\n // Save current state into the current preset's draft_state before switching\n const currentState = getCurrentState();\n const updatedPresets = presetsRef.current.map((p) =>\n p.id === activePresetId ? { ...p, draft_state: currentState } : p,\n );\n\n // Find target preset\n const target = updatedPresets.find((p) => p.id === presetId);\n if (!target) return;\n\n // Update state\n setPresets(updatedPresets);\n presetsRef.current = updatedPresets;\n setActivePresetId(presetId);\n\n // Load new preset's draft_state into configurator\n onPresetSwitch(target.draft_state);\n\n // Persist\n await persistPresets({\n presets: updatedPresets,\n activePresetId: presetId,\n publishedPresetId,\n });\n },\n [\n activePresetId,\n publishedPresetId,\n flushPendingSave,\n getCurrentState,\n onPresetSwitch,\n persistPresets,\n ],\n );\n\n // --- Create new preset ---\n const createPreset = useCallback(\n async (name: string): Promise<string> => {\n const newPreset: Preset = {\n id: crypto.randomUUID(),\n name,\n draft_state: defaultState,\n published_state: null,\n };\n const newPresets = [...presetsRef.current, newPreset];\n setPresets(newPresets);\n presetsRef.current = newPresets;\n await persistPresets({\n presets: newPresets,\n activePresetId,\n publishedPresetId,\n });\n return newPreset.id;\n },\n [defaultState, activePresetId, publishedPresetId, persistPresets],\n );\n\n // --- Duplicate preset ---\n const duplicatePreset = useCallback(\n async (presetId: string, newName: string): Promise<string> => {\n const source = presetsRef.current.find((p) => p.id === presetId);\n if (!source) throw new Error(\"Preset not found\");\n\n const newPreset: Preset = {\n id: crypto.randomUUID(),\n name: newName,\n draft_state: source.draft_state,\n published_state: null,\n };\n const newPresets = [...presetsRef.current, newPreset];\n setPresets(newPresets);\n presetsRef.current = newPresets;\n await persistPresets({\n presets: newPresets,\n activePresetId,\n publishedPresetId,\n });\n return newPreset.id;\n },\n [activePresetId, publishedPresetId, persistPresets],\n );\n\n // --- Rename preset ---\n const renamePreset = useCallback(\n (presetId: string, name: string) => {\n const newPresets = presetsRef.current.map((p) =>\n p.id === presetId ? { ...p, name } : p,\n );\n setPresets(newPresets);\n presetsRef.current = newPresets;\n // fire-and-forget\n persistPresets({\n presets: newPresets,\n activePresetId,\n publishedPresetId,\n });\n },\n [activePresetId, publishedPresetId, persistPresets],\n );\n\n // --- Delete preset ---\n const deletePreset = useCallback(\n async (presetId: string) => {\n if (presetsRef.current.length <= 1) return;\n\n const newPresets = presetsRef.current.filter((p) => p.id !== presetId);\n let newActiveId = activePresetId;\n let newPublishedId = publishedPresetId;\n\n // If deleting active preset, switch to first remaining\n if (presetId === activePresetId) {\n newActiveId = newPresets[0].id;\n onPresetSwitch(newPresets[0].draft_state);\n }\n\n // If deleting published preset, clear it\n if (presetId === publishedPresetId) {\n newPublishedId = null;\n }\n\n setPresets(newPresets);\n presetsRef.current = newPresets;\n setActivePresetId(newActiveId);\n setPublishedPresetId(newPublishedId);\n await persistPresets({\n presets: newPresets,\n activePresetId: newActiveId,\n publishedPresetId: newPublishedId,\n });\n },\n [activePresetId, publishedPresetId, onPresetSwitch, persistPresets],\n );\n\n // --- Update active preset's draft_state (called during auto-save) ---\n const updateActivePresetDraftState = useCallback(\n (state: ConfiguratorState): readonly Preset[] => {\n const newPresets = presetsRef.current.map((p) =>\n p.id === activePresetId ? { ...p, draft_state: state } : p,\n );\n setPresets(newPresets);\n presetsRef.current = newPresets;\n return newPresets;\n },\n [activePresetId],\n );\n\n // --- Publish active preset ---\n const publishActivePreset = useCallback(\n (state: ConfiguratorState): readonly Preset[] => {\n const newPresets = presetsRef.current.map((p) =>\n p.id === activePresetId\n ? { ...p, draft_state: state, published_state: state }\n : p,\n );\n setPresets(newPresets);\n presetsRef.current = newPresets;\n setPublishedPresetId(activePresetId);\n return newPresets;\n },\n [activePresetId],\n );\n\n // --- Revert active preset to its published_state ---\n const revertActivePreset = useCallback((): ConfiguratorState | null => {\n return activePreset.published_state;\n }, [activePreset]);\n\n return {\n presets,\n activePresetId,\n publishedPresetId,\n activePreset,\n switchPreset,\n createPreset,\n renamePreset,\n deletePreset,\n duplicatePreset,\n updateActivePresetDraftState,\n publishActivePreset,\n revertActivePreset,\n };\n}\n","import { useState, useCallback, useRef, useEffect, useMemo } from \"react\";\nimport { getComponent } from \"@newtonedev/components\";\nimport type { ColorMode } from \"@newtonedev/components\";\nimport type { ConfiguratorState } from \"@newtonedev/configurator\";\nimport { useConfigurator, usePreviewColors } from \"@newtonedev/configurator\";\nimport { usePresets } from \"./usePresets\";\nimport type {\n Preset,\n SaveStatus,\n ThemeName,\n PreviewView,\n SidebarSelection,\n EditorPersistence,\n} from \"../types\";\n\ninterface UseEditorStateOptions {\n readonly initialState: ConfiguratorState;\n readonly initialIsPublished: boolean;\n readonly initialPresets: readonly Preset[];\n readonly initialActivePresetId: string;\n readonly initialPublishedPresetId: string | null;\n readonly defaultState: ConfiguratorState;\n readonly persistence: EditorPersistence;\n readonly onNavigate?: (view: PreviewView) => void;\n readonly initialPreviewView?: PreviewView;\n}\n\nexport function useEditorState({\n initialState,\n initialIsPublished,\n initialPresets,\n initialActivePresetId,\n initialPublishedPresetId,\n defaultState,\n persistence,\n onNavigate,\n initialPreviewView,\n}: UseEditorStateOptions) {\n // --- Configurator state management ---\n const {\n state: configuratorState,\n dispatch,\n themeConfig,\n } = useConfigurator(initialState);\n const previewColors = usePreviewColors(configuratorState);\n\n const [saveStatus, setSaveStatus] = useState<SaveStatus>(\"saved\");\n const [isPublished, setIsPublished] = useState(initialIsPublished);\n const [publishing, setPublishing] = useState(false);\n const [colorMode, setColorMode] = useState<ColorMode>(\n initialState.preview.mode,\n );\n const [activeTheme, setActiveTheme] = useState<ThemeName>(\n (initialState.preview.theme as ThemeName) || \"neutral\",\n );\n const [previewView, setPreviewView] = useState<PreviewView>(\n initialPreviewView ?? { kind: \"overview\" },\n );\n const [sidebarSelection, setSidebarSelection] =\n useState<SidebarSelection>(null);\n const [propOverrides, setPropOverrides] = useState<Record<string, unknown>>(\n {},\n );\n\n const debounceRef = useRef<ReturnType<typeof setTimeout>>(undefined);\n const latestStateRef = useRef<ConfiguratorState>(initialState);\n const isInitialMount = useRef(true);\n const initialStateRef = useRef(initialState);\n\n // --- Preset callbacks ---\n\n const handlePresetSwitch = useCallback(\n (newState: ConfiguratorState) => {\n dispatch({ type: \"LOAD_STATE\", state: newState });\n initialStateRef.current = newState;\n isInitialMount.current = true;\n },\n [dispatch],\n );\n\n const flushPendingSave = useCallback(async () => {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n debounceRef.current = undefined;\n }\n }, []);\n\n // --- Presets ---\n\n const {\n presets,\n activePresetId,\n publishedPresetId,\n activePreset,\n switchPreset,\n createPreset,\n renamePreset,\n deletePreset,\n duplicatePreset,\n updateActivePresetDraftState,\n publishActivePreset,\n revertActivePreset,\n } = usePresets({\n initialPresets,\n initialActivePresetId,\n initialPublishedPresetId,\n defaultState,\n onPresetSwitch: handlePresetSwitch,\n getCurrentState: () => latestStateRef.current,\n flushPendingSave,\n persistPresets: persistence.persistPresets,\n });\n\n // --- Dirty check for revert ---\n\n const isDirty = useMemo(\n () =>\n JSON.stringify(configuratorState) !==\n JSON.stringify(\n activePreset.published_state ?? initialStateRef.current,\n ),\n [configuratorState, activePreset.published_state],\n );\n\n const handleRevert = useCallback(() => {\n const publishedState = revertActivePreset();\n const revertTarget = publishedState ?? defaultState;\n if (\n window.confirm(\n \"Revert all changes to the last published version of this preset?\",\n )\n ) {\n dispatch({ type: \"LOAD_STATE\", state: revertTarget });\n initialStateRef.current = revertTarget;\n }\n }, [dispatch, revertActivePreset, defaultState]);\n\n // --- Prop override helpers ---\n\n const initOverridesFromVariant = useCallback(\n (componentId: string, variantId?: string) => {\n const comp = getComponent(componentId);\n if (!comp) return;\n const variant = variantId\n ? comp.variants.find((v) => v.id === variantId)\n : comp.variants[0];\n if (variant) {\n const overrides: Record<string, unknown> = {};\n for (const prop of comp.editableProps) {\n overrides[prop.name] = variant.props[prop.name] ?? prop.defaultValue;\n }\n setPropOverrides(overrides);\n }\n },\n [],\n );\n\n // --- Preview navigation + right sidebar coordination ---\n\n const handlePreviewNavigate = useCallback(\n (view: PreviewView) => {\n setPreviewView(view);\n onNavigate?.(view);\n\n if (view.kind === \"component\") {\n setSidebarSelection({\n scope: \"component\",\n componentId: view.componentId,\n });\n initOverridesFromVariant(view.componentId);\n } else {\n setSidebarSelection(null);\n setPropOverrides({});\n }\n },\n [onNavigate, initOverridesFromVariant],\n );\n\n const handleSelectVariant = useCallback(\n (variantId: string) => {\n if (previewView.kind === \"component\") {\n setSidebarSelection({\n scope: \"variant\",\n componentId: previewView.componentId,\n variantId,\n });\n initOverridesFromVariant(previewView.componentId, variantId);\n }\n },\n [previewView, initOverridesFromVariant],\n );\n\n const handleCloseSidebar = useCallback(() => {\n setSidebarSelection(null);\n setPropOverrides({});\n }, []);\n\n const handleScopeToComponent = useCallback(() => {\n if (sidebarSelection && sidebarSelection.scope === \"variant\") {\n setSidebarSelection({\n scope: \"component\",\n componentId: sidebarSelection.componentId,\n });\n initOverridesFromVariant(sidebarSelection.componentId);\n }\n }, [sidebarSelection, initOverridesFromVariant]);\n\n const handlePropOverride = useCallback((propName: string, value: unknown) => {\n setPropOverrides((prev) => ({ ...prev, [propName]: value }));\n }, []);\n\n const handleResetOverrides = useCallback(() => {\n if (sidebarSelection?.scope === \"variant\") {\n initOverridesFromVariant(\n sidebarSelection.componentId,\n sidebarSelection.variantId,\n );\n }\n }, [sidebarSelection, initOverridesFromVariant]);\n\n // --- Draft auto-save ---\n\n const saveDraft = useCallback(\n async (state: ConfiguratorState) => {\n setSaveStatus(\"saving\");\n const updatedPresets = updateActivePresetDraftState(state);\n const { error } = await persistence.onSaveDraft({\n state,\n presets: updatedPresets,\n });\n setSaveStatus(error ? \"error\" : \"saved\");\n },\n [persistence, updateActivePresetDraftState],\n );\n\n const scheduleSave = useCallback(() => {\n setSaveStatus(\"unsaved\");\n if (debounceRef.current) clearTimeout(debounceRef.current);\n debounceRef.current = setTimeout(() => {\n saveDraft(latestStateRef.current);\n }, 2000);\n }, [saveDraft]);\n\n // --- State change detection ---\n\n useEffect(() => {\n if (isInitialMount.current) {\n isInitialMount.current = false;\n return;\n }\n latestStateRef.current = configuratorState;\n setIsPublished(false);\n scheduleSave();\n }, [configuratorState, scheduleSave]);\n\n // --- ThemeBar dispatch handlers ---\n\n const handleThemeChange = useCallback(\n (theme: ThemeName) => {\n setActiveTheme(theme);\n dispatch({ type: \"SET_PREVIEW_THEME\", theme });\n },\n [dispatch],\n );\n\n const handleColorModeChange = useCallback(\n (mode: ColorMode) => {\n setColorMode(mode);\n dispatch({ type: \"SET_PREVIEW_MODE\", mode });\n },\n [dispatch],\n );\n\n // --- Publish ---\n\n const handlePublish = useCallback(async () => {\n if (debounceRef.current) clearTimeout(debounceRef.current);\n setPublishing(true);\n\n const currentState = latestStateRef.current;\n const updatedPresets = publishActivePreset(currentState);\n\n const { error } = await persistence.onPublish({\n state: currentState,\n presets: updatedPresets,\n activePresetId,\n });\n\n if (!error) {\n setSaveStatus(\"saved\");\n setIsPublished(true);\n }\n setPublishing(false);\n }, [activePresetId, publishActivePreset, persistence]);\n\n // --- beforeunload warning ---\n useEffect(() => {\n const handleBeforeUnload = (e: BeforeUnloadEvent) => {\n if (saveStatus === \"unsaved\" || saveStatus === \"saving\") {\n e.preventDefault();\n }\n };\n window.addEventListener(\"beforeunload\", handleBeforeUnload);\n return () => {\n window.removeEventListener(\"beforeunload\", handleBeforeUnload);\n };\n }, [saveStatus]);\n\n // --- Flush pending save on unmount ---\n useEffect(() => {\n return () => {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n const state = latestStateRef.current;\n const flushedPresets = updateActivePresetDraftState(state);\n persistence.onSaveDraft({ state, presets: flushedPresets });\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const selectedVariantId =\n sidebarSelection?.scope === \"variant\" ? sidebarSelection.variantId : null;\n\n const selectedComponentId =\n sidebarSelection?.scope === \"component\" ||\n sidebarSelection?.scope === \"variant\"\n ? sidebarSelection.componentId\n : null;\n\n return {\n // Configurator\n configuratorState,\n dispatch,\n themeConfig,\n previewColors,\n\n // Save/publish\n saveStatus,\n isPublished,\n publishing,\n handlePublish,\n saveDraft,\n\n // Preview\n previewView,\n colorMode,\n activeTheme,\n handlePreviewNavigate,\n handleSelectVariant,\n handleThemeChange,\n handleColorModeChange,\n\n // Sidebar\n sidebarSelection,\n selectedComponentId,\n selectedVariantId,\n propOverrides,\n handlePropOverride,\n handleResetOverrides,\n handleCloseSidebar,\n handleScopeToComponent,\n\n // Presets\n presets,\n activePresetId,\n publishedPresetId,\n switchPreset,\n createPreset,\n renamePreset,\n deletePreset,\n duplicatePreset,\n\n // Revert\n isDirty,\n handleRevert,\n\n // For retry button\n latestStateRef,\n } as const;\n}\n","import type { ReactNode } from \"react\";\nimport { useTokens } from \"@newtonedev/components\";\nimport { srgbToHex } from \"newtone\";\n\nconst SIDEBAR_WIDTH = 360;\n\ninterface EditorShellProps {\n readonly sidebar: ReactNode;\n readonly navbar: ReactNode;\n readonly content: ReactNode;\n readonly rightPanel: ReactNode;\n}\n\nexport function EditorShell({\n sidebar,\n navbar,\n content,\n rightPanel,\n}: EditorShellProps) {\n const tokens = useTokens();\n\n return (\n <div\n style={{\n display: \"flex\",\n height: \"100vh\",\n overflow: \"hidden\",\n backgroundColor: srgbToHex(tokens.background.srgb),\n }}\n >\n <div\n style={{\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100vh\",\n overflow: \"hidden\",\n minWidth: 0,\n }}\n >\n {navbar}\n\n <div\n style={{\n display: \"flex\",\n flex: 1,\n overflow: \"hidden\",\n }}\n >\n {content}\n </div>\n </div>\n\n <div\n style={{\n position: \"relative\",\n width: SIDEBAR_WIDTH,\n flexShrink: 0,\n overflow: \"hidden\",\n }}\n >\n {sidebar}\n {rightPanel}\n </div>\n </div>\n );\n}\n","import { useState, useMemo, useCallback, useEffect } from \"react\";\nimport {\n HueSlider,\n Slider,\n Select,\n Toggle,\n ColorScaleSlider,\n TextInput,\n useTokens,\n} from \"@newtonedev/components\";\nimport type { ColorMode } from \"@newtonedev/components\";\nimport { srgbToHex } from \"newtone\";\nimport type { ColorResult, DynamicRange } from \"newtone\";\nimport type { DesaturationStrength, HueGradingStrength } from \"newtone\";\nimport type { ConfiguratorState } from \"@newtonedev/configurator\";\nimport type { ConfiguratorAction } from \"@newtonedev/configurator\";\nimport {\n SEMANTIC_HUE_RANGES,\n useWcagValidation,\n hexToPaletteParams,\n traditionalHueToOklch,\n} from \"@newtonedev/configurator\";\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 ColorsSectionProps {\n readonly state: ConfiguratorState;\n readonly dispatch: (action: ConfiguratorAction) => void;\n readonly previewColors: readonly (readonly ColorResult[])[];\n readonly colorMode: ColorMode;\n readonly onColorModeChange: (mode: ColorMode) => void;\n}\n\n/** Get the hex color at a normalizedValue from the preview colors array */\nfunction getHexAtNv(\n previewColors: readonly ColorResult[],\n nv: number,\n): 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 ColorsSection({\n state,\n dispatch,\n previewColors,\n colorMode,\n onColorModeChange,\n}: ColorsSectionProps) {\n const tokens = useTokens();\n const [activePaletteIndex, setActivePaletteIndex] = useState(0);\n const [modeToggleHovered, setModeToggleHovered] = useState(false);\n\n const palette = state.palettes[activePaletteIndex];\n const hueRange = SEMANTIC_HUE_RANGES[activePaletteIndex];\n const isNeutral = activePaletteIndex === 0;\n\n const activeColor = srgbToHex(tokens.interactive.srgb);\n const borderColor = srgbToHex(tokens.border.srgb);\n\n // Resolve effective key color for current mode\n const effectiveKeyColor =\n colorMode === \"dark\" ? palette.keyColorDark : palette.keyColor;\n\n // Mode-aware action types\n const setKeyColorAction =\n colorMode === \"dark\"\n ? (\"SET_PALETTE_KEY_COLOR_DARK\" as const)\n : (\"SET_PALETTE_KEY_COLOR\" as const);\n const clearKeyColorAction =\n colorMode === \"dark\"\n ? (\"CLEAR_PALETTE_KEY_COLOR_DARK\" as const)\n : (\"CLEAR_PALETTE_KEY_COLOR\" as const);\n const hexAction =\n colorMode === \"dark\"\n ? (\"SET_PALETTE_FROM_HEX_DARK\" as const)\n : (\"SET_PALETTE_FROM_HEX\" as const);\n\n // WCAG validation for key color (already mode-aware)\n const wcag = useWcagValidation(state, activePaletteIndex);\n\n // Hex input state\n const [hexText, setHexText] = useState(\"\");\n const [hexError, setHexError] = useState(\"\");\n const [isEditingHex, setIsEditingHex] = useState(false);\n const [isHexUserSet, setIsHexUserSet] = useState(false);\n\n // Reset hex input state when mode changes\n useEffect(() => {\n setHexText(\"\");\n setHexError(\"\");\n setIsEditingHex(false);\n setIsHexUserSet(false);\n }, [colorMode]);\n\n // Compute displayed hex from current key color position\n const currentPreview = previewColors[activePaletteIndex];\n const displayedHex = useMemo(() => {\n if (!currentPreview || currentPreview.length === 0) return \"\";\n const nv = effectiveKeyColor ?? wcag.autoNormalizedValue;\n return getHexAtNv(currentPreview, nv);\n }, [currentPreview, effectiveKeyColor, wcag.autoNormalizedValue]);\n\n // Sync hex text when not actively editing and not user-submitted\n useEffect(() => {\n if (!isEditingHex && !isHexUserSet) {\n setHexText(displayedHex);\n }\n }, [displayedHex, isEditingHex, isHexUserSet]);\n\n // Build dynamic range for hex conversion\n const dynamicRange = useMemo((): DynamicRange => {\n const light =\n state.globalHueGrading.light.strength !== \"none\"\n ? {\n hue: traditionalHueToOklch(state.globalHueGrading.light.hue),\n strength: state.globalHueGrading.light.strength,\n }\n : undefined;\n const dark =\n state.globalHueGrading.dark.strength !== \"none\"\n ? {\n hue: traditionalHueToOklch(state.globalHueGrading.dark.hue),\n strength: state.globalHueGrading.dark.strength,\n }\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 = 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: hexAction,\n index: activePaletteIndex,\n hue: params.hue,\n saturation: params.saturation,\n keyColor: params.normalizedValue,\n });\n }, [hexText, dynamicRange, dispatch, activePaletteIndex, hexAction]);\n\n const handleClearKeyColor = useCallback(() => {\n dispatch({ type: clearKeyColorAction, index: activePaletteIndex });\n setHexError(\"\");\n setIsHexUserSet(false);\n }, [dispatch, activePaletteIndex, clearKeyColorAction]);\n\n // Build WCAG warning message\n const wcagWarning = useMemo(() => {\n if (effectiveKeyColor === undefined || wcag.keyColorContrast === null)\n 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 <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n {/* ─── Palette Circles + Mode Toggle ─── */}\n <div style={{ display: \"flex\", gap: 8, alignItems: \"center\" }}>\n {state.palettes.map((_p, index) => {\n const isActive = index === activePaletteIndex;\n const colors = previewColors[index];\n const isNeutralCircle = index === 0;\n\n // Per-mode key color for this palette's circle\n const paletteKeyColor =\n colorMode === \"dark\" ? _p.keyColorDark : _p.keyColor;\n const circleColor =\n !isNeutralCircle && colors\n ? getHexAtNv(\n colors,\n paletteKeyColor ?? wcag.autoNormalizedValue,\n )\n : undefined;\n\n const ringStyle = isActive\n ? `0 0 0 2px ${srgbToHex(tokens.background.srgb)}, 0 0 0 4px ${activeColor}`\n : \"none\";\n\n return (\n <button\n key={index}\n onClick={() => setActivePaletteIndex(index)}\n aria-label={_p.name}\n aria-pressed={isActive}\n style={{\n width: 32,\n height: 32,\n borderRadius: \"50%\",\n border: \"none\",\n cursor: \"pointer\",\n flexShrink: 0,\n boxShadow: ringStyle,\n transition: \"box-shadow 150ms ease\",\n padding: 0,\n overflow: \"hidden\",\n ...(isNeutralCircle\n ? {\n background: colors\n ? `linear-gradient(to right, ${srgbToHex(colors[0].srgb)} 50%, ${srgbToHex(colors[colors.length - 1].srgb)} 50%)`\n : `linear-gradient(to right, #ffffff 50%, #000000 50%)`,\n }\n : { backgroundColor: circleColor ?? borderColor }),\n }}\n />\n );\n })}\n\n {/* Spacer */}\n <div style={{ flex: 1 }} />\n\n {/* Light/Dark Mode Toggle */}\n <button\n onClick={() =>\n onColorModeChange(colorMode === \"light\" ? \"dark\" : \"light\")\n }\n onMouseEnter={() => setModeToggleHovered(true)}\n onMouseLeave={() => setModeToggleHovered(false)}\n aria-label={\n colorMode === \"light\"\n ? \"Switch to dark mode\"\n : \"Switch to light mode\"\n }\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n padding: \"4px 10px\",\n borderRadius: 6,\n border: `1px solid ${borderColor}`,\n background: modeToggleHovered ? `${borderColor}20` : \"none\",\n cursor: \"pointer\",\n fontSize: 12,\n color: srgbToHex(tokens.textPrimary.srgb),\n transition: \"background-color 150ms ease\",\n }}\n >\n {colorMode === \"light\" ? \"\\u2600\" : \"\\u263E\"}\n <span>{colorMode === \"light\" ? \"Light\" : \"Dark\"}</span>\n </button>\n </div>\n\n {/* ─── Key Color (mode-specific) ─── */}\n {currentPreview &&\n (isNeutral ? (\n <div style={{ display: \"flex\", gap: 1 }}>\n {currentPreview.map((color, i) => (\n <div\n key={i}\n style={{\n flex: 1,\n height: 64,\n borderRadius: 2,\n backgroundColor: srgbToHex(color.srgb),\n }}\n />\n ))}\n </div>\n ) : (\n <div\n style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}\n >\n <ColorScaleSlider\n colors={currentPreview}\n value={effectiveKeyColor ?? wcag.autoNormalizedValue}\n onValueChange={(nv) => {\n setIsHexUserSet(false);\n dispatch({\n type: setKeyColorAction,\n index: activePaletteIndex,\n normalizedValue: nv,\n });\n }}\n trimEnds\n snap\n label=\"Key Color\"\n warning={wcagWarning}\n animateValue\n />\n <div\n style={{\n display: \"flex\",\n gap: 8,\n alignItems: \"flex-end\",\n }}\n >\n <div style={{ flex: 1 }}>\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 </div>\n {effectiveKeyColor !== undefined && (\n <button\n onClick={handleClearKeyColor}\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n padding: \"0 0 6px\",\n fontSize: 13,\n fontWeight: 600,\n color: activeColor,\n }}\n >\n Auto\n </button>\n )}\n </div>\n {hexError && (\n <div\n style={{\n fontSize: 12,\n fontWeight: 500,\n color: srgbToHex(tokens.error.srgb),\n }}\n >\n {hexError}\n </div>\n )}\n </div>\n ))}\n\n {/* ─── Divider ─── */}\n <div\n style={{\n height: 1,\n backgroundColor: borderColor,\n margin: \"4px 0\",\n }}\n />\n\n {/* ─── Shared Per-Palette Controls ─── */}\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 12 }}>\n <HueSlider\n value={palette.hue}\n onValueChange={(hue) =>\n dispatch({\n type: \"SET_PALETTE_HUE\",\n index: activePaletteIndex,\n hue,\n })\n }\n label=\"Hue\"\n editableValue\n {...(hueRange ? { min: hueRange.min, max: hueRange.max } : {})}\n />\n\n <Slider\n value={palette.saturation}\n onValueChange={(saturation) =>\n dispatch({\n type: \"SET_PALETTE_SATURATION\",\n index: activePaletteIndex,\n saturation,\n })\n }\n min={0}\n max={100}\n label=\"Saturation\"\n editableValue\n />\n\n {/* Desaturation */}\n <div style={{ display: \"flex\", gap: 12, alignItems: \"flex-end\" }}>\n <div style={{ flex: 1 }}>\n <Select\n options={STRENGTH_OPTIONS}\n value={palette.desaturationStrength}\n onValueChange={(strength) =>\n dispatch({\n type: \"SET_PALETTE_DESAT_STRENGTH\",\n index: activePaletteIndex,\n strength: strength as DesaturationStrength,\n })\n }\n label=\"Desaturation\"\n />\n </div>\n {palette.desaturationStrength !== \"none\" && (\n <div style={{ paddingBottom: 2 }}>\n <Toggle\n value={palette.desaturationDirection === \"dark\"}\n onValueChange={(v) =>\n dispatch({\n type: \"SET_PALETTE_DESAT_DIRECTION\",\n index: activePaletteIndex,\n direction: v ? \"dark\" : \"light\",\n })\n }\n label=\"Invert\"\n />\n </div>\n )}\n </div>\n\n {/* Hue Grading */}\n <div style={{ display: \"flex\", gap: 12, alignItems: \"flex-end\" }}>\n <div style={{ flex: 1 }}>\n <Select\n options={STRENGTH_OPTIONS}\n value={palette.hueGradeStrength}\n onValueChange={(strength) =>\n dispatch({\n type: \"SET_PALETTE_HUE_GRADE_STRENGTH\",\n index: activePaletteIndex,\n strength: strength as HueGradingStrength,\n })\n }\n label=\"Hue Grading\"\n />\n </div>\n {palette.hueGradeStrength !== \"none\" && (\n <div style={{ paddingBottom: 2 }}>\n <Toggle\n value={palette.hueGradeDirection === \"dark\"}\n onValueChange={(v) =>\n dispatch({\n type: \"SET_PALETTE_HUE_GRADE_DIRECTION\",\n index: activePaletteIndex,\n direction: v ? \"dark\" : \"light\",\n })\n }\n label=\"Invert\"\n />\n </div>\n )}\n </div>\n\n {palette.hueGradeStrength !== \"none\" && (\n <HueSlider\n value={palette.hueGradeHue}\n onValueChange={(hue) =>\n dispatch({\n type: \"SET_PALETTE_HUE_GRADE_HUE\",\n index: activePaletteIndex,\n hue,\n })\n }\n label=\"Grade Target\"\n editableValue\n />\n )}\n </div>\n </div>\n );\n}\n","import { useState, useRef, useCallback } from \"react\";\nimport { HueSlider, Select, useTokens } from \"@newtonedev/components\";\nimport { srgbToHex } from \"newtone\";\nimport type { HueGradingStrength } from \"newtone\";\nimport type { ConfiguratorState } from \"@newtonedev/configurator\";\nimport type { ConfiguratorAction } from \"@newtonedev/configurator\";\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\n// --- Dual Range Slider ---\n\nconst TRACK_HEIGHT = 8;\nconst THUMB_SIZE = 18;\nconst ZONE_FRAC = 1 / 3;\n\nfunction clamp(v: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, v));\n}\n\n// --- Display ↔ Internal conversions ---\n// Both lightest and darkest are 0–1 slider positions.\n// The engine maps these to OKLCH L via resolveLightest/resolveDarkest.\n// Display: 0–10 integer scale, linearly mapped to 0.0–1.0.\n\nfunction internalToDisplay(internal: number): number {\n return clamp(Math.round(internal * 10), 0, 10);\n}\n\nfunction displayToInternal(display: number): number {\n return clamp(display, 0, 10) / 10;\n}\n\n// --- Position ↔ Display conversions ---\n// Left zone: pos 0 = display 10, pos ZONE_FRAC = display 0\n// Right zone: pos (1-ZONE_FRAC) = display 0, pos 1 = display 10\n\nfunction posToWhitesDisplay(pos: number): number {\n const ratio = clamp(pos / ZONE_FRAC, 0, 1);\n return Math.round(10 * (1 - ratio));\n}\n\nfunction posToBlacksDisplay(pos: number): number {\n const ratio = clamp((pos - (1 - ZONE_FRAC)) / ZONE_FRAC, 0, 1);\n return Math.round(ratio * 10);\n}\n\nfunction whitesDisplayToPos(display: number): number {\n return ((10 - display) / 10) * ZONE_FRAC;\n}\n\nfunction blacksDisplayToPos(display: number): number {\n return 1 - ZONE_FRAC + (display / 10) * ZONE_FRAC;\n}\n\ninterface DualRangeSliderProps {\n readonly whitesValue: number; // internal 0–1\n readonly blacksValue: number; // internal 0–1\n readonly onWhitesChange: (v: number) => void;\n readonly onBlacksChange: (v: number) => void;\n}\n\nfunction DualRangeSlider({\n whitesValue,\n blacksValue,\n onWhitesChange,\n onBlacksChange,\n}: DualRangeSliderProps) {\n const tokens = useTokens();\n const trackRef = useRef<HTMLDivElement>(null);\n const [activeThumb, setActiveThumb] = useState<\n \"whites\" | \"blacks\" | null\n >(null);\n\n const interactiveColor = srgbToHex(tokens.interactive.srgb);\n const borderColor = srgbToHex(tokens.border.srgb);\n\n const wDisplay = internalToDisplay(whitesValue);\n const bDisplay = internalToDisplay(blacksValue);\n const wPos = whitesDisplayToPos(wDisplay);\n const bPos = blacksDisplayToPos(bDisplay);\n\n const getPosRatio = useCallback((clientX: number): number => {\n if (!trackRef.current) return 0;\n const rect = trackRef.current.getBoundingClientRect();\n return clamp((clientX - rect.left) / rect.width, 0, 1);\n }, []);\n\n const handlePointerDown = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n e.preventDefault();\n const pos = getPosRatio(e.clientX);\n\n if (pos <= ZONE_FRAC) {\n setActiveThumb(\"whites\");\n onWhitesChange(displayToInternal(posToWhitesDisplay(pos)));\n } else if (pos >= 1 - ZONE_FRAC) {\n setActiveThumb(\"blacks\");\n onBlacksChange(displayToInternal(posToBlacksDisplay(pos)));\n } else {\n return; // dead zone\n }\n\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n },\n [getPosRatio, onWhitesChange, onBlacksChange],\n );\n\n const handlePointerMove = useCallback(\n (e: React.PointerEvent) => {\n if (!activeThumb) return;\n const pos = getPosRatio(e.clientX);\n\n if (activeThumb === \"whites\") {\n onWhitesChange(displayToInternal(posToWhitesDisplay(pos)));\n } else {\n onBlacksChange(displayToInternal(posToBlacksDisplay(pos)));\n }\n },\n [activeThumb, getPosRatio, onWhitesChange, onBlacksChange],\n );\n\n const handlePointerUp = useCallback(() => {\n setActiveThumb(null);\n }, []);\n\n const trackTop = (THUMB_SIZE - TRACK_HEIGHT) / 2;\n\n return (\n <div style={{ padding: `0 ${THUMB_SIZE / 2}px` }}>\n <div\n ref={trackRef}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerCancel={handlePointerUp}\n style={{\n position: \"relative\",\n height: THUMB_SIZE,\n cursor: activeThumb ? \"grabbing\" : \"pointer\",\n touchAction: \"none\",\n userSelect: \"none\",\n }}\n >\n {/* Gradient track */}\n <div\n style={{\n position: \"absolute\",\n left: 0,\n right: 0,\n top: trackTop,\n height: TRACK_HEIGHT,\n borderRadius: TRACK_HEIGHT / 2,\n background: \"linear-gradient(to right, white, black)\",\n border: `1px solid ${borderColor}`,\n boxSizing: \"border-box\",\n }}\n />\n\n {/* Accent fill between thumbs */}\n <div\n style={{\n position: \"absolute\",\n left: `${wPos * 100}%`,\n width: `${(bPos - wPos) * 100}%`,\n top: trackTop,\n height: TRACK_HEIGHT,\n backgroundColor: interactiveColor,\n }}\n />\n\n {/* Whites thumb (left) */}\n <div\n style={{\n position: \"absolute\",\n left: `calc(${wPos * 100}% - ${THUMB_SIZE / 2}px)`,\n top: 0,\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: THUMB_SIZE / 2,\n backgroundColor: interactiveColor,\n pointerEvents: \"none\",\n zIndex: activeThumb === \"whites\" ? 2 : 1,\n }}\n />\n\n {/* Blacks thumb (right) */}\n <div\n style={{\n position: \"absolute\",\n left: `calc(${bPos * 100}% - ${THUMB_SIZE / 2}px)`,\n top: 0,\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: THUMB_SIZE / 2,\n backgroundColor: interactiveColor,\n pointerEvents: \"none\",\n zIndex: activeThumb === \"blacks\" ? 2 : 1,\n }}\n />\n </div>\n </div>\n );\n}\n\n// --- Numeric Input ---\n\ninterface RangeInputProps {\n readonly display: number; // 0–10 integer\n readonly onCommit: (internal: number) => void;\n readonly toInternal: (display: number) => number;\n}\n\nfunction RangeInput({ display, onCommit, toInternal }: RangeInputProps) {\n const tokens = useTokens();\n const [text, setText] = useState(String(display));\n const [isEditing, setIsEditing] = useState(false);\n\n const displayText = isEditing ? text : String(display);\n\n const commit = () => {\n setIsEditing(false);\n const parsed = parseInt(text, 10);\n if (isNaN(parsed)) {\n setText(String(display));\n return;\n }\n const clamped = clamp(Math.round(parsed), 0, 10);\n onCommit(toInternal(clamped));\n setText(String(clamped));\n };\n\n return (\n <input\n type=\"text\"\n inputMode=\"numeric\"\n value={displayText}\n onChange={(e) => {\n setIsEditing(true);\n setText(e.target.value);\n }}\n onBlur={commit}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") commit();\n }}\n style={{\n width: 40,\n padding: \"2px 6px\",\n border: `1px solid ${srgbToHex(tokens.border.srgb)}`,\n borderRadius: 4,\n backgroundColor: \"transparent\",\n color: srgbToHex(tokens.textPrimary.srgb),\n fontFamily: \"inherit\",\n fontSize: 12,\n fontWeight: 500,\n textAlign: \"center\",\n outline: \"none\",\n }}\n />\n );\n}\n\n// --- Section ---\n\ninterface DynamicRangeSectionProps {\n readonly state: ConfiguratorState;\n readonly dispatch: (action: ConfiguratorAction) => void;\n}\n\nexport function DynamicRangeSection({\n state,\n dispatch,\n}: DynamicRangeSectionProps) {\n const tokens = useTokens();\n const labelColor = srgbToHex(tokens.textSecondary.srgb);\n\n const labelStyle = {\n fontSize: 11,\n fontWeight: 600 as const,\n color: labelColor,\n textTransform: \"uppercase\" as const,\n letterSpacing: 0.5,\n };\n\n const wDisplay = internalToDisplay(state.dynamicRange.lightest);\n const bDisplay = internalToDisplay(state.dynamicRange.darkest);\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 12 }}>\n {/* Labels above slider */}\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <span style={labelStyle}>Whites</span>\n <span style={labelStyle}>Blacks</span>\n </div>\n\n {/* Dual range slider */}\n <DualRangeSlider\n whitesValue={state.dynamicRange.lightest}\n blacksValue={state.dynamicRange.darkest}\n onWhitesChange={(v) => dispatch({ type: \"SET_LIGHTEST\", value: v })}\n onBlacksChange={(v) => dispatch({ type: \"SET_DARKEST\", value: v })}\n />\n\n {/* Numeric inputs below slider */}\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <RangeInput\n display={wDisplay}\n onCommit={(v) => dispatch({ type: \"SET_LIGHTEST\", value: v })}\n toInternal={displayToInternal}\n />\n <RangeInput\n display={bDisplay}\n onCommit={(v) => dispatch({ type: \"SET_DARKEST\", value: v })}\n toInternal={displayToInternal}\n />\n </div>\n\n {/* Global Hue Grading — Light End */}\n <div style={{ ...labelStyle, marginTop: 4 }}>\n Global Hue Grading — Light\n </div>\n <div style={{ display: \"flex\", gap: 12 }}>\n <div style={{ flex: 1 }}>\n <Select\n options={STRENGTH_OPTIONS}\n value={state.globalHueGrading.light.strength}\n onValueChange={(s) =>\n dispatch({\n type: \"SET_GLOBAL_GRADE_LIGHT_STRENGTH\",\n strength: s as HueGradingStrength,\n })\n }\n label=\"Strength\"\n />\n </div>\n {state.globalHueGrading.light.strength !== \"none\" && (\n <div style={{ flex: 1 }}>\n <HueSlider\n value={state.globalHueGrading.light.hue}\n onValueChange={(hue) =>\n dispatch({ type: \"SET_GLOBAL_GRADE_LIGHT_HUE\", hue })\n }\n label=\"Target Hue\"\n showValue\n />\n </div>\n )}\n </div>\n\n {/* Global Hue Grading — Dark End */}\n <div style={{ ...labelStyle, marginTop: 4 }}>\n Global Hue Grading — Dark\n </div>\n <div style={{ display: \"flex\", gap: 12 }}>\n <div style={{ flex: 1 }}>\n <Select\n options={STRENGTH_OPTIONS}\n value={state.globalHueGrading.dark.strength}\n onValueChange={(s) =>\n dispatch({\n type: \"SET_GLOBAL_GRADE_DARK_STRENGTH\",\n strength: s as HueGradingStrength,\n })\n }\n label=\"Strength\"\n />\n </div>\n {state.globalHueGrading.dark.strength !== \"none\" && (\n <div style={{ flex: 1 }}>\n <HueSlider\n value={state.globalHueGrading.dark.hue}\n onValueChange={(hue) =>\n dispatch({ type: \"SET_GLOBAL_GRADE_DARK_HUE\", hue })\n }\n label=\"Target Hue\"\n showValue\n />\n </div>\n )}\n </div>\n </div>\n );\n}\n","import { Select } from \"@newtonedev/components\";\nimport type { ConfiguratorState } from \"@newtonedev/configurator\";\nimport type { ConfiguratorAction } from \"@newtonedev/configurator\";\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 IconsSectionProps {\n readonly state: ConfiguratorState;\n readonly dispatch: (action: ConfiguratorAction) => void;\n}\n\nexport function IconsSection({ state, dispatch }: IconsSectionProps) {\n const variant = state.icons?.variant ?? \"rounded\";\n const weight = state.icons?.weight ?? 400;\n return (\n <div style={{ display: \"flex\", gap: 12 }}>\n <div style={{ flex: 1 }}>\n <Select\n options={ICON_VARIANT_OPTIONS}\n value={variant}\n onValueChange={(v) =>\n dispatch({\n type: \"SET_ICON_VARIANT\",\n variant: v as \"outlined\" | \"rounded\" | \"sharp\",\n })\n }\n label=\"Variant\"\n />\n </div>\n <div style={{ flex: 1 }}>\n <Select\n options={ICON_WEIGHT_OPTIONS}\n value={weight.toString()}\n onValueChange={(v) =>\n dispatch({\n type: \"SET_ICON_WEIGHT\",\n weight: parseInt(v) as\n | 100\n | 200\n | 300\n | 400\n | 500\n | 600\n | 700,\n })\n }\n label=\"Weight\"\n />\n </div>\n </div>\n );\n}\n","import { useState, useRef, useEffect, useMemo, useCallback } from \"react\";\nimport { useTokens } from \"@newtonedev/components\";\nimport {\n GOOGLE_FONTS,\n SYSTEM_FONTS,\n} from \"@newtonedev/components\";\nimport type { GoogleFontEntry, SystemFontEntry, FontConfig } from \"@newtonedev/components\";\nimport { srgbToHex } from \"newtone\";\n\ntype FontSlot = \"default\" | \"display\" | \"mono\";\n\ninterface FontPickerProps {\n readonly label: string;\n readonly slot: FontSlot;\n readonly currentFont: FontConfig;\n readonly onSelect: (font: FontConfig) => void;\n}\n\n/** Preload all curated Google Fonts for preview on first dropdown open. */\nlet previewLoaded = false;\nfunction preloadFontsForPreview() {\n if (previewLoaded || typeof document === \"undefined\") return;\n previewLoaded = true;\n const families = GOOGLE_FONTS.map(\n (f) => `family=${f.family.replace(/ /g, \"+\")}:wght@400`,\n ).join(\"&\");\n const url = `https://fonts.googleapis.com/css2?${families}&display=swap`;\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.href = url;\n document.head.appendChild(link);\n}\n\nfunction googleFontToConfig(entry: GoogleFontEntry): FontConfig {\n return {\n type: \"google\",\n family: entry.family,\n fallback: entry.fallback,\n };\n}\n\nfunction systemFontToConfig(entry: SystemFontEntry): FontConfig {\n return {\n type: \"system\",\n family: entry.family,\n fallback: entry.fallback,\n };\n}\n\nconst CATEGORY_LABELS: Record<string, string> = {\n \"sans-serif\": \"Sans Serif\",\n serif: \"Serif\",\n monospace: \"Monospace\",\n display: \"Display\",\n};\n\nconst CATEGORY_ORDER: readonly string[] = [\n \"sans-serif\",\n \"serif\",\n \"monospace\",\n \"display\",\n];\nconst MONO_CATEGORY_ORDER: readonly string[] = [\n \"monospace\",\n \"sans-serif\",\n \"serif\",\n \"display\",\n];\n\nexport function FontPicker({\n label,\n slot,\n currentFont,\n onSelect,\n}: FontPickerProps) {\n const tokens = useTokens();\n const [isOpen, setIsOpen] = useState(false);\n const [search, setSearch] = useState(\"\");\n const containerRef = useRef<HTMLDivElement>(null);\n const searchInputRef = useRef<HTMLInputElement>(null);\n\n const labelColor = srgbToHex(tokens.textSecondary.srgb);\n const textColor = srgbToHex(tokens.textPrimary.srgb);\n const bgColor = srgbToHex(tokens.backgroundElevated.srgb);\n const borderColor = srgbToHex(tokens.border.srgb);\n const hoverColor = srgbToHex(tokens.backgroundSunken.srgb);\n const interactiveColor = srgbToHex(tokens.interactive.srgb);\n\n useEffect(() => {\n if (!isOpen) return;\n function handleMouseDown(e: MouseEvent) {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.target as Node)\n ) {\n setIsOpen(false);\n setSearch(\"\");\n }\n }\n document.addEventListener(\"mousedown\", handleMouseDown);\n return () => document.removeEventListener(\"mousedown\", handleMouseDown);\n }, [isOpen]);\n\n useEffect(() => {\n if (isOpen) {\n preloadFontsForPreview();\n requestAnimationFrame(() => searchInputRef.current?.focus());\n }\n }, [isOpen]);\n\n const categoryOrder = slot === \"mono\" ? MONO_CATEGORY_ORDER : CATEGORY_ORDER;\n\n const filteredGoogleFonts = useMemo(() => {\n const query = search.toLowerCase().trim();\n const fonts = query\n ? GOOGLE_FONTS.filter((f) => f.family.toLowerCase().includes(query))\n : GOOGLE_FONTS;\n\n const grouped: Record<string, GoogleFontEntry[]> = {};\n for (const cat of categoryOrder) {\n const inCategory = fonts.filter((f) => f.category === cat);\n if (inCategory.length > 0) {\n grouped[cat] = inCategory;\n }\n }\n return grouped;\n }, [search, categoryOrder]);\n\n const filteredSystemFonts = useMemo(() => {\n const query = search.toLowerCase().trim();\n return query\n ? SYSTEM_FONTS.filter((f) => f.family.toLowerCase().includes(query))\n : [...SYSTEM_FONTS];\n }, [search]);\n\n const handleSelect = useCallback(\n (font: FontConfig) => {\n onSelect(font);\n setIsOpen(false);\n setSearch(\"\");\n },\n [onSelect],\n );\n\n const fontFamily = currentFont.family.includes(\" \")\n ? `\"${currentFont.family}\"`\n : currentFont.family;\n\n return (\n <div ref={containerRef} style={{ position: \"relative\" }}>\n <button\n type=\"button\"\n onClick={() => setIsOpen(!isOpen)}\n style={{\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n padding: \"6px 10px\",\n borderRadius: 6,\n border: `1px solid ${isOpen ? interactiveColor : borderColor}`,\n background: \"transparent\",\n cursor: \"pointer\",\n outline: \"none\",\n }}\n >\n <span style={{ fontSize: 12, color: labelColor }}>{label}</span>\n <span\n style={{\n fontSize: 12,\n color: textColor,\n fontFamily: `${fontFamily}, ${currentFont.fallback}`,\n maxWidth: 140,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {currentFont.family}\n </span>\n </button>\n\n {isOpen && (\n <div\n style={{\n position: \"absolute\",\n top: \"calc(100% + 4px)\",\n left: 0,\n right: 0,\n zIndex: 100,\n background: bgColor,\n border: `1px solid ${borderColor}`,\n borderRadius: 8,\n boxShadow: \"0 4px 16px rgba(0,0,0,0.15)\",\n maxHeight: 320,\n display: \"flex\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n }}\n >\n <div style={{ padding: \"8px 8px 4px\" }}>\n <input\n ref={searchInputRef}\n type=\"text\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder=\"Search fonts...\"\n style={{\n width: \"100%\",\n padding: \"6px 8px\",\n fontSize: 12,\n borderRadius: 4,\n border: `1px solid ${borderColor}`,\n background: \"transparent\",\n color: textColor,\n outline: \"none\",\n boxSizing: \"border-box\",\n }}\n />\n </div>\n\n <div style={{ overflowY: \"auto\", padding: \"4px 0\" }}>\n {filteredSystemFonts.length > 0 && (\n <div>\n <div\n style={{\n fontSize: 10,\n fontWeight: 600,\n color: labelColor,\n textTransform: \"uppercase\",\n letterSpacing: 0.5,\n padding: \"6px 12px 2px\",\n }}\n >\n System\n </div>\n {filteredSystemFonts.map((f) => (\n <FontOption\n key={f.family}\n family={f.family}\n fallback={f.fallback}\n isSelected={\n currentFont.family === f.family &&\n currentFont.type === \"system\"\n }\n textColor={textColor}\n hoverColor={hoverColor}\n interactiveColor={interactiveColor}\n onSelect={() => handleSelect(systemFontToConfig(f))}\n />\n ))}\n </div>\n )}\n\n {Object.entries(filteredGoogleFonts).map(([category, fonts]) => (\n <div key={category}>\n <div\n style={{\n fontSize: 10,\n fontWeight: 600,\n color: labelColor,\n textTransform: \"uppercase\",\n letterSpacing: 0.5,\n padding: \"8px 12px 2px\",\n }}\n >\n {CATEGORY_LABELS[category] ?? category}\n </div>\n {fonts.map((f) => (\n <FontOption\n key={f.family}\n family={f.family}\n fallback={f.fallback}\n isSelected={\n currentFont.family === f.family &&\n currentFont.type === \"google\"\n }\n textColor={textColor}\n hoverColor={hoverColor}\n interactiveColor={interactiveColor}\n onSelect={() => handleSelect(googleFontToConfig(f))}\n />\n ))}\n </div>\n ))}\n\n {filteredSystemFonts.length === 0 &&\n Object.keys(filteredGoogleFonts).length === 0 && (\n <div\n style={{\n padding: \"12px\",\n fontSize: 12,\n color: labelColor,\n textAlign: \"center\",\n }}\n >\n No fonts found\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction FontOption({\n family,\n fallback,\n isSelected,\n textColor,\n hoverColor,\n interactiveColor,\n onSelect,\n}: {\n readonly family: string;\n readonly fallback: string;\n readonly isSelected: boolean;\n readonly textColor: string;\n readonly hoverColor: string;\n readonly interactiveColor: string;\n readonly onSelect: () => void;\n}) {\n const [hovered, setHovered] = useState(false);\n const fontFamily = family.includes(\" \") ? `\"${family}\"` : family;\n\n return (\n <button\n type=\"button\"\n onClick={onSelect}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n style={{\n display: \"block\",\n width: \"100%\",\n padding: \"5px 12px\",\n fontSize: 13,\n fontFamily: `${fontFamily}, ${fallback}`,\n color: isSelected ? interactiveColor : textColor,\n background: hovered ? hoverColor : \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n textAlign: \"left\",\n outline: \"none\",\n fontWeight: isSelected ? 600 : 400,\n }}\n >\n {family}\n </button>\n );\n}\n","import { Slider, useTokens } from \"@newtonedev/components\";\nimport type { FontConfig } from \"@newtonedev/components\";\nimport { srgbToHex } from \"newtone\";\nimport type { ConfiguratorState } from \"@newtonedev/configurator\";\nimport type { ConfiguratorAction } from \"@newtonedev/configurator\";\nimport { FontPicker } from \"../FontPicker\";\n\nconst DEFAULT_FONT_DEFAULT: FontConfig = {\n type: \"system\",\n family: \"system-ui\",\n fallback:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n};\n\nconst DEFAULT_FONT_DISPLAY: FontConfig = {\n type: \"system\",\n family: \"system-ui\",\n fallback:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n};\n\nconst DEFAULT_FONT_MONO: FontConfig = {\n type: \"system\",\n family: \"ui-monospace\",\n fallback: \"SFMono-Regular, Menlo, Monaco, Consolas, monospace\",\n};\n\ninterface FontsSectionProps {\n readonly state: ConfiguratorState;\n readonly dispatch: (action: ConfiguratorAction) => void;\n}\n\nexport function FontsSection({ state, dispatch }: FontsSectionProps) {\n const tokens = useTokens();\n\n const baseSize = state.typography?.scale.baseSize ?? 16;\n const ratio = state.typography?.scale.ratio ?? 1.25;\n\n const labelColor = srgbToHex(tokens.textSecondary.srgb);\n\n const handleFontChange = (\n slot: \"default\" | \"display\" | \"mono\",\n font: FontConfig,\n ) => {\n const actionType = {\n default: \"SET_FONT_DEFAULT\",\n display: \"SET_FONT_DISPLAY\",\n mono: \"SET_FONT_MONO\",\n }[slot] as \"SET_FONT_DEFAULT\" | \"SET_FONT_DISPLAY\" | \"SET_FONT_MONO\";\n dispatch({ type: actionType, font });\n };\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <div>\n <div\n style={{\n fontSize: 11,\n fontWeight: 600,\n color: labelColor,\n textTransform: \"uppercase\",\n letterSpacing: 0.5,\n marginBottom: 8,\n }}\n >\n Scale\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 12 }}>\n <Slider\n value={baseSize}\n onValueChange={(v) =>\n dispatch({ type: \"SET_TYPOGRAPHY_BASE_SIZE\", baseSize: v })\n }\n min={12}\n max={24}\n step={1}\n label=\"Base Size\"\n showValue\n />\n <Slider\n value={Math.round(ratio * 100)}\n onValueChange={(v) =>\n dispatch({ type: \"SET_TYPOGRAPHY_RATIO\", ratio: v / 100 })\n }\n min={110}\n max={150}\n step={5}\n label=\"Scale Ratio\"\n showValue\n />\n </div>\n </div>\n\n <div>\n <div\n style={{\n fontSize: 11,\n fontWeight: 600,\n color: labelColor,\n textTransform: \"uppercase\",\n letterSpacing: 0.5,\n marginBottom: 8,\n }}\n >\n Fonts\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <FontPicker\n label=\"Default\"\n slot=\"default\"\n currentFont={state.typography?.fonts.default ?? DEFAULT_FONT_DEFAULT}\n onSelect={(font) => handleFontChange(\"default\", font)}\n />\n <FontPicker\n label=\"Display\"\n slot=\"display\"\n currentFont={\n state.typography?.fonts.display ?? DEFAULT_FONT_DISPLAY\n }\n onSelect={(font) => handleFontChange(\"display\", font)}\n />\n <FontPicker\n label=\"Mono\"\n slot=\"mono\"\n currentFont={state.typography?.fonts.mono ?? DEFAULT_FONT_MONO}\n onSelect={(font) => handleFontChange(\"mono\", font)}\n />\n </div>\n </div>\n </div>\n );\n}\n","import { Slider, useTokens } from \"@newtonedev/components\";\nimport { srgbToHex } from \"newtone\";\nimport type { ConfiguratorState } from \"@newtonedev/configurator\";\nimport type { ConfiguratorAction } from \"@newtonedev/configurator\";\n\ninterface OthersSectionProps {\n readonly state: ConfiguratorState;\n readonly dispatch: (action: ConfiguratorAction) => void;\n}\n\nexport function OthersSection({ state, dispatch }: OthersSectionProps) {\n const tokens = useTokens();\n\n const density = state.spacing?.density ?? 0.5;\n const intensity = state.roundness?.intensity ?? 0.5;\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <div>\n <div\n style={{\n fontSize: 11,\n fontWeight: 600,\n color: srgbToHex(tokens.textSecondary.srgb),\n textTransform: \"uppercase\",\n letterSpacing: 0.5,\n marginBottom: 8,\n }}\n >\n Spacing\n </div>\n <Slider\n value={Math.round(density * 100)}\n onValueChange={(v) =>\n dispatch({ type: \"SET_SPACING_DENSITY\", density: v / 100 })\n }\n min={0}\n max={100}\n label=\"Density\"\n showValue\n />\n </div>\n\n <div>\n <div\n style={{\n fontSize: 11,\n fontWeight: 600,\n color: srgbToHex(tokens.textSecondary.srgb),\n textTransform: \"uppercase\",\n letterSpacing: 0.5,\n marginBottom: 8,\n }}\n >\n Roundness\n </div>\n <Slider\n value={Math.round(intensity * 100)}\n onValueChange={(v) =>\n dispatch({ type: \"SET_ROUNDNESS_INTENSITY\", intensity: v / 100 })\n }\n min={0}\n max={100}\n label=\"Intensity\"\n showValue\n />\n </div>\n </div>\n );\n}\n","import { useState, useRef, useEffect, useCallback } from \"react\";\nimport { useTokens } from \"@newtonedev/components\";\nimport { srgbToHex } from \"newtone\";\nimport type { Preset } from \"../types\";\nimport { presetHasUnpublishedChanges } from \"../utils/presets\";\n\ninterface PresetSelectorProps {\n readonly presets: readonly Preset[];\n readonly activePresetId: string;\n readonly publishedPresetId: string | null;\n readonly onSwitchPreset: (presetId: string) => void;\n readonly onCreatePreset: (name: string) => Promise<string>;\n readonly onRenamePreset: (presetId: string, name: string) => void;\n readonly onDeletePreset: (presetId: string) => Promise<void>;\n readonly onDuplicatePreset: (\n presetId: string,\n name: string,\n ) => Promise<string>;\n}\n\nexport function PresetSelector({\n presets,\n activePresetId,\n publishedPresetId,\n onSwitchPreset,\n onCreatePreset,\n onRenamePreset,\n onDeletePreset,\n onDuplicatePreset,\n}: PresetSelectorProps) {\n const tokens = useTokens();\n const [isOpen, setIsOpen] = useState(false);\n const [renamingId, setRenamingId] = useState<string | null>(null);\n const [renameValue, setRenameValue] = useState(\"\");\n const [menuOpenId, setMenuOpenId] = useState<string | null>(null);\n const [hoveredId, setHoveredId] = useState<string | null>(null);\n const [hoveredAction, setHoveredAction] = useState<string | null>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const renameInputRef = useRef<HTMLInputElement>(null);\n\n const activePreset = presets.find((p) => p.id === activePresetId);\n\n const borderColor = srgbToHex(tokens.border.srgb);\n const bgColor = srgbToHex(tokens.background.srgb);\n const textPrimary = srgbToHex(tokens.textPrimary.srgb);\n const textSecondary = srgbToHex(tokens.textSecondary.srgb);\n const interactiveColor = srgbToHex(tokens.interactive.srgb);\n const warningColor = srgbToHex(tokens.warning.srgb);\n const errorColor = srgbToHex(tokens.error.srgb);\n const hoverBg = `${borderColor}18`;\n const activeBg = `${interactiveColor}14`;\n\n useEffect(() => {\n if (!isOpen) return;\n const handleClickOutside = (e: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(e.target as Node)\n ) {\n setIsOpen(false);\n setMenuOpenId(null);\n setRenamingId(null);\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isOpen]);\n\n useEffect(() => {\n if (renamingId && renameInputRef.current) {\n renameInputRef.current.focus();\n renameInputRef.current.select();\n }\n }, [renamingId]);\n\n const handleCreate = useCallback(async () => {\n const name = `Preset ${presets.length + 1}`;\n const newId = await onCreatePreset(name);\n onSwitchPreset(newId);\n setIsOpen(false);\n }, [presets.length, onCreatePreset, onSwitchPreset]);\n\n const handleStartRename = useCallback(\n (presetId: string, currentName: string) => {\n setRenamingId(presetId);\n setRenameValue(currentName);\n setMenuOpenId(null);\n },\n [],\n );\n\n const handleCommitRename = useCallback(() => {\n if (renamingId && renameValue.trim()) {\n onRenamePreset(renamingId, renameValue.trim());\n }\n setRenamingId(null);\n }, [renamingId, renameValue, onRenamePreset]);\n\n const handleDelete = useCallback(\n async (presetId: string) => {\n if (presets.length <= 1) return;\n if (window.confirm(\"Delete this preset? This cannot be undone.\")) {\n await onDeletePreset(presetId);\n }\n setMenuOpenId(null);\n },\n [presets.length, onDeletePreset],\n );\n\n const handleDuplicate = useCallback(\n async (presetId: string, sourceName: string) => {\n const newId = await onDuplicatePreset(presetId, `${sourceName} (copy)`);\n onSwitchPreset(newId);\n setMenuOpenId(null);\n setIsOpen(false);\n },\n [onDuplicatePreset, onSwitchPreset],\n );\n\n return (\n <div ref={dropdownRef} style={{ position: \"relative\" }}>\n <button\n onClick={() => setIsOpen(!isOpen)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n padding: \"4px 10px\",\n borderRadius: 6,\n border: `1px solid ${borderColor}`,\n backgroundColor: \"transparent\",\n color: textPrimary,\n fontSize: 12,\n fontWeight: 500,\n cursor: \"pointer\",\n maxWidth: 160,\n }}\n >\n <span\n style={{\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {activePreset?.name ?? \"Default\"}\n </span>\n <svg\n width={10}\n height={10}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n style={{\n transform: isOpen ? \"rotate(180deg)\" : \"none\",\n transition: \"transform 150ms ease\",\n flexShrink: 0,\n }}\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </button>\n\n {isOpen && (\n <div\n style={{\n position: \"absolute\",\n top: \"calc(100% + 4px)\",\n left: 0,\n width: 260,\n backgroundColor: bgColor,\n border: `1px solid ${borderColor}`,\n borderRadius: 8,\n boxShadow: \"0 4px 12px rgba(0,0,0,0.15)\",\n zIndex: 100,\n overflow: \"hidden\",\n }}\n >\n <div style={{ maxHeight: 240, overflowY: \"auto\", padding: \"4px 0\" }}>\n {presets.map((preset) => {\n const isActive = preset.id === activePresetId;\n const isPublishedPreset = preset.id === publishedPresetId;\n const hasChanges = presetHasUnpublishedChanges(preset);\n const isHovered = hoveredId === preset.id;\n const isRenaming = renamingId === preset.id;\n const isMenuShown = menuOpenId === preset.id;\n\n return (\n <div\n key={preset.id}\n onMouseEnter={() => setHoveredId(preset.id)}\n onMouseLeave={() => setHoveredId(null)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n padding: \"6px 12px\",\n backgroundColor: isActive\n ? activeBg\n : isHovered\n ? hoverBg\n : \"transparent\",\n cursor: isRenaming ? \"default\" : \"pointer\",\n transition: \"background-color 100ms ease\",\n position: \"relative\",\n }}\n >\n {isRenaming ? (\n <input\n ref={renameInputRef}\n value={renameValue}\n onChange={(e) => setRenameValue(e.target.value)}\n onBlur={handleCommitRename}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") handleCommitRename();\n if (e.key === \"Escape\") setRenamingId(null);\n }}\n style={{\n flex: 1,\n fontSize: 13,\n padding: \"2px 6px\",\n border: `1px solid ${interactiveColor}`,\n borderRadius: 4,\n backgroundColor: bgColor,\n color: textPrimary,\n outline: \"none\",\n }}\n />\n ) : (\n <>\n <div\n onClick={() => {\n onSwitchPreset(preset.id);\n setIsOpen(false);\n }}\n style={{\n flex: 1,\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n minWidth: 0,\n }}\n >\n <span\n style={{\n fontSize: 13,\n fontWeight: isActive ? 600 : 400,\n color: textPrimary,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {preset.name}\n </span>\n {hasChanges && (\n <span\n title=\"Unpublished changes\"\n style={{\n width: 6,\n height: 6,\n borderRadius: \"50%\",\n backgroundColor: warningColor,\n flexShrink: 0,\n }}\n />\n )}\n {isPublishedPreset && (\n <span\n style={{\n fontSize: 10,\n fontWeight: 600,\n color: interactiveColor,\n padding: \"1px 4px\",\n borderRadius: 3,\n border: `1px solid ${interactiveColor}`,\n flexShrink: 0,\n lineHeight: \"14px\",\n }}\n >\n API\n </span>\n )}\n </div>\n\n {(isHovered || isMenuShown) && (\n <button\n onClick={(e) => {\n e.stopPropagation();\n setMenuOpenId(isMenuShown ? null : preset.id);\n }}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 24,\n height: 24,\n border: \"none\",\n background: \"none\",\n color: textSecondary,\n cursor: \"pointer\",\n borderRadius: 4,\n flexShrink: 0,\n }}\n >\n <svg\n width={14}\n height={14}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n >\n <circle cx={12} cy={5} r={2} />\n <circle cx={12} cy={12} r={2} />\n <circle cx={12} cy={19} r={2} />\n </svg>\n </button>\n )}\n </>\n )}\n\n {isMenuShown && !isRenaming && (\n <div\n style={{\n position: \"absolute\",\n top: 0,\n right: -140,\n width: 130,\n backgroundColor: bgColor,\n border: `1px solid ${borderColor}`,\n borderRadius: 6,\n boxShadow: \"0 2px 8px rgba(0,0,0,0.12)\",\n zIndex: 101,\n overflow: \"hidden\",\n }}\n >\n <button\n onClick={(e) => {\n e.stopPropagation();\n handleStartRename(preset.id, preset.name);\n }}\n onMouseEnter={() => setHoveredAction(\"rename\")}\n onMouseLeave={() => setHoveredAction(null)}\n style={{\n display: \"block\",\n width: \"100%\",\n padding: \"8px 12px\",\n border: \"none\",\n backgroundColor:\n hoveredAction === \"rename\"\n ? hoverBg\n : \"transparent\",\n color: textPrimary,\n fontSize: 12,\n textAlign: \"left\",\n cursor: \"pointer\",\n }}\n >\n Rename\n </button>\n <button\n onClick={(e) => {\n e.stopPropagation();\n handleDuplicate(preset.id, preset.name);\n }}\n onMouseEnter={() => setHoveredAction(\"duplicate\")}\n onMouseLeave={() => setHoveredAction(null)}\n style={{\n display: \"block\",\n width: \"100%\",\n padding: \"8px 12px\",\n border: \"none\",\n backgroundColor:\n hoveredAction === \"duplicate\"\n ? hoverBg\n : \"transparent\",\n color: textPrimary,\n fontSize: 12,\n textAlign: \"left\",\n cursor: \"pointer\",\n }}\n >\n Duplicate\n </button>\n <button\n onClick={(e) => {\n e.stopPropagation();\n handleDelete(preset.id);\n }}\n onMouseEnter={() => setHoveredAction(\"delete\")}\n onMouseLeave={() => setHoveredAction(null)}\n disabled={presets.length <= 1}\n style={{\n display: \"block\",\n width: \"100%\",\n padding: \"8px 12px\",\n border: \"none\",\n backgroundColor:\n hoveredAction === \"delete\"\n ? hoverBg\n : \"transparent\",\n color:\n presets.length <= 1 ? textSecondary : errorColor,\n fontSize: 12,\n textAlign: \"left\",\n cursor:\n presets.length <= 1 ? \"not-allowed\" : \"pointer\",\n opacity: presets.length <= 1 ? 0.5 : 1,\n }}\n >\n Delete\n </button>\n </div>\n )}\n </div>\n );\n })}\n </div>\n\n <button\n onClick={handleCreate}\n onMouseEnter={() => setHoveredAction(\"create\")}\n onMouseLeave={() => setHoveredAction(null)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n width: \"100%\",\n padding: \"10px 12px\",\n border: \"none\",\n borderTop: `1px solid ${borderColor}`,\n backgroundColor:\n hoveredAction === \"create\" ? hoverBg : \"transparent\",\n color: textSecondary,\n fontSize: 13,\n cursor: \"pointer\",\n }}\n >\n <svg\n width={14}\n height={14}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <line x1={12} y1={5} x2={12} y2={19} />\n <line x1={5} y1={12} x2={19} y2={12} />\n </svg>\n New preset\n </button>\n </div>\n )}\n </div>\n );\n}\n","import { useState } from \"react\";\nimport { useTokens } from \"@newtonedev/components\";\nimport type { ColorMode } from \"@newtonedev/components\";\nimport { srgbToHex } from \"newtone\";\nimport type { ColorResult } from \"newtone\";\nimport type { ConfiguratorState } from \"@newtonedev/configurator\";\nimport type { ConfiguratorAction } from \"@newtonedev/configurator\";\nimport {\n ColorsSection,\n DynamicRangeSection,\n IconsSection,\n FontsSection,\n OthersSection,\n} from \"./sections\";\nimport { PresetSelector } from \"./PresetSelector\";\nimport type { Preset } from \"../types\";\n\nconst SIDEBAR_WIDTH = 360;\n\nconst ACCORDION_SECTIONS = [\n { id: \"dynamic-range\", label: \"Dynamic Range\" },\n { id: \"colors\", label: \"Colors\" },\n { id: \"fonts\", label: \"Fonts\" },\n { id: \"icons\", label: \"Icons\" },\n { id: \"others\", label: \"Others\" },\n] as const;\n\nfunction SectionIcon({ id }: { readonly id: string }) {\n const props = {\n width: 16,\n height: 16,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\" as const,\n strokeLinejoin: \"round\" as const,\n };\n\n switch (id) {\n case \"dynamic-range\":\n // Sun/contrast icon\n return (\n <svg {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"5\" />\n <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\" />\n <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\" />\n <line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\" />\n <line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\" />\n <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\" />\n <line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\" />\n <line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\" />\n <line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\" />\n </svg>\n );\n case \"colors\":\n // Palette/droplet icon\n return (\n <svg {...props}>\n <path d=\"M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z\" />\n </svg>\n );\n case \"fonts\":\n // Type/text icon\n return (\n <svg {...props}>\n <polyline points=\"4 7 4 4 20 4 20 7\" />\n <line x1=\"9\" y1=\"20\" x2=\"15\" y2=\"20\" />\n <line x1=\"12\" y1=\"4\" x2=\"12\" y2=\"20\" />\n </svg>\n );\n case \"icons\":\n // Grid icon\n return (\n <svg {...props}>\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" />\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" />\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" />\n <rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" />\n </svg>\n );\n case \"others\":\n // Sliders icon\n return (\n <svg {...props}>\n <line x1=\"4\" y1=\"21\" x2=\"4\" y2=\"14\" />\n <line x1=\"4\" y1=\"10\" x2=\"4\" y2=\"3\" />\n <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"3\" />\n <line x1=\"20\" y1=\"21\" x2=\"20\" y2=\"16\" />\n <line x1=\"20\" y1=\"12\" x2=\"20\" y2=\"3\" />\n <line x1=\"1\" y1=\"14\" x2=\"7\" y2=\"14\" />\n <line x1=\"9\" y1=\"8\" x2=\"15\" y2=\"8\" />\n <line x1=\"17\" y1=\"16\" x2=\"23\" y2=\"16\" />\n </svg>\n );\n default:\n return null;\n }\n}\n\ninterface SidebarProps {\n readonly state: ConfiguratorState;\n readonly dispatch: (action: ConfiguratorAction) => void;\n readonly previewColors: readonly (readonly ColorResult[])[];\n readonly isDirty: boolean;\n readonly onRevert: () => void;\n readonly presets: readonly Preset[];\n readonly activePresetId: string;\n readonly publishedPresetId: string | null;\n readonly onSwitchPreset: (presetId: string) => void;\n readonly onCreatePreset: (name: string) => Promise<string>;\n readonly onRenamePreset: (presetId: string, name: string) => void;\n readonly onDeletePreset: (presetId: string) => Promise<void>;\n readonly onDuplicatePreset: (\n presetId: string,\n name: string,\n ) => Promise<string>;\n readonly colorMode: ColorMode;\n readonly onColorModeChange: (mode: ColorMode) => void;\n}\n\nexport function Sidebar({\n state,\n dispatch,\n previewColors,\n isDirty,\n onRevert,\n presets,\n activePresetId,\n publishedPresetId,\n onSwitchPreset,\n onCreatePreset,\n onRenamePreset,\n onDeletePreset,\n onDuplicatePreset,\n colorMode,\n onColorModeChange,\n}: SidebarProps) {\n const tokens = useTokens();\n const [openSections, setOpenSections] = useState<Set<string>>(\n new Set([\"dynamic-range\", \"colors\"]),\n );\n const [hoveredSectionId, setHoveredSectionId] = useState<string | null>(null);\n\n const borderColor = srgbToHex(tokens.border.srgb);\n const bgColor = srgbToHex(tokens.background.srgb);\n const hoverBg = `${borderColor}10`;\n\n const toggleSection = (id: string) => {\n setOpenSections((prev) => {\n const next = new Set(prev);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n return next;\n });\n };\n\n const renderSectionContent = (sectionId: string) => {\n switch (sectionId) {\n case \"dynamic-range\":\n return <DynamicRangeSection state={state} dispatch={dispatch} />;\n case \"colors\":\n return (\n <ColorsSection\n state={state}\n dispatch={dispatch}\n previewColors={previewColors}\n colorMode={colorMode}\n onColorModeChange={onColorModeChange}\n />\n );\n case \"icons\":\n return <IconsSection state={state} dispatch={dispatch} />;\n case \"fonts\":\n return <FontsSection state={state} dispatch={dispatch} />;\n case \"others\":\n return <OthersSection state={state} dispatch={dispatch} />;\n default:\n return null;\n }\n };\n\n return (\n <div\n style={{\n width: SIDEBAR_WIDTH,\n flexShrink: 0,\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100vh\",\n borderLeft: `1px solid ${borderColor}`,\n backgroundColor: bgColor,\n }}\n >\n {/* Sticky Header */}\n <div\n style={{\n flexShrink: 0,\n padding: \"16px 20px\",\n borderBottom: `1px solid ${borderColor}`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n }}\n >\n <span\n style={{\n fontSize: 16,\n fontWeight: 700,\n color: srgbToHex(tokens.textPrimary.srgb),\n }}\n >\n newtone\n </span>\n <PresetSelector\n presets={presets}\n activePresetId={activePresetId}\n publishedPresetId={publishedPresetId}\n onSwitchPreset={onSwitchPreset}\n onCreatePreset={onCreatePreset}\n onRenamePreset={onRenamePreset}\n onDeletePreset={onDeletePreset}\n onDuplicatePreset={onDuplicatePreset}\n />\n </div>\n\n {/* Scrollable Accordion Area */}\n <div\n style={{\n flex: 1,\n overflowY: \"auto\",\n overflowX: \"hidden\",\n }}\n >\n {ACCORDION_SECTIONS.map((section) => {\n const isOpen = openSections.has(section.id);\n const isHovered = hoveredSectionId === section.id;\n\n return (\n <div key={section.id}>\n <button\n onClick={() => toggleSection(section.id)}\n onMouseEnter={() => setHoveredSectionId(section.id)}\n onMouseLeave={() => setHoveredSectionId(null)}\n aria-expanded={isOpen}\n aria-controls={`section-${section.id}`}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n padding: \"12px 20px\",\n border: \"none\",\n borderBottom: `1px solid ${borderColor}`,\n background: isHovered ? hoverBg : \"none\",\n cursor: \"pointer\",\n fontSize: 14,\n fontWeight: 500,\n color: srgbToHex(tokens.textPrimary.srgb),\n transition: \"background-color 100ms ease\",\n }}\n >\n <span style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <SectionIcon id={section.id} />\n {section.label}\n </span>\n <svg\n width={12}\n height={12}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n style={{\n transform: isOpen ? \"rotate(180deg)\" : \"none\",\n transition: \"transform 150ms ease\",\n }}\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </button>\n {isOpen && (\n <div\n id={`section-${section.id}`}\n role=\"region\"\n aria-label={section.label}\n style={{\n padding: \"16px 20px\",\n borderBottom: `1px solid ${borderColor}`,\n }}\n >\n {renderSectionContent(section.id)}\n </div>\n )}\n </div>\n );\n })}\n </div>\n\n {/* Sticky Footer */}\n <div\n style={{\n flexShrink: 0,\n padding: \"12px 20px\",\n borderTop: `1px solid ${borderColor}`,\n }}\n >\n <button\n disabled={!isDirty}\n onClick={onRevert}\n aria-label=\"Revert all changes to the last saved version\"\n style={{\n width: \"100%\",\n padding: \"8px 16px\",\n borderRadius: 6,\n border: `1px solid ${borderColor}`,\n backgroundColor: \"transparent\",\n color: isDirty\n ? srgbToHex(tokens.textPrimary.srgb)\n : srgbToHex(tokens.textSecondary.srgb),\n fontSize: 13,\n cursor: isDirty ? \"pointer\" : \"not-allowed\",\n opacity: isDirty ? 1 : 0.5,\n }}\n >\n Revert Changes\n </button>\n </div>\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\nimport { useTokens, Button } from \"@newtonedev/components\";\nimport { srgbToHex } from \"newtone\";\nimport type { SaveStatus } from \"../types\";\n\ninterface EditorHeaderProps {\n readonly saveStatus: SaveStatus;\n readonly isPublished: boolean;\n readonly publishing: boolean;\n readonly onPublish: () => void;\n readonly onRetry: () => void;\n readonly headerSlots?: {\n readonly left?: ReactNode;\n readonly right?: ReactNode;\n };\n}\n\nconst STATUS_LABEL: Record<SaveStatus, string> = {\n saved: \"Saved\",\n saving: \"Saving...\",\n unsaved: \"Unsaved changes\",\n error: \"Save failed\",\n};\n\nexport function EditorHeader({\n saveStatus,\n isPublished,\n publishing,\n onPublish,\n onRetry,\n headerSlots,\n}: EditorHeaderProps) {\n const tokens = useTokens();\n const borderColor = srgbToHex(tokens.border.srgb);\n\n const statusColor: Record<SaveStatus, string> = {\n saved: srgbToHex(tokens.success.srgb),\n saving: srgbToHex(tokens.warning.srgb),\n unsaved: srgbToHex(tokens.textSecondary.srgb),\n error: srgbToHex(tokens.error.srgb),\n };\n\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"12px 24px\",\n borderBottom: `1px solid ${borderColor}`,\n backgroundColor: srgbToHex(tokens.background.srgb),\n flexShrink: 0,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 16 }}>\n {headerSlots?.left}\n </div>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12 }}>\n <span\n style={{\n fontSize: 12,\n color: statusColor[saveStatus],\n fontWeight: 500,\n }}\n >\n {STATUS_LABEL[saveStatus]}\n </span>\n {saveStatus === \"error\" && (\n <Button variant=\"ghost\" size=\"sm\" icon=\"refresh\" onPress={onRetry}>\n Retry\n </Button>\n )}\n <Button\n variant=\"primary\"\n size=\"sm\"\n icon=\"publish\"\n onPress={onPublish}\n disabled={isPublished || publishing}\n >\n {publishing ? \"Publishing...\" : isPublished ? \"Published\" : \"Publish\"}\n </Button>\n {headerSlots?.right}\n </div>\n </div>\n );\n}\n","import { useState } from \"react\";\nimport { useTokens } from \"@newtonedev/components\";\nimport { srgbToHex } from \"newtone\";\nimport type { ThemeName } from \"../types\";\n\ninterface ThemeBarProps {\n readonly activeTheme: ThemeName;\n readonly onThemeChange: (theme: ThemeName) => void;\n}\n\nconst THEME_CHIPS: readonly { id: ThemeName; label: string }[] = [\n { id: \"neutral\", label: \"Neutral\" },\n { id: \"primary\", label: \"Primary\" },\n { id: \"secondary\", label: \"Secondary\" },\n { id: \"strong\", label: \"Strong\" },\n];\n\nexport function ThemeBar({ activeTheme, onThemeChange }: ThemeBarProps) {\n const tokens = useTokens();\n const [hoveredChipId, setHoveredChipId] = useState<string | null>(null);\n\n const borderColor = srgbToHex(tokens.border.srgb);\n const interactiveColor = srgbToHex(tokens.interactive.srgb);\n\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n padding: \"8px 24px\",\n borderBottom: `1px solid ${borderColor}`,\n backgroundColor: srgbToHex(tokens.background.srgb),\n flexShrink: 0,\n }}\n >\n {/* Theme Chips */}\n <div style={{ display: \"flex\", gap: 8 }} role=\"group\" aria-label=\"Theme\">\n {THEME_CHIPS.map((chip) => {\n const isActive = chip.id === activeTheme;\n const isHovered = hoveredChipId === chip.id;\n\n return (\n <button\n key={chip.id}\n onClick={() => onThemeChange(chip.id)}\n onMouseEnter={() => setHoveredChipId(chip.id)}\n onMouseLeave={() => setHoveredChipId(null)}\n aria-pressed={isActive}\n style={{\n padding: \"4px 12px\",\n borderRadius: 16,\n border: `1px solid ${srgbToHex(\n isActive ? tokens.interactive.srgb : tokens.border.srgb,\n )}`,\n backgroundColor: isActive\n ? interactiveColor\n : isHovered\n ? `${interactiveColor}10`\n : \"transparent\",\n color: isActive\n ? \"#fff\"\n : srgbToHex(tokens.textPrimary.srgb),\n fontSize: 12,\n fontWeight: 500,\n cursor: \"pointer\",\n transition: \"background-color 150ms ease\",\n }}\n >\n {chip.label}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","import { useState } from \"react\";\nimport {\n useTokens,\n CATEGORIES,\n getComponentsByCategory,\n} from \"@newtonedev/components\";\nimport { srgbToHex } from \"newtone\";\nimport type { PreviewView } from \"../types\";\n\ninterface TableOfContentsProps {\n readonly activeView: PreviewView;\n readonly selectedComponentId: string | null;\n readonly onNavigate: (view: PreviewView) => void;\n}\n\nconst TOC_WIDTH = 220;\n\nexport function TableOfContents({\n activeView,\n selectedComponentId,\n onNavigate,\n}: TableOfContentsProps) {\n const tokens = useTokens();\n const [hoveredId, setHoveredId] = useState<string | null>(null);\n\n const borderColor = srgbToHex(tokens.border.srgb);\n const activeColor = srgbToHex(tokens.interactive.srgb);\n const textPrimary = srgbToHex(tokens.textPrimary.srgb);\n const textSecondary = srgbToHex(tokens.textSecondary.srgb);\n const hoverBg = `${borderColor}20`;\n\n const isOverviewActive = activeView.kind === \"overview\";\n\n return (\n <nav\n aria-label=\"Component navigation\"\n style={{\n width: TOC_WIDTH,\n flexShrink: 0,\n overflowY: \"auto\",\n borderRight: `1px solid ${borderColor}`,\n padding: \"16px 0\",\n backgroundColor: srgbToHex(tokens.background.srgb),\n }}\n >\n <button\n onClick={() => onNavigate({ kind: \"overview\" })}\n onMouseEnter={() => setHoveredId(\"overview\")}\n onMouseLeave={() => setHoveredId(null)}\n aria-current={isOverviewActive ? \"page\" : undefined}\n style={{\n display: \"block\",\n width: \"100%\",\n padding: \"6px 20px\",\n border: \"none\",\n background: isOverviewActive\n ? `${activeColor}14`\n : hoveredId === \"overview\"\n ? hoverBg\n : \"none\",\n cursor: \"pointer\",\n textAlign: \"left\",\n fontSize: 13,\n fontWeight: isOverviewActive ? 600 : 400,\n color: isOverviewActive ? activeColor : textPrimary,\n transition: \"background-color 100ms ease\",\n }}\n >\n Overview\n </button>\n\n {CATEGORIES.map((category) => {\n const components = getComponentsByCategory(category.id);\n const isCategoryActive =\n activeView.kind === \"category\" &&\n activeView.categoryId === category.id;\n\n return (\n <div key={category.id} style={{ marginTop: 16 }}>\n <button\n onClick={() =>\n onNavigate({ kind: \"category\", categoryId: category.id })\n }\n onMouseEnter={() => setHoveredId(`cat-${category.id}`)}\n onMouseLeave={() => setHoveredId(null)}\n aria-current={isCategoryActive ? \"page\" : undefined}\n style={{\n display: \"block\",\n width: \"100%\",\n padding: \"6px 20px\",\n border: \"none\",\n background: isCategoryActive\n ? `${activeColor}14`\n : hoveredId === `cat-${category.id}`\n ? hoverBg\n : \"none\",\n cursor: \"pointer\",\n textAlign: \"left\",\n fontSize: 11,\n fontWeight: 600,\n color: isCategoryActive ? activeColor : textSecondary,\n textTransform: \"uppercase\",\n letterSpacing: 0.5,\n transition: \"background-color 100ms ease\",\n }}\n >\n {category.name}\n </button>\n\n {components.map((comp) => {\n const isComponentActive =\n (activeView.kind === \"component\" &&\n activeView.componentId === comp.id) ||\n selectedComponentId === comp.id;\n\n return (\n <button\n key={comp.id}\n onClick={() =>\n onNavigate({ kind: \"component\", componentId: comp.id })\n }\n onMouseEnter={() => setHoveredId(comp.id)}\n onMouseLeave={() => setHoveredId(null)}\n aria-current={isComponentActive ? \"page\" : undefined}\n style={{\n display: \"block\",\n width: \"100%\",\n padding: \"4px 20px 4px 32px\",\n border: \"none\",\n background: isComponentActive\n ? `${activeColor}14`\n : hoveredId === comp.id\n ? hoverBg\n : \"none\",\n cursor: \"pointer\",\n textAlign: \"left\",\n fontSize: 13,\n fontWeight: isComponentActive ? 600 : 400,\n color: isComponentActive ? activeColor : textPrimary,\n transition: \"background-color 100ms ease\",\n }}\n >\n {comp.name}\n </button>\n );\n })}\n </div>\n );\n })}\n </nav>\n );\n}\n","import { useState, useCallback } from \"react\";\nimport {\n Button,\n Card,\n TextInput,\n Select,\n Toggle,\n Slider,\n HueSlider,\n useTokens,\n} from \"@newtonedev/components\";\nimport { srgbToHex } from \"newtone\";\n\ninterface ComponentRendererProps {\n readonly componentId: string;\n readonly props: Record<string, unknown>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyProps = any;\n\nfunction StatefulToggle(props: AnyProps) {\n const [value, setValue] = useState(props.value as boolean);\n return <Toggle {...props} value={value} onValueChange={setValue} />;\n}\n\nfunction StatefulSlider(props: AnyProps) {\n const [value, setValue] = useState(props.value as number);\n return <Slider {...props} value={value} onValueChange={setValue} />;\n}\n\nfunction StatefulHueSlider(props: AnyProps) {\n const [value, setValue] = useState(props.value as number);\n return <HueSlider {...props} value={value} onValueChange={setValue} />;\n}\n\nfunction StatefulTextInput(props: AnyProps) {\n const [value, setValue] = useState((props.value as string) ?? \"\");\n return <TextInput {...props} value={value} onChangeText={setValue} />;\n}\n\nfunction StatefulSelect(props: AnyProps) {\n const [value, setValue] = useState(props.value as string);\n return <Select {...props} value={value} onValueChange={setValue} />;\n}\n\nfunction CardPreview(props: AnyProps) {\n const tokens = useTokens();\n return (\n <Card {...props} style={{ padding: 20, minWidth: 200 }}>\n <div\n style={{\n fontSize: 14,\n fontWeight: 600,\n color: srgbToHex(tokens.textPrimary.srgb),\n marginBottom: 8,\n }}\n >\n Card Title\n </div>\n <div\n style={{\n fontSize: 13,\n color: srgbToHex(tokens.textSecondary.srgb),\n lineHeight: 1.4,\n }}\n >\n Sample card content at elevation {String(props.elevation ?? 0)}.\n </div>\n </Card>\n );\n}\n\nexport function ComponentRenderer({ componentId, props }: ComponentRendererProps) {\n const noop = useCallback(() => {}, []);\n\n switch (componentId) {\n case \"button\": {\n const icon = (props.icon as string) || undefined;\n return (\n <Button\n variant={props.variant as AnyProps}\n size={props.size as AnyProps}\n icon={icon}\n iconPosition={props.iconPosition as AnyProps}\n onPress={noop}\n >\n Button\n </Button>\n );\n }\n case \"text-input\":\n return <StatefulTextInput {...props} />;\n case \"select\":\n return <StatefulSelect {...props} />;\n case \"toggle\":\n return <StatefulToggle {...props} />;\n case \"slider\":\n return <StatefulSlider {...props} />;\n case \"hue-slider\":\n return <StatefulHueSlider {...props} />;\n case \"card\":\n return <CardPreview {...props} />;\n default:\n return null;\n }\n}\n","import { useTokens } from \"@newtonedev/components\";\nimport { srgbToHex } from \"newtone\";\nimport { CATEGORIES, getComponentsByCategory } from \"@newtonedev/components\";\nimport { ComponentRenderer } from \"./ComponentRenderer\";\nimport { useHover } from \"../hooks/useHover\";\n\ninterface OverviewViewProps {\n readonly onNavigateToCategory: (categoryId: string) => void;\n readonly onNavigateToComponent: (componentId: string) => void;\n}\n\nexport function OverviewView({\n onNavigateToCategory,\n onNavigateToComponent,\n}: OverviewViewProps) {\n const tokens = useTokens();\n\n return (\n <div style={{ padding: 32 }}>\n <h2\n style={{\n fontSize: 22,\n fontWeight: 700,\n color: srgbToHex(tokens.textPrimary.srgb),\n margin: 0,\n marginBottom: 4,\n }}\n >\n Component Library\n </h2>\n <p\n style={{\n fontSize: 14,\n color: srgbToHex(tokens.textSecondary.srgb),\n margin: 0,\n marginBottom: 32,\n }}\n >\n Browse components to see how your color system affects them.\n </p>\n\n {CATEGORIES.map((category) => {\n const components = getComponentsByCategory(category.id);\n if (components.length === 0) return null;\n\n return (\n <div key={category.id} style={{ marginBottom: 32 }}>\n <button\n onClick={() => onNavigateToCategory(category.id)}\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n padding: 0,\n margin: 0,\n marginBottom: 16,\n display: \"block\",\n }}\n >\n <span\n style={{\n fontSize: 16,\n fontWeight: 600,\n color: srgbToHex(tokens.textPrimary.srgb),\n }}\n >\n {category.name}\n </span>\n <span\n style={{\n fontSize: 13,\n color: srgbToHex(tokens.textSecondary.srgb),\n marginLeft: 8,\n }}\n >\n {category.description}\n </span>\n </button>\n\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(240px, 1fr))\",\n gap: 16,\n }}\n >\n {components.map((component) => (\n <ComponentCard\n key={component.id}\n componentId={component.id}\n name={component.name}\n description={component.description}\n defaultVariantProps={component.variants[0]?.props ?? {}}\n onClick={() => onNavigateToComponent(component.id)}\n />\n ))}\n </div>\n </div>\n );\n })}\n </div>\n );\n}\n\nfunction ComponentCard({\n componentId,\n name,\n description,\n defaultVariantProps,\n onClick,\n}: {\n readonly componentId: string;\n readonly name: string;\n readonly description: string;\n readonly defaultVariantProps: Record<string, unknown>;\n readonly onClick: () => void;\n}) {\n const tokens = useTokens();\n const { isHovered, hoverProps } = useHover();\n\n return (\n <button\n onClick={onClick}\n {...hoverProps}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n padding: 20,\n borderRadius: 12,\n border: `1px solid ${srgbToHex(\n isHovered ? tokens.interactive.srgb : tokens.border.srgb,\n )}`,\n backgroundColor: srgbToHex(tokens.backgroundElevated.srgb),\n cursor: \"pointer\",\n textAlign: \"left\",\n transform: isHovered ? \"translateY(-1px)\" : \"none\",\n boxShadow: isHovered ? \"0 2px 8px rgba(0,0,0,0.08)\" : \"none\",\n transition:\n \"border-color 150ms ease, transform 150ms ease, box-shadow 150ms ease\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: 16,\n marginBottom: 16,\n borderRadius: 8,\n backgroundColor: srgbToHex(tokens.background.srgb),\n minHeight: 60,\n }}\n >\n <ComponentRenderer componentId={componentId} props={defaultVariantProps} />\n </div>\n <span\n style={{\n fontSize: 14,\n fontWeight: 600,\n color: srgbToHex(tokens.textPrimary.srgb),\n marginBottom: 4,\n }}\n >\n {name}\n </span>\n <span\n style={{\n fontSize: 12,\n color: srgbToHex(tokens.textSecondary.srgb),\n lineHeight: 1.4,\n }}\n >\n {description}\n </span>\n </button>\n );\n}\n","import { useState } from \"react\";\nimport { useTokens } from \"@newtonedev/components\";\nimport { srgbToHex } from \"newtone\";\nimport { getCategory, getComponentsByCategory } from \"@newtonedev/components\";\nimport { ComponentRenderer } from \"./ComponentRenderer\";\n\ninterface CategoryViewProps {\n readonly categoryId: string;\n readonly onNavigateToComponent: (componentId: string) => void;\n}\n\nexport function CategoryView({\n categoryId,\n onNavigateToComponent,\n}: CategoryViewProps) {\n const tokens = useTokens();\n const category = getCategory(categoryId);\n const components = getComponentsByCategory(categoryId);\n const [hoveredId, setHoveredId] = useState<string | null>(null);\n\n if (!category) return null;\n\n return (\n <div style={{ padding: 32 }}>\n <h2\n style={{\n fontSize: 22,\n fontWeight: 700,\n color: srgbToHex(tokens.textPrimary.srgb),\n margin: 0,\n marginBottom: 4,\n }}\n >\n {category.name}\n </h2>\n <p\n style={{\n fontSize: 14,\n color: srgbToHex(tokens.textSecondary.srgb),\n margin: 0,\n marginBottom: 32,\n }}\n >\n {category.description}\n </p>\n\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(280px, 1fr))\",\n gap: 20,\n }}\n >\n {components.map((component) => {\n const isHovered = hoveredId === component.id;\n\n return (\n <button\n key={component.id}\n onClick={() => onNavigateToComponent(component.id)}\n onMouseEnter={() => setHoveredId(component.id)}\n onMouseLeave={() => setHoveredId(null)}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n padding: 24,\n borderRadius: 12,\n border: `1px solid ${srgbToHex(\n isHovered ? tokens.interactive.srgb : tokens.border.srgb,\n )}`,\n backgroundColor: srgbToHex(tokens.backgroundElevated.srgb),\n cursor: \"pointer\",\n textAlign: \"left\",\n transform: isHovered ? \"translateY(-1px)\" : \"none\",\n boxShadow: isHovered\n ? \"0 2px 8px rgba(0,0,0,0.08)\"\n : \"none\",\n transition:\n \"border-color 150ms ease, transform 150ms ease, box-shadow 150ms ease\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: 20,\n marginBottom: 16,\n borderRadius: 8,\n backgroundColor: srgbToHex(tokens.background.srgb),\n minHeight: 60,\n }}\n >\n <ComponentRenderer\n componentId={component.id}\n props={component.variants[0]?.props ?? {}}\n />\n </div>\n <span\n style={{\n fontSize: 15,\n fontWeight: 600,\n color: srgbToHex(tokens.textPrimary.srgb),\n marginBottom: 4,\n }}\n >\n {component.name}\n </span>\n <span\n style={{\n fontSize: 13,\n color: srgbToHex(tokens.textSecondary.srgb),\n lineHeight: 1.4,\n }}\n >\n {component.description}\n </span>\n <span\n style={{\n fontSize: 12,\n color: srgbToHex(tokens.textSecondary.srgb),\n marginTop: 8,\n }}\n >\n {component.variants.length} variant\n {component.variants.length !== 1 ? \"s\" : \"\"}\n </span>\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","import { useState } from \"react\";\nimport { useTokens } from \"@newtonedev/components\";\nimport { srgbToHex } from \"newtone\";\nimport { getComponent } from \"@newtonedev/components\";\nimport { ComponentRenderer } from \"./ComponentRenderer\";\n\ninterface ComponentDetailViewProps {\n readonly componentId: string;\n readonly selectedVariantId: string | null;\n readonly propOverrides?: Record<string, unknown>;\n readonly onSelectVariant: (variantId: string) => void;\n}\n\nexport function ComponentDetailView({\n componentId,\n selectedVariantId,\n propOverrides,\n onSelectVariant,\n}: ComponentDetailViewProps) {\n const tokens = useTokens();\n const component = getComponent(componentId);\n const [hoveredId, setHoveredId] = useState<string | null>(null);\n\n if (!component) return null;\n\n const interactiveColor = srgbToHex(tokens.interactive.srgb);\n\n return (\n <div style={{ padding: 32 }}>\n <h2\n style={{\n fontSize: 22,\n fontWeight: 700,\n color: srgbToHex(tokens.textPrimary.srgb),\n margin: 0,\n marginBottom: 4,\n }}\n >\n {component.name}\n </h2>\n <p\n style={{\n fontSize: 14,\n color: srgbToHex(tokens.textSecondary.srgb),\n margin: 0,\n marginBottom: 32,\n }}\n >\n {component.description}\n </p>\n\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(200px, 1fr))\",\n gap: 16,\n }}\n >\n {component.variants.map((variant) => {\n const isSelected = selectedVariantId === variant.id;\n const isHovered = hoveredId === variant.id;\n\n const borderColor = isSelected\n ? interactiveColor\n : isHovered\n ? `${interactiveColor}66`\n : srgbToHex(tokens.border.srgb);\n\n return (\n <button\n key={variant.id}\n onClick={() => onSelectVariant(variant.id)}\n onMouseEnter={() => setHoveredId(variant.id)}\n onMouseLeave={() => setHoveredId(null)}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"stretch\",\n padding: 16,\n borderRadius: 12,\n border: `2px solid ${borderColor}`,\n backgroundColor: srgbToHex(tokens.backgroundElevated.srgb),\n cursor: \"pointer\",\n textAlign: \"left\",\n transition: \"border-color 150ms ease\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: 20,\n marginBottom: 12,\n borderRadius: 8,\n backgroundColor: srgbToHex(tokens.background.srgb),\n minHeight: 56,\n }}\n >\n <ComponentRenderer\n componentId={componentId}\n props={\n isSelected && propOverrides\n ? { ...variant.props, ...propOverrides }\n : variant.props\n }\n />\n </div>\n <span\n style={{\n fontSize: 13,\n fontWeight: isSelected ? 600 : 500,\n color: isSelected\n ? interactiveColor\n : srgbToHex(tokens.textPrimary.srgb),\n }}\n >\n {variant.label}\n </span>\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","import { useCallback } from \"react\";\nimport { useTokens } from \"@newtonedev/components\";\nimport { srgbToHex } from \"newtone\";\nimport { OverviewView } from \"../preview/OverviewView\";\nimport { CategoryView } from \"../preview/CategoryView\";\nimport { ComponentDetailView } from \"../preview/ComponentDetailView\";\nimport type { PreviewView } from \"../types\";\n\ninterface PreviewWindowProps {\n readonly view: PreviewView;\n readonly selectedVariantId: string | null;\n readonly propOverrides?: Record<string, unknown>;\n readonly onNavigate: (view: PreviewView) => void;\n readonly onSelectVariant: (variantId: string) => void;\n}\n\nexport function PreviewWindow({\n view,\n selectedVariantId,\n propOverrides,\n onNavigate,\n onSelectVariant,\n}: PreviewWindowProps) {\n const tokens = useTokens();\n\n const handleNavigateToCategory = useCallback(\n (categoryId: string) => onNavigate({ kind: \"category\", categoryId }),\n [onNavigate],\n );\n\n const handleNavigateToComponent = useCallback(\n (componentId: string) => onNavigate({ kind: \"component\", componentId }),\n [onNavigate],\n );\n\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n backgroundColor: srgbToHex(tokens.background.srgb),\n }}\n >\n <div style={{ flex: 1, overflowY: \"auto\" }}>\n {view.kind === \"overview\" && (\n <OverviewView\n onNavigateToCategory={handleNavigateToCategory}\n onNavigateToComponent={handleNavigateToComponent}\n />\n )}\n {view.kind === \"category\" && (\n <CategoryView\n categoryId={view.categoryId}\n onNavigateToComponent={handleNavigateToComponent}\n />\n )}\n {view.kind === \"component\" && (\n <ComponentDetailView\n componentId={view.componentId}\n selectedVariantId={selectedVariantId}\n propOverrides={propOverrides}\n onSelectVariant={onSelectVariant}\n />\n )}\n </div>\n </div>\n );\n}\n","import { useState, useCallback } from \"react\";\nimport { useTokens, Button } from \"@newtonedev/components\";\nimport { srgbToHex } from \"newtone\";\n\nexport function CopyButton({ text }: { readonly text: string }) {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = useCallback(async () => {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n }, [text]);\n\n return (\n <Button variant=\"ghost\" size=\"sm\" icon={copied ? \"check\" : \"content_copy\"} onPress={handleCopy}>\n {copied ? \"Copied!\" : \"Copy\"}\n </Button>\n );\n}\n\nexport function CodeBlock({\n code,\n}: {\n readonly code: string;\n}) {\n const tokens = useTokens();\n\n return (\n <div style={{ position: \"relative\" }}>\n <div\n style={{\n position: \"absolute\",\n top: 8,\n right: 8,\n }}\n >\n <CopyButton text={code} />\n </div>\n <pre\n style={{\n backgroundColor: srgbToHex(tokens.backgroundSunken.srgb),\n border: `1px solid ${srgbToHex(tokens.border.srgb)}`,\n borderRadius: 8,\n padding: 16,\n paddingRight: 80,\n overflow: \"auto\",\n fontSize: 13,\n lineHeight: 1.5,\n fontFamily: \"'SF Mono', 'Fira Code', 'Fira Mono', Menlo, monospace\",\n color: srgbToHex(tokens.textPrimary.srgb),\n margin: 0,\n }}\n >\n <code>{code}</code>\n </pre>\n </div>\n );\n}\n","import { useCallback, type KeyboardEvent } from \"react\";\nimport { useTokens, getComponent, generateComponentCode, Select } from \"@newtonedev/components\";\nimport type { EditableProp } from \"@newtonedev/components\";\nimport { srgbToHex } from \"newtone\";\nimport { CodeBlock } from \"./CodeBlock\";\nimport type { SidebarSelection } from \"../types\";\n\ninterface RightSidebarProps {\n readonly selection: SidebarSelection;\n readonly propOverrides: Record<string, unknown>;\n readonly onPropOverride: (name: string, value: unknown) => void;\n readonly onResetOverrides: () => void;\n readonly onClose: () => void;\n readonly onScopeToComponent: () => void;\n}\n\nexport function RightSidebar({\n selection,\n propOverrides,\n onPropOverride,\n onResetOverrides,\n onClose,\n onScopeToComponent,\n}: RightSidebarProps) {\n const tokens = useTokens();\n const visible = selection !== null;\n\n const component = selection ? getComponent(selection.componentId) : null;\n const variant =\n selection?.scope === \"variant\"\n ? component?.variants.find((v) => v.id === selection.variantId)\n : null;\n\n const code = component ? generateComponentCode(component, propOverrides) : \"\";\n\n return (\n <aside\n aria-label=\"Component inspector\"\n style={{\n position: \"absolute\",\n inset: 0,\n zIndex: 1,\n transform: visible ? \"translateX(0)\" : \"translateX(100%)\",\n opacity: visible ? 1 : 0,\n transition: \"transform 200ms ease, opacity 150ms ease\",\n display: \"flex\",\n flexDirection: \"column\",\n backgroundColor: srgbToHex(tokens.background.srgb),\n borderLeft: `1px solid ${srgbToHex(tokens.border.srgb)}`,\n }}\n >\n {selection && component && (\n <>\n {/* Header */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"12px 16px\",\n borderBottom: `1px solid ${srgbToHex(tokens.border.srgb)}`,\n flexShrink: 0,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8, minWidth: 0 }}>\n <button\n onClick={onClose}\n aria-label=\"Back to controls\"\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n padding: 4,\n color: srgbToHex(tokens.textSecondary.srgb),\n fontSize: 16,\n lineHeight: 1,\n flexShrink: 0,\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n <svg\n width={16}\n height={16}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"19\" y1=\"12\" x2=\"5\" y2=\"12\" />\n <polyline points=\"12 19 5 12 12 5\" />\n </svg>\n </button>\n {selection.scope === \"variant\" && variant ? (\n <>\n <button\n onClick={onScopeToComponent}\n aria-label={`Back to ${component.name} overview`}\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n padding: 0,\n fontSize: 14,\n fontWeight: 500,\n color: srgbToHex(tokens.interactive.srgb),\n whiteSpace: \"nowrap\",\n }}\n >\n {component.name}\n </button>\n <span\n style={{\n fontSize: 13,\n color: srgbToHex(tokens.textSecondary.srgb),\n }}\n >\n /\n </span>\n <span\n style={{\n fontSize: 14,\n fontWeight: 600,\n color: srgbToHex(tokens.textPrimary.srgb),\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {variant.label}\n </span>\n </>\n ) : (\n <span\n style={{\n fontSize: 14,\n fontWeight: 600,\n color: srgbToHex(tokens.textPrimary.srgb),\n }}\n >\n {component.name}\n </span>\n )}\n </div>\n </div>\n\n {/* Body */}\n <div\n style={{\n flex: 1,\n overflowY: \"auto\",\n padding: 16,\n }}\n >\n <h3\n style={{\n fontSize: 13,\n fontWeight: 600,\n color: srgbToHex(tokens.textSecondary.srgb),\n textTransform: \"uppercase\",\n letterSpacing: 0.5,\n margin: 0,\n marginBottom: 16,\n }}\n >\n Properties\n </h3>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 12 }}>\n {component.editableProps.map((prop) => (\n <PropControl\n key={prop.name}\n prop={prop}\n value={propOverrides[prop.name] ?? prop.defaultValue}\n onChange={(value) => onPropOverride(prop.name, value)}\n />\n ))}\n </div>\n\n {selection.scope === \"variant\" && (\n <button\n onClick={onResetOverrides}\n aria-label=\"Reset properties to variant defaults\"\n style={{\n marginTop: 20,\n width: \"100%\",\n padding: \"8px 12px\",\n borderRadius: 6,\n border: `1px solid ${srgbToHex(tokens.border.srgb)}`,\n backgroundColor: \"transparent\",\n color: srgbToHex(tokens.textSecondary.srgb),\n fontSize: 13,\n cursor: \"pointer\",\n }}\n >\n Reset to variant defaults\n </button>\n )}\n\n <h3\n style={{\n fontSize: 13,\n fontWeight: 600,\n color: srgbToHex(tokens.textSecondary.srgb),\n textTransform: \"uppercase\",\n letterSpacing: 0.5,\n margin: 0,\n marginTop: 24,\n marginBottom: 12,\n }}\n >\n Code\n </h3>\n\n <CodeBlock code={code} />\n </div>\n </>\n )}\n </aside>\n );\n}\n\nfunction PropControl({\n prop,\n value,\n onChange,\n}: {\n readonly prop: EditableProp;\n readonly value: unknown;\n readonly onChange: (value: unknown) => void;\n}) {\n const tokens = useTokens();\n\n const handleToggleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n onChange(!value);\n }\n },\n [onChange, value],\n );\n\n const inputStyle = {\n width: \"100%\",\n padding: \"6px 10px\",\n borderRadius: 6,\n border: `1px solid ${srgbToHex(tokens.border.srgb)}`,\n backgroundColor: srgbToHex(tokens.backgroundSunken.srgb),\n color: srgbToHex(tokens.textPrimary.srgb),\n fontSize: 13,\n fontFamily: \"'SF Mono', 'Fira Code', Menlo, monospace\",\n boxSizing: \"border-box\" as const,\n };\n\n return (\n <div>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: 4,\n }}\n >\n <span\n style={{\n fontSize: 12,\n fontWeight: 500,\n color: srgbToHex(tokens.textPrimary.srgb),\n }}\n >\n {prop.label}\n </span>\n <span\n style={{\n fontSize: 11,\n color: srgbToHex(tokens.textSecondary.srgb),\n fontFamily: \"'SF Mono', 'Fira Code', Menlo, monospace\",\n }}\n >\n {prop.control}\n </span>\n </div>\n\n {prop.control === \"select\" && prop.options && (\n <Select\n options={prop.options.map((o) => ({\n label: o.label,\n value: String(o.value),\n }))}\n value={String(value)}\n onValueChange={(v) => {\n const option = prop.options!.find((o) => String(o.value) === v);\n if (option) onChange(option.value);\n }}\n size=\"sm\"\n />\n )}\n\n {prop.control === \"text\" && (\n <input\n type=\"text\"\n value={String(value)}\n onChange={(e) => onChange(e.target.value)}\n style={inputStyle}\n />\n )}\n\n {prop.control === \"number\" && (\n <input\n type=\"number\"\n value={Number(value)}\n onChange={(e) => onChange(Number(e.target.value))}\n style={inputStyle}\n />\n )}\n\n {prop.control === \"toggle\" && (\n <div\n role=\"switch\"\n aria-checked={!!value}\n aria-label={prop.label}\n tabIndex={0}\n onClick={() => onChange(!value)}\n onKeyDown={handleToggleKeyDown}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 8,\n cursor: \"pointer\",\n }}\n >\n <div\n style={{\n width: 36,\n height: 20,\n borderRadius: 10,\n backgroundColor: value\n ? srgbToHex(tokens.interactive.srgb)\n : srgbToHex(tokens.border.srgb),\n position: \"relative\",\n transition: \"background-color 150ms ease\",\n flexShrink: 0,\n }}\n >\n <div\n style={{\n width: 16,\n height: 16,\n borderRadius: 8,\n backgroundColor: \"#fff\",\n position: \"absolute\",\n top: 2,\n left: value ? 18 : 2,\n transition: \"left 150ms ease\",\n }}\n />\n </div>\n <span\n style={{\n fontSize: 12,\n color: srgbToHex(tokens.textSecondary.srgb),\n }}\n >\n {value ? \"true\" : \"false\"}\n </span>\n </div>\n )}\n </div>\n );\n}\n","import { NewtoneProvider } from \"@newtonedev/components\";\nimport { useEditorState } from \"./hooks/useEditorState\";\nimport { EditorShell } from \"./components/EditorShell\";\nimport { Sidebar } from \"./components/Sidebar\";\nimport { EditorHeader } from \"./components/EditorHeader\";\nimport { ThemeBar } from \"./components/ThemeBar\";\nimport { TableOfContents } from \"./components/TableOfContents\";\nimport { PreviewWindow } from \"./components/PreviewWindow\";\nimport { RightSidebar } from \"./components/RightSidebar\";\nimport type { EditorProps } from \"./types\";\n\nexport function Editor({\n initialState,\n initialIsPublished,\n initialPresets,\n initialActivePresetId,\n initialPublishedPresetId,\n defaultState,\n chromeThemeConfig,\n persistence,\n headerSlots,\n onNavigate,\n initialPreviewView,\n}: EditorProps) {\n const editor = useEditorState({\n initialState,\n initialIsPublished,\n initialPresets,\n initialActivePresetId,\n initialPublishedPresetId,\n defaultState,\n persistence,\n onNavigate,\n initialPreviewView,\n });\n\n return (\n <NewtoneProvider config={chromeThemeConfig}>\n <EditorShell\n sidebar={\n <Sidebar\n state={editor.configuratorState}\n dispatch={editor.dispatch}\n previewColors={editor.previewColors}\n isDirty={editor.isDirty}\n onRevert={editor.handleRevert}\n presets={editor.presets}\n activePresetId={editor.activePresetId}\n publishedPresetId={editor.publishedPresetId}\n onSwitchPreset={editor.switchPreset}\n onCreatePreset={editor.createPreset}\n onRenamePreset={editor.renamePreset}\n onDeletePreset={editor.deletePreset}\n onDuplicatePreset={editor.duplicatePreset}\n colorMode={editor.colorMode}\n onColorModeChange={editor.handleColorModeChange}\n />\n }\n navbar={\n <EditorHeader\n saveStatus={editor.saveStatus}\n isPublished={editor.isPublished}\n publishing={editor.publishing}\n onPublish={editor.handlePublish}\n onRetry={() => editor.saveDraft(editor.latestStateRef.current)}\n headerSlots={headerSlots}\n />\n }\n content={\n <div\n style={{\n flex: 1,\n display: \"flex\",\n overflow: \"hidden\",\n minWidth: 0,\n }}\n >\n <TableOfContents\n activeView={editor.previewView}\n selectedComponentId={editor.selectedComponentId}\n onNavigate={editor.handlePreviewNavigate}\n />\n <div\n style={{\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n minWidth: 0,\n }}\n >\n <NewtoneProvider\n config={editor.themeConfig}\n initialMode={editor.colorMode}\n initialTheme={editor.activeTheme}\n key={`${editor.colorMode}-${editor.activeTheme}`}\n >\n <ThemeBar\n activeTheme={editor.activeTheme}\n onThemeChange={editor.handleThemeChange}\n />\n <div style={{ flex: 1, overflowY: \"auto\", minWidth: 0 }}>\n <PreviewWindow\n view={editor.previewView}\n selectedVariantId={editor.selectedVariantId}\n propOverrides={editor.propOverrides}\n onNavigate={editor.handlePreviewNavigate}\n onSelectVariant={editor.handleSelectVariant}\n />\n </div>\n </NewtoneProvider>\n </div>\n </div>\n }\n rightPanel={\n <RightSidebar\n selection={editor.sidebarSelection}\n propOverrides={editor.propOverrides}\n onPropOverride={editor.handlePropOverride}\n onResetOverrides={editor.handleResetOverrides}\n onClose={editor.handleCloseSidebar}\n onScopeToComponent={editor.handleScopeToComponent}\n />\n }\n />\n </NewtoneProvider>\n );\n}\n"]}
|