diff --git a/components/dashboard/TopReferrers.tsx b/components/dashboard/TopReferrers.tsx
index 7fb325f..44c0569 100644
--- a/components/dashboard/TopReferrers.tsx
+++ b/components/dashboard/TopReferrers.tsx
@@ -125,7 +125,7 @@ export default function TopReferrers({ referrers, collectReferrers = true, siteI
return (
onFilter?.({ dimension: 'referrer', operator: 'is', values: [ref.referrer] })}
+ onClick={() => onFilter?.({ dimension: 'referrer', operator: 'is', values: ref.allReferrers ?? [ref.referrer] })}
className={`relative flex items-center justify-between h-9 group hover:bg-neutral-50/50 dark:hover:bg-neutral-800/50 rounded-lg px-2 -mx-2 transition-colors${onFilter ? ' cursor-pointer' : ''}`}
>
-): Array<{ referrer: string; pageviews: number }> {
- const byDisplayName = new Map()
+): Array<{ referrer: string; pageviews: number; allReferrers: string[] }> {
+ const byDisplayName = new Map }>()
for (const ref of items) {
const name = getReferrerDisplayName(ref.referrer)
const existing = byDisplayName.get(name)
if (!existing) {
- byDisplayName.set(name, { referrer: ref.referrer, pageviews: ref.pageviews, maxSingle: ref.pageviews })
+ byDisplayName.set(name, { referrer: ref.referrer, pageviews: ref.pageviews, maxSingle: ref.pageviews, allReferrers: new Set([ref.referrer]) })
} else {
existing.pageviews += ref.pageviews
+ existing.allReferrers.add(ref.referrer)
if (ref.pageviews > existing.maxSingle) {
existing.maxSingle = ref.pageviews
existing.referrer = ref.referrer
@@ -338,6 +339,6 @@ export function mergeReferrersByDisplayName(
}
}
return Array.from(byDisplayName.values())
- .map(({ referrer, pageviews }) => ({ referrer, pageviews }))
+ .map(({ referrer, pageviews, allReferrers }) => ({ referrer, pageviews, allReferrers: Array.from(allReferrers) }))
.sort((a, b) => b.pageviews - a.pageviews)
}