Inputs
TextField
Styled text input with label, helper text, error state and leading and trailing slots.
<script>
import { TextField } from "@codeatlasdev/ui";
let email = $state("");
</script>
<TextField label="Email" type="email" bind:value={email} />
An error replaces the description and is announced to assistive tech. On touch devices the input text stays at 16px or more so iOS Safari does not zoom on focus. Native input attributes (maxlength, inputmode, data-*, onkeydown, onfocus…) are spread on the <input>, and bind:ref gives you the element. For an inline field whose label is implied visually, set hideLabel (the label stays for screen readers) or pass aria-label without label. Wrapper components such as MaskedField, MoneyInput and PhoneField forward these props to TextField.
Default
Basic text inputs with a label.
Reference #056 · Pick in the gallery
Code
With icons
leading and trailing snippets. Interactive trailing content, like a reveal button, must be a real button with its own label.
Reference #057 · Pick in the gallery
Code
States
Helper text, error, required, read-only, disabled and the small size.
3–20 characters, letters and underscores only.
Please enter a valid email address.
Reference #058 · Pick in the gallery
Code
Hidden label
hideLabel keeps the label for assistive tech only; maxlength and ref reach the native input.
Reference #389 · Pick in the gallery
Code
Props
| Prop | Type | Default | Description |
|---|---|---|---|
label | string | – | Label text. |
hideLabel | boolean | false | Renders the label with `.ca-sr-only`: read by screen readers, not shown. |
placeholder | string | '' | Input placeholder. |
value | string | '' | Bindable input value. |
type | string | 'text' | HTML input type. |
error | string | – | Validation error message. Puts the field in the error state. |
description | string | – | Non-error hint shown below the field. |
helperText | string | – | Deprecated alias of description. |
disabled | boolean | false | Disables the input. |
required | boolean | false | Marks the field as required. |
readonly | boolean | false | Makes the input read-only. |
autocomplete | HTMLInputAttributes['autocomplete'] | – | Native autocomplete hint. |
name | string | – | Native name, for form submission. |
size | 'sm' | 'md' | 'md' | Field height. |
leading | Snippet | – | Icon or element before the input. |
trailing | Snippet | – | Icon or element after the input. |
skeleton | boolean | false | Loading placeholder with the exact size of the loaded field (disabled, `aria-busy`). See Skeleton. |
class | string | – | Extra classes on the root. |
ref | HTMLInputElement | null | – | Bindable native input element. |
oninput | (value: string) => void | – | Called on every keystroke with the new value. |
onchange | (value: string) => void | – | Called when the value is committed (blur or Enter). |
onfocus | (e: FocusEvent) => void | – | Called when the input gains focus. |
onblur | (e: FocusEvent) => void | – | Called when the input loses focus. |