"use client"; import { AreaChart, Area, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from "recharts"; import { useLocale } from "@calcom/lib/hooks/useLocale"; interface RoutingFunnelData { name: string; formattedDateFull: string; totalSubmissions: number; successfulRoutings: number; acceptedBookings: number; } interface RoutingFunnelContentProps { data: RoutingFunnelData[]; enabledLegend?: Array<{ label: string; color: string }>; } const COLOR = { TOTAL: "#9AA2F7", SUCCESFUL: "#89CFB5", ACCEPTED: "#F7A1A1", }; export const legend = [ { label: "Total Submissions", color: COLOR.TOTAL }, { label: "Successful Routings", color: COLOR.SUCCESFUL }, { label: "Accepted Bookings", color: COLOR.ACCEPTED }, ]; export function RoutingFunnelContent({ data, enabledLegend }: RoutingFunnelContentProps) { const { t } = useLocale(); const activeAreas = enabledLegend || legend; return ( } /> {activeAreas.some((area) => area.label === "Total Submissions") && ( )} {activeAreas.some((area) => area.label === "Successful Routings") && ( )} {activeAreas.some((area) => area.label === "Accepted Bookings") && ( )} ); } // Custom Tooltip component const CustomTooltip = ({ active, payload, label, }: { active?: boolean; payload?: Array<{ value: number; dataKey: string; name: string; color: string; payload: RoutingFunnelData; }>; label?: string; }) => { if (!active || !payload?.length) { return null; } const totalSubmissions = payload.find((p) => p.dataKey === "totalSubmissions")?.value || 0; return (

{payload[0].payload.formattedDateFull}

{payload.map((entry, index: number) => { const value = entry.value; let displayValue = value.toString(); if (entry.dataKey === "successfulRoutings" || entry.dataKey === "acceptedBookings") { const percentage = totalSubmissions > 0 ? ((value / totalSubmissions) * 100).toFixed(1) : "0"; displayValue = `${value} (${percentage}%)`; } return (

{entry.name}: {displayValue}

); })}
); };