import { Grid, Column } from '@umami/react-zen'; import { useMessages, useResultQuery } from '@/components/hooks'; import { Panel } from '@/components/common/Panel'; import { LoadingPanel } from '@/components/common/LoadingPanel'; import { ListTable } from '@/components/metrics/ListTable'; import { MetricCard } from '@/components/metrics/MetricCard'; import { MetricsBar } from '@/components/metrics/MetricsBar'; import { SectionHeader } from '@/components/common/SectionHeader'; import { formatLongNumber } from '@/lib/format'; import { percentFilter } from '@/lib/filters'; export interface AttributionProps { websiteId: string; startDate: Date; endDate: Date; model: string; type: string; step: string; currency?: string; } export function Attribution({ websiteId, startDate, endDate, model, type, step, currency, }: AttributionProps) { const { data, error, isLoading } = useResultQuery('attribution', { websiteId, dateRange: { startDate, endDate, }, parameters: { model, type, step, }, }); const { formatMessage, labels } = useMessages(); const { pageviews, visitors, visits } = data?.total || {}; const metrics = data ? [ { value: pageviews, label: formatMessage(labels.views), formatValue: formatLongNumber, }, { value: visits, label: formatMessage(labels.visits), formatValue: formatLongNumber, }, { value: visitors, label: formatMessage(labels.visitors), formatValue: formatLongNumber, }, ] : []; function UTMTable({ data = [], title }: { data: any; title: string }) { return ( ({ x: name, y: Number(value), })), )} /> ); } return ( {metrics?.map(({ label, value, formatValue }) => { return ; })} ({ x: name, y: Number(value), })), )} /> ({ x: name, y: Number(value), })), )} /> ); }