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%);
}
}