3.2 KiB
Feature Specification: Grid de Imóveis — 4 Colunas, Altura Uniforme e UX/UI
Feature Branch: 014-properties-grid-ux
Created: 2026-04-14
Status: In Progress
Contexto
A página /imoveis atualmente exibe um grid de 3 colunas (xl:grid-cols-3) com cards de altura variável conforme o comprimento do título. Os separadores visuais entre cards ficam descalinhados, a paginação usa per_page=12 (múltiplo de 3) e o max-w do layout é 1200px. Esta feature reestrutura o grid para 4 colunas, garante altura uniforme nos cards alinhando o rodapé (stats e botão comparar) ao fundo, aumenta o max-w para acomodar 4 colunas ao lado do filtro, e aplica melhorias de UX/UI: localização no card (cidade/bairro), ícone de estacionamento, skeleton atualizado, e ajuste de per_page para 16.
Estado atual
CatalogPage(ou equivalente):xl:grid-cols-3,max-w-[1200px],per_page=12PropertyCard.tsx: altura variável conforme título; sem exibição de cidade/bairro; sem ícone de vagasPropertyCardSkeleton.tsx: reflete estrutura de 3 colunas com 12 itens no loadingFilterSidebar.tsxdesktop:w-64
User Stories
US1 — 4 colunas no grid (P1)
Given usuário na página /imoveis em tela >= 1280px, When grid de imóveis é renderizado, Then exibe 4 cards por linha. Em telas menores: 1 coluna (< 640px), 2 colunas (640–1023px), 3 colunas (1024–1279px).
US2 — Altura uniforme nos cards (P1)
Given grid com cards de títulos longos e curtos na mesma linha, When renderizado, Then todos os cards de uma mesma linha têm exatamente a mesma altura, com o rodapé (stats + botão comparar) sempre alinhado na parte inferior.
US3 — Localização no card (P2)
Given card de um imóvel com cidade e/ou bairro informados, When exibido no grid, Then mostra cidade e bairro abaixo do título em texto menor e discreto.
US4 — Ícone de vagas no card (P2)
Given imóvel com parking_spots > 0, When exibido no grid, Then exibe ícone de carro + número de vagas na seção de stats.
US5 — Paginação compatível (P1)
Given grid de 4 colunas, When nova página carrega, Then per_page=16 (múltiplo de 4) e skeleton também exibe 16 itens.
US6 — Responsividade revisada (P1)
Given usuário em qualquer dispositivo, When página carrega, Then layout adapta corretamente: filtro como overlay no mobile, grid responsivo sem overflow horizontal.
Acceptance Criteria
- Grid alterado para
grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 max-wdo layout aumentado paramax-w-[1400px]FilterSidebardesktop reduzida dew-64paraw-56per_pagedefault alterado de12para16PropertyCard.tsx: elemento raiz do link usaflex flex-col h-full; rodapé (stats + botão comparar) usamt-autoPropertyCard.tsx: exibe cidade e bairro abaixo do título quando disponíveisPropertyCard.tsx: exibe ícone de carro +parking_spotsquandoparking_spots > 0PropertyCardSkeleton.tsx: atualizado para refletir nova estrutura (placeholder de localização + parking)- Skeleton renderiza 16 itens durante o estado de loading
- Nenhuma dependência externa nova