import { createSignal } from 'solid-js'; import AdminShell from '~/components/AdminShell'; import { saveRuntimeConfig } from '~/lib/runtime/storage'; import type { RuntimeOnboardingConfig } from '~/lib/runtime/types'; export default function CreateOnboardingSchemaPage() { const [config, setConfig] = createSignal({ schemaId: 'photographer_onboarding_v1', roleKey: 'PHOTOGRAPHER', version: 1, steps: [ { id: 'profile', title: 'Profile Details', fields: [ { id: 'full_name', label: 'Full Name', type: 'text', required: true }, { id: 'experience', label: 'Experience', type: 'number', required: true }, ], }, ], }); const [statusMessage, setStatusMessage] = createSignal(''); const persist = (status: 'draft' | 'published') => { const payload = config(); if (!payload.schemaId.trim()) { setStatusMessage('Schema ID is required before saving.'); return; } saveRuntimeConfig('onboarding', payload.schemaId, payload, status); setStatusMessage(status === 'draft' ? 'Draft saved in runtime storage.' : 'Onboarding schema published in runtime storage.'); }; return (

Create Onboarding Flow

Build onboarding in the same place with a simple step editor and visible runtime JSON.

Onboarding Builder

setConfig({ ...config(), schemaId: e.currentTarget.value })} />
setConfig({ ...config(), roleKey: e.currentTarget.value.toUpperCase() })} />
setConfig({ ...config(), version: Number(e.currentTarget.value || 1) })} />