"use client"; import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from "recharts"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; import type { RouterOutputs } from "@calcom/trpc/react"; import { useInsightsBookingParameters } from "@calcom/web/modules/insights/hooks/useInsightsBookingParameters"; import { ChartCard } from "../ChartCard"; const COLOR = { CSAT: "#22c55e", }; type CSATOverTimeData = RouterOutputs["viewer"]["insights"]["csatOverTime"][number]; // Custom Tooltip component const CustomTooltip = ({ active, payload, label: _label, }: { active?: boolean; payload?: Array<{ value: number; dataKey: string; name: string; color: string; payload: CSATOverTimeData; }>; label?: string; }) => { const { t } = useLocale(); if (!active || !payload?.length) { return null; } return (

{payload[0].payload.formattedDateFull}

{payload.map((entry, index: number) => (

{t("csat")}: {entry.value.toFixed(1)}%

))}
); }; export const CSATOverTimeChart = () => { const { t } = useLocale(); const insightsBookingParams = useInsightsBookingParameters(); const { data: csatData, isSuccess, isPending, isError, } = trpc.viewer.insights.csatOverTime.useQuery(insightsBookingParams, { staleTime: 180000, refetchOnWindowFocus: false, trpc: { context: { skipBatch: true }, }, }); return ( {isSuccess ? (
`${value}%`} domain={[0, 100]} /> } />
) : null}
); };