fix(menu): cabeçalho não estoura em 360-375px e o menu aberto rola por inteiro
Release / Plano (reaproveitar a imagem?) (push) Successful in 6s
CI / Lint e auditorias (push) Successful in 53s
CI / Trivy (dependências e segredos) (push) Successful in 11s
CI / Imagem Docker (linux/arm64) (push) Successful in 4m8s
Release / ci (push) Successful in 5m15s
Release / Publica a imagem (linux/arm64) (push) Successful in 19s
Release / Cria a release no Gitea (push) Skipped
Release / Deploy no Coolify (push) Successful in 21s

Abaixo de 390px o botão de tema vai para dentro do menu, que passa a rolar com o
cartão do livro e os links juntos. Fechar e logo ganham área de toque de 44px.
Verificado em 6 idiomas e de 320 a 430px sem nada ultrapassar o cabeçalho.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Lucas RayanandClaude Sonnet 5.5 committed 2026-11-02 20:24:38 -03:00
1 parent 23576b5c06
commit bfc1a73104
2 files changed
+18 -3

No files matched your search

+4
View File
@@ -36,6 +36,10 @@ Tudo o que muda de relevante no ESPDocs está aqui. O formato segue o
### Corrigido
- Menu no celular: o botão do menu ultrapassava a borda do cabeçalho em 360 e 375 px. Abaixo
de 390 px o botão de tema passa para dentro do menu. O menu aberto rola inteiro (cartão do
livro e links juntos), então todos os itens ficam alcançáveis em telas baixas, e o botão de
fechar e o logo ganharam área de toque de 44 px.
- O build da imagem Docker repete até 3 vezes quando falha ao baixar as Google Fonts, falha
intermitente que derrubava o CI com "next/font/google queries have exactly one entry".
- Card do catálogo: o botão "Ver no AliExpress" fica sempre no rodapé, alinhado entre os cards.
+14 -3
View File
@@ -360,7 +360,7 @@ export default function Header() {
<div className="nav-pill flex h-16 items-center justify-between gap-1.5 rounded-full px-2.5 sm:gap-3 sm:px-4">
<Link
href={getLinkHref("/")}
className="flex min-h-11 shrink-0 items-center gap-2.5 rounded-full pl-1 pr-2"
className="flex min-h-11 min-w-11 shrink-0 items-center gap-2.5 rounded-full pl-1 pr-2"
aria-label={
isPt
? "ESPDocs, página inicial"
@@ -455,7 +455,9 @@ export default function Header() {
</Link>
<SearchDialog />
<LanguageSelector />
<div className="max-[389px]:hidden">
<ThemeToggle isPt={isPt} isEs={isEs} isFr={isFr} isDe={isDe} isZh={isZh} />
</div>
<button
ref={menuButtonRef}
type="button"
@@ -523,13 +525,14 @@ export default function Header() {
ref={closeRef}
type="button"
onClick={() => setDrawerOpen(false)}
className="grid h-10 w-10 place-items-center rounded-full border border-line text-ink transition-colors hover:bg-surface-2"
className="grid h-11 w-11 place-items-center rounded-full border border-line text-ink transition-colors hover:bg-surface-2"
aria-label={isPt ? "Fechar menu" : isEs ? "Cerrar menú" : isFr ? "Fermer le menu" : isZh ? "关闭菜单" : isDe ? "Menü schließen" : "Close menu"}
>
<X className="h-5 w-5" aria-hidden="true" />
</button>
</div>
<div className="min-h-0 flex-1 overflow-y-auto overscroll-contain">
{isPt && (
<div className="px-4 pb-2">
<Link
@@ -557,7 +560,7 @@ export default function Header() {
)}
<nav
className="flex-1 overflow-y-auto px-3 py-2"
className="px-3 py-2"
aria-label={isPt ? "Navegação móvel" : isEs ? "Navegación móvil" : isFr ? "Navigation mobile" : isZh ? "移动端导航" : isDe ? "Mobile Navigation" : "Mobile navigation"}
>
{visibleMobileLinks.map((link) => (
@@ -574,6 +577,14 @@ export default function Header() {
))}
</nav>
<div className="flex items-center justify-between gap-3 px-6 py-2 min-[390px]:hidden">
<span className="text-sm font-medium text-ink-soft">
{isPt ? "Tema" : isEs ? "Tema" : isFr ? "Thème" : isZh ? "主题" : isDe ? "Design" : "Theme"}
</span>
<ThemeToggle isPt={isPt} isEs={isEs} isFr={isFr} isDe={isDe} isZh={isZh} />
</div>
</div>
<div className="p-4 pt-2">
<Link href={getLinkHref("/seletor")} onClick={() => setDrawerOpen(false)} className="btn btn-primary w-full">
<SlidersHorizontal className="h-4 w-4" aria-hidden="true" />