User support for every feature
Matches the Filament builder, public Livewire page, and submission inbox in v1.0.0.
Builder UI
- Three tabs: Settings, Builder, Preview. Active tab persists in the query string.
- Nested repeaters are collapsed, collapsible, cloneable, and drag-reorderable (Filament / SortableJS).
- Collapsed section rows show the section title (or “Untitled section”).
- Collapsed field rows show
label · type. - Collapsed option rows show the option label.
- Settings grid is one column on mobile, two from the
mdbreakpoint. - Create form redirects to the list index.
- List: name + public path description, layout badge, published icon, entries count, Open / Clone / Edit / Delete. Filters: layout, published.
- View form: public URL, counts, schematic preview, charts, submissions relation, Open public form.
Settings fields
| Field | Behavior |
|---|---|
| Name | Required. Can auto-fill slug and public path. |
| Slug | Internal unique identifier (alpha-dash). |
| Public path | URL segment after the prefix. Unique; conflicts hashed. |
| Layout | single / wizard / tabs / pages (live — changes section add/delete rules). |
| Description | Shown on the public page under the title. |
| Default label position | above, inline, below, inside (placeholder). |
| Published | Off = hidden from public URL. |
| Active | Off = also excluded from published scope. |
| Success message | Default: “Thanks — your response has been recorded.” |
| Redirect after submit | Must be a URL. Shown as a Continue link after success, not an automatic HTTP redirect. |
| Notify emails | Tags of addresses stored on the form. v1 does not send mail; listen to FormSubmitted in the host. |
Layouts
| Layout | When to use | Validation | Sample seed |
|---|---|---|---|
| Single page | Short contact forms | All fields on submit | Contact Us — /forms/contact-us |
| Wizard | Multi-step with a progress bar | Current step on Next; all on last Submit | Event Registration |
| Tabs | Related groups without gating | All on Submit | Job Application |
| Pages | Surveys that should save drafts between screens | Same gates as wizard; “Save and continue” | Customer Feedback |
Labels, overrides, and width
- Default label position on the form; each field can override.
- above — label then control (default).
- inline — CSS row layout on the public field.
- below — control then label.
- inside — no outer label; placeholder becomes the label text if placeholder is empty.
- Label override — runtime display label without changing the stored schema label (used by the public renderer, Filament preview, validation attributes, and submission display).
- Width — 1–12 of the grid; 12 is full, 6 is half. Always full width on small screens.
Field types
Same keys as Dynamic Fields when that package is present. Fallback list is in config.
| Type | Public control | Admin preview (Filament) | Validation default |
|---|---|---|---|
| text | text input (blur) | TextInput | string |
| email (blur) | email TextInput | ||
| phone | tel | tel TextInput | string |
| url | url | url TextInput | url |
| number | number | numeric TextInput | numeric |
| textarea | textarea; rows from meta (default 4) | Textarea or RichEditor if meta.use_editor | string |
| select | native select | Select | string; needs options |
| radio | radio group | Radio | needs options |
| multi_select | select multiple | Select multiple searchable | array |
| tags | text input, comma-separated (stored as array) | TagsInput with option suggestions | array |
| date | date | DatePicker | date |
| datetime | datetime-local | DateTimePicker | date |
| boolean / toggle | checkbox + label | Toggle | boolean |
| file | file input; optional multiple; “Uploading…” | FileUpload on form-builder disk | array |
Extra Laravel rules (TagsInput on the field) are merged uniquely. Conditional visibility uses meta.visible_when_field / visible_when_value in the Filament preview; public Blade does not hide fields client-side in v1 (still submitted if present in DOM — prefer wizard steps if you need gated questions).
Option colors imported from Dynamic Fields are stored on schema options; the public renderer does not paint tag badges (admin submission view shows labels).
Public forms
- Self-contained CSS in the public layout (12-column grid, mobile stack).
- Progress bar + “Step N of M” for wizard and pages.
- Tab pills call
goToStep(no step validation when switching tabs). - Only published+active forms; match on
base_pathorslug. - Logged-in users are stored on
user_idwhen Auth is present.
File uploads
- Livewire
WithFileUploads. Toggle Allow multiple files on the field (meta.multiple). - Stored under
form-submissions/{form_id}onFORM_BUILDER_FILE_DISK(defaultpublic). - Config
max_size_kbis 5120; Livewire’s own upload limits also apply (livewire.php/ php.ini). - Not Spatie Media Library (unlike Dynamic Fields file fields).
- Exports list original file names separated by semicolons.
Submissions inbox
- Preview column: first two answered fields as an excerpt.
- UUID copyable, hidden by default.
- Charts on the list and on the form view page.
- Empty state: “Publish the form and share its public URL…”
Exports
- Headers: id, uuid, form, status, created_at, then each field name (or union of keys if exporting mixed forms).
- Arrays become comma-separated; file arrays become names joined with
;. - Audit log action
exportwith format, filename, count.
Import from custom fields
Developer API copies definitions into the form schema (see Workflows). After import, edit the form in the builder as usual — it is a one-way snapshot.