@waypointjs/builder 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +189 -55
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +189 -55
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/theme.ts","../src/store/builder-store.ts","../src/components/ExternalVariablePanel.tsx","../src/hooks/useAllFieldPaths.ts","../src/components/ConditionBuilder.tsx","../src/components/DependsOnInput.tsx","../src/components/Modal.tsx","../src/components/FieldEditor.tsx","../src/utils/step-dependencies.ts","../src/components/FieldList.tsx","../src/components/PreviewPanel.tsx","../src/components/StepEditor.tsx","../src/components/StepList.tsx","../src/components/Toolbar.tsx","../src/components/WaypointBuilder.tsx"],"names":["create","useState","jsxs","jsx","Fragment","useRef","useEffect","styles","useWaypoint","useWaypointStep","resolveTree","getNextStep","getPreviousStep","inputStyle","StepList","validateSchema","e","createRuntimeStore"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * @waypointjs/builder — Theming\n *\n * All design tokens used by the builder UI.\n * Pass a partial `WaypointTheme` to `<WaypointBuilder theme={...} />` to override any token.\n *\n * Built-in themes: `DEFAULT_THEME` (light) and `DARK_THEME`.\n */\n\n// ---------------------------------------------------------------------------\n// Type\n// ---------------------------------------------------------------------------\n\nexport interface WaypointTheme {\n // ── Primary accent ─────────────────────────────────────────────────────\n /** Main brand color — buttons, selected state accent. Default: #6366f1 */\n primary?: string;\n /** Darker shade of primary — hover states, dep badge text. Default: #4338ca */\n primaryDark?: string;\n /** Light primary background — dep badges, type badges. Default: #e0e7ff */\n primaryBg?: string;\n /** Very light primary — selected card background. Default: #ede9fe */\n primaryMuted?: string;\n /** Primary border — selected card outline. Default: #a78bfa */\n primaryBorder?: string;\n\n // ── Toolbar ────────────────────────────────────────────────────────────\n /** Toolbar background. Default: #111827 */\n toolbarBg?: string;\n /** Toolbar bottom border. Default: #1f2937 */\n toolbarBorder?: string;\n /** Toolbar logo / accent color. Default: #a78bfa */\n toolbarLogo?: string;\n /** Toolbar primary text color. Default: #f9fafb */\n toolbarText?: string;\n /** Toolbar muted text (buttons). Default: #d1d5db */\n toolbarTextMuted?: string;\n /** Toolbar subtle text (separator). Default: #4b5563 */\n toolbarTextSubtle?: string;\n\n // ── Canvas & surfaces ──────────────────────────────────────────────────\n /** Main background (panels, dropdowns). Default: #ffffff */\n canvas?: string;\n /** Subtle surface (card backgrounds, inputs). Default: #f9fafb */\n surface?: string;\n /** Slightly darker surface (hover, alternate rows). Default: #f3f4f6 */\n surfaceMuted?: string;\n /** Alternative surface (code blocks, preview bg). Default: #f1f5f9 */\n surfaceAlt?: string;\n\n // ── Borders ────────────────────────────────────────────────────────────\n /** Default border color. Default: #e5e7eb */\n border?: string;\n /** Muted border (inputs, selects). Default: #d1d5db */\n borderMuted?: string;\n\n // ── Text ───────────────────────────────────────────────────────────────\n /** Primary text. Default: #111827 */\n text?: string;\n /** Secondary text (labels, sub-headings). Default: #374151 */\n textSecondary?: string;\n /** Muted text (helper labels). Default: #6b7280 */\n textMuted?: string;\n /** Subtle text (metadata, hints). Default: #9ca3af */\n textSubtle?: string;\n /** Monospace / code text. Default: #475569 */\n textMono?: string;\n\n // ── Semantic — danger ──────────────────────────────────────────────────\n /** Danger foreground. Default: #ef4444 */\n danger?: string;\n /** Darker danger text. Default: #dc2626 */\n dangerText?: string;\n /** Danger background (very light). Default: #fef2f2 */\n dangerBg?: string;\n /** Danger background (strong). Default: #fee2e2 */\n dangerBgStrong?: string;\n /** Danger border. Default: #fecaca */\n dangerBorder?: string;\n\n // ── Semantic — warning ─────────────────────────────────────────────────\n /** Warning text / badge foreground. Default: #d97706 */\n warning?: string;\n /** Warning strong (dirty dot). Default: #f59e0b */\n warningStrong?: string;\n /** Warning background. Default: #fef3c7 */\n warningBg?: string;\n\n // ── Semantic — success ─────────────────────────────────────────────────\n /** Success text. Default: #059669 */\n success?: string;\n /** Success background. Default: #d1fae5 */\n successBg?: string;\n\n // ── Semantic — info ────────────────────────────────────────────────────\n /** Info icon / text. Default: #3b82f6 */\n info?: string;\n /** Info text (used-by ref chips). Default: #3b82f6 */\n infoText?: string;\n /** Info background (light). Default: #eff6ff */\n infoBg?: string;\n /** Info background (strong, ref chip bg). Default: #eff6ff */\n infoBgStrong?: string;\n /** Info border. Default: #bfdbfe */\n infoBorder?: string;\n\n // ── Typography & shape ─────────────────────────────────────────────────\n /** Font stack. Default: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif */\n font?: string;\n /** Base border radius. Default: 6px */\n radius?: string;\n /** Large border radius (cards, modals). Default: 8px */\n radiusLg?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Default (light) theme\n// ---------------------------------------------------------------------------\n\nexport const DEFAULT_THEME: Required<WaypointTheme> = {\n primary: \"#6366f1\",\n primaryDark: \"#4338ca\",\n primaryBg: \"#e0e7ff\",\n primaryMuted: \"#ede9fe\",\n primaryBorder: \"#a78bfa\",\n\n toolbarBg: \"#111827\",\n toolbarBorder: \"#1f2937\",\n toolbarLogo: \"#a78bfa\",\n toolbarText: \"#f9fafb\",\n toolbarTextMuted: \"#d1d5db\",\n toolbarTextSubtle: \"#4b5563\",\n\n canvas: \"#ffffff\",\n surface: \"#f9fafb\",\n surfaceMuted: \"#f3f4f6\",\n surfaceAlt: \"#f1f5f9\",\n\n border: \"#e5e7eb\",\n borderMuted: \"#d1d5db\",\n\n text: \"#111827\",\n textSecondary: \"#374151\",\n textMuted: \"#6b7280\",\n textSubtle: \"#9ca3af\",\n textMono: \"#475569\",\n\n danger: \"#ef4444\",\n dangerText: \"#dc2626\",\n dangerBg: \"#fef2f2\",\n dangerBgStrong: \"#fee2e2\",\n dangerBorder: \"#fecaca\",\n\n warning: \"#d97706\",\n warningStrong: \"#f59e0b\",\n warningBg: \"#fef3c7\",\n\n success: \"#059669\",\n successBg: \"#d1fae5\",\n\n info: \"#3b82f6\",\n infoText: \"#3b82f6\",\n infoBg: \"#eff6ff\",\n infoBgStrong: \"#eff6ff\",\n infoBorder: \"#bfdbfe\",\n\n font: \"-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n radius: \"6px\",\n radiusLg: \"8px\",\n};\n\n// ---------------------------------------------------------------------------\n// Dark theme\n// ---------------------------------------------------------------------------\n\nexport const DARK_THEME: Required<WaypointTheme> = {\n primary: \"#818cf8\",\n primaryDark: \"#6366f1\",\n primaryBg: \"#1e1b4b\",\n primaryMuted: \"#1e1b4b\",\n primaryBorder: \"#6366f1\",\n\n toolbarBg: \"#0a0a0a\",\n toolbarBorder: \"#1a1a1a\",\n toolbarLogo: \"#818cf8\",\n toolbarText: \"#f1f5f9\",\n toolbarTextMuted: \"#9ca3af\",\n toolbarTextSubtle: \"#374151\",\n\n canvas: \"#141414\",\n surface: \"#1e1e1e\",\n surfaceMuted: \"#2a2a2a\",\n surfaceAlt: \"#242424\",\n\n border: \"#2e2e2e\",\n borderMuted: \"#404040\",\n\n text: \"#f1f5f9\",\n textSecondary: \"#e2e8f0\",\n textMuted: \"#94a3b8\",\n textSubtle: \"#64748b\",\n textMono: \"#94a3b8\",\n\n danger: \"#f87171\",\n dangerText: \"#fca5a5\",\n dangerBg: \"#1c0a0a\",\n dangerBgStrong: \"#2d1515\",\n dangerBorder: \"#7f1d1d\",\n\n warning: \"#fbbf24\",\n warningStrong: \"#fbbf24\",\n warningBg: \"#1a1000\",\n\n success: \"#34d399\",\n successBg: \"#052e16\",\n\n info: \"#60a5fa\",\n infoText: \"#93c5fd\",\n infoBg: \"#0a1628\",\n infoBgStrong: \"#0f1f3d\",\n infoBorder: \"#1e3a5f\",\n\n font: \"-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n radius: \"6px\",\n radiusLg: \"8px\",\n};\n\n// ---------------------------------------------------------------------------\n// CSS variable builder\n// ---------------------------------------------------------------------------\n\n/**\n * Converts a WaypointTheme (merged with defaults) into a React inline style object\n * containing all CSS custom properties (`--wp-*`).\n *\n * Apply this to the root element of `<WaypointBuilder />`.\n */\nexport function buildThemeVars(theme: WaypointTheme = {}): React.CSSProperties {\n const t: Required<WaypointTheme> = { ...DEFAULT_THEME, ...theme };\n\n return {\n \"--wp-primary\": t.primary,\n \"--wp-primary-dark\": t.primaryDark,\n \"--wp-primary-bg\": t.primaryBg,\n \"--wp-primary-muted\": t.primaryMuted,\n \"--wp-primary-border\": t.primaryBorder,\n\n \"--wp-toolbar-bg\": t.toolbarBg,\n \"--wp-toolbar-border\": t.toolbarBorder,\n \"--wp-toolbar-logo\": t.toolbarLogo,\n \"--wp-toolbar-text\": t.toolbarText,\n \"--wp-toolbar-text-muted\": t.toolbarTextMuted,\n \"--wp-toolbar-text-subtle\": t.toolbarTextSubtle,\n\n \"--wp-canvas\": t.canvas,\n \"--wp-surface\": t.surface,\n \"--wp-surface-muted\": t.surfaceMuted,\n \"--wp-surface-alt\": t.surfaceAlt,\n\n \"--wp-border\": t.border,\n \"--wp-border-muted\": t.borderMuted,\n\n \"--wp-text\": t.text,\n \"--wp-text-secondary\": t.textSecondary,\n \"--wp-text-muted\": t.textMuted,\n \"--wp-text-subtle\": t.textSubtle,\n \"--wp-text-mono\": t.textMono,\n\n \"--wp-danger\": t.danger,\n \"--wp-danger-text\": t.dangerText,\n \"--wp-danger-bg\": t.dangerBg,\n \"--wp-danger-bg-strong\": t.dangerBgStrong,\n \"--wp-danger-border\": t.dangerBorder,\n\n \"--wp-warning\": t.warning,\n \"--wp-warning-strong\": t.warningStrong,\n \"--wp-warning-bg\": t.warningBg,\n\n \"--wp-success\": t.success,\n \"--wp-success-bg\": t.successBg,\n\n \"--wp-info\": t.info,\n \"--wp-info-text\": t.infoText,\n \"--wp-info-bg\": t.infoBg,\n \"--wp-info-bg-strong\": t.infoBgStrong,\n \"--wp-info-border\": t.infoBorder,\n\n \"--wp-font\": t.font,\n \"--wp-radius\": t.radius,\n \"--wp-radius-lg\": t.radiusLg,\n } as React.CSSProperties;\n}\n","import { create } from \"zustand\";\nimport type {\n ConditionGroup,\n CustomTypeDefinition,\n ExternalVariable,\n FieldDefinition,\n PersistenceMode,\n StepDefinition,\n WaypointSchema,\n} from \"@waypointjs/core\";\n\n// ---------------------------------------------------------------------------\n// State\n// ---------------------------------------------------------------------------\n\nexport interface BuilderState {\n /** The schema being edited */\n schema: WaypointSchema;\n /** Currently selected step id */\n selectedStepId: string | null;\n /** Currently selected field id (within selectedStep) */\n selectedFieldId: string | null;\n /** Whether the schema has unsaved changes */\n isDirty: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Actions\n// ---------------------------------------------------------------------------\n\nexport interface BuilderActions {\n // Schema\n loadSchema: (schema: WaypointSchema) => void;\n resetSchema: () => void;\n\n // Steps\n addStep: (step?: Partial<Omit<StepDefinition, \"id\">>) => string;\n updateStep: (stepId: string, updates: Partial<Omit<StepDefinition, \"id\">>) => void;\n removeStep: (stepId: string) => void;\n reorderSteps: (fromIndex: number, toIndex: number) => void;\n selectStep: (stepId: string | null) => void;\n\n // Fields\n addField: (stepId: string, field?: Partial<Omit<FieldDefinition, \"id\">>) => string;\n updateField: (stepId: string, fieldId: string, updates: Partial<Omit<FieldDefinition, \"id\">>) => void;\n removeField: (stepId: string, fieldId: string) => void;\n reorderFields: (stepId: string, fromIndex: number, toIndex: number) => void;\n selectField: (fieldId: string | null) => void;\n\n // Step conditions\n setStepCondition: (stepId: string, condition: ConditionGroup | undefined) => void;\n\n // Field conditions\n setFieldCondition: (stepId: string, fieldId: string, condition: ConditionGroup | undefined) => void;\n\n // External variables\n addExternalVariable: (variable: Omit<ExternalVariable, \"usedIn\">) => void;\n updateExternalVariable: (varId: string, updates: Partial<ExternalVariable>) => void;\n removeExternalVariable: (varId: string) => void;\n\n // Custom types\n addCustomType: (type: CustomTypeDefinition) => void;\n updateCustomType: (typeId: string, updates: Partial<CustomTypeDefinition>) => void;\n removeCustomType: (typeId: string) => void;\n\n // Persistence\n setPersistenceMode: (mode: PersistenceMode) => void;\n}\n\nexport type BuilderStore = BuilderState & BuilderActions;\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction generateId(prefix: string): string {\n return `${prefix}_${Math.random().toString(36).slice(2, 9)}`;\n}\n\nfunction makeDefaultSchema(): WaypointSchema {\n return {\n version: \"1\",\n id: generateId(\"journey\"),\n name: \"My Journey\",\n steps: [],\n externalVariables: [],\n customTypes: [],\n persistenceMode: \"zustand\",\n };\n}\n\n// ---------------------------------------------------------------------------\n// Store\n// ---------------------------------------------------------------------------\n\nexport const useBuilderStore = create<BuilderStore>((set, _get) => ({\n schema: makeDefaultSchema(),\n selectedStepId: null,\n selectedFieldId: null,\n isDirty: false,\n\n // --- Schema ---\n\n loadSchema: (schema) =>\n set({ schema, selectedStepId: null, selectedFieldId: null, isDirty: false }),\n\n resetSchema: () =>\n set({ schema: makeDefaultSchema(), selectedStepId: null, selectedFieldId: null, isDirty: false }),\n\n // --- Steps ---\n\n addStep: (partial = {}) => {\n const id = generateId(\"step\");\n const step: StepDefinition = {\n id,\n title: partial.title ?? \"New Step\",\n url: partial.url ?? `/${id}`,\n fields: partial.fields ?? [],\n ...partial,\n };\n set((s) => ({\n schema: { ...s.schema, steps: [...s.schema.steps, step] },\n selectedStepId: id,\n selectedFieldId: null,\n isDirty: true,\n }));\n return id;\n },\n\n updateStep: (stepId, updates) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId ? { ...step, ...updates } : step\n ),\n },\n isDirty: true,\n })),\n\n removeStep: (stepId) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.filter((step) => step.id !== stepId),\n },\n selectedStepId: s.selectedStepId === stepId ? null : s.selectedStepId,\n selectedFieldId: s.selectedStepId === stepId ? null : s.selectedFieldId,\n isDirty: true,\n })),\n\n reorderSteps: (fromIndex, toIndex) =>\n set((s) => {\n const steps = [...s.schema.steps];\n const [moved] = steps.splice(fromIndex, 1);\n steps.splice(toIndex, 0, moved);\n return { schema: { ...s.schema, steps }, isDirty: true };\n }),\n\n selectStep: (stepId) =>\n set({ selectedStepId: stepId, selectedFieldId: null }),\n\n // --- Fields ---\n\n addField: (stepId, partial = {}) => {\n const id = generateId(\"field\");\n const field: FieldDefinition = {\n id,\n type: partial.type ?? \"text\",\n label: partial.label ?? \"New Field\",\n ...partial,\n };\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId\n ? { ...step, fields: [...step.fields, field] }\n : step\n ),\n },\n selectedFieldId: id,\n isDirty: true,\n }));\n return id;\n },\n\n updateField: (stepId, fieldId, updates) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId\n ? {\n ...step,\n fields: step.fields.map((f) =>\n f.id === fieldId ? { ...f, ...updates } : f\n ),\n }\n : step\n ),\n },\n isDirty: true,\n })),\n\n removeField: (stepId, fieldId) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId\n ? { ...step, fields: step.fields.filter((f) => f.id !== fieldId) }\n : step\n ),\n },\n selectedFieldId: s.selectedFieldId === fieldId ? null : s.selectedFieldId,\n isDirty: true,\n })),\n\n reorderFields: (stepId, fromIndex, toIndex) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) => {\n if (step.id !== stepId) return step;\n const fields = [...step.fields];\n const [moved] = fields.splice(fromIndex, 1);\n fields.splice(toIndex, 0, moved);\n return { ...step, fields };\n }),\n },\n isDirty: true,\n })),\n\n selectField: (fieldId) => set({ selectedFieldId: fieldId }),\n\n // --- Step conditions ---\n\n setStepCondition: (stepId, condition) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId ? { ...step, visibleWhen: condition } : step\n ),\n },\n isDirty: true,\n })),\n\n // --- Field conditions ---\n\n setFieldCondition: (stepId, fieldId, condition) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId\n ? {\n ...step,\n fields: step.fields.map((f) =>\n f.id === fieldId ? { ...f, visibleWhen: condition } : f\n ),\n }\n : step\n ),\n },\n isDirty: true,\n })),\n\n // --- External variables ---\n\n addExternalVariable: (variable) =>\n set((s) => ({\n schema: {\n ...s.schema,\n externalVariables: [\n ...(s.schema.externalVariables ?? []),\n { ...variable, usedIn: [] },\n ],\n },\n isDirty: true,\n })),\n\n updateExternalVariable: (varId, updates) =>\n set((s) => ({\n schema: {\n ...s.schema,\n externalVariables: (s.schema.externalVariables ?? []).map((v) =>\n v.id === varId ? { ...v, ...updates } : v\n ),\n },\n isDirty: true,\n })),\n\n removeExternalVariable: (varId) =>\n set((s) => ({\n schema: {\n ...s.schema,\n externalVariables: (s.schema.externalVariables ?? []).filter(\n (v) => v.id !== varId\n ),\n },\n isDirty: true,\n })),\n\n // --- Custom types ---\n\n addCustomType: (type) =>\n set((s) => ({\n schema: {\n ...s.schema,\n customTypes: [...(s.schema.customTypes ?? []), type],\n },\n isDirty: true,\n })),\n\n updateCustomType: (typeId, updates) =>\n set((s) => ({\n schema: {\n ...s.schema,\n customTypes: (s.schema.customTypes ?? []).map((t) =>\n t.id === typeId ? { ...t, ...updates } : t\n ),\n },\n isDirty: true,\n })),\n\n removeCustomType: (typeId) =>\n set((s) => ({\n schema: {\n ...s.schema,\n customTypes: (s.schema.customTypes ?? []).filter((t) => t.id !== typeId),\n },\n isDirty: true,\n })),\n\n // --- Persistence ---\n\n setPersistenceMode: (mode) =>\n set((s) => ({\n schema: { ...s.schema, persistenceMode: mode },\n isDirty: true,\n })),\n}));\n","\"use client\";\n\nimport type { ExternalVariable } from \"@waypointjs/core\";\nimport { useState } from \"react\";\nimport { useBuilderStore } from \"../store/builder-store\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ntype VarType = ExternalVariable[\"type\"];\n\ninterface FormState {\n id: string;\n label: string;\n type: VarType;\n blocking: boolean;\n}\n\nconst BLANK_FORM: FormState = { id: \"\", label: \"\", type: \"string\", blocking: false };\n\n// ---------------------------------------------------------------------------\n// ExternalVariablePanel\n// ---------------------------------------------------------------------------\n\nexport function ExternalVariablePanel() {\n const { schema, addExternalVariable, updateExternalVariable, removeExternalVariable } = useBuilderStore();\n const variables = schema.externalVariables ?? [];\n\n const [isAdding, setIsAdding] = useState(false);\n const [editingId, setEditingId] = useState<string | null>(null);\n const [form, setForm] = useState<FormState>(BLANK_FORM);\n const [error, setError] = useState<string | null>(null);\n\n // Compute which vars are actually referenced in the schema\n const usageMap = computeUsageMap(schema.steps ?? []);\n\n // ---------------------------------------------------------------------------\n // Helpers\n // ---------------------------------------------------------------------------\n\n function startAdd() {\n setIsAdding(true);\n setEditingId(null);\n setForm(BLANK_FORM);\n setError(null);\n }\n\n function startEdit(v: ExternalVariable) {\n setEditingId(v.id);\n setIsAdding(false);\n setForm({ id: v.id, label: v.label, type: v.type, blocking: v.blocking });\n setError(null);\n }\n\n function cancelForm() {\n setIsAdding(false);\n setEditingId(null);\n setError(null);\n }\n\n function validateForm(): string | null {\n if (!form.id.trim()) return \"ID is required\";\n if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(form.id.trim())) return \"ID must be alphanumeric (no spaces)\";\n if (!form.label.trim()) return \"Label is required\";\n if (isAdding && variables.some((v) => v.id === form.id.trim())) return `ID \"${form.id}\" already exists`;\n return null;\n }\n\n function submitAdd() {\n const err = validateForm();\n if (err) { setError(err); return; }\n addExternalVariable({ id: form.id.trim(), label: form.label.trim(), type: form.type, blocking: form.blocking });\n setIsAdding(false);\n setForm(BLANK_FORM);\n setError(null);\n }\n\n function submitEdit() {\n const err = validateForm();\n if (err) { setError(err); return; }\n if (!editingId) return;\n updateExternalVariable(editingId, { label: form.label.trim(), type: form.type, blocking: form.blocking });\n setEditingId(null);\n setError(null);\n }\n\n function remove(id: string) {\n removeExternalVariable(id);\n if (editingId === id) { setEditingId(null); setError(null); }\n }\n\n // ---------------------------------------------------------------------------\n // Render\n // ---------------------------------------------------------------------------\n\n return (\n <div style={panelStyle}>\n {/* Header */}\n <div style={headerStyle}>\n <span style={titleStyle}>External Variables</span>\n {!isAdding && (\n <button style={addBtnStyle} onClick={startAdd} title=\"Add external variable\">\n + Add\n </button>\n )}\n </div>\n\n {/* Empty state */}\n {variables.length === 0 && !isAdding && (\n <p style={emptyStyle}>\n No external variables declared.<br />\n External vars are injected at runtime<br />\n (e.g. <code style={codeStyle}>$ext.userId</code>).\n </p>\n )}\n\n {/* Variable list */}\n {variables.map((v) => {\n const refs = usageMap.get(v.id) ?? [];\n const isBeingEdited = editingId === v.id;\n\n return (\n <div key={v.id} style={{ ...varRowStyle, ...(isBeingEdited ? varRowActiveStyle : {}) }}>\n {isBeingEdited ? (\n <VarForm\n form={form}\n onChange={setForm}\n error={error}\n onSubmit={submitEdit}\n onCancel={cancelForm}\n submitLabel=\"Save\"\n idReadOnly\n />\n ) : (\n <>\n <div style={varMainStyle}>\n <div style={varTopRowStyle}>\n <span style={varIdStyle}>${`ext.${v.id}`}</span>\n <div style={badgeRowStyle}>\n <TypeBadge type={v.type} />\n {v.blocking && <span style={blockingBadgeStyle}>blocking</span>}\n </div>\n </div>\n <span style={varLabelStyle}>{v.label}</span>\n {refs.length > 0 && (\n <div style={refsStyle}>\n {refs.map((ref, i) => (\n <span key={i} style={refChipStyle}>{ref}</span>\n ))}\n </div>\n )}\n </div>\n <div style={varActionsStyle}>\n <button style={actionBtnStyle} onClick={() => startEdit(v)}>Edit</button>\n <button style={{ ...actionBtnStyle, color: \"#ef4444\" }} title=\"Remove variable\" onClick={() => remove(v.id)}>✕</button>\n </div>\n </>\n )}\n </div>\n );\n })}\n\n {/* Add form */}\n {isAdding && (\n <div style={{ ...varRowStyle, ...varRowActiveStyle }}>\n <VarForm\n form={form}\n onChange={setForm}\n error={error}\n onSubmit={submitAdd}\n onCancel={cancelForm}\n submitLabel=\"Add\"\n />\n </div>\n )}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// VarForm — inline form for add/edit\n// ---------------------------------------------------------------------------\n\ninterface VarFormProps {\n form: FormState;\n onChange: (f: FormState) => void;\n error: string | null;\n onSubmit: () => void;\n onCancel: () => void;\n submitLabel: string;\n idReadOnly?: boolean;\n}\n\nfunction VarForm({ form, onChange, error, onSubmit, onCancel, submitLabel, idReadOnly }: VarFormProps) {\n function set(key: keyof FormState, value: unknown) {\n onChange({ ...form, [key]: value });\n }\n\n return (\n <div style={formStyle}>\n {/* ID */}\n <label style={formLabelStyle}>ID</label>\n <input\n style={{ ...inputStyle, ...(idReadOnly ? { background: \"#f9fafb\", color: \"#6b7280\" } : {}) }}\n value={form.id}\n onChange={(e) => set(\"id\", e.target.value)}\n placeholder=\"e.g. userId\"\n readOnly={idReadOnly}\n />\n\n {/* Label */}\n <label style={formLabelStyle}>Label</label>\n <input\n style={inputStyle}\n value={form.label}\n onChange={(e) => set(\"label\", e.target.value)}\n placeholder=\"Human-readable description\"\n />\n\n {/* Type */}\n <label style={formLabelStyle}>Type</label>\n <select style={selectStyle} value={form.type} onChange={(e) => set(\"type\", e.target.value as VarType)}>\n <option value=\"string\">string</option>\n <option value=\"number\">number</option>\n <option value=\"boolean\">boolean</option>\n <option value=\"object\">object</option>\n </select>\n\n {/* Blocking */}\n <label style={checkboxRowStyle}>\n <input\n type=\"checkbox\"\n checked={form.blocking}\n onChange={(e) => set(\"blocking\", e.target.checked)}\n style={{ marginRight: 6 }}\n />\n <span style={formLabelStyle}>Blocking — throw if missing at runtime</span>\n </label>\n\n {/* Error */}\n {error && <p style={errorStyle}>{error}</p>}\n\n {/* Actions */}\n <div style={formActionsStyle}>\n <button style={cancelBtnStyle} onClick={onCancel}>Cancel</button>\n <button style={submitBtnStyle} onClick={onSubmit}>{submitLabel}</button>\n </div>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// TypeBadge\n// ---------------------------------------------------------------------------\n\nfunction TypeBadge({ type }: { type: VarType }) {\n const colors: Record<VarType, string> = {\n string: \"#d1fae5\",\n number: \"#dbeafe\",\n boolean: \"#fef3c7\",\n object: \"#f3e8ff\",\n };\n return (\n <span style={{ ...typeBadgeStyle, background: colors[type] ?? \"#f3f4f6\" }}>{type}</span>\n );\n}\n\n// ---------------------------------------------------------------------------\n// computeUsageMap — scan all steps/fields for $ext.varId references\n// ---------------------------------------------------------------------------\n\nimport type { StepDefinition, ConditionGroup } from \"@waypointjs/core\";\n\nfunction computeUsageMap(steps: StepDefinition[]): Map<string, string[]> {\n const map = new Map<string, string[]>();\n\n function addRef(varId: string, label: string) {\n const existing = map.get(varId) ?? [];\n if (!existing.includes(label)) existing.push(label);\n map.set(varId, existing);\n }\n\n function scanPaths(paths: string[] | undefined, context: string) {\n for (const path of paths ?? []) {\n if (path.startsWith(\"$ext.\")) addRef(path.slice(5), context);\n }\n }\n\n function scanCondition(group: ConditionGroup | undefined, context: string) {\n if (!group) return;\n for (const rule of group.rules ?? []) {\n if (rule.field.startsWith(\"$ext.\")) addRef(rule.field.slice(5), context);\n }\n for (const nested of group.groups ?? []) scanCondition(nested, context);\n }\n\n for (const step of steps) {\n scanCondition(step.visibleWhen, step.title);\n for (const field of step.fields ?? []) {\n scanPaths(field.dependsOn, `${step.title} › ${field.label}`);\n scanCondition(field.visibleWhen, `${step.title} › ${field.label}`);\n }\n }\n\n return map;\n}\n\n// ---------------------------------------------------------------------------\n// Styles\n// ---------------------------------------------------------------------------\n\nconst panelStyle: React.CSSProperties = {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"8px 0\",\n gap: 0,\n};\n\nconst headerStyle: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"6px 12px 8px\",\n};\n\nconst titleStyle: React.CSSProperties = {\n fontSize: 11,\n fontWeight: 700,\n color: \"#9ca3af\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.05em\",\n};\n\nconst addBtnStyle: React.CSSProperties = {\n fontSize: 11,\n fontWeight: 600,\n color: \"#6366f1\",\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n padding: \"2px 4px\",\n};\n\nconst emptyStyle: React.CSSProperties = {\n fontSize: 11,\n color: \"#9ca3af\",\n padding: \"8px 12px 12px\",\n lineHeight: 1.5,\n margin: 0,\n};\n\nconst codeStyle: React.CSSProperties = {\n fontFamily: \"monospace\",\n background: \"#f3f4f6\",\n borderRadius: 3,\n padding: \"1px 3px\",\n};\n\nconst varRowStyle: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: 6,\n padding: \"8px 12px\",\n borderTop: \"1px solid #f3f4f6\",\n};\n\nconst varRowActiveStyle: React.CSSProperties = {\n background: \"#f9fafb\",\n};\n\nconst varMainStyle: React.CSSProperties = {\n flex: 1,\n minWidth: 0,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 2,\n};\n\nconst varTopRowStyle: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n flexWrap: \"wrap\",\n};\n\nconst varIdStyle: React.CSSProperties = {\n fontSize: 11,\n fontFamily: \"monospace\",\n fontWeight: 600,\n color: \"#374151\",\n};\n\nconst badgeRowStyle: React.CSSProperties = {\n display: \"flex\",\n gap: 4,\n flexWrap: \"wrap\",\n};\n\nconst typeBadgeStyle: React.CSSProperties = {\n fontSize: 10,\n fontWeight: 600,\n padding: \"1px 5px\",\n borderRadius: 4,\n color: \"#374151\",\n};\n\nconst blockingBadgeStyle: React.CSSProperties = {\n fontSize: 10,\n fontWeight: 600,\n padding: \"1px 5px\",\n borderRadius: 4,\n background: \"#fee2e2\",\n color: \"#dc2626\",\n};\n\nconst varLabelStyle: React.CSSProperties = {\n fontSize: 12,\n color: \"#6b7280\",\n marginTop: 1,\n};\n\nconst refsStyle: React.CSSProperties = {\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: 4,\n marginTop: 4,\n};\n\nconst refChipStyle: React.CSSProperties = {\n fontSize: 10,\n padding: \"1px 6px\",\n borderRadius: 4,\n background: \"#eff6ff\",\n color: \"#3b82f6\",\n border: \"1px solid #bfdbfe\",\n};\n\nconst varActionsStyle: React.CSSProperties = {\n display: \"flex\",\n gap: 2,\n flexShrink: 0,\n};\n\nconst actionBtnStyle: React.CSSProperties = {\n fontSize: 11,\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n color: \"#6b7280\",\n padding: \"2px 4px\",\n};\n\n// Form styles\nconst formStyle: React.CSSProperties = {\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 6,\n};\n\nconst formLabelStyle: React.CSSProperties = {\n fontSize: 11,\n fontWeight: 600,\n color: \"#374151\",\n};\n\nconst inputStyle: React.CSSProperties = {\n fontSize: 12,\n padding: \"5px 8px\",\n border: \"1px solid #d1d5db\",\n borderRadius: 6,\n outline: \"none\",\n width: \"100%\",\n boxSizing: \"border-box\",\n};\n\nconst selectStyle: React.CSSProperties = {\n ...inputStyle,\n};\n\nconst checkboxRowStyle: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n cursor: \"pointer\",\n};\n\nconst errorStyle: React.CSSProperties = {\n fontSize: 11,\n color: \"#ef4444\",\n margin: 0,\n padding: \"4px 8px\",\n background: \"#fef2f2\",\n borderRadius: 4,\n border: \"1px solid #fca5a5\",\n};\n\nconst formActionsStyle: React.CSSProperties = {\n display: \"flex\",\n gap: 6,\n justifyContent: \"flex-end\",\n marginTop: 2,\n};\n\nconst cancelBtnStyle: React.CSSProperties = {\n fontSize: 12,\n padding: \"4px 10px\",\n background: \"none\",\n border: \"1px solid #d1d5db\",\n borderRadius: 6,\n cursor: \"pointer\",\n color: \"#374151\",\n};\n\nconst submitBtnStyle: React.CSSProperties = {\n fontSize: 12,\n padding: \"4px 12px\",\n background: \"#6366f1\",\n border: \"none\",\n borderRadius: 6,\n cursor: \"pointer\",\n color: \"#fff\",\n fontWeight: 600,\n};\n","import { useBuilderStore } from \"../store/builder-store\";\n\nexport interface FieldPath {\n path: string; // e.g. \"personal.age\" or \"$ext.isPremium\"\n label: string; // e.g. \"Personal → Age\" or \"Ext: isPremium\"\n stepId?: string;\n fieldId?: string;\n isExternal?: boolean;\n}\n\n/**\n * Returns all field paths available across the entire journey tree,\n * including external variables. Used for autocomplete and condition builders.\n */\nexport function useAllFieldPaths(excludeStepId?: string, excludeFieldId?: string): FieldPath[] {\n const { schema } = useBuilderStore();\n const paths: FieldPath[] = [];\n\n for (const step of schema.steps) {\n for (const field of step.fields) {\n if (step.id === excludeStepId && field.id === excludeFieldId) continue;\n paths.push({\n path: `${step.id}.${field.id}`,\n label: `${step.title} → ${field.label}`,\n stepId: step.id,\n fieldId: field.id,\n });\n }\n }\n\n for (const extVar of schema.externalVariables ?? []) {\n paths.push({\n path: `$ext.${extVar.id}`,\n label: `Ext: ${extVar.label}`,\n isExternal: true,\n });\n }\n\n return paths;\n}\n","\"use client\";\n\nimport { type ConditionGroup, type ConditionOperator, type ConditionRule } from \"@waypointjs/core\";\nimport { useAllFieldPaths } from \"../hooks/useAllFieldPaths\";\n\nconst OPERATORS: { value: ConditionOperator; label: string; hasValue: boolean }[] = [\n { value: \"equals\", label: \"equals\", hasValue: true },\n { value: \"notEquals\", label: \"not equals\", hasValue: true },\n { value: \"greaterThan\", label: \">\", hasValue: true },\n { value: \"greaterThanOrEqual\", label: \">=\", hasValue: true },\n { value: \"lessThan\", label: \"<\", hasValue: true },\n { value: \"lessThanOrEqual\", label: \"<=\", hasValue: true },\n { value: \"contains\", label: \"contains\", hasValue: true },\n { value: \"notContains\", label: \"not contains\", hasValue: true },\n { value: \"in\", label: \"in (comma list)\", hasValue: true },\n { value: \"notIn\", label: \"not in (comma list)\", hasValue: true },\n { value: \"matches\", label: \"matches regex\", hasValue: true },\n { value: \"exists\", label: \"exists\", hasValue: false },\n { value: \"notExists\", label: \"not exists\", hasValue: false },\n];\n\ninterface ConditionBuilderProps {\n value: ConditionGroup | undefined;\n onChange: (value: ConditionGroup | undefined) => void;\n excludeStepId?: string;\n excludeFieldId?: string;\n}\n\nexport function ConditionBuilder({\n value,\n onChange,\n excludeStepId,\n excludeFieldId,\n}: ConditionBuilderProps) {\n const allPaths = useAllFieldPaths(excludeStepId, excludeFieldId);\n\n const group: ConditionGroup = value ?? { combinator: \"and\", rules: [] };\n\n const updateRule = (index: number, updates: Partial<ConditionRule>) => {\n const rules = group.rules.map((r, i) => (i === index ? { ...r, ...updates } : r));\n onChange({ ...group, rules });\n };\n\n const addRule = () => {\n const firstPath = allPaths[0]?.path ?? \"\";\n onChange({\n ...group,\n rules: [...group.rules, { field: firstPath, operator: \"equals\", value: \"\" }],\n });\n };\n\n const removeRule = (index: number) => {\n const rules = group.rules.filter((_, i) => i !== index);\n if (rules.length === 0) { onChange(undefined); return; }\n onChange({ ...group, rules });\n };\n\n return (\n <div style={styles.container}>\n {/* Combinator toggle */}\n {group.rules.length > 1 && (\n <div style={styles.combinatorRow}>\n <span style={styles.combinatorLabel}>Match</span>\n {([\"and\", \"or\"] as const).map((c) => (\n <button\n key={c}\n style={{\n ...styles.combinatorBtn,\n ...(group.combinator === c ? styles.combinatorActive : {}),\n }}\n onClick={() => onChange({ ...group, combinator: c })}\n >\n {c.toUpperCase()}\n </button>\n ))}\n <span style={styles.combinatorLabel}>rules</span>\n </div>\n )}\n\n {/* Empty state */}\n {group.rules.length === 0 && (\n <div style={styles.empty}>\n No conditions — this step/field is always visible.\n </div>\n )}\n\n {/* Rules */}\n {group.rules.map((rule, index) => {\n const opDef = OPERATORS.find((o) => o.value === rule.operator);\n return (\n <div key={index} style={styles.rule}>\n {/* Field selector */}\n <select\n style={styles.select}\n value={rule.field}\n onChange={(e) => updateRule(index, { field: e.target.value })}\n >\n {allPaths.length === 0 && (\n <option value=\"\">No fields available</option>\n )}\n {allPaths.map((p) => (\n <option key={p.path} value={p.path}>{p.label}</option>\n ))}\n </select>\n\n {/* Operator selector */}\n <select\n style={{ ...styles.select, width: 140 }}\n value={rule.operator}\n onChange={(e) =>\n updateRule(index, { operator: e.target.value as ConditionOperator })\n }\n >\n {OPERATORS.map((o) => (\n <option key={o.value} value={o.value}>{o.label}</option>\n ))}\n </select>\n\n {/* Value */}\n {opDef?.hasValue && (\n <input\n style={styles.valueInput}\n placeholder=\"value\"\n value={rule.value != null ? String(rule.value) : \"\"}\n onChange={(e) => updateRule(index, { value: e.target.value })}\n />\n )}\n\n <button style={styles.removeBtn} onClick={() => removeRule(index)}>✕</button>\n </div>\n );\n })}\n\n <button style={styles.addBtn} onClick={addRule}>\n + Add rule\n </button>\n\n {/* Preview */}\n {group.rules.length > 0 && (\n <div style={styles.preview}>\n <span style={styles.previewLabel}>Preview</span>\n <pre style={styles.previewCode}>{JSON.stringify(group, null, 2)}</pre>\n </div>\n )}\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { display: \"flex\", flexDirection: \"column\", gap: 10 },\n combinatorRow: { display: \"flex\", alignItems: \"center\", gap: 8, marginBottom: 4 },\n combinatorLabel: { fontSize: 12, color: \"var(--wp-text-muted)\" },\n combinatorBtn: {\n fontSize: 11, fontWeight: 700, padding: \"3px 10px\", borderRadius: 5,\n border: \"1px solid var(--wp-border-muted)\", background: \"var(--wp-surface)\",\n cursor: \"pointer\", color: \"var(--wp-text-secondary)\",\n },\n combinatorActive: {\n background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"1px solid var(--wp-primary)\",\n },\n empty: { fontSize: 13, color: \"var(--wp-text-subtle)\", textAlign: \"center\", padding: \"12px 0\" },\n rule: {\n display: \"flex\", alignItems: \"center\", gap: 8,\n background: \"var(--wp-surface)\", border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius-lg)\", padding: \"8px 10px\",\n },\n select: {\n flex: 1, fontSize: 12, padding: \"5px 6px\",\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n minWidth: 0,\n },\n valueInput: {\n width: 100, fontSize: 12, padding: \"5px 6px\",\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n },\n removeBtn: {\n border: \"none\", background: \"transparent\", color: \"var(--wp-danger)\",\n cursor: \"pointer\", fontSize: 13, flexShrink: 0,\n },\n addBtn: {\n fontSize: 12, padding: \"6px 12px\", background: \"var(--wp-surface-muted)\",\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\",\n cursor: \"pointer\", fontWeight: 500, alignSelf: \"flex-start\",\n color: \"var(--wp-text-secondary)\",\n },\n preview: { marginTop: 4 },\n previewLabel: {\n fontSize: 10, fontWeight: 600, color: \"var(--wp-text-subtle)\",\n textTransform: \"uppercase\", display: \"block\", marginBottom: 4,\n },\n previewCode: {\n fontSize: 10, background: \"var(--wp-surface-alt)\", border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius)\", padding: 8, overflow: \"auto\", maxHeight: 120,\n margin: 0, color: \"var(--wp-text-mono)\",\n },\n};\n","\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport { useAllFieldPaths } from \"../hooks/useAllFieldPaths\";\n\ninterface DependsOnInputProps {\n value: string[];\n onChange: (paths: string[]) => void;\n excludeStepId?: string;\n excludeFieldId?: string;\n}\n\nexport function DependsOnInput({\n value,\n onChange,\n excludeStepId,\n excludeFieldId,\n}: DependsOnInputProps) {\n const allPaths = useAllFieldPaths(excludeStepId, excludeFieldId);\n const [query, setQuery] = useState(\"\");\n const [open, setOpen] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const available = allPaths.filter(\n (p) => !value.includes(p.path) &&\n (p.path.toLowerCase().includes(query.toLowerCase()) ||\n p.label.toLowerCase().includes(query.toLowerCase()))\n );\n\n const add = (path: string) => {\n onChange([...value, path]);\n setQuery(\"\");\n setOpen(false);\n inputRef.current?.focus();\n };\n\n const remove = (path: string) => {\n onChange(value.filter((p) => p !== path));\n };\n\n useEffect(() => {\n const handler = (e: MouseEvent) => {\n if (!containerRef.current?.contains(e.target as Node)) setOpen(false);\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, []);\n\n const getLabel = (path: string) =>\n allPaths.find((p) => p.path === path)?.label ?? path;\n\n const isExternal = (path: string) => path.startsWith(\"$ext.\");\n\n return (\n <div ref={containerRef} style={styles.container}>\n {/* Selected tags */}\n <div style={styles.tags}>\n {value.map((path) => (\n <span key={path} style={{ ...styles.tag, ...(isExternal(path) ? styles.tagExt : {}) }}>\n {getLabel(path)}\n <button style={styles.tagRemove} onClick={() => remove(path)}>✕</button>\n </span>\n ))}\n\n {/* Input */}\n <input\n ref={inputRef}\n style={styles.input}\n placeholder={value.length === 0 ? \"Search fields or $ext vars…\" : \"Add more…\"}\n value={query}\n onChange={(e) => { setQuery(e.target.value); setOpen(true); }}\n onFocus={() => setOpen(true)}\n />\n </div>\n\n {/* Dropdown */}\n {open && (\n <div style={styles.dropdown}>\n {available.length === 0 && (\n <div style={styles.noResults}>\n {allPaths.length === 0\n ? \"No fields available in the tree yet.\"\n : \"No matching fields.\"}\n </div>\n )}\n {available.map((p) => (\n <button\n key={p.path}\n style={styles.option}\n onMouseDown={(e) => { e.preventDefault(); add(p.path); }}\n >\n <span style={styles.optionLabel}>{p.label}</span>\n <span style={styles.optionPath}>{p.path}</span>\n </button>\n ))}\n </div>\n )}\n\n {value.length > 0 && (\n <div style={styles.hint}>\n This field will be blocked until all dependencies have a value.\n </div>\n )}\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { position: \"relative\" },\n tags: {\n display: \"flex\", flexWrap: \"wrap\", gap: 4,\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\",\n padding: \"4px 6px\", background: \"var(--wp-canvas)\", minHeight: 34, alignItems: \"center\",\n },\n tag: {\n display: \"flex\", alignItems: \"center\", gap: 4,\n fontSize: 11, fontWeight: 600, padding: \"2px 8px\",\n background: \"var(--wp-primary-bg)\", color: \"var(--wp-primary-dark)\", borderRadius: 4,\n },\n tagExt: { background: \"var(--wp-warning-bg)\", color: \"var(--wp-warning)\" },\n tagRemove: {\n border: \"none\", background: \"transparent\", cursor: \"pointer\",\n color: \"inherit\", fontSize: 10, padding: 0, lineHeight: 1,\n },\n input: {\n flex: 1, minWidth: 140, fontSize: 12, border: \"none\",\n outline: \"none\", background: \"transparent\", padding: \"2px 4px\",\n color: \"var(--wp-text)\",\n },\n dropdown: {\n position: \"absolute\", top: \"calc(100% + 4px)\", left: 0, right: 0,\n background: \"var(--wp-canvas)\", border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius-lg)\", boxShadow: \"0 4px 16px rgba(0,0,0,0.1)\",\n zIndex: 100, maxHeight: 200, overflowY: \"auto\",\n },\n noResults: { padding: \"10px 12px\", fontSize: 12, color: \"var(--wp-text-subtle)\", textAlign: \"center\" },\n option: {\n width: \"100%\", display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n padding: \"8px 12px\", border: \"none\", background: \"transparent\",\n cursor: \"pointer\", textAlign: \"left\", gap: 8,\n },\n optionLabel: { fontSize: 13, fontWeight: 600, color: \"var(--wp-text)\" },\n optionPath: { fontSize: 10, fontFamily: \"monospace\", color: \"var(--wp-text-subtle)\" },\n hint: { fontSize: 10, color: \"var(--wp-text-subtle)\", marginTop: 4 },\n};\n","\"use client\";\n\nimport { useEffect } from \"react\";\n\ninterface ModalProps {\n title: string;\n onClose: () => void;\n children: React.ReactNode;\n width?: number;\n}\n\nexport function Modal({ title, onClose, children, width = 560 }: ModalProps) {\n useEffect(() => {\n const handler = (e: KeyboardEvent) => { if (e.key === \"Escape\") onClose(); };\n document.addEventListener(\"keydown\", handler);\n return () => document.removeEventListener(\"keydown\", handler);\n }, [onClose]);\n\n return (\n <div style={styles.overlay} onClick={onClose}>\n <div style={{ ...styles.panel, width }} onClick={(e) => e.stopPropagation()}>\n <div style={styles.header}>\n <span style={styles.title}>{title}</span>\n <button style={styles.closeBtn} onClick={onClose}>✕</button>\n </div>\n <div style={styles.body}>{children}</div>\n </div>\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n overlay: {\n position: \"fixed\", inset: 0, background: \"rgba(0,0,0,0.4)\",\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n zIndex: 1000,\n },\n panel: {\n background: \"var(--wp-canvas)\", borderRadius: 12,\n boxShadow: \"0 20px 60px rgba(0,0,0,0.2)\",\n display: \"flex\", flexDirection: \"column\", maxHeight: \"80vh\", overflow: \"hidden\",\n },\n header: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n padding: \"14px 20px\", borderBottom: \"1px solid var(--wp-border)\",\n },\n title: { fontWeight: 700, fontSize: 14, color: \"var(--wp-text)\" },\n closeBtn: {\n border: \"none\", background: \"transparent\", cursor: \"pointer\",\n fontSize: 14, color: \"var(--wp-text-subtle)\", padding: 4,\n },\n body: { overflowY: \"auto\", padding: 20, color: \"var(--wp-text)\" },\n};\n","\"use client\";\n\nimport { useState } from \"react\";\nimport type { ValidationRule, ValidationRuleType } from \"@waypointjs/core\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport { ConditionBuilder } from \"./ConditionBuilder\";\nimport { DependsOnInput } from \"./DependsOnInput\";\nimport { Modal } from \"./Modal\";\n\nconst VALIDATION_TYPES: { type: ValidationRuleType; label: string; hasValue: boolean }[] = [\n { type: \"required\", label: \"Required\", hasValue: false },\n { type: \"min\", label: \"Min value\", hasValue: true },\n { type: \"max\", label: \"Max value\", hasValue: true },\n { type: \"minLength\", label: \"Min length\", hasValue: true },\n { type: \"maxLength\", label: \"Max length\", hasValue: true },\n { type: \"email\", label: \"Email format\", hasValue: false },\n { type: \"url\", label: \"URL format\", hasValue: false },\n { type: \"regex\", label: \"Regex pattern\", hasValue: true },\n];\n\nexport function FieldEditor() {\n const {\n schema, selectedStepId, selectedFieldId,\n updateField, setFieldCondition,\n } = useBuilderStore();\n\n const [newValidationType, setNewValidationType] = useState<ValidationRuleType>(\"required\");\n const [conditionModalOpen, setConditionModalOpen] = useState(false);\n\n const step = schema.steps.find((s) => s.id === selectedStepId);\n const field = step?.fields.find((f) => f.id === selectedFieldId);\n\n if (!field || !step) {\n return (\n <div style={styles.empty}>\n Select a field in the middle panel to edit its properties.\n </div>\n );\n }\n\n const validation = field.validation ?? [];\n const isRequired = validation.some((v) => v.type === \"required\");\n const hasCondition = !!field.visibleWhen;\n const ruleCount = field.visibleWhen?.rules.length ?? 0;\n\n const updateValidationRule = (index: number, updates: Partial<ValidationRule>) => {\n const updated = validation.map((v, i) => (i === index ? { ...v, ...updates } : v));\n updateField(step.id, field.id, { validation: updated });\n };\n\n const removeValidationRule = (index: number) => {\n const updated = validation.filter((_, i) => i !== index);\n updateField(step.id, field.id, { validation: updated.length ? updated : undefined });\n };\n\n const addValidationRule = () => {\n const newRule: ValidationRule = {\n type: newValidationType,\n message: `${newValidationType} error`,\n };\n updateField(step.id, field.id, { validation: [...validation, newRule] });\n };\n\n const handleDependsOnChange = (paths: string[]) => {\n updateField(step.id, field.id, { dependsOn: paths.length ? paths : undefined });\n };\n\n return (\n <div style={styles.container}>\n <div style={styles.header}>\n <div style={styles.headerLeft}>\n <span style={styles.headerTitle}>Field Editor</span>\n {!isRequired && <span style={styles.optionalBadge}>optional</span>}\n {isRequired && <span style={styles.requiredBadge}>required</span>}\n </div>\n <div style={styles.fieldId}>id: {field.id}</div>\n </div>\n\n <div style={styles.body}>\n {/* Label */}\n <div style={styles.group}>\n <label style={styles.label}>Label</label>\n <input\n style={styles.input}\n value={field.label}\n onChange={(e) => updateField(step.id, field.id, { label: e.target.value })}\n />\n </div>\n\n {/* Placeholder */}\n <div style={styles.group}>\n <label style={styles.label}>Placeholder</label>\n <input\n style={styles.input}\n value={field.placeholder ?? \"\"}\n placeholder=\"Optional\"\n onChange={(e) =>\n updateField(step.id, field.id, { placeholder: e.target.value || undefined })\n }\n />\n </div>\n\n {/* Default value */}\n <div style={styles.group}>\n <label style={styles.label}>Default value</label>\n <input\n style={styles.input}\n value={field.defaultValue != null ? String(field.defaultValue) : \"\"}\n placeholder=\"Optional\"\n onChange={(e) =>\n updateField(step.id, field.id, { defaultValue: e.target.value || undefined })\n }\n />\n </div>\n\n {/* Depends on */}\n <div style={styles.group}>\n <label style={styles.label}>Depends on</label>\n <DependsOnInput\n value={field.dependsOn ?? []}\n onChange={handleDependsOnChange}\n excludeStepId={step.id}\n excludeFieldId={field.id}\n />\n </div>\n\n <div style={styles.divider} />\n\n {/* Visibility condition — summary */}\n <div style={styles.conditionRow}>\n <div style={styles.conditionInfo}>\n <div style={styles.label}>Visibility condition</div>\n {hasCondition ? (\n <div style={styles.conditionSummary}>\n <span style={styles.conditionBadge}>\n {ruleCount} rule{ruleCount !== 1 ? \"s\" : \"\"} · {field.visibleWhen!.combinator.toUpperCase()}\n </span>\n <span style={styles.conditionDesc}>Field is conditional</span>\n </div>\n ) : (\n <div style={styles.conditionNone}>Always visible</div>\n )}\n </div>\n <div style={styles.conditionActions}>\n <button style={styles.editConditionBtn} onClick={() => setConditionModalOpen(true)}>\n {hasCondition ? \"Edit\" : \"Add\"}\n </button>\n {hasCondition && (\n <button\n style={styles.clearConditionBtn}\n onClick={() => setFieldCondition(step.id, field.id, undefined)}\n >\n Clear\n </button>\n )}\n </div>\n </div>\n\n <div style={styles.divider} />\n\n {/* Validation rules */}\n <div style={styles.sectionTitle}>\n Validation\n {!isRequired && (\n <span style={styles.optionalHint}>\n — no \"required\" rule → field is optional\n </span>\n )}\n </div>\n\n {validation.length === 0 && (\n <div style={styles.noRules}>No rules · field is optional by default.</div>\n )}\n\n {validation.map((rule, index) => {\n const def = VALIDATION_TYPES.find((vt) => vt.type === rule.type);\n return (\n <div key={index} style={styles.ruleCard}>\n <div style={styles.ruleHeader}>\n <span\n style={{\n ...styles.ruleBadge,\n ...(rule.type === \"required\" ? styles.requiredRuleBadge : {}),\n }}\n >\n {rule.type}\n </span>\n <button style={styles.removeRuleBtn} onClick={() => removeValidationRule(index)}>\n ✕\n </button>\n </div>\n {def?.hasValue && (\n <div style={styles.ruleRow}>\n <label style={styles.ruleLabel}>Value</label>\n <input\n style={styles.ruleInput}\n value={rule.value != null ? String(rule.value) : \"\"}\n onChange={(e) => updateValidationRule(index, { value: e.target.value })}\n />\n </div>\n )}\n <div style={styles.ruleRow}>\n <label style={styles.ruleLabel}>Error message</label>\n <input\n style={styles.ruleInput}\n value={rule.message}\n onChange={(e) => updateValidationRule(index, { message: e.target.value })}\n />\n </div>\n </div>\n );\n })}\n\n <div style={styles.addRule}>\n <select\n style={styles.ruleSelect}\n value={newValidationType}\n onChange={(e) => setNewValidationType(e.target.value as ValidationRuleType)}\n >\n {VALIDATION_TYPES.map((vt) => (\n <option key={vt.type} value={vt.type}>{vt.label}</option>\n ))}\n </select>\n <button style={styles.addRuleBtn} onClick={addValidationRule}>\n + Add rule\n </button>\n </div>\n </div>\n\n {/* Field condition modal */}\n {conditionModalOpen && (\n <Modal\n title={`Condition — \"${field.label}\"`}\n onClose={() => setConditionModalOpen(false)}\n width={620}\n >\n <p style={styles.modalHint}>\n Define when this field is visible within its step.\n </p>\n <ConditionBuilder\n value={field.visibleWhen}\n onChange={(c) => setFieldCondition(step.id, field.id, c)}\n excludeStepId={step.id}\n excludeFieldId={field.id}\n />\n <div style={styles.modalFooter}>\n <button style={styles.modalCloseBtn} onClick={() => setConditionModalOpen(false)}>\n Done\n </button>\n </div>\n </Modal>\n )}\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { display: \"flex\", flexDirection: \"column\", height: \"100%\", overflow: \"hidden\" },\n empty: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n height: \"100%\", color: \"var(--wp-text-subtle)\", fontSize: 13, textAlign: \"center\", padding: 32,\n },\n header: {\n padding: \"12px 16px\", borderBottom: \"1px solid var(--wp-border)\",\n display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\",\n },\n headerLeft: { display: \"flex\", alignItems: \"center\", gap: 8 },\n headerTitle: { fontWeight: 700, fontSize: 13, color: \"var(--wp-text)\" },\n optionalBadge: {\n fontSize: 10, fontWeight: 600, padding: \"2px 7px\",\n background: \"var(--wp-surface-muted)\", color: \"var(--wp-text-subtle)\", borderRadius: 4,\n },\n requiredBadge: {\n fontSize: 10, fontWeight: 600, padding: \"2px 7px\",\n background: \"var(--wp-danger-bg-strong)\", color: \"var(--wp-danger)\", borderRadius: 4,\n },\n fieldId: { fontSize: 10, color: \"var(--wp-text-subtle)\", fontFamily: \"monospace\" },\n body: { flex: 1, overflowY: \"auto\", padding: 16, display: \"flex\", flexDirection: \"column\", gap: 12 },\n group: { display: \"flex\", flexDirection: \"column\", gap: 4 },\n label: { fontSize: 11, fontWeight: 600, color: \"var(--wp-text-muted)\", textTransform: \"uppercase\", letterSpacing: \"0.05em\" },\n input: {\n fontSize: 13, padding: \"6px 8px\", border: \"1px solid var(--wp-border-muted)\",\n borderRadius: \"var(--wp-radius)\", outline: \"none\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n },\n divider: { height: 1, background: \"var(--wp-border)\" },\n conditionRow: { display: \"flex\", alignItems: \"flex-start\", justifyContent: \"space-between\", gap: 8 },\n conditionInfo: { display: \"flex\", flexDirection: \"column\", gap: 6, flex: 1 },\n conditionSummary: { display: \"flex\", alignItems: \"center\", gap: 8 },\n conditionBadge: {\n fontSize: 11, fontWeight: 700, background: \"var(--wp-warning-bg)\", color: \"var(--wp-warning)\",\n padding: \"2px 8px\", borderRadius: 4,\n },\n conditionDesc: { fontSize: 11, color: \"var(--wp-text-subtle)\" },\n conditionNone: { fontSize: 12, color: \"var(--wp-text-subtle)\", fontStyle: \"italic\" },\n conditionActions: { display: \"flex\", gap: 6, flexShrink: 0, alignItems: \"flex-start\", marginTop: 16 },\n editConditionBtn: {\n fontSize: 11, padding: \"4px 10px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\", fontWeight: 500,\n },\n clearConditionBtn: {\n fontSize: 11, padding: \"4px 10px\", background: \"var(--wp-danger-bg-strong)\", color: \"var(--wp-danger)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\",\n },\n sectionTitle: { fontSize: 12, fontWeight: 700, color: \"var(--wp-text-secondary)\", textTransform: \"uppercase\", letterSpacing: \"0.05em\" },\n optionalHint: { fontSize: 10, color: \"var(--wp-text-subtle)\", fontWeight: 400, textTransform: \"none\", letterSpacing: 0 },\n noRules: { fontSize: 12, color: \"var(--wp-text-subtle)\" },\n ruleCard: {\n background: \"var(--wp-surface)\", border: \"1px solid var(--wp-border)\", borderRadius: \"var(--wp-radius-lg)\",\n padding: 10, display: \"flex\", flexDirection: \"column\", gap: 8,\n },\n ruleHeader: { display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\" },\n ruleBadge: {\n fontSize: 11, fontWeight: 700, color: \"var(--wp-primary-dark)\", background: \"var(--wp-primary-bg)\",\n padding: \"2px 8px\", borderRadius: 4,\n },\n requiredRuleBadge: { background: \"var(--wp-danger-bg-strong)\", color: \"var(--wp-danger)\" },\n removeRuleBtn: { border: \"none\", background: \"transparent\", color: \"var(--wp-danger)\", cursor: \"pointer\", fontSize: 12 },\n ruleRow: { display: \"flex\", flexDirection: \"column\", gap: 3 },\n ruleLabel: { fontSize: 10, fontWeight: 600, color: \"var(--wp-text-subtle)\", textTransform: \"uppercase\" },\n ruleInput: {\n fontSize: 12, padding: \"4px 6px\", border: \"1px solid var(--wp-border-muted)\",\n borderRadius: 4, outline: \"none\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n },\n addRule: { display: \"flex\", gap: 8, alignItems: \"center\" },\n ruleSelect: {\n flex: 1, fontSize: 12, padding: \"5px 6px\", border: \"1px solid var(--wp-border-muted)\",\n borderRadius: \"var(--wp-radius)\", background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n },\n addRuleBtn: {\n fontSize: 12, padding: \"5px 10px\", background: \"var(--wp-surface-muted)\",\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\",\n fontWeight: 500, whiteSpace: \"nowrap\", color: \"var(--wp-text-secondary)\",\n },\n modalHint: { fontSize: 13, color: \"var(--wp-text-muted)\", marginBottom: 16, marginTop: 0 },\n modalFooter: { marginTop: 20, display: \"flex\", justifyContent: \"flex-end\" },\n modalCloseBtn: {\n fontSize: 13, padding: \"7px 20px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius-lg)\", cursor: \"pointer\", fontWeight: 600,\n },\n};\n","import type { ConditionGroup, WaypointSchema } from \"@waypointjs/core\";\n\n/**\n * For a given step, returns the set of step IDs it depends on.\n * A step depends on another when any of its fields:\n * - has a `dependsOn` path referencing that step (\"otherId.fieldId\")\n * - has a `visibleWhen` condition rule referencing that step\n * Or when the step itself has a `visibleWhen` condition referencing that step.\n */\n\nfunction extractStepIdsFromCondition(\n group: ConditionGroup | undefined,\n ownStepId: string\n): Set<string> {\n const ids = new Set<string>();\n if (!group) return ids;\n\n for (const rule of group.rules) {\n if (rule.field.startsWith(\"$ext.\")) continue;\n const dotIndex = rule.field.indexOf(\".\");\n if (dotIndex === -1) continue;\n const refStep = rule.field.slice(0, dotIndex);\n if (refStep !== ownStepId) ids.add(refStep);\n }\n\n for (const subGroup of group.groups ?? []) {\n for (const id of extractStepIdsFromCondition(subGroup, ownStepId)) {\n ids.add(id);\n }\n }\n\n return ids;\n}\n\n/** Returns a map: stepId → Set<stepId it depends on> */\nexport function computeStepDependencies(\n schema: WaypointSchema\n): Map<string, Set<string>> {\n const deps = new Map<string, Set<string>>();\n\n for (const step of schema.steps) {\n const required = new Set<string>();\n\n // Step-level condition\n for (const id of extractStepIdsFromCondition(step.visibleWhen, step.id)) {\n required.add(id);\n }\n\n // Field-level\n for (const field of step.fields) {\n // dependsOn paths\n for (const path of field.dependsOn ?? []) {\n if (path.startsWith(\"$ext.\")) continue;\n const dotIndex = path.indexOf(\".\");\n if (dotIndex === -1) continue;\n const refStep = path.slice(0, dotIndex);\n if (refStep !== step.id) required.add(refStep);\n }\n\n // visibleWhen condition\n for (const id of extractStepIdsFromCondition(field.visibleWhen, step.id)) {\n required.add(id);\n }\n }\n\n deps.set(step.id, required);\n }\n\n return deps;\n}\n\n/**\n * Given the current step order and the dependency map,\n * returns whether moving the step at `fromIndex` to `toIndex` is valid.\n *\n * A move is invalid if it would place a step BEFORE one of its dependencies.\n */\nexport function isMoveValid(\n steps: WaypointSchema[\"steps\"],\n deps: Map<string, Set<string>>,\n fromIndex: number,\n toIndex: number\n): { valid: boolean; reason?: string } {\n if (fromIndex === toIndex) return { valid: true };\n\n // Simulate the new order\n const reordered = [...steps];\n const [moved] = reordered.splice(fromIndex, 1);\n reordered.splice(toIndex, 0, moved);\n\n const indexById = new Map(reordered.map((s, i) => [s.id, i]));\n\n for (const step of reordered) {\n const stepIndex = indexById.get(step.id)!;\n const required = deps.get(step.id) ?? new Set();\n\n for (const depId of required) {\n const depIndex = indexById.get(depId);\n if (depIndex === undefined) continue; // dep step not in schema (external?)\n\n if (depIndex > stepIndex) {\n const depTitle = reordered.find((s) => s.id === depId)?.title ?? depId;\n return {\n valid: false,\n reason: `\"${step.title}\" depends on \"${depTitle}\" which must come first`,\n };\n }\n }\n }\n\n return { valid: true };\n}\n\n// ---------------------------------------------------------------------------\n// Field-level dependency helpers (within a single step)\n// ---------------------------------------------------------------------------\n\n/**\n * Returns whether moving a field from `fromIndex` to `toIndex` within a step\n * is valid given intra-step `dependsOn` references.\n *\n * Only considers dependencies between fields within the same step\n * (cross-step deps are already enforced at the step level).\n */\nexport function isFieldMoveValid(\n fields: WaypointSchema[\"steps\"][number][\"fields\"],\n stepId: string,\n fromIndex: number,\n toIndex: number\n): { valid: boolean; reason?: string } {\n if (fromIndex === toIndex) return { valid: true };\n\n const reordered = [...fields];\n const [moved] = reordered.splice(fromIndex, 1);\n reordered.splice(toIndex, 0, moved);\n\n const indexById = new Map(reordered.map((f, i) => [f.id, i]));\n\n for (const field of reordered) {\n const fieldIndex = indexById.get(field.id)!;\n for (const path of field.dependsOn ?? []) {\n if (path.startsWith(\"$ext.\")) continue;\n const dotIndex = path.indexOf(\".\");\n if (dotIndex === -1) continue;\n const refStep = path.slice(0, dotIndex);\n if (refStep !== stepId) continue; // cross-step dep, not relevant here\n const refFieldId = path.slice(dotIndex + 1);\n const depIndex = indexById.get(refFieldId);\n if (depIndex === undefined) continue;\n if (depIndex > fieldIndex) {\n const depLabel = reordered.find((f) => f.id === refFieldId)?.label ?? refFieldId;\n return {\n valid: false,\n reason: `\"${field.label}\" depends on \"${depLabel}\" which must come first`,\n };\n }\n }\n }\n\n return { valid: true };\n}\n\n/**\n * Returns the human-readable label for a step's dependencies (other step titles).\n */\nexport function getStepDependencyLabels(\n stepId: string,\n deps: Map<string, Set<string>>,\n schema: WaypointSchema\n): string[] {\n const required = deps.get(stepId) ?? new Set();\n return [...required]\n .map((id) => schema.steps.find((s) => s.id === id)?.title ?? id)\n .filter(Boolean);\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport { isFieldMoveValid } from \"../utils/step-dependencies\";\n\nconst FIELD_TYPES = [\n \"text\", \"number\", \"email\", \"password\", \"tel\", \"url\",\n \"textarea\", \"select\", \"multiselect\", \"checkbox\", \"radio\", \"date\", \"file\",\n];\n\nexport function FieldList() {\n const {\n schema, selectedStepId, selectedFieldId,\n addField, removeField, updateField, selectField, reorderFields,\n } = useBuilderStore();\n\n const [moveError, setMoveError] = useState<string | null>(null);\n\n const step = schema.steps.find((s) => s.id === selectedStepId);\n\n const allDependencyTargets = new Set<string>();\n for (const s of schema.steps) {\n for (const f of s.fields) {\n for (const dep of f.dependsOn ?? []) {\n allDependencyTargets.add(dep);\n }\n }\n }\n\n if (!step) {\n return (\n <div style={styles.empty}>\n Select a step on the left to manage its fields.\n </div>\n );\n }\n\n const tryMove = (fromIndex: number, toIndex: number) => {\n const check = isFieldMoveValid(step.fields, step.id, fromIndex, toIndex);\n if (!check.valid) {\n setMoveError(check.reason ?? \"Invalid move\");\n setTimeout(() => setMoveError(null), 3000);\n return;\n }\n setMoveError(null);\n reorderFields(step.id, fromIndex, toIndex);\n };\n\n return (\n <div style={styles.container}>\n <div style={styles.header}>\n <div>\n <div style={styles.stepTitle}>{step.title}</div>\n <div style={styles.stepSub}>{step.fields.length} field{step.fields.length !== 1 ? \"s\" : \"\"}</div>\n </div>\n <button style={styles.addBtn} onClick={() => addField(step.id)}>\n + Add field\n </button>\n </div>\n\n {moveError && (\n <div style={styles.errorBanner}>\n <span>⚠</span> {moveError}\n </div>\n )}\n\n <div style={styles.list}>\n {step.fields.length === 0 && (\n <div style={styles.emptyFields}>No fields yet. Click \"Add field\" to start.</div>\n )}\n {step.fields.map((field, index) => {\n const isSelected = field.id === selectedFieldId;\n const isRequired = field.validation?.some((v) => v.type === \"required\") ?? false;\n const hasCondition = !!field.visibleWhen;\n const hasDeps = (field.dependsOn?.length ?? 0) > 0;\n const isUsedAsDep = allDependencyTargets.has(`${step.id}.${field.id}`);\n\n const canMoveUp = index > 0 &&\n isFieldMoveValid(step.fields, step.id, index, index - 1).valid;\n const canMoveDown = index < step.fields.length - 1 &&\n isFieldMoveValid(step.fields, step.id, index, index + 1).valid;\n\n const intraStepDeps = (field.dependsOn ?? [])\n .filter((p) => p.startsWith(`${step.id}.`))\n .map((p) => {\n const fieldId = p.slice(step.id.length + 1);\n return step.fields.find((f) => f.id === fieldId)?.label ?? fieldId;\n });\n\n const intraStepDependents = step.fields.filter((f) =>\n f.id !== field.id &&\n (f.dependsOn ?? []).includes(`${step.id}.${field.id}`)\n );\n\n return (\n <div\n key={field.id}\n style={{ ...styles.card, ...(isSelected ? styles.cardSelected : {}) }}\n onClick={() => selectField(field.id)}\n >\n <div style={styles.cardTop}>\n <div style={styles.cardLeft}>\n <span style={styles.typeBadge}>{field.type}</span>\n <span style={styles.fieldLabel}>{field.label}</span>\n </div>\n <div style={styles.cardRight}>\n <select\n style={styles.typeSelect}\n value={field.type}\n onClick={(e) => e.stopPropagation()}\n onChange={(e) => updateField(step.id, field.id, { type: e.target.value })}\n >\n {FIELD_TYPES.map((t) => (\n <option key={t} value={t}>{t}</option>\n ))}\n </select>\n {index > 0 && (\n <button\n style={{ ...styles.iconBtn, ...(canMoveUp ? {} : styles.iconBtnBlocked) }}\n title={canMoveUp ? \"Move up\" : \"Can't move — dependency order required\"}\n onClick={(e) => { e.stopPropagation(); tryMove(index, index - 1); }}\n >↑</button>\n )}\n {index < step.fields.length - 1 && (\n <button\n style={{ ...styles.iconBtn, ...(canMoveDown ? {} : styles.iconBtnBlocked) }}\n title={canMoveDown ? \"Move down\" : \"Can't move — dependency order required\"}\n onClick={(e) => { e.stopPropagation(); tryMove(index, index + 1); }}\n >↓</button>\n )}\n <button\n style={{ ...styles.iconBtn, color: \"var(--wp-danger)\" }}\n title=\"Remove field\"\n onClick={(e) => { e.stopPropagation(); removeField(step.id, field.id); }}\n >✕</button>\n </div>\n </div>\n\n {/* Badges */}\n <div style={styles.badges}>\n {!isRequired && <span style={styles.badgeOptional}>optional</span>}\n {isRequired && <span style={styles.badgeRequired}>required</span>}\n {hasCondition && <span style={styles.badgeCondition}>conditional</span>}\n {hasDeps && <span style={styles.badgeDep}>depends on {field.dependsOn!.length}</span>}\n {isUsedAsDep && <span style={styles.badgeUsed}>← dependency</span>}\n </div>\n\n {/* Intra-step dependency info */}\n {intraStepDeps.length > 0 && (\n <div style={styles.depRow}>\n <span style={styles.depLabel}>needs:</span>\n {intraStepDeps.map((label) => (\n <span key={label} style={styles.depBadge}>{label}</span>\n ))}\n </div>\n )}\n {intraStepDependents.length > 0 && (\n <div style={styles.depRow}>\n <span style={styles.depLabelUsed}>used by:</span>\n {intraStepDependents.map((f) => (\n <span key={f.id} style={styles.depBadgeUsed}>{f.label}</span>\n ))}\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { display: \"flex\", flexDirection: \"column\", height: \"100%\" },\n empty: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n height: \"100%\", color: \"var(--wp-text-subtle)\", fontSize: 13, textAlign: \"center\", padding: 32,\n },\n emptyFields: { padding: 24, textAlign: \"center\", color: \"var(--wp-text-subtle)\", fontSize: 13 },\n header: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n padding: \"12px 16px\", borderBottom: \"1px solid var(--wp-border)\",\n },\n stepTitle: { fontWeight: 700, fontSize: 14, color: \"var(--wp-text)\" },\n stepSub: { fontSize: 11, color: \"var(--wp-text-subtle)\", marginTop: 2 },\n addBtn: {\n fontSize: 12, padding: \"4px 10px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\", fontWeight: 500,\n },\n errorBanner: {\n margin: \"8px 8px 0\", padding: \"8px 12px\", background: \"var(--wp-danger-bg)\",\n border: \"1px solid var(--wp-danger-border)\", borderRadius: \"var(--wp-radius-lg)\", fontSize: 12,\n color: \"var(--wp-danger-text)\", display: \"flex\", alignItems: \"center\", gap: 6,\n },\n list: { flex: 1, overflowY: \"auto\", padding: 8 },\n card: {\n padding: \"10px 12px\", borderRadius: \"var(--wp-radius-lg)\", marginBottom: 4,\n border: \"1px solid transparent\", cursor: \"pointer\",\n background: \"var(--wp-surface)\", display: \"flex\", flexDirection: \"column\", gap: 6,\n },\n cardSelected: { background: \"var(--wp-primary-muted)\", border: \"1px solid var(--wp-primary-border)\" },\n cardTop: { display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" },\n cardLeft: { display: \"flex\", alignItems: \"center\", gap: 8, minWidth: 0 },\n cardRight: { display: \"flex\", alignItems: \"center\", gap: 4, flexShrink: 0 },\n typeBadge: {\n fontSize: 10, background: \"var(--wp-primary-bg)\", color: \"var(--wp-primary-dark)\",\n padding: \"2px 7px\", borderRadius: 4, fontWeight: 600, flexShrink: 0,\n },\n fieldLabel: {\n fontSize: 13, fontWeight: 600, color: \"var(--wp-text)\",\n overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\",\n },\n typeSelect: {\n fontSize: 11, border: \"1px solid var(--wp-border)\", borderRadius: 4,\n padding: \"2px 4px\", background: \"var(--wp-canvas)\", cursor: \"pointer\",\n color: \"var(--wp-text-secondary)\",\n },\n iconBtn: {\n width: 22, height: 22, border: \"none\", background: \"transparent\",\n cursor: \"pointer\", borderRadius: 4, fontSize: 11, color: \"var(--wp-text-subtle)\",\n },\n iconBtnBlocked: { color: \"var(--wp-border-muted)\", cursor: \"not-allowed\", opacity: 0.4 },\n badges: { display: \"flex\", flexWrap: \"wrap\", gap: 4 },\n badgeOptional: {\n fontSize: 9, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-surface-muted)\", color: \"var(--wp-text-subtle)\", borderRadius: 3, textTransform: \"uppercase\",\n },\n badgeRequired: {\n fontSize: 9, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-danger-bg-strong)\", color: \"var(--wp-danger)\", borderRadius: 3, textTransform: \"uppercase\",\n },\n badgeCondition: {\n fontSize: 9, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-warning-bg)\", color: \"var(--wp-warning)\", borderRadius: 3, textTransform: \"uppercase\",\n },\n badgeDep: {\n fontSize: 9, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-primary-bg)\", color: \"var(--wp-primary-dark)\", borderRadius: 3, textTransform: \"uppercase\",\n },\n badgeUsed: {\n fontSize: 9, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-success-bg)\", color: \"var(--wp-success)\", borderRadius: 3, textTransform: \"uppercase\",\n },\n depRow: { display: \"flex\", alignItems: \"center\", flexWrap: \"wrap\", gap: 4 },\n depLabel: { fontSize: 10, fontWeight: 600, color: \"var(--wp-text-muted)\", textTransform: \"uppercase\" },\n depLabelUsed: { fontSize: 10, fontWeight: 600, color: \"var(--wp-success)\", textTransform: \"uppercase\" },\n depBadge: {\n fontSize: 10, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-primary-bg)\", color: \"var(--wp-primary-dark)\", borderRadius: 4,\n },\n depBadgeUsed: {\n fontSize: 10, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-success-bg)\", color: \"var(--wp-success)\", borderRadius: 4,\n },\n};\n","import { useState } from \"react\";\nimport type { StoreApi } from \"zustand\";\nimport { useWaypoint, useWaypointStep } from \"@waypointjs/react\";\nimport type { WaypointRuntimeStore } from \"@waypointjs/core\";\nimport { resolveTree, getNextStep, getPreviousStep } from \"@waypointjs/core\";\nimport type { WaypointSchema } from \"@waypointjs/core\";\nimport type { ResolvedField } from \"@waypointjs/core\";\n\ninterface PreviewPanelProps {\n store: StoreApi<WaypointRuntimeStore>;\n schema: WaypointSchema;\n onEdit?: () => void;\n}\n\nexport function PreviewPanel({ store, schema }: PreviewPanelProps) {\n const [done, setDone] = useState(false);\n\n const { tree, currentStep, progress } = useWaypoint(store);\n const stepId = currentStep?.definition.id ?? \"\";\n const { fields, stepData, setFieldValue } = useWaypointStep(store, stepId);\n\n const [errors, setErrors] = useState<Record<string, string>>({});\n\n function handleNext() {\n // 1. Validate required fields\n const newErrors: Record<string, string> = {};\n for (const field of fields) {\n const isRequired = field.definition.validation?.some((r) => r.type === \"required\");\n if (isRequired) {\n const val = stepData[field.definition.id];\n if (val === undefined || val === null || val === \"\" || val === false) {\n const rule = field.definition.validation?.find((r) => r.type === \"required\");\n newErrors[field.definition.id] = rule?.message ?? \"Ce champ est requis\";\n }\n }\n }\n if (Object.keys(newErrors).length > 0) {\n setErrors(newErrors);\n return;\n }\n setErrors({});\n\n // 2. Snapshot old step IDs\n const oldIds = tree.steps.map((s) => s.definition.id).join(\",\");\n\n // 3. Save current step data\n store.getState().setStepData(stepId, stepData);\n\n // 4. Re-resolve tree with new data\n const newData = store.getState().data;\n const newTree = resolveTree(schema, newData, {});\n const newIds = newTree.steps.map((s) => s.definition.id).join(\",\");\n\n // 5. Truncate history if tree changed\n if (oldIds !== newIds) {\n store.getState().truncateHistoryAt(stepId);\n }\n\n // 6. Navigate\n const next = getNextStep(newTree.steps, stepId);\n if (next) {\n store.getState().setCurrentStep(next.definition.id);\n } else {\n setDone(true);\n }\n }\n\n function handlePrev() {\n const prev = getPreviousStep(tree.steps, stepId);\n if (prev) store.getState().setCurrentStep(prev.definition.id);\n }\n\n function handleRestart() {\n store.getState().init(schema);\n setDone(false);\n setErrors({});\n }\n\n // Compute step index for status icons\n const currentIdx = tree.steps.findIndex(\n (s) => s.definition.id === currentStep?.definition.id\n );\n\n if (done) {\n return (\n <div style={styles.panel}>\n <div style={styles.leftCol}>\n <StepList\n tree={tree}\n currentIdx={currentIdx}\n onSelect={(id) => store.getState().setCurrentStep(id)}\n />\n </div>\n <div style={styles.divider} />\n <div style={styles.rightCol}>\n <div style={styles.doneScreen}>\n <div style={styles.doneIcon}>✓</div>\n <div style={styles.doneTitle}>Parcours terminé !</div>\n <p style={styles.doneText}>\n Toutes les étapes ont été complétées avec succès.\n </p>\n <button style={styles.primaryBtn} onClick={handleRestart}>\n Recommencer\n </button>\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div style={styles.panel}>\n {/* Left column — step list */}\n <div style={styles.leftCol}>\n <StepList\n tree={tree}\n currentIdx={currentIdx}\n onSelect={(id) => store.getState().setCurrentStep(id)}\n />\n </div>\n\n <div style={styles.divider} />\n\n {/* Right column — step renderer */}\n <div style={styles.rightCol}>\n <div style={styles.stepRenderer}>\n {/* Progress bar */}\n <div style={styles.progressTrack}>\n <div style={{ ...styles.progressFill, width: `${progress}%` }} />\n </div>\n\n {/* Step title */}\n <h2 style={styles.stepTitle}>\n {currentStep?.definition.title ?? \"\"}\n </h2>\n\n {/* Fields */}\n <div style={styles.fieldsContainer}>\n {fields.map((field) => (\n <FieldRenderer\n key={field.definition.id}\n field={field}\n value={stepData[field.definition.id]}\n error={errors[field.definition.id]}\n onChange={(val) => {\n setFieldValue(field.definition.id, val);\n if (errors[field.definition.id]) {\n setErrors((prev) => {\n const next = { ...prev };\n delete next[field.definition.id];\n return next;\n });\n }\n }}\n />\n ))}\n </div>\n\n {/* Navigation */}\n <div style={styles.navRow}>\n {currentIdx > 0 && (\n <button style={styles.secondaryBtn} onClick={handlePrev}>\n ← Précédent\n </button>\n )}\n <button style={{ ...styles.primaryBtn, marginLeft: \"auto\" }} onClick={handleNext}>\n {getNextStep(tree.steps, stepId) ? \"Continuer →\" : \"Terminer ✓\"}\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// StepList sub-component\n// ---------------------------------------------------------------------------\n\ninterface StepListProps {\n tree: { steps: { definition: { id: string; title: string } }[]; hiddenSteps: { definition: { id: string; title: string } }[] };\n currentIdx: number;\n onSelect: (id: string) => void;\n}\n\nfunction StepList({ tree, currentIdx, onSelect }: StepListProps) {\n const allSteps = [\n ...tree.steps.map((s) => ({ ...s, hidden: false })),\n ...tree.hiddenSteps.map((s) => ({ ...s, hidden: true })),\n ];\n\n return (\n <div style={styles.stepList}>\n <div style={styles.stepListTitle}>Étapes</div>\n {allSteps.map((step) => {\n const isVisible = !step.hidden;\n const visIdx = tree.steps.findIndex((s) => s.definition.id === step.definition.id);\n let status: \"done\" | \"current\" | \"upcoming\" | \"hidden\" = \"hidden\";\n if (isVisible) {\n if (visIdx < currentIdx) status = \"done\";\n else if (visIdx === currentIdx) status = \"current\";\n else status = \"upcoming\";\n }\n\n return (\n <div\n key={step.definition.id}\n style={{\n ...styles.stepItem,\n ...(status === \"current\" ? styles.stepItemCurrent : {}),\n ...(status === \"hidden\" ? styles.stepItemHidden : {}),\n cursor: status === \"done\" ? \"pointer\" : \"default\",\n }}\n onClick={() => {\n if (status === \"done\") onSelect(step.definition.id);\n }}\n >\n <span style={styles.stepStatus}>\n {status === \"done\" && \"✓\"}\n {status === \"current\" && \"→\"}\n {status === \"upcoming\" && \"○\"}\n {status === \"hidden\" && \"–\"}\n </span>\n <span style={styles.stepName}>{step.definition.title}</span>\n {status === \"hidden\" && <span style={styles.hiddenBadge}>hidden</span>}\n </div>\n );\n })}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// FieldRenderer sub-component\n// ---------------------------------------------------------------------------\n\ninterface FieldRendererProps {\n field: ResolvedField;\n value: unknown;\n error?: string;\n onChange: (val: unknown) => void;\n}\n\nfunction FieldRenderer({ field, value, error, onChange }: FieldRendererProps) {\n const { definition } = field;\n const inputStyle = { ...styles.input, ...(error ? styles.inputError : {}) };\n\n return (\n <div style={styles.fieldGroup}>\n <label style={styles.label}>\n {definition.label}\n {definition.validation?.some((r) => r.type === \"required\") && (\n <span style={styles.required}> *</span>\n )}\n </label>\n\n {(definition.type === \"text\" ||\n definition.type === \"email\" ||\n definition.type === \"tel\" ||\n definition.type === \"password\" ||\n definition.type === \"url\" ||\n definition.type === \"number\" ||\n definition.type === \"date\") && (\n <input\n type={definition.type}\n style={inputStyle}\n value={(value as string) ?? \"\"}\n placeholder={definition.placeholder}\n onChange={(e) => onChange(e.target.value)}\n />\n )}\n\n {definition.type === \"textarea\" && (\n <textarea\n style={{ ...inputStyle, minHeight: 80, resize: \"vertical\" }}\n value={(value as string) ?? \"\"}\n placeholder={definition.placeholder}\n onChange={(e) => onChange(e.target.value)}\n />\n )}\n\n {definition.type === \"select\" && (\n <select\n style={inputStyle}\n value={(value as string) ?? \"\"}\n onChange={(e) => onChange(e.target.value)}\n >\n <option value=\"\">— Choisir —</option>\n {definition.options?.map((opt) => (\n <option key={String(opt.value)} value={String(opt.value)}>\n {opt.label}\n </option>\n ))}\n </select>\n )}\n\n {definition.type === \"multiselect\" && (\n <select\n style={{ ...inputStyle, minHeight: 80 }}\n multiple\n value={(value as string[]) ?? []}\n onChange={(e) => {\n const selected = Array.from(e.target.selectedOptions).map((o) => o.value);\n onChange(selected);\n }}\n >\n {definition.options?.map((opt) => (\n <option key={String(opt.value)} value={String(opt.value)}>\n {opt.label}\n </option>\n ))}\n </select>\n )}\n\n {definition.type === \"radio\" && (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n {definition.options?.map((opt) => (\n <label key={String(opt.value)} style={{ display: \"flex\", alignItems: \"center\", gap: 8, cursor: \"pointer\", fontSize: 13 }}>\n <input\n type=\"radio\"\n name={definition.id}\n value={String(opt.value)}\n checked={value === String(opt.value)}\n onChange={() => onChange(String(opt.value))}\n />\n {opt.label}\n </label>\n ))}\n </div>\n )}\n\n {definition.type === \"checkbox\" && (\n <label style={{ display: \"flex\", alignItems: \"center\", gap: 8, cursor: \"pointer\", fontSize: 13 }}>\n <input\n type=\"checkbox\"\n checked={Boolean(value)}\n onChange={(e) => onChange(e.target.checked)}\n />\n {definition.placeholder ?? definition.label}\n </label>\n )}\n\n {error && <div style={styles.errorMsg}>{error}</div>}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Styles\n// ---------------------------------------------------------------------------\n\nconst styles: Record<string, React.CSSProperties> = {\n panel: {\n display: \"flex\",\n flex: 1,\n overflow: \"hidden\",\n },\n leftCol: {\n width: 220,\n flexShrink: 0,\n overflowY: \"auto\",\n borderRight: \"1px solid var(--wp-border)\",\n background: \"var(--wp-panel-bg)\",\n },\n divider: {\n width: 1,\n background: \"var(--wp-border)\",\n flexShrink: 0,\n },\n rightCol: {\n flex: 1,\n overflow: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: \"32px 24px\",\n },\n stepRenderer: {\n width: \"100%\",\n maxWidth: 520,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 20,\n },\n progressTrack: {\n height: 4,\n background: \"var(--wp-border)\",\n borderRadius: 2,\n overflow: \"hidden\",\n },\n progressFill: {\n height: \"100%\",\n background: \"var(--wp-primary)\",\n borderRadius: 2,\n transition: \"width 0.3s ease\",\n },\n stepTitle: {\n fontSize: 20,\n fontWeight: 700,\n color: \"var(--wp-text)\",\n margin: 0,\n },\n fieldsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: 16,\n },\n fieldGroup: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: 4,\n },\n label: {\n fontSize: 13,\n fontWeight: 600,\n color: \"var(--wp-text)\",\n },\n required: {\n color: \"var(--wp-danger)\",\n },\n input: {\n fontSize: 13,\n padding: \"8px 10px\",\n border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius)\",\n background: \"var(--wp-canvas)\",\n color: \"var(--wp-text)\",\n outline: \"none\",\n width: \"100%\",\n boxSizing: \"border-box\" as const,\n },\n inputError: {\n borderColor: \"var(--wp-danger)\",\n },\n errorMsg: {\n fontSize: 11,\n color: \"var(--wp-danger)\",\n marginTop: 2,\n },\n navRow: {\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n paddingTop: 8,\n },\n primaryBtn: {\n fontSize: 13,\n fontWeight: 600,\n padding: \"9px 20px\",\n background: \"var(--wp-primary)\",\n color: \"var(--wp-canvas)\",\n border: \"none\",\n borderRadius: \"var(--wp-radius)\",\n cursor: \"pointer\",\n },\n secondaryBtn: {\n fontSize: 13,\n fontWeight: 500,\n padding: \"9px 16px\",\n background: \"transparent\",\n color: \"var(--wp-text-muted)\",\n border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius)\",\n cursor: \"pointer\",\n },\n // Step list\n stepList: {\n padding: \"16px 12px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 4,\n },\n stepListTitle: {\n fontSize: 11,\n fontWeight: 700,\n color: \"var(--wp-text-muted)\",\n textTransform: \"uppercase\" as const,\n letterSpacing: \"0.5px\",\n marginBottom: 8,\n },\n stepItem: {\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"6px 8px\",\n borderRadius: 6,\n fontSize: 12,\n color: \"var(--wp-text-muted)\",\n },\n stepItemCurrent: {\n background: \"var(--wp-primary-subtle, rgba(99,102,241,0.08))\",\n color: \"var(--wp-primary)\",\n fontWeight: 600,\n },\n stepItemHidden: {\n opacity: 0.45,\n },\n stepStatus: {\n fontSize: 11,\n width: 14,\n flexShrink: 0,\n textAlign: \"center\" as const,\n },\n stepName: {\n flex: 1,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\" as const,\n },\n hiddenBadge: {\n fontSize: 9,\n fontWeight: 700,\n padding: \"1px 5px\",\n borderRadius: 4,\n background: \"var(--wp-border)\",\n color: \"var(--wp-text-muted)\",\n textTransform: \"uppercase\" as const,\n letterSpacing: \"0.3px\",\n flexShrink: 0,\n },\n // Done screen\n doneScreen: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: 1,\n gap: 12,\n paddingTop: 60,\n textAlign: \"center\" as const,\n },\n doneIcon: {\n width: 64,\n height: 64,\n borderRadius: \"50%\",\n background: \"var(--wp-success-subtle, rgba(34,197,94,0.1))\",\n color: \"var(--wp-success, #22c55e)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 28,\n fontWeight: 700,\n },\n doneTitle: {\n fontSize: 22,\n fontWeight: 700,\n color: \"var(--wp-text)\",\n },\n doneText: {\n fontSize: 14,\n color: \"var(--wp-text-muted)\",\n margin: 0,\n },\n};\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport { ConditionBuilder } from \"./ConditionBuilder\";\nimport { Modal } from \"./Modal\";\n\nexport function StepEditor() {\n const { schema, selectedStepId, updateStep, setStepCondition } = useBuilderStore();\n const [conditionModalOpen, setConditionModalOpen] = useState(false);\n\n const step = schema.steps.find((s) => s.id === selectedStepId);\n\n if (!step) {\n return (\n <div style={styles.empty}>\n Select a step to configure its properties.\n </div>\n );\n }\n\n const hasCondition = !!step.visibleWhen;\n const ruleCount = step.visibleWhen?.rules.length ?? 0;\n\n return (\n <div style={styles.container}>\n <div style={styles.header}>\n <div style={styles.headerTitle}>Step Config</div>\n <div style={styles.stepId}>id: {step.id}</div>\n </div>\n\n <div style={styles.body}>\n {/* Title */}\n <div style={styles.group}>\n <label style={styles.label}>Title</label>\n <input\n style={styles.input}\n value={step.title}\n placeholder=\"Step title\"\n onChange={(e) => updateStep(step.id, { title: e.target.value })}\n />\n </div>\n\n {/* URL */}\n <div style={styles.group}>\n <label style={styles.label}>URL</label>\n <input\n style={styles.input}\n value={step.url}\n placeholder=\"/onboarding/step-name\"\n onChange={(e) => updateStep(step.id, { url: e.target.value })}\n />\n <div style={styles.hint}>Supports {\"{{PARAM}}\"} placeholders</div>\n </div>\n\n {/* Resume */}\n <div style={styles.checkRow}>\n <input\n type=\"checkbox\"\n id={`resume-${step.id}`}\n checked={!!step.enableResumeFromHere}\n onChange={(e) =>\n updateStep(step.id, { enableResumeFromHere: e.target.checked || undefined })\n }\n />\n <label htmlFor={`resume-${step.id}`} style={styles.checkLabel}>\n Resume from this step\n </label>\n </div>\n\n <div style={styles.divider} />\n\n {/* Visibility condition — summary */}\n <div style={styles.conditionRow}>\n <div style={styles.conditionInfo}>\n <div style={styles.label}>Visibility condition</div>\n {hasCondition ? (\n <div style={styles.conditionSummary}>\n <span style={styles.conditionBadge}>\n {ruleCount} rule{ruleCount !== 1 ? \"s\" : \"\"} · {step.visibleWhen!.combinator.toUpperCase()}\n </span>\n <span style={styles.conditionDesc}>\n Step is conditional\n </span>\n </div>\n ) : (\n <div style={styles.conditionNone}>Always visible</div>\n )}\n </div>\n <div style={styles.conditionActions}>\n <button\n style={styles.editConditionBtn}\n onClick={() => setConditionModalOpen(true)}\n >\n {hasCondition ? \"Edit\" : \"Add condition\"}\n </button>\n {hasCondition && (\n <button\n style={styles.clearConditionBtn}\n onClick={() => setStepCondition(step.id, undefined)}\n >\n Clear\n </button>\n )}\n </div>\n </div>\n </div>\n\n {/* Condition modal */}\n {conditionModalOpen && (\n <Modal\n title={`Condition — \"${step.title}\"`}\n onClose={() => setConditionModalOpen(false)}\n width={620}\n >\n <p style={styles.modalHint}>\n Define when this step is visible. Leave empty to always show it.\n </p>\n <ConditionBuilder\n value={step.visibleWhen}\n onChange={(c) => setStepCondition(step.id, c)}\n />\n <div style={styles.modalFooter}>\n <button\n style={styles.modalCloseBtn}\n onClick={() => setConditionModalOpen(false)}\n >\n Done\n </button>\n </div>\n </Modal>\n )}\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { display: \"flex\", flexDirection: \"column\", height: \"100%\", overflow: \"hidden\" },\n empty: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n height: \"100%\", color: \"var(--wp-text-subtle)\", fontSize: 13, textAlign: \"center\", padding: 32,\n },\n header: {\n padding: \"12px 16px\", borderBottom: \"1px solid var(--wp-border)\",\n display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\",\n },\n headerTitle: { fontWeight: 700, fontSize: 13, color: \"var(--wp-text)\" },\n stepId: { fontSize: 10, color: \"var(--wp-text-subtle)\", fontFamily: \"monospace\" },\n body: { flex: 1, overflowY: \"auto\", padding: 16, display: \"flex\", flexDirection: \"column\", gap: 12 },\n group: { display: \"flex\", flexDirection: \"column\", gap: 4 },\n label: { fontSize: 11, fontWeight: 600, color: \"var(--wp-text-muted)\", textTransform: \"uppercase\", letterSpacing: \"0.05em\" },\n input: {\n fontSize: 13, padding: \"6px 8px\", border: \"1px solid var(--wp-border-muted)\",\n borderRadius: \"var(--wp-radius)\", outline: \"none\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n },\n hint: { fontSize: 10, color: \"var(--wp-text-subtle)\" },\n checkRow: { display: \"flex\", alignItems: \"center\", gap: 8 },\n checkLabel: { fontSize: 13, color: \"var(--wp-text-secondary)\" },\n divider: { height: 1, background: \"var(--wp-border)\" },\n conditionRow: {\n display: \"flex\", alignItems: \"flex-start\", justifyContent: \"space-between\", gap: 8,\n },\n conditionInfo: { display: \"flex\", flexDirection: \"column\", gap: 6, flex: 1 },\n conditionSummary: { display: \"flex\", alignItems: \"center\", gap: 8 },\n conditionBadge: {\n fontSize: 11, fontWeight: 700, background: \"var(--wp-warning-bg)\", color: \"var(--wp-warning)\",\n padding: \"2px 8px\", borderRadius: 4,\n },\n conditionDesc: { fontSize: 11, color: \"var(--wp-text-subtle)\" },\n conditionNone: { fontSize: 12, color: \"var(--wp-text-subtle)\", fontStyle: \"italic\" },\n conditionActions: { display: \"flex\", gap: 6, flexShrink: 0, alignItems: \"flex-start\", marginTop: 16 },\n editConditionBtn: {\n fontSize: 11, padding: \"4px 10px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\", fontWeight: 500,\n },\n clearConditionBtn: {\n fontSize: 11, padding: \"4px 10px\", background: \"var(--wp-danger-bg-strong)\", color: \"var(--wp-danger)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\",\n },\n modalHint: { fontSize: 13, color: \"var(--wp-text-muted)\", marginBottom: 16, marginTop: 0 },\n modalFooter: { marginTop: 20, display: \"flex\", justifyContent: \"flex-end\" },\n modalCloseBtn: {\n fontSize: 13, padding: \"7px 20px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius-lg)\", cursor: \"pointer\", fontWeight: 600,\n },\n};\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport {\n computeStepDependencies,\n getStepDependencyLabels,\n isMoveValid,\n} from \"../utils/step-dependencies\";\n\nexport function StepList() {\n const { schema, selectedStepId, addStep, removeStep, selectStep, reorderSteps } =\n useBuilderStore();\n\n const [moveError, setMoveError] = useState<string | null>(null);\n\n const steps = schema.steps;\n const deps = computeStepDependencies(schema);\n\n const tryMove = (fromIndex: number, toIndex: number) => {\n const check = isMoveValid(steps, deps, fromIndex, toIndex);\n if (!check.valid) {\n setMoveError(check.reason ?? \"Invalid move\");\n setTimeout(() => setMoveError(null), 3000);\n return;\n }\n setMoveError(null);\n reorderSteps(fromIndex, toIndex);\n };\n\n return (\n <div style={styles.container}>\n <div style={styles.header}>\n <span style={styles.title}>Steps ({steps.length})</span>\n <button style={styles.addBtn} onClick={() => addStep()}>\n + Add step\n </button>\n </div>\n\n {/* Dependency violation error */}\n {moveError && (\n <div style={styles.errorBanner}>\n <span style={styles.errorIcon}>⚠</span>\n {moveError}\n </div>\n )}\n\n <div style={styles.list}>\n {steps.length === 0 && (\n <div style={styles.empty}>No steps yet. Click \"Add step\" to start.</div>\n )}\n\n {steps.map((step, index) => {\n const isSelected = step.id === selectedStepId;\n const hasCondition = !!step.visibleWhen;\n const depLabels = getStepDependencyLabels(step.id, deps, schema);\n\n const canMoveUp =\n index > 0 && isMoveValid(steps, deps, index, index - 1).valid;\n const canMoveDown =\n index < steps.length - 1 &&\n isMoveValid(steps, deps, index, index + 1).valid;\n\n const dependents = steps.filter((s) =>\n (deps.get(s.id) ?? new Set()).has(step.id)\n );\n\n return (\n <div\n key={step.id}\n style={{\n ...styles.card,\n ...(isSelected ? styles.cardSelected : {}),\n }}\n onClick={() => selectStep(step.id)}\n >\n <div style={styles.cardMain}>\n <div style={styles.cardLeft}>\n <div style={styles.cardIndex}>{index + 1}</div>\n <div style={{ minWidth: 0 }}>\n <div style={styles.cardTitle}>{step.title}</div>\n <div style={styles.cardMeta}>\n {step.fields.length} field{step.fields.length !== 1 ? \"s\" : \"\"}\n {hasCondition && (\n <span style={styles.conditionBadge}>conditional</span>\n )}\n </div>\n </div>\n </div>\n\n <div style={styles.cardActions}>\n {index > 0 && (\n <button\n style={{\n ...styles.iconBtn,\n ...(canMoveUp ? {} : styles.iconBtnBlocked),\n }}\n title={\n canMoveUp\n ? \"Move up\"\n : `Can't move up — dependency order required`\n }\n onClick={(e) => {\n e.stopPropagation();\n tryMove(index, index - 1);\n }}\n >\n ↑\n </button>\n )}\n {index < steps.length - 1 && (\n <button\n style={{\n ...styles.iconBtn,\n ...(canMoveDown ? {} : styles.iconBtnBlocked),\n }}\n title={\n canMoveDown\n ? \"Move down\"\n : `Can't move down — dependency order required`\n }\n onClick={(e) => {\n e.stopPropagation();\n tryMove(index, index + 1);\n }}\n >\n ↓\n </button>\n )}\n <button\n style={{ ...styles.iconBtn, ...styles.deleteBtn }}\n title=\"Remove step\"\n onClick={(e) => {\n e.stopPropagation();\n removeStep(step.id);\n }}\n >\n ✕\n </button>\n </div>\n </div>\n\n {/* Dependency info */}\n {depLabels.length > 0 && (\n <div style={styles.depRow}>\n <span style={styles.depLabel}>needs:</span>\n {depLabels.map((label) => (\n <span key={label} style={styles.depBadge}>{label}</span>\n ))}\n </div>\n )}\n {dependents.length > 0 && (\n <div style={styles.depRow}>\n <span style={styles.depLabelUsed}>used by:</span>\n {dependents.map((s) => (\n <span key={s.id} style={styles.depBadgeUsed}>{s.title}</span>\n ))}\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { display: \"flex\", flexDirection: \"column\", height: \"100%\" },\n header: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n padding: \"12px 16px\", borderBottom: \"1px solid var(--wp-border)\",\n },\n title: { fontWeight: 600, fontSize: 13, color: \"var(--wp-text-secondary)\" },\n addBtn: {\n fontSize: 12, padding: \"4px 10px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\", fontWeight: 500,\n },\n errorBanner: {\n margin: \"8px 8px 0\", padding: \"8px 12px\", background: \"var(--wp-danger-bg)\",\n border: \"1px solid var(--wp-danger-border)\", borderRadius: \"var(--wp-radius-lg)\", fontSize: 12,\n color: \"var(--wp-danger-text)\", display: \"flex\", alignItems: \"center\", gap: 6,\n },\n errorIcon: { fontSize: 14 },\n list: { flex: 1, overflowY: \"auto\", padding: 8 },\n empty: { padding: 24, textAlign: \"center\", color: \"var(--wp-text-subtle)\", fontSize: 13 },\n card: {\n padding: \"10px 12px\", borderRadius: \"var(--wp-radius-lg)\", marginBottom: 4,\n border: \"1px solid transparent\", cursor: \"pointer\",\n background: \"var(--wp-surface)\", transition: \"all 0.1s\",\n display: \"flex\", flexDirection: \"column\", gap: 6,\n },\n cardSelected: { background: \"var(--wp-primary-muted)\", border: \"1px solid var(--wp-primary-border)\" },\n cardMain: { display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" },\n cardLeft: { display: \"flex\", alignItems: \"center\", gap: 10, minWidth: 0, flex: 1 },\n cardIndex: {\n width: 24, height: 24, borderRadius: \"50%\", background: \"var(--wp-border)\",\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n fontSize: 11, fontWeight: 700, color: \"var(--wp-text-muted)\", flexShrink: 0,\n },\n cardTitle: { fontSize: 13, fontWeight: 600, color: \"var(--wp-text)\" },\n cardMeta: {\n fontSize: 11, color: \"var(--wp-text-subtle)\", display: \"flex\",\n alignItems: \"center\", gap: 6, marginTop: 2,\n },\n conditionBadge: {\n fontSize: 10, background: \"var(--wp-warning-bg)\", color: \"var(--wp-warning)\",\n padding: \"1px 6px\", borderRadius: 4, fontWeight: 600,\n },\n cardActions: { display: \"flex\", gap: 4, flexShrink: 0 },\n iconBtn: {\n width: 24, height: 24, border: \"none\", background: \"transparent\",\n cursor: \"pointer\", borderRadius: 4, fontSize: 12, color: \"var(--wp-text-subtle)\",\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n },\n iconBtnBlocked: {\n color: \"var(--wp-border-muted)\", cursor: \"not-allowed\", opacity: 0.4,\n },\n deleteBtn: { color: \"var(--wp-danger)\" },\n depRow: { display: \"flex\", alignItems: \"center\", flexWrap: \"wrap\", gap: 4 },\n depLabel: { fontSize: 10, fontWeight: 600, color: \"var(--wp-text-muted)\", textTransform: \"uppercase\" },\n depLabelUsed: { fontSize: 10, fontWeight: 600, color: \"var(--wp-success)\", textTransform: \"uppercase\" },\n depBadge: {\n fontSize: 10, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-primary-bg)\", color: \"var(--wp-primary-dark)\", borderRadius: 4,\n },\n depBadgeUsed: {\n fontSize: 10, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-success-bg)\", color: \"var(--wp-success)\", borderRadius: 4,\n },\n};\n","import { validateSchema } from \"@waypointjs/core\";\nimport { useBuilderStore } from \"../store/builder-store\";\n\ninterface ToolbarProps {\n onSave?: (schema: ReturnType<typeof useBuilderStore.getState>[\"schema\"]) => void | Promise<void>;\n previewMode?: boolean;\n onTest?: () => void;\n}\n\nexport function Toolbar({ onSave, previewMode, onTest }: ToolbarProps) {\n const { schema, isDirty, resetSchema } = useBuilderStore();\n\n const handleExport = () => {\n const json = JSON.stringify(schema, null, 2);\n const blob = new Blob([json], { type: \"application/json\" });\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = `${schema.id}.waypoint.json`;\n a.click();\n URL.revokeObjectURL(url);\n };\n\n const handleImport = () => {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = \".json\";\n input.onchange = (e) => {\n const file = (e.target as HTMLInputElement).files?.[0];\n if (!file) return;\n const reader = new FileReader();\n reader.onload = (ev) => {\n try {\n const parsed = JSON.parse(ev.target?.result as string);\n const result = validateSchema(parsed);\n if (!result.valid) {\n alert(`Invalid schema:\\n\\n${result.errors.map((e) => `• ${e}`).join(\"\\n\")}`);\n return;\n }\n useBuilderStore.getState().loadSchema(parsed);\n } catch {\n alert(\"Invalid JSON file — could not parse\");\n }\n };\n reader.readAsText(file);\n };\n input.click();\n };\n\n if (previewMode) {\n return (\n <div style={styles.toolbar}>\n <div style={styles.left}>\n <span style={styles.logo}>◈ waypoint</span>\n <span style={styles.separator}>/</span>\n <button\n style={{ ...styles.btn, ...styles.editBtn }}\n onClick={onTest}\n >\n ← Éditer\n </button>\n </div>\n <div style={styles.right}>\n <span style={{ fontSize: 12, color: \"var(--wp-text-muted)\", fontStyle: \"italic\" }}>\n Mode aperçu\n </span>\n </div>\n </div>\n );\n }\n\n return (\n <div style={styles.toolbar}>\n <div style={styles.left}>\n <span style={styles.logo}>◈ waypoint</span>\n <span style={styles.separator}>/</span>\n <input\n style={styles.journeyName}\n value={schema.name}\n placeholder=\"Journey name\"\n onChange={(e) =>\n useBuilderStore.setState((s) => ({\n schema: { ...s.schema, name: e.target.value },\n isDirty: true,\n }))\n }\n />\n {isDirty && <span style={styles.dirtyDot} title=\"Unsaved changes\" />}\n </div>\n\n <div style={styles.right}>\n {onTest && (\n <button style={{ ...styles.btn, ...styles.testBtn }} onClick={onTest}>\n ▶ Tester\n </button>\n )}\n <button style={styles.btn} onClick={handleImport}>Import</button>\n <button style={styles.btn} onClick={handleExport}>Export JSON</button>\n {onSave && (\n <button\n style={{ ...styles.btn, ...styles.saveBtn }}\n onClick={() => onSave(schema)}\n >\n Save\n </button>\n )}\n <button\n style={{ ...styles.btn, color: \"var(--wp-danger)\" }}\n onClick={() => {\n if (confirm(\"Reset the journey? All changes will be lost.\")) resetSchema();\n }}\n >\n Reset\n </button>\n </div>\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n toolbar: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n padding: \"0 16px\", height: 48, background: \"var(--wp-toolbar-bg)\",\n borderBottom: \"1px solid var(--wp-toolbar-border)\", flexShrink: 0,\n },\n left: { display: \"flex\", alignItems: \"center\", gap: 8 },\n logo: { fontSize: 14, fontWeight: 800, color: \"var(--wp-toolbar-logo)\", letterSpacing: \"-0.5px\" },\n separator: { color: \"var(--wp-toolbar-text-subtle)\", fontSize: 16 },\n journeyName: {\n fontSize: 13, fontWeight: 600, color: \"var(--wp-toolbar-text)\",\n background: \"transparent\", border: \"none\", outline: \"none\",\n borderBottom: \"1px solid transparent\",\n },\n dirtyDot: {\n width: 6, height: 6, borderRadius: \"50%\", background: \"var(--wp-warning-strong)\",\n flexShrink: 0,\n },\n right: { display: \"flex\", alignItems: \"center\", gap: 8 },\n btn: {\n fontSize: 12, padding: \"5px 12px\", border: \"1px solid var(--wp-toolbar-border)\",\n background: \"transparent\", color: \"var(--wp-toolbar-text-muted)\", borderRadius: \"var(--wp-radius)\",\n cursor: \"pointer\", fontWeight: 500,\n },\n saveBtn: { background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\", border: \"1px solid var(--wp-primary)\" },\n testBtn: { background: \"var(--wp-success, #22c55e)\", color: \"#fff\", border: \"1px solid var(--wp-success, #22c55e)\", fontWeight: 600 },\n editBtn: { background: \"transparent\", color: \"var(--wp-toolbar-text)\", border: \"none\", fontWeight: 600, cursor: \"pointer\", fontSize: 13, padding: \"5px 0\" },\n};\n","\"use client\";\n\nimport type { WaypointSchema } from \"@waypointjs/core\";\nimport { createRuntimeStore } from \"@waypointjs/core\";\nimport type { RuntimeStore } from \"@waypointjs/core\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { buildThemeVars, type WaypointTheme } from \"../theme\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport { ExternalVariablePanel } from \"./ExternalVariablePanel\";\nimport { FieldEditor } from \"./FieldEditor\";\nimport { FieldList } from \"./FieldList\";\nimport { PreviewPanel } from \"./PreviewPanel\";\nimport { StepEditor } from \"./StepEditor\";\nimport { StepList } from \"./StepList\";\nimport { Toolbar } from \"./Toolbar\";\n\nexport interface WaypointBuilderProps {\n /** Initial schema to load into the builder */\n defaultValue?: WaypointSchema;\n /** Called whenever the schema changes */\n onChange?: (schema: WaypointSchema) => void;\n /** Called when the user clicks \"Save\" */\n onSave?: (schema: WaypointSchema) => void | Promise<void>;\n /** Theme override — partial or full WaypointTheme */\n theme?: WaypointTheme;\n /** CSS class applied to the root element */\n className?: string;\n /** Inline style applied to the root element */\n style?: React.CSSProperties;\n}\n\nexport function WaypointBuilder({\n defaultValue,\n onChange,\n onSave,\n theme,\n className,\n style,\n}: WaypointBuilderProps) {\n const { loadSchema, schema } = useBuilderStore();\n const [previewMode, setPreviewMode] = useState(false);\n\n // Preview store — singleton, no localStorage persistence\n const previewStoreRef = useRef<RuntimeStore | null>(null);\n if (previewStoreRef.current === null) {\n previewStoreRef.current = createRuntimeStore();\n }\n\n useEffect(() => {\n if (defaultValue) loadSchema(defaultValue);\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n onChange?.(schema);\n }, [schema, onChange]);\n\n function handleTest() {\n previewStoreRef.current!.getState().init(schema);\n setPreviewMode(true);\n }\n\n const themeVars = buildThemeVars(theme);\n\n return (\n <div className={className} style={{ ...rootStyle, ...themeVars, ...style }}>\n <Toolbar\n onSave={!previewMode && onSave ? () => onSave(schema) : undefined}\n previewMode={previewMode}\n onTest={previewMode ? () => setPreviewMode(false) : handleTest}\n />\n {previewMode ? (\n <PreviewPanel\n store={previewStoreRef.current}\n schema={schema}\n onEdit={() => setPreviewMode(false)}\n />\n ) : (\n <div style={layoutStyle}>\n {/* Column 1 — Steps + External Variables */}\n <div style={colStyle}>\n <div style={{ flex: 1, overflow: \"hidden\", display: \"flex\", flexDirection: \"column\" }}>\n <StepList />\n </div>\n <div style={{ borderTop: \"1px solid var(--wp-border)\", flexShrink: 0, overflow: \"auto\", maxHeight: 280 }}>\n <ExternalVariablePanel />\n </div>\n </div>\n\n {/* Divider */}\n <div style={dividerStyle} />\n\n {/* Column 2 — Fields */}\n <div style={colStyle}>\n <FieldList />\n </div>\n\n {/* Divider */}\n <div style={dividerStyle} />\n\n {/* Column 3 — Step config + Field editor */}\n <div style={{ ...colStyle, flex: 1.2, display: \"flex\", flexDirection: \"column\" }}>\n <div style={{ flex: 1, borderBottom: \"1px solid var(--wp-border)\", overflow: \"hidden\" }}>\n <StepEditor />\n </div>\n <div style={{ flex: 1, overflow: \"hidden\" }}>\n <FieldEditor />\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nconst rootStyle: React.CSSProperties = {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n background: \"var(--wp-canvas)\",\n borderRadius: 12,\n border: \"1px solid var(--wp-border)\",\n overflow: \"hidden\",\n fontFamily: \"var(--wp-font)\",\n};\n\nconst layoutStyle: React.CSSProperties = {\n display: \"flex\",\n flex: 1,\n overflow: \"hidden\",\n};\n\nconst colStyle: React.CSSProperties = {\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n minWidth: 0,\n};\n\nconst dividerStyle: React.CSSProperties = {\n width: 1,\n background: \"var(--wp-border)\",\n flexShrink: 0,\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/theme.ts","../src/store/builder-store.ts","../src/components/ExternalVariablePanel.tsx","../src/hooks/useAllFieldPaths.ts","../src/components/ConditionBuilder.tsx","../src/components/DependsOnInput.tsx","../src/components/Modal.tsx","../src/components/FieldEditor.tsx","../src/utils/step-dependencies.ts","../src/components/FieldList.tsx","../src/components/PreviewPanel.tsx","../src/components/StepEditor.tsx","../src/components/StepList.tsx","../src/components/Toolbar.tsx","../src/components/WaypointBuilder.tsx"],"names":["create","useState","jsxs","jsx","Fragment","useRef","useEffect","styles","useWaypoint","useWaypointStep","resolveTree","getNextStep","getPreviousStep","DevPanel","inputStyle","StepList","validateSchema","e","createRuntimeStore"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * @waypointjs/builder — Theming\n *\n * All design tokens used by the builder UI.\n * Pass a partial `WaypointTheme` to `<WaypointBuilder theme={...} />` to override any token.\n *\n * Built-in themes: `DEFAULT_THEME` (light) and `DARK_THEME`.\n */\n\n// ---------------------------------------------------------------------------\n// Type\n// ---------------------------------------------------------------------------\n\nexport interface WaypointTheme {\n // ── Primary accent ─────────────────────────────────────────────────────\n /** Main brand color — buttons, selected state accent. Default: #6366f1 */\n primary?: string;\n /** Darker shade of primary — hover states, dep badge text. Default: #4338ca */\n primaryDark?: string;\n /** Light primary background — dep badges, type badges. Default: #e0e7ff */\n primaryBg?: string;\n /** Very light primary — selected card background. Default: #ede9fe */\n primaryMuted?: string;\n /** Primary border — selected card outline. Default: #a78bfa */\n primaryBorder?: string;\n\n // ── Toolbar ────────────────────────────────────────────────────────────\n /** Toolbar background. Default: #111827 */\n toolbarBg?: string;\n /** Toolbar bottom border. Default: #1f2937 */\n toolbarBorder?: string;\n /** Toolbar logo / accent color. Default: #a78bfa */\n toolbarLogo?: string;\n /** Toolbar primary text color. Default: #f9fafb */\n toolbarText?: string;\n /** Toolbar muted text (buttons). Default: #d1d5db */\n toolbarTextMuted?: string;\n /** Toolbar subtle text (separator). Default: #4b5563 */\n toolbarTextSubtle?: string;\n\n // ── Canvas & surfaces ──────────────────────────────────────────────────\n /** Main background (panels, dropdowns). Default: #ffffff */\n canvas?: string;\n /** Subtle surface (card backgrounds, inputs). Default: #f9fafb */\n surface?: string;\n /** Slightly darker surface (hover, alternate rows). Default: #f3f4f6 */\n surfaceMuted?: string;\n /** Alternative surface (code blocks, preview bg). Default: #f1f5f9 */\n surfaceAlt?: string;\n\n // ── Borders ────────────────────────────────────────────────────────────\n /** Default border color. Default: #e5e7eb */\n border?: string;\n /** Muted border (inputs, selects). Default: #d1d5db */\n borderMuted?: string;\n\n // ── Text ───────────────────────────────────────────────────────────────\n /** Primary text. Default: #111827 */\n text?: string;\n /** Secondary text (labels, sub-headings). Default: #374151 */\n textSecondary?: string;\n /** Muted text (helper labels). Default: #6b7280 */\n textMuted?: string;\n /** Subtle text (metadata, hints). Default: #9ca3af */\n textSubtle?: string;\n /** Monospace / code text. Default: #475569 */\n textMono?: string;\n\n // ── Semantic — danger ──────────────────────────────────────────────────\n /** Danger foreground. Default: #ef4444 */\n danger?: string;\n /** Darker danger text. Default: #dc2626 */\n dangerText?: string;\n /** Danger background (very light). Default: #fef2f2 */\n dangerBg?: string;\n /** Danger background (strong). Default: #fee2e2 */\n dangerBgStrong?: string;\n /** Danger border. Default: #fecaca */\n dangerBorder?: string;\n\n // ── Semantic — warning ─────────────────────────────────────────────────\n /** Warning text / badge foreground. Default: #d97706 */\n warning?: string;\n /** Warning strong (dirty dot). Default: #f59e0b */\n warningStrong?: string;\n /** Warning background. Default: #fef3c7 */\n warningBg?: string;\n\n // ── Semantic — success ─────────────────────────────────────────────────\n /** Success text. Default: #059669 */\n success?: string;\n /** Success background. Default: #d1fae5 */\n successBg?: string;\n\n // ── Semantic — info ────────────────────────────────────────────────────\n /** Info icon / text. Default: #3b82f6 */\n info?: string;\n /** Info text (used-by ref chips). Default: #3b82f6 */\n infoText?: string;\n /** Info background (light). Default: #eff6ff */\n infoBg?: string;\n /** Info background (strong, ref chip bg). Default: #eff6ff */\n infoBgStrong?: string;\n /** Info border. Default: #bfdbfe */\n infoBorder?: string;\n\n // ── Typography & shape ─────────────────────────────────────────────────\n /** Font stack. Default: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif */\n font?: string;\n /** Base border radius. Default: 6px */\n radius?: string;\n /** Large border radius (cards, modals). Default: 8px */\n radiusLg?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Default (light) theme\n// ---------------------------------------------------------------------------\n\nexport const DEFAULT_THEME: Required<WaypointTheme> = {\n primary: \"#6366f1\",\n primaryDark: \"#4338ca\",\n primaryBg: \"#e0e7ff\",\n primaryMuted: \"#ede9fe\",\n primaryBorder: \"#a78bfa\",\n\n toolbarBg: \"#111827\",\n toolbarBorder: \"#1f2937\",\n toolbarLogo: \"#a78bfa\",\n toolbarText: \"#f9fafb\",\n toolbarTextMuted: \"#d1d5db\",\n toolbarTextSubtle: \"#4b5563\",\n\n canvas: \"#ffffff\",\n surface: \"#f9fafb\",\n surfaceMuted: \"#f3f4f6\",\n surfaceAlt: \"#f1f5f9\",\n\n border: \"#e5e7eb\",\n borderMuted: \"#d1d5db\",\n\n text: \"#111827\",\n textSecondary: \"#374151\",\n textMuted: \"#6b7280\",\n textSubtle: \"#9ca3af\",\n textMono: \"#475569\",\n\n danger: \"#ef4444\",\n dangerText: \"#dc2626\",\n dangerBg: \"#fef2f2\",\n dangerBgStrong: \"#fee2e2\",\n dangerBorder: \"#fecaca\",\n\n warning: \"#d97706\",\n warningStrong: \"#f59e0b\",\n warningBg: \"#fef3c7\",\n\n success: \"#059669\",\n successBg: \"#d1fae5\",\n\n info: \"#3b82f6\",\n infoText: \"#3b82f6\",\n infoBg: \"#eff6ff\",\n infoBgStrong: \"#eff6ff\",\n infoBorder: \"#bfdbfe\",\n\n font: \"-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n radius: \"6px\",\n radiusLg: \"8px\",\n};\n\n// ---------------------------------------------------------------------------\n// Dark theme\n// ---------------------------------------------------------------------------\n\nexport const DARK_THEME: Required<WaypointTheme> = {\n primary: \"#818cf8\",\n primaryDark: \"#6366f1\",\n primaryBg: \"#1e1b4b\",\n primaryMuted: \"#1e1b4b\",\n primaryBorder: \"#6366f1\",\n\n toolbarBg: \"#0a0a0a\",\n toolbarBorder: \"#1a1a1a\",\n toolbarLogo: \"#818cf8\",\n toolbarText: \"#f1f5f9\",\n toolbarTextMuted: \"#9ca3af\",\n toolbarTextSubtle: \"#374151\",\n\n canvas: \"#141414\",\n surface: \"#1e1e1e\",\n surfaceMuted: \"#2a2a2a\",\n surfaceAlt: \"#242424\",\n\n border: \"#2e2e2e\",\n borderMuted: \"#404040\",\n\n text: \"#f1f5f9\",\n textSecondary: \"#e2e8f0\",\n textMuted: \"#94a3b8\",\n textSubtle: \"#64748b\",\n textMono: \"#94a3b8\",\n\n danger: \"#f87171\",\n dangerText: \"#fca5a5\",\n dangerBg: \"#1c0a0a\",\n dangerBgStrong: \"#2d1515\",\n dangerBorder: \"#7f1d1d\",\n\n warning: \"#fbbf24\",\n warningStrong: \"#fbbf24\",\n warningBg: \"#1a1000\",\n\n success: \"#34d399\",\n successBg: \"#052e16\",\n\n info: \"#60a5fa\",\n infoText: \"#93c5fd\",\n infoBg: \"#0a1628\",\n infoBgStrong: \"#0f1f3d\",\n infoBorder: \"#1e3a5f\",\n\n font: \"-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n radius: \"6px\",\n radiusLg: \"8px\",\n};\n\n// ---------------------------------------------------------------------------\n// CSS variable builder\n// ---------------------------------------------------------------------------\n\n/**\n * Converts a WaypointTheme (merged with defaults) into a React inline style object\n * containing all CSS custom properties (`--wp-*`).\n *\n * Apply this to the root element of `<WaypointBuilder />`.\n */\nexport function buildThemeVars(theme: WaypointTheme = {}): React.CSSProperties {\n const t: Required<WaypointTheme> = { ...DEFAULT_THEME, ...theme };\n\n return {\n \"--wp-primary\": t.primary,\n \"--wp-primary-dark\": t.primaryDark,\n \"--wp-primary-bg\": t.primaryBg,\n \"--wp-primary-muted\": t.primaryMuted,\n \"--wp-primary-border\": t.primaryBorder,\n\n \"--wp-toolbar-bg\": t.toolbarBg,\n \"--wp-toolbar-border\": t.toolbarBorder,\n \"--wp-toolbar-logo\": t.toolbarLogo,\n \"--wp-toolbar-text\": t.toolbarText,\n \"--wp-toolbar-text-muted\": t.toolbarTextMuted,\n \"--wp-toolbar-text-subtle\": t.toolbarTextSubtle,\n\n \"--wp-canvas\": t.canvas,\n \"--wp-surface\": t.surface,\n \"--wp-surface-muted\": t.surfaceMuted,\n \"--wp-surface-alt\": t.surfaceAlt,\n\n \"--wp-border\": t.border,\n \"--wp-border-muted\": t.borderMuted,\n\n \"--wp-text\": t.text,\n \"--wp-text-secondary\": t.textSecondary,\n \"--wp-text-muted\": t.textMuted,\n \"--wp-text-subtle\": t.textSubtle,\n \"--wp-text-mono\": t.textMono,\n\n \"--wp-danger\": t.danger,\n \"--wp-danger-text\": t.dangerText,\n \"--wp-danger-bg\": t.dangerBg,\n \"--wp-danger-bg-strong\": t.dangerBgStrong,\n \"--wp-danger-border\": t.dangerBorder,\n\n \"--wp-warning\": t.warning,\n \"--wp-warning-strong\": t.warningStrong,\n \"--wp-warning-bg\": t.warningBg,\n\n \"--wp-success\": t.success,\n \"--wp-success-bg\": t.successBg,\n\n \"--wp-info\": t.info,\n \"--wp-info-text\": t.infoText,\n \"--wp-info-bg\": t.infoBg,\n \"--wp-info-bg-strong\": t.infoBgStrong,\n \"--wp-info-border\": t.infoBorder,\n\n \"--wp-font\": t.font,\n \"--wp-radius\": t.radius,\n \"--wp-radius-lg\": t.radiusLg,\n } as React.CSSProperties;\n}\n","import { create } from \"zustand\";\nimport type {\n ConditionGroup,\n CustomTypeDefinition,\n ExternalVariable,\n FieldDefinition,\n PersistenceMode,\n StepDefinition,\n WaypointSchema,\n} from \"@waypointjs/core\";\n\n// ---------------------------------------------------------------------------\n// State\n// ---------------------------------------------------------------------------\n\nexport interface BuilderState {\n /** The schema being edited */\n schema: WaypointSchema;\n /** Currently selected step id */\n selectedStepId: string | null;\n /** Currently selected field id (within selectedStep) */\n selectedFieldId: string | null;\n /** Whether the schema has unsaved changes */\n isDirty: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Actions\n// ---------------------------------------------------------------------------\n\nexport interface BuilderActions {\n // Schema\n loadSchema: (schema: WaypointSchema) => void;\n resetSchema: () => void;\n\n // Steps\n addStep: (step?: Partial<Omit<StepDefinition, \"id\">>) => string;\n updateStep: (stepId: string, updates: Partial<Omit<StepDefinition, \"id\">>) => void;\n removeStep: (stepId: string) => void;\n reorderSteps: (fromIndex: number, toIndex: number) => void;\n selectStep: (stepId: string | null) => void;\n\n // Fields\n addField: (stepId: string, field?: Partial<Omit<FieldDefinition, \"id\">>) => string;\n updateField: (stepId: string, fieldId: string, updates: Partial<Omit<FieldDefinition, \"id\">>) => void;\n removeField: (stepId: string, fieldId: string) => void;\n reorderFields: (stepId: string, fromIndex: number, toIndex: number) => void;\n selectField: (fieldId: string | null) => void;\n\n // Step conditions\n setStepCondition: (stepId: string, condition: ConditionGroup | undefined) => void;\n\n // Field conditions\n setFieldCondition: (stepId: string, fieldId: string, condition: ConditionGroup | undefined) => void;\n\n // External variables\n addExternalVariable: (variable: Omit<ExternalVariable, \"usedIn\">) => void;\n updateExternalVariable: (varId: string, updates: Partial<ExternalVariable>) => void;\n removeExternalVariable: (varId: string) => void;\n\n // Custom types\n addCustomType: (type: CustomTypeDefinition) => void;\n updateCustomType: (typeId: string, updates: Partial<CustomTypeDefinition>) => void;\n removeCustomType: (typeId: string) => void;\n\n // Persistence\n setPersistenceMode: (mode: PersistenceMode) => void;\n}\n\nexport type BuilderStore = BuilderState & BuilderActions;\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction generateId(prefix: string): string {\n return `${prefix}_${Math.random().toString(36).slice(2, 9)}`;\n}\n\nfunction makeDefaultSchema(): WaypointSchema {\n return {\n version: \"1\",\n id: generateId(\"journey\"),\n name: \"My Journey\",\n steps: [],\n externalVariables: [],\n customTypes: [],\n persistenceMode: \"zustand\",\n };\n}\n\n// ---------------------------------------------------------------------------\n// Store\n// ---------------------------------------------------------------------------\n\nexport const useBuilderStore = create<BuilderStore>((set, _get) => ({\n schema: makeDefaultSchema(),\n selectedStepId: null,\n selectedFieldId: null,\n isDirty: false,\n\n // --- Schema ---\n\n loadSchema: (schema) =>\n set({ schema, selectedStepId: null, selectedFieldId: null, isDirty: false }),\n\n resetSchema: () =>\n set({ schema: makeDefaultSchema(), selectedStepId: null, selectedFieldId: null, isDirty: false }),\n\n // --- Steps ---\n\n addStep: (partial = {}) => {\n const id = generateId(\"step\");\n const step: StepDefinition = {\n id,\n title: partial.title ?? \"New Step\",\n url: partial.url ?? `/${id}`,\n fields: partial.fields ?? [],\n ...partial,\n };\n set((s) => ({\n schema: { ...s.schema, steps: [...s.schema.steps, step] },\n selectedStepId: id,\n selectedFieldId: null,\n isDirty: true,\n }));\n return id;\n },\n\n updateStep: (stepId, updates) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId ? { ...step, ...updates } : step\n ),\n },\n isDirty: true,\n })),\n\n removeStep: (stepId) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.filter((step) => step.id !== stepId),\n },\n selectedStepId: s.selectedStepId === stepId ? null : s.selectedStepId,\n selectedFieldId: s.selectedStepId === stepId ? null : s.selectedFieldId,\n isDirty: true,\n })),\n\n reorderSteps: (fromIndex, toIndex) =>\n set((s) => {\n const steps = [...s.schema.steps];\n const [moved] = steps.splice(fromIndex, 1);\n steps.splice(toIndex, 0, moved);\n return { schema: { ...s.schema, steps }, isDirty: true };\n }),\n\n selectStep: (stepId) =>\n set({ selectedStepId: stepId, selectedFieldId: null }),\n\n // --- Fields ---\n\n addField: (stepId, partial = {}) => {\n const id = generateId(\"field\");\n const field: FieldDefinition = {\n id,\n type: partial.type ?? \"text\",\n label: partial.label ?? \"New Field\",\n ...partial,\n };\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId\n ? { ...step, fields: [...step.fields, field] }\n : step\n ),\n },\n selectedFieldId: id,\n isDirty: true,\n }));\n return id;\n },\n\n updateField: (stepId, fieldId, updates) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId\n ? {\n ...step,\n fields: step.fields.map((f) =>\n f.id === fieldId ? { ...f, ...updates } : f\n ),\n }\n : step\n ),\n },\n isDirty: true,\n })),\n\n removeField: (stepId, fieldId) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId\n ? { ...step, fields: step.fields.filter((f) => f.id !== fieldId) }\n : step\n ),\n },\n selectedFieldId: s.selectedFieldId === fieldId ? null : s.selectedFieldId,\n isDirty: true,\n })),\n\n reorderFields: (stepId, fromIndex, toIndex) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) => {\n if (step.id !== stepId) return step;\n const fields = [...step.fields];\n const [moved] = fields.splice(fromIndex, 1);\n fields.splice(toIndex, 0, moved);\n return { ...step, fields };\n }),\n },\n isDirty: true,\n })),\n\n selectField: (fieldId) => set({ selectedFieldId: fieldId }),\n\n // --- Step conditions ---\n\n setStepCondition: (stepId, condition) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId ? { ...step, visibleWhen: condition } : step\n ),\n },\n isDirty: true,\n })),\n\n // --- Field conditions ---\n\n setFieldCondition: (stepId, fieldId, condition) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId\n ? {\n ...step,\n fields: step.fields.map((f) =>\n f.id === fieldId ? { ...f, visibleWhen: condition } : f\n ),\n }\n : step\n ),\n },\n isDirty: true,\n })),\n\n // --- External variables ---\n\n addExternalVariable: (variable) =>\n set((s) => ({\n schema: {\n ...s.schema,\n externalVariables: [\n ...(s.schema.externalVariables ?? []),\n { ...variable, usedIn: [] },\n ],\n },\n isDirty: true,\n })),\n\n updateExternalVariable: (varId, updates) =>\n set((s) => ({\n schema: {\n ...s.schema,\n externalVariables: (s.schema.externalVariables ?? []).map((v) =>\n v.id === varId ? { ...v, ...updates } : v\n ),\n },\n isDirty: true,\n })),\n\n removeExternalVariable: (varId) =>\n set((s) => ({\n schema: {\n ...s.schema,\n externalVariables: (s.schema.externalVariables ?? []).filter(\n (v) => v.id !== varId\n ),\n },\n isDirty: true,\n })),\n\n // --- Custom types ---\n\n addCustomType: (type) =>\n set((s) => ({\n schema: {\n ...s.schema,\n customTypes: [...(s.schema.customTypes ?? []), type],\n },\n isDirty: true,\n })),\n\n updateCustomType: (typeId, updates) =>\n set((s) => ({\n schema: {\n ...s.schema,\n customTypes: (s.schema.customTypes ?? []).map((t) =>\n t.id === typeId ? { ...t, ...updates } : t\n ),\n },\n isDirty: true,\n })),\n\n removeCustomType: (typeId) =>\n set((s) => ({\n schema: {\n ...s.schema,\n customTypes: (s.schema.customTypes ?? []).filter((t) => t.id !== typeId),\n },\n isDirty: true,\n })),\n\n // --- Persistence ---\n\n setPersistenceMode: (mode) =>\n set((s) => ({\n schema: { ...s.schema, persistenceMode: mode },\n isDirty: true,\n })),\n}));\n","\"use client\";\n\nimport type { ExternalVariable } from \"@waypointjs/core\";\nimport { useState } from \"react\";\nimport { useBuilderStore } from \"../store/builder-store\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ntype VarType = ExternalVariable[\"type\"];\n\ninterface FormState {\n id: string;\n label: string;\n type: VarType;\n blocking: boolean;\n}\n\nconst BLANK_FORM: FormState = {\n id: \"\",\n label: \"\",\n type: \"string\",\n blocking: false,\n};\n\n// ---------------------------------------------------------------------------\n// ExternalVariablePanel\n// ---------------------------------------------------------------------------\n\nexport function ExternalVariablePanel() {\n const {\n schema,\n addExternalVariable,\n updateExternalVariable,\n removeExternalVariable,\n } = useBuilderStore();\n const variables = schema.externalVariables ?? [];\n\n const [isAdding, setIsAdding] = useState(false);\n const [editingId, setEditingId] = useState<string | null>(null);\n const [form, setForm] = useState<FormState>(BLANK_FORM);\n const [error, setError] = useState<string | null>(null);\n\n // Compute which vars are actually referenced in the schema\n const usageMap = computeUsageMap(schema.steps ?? []);\n\n // ---------------------------------------------------------------------------\n // Helpers\n // ---------------------------------------------------------------------------\n\n function startAdd() {\n setIsAdding(true);\n setEditingId(null);\n setForm(BLANK_FORM);\n setError(null);\n }\n\n function startEdit(v: ExternalVariable) {\n setEditingId(v.id);\n setIsAdding(false);\n setForm({ id: v.id, label: v.label, type: v.type, blocking: v.blocking });\n setError(null);\n }\n\n function cancelForm() {\n setIsAdding(false);\n setEditingId(null);\n setError(null);\n }\n\n function validateForm(): string | null {\n if (!form.id.trim()) return \"ID is required\";\n if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(form.id.trim()))\n return \"ID must be alphanumeric (no spaces)\";\n if (!form.label.trim()) return \"Label is required\";\n if (isAdding && variables.some((v) => v.id === form.id.trim()))\n return `ID \"${form.id}\" already exists`;\n return null;\n }\n\n function submitAdd() {\n const err = validateForm();\n if (err) {\n setError(err);\n return;\n }\n addExternalVariable({\n id: form.id.trim(),\n label: form.label.trim(),\n type: form.type,\n blocking: form.blocking,\n });\n setIsAdding(false);\n setForm(BLANK_FORM);\n setError(null);\n }\n\n function submitEdit() {\n const err = validateForm();\n if (err) {\n setError(err);\n return;\n }\n if (!editingId) return;\n updateExternalVariable(editingId, {\n label: form.label.trim(),\n type: form.type,\n blocking: form.blocking,\n });\n setEditingId(null);\n setError(null);\n }\n\n function remove(id: string) {\n removeExternalVariable(id);\n if (editingId === id) {\n setEditingId(null);\n setError(null);\n }\n }\n\n // ---------------------------------------------------------------------------\n // Render\n // ---------------------------------------------------------------------------\n\n return (\n <div style={panelStyle}>\n {/* Header */}\n <div style={headerStyle}>\n <span style={titleStyle}>External Variables</span>\n {!isAdding && (\n <button\n style={addBtnStyle}\n onClick={startAdd}\n title=\"Add external variable\"\n >\n + Add\n </button>\n )}\n </div>\n\n {/* Empty state */}\n {variables.length === 0 && !isAdding && (\n <p style={emptyStyle}>\n No external variables declared.\n <br />\n External vars are injected at runtime\n <br />\n (e.g. <code style={codeStyle}>$ext.userId</code>).\n </p>\n )}\n\n {/* Variable list */}\n {variables.map((v) => {\n const refs = usageMap.get(v.id) ?? [];\n const isBeingEdited = editingId === v.id;\n\n return (\n <div\n key={v.id}\n style={{\n ...varRowStyle,\n ...(isBeingEdited ? varRowActiveStyle : {}),\n }}\n >\n {isBeingEdited ? (\n <VarForm\n form={form}\n onChange={setForm}\n error={error}\n onSubmit={submitEdit}\n onCancel={cancelForm}\n submitLabel=\"Save\"\n idReadOnly\n />\n ) : (\n <>\n <div style={varMainStyle}>\n <div style={varTopRowStyle}>\n <span style={varIdStyle}>${`ext.${v.id}`}</span>\n <div style={badgeRowStyle}>\n <TypeBadge type={v.type} />\n {v.blocking && (\n <span style={blockingBadgeStyle}>blocking</span>\n )}\n </div>\n </div>\n <span style={varLabelStyle}>{v.label}</span>\n {refs.length > 0 && (\n <div style={refsStyle}>\n {refs.map((ref, i) => (\n <span key={i} style={refChipStyle}>\n {ref}\n </span>\n ))}\n </div>\n )}\n </div>\n <div style={varActionsStyle}>\n <button style={actionBtnStyle} onClick={() => startEdit(v)}>\n Edit\n </button>\n <button\n style={{ ...actionBtnStyle, color: \"#ef4444\" }}\n title=\"Remove variable\"\n onClick={() => remove(v.id)}\n >\n ✕\n </button>\n </div>\n </>\n )}\n </div>\n );\n })}\n\n {/* Add form */}\n {isAdding && (\n <div style={{ ...varRowStyle, ...varRowActiveStyle }}>\n <VarForm\n form={form}\n onChange={setForm}\n error={error}\n onSubmit={submitAdd}\n onCancel={cancelForm}\n submitLabel=\"Add\"\n />\n </div>\n )}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// VarForm — inline form for add/edit\n// ---------------------------------------------------------------------------\n\ninterface VarFormProps {\n form: FormState;\n onChange: (f: FormState) => void;\n error: string | null;\n onSubmit: () => void;\n onCancel: () => void;\n submitLabel: string;\n idReadOnly?: boolean;\n}\n\nfunction VarForm({\n form,\n onChange,\n error,\n onSubmit,\n onCancel,\n submitLabel,\n idReadOnly,\n}: VarFormProps) {\n function set(key: keyof FormState, value: unknown) {\n onChange({ ...form, [key]: value });\n }\n\n return (\n <div style={formStyle}>\n {/* ID */}\n <label style={formLabelStyle}>ID</label>\n <input\n style={{\n ...inputStyle,\n ...(idReadOnly ? { background: \"#f9fafb\", color: \"#6b7280\" } : {}),\n }}\n value={form.id}\n onChange={(e) => set(\"id\", e.target.value)}\n placeholder=\"e.g. userId\"\n readOnly={idReadOnly}\n />\n\n {/* Label */}\n <label style={formLabelStyle}>Label</label>\n <input\n style={inputStyle}\n value={form.label}\n onChange={(e) => set(\"label\", e.target.value)}\n placeholder=\"Human-readable description\"\n />\n\n {/* Type */}\n <label style={formLabelStyle}>Type</label>\n <select\n style={selectStyle}\n value={form.type}\n onChange={(e) => set(\"type\", e.target.value as VarType)}\n >\n <option value=\"string\">string</option>\n <option value=\"number\">number</option>\n <option value=\"boolean\">boolean</option>\n <option value=\"object\">object</option>\n </select>\n\n {/* Blocking */}\n <label style={checkboxRowStyle}>\n <input\n type=\"checkbox\"\n checked={form.blocking}\n onChange={(e) => set(\"blocking\", e.target.checked)}\n style={{ marginRight: 6 }}\n />\n <span style={formLabelStyle}>\n Blocking — throw if missing at runtime\n </span>\n </label>\n\n {/* Error */}\n {error && <p style={errorStyle}>{error}</p>}\n\n {/* Actions */}\n <div style={formActionsStyle}>\n <button style={cancelBtnStyle} onClick={onCancel}>\n Cancel\n </button>\n <button style={submitBtnStyle} onClick={onSubmit}>\n {submitLabel}\n </button>\n </div>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// TypeBadge\n// ---------------------------------------------------------------------------\n\nfunction TypeBadge({ type }: { type: VarType }) {\n const colors: Record<VarType, string> = {\n string: \"#d1fae5\",\n number: \"#dbeafe\",\n boolean: \"#fef3c7\",\n object: \"#f3e8ff\",\n };\n return (\n <span style={{ ...typeBadgeStyle, background: colors[type] ?? \"#f3f4f6\" }}>\n {type}\n </span>\n );\n}\n\n// ---------------------------------------------------------------------------\n// computeUsageMap — scan all steps/fields for $ext.varId references\n// ---------------------------------------------------------------------------\n\nimport type { StepDefinition, ConditionGroup } from \"@waypointjs/core\";\n\nfunction computeUsageMap(steps: StepDefinition[]): Map<string, string[]> {\n const map = new Map<string, string[]>();\n\n function addRef(varId: string, label: string) {\n const existing = map.get(varId) ?? [];\n if (!existing.includes(label)) existing.push(label);\n map.set(varId, existing);\n }\n\n function scanPaths(paths: string[] | undefined, context: string) {\n for (const path of paths ?? []) {\n if (path.startsWith(\"$ext.\")) addRef(path.slice(5), context);\n }\n }\n\n function scanCondition(group: ConditionGroup | undefined, context: string) {\n if (!group) return;\n for (const rule of group.rules ?? []) {\n if (rule.field.startsWith(\"$ext.\")) addRef(rule.field.slice(5), context);\n }\n for (const nested of group.groups ?? []) scanCondition(nested, context);\n }\n\n for (const step of steps) {\n scanCondition(step.visibleWhen, step.title);\n for (const field of step.fields ?? []) {\n scanPaths(field.dependsOn, `${step.title} › ${field.label}`);\n scanCondition(field.visibleWhen, `${step.title} › ${field.label}`);\n }\n }\n\n return map;\n}\n\n// ---------------------------------------------------------------------------\n// Styles\n// ---------------------------------------------------------------------------\n\nconst panelStyle: React.CSSProperties = {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"8px 0\",\n gap: 0,\n};\n\nconst headerStyle: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"6px 12px 8px\",\n};\n\nconst titleStyle: React.CSSProperties = {\n fontSize: 11,\n fontWeight: 700,\n color: \"#9ca3af\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.05em\",\n};\n\nconst addBtnStyle: React.CSSProperties = {\n fontSize: 11,\n fontWeight: 600,\n color: \"#6366f1\",\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n padding: \"2px 4px\",\n};\n\nconst emptyStyle: React.CSSProperties = {\n fontSize: 11,\n color: \"#9ca3af\",\n padding: \"8px 12px 12px\",\n lineHeight: 1.5,\n margin: 0,\n};\n\nconst codeStyle: React.CSSProperties = {\n fontFamily: \"monospace\",\n background: \"#f97316\",\n color: \"#070714\",\n borderRadius: 3,\n padding: \"1px 3px\",\n};\n\nconst varRowStyle: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: 6,\n padding: \"8px 12px\",\n borderTop: \"1px solid #f3f4f6\",\n};\n\nconst varRowActiveStyle: React.CSSProperties = {\n background: \"#f9fafb\",\n};\n\nconst varMainStyle: React.CSSProperties = {\n flex: 1,\n minWidth: 0,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 2,\n};\n\nconst varTopRowStyle: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n flexWrap: \"wrap\",\n};\n\nconst varIdStyle: React.CSSProperties = {\n fontSize: 11,\n fontFamily: \"monospace\",\n fontWeight: 600,\n color: \"#374151\",\n};\n\nconst badgeRowStyle: React.CSSProperties = {\n display: \"flex\",\n gap: 4,\n flexWrap: \"wrap\",\n};\n\nconst typeBadgeStyle: React.CSSProperties = {\n fontSize: 10,\n fontWeight: 600,\n padding: \"1px 5px\",\n borderRadius: 4,\n color: \"#374151\",\n};\n\nconst blockingBadgeStyle: React.CSSProperties = {\n fontSize: 10,\n fontWeight: 600,\n padding: \"1px 5px\",\n borderRadius: 4,\n background: \"#fee2e2\",\n color: \"#dc2626\",\n};\n\nconst varLabelStyle: React.CSSProperties = {\n fontSize: 12,\n color: \"#6b7280\",\n marginTop: 1,\n};\n\nconst refsStyle: React.CSSProperties = {\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: 4,\n marginTop: 4,\n};\n\nconst refChipStyle: React.CSSProperties = {\n fontSize: 10,\n padding: \"1px 6px\",\n borderRadius: 4,\n background: \"#eff6ff\",\n color: \"#3b82f6\",\n border: \"1px solid #bfdbfe\",\n};\n\nconst varActionsStyle: React.CSSProperties = {\n display: \"flex\",\n gap: 2,\n flexShrink: 0,\n};\n\nconst actionBtnStyle: React.CSSProperties = {\n fontSize: 11,\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n color: \"#6b7280\",\n padding: \"2px 4px\",\n};\n\n// Form styles\nconst formStyle: React.CSSProperties = {\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 6,\n};\n\nconst formLabelStyle: React.CSSProperties = {\n fontSize: 11,\n fontWeight: 600,\n color: \"#374151\",\n};\n\nconst inputStyle: React.CSSProperties = {\n fontSize: 12,\n padding: \"5px 8px\",\n border: \"1px solid #d1d5db\",\n borderRadius: 6,\n outline: \"none\",\n width: \"100%\",\n boxSizing: \"border-box\",\n};\n\nconst selectStyle: React.CSSProperties = {\n ...inputStyle,\n};\n\nconst checkboxRowStyle: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n cursor: \"pointer\",\n};\n\nconst errorStyle: React.CSSProperties = {\n fontSize: 11,\n color: \"#ef4444\",\n margin: 0,\n padding: \"4px 8px\",\n background: \"#fef2f2\",\n borderRadius: 4,\n border: \"1px solid #fca5a5\",\n};\n\nconst formActionsStyle: React.CSSProperties = {\n display: \"flex\",\n gap: 6,\n justifyContent: \"flex-end\",\n marginTop: 2,\n};\n\nconst cancelBtnStyle: React.CSSProperties = {\n fontSize: 12,\n padding: \"4px 10px\",\n background: \"none\",\n border: \"1px solid #d1d5db\",\n borderRadius: 6,\n cursor: \"pointer\",\n color: \"#374151\",\n};\n\nconst submitBtnStyle: React.CSSProperties = {\n fontSize: 12,\n padding: \"4px 12px\",\n background: \"#6366f1\",\n border: \"none\",\n borderRadius: 6,\n cursor: \"pointer\",\n color: \"#fff\",\n fontWeight: 600,\n};\n","import { useBuilderStore } from \"../store/builder-store\";\n\nexport interface FieldPath {\n path: string; // e.g. \"personal.age\" or \"$ext.isPremium\"\n label: string; // e.g. \"Personal → Age\" or \"Ext: isPremium\"\n stepId?: string;\n fieldId?: string;\n isExternal?: boolean;\n}\n\n/**\n * Returns all field paths available across the entire journey tree,\n * including external variables. Used for autocomplete and condition builders.\n */\nexport function useAllFieldPaths(excludeStepId?: string, excludeFieldId?: string): FieldPath[] {\n const { schema } = useBuilderStore();\n const paths: FieldPath[] = [];\n\n for (const step of schema.steps) {\n for (const field of step.fields) {\n if (step.id === excludeStepId && field.id === excludeFieldId) continue;\n paths.push({\n path: `${step.id}.${field.id}`,\n label: `${step.title} → ${field.label}`,\n stepId: step.id,\n fieldId: field.id,\n });\n }\n }\n\n for (const extVar of schema.externalVariables ?? []) {\n paths.push({\n path: `$ext.${extVar.id}`,\n label: `Ext: ${extVar.label}`,\n isExternal: true,\n });\n }\n\n return paths;\n}\n","\"use client\";\n\nimport { type ConditionGroup, type ConditionOperator, type ConditionRule } from \"@waypointjs/core\";\nimport { useAllFieldPaths } from \"../hooks/useAllFieldPaths\";\n\nconst OPERATORS: { value: ConditionOperator; label: string; hasValue: boolean }[] = [\n { value: \"equals\", label: \"equals\", hasValue: true },\n { value: \"notEquals\", label: \"not equals\", hasValue: true },\n { value: \"greaterThan\", label: \">\", hasValue: true },\n { value: \"greaterThanOrEqual\", label: \">=\", hasValue: true },\n { value: \"lessThan\", label: \"<\", hasValue: true },\n { value: \"lessThanOrEqual\", label: \"<=\", hasValue: true },\n { value: \"contains\", label: \"contains\", hasValue: true },\n { value: \"notContains\", label: \"not contains\", hasValue: true },\n { value: \"in\", label: \"in (comma list)\", hasValue: true },\n { value: \"notIn\", label: \"not in (comma list)\", hasValue: true },\n { value: \"matches\", label: \"matches regex\", hasValue: true },\n { value: \"exists\", label: \"exists\", hasValue: false },\n { value: \"notExists\", label: \"not exists\", hasValue: false },\n];\n\ninterface ConditionBuilderProps {\n value: ConditionGroup | undefined;\n onChange: (value: ConditionGroup | undefined) => void;\n excludeStepId?: string;\n excludeFieldId?: string;\n}\n\nexport function ConditionBuilder({\n value,\n onChange,\n excludeStepId,\n excludeFieldId,\n}: ConditionBuilderProps) {\n const allPaths = useAllFieldPaths(excludeStepId, excludeFieldId);\n\n const group: ConditionGroup = value ?? { combinator: \"and\", rules: [] };\n\n const updateRule = (index: number, updates: Partial<ConditionRule>) => {\n const rules = group.rules.map((r, i) => (i === index ? { ...r, ...updates } : r));\n onChange({ ...group, rules });\n };\n\n const addRule = () => {\n const firstPath = allPaths[0]?.path ?? \"\";\n onChange({\n ...group,\n rules: [...group.rules, { field: firstPath, operator: \"equals\", value: \"\" }],\n });\n };\n\n const removeRule = (index: number) => {\n const rules = group.rules.filter((_, i) => i !== index);\n if (rules.length === 0) { onChange(undefined); return; }\n onChange({ ...group, rules });\n };\n\n return (\n <div style={styles.container}>\n {/* Combinator toggle */}\n {group.rules.length > 1 && (\n <div style={styles.combinatorRow}>\n <span style={styles.combinatorLabel}>Match</span>\n {([\"and\", \"or\"] as const).map((c) => (\n <button\n key={c}\n style={{\n ...styles.combinatorBtn,\n ...(group.combinator === c ? styles.combinatorActive : {}),\n }}\n onClick={() => onChange({ ...group, combinator: c })}\n >\n {c.toUpperCase()}\n </button>\n ))}\n <span style={styles.combinatorLabel}>rules</span>\n </div>\n )}\n\n {/* Empty state */}\n {group.rules.length === 0 && (\n <div style={styles.empty}>\n No conditions — this step/field is always visible.\n </div>\n )}\n\n {/* Rules */}\n {group.rules.map((rule, index) => {\n const opDef = OPERATORS.find((o) => o.value === rule.operator);\n return (\n <div key={index} style={styles.rule}>\n {/* Field selector */}\n <select\n style={styles.select}\n value={rule.field}\n onChange={(e) => updateRule(index, { field: e.target.value })}\n >\n {allPaths.length === 0 && (\n <option value=\"\">No fields available</option>\n )}\n {allPaths.map((p) => (\n <option key={p.path} value={p.path}>{p.label}</option>\n ))}\n </select>\n\n {/* Operator selector */}\n <select\n style={{ ...styles.select, width: 140 }}\n value={rule.operator}\n onChange={(e) =>\n updateRule(index, { operator: e.target.value as ConditionOperator })\n }\n >\n {OPERATORS.map((o) => (\n <option key={o.value} value={o.value}>{o.label}</option>\n ))}\n </select>\n\n {/* Value */}\n {opDef?.hasValue && (\n <input\n style={styles.valueInput}\n placeholder=\"value\"\n value={rule.value != null ? String(rule.value) : \"\"}\n onChange={(e) => updateRule(index, { value: e.target.value })}\n />\n )}\n\n <button style={styles.removeBtn} onClick={() => removeRule(index)}>✕</button>\n </div>\n );\n })}\n\n <button style={styles.addBtn} onClick={addRule}>\n + Add rule\n </button>\n\n {/* Preview */}\n {group.rules.length > 0 && (\n <div style={styles.preview}>\n <span style={styles.previewLabel}>Preview</span>\n <pre style={styles.previewCode}>{JSON.stringify(group, null, 2)}</pre>\n </div>\n )}\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { display: \"flex\", flexDirection: \"column\", gap: 10 },\n combinatorRow: { display: \"flex\", alignItems: \"center\", gap: 8, marginBottom: 4 },\n combinatorLabel: { fontSize: 12, color: \"var(--wp-text-muted)\" },\n combinatorBtn: {\n fontSize: 11, fontWeight: 700, padding: \"3px 10px\", borderRadius: 5,\n border: \"1px solid var(--wp-border-muted)\", background: \"var(--wp-surface)\",\n cursor: \"pointer\", color: \"var(--wp-text-secondary)\",\n },\n combinatorActive: {\n background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"1px solid var(--wp-primary)\",\n },\n empty: { fontSize: 13, color: \"var(--wp-text-subtle)\", textAlign: \"center\", padding: \"12px 0\" },\n rule: {\n display: \"flex\", alignItems: \"center\", gap: 8,\n background: \"var(--wp-surface)\", border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius-lg)\", padding: \"8px 10px\",\n },\n select: {\n flex: 1, fontSize: 12, padding: \"5px 6px\",\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n minWidth: 0,\n },\n valueInput: {\n width: 100, fontSize: 12, padding: \"5px 6px\",\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n },\n removeBtn: {\n border: \"none\", background: \"transparent\", color: \"var(--wp-danger)\",\n cursor: \"pointer\", fontSize: 13, flexShrink: 0,\n },\n addBtn: {\n fontSize: 12, padding: \"6px 12px\", background: \"var(--wp-surface-muted)\",\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\",\n cursor: \"pointer\", fontWeight: 500, alignSelf: \"flex-start\",\n color: \"var(--wp-text-secondary)\",\n },\n preview: { marginTop: 4 },\n previewLabel: {\n fontSize: 10, fontWeight: 600, color: \"var(--wp-text-subtle)\",\n textTransform: \"uppercase\", display: \"block\", marginBottom: 4,\n },\n previewCode: {\n fontSize: 10, background: \"var(--wp-surface-alt)\", border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius)\", padding: 8, overflow: \"auto\", maxHeight: 120,\n margin: 0, color: \"var(--wp-text-mono)\",\n },\n};\n","\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport { useAllFieldPaths } from \"../hooks/useAllFieldPaths\";\n\ninterface DependsOnInputProps {\n value: string[];\n onChange: (paths: string[]) => void;\n excludeStepId?: string;\n excludeFieldId?: string;\n}\n\nexport function DependsOnInput({\n value,\n onChange,\n excludeStepId,\n excludeFieldId,\n}: DependsOnInputProps) {\n const allPaths = useAllFieldPaths(excludeStepId, excludeFieldId);\n const [query, setQuery] = useState(\"\");\n const [open, setOpen] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const available = allPaths.filter(\n (p) => !value.includes(p.path) &&\n (p.path.toLowerCase().includes(query.toLowerCase()) ||\n p.label.toLowerCase().includes(query.toLowerCase()))\n );\n\n const add = (path: string) => {\n onChange([...value, path]);\n setQuery(\"\");\n setOpen(false);\n inputRef.current?.focus();\n };\n\n const remove = (path: string) => {\n onChange(value.filter((p) => p !== path));\n };\n\n useEffect(() => {\n const handler = (e: MouseEvent) => {\n if (!containerRef.current?.contains(e.target as Node)) setOpen(false);\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, []);\n\n const getLabel = (path: string) =>\n allPaths.find((p) => p.path === path)?.label ?? path;\n\n const isExternal = (path: string) => path.startsWith(\"$ext.\");\n\n return (\n <div ref={containerRef} style={styles.container}>\n {/* Selected tags */}\n <div style={styles.tags}>\n {value.map((path) => (\n <span key={path} style={{ ...styles.tag, ...(isExternal(path) ? styles.tagExt : {}) }}>\n {getLabel(path)}\n <button style={styles.tagRemove} onClick={() => remove(path)}>✕</button>\n </span>\n ))}\n\n {/* Input */}\n <input\n ref={inputRef}\n style={styles.input}\n placeholder={value.length === 0 ? \"Search fields or $ext vars…\" : \"Add more…\"}\n value={query}\n onChange={(e) => { setQuery(e.target.value); setOpen(true); }}\n onFocus={() => setOpen(true)}\n />\n </div>\n\n {/* Dropdown */}\n {open && (\n <div style={styles.dropdown}>\n {available.length === 0 && (\n <div style={styles.noResults}>\n {allPaths.length === 0\n ? \"No fields available in the tree yet.\"\n : \"No matching fields.\"}\n </div>\n )}\n {available.map((p) => (\n <button\n key={p.path}\n style={styles.option}\n onMouseDown={(e) => { e.preventDefault(); add(p.path); }}\n >\n <span style={styles.optionLabel}>{p.label}</span>\n <span style={styles.optionPath}>{p.path}</span>\n </button>\n ))}\n </div>\n )}\n\n {value.length > 0 && (\n <div style={styles.hint}>\n This field will be blocked until all dependencies have a value.\n </div>\n )}\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { position: \"relative\" },\n tags: {\n display: \"flex\", flexWrap: \"wrap\", gap: 4,\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\",\n padding: \"4px 6px\", background: \"var(--wp-canvas)\", minHeight: 34, alignItems: \"center\",\n },\n tag: {\n display: \"flex\", alignItems: \"center\", gap: 4,\n fontSize: 11, fontWeight: 600, padding: \"2px 8px\",\n background: \"var(--wp-primary-bg)\", color: \"var(--wp-primary-dark)\", borderRadius: 4,\n },\n tagExt: { background: \"var(--wp-warning-bg)\", color: \"var(--wp-warning)\" },\n tagRemove: {\n border: \"none\", background: \"transparent\", cursor: \"pointer\",\n color: \"inherit\", fontSize: 10, padding: 0, lineHeight: 1,\n },\n input: {\n flex: 1, minWidth: 140, fontSize: 12, border: \"none\",\n outline: \"none\", background: \"transparent\", padding: \"2px 4px\",\n color: \"var(--wp-text)\",\n },\n dropdown: {\n position: \"absolute\", top: \"calc(100% + 4px)\", left: 0, right: 0,\n background: \"var(--wp-canvas)\", border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius-lg)\", boxShadow: \"0 4px 16px rgba(0,0,0,0.1)\",\n zIndex: 100, maxHeight: 200, overflowY: \"auto\",\n },\n noResults: { padding: \"10px 12px\", fontSize: 12, color: \"var(--wp-text-subtle)\", textAlign: \"center\" },\n option: {\n width: \"100%\", display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n padding: \"8px 12px\", border: \"none\", background: \"transparent\",\n cursor: \"pointer\", textAlign: \"left\", gap: 8,\n },\n optionLabel: { fontSize: 13, fontWeight: 600, color: \"var(--wp-text)\" },\n optionPath: { fontSize: 10, fontFamily: \"monospace\", color: \"var(--wp-text-subtle)\" },\n hint: { fontSize: 10, color: \"var(--wp-text-subtle)\", marginTop: 4 },\n};\n","\"use client\";\n\nimport { useEffect } from \"react\";\n\ninterface ModalProps {\n title: string;\n onClose: () => void;\n children: React.ReactNode;\n width?: number;\n}\n\nexport function Modal({ title, onClose, children, width = 560 }: ModalProps) {\n useEffect(() => {\n const handler = (e: KeyboardEvent) => { if (e.key === \"Escape\") onClose(); };\n document.addEventListener(\"keydown\", handler);\n return () => document.removeEventListener(\"keydown\", handler);\n }, [onClose]);\n\n return (\n <div style={styles.overlay} onClick={onClose}>\n <div style={{ ...styles.panel, width }} onClick={(e) => e.stopPropagation()}>\n <div style={styles.header}>\n <span style={styles.title}>{title}</span>\n <button style={styles.closeBtn} onClick={onClose}>✕</button>\n </div>\n <div style={styles.body}>{children}</div>\n </div>\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n overlay: {\n position: \"fixed\", inset: 0, background: \"rgba(0,0,0,0.4)\",\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n zIndex: 1000,\n },\n panel: {\n background: \"var(--wp-canvas)\", borderRadius: 12,\n boxShadow: \"0 20px 60px rgba(0,0,0,0.2)\",\n display: \"flex\", flexDirection: \"column\", maxHeight: \"80vh\", overflow: \"hidden\",\n },\n header: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n padding: \"14px 20px\", borderBottom: \"1px solid var(--wp-border)\",\n },\n title: { fontWeight: 700, fontSize: 14, color: \"var(--wp-text)\" },\n closeBtn: {\n border: \"none\", background: \"transparent\", cursor: \"pointer\",\n fontSize: 14, color: \"var(--wp-text-subtle)\", padding: 4,\n },\n body: { overflowY: \"auto\", padding: 20, color: \"var(--wp-text)\" },\n};\n","\"use client\";\n\nimport { useState } from \"react\";\nimport type { ValidationRule, ValidationRuleType } from \"@waypointjs/core\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport { ConditionBuilder } from \"./ConditionBuilder\";\nimport { DependsOnInput } from \"./DependsOnInput\";\nimport { Modal } from \"./Modal\";\n\nconst VALIDATION_TYPES: { type: ValidationRuleType; label: string; hasValue: boolean }[] = [\n { type: \"required\", label: \"Required\", hasValue: false },\n { type: \"min\", label: \"Min value\", hasValue: true },\n { type: \"max\", label: \"Max value\", hasValue: true },\n { type: \"minLength\", label: \"Min length\", hasValue: true },\n { type: \"maxLength\", label: \"Max length\", hasValue: true },\n { type: \"email\", label: \"Email format\", hasValue: false },\n { type: \"url\", label: \"URL format\", hasValue: false },\n { type: \"regex\", label: \"Regex pattern\", hasValue: true },\n];\n\nexport function FieldEditor() {\n const {\n schema, selectedStepId, selectedFieldId,\n updateField, setFieldCondition,\n } = useBuilderStore();\n\n const [newValidationType, setNewValidationType] = useState<ValidationRuleType>(\"required\");\n const [conditionModalOpen, setConditionModalOpen] = useState(false);\n\n const step = schema.steps.find((s) => s.id === selectedStepId);\n const field = step?.fields.find((f) => f.id === selectedFieldId);\n\n if (!field || !step) {\n return (\n <div style={styles.empty}>\n Select a field in the middle panel to edit its properties.\n </div>\n );\n }\n\n const validation = field.validation ?? [];\n const isRequired = validation.some((v) => v.type === \"required\");\n const hasCondition = !!field.visibleWhen;\n const ruleCount = field.visibleWhen?.rules.length ?? 0;\n\n const updateValidationRule = (index: number, updates: Partial<ValidationRule>) => {\n const updated = validation.map((v, i) => (i === index ? { ...v, ...updates } : v));\n updateField(step.id, field.id, { validation: updated });\n };\n\n const removeValidationRule = (index: number) => {\n const updated = validation.filter((_, i) => i !== index);\n updateField(step.id, field.id, { validation: updated.length ? updated : undefined });\n };\n\n const addValidationRule = () => {\n const newRule: ValidationRule = {\n type: newValidationType,\n message: `${newValidationType} error`,\n };\n updateField(step.id, field.id, { validation: [...validation, newRule] });\n };\n\n const handleDependsOnChange = (paths: string[]) => {\n updateField(step.id, field.id, { dependsOn: paths.length ? paths : undefined });\n };\n\n return (\n <div style={styles.container}>\n <div style={styles.header}>\n <div style={styles.headerLeft}>\n <span style={styles.headerTitle}>Field Editor</span>\n {!isRequired && <span style={styles.optionalBadge}>optional</span>}\n {isRequired && <span style={styles.requiredBadge}>required</span>}\n </div>\n <div style={styles.fieldId}>id: {field.id}</div>\n </div>\n\n <div style={styles.body}>\n {/* Label */}\n <div style={styles.group}>\n <label style={styles.label}>Label</label>\n <input\n style={styles.input}\n value={field.label}\n onChange={(e) => updateField(step.id, field.id, { label: e.target.value })}\n />\n </div>\n\n {/* Placeholder */}\n <div style={styles.group}>\n <label style={styles.label}>Placeholder</label>\n <input\n style={styles.input}\n value={field.placeholder ?? \"\"}\n placeholder=\"Optional\"\n onChange={(e) =>\n updateField(step.id, field.id, { placeholder: e.target.value || undefined })\n }\n />\n </div>\n\n {/* Default value */}\n <div style={styles.group}>\n <label style={styles.label}>Default value</label>\n <input\n style={styles.input}\n value={field.defaultValue != null ? String(field.defaultValue) : \"\"}\n placeholder=\"Optional\"\n onChange={(e) =>\n updateField(step.id, field.id, { defaultValue: e.target.value || undefined })\n }\n />\n </div>\n\n {/* Depends on */}\n <div style={styles.group}>\n <label style={styles.label}>Depends on</label>\n <DependsOnInput\n value={field.dependsOn ?? []}\n onChange={handleDependsOnChange}\n excludeStepId={step.id}\n excludeFieldId={field.id}\n />\n </div>\n\n <div style={styles.divider} />\n\n {/* Visibility condition — summary */}\n <div style={styles.conditionRow}>\n <div style={styles.conditionInfo}>\n <div style={styles.label}>Visibility condition</div>\n {hasCondition ? (\n <div style={styles.conditionSummary}>\n <span style={styles.conditionBadge}>\n {ruleCount} rule{ruleCount !== 1 ? \"s\" : \"\"} · {field.visibleWhen!.combinator.toUpperCase()}\n </span>\n <span style={styles.conditionDesc}>Field is conditional</span>\n </div>\n ) : (\n <div style={styles.conditionNone}>Always visible</div>\n )}\n </div>\n <div style={styles.conditionActions}>\n <button style={styles.editConditionBtn} onClick={() => setConditionModalOpen(true)}>\n {hasCondition ? \"Edit\" : \"Add\"}\n </button>\n {hasCondition && (\n <button\n style={styles.clearConditionBtn}\n onClick={() => setFieldCondition(step.id, field.id, undefined)}\n >\n Clear\n </button>\n )}\n </div>\n </div>\n\n <div style={styles.divider} />\n\n {/* Validation rules */}\n <div style={styles.sectionTitle}>\n Validation\n {!isRequired && (\n <span style={styles.optionalHint}>\n — no \"required\" rule → field is optional\n </span>\n )}\n </div>\n\n {validation.length === 0 && (\n <div style={styles.noRules}>No rules · field is optional by default.</div>\n )}\n\n {validation.map((rule, index) => {\n const def = VALIDATION_TYPES.find((vt) => vt.type === rule.type);\n return (\n <div key={index} style={styles.ruleCard}>\n <div style={styles.ruleHeader}>\n <span\n style={{\n ...styles.ruleBadge,\n ...(rule.type === \"required\" ? styles.requiredRuleBadge : {}),\n }}\n >\n {rule.type}\n </span>\n <button style={styles.removeRuleBtn} onClick={() => removeValidationRule(index)}>\n ✕\n </button>\n </div>\n {def?.hasValue && (\n <div style={styles.ruleRow}>\n <label style={styles.ruleLabel}>Value</label>\n <input\n style={styles.ruleInput}\n value={rule.value != null ? String(rule.value) : \"\"}\n onChange={(e) => updateValidationRule(index, { value: e.target.value })}\n />\n </div>\n )}\n <div style={styles.ruleRow}>\n <label style={styles.ruleLabel}>Error message</label>\n <input\n style={styles.ruleInput}\n value={rule.message}\n onChange={(e) => updateValidationRule(index, { message: e.target.value })}\n />\n </div>\n </div>\n );\n })}\n\n <div style={styles.addRule}>\n <select\n style={styles.ruleSelect}\n value={newValidationType}\n onChange={(e) => setNewValidationType(e.target.value as ValidationRuleType)}\n >\n {VALIDATION_TYPES.map((vt) => (\n <option key={vt.type} value={vt.type}>{vt.label}</option>\n ))}\n </select>\n <button style={styles.addRuleBtn} onClick={addValidationRule}>\n + Add rule\n </button>\n </div>\n </div>\n\n {/* Field condition modal */}\n {conditionModalOpen && (\n <Modal\n title={`Condition — \"${field.label}\"`}\n onClose={() => setConditionModalOpen(false)}\n width={620}\n >\n <p style={styles.modalHint}>\n Define when this field is visible within its step.\n </p>\n <ConditionBuilder\n value={field.visibleWhen}\n onChange={(c) => setFieldCondition(step.id, field.id, c)}\n excludeStepId={step.id}\n excludeFieldId={field.id}\n />\n <div style={styles.modalFooter}>\n <button style={styles.modalCloseBtn} onClick={() => setConditionModalOpen(false)}>\n Done\n </button>\n </div>\n </Modal>\n )}\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { display: \"flex\", flexDirection: \"column\", height: \"100%\", overflow: \"hidden\" },\n empty: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n height: \"100%\", color: \"var(--wp-text-subtle)\", fontSize: 13, textAlign: \"center\", padding: 32,\n },\n header: {\n padding: \"12px 16px\", borderBottom: \"1px solid var(--wp-border)\",\n display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\",\n },\n headerLeft: { display: \"flex\", alignItems: \"center\", gap: 8 },\n headerTitle: { fontWeight: 700, fontSize: 13, color: \"var(--wp-text)\" },\n optionalBadge: {\n fontSize: 10, fontWeight: 600, padding: \"2px 7px\",\n background: \"var(--wp-surface-muted)\", color: \"var(--wp-text-subtle)\", borderRadius: 4,\n },\n requiredBadge: {\n fontSize: 10, fontWeight: 600, padding: \"2px 7px\",\n background: \"var(--wp-danger-bg-strong)\", color: \"var(--wp-danger)\", borderRadius: 4,\n },\n fieldId: { fontSize: 10, color: \"var(--wp-text-subtle)\", fontFamily: \"monospace\" },\n body: { flex: 1, overflowY: \"auto\", padding: 16, display: \"flex\", flexDirection: \"column\", gap: 12 },\n group: { display: \"flex\", flexDirection: \"column\", gap: 4 },\n label: { fontSize: 11, fontWeight: 600, color: \"var(--wp-text-muted)\", textTransform: \"uppercase\", letterSpacing: \"0.05em\" },\n input: {\n fontSize: 13, padding: \"6px 8px\", border: \"1px solid var(--wp-border-muted)\",\n borderRadius: \"var(--wp-radius)\", outline: \"none\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n },\n divider: { height: 1, background: \"var(--wp-border)\" },\n conditionRow: { display: \"flex\", alignItems: \"flex-start\", justifyContent: \"space-between\", gap: 8 },\n conditionInfo: { display: \"flex\", flexDirection: \"column\", gap: 6, flex: 1 },\n conditionSummary: { display: \"flex\", alignItems: \"center\", gap: 8 },\n conditionBadge: {\n fontSize: 11, fontWeight: 700, background: \"var(--wp-warning-bg)\", color: \"var(--wp-warning)\",\n padding: \"2px 8px\", borderRadius: 4,\n },\n conditionDesc: { fontSize: 11, color: \"var(--wp-text-subtle)\" },\n conditionNone: { fontSize: 12, color: \"var(--wp-text-subtle)\", fontStyle: \"italic\" },\n conditionActions: { display: \"flex\", gap: 6, flexShrink: 0, alignItems: \"flex-start\", marginTop: 16 },\n editConditionBtn: {\n fontSize: 11, padding: \"4px 10px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\", fontWeight: 500,\n },\n clearConditionBtn: {\n fontSize: 11, padding: \"4px 10px\", background: \"var(--wp-danger-bg-strong)\", color: \"var(--wp-danger)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\",\n },\n sectionTitle: { fontSize: 12, fontWeight: 700, color: \"var(--wp-text-secondary)\", textTransform: \"uppercase\", letterSpacing: \"0.05em\" },\n optionalHint: { fontSize: 10, color: \"var(--wp-text-subtle)\", fontWeight: 400, textTransform: \"none\", letterSpacing: 0 },\n noRules: { fontSize: 12, color: \"var(--wp-text-subtle)\" },\n ruleCard: {\n background: \"var(--wp-surface)\", border: \"1px solid var(--wp-border)\", borderRadius: \"var(--wp-radius-lg)\",\n padding: 10, display: \"flex\", flexDirection: \"column\", gap: 8,\n },\n ruleHeader: { display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\" },\n ruleBadge: {\n fontSize: 11, fontWeight: 700, color: \"var(--wp-primary-dark)\", background: \"var(--wp-primary-bg)\",\n padding: \"2px 8px\", borderRadius: 4,\n },\n requiredRuleBadge: { background: \"var(--wp-danger-bg-strong)\", color: \"var(--wp-danger)\" },\n removeRuleBtn: { border: \"none\", background: \"transparent\", color: \"var(--wp-danger)\", cursor: \"pointer\", fontSize: 12 },\n ruleRow: { display: \"flex\", flexDirection: \"column\", gap: 3 },\n ruleLabel: { fontSize: 10, fontWeight: 600, color: \"var(--wp-text-subtle)\", textTransform: \"uppercase\" },\n ruleInput: {\n fontSize: 12, padding: \"4px 6px\", border: \"1px solid var(--wp-border-muted)\",\n borderRadius: 4, outline: \"none\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n },\n addRule: { display: \"flex\", gap: 8, alignItems: \"center\" },\n ruleSelect: {\n flex: 1, fontSize: 12, padding: \"5px 6px\", border: \"1px solid var(--wp-border-muted)\",\n borderRadius: \"var(--wp-radius)\", background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n },\n addRuleBtn: {\n fontSize: 12, padding: \"5px 10px\", background: \"var(--wp-surface-muted)\",\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\",\n fontWeight: 500, whiteSpace: \"nowrap\", color: \"var(--wp-text-secondary)\",\n },\n modalHint: { fontSize: 13, color: \"var(--wp-text-muted)\", marginBottom: 16, marginTop: 0 },\n modalFooter: { marginTop: 20, display: \"flex\", justifyContent: \"flex-end\" },\n modalCloseBtn: {\n fontSize: 13, padding: \"7px 20px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius-lg)\", cursor: \"pointer\", fontWeight: 600,\n },\n};\n","import type { ConditionGroup, WaypointSchema } from \"@waypointjs/core\";\n\n/**\n * For a given step, returns the set of step IDs it depends on.\n * A step depends on another when any of its fields:\n * - has a `dependsOn` path referencing that step (\"otherId.fieldId\")\n * - has a `visibleWhen` condition rule referencing that step\n * Or when the step itself has a `visibleWhen` condition referencing that step.\n */\n\nfunction extractStepIdsFromCondition(\n group: ConditionGroup | undefined,\n ownStepId: string\n): Set<string> {\n const ids = new Set<string>();\n if (!group) return ids;\n\n for (const rule of group.rules) {\n if (rule.field.startsWith(\"$ext.\")) continue;\n const dotIndex = rule.field.indexOf(\".\");\n if (dotIndex === -1) continue;\n const refStep = rule.field.slice(0, dotIndex);\n if (refStep !== ownStepId) ids.add(refStep);\n }\n\n for (const subGroup of group.groups ?? []) {\n for (const id of extractStepIdsFromCondition(subGroup, ownStepId)) {\n ids.add(id);\n }\n }\n\n return ids;\n}\n\n/** Returns a map: stepId → Set<stepId it depends on> */\nexport function computeStepDependencies(\n schema: WaypointSchema\n): Map<string, Set<string>> {\n const deps = new Map<string, Set<string>>();\n\n for (const step of schema.steps) {\n const required = new Set<string>();\n\n // Step-level condition\n for (const id of extractStepIdsFromCondition(step.visibleWhen, step.id)) {\n required.add(id);\n }\n\n // Field-level\n for (const field of step.fields) {\n // dependsOn paths\n for (const path of field.dependsOn ?? []) {\n if (path.startsWith(\"$ext.\")) continue;\n const dotIndex = path.indexOf(\".\");\n if (dotIndex === -1) continue;\n const refStep = path.slice(0, dotIndex);\n if (refStep !== step.id) required.add(refStep);\n }\n\n // visibleWhen condition\n for (const id of extractStepIdsFromCondition(field.visibleWhen, step.id)) {\n required.add(id);\n }\n }\n\n deps.set(step.id, required);\n }\n\n return deps;\n}\n\n/**\n * Given the current step order and the dependency map,\n * returns whether moving the step at `fromIndex` to `toIndex` is valid.\n *\n * A move is invalid if it would place a step BEFORE one of its dependencies.\n */\nexport function isMoveValid(\n steps: WaypointSchema[\"steps\"],\n deps: Map<string, Set<string>>,\n fromIndex: number,\n toIndex: number\n): { valid: boolean; reason?: string } {\n if (fromIndex === toIndex) return { valid: true };\n\n // Simulate the new order\n const reordered = [...steps];\n const [moved] = reordered.splice(fromIndex, 1);\n reordered.splice(toIndex, 0, moved);\n\n const indexById = new Map(reordered.map((s, i) => [s.id, i]));\n\n for (const step of reordered) {\n const stepIndex = indexById.get(step.id)!;\n const required = deps.get(step.id) ?? new Set();\n\n for (const depId of required) {\n const depIndex = indexById.get(depId);\n if (depIndex === undefined) continue; // dep step not in schema (external?)\n\n if (depIndex > stepIndex) {\n const depTitle = reordered.find((s) => s.id === depId)?.title ?? depId;\n return {\n valid: false,\n reason: `\"${step.title}\" depends on \"${depTitle}\" which must come first`,\n };\n }\n }\n }\n\n return { valid: true };\n}\n\n// ---------------------------------------------------------------------------\n// Field-level dependency helpers (within a single step)\n// ---------------------------------------------------------------------------\n\n/**\n * Returns whether moving a field from `fromIndex` to `toIndex` within a step\n * is valid given intra-step `dependsOn` references.\n *\n * Only considers dependencies between fields within the same step\n * (cross-step deps are already enforced at the step level).\n */\nexport function isFieldMoveValid(\n fields: WaypointSchema[\"steps\"][number][\"fields\"],\n stepId: string,\n fromIndex: number,\n toIndex: number\n): { valid: boolean; reason?: string } {\n if (fromIndex === toIndex) return { valid: true };\n\n const reordered = [...fields];\n const [moved] = reordered.splice(fromIndex, 1);\n reordered.splice(toIndex, 0, moved);\n\n const indexById = new Map(reordered.map((f, i) => [f.id, i]));\n\n for (const field of reordered) {\n const fieldIndex = indexById.get(field.id)!;\n for (const path of field.dependsOn ?? []) {\n if (path.startsWith(\"$ext.\")) continue;\n const dotIndex = path.indexOf(\".\");\n if (dotIndex === -1) continue;\n const refStep = path.slice(0, dotIndex);\n if (refStep !== stepId) continue; // cross-step dep, not relevant here\n const refFieldId = path.slice(dotIndex + 1);\n const depIndex = indexById.get(refFieldId);\n if (depIndex === undefined) continue;\n if (depIndex > fieldIndex) {\n const depLabel = reordered.find((f) => f.id === refFieldId)?.label ?? refFieldId;\n return {\n valid: false,\n reason: `\"${field.label}\" depends on \"${depLabel}\" which must come first`,\n };\n }\n }\n }\n\n return { valid: true };\n}\n\n/**\n * Returns the human-readable label for a step's dependencies (other step titles).\n */\nexport function getStepDependencyLabels(\n stepId: string,\n deps: Map<string, Set<string>>,\n schema: WaypointSchema\n): string[] {\n const required = deps.get(stepId) ?? new Set();\n return [...required]\n .map((id) => schema.steps.find((s) => s.id === id)?.title ?? id)\n .filter(Boolean);\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport { isFieldMoveValid } from \"../utils/step-dependencies\";\n\nconst FIELD_TYPES = [\n \"text\", \"number\", \"email\", \"password\", \"tel\", \"url\",\n \"textarea\", \"select\", \"multiselect\", \"checkbox\", \"radio\", \"date\", \"file\",\n];\n\nexport function FieldList() {\n const {\n schema, selectedStepId, selectedFieldId,\n addField, removeField, updateField, selectField, reorderFields,\n } = useBuilderStore();\n\n const [moveError, setMoveError] = useState<string | null>(null);\n\n const step = schema.steps.find((s) => s.id === selectedStepId);\n\n const allDependencyTargets = new Set<string>();\n for (const s of schema.steps) {\n for (const f of s.fields) {\n for (const dep of f.dependsOn ?? []) {\n allDependencyTargets.add(dep);\n }\n }\n }\n\n if (!step) {\n return (\n <div style={styles.empty}>\n Select a step on the left to manage its fields.\n </div>\n );\n }\n\n const tryMove = (fromIndex: number, toIndex: number) => {\n const check = isFieldMoveValid(step.fields, step.id, fromIndex, toIndex);\n if (!check.valid) {\n setMoveError(check.reason ?? \"Invalid move\");\n setTimeout(() => setMoveError(null), 3000);\n return;\n }\n setMoveError(null);\n reorderFields(step.id, fromIndex, toIndex);\n };\n\n return (\n <div style={styles.container}>\n <div style={styles.header}>\n <div>\n <div style={styles.stepTitle}>{step.title}</div>\n <div style={styles.stepSub}>{step.fields.length} field{step.fields.length !== 1 ? \"s\" : \"\"}</div>\n </div>\n <button style={styles.addBtn} onClick={() => addField(step.id)}>\n + Add field\n </button>\n </div>\n\n {moveError && (\n <div style={styles.errorBanner}>\n <span>⚠</span> {moveError}\n </div>\n )}\n\n <div style={styles.list}>\n {step.fields.length === 0 && (\n <div style={styles.emptyFields}>No fields yet. Click \"Add field\" to start.</div>\n )}\n {step.fields.map((field, index) => {\n const isSelected = field.id === selectedFieldId;\n const isRequired = field.validation?.some((v) => v.type === \"required\") ?? false;\n const hasCondition = !!field.visibleWhen;\n const hasDeps = (field.dependsOn?.length ?? 0) > 0;\n const isUsedAsDep = allDependencyTargets.has(`${step.id}.${field.id}`);\n\n const canMoveUp = index > 0 &&\n isFieldMoveValid(step.fields, step.id, index, index - 1).valid;\n const canMoveDown = index < step.fields.length - 1 &&\n isFieldMoveValid(step.fields, step.id, index, index + 1).valid;\n\n const intraStepDeps = (field.dependsOn ?? [])\n .filter((p) => p.startsWith(`${step.id}.`))\n .map((p) => {\n const fieldId = p.slice(step.id.length + 1);\n return step.fields.find((f) => f.id === fieldId)?.label ?? fieldId;\n });\n\n const intraStepDependents = step.fields.filter((f) =>\n f.id !== field.id &&\n (f.dependsOn ?? []).includes(`${step.id}.${field.id}`)\n );\n\n return (\n <div\n key={field.id}\n style={{ ...styles.card, ...(isSelected ? styles.cardSelected : {}) }}\n onClick={() => selectField(field.id)}\n >\n <div style={styles.cardTop}>\n <div style={styles.cardLeft}>\n <span style={styles.typeBadge}>{field.type}</span>\n <span style={styles.fieldLabel}>{field.label}</span>\n </div>\n <div style={styles.cardRight}>\n <select\n style={styles.typeSelect}\n value={field.type}\n onClick={(e) => e.stopPropagation()}\n onChange={(e) => updateField(step.id, field.id, { type: e.target.value })}\n >\n {FIELD_TYPES.map((t) => (\n <option key={t} value={t}>{t}</option>\n ))}\n </select>\n {index > 0 && (\n <button\n style={{ ...styles.iconBtn, ...(canMoveUp ? {} : styles.iconBtnBlocked) }}\n title={canMoveUp ? \"Move up\" : \"Can't move — dependency order required\"}\n onClick={(e) => { e.stopPropagation(); tryMove(index, index - 1); }}\n >↑</button>\n )}\n {index < step.fields.length - 1 && (\n <button\n style={{ ...styles.iconBtn, ...(canMoveDown ? {} : styles.iconBtnBlocked) }}\n title={canMoveDown ? \"Move down\" : \"Can't move — dependency order required\"}\n onClick={(e) => { e.stopPropagation(); tryMove(index, index + 1); }}\n >↓</button>\n )}\n <button\n style={{ ...styles.iconBtn, color: \"var(--wp-danger)\" }}\n title=\"Remove field\"\n onClick={(e) => { e.stopPropagation(); removeField(step.id, field.id); }}\n >✕</button>\n </div>\n </div>\n\n {/* Badges */}\n <div style={styles.badges}>\n {!isRequired && <span style={styles.badgeOptional}>optional</span>}\n {isRequired && <span style={styles.badgeRequired}>required</span>}\n {hasCondition && <span style={styles.badgeCondition}>conditional</span>}\n {hasDeps && <span style={styles.badgeDep}>depends on {field.dependsOn!.length}</span>}\n {isUsedAsDep && <span style={styles.badgeUsed}>← dependency</span>}\n </div>\n\n {/* Intra-step dependency info */}\n {intraStepDeps.length > 0 && (\n <div style={styles.depRow}>\n <span style={styles.depLabel}>needs:</span>\n {intraStepDeps.map((label) => (\n <span key={label} style={styles.depBadge}>{label}</span>\n ))}\n </div>\n )}\n {intraStepDependents.length > 0 && (\n <div style={styles.depRow}>\n <span style={styles.depLabelUsed}>used by:</span>\n {intraStepDependents.map((f) => (\n <span key={f.id} style={styles.depBadgeUsed}>{f.label}</span>\n ))}\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { display: \"flex\", flexDirection: \"column\", height: \"100%\" },\n empty: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n height: \"100%\", color: \"var(--wp-text-subtle)\", fontSize: 13, textAlign: \"center\", padding: 32,\n },\n emptyFields: { padding: 24, textAlign: \"center\", color: \"var(--wp-text-subtle)\", fontSize: 13 },\n header: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n padding: \"12px 16px\", borderBottom: \"1px solid var(--wp-border)\",\n },\n stepTitle: { fontWeight: 700, fontSize: 14, color: \"var(--wp-text)\" },\n stepSub: { fontSize: 11, color: \"var(--wp-text-subtle)\", marginTop: 2 },\n addBtn: {\n fontSize: 12, padding: \"4px 10px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\", fontWeight: 500,\n },\n errorBanner: {\n margin: \"8px 8px 0\", padding: \"8px 12px\", background: \"var(--wp-danger-bg)\",\n border: \"1px solid var(--wp-danger-border)\", borderRadius: \"var(--wp-radius-lg)\", fontSize: 12,\n color: \"var(--wp-danger-text)\", display: \"flex\", alignItems: \"center\", gap: 6,\n },\n list: { flex: 1, overflowY: \"auto\", padding: 8 },\n card: {\n padding: \"10px 12px\", borderRadius: \"var(--wp-radius-lg)\", marginBottom: 4,\n border: \"1px solid transparent\", cursor: \"pointer\",\n background: \"var(--wp-surface)\", display: \"flex\", flexDirection: \"column\", gap: 6,\n },\n cardSelected: { background: \"var(--wp-primary-muted)\", border: \"1px solid var(--wp-primary-border)\" },\n cardTop: { display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" },\n cardLeft: { display: \"flex\", alignItems: \"center\", gap: 8, minWidth: 0 },\n cardRight: { display: \"flex\", alignItems: \"center\", gap: 4, flexShrink: 0 },\n typeBadge: {\n fontSize: 10, background: \"var(--wp-primary-bg)\", color: \"var(--wp-primary-dark)\",\n padding: \"2px 7px\", borderRadius: 4, fontWeight: 600, flexShrink: 0,\n },\n fieldLabel: {\n fontSize: 13, fontWeight: 600, color: \"var(--wp-text)\",\n overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\",\n },\n typeSelect: {\n fontSize: 11, border: \"1px solid var(--wp-border)\", borderRadius: 4,\n padding: \"2px 4px\", background: \"var(--wp-canvas)\", cursor: \"pointer\",\n color: \"var(--wp-text-secondary)\",\n },\n iconBtn: {\n width: 22, height: 22, border: \"none\", background: \"transparent\",\n cursor: \"pointer\", borderRadius: 4, fontSize: 11, color: \"var(--wp-text-subtle)\",\n },\n iconBtnBlocked: { color: \"var(--wp-border-muted)\", cursor: \"not-allowed\", opacity: 0.4 },\n badges: { display: \"flex\", flexWrap: \"wrap\", gap: 4 },\n badgeOptional: {\n fontSize: 9, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-surface-muted)\", color: \"var(--wp-text-subtle)\", borderRadius: 3, textTransform: \"uppercase\",\n },\n badgeRequired: {\n fontSize: 9, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-danger-bg-strong)\", color: \"var(--wp-danger)\", borderRadius: 3, textTransform: \"uppercase\",\n },\n badgeCondition: {\n fontSize: 9, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-warning-bg)\", color: \"var(--wp-warning)\", borderRadius: 3, textTransform: \"uppercase\",\n },\n badgeDep: {\n fontSize: 9, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-primary-bg)\", color: \"var(--wp-primary-dark)\", borderRadius: 3, textTransform: \"uppercase\",\n },\n badgeUsed: {\n fontSize: 9, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-success-bg)\", color: \"var(--wp-success)\", borderRadius: 3, textTransform: \"uppercase\",\n },\n depRow: { display: \"flex\", alignItems: \"center\", flexWrap: \"wrap\", gap: 4 },\n depLabel: { fontSize: 10, fontWeight: 600, color: \"var(--wp-text-muted)\", textTransform: \"uppercase\" },\n depLabelUsed: { fontSize: 10, fontWeight: 600, color: \"var(--wp-success)\", textTransform: \"uppercase\" },\n depBadge: {\n fontSize: 10, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-primary-bg)\", color: \"var(--wp-primary-dark)\", borderRadius: 4,\n },\n depBadgeUsed: {\n fontSize: 10, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-success-bg)\", color: \"var(--wp-success)\", borderRadius: 4,\n },\n};\n","import { useState } from \"react\";\nimport type { StoreApi } from \"zustand\";\nimport { useWaypoint, useWaypointStep } from \"@waypointjs/react\";\nimport type { WaypointRuntimeStore } from \"@waypointjs/core\";\nimport { resolveTree, getNextStep, getPreviousStep } from \"@waypointjs/core\";\nimport type { WaypointSchema } from \"@waypointjs/core\";\nimport type { ResolvedField } from \"@waypointjs/core\";\nimport { DevPanel } from \"@waypointjs/devtools\";\n\ninterface PreviewPanelProps {\n store: StoreApi<WaypointRuntimeStore>;\n schema: WaypointSchema;\n onEdit?: () => void;\n}\n\nexport function PreviewPanel({ store, schema }: PreviewPanelProps) {\n const [done, setDone] = useState(false);\n\n const { tree, currentStep, progress } = useWaypoint(store);\n const stepId = currentStep?.definition.id ?? \"\";\n const { fields, stepData, setFieldValue } = useWaypointStep(store, stepId);\n\n const [errors, setErrors] = useState<Record<string, string>>({});\n\n function handleNext() {\n // 1. Validate required fields\n const newErrors: Record<string, string> = {};\n for (const field of fields) {\n const isRequired = field.definition.validation?.some((r) => r.type === \"required\");\n if (isRequired) {\n const val = stepData[field.definition.id];\n if (val === undefined || val === null || val === \"\" || val === false) {\n const rule = field.definition.validation?.find((r) => r.type === \"required\");\n newErrors[field.definition.id] = rule?.message ?? \"Ce champ est requis\";\n }\n }\n }\n if (Object.keys(newErrors).length > 0) {\n setErrors(newErrors);\n return;\n }\n setErrors({});\n\n // 2. Snapshot old step IDs\n const oldIds = tree.steps.map((s) => s.definition.id).join(\",\");\n\n // 3. Save current step data\n store.getState().setStepData(stepId, stepData);\n\n // 4. Re-resolve tree with new data\n const newData = store.getState().data;\n const newTree = resolveTree(schema, newData, {});\n const newIds = newTree.steps.map((s) => s.definition.id).join(\",\");\n\n // 5. Truncate history if tree changed\n if (oldIds !== newIds) {\n store.getState().truncateHistoryAt(stepId);\n }\n\n // 6. Navigate\n const next = getNextStep(newTree.steps, stepId);\n if (next) {\n store.getState().setCurrentStep(next.definition.id);\n } else {\n setDone(true);\n }\n }\n\n function handlePrev() {\n const prev = getPreviousStep(tree.steps, stepId);\n if (prev) store.getState().setCurrentStep(prev.definition.id);\n }\n\n function handleRestart() {\n store.getState().init(schema);\n setDone(false);\n setErrors({});\n }\n\n // Compute step index for status icons\n const currentIdx = tree.steps.findIndex(\n (s) => s.definition.id === currentStep?.definition.id\n );\n\n if (done) {\n return (\n <div style={styles.panel}>\n <div style={styles.leftCol}>\n <StepList\n tree={tree}\n currentIdx={currentIdx}\n onSelect={(id) => store.getState().setCurrentStep(id)}\n />\n </div>\n <div style={styles.divider} />\n <div style={styles.rightCol}>\n <div style={styles.doneScreen}>\n <div style={styles.doneIcon}>✓</div>\n <div style={styles.doneTitle}>Parcours terminé !</div>\n <p style={styles.doneText}>\n Toutes les étapes ont été complétées avec succès.\n </p>\n <button style={styles.primaryBtn} onClick={handleRestart}>\n Recommencer\n </button>\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div style={styles.panel}>\n <DevPanel store={store} />\n\n {/* Left column — step list */}\n <div style={styles.leftCol}>\n <StepList\n tree={tree}\n currentIdx={currentIdx}\n onSelect={(id) => store.getState().setCurrentStep(id)}\n />\n </div>\n\n <div style={styles.divider} />\n\n {/* Right column — step renderer */}\n <div style={styles.rightCol}>\n <div style={styles.stepRenderer}>\n {/* Progress bar */}\n <div style={styles.progressTrack}>\n <div style={{ ...styles.progressFill, width: `${progress}%` }} />\n </div>\n\n {/* Step title */}\n <h2 style={styles.stepTitle}>\n {currentStep?.definition.title ?? \"\"}\n </h2>\n\n {/* Fields */}\n <div style={styles.fieldsContainer}>\n {fields.map((field) => (\n <FieldRenderer\n key={field.definition.id}\n field={field}\n value={stepData[field.definition.id]}\n error={errors[field.definition.id]}\n onChange={(val) => {\n setFieldValue(field.definition.id, val);\n if (errors[field.definition.id]) {\n setErrors((prev) => {\n const next = { ...prev };\n delete next[field.definition.id];\n return next;\n });\n }\n }}\n />\n ))}\n </div>\n\n {/* Navigation */}\n <div style={styles.navRow}>\n {currentIdx > 0 && (\n <button style={styles.secondaryBtn} onClick={handlePrev}>\n ← Précédent\n </button>\n )}\n <button style={{ ...styles.primaryBtn, marginLeft: \"auto\" }} onClick={handleNext}>\n {getNextStep(tree.steps, stepId) ? \"Continuer →\" : \"Terminer ✓\"}\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// StepList sub-component\n// ---------------------------------------------------------------------------\n\ninterface StepListProps {\n tree: { steps: { definition: { id: string; title: string } }[]; hiddenSteps: { definition: { id: string; title: string } }[] };\n currentIdx: number;\n onSelect: (id: string) => void;\n}\n\nfunction StepList({ tree, currentIdx, onSelect }: StepListProps) {\n const allSteps = [\n ...tree.steps.map((s) => ({ ...s, hidden: false })),\n ...tree.hiddenSteps.map((s) => ({ ...s, hidden: true })),\n ];\n\n return (\n <div style={styles.stepList}>\n <div style={styles.stepListTitle}>Étapes</div>\n {allSteps.map((step) => {\n const isVisible = !step.hidden;\n const visIdx = tree.steps.findIndex((s) => s.definition.id === step.definition.id);\n let status: \"done\" | \"current\" | \"upcoming\" | \"hidden\" = \"hidden\";\n if (isVisible) {\n if (visIdx < currentIdx) status = \"done\";\n else if (visIdx === currentIdx) status = \"current\";\n else status = \"upcoming\";\n }\n\n return (\n <div\n key={step.definition.id}\n style={{\n ...styles.stepItem,\n ...(status === \"current\" ? styles.stepItemCurrent : {}),\n ...(status === \"hidden\" ? styles.stepItemHidden : {}),\n cursor: status === \"done\" ? \"pointer\" : \"default\",\n }}\n onClick={() => {\n if (status === \"done\") onSelect(step.definition.id);\n }}\n >\n <span style={styles.stepStatus}>\n {status === \"done\" && \"✓\"}\n {status === \"current\" && \"→\"}\n {status === \"upcoming\" && \"○\"}\n {status === \"hidden\" && \"–\"}\n </span>\n <span style={styles.stepName}>{step.definition.title}</span>\n {status === \"hidden\" && <span style={styles.hiddenBadge}>hidden</span>}\n </div>\n );\n })}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// FieldRenderer sub-component\n// ---------------------------------------------------------------------------\n\ninterface FieldRendererProps {\n field: ResolvedField;\n value: unknown;\n error?: string;\n onChange: (val: unknown) => void;\n}\n\nfunction FieldRenderer({ field, value, error, onChange }: FieldRendererProps) {\n const { definition } = field;\n const inputStyle = { ...styles.input, ...(error ? styles.inputError : {}) };\n\n return (\n <div style={styles.fieldGroup}>\n <label style={styles.label}>\n {definition.label}\n {definition.validation?.some((r) => r.type === \"required\") && (\n <span style={styles.required}> *</span>\n )}\n </label>\n\n {(definition.type === \"text\" ||\n definition.type === \"email\" ||\n definition.type === \"tel\" ||\n definition.type === \"password\" ||\n definition.type === \"url\" ||\n definition.type === \"number\" ||\n definition.type === \"date\") && (\n <input\n type={definition.type}\n style={inputStyle}\n value={(value as string) ?? \"\"}\n placeholder={definition.placeholder}\n onChange={(e) => onChange(e.target.value)}\n />\n )}\n\n {definition.type === \"textarea\" && (\n <textarea\n style={{ ...inputStyle, minHeight: 80, resize: \"vertical\" }}\n value={(value as string) ?? \"\"}\n placeholder={definition.placeholder}\n onChange={(e) => onChange(e.target.value)}\n />\n )}\n\n {definition.type === \"select\" && (\n <select\n style={inputStyle}\n value={(value as string) ?? \"\"}\n onChange={(e) => onChange(e.target.value)}\n >\n <option value=\"\">— Choisir —</option>\n {definition.options?.map((opt) => (\n <option key={String(opt.value)} value={String(opt.value)}>\n {opt.label}\n </option>\n ))}\n </select>\n )}\n\n {definition.type === \"multiselect\" && (\n <select\n style={{ ...inputStyle, minHeight: 80 }}\n multiple\n value={(value as string[]) ?? []}\n onChange={(e) => {\n const selected = Array.from(e.target.selectedOptions).map((o) => o.value);\n onChange(selected);\n }}\n >\n {definition.options?.map((opt) => (\n <option key={String(opt.value)} value={String(opt.value)}>\n {opt.label}\n </option>\n ))}\n </select>\n )}\n\n {definition.type === \"radio\" && (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n {definition.options?.map((opt) => (\n <label key={String(opt.value)} style={{ display: \"flex\", alignItems: \"center\", gap: 8, cursor: \"pointer\", fontSize: 13 }}>\n <input\n type=\"radio\"\n name={definition.id}\n value={String(opt.value)}\n checked={value === String(opt.value)}\n onChange={() => onChange(String(opt.value))}\n />\n {opt.label}\n </label>\n ))}\n </div>\n )}\n\n {definition.type === \"checkbox\" && (\n <label style={{ display: \"flex\", alignItems: \"center\", gap: 8, cursor: \"pointer\", fontSize: 13 }}>\n <input\n type=\"checkbox\"\n checked={Boolean(value)}\n onChange={(e) => onChange(e.target.checked)}\n />\n {definition.placeholder ?? definition.label}\n </label>\n )}\n\n {error && <div style={styles.errorMsg}>{error}</div>}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Styles\n// ---------------------------------------------------------------------------\n\nconst styles: Record<string, React.CSSProperties> = {\n panel: {\n display: \"flex\",\n flex: 1,\n overflow: \"hidden\",\n },\n leftCol: {\n width: 220,\n flexShrink: 0,\n overflowY: \"auto\",\n borderRight: \"1px solid var(--wp-border)\",\n background: \"var(--wp-panel-bg)\",\n },\n divider: {\n width: 1,\n background: \"var(--wp-border)\",\n flexShrink: 0,\n },\n rightCol: {\n flex: 1,\n overflow: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: \"32px 24px\",\n },\n stepRenderer: {\n width: \"100%\",\n maxWidth: 520,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 20,\n },\n progressTrack: {\n height: 4,\n background: \"var(--wp-border)\",\n borderRadius: 2,\n overflow: \"hidden\",\n },\n progressFill: {\n height: \"100%\",\n background: \"var(--wp-primary)\",\n borderRadius: 2,\n transition: \"width 0.3s ease\",\n },\n stepTitle: {\n fontSize: 20,\n fontWeight: 700,\n color: \"var(--wp-text)\",\n margin: 0,\n },\n fieldsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: 16,\n },\n fieldGroup: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: 4,\n },\n label: {\n fontSize: 13,\n fontWeight: 600,\n color: \"var(--wp-text)\",\n },\n required: {\n color: \"var(--wp-danger)\",\n },\n input: {\n fontSize: 13,\n padding: \"8px 10px\",\n border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius)\",\n background: \"var(--wp-canvas)\",\n color: \"var(--wp-text)\",\n outline: \"none\",\n width: \"100%\",\n boxSizing: \"border-box\" as const,\n },\n inputError: {\n borderColor: \"var(--wp-danger)\",\n },\n errorMsg: {\n fontSize: 11,\n color: \"var(--wp-danger)\",\n marginTop: 2,\n },\n navRow: {\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n paddingTop: 8,\n },\n primaryBtn: {\n fontSize: 13,\n fontWeight: 600,\n padding: \"9px 20px\",\n background: \"var(--wp-primary)\",\n color: \"var(--wp-canvas)\",\n border: \"none\",\n borderRadius: \"var(--wp-radius)\",\n cursor: \"pointer\",\n },\n secondaryBtn: {\n fontSize: 13,\n fontWeight: 500,\n padding: \"9px 16px\",\n background: \"transparent\",\n color: \"var(--wp-text-muted)\",\n border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius)\",\n cursor: \"pointer\",\n },\n // Step list\n stepList: {\n padding: \"16px 12px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 4,\n },\n stepListTitle: {\n fontSize: 11,\n fontWeight: 700,\n color: \"var(--wp-text-muted)\",\n textTransform: \"uppercase\" as const,\n letterSpacing: \"0.5px\",\n marginBottom: 8,\n },\n stepItem: {\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"6px 8px\",\n borderRadius: 6,\n fontSize: 12,\n color: \"var(--wp-text-muted)\",\n },\n stepItemCurrent: {\n background: \"var(--wp-primary-subtle, rgba(99,102,241,0.08))\",\n color: \"var(--wp-primary)\",\n fontWeight: 600,\n },\n stepItemHidden: {\n opacity: 0.45,\n },\n stepStatus: {\n fontSize: 11,\n width: 14,\n flexShrink: 0,\n textAlign: \"center\" as const,\n },\n stepName: {\n flex: 1,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\" as const,\n },\n hiddenBadge: {\n fontSize: 9,\n fontWeight: 700,\n padding: \"1px 5px\",\n borderRadius: 4,\n background: \"var(--wp-border)\",\n color: \"var(--wp-text-muted)\",\n textTransform: \"uppercase\" as const,\n letterSpacing: \"0.3px\",\n flexShrink: 0,\n },\n // Done screen\n doneScreen: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: 1,\n gap: 12,\n paddingTop: 60,\n textAlign: \"center\" as const,\n },\n doneIcon: {\n width: 64,\n height: 64,\n borderRadius: \"50%\",\n background: \"var(--wp-success-subtle, rgba(34,197,94,0.1))\",\n color: \"var(--wp-success, #22c55e)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 28,\n fontWeight: 700,\n },\n doneTitle: {\n fontSize: 22,\n fontWeight: 700,\n color: \"var(--wp-text)\",\n },\n doneText: {\n fontSize: 14,\n color: \"var(--wp-text-muted)\",\n margin: 0,\n },\n};\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport { ConditionBuilder } from \"./ConditionBuilder\";\nimport { Modal } from \"./Modal\";\n\nexport function StepEditor() {\n const { schema, selectedStepId, updateStep, setStepCondition } = useBuilderStore();\n const [conditionModalOpen, setConditionModalOpen] = useState(false);\n\n const step = schema.steps.find((s) => s.id === selectedStepId);\n\n if (!step) {\n return (\n <div style={styles.empty}>\n Select a step to configure its properties.\n </div>\n );\n }\n\n const hasCondition = !!step.visibleWhen;\n const ruleCount = step.visibleWhen?.rules.length ?? 0;\n\n return (\n <div style={styles.container}>\n <div style={styles.header}>\n <div style={styles.headerTitle}>Step Config</div>\n <div style={styles.stepId}>id: {step.id}</div>\n </div>\n\n <div style={styles.body}>\n {/* Title */}\n <div style={styles.group}>\n <label style={styles.label}>Title</label>\n <input\n style={styles.input}\n value={step.title}\n placeholder=\"Step title\"\n onChange={(e) => updateStep(step.id, { title: e.target.value })}\n />\n </div>\n\n {/* URL */}\n <div style={styles.group}>\n <label style={styles.label}>URL</label>\n <input\n style={styles.input}\n value={step.url}\n placeholder=\"/onboarding/step-name\"\n onChange={(e) => updateStep(step.id, { url: e.target.value })}\n />\n <div style={styles.hint}>Supports {\"{{PARAM}}\"} placeholders</div>\n </div>\n\n {/* Resume */}\n <div style={styles.checkRow}>\n <input\n type=\"checkbox\"\n id={`resume-${step.id}`}\n checked={!!step.enableResumeFromHere}\n onChange={(e) =>\n updateStep(step.id, { enableResumeFromHere: e.target.checked || undefined })\n }\n />\n <label htmlFor={`resume-${step.id}`} style={styles.checkLabel}>\n Resume from this step\n </label>\n </div>\n\n <div style={styles.divider} />\n\n {/* Visibility condition — summary */}\n <div style={styles.conditionRow}>\n <div style={styles.conditionInfo}>\n <div style={styles.label}>Visibility condition</div>\n {hasCondition ? (\n <div style={styles.conditionSummary}>\n <span style={styles.conditionBadge}>\n {ruleCount} rule{ruleCount !== 1 ? \"s\" : \"\"} · {step.visibleWhen!.combinator.toUpperCase()}\n </span>\n <span style={styles.conditionDesc}>\n Step is conditional\n </span>\n </div>\n ) : (\n <div style={styles.conditionNone}>Always visible</div>\n )}\n </div>\n <div style={styles.conditionActions}>\n <button\n style={styles.editConditionBtn}\n onClick={() => setConditionModalOpen(true)}\n >\n {hasCondition ? \"Edit\" : \"Add condition\"}\n </button>\n {hasCondition && (\n <button\n style={styles.clearConditionBtn}\n onClick={() => setStepCondition(step.id, undefined)}\n >\n Clear\n </button>\n )}\n </div>\n </div>\n </div>\n\n {/* Condition modal */}\n {conditionModalOpen && (\n <Modal\n title={`Condition — \"${step.title}\"`}\n onClose={() => setConditionModalOpen(false)}\n width={620}\n >\n <p style={styles.modalHint}>\n Define when this step is visible. Leave empty to always show it.\n </p>\n <ConditionBuilder\n value={step.visibleWhen}\n onChange={(c) => setStepCondition(step.id, c)}\n />\n <div style={styles.modalFooter}>\n <button\n style={styles.modalCloseBtn}\n onClick={() => setConditionModalOpen(false)}\n >\n Done\n </button>\n </div>\n </Modal>\n )}\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { display: \"flex\", flexDirection: \"column\", height: \"100%\", overflow: \"hidden\" },\n empty: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n height: \"100%\", color: \"var(--wp-text-subtle)\", fontSize: 13, textAlign: \"center\", padding: 32,\n },\n header: {\n padding: \"12px 16px\", borderBottom: \"1px solid var(--wp-border)\",\n display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\",\n },\n headerTitle: { fontWeight: 700, fontSize: 13, color: \"var(--wp-text)\" },\n stepId: { fontSize: 10, color: \"var(--wp-text-subtle)\", fontFamily: \"monospace\" },\n body: { flex: 1, overflowY: \"auto\", padding: 16, display: \"flex\", flexDirection: \"column\", gap: 12 },\n group: { display: \"flex\", flexDirection: \"column\", gap: 4 },\n label: { fontSize: 11, fontWeight: 600, color: \"var(--wp-text-muted)\", textTransform: \"uppercase\", letterSpacing: \"0.05em\" },\n input: {\n fontSize: 13, padding: \"6px 8px\", border: \"1px solid var(--wp-border-muted)\",\n borderRadius: \"var(--wp-radius)\", outline: \"none\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n },\n hint: { fontSize: 10, color: \"var(--wp-text-subtle)\" },\n checkRow: { display: \"flex\", alignItems: \"center\", gap: 8 },\n checkLabel: { fontSize: 13, color: \"var(--wp-text-secondary)\" },\n divider: { height: 1, background: \"var(--wp-border)\" },\n conditionRow: {\n display: \"flex\", alignItems: \"flex-start\", justifyContent: \"space-between\", gap: 8,\n },\n conditionInfo: { display: \"flex\", flexDirection: \"column\", gap: 6, flex: 1 },\n conditionSummary: { display: \"flex\", alignItems: \"center\", gap: 8 },\n conditionBadge: {\n fontSize: 11, fontWeight: 700, background: \"var(--wp-warning-bg)\", color: \"var(--wp-warning)\",\n padding: \"2px 8px\", borderRadius: 4,\n },\n conditionDesc: { fontSize: 11, color: \"var(--wp-text-subtle)\" },\n conditionNone: { fontSize: 12, color: \"var(--wp-text-subtle)\", fontStyle: \"italic\" },\n conditionActions: { display: \"flex\", gap: 6, flexShrink: 0, alignItems: \"flex-start\", marginTop: 16 },\n editConditionBtn: {\n fontSize: 11, padding: \"4px 10px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\", fontWeight: 500,\n },\n clearConditionBtn: {\n fontSize: 11, padding: \"4px 10px\", background: \"var(--wp-danger-bg-strong)\", color: \"var(--wp-danger)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\",\n },\n modalHint: { fontSize: 13, color: \"var(--wp-text-muted)\", marginBottom: 16, marginTop: 0 },\n modalFooter: { marginTop: 20, display: \"flex\", justifyContent: \"flex-end\" },\n modalCloseBtn: {\n fontSize: 13, padding: \"7px 20px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius-lg)\", cursor: \"pointer\", fontWeight: 600,\n },\n};\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport {\n computeStepDependencies,\n getStepDependencyLabels,\n isMoveValid,\n} from \"../utils/step-dependencies\";\n\nexport function StepList() {\n const { schema, selectedStepId, addStep, removeStep, selectStep, reorderSteps } =\n useBuilderStore();\n\n const [moveError, setMoveError] = useState<string | null>(null);\n\n const steps = schema.steps;\n const deps = computeStepDependencies(schema);\n\n const tryMove = (fromIndex: number, toIndex: number) => {\n const check = isMoveValid(steps, deps, fromIndex, toIndex);\n if (!check.valid) {\n setMoveError(check.reason ?? \"Invalid move\");\n setTimeout(() => setMoveError(null), 3000);\n return;\n }\n setMoveError(null);\n reorderSteps(fromIndex, toIndex);\n };\n\n return (\n <div style={styles.container}>\n <div style={styles.header}>\n <span style={styles.title}>Steps ({steps.length})</span>\n <button style={styles.addBtn} onClick={() => addStep()}>\n + Add step\n </button>\n </div>\n\n {/* Dependency violation error */}\n {moveError && (\n <div style={styles.errorBanner}>\n <span style={styles.errorIcon}>⚠</span>\n {moveError}\n </div>\n )}\n\n <div style={styles.list}>\n {steps.length === 0 && (\n <div style={styles.empty}>No steps yet. Click \"Add step\" to start.</div>\n )}\n\n {steps.map((step, index) => {\n const isSelected = step.id === selectedStepId;\n const hasCondition = !!step.visibleWhen;\n const depLabels = getStepDependencyLabels(step.id, deps, schema);\n\n const canMoveUp =\n index > 0 && isMoveValid(steps, deps, index, index - 1).valid;\n const canMoveDown =\n index < steps.length - 1 &&\n isMoveValid(steps, deps, index, index + 1).valid;\n\n const dependents = steps.filter((s) =>\n (deps.get(s.id) ?? new Set()).has(step.id)\n );\n\n return (\n <div\n key={step.id}\n style={{\n ...styles.card,\n ...(isSelected ? styles.cardSelected : {}),\n }}\n onClick={() => selectStep(step.id)}\n >\n <div style={styles.cardMain}>\n <div style={styles.cardLeft}>\n <div style={styles.cardIndex}>{index + 1}</div>\n <div style={{ minWidth: 0 }}>\n <div style={styles.cardTitle}>{step.title}</div>\n <div style={styles.cardMeta}>\n {step.fields.length} field{step.fields.length !== 1 ? \"s\" : \"\"}\n {hasCondition && (\n <span style={styles.conditionBadge}>conditional</span>\n )}\n </div>\n </div>\n </div>\n\n <div style={styles.cardActions}>\n {index > 0 && (\n <button\n style={{\n ...styles.iconBtn,\n ...(canMoveUp ? {} : styles.iconBtnBlocked),\n }}\n title={\n canMoveUp\n ? \"Move up\"\n : `Can't move up — dependency order required`\n }\n onClick={(e) => {\n e.stopPropagation();\n tryMove(index, index - 1);\n }}\n >\n ↑\n </button>\n )}\n {index < steps.length - 1 && (\n <button\n style={{\n ...styles.iconBtn,\n ...(canMoveDown ? {} : styles.iconBtnBlocked),\n }}\n title={\n canMoveDown\n ? \"Move down\"\n : `Can't move down — dependency order required`\n }\n onClick={(e) => {\n e.stopPropagation();\n tryMove(index, index + 1);\n }}\n >\n ↓\n </button>\n )}\n <button\n style={{ ...styles.iconBtn, ...styles.deleteBtn }}\n title=\"Remove step\"\n onClick={(e) => {\n e.stopPropagation();\n removeStep(step.id);\n }}\n >\n ✕\n </button>\n </div>\n </div>\n\n {/* Dependency info */}\n {depLabels.length > 0 && (\n <div style={styles.depRow}>\n <span style={styles.depLabel}>needs:</span>\n {depLabels.map((label) => (\n <span key={label} style={styles.depBadge}>{label}</span>\n ))}\n </div>\n )}\n {dependents.length > 0 && (\n <div style={styles.depRow}>\n <span style={styles.depLabelUsed}>used by:</span>\n {dependents.map((s) => (\n <span key={s.id} style={styles.depBadgeUsed}>{s.title}</span>\n ))}\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { display: \"flex\", flexDirection: \"column\", height: \"100%\" },\n header: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n padding: \"12px 16px\", borderBottom: \"1px solid var(--wp-border)\",\n },\n title: { fontWeight: 600, fontSize: 13, color: \"var(--wp-text-secondary)\" },\n addBtn: {\n fontSize: 12, padding: \"4px 10px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\", fontWeight: 500,\n },\n errorBanner: {\n margin: \"8px 8px 0\", padding: \"8px 12px\", background: \"var(--wp-danger-bg)\",\n border: \"1px solid var(--wp-danger-border)\", borderRadius: \"var(--wp-radius-lg)\", fontSize: 12,\n color: \"var(--wp-danger-text)\", display: \"flex\", alignItems: \"center\", gap: 6,\n },\n errorIcon: { fontSize: 14 },\n list: { flex: 1, overflowY: \"auto\", padding: 8 },\n empty: { padding: 24, textAlign: \"center\", color: \"var(--wp-text-subtle)\", fontSize: 13 },\n card: {\n padding: \"10px 12px\", borderRadius: \"var(--wp-radius-lg)\", marginBottom: 4,\n border: \"1px solid transparent\", cursor: \"pointer\",\n background: \"var(--wp-surface)\", transition: \"all 0.1s\",\n display: \"flex\", flexDirection: \"column\", gap: 6,\n },\n cardSelected: { background: \"var(--wp-primary-muted)\", border: \"1px solid var(--wp-primary-border)\" },\n cardMain: { display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" },\n cardLeft: { display: \"flex\", alignItems: \"center\", gap: 10, minWidth: 0, flex: 1 },\n cardIndex: {\n width: 24, height: 24, borderRadius: \"50%\", background: \"var(--wp-border)\",\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n fontSize: 11, fontWeight: 700, color: \"var(--wp-text-muted)\", flexShrink: 0,\n },\n cardTitle: { fontSize: 13, fontWeight: 600, color: \"var(--wp-text)\" },\n cardMeta: {\n fontSize: 11, color: \"var(--wp-text-subtle)\", display: \"flex\",\n alignItems: \"center\", gap: 6, marginTop: 2,\n },\n conditionBadge: {\n fontSize: 10, background: \"var(--wp-warning-bg)\", color: \"var(--wp-warning)\",\n padding: \"1px 6px\", borderRadius: 4, fontWeight: 600,\n },\n cardActions: { display: \"flex\", gap: 4, flexShrink: 0 },\n iconBtn: {\n width: 24, height: 24, border: \"none\", background: \"transparent\",\n cursor: \"pointer\", borderRadius: 4, fontSize: 12, color: \"var(--wp-text-subtle)\",\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n },\n iconBtnBlocked: {\n color: \"var(--wp-border-muted)\", cursor: \"not-allowed\", opacity: 0.4,\n },\n deleteBtn: { color: \"var(--wp-danger)\" },\n depRow: { display: \"flex\", alignItems: \"center\", flexWrap: \"wrap\", gap: 4 },\n depLabel: { fontSize: 10, fontWeight: 600, color: \"var(--wp-text-muted)\", textTransform: \"uppercase\" },\n depLabelUsed: { fontSize: 10, fontWeight: 600, color: \"var(--wp-success)\", textTransform: \"uppercase\" },\n depBadge: {\n fontSize: 10, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-primary-bg)\", color: \"var(--wp-primary-dark)\", borderRadius: 4,\n },\n depBadgeUsed: {\n fontSize: 10, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-success-bg)\", color: \"var(--wp-success)\", borderRadius: 4,\n },\n};\n","import { validateSchema } from \"@waypointjs/core\";\nimport { useBuilderStore } from \"../store/builder-store\";\n\ninterface ToolbarProps {\n onSave?: (schema: ReturnType<typeof useBuilderStore.getState>[\"schema\"]) => void | Promise<void>;\n previewMode?: boolean;\n onTest?: () => void;\n isMobile?: boolean;\n}\n\nexport function Toolbar({ onSave, previewMode, onTest, isMobile }: ToolbarProps) {\n const { schema, isDirty, resetSchema } = useBuilderStore();\n\n const handleExport = () => {\n const json = JSON.stringify(schema, null, 2);\n const blob = new Blob([json], { type: \"application/json\" });\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = `${schema.id}.waypoint.json`;\n a.click();\n URL.revokeObjectURL(url);\n };\n\n const handleImport = () => {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = \".json\";\n input.onchange = (e) => {\n const file = (e.target as HTMLInputElement).files?.[0];\n if (!file) return;\n const reader = new FileReader();\n reader.onload = (ev) => {\n try {\n const parsed = JSON.parse(ev.target?.result as string);\n const result = validateSchema(parsed);\n if (!result.valid) {\n alert(`Invalid schema:\\n\\n${result.errors.map((e) => `• ${e}`).join(\"\\n\")}`);\n return;\n }\n useBuilderStore.getState().loadSchema(parsed);\n } catch {\n alert(\"Invalid JSON file — could not parse\");\n }\n };\n reader.readAsText(file);\n };\n input.click();\n };\n\n if (previewMode) {\n return (\n <div style={styles.toolbar}>\n <div style={styles.left}>\n <span style={styles.logo}>◈ waypoint</span>\n <span style={styles.separator}>/</span>\n <button\n style={{ ...styles.btn, ...styles.editBtn }}\n onClick={onTest}\n >\n ← Éditer\n </button>\n </div>\n <div style={styles.right}>\n <span style={{ fontSize: 12, color: \"var(--wp-text-muted)\", fontStyle: \"italic\" }}>\n Mode aperçu\n </span>\n </div>\n </div>\n );\n }\n\n return (\n <div style={styles.toolbar}>\n <div style={styles.left}>\n {!isMobile && <span style={styles.logo}>◈ waypoint</span>}\n {!isMobile && <span style={styles.separator}>/</span>}\n <input\n style={{\n ...styles.journeyName,\n ...(isMobile ? { maxWidth: 120, fontSize: 12 } : {}),\n }}\n value={schema.name}\n placeholder=\"Journey name\"\n onChange={(e) =>\n useBuilderStore.setState((s) => ({\n schema: { ...s.schema, name: e.target.value },\n isDirty: true,\n }))\n }\n />\n {isDirty && <span style={styles.dirtyDot} title=\"Unsaved changes\" />}\n </div>\n\n <div style={styles.right}>\n {onTest && (\n <button style={{ ...styles.btn, ...styles.testBtn }} onClick={onTest} title=\"Tester\">\n {isMobile ? \"▶\" : \"▶ Tester\"}\n </button>\n )}\n <button style={styles.btn} onClick={handleImport} title=\"Import\">\n {isMobile ? \"↓\" : \"Import\"}\n </button>\n <button style={styles.btn} onClick={handleExport} title=\"Export JSON\">\n {isMobile ? \"↑\" : \"Export JSON\"}\n </button>\n {onSave && (\n <button\n style={{ ...styles.btn, ...styles.saveBtn }}\n onClick={() => onSave(schema)}\n title=\"Save\"\n >\n {isMobile ? \"✓\" : \"Save\"}\n </button>\n )}\n <button\n style={{ ...styles.btn, color: \"var(--wp-danger)\" }}\n title=\"Reset\"\n onClick={() => {\n if (confirm(\"Reset the journey? All changes will be lost.\")) resetSchema();\n }}\n >\n {isMobile ? \"⟳\" : \"Reset\"}\n </button>\n </div>\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n toolbar: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n padding: \"0 16px\", height: 48, background: \"var(--wp-toolbar-bg)\",\n borderBottom: \"1px solid var(--wp-toolbar-border)\", flexShrink: 0,\n },\n left: { display: \"flex\", alignItems: \"center\", gap: 8 },\n logo: { fontSize: 14, fontWeight: 800, color: \"var(--wp-toolbar-logo)\", letterSpacing: \"-0.5px\" },\n separator: { color: \"var(--wp-toolbar-text-subtle)\", fontSize: 16 },\n journeyName: {\n fontSize: 13, fontWeight: 600, color: \"var(--wp-toolbar-text)\",\n background: \"transparent\", border: \"none\", outline: \"none\",\n borderBottom: \"1px solid transparent\",\n },\n dirtyDot: {\n width: 6, height: 6, borderRadius: \"50%\", background: \"var(--wp-warning-strong)\",\n flexShrink: 0,\n },\n right: { display: \"flex\", alignItems: \"center\", gap: 8 },\n btn: {\n fontSize: 12, padding: \"5px 12px\", border: \"1px solid var(--wp-toolbar-border)\",\n background: \"transparent\", color: \"var(--wp-toolbar-text-muted)\", borderRadius: \"var(--wp-radius)\",\n cursor: \"pointer\", fontWeight: 500,\n },\n saveBtn: { background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\", border: \"1px solid var(--wp-primary)\" },\n testBtn: { background: \"var(--wp-success, #22c55e)\", color: \"#fff\", border: \"1px solid var(--wp-success, #22c55e)\", fontWeight: 600 },\n editBtn: { background: \"transparent\", color: \"var(--wp-toolbar-text)\", border: \"none\", fontWeight: 600, cursor: \"pointer\", fontSize: 13, padding: \"5px 0\" },\n};\n","\"use client\";\n\nimport type { WaypointSchema } from \"@waypointjs/core\";\nimport { createRuntimeStore } from \"@waypointjs/core\";\nimport type { RuntimeStore } from \"@waypointjs/core\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { buildThemeVars, type WaypointTheme } from \"../theme\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport { ExternalVariablePanel } from \"./ExternalVariablePanel\";\nimport { FieldEditor } from \"./FieldEditor\";\nimport { FieldList } from \"./FieldList\";\nimport { PreviewPanel } from \"./PreviewPanel\";\nimport { StepEditor } from \"./StepEditor\";\nimport { StepList } from \"./StepList\";\nimport { Toolbar } from \"./Toolbar\";\n\ntype MobileTab = \"steps\" | \"fields\" | \"config\";\n\nexport interface WaypointBuilderProps {\n /** Initial schema to load into the builder */\n defaultValue?: WaypointSchema;\n /** Called whenever the schema changes */\n onChange?: (schema: WaypointSchema) => void;\n /** Called when the user clicks \"Save\" */\n onSave?: (schema: WaypointSchema) => void | Promise<void>;\n /** Theme override — partial or full WaypointTheme */\n theme?: WaypointTheme;\n /** CSS class applied to the root element */\n className?: string;\n /** Inline style applied to the root element */\n style?: React.CSSProperties;\n}\n\nexport function WaypointBuilder({\n defaultValue,\n onChange,\n onSave,\n theme,\n className,\n style,\n}: WaypointBuilderProps) {\n const { loadSchema, schema, selectedStepId, selectedFieldId } = useBuilderStore();\n const [previewMode, setPreviewMode] = useState(false);\n const [isMobile, setIsMobile] = useState(false);\n const [activeTab, setActiveTab] = useState<MobileTab>(\"steps\");\n\n // Preview store — singleton, no localStorage persistence\n const previewStoreRef = useRef<RuntimeStore | null>(null);\n if (previewStoreRef.current === null) {\n previewStoreRef.current = createRuntimeStore();\n }\n\n useEffect(() => {\n const check = () => setIsMobile(window.innerWidth < 640);\n check();\n window.addEventListener(\"resize\", check);\n return () => window.removeEventListener(\"resize\", check);\n }, []);\n\n useEffect(() => {\n if (defaultValue) loadSchema(defaultValue);\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n onChange?.(schema);\n }, [schema, onChange]);\n\n // Auto-navigate on mobile: selecting a step → Fields tab\n useEffect(() => {\n if (isMobile && selectedStepId) setActiveTab(\"fields\");\n }, [selectedStepId]); // eslint-disable-line react-hooks/exhaustive-deps\n\n // Auto-navigate on mobile: selecting a field → Config tab\n useEffect(() => {\n if (isMobile && selectedFieldId) setActiveTab(\"config\");\n }, [selectedFieldId]); // eslint-disable-line react-hooks/exhaustive-deps\n\n function handleTest() {\n previewStoreRef.current!.getState().init(schema);\n setPreviewMode(true);\n }\n\n const themeVars = buildThemeVars(theme);\n\n return (\n <div className={className} style={{ ...rootStyle, ...themeVars, ...style }}>\n <Toolbar\n isMobile={isMobile}\n onSave={!previewMode && onSave ? () => onSave(schema) : undefined}\n previewMode={previewMode}\n onTest={previewMode ? () => setPreviewMode(false) : handleTest}\n />\n {previewMode ? (\n <PreviewPanel\n store={previewStoreRef.current}\n schema={schema}\n onEdit={() => setPreviewMode(false)}\n />\n ) : isMobile ? (\n <>\n {/* Steps panel */}\n <div style={{ ...colStyle, display: activeTab === \"steps\" ? \"flex\" : \"none\" }}>\n <div style={{ flex: 1, overflow: \"hidden\", display: \"flex\", flexDirection: \"column\" }}>\n <StepList />\n </div>\n <div style={{ borderTop: \"1px solid var(--wp-border)\", flexShrink: 0, overflow: \"auto\", maxHeight: 200 }}>\n <ExternalVariablePanel />\n </div>\n </div>\n\n {/* Fields panel */}\n <div style={{ ...colStyle, display: activeTab === \"fields\" ? \"flex\" : \"none\" }}>\n <FieldList />\n </div>\n\n {/* Config panel */}\n <div style={{ ...colStyle, display: activeTab === \"config\" ? \"flex\" : \"none\" }}>\n <div style={{ flex: 1, borderBottom: \"1px solid var(--wp-border)\", overflow: \"hidden\" }}>\n <StepEditor />\n </div>\n <div style={{ flex: 1, overflow: \"hidden\" }}>\n <FieldEditor />\n </div>\n </div>\n\n {/* Bottom tab bar */}\n <div style={tabBarStyle}>\n {([\"steps\", \"fields\", \"config\"] as MobileTab[]).map((tab) => (\n <button\n key={tab}\n style={{ ...tabBtnStyle, ...(activeTab === tab ? tabBtnActiveStyle : {}) }}\n onClick={() => setActiveTab(tab)}\n >\n <span style={{ fontSize: 14 }}>\n {tab === \"steps\" ? \"⚡\" : tab === \"fields\" ? \"⊞\" : \"⚙\"}\n </span>\n <span style={{ fontSize: 11, fontWeight: 600, textTransform: \"capitalize\" }}>\n {tab}\n </span>\n </button>\n ))}\n </div>\n </>\n ) : (\n <div style={layoutStyle}>\n {/* Column 1 — Steps + External Variables */}\n <div style={colStyle}>\n <div style={{ flex: 1, overflow: \"hidden\", display: \"flex\", flexDirection: \"column\" }}>\n <StepList />\n </div>\n <div style={{ borderTop: \"1px solid var(--wp-border)\", flexShrink: 0, overflow: \"auto\", maxHeight: 280 }}>\n <ExternalVariablePanel />\n </div>\n </div>\n\n {/* Divider */}\n <div style={dividerStyle} />\n\n {/* Column 2 — Fields */}\n <div style={colStyle}>\n <FieldList />\n </div>\n\n {/* Divider */}\n <div style={dividerStyle} />\n\n {/* Column 3 — Step config + Field editor */}\n <div style={{ ...colStyle, flex: 1.2, display: \"flex\", flexDirection: \"column\" }}>\n <div style={{ flex: 1, borderBottom: \"1px solid var(--wp-border)\", overflow: \"hidden\" }}>\n <StepEditor />\n </div>\n <div style={{ flex: 1, overflow: \"hidden\" }}>\n <FieldEditor />\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nconst rootStyle: React.CSSProperties = {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n background: \"var(--wp-canvas)\",\n borderRadius: 12,\n border: \"1px solid var(--wp-border)\",\n overflow: \"hidden\",\n fontFamily: \"var(--wp-font)\",\n};\n\nconst layoutStyle: React.CSSProperties = {\n display: \"flex\",\n flex: 1,\n overflow: \"hidden\",\n};\n\nconst colStyle: React.CSSProperties = {\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n minWidth: 0,\n};\n\nconst dividerStyle: React.CSSProperties = {\n width: 1,\n background: \"var(--wp-border)\",\n flexShrink: 0,\n};\n\nconst tabBarStyle: React.CSSProperties = {\n display: \"flex\",\n borderTop: \"1px solid var(--wp-border)\",\n background: \"var(--wp-toolbar-bg)\",\n flexShrink: 0,\n};\n\nconst tabBtnStyle: React.CSSProperties = {\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 3,\n padding: \"8px 4px\",\n border: \"none\",\n background: \"transparent\",\n color: \"var(--wp-text-subtle)\",\n cursor: \"pointer\",\n};\n\nconst tabBtnActiveStyle: React.CSSProperties = {\n color: \"var(--wp-primary)\",\n borderTop: \"2px solid var(--wp-primary)\",\n};\n"]}
|