From 56078dc53912e82d7189501e6834009d87554aca Mon Sep 17 00:00:00 2001 From: guilherme Date: Wed, 26 Nov 2025 10:04:13 -0300 Subject: [PATCH] feat(App): atualizar paleta de cores e status de protocolos --- src/App.tsx | 68 +++++++++++++-------- src/views/protocols/protocols-dashboard.tsx | 1 + 2 files changed, 44 insertions(+), 25 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 848e569..2f68952 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,16 +1,5 @@ -import { - Card, - CardContent, - CardDescription, - CardFooter, - CardHeader, - CardTitle, -} from '@/views/components/ui/card'; -import { - ChartContainer, - ChartTooltip, - ChartTooltipContent, -} from '@/views/components/ui/chart'; +import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/views/components/ui/card'; +import { ChartContainer, ChartTooltip, ChartTooltipContent } from '@/views/components/ui/chart'; import { TrendingUp } from 'lucide-react'; import { Bar, BarChart, CartesianGrid, Pie, PieChart, XAxis } from 'recharts'; @@ -21,11 +10,25 @@ import { ProtocolsDashboard } from './views/protocols/protocols-dashboard'; export const description = 'Métricas de protocolos — tipos e status (gestão pública)'; +const palette = { + 50: '#F0F9FF', + 100: '#E0F2FE', + 200: '#B9E7FE', + 300: '#7CD5FD', + 400: '#36C1FA', + 500: '#0CA9EB', + 600: '#007CB8', + 700: '#016BA3', + 800: '#065B86', + 900: '#0B4B6F', + 950: '#07304A', +} as const; + const protocolsByTypeConfig = { - licitacao: { label: 'Licitações', color: '#0b69a3' }, - contrato: { label: 'Contratos', color: '#007cb8' }, - convenio: { label: 'Convênios', color: '#36c1fa' }, - termo: { label: 'Termos Aditivos', color: '#7cd5fd' }, + licitacao: { label: 'Licitações', color: palette[700] }, + contrato: { label: 'Contratos', color: palette[600] }, + convenio: { label: 'Convênios', color: palette[400] }, + termo: { label: 'Termos Aditivos', color: palette[300] }, } satisfies ChartConfig; const protocolsByTypeData = [ @@ -36,17 +39,32 @@ const protocolsByTypeData = [ ]; const protocolStatusConfig = { - andamento: { label: 'Em andamento', color: '#007cb8' }, - concluido: { label: 'Concluído', color: '#0ca9eb' }, - suspenso: { label: 'Suspenso', color: '#36c1fa' }, - cancelado: { label: 'Cancelado', color: '#7cd5fd' }, + Criado: { label: 'Criado', color: palette[950] }, + 'Aguardando Trâmite': { label: 'Aguardando Trâmite', color: palette[900] }, + 'Aguardando Recebimento': { + label: 'Aguardando Recebimento', + color: palette[800], + }, + Enviado: { label: 'Enviado', color: palette[700] }, + Recebido: { label: 'Recebido', color: palette[600] }, + 'Aguardando Entrega': { label: 'Aguardando Entrega', color: palette[500] }, + Entregue: { label: 'Entregue', color: palette[400] }, + Finalizado: { label: 'Finalizado', color: palette[300] }, + Cancelado: { label: 'Cancelado', color: palette[200] }, + Arquivado: { label: 'Arquivado', color: palette[100] }, } satisfies ChartConfig; const protocolStatusData = [ - { status: 'andamento', count: 65, fill: '#007cb8' }, - { status: 'concluido', count: 20, fill: '#0ca9eb' }, - { status: 'suspenso', count: 8, fill: '#36c1fa' }, - { status: 'cancelado', count: 7, fill: '#7cd5fd' }, + { status: 'Criado', count: 12, fill: palette[950] }, + { status: 'Aguardando Trâmite', count: 20, fill: palette[900] }, + { status: 'Aguardando Recebimento', count: 10, fill: palette[800] }, + { status: 'Enviado', count: 8, fill: palette[700] }, + { status: 'Recebido', count: 25, fill: palette[600] }, + { status: 'Aguardando Entrega', count: 5, fill: palette[500] }, + { status: 'Entregue', count: 7, fill: palette[400] }, + { status: 'Finalizado', count: 18, fill: palette[300] }, + { status: 'Cancelado', count: 3, fill: palette[200] }, + { status: 'Arquivado', count: 2, fill: palette[100] }, ]; export function App() { diff --git a/src/views/protocols/protocols-dashboard.tsx b/src/views/protocols/protocols-dashboard.tsx index 64ba2bb..78d9627 100644 --- a/src/views/protocols/protocols-dashboard.tsx +++ b/src/views/protocols/protocols-dashboard.tsx @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { Dialog, DialogTrigger } from '@/views/components/ui/dialog'; import { useMemo, useState } from 'react';