# 🎨 SISTEMA GLOBAL DE STATUS - PraFrota Sistema unificado de estilos para status em toda aplicação Angular, baseado no padrão encontrado em `account-payable-items.component.scss`. ## 📋 Índice - [Visão Geral](#visão-geral) - [Instalação e Configuração](#instalação-e-configuração) - [Status Disponíveis](#status-disponíveis) - [Exemplos de Uso](#exemplos-de-uso) - [Customizações](#customizações) - [Migração](#migração) - [Melhores Práticas](#melhores-práticas) ## 🎯 Visão Geral O Sistema Global de Status padroniza a exibição de status em toda aplicação PraFrota, garantindo: - ✅ **Consistência Visual**: Mesma aparência em todos os componentes - ✅ **Manutenibilidade**: Centralização dos estilos - ✅ **Escalabilidade**: Fácil adição de novos status - ✅ **Responsividade**: Adaptação automática para mobile - ✅ **Dark Mode**: Suporte completo a temas escuros - ✅ **Acessibilidade**: Cores e contrastes adequados ## 🚀 Instalação e Configuração ### 1. Arquivo Principal O sistema está localizado em: ``` projects/idt_app/src/assets/styles/_status.scss ``` ### 2. Importação Global Já está importado automaticamente no `app.scss`: ```scss @import "_status"; ``` ### 3. Uso Imediato Não requer configuração adicional. Funciona globalmente em toda aplicação. ## 📊 Status Disponíveis ### 💰 Status Financeiros | Classe | Label | Cor | Uso | |--------|-------|-----|-----| | `status-pending` | Pendente | Amarelo | Pagamentos pendentes | | `status-paid` | Pago | Azul | Pagamentos realizados | | `status-approved` | Aprovado | Azul | Itens aprovados | | `status-approved-customer` | Aprovado Cliente | Azul | Aprovação do cliente | | `status-cancelled` | Cancelado | Vermelho | Itens cancelados | | `status-refused` | Recusado | Vermelho | Itens recusados | ### 🔄 Status Gerais | Classe | Label | Cor | Uso | |--------|-------|-----|-----| | `status-active` | Ativo | Azul | Registros ativos | | `status-inactive` | Inativo | Cinza | Registros inativos | | `status-suspended` | Suspenso | Amarelo | Temporariamente suspenso | | `status-archived` | Arquivado | Cinza | Registros arquivados | ### ⚙️ Status de Processamento | Classe | Label | Cor | Uso | |--------|-------|-----|-----| | `status-processing` | Processando | Azul claro | Em processamento (com animação) | | `status-completed` | Concluído | Azul | Processamento concluído | | `status-failed` | Falhou | Vermelho | Processamento falhou | | `status-unknown` | Desconhecido | Cinza | Status não identificado | ## 🎨 Exemplos de Uso ### Uso Básico ```html Pendente Pago Cancelado ``` ### Com Ícones ```html Processando Concluído ``` ### Variações de Tamanho ```html Pequeno Normal Grande ``` ### Em Tabelas (Data Table) ```typescript // No componente TypeScript { field: "status", header: "Status", allowHtml: true, label: (status: string) => { const statusConfig: { [key: string]: { label: string, class: string } } = { 'Pending': { label: 'Pendente', class: 'status-pending' }, 'Paid': { label: 'Pago', class: 'status-paid' }, 'Approved': { label: 'Aprovado', class: 'status-approved' }, 'Cancelled': { label: 'Cancelado', class: 'status-cancelled' } }; const config = statusConfig[status] || { label: status, class: 'status-unknown' }; return `${config.label}`; } } ``` ### Lista de Status ```html
Ativo Aprovado Pago
``` ### Com Agrupamento ```html
Financeiro: Pendente
Operacional: Ativo
``` ## 🎨 Badges Informativos ### Badges de Resumo ```html
Total: 150 Pagos: 120 Pendentes: 30
``` ### Variações de Badge ```html Primário Sucesso Atenção Perigo Informação ``` ## 🎭 Estados Visuais Globais ### Estado Vazio ```html

Nenhum item encontrado

Não há registros para exibir no momento.

``` ### Estado de Erro ```html

Erro ao carregar dados

Ocorreu um problema ao buscar as informações.

``` ### Estado de Carregamento ```html

Carregando...

Aguarde enquanto buscamos os dados.

``` ## 🌙 Dark Mode O sistema possui suporte automático ao Dark Mode através de: ### 1. Media Query (Automático) ```scss @media (prefers-color-scheme: dark) { // Estilos automáticos } ``` ### 2. Classe Manual ```scss :host-context([data-theme="dark"]) { // Estilos manuais } ``` ### 3. Classe Global ```scss .dark-theme { // Estilos para tema escuro } ``` ## 📱 Responsividade ### Mobile First ```scss @media (max-width: 768px) { .status-badge { font-size: 0.6875rem; padding: 0.1875rem 0.375rem; } } ``` ### Adaptações Automáticas - Tamanhos de fonte reduzidos - Padding ajustado - Espaçamentos otimizados ## 🔧 Customizações ### Adicionando Novos Status ```scss // Em _status.scss .status-badge { &.status-meu-novo-status { background-color: #e3f2fd; color: #1976d2; border-color: #90caf9; &:hover { background-color: #90caf9; transform: translateY(-1px); } } } ``` ### Variações Personalizadas ```scss // Status com animação personalizada .status-badge { &.status-pulsing { animation: pulse 2s infinite; } } @keyframes pulse { 0% { opacity: 1; } 50% { opacity: 0.5; } 100% { opacity: 1; } } ``` ## 🔄 Migração ### De Estilos Locais para Global #### Antes (Local) ```scss // component.scss .status-badge { &.status-pending { background-color: #fff3cd; color: #856404; } } ``` #### Depois (Global) ```scss // Remover estilos locais // Usar classes globais diretamente ``` ```html Pendente ``` ### Checklist de Migração - [ ] Identificar estilos de status locais - [ ] Verificar se status existe no sistema global - [ ] Remover estilos locais duplicados - [ ] Testar funcionamento - [ ] Adicionar comentário sobre uso global ## ✅ Melhores Práticas ### 1. Nomenclatura Consistente ```typescript // ✅ Correto const statusConfig = { 'Pending': { label: 'Pendente', class: 'status-pending' }, 'Paid': { label: 'Pago', class: 'status-paid' } }; // ❌ Evitar const statusConfig = { 'pending': { label: 'Pendente', class: 'custom-pending' } }; ``` ### 2. Fallback para Status Desconhecidos ```typescript // ✅ Sempre incluir fallback const config = statusConfig[status] || { label: status, class: 'status-unknown' }; ``` ### 3. Uso de allowHtml em Tabelas ```typescript // ✅ Necessário para HTML em tabelas { field: "status", allowHtml: true, // Obrigatório para badges label: (status) => `${status}` } ``` ### 4. Acessibilidade ```html Pendente Ativo ``` ### 5. Performance ```html
{{item.status}}
``` ## 🧪 Testes ### Teste Visual ```typescript // Verificar se todos os status são exibidos corretamente const allStatus = [ 'status-pending', 'status-paid', 'status-cancelled', 'status-active', 'status-inactive', 'status-processing' ]; allStatus.forEach(status => { // Verificar se classe existe e tem estilos corretos }); ``` ### Teste de Responsividade ```typescript // Verificar adaptação mobile @media (max-width: 768px) { // Testar tamanhos e espaçamentos } ``` ## 📚 Referências - **Arquivo Principal**: `projects/idt_app/src/assets/styles/_status.scss` - **Importação**: `projects/idt_app/src/assets/styles/app.scss` - **Exemplo de Uso**: `projects/idt_app/src/app/domain/fines/fines.component.ts` - **Migração**: `projects/idt_app/src/app/domain/finances/account-payable/components/account-payable-items/` ## 🔄 Changelog ### v1.0.0 - Sistema Inicial - ✅ Criação do arquivo `_status.scss` - ✅ Importação no `app.scss` - ✅ Status financeiros básicos - ✅ Status gerais - ✅ Estados visuais (empty, error, loading) - ✅ Suporte a Dark Mode - ✅ Responsividade mobile - ✅ Migração de `account-payable-items` - ✅ Documentação completa ### Próximas Versões - 🔄 Animações avançadas - 🔄 Mais variações de status - 🔄 Integração com Angular Material - 🔄 Testes automatizados --- **Desenvolvido para PraFrota** | **Sistema de Gestão de Frota** | **Angular 19.2.x**