import { useContext } from 'react'; import classNames from 'classnames'; import { useMessages } from 'components/hooks'; import { ReportContext } from '../[reportId]/Report'; import { formatLongNumber } from 'lib/format'; import styles from './FunnelChart.module.css'; export interface FunnelChartProps { className?: string; isLoading?: boolean; } export function FunnelChart({ className }: FunnelChartProps) { const { report } = useContext(ReportContext); const { formatMessage, labels } = useMessages(); const { data } = report || {}; return (
{data?.map(({ type, value, visitors, dropped, dropoff, remaining }, index: number) => { return (
{index + 1}
{formatMessage(type === 'url' ? labels.viewedPage : labels.triggeredEvent)} {value}
{formatLongNumber(visitors)} {formatMessage(labels.visitors)}
{(remaining * 100).toFixed(2)}%
{dropoff > 0 && (
{formatLongNumber(dropped)} {formatMessage(labels.visitorsDroppedOff)} ( {(dropoff * 100).toFixed(2)}%)
)}
); })}
); } export default FunnelChart;