Portal Community

Three-Panel Layout

The designer workspace is divided into three resizable panels:

Left Panel — Control Palette

The palette lists all 88+ control types organised into groups. Search filters the list in real time. Drag any control from the palette and drop it onto the canvas to add it to the form.

Center Panel — Form Canvas

The canvas is where you build the form. Controls appear in their rendered state — you see exactly what the user will see, including labels, placeholders, and help text. You can:

Right Panel — Properties

When a control is selected, the properties panel shows all configurable fields for that control type. Properties are grouped into tabs:

Drag-and-Drop Mechanics

The designer uses the HTML5 Drag and Drop API with custom drop-zone highlighting. When you drag a control from the palette:

  1. The canvas highlights valid drop zones between existing controls
  2. Drop onto a zone to insert the control at that position
  3. The control receives a generated ID (control-{uuid}) and default configuration
  4. The auto-save triggers immediately after the drop
Design Mode vs Edit Mode In design mode, controls render with a design overlay (drag handle, selection highlight, delete button). The underlying FormRenderer receives mode="design". This is the same component used in production — switching to preview just changes the mode prop to "preview".

Auto-Save

Every change in the designer is auto-saved with a 500ms debounce. The save indicator in the top bar shows the current state:

Auto-save uses StorageManager — it first saves to localStorage for immediate persistence, then syncs to the API. If the API is unreachable, the draft remains in localStorage until the connection is restored.

JSON Schema View

The designer includes a JSON Schema toggle in the toolbar. This opens a read-only (and optionally editable) view of the raw form schema. Advanced users can paste JSON directly into the schema editor to make bulk changes. The canvas re-renders on every valid JSON change.

Undo / Redo

The designer maintains a 50-step undo history using a command stack. Use Ctrl+Z / Cmd+Z to undo and Ctrl+Shift+Z to redo. Each add, delete, move, or property change is a separate undo step.