fix: allow origin colors to be edited and display correctly in dashboard

- Fixed database initialization where default origins were seeded without color_classes.

- Added a visual color picker to the Origens admin page to allow users to assign colors to origin tags.

- Updated Dashboard Pie Chart to read the color classes correctly and display them.
This commit is contained in:
Cauê Faleiros
2026-03-18 13:43:43 -03:00
parent 1d3315a1d0
commit f11db95a2f
5 changed files with 79 additions and 19 deletions

View File

@@ -179,6 +179,17 @@ export const Dashboard: React.FC = () => {
}));
}, [data, funnelDefs]);
const tailwindToHex: Record<string, string> = {
'zinc': '#71717a',
'blue': '#3b82f6',
'purple': '#a855f7',
'green': '#22c55e',
'red': '#ef4444',
'pink': '#ec4899',
'orange': '#f97316',
'yellow': '#eab308'
};
// --- Chart Data: Origin ---
const originData = useMemo(() => {
const origins = data.reduce((acc, curr) => {
@@ -186,11 +197,21 @@ export const Dashboard: React.FC = () => {
return acc;
}, {} as Record<string, number>);
// Ensure type safety for value in sort
return (Object.entries(origins) as [string, number][])
.map(([name, value]) => ({ name, value }))
.map(([name, value]) => {
const def = originDefs.find(o => o.name === name);
// Extract base color (e.g. "red" from "bg-red-100 text-red-700...")
let hexColor = '';
if (def && def.color_class) {
const match = def.color_class.match(/bg-([a-z]+)-\d+/);
if (match && tailwindToHex[match[1]]) {
hexColor = tailwindToHex[match[1]];
}
}
return { name, value, hexColor };
})
.sort((a, b) => b.value - a.value);
}, [data]);
}, [data, originDefs]);
// --- Table Data: Sellers Ranking ---
const sellersRanking = useMemo(() => {
@@ -427,12 +448,11 @@ export const Dashboard: React.FC = () => {
stroke="none"
>
{originData.map((entry, index) => (
<Cell
key={`cell-${index}`}
fill={COLORS.origins[entry.name as keyof typeof COLORS.origins] || COLORS.charts[index % COLORS.charts.length]}
<Cell
key={`cell-${index}`}
fill={entry.hexColor || COLORS.charts[index % COLORS.charts.length]}
/>
))}
</Pie>
))} </Pie>
<Tooltip
formatter={(value: any) => [value, 'Leads']}
contentStyle={{