Forms
<form class="card" method="POST" enctype="multipart/form-data">
<div class="card-content">
<div class="row">
<div class="col-md-6 form-group">
<label>Text Input</label>
<input type="text" class="form-control" placeholder="Name">
</div>
<div class="col-md-6 form-group">
<label>Email</label>
<input type="email" class="form-control" placeholder="Email">
</div>
</div>
<div class="row">
<div class="col-md-4 form-group">
<label>Password</label>
<input type="password" class="form-control">
</div>
<div class="col-md-4 form-group">
<label>Select (Static)</label>
<select class="form-control">
<option>Option 1</option>
<option>Option 2</option>
</select>
</div>
<div class="col-md-4 form-group">
<label>Select (Remote Data)</label>
<select class="form-control" data-role="select" data-source="data/options.json" data-source-method="GET" data-source-params="id=1">
<option value="">Loading...</option>
</select>
</div>
</div>
<div class="row">
<div class="col-md-6 form-group">
<label>Fancy Select</label>
<select id="website-fancy-select" class="form-control">
<option value="">Choose a Country...</option>
<option value="US">United States</option>
<option value="UK">United Kingdom</option>
<option value="AF">Afghanistan</option>
</select>
</div>
<div class="col-md-6 form-group">
<label>Multiple Fancy Select</label>
<select id="website-multi-select" class="form-control" multiple>
<option value="US">United States</option>
<option value="UK">United Kingdom</option>
<option value="AF" selected>Afghanistan</option>
<option value="AX">Aland Islands</option>
<option value="AL">Albania</option>
<option value="DZ" selected>Algeria</option>
</select>
</div>
</div>
<div class="form-group">
<label>Textarea</label>
<textarea class="form-control" rows="3"></textarea>
</div>
<div class="form-group">
<label>Profile Picture (Single File Input)</label>
<div class="file-input-wrapper">
<label class="file-label">
Select Photo
<input type="file" name="profile_picture" data-role="file">
</label>
<div class="file-preview"></div>
</div>
</div>
<div class="form-group">
<label class="switch">
<input type="checkbox">
<span class="slider"></span>
</label>
<label style="display:inline">Toggle Switch</label>
</div>
<div class="form-group">
<label>Radio Group</label>
<div>
<input type="radio" name="radio" id="r1" checked> <label for="r1" style="display:inline">Option 1</label>
<input type="radio" name="radio" id="r2"> <label for="r2" style="display:inline">Option 2</label>
</div>
</div>
<div class="form-group">
<label>Checkbox Group</label>
<div>
<input type="checkbox" id="c1"> <label for="c1" style="display:inline">Check 1</label>
<input type="checkbox" id="c2"> <label for="c2" style="display:inline">Check 2</label>
</div>
</div>
</div>
<div class="card-footer">
<button type="submit" class="btn primary">Submit</button>
<button type="reset" class="btn secondary">Reset</button>
</div>
</form>
Usage Reference
FrankUI forms support a wide range of utility attributes and styling extensions to handle layouts, states, sizing, and integrations.
| Feature | Class / Attribute | Usage Description |
|---|---|---|
| Base Input styling | .form-control | Applies standard margins, borders, backgrounds, colors, and unified focus outlines to inputs, selects, and textareas. |
| Input Sizing | .form-control-lg / .form-control-sm | Applies large and compact sizes to inputs respectively by modifying padding, fonts, and corner radius. |
| Validation States | aria-invalid="true" / "false" | Modifies borders, focus outlines, and appends status indicator icons (error badge or success checkmark) directly inside input fields. |
| Prepend / Append Groups | data-prepend-text="..." data-append-text="..." |
Declaratively wraps the target input inside an inline prepended or appended block, rendering icons or symbols adjacent to inputs automatically. |
| Clear Button | data-btn-clear="true" | Appends a click-to-clear icon button (×) inside the text input, clearing text values and triggering filters automatically. |
| Form Group Wrapper | .form-group | Acts as a standard vertical margin spacer wrapper for labels, fields, and helper text inputs. |