Form control styles, layout options, and custom components.
The functionality of the Range slider relies on the noUISlider plugin. To ensure proper integration, please include the following CSS and JavaScript files in your document:
For enabling text input content formatting, it is essential to incorporate the Cleave.js plugin in your document:
You can refer to this page as an example of how to implement these plugins effectively.
<!-- Text input -->
<div class="mb-3">
<label for="text-input" class="form-label">Text</label>
<input class="form-control" type="text" id="text-input" value="Artisanal kale">
</div>
<!-- Search input -->
<div class="mb-3">
<label for="search-input" class="form-label">Search</label>
<input class="form-control" type="search" id="search-input" value="How do I shoot web">
</div>
<!-- Email input -->
<div class="mb-3">
<label for="email-input" class="form-label">Email</label>
<input class="form-control" type="email" id="email-input" value="email@example.com">
</div>
<!-- URL Input -->
<div class="mb-3">
<label for="url-input" class="form-label">URL</label>
<input class="form-control" type="url" id="url-input" value="https://getbootstrap.com">
</div>
<!-- Phone Input -->
<div class="mb-3">
<label for="tel-input" class="form-label">Phone</label>
<input class="form-control" type="tel" id="tel-input" value="1-(770)-334-2518">
</div>
<!-- Password Input -->
<div class="mb-3">
<label for="pass-input" class="form-label">Password</label>
<input class="form-control" type="password" id="pass-input" value="mypasswordexample">
</div>
<!-- Textarea -->
<div class="mb-3">
<label for="textarea-input" class="form-label">Textarea</label>
<textarea class="form-control" id="textarea-input" rows="5">Hello World!</textarea>
</div>
<!-- Select -->
<div class="mb-3">
<label for="select-input" class="form-label">Select</label>
<select class="form-select" id="select-input">
<option>Choose option...</option>
<option>Option item 1</option>
<option>Option item 2</option>
<option>Option item 3</option>
</select>
</div>
<!-- Multiselect -->
<div class="mb-3">
<label for="multiselect-input" class="form-label">Multiselect</label>
<select class="form-select" id="multiselect-input" size="3" multiple>
<option>Option item 1</option>
<option>Option item 2</option>
<option>Option item 3</option>
<option>Option item 4</option>
<option>Option item 5</option>
<option>Option item 6</option>
</select>
</div>
<!-- File input -->
<div class="mb-3">
<label for="file-input" class="form-label">File</label>
<input class="form-control" type="file" id="file-input">
</div>
<!-- Number input -->
<div class="mb-3">
<label for="number-input" class="form-label">Number</label>
<input class="form-control" type="number" id="number-input" value="37">
</div>
<!-- Datalist -->
<div class="mb-3">
<label for="datalist-input" class="form-label">Datalist</label>
<input type="text" class="form-control" list="datalist-options" id="datalist-input" placeholder="Type to search...">
<datalist id="datalist-options">
<option value="San Francisco">
<option value="New York">
<option value="Seattle">
<option value="Los Angeles">
<option value="Chicago">
</datalist>
</div>
<!-- Range input -->
<div class="mb-3">
<label for="range-input" class="form-label">Range</label>
<input class="form-control" type="range" id="range-input">
</div>
<!-- Color input -->
<div class="mb-3">
<label for="color-input" class="form-label">Color</label>
<input class="form-control form-control-color" type="color" id="color-input" value="#ed5050">
</div>
<!-- Floating label: Text input -->
<div class="form-floating mb-3">
<input class="form-control" type="text" id="fl-text" placeholder="Your name">
<label for="fl-text">Your name</label>
</div>
<!-- Floating label: Select -->
<div class="form-floating mb-3">
<select class="form-select" id="fl-select">
<option selected>Argentina</option>
<option>Belgium</option>
<option>France</option>
<option>Germany</option>
<option>Japan</option>
<option>Spain</option>
<option>USA</option>
</select>
<label for="fl-select">Your country</label>
</div>
<!-- Floating label: Textarea -->
<div class="form-floating">
<textarea class="form-control" id="fl-textarea" style="height: 120px;" placeholder="Your message"></textarea>
<label for="fl-textarea">Your message</label>
</div>
<!-- Password visibility toggle -->
<div class="mb-3">
<label class="form-label" for="pass-visibility">Password</label>
<div class="password-toggle">
<input class="form-control" type="password" id="pass-visibility" value="hidden@password">
<label class="password-toggle-btn" aria-label="Show/hide password">
<input class="password-toggle-check" type="checkbox">
<span class="password-toggle-indicator"></span>
</label>
</div>
</div>
<!-- Stacked checkboxes -->
<div class="form-check">
<input class="form-check-input" type="checkbox" id="ex-check-1">
<label class="form-check-label" for="ex-check-1">Check this checkbox</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" id="ex-check-2" checked>
<label class="form-check-label" for="ex-check-2">Uncheck this checkbox</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" id="ex-check-3" disabled>
<label class="form-check-label" for="ex-check-3">Disabled checkbox</label>
</div>
<!-- Inline checkboxes -->
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="ex-check-4">
<label class="form-check-label" for="ex-check-4">Check this checkbox</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="ex-check-5" checked>
<label class="form-check-label" for="ex-check-5">Uncheck this checkbox</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="ex-check-6" disabled>
<label class="form-check-label" for="ex-check-6">Disabled checkbox</label>
</div>
<!-- Stacked radio buttons -->
<div class="form-check">
<input class="form-check-input" type="radio" id="ex-radio-1" name="radio">
<label class="form-check-label" for="ex-radio-1">Toggle this radio</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" id="ex-radio-2" name="radio" checked>
<label class="form-check-label" for="ex-radio-2">Toggle this radio</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" id="ex-radio-3" name="radio" disabled>
<label class="form-check-label" for="ex-radio-3">Disabled radio</label>
</div>
<!-- Inline radio buttons -->
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="ex-radio-4" name="radio2">
<label class="form-check-label" for="ex-radio-4">Toggle this radio</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="ex-radio-5" name="radio2" checked>
<label class="form-check-label" for="ex-radio-5">Toggle this radio</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="ex-radio-6" name="radio2" disabled>
<label class="form-check-label" for="ex-radio-6">Disabled radio</label>
</div>
<!-- Switch -->
<div class="form-check form-switch">
<input type="checkbox" class="form-check-input" id="customSwitch1">
<label class="form-check-label" for="customSwitch1">Toggle this switch element</label>
</div>
<!-- Checked switch -->
<div class="form-check form-switch">
<input type="checkbox" class="form-check-input" id="customSwitch2" checked>
<label class="form-check-label" for="customSwitch2">Toggle this switch element</label>
</div>
<!-- Disabled switch -->
<div class="form-check form-switch">
<input type="checkbox" class="form-check-input" id="customSwitch3" disabled>
<label class="form-check-label" for="customSwitch3">Disabled switch element</label>
</div>
<!-- Theme mode switch. Can be used oly once on the page! -->
<div class="form-check form-switch mode-switch" data-bs-toggle="mode">
<input type="checkbox" class="form-check-input" id="theme-mode">
<label for="theme-mode" class="form-check-label">
<i class="ai-sun fs-lg"></i>
</label>
<label for="theme-mode" class="form-check-label">
<i class="ai-moon fs-lg"></i>
</label>
</div>
<!-- Color radio buttons with binded label. Change input type to checkbox to siwth to multiselect behavior. -->
<div class="h6">
Color:
<span class="text-body-secondary fw-normal ms-1" id="colorOption">
Gray marble
</span>
</div>
<div class="d-flex">
<div class="me-2 mb-2">
<input type="radio" class="btn-check" id="color1" name="color" data-binded-label="colorOption" value="Gray marble" checked>
<label for="color1" class="btn btn-icon btn-sm btn-outline-secondary rounded-circle">
<span class="d-block bg-size-cover bg-position-center rounded-circle" style="width: 1.5rem; height: 1.5rem; background-color: #c0c0c0; background-image: url(assets/img/shop/pattern/marble.jpg);"></span>
</label>
</div>
<div class="me-2 mb-2">
<input type="radio" class="btn-check" id="color2" name="color" data-binded-label="colorOption" value="Soft beige">
<label for="color2" class="btn btn-icon btn-sm btn-outline-secondary rounded-circle">
<span class="d-block rounded-circle" style="width: 1.5rem; height: 1.5rem; background-color: #d9c9a1;"></span>
</label>
</div>
</div>
<!-- Small color radio button example -->
<input type="radio" class="btn-check" id="color" name="color" value="Soft beige">
<label for="color" class="btn btn-icon btn-xs btn-outline-secondary rounded-circle">
<span class="d-block rounded-circle" style="width: .625rem; height: .625rem; background-color: #d9c9a1;"></span>
</label>
<!-- Radio buttons with text inside. Ideal for size, weight selection -->
<div class="d-flex">
<div class="me-3">
<input type="radio" class="btn-check" id="weight1" name="weight" value="140 g" checked>
<label for="weight1" class="btn btn-outline-secondary px-2">
<span class="mx-1">140 g</span>
</label>
</div>
<div class="me-3">
<input type="radio" class="btn-check" id="weight2" name="weight" value="260 g">
<label for="weight2" class="btn btn-outline-secondary px-2">
<span class="mx-1">260 g</span>
</label>
</div>
</div>
<!-- Count input naked variant -->
<div class="count-input">
<button type="button" class="btn btn-icon fs-xl" data-decrement>-</button>
<input type="number" class="form-control" value="1" readonly>
<button type="button" class="btn btn-icon fs-xl" data-decrement>+</button>
</div>
<!-- Count input naked variant -->
<div class="count-input bg-gray rounded-3">
<button type="button" class="btn btn-icon btn-lg fs-xl" data-decrement>-</button>
<input type="number" class="form-control" value="2" readonly>
<button type="button" class="btn btn-icon btn-lg fs-xl" data-decrement>+</button>
</div>
<!-- Range slider: Two handles + inputs -->
<div class="range-slider" data-start-min="280" data-start-max="720" data-min="0" data-max="1000" data-step="1" data-tooltip-prefix="$">
<div class="range-slider-ui"></div>
<div class="d-flex">
<div class="d-flex align-items-center w-50">
<label for="rs-min" class="form-label fs-xs me-2 mb-0">From</label>
<input type="number" id="rs-min" class="form-control form-control-sm range-slider-value-min" style="max-width: 6rem;">
</div>
<div class="d-flex align-items-center w-50">
<label for="rs-max" class="form-label fs-xs me-2 mb-0">To</label>
<input type="number" id="rs-max" class="form-control form-control-sm range-slider-value-max" style="max-width: 6rem;">
</div>
</div>
</div>
<!-- Range slider: With value scale (pips) -->
<div class="range-slider" data-start-min="250" data-start-max="680" data-min="0" data-max="1000" data-step="1" data-pips="true" data-tooltip-prefix="$">
<div class="range-slider-ui"></div>
<div class="d-flex">
<div class="d-flex align-items-center w-50">
<label for="rs-min" class="form-label fs-xs me-2 mb-0">From</label>
<input type="number" id="rs-min" class="form-control form-control-sm range-slider-value-min" style="max-width: 6rem;">
</div>
<div class="d-flex align-items-center w-50">
<label for="rs-max" class="form-label fs-xs me-2 mb-0">To</label>
<input type="number" id="rs-max" class="form-control form-control-sm range-slider-value-max" style="max-width: 6rem;">
</div>
</div>
</div>
<!-- Range slider: One handle + no inputs -->
<div class="range-slider" data-start-min="450" data-min="0" data-max="1000" data-step="1" data-tooltip-prefix="$">
<div class="range-slider-ui"></div>
<input type="hidden" class="form-control range-slider-value-min">
</div>
<!-- Large input -->
<div class="mb-3">
<label for="input-lg" class="form-label fs-base">Large input</label>
<input type="text" id="input-lg" class="form-control form-control-lg" placeholder="Large input placeholder">
</div>
<!-- Normal input -->
<div class="mb-3">
<label for="input-md" class="form-label">Normal input</label>
<input type="text" id="input-md" class="form-control" placeholder="Normal input placeholder">
</div>
<!-- Small input -->
<div class="mb-3">
<label for="input-sm" class="form-label fs-xs">Small input</label>
<input type="text" id="input-sm" class="form-control form-control-sm" placeholder="Small input placeholder">
</div>
<!-- Large select -->
<div class="mb-3">
<label for="select-lg" class="form-label fs-base">Large select</label>
<select id="select-lg" class="form-select form-select-lg">
<option>Large select option</option>
<option>Option item 1</option>
<option>Option item 2</option>
<option>Option item 3</option>
</select>
</div>
<!-- Normal select -->
<div class="mb-3">
<label for="select-md" class="form-label">Normal select</label>
<select id="select-md" class="form-select">
<option>Normal select option</option>
<option>Option item 1</option>
<option>Option item 2</option>
<option>Option item 3</option>
</select>
</div>
<!-- Small select -->
<div class="mb-3">
<label for="select-sm" class="form-label fs-xs">Small select</label>
<select id="select-sm" class="form-select form-select-sm">
<option>Small select option</option>
<option>Option item 1</option>
<option>Option item 2</option>
<option>Option item 3</option>
</select>
</div>
<!-- Readonly input -->
<input class="form-control" type="text" placeholder="Readonly input here..." readonly>
<!-- Disabled input -->
<input class="form-control" type="text" placeholder="Disabled input here..." disabled>
<!-- Disabled select -->
<select class="form-select" disabled>
<option>Disabled select here...</option>
<option>Option item 1</option>
<option>Option item 2</option>
<option>Option item 3</option>
</select>
<!-- Inline form -->
<form class="row row-cols-sm-auto g-3 align-items-center">
<div class="col-12">
<input type="text" id="inline-form-input" class="form-control" placeholder="Full name">
</div>
<div class="col-12">
<select id="inline-form-select" class="form-select">
<option value="">Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</div>
<div class="col-12">
<div class="form-check">
<input type="checkbox" id="inline-form-check" class="form-check-input">
<label for="inline-form-check" class="form-check-label">Remember me</label>
</div>
</div>
<div class="col-12">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
<!-- Form help text -->
<div class="mb-3">
<label for="help-text-input" class="form-label">Password</label>
<input class="form-control" type="password" id="help-text-input" placeholder="Your password here">
<div class="form-text">Your password must be 8-20 characters long, contain letters and numbers, and must not contain spaces, special characters, or emoji.</div>
</div>
<!-- Forms validation: status text -->
<form class="needs-validation" novalidate>
<div class="row">
<div class="col-md-4 mb-3">
<label for="validationCustom01" class="form-label">First name</label>
<input class="form-control" type="text" id="validationCustom01" placeholder="First name" value="John" required>
<div class="valid-feedback">Looks good!</div>
</div>
<div class="col-md-4 mb-3">
<label for="validationCustom02" class="form-label">Last name</label>
<input class="form-control" type="text" id="validationCustom02" placeholder="Last name" value="Doe" required>
<div class="valid-feedback">Looks good!</div>
</div>
<div class="col-md-4 mb-3">
<label for="validationCustomUsername" class="form-label">Username</label>
<input class="form-control" type="text" id="validationCustomUsername" placeholder="Username" required>
<div class="invalid-feedback">Please choose a username.</div>
<div class="valid-feedback">Looks good!</div>
</div>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<label for="validationCustom03" class="form-label">City</label>
<select class="form-select" id="validationCustom03" required>
<option value="">Choose city...</option>
<option value="Dallas">Dallas</option>
<option value="Houston">Houston</option>
<option value="Los Angeles">Los Angeles</option>
<option value="Miami">Miami</option>
<option value="New York">New York</option>
</select>
<div class="invalid-feedback">Please provide a valid city.</div>
<div class="valid-feedback">Looks good!</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationCustom04" class="form-label">State</label>
<select class="form-select" id="validationCustom04" required>
<option value="">Choose state...</option>
<option value="Arizona">Arizona</option>
<option value="Colorado">Colorado</option>
<option value="Florida">Florida</option>
<option value="Indiana">Indiana</option>
<option value="Kentucky">Kentucky</option>
<option value="Texas">Texas</option>
</select>
<div class="invalid-feedback">Please provide a valid state.</div>
<div class="valid-feedback">Looks good!</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationCustom05" class="form-label">Zip</label>
<input class="form-control" type="text" id="validationCustom05" placeholder="Zip" required>
<div class="invalid-feedback">Please provide a valid zip.</div>
<div class="valid-feedback">Looks good!</div>
</div>
</div>
<div class="mb-3">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="invalidCheck" required>
<label class="form-check-label" for="invalidCheck">Agree to terms and conditions</label>
<div class="invalid-feedback">You must agree before submitting.</div>
</div>
</div>
<button class="btn btn-primary" type="submit">Submit Form</button>
</form>
<!-- Forms validation: status tooltips -->
<form class="needs-validation" novalidate>
<div class="row">
<div class="col-md-4 mb-3">
<label for="validationTooltip01" class="form-label">First name</label>
<input class="form-control" type="text" id="validationTooltip01" placeholder="First name" value="John" required>
<div class="valid-tooltip">Looks good!</div>
</div>
<div class="col-md-4 mb-3">
<label for="validationTooltip02" class="form-label">Last name</label>
<input class="form-control" type="text" id="validationTooltip02" placeholder="Last name" value="Doe" required>
<div class="valid-tooltip">Looks good!</div>
</div>
<div class="col-md-4 mb-3">
<label for="validationTooltipUsername" class="form-label">Username</label>
<input class="form-control" type="text" id="validationTooltipUsername" placeholder="Username" required>
<div class="invalid-tooltip">Please choose a username.</div>
<div class="valid-tooltip">Looks good!</div>
</div>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<label for="validationTooltip03" class="form-label">City</label>
<select class="form-select" id="validationTooltip03" required>
<option value="">Choose city...</option>
<option value="Dallas">Dallas</option>
<option value="Houston">Houston</option>
<option value="Los Angeles">Los Angeles</option>
<option value="Miami">Miami</option>
<option value="New York">New York</option>
</select>
<div class="invalid-tooltip">Please provide a valid city.</div>
<div class="valid-tooltip">Looks good!</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationTooltip04" class="form-label">State</label>
<select class="form-select" id="validationTooltip04" required>
<option value="">Choose state...</option>
<option value="Arizona">Arizona</option>
<option value="Colorado">Colorado</option>
<option value="Florida">Florida</option>
<option value="Indiana">Indiana</option>
<option value="Kentucky">Kentucky</option>
<option value="Texas">Texas</option>
</select>
<div class="invalid-tooltip">Please provide a valid state.</div>
<div class="valid-tooltip">Looks good!</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationTooltip05" class="form-label">Zip</label>
<input class="form-control" type="text" id="validationTooltip05" placeholder="Zip" required>
<div class="invalid-tooltip">Please provide a valid zip.</div>
<div class="valid-tooltip">Looks good!</div>
</div>
</div>
<div class="mb-3">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="invalidCheck01" required>
<label class="form-check-label" for="invalidCheck01">Agree to terms and conditions</label>
<div class="invalid-tooltip">You must agree before submitting.</div>
</div>
</div>
<button class="btn btn-primary" type="submit">Submit Form</button>
</form>
<!-- Format: Credit card number -->
<div class="mb-3">
<label for="cardFormat">Card number</label>
<input type="text" class="form-control" id="cardFormat" data-format='{"creditCard": true}' placeholder="Enter credit card number">
<div class="input-group-text py-0">
<div class="credit-card-icon"></div>
</div>
</div>
<!-- Format: Phone -->
<div class="mb-3">
<label for="phoneFormat">Phone</label>
<input type="tel" class="form-control" id="phoneFormat" data-format='{"numericOnly": true, "delimiters": ["+1 ", " ", " "], "blocks": [0, 3, 3, 2]}' placeholder="+1 ___ ___ __">
</div>
<!-- Format: Date long -->
<div class="mb-3">
<label for="dateFormat">Date</label>
<input type="text" class="form-control" id="dateFormat" data-format='{"date": true, "delimiter": "-", "datePattern": ["Y", "m", "d"]}' placeholder="yyyy-mm-dd">
</div>
<!-- Format: Date short -->
<div class="mb-3">
<label for="dateShortFormat">Date short</label>
<input type="text" class="form-control" id="dateShortFormat" data-format='{"date": true, "datePattern": ["m", "y"]}' placeholder="mm/yy">
</div>
<!-- Format: Time -->
<div class="mb-3">
<label for="timeFormat">Time</label>
<input type="text" class="form-control" id="timeFormat" data-format='{"time": true, "timePattern": ["h", "m"]}' placeholder="hh:mm">
</div>
<!-- Format: Custom blocks -->
<div class="mb-3">
<label for="customFormat">Custom blocks</label>
<input type="text" class="form-control" id="customFormat" data-format='{"blocks": [4, 3, 3, 4, 2], "delimiters": [".", " ", "/", "-"]}' placeholder="blocks:[4, 3, 3, 4, 2], delimiters: ['.', ' ', '/', '-']">
</div>
<!-- Format: Prefix + uppercase -->
<div class="mb-3">
<label for="prefixFormat">Prefix + uppercase</label>
<input type="text" class="form-control" id="prefixFormat" data-format='{"prefix": "PREFIX", "delimiter": "-", "blocks": [6, 4, 5, 3], "uppercase": true}'>
</div>