# Solo JavaScript suficiente

Donde Feitio usa scripts, lo que el navegador hace por sí solo y las reglas para no excederse.

## El principio

Feitio usa JavaScript donde mejora la pantalla y no tiene que funcionar sin él. Lo que se mantiene fuera es el exceso: una gran librería para un pequeño efecto, un script en cada página por hábito, toda la pantalla construida en el navegador cuando el servidor la entregaría lista.

## El navegador primero

Antes de escribir un script, comprueba si el navegador ya lo hace. Lo que hace por sí mismo es accesible: teclado, lector de pantalla y foco.

Componente

El navegador hace

el script añade

Caja lateral

la del navegador `popover`: abre, cierra con Esc y un clic fuera

nada

Diálogo

el del navegador `<dialog>`, con `showModal()`

una línea para abrir

Detalles

el del navegador `<details>`

la animación de apertura y cierre

AppShell

—

el encabezado que se oculta al hacer scroll, en móvil

ScrollFade, BackToTop

—

muestra cuando se aplican; desplazamiento suave hacia arriba

StatusOverlay

—

los estados de carga, completado y error

CodeBlock

—

copiar y colores del código

## Reglas

-   **No hay API de navegador mientras el componente se está construyendo.** La página llega lista desde el servidor; el script entra después y solo añade.
-   **La reducción de movimiento aplica también a los scripts:** no hay animación hecha a mano cuando el sistema pide menos movimiento.
-   **Los scripts nunca quitan el teclado ni al lector de pantalla.** Si lo hizo el elemento del navegador, sigue haciéndolo.
-   **Preciso y cercano al usuario:** el script de un componente se envía con él, no en un bundle para todo el sitio.
