# JavaScript na medida

Onde o Feitio usa script, o que o navegador já faz sozinho, e as regras para não exagerar.

## O princípio

O Feitio usa JavaScript onde ele deixa a tela melhor, e não precisa funcionar sem ele. O que não entra é o excesso: biblioteca grande para um efeito pequeno, script em toda página por costume, a tela inteira montada no navegador quando o servidor já entregaria pronta.

## O navegador primeiro

Antes de escrever um script, veja se o navegador já resolve. O que ele faz sozinho já chega acessível: teclado, leitor de tela e foco.

Componente

O navegador faz

O script acrescenta

Drawer

o `popover` do navegador: abre, fecha com Esc e com toque fora

nenhum

Dialog

o `<dialog>` do navegador, com `showModal()`

uma linha para abrir

Details

o `<details>` do navegador

a animação de abrir e fechar

AppShell

—

o cabeçalho que some ao rolar, no mobile

ScrollFade, BackToTop

—

mostrar quando valem; rolar suave até o topo

StatusOverlay

—

os estados carregando, certo e erro

CodeBlock

—

copiar e as cores do código

## Regras

-   **Nenhuma API de navegador na hora de montar o componente.** A página vem pronta do servidor; o script entra depois e só acrescenta.
-   **O movimento reduzido vale para o script também:** nada de animação feita à mão quando o sistema pede menos movimento.
-   **O script nunca tira o teclado nem o leitor de tela.** Se o elemento do navegador fazia, continua fazendo.
-   **Pequeno e perto de quem usa:** o script de um componente vai junto dele, não num pacote para o site inteiro.
