Polish dashboard UX, loading states, and tracking accuracy #45

Merged
uz1mani merged 10 commits from staging into main 2026-03-13 12:35:08 +00:00

10 Commits

Author SHA1 Message Date
Usman Baig
fcfa4bfed9 fix: use allowlist for query params to prevent path fragmentation
Switch from blocklist (strip known-bad params) to allowlist (only keep
UTM/attribution params). Eliminates cache-busters like _t and _ from
page paths without maintaining an ever-growing blocklist.
2026-03-13 13:33:11 +01:00
Usman Baig
969887cc67 style: use CartesianGrid for horizontal lines aligned with Y-axis ticks
Replace the CSS overlay with Recharts CartesianGrid (horizontal only)
so lines align perfectly with the Y-axis values.
2026-03-13 13:08:28 +01:00
Usman Baig
453a596eaf style: replace animated grid with subtle horizontal lines in chart
Simple repeating horizontal lines at 40px intervals with 50% opacity,
faded at top/bottom edges via CSS mask. No extra components needed.
2026-03-13 13:05:24 +01:00
Usman Baig
9a54d93c79 style: replace static grid with animated grid pattern in chart
Use AnimatedGridPattern from 21st.dev with subtle fading squares.
Scoped to CardContent only so the metric tabs and annotation footer
stay clean.
2026-03-13 13:01:03 +01:00
Usman Baig
eb0dc4a27b style: replace dotted chart background with grid line pattern
Swap the old dot grid overlay inside the Recharts SVG for a GridPattern
component rendered behind the chart card. Uses a vertical mask gradient
to fade edges for a cleaner look.
2026-03-13 12:55:20 +01:00
Usman Baig
8c4bb8f861 style: add fade-in transition from skeleton to content
Smooth out the jarring visual pop when loading skeletons are replaced
by real content. Only animates after an actual skeleton was shown —
cached data still renders instantly with no delay.
2026-03-13 12:45:48 +01:00
Usman Baig
0abc5cd4a8 style: unify all dashboard chart colors to brand orange 2026-03-13 12:32:57 +01:00
Usman Baig
3bda7215db fix: stat label invisible on light mode when selected
The active metric label (e.g. UNIQUE VISITORS) was white on a
near-white background. Switch to brand orange for visibility in
both themes.
2026-03-13 12:29:05 +01:00
Usman Baig
6380f216aa perf: migrate Settings, Funnels, and Uptime to SWR data fetching
Replace manual useState/useEffect fetch patterns with SWR hooks so
cached data renders instantly on tab revisit. Skeleton loading now
only appears on the initial cold load, not every navigation.

New hooks: useFunnels, useUptimeStatus, useGoals, useReportSchedules,
useSubscription — all with background revalidation.
2026-03-13 12:21:55 +01:00
Usman Baig
b6a7c642f2 feat: add skeleton loading to Journeys page
Use JourneysSkeleton with useMinimumLoading hook, matching the
loading pattern used on Dashboard, Funnels, Uptime, and Settings.
2026-03-13 11:58:35 +01:00