From af01eba4a7dddbd9429119d330e46bf9c41bb53a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cau=C3=AA=20Faleiros?= Date: Thu, 25 Jun 2026 13:19:26 -0300 Subject: [PATCH] Sync client segment badge colors --- src/pages/Clients.tsx | 47 ++++++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/src/pages/Clients.tsx b/src/pages/Clients.tsx index 2354eca..60e4e46 100644 --- a/src/pages/Clients.tsx +++ b/src/pages/Clients.tsx @@ -7,19 +7,31 @@ import { endOfLocalDay, formatDateParam, parseLocalDateInput, rangeForDay, range import type { ClientSortOption, ClientSummary } from '../analytics/clients'; import { formatDisplayName, removeTrailingSellerId } from '../displayFormatters'; -const clientTypeStyles: Record = { - 'Sem análise': 'border-zinc-600/30 bg-zinc-600/15 text-zinc-300', - 'Campeão': 'border-emerald-500/30 bg-emerald-500/15 text-emerald-300', - 'Potencial Leal': 'border-sky-500/30 bg-sky-500/15 text-sky-300', - 'Novo Cliente': 'border-cyan-500/30 bg-cyan-500/15 text-cyan-300', - 'Cliente Leal': 'border-blue-500/30 bg-blue-500/15 text-blue-300', - 'Precisa de Atenção': 'border-amber-500/30 bg-amber-500/15 text-amber-300', - 'Quase Dormindo': 'border-orange-500/30 bg-orange-500/15 text-orange-300', - 'Em Risco': 'border-rose-500/30 bg-rose-500/15 text-rose-300', - 'Hibernando': 'border-fuchsia-500/30 bg-fuchsia-500/15 text-fuchsia-300', - 'Perdido': 'border-zinc-500/30 bg-zinc-500/15 text-zinc-300' +type ClientTypeStyle = { + bg: string; + border: string; + text: string; }; +const clientTypeStyles: Record = { + 'Sem análise': { bg: 'rgba(140, 146, 152, 0.08)', border: 'rgba(140, 146, 152, 0.24)', text: '#b3b7bb' }, + 'Campeão': { bg: 'rgba(24, 214, 181, 0.10)', border: 'rgba(24, 214, 181, 0.34)', text: '#18D6B5' }, + 'Potencial Leal': { bg: 'rgba(163, 230, 53, 0.10)', border: 'rgba(163, 230, 53, 0.34)', text: '#A3E635' }, + 'Novo Cliente': { bg: 'rgba(37, 194, 255, 0.10)', border: 'rgba(37, 194, 255, 0.34)', text: '#25C2FF' }, + 'Cliente Leal': { bg: 'rgba(110, 165, 255, 0.10)', border: 'rgba(110, 165, 255, 0.34)', text: '#6EA5FF' }, + 'Precisa de Atenção': { bg: 'rgba(255, 194, 71, 0.11)', border: 'rgba(255, 194, 71, 0.34)', text: '#FFC247' }, + 'Quase Dormindo': { bg: 'rgba(255, 138, 61, 0.11)', border: 'rgba(255, 138, 61, 0.34)', text: '#FF8A3D' }, + 'Em Risco': { bg: 'rgba(255, 93, 125, 0.11)', border: 'rgba(255, 93, 125, 0.34)', text: '#FF5D7D' }, + 'Hibernando': { bg: 'rgba(199, 125, 255, 0.11)', border: 'rgba(199, 125, 255, 0.34)', text: '#C77DFF' }, + 'Perdido': { bg: 'rgba(140, 146, 152, 0.08)', border: 'rgba(140, 146, 152, 0.24)', text: '#b3b7bb' } +}; + +const clientTypePillStyle = (style: ClientTypeStyle) => ({ + backgroundColor: style.bg, + borderColor: style.border, + color: style.text +}); + const clientTypes = [ 'Sem análise', 'Campeão', @@ -586,7 +598,10 @@ const Clients = () => { - {paginatedData.map((client, index) => ( + {paginatedData.map((client, index) => { + const clientTypeStyle = clientTypeStyles[client.clientType] || clientTypeStyles.Perdido; + + return ( @@ -595,7 +610,10 @@ const Clients = () => { {client.name} - + {client.clientType} @@ -626,7 +644,8 @@ const Clients = () => { - ))} + ); + })}