# Campos de entrada

Un control para cada tipo de entrada: el tipo indica al navegador el teclado, el selector y la comprobación.

Cada control es un elemento nativo: el navegador se encarga del estado, el teclado, la validación y el envío, con o sin JavaScript. LUZ no marca un campo como no válido: añade `.luz-input--error`, `aria-invalid="true"` y el texto del error. Un campo envuelve un control en `.luz-field`:

Field wrapper markup
```html
<div class="luz-field">
  <label class="luz-field__label" for="name">Project name</label>
  <input class="luz-input" id="name" type="text" aria-describedby="name-hint name-error">
  <div class="luz-field__helper" id="name-hint">Shown on the dashboard.</div>
  <div class="luz-field__error" id="name-error"><span class="u-sr-only">Error: </span>Use letters, numbers and dashes only.</div>
</div>
```

### Texto
Un campo de una línea para una respuesta corta que no puedes enumerar de antemano, como un nombre.

```html
<input class="luz-input" id="name" type="text" aria-describedby="name-hint">
```

### Correo electrónico
Un campo para una dirección de correo electrónico: el navegador comprueba su forma y los teléfonos muestran la arroba.

```html
<input class="luz-input" id="email" type="email" autocomplete="email" required aria-describedby="email-hint">
```

### Contraseña
Un campo que oculta lo que se escribe, para una contraseña u otro secreto.

```html
<input class="luz-input" id="password" type="password" autocomplete="current-password" minlength="8" required aria-describedby="password-hint">
```

### Búsqueda
Un campo de texto para las palabras que se buscan, con una tecla de búsqueda en los teclados de teléfono y un botón para borrar en algunos navegadores.

```html
<form role="search">
  <div class="luz-field">
    <label class="luz-field__label" for="search">Search the docs</label>
    <input class="luz-input" id="search" type="search" name="q" enterkeyhint="search" aria-describedby="search-hint">
    <div class="luz-field__helper" id="search-hint">Search by name or topic.</div>
  </div>
  <button type="submit">Search</button>
</form>
```

### Teléfono
Un campo para un número de teléfono: los teléfonos muestran un teclado numérico y el navegador no comprueba ningún formato.

```html
<input class="luz-input" id="tel" type="tel" autocomplete="tel" aria-describedby="tel-hint">
```

### URL
Un campo para una dirección web: el navegador comprueba que lleve un esquema como https:// y los teléfonos muestran una tecla de barra.

```html
<input class="luz-input" id="url" type="url" autocomplete="url" placeholder="https://example.com" aria-describedby="url-hint">
```

### Número
Un campo para una cantidad que se cuenta o se ajusta por pasos, con botones de incremento y una comprobación de rango.

```html
<input class="luz-input" id="number" type="number" min="1" max="10" step="1" value="1" aria-describedby="number-hint">
```

### Fecha
Un campo para una fecha del calendario, con el selector propio del navegador. El valor es siempre año-mes-día.

```html
<input class="luz-input" id="date" type="date" min="2026-01-01" max="2026-12-31" aria-describedby="date-hint">
```

### Hora
Un campo para una hora del día, en el reloj de 12 o 24 horas del lector, como horas y minutos.

```html
<input class="luz-input" id="time" type="time" value="09:00" aria-describedby="time-hint">
```

### Fecha y hora
Un campo para un día y una hora juntos. El valor no lleva zona horaria.

```html
<input class="luz-input" id="datetime-local" type="datetime-local" min="2026-01-01T08:00" aria-describedby="datetime-local-hint">
```

### Mes
Un campo para un mes y un año, como la caducidad de una tarjeta. El valor es año-mes.

```html
<input class="luz-input" id="month" type="month" min="2026-01" max="2026-12" placeholder="YYYY-MM" pattern="[0-9]{4}-[0-9]{2}" aria-describedby="month-hint">
```

### Semana
Un campo para una semana de un año, como 2026-W24, para planificar por semanas.

```html
<input class="luz-input" id="week" type="week" min="2026-W01" max="2026-W52" placeholder="YYYY-Www" pattern="[0-9]{4}-W[0-9]{2}" aria-describedby="week-hint">
```

### Color
Una muestra que abre el selector de color del sistema. El valor es un color hexadecimal, #rrggbb.

```html
<input class="luz-input" id="color" type="color" value="#0066cf">
```

### Archivo
Un botón que abre el selector de archivos del sistema y el nombre del archivo elegido.

```html
<form method="post" enctype="multipart/form-data">
  <div class="luz-field">
    <label class="luz-field__label" for="file">Attachment</label>
    <input class="luz-input" id="file" type="file" accept=".pdf,.png" aria-describedby="file-hint">
    <div class="luz-field__helper" id="file-hint">PDF or PNG, up to 5 MB.</div>
  </div>
  <button type="submit">Upload</button>
</form>
```

### Rango
Un deslizador para un valor en una escala, donde la posición del control importa más que el número exacto.

```html
<div class="luz-field">
  <label class="luz-field__label" for="volume">Volume <output class="luz-output" id="volume-out" for="volume">50</output></label>
  <input class="luz-input" id="volume" type="range" min="0" max="100" value="50">
</div>
```

### Área de texto
Un campo para texto de más de una línea, como un mensaje o una descripción.

```html
<textarea class="luz-input luz-input--textarea" id="textarea" rows="4" maxlength="500" aria-describedby="textarea-hint"></textarea>
```

### Problemas conocidos
Ninguno conocido.
