Input

Input es un campo de texto de una línea. Un input real e invisible es dueño de la edición, el foco, el IME, el clipboard y la accesibilidad, y el canvas dibuja el vidrio, el texto, el caret y la selección.

Un campo de texto real, dibujado en el canvas.

Uso

<script lang="ts">
  import { Input } from 'essentia-ui'

  let email = $state('')
</script>

<Input
  bind:value={email}
  label="Email"
  type="email"
  placeholder="email@ejemplo.com"
  width={320}
  onsubmit={(value) => send(value)}
/>

label es obligatorio: es el nombre accesible del campo.

Costo

Sin foco, 0 renders en reposo. Con foco, el parpadeo del caret redibuja la escena unas dos veces por segundo, y caretBlink={false} lo apaga. Necesita EssentiaRoot.

Referencia de props

PropTipoDefaultDescripción
valuestring''Valor del campo. Con bind:value, la fuente de verdad del consumidor.
labelstringrequeridoNombre accesible del campo (aria-label del ghost). Obligatorio: sin él el control no tiene nombre.
placeholderstring''Texto que se dibuja con el campo vacío.
typeInputType'text'Tipo del campo: define el teclado virtual y el autofill. password enmascara el texto. email usa un ghost text con inputmode="email": el <input type="email"> no expone la selección.
namestring—name del ghost (autofill y gestores de contraseñas).
autocompleteHTMLInputAttributes['autocomplete']'off'autocomplete del ghost.
inputmodeHTMLInputAttributes['inputmode']—inputmode del ghost: qué teclado virtual se abre.
enterkeyhintHTMLInputAttributes['enterkeyhint']—enterkeyhint del ghost: la etiqueta de Enter en el teclado virtual.
autocapitalizeHTMLInputAttributes['autocapitalize']—autocapitalize del ghost (teclados virtuales).
maxlengthnumber—Largo máximo en unidades UTF-16 (maxlength del ghost).
requiredbooleanfalserequired del ghost (lo anuncia el lector de pantalla).
disabledbooleanfalseSin foco ni edición; texto y vidrio atenuados.
readonlybooleanfalseEnfocable y seleccionable, pero no editable (sin caret).
invalidbooleanfalseValor inválido: aria-invalid en el ghost y tinte de error en el vidrio.
tabindexnumber—Posición en el orden de Tab (tabindex del ghost). Por defecto, el orden de montaje.
widthnumber320Ancho en píxeles CSS.
heightnumber48Alto en píxeles CSS.
radiusnumberheight / 2Radio de esquinas en píxeles CSS.
fontSizenumber17Tamaño de fuente en píxeles CSS.
fontstringtypography.font del tema (sin ella, la fuente latina por defecto de troika)URL de la fuente del texto (.ttf, .otf, .woff), como <Text font>. El ghost carga la misma, para que el caret nativo (y la ventana del IME) caiga sobre el dibujado.
presetGlassPresetNameel material field del tema (preset 'frosted' con blur 16)Preset del <Glass> de fondo. Reemplaza entero al material field del tema: no se mezcla con sus overrides.
caretBlinkbooleantrueParpadeo del caret con foco. Cada cambio de fase es un frame completo (aprox. 2 renders/s mientras el campo tiene foco). Con prefers-reduced-motion el caret queda fijo.
xnumber0Posición X del centro.
ynumber0Posición Y del centro.
znumber0Z del vidrio (texto, caret y selección van apenas delante).
oninputHTMLInputAttributes['oninput']—input nativo del ghost (después de actualizar value).
onchangeHTMLInputAttributes['onchange']—change nativo del ghost (al confirmar el valor: blur o Enter).
onfocusHTMLInputAttributes['onfocus']—focus nativo del ghost.
onblurHTMLInputAttributes['onblur']—blur nativo del ghost.
onkeydownHTMLInputAttributes['onkeydown']—keydown nativo del ghost. Un preventDefault() evita onsubmit.
onsubmit(value: string) => void—Enter fuera de una composición IME, con el valor actual.

Anterior: Card

Siguiente: Flex, Box y Align