Componentes

Inventário do sistema

Os 530 componentes exportados do sistema, em 387 arquivos e 62 módulos. Esta é a página que prova que nenhum ficou de fora — e ela não prova isso por diligência, prova por construção: a lista é lida do código, não digitada aqui.

O sistema em números

  • 530Componentes exportadoscomponents/**/*.tsx
  • 62Módulos387 arquivos
  • 265Com JSDoc50% do sistema · 265 sem nenhuma linha
  • 49Órfãos (ninguém importa)9% — candidatos a aposentar
  • 425Com "use client"105 rodam no servidor
  • 308Usados em um lugar só58% — feitos pra uma tela, não pro sistema

Por que esta lista é gerada

Um catálogo de centenas de itens digitado à mão desatualiza no dia seguinte — e a partir daí ele não é só inútil, é pior que não existir: o time consulta, erra, e para de confiar no hub inteiro.

A fonte é o código. O script varre components/**, extrai todo export com inicial maiúscula, conta quantos arquivos importam cada um e escreve lib/ds/inventario.generated.ts. Esta página só lê esse arquivo. Criou ou apagou componente? Regenere — os números daqui, inclusive os da seção de dívida, mudam sozinhos.

Depois de criar, renomear ou remover componente:

CampoComo é apurado
nomeExport com inicial maiúscula: function ou const, default ou nomeado.
arquivo · moduloCaminho real. O módulo é a pasta dentro de components/.
clientPresença da diretiva "use client" no topo do arquivo — não é adivinhação, é leitura.
docPrimeira frase do JSDoc imediatamente acima do export, truncada em ~200 caracteres.
usosQuantos arquivos de components/ e app/ importam aquele nome daquele caminho. O próprio arquivo não conta.
Duplicatas do iCloudArquivos "algo 2.tsx" são descartados pelo gerador — não entram na contagem.

Uso é resolvido por caminho, não por nome. Casar só por nome mentia: existem dois Card no sistema e os dois apareciam com o total somado. A chave é arquivo::Nome, resolvida a partir do path do import — é por isso que a tabela de homônimos mais abaixo tem número confiável.

O núcleo de fato

Os 12 componentes mais importados. São 2% do catálogo e respondem por 37% de todos os imports do sistema — não é o que o DS diz ser importante, é o que o código usa todo dia.

ComponenteOnde viveUsos
Buttoncomponents/ui/button.tsx128
Cardcomponents/ui/card.tsx122
PageHeaderAdmincomponents/admin/page-header-admin.tsx65
Inputcomponents/ui/input.tsx60
Badgecomponents/ui/badge.tsx59
Revealcomponents/landing-dark/motion-primitives.tsx34
Avatarcomponents/shared/avatar.tsx31
Labelcomponents/ui/label.tsx29
StatCardcomponents/ponto/stat-card.tsx20
FooterDarkcomponents/landing-dark/footer-dark.tsx18
LogoEmpresacomponents/shared/logo-empresa.tsx18
ApolLogocomponents/landing-dark/apol-logo.tsx17

Mexer nestes é mexer no sistema todo. Alterar o Button encosta em 128 arquivos de uma vez. Vale a inversão: nada aqui muda sem antes olhar o que quebra, e nada aqui recebe variante nova sem entrar na documentação de primitivas.

Todos os 530, por módulo

Famílias e módulos ordenados por tamanho — o peso real aparece primeiro. Cada módulo abre e fecha; dentro, a tabela vem ordenada por uso, do mais importado ao órfão.

Como ler: Usos é quantos arquivos importam aquele export. Órfão significa zero importadores — não significa lixo, significa decisão pendente. client é arquivo com "use client"; server atravessa a fronteira RSC. Traço em "O que é" quer dizer que o componente não tem JSDoc — é dívida, não mistério.

Admin · 284 de 530 · 8 órfãos

O painel do dono. É onde o sistema tem mais massa e onde a consistência mais rende — cada tela nova aqui deveria ser montagem, não desenho.

  • components/admin41 exports · 19 sem JSDoc · 3 órfãos
    ComponenteO que éUsosCamada
    PageHeaderAdminpage-header-admin.tsxCabeçalho padrão de tela admin: eyebrow + título display + descrição + ações alinhadas à direita (responsivo: empilha em mobile).65server
    ApolVivoapol-vivo.tsx—2client
    BarrasCategoriafinanceiro-charts.tsx"1,2k", "18k", "950" — pra rótulos de eixo.2client
    ConvidarFuncionarioDialogconvidar-funcionario-dialog.tsxAdiciona um funcionário direto pelo RH (cria a linha real em `funcionarios`, já aprovado).2client
    EmployeeRowemployee-row.tsxEmployeeRow — linha de funcionário na tabela do admin.2client
    GraficoFluxofinanceiro-charts.tsx"1,2k", "18k", "950" — pra rótulos de eixo.2client
    NovoClienteDialognovo-cliente-dialog.tsxDialog "Novo cliente" — formulário com validação Zod via Server Action.2client
    NovoProdutoDialognovo-produto-dialog.tsx—2client
    SeletorPeriodoseletor-periodo.tsxSeletor de período estilo Google Analytics: canto superior direito, presets + intervalo personalizado.2client
    SidebarAdminsidebar-admin.tsxSidebarAdmin — navegação do admin.2client
    AdicionarItemOsDialogadicionar-item-os-dialog.tsx—1client
    AdicionarVeiculoDialogadicionar-veiculo-dialog.tsx—1client
    AdminBottomNavadmin-bottom-nav.tsx—1client
    AdminLayoutClientadmin-layout-client.tsxClient component: monta o menu (ícones lucide não atravessam a fronteira RSC → CSR, então ficam definidos aqui) e recebe do `layout.tsx` (Server Component) só dado serializável — quem está logado e…1client
    AppLinkCardapp-link-card.tsxCard "Testar como funcionário" — mostra: - URL pública pro app do funcionário (`/[slug]`) - Botão copiar - QR code (gerado via api.qrserver.com — sem deps, sem key) - Botão "Abrir em nova aba" Usad…1client
    AtualizarFlutuanteatualizar-flutuante.tsx—1client
    BrandingFieldsbranding-fields.tsxPar de campos de cor primária + secundária com validação de contraste em tempo real.1client
    ColorFieldcolor-field.tsxCampo de cor com swatch + hex + chip de contraste WCAG ao vivo.1client
    EditarOsDialogeditar-os-dialog.tsx—1client
    EnderecoFieldsendereco-fields.tsxForm completo de localização do tenant.1client
    ExtratoBancarioextrato-bancario.tsx—1client
    FiltroPeriodofiltro-periodo.tsxSeletor de período do quadro de OS (canto superior direito).1client
    GraficoMensalfinanceiro-charts.tsx"1,2k", "18k", "950" — pra rótulos de eixo.1client
    KanbanOskanban-os.tsx—1client
    LancarCaixaDialoglancar-caixa-dialog.tsx—1client
    MapaOsmmapa-osm.tsx—1client
    MenuModulosMobilemenu-modulos-mobile.tsxLauncher de módulos do celular — "todos os módulos em quadradinhos" (pedido do Victor em 22/07/2026).1client
    NotificacoesBellnotificacoes-bell.tsxSino de notificações — topo do admin, sistema inteiro.1client
    NovaOsWizardnova-os-wizard.tsx—1client
    OsStatusActionsos-status-actions.tsx—1client
    PainelPatiopainel-patio.tsx—1client
    PainelReguapainel-regua.tsx—1client
    ReciboActionsrecibo-actions.tsxBarra de ações do recibo (não sai na impressão).1client
    RemoverItemOsButtonremover-item-os-button.tsxRemove um item da OS. Remove pelo id da LINHA, não pelo `produto_id`: item que entra pelo PDV é texto livre e tem `produto_id` null/vazio — apagar por produto varreria TODOS os itens de texto livre…1client
    RemoverVeiculoButtonremover-veiculo-button.tsx—1client
    RenovarQrButtonrenovar-qr-button.tsxBotão "Renovar QR" (RH). Confirma, chama a action e recarrega a página pra mostrar o QR novo. Renovar invalida os papéis antigos.1client
    RouteTopLoaderroute-top-loader.tsxBarra de progresso no topo da tela (estilo YouTube/GitHub) que reage a cliques em qualquer link interno do admin — feedback visual imediato enquanto o Server Component de destino busca dado, antes …1client
    SiteLinkCardsite-link-card.tsxCard "Site institucional" — link público pro site que o cliente final (pessoa que quebrou o parabrisa) vê.1client
    BaixarContaDialogórfãobaixar-conta-dialog.tsx—0client
    MapaOsmInnerórfãomapa-osm-inner.tsx—0client
    NovaOsDialogórfãonova-os-dialog.tsx—0client
  • components/admin/pessoas37 exports · 22 sem JSDoc · 1 órfão
    ComponenteO que éUsosCamada
    Camporh-dialog-shell.tsx—9client
    DialogRhrh-dialog-shell.tsx—9client
    Textarearh-dialog-shell.tsx—9client
    NavMesnav-mes.tsx—4server
    BotaoJustificarbotao-justificar.tsxO botão que abre o "Justificar falta" — NA PRÓPRIA LINHA da falta (Victor, 18/08/2026: "coloque essa opção na linha").3client
    EspelhoPontoespelho-ponto.tsx—3server
    SelectPessoarh-dialog-shell.tsxSeletor de pessoa — sempre o roster real, nunca uma lista escrita à mão.3client
    SelectSimplesrh-dialog-shell.tsx`<select>` genérico (tipo/grau) com a mesma pele do de pessoa.3client
    TrilhaCestatrilha-cesta.tsxA TRILHA da cesta — uma bolinha por dia útil do ciclo.3server
    LegendaCestatrilha-cesta.tsxLegenda da trilha. Só os estados que APARECEM na trilha entram — uma legenda com sete linhas fixas pra uma trilha de duas cores treina o olho a pular a legenda inteira.2server
    AcoesFeriasrh-acoes.tsxAprovar/Rejeitar (só enquanto está "solicitada") + Excluir.1client
    AnaliseAppViewanalise-app-view.tsxVisão (presentational) da Análise do app.1server
    BotaoExcluirrh-acoes.tsxExcluir sozinho — atestados e advertências.1client
    BotaoExcluirAbonobanco-horas-acoes.tsx—1client
    BotaoExcluirComunicadocomunicado-acoes.tsxExcluir comunicado — a única ilha client do mural (a página é server).1client
    CalendarioFeriascalendario-ferias.tsx—1client
    CardModulocard-modulo.tsx—1server
    DialogPontoManualdialog-ponto-manual.tsx—1client
    DireitoFeriasdireito-ferias.tsx—1server
    EditarFeriasDialogeditar-ferias-dialog.tsxEDITA as datas de um período já lançado (07/08/2026).1client
    EspelhoEquipeespelho-equipe.tsx—1client
    FichaFormficha-form.tsx—1client
    HorasEditaveishoras-editaveis.tsx—1client
    JustificarFaltaDialogjustificar-falta-dialog.tsx—1client
    LancarAbonoDialogbanco-horas-acoes.tsx—1client
    NovaAdvertenciaDialognova-advertencia-dialog.tsx—1client
    NovaFeriasDialognova-ferias-dialog.tsxNova solicitação de férias. A contagem de dias aparece VIVA enquanto o gestor escolhe as datas, pela mesma `diasDeFerias` que o servidor usa pra gravar (contagem inclusive: "01 a 10" são 10 dias, n…1client
    NovoComunicadoDialognovo-comunicado-dialog.tsx—1client
    PessoasTabspessoas-tabs.tsx—1client
    ReciboPagamentorecibo-pagamento.tsx—1client
    RegistrarAtestadoDialogregistrar-atestado-dialog.tsxRegistrar atestado — grava uma `ocorrencia` com `tipo: "atestado"`.1client
    RelatorioAcoesrelatorio-acoes.tsx—1client
    ResumoPeriodoeditar-ferias-dialog.tsxA contagem viva + o dia da VOLTA.1client
    SalarioFormsalario-form.tsxSALÁRIO do funcionário (migration 0058).1client
    TabelaEquipetabela-equipe.tsx—1client
    TabelaPontoDiatabela-ponto-dia.tsx—1client
    TIPO_LABELórfãodialog-ponto-manual.tsxCorrigir/adicionar UMA marcação à mão.0client
  • components/admin/marketing32 exports · 22 sem JSDoc · 1 órfão
    ComponenteO que éUsosCamada
    Camposhared.tsx—6client
    ModalBaseshared.tsxVariação percentual entre dois valores (null se indefinida).5client
    Areashared.tsx—4client
    MiniaturaListalista-compacta.tsxMiniatura quadrada da linha (arte) — ou um bloco neutro com ícone.3client
    SeletorCanalshared.tsxSeletor de canal — botões com a cor de cada rede no estado ativo e TEXTO BRANCO REAL (`text-[#fff]`, não `text-[#fff]`, que o tema claro escurece fora dos surfaces).3client
    CANAISshared.tsx—2client
    Checklistchecklist.tsx—2client
    ChecklistBarrachecklist.tsxBarra fininha de progresso — usada no card e no topo do checklist.2client
    CopiarLinkcopiar-link.tsxCopia o link interno do card (a URL da tela cheia) pra área de transferência — pra mandar pro cliente/time.2client
    ListaCompactalista-compacta.tsx—2client
    MarcaAprovarevisor-arte.tsxWordmark "a·prova" — ponto dourado pulsando (CSS local, sem globals).2client
    NovoPostDialogcronograma-marketing.tsx—2client
    Artesartes-marketing.tsx—1client
    ArteTelaarte-tela.tsx—1client
    Automacoesautomacoes-marketing.tsx—1client
    BotaoBaixarArtebaixar-arte.tsx—1client
    Calendariocalendario-marketing.tsxCalendário do mês. No CELULAR o texto do post não cabe: 7 colunas em 390px dão ~50px por célula, e título truncado em 4 caracteres não informa nada. Então abaixo de `sm` a célula mostra só o dia + …1client
    CompararVersoescomparar-versoes.tsx—1client
    Cronogramacronograma-marketing.tsx—1client
    DashboardMarketingdashboard-marketing.tsx—1client
    DeltaBadgeredes-marketing.tsx—1client
    Estrategiasestrategias-marketing.tsx—1client
    GerarPromptArtegerar-prompt.tsxGerador de prompt de arte. Ele NÃO gera a imagem nem a legenda — gera o PROMPT que o designer cola no ChatGPT/Gemini/Nano Banana. O ganho é o guia de marca entrar inteiro, toda vez, sem ninguém lem…1client
    NovaArteDialogartes-marketing.tsx—1client
    NovaEstrategiaDialogestrategias-marketing.tsx—1client
    PainelMarketingpainel-marketing.tsx—1client
    PostTelapost-tela.tsx—1client
    Redesredes-marketing.tsx—1client
    RegistrarNumerosDialogredes-marketing.tsx—1client
    RevisorArterevisor-arte.tsxMede o contraste amostrando os pixels num canvas pequeno (não altera o arquivo — é só leitura).1client
    SeloAprovarevisor-arte.tsxSelo pequeno pra usar fora do revisor (ex.: seção Artes enviadas).1client
    POST_COLSórfãocronograma-marketing.tsx—0client
  • components/admin/shared27 exports · 8 sem JSDoc
    ComponenteO que éUsosCamada
    Tdtabela.tsx—12server
    Tabelatabela.tsxTabela — a superfície padrão de dado denso do admin.11server
    TabelaBodytabela.tsx—11server
    TabelaHeadtabela.tsxCabeçalho da tabela — cinza, tiny, uppercase.11server
    TabelaVaziatabela.tsxLinha única de estado vazio, alinhada com o nº de colunas.11server
    Thtabela.tsx—11server
    Trtabela.tsx—10server
    Campocampo.tsxWrapper label+campo pra forms de modal do admin.8server
    GraficoBarrasgrafico-barras.tsxGráfico de barras do Design System (Caixa, dashboards) — substitui os bar charts artesanais com `title=""` por uma base única com tooltip de verdade (hover no desktop, toque no celular), rótulos qu…7client
    TabelaAdmintabela-admin.tsx—7client
    MenuFlutuantemenu-flutuante.tsxMenu que aparece SEMPRE, custe o que custar.6client
    TabelaFoottabela.tsxRodapé de totais. `<tfoot>` (e não mais uma `<tr>` no corpo) porque é semanticamente o total, e leitor de tela anuncia como tal.6server
    BotaoImprimirbotao-imprimir.tsxBotão de imprimir — o mínimo cliente possível.5client
    MenuTitulomenu-flutuante.tsxTítulo de seção dentro do menu. */5client
    QuadroKanbanquadro-kanban.tsx—5client
    FiltroTabelafiltro-tabela.tsx—4client
    MenuItemmenu-flutuante.tsxItem clicável do menu — mesmo desenho em todos os menus do módulo.4client
    ComboSugestoescombo-sugestoes.tsxComboSugestoes — campo de texto livre com a lista COMPLETA de sugestões.3client
    EditorAvatareditor-avatar.tsxEditorAvatar — escolher, arrastar, recortar e subir a foto de perfil.3client
    SeloAoVivopulso-ao-vivo.tsxO selo. O ponto pulsando é o que responde "isso está funcionando?" — sem ele não dá pra distinguir "nada mudou" de "parou de vigiar", e a queixa original era exatamente "às vezes não vem".3client
    BotaoDivididobotao-dividido.tsx—2client
    PageSkeletonpage-skeleton.tsxFallback genérico de `app/[slug]/admin/loading.tsx` — mostra a forma de uma tela admin típica (header + cards) enquanto o Server Component de destino busca dados.2server
    SeletorPrioridadeseletor-prioridade.tsxRégua de prioridade — Urgente · Alta · Média · Baixa, nesta ordem.2client
    DialogMeuPerfildialog-meu-perfil.tsxDialogMeuPerfil — trocar a própria foto direto do rodapé da sidebar.1client
    LinhaModulolinha-modulo.tsxLinha de módulo do menu do celular — ícone, nome e seta.1client
    ScrollComDegradescroll-com-degrade.tsxÁrea rolável na horizontal com degradê de "tem mais pra esse lado".1client
    SeletorDiaseletor-dia.tsxSELETOR DE DIA — a data vira um calendário clicável.1client
  • components/admin/caixa22 exports · 6 sem JSDoc · 1 órfão
    ComponenteO que éUsosCamada
    AtendentesInputatendentes-input.tsxCampo "quem atendeu" — seleção por CHIPS (pedido do Victor 14/07/2026: "já comece perguntando quem é o atendente...3client
    NfeCheckboxnfe-campo.tsxCheckbox do lançamento — compacto de propósito.3client
    ClienteCaixaInputcliente-caixa-input.tsxCampo de CLIENTE no lançamento do Caixa — opcional de propósito.2client
    PlacaCaixaInputplaca-caixa-input.tsxPlaca no lançamento do Caixa (Victor, 01/09/2026).2client
    PulsoCaixapulso-caixa.tsxAtualização automática do Caixa.2client
    CaixaShellcaixa-shell.tsx—1client
    CalculadoraFlutuantecalculadora-flutuante.tsxCalculadora do lançamento (Victor, 25/07/2026: "precisa de uma calculadora, um acesso rápido...1client
    EditarCaixaDialogeditar-caixa-dialog.tsxEdição de um lançamento já existente do Caixa.1client
    ExportarSelecaoexportar-selecao.tsx—1client
    FechamentoDiaBotaofechamento-dia-botao.tsx"Fechamento do dia" — resumo diário do Caixa pronto pra mandar no WhatsApp da Barbara (dona).1client
    FiltrosCaixaPainelfiltros-caixa.tsx—1client
    KpiCaixaCardkpi-caixa-card.tsxKPI mais informativo do Caixa. Um número principal, uma leitura de ritmo e uma linha de contexto, sem transformar o topo num painel de mini-cards.1server
    LancarCaixaBotaolancar-caixa-botao.tsxBotão "Lançamento rápido" — botão dividido (pedido do Victor 14/07/2026): clicar na parte principal abre DIRETO o lançamento individual (o caso mais comum); a setinha ao lado revela só a opção "Em …1client
    LancarCaixaDialoglancar-caixa-dialog.tsxLançamento rápido de Caixa — layout PDV em duas colunas, SEM scroll: formulário à esquerda, "cupom" da sessão à direita (padrão Square/Toast de tela de venda: entrada + ticket com total corrente).1client
    MenuKpimenu-kpi.tsxTrês pontinhos no canto de um KPI — guarda ações que pertencem àquele número mas não merecem um botão no topo da tela.1client
    ProjecaoCaixaprojecao-caixa.tsxProjeção do mês — bem mais afinada que a média ingênua: respeita dias úteis da loja (exclui domingo e feriados de Osasco), mostra vários métodos (piso/tendência/teto) e explica quais feriados ainda…1client
    QuemEditaSeletorquem-edita.tsx—1client
    SeletorMesseletor-mes.tsxSeletor de mês em grade (pedido do Victor 14/07/2026) — substitui o `<select>` nativo (lista comprida, difícil de escanear) por um popover com um calendário de meses por ano: 4 colunas × 3 linhas, …1client
    TagNfenfe-campo.tsxTag da tabela. Sutil de propósito (pedido do Victor): a maioria dos lançamentos NÃO tem nota — 29 em ~9,7 mil —, então ela precisa ser discreta o bastante pra não virar ruído nas outras linhas, e v…1client
    TagsPosicaotag-posicao.tsx—1server
    TaxasCartaoCardtaxas-cartao-card.tsx—1client
    TagPosicaoórfãotag-posicao.tsxUma tag. Use `TagsPosicao` pra renderizar a lista de um lançamento. */0server
  • components/admin/tarefas17 exports · 2 sem JSDoc · 1 órfão
    ComponenteO que éUsosCamada
    BotaoFotobotao-foto.tsxBotão de foto — sobe uma imagem existente ou, no celular, abre a câmera direto (`capture="environment"`; no desktop o atributo é ignorado e cai no seletor de arquivo normal).4client
    LinhaTarefalinha-tarefa.tsxLINHA compacta de tarefa — o átomo das visões Agenda e Idade.4client
    SeloPrazolinha-tarefa.tsxSelo de prazo/atraso — usado à direita na Agenda.3client
    CardTarefacard-tarefa.tsxCard de Tarefa/Demanda, no formato do Jira: barra de prioridade, TÍTULO primeiro, uma linha de meta e um rodapé com responsável e prazo.2client
    PreviewFotoPendentebotao-foto.tsxMiniatura de uma foto ainda não enviada (dialogs de criação), com botão de remover.2client
    CalendarioTarefascalendario-tarefas.tsxCalendário de Tarefas & Demandas — plota os itens pelo `prazo`.1client
    DrawerItemTarefadrawer-item-tarefa.tsxVisualização completa de um item (Fase 3) — abre a partir do clique num card do Kanban/Lista/Calendário.1client
    PainelReservapainel-reserva.tsx—1client
    TarefasShelltarefas-shell.tsxShell da página /admin/tarefas. Desde a expansão de 03/07/2026: 3 abas (Tudo/Internas/Apol, troca instantânea client-side), dashboard-filtro, busca + filtros rápidos, e 3 visões (Kanban/ Lista/Cale…1client
    ToolbarTarefastoolbar-tarefas.tsxBusca + filtros + seletor de visão (Kanban/Lista/Calendário) — TUDO numa linha só quando couber (pedido do Victor, 22/07/2026: a barra quebrava em duas e o seletor de visão caía sozinho numa segund…1client
    VisaoAgendavisao-agenda.tsxAGENDA — "o que é pra agora?". Uma coluna só, cortada por TEMPO em vez de categoria ou status: Atrasadas · Hoje · Amanhã · Resto da semana · Depois · Sem prazo. Sem navegação, sem mês pra escolher …1client
    VisaoComprasvisao-compras.tsxCOMPRAS — "o que está acabando, por quanto e onde a gente compra?".1client
    VisaoIdadevisao-idade.tsxIDADE — "o que está parado há tempo demais?".1client
    VisaoMapavisao-mapa.tsxMAPA — "onde os problemas se concentram?".1client
    VisaoPessoasvisao-pessoas.tsxPESSOAS — "quem está com o quê, e quem está afogado?".1client
    VisaoTabelavisao-tabela.tsx—1client
    DashboardTarefasórfãodashboard-tarefas.tsxDashboard-filtro no topo do módulo: cada card é uma contagem E um filtro — clicar aplica (clicar de novo remove).0client
  • components/admin/pessoas/ficha15 exports · 11 sem JSDoc
    ComponenteO que éUsosCamada
    AnelScorescore-card.tsxAnel SVG — o número grande da ficha.2server
    CompletudeCadastrocompletude-cadastro.tsxO PAINEL DE COMPLETUDE — o que já está preenchido e o que falta, com o motivo ao lado de cada campo vazio.2server
    AbasFichaabas-ficha.tsx—1client
    AcoesAdvertenciaacoes-advertencia.tsx—1client
    AvaliacaoFormavaliacao-form.tsxAVALIAÇÃO DO MÊS — seis réguas de 1 a 5, o destaque, a atenção e a meta.1client
    AvatarEditavelavatar-editavel.tsxA FOTO DA FICHA — clicável, abre o editor de avatar (o mesmo do "Meu perfil" e das Configurações: arrastar, colar, recortar em 512 WebP).1client
    DialogAdvertirdialog-advertir.tsx—1client
    DialogAnotarnotas-ficha.tsx—1client
    DialogOcorrenciadialog-ocorrencia.tsx—1client
    DialogReconhecerdialog-reconhecer.tsx—1client
    GraficoMesesgrafico-meses.tsx—1server
    InsightsFichainsights-ficha.tsx—1server
    LinhaDoTempolinha-do-tempo.tsx—1server
    ListaNotasnotas-ficha.tsx—1client
    ScoreCardscore-card.tsx—1server
  • components/admin/os11 exports · 7 sem JSDoc
    ComponenteO que éUsosCamada
    FichaOsSheetficha-os-sheet.tsx—2client
    VinculoProdutovinculo-produto.tsxLiga um serviço da OS a uma PEÇA do catálogo.2client
    EntradaRapidaVidroentrada-rapida-vidro.tsxEntrada rápida de item de vidro no PDV da OS — teclado em primeiro lugar.1client
    PainelFaixaOspainel-faixa-os.tsx—1client
    ReceberOsDialogreceber-os-dialog.tsx—1client
    SeletorVisaoseletor-visao.tsx—1client
    VisaoDiavisao-dia.tsx—1client
    VisaoFilavisao-fila.tsx—1client
    VisaoPatiovisao-patio.tsxO PÁTIO — a oficina vista de cima, nas 20 vagas que existem de verdade.1client
    VisaoTabelavisao-tabela.tsx—1client
    VisoesOsvisoes-os.tsxEscolhe a visão e é dono da FICHA pras visões que não são o quadro.1client
  • components/admin/lab9 exports · 9 sem JSDoc
    ComponenteO que éUsosCamada
    Miniaturaminiatura.tsx—2server
    HubLabhub-lab.tsx—1server
    LabCatalogolab-catalogo.tsx—1client
    LabDashboardslab-dashboards.tsx—1client
    LabListaslab-listas.tsx—1client
    LabMobilelab-mobile.tsx—1client
    LabRelatorioslab-relatorios.tsx—1client
    LabShelllab-shell.tsx—1client
    VariacoesNavegacaovariacoes-navegacao.tsx—1client
  • components/admin/produtos8 exports · 7 sem JSDoc
    ComponenteO que éUsosCamada
    LogoMontadoralogo-montadora.tsx—7server
    CelulaEditavelcelula-editavel.tsxCélula que vira input no clique — o gesto da planilha, que é o que a loja já sabe fazer (Victor, 22/07/2026: "tem que ser rápido e prático, porque a gente também vê e pode editar").1client
    DetalheProdutodetalhe-produto.tsx—1client
    FILTROS_VAZIOSpainel-filtros.tsx—1client
    ListaConsultaProdutoslista-consulta.tsx—1client
    PainelFiltrospainel-filtros.tsx—1client
    ReguaFiltrosregua-filtros.tsx—1client
    TabelaProdutostabela-produtos.tsx—1client
  • components/admin/relatorios6 exports · 2 sem JSDoc · 1 órfão
    ComponenteO que éUsosCamada
    RenderBlocoblocos-view.tsx—2client
    TimbreImpressaotimbre-impressao.tsxTIMBRE — só existe no papel (`hidden print:block`).2server
    PainelInteligenciaViewpainel-inteligencia.tsxTela do módulo Inteligência — 5 seções numa página só (scroll), na ordem em que o dono decide: o que aconteceu → pra onde vai → quem/o quê produz → estudos → o que fazer a respeito.1client
    RelatorioViewrelatorio-view.tsxView genérica da Central de Relatórios: recebe um `Relatorio` (lista de blocos já calculados no servidor) e desenha cada bloco com o widget do Design System certo.1client
    SeletorPeriodoseletor-periodo.tsxSeletor de período da Central de Relatórios.1client
    KpiCardórfãoblocos-view.tsx—0client
  • components/admin/acessos5 exports · 2 sem JSDoc
    ComponenteO que éUsosCamada
    LinkConviteModallink-convite-modal.tsxMostra o link de acesso recém-gerado (convite ou reenvio).2client
    ConvidarMembroDialogconvidar-membro-dialog.tsx—1client
    EditarMembroDialogeditar-membro-dialog.tsxEdita nome e perfil de um membro.1client
    GerenciarPerfisDialoggerenciar-perfis-dialog.tsx"Gerenciar perfis" — CRUD de perfis de acesso (Fase 2 do RBAC).1client
    ListaMembroslista-membros.tsx—1client
  • components/admin/apolo5 exports · 3 sem JSDoc
    ComponenteO que éUsosCamada
    SeloApolomarca-apolo.tsxSelo do chat — o "a·" em bloco escuro, o ponto em âmbar da marca.4client
    ApoloShellapolo-shell.tsx—1client
    ArquivosApoloarquivos-apolo.tsx—1client
    ChatApolochat-apolo.tsx—1client
    IconeApolomarca-apolo.tsxÍcone do menu — assinatura compatível com os ícones lucide (className, strokeWidth, ref) pra entrar no `SidebarAdminItem.icon` sem adaptador.1client
  • components/admin/fila5 exports · 1 sem JSDoc
    ComponenteO que éUsosCamada
    PulsoFilapulso-fila.tsxAtualização automática da FILA DA APOL.2client
    BlocoFilabloco-fila.tsxO BLOCO DA FILA DENTRO DA FICHA DO CARD.1client
    ChipFilamarca-fila.tsx—1client
    FaixaFilamarca-fila.tsxA faixa de "é a sua vez". Fica no rodapé do card, colada nas bordas — por isso o `-mx` e o `-mb` compensando o padding do card.1client
    MelhoriasShellmelhorias-shell.tsxMELHORIAS — o catálogo do que foi pedido, com o veredito de cada um, e a FILA de atendimento da Apol.1client
  • components/admin/notas5 exports · 2 sem JSDoc
    ComponenteO que éUsosCamada
    AcoesNotaacoes-nota.tsxAções de uma nota. Cada botão só aparece quando faz sentido pro estado: rascunho/rejeitada podem ser transmitidas; emitida só pode ser cancelada (com justificativa — a SEFAZ exige 15+ caracteres); …1client
    FormNotaManualform-nota-manual.tsx—1client
    ImpressaoCupomimpressao-cupom.tsxImpressão do cupom (DANFE NFC-e) na impressora térmica do balcão.1client
    TabelaClassificacaotabela-classificacao.tsx—1client
    VendasPendentesNfvendas-pendentes-nf.tsxFila "vendas marcadas para NF" — o elo que faltava entre o Caixa e o fisco.1server
  • components/admin/novidades5 exports · 2 sem JSDoc
    ComponenteO que éUsosCamada
    BarraReacoesreacoes.tsxBarra de reação — a única forma de a loja responder "isso aqui me serviu".2client
    DetalheNovidadedetalhe-novidade.tsx—1client
    DialogNovaNovidadedialog-nova-novidade.tsxRegistrar novidade na mão (só perfil `apol`).1client
    NovidadesShellnovidades-shell.tsx—1client
    PulsoNovidadespulso-novidades.tsxO "atualiza em tempo real" da tela de Novidades — e o carimbo de leitura que sustenta o selo "novo pra você".1client
  • components/admin/orcamentos5 exports · 2 sem JSDoc
    ComponenteO que éUsosCamada
    CardOrcamentocard-orcamento.tsx—1client
    DialogNovoOrcamentodialog-novo-orcamento.tsxAbertura de orçamento pelo balcão.1client
    DrawerOrcamentodrawer-orcamento.tsxFicha do orçamento — abre ao clicar num card do Kanban.1client
    ExportarOrcamentoexportar-orcamento.tsx—1client
    OrcamentosShellorcamentos-shell.tsxShell de /admin/orcamentos. Kanban do fluxo de cotação (Cotação → Enviado → Aprovado → Encomendado → Peça instalada), usando o QuadroKanban compartilhado — o mesmo tabuleiro da OS e de Tarefas. Dua…1client
  • components/admin/relatorios/vivo4 exports · 1 sem JSDoc
    ComponenteO que éUsosCamada
    CartaoVivoBlococartao-vivo.tsx—2client
    CartoesRestohub-vivo.tsxOs cartões que chegam depois (pessoas, operação, estoque, fechamento).1client
    FaixaAlertashub-vivo.tsxO que apareceu ao clicar num dia.1client
    HubVivohub-vivo.tsxO que apareceu ao clicar num dia.1client
  • components/admin/whats4 exports · 1 sem JSDoc
    ComponenteO que éUsosCamada
    DialogDestinatariodialogs-whats.tsxOs dois formulários da Central de WhatsApp, no bottom sheet padrão da casa (RBAC F5: todo modal do admin é sheet no celular e caixa centrada no desktop).1client
    DialogEnviodialogs-whats.tsxnull = criando. */ destinatario: Destinatario | null; onFechar: () => void; onSalvo: () => void; }) { const [nome, setNome] = React.useState(destinatario?.nome ?? ""); const [fone, setFone] = React…1client
    DialogModelodialog-modelo.tsxEditor do TEXTO das mensagens automáticas (Victor, 29/07/2026: "traga as mensagens como template para que eu possa editar tudo").1client
    PainelWhatspainel-whats.tsx—1client
  • components/admin/compras3 exports · 3 sem JSDoc
    ComponenteO que éUsosCamada
    ComprasShellcompras-shell.tsx—1client
    ListaPedidoslista-pedidos.tsx—1client
    PainelReposicaoClientepainel-reposicao.tsx—1client
  • components/admin/inventario3 exports · 1 sem JSDoc
    ComponenteO que éUsosCamada
    IniciarInventarioButtoniniciar-button.tsx—2client
    ContagemInventariocontagem.tsxTela de contagem — mobile-first pra usar andando pela loja.1client
    InventarioDashboardHubdashboard-hub.tsxHub de inventário embutido na dashboard do estoque — é aqui que a contagem física começa.1server
  • components/admin/relatorios/fechamento3 exports · 1 sem JSDoc
    ComponenteO que éUsosCamada
    AssinaturaFechamentoassinatura-fechamento.tsxA ASSINATURA — o que separa "olhei os números" de "encerrei o mês".1client
    ChecklistFechamentochecklist-fechamento.tsx—1client
    FechamentoViewfechamento-view.tsxA CASCA do Fechamento do Mês. O dossiê é longo por natureza — sete áreas, dezenas de blocos. Duas coisas o tornam navegável em vez de intimidante: 1. **O herói responde antes de rolar.** Receita, v…1client
  • components/admin/configuracoes2 exports · 2 sem JSDoc
    ComponenteO que éUsosCamada
    ListaErroslista-erros.tsx—1client
    NavConfiguracoesnav-configuracoes.tsx—1client
  • components/admin/painel2 exports · 1 sem JSDoc
    ComponenteO que éUsosCamada
    BannerInsightsbanner-insights.tsx—1client
    LembretesDoDialembretes-do-dia.tsxLEMBRETES DO DIA — o bloco de "você já conferiu?".1server
  • components/admin/tarefas/dialogs2 exports · 0 sem JSDoc
    ComponenteO que éUsosCamada
    NovaDemandaApolDialognova-demanda-apol-dialog.tsxExtraído de components/admin/tarefas/painel-demandas-apol.tsx em 03/07/2026, e convertido pra bottom sheet SEMPRE (mobile e desktop) — mesmo esqueleto do nova-os-wizard.tsx.1client
    NovaTarefaInternaDialognova-tarefa-interna-dialog.tsxExtraído de components/admin/tarefas/painel-tarefas-internas.tsx em 03/07/2026, e em 03/07/2026 (mesmo dia, sprint seguinte) convertido pra bottom sheet SEMPRE (mobile e desktop) — mesmo esqueleto …1client
  • components/admin/assinatura1 export · 1 sem JSDoc
    ComponenteO que éUsosCamada
    PainelAssinaturapainel-assinatura.tsx—1client
  • components/admin/atendentes1 export · 1 sem JSDoc
    ComponenteO que éUsosCamada
    ListaAtendenteslista-atendentes.tsx—1client
  • components/admin/notificacoes1 export · 1 sem JSDoc
    ComponenteO que éUsosCamada
    CentralNotificacoescentral-notificacoes.tsx—1client
  • components/admin/ponto1 export · 0 sem JSDoc
    ComponenteO que éUsosCamada
    AutoRefreshPontoauto-refresh-ponto.tsxMantém a tela de ponto "quase ao vivo" sem precisar de canal realtime: a cada intervalo, re-busca os dados do servidor (Server Component re-renderiza com as marcações mais recentes).2client
  • components/admin/troca-perfil1 export · 1 sem JSDoc
    ComponenteO que éUsosCamada
    TrocaPerfiltroca-perfil.tsx—1client
  • components/admin/veiculos1 export · 1 sem JSDoc
    ComponenteO que éUsosCamada
    BuscaVeiculobusca-veiculo.tsx—3client

Produto e peças avulsas · 102 de 530 · 13 órfãos

App do funcionário, canal Apol×Alemão, caixa, login, intros, demos. Módulos pequenos, cada um com uma missão só.

  • components/central30 exports · 19 sem JSDoc · 4 órfãos
    ComponenteO que éUsosCamada
    Cui.tsxRenderiza no <body> (escapa de qualquer ancestral com transform/stacking), garantindo fixed em tela cheia.9client
    Btnui.tsxBotão primário (gold + texto escuro = contraste alto).6client
    Cardui.tsxAvatar por papel: Apol (gold) / Alemão (azul).6client
    Badgeui.tsx—5client
    RoleAvatarui.tsxAvatar por papel: Apol (gold) / Alemão (azul).5client
    SectionTitleui.tsx—5client
    Pillui.tsxPill de seleção (toggle). */4client
    CAT_ORDERui.tsx—3client
    CATSui.tsxRenderiza no <body> (escapa de qualquer ancestral com transform/stacking), garantindo fixed em tela cheia.3client
    EmptyStateui.tsx—3client
    Drawerui.tsxPainel lateral que desliza da DIREITA (estilo "side sheet").2client
    KBui.tsx—2client
    KB_ORDERui.tsx—2client
    PRIO_ORDERui.tsx—2client
    PRIOSui.tsx—2client
    ApolMarkui.tsxLogo "a·" da Apol. O foco é o PONTO laranja, que pulsa indicando "ao vivo". `vigor` (0..1) controla a força do pulso: quanto MENOS pendências, mais forte e rápido pulsa (canal "trabalhando bem"). C…1client
    Arquivosarquivos.tsx—1client
    Billingbilling.tsx—1client
    Conversachat.tsx—1client
    Dashboarddashboard.tsx—1client
    Guiaguia.tsx—1client
    NovoPedidoboard.tsxPílula "na mão de quem" — quem precisa agir (devolutiva).1client
    Pendenciaspendencias.tsx—1client
    Portalportal.tsx—1client
    Quadroboard.tsx—1client
    Tarefastarefas.tsx—1client
    CatChipórfãoui.tsx—0client
    MaoPillórfãoboard.tsxPílula "na mão de quem" — quem precisa agir (devolutiva).0client
    Modalórfãoui.tsxModal responsivo: centralizado no desktop, bottom-sheet no mobile.0client
    PrioBadgeórfãoui.tsx—0client
  • components/ponto19 exports · 3 sem JSDoc
    ComponenteO que éUsosCamada
    StatCardstat-card.tsxStatCard — card branco com ícone colorido + label + valor grande.20server
    BottomNavbottom-nav.tsxBottomNav — pill preta arredondada com 4 itens.2client
    CardProximaMarcacaocard-proxima-marcacao.tsxCardProximaMarcacao — CTA principal da Home funcionário.2client
    DataPickerPillsdata-picker-pills.tsxDataPickerPills — filtro de período tipo segmented control.2client
    Fabfab.tsxFAB — Float Action Button (relógio amarelo).2client
    HeaderAppheader-app.tsxHeaderApp — barra superior das telas do funcionário.2server
    CalendarioMescalendario-mes.tsxCalendário com abas Semana/Mês — vem sempre na aba Semana com HOJE pré-selecionado (o mais usado no dia a dia); "Mês" mostra o grid inteiro com bolinhas de status.1client
    CestaCardcesta-card.tsxCard da cesta básica na home do funcionário.1server
    CLASSE_DOTcesta-card.tsx—1server
    DarCienciaButtondar-ciencia-button.tsx—1client
    FuncionarioNavfuncionario-nav.tsxNav inferior do funcionário. Client (BottomNav recebe ícones lucide, que não atravessam RSC→CSR como prop, e usa usePathname). Recebe só o slug — o guard de sessão fica no layout server. Sem aba "C…1client
    HomeInstallBannerhome-install-banner.tsxBanner de instalação do PWA na Home.1client
    MetaBatidaCelebracaometa-batida-celebracao.tsxCelebração de META BATIDA na tela de sucesso do ponto (pedido do Victor em 29/07/2026: "tem que ser especial...1client
    PontoCadastroFormponto-cadastro-form.tsxTela inteira de autocadastro do funcionário (não só o `<form>`) — precisa ser client component porque o CTA "Enviar cadastro" fica numa barra `shrink-0` fixa embaixo (nunca `position:fixed`: isso c…1client
    PontoLoginFormponto-login-form.tsxTela inteira de login do funcionário (não só o `<form>`) — precisa ser client component porque o CTA "Entrar" fica numa barra `shrink-0` fixa embaixo (nunca `position:fixed`: isso cobria conteúdo s…1client
    PrimeiroAcessoFormprimeiro-acesso-form.tsxTela inteira do 1º acesso (não só o `<form>`) — precisa ser client component porque o CTA "Criar senha e entrar" fica numa barra `shrink-0` fixa embaixo (nunca `position:fixed`: isso cobria conteúd…1client
    PushNotificationsCardpush-notifications-card.tsxCard de ativação de push notifications no Perfil.1client
    ROTULO_DOTcesta-card.tsxO que cada cor quer dizer — a legenda da trilha, escrita uma vez só.1server
    TrocarRecompensaButtontrocar-recompensa-button.tsx—1client
  • components/demos11 exports · 9 sem JSDoc
    ComponenteO que éUsosCamada
    DemoShelldemo-shell.tsxShell do bloco de demo — FRAME TRAVADO (estático, altura fixa), com a IDENTIDADE do cliente: superfície clara pros apps enterprise, dark premium pro Amatch.5client
    AlemaoDemoalemao-demo.tsx—2client
    AlemaoMarkdemo-brands.tsxMarcas dos clientes pra o header de cada demo — wordmarks/símbolos com a identidade de cada um.1server
    AmatchDemoamatch-demo.tsx—1client
    AmatchMarkdemo-brands.tsx—1server
    KairosDemokairos-demo.tsx—1client
    KairosMarkdemo-brands.tsx—1server
    MosaicDemomosaic-demo.tsx—1client
    MosaicMarkdemo-brands.tsx—1server
    PecafacilDemopecafacil-demo.tsx—1client
    PecafacilMarkdemo-brands.tsx—1server
  • components/apol-temple7 exports · 5 sem JSDoc · 1 órfão
    ComponenteO que éUsosCamada
    ApolTempleapol-temple.tsxFaixa de meandro (grega) no rodapé.1client
    COLUNA_SVGgreek-art.tsx—1server
    GreekArtgreek-art.tsxWrapper genérico: injeta a arte e deixa o `.greek-svg` dimensionar.1server
    LOURO_SVGgreek-art.tsx—1server
    SOL_SVGgreek-art.tsx—1server
    TEMPLO_SVGgreek-art.tsx—1server
    MEANDRO_SVGórfãogreek-art.tsx—0server
  • components/intro6 exports · 2 sem JSDoc · 4 órfãos
    ComponenteO que éUsosCamada
    INTRO_BY_IDintro-variants.tsx—2client
    INTRO_VARIANTSintro-variants.tsx—1client
    ArcoIntroórfãointro-variants.tsxVariações de animação de intro/loader da Apol.0client
    DrawOnIntroórfãointro-variants.tsxVariações de animação de intro/loader da Apol.0client
    IrisIntroórfãointro-variants.tsxVariações de animação de intro/loader da Apol.0client
    SunriseFillIntroórfãointro-variants.tsxVariações de animação de intro/loader da Apol.0client
  • components/auto-atendimento5 exports · 2 sem JSDoc · 1 órfão
    ComponenteO que éUsosCamada
    FormShellform-shell.tsxWrapper visual padrão pras telas internas de Auto-atendimento.7server
    FieldStackform-shell.tsx—5server
    SubmitFeedbacksubmit-feedback.tsx—4client
    ServicoCardservico-card.tsxCard grande de serviço (na home do auto-atendimento).1server
    AutoAtendimentoWidgetórfãowidget-home.tsxWidget compacto pra home — mostra "X solicitações em andamento" ou convite pra resolver coisas no auto-atendimento.0server
  • components/seo4 exports · 0 sem JSDoc
    ComponenteO que éUsosCamada
    LdFaqdados-estruturados.tsxFAQ da página — só chame onde as perguntas estão realmente renderizadas.3server
    LdServicodados-estruturados.tsxUm serviço ofertado (usado nas LPs de nicho e na /marca).2server
    LdTrilhadados-estruturados.tsxTrilha de navegação — dá o caminho na SERP em vez da URL crua.2server
    LdOrganizacaodados-estruturados.tsxIdentidade da empresa + busca do site.1server
  • components/sistema4 exports · 4 sem JSDoc
    ComponenteO que éUsosCamada
    SistemaCtasistema-sections.tsx—1client
    SistemaHerosistema-sections.tsx—1client
    SistemaModulossistema-sections.tsx—1client
    SistemaPersonalizadosistema-sections.tsx—1client
  • components/apol-explainer3 exports · 3 sem JSDoc · 2 órfãos
    ComponenteO que éUsosCamada
    SunCanvassun-canvas.tsx—1client
    ApolExplainerórfãoapol-explainer.tsx—0client
    SunSceneórfãosun-scene.tsx—0client
  • components/gamificacao3 exports · 0 sem JSDoc · 1 órfão
    ComponenteO que éUsosCamada
    BadgeCardbadge-card.tsxCard de badge — colorido quando conquistada, cinza+ícone de cadeado quando bloqueada.1client
    NivelCardnivel-card.tsxCard destaque com nível atual, progresso pro próximo, streak e posição no ranking.1server
    GamificacaoWidgetórfãowidget-home.tsxWidget compacto pra home do funcionário.0server
  • components/caixa2 exports · 2 sem JSDoc
    ComponenteO que éUsosCamada
    MetaProgressometa-progresso.tsx—2client
    ConfettiFestaconfetti-festa.tsx—1client
  • components/cases2 exports · 0 sem JSDoc
    ComponenteO que éUsosCamada
    CaseCardcase-card.tsxCard padrão (sóbrio) pra um case.3server
    CaseHighlightCardcase-card.tsxVariante grande pro case âncora (Alemão), com métricas e CTA.1server
  • components/login2 exports · 2 sem JSDoc
    ComponenteO que éUsosCamada
    AdminLoginFormadmin-login-form.tsx—1client
    FuncionalidadesSliderfuncionalidades-slider.tsx—1client
  • components/brand1 export · 0 sem JSDoc
    ComponenteO que éUsosCamada
    AppIconArtapp-icon-art.tsxArte do ícone do app (PWA / favicon).4server
  • components/diagnostico1 export · 1 sem JSDoc
    ComponenteO que éUsosCamada
    DiagnosticoWizarddiagnostico-wizard.tsx—1client
  • components/ficha1 export · 1 sem JSDoc
    ComponenteO que éUsosCamada
    FichaClienteindex.tsx—1client
  • components/precos1 export · 1 sem JSDoc
    ComponenteO que éUsosCamada
    FormContatoPrecosform-contato.tsx—1client

Landings e LPs · 75 de 530 · 14 órfãos

Páginas de venda e variantes de teste. É a família com mais órfão por natureza: variante que perdeu o teste continua no disco.

  • components/landing-dark27 exports · 14 sem JSDoc
    ComponenteO que éUsosCamada
    Revealmotion-primitives.tsxReveal: fade + slide up quando entra no viewport.34client
    FooterDarkfooter-dark.tsx—18server
    ApolLogoapol-logo.tsxLogo "a·" da Apol — SVG inline. A letra `a` no `fill` que receber, e o círculo laranja sempre fixo na cor da marca. Use `fill="white"` em fundos escuros, `fill="#1B1B1B"` em fundos claros.17server
    NoiseOverlaybackground-fx.tsxNoise overlay — textura grão sutil.15client
    HeaderDarkheader-dark.tsxHeader minimalista e sem borda. - No topo: só o logo, em destaque, sobre fundo transparente. - Ao rolar: um backdrop com blur surge *feathered* (sem linha dura) e a navegação + ações fazem fade-in.…12client
    FloatingCtafloating-cta.tsxFloating CTA — botão fixo bottom-right que aparece após sair do hero.11client
    Magneticmotion-primitives.tsxMagnetic button: o conteúdo é atraído pelo cursor dentro de um raio.11client
    CtaDarkcta-dark.tsx—7client
    Tiltmotion-primitives.tsxTilt 3D que segue o cursor. Suave (spring), com perspective. `intensity` controla quantos graus rotaciona no máximo.4client
    ApolDotsFieldbackground-fx.tsx—3client
    CountUpmotion-primitives.tsxCount-up: número que conta do 0 até `to` quando entra no viewport.3client
    GradientMeshbackground-fx.tsxEfeitos de fundo da landing dark.3client
    StarFieldbackground-fx.tsx—3client
    SystemStacksystem-stack.tsxSystemStack — várias telas do sistema empilhadas em 3D pra mostrar a amplitude da Apol (dashboard, OS kanban, app funcionário).3client
    CasesPreviewDarkcases-preview-dark.tsxPrévia de cases na home. Por padrão (variante /v1) mostra os outros produtos além do Alemão; aceita props pra reusar na home de consultoria com um recorte e título próprios.2server
    ClientsTestimonialsDarkclients-testimonials-dark.tsx—2client
    ComparisonDarkcomparison-dark.tsx—2client
    FaqDarkfaq-dark.tsx—2client
    IntegrationsDarkintegrations-dark.tsx—2client
    ModulesDarkmodules-dark.tsx—2client
    PerspectiveGridbackground-fx.tsxGrid em perspectiva (estilo Vercel).2client
    StatsDarkstats-dark.tsx—2client
    ApolLogoRevealapol-logo-reveal.tsx—1client
    CaseDarkcase-dark.tsx—1client
    HeroDarkhero-dark.tsxHero da landing dark. Full-bleed com: - Background: mesh amarelo Apol animado + grid em perspectiva - Type: display gigante com gradient + 2 acentos coloridos - Card 3D tilt em cima de gradient fra…1client
    HowItWorksDarkhow-it-works-dark.tsx—1client
    ManifestoDarkmanifesto-dark.tsx—1client
  • components/landing-c14 exports · 8 sem JSDoc
    ComponenteO que éUsosCamada
    ApoloCsections-c.tsxSeções da versão C — estrutura da B, mas 100% na paleta Apol, com a estátua de Apolo como personalidade e motion de zoom/acender.1client
    ClientesCsections-c.tsx—1client
    CtaCsections-c.tsxSeções da versão C — estrutura da B, mas 100% na paleta Apol, com a estátua de Apolo como personalidade e motion de zoom/acender.1client
    DepoimentosCsections-c.tsx—1client
    GridCsections-c.tsx—1client
    HeaderCheader-c.tsx—1client
    HeroCsections-c.tsxSeções da versão C — estrutura da B, mas 100% na paleta Apol, com a estátua de Apolo como personalidade e motion de zoom/acender.1client
    LightUpOnScrollmotion-c.tsx"Acender": o item entra apagado (cinza/escuro) e ganha cor + luz + escala conforme sobe na tela.1client
    ProblemaCsections-c.tsx—1client
    SistemaCsections-c.tsx—1client
    StatsCsections-c.tsx—1client
    SunDiscOnScrollmotion-c.tsxDisco-sol atrás da estátua: cresce e esquenta junto.1client
    WhiteLabelCwhite-label-c.tsx—1client
    ZoomOnScrollmotion-c.tsxZoom conforme o elemento atravessa a viewport.1client
  • components/landing-consultoria13 exports · 8 sem JSDoc · 7 órfãos
    ComponenteO que éUsosCamada
    Bancadabancada.tsx—1client
    FrentesConsultoriafrentes-consultoria.tsx—1client
    HeroConsultoriahero-consultoria.tsxHero da home — o texto à esquerda, o produto RODANDO à direita.1client
    Sparklessparkles.tsx—1client
    StatementConsultoriastatement-consultoria.tsxSeção de posicionamento com personalidade — frase grande, ambiciosa, com o "a·" gigante de marca-d'água.1server
    SystemHighlightConsultoriasystem-highlight-consultoria.tsxDestaque do sistema na home de consultoria.1client
    ApproachConsultoriaórfãoapproach-consultoria.tsx—0server
    AudienceConsultoriaórfãoaudience-consultoria.tsx—0server
    BannerConsultoriaórfãobanner-consultoria.tsxBanner visual editorial estilo SAP: foto grande + frase de posicionamento + widget de UI flutuante.0server
    LiveDemoConsultoriaórfãolive-demo-consultoria.tsx—0client
    MarqueeConsultoriaórfãomarquee-consultoria.tsxFaixa cinética com as frentes da Apol rolando — duas linhas em sentidos opostos, com o ponto da marca como separador.0client
    ProductTourConsultoriaórfãoproduct-tour-consultoria.tsx—0client
    ServicesConsultoriaórfãoservices-consultoria.tsx—0server
  • components/landing-b9 exports · 7 sem JSDoc
    ComponenteO que éUsosCamada
    ClientesBsections-b.tsx—1client
    CtaBsections-b.tsxPainel claro em moldura de browser — CSS puro, acentos dourados.1client
    DepoimentosBsections-b.tsx—1client
    GridBsections-b.tsx—1client
    HeaderBheader-b.tsx—1client
    HeroBsections-b.tsxEyebrow com o disco-sol gradiente — o "·" da logo viajando pela página.1client
    ProblemaBsections-b.tsx—1client
    SistemaBsections-b.tsx—1client
    StatsBsections-b.tsx—1client
  • components/landing7 exports · 2 sem JSDoc · 7 órfãos
    ComponenteO que éUsosCamada
    CaseSectionórfãocase-section.tsxSeção de cases. Hoje destaca Alemão Auto Vidros (primeira cliente). Quando vierem outras, vira grid.0server
    CtaSectionórfãocta-section.tsxBloco de CTA final — fim de página, antes do footer.0server
    FeatureGridórfãofeature-grid.tsxGrid de features — usado nas seções "O que você ganha" e "Para cada papel".0server
    Heroórfãohero.tsxHero — Apol como produto único. A Apol é o sistema completo white-label. Operação, equipe, financeiro e fiscal vivem dentro do mesmo sistema, com o nome do cliente na cara.0server
    LandingFooterórfãolanding-shell.tsx—0server
    LandingHeaderórfãolanding-shell.tsx—0server
    ModulesGridórfãomodules-grid.tsx"O que tem dentro" — apresenta a Apol como sistema único, com frentes operacionais conectadas: operação, financeiro, fiscal e pessoas (com ponto eletrônico legal embutido).0server
  • components/landing-enterprise3 exports · 2 sem JSDoc
    ComponenteO que éUsosCamada
    HeroEnterprisehero-enterprise.tsxVariante B (enterprise) do hero.1client
    PlatformEnterpriseplatform-enterprise.tsx—1server
    SecurityEnterprisesecurity-enterprise.tsx—1server
  • components/lp2 exports · 2 sem JSDoc
    ComponenteO que éUsosCamada
    BrandLPViewbrand-lp.tsx—1server
    NicheLPViewniche-lp.tsx—1server

Sites públicos · 37 de 530 · 14 órfãos

O site do Alemão no ar e as versões de cliente que ficaram pelo caminho. Aqui vive a linguagem da marca — tokens, vidro, padrão gráfico.

  • components/site-alemao23 exports · 13 sem JSDoc · 1 órfão
    ComponenteO que éUsosCamada
    JsonLdseo.tsx—13server
    SiteShellshell.tsx—13server
    BotaoWhatsAppui.tsxRecorte "adesivo": contorno branco grosso + sombra de destaque (a linguagem do emblema).12client
    Revealui.tsxRevela o bloco ao entrar na viewport.12client
    SeloOrigemui.tsxRecorte "adesivo": contorno branco grosso + sombra de destaque (a linguagem do emblema).12client
    LinkTelefoneui.tsx—10client
    IconeServicoui.tsx—8client
    LinkComoChegarui.tsx—6client
    Pilaresui.tsx—5client
    Emblemaemblema.tsxEmblema circular da marca — a arte oficial aprovada pelo cliente (public/brand/alemao-emblema-circular.png), renderizada como imagem.3server
    Marqueeui.tsxRevela o bloco ao entrar na viewport.3client
    SELO_STICKERui.tsxRecorte "adesivo": contorno branco grosso + sombra de destaque (a linguagem do emblema).3client
    Contadorui.tsxRevela o bloco ao entrar na viewport.2client
    TituloRotativoui.tsxRevela o bloco ao entrar na viewport.2client
    AlemaoHomehome.tsx—1server
    FormOrcamentoform-orcamento.tsx—1client
    Ga4ga.tsx—1client
    ParallaxYui.tsxRevela o bloco ao entrar na viewport.1client
    SegueMouseui.tsxRevela o bloco ao entrar na viewport.1client
    SiteFooterfooter.tsx—1server
    SiteHeaderheader.tsx—1client
    WhatsAppFlutuantewhatsapp-flutuante.tsx—1client
    GA4_IDórfãoga.tsx—0client
  • components/site-cliente12 exports · 2 sem JSDoc · 11 órfãos
    ComponenteO que éUsosCamada
    WhatsAppIconwhatsapp-icon.tsxÍcone oficial do WhatsApp (glifo de marca, não um ícone genérico de "balão de mensagem" como o `MessageCircle` do lucide-react que os CTAs usavam antes).11server
    AbToggleórfãoab-toggle.tsxPílula flutuante pra alternar entre as versões do site público: A (glass claro) = pathname; B (azul seguro) = ?v=b; C (cartaz de oficina, Fable 5) = ?v=c.0client
    CtaFinalórfãosections.tsxHero principal — foto real de carro mostrando parabrisa.0client
    Depoimentoórfãosections.tsxHero principal — foto real de carro mostrando parabrisa.0client
    FooterClienteórfãosections.tsxHero principal — foto real de carro mostrando parabrisa.0client
    HeroClienteórfãosections.tsx—0client
    Localizacaoórfãosections.tsxHero principal — foto real de carro mostrando parabrisa.0client
    Marcasórfãosections.tsxHero principal — foto real de carro mostrando parabrisa.0client
    NavClienteórfãosections.tsxHero principal — foto real de carro mostrando parabrisa.0client
    Servicosórfãosections.tsx—0client
    SitePremiumórfãosite-premium.tsxPilares — Qualidade · Agilidade · Confiança.0client
    Sobreórfãosections.tsxHero principal — foto real de carro mostrando parabrisa.0client
  • components/site-cliente-azul1 export · 0 sem JSDoc · 1 órfão
    ComponenteO que éUsosCamada
    SiteSeguroAzulórfãoindex.tsxEscudo com check + brilho neon (motivo da identidade).0client
  • components/site-cliente-vitrine1 export · 0 sem JSDoc · 1 órfão
    ComponenteO que éUsosCamada
    SiteVitrineórfãoindex.tsxReveal com fallback: nunca deixa conteúdo invisível se o observer falhar.0client

Base do DS · 32 de 530

components/ui, components/shared e components/theme. É a família que sustenta todas as outras — e, como a lista abaixo mostra, a menor de todas.

  • components/ui18 exports · 9 sem JSDoc
    ComponenteO que éUsosCamada
    Buttonbutton.tsx—128server
    Cardcard.tsxCard — superfície de vidro padrão do design system.122server
    Inputinput.tsxInput — h-12, radius md (16px), border line, focus border-blue.60server
    Badgebadge.tsx—59server
    Labellabel.tsx—29client
    MaskedCurrencyInputmasked-currency-input.tsxCampo de valor estilo maquininha de cartão: cada dígito digitado empurra os centavos pra esquerda ("21015" → "210,15").10client
    PasswordInputpassword-input.tsxInput de senha com olho pra mostrar/esconder — todo campo que lida com senha no sistema usa este componente (regra do usuário em 06/07/2026).5client
    Progressprogress.tsxBarra de progresso simples. Tom muda automaticamente quando o caller decide (ex.: ficha de documentos: vermelho < 60, azul 60-99, verde 100).4server
    Switchswitch.tsxToggle on/off acessível (role="switch").4client
    Skeletonskeleton.tsxBloco pulsante genérico pra estados de carregamento — primeira peça do Design System consolidado (Alert/Empty/Skeleton/Table/Dialog).3server
    UppercaseInputuppercase-input.tsxInput que já sobe em maiúsculas enquanto digita (igual o autocapitalize do iPhone) — usado só no título de tarefas/demandas, por pedido do usuário (06/07/2026).3client
    Abasabas.tsx—2client
    AbasBotaoabas.tsxA mesma régua, para abas que NÃO navegam (trocam estado na própria tela).2client
    CardContentcard.tsx—1server
    CardDescriptioncard.tsx—1server
    CardFootercard.tsx—1server
    CardHeadercard.tsx—1server
    CardTitlecard.tsx—1server
  • components/shared10 exports · 1 sem JSDoc
    ComponenteO que éUsosCamada
    Avataravatar.tsxAvatar — círculo com gradient azul Alemão e iniciais brancas.31server
    LogoEmpresalogo-empresa.tsxLogoEmpresa — container "cartão branco" para um logo (cliente ou Apol).18server
    EmptyStateempty-state.tsxEmptyState — sempre que uma lista/seção está vazia, sugere uma próxima ação.12server
    ApolMarkapol-mark.tsxMarca "a·" da Apol (do source Group 8.svg).4server
    AvatarAtendenteavatar-atendente.tsx—4server
    GlassPasswordInputglass-password-input.tsxVariante do "glass input" (fundo translúcido sobre azul, usado no login do funcionário e no console Apol) com olho pra mostrar/esconder a senha.3client
    InstalarAppPassosinstalar-app-passos.tsxPasso a passo manual de instalação, por plataforma.2client
    PwaInstallButtonpwa-install-button.tsxBotão de instalação PWA no Perfil.2client
    VersiculoLinhaversiculo.tsxA linha do versículo — uma só, discreta, em qualquer canto do sistema.2server
    RegistrarSWregistrar-sw.tsxRegistra o service worker assim que o app abre.1client
  • components/theme4 exports · 1 sem JSDoc
    ComponenteO que éUsosCamada
    MotionProvidermotion-provider.tsxHonra prefers-reduced-motion em TODO framer-motion do app, do jeito SSR-safe: `reducedMotion="user"` desliga animações de transform/layout pra quem pediu menos movimento, mantendo fades de opacidad…1client
    SunriseIntrosunrise-intro.tsx—1client
    ThemeProvidertheme-provider.tsxAplica data-theme no <html> e persiste em localStorage.1client
    ThemeToggletheme-toggle.tsxBotão de alternância dark ↔ light.1client

Dívida do sistema

O inventário não serve só pra listar: ele expõe o que está torto. Estes quatro números não foram escolhidos — eles caíram da varredura.

O que o inventário revelaTamanhoO que fazer
Componente sem JSDoc265 de 530 (50%)Uma frase acima do export já vira documentação: a coluna "O que é" desta página se preenche sozinha. Regra prática: componente que você encostar, você documenta.
Órfão (zero importadores)49 (9%)Cada um é uma decisão do PO: aposenta ou volta a usar. Órfão que fica sem decisão vira armadilha — alguém copia dele achando que é o padrão vigente.
Usado em um lugar só308 (58%)Não é defeito: peça de tela é assim. Vira defeito quando duas telas resolvem a mesma coisa cada uma com a sua — é onde nasce primitiva duplicada.
Nome exportado por mais de um arquivo9 nomes · 19 exportsO sintoma mais barato de detectar e o mais caro de conviver: dá pra importar o errado sem erro de tipo. Ver a tabela abaixo.

Homônimos

O mesmo nome saindo de arquivos diferentes. O import decide qual você levou, e o autocomplete não avisa. Onde há um lado com uso dominante, o outro lado é candidato a aposentar.

NomeOnde vive (por uso)
Campo
  • components/admin/pessoas/rh-dialog-shell.tsx · 9 usos
  • components/admin/shared/campo.tsx · 8 usos
  • components/admin/marketing/shared.tsx · 6 usos
ApolMark
  • components/shared/apol-mark.tsx · 4 usos
  • components/central/ui.tsx · 1 uso
Badge
  • components/ui/badge.tsx · 59 usos
  • components/central/ui.tsx · 5 usos
Card
  • components/ui/card.tsx · 122 usos
  • components/central/ui.tsx · 6 usos
EmptyState
  • components/shared/empty-state.tsx · 12 usos
  • components/central/ui.tsx · 3 usos
LancarCaixaDialog
  • components/admin/lancar-caixa-dialog.tsx · 1 uso
  • components/admin/caixa/lancar-caixa-dialog.tsx · 1 uso
Reveal
  • components/landing-dark/motion-primitives.tsx · 34 usos
  • components/site-alemao/ui.tsx · 12 usos
SeletorPeriodo
  • components/admin/seletor-periodo.tsx · 2 usos
  • components/admin/relatorios/seletor-periodo.tsx · 1 uso
VisaoTabela
  • components/admin/os/visao-tabela.tsx · 1 uso
  • components/admin/tarefas/visao-tabela.tsx · 1 uso

Primitivas paralelas em components/central

components/central/ui.tsx concentra 19 exports e carrega um jogo próprio de primitivas — Card, Badge, Btn, Pill, EmptyState, Modal, Drawer — com API divergente da base e paleta em hex fechada no objeto C (#08080C, #111119, #FF9900). O escuro noir com gold é deliberado e está declarado no cabeçalho do arquivo: ali é a voz da Apol dentro do admin do cliente, não a do Alemão. O que não é deliberado são os nomes.

NomeEm components/central/ui.tsxEquivalente na base
ApolMark1 usocomponents/shared/apol-mark.tsx · 4 usos
Badge5 usoscomponents/ui/badge.tsx · 59 usos
Card6 usoscomponents/ui/card.tsx · 122 usos
EmptyState3 usoscomponents/shared/empty-state.tsx · 12 usos

O veredito está nos números, não na opinião. O Card de central tem 6 usos contra 122 do de components/ui — é candidato claro a aposentar. O caminho é renomear o jogo da central pra um prefixo próprio (a paleta noir continua; o nome colidindo, não) e migrar o que der pra base. Nenhum drop antes de o substituto estar validado.

Limites conhecidos da varredura

Um inventário gerado por heurística tem borda. Estas são as bordas medidas — ficam escritas aqui pra ninguém tratar o número como oráculo.

LimiteEfeito medido
Constante conta como componenteO regex aceita todo export com inicial maiúscula, então 22 constantes em CAIXA ALTA (CANAIS, POST_COLS, TIPO_LABEL, FILTROS_VAZIOS…) entram nos 530. Inflação conhecida e medida: 4% do catálogo.
JSDoc pode ser atribuído ao vizinhoO gerador pega o bloco imediatamente acima do export. Em arquivo que empilha dezenas de exports — components/central/ui.tsx tem 19 — o bloco às vezes é do item anterior. É visível ali: Card e RoleAvatar exibem a mesma frase.
Uso é import estáticoSó conta import ... from em components/ e app/. Import dinâmico, re-export e uso dentro do próprio arquivo não contam — logo, órfão quer dizer “ninguém importa por caminho estático”, não “código morto provado”.
Fronteira em components/Componente declarado dentro de uma rota em app/ não aparece aqui. Quantos são: a confirmar — o gerador ainda não varre app/ como alvo, só como consumidor.

Fica de olho

O que mantém a marca inteira — e o que a quebra.

Sempre

  • Regenerar com "node scripts/gerar-inventario-ds.mjs" no mesmo commit que cria ou apaga componente
  • Consultar o inventário antes de criar peça nova — provavelmente ela já existe
  • Escrever uma frase de JSDoc acima do export: é ela que aparece na coluna "O que é"
  • Reaproveitar as primitivas da base (components/ui, components/shared)
  • Levar órfão pro PO decidir: aposenta ou volta a usar

Nunca

  • Editar lib/ds/inventario.generated.ts à mão — o próximo gerador apaga
  • Digitar contagem de componente em qualquer texto do hub: número sai da constante
  • Criar primitiva nova com nome que já existe em outro arquivo
  • Copiar de componente órfão achando que é o padrão vigente
  • Apagar órfão em massa sem export e sem OK — rollback vale mais que pasta limpa

Recursos

Use sempre os arquivos oficiais — nunca redesenhe.