Text Inputs
Bootstrap-5-shaped form controls. Uses .lp-form-control as the base class with -sm / -lg size modifiers, .is-invalid / .is-valid validation states on the control itself, and sibling .lp-invalid-feedback / .lp-valid-feedback for messages. Labels use .lp-form-label; helper text uses .lp-form-text.
Basic inputs
Input types
Input sizes
Input with icons
Two Static Icons (Prefix + Suffix)
Use two .lp-input-icon elements for static prefix and suffix icons.
Icon + Action Button
Use .lp-input-icon for the left icon and .lp-input-action for clickable right actions.
Contextual inputs — .lp-form-control-{color}
Validation states — .is-invalid / .is-valid
errorPlease enter a valid email address
check_circleUsername is available
warningPassword is weak, consider adding special characters
infoWe'll send a verification code to this number
Help text & hints
helpUsername must be 3–20 characters long.
lockMust contain at least 8 characters
securityInclude uppercase, lowercase, and numbers
Disabled & readonly
Form layouts — horizontal / inline
Horizontal — .lp-form-horizontal
Inline — .lp-form-inline
CSS reference
| Class | Purpose |
|---|---|
.lp-form-control | Base input / textarea — BS5 unified control class |
.lp-form-select | Native select — BS5 equivalent of .form-select |
.lp-form-control-sm / -lg | Size variants (Launchpad uses sm / md / lg — no xs) |
.lp-form-control-{color} | Tinted border + focus ring (primary / secondary / success / danger / warning / info) |
.lp-form-control-plaintext | Read-only review display — no chrome, preserves rhythm |
.is-invalid / .is-valid | Validation state — lives on the control itself (BS5 convention) |
.is-warning / .is-info | Launchpad-extension validation states |
.lp-invalid-feedback | Error message shown when a sibling control is .is-invalid |
.lp-valid-feedback | Success message for .is-valid |
.lp-warning-feedback / .lp-info-feedback | Feedback for the Launchpad-extension states |
.lp-form-group | Wrapper that groups label + control + feedback |
.lp-form-label | Label above the control |
.lp-form-label-required | Adds a red * after the label |
.lp-form-label-hint | Small inline hint rendered inside the label (e.g. "optional") |
.lp-form-text | Muted helper text below the control |
.lp-form-hints | Flex row pairing a left-aligned hint with a right-aligned counter |
.lp-form-horizontal | Grid: label left / control right. Modifiers: -narrow / -wide / -auto |
.lp-form-inline | Single-line form — collapses to stacked below lg |
.lp-input-wrapper | Absolute-positioned icon / action container around a control |
.lp-input-wrapper-icon-right | Modifier for single trailing icon |
.lp-input-icon | Decorative icon inside .lp-input-wrapper |
.lp-input-action | Clickable trailing button (password toggle, clear, copy) |
data-lp-component="password-toggle" | On .lp-input-wrapper — toggles password/text visibility |
data-lp-component="input-clear" | On .lp-input-wrapper — injects a clear button |
data-lp-component="char-counter" | On .lp-form-group — live character counter |