Pular para o conteúdo

O sistema foi feito para peça. O portal pede produto.

As prioridades desta página vêm da comparação com 24 sites do setor (dez locadoras globais, cinco agências de viagem online, três de mobilidade e as quatro concorrentes que disputam o mesmo cliente em Recife e Fortaleza). Ela diz o que entra na biblioteca para o portal ser construível, e em que ordem.

48componentes de produto, em quatro camadas
14componentes de peça que crescem para o portal
13tensões entre o portal e as regras da marca
3garantias do CSS que não se negociam
Construído Camada flutuante

Modal, popover, dropdown, sheet, scrim e escala de z-index.

É uma camada inteira da arquitetura, pré-requisito de seis peças: autocomplete, calendário, menu, minha reserva, filtros no mobile e consentimento. Os 7 primitivos estão documentados em 06 · Componentes.

Construído Navegação de produto

Barra utilitária, navbar e gaveta mobile. asa-doc-nav é o chrome desta documentação.

asa-docs.css não vai para produção. asa-utilitybar + asa-navbar + asa-navdrawer são o menu real, em 06 · Componentes.

Existe uma densidade só

E ela é generosa: padding de seção até 120px, alvo de 44px, respiro largo.

A vitrine (asa-filters) está em 06 · Componentes. .asa-dense é opt-in por escopo: quem monta a tela decide onde aplicar.

Quarenta e oito componentes de produto, em quatro camadas.

Cada um com o motivo que o justifica. A ordem das camadas é ordem de dependência: sem a primeira, nenhuma das outras se sustenta.

Camada de interação · pré-requisito de tudo
ComponenteMotivoPlataformaFase
asa-overlayPrimitivo de modal, sheet e consentimentoAmbos✓ Construído
asa-modalEm /minha-reserva, ver, alterar e cancelar sem sair da páginaAmbos✓ Construído
asa-sheetFiltros no mobile: o botão "Filtrar" da tela 3 do app precisa de destinoMobile✓ Construído
asa-popoverSuperfície do autocomplete, do menu e do calendárioAmbos✓ Construído
asa-menuMenu de duas camadas; "Minha reserva ▸" abre submenuAmbos✓ Construído
asa-disclosureCupom colapsado e "⊕ Devolver em outro local": o secundário fica fechado até ser pedidoAmbos✓ Construído
asa-skiplinkAcessibilidade: pular para o conteúdo por tecladoAmbos✓ Construído
Navegação · motor de busca
ComponenteMotivoPlataformaFase
asa-utilitybarIdioma, moeda, central e Minha reserva fora do menu principalWeb✓ Construído
asa-navbarMenu visível no desktop e Minha reserva no headerAmbos✓ Construído
asa-navdrawerSubstituto mobile do menu horizontalMobile✓ Construído
asa-comboboxQuatro tipos de lugar na busca: aeroporto com IATA, cidade, bairro e destinoAmbos✓ Construído
asa-datepicker asa-timeselectA diária de 27h só é vendável se a hora entrar na buscaAmbos✓ Construído
asa-chipQuatro usos: chips do motor, de intenção, de sazonalidade, de filtro rápidoAmbos✓ Construído
asa-booking-lookupLocalizar reserva pelo código, no header, no widget e em /minha-reservaAmbos✓ Construído
asa-tabsAbas de linha de negócio: cada aba troca o formulário do motorAmbos✓ Construído
asa-footerHub de links no rodapé, com abas Aeroportos, Cidades e DestinosAmbos✓ Construído
asa-breadcrumbArquitetura de ~70 páginas em 4 níveis, com BreadcrumbListAmbos✓ Construído
asa-tabbarNavegação do app, definida em 12 · App nativoMobile✓ Construído
Vitrine · o elo mais fraco do site atual
ComponenteMotivoPlataformaFase
asa-filtersFiltros combináveis, com contagem ao lado de cada opçãoAmbos✓ Construído
asa-resultbarTotal de resultados e ordenação na mesma linhaAmbos✓ Construído
asa-speclistOs cinco atributos do carro: lugares, malas, câmbio, ar, km livreAmbos✓ Construído
asa-ratingNota dentro de cada card, no ponto de decisãoAmbos✓ Construído
asa-emptystateFiltros combináveis dão conjunto vazio; a tela precisa de saídaAmbos✓ Construído
asa-shelfPrateleiras contextuais ("Disponível neste fim de semana em Recife"), com setas desabilitadas nas pontas e espiada do próximo card; pontos são proibidosAmbos✓ Construído
asa-card-destinationLanding pages de destino ("Para onde você vai"). Variante --overlay com o nome sobre a foto e grade asa-destgridAmbos✓ Construído
asa-card-offer asa-card-store asa-card-articleHub /ofertas, /lojas e blogAmbos✓ Construído
asa-paginationCerca de 120 páginas com o blog maduroAmbos✓ Construído
Funil · pós-venda · confiança
ComponenteMotivoPlataformaFase
asa-summaryResumo da reserva fixo durante o funil, um ponto forte da AsaAmbos✓ Construído
asa-upsellOferta de upgrade com prova social ("escolhido por 4 em cada 10 clientes")Ambos✓ Construído
asa-comparisonProteções comparadas lado a lado, em tabelaAmbos✓ Construído
asa-addonAdicionais: flexibilidade, pneus e vidros, combustível, entrega, GPSAmbos✓ Construído
asa-pricebreakdownO preço final precisa ser detalhado linha a linha; sem isso é promessa não verificávelAmbos✓ Construído
asa-paymethod12x sem juros, desconto no Pix e combinação de meiosAmbos✓ Construído
asa-card-booking asa-tasklistReserva e pendências resolvidas na mesma tela ("TUDO RESOLVIDO SEM SAIR DAQUI")Ambos✓ Construído
asa-reassuranceTrinca de reasseguro logo abaixo do motor de buscaAmbos✓ Construído
asa-consentBanner de consentimento: exigência jurídica e do Consent ModeAmbos✓ Construído
asa-stickybarBarra fixa do cupom, em vez de um slide de carrossel que passaAmbos✓ Construído
asa-figureFoto real de lugar e gente, no lugar de carro em estúdioAmbos✓ Construído
asa-proseCerca de 70 páginas de conteúdo longo, além de h1/h2/h3/p/smallAmbos✓ Construído
asa-accordion asa-testimonialFAQ com schema; "HISTÓRIAS REAIS" com nome e cidadeAmbos✓ Construído
asa-upload asa-codeinputCheck-in "Asa Express": a maior oportunidade de coerência entre promessa e produtoAmbos✓ Construído
asa-card-planClube AsaAmbos✓ Construído

O que parece faltar e não é componente: toast, tooltip, ordenação, toggle de one-way, formulário PJ, seletor de idioma, favoritos, stepper de quantidade. O motivo de cada um está no documento em Markdown.

Catorze componentes de peça que crescem para o portal.

Estender, sem recriar. Três carregam o peso do portal e têm as partes de produto; das outras onze, cinco estão prontas e seis seguem pendentes.

Construído asa-search Motor de sete controles

Tem __tabs, __row (o grid de campos), __chips e __aside. Ver 06 · Componentes.

Construído asa-card-vehicle Card de vitrine completo

Tem __badge, __policy, __actions (dois CTAs), [data-state="soldout"] e --horizontal. Consome asa-speclist e asa-rating diretamente. Ver 06 · Componentes.

Construído asa-price Preço em cinco partes

Tem __daily, __installment e __pix. __value é o total do período: sempre vermelho, sem variante.

As outras onze

asa-tag · asa-choice--card · asa-alert · asa-btn (--icon/--link) · asa-photo (modo foto real, ver asa-figure): as cinco construídas. Pendentes: asa-stepper ("Editar" por etapa), asa-numberplate--inline, asa-field (cupom inline), asa-icon (catálogo formal dos ícones novos, hoje usados inline e ainda fora de 05-icones.html) e asa-skeleton/asa-avatar (forma de card, foto e iniciais).

Onde o portal colide com as regras duras da marca.

Treze colisões, todas resolvidas por critério e por um princípio único: melhor prática de UX e CRO acima de preservar o status quo, mesmo quando isso reescreve uma página do próprio sistema.

Decidido · preço vermelho e único O preço vermelho numa vitrine de 32 cards

Quatro candidatos a vermelho por card (preço, selo, CTA e rótulo de categoria), vezes 32.

O efeito von Restorff (um sinal só funciona enquanto for raro) confirma o que 07 · Hierarquia ensina: o preço é o maior elemento e o único colorido. Lei de precedência: preço em --asa-action; selo em asa-tag--outline; CTA de listagem em asa-btn--outline (vermelho cheio só na tela de instância única); rótulo de categoria em --asa-ink-3.

Decidido · proporção por arquétipo A proporção 40/25/20/15 num site de 70 páginas

Uma proporção só serve para peça publicitária e um funil de 8 telas.

Ela varia por <body data-page-mode>: marketing mantém ~40/25/20/15; transactional (motor, vitrine, funil, checkout) usa modo foco, porque menos cor decorativa é o achado mais replicado de CRO em conversão; informational (regras, taxas, fraude, blog) fica quase neutro, porque página jurídica que parece anúncio perde credibilidade.

Decidido · escala de UI nomeada Os cinco degraus de conteúdo e a escala de UI

Componentes de produto precisam de tamanhos que os cinco degraus de conteúdo não têm.

A escala de conteúdo fica intocada. Ao lado dela existe uma escala de UI com piso de 12px inegociável: --asa-fs-subtitle (17px) e --asa-fs-body-dense (14px) são degraus legítimos; nada fica em 11px (asa-tag e __category usam 12px).

As outras onze
O ângulo de 8° numa UI funcional

A regra proíbe clip-path em container interativo, porque o triângulo removido leva junto botão, link e anel de foco. O portal é quase todo container interativo. Na prática o ângulo assinatura sai do funil e da vitrine. Saída: expressá-lo por divisor entre seções e pelo corte da mídia dentro do card. Quem monta a tela confere se o resultado ainda é assinatura suficiente.

Sete superfícies flutuantes contra "nenhuma sombra"

Com o fundo branco, um popover branco sobre branco separado por borda de 14% é invisível. Saída limpa: o cinza mist (--asa-mist) é a superfície flutuante do sistema. Dá à superfície clara trabalho funcional, e reatribui a cota de 15%.

Marcas de terceiros com cor própria

Pix (turquesa), Google e bandeiras de cartão entram no checkout e na home. O sistema não tem regra para cor de terceiro, e esses manuais restringem monocromatização. Tem componente jurídico.

A estrela do rating é amarela

Se o rating aparece em 32 cards, o amarelo da marca passa a significar "avaliação": o ativo cromático mais forte da Asa reduzido a cor de rating. Saída: rating sem estrela, ou estrela em preto.

Preço nunca sobre amarelo, como restrição estrutural

Com um preço por peça, a regra se confere no olho. A home tem preço na prateleira, nos cards de destino, no clube e na barra de cupom, então a regra é verificável: nenhum componente com preço pode ser instanciado dentro de .asa-bg-surface.

Vitrine assíncrona contra "nada pulsa, nada gira"

32 retângulos cinzas parados por 1,5s parecem página quebrada. O sistema já resolveu isso uma vez, no botão: três pontos em fade a 400ms. Basta promover ao nível de lista. Zero regra quebrada.

Decidido · uma topologia por seção Overfitting visual: a página que repete a mesma estrutura

Oito cabeçalhos de seção idênticos, 38 cards iguais e 79 blocos em caixa alta numa home: o olho aprende o molde na segunda seção e para de ler. Regra: uma topologia por seção, fundos alternados, cards só onde há produto, marca d'água uma vez por página. Ver 15 · Composição e a sexta ferramenta de 07 · Hierarquia.

Três ficam em aberto: densidade contra o alvo de 44px, microcópia em caixa alta (fica 40% mais larga) e cinco superfícies sticky sem sombra. Todas resolvíveis por critério, detalhadas no Markdown.

Três garantias do CSS que não se negociam.

Nenhuma delas é opinião: as três são regra que o próprio sistema declara, e o CSS as cumpre linha a linha.

Erro nunca depende só da cor da borda

:focus e [aria-invalid] dividem a mesma cor de borda, --asa-action-hover. Num campo focado e inválido (o estado normal de quem errou e voltou para corrigir) o erro continua visível porque tem um segundo canal, a espessura: 2px contra 1.5px, mais a mensagem com ícone ligada por aria-describedby. É a mesma redundância de sinais do botão primário.

Nenhum texto abaixo de 12px, inclusive legenda de foto

Piso de 12px em tela, sem exceção: label de campo, etiqueta e a legenda do placeholder de foto usam o degrau Etiqueta. Texto menor que isso é defeito, em qualquer componente.

Reduced-motion também zera o scroll suave

O bloco de prefers-reduced-motion zera as quatro durações e também scroll-behavior, que é propriedade de elemento e não custom property, por isso precisa da própria regra. Num site cheio de âncoras (FAQ, destinos, hub do rodapé), isso é conformidade.

Dois riscos conhecidos

body { overflow-x: hidden } é causa conhecida de quebra em position: sticky, e o portal depende de sticky em cinco lugares; a correção é uma linha (overflow-x: clip). E scroll-margin-top: 70px está calibrado para a navbar desta documentação; o header de produto terá ~110px e precisa virar token.

O que o portal pede e não é problema deste sistema.

Listar isto é tão útil quanto listar componentes: impede que o design system vire depósito do que está pendente em outras frentes.

Precificação

A tabela incoerente (C+ mais barato que B+, Commander a R$982/dia) é RMS, não interface. Mas bloqueia a entrega de ordenação por preço: o filtro novo exporia o problema em vez de resolvê-lo. Embutir proteção e taxa no preço exibido é decisão comercial e jurídica; 12x e Pix dependem de adquirente e gateway.

Conteúdo, SEO e mídia

As ~70 URLs, slugs, IATA e schema; toda a análise de Semrush e mídia paga; a pauta do blog; o sitemap duplicado. Zero impacto em componente. Multi-idioma, no sistema, é só um item do menu.

Operação e negócio

Central 0800, distribuição em OTA, carro reserva pós-sinistro, transfer, afiliados, precificação do clube. A base de dados do autocomplete é dado: o componente é só a casca. O "escolhido por 4 em cada 10" é dado operacional real.

Produção visual e jurídico

"Trocar carro em estúdio por lugar e gente" é direção de arte e produção fotográfica no Nordeste. O sistema entrega o slot, o corte de 8° e a legenda; não entrega a foto. Enquanto ela não existe, o hachurado de asa-photo marca o lugar e nomeia a foto que falta; foto de banco entra só como comp marcado em protótipo, nunca em produção; e asa-figure é o modo da foto real. O texto da LGPD precisa de parecer jurídico; o componente é só o recipiente.

A ordem importa, e é dependência real.

Decidido 1 · As três tensões de base

Preço vermelho e único no card; proporção de cor varia por data-page-mode; escala de UI com dois degraus nomeados e piso de 12px. Detalhe em Tensões.

2 · Corrigir a tabela de preços

Antes de entregar ordenação por preço. É dependência de negócio bloqueando entrega de design.

Construído 3 · A fundação

Tokens, camada flutuante, navegação, motor de busca, vitrine, funil e pós-venda/confiança: sete elos, todos catalogados em 06 · Componentes.

Construído 4 · Navegação estendida, conteúdo e conta

Navegação estendida (asa-footer, asa-breadcrumb, asa-tabs, asa-tabbar), conteúdo (asa-shelf, os quatro asa-card-*, asa-pagination, asa-prose, asa-accordion, asa-testimonial) e conta (asa-upload, asa-codeinput, asa-card-plan), todos em 06 · Componentes. A biblioteca de produto está completa.

5 · Definir os hooks de medição

Antes da primeira tela, não depois. Se a convenção não nascer no design system, cada tela inventa a sua e o funil oficial do GA4 não fecha.

Ordem de grandeza

A biblioteca tem cerca de 65 componentes. É o tamanho de um design system de produto, e é o que o portal exige. O documento completo, com o motivo de cada peça e a lista do que não é componente, está em MAPA-COMPONENTES_DESIGN-SYSTEM.md.

Anterior← 12 · App nativo Próxima seção14 · Downloads →