# Tucano > Componentes de formulário e interface para a web, para Django, Laravel, Rails > ou qualquer back-end que devolve HTML do servidor, com ou sem HTMX. Os > exemplos deste arquivo usam Django; em PHP e Rails, campo múltiplo precisa de > name terminado em [] e o upload direto precisa do cabeçalho de CSRF do > framework (data-csrf="false" e a opção headers do new Upload). > JavaScript puro, sem dependências em runtime. 43 KB JS + 13 KB CSS (gzip). > Os estilos são escritos em Tailwind mas distribuídos já compilados: o projeto > que consome não precisa de build e não recebe o preflight do Tailwind. > > Toda a API é em inglês — nomes de classe, métodos, opções, valores, classes > CSS e atributos. Os comentários do código-fonte e os textos de interface são > em português, porque é o que o usuário final lê. > Como este arquivo está organizado: primeiro uma seção por componente, com o > caminho declarativo (data-attributes) que é o normal num projeto Django; > depois a REFERÊNCIA COMPLETA, gerada do código a cada build — se uma opção não > está lá, ela não existe; no fim, as regras do que não fazer. Documentação: https://juniorcarlini.github.io/tucano/ Código: https://github.com/JuniorCarlini/tucano Licença: MIT ## Instalação Dois arquivos, sem build e sem npm: Sempre prenda a versão. Global JS: `Tucano`. Todo elemento com `data-tuc-*` é inicializado sozinho no load e de novo a cada `htmx:afterSwap`. Não é preciso escrever JavaScript. ## Date picker Atributos: data-mode ("single"|"range"), data-time, data-seconds, data-minute-step, data-locale, data-format, data-months, data-min, data-max, data-presets, data-week-numbers, data-iso-name, data-placement, data-native. Opções equivalentes em JS, mais: disabledDates (date => boolean), autoApply, clearable, firstDayOfWeek, onChange. O campo tem máscara derivada do formato (dd/mm/aaaa, dd/mm/aaaa hh:mm, e a variante com travessão no modo range). Digita-se só números. Por padrão o painel próprio é usado em todo lugar, inclusive no celular, onde o texto sobe para 16px (abaixo disso o iOS dá zoom ao focar) e os dois meses empilham no modo período. O seletor nativo do sistema é opt-in: data-native="true" (ou native: 'auto' para ligar só em telas de toque). Ele não altera o type do input — um input nativo transparente fica por cima. Período nunca usa nativo. ## Select Enriquece um não abre, não aceita texto nem limpa. O campo tem altura fixa e linha única; o excesso de tags rola na horizontal. Metodo util: instance.refresh() rele as