# UX/UI Audit — Página `/imoveis` > Análise realizada em 18/04/2026. Baseada no código-fonte atual da `PropertiesPage`, `FilterSidebar`, `PropertyRowCard`, `ContactModal` e componentes relacionados. --- ## Índice 1. [Diagnóstico Geral](#1-diagnóstico-geral) 2. [Arquitetura de Informação](#2-arquitetura-de-informação) 3. [Filtros e Busca](#3-filtros-e-busca) 4. [Cards de Imóvel](#4-cards-de-imóvel) 5. [Layout e Visualização](#5-layout-e-visualização) 6. [Paginação](#6-paginação) 7. [Estado Vazio e Erros](#7-estado-vazio-e-erros) 8. [Micro-interações e Animações](#8-micro-interações-e-animações) 9. [Acessibilidade (A11y)](#9-acessibilidade-a11y) 10. [Mobile Experience](#10-mobile-experience) 11. [Performance Percebida](#11-performance-percebida) 12. [Fluxo de Conversão](#12-fluxo-de-conversão) 13. [Roadmap Priorizado](#13-roadmap-priorizado) --- ## 1. Diagnóstico Geral ### Pontos positivos atuais - Filtros sincronizados com a URL — links são compartilháveis e o histórico do browser funciona corretamente. - Skeleton loading implementado — evita CLS (Cumulative Layout Shift). - Carrossel de fotos com lazy load por slide individual. - Sidebar sticky no desktop, drawer no mobile. - Favoritos e comparação com contexto global persistente. - Badge de contagem de filtros ativos no botão mobile. ### Problemas críticos identificados | Severidade | Quantidade | Descrição resumida | |---|---|---| | 🔴 Alta | 5 | Impactam diretamente conversão ou usabilidade fundamental | | 🟡 Média | 9 | Degradam a experiência sem bloquear o uso | | 🟢 Baixa | 8 | Refinamentos e polish | --- ## 2. Arquitetura de Informação ### 2.1 Ausência de campo de busca textual 🔴 **Problema:** Não existe um input de busca livre (por endereço, bairro, título ou código do imóvel). O usuário só consegue filtrar via dropdowns/chips. Para alguém que já sabe o endereço ou código do imóvel, o fluxo é completamente ineficiente. **Referências:** Todos os grandes portais imobiliários (Zap, VivaReal, OLX) colocam a busca textual como primeiro ponto de entrada. **Solução recomendada:** ``` ┌─────────────────────────────────────────────────────┐ │ 🔍 Buscar por endereço, bairro ou código... │ └─────────────────────────────────────────────────────┘ ``` - Barra de busca proeminente no topo da área de resultados (não na sidebar). - Debounce de 400ms para evitar requests excessivos. - Parâmetro `q` na URL: `/imoveis?q=Barra+Funda`. - Busca no backend via `ILIKE` em `title`, `address`, `code`, `neighborhood.name`. --- ### 2.2 Ausência de ordenação 🔴 **Problema:** Não há opção para ordenar os resultados. O usuário não controla se quer ver por menor preço, maior área, mais recente ou destaque. **Solução recomendada:** ```tsx // Dropdown de ordenação ao lado do contador de resultados ``` - Parâmetro `sort` na URL. - Persistir a preferência de ordenação na URL (já funciona com o sistema atual de `filtersToParams`). --- ### 2.3 Falta de chips/tags de filtros ativos 🟡 **Problema:** Quando o usuário aplica filtros no desktop, não há feedback visual na área de resultados mostrando *quais* filtros estão ativos. O contador "87 imóveis encontrados" não revela *por quê* esse número é aquele. **Solução recomendada:** ``` ┌─ Filtros ativos ──────────────────────────────────────┐ │ [Aluguel ×] [São Paulo ×] [2+ quartos ×] [Limpar tudo] │ └───────────────────────────────────────────────────────┘ ``` - Chips removíveis logo abaixo do header, acima do primeiro card. - Cada chip tem `×` para remover individualmente. - Botão "Limpar tudo" só aparece quando há ≥ 2 chips. --- ### 2.4 Sem breadcrumbs 🟢 **Problema:** Não há indicação de onde o usuário está na hierarquia do site. Especialmente útil quando vem de uma busca filtrada. **Solução:** Breadcrumb minimalista no header: `Início > Imóveis > Apartamentos em São Paulo`. --- ## 3. Filtros e Busca ### 3.1 Sidebar muito estreita para inputs de range 🟡 **Problema:** A sidebar tem `w-56` (224px). Os `RangeInputs` de preço e área ficam comprimidos, forçando o usuário a digitar em campos muito pequenos sem feedback visual do range selecionado. **Solução recomendada:** - Aumentar para `w-64` (256px) ou `w-72` (288px) no desktop. - Adicionar slider visual (range input duplo) acima dos inputs numéricos para preço — visualmente mais intuitivo e mais rápido que digitar valores. ```tsx // Price range com slider + inputs