Pular para o conteúdo principal

TextArea

O componente TextArea é usado para entrada de texto de múltiplas linhas, ideal para comentários, descrições, mensagens e outros conteúdos extensos.

Importação

import { TextArea } from '@useblu/ocean-react';

Importação específica (recomendado para tree-shaking)

import { TextArea } from '@useblu/ocean-react/TextArea';

Importação de tipos TypeScript

import type { TextAreaProps } from '@useblu/ocean-react';

// Uso em componente customizado
const MyTextArea: React.FC<TextAreaProps> = (props) => {
return <TextArea {...props} />;
};

Playground Interativo

Explore o componente TextArea no playground interativo do Storybook:

Documentação Completa

Para documentação técnica detalhada, exemplos de uso e API completa, consulte o Storybook do TextArea.

No Storybook você encontrará:

  • Controles interativos para testar todas as props
  • API gerada automaticamente com tipagem completa
  • Exemplos visuais de todos os estados e variações
  • Playground para experimentação rápida

Uso básico

<TextArea
label="Comentário"
placeholder="Digite seu comentário aqui..."
helperText="Máximo de 500 caracteres"
/>

Estados

O TextArea suporta diferentes estados visuais para melhor experiência do usuário:

Estado Normal

<TextArea
label="Descrição"
placeholder="Digite uma descrição..."
helperText="Campo de preenchimento opcional"
/>

Estado de Erro

<TextArea
label="Comentário"
placeholder="Digite seu comentário..."
helperText="Este campo é obrigatório"
error
/>

Estado Desabilitado

<TextArea
label="Campo Bloqueado"
placeholder="Este campo não pode ser editado"
helperText="Campo desabilitado para edição"
disabled
/>

Com Conteúdo Inicial

<TextArea
label="Mensagem"
defaultValue="Esta é uma mensagem de exemplo que já vem preenchida no campo de texto."
helperText="Você pode editar este conteúdo"
/>

Controle de Linhas

<TextArea
label="Descrição Detalhada"
placeholder="Digite uma descrição completa..."
rows={6}
helperText="Campo expandido com mais linhas visíveis"
/>

Com Tooltip

Use o tooltipMessage para fornecer informações adicionais sobre o campo:

<TextArea
label="Observações"
tooltipMessage="Use este campo para adicionar informações importantes que serão revisadas pela equipe"
placeholder="Digite suas observações..."
helperText="Campo opcional para comentários"
/>

Estados Visuais

Veja todos os estados do TextArea em ação:

API

Props

PropTipoPadrãoDescrição
labelstring-Rótulo do campo de texto
tooltipMessagestring-Texto do tooltip exibido ao lado do label
placeholderstring-Texto exibido quando o campo está vazio
helperTextstring-Texto de ajuda exibido abaixo do campo
errorbooleanfalseIndica se o campo está em estado de erro
disabledbooleanfalseDesabilita o campo de texto
valuestring-Valor atual do campo (modo controlado)
defaultValuestring-Valor inicial do campo (modo não controlado)
onChange(event: ChangeEvent) => void-Função chamada quando o valor muda
rowsnumber-Número de linhas visíveis do textarea
colsnumber-Número de colunas do textarea
maxLengthnumber-Número máximo de caracteres
idstring-ID único do elemento
classNamestring-Classes CSS adicionais

Eventos

  • onChange: Disparado quando o conteúdo do campo muda
  • onFocus: Disparado quando o campo recebe foco
  • onBlur: Disparado quando o campo perde foco

Herança

O TextArea herda todas as propriedades do componente FormControl e do elemento HTML <textarea>.

Acessibilidade

  • ✅ Suporte completo a navegação por teclado
  • ✅ Estados de foco visíveis
  • ✅ Associação correta entre label e campo
  • ✅ Atributos ARIA apropriados
  • ✅ Suporte a screen readers
  • ✅ Contraste adequado em todos os estados
TeclaFunção
TabMove o foco para o campo
EnterQuebra de linha dentro do campo
Ctrl+ASeleciona todo o texto

Melhores práticas

✅ Faça

  • Use labels descritivos que expliquem claramente o propósito do campo
  • Forneça helperText para orientar o usuário sobre o formato esperado
  • Use tooltipMessage para informações adicionais sobre o campo sem poluir a interface
  • Use estado error junto com mensagens de validação claras
  • Configure rows apropriado baseado no conteúdo esperado
  • Use placeholder para dar exemplos do formato desejado

❌ Não faça

  • Não use apenas placeholder sem label
  • Não omita feedback de erro quando a validação falha
  • Não use campos muito pequenos para conteúdo extenso
  • Não ignore estados de carregamento durante validação assíncrona
  • Não use disabled sem explicar o motivo no helperText

Com Tooltip Interativo

Veja o tooltip em ação:

Exemplos com Estados

Veja diferentes configurações do TextArea:

CSS Classes

O componente gera as seguintes classes CSS:

ClasseDescrição
.ods-textareaClasse base aplicada ao elemento textarea
.ods-textarea--filledAplicado quando o textarea tem conteúdo
.ods-textarea--errorAplicado quando há erro de validação