'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 }> } const LIMIT = 7 export default function TopReferrers({ referrers }: TopReferrersProps) { const [isModalOpen, setIsModalOpen] = useState(false) const hasData = referrers && referrers.length > 0 const displayedReferrers = hasData ? referrers.slice(0, LIMIT) : [] const emptySlots = Math.max(0, LIMIT - displayedReferrers.length) const showViewAll = hasData && referrers.length > LIMIT return ( <>

Top Referrers

{showViewAll && ( )}
{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)}
))}
) }