From f1e6d5a48eaa0daebf238b10875532e36cb71b85 Mon Sep 17 00:00:00 2001 From: Usman Baig Date: Sat, 21 Feb 2026 23:09:34 +0100 Subject: [PATCH] style: refactor chart color variables across multiple components to use CSS variables for improved theming consistency --- app/sites/[id]/funnels/[funnelId]/page.tsx | 16 +++++------ app/sites/[id]/uptime/page.tsx | 22 +++++++-------- components/dashboard/Chart.tsx | 32 +++++++++++----------- components/dashboard/WorldMap.tsx | 6 ++-- 4 files changed, 38 insertions(+), 38 deletions(-) diff --git a/app/sites/[id]/funnels/[funnelId]/page.tsx b/app/sites/[id]/funnels/[funnelId]/page.tsx index 687e5c4..4772751 100644 --- a/app/sites/[id]/funnels/[funnelId]/page.tsx +++ b/app/sites/[id]/funnels/[funnelId]/page.tsx @@ -19,20 +19,20 @@ import { import { getDateRange } from '@ciphera-net/ui' const CHART_COLORS_LIGHT = { - border: '#E5E5E5', - axis: '#A3A3A3', + border: 'var(--color-neutral-200)', + axis: 'var(--color-neutral-400)', tooltipBg: '#ffffff', - tooltipBorder: '#E5E5E5', + tooltipBorder: 'var(--color-neutral-200)', } const CHART_COLORS_DARK = { - border: '#404040', - axis: '#737373', - tooltipBg: '#262626', - tooltipBorder: '#404040', + border: 'var(--color-neutral-700)', + axis: 'var(--color-neutral-500)', + tooltipBg: 'var(--color-neutral-800)', + tooltipBorder: 'var(--color-neutral-700)', } -const BRAND_ORANGE = '#FD5E0F' +const BRAND_ORANGE = 'var(--color-brand-orange)' export default function FunnelReportPage() { const params = useParams() diff --git a/app/sites/[id]/uptime/page.tsx b/app/sites/[id]/uptime/page.tsx index 49c093a..0d70560 100644 --- a/app/sites/[id]/uptime/page.tsx +++ b/app/sites/[id]/uptime/page.tsx @@ -34,20 +34,20 @@ import type { TooltipProps } from 'recharts' // * Chart theme colors (consistent with main Pulse chart) const CHART_COLORS_LIGHT = { - border: '#E5E5E5', - text: '#171717', - textMuted: '#737373', - axis: '#A3A3A3', + border: 'var(--color-neutral-200)', + text: 'var(--color-neutral-900)', + textMuted: 'var(--color-neutral-500)', + axis: 'var(--color-neutral-400)', tooltipBg: '#ffffff', - tooltipBorder: '#E5E5E5', + tooltipBorder: 'var(--color-neutral-200)', } const CHART_COLORS_DARK = { - border: '#404040', - text: '#fafafa', - textMuted: '#a3a3a3', - axis: '#737373', - tooltipBg: '#262626', - tooltipBorder: '#404040', + border: 'var(--color-neutral-700)', + text: 'var(--color-neutral-50)', + textMuted: 'var(--color-neutral-400)', + axis: 'var(--color-neutral-500)', + tooltipBg: 'var(--color-neutral-800)', + tooltipBorder: 'var(--color-neutral-700)', } // * Status color mapping diff --git a/components/dashboard/Chart.tsx b/components/dashboard/Chart.tsx index f5c08e5..0c192b9 100644 --- a/components/dashboard/Chart.tsx +++ b/components/dashboard/Chart.tsx @@ -18,27 +18,27 @@ import { ArrowUpRightIcon, ArrowDownRightIcon, BarChartIcon, Select, Button, Dow import { Checkbox } from '@ciphera-net/ui' const COLORS = { - brand: '#FD5E0F', - success: '#10B981', // Emerald-500 - danger: '#EF4444', // Red-500 + brand: 'var(--color-brand-orange)', + success: 'var(--color-success)', + danger: 'var(--color-error)', } const CHART_COLORS_LIGHT = { - border: '#E5E5E5', - text: '#171717', - textMuted: '#737373', - axis: '#A3A3A3', + border: 'var(--color-neutral-200)', + text: 'var(--color-neutral-900)', + textMuted: 'var(--color-neutral-500)', + axis: 'var(--color-neutral-400)', tooltipBg: '#ffffff', - tooltipBorder: '#E5E5E5', + tooltipBorder: 'var(--color-neutral-200)', } const CHART_COLORS_DARK = { - border: '#404040', - text: '#fafafa', - textMuted: '#a3a3a3', - axis: '#737373', - tooltipBg: '#262626', - tooltipBorder: '#404040', + border: 'var(--color-neutral-700)', + text: 'var(--color-neutral-50)', + textMuted: 'var(--color-neutral-400)', + axis: 'var(--color-neutral-500)', + tooltipBg: 'var(--color-neutral-800)', + tooltipBorder: 'var(--color-neutral-700)', } export interface DailyStat { @@ -282,7 +282,7 @@ export default function Chart({ const { toPng } = await import('html-to-image') const dataUrl = await toPng(chartContainerRef.current, { cacheBust: true, - backgroundColor: resolvedTheme === 'dark' ? '#171717' : '#ffffff', + backgroundColor: resolvedTheme === 'dark' ? 'var(--color-neutral-900)' : '#ffffff', }) const link = document.createElement('a') link.download = `chart-${dateRange.start}-${dateRange.end}.png` @@ -694,7 +694,7 @@ export default function Chart({ activeDot={{ r: 5, strokeWidth: 2, - fill: resolvedTheme === 'dark' ? '#262626' : '#ffffff', + fill: resolvedTheme === 'dark' ? 'var(--color-neutral-800)' : '#ffffff', stroke: activeMetric.color, }} isAnimationActive diff --git a/components/dashboard/WorldMap.tsx b/components/dashboard/WorldMap.tsx index 9172b10..c18d30f 100644 --- a/components/dashboard/WorldMap.tsx +++ b/components/dashboard/WorldMap.tsx @@ -35,9 +35,9 @@ const WorldMap = ({ data }: WorldMapProps) => { // Plausible-like colors based on provided SVG snippet const isDark = resolvedTheme === 'dark' - const defaultFill = isDark ? "#262626" : "#f5f5f5" // neutral-800 / neutral-100 - const defaultStroke = isDark ? "#171717" : "#ffffff" // neutral-900 / white - const brandOrange = "#FD5E0F" + const defaultFill = isDark ? "var(--color-neutral-800)" : "var(--color-neutral-100)" + const defaultStroke = isDark ? "var(--color-neutral-900)" : "#ffffff" + const brandOrange = "var(--color-brand-orange)" return (