Input
single-line text entry. quiet at rest, with a clear focus ring and gentle semantic states.
Usage
Single-line text entry. Quiet at rest, with a clear focus ring and gentle semantic states. A field is a label plus an input: the label is not optional, and the hint carries anything the user needs before they type.
<div class="lucent-text-input lucent-text-input--md">
<label class="lucent-text-input__label typography-caption" for="ti-163">Work email</label>
<div class="lucent-text-input__wrapper">
<input id="ti-163" type="text" placeholder="studio@designfoundry.co" aria-describedby="ti-163-msg" />
</div>
<span class="lucent-text-input__message" id="ti-163-msg">we'll only use this for your beta invite.</span>
</div><lucent-text-input placeholder="studio@designfoundry.co" [(ngModel)]="email"> <span lucentLabel>Work email</span> <span lucentHint>we'll only use this for your beta invite.</span> </lucent-text-input>
In Angular, label, hint and error are projected content rather than inputs. The field
implements ControlValueAccessor, so ngModel and reactive forms set its value and disabled
state. In HTML, focus and filled states are pure CSS (:focus-within, :placeholder-shown),
so a plain <input> inside the wrapper needs no script.
States
A filled value, or an error message that switches the field to the error styling and sets
aria-invalid.
Prefix icon
<lucent-text-input placeholder="search the system"> <span lucentLabel>Search</span> <lucent-icon lucentPrefix name="search" size="sm" /> </lucent-text-input>
Clearable
With clearable, a clear button appears once the field has a value.
Playground
Do & Don't
Always pair a field with a visible label.
Use the placeholder as the label; it disappears the moment someone types.
Write errors that say how to fix the problem, not just that one exists.
Show a generic "Invalid input".
Add a prefix icon only when it aids recognition: search, email, a lock.
Decorate every field with an icon; it turns into noise.
Using it
API
Slots
Theming
Field height, border, the focus ring and every semantic state colour flow from these tokens. Override the error and success roles to match your product's validation language.