MeDo

Gerador de Componentes de Avatar.

Gere avatares prontos para produção a partir de um único prompt. 6 padrões open-source — foto, ilustrado no estilo Notion, fallback de iniciais, indicador de presença, grupo empilhado, uploader — todos em Tailwind + shadcn, acessíveis, temáveis e com licença MIT. Copie o código ou gere qualquer um deles direto no seu projeto Lovable, Bolt, v0 ou Cursor.

Avatar
Avatar

6 modelos

Modelos de Avatar que você pode gerar

Cada modelo é um prompt real, não uma captura de tela. Copie para qualquer editor de IA, ou rode no MeDo e receba código React + Tailwind.

BásicoImagem + fallback

Foto com fallback de iniciais

Foto quando carrega, iniciais quando não. O avatar que todo app precisa primeiro.

Crie um componente React <Avatar /> reutilizável com Tailwind CSS. Padrão: avatar básico com imagem e fallback de iniciais. Layout: avatar circular renderizando um <img> quando o src carrega; em caso de erro ou src ausente, renderize um fallback de iniciais gerado com uma cor de fundo determinística derivada da string do nome. API: props para src, name (obrigatório, usado no texto alternativo e nas iniciais), size ("xs" | "sm" | "md" | "lg" | "xl") e repasse de className. Inclua: alt obrigatório a partir de name, loading="lazy", troca para o fallback via onError com estado local, anel de focus-visible quando renderizado dentro de um link ou botão, suporte a tema claro e escuro pelas classes dark: do Tailwind. Restrições: apenas React + Tailwind, sem dependências externas de UI ou imagem, sem layout shift enquanto a imagem carrega (reserve a caixa com width/height fixos).

Teste no MeDo
StatusIndicador de presença

Avatar com ponto de presença

Online, ausente, ocupado, offline — um ponto de presença ancorado na borda do avatar.

Crie um componente React <AvatarWithStatus /> com Tailwind CSS. Padrão: avatar com indicador de presença. Layout: avatar circular com um pequeno ponto de status fixado no canto inferior direito, separado da foto por um anel na cor do fundo para que ele se destaque em qualquer superfície. API: props para src, name, size e status ("online" | "away" | "busy" | "offline"), com a cor do ponto mapeada por status e o ponto escalando junto com o tamanho do avatar. Inclua: fallback de iniciais, um rótulo de texto visualmente oculto anunciando o status para leitores de tela (não dependa apenas da cor), aria-label no wrapper, suporte a tema claro e escuro. Restrições: apenas React + Tailwind, sem dependências externas de UI, o ponto nunca cobre mais de 30% da borda do avatar.

Teste no MeDo
GrupoEmpilhado + excedente

Grupo de avatares com chip +N

Pilha de avatares sobrepostos com chip de excedente +N. Para times, responsáveis, colaboradores.

Crie um componente React <AvatarGroup /> com Tailwind CSS. Padrão: grupo de avatares empilhados (sobrepostos) com contagem de excedente. Layout: linha horizontal de avatares sobrepostos em cerca de um terço, cada um com um anel na cor do fundo para que a pilha continue legível; passado o número máximo de avatares visíveis, renderize um chip contador "+N" no mesmo tamanho e formato. API: props para users (array de { src, name }), max (padrão 4), size e um onAddClick opcional que renderiza no fim da linha um botão tracejado de "Convidar". Comportamento: o hover eleva o avatar sob o cursor acima dos vizinhos com um pequeno translate e mudança de z-index; a pilha inverte a direção da sobreposição com uma prop "dir". Inclua: fallback de iniciais em cada avatar, aria-label resumindo o total de membros, itens focáveis por teclado com anéis de focus-visible, suporte a tema claro e escuro. Restrições: apenas React + Tailwind, sem dependências externas de UI, sem biblioteca de animação.

Teste no MeDo
Tam. e formasEscala + formato

Sistema de escala

De xs a xl em uma única escala tipográfica, mais as variantes circle, squircle e quadrado arredondado.

Crie um componente React <Avatar /> temável com uma escala completa de tamanhos e formatos, usando Tailwind CSS. Padrão: primitivo de avatar de design system. API: size ("xs" | "sm" | "md" | "lg" | "xl" | "2xl") mapeado por um único objeto de lookup que controla junto largura, altura, tamanho da fonte e border-radius; shape ("circle" | "squircle" | "square"); mais src, name e className. Requisito: o tamanho da fonte das iniciais escala proporcionalmente à caixa do avatar, para que xs e 2xl fiquem equilibrados; todos os tokens ficam em um único objeto de configuração no topo do arquivo, para o time retematizar em um só lugar. Inclua: fallback de iniciais, texto alternativo a partir de name, forwardRef para o elemento raiz, tipos de props em TypeScript exportados, suporte a tema claro e escuro. Restrições: apenas React + Tailwind, sem dependências externas de UI, sem estilos inline exceto os tamanhos em pixel calculados.

Teste no MeDo
UploaderEditável

Avatar com upload e remoção

Avatar com selo de câmera, botão de upload e restrições de arquivo. Para páginas de configurações.

Crie um componente React <AvatarUploader /> com Tailwind CSS. Padrão: controle editável de foto de perfil para uma página de configurações. Layout: avatar grande à esquerda com um selo circular de câmera fixado no canto inferior direito; à direita, um rótulo "Foto de perfil", uma linha de dica com as restrições do arquivo ("PNG ou JPG, até 2 MB") e um botão primário Enviar mais um botão de texto Remover. Comportamento: <input type="file" accept="image/png,image/jpeg"> oculto, acionado tanto pelo selo quanto pelo botão Enviar; validação de tipo/tamanho no cliente com mensagem de erro inline; preview local via URL.createObjectURL, revogado ao desmontar; Remover restaura o fallback de iniciais. Inclua: associação de <label> ao input de arquivo, região aria-live para as mensagens de validação, anéis de focus-visible, estado desabilitado/enviando no botão, suporte a tema claro e escuro. Restrições: apenas React + Tailwind, sem biblioteca de upload, sem dependência de recorte — exponha um callback onChange(file) para quem consome o componente.

Teste no MeDo
Linha perfilAvatar + metadados

Linha de avatar, nome e cargo

Avatar, nome, selo de verificação e cargo — a linha que preenche tabelas e listas de membros.

Crie um componente React <AvatarRow /> (e um wrapper <MemberList />) com Tailwind CSS. Padrão: linha de avatar com metadados para listas de membros, tabelas e threads de comentários. Layout: avatar à esquerda, um bloco de duas linhas com o nome da pessoa (mais um selo de verificação opcional) e uma linha secundária esmaecida ("Time · Cargo"), e um botão de ação no fim da linha à direita; o bloco do meio trunca com min-w-0 + truncate em vez de quebrar linha. API: props para users (array de { src, name, role, team, verified }), um rótulo para a ação final e um callback onAction(user). Inclua: fallback de iniciais, marcação semântica <ul>/<li> no wrapper, nome acessível no botão final ("Gerenciar acesso de {name}"), destaque da linha no hover, anéis de focus-visible, suporte a tema claro e escuro. Restrições: apenas React + Tailwind, sem biblioteca de tabela ou lista, funciona a 320px de largura sem overflow.

Teste no MeDo

Padrões de Avatar para diferentes sites

O mesmo componente avatar, ajustado ao tipo de site em que ele entra.

01 / 06

Configurações de time em SaaS

Listas de membros vivem e morrem pela linha de avatar — foto, nome, cargo, ação de acesso. O fallback de iniciais mantém a tabela organizada quando ninguém enviou foto ainda.

Estilos e variações de Avatar

Escolha a variação que combina com o resto da página e gere-a.

01 / 06

Avatar básico

Imagem com fallback de iniciais e uma cor de fundo determinística por nome. A base que todas as outras variantes estendem.

Avatar em React, Next.js, Vue e Svelte

React, Next.js, Vue 3, SvelteKit, Astro ou HTML puro — o mesmo avatar, seis formas de integrar.

01 / 06

Avatar em React

Um único componente funcional com lookup de tamanhos e fallback via onError. Sem estado de cliente além da flag de imagem que falhou, seguro em qualquer ponto de uma árvore React 18+.

src/components/Avatar.tsx

export function Avatar({ src, name, size = "md" }) {
  const [failed, setFailed] = useState(false);
  return failed || !src
    ? <span className={box[size]}>{initials(name)}</span>
    : <img src={src} alt={name} onError={() => setFailed(true)} />;
}

Quem usa o componente Avatar

Listas de time e de membros

Páginas de configurações, organogramas e tabelas de permissão precisam sempre da mesma linha: avatar, nome, cargo, ação. Gere uma vez e reutilize em todas as tabelas do app.

Colaboração em tempo real

Avatares empilhados com um chip +N são a UI de presença mais barata que existe — uma linha já mostra quem mais está editando, sem sidebar nem painel de websocket.

Feeds sociais e comentários

Threads de comentários, reações e menções repetem o avatar centenas de vezes por página. Um único primitivo com escala de tamanhos mantém o layout consistente e o bundle enxuto.

Chat e caixas de atendimento

O indicador de presença diz ao agente se o cliente ainda está online, e o fallback de iniciais mantém a caixa de entrada legível quando ninguém tem foto de perfil.

Configurações de conta e onboarding

O avatar com upload cuida da validação de tipo e tamanho do arquivo, do preview local e da remoção — todo o fluxo de foto de perfil sem uma biblioteca de upload.

Marketplaces e avaliações

Avatares de avaliadores com selo de verificação fazem mais pela confiança percebida do que uma estrela extra. Coloque a linha de perfil direto nas páginas de produto.

Como adicionar o seu Avatar a um projeto

Quatro passos, de escolher um modelo de avatar até subir para produção.

01~30s

Escolha um padrão de avatar

Percorra os 6 templates acima e escolha o mais próximo da sua tela — foto, ilustrado, linha de tabela, pilha de presença ou controle de upload.

02~2s

Veja o preview ao vivo

Cada card renderiza um preview real em React + Tailwind, então você vê espaçamento e dimensões antes de copiar qualquer coisa.

03~10s

Copie o prompt ou o código

Copie o prompt para o MeDo, Lovable, Bolt, v0 ou Cursor, ou pegue o código do componente direto no card.

04~1min

Coloque no seu app

Importe <Avatar /> uma vez e reutilize em tabelas, cabeçalhos e threads de comentários com as props de tamanho e formato.

Perguntas comuns sobre Avatar

O que é um componente de avatar?

Um componente de avatar renderiza uma imagem pequena que representa um usuário, time ou organização — normalmente uma foto de perfil circular. Um avatar pronto para produção também trata os casos em que a foto está ausente ou falha ao carregar, geralmente exibindo as iniciais da pessoa sobre uma cor de fundo gerada.

Como funciona o fallback de iniciais?

O componente pega o nome do usuário, separa por espaços e renderiza em maiúsculas o primeiro caractere da primeira e da última parte. A cor de fundo é derivada de forma determinística da string do nome, então a mesma pessoa sempre recebe a mesma cor entre sessões e dispositivos.

O que é um grupo de avatares ou avatar empilhado?

Um grupo de avatares é uma linha horizontal de avatares sobrepostos, cada um com um anel na cor do fundo para que a pilha continue legível. Passado o número máximo de avatares visíveis, ele renderiza um chip "+N". É o padrão clássico para membros de time, responsáveis por tarefas e colaboradores ao vivo.

Esses componentes de avatar são acessíveis?

Sim. Todo avatar carrega texto alternativo derivado do nome do usuário, o status de presença é anunciado com um rótulo visualmente oculto em vez de depender só da cor, os tooltips são ligados via aria-describedby e avatares interativos mantêm anéis de focus-visible visíveis.

Esses componentes de avatar são gratuitos para uso comercial?

Sim. Todo template da galeria tem licença MIT — use em projetos pessoais, trabalhos para clientes e produtos comerciais, sem atribuição e sem taxas de licenciamento.

Eles funcionam com React, Vue e Svelte?

Os componentes são escritos em React + Tailwind, mas a marcação é independente de framework. A seção Frameworks acima mostra o mesmo avatar em Next.js, Vue 3, SvelteKit, Astro e HTML puro.

Como dimensionar e otimizar as imagens de avatar?

Sirva recortes quadrados com cerca do dobro da caixa renderizada (80px para um avatar de 40px) para ficar nítido em telas retina, defina width e height explícitos para evitar layout shift, use object-cover e adicione loading="lazy" nos avatares abaixo da dobra.

Usar avatares com foto ou avatares ilustrados?

Use avatares com foto real quando a identidade importa — diretórios de time, caixas de atendimento, avaliações de marketplace — porque um rosto é a forma mais rápida de reconhecer alguém. Use avatares ilustrados no estilo Notion quando a maioria dos usuários nunca envia foto, quando você quer um visual consistente com a marca ou quando mostrar rostos reais levanta questões de privacidade. Um bom sistema suporta os dois: foto quando houver, uma ilustração determinística ou iniciais quando não houver.

Gere seu componente de avatar em 30 segundos.

Gere de novo qualquer um dos 6 templates de avatar a partir de um prompt, ou descreva o seu — foto, ilustrado, indicadores de presença, grupos empilhados, uploaders. Grátis, licença MIT, sem cadastro.