From e7a123cea2c9e5f1229a10ccae5f01f2acf309d1 Mon Sep 17 00:00:00 2001 From: Usman Baig Date: Sun, 18 Jan 2026 19:37:36 +0100 Subject: [PATCH] fix(analytics-ui): standardize branding, colors, and border radii --- app/page.tsx | 6 +++--- components/dashboard/Chart.tsx | 32 ++++++++++++++++++++----------- components/dashboard/WorldMap.tsx | 4 ++-- components/ui/DatePicker.tsx | 2 +- styles/globals.css | 10 ++++++++++ 5 files changed, 37 insertions(+), 17 deletions(-) diff --git a/app/page.tsx b/app/page.tsx index eddb245..ae56543 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -57,7 +57,7 @@ export default function HomePage() { {/* Features Grid */}
-
+
@@ -66,7 +66,7 @@ export default function HomePage() { We don't track personal data. No IP addresses, no fingerprints, no cookies.

-
+
@@ -75,7 +75,7 @@ export default function HomePage() { Get the metrics that matter without the clutter. Page views, visitors, and sources.

-
+
diff --git a/components/dashboard/Chart.tsx b/components/dashboard/Chart.tsx index 82e42c6..f1106a1 100644 --- a/components/dashboard/Chart.tsx +++ b/components/dashboard/Chart.tsx @@ -5,6 +5,16 @@ import { AreaChart, Area, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContai import { formatNumber, formatDuration } from '@/lib/utils/format' import { ArrowTopRightIcon, ArrowBottomRightIcon, DownloadIcon } from '@radix-ui/react-icons' +const COLORS = { + brand: '#FD5E0F', + success: '#10B981', // Emerald-500 + danger: '#EF4444', // Red-500 + border: '#E5E5E5', // Neutral-200 + text: '#171717', // Neutral-900 + textMuted: '#737373', // Neutral-500 + axis: '#A3A3A3', // Neutral-400 +} + interface DailyStat { date: string pageviews: number @@ -74,7 +84,7 @@ export default function Chart({ data, prevData, stats, prevStats, interval }: Ch label: 'Unique Visitors', value: formatNumber(stats.visitors), trend: calculateTrend(stats.visitors, prevStats?.visitors), - color: '#FD5E0F', // Brand Orange + color: COLORS.brand, invertTrend: false, }, { @@ -82,7 +92,7 @@ export default function Chart({ data, prevData, stats, prevStats, interval }: Ch label: 'Total Pageviews', value: formatNumber(stats.pageviews), trend: calculateTrend(stats.pageviews, prevStats?.pageviews), - color: '#FD5E0F', // Orange + color: COLORS.brand, invertTrend: false, }, { @@ -90,7 +100,7 @@ export default function Chart({ data, prevData, stats, prevStats, interval }: Ch label: 'Bounce Rate', value: `${Math.round(stats.bounce_rate)}%`, trend: calculateTrend(stats.bounce_rate, prevStats?.bounce_rate), - color: '#EF4444', // Red + color: COLORS.danger, invertTrend: true, // Lower bounce rate is better }, { @@ -98,7 +108,7 @@ export default function Chart({ data, prevData, stats, prevStats, interval }: Ch label: 'Visit Duration', value: formatDuration(stats.avg_duration), trend: calculateTrend(stats.avg_duration, prevStats?.avg_duration), - color: '#10B981', // Emerald + color: COLORS.success, invertTrend: false, }, ] as const @@ -175,17 +185,17 @@ export default function Chart({ data, prevData, stats, prevStats, interval }: Ch - + @@ -209,7 +219,7 @@ export default function Chart({ data, prevData, stats, prevStats, interval }: Ch { // Plausible-like colors based on provided SVG snippet const isDark = resolvedTheme === 'dark' - const defaultFill = isDark ? "#2d2d2d" : "#F2F2F2" // Approx gray-750 / gray-150 - const defaultStroke = isDark ? "#171717" : "#FFFFFF" // gray-900 / white + const defaultFill = isDark ? "#262626" : "#f5f5f5" // neutral-800 / neutral-100 + const defaultStroke = isDark ? "#171717" : "#ffffff" // neutral-900 / white const brandOrange = "#FD5E0F" return ( diff --git a/components/ui/DatePicker.tsx b/components/ui/DatePicker.tsx index 3253e57..d691b21 100644 --- a/components/ui/DatePicker.tsx +++ b/components/ui/DatePicker.tsx @@ -171,7 +171,7 @@ export default function DatePicker({ isOpen, onClose, onApply, initialRange }: D diff --git a/styles/globals.css b/styles/globals.css index 2162389..e4dfc10 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -36,6 +36,16 @@ body { @apply bg-white dark:bg-neutral-950 text-neutral-900 dark:text-neutral-50 transition-colors duration-300 ease-in-out; font-family: var(--font-plus-jakarta-sans), system-ui, sans-serif; + background-image: + radial-gradient(at 0% 0%, hsla(20, 98%, 52%, 0.03) 0px, transparent 50%), + radial-gradient(at 100% 100%, hsla(20, 98%, 52%, 0.03) 0px, transparent 50%); + background-attachment: fixed; + } + + .dark body { + background-image: + radial-gradient(at 0% 0%, hsla(20, 98%, 52%, 0.05) 0px, transparent 50%), + radial-gradient(at 100% 100%, hsla(20, 98%, 52%, 0.05) 0px, transparent 50%); } }