import { Row } from '@umami/react-zen';
import { Favicon } from '@/components/common/Favicon';
import { FilterLink } from '@/components/common/FilterLink';
import { TypeIcon } from '@/components/common/TypeIcon';
import {
useCountryNames,
useFormat,
useLocale,
useMessages,
useRegionNames,
} from '@/components/hooks';
import { GROUPED_DOMAINS } from '@/lib/constants';
export interface MetricLabelProps {
type: string;
data: any;
onClick?: () => void;
}
export function MetricLabel({ type, data }: MetricLabelProps) {
const { formatMessage, labels } = useMessages();
const { formatValue, formatCity } = useFormat();
const { locale } = useLocale();
const { countryNames } = useCountryNames(locale);
const { getRegionName } = useRegionNames(locale);
const { label, country, domain } = data;
switch (type) {
case 'browser':
case 'os':
return (
}
/>
);
case 'channel':
return formatMessage(labels[label]);
case 'city':
return (
)
}
/>
);
case 'region':
return (
}
/>
);
case 'country':
return (
}
/>
);
case 'path':
case 'entry':
case 'exit':
return (
);
case 'device':
return (
}
/>
);
case 'referrer':
return (
}
/>
);
case 'domain':
if (label === 'Other') {
return `(${formatMessage(labels.other)})`;
} else {
const name = GROUPED_DOMAINS.find(({ domain }) => domain === label)?.name;
if (!name) {
return null;
}
return (
{name}
);
}
case 'language':
return formatValue(label, 'language');
default:
return ;
}
}