Todos os artigos

11 de novembro de 2026 · 5 min de leitura

Um botão que passa por cima da borda parece detalhe. No Design System, vira retrabalho.

Na Lacrei Saúde, onde atuo como voluntário em UX/UI, revisei a Search Bar do Design System Marsha e refiz o componente com Auto Layout. O erro que aparecia na tela tinha origem na estrutura.

  • Lacrei Saúde
  • Auto Layout
  • Design System

O desafio

A Search Bar é o campo de busca da Lacrei: é por ela que a pessoa procura profissionais de saúde por especialidade e localização. A tarefa era revisar a construção do componente no Figma e encontrar o que estava errado. Depois, corrigir sem apagar as telas originais e documentar cada ajuste para o time.

O que estava quebrado

  • Botão por cima da borda. O campo não tinha padding e o botão tinha 48px, a mesma altura do campo. Ele cobria a borda em cima, à direita e embaixo, e a sombra reforçava a sensação de saltar para fora.
  • Um “X” que apagava a linha. O botão de limpar tinha contorno próprio de 2px. No estado preenchido, ele interrompia a borda do campo em volta do ícone.
  • Espaço fora do padrão. Entre o “X” e o botão verde havia 12px, quando o token certo era 8px. E as ações nem tinham um contêiner próprio.
  • Posição absoluta no mobile. Texto e botões estavam soltos sobre um retângulo de fundo. O Auto Layout existia, mas não controlava nada, e o botão vazava 4px para fora da moldura.
  • Raios que não conversavam. Botão com raio 8 encostado numa caixa com raio 8, sem padding entre eles. A curva de dentro não acompanhava a de fora.

AntesO botão passa por cima da borda

  1. 1Sem padding: o botão tem 48px, a mesma altura do campo, e cobre a borda em cima, à direita e embaixo.
  2. 2O “X” tem contorno próprio de 2px e também apaga a linha da borda.
  3. 312px entre o “X” e o botão. O certo é 8px.
  4. 4Sem contêiner para as ações: o “X” e o botão ficam soltos dentro do campo.
Antes: sem padding, o botão de 48px cobre a borda do campo, o “X” apaga a linha e as ações ficam soltas.

Como refiz com Auto Layout

Em vez de ajustar pixel por pixel, refiz a estrutura para que o próprio Auto Layout segure cada elemento no lugar:

  • Campo com Auto Layout horizontal. Padding de 4px em cima, à direita e embaixo, e 16px à esquerda. O texto usa Fill container e o botão fica dentro da borda.
  • Contêiner Actions. Um novo grupo em Auto Layout junta o “X” e o botão, com 8px de distância ligados ao token spacing-8.
  • Botões de 40 × 40. Tirei a sombra dentro do campo e o contorno do “X”, e a borda volta a ser uma linha contínua.
  • Raio calculado. O raio do botão é o raio da caixa menos o padding. Um campo com raio 8 e padding 4 pede um botão com raio 4.

DepoisTudo dentro do campo, borda contínua

  1. 1Auto Layout com padding de 4px em cima, à direita e embaixo (16px à esquerda). O botão fica dentro do campo e a borda continua inteira.
  2. 2Novo contêiner Actions (Auto Layout horizontal) agrupando o “X” e o botão.
  3. 38px entre o “X” e o botão (spacing-8).
  4. 4Botões reduzidos para 40 × 40.
  5. 5Raio do botão = raio da caixa − padding → 8 − 4 = 4.
Depois: tudo dentro do campo, borda contínua e espaçamentos ligados aos tokens do Design System Marsha.

O que isso muda para o time

  • Componente que se adapta sozinho. Com Auto Layout de verdade, o campo acompanha mudanças de largura e de texto sem ninguém reposicionar botão na mão.
  • Handoff mais fiel. Padding, gap e raio ligados a tokens viram valores que o front-end encontra no código, sem precisar medir a tela.
  • Menos variantes quebradas. As variantes de foco e as de mobile também ganharam Auto Layout, então o mesmo ajuste vale para desktop e celular.

O que fica de aprendizado

  • Quando um elemento vaza, o problema quase nunca é o elemento. É o contêiner em volta dele.
  • Raio interno é o raio externo menos o padding. Uma conta simples que deixa as curvas harmônicas.
  • Corrigir também é documentar. Mantive as telas originais, numerei os erros e deixei um ponto para validar com o time: o botão de 40px no mobile, abaixo dos 44px recomendados para toque.

No fim, a Search Bar ficou mais limpa, previsível e pronta para crescer junto com a Lacrei.