"use client"; import type { ComponentType, SVGProps } from "react"; import { DocumentTextIcon, CheckCircleIcon, ServerIcon, ChatBubbleLeftRightIcon, ExclamationTriangleIcon, } from "@heroicons/react/24/outline"; import type { Activity } from "@customer-portal/domain/dashboard"; import { formatActivityDate, formatActivityDescription, getActivityIconGradient, } from "../utils/dashboard.utils"; interface DashboardActivityItemProps { activity: Activity; onClick?: () => void; } const ICON_COMPONENTS: Record>> = { invoice_created: DocumentTextIcon, invoice_paid: CheckCircleIcon, service_activated: ServerIcon, case_created: ChatBubbleLeftRightIcon, case_closed: CheckCircleIcon, }; const FALLBACK_ICON = ExclamationTriangleIcon; export function DashboardActivityItem({ activity, onClick }: DashboardActivityItemProps) { const Icon = ICON_COMPONENTS[activity.type] ?? FALLBACK_ICON; const gradient = getActivityIconGradient(activity.type); const description = formatActivityDescription(activity); const formattedDate = formatActivityDate(activity.date); const content = ( <>

{activity.title}

{description}

{formattedDate}

); if (onClick) { return ( ); } return
{content}
; }