Componentes

Campo de Texto

Superfície escura com borda verde no foco. Label acima do campo quando o placeholder não é suficiente. Ícone leading para buscas.

Visão geral

Adicionar disco
Kind of Blue
Buscar artista…
abcd

Insira um ano válido (ex: 1969)

Focus · Default · Error — três estados em contexto real

Anatomia

Adicionar disco
Kind of Blue
Buscar artista…
1959
1 2 3 4
1

Container

bg-[#1a1a1a] rounded-xl px-4 py-3 border border-transparent — borda vira #C8F53C no foco

2

Valor / Placeholder

Valor: text-[#f5f5f5] · Placeholder: text-[#888] · text-sm

3

Label (opcional)

text-[#888] text-sm block mb-2 · acima do container

4

Ícone leading (opcional)

Lucide 16×16 · stroke="#C8F53C" absolute left-3 · campo com pl-9

Variantes

Padrão

Quando usar

Campos de entrada livre onde o placeholder descreve suficientemente o dado esperado.

Classes

bg-[#1a1a1a] text-[#f5f5f5] rounded-xl px-4 py-3 outline-none border border-transparent focus:border-[#C8F53C] transition placeholder-[#888]

Com label

Quando usar

Quando o placeholder desaparece ao digitar e o usuário precisa de uma referência permanente do que está preenchendo.

Classes

label: text-[#888] text-sm block mb-2

Com ícone leading

Quando usar

Campos de busca. O ícone reforça a intenção sem precisar de label.

Classes

wrapper: relative ícone: absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 stroke="#888" input: pl-9

Estados

Vazio
Placeholder visível em #888. Borda transparente.
Focado
border-[#C8F53C] — acende ao focar. outline-none remove o outline do browser.
Preenchido
Texto em #f5f5f5. Borda volta a transparente ao perder foco.
Disabled
disabled:opacity-40 · cursor-not-allowed · não interativo.

Do / Don't

Faça Label quando o dado não é óbvio. O usuário sabe o que preencher mesmo após começar a digitar.
Evite Placeholder longo desaparece ao digitar. O usuário perde o contexto no meio do preenchimento.
Faça Um campo por dado. Nome do artista separado do álbum.
Evite Dois dados num único campo dificulta validação e parsing.

Specs

PropriedadeValor
Background#1a1a1a (var(--surface1))
Texto valor#f5f5f5
Texto placeholder#888
Border padrão1px solid transparent
Border focado1px solid #C8F53C
Border radiusrounded-xl · 12px
Paddingpx-4 py-3 · 16px 12px
Font size14px
Outlinenone (substituído pela borda)
Transiçãoborder-color 0.2s
Disabledopacity-40 · cursor-not-allowed
Labeltext-[#888] text-sm block mb-2
Ícone leadingLucide 16px · absolute left-3 · input com pl-9