'use client' import { useState } from 'react' import { formatNumber } from '@/lib/utils/format' import { getReferrerIcon } from '@/lib/utils/icons' import { Modal } from '@ciphera-net/ui' interface TopReferrersProps { referrers: Array<{ referrer: string; pageviews: number }> collectReferrers?: boolean } const LIMIT = 7 export default function TopReferrers({ referrers, collectReferrers = true }: TopReferrersProps) { const [isModalOpen, setIsModalOpen] = useState(false) // Filter out empty/unknown referrers const filteredReferrers = (referrers || []).filter( ref => ref.referrer && ref.referrer !== 'Unknown' && ref.referrer !== '' ) const hasData = filteredReferrers.length > 0 const displayedReferrers = hasData ? filteredReferrers.slice(0, LIMIT) : [] const emptySlots = Math.max(0, LIMIT - displayedReferrers.length) const showViewAll = hasData && filteredReferrers.length > LIMIT return ( <>

Top Referrers

{showViewAll && ( )}
{!collectReferrers ? (

Referrer tracking is disabled in site settings

) : hasData ? ( <> {displayedReferrers.map((ref, index) => (
{getReferrerIcon(ref.referrer)} {ref.referrer}
{formatNumber(ref.pageviews)}
))} {Array.from({ length: emptySlots }).map((_, i) => (
setIsModalOpen(false)} title="Top Referrers" >
{referrers?.map((ref, index) => (
{getReferrerIcon(ref.referrer)} {ref.referrer}
{formatNumber(ref.pageviews)}
))}
) }