Visual Form Builder
A powerful drag-and-drop form designer with 25 field types across 5 categories, multi-locale support, conditional logic, field validation, responsive width controls, form settings, template gallery, live preview, and embed code generation. Build complex forms without writing any code.
Last updated: 04/14/2026, 10:12 AM
<div class="features-wrapper">
<h2>No-Code Form Design Studio</h2>
<p>The Form Builder is a full-featured visual designer powered by <strong>dnd-kit</strong> for drag-and-drop interactions. The interface is divided into three panels: the <strong>Field Palette</strong> (left) containing all available field types organized by category, the <strong>Canvas</strong> (center) where you arrange and configure your form fields, and the <strong>Properties Panel</strong> (right) for editing the selected field's details including labels, validation, conditional logic, and width settings. All content supports <strong>multi-locale translations</strong> — configure every label, placeholder, and error message in both English and Turkish (or any configured locale).</p>
<h2>Field Types (25 Total)</h2>
<h3>📝 Input Fields (11 types)</h3>
<table>
<thead>
<tr><th>Field Type</th><th>Icon</th><th>Description</th><th>Validation Options</th></tr>
</thead>
<tbody>
<tr><td><strong>Text</strong></td><td>Type</td><td>Single-line text input</td><td>minLength, maxLength, pattern (regex)</td></tr>
<tr><td><strong>Textarea</strong></td><td>AlignLeft</td><td>Multi-line text area</td><td>minLength, maxLength</td></tr>
<tr><td><strong>Rich Text</strong></td><td>FileText</td><td>WYSIWYG rich text editor</td><td>minLength, maxLength</td></tr>
<tr><td><strong>Email</strong></td><td>Mail</td><td>Email address input with format validation</td><td>pattern (auto email regex)</td></tr>
<tr><td><strong>Phone</strong></td><td>Phone</td><td>Phone number input</td><td>pattern</td></tr>
<tr><td><strong>Number</strong></td><td>Hash</td><td>Numeric input</td><td>min, max</td></tr>
<tr><td><strong>Currency</strong></td><td>DollarSign</td><td>Monetary amount input</td><td>min, max</td></tr>
<tr><td><strong>URL</strong></td><td>Link</td><td>Web address input with URL validation</td><td>pattern</td></tr>
<tr><td><strong>Date</strong></td><td>Calendar</td><td>Date picker</td><td>min date, max date</td></tr>
<tr><td><strong>Time</strong></td><td>Clock</td><td>Time picker</td><td>min time, max time</td></tr>
<tr><td><strong>DateTime</strong></td><td>CalendarClock</td><td>Combined date and time picker</td><td>min, max</td></tr>
</tbody>
</table>
<h3>☑️ Selection Fields (4 types)</h3>
<table>
<thead>
<tr><th>Field Type</th><th>Icon</th><th>Description</th><th>Has Options</th></tr>
</thead>
<tbody>
<tr><td><strong>Select</strong></td><td>ChevronDown</td><td>Single-select dropdown</td><td>✅ Yes — configurable option list with multi-locale labels</td></tr>
<tr><td><strong>Multi-Select</strong></td><td>ListChecks</td><td>Multi-select dropdown</td><td>✅ Yes</td></tr>
<tr><td><strong>Checkbox</strong></td><td>CheckSquare</td><td>Checkbox group</td><td>✅ Yes</td></tr>
<tr><td><strong>Radio</strong></td><td>CircleDot</td><td>Radio button group</td><td>✅ Yes</td></tr>
</tbody>
</table>
<h3>📎 Media Fields (2 types)</h3>
<table>
<thead>
<tr><th>Field Type</th><th>Icon</th><th>Description</th><th>Validation Options</th></tr>
</thead>
<tbody>
<tr><td><strong>File Upload</strong></td><td>Paperclip</td><td>General file attachment</td><td>fileTypes, maxFileSize, maxFiles</td></tr>
<tr><td><strong>Image Upload</strong></td><td>Image</td><td>Image-specific upload with preview</td><td>fileTypes, maxFileSize, maxFiles</td></tr>
</tbody>
</table>
<h3>🔧 Advanced Fields (4 types)</h3>
<table>
<thead>
<tr><th>Field Type</th><th>Icon</th><th>Description</th></tr>
</thead>
<tbody>
<tr><td><strong>Rating</strong></td><td>Star</td><td>Star rating selector (1–5)</td></tr>
<tr><td><strong>Signature</strong></td><td>PenLine</td><td>Digital signature pad for e-signatures</td></tr>
<tr><td><strong>Address</strong></td><td>MapPin</td><td>Structured address fields (street, city, state, zip, country)</td></tr>
<tr><td><strong>Hidden</strong></td><td>EyeOff</td><td>Invisible field for tracking (e.g., UTM params, referral source)</td></tr>
</tbody>
</table>
<h3>📐 Layout Elements (4 types)</h3>
<table>
<thead>
<tr><th>Type</th><th>Icon</th><th>Description</th></tr>
</thead>
<tbody>
<tr><td><strong>Heading</strong></td><td>Heading</td><td>Section title for organizing form sections</td></tr>
<tr><td><strong>Paragraph</strong></td><td>AlignJustify</td><td>Informational text block (instructions, disclaimers)</td></tr>
<tr><td><strong>Divider</strong></td><td>Minus</td><td>Visual horizontal separator line</td></tr>
<tr><td><strong>Layout Image</strong></td><td>ImageIcon</td><td>Decorative image element within the form</td></tr>
</tbody>
</table>
<div class="feature-grid">
<div class="feature-card">
<h3>🖱️ Drag-and-Drop Canvas</h3>
<p>Drag field types from the <strong>Field Palette</strong> on the left directly onto the <strong>Canvas</strong>. Fields can be reordered by dragging within the canvas. Each field shows its label, type icon, and a quick preview of its configuration. Select any field to open its <strong>Properties Panel</strong> on the right for detailed editing.</p>
</div>
<div class="feature-card">
<h3>📏 Responsive Width Control</h3>
<p>Each field supports four width options: <strong>Full</strong> (100%), <strong>Two-Thirds</strong> (66%), <strong>Half</strong> (50%), and <strong>Third</strong> (33%). This enables flexible multi-column layouts — for example, place "First Name" and "Last Name" side by side at half width, followed by a full-width "Email" field.</p>
</div>
<div class="feature-card">
<h3>🔀 Conditional Logic</h3>
<p>Make fields show or hide dynamically based on other field values. Each field supports a <strong>Conditional Logic</strong> configuration with: Action (<em>Show</em> or <em>Hide</em>), Logic Type (<em>All conditions</em> or <em>Any condition</em>), and multiple Rules. Each rule references another field's key and applies an operator: <code>equals</code>, <code>notEquals</code>, <code>contains</code>, <code>notContains</code>, <code>greaterThan</code>, <code>lessThan</code>, <code>isEmpty</code>, <code>isNotEmpty</code>.</p>
</div>
<div class="feature-card">
<h3>🌐 Multi-Locale Translations</h3>
<p>Every text element in the form supports multiple languages. For each field, configure <strong>Label</strong>, <strong>Placeholder</strong>, <strong>Description</strong>, and <strong>Error Message</strong> in every configured locale. The form automatically displays the correct language based on the user's locale setting. Option values for select/checkbox/radio fields also support per-locale labels.</p>
</div>
<div class="feature-card">
<h3>📋 Form Templates</h3>
<p>Start from scratch or use the <strong>Template Selector</strong> to begin with a pre-built template. Templates provide common form structures (contact form, survey, registration, etc.) with fields already configured. You can customize any template after selection.</p>
</div>
<div class="feature-card">
<h3>⚙️ Form Settings</h3>
<p>The <strong>Settings Panel</strong> controls form-level behavior: <strong>Require Authentication</strong> (users must log in), <strong>Allow Anonymous</strong> submissions, <strong>Enable CAPTCHA</strong> for bot protection, <strong>Submit Limit</strong> (max submissions per user), <strong>Redirect URL</strong> (post-submit navigation), <strong>Closed Message</strong> (displayed when form is closed), and <strong>Notification Emails</strong> (receive alerts for new submissions).</p>
</div>
</div>
<h2>Form Settings Reference</h2>
<table>
<thead>
<tr><th>Setting</th><th>Type</th><th>Default</th><th>Description</th></tr>
</thead>
<tbody>
<tr><td><strong>Require Auth</strong></td><td>Toggle</td><td>Off</td><td>When enabled, only logged-in users can submit the form</td></tr>
<tr><td><strong>Allow Anonymous</strong></td><td>Toggle</td><td>On</td><td>Allow submissions without user identification</td></tr>
<tr><td><strong>CAPTCHA</strong></td><td>Toggle</td><td>Off</td><td>Add CAPTCHA verification to prevent automated submissions</td></tr>
<tr><td><strong>Submit Limit</strong></td><td>Number</td><td>—</td><td>Maximum number of submissions allowed per user</td></tr>
<tr><td><strong>Redirect URL</strong></td><td>URL</td><td>—</td><td>URL to redirect users after successful submission</td></tr>
<tr><td><strong>Closed Message</strong></td><td>Text</td><td>—</td><td>Message displayed when the form is in "Closed" status</td></tr>
<tr><td><strong>Notify Emails</strong></td><td>Email List</td><td>[]</td><td>Email addresses that receive a notification for each new submission</td></tr>
</tbody>
</table>
<h2>Step-by-Step: Building a Contact Form</h2>
<ol>
<li><strong>Create</strong> a new form from the forms list page.</li>
<li><strong>Open</strong> the form builder at <code>/admin/forms/{id}/builder</code>.</li>
<li><strong>Add Heading</strong>: Drag a "Heading" layout element and set the label to "Contact Us".</li>
<li><strong>Add Name Fields</strong>: Drag two "Text" fields. Set them both to "Half" width. Label them "First Name" and "Last Name". Mark both as required.</li>
<li><strong>Add Email</strong>: Drag an "Email" field at full width. Mark as required.</li>
<li><strong>Add Phone</strong>: Drag a "Phone" field at half width (optional).</li>
<li><strong>Add Subject</strong>: Drag a "Select" field. Add options: "General Inquiry", "Sales", "Support", "Partnership".</li>
<li><strong>Add Conditional Field</strong>: Drag a "Text" field labeled "Company Name". Set conditional logic: <em>Show when "Subject" equals "Partnership"</em>.</li>
<li><strong>Add Message</strong>: Drag a "Textarea" field at full width. Set minLength to 20 characters.</li>
<li><strong>Configure Settings</strong>: Enable CAPTCHA, set notification email to support@company.com.</li>
<li><strong>Add Translations</strong>: Switch to Turkish locale tab and add TR labels for every field.</li>
<li><strong>Preview</strong>: Click the preview button to test the form experience.</li>
<li><strong>Save & Embed</strong>: Save the form, then generate the embed code for your website.</li>
</ol>
<div class="usecase-example">
<h3>Enterprise Use Case: Multi-Step Event Registration</h3>
<p>A global tech conference needs a registration form supporting 3 languages (EN, TR, DE). The marketing team opens the Form Builder. They start with the "Event Registration" template, then customize: add a <strong>Heading</strong> for each section ("Attendee Info", "Session Preferences", "Dietary Requirements"), use <strong>conditional logic</strong> so "Dietary Details" only appears when "Special Dietary Needs" checkbox is checked, add an <strong>Address</strong> field for badge shipping, include a <strong>Signature</strong> field for the terms acceptance, and set a <strong>Hidden</strong> field with the UTM campaign code. Each text element is translated into all 3 languages. The form is set to <strong>Require Authentication</strong> so they can track which registered users signed up, with a <strong>Submit Limit of 1</strong> to prevent duplicates. The <strong>Redirect URL</strong> points to the confirmation page. Upon launch, the form collects 2,400 registrations across all three languages — with conditional logic ensuring the form adapts to each attendee's unique needs.</p>
</div>
</div>