logo hsb.horse

Registro de Decisão de Arquitetura

Política de layout por tamanho de tela (mobile-first)

Adotar como padrão um design mobile-first com dois níveis de breakpoint.

Aceito #design #ux #responsive #tailwind

Política de layout por tamanho de tela (mobile-first)

Decisão

  • Mobile-first é a abordagem padrão. Estilos base miram mobile; melhorias são adicionadas em md: e acima.
  • Usar breakpoints padrão do Tailwind CSS v4, operando por regra com dois níveis.
NívelLarguraPrefixo TailwindObjetivo
Mobile< 768px(nenhum = base)Layout em coluna única, empilhado
Desktop>= 768pxmd:Layout lado a lado, expandido
  • sm: / lg: / xl: / 2xl: devem ser usados apenas como exceção. Quando usados, adicionar comentário explicando o motivo.
  • Largura máxima de conteúdo: max-w-4xl (896px), aplicada de forma consistente em todas as páginas.
  • Padding horizontal base: px-6 (24px).
NívelComportamento
MobileBotão hambúrguer para mostrar/ocultar navegação
DesktopBarra de navegação horizontal persistente

Escala tipográfica

Headings usam tamanhos mobile como base e sobem um nível em md:.

ElementoMobile (base)Desktop (md:)
Título da página (h1)text-3xlmd:text-4xl
Título de seção (h2)text-2xlmd:text-3xl
Subtítulo (h3)text-xlmd:text-2xl
Título de listatext-lgmd:text-xl
Texto de corpotext-baseSem mudança

Padrões de layout

PadrãoMobileDesktop
Lista de cardsEmpilhado em coluna únicaEmpilhado em coluna única (suficiente com max-w-4xl)
Barra de filtrosflex-col empilhadoHorizontal md:flex-row
RodapéEmpilhado e centralizadoHorizontal md:flex-row md:justify-between
HeaderDuas linhas + hambúrguerDuas linhas + navegação horizontal

Contexto

Este site é pessoal e focado em conteúdo (blog, catálogo de ferramentas, ADR, About), onde layouts raramente precisam de alta complexidade. A implementação atual já usa apenas md:, operando na prática com dois níveis. Essa convenção implícita precisava ser documentada para manter consistência no desenvolvimento futuro.

Justificativa

  • Simplicidade: Dois níveis são suficientes para um site centrado em conteúdo. Mais breakpoints aumentam custo de manutenção.
  • Consistência com o código existente: Todo o código já usa apenas md:, sem necessidade de migração.
  • Aderência ao padrão do Tailwind: Evitar breakpoints customizados previne desvio da documentação oficial.
  • Mobile-first faz sentido: Alinha com indexação mobile-first do Google e prioriza a experiência móvel.

Consequências

  • Ao criar novos componentes, completar primeiro o layout mobile e depois aprimorar com md:.
  • Uso de sm: / lg: etc. exige justificativa explícita no PR.
  • Se for necessária largura além de max-w-4xl, abrir ADR separado.
  • Mudanças na escala tipográfica também devem ser gerenciadas via ADR.