Pular para o conteúdo

TextField

Campo de texto pill para copy-first e Input compatível com shadcn.

Instalação

Instale o Input da sua stack e rode o comando individual ITpS em seguida. O comando itps add textfield é theme-only: ele valida o slug e confirma que o contrato visual vem do tema ITpS, das classes copy-first e dos snippets desta página.

terminal · React/Next

pnpm dlx shadcn@latest add input
pnpm dlx github:ITPS/sinapse-ui-cli add textfield

terminal · Vue3/Nuxt4

pnpm dlx shadcn-vue@latest add input
pnpm dlx github:ITPS/sinapse-ui-cli add textfield

O comando individual adapta só este componente; não instala o catálogo inteiro.

Uso

Em React/Next com shadcn/ui e Vue3/Nuxt4 com shadcn-vue, use o Input instalado pela stack. O tema ITpS vem dos tokens aplicados pela CLI.

Use itps-textfield quando precisar do contrato copy-first com pill, ícones internos ou composição direta em HTML.

Exemplos

Tamanhos

UsoReact/Next e Vue3/Nuxt4HTML
Pequenodefina no componente instalado, quando existiritps-textfield--sm
Padrãodefault do Inputsem modificador
Grandedefina no componente instalado, quando existiritps-textfield--lg

Nas classes itps-textfield, os tamanhos seguem o token form-height: 40, 48 e 56px.

Estados

EstadoReact/Next e Vue3/Nuxt4HTML
Desabilitadodisabledis-disabled no wrapper e disabled no input
Inválidoaria-invalid="true"is-invalid no wrapper e aria-invalid="true" no input
Preenchidovalor controlado ou defaultValuevalor no input

Associe mensagens de ajuda ou erro com aria-describedby.

Ícones

Ícones internos do itps-textfield são decorativos ou indicadores e devem usar aria-hidden="true". Para ações, como revelar senha ou limpar busca, use um botão nomeado com aria-label.

Com Field

Use Field como composição visual: label, ajuda e mensagens ficam fora do TextField.

Use DDD + número.

API copy-first

Classe/atributoUso
itps-textfieldWrapper visual do campo pill.
itps-textfield__inputInput interno sem borda própria.
itps-textfield__iconÍcone interno decorativo ou indicador.
itps-textfield__icon--dangerÍcone de erro em estado inválido.
itps-textfield--smAltura 40px.
itps-textfield--lgAltura 56px.
is-disabledEstado desabilitado no wrapper.
is-invalidEstado inválido no wrapper.
disabledDesabilita o input nativo.
aria-invalid="true"Comunica estado inválido.
aria-describedbyLiga o controle ao texto de apoio ou erro.
aria-hidden="true"Esconde ícones decorativos de tecnologias assistivas.

Acessibilidade

Associe labels externos com for/id. Use aria-describedby para texto de apoio ou erro. Ícones decorativos devem usar aria-hidden="true"; ações dentro do campo precisam ser botões nomeados.