@optilogic/charts 1.3.9 → 1.3.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/shared/colors.ts","../src/shared/chart-tooltip.tsx","../src/shared/chart-legend.tsx","../src/shared/chart-container.tsx","../src/shared/use-live-data.ts","../src/shared/formatters.ts","../src/cartesian/line-chart.tsx","../src/cartesian/bar-chart.tsx","../src/cartesian/area-chart.tsx","../src/cartesian/scatter-chart.tsx","../src/cartesian/composed-chart.tsx","../src/cartesian/waterfall-chart.tsx","../src/radial/pie-chart.tsx","../src/radial/donut-chart.tsx","../src/radial/radar-chart.tsx","../src/radial/radial-bar-chart.tsx","../src/specialized/sankey-chart.tsx","../src/specialized/treemap-chart.tsx","../src/specialized/funnel-chart.tsx","../src/specialized/gantt-chart.tsx","../src/specialized/heatmap-chart.tsx","../src/dashboard/sparkline.tsx","../src/dashboard/kpi-card.tsx","../src/dashboard/scenario-comparison.tsx","../src/dashboard/chart-renderer.tsx","../src/dashboard/chart-builder.tsx"],"names":["React","ChartTooltipContent","jsxs","jsx","React2","ChartLegendContent","React3","ChartContainer","cn","ResponsiveContainer","useState","useRef","useCallback","useEffect","h","React4","RechartsLineChart","CartesianGrid","XAxis","YAxis","Tooltip","Legend","Line","React5","RechartsBarChart","Bar","React6","RechartsAreaChart","Area","React7","RechartsScatterChart","ZAxis","Scatter","React8","RechartsComposedChart","React9","ReferenceLine","Cell","React10","RechartsPieChart","Pie","React11","React12","RechartsRadarChart","PolarGrid","PolarAngleAxis","PolarRadiusAxis","Radar","React13","RechartsRadialBarChart","RadialBar","Layer","Rectangle","React14","Sankey","React15","Treemap","React16","RechartsFunnelChart","Funnel","LabelList","React17","GanttChart","t2","React18","HeatmapChart","React19","Sparkline","BarChart","AreaChart","LineChart","React20","KPICard","React21","ScenarioComparison","React22","ChartRenderer","React23","ChartBuilder"],"mappings":"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","file":"index.cjs","sourcesContent":["/** Theme-aware chart colors from CSS variables */\nexport const CHART_COLORS = [\n \"hsl(var(--chart-1))\",\n \"hsl(var(--chart-2))\",\n \"hsl(var(--chart-3))\",\n \"hsl(var(--chart-4))\",\n \"hsl(var(--chart-5))\",\n \"hsl(var(--chart-6))\",\n \"hsl(var(--chart-7))\",\n \"hsl(var(--chart-8))\",\n \"hsl(var(--chart-9))\",\n \"hsl(var(--chart-10))\",\n \"hsl(var(--chart-11))\",\n \"hsl(var(--chart-12))\",\n] as const;\n\nexport function getChartColor(index: number, custom?: string): string {\n if (custom) return custom;\n return CHART_COLORS[index % CHART_COLORS.length] ?? \"hsl(var(--chart-1))\";\n}\n\nexport type SemanticColorName =\n | \"positive\"\n | \"negative\"\n | \"neutral\"\n | \"warning\";\n\nconst SEMANTIC_COLORS: Record<SemanticColorName, string> = {\n positive: \"hsl(var(--success))\",\n negative: \"hsl(var(--destructive))\",\n neutral: \"hsl(var(--muted-foreground))\",\n warning: \"hsl(var(--warning))\",\n};\n\nexport function getSemanticColor(name: SemanticColorName): string {\n return SEMANTIC_COLORS[name];\n}\n","import * as React from \"react\";\nimport type { TooltipProps } from \"recharts\";\nimport type { ChartTooltipConfig } from \"./types\";\n\ninterface ChartTooltipPayloadItem {\n name: string;\n value: number;\n color: string;\n dataKey: string;\n payload: Record<string, unknown>;\n}\n\nexport interface ChartTooltipContentProps\n extends TooltipProps<number, string> {\n config?: ChartTooltipConfig;\n}\n\nexport const ChartTooltipContent = React.memo(function ChartTooltipContent({\n active,\n payload,\n label,\n config,\n}: ChartTooltipContentProps) {\n if (!active || !payload?.length) return null;\n\n const items = payload as unknown as ChartTooltipPayloadItem[];\n\n const formattedLabel = config?.labelFormatter\n ? config.labelFormatter(String(label))\n : String(label ?? \"\");\n\n const total = config?.showTotal\n ? items.reduce((sum, item) => sum + (Number(item.value) || 0), 0)\n : null;\n\n return (\n <div\n style={{\n background: \"hsl(var(--card))\",\n border: \"1px solid hsl(var(--border))\",\n borderRadius: 6,\n padding: \"8px 10px\",\n fontSize: 11,\n lineHeight: 1.5,\n boxShadow: \"0 2px 8px rgba(0,0,0,0.15)\",\n minWidth: 120,\n }}\n >\n {formattedLabel && (\n <div\n style={{\n color: \"hsl(var(--foreground))\",\n fontWeight: 600,\n marginBottom: 4,\n borderBottom: \"1px solid hsl(var(--border))\",\n paddingBottom: 4,\n }}\n >\n {formattedLabel}\n </div>\n )}\n {items.map((item, i) => {\n const formatted = config?.formatter\n ? config.formatter(Number(item.value), item.name)\n : String(item.value);\n const displayValue = Array.isArray(formatted) ? formatted[0] : formatted;\n const displayName = Array.isArray(formatted) ? formatted[1] : item.name;\n\n let delta: React.ReactNode = null;\n if (config?.showDelta && config.baseline) {\n const baselineValue = Number(\n item.payload?.[config.baseline] ?? 0,\n );\n if (baselineValue !== 0) {\n const diff = Number(item.value) - baselineValue;\n const pct = ((diff / baselineValue) * 100).toFixed(1);\n const sign = diff >= 0 ? \"+\" : \"\";\n const color =\n diff > 0\n ? \"hsl(var(--success))\"\n : diff < 0\n ? \"hsl(var(--destructive))\"\n : \"hsl(var(--muted-foreground))\";\n delta = (\n <span style={{ color, marginLeft: 4, fontSize: 10 }}>\n {diff >= 0 ? \"▲\" : \"▼\"} {sign}{pct}%\n </span>\n );\n }\n }\n\n return (\n <div\n key={item.dataKey ?? i}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 12,\n padding: \"1px 0\",\n }}\n >\n <span style={{ display: \"flex\", alignItems: \"center\", gap: 6 }}>\n <span\n style={{\n width: 8,\n height: 8,\n borderRadius: \"50%\",\n background: item.color,\n flexShrink: 0,\n }}\n />\n <span style={{ color: \"hsl(var(--muted-foreground))\" }}>\n {displayName}\n </span>\n </span>\n <span\n style={{\n fontWeight: 600,\n color: \"hsl(var(--foreground))\",\n fontVariantNumeric: \"tabular-nums\",\n }}\n >\n {displayValue}\n {delta}\n </span>\n </div>\n );\n })}\n {total != null && (\n <div\n style={{\n borderTop: \"1px solid hsl(var(--border))\",\n marginTop: 4,\n paddingTop: 4,\n display: \"flex\",\n justifyContent: \"space-between\",\n fontWeight: 600,\n color: \"hsl(var(--foreground))\",\n }}\n >\n <span>Total</span>\n <span style={{ fontVariantNumeric: \"tabular-nums\" }}>\n {config?.formatter ? config.formatter(total, \"Total\") : total}\n </span>\n </div>\n )}\n </div>\n );\n});\n\n/** Resolve the tooltip prop into Recharts Tooltip props */\nexport function resolveTooltipProps(tooltip: boolean | ChartTooltipConfig | undefined) {\n if (tooltip === false || tooltip === undefined) return null;\n if (tooltip === true) return { content: <ChartTooltipContent /> };\n return {\n content: <ChartTooltipContent config={tooltip} />,\n };\n}\n","import * as React from \"react\";\nimport type { ChartLegend } from \"./types\";\n\ninterface LegendPayloadItem {\n value: string;\n color: string;\n dataKey?: string;\n}\n\ninterface ChartLegendContentProps {\n payload?: LegendPayloadItem[];\n}\n\nexport const ChartLegendContent = React.memo(function ChartLegendContent({\n payload,\n}: ChartLegendContentProps) {\n if (!payload?.length) return null;\n\n return (\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"8px 16px\",\n fontSize: 11,\n lineHeight: 1,\n padding: \"0 0 4px\",\n }}\n >\n {payload.map((entry, i) => (\n <span\n key={entry.dataKey ?? i}\n style={{ display: \"flex\", alignItems: \"center\", gap: 5 }}\n >\n <span\n style={{\n width: 8,\n height: 8,\n borderRadius: \"50%\",\n background: entry.color,\n flexShrink: 0,\n }}\n />\n <span style={{ color: \"hsl(var(--muted-foreground))\" }}>\n {entry.value}\n </span>\n </span>\n ))}\n </div>\n );\n});\n\nexport function resolveLegendConfig(legend: boolean | ChartLegend | undefined) {\n if (legend === false || legend === undefined) return null;\n if (legend === true) return { position: \"top\" as const, align: \"right\" as const };\n return legend;\n}\n","import * as React from \"react\";\nimport { ResponsiveContainer } from \"recharts\";\nimport { cn } from \"@optilogic/core\";\n\nexport interface ChartContainerProps {\n children: React.ReactNode;\n className?: string;\n height?: number | string;\n loading?: boolean;\n empty?: boolean;\n emptyMessage?: string;\n title?: string;\n description?: string;\n}\n\nexport const ChartContainer = React.forwardRef<\n HTMLDivElement,\n ChartContainerProps\n>(function ChartContainer(\n {\n children,\n className,\n height = \"100%\",\n loading,\n empty,\n emptyMessage = \"No data available\",\n title,\n description,\n },\n ref,\n) {\n return (\n <div ref={ref} className={cn(\"w-full\", className)} style={{ height }}>\n {(title || description) && (\n <div style={{ marginBottom: 8 }}>\n {title && (\n <div\n style={{\n fontSize: 13,\n fontWeight: 600,\n color: \"hsl(var(--foreground))\",\n }}\n >\n {title}\n </div>\n )}\n {description && (\n <div\n style={{\n fontSize: 11,\n color: \"hsl(var(--muted-foreground))\",\n marginTop: 2,\n }}\n >\n {description}\n </div>\n )}\n </div>\n )}\n {loading ? (\n <div\n style={{\n width: \"100%\",\n height: title || description ? \"calc(100% - 40px)\" : \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <div\n className=\"animate-pulse\"\n style={{\n width: \"80%\",\n height: \"60%\",\n borderRadius: 6,\n background: \"hsl(var(--muted))\",\n }}\n />\n </div>\n ) : empty ? (\n <div\n style={{\n width: \"100%\",\n height: title || description ? \"calc(100% - 40px)\" : \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: \"hsl(var(--muted-foreground))\",\n fontSize: 12,\n }}\n >\n {emptyMessage}\n </div>\n ) : (\n <ResponsiveContainer\n width=\"100%\"\n height={title || description ? \"calc(100% - 40px)\" : \"100%\"}\n >\n {children as React.ReactElement}\n </ResponsiveContainer>\n )}\n </div>\n );\n});\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport interface UseLiveDataConfig<T> {\n /** Initial data snapshot */\n initial?: T[];\n /** Maximum number of data points to retain (ring buffer) */\n maxPoints?: number;\n /** Polling interval in ms (only used when mode is \"poll\") */\n interval?: number;\n /** Data fetch function for poll mode */\n fetcher?: () => Promise<T[]>;\n /** Start in paused state */\n paused?: boolean;\n}\n\nexport interface UseLiveDataReturn<T> {\n data: T[];\n /** Push new data points */\n push: (...items: T[]) => void;\n /** Replace all data at once */\n replace: (items: T[]) => void;\n isPaused: boolean;\n pause: () => void;\n resume: () => void;\n}\n\nexport function useLiveData<T>(\n config: UseLiveDataConfig<T> = {},\n): UseLiveDataReturn<T> {\n const {\n initial = [],\n maxPoints = 200,\n interval = 2000,\n fetcher,\n paused: initialPaused = false,\n } = config;\n\n const [data, setData] = useState<T[]>(initial);\n const [isPaused, setIsPaused] = useState(initialPaused);\n const bufferRef = useRef<T[]>(initial);\n\n const push = useCallback(\n (...items: T[]) => {\n bufferRef.current = [...bufferRef.current, ...items].slice(-maxPoints);\n setData(bufferRef.current);\n },\n [maxPoints],\n );\n\n const replace = useCallback((items: T[]) => {\n bufferRef.current = items;\n setData(items);\n }, []);\n\n const pause = useCallback(() => setIsPaused(true), []);\n const resume = useCallback(() => setIsPaused(false), []);\n\n useEffect(() => {\n if (!fetcher || isPaused) return;\n\n let cancelled = false;\n const tick = async () => {\n try {\n const result = await fetcher();\n if (!cancelled) {\n bufferRef.current = result.slice(-maxPoints);\n setData(bufferRef.current);\n }\n } catch {\n // Silently skip failed polls\n }\n };\n\n tick();\n const id = setInterval(tick, interval);\n return () => {\n cancelled = true;\n clearInterval(id);\n };\n }, [fetcher, interval, isPaused, maxPoints]);\n\n return { data, push, replace, isPaused, pause, resume };\n}\n","const compactThresholds: [number, string][] = [\n [1_000_000_000, \"B\"],\n [1_000_000, \"M\"],\n [1_000, \"K\"],\n];\n\nexport function formatCompact(value: number, decimals = 1): string {\n for (const [threshold, suffix] of compactThresholds) {\n if (Math.abs(value) >= threshold) {\n return `${(value / threshold).toFixed(decimals)}${suffix}`;\n }\n }\n return value.toLocaleString();\n}\n\nexport function formatCurrency(\n value: number,\n currency = \"USD\",\n decimals?: number,\n): string {\n if (Math.abs(value) >= 1_000_000) {\n return `$${formatCompact(value, decimals ?? 1)}`;\n }\n return value.toLocaleString(\"en-US\", {\n style: \"currency\",\n currency,\n minimumFractionDigits: decimals ?? 0,\n maximumFractionDigits: decimals ?? 0,\n });\n}\n\nexport function formatPercent(value: number, decimals = 1): string {\n return `${value.toFixed(decimals)}%`;\n}\n\nexport function formatUnit(value: number, unit: string, decimals = 1): string {\n return `${value.toLocaleString(undefined, { maximumFractionDigits: decimals })} ${unit}`;\n}\n\nexport function formatDuration(seconds: number): string {\n if (seconds < 60) return `${Math.round(seconds)}s`;\n if (seconds < 3600) return `${Math.round(seconds / 60)}m`;\n if (seconds < 86400) {\n const h = Math.floor(seconds / 3600);\n const m = Math.round((seconds % 3600) / 60);\n return m > 0 ? `${h}h ${m}m` : `${h}h`;\n }\n const d = Math.floor(seconds / 86400);\n const h = Math.round((seconds % 86400) / 3600);\n return h > 0 ? `${d}d ${h}h` : `${d}d`;\n}\n","import * as React from \"react\";\nimport {\n LineChart as RechartsLineChart,\n Line,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n} from \"recharts\";\nimport { cn } from \"@optilogic/core\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps, ChartTooltipContent } from \"../shared/chart-tooltip\";\nimport { ChartLegendContent, resolveLegendConfig } from \"../shared/chart-legend\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type {\n BaseChartProps,\n ChartXAxis,\n ChartYAxis,\n ChartGrid,\n ChartLegend,\n ChartTooltipProp,\n} from \"../shared/types\";\n\nexport interface LineChartSeries {\n dataKey: string;\n name: string;\n color?: string;\n strokeWidth?: number;\n dot?: boolean;\n type?: \"monotone\" | \"linear\" | \"step\" | \"basis\" | \"natural\";\n strokeDasharray?: string;\n}\n\nexport interface LineChartProps extends BaseChartProps {\n data: Record<string, unknown>[];\n series: LineChartSeries[];\n xAxis: ChartXAxis;\n yAxis?: ChartYAxis;\n grid?: boolean | ChartGrid;\n legend?: boolean | ChartLegend;\n tooltip?: ChartTooltipProp;\n loading?: boolean;\n}\n\nconst LineChart = React.forwardRef<HTMLDivElement, LineChartProps>(\n (\n {\n data,\n series,\n xAxis,\n yAxis,\n grid = true,\n tooltip = true,\n legend = false,\n animate = false,\n live = false,\n className,\n height = \"100%\",\n margin = { top: 8, right: 12, left: 0, bottom: 4 },\n loading,\n },\n ref,\n ) => {\n const gridConfig = React.useMemo(() => {\n if (grid === false) return null;\n if (grid === true) return { vertical: false, horizontal: true };\n return grid;\n }, [grid]);\n\n const legendConfig = resolveLegendConfig(legend);\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <RechartsLineChart data={data} margin={margin}>\n {gridConfig && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--divider))\"\n vertical={gridConfig.vertical ?? false}\n horizontal={gridConfig.horizontal ?? true}\n />\n )}\n <XAxis\n dataKey={xAxis.dataKey}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n minTickGap={xAxis.minTickGap ?? 24}\n tickFormatter={xAxis.tickFormatter}\n label={\n xAxis.label\n ? {\n value: xAxis.label,\n position: \"insideBottom\",\n offset: -4,\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n <YAxis\n domain={yAxis?.domain ?? [\"auto\", \"auto\"]}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n width={yAxis?.width ?? 30}\n tickFormatter={yAxis?.tickFormatter}\n label={\n yAxis?.label\n ? {\n value: yAxis.label,\n angle: -90,\n position: \"insideLeft\",\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n {tooltipProps && <Tooltip {...tooltipProps} />}\n {legendConfig && (\n <Legend\n verticalAlign={legendConfig.position ?? \"top\"}\n align={legendConfig.align ?? \"right\"}\n content={<ChartLegendContent />}\n />\n )}\n {series.map((s, index) => (\n <Line\n key={s.dataKey}\n type={s.type ?? \"monotone\"}\n dataKey={s.dataKey}\n name={s.name}\n stroke={getChartColor(index, s.color)}\n strokeWidth={s.strokeWidth ?? 2}\n strokeDasharray={s.strokeDasharray}\n dot={s.dot ?? false}\n isAnimationActive={isAnimated}\n animationDuration={isAnimated ? 300 : 0}\n />\n ))}\n </RechartsLineChart>\n </ChartContainer>\n );\n },\n);\n\nLineChart.displayName = \"LineChart\";\nexport { LineChart };\n","import * as React from \"react\";\nimport {\n BarChart as RechartsBarChart,\n Bar,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n} from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartLegendContent, resolveLegendConfig } from \"../shared/chart-legend\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type {\n BaseChartProps,\n ChartXAxis,\n ChartYAxis,\n ChartGrid,\n ChartLegend,\n ChartTooltipProp,\n} from \"../shared/types\";\n\nexport interface BarChartSeries {\n dataKey: string;\n name: string;\n color?: string;\n stackId?: string;\n radius?: number | [number, number, number, number];\n}\n\nexport interface BarChartProps extends BaseChartProps {\n data: Record<string, unknown>[];\n series: BarChartSeries[];\n layout?: \"vertical\" | \"horizontal\";\n xAxis: ChartXAxis;\n yAxis?: ChartYAxis;\n grid?: boolean | ChartGrid;\n legend?: boolean | ChartLegend;\n tooltip?: ChartTooltipProp;\n barSize?: number;\n barGap?: number;\n barCategoryGap?: number | string;\n loading?: boolean;\n}\n\nconst BarChart = React.forwardRef<HTMLDivElement, BarChartProps>(\n (\n {\n data,\n series,\n layout = \"vertical\",\n xAxis,\n yAxis,\n grid = true,\n tooltip = true,\n legend = false,\n animate = true,\n live = false,\n barSize,\n barGap,\n barCategoryGap,\n className,\n height = \"100%\",\n margin = { top: 8, right: 12, left: 0, bottom: 4 },\n loading,\n },\n ref,\n ) => {\n const gridConfig = React.useMemo(() => {\n if (grid === false) return null;\n if (grid === true) return { vertical: false, horizontal: true };\n return grid;\n }, [grid]);\n\n const legendConfig = resolveLegendConfig(legend);\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n const isHorizontal = layout === \"horizontal\";\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <RechartsBarChart\n data={data}\n layout={isHorizontal ? \"vertical\" : \"horizontal\"}\n margin={margin}\n barSize={barSize}\n barGap={barGap}\n barCategoryGap={barCategoryGap}\n >\n {gridConfig && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--divider))\"\n vertical={\n isHorizontal\n ? (gridConfig.horizontal ?? true)\n : (gridConfig.vertical ?? false)\n }\n horizontal={\n isHorizontal\n ? (gridConfig.vertical ?? false)\n : (gridConfig.horizontal ?? true)\n }\n />\n )}\n {isHorizontal ? (\n <XAxis\n type=\"number\"\n domain={yAxis?.domain ?? [\"auto\", \"auto\"]}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={yAxis?.tickFormatter}\n label={\n yAxis?.label\n ? {\n value: yAxis.label,\n position: \"insideBottom\",\n offset: -4,\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n ) : (\n <XAxis\n dataKey={xAxis.dataKey}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n minTickGap={xAxis.minTickGap ?? 24}\n tickFormatter={xAxis.tickFormatter}\n label={\n xAxis.label\n ? {\n value: xAxis.label,\n position: \"insideBottom\",\n offset: -4,\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n )}\n {isHorizontal ? (\n <YAxis\n type=\"category\"\n dataKey={xAxis.dataKey}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n width={yAxis?.width ?? 80}\n tickFormatter={xAxis.tickFormatter}\n />\n ) : (\n <YAxis\n domain={yAxis?.domain ?? [\"auto\", \"auto\"]}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n width={yAxis?.width ?? 30}\n tickFormatter={yAxis?.tickFormatter}\n label={\n yAxis?.label\n ? {\n value: yAxis.label,\n angle: -90,\n position: \"insideLeft\",\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n )}\n {tooltipProps && (\n <Tooltip\n {...tooltipProps}\n cursor={{ fill: \"hsl(var(--accent))\", fillOpacity: 0.3 }}\n />\n )}\n {legendConfig && (\n <Legend\n verticalAlign={legendConfig.position ?? \"top\"}\n align={legendConfig.align ?? \"right\"}\n content={<ChartLegendContent />}\n />\n )}\n {series.map((s, index) => (\n <Bar\n key={s.dataKey}\n dataKey={s.dataKey}\n name={s.name}\n fill={getChartColor(index, s.color)}\n stackId={s.stackId}\n radius={s.radius ?? 0}\n isAnimationActive={isAnimated}\n animationDuration={isAnimated ? 300 : 0}\n />\n ))}\n </RechartsBarChart>\n </ChartContainer>\n );\n },\n);\n\nBarChart.displayName = \"BarChart\";\nexport { BarChart };\n","import * as React from \"react\";\nimport {\n AreaChart as RechartsAreaChart,\n Area,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n} from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartLegendContent, resolveLegendConfig } from \"../shared/chart-legend\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type {\n BaseChartProps,\n ChartXAxis,\n ChartYAxis,\n ChartGrid,\n ChartLegend,\n ChartTooltipProp,\n} from \"../shared/types\";\n\nexport interface AreaChartSeries {\n dataKey: string;\n name: string;\n color?: string;\n fillOpacity?: number;\n strokeWidth?: number;\n type?: \"monotone\" | \"linear\" | \"step\" | \"basis\" | \"natural\";\n stackId?: string;\n}\n\nexport interface AreaChartProps extends BaseChartProps {\n data: Record<string, unknown>[];\n series: AreaChartSeries[];\n xAxis: ChartXAxis;\n yAxis?: ChartYAxis;\n grid?: boolean | ChartGrid;\n legend?: boolean | ChartLegend;\n tooltip?: ChartTooltipProp;\n loading?: boolean;\n}\n\nconst AreaChart = React.forwardRef<HTMLDivElement, AreaChartProps>(\n (\n {\n data,\n series,\n xAxis,\n yAxis,\n grid = true,\n tooltip = true,\n legend = false,\n animate = true,\n live = false,\n className,\n height = \"100%\",\n margin = { top: 8, right: 12, left: 0, bottom: 4 },\n loading,\n },\n ref,\n ) => {\n const gridConfig = React.useMemo(() => {\n if (grid === false) return null;\n if (grid === true) return { vertical: false, horizontal: true };\n return grid;\n }, [grid]);\n\n const legendConfig = resolveLegendConfig(legend);\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <RechartsAreaChart data={data} margin={margin}>\n <defs>\n {series.map((s, index) => {\n const color = getChartColor(index, s.color);\n return (\n <linearGradient\n key={s.dataKey}\n id={`area-gradient-${s.dataKey}`}\n x1=\"0\"\n y1=\"0\"\n x2=\"0\"\n y2=\"1\"\n >\n <stop offset=\"5%\" stopColor={color} stopOpacity={0.3} />\n <stop offset=\"95%\" stopColor={color} stopOpacity={0.05} />\n </linearGradient>\n );\n })}\n </defs>\n {gridConfig && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--divider))\"\n vertical={gridConfig.vertical ?? false}\n horizontal={gridConfig.horizontal ?? true}\n />\n )}\n <XAxis\n dataKey={xAxis.dataKey}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n minTickGap={xAxis.minTickGap ?? 24}\n tickFormatter={xAxis.tickFormatter}\n label={\n xAxis.label\n ? {\n value: xAxis.label,\n position: \"insideBottom\",\n offset: -4,\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n <YAxis\n domain={yAxis?.domain ?? [\"auto\", \"auto\"]}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n width={yAxis?.width ?? 30}\n tickFormatter={yAxis?.tickFormatter}\n label={\n yAxis?.label\n ? {\n value: yAxis.label,\n angle: -90,\n position: \"insideLeft\",\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n {tooltipProps && <Tooltip {...tooltipProps} />}\n {legendConfig && (\n <Legend\n verticalAlign={legendConfig.position ?? \"top\"}\n align={legendConfig.align ?? \"right\"}\n content={<ChartLegendContent />}\n />\n )}\n {series.map((s, index) => (\n <Area\n key={s.dataKey}\n type={s.type ?? \"monotone\"}\n dataKey={s.dataKey}\n name={s.name}\n stroke={getChartColor(index, s.color)}\n strokeWidth={s.strokeWidth ?? 2}\n fill={`url(#area-gradient-${s.dataKey})`}\n fillOpacity={s.fillOpacity ?? 1}\n stackId={s.stackId}\n isAnimationActive={isAnimated}\n animationDuration={isAnimated ? 300 : 0}\n />\n ))}\n </RechartsAreaChart>\n </ChartContainer>\n );\n },\n);\n\nAreaChart.displayName = \"AreaChart\";\nexport { AreaChart };\n","import * as React from \"react\";\nimport {\n ScatterChart as RechartsScatterChart,\n Scatter,\n XAxis,\n YAxis,\n ZAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n} from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartLegendContent, resolveLegendConfig } from \"../shared/chart-legend\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type {\n BaseChartProps,\n ChartXAxis,\n ChartYAxis,\n ChartGrid,\n ChartLegend,\n ChartTooltipProp,\n} from \"../shared/types\";\n\nexport interface ScatterChartSeries {\n name: string;\n data: Record<string, unknown>[];\n color?: string;\n /** Key for bubble size (optional, creates bubble chart) */\n zDataKey?: string;\n}\n\nexport interface ScatterChartProps extends BaseChartProps {\n series: ScatterChartSeries[];\n xAxis: ChartXAxis & { name?: string };\n yAxis?: ChartYAxis & { name?: string };\n zAxis?: { range?: [number, number] };\n grid?: boolean | ChartGrid;\n legend?: boolean | ChartLegend;\n tooltip?: ChartTooltipProp;\n loading?: boolean;\n}\n\nconst ScatterChart = React.forwardRef<HTMLDivElement, ScatterChartProps>(\n (\n {\n series,\n xAxis,\n yAxis,\n zAxis,\n grid = true,\n tooltip = true,\n legend = false,\n animate = true,\n live = false,\n className,\n height = \"100%\",\n margin = { top: 8, right: 12, left: 0, bottom: 4 },\n loading,\n },\n ref,\n ) => {\n const gridConfig = React.useMemo(() => {\n if (grid === false) return null;\n if (grid === true) return { vertical: true, horizontal: true };\n return grid;\n }, [grid]);\n\n const legendConfig = resolveLegendConfig(legend);\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n const hasZ = series.some((s) => s.zDataKey);\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!series.some((s) => s.data?.length)}\n >\n <RechartsScatterChart margin={margin}>\n {gridConfig && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--divider))\"\n vertical={gridConfig.vertical ?? true}\n horizontal={gridConfig.horizontal ?? true}\n />\n )}\n <XAxis\n dataKey={xAxis.dataKey}\n name={xAxis.name ?? xAxis.dataKey}\n type=\"number\"\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={xAxis.tickFormatter}\n label={\n xAxis.label\n ? {\n value: xAxis.label,\n position: \"insideBottom\",\n offset: -4,\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n <YAxis\n dataKey={yAxis?.domain ? undefined : \"y\"}\n name={yAxis?.name}\n type=\"number\"\n domain={yAxis?.domain ?? [\"auto\", \"auto\"]}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n width={yAxis?.width ?? 40}\n tickFormatter={yAxis?.tickFormatter}\n label={\n yAxis?.label\n ? {\n value: yAxis.label,\n angle: -90,\n position: \"insideLeft\",\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n {hasZ && <ZAxis range={zAxis?.range ?? [40, 400]} />}\n {tooltipProps && <Tooltip {...tooltipProps} />}\n {legendConfig && (\n <Legend\n verticalAlign={legendConfig.position ?? \"top\"}\n align={legendConfig.align ?? \"right\"}\n content={<ChartLegendContent />}\n />\n )}\n {series.map((s, index) => (\n <Scatter\n key={s.name}\n name={s.name}\n data={s.data}\n fill={getChartColor(index, s.color)}\n isAnimationActive={isAnimated}\n />\n ))}\n </RechartsScatterChart>\n </ChartContainer>\n );\n },\n);\n\nScatterChart.displayName = \"ScatterChart\";\nexport { ScatterChart };\n","import * as React from \"react\";\nimport {\n ComposedChart as RechartsComposedChart,\n Line,\n Bar,\n Area,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n} from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartLegendContent, resolveLegendConfig } from \"../shared/chart-legend\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type {\n BaseChartProps,\n ChartXAxis,\n ChartYAxis,\n ChartGrid,\n ChartLegend,\n ChartTooltipProp,\n} from \"../shared/types\";\n\nexport interface ComposedChartSeries {\n type: \"line\" | \"bar\" | \"area\";\n dataKey: string;\n name: string;\n color?: string;\n yAxisId?: string;\n stackId?: string;\n strokeWidth?: number;\n strokeDasharray?: string;\n fillOpacity?: number;\n radius?: number | [number, number, number, number];\n}\n\nexport interface ComposedChartProps extends BaseChartProps {\n data: Record<string, unknown>[];\n series: ComposedChartSeries[];\n xAxis: ChartXAxis;\n yAxis?: ChartYAxis;\n /** Secondary Y axis displayed on the right */\n yAxisRight?: ChartYAxis & { id: string };\n grid?: boolean | ChartGrid;\n legend?: boolean | ChartLegend;\n tooltip?: ChartTooltipProp;\n loading?: boolean;\n}\n\nconst ComposedChart = React.forwardRef<HTMLDivElement, ComposedChartProps>(\n (\n {\n data,\n series,\n xAxis,\n yAxis,\n yAxisRight,\n grid = true,\n tooltip = true,\n legend = false,\n animate = true,\n live = false,\n className,\n height = \"100%\",\n margin = { top: 8, right: 12, left: 0, bottom: 4 },\n loading,\n },\n ref,\n ) => {\n const gridConfig = React.useMemo(() => {\n if (grid === false) return null;\n if (grid === true) return { vertical: false, horizontal: true };\n return grid;\n }, [grid]);\n\n const legendConfig = resolveLegendConfig(legend);\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <RechartsComposedChart data={data} margin={margin}>\n {gridConfig && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--divider))\"\n vertical={gridConfig.vertical ?? false}\n horizontal={gridConfig.horizontal ?? true}\n />\n )}\n <XAxis\n dataKey={xAxis.dataKey}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n minTickGap={xAxis.minTickGap ?? 24}\n tickFormatter={xAxis.tickFormatter}\n label={\n xAxis.label\n ? {\n value: xAxis.label,\n position: \"insideBottom\",\n offset: -4,\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n <YAxis\n yAxisId=\"left\"\n domain={yAxis?.domain ?? [\"auto\", \"auto\"]}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n width={yAxis?.width ?? 40}\n tickFormatter={yAxis?.tickFormatter}\n label={\n yAxis?.label\n ? {\n value: yAxis.label,\n angle: -90,\n position: \"insideLeft\",\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n {yAxisRight && (\n <YAxis\n yAxisId={yAxisRight.id}\n orientation=\"right\"\n domain={yAxisRight.domain ?? [\"auto\", \"auto\"]}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n width={yAxisRight.width ?? 40}\n tickFormatter={yAxisRight.tickFormatter}\n label={\n yAxisRight.label\n ? {\n value: yAxisRight.label,\n angle: 90,\n position: \"insideRight\",\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n )}\n {tooltipProps && <Tooltip {...tooltipProps} />}\n {legendConfig && (\n <Legend\n verticalAlign={legendConfig.position ?? \"top\"}\n align={legendConfig.align ?? \"right\"}\n content={<ChartLegendContent />}\n />\n )}\n {series.map((s, index) => {\n const color = getChartColor(index, s.color);\n const yAxisId = s.yAxisId ?? \"left\";\n const props = {\n key: s.dataKey,\n dataKey: s.dataKey,\n name: s.name,\n yAxisId,\n isAnimationActive: isAnimated,\n animationDuration: isAnimated ? 300 : 0,\n };\n switch (s.type) {\n case \"line\":\n return (\n <Line\n {...props}\n type=\"monotone\"\n stroke={color}\n strokeWidth={s.strokeWidth ?? 2}\n strokeDasharray={s.strokeDasharray}\n dot={false}\n />\n );\n case \"bar\":\n return (\n <Bar\n {...props}\n fill={color}\n stackId={s.stackId}\n radius={s.radius ?? 0}\n />\n );\n case \"area\":\n return (\n <Area\n {...props}\n type=\"monotone\"\n stroke={color}\n fill={color}\n fillOpacity={s.fillOpacity ?? 0.15}\n strokeWidth={s.strokeWidth ?? 2}\n stackId={s.stackId}\n />\n );\n }\n })}\n </RechartsComposedChart>\n </ChartContainer>\n );\n },\n);\n\nComposedChart.displayName = \"ComposedChart\";\nexport { ComposedChart };\n","import * as React from \"react\";\nimport {\n BarChart as RechartsBarChart,\n Bar,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Cell,\n ReferenceLine,\n} from \"recharts\";\nimport { getSemanticColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type { BaseChartProps, ChartXAxis, ChartYAxis, ChartTooltipProp } from \"../shared/types\";\n\nexport interface WaterfallItem {\n name: string;\n value: number;\n /** Mark as a summary/total bar rather than a delta */\n isTotal?: boolean;\n}\n\nexport interface WaterfallChartProps extends BaseChartProps {\n data: WaterfallItem[];\n xAxis?: Partial<ChartXAxis>;\n yAxis?: ChartYAxis;\n tooltip?: ChartTooltipProp;\n positiveColor?: string;\n negativeColor?: string;\n totalColor?: string;\n loading?: boolean;\n}\n\ninterface WaterfallRow {\n name: string;\n invisible: number;\n delta: number;\n isTotal: boolean;\n rawValue: number;\n}\n\nfunction buildWaterfallData(items: WaterfallItem[]): WaterfallRow[] {\n let running = 0;\n return items.map((item) => {\n if (item.isTotal) {\n const row: WaterfallRow = {\n name: item.name,\n invisible: 0,\n delta: running,\n isTotal: true,\n rawValue: running,\n };\n return row;\n }\n const start = running;\n running += item.value;\n const base = item.value >= 0 ? start : running;\n return {\n name: item.name,\n invisible: base,\n delta: Math.abs(item.value),\n isTotal: false,\n rawValue: item.value,\n };\n });\n}\n\nconst WaterfallChart = React.forwardRef<HTMLDivElement, WaterfallChartProps>(\n (\n {\n data,\n xAxis,\n yAxis,\n tooltip = true,\n positiveColor,\n negativeColor,\n totalColor,\n animate = true,\n live = false,\n className,\n height = \"100%\",\n margin = { top: 8, right: 12, left: 0, bottom: 4 },\n loading,\n },\n ref,\n ) => {\n const rows = React.useMemo(() => buildWaterfallData(data), [data]);\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n\n const posColor = positiveColor ?? getSemanticColor(\"positive\");\n const negColor = negativeColor ?? getSemanticColor(\"negative\");\n const totColor = totalColor ?? \"hsl(var(--chart-3))\";\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <RechartsBarChart data={rows} margin={margin}>\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--divider))\"\n vertical={false}\n />\n <XAxis\n dataKey=\"name\"\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={xAxis?.tickFormatter}\n />\n <YAxis\n domain={yAxis?.domain ?? [\"auto\", \"auto\"]}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n width={yAxis?.width ?? 40}\n tickFormatter={yAxis?.tickFormatter}\n label={\n yAxis?.label\n ? {\n value: yAxis.label,\n angle: -90,\n position: \"insideLeft\",\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n <ReferenceLine y={0} stroke=\"hsl(var(--divider))\" />\n {tooltipProps && <Tooltip {...tooltipProps} />}\n <Bar\n dataKey=\"invisible\"\n stackId=\"waterfall\"\n fill=\"transparent\"\n isAnimationActive={false}\n />\n <Bar\n dataKey=\"delta\"\n stackId=\"waterfall\"\n isAnimationActive={isAnimated}\n animationDuration={isAnimated ? 300 : 0}\n radius={[2, 2, 0, 0]}\n >\n {rows.map((row, i) => (\n <Cell\n key={i}\n fill={\n row.isTotal\n ? totColor\n : row.rawValue >= 0\n ? posColor\n : negColor\n }\n />\n ))}\n </Bar>\n </RechartsBarChart>\n </ChartContainer>\n );\n },\n);\n\nWaterfallChart.displayName = \"WaterfallChart\";\nexport { WaterfallChart };\n","import * as React from \"react\";\nimport {\n PieChart as RechartsPieChart,\n Pie,\n Cell,\n Tooltip,\n Legend,\n} from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartLegendContent, resolveLegendConfig } from \"../shared/chart-legend\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type { BaseChartProps, ChartLegend, ChartTooltipProp } from \"../shared/types\";\n\nexport interface PieChartDatum {\n name: string;\n value: number;\n color?: string;\n}\n\nexport interface PieChartProps extends BaseChartProps {\n data: PieChartDatum[];\n innerRadius?: number | string;\n outerRadius?: number | string;\n paddingAngle?: number;\n startAngle?: number;\n endAngle?: number;\n legend?: boolean | ChartLegend;\n tooltip?: ChartTooltipProp;\n /** Label rendered on each slice */\n label?: boolean | ((entry: PieChartDatum) => string);\n loading?: boolean;\n}\n\nconst RADIAN = Math.PI / 180;\n\nfunction defaultRenderLabel({\n cx,\n cy,\n midAngle,\n innerRadius,\n outerRadius,\n percent,\n}: {\n cx: number;\n cy: number;\n midAngle: number;\n innerRadius: number;\n outerRadius: number;\n percent: number;\n}) {\n const radius = innerRadius + (outerRadius - innerRadius) * 0.5;\n const x = cx + radius * Math.cos(-midAngle * RADIAN);\n const y = cy + radius * Math.sin(-midAngle * RADIAN);\n if (percent < 0.04) return null;\n return (\n <text\n x={x}\n y={y}\n fill=\"hsl(var(--card-foreground))\"\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n fontSize={10}\n fontWeight={600}\n >\n {`${(percent * 100).toFixed(0)}%`}\n </text>\n );\n}\n\nconst PieChart = React.forwardRef<HTMLDivElement, PieChartProps>(\n (\n {\n data,\n innerRadius = 0,\n outerRadius = \"80%\",\n paddingAngle = 2,\n startAngle = 90,\n endAngle = -270,\n legend = false,\n tooltip = true,\n label = false,\n animate = true,\n live = false,\n className,\n height = \"100%\",\n margin = { top: 8, right: 8, left: 8, bottom: 8 },\n loading,\n },\n ref,\n ) => {\n const legendConfig = resolveLegendConfig(legend);\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n\n const renderLabel =\n label === true\n ? defaultRenderLabel\n : typeof label === \"function\"\n ? (entry: Record<string, unknown>) =>\n (label as (e: PieChartDatum) => string)(entry as unknown as PieChartDatum)\n : undefined;\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <RechartsPieChart margin={margin}>\n <Pie\n data={data}\n dataKey=\"value\"\n nameKey=\"name\"\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n paddingAngle={paddingAngle}\n startAngle={startAngle}\n endAngle={endAngle}\n isAnimationActive={isAnimated}\n animationDuration={isAnimated ? 400 : 0}\n label={renderLabel}\n labelLine={false}\n stroke=\"hsl(var(--card))\"\n strokeWidth={2}\n >\n {data.map((entry, index) => (\n <Cell\n key={entry.name}\n fill={getChartColor(index, entry.color)}\n />\n ))}\n </Pie>\n {tooltipProps && <Tooltip {...tooltipProps} />}\n {legendConfig && (\n <Legend\n verticalAlign={legendConfig.position ?? \"bottom\"}\n align={legendConfig.align ?? \"center\"}\n content={<ChartLegendContent />}\n />\n )}\n </RechartsPieChart>\n </ChartContainer>\n );\n },\n);\n\nPieChart.displayName = \"PieChart\";\nexport { PieChart };\n","import * as React from \"react\";\nimport {\n PieChart as RechartsPieChart,\n Pie,\n Cell,\n Tooltip,\n Legend,\n} from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartLegendContent, resolveLegendConfig } from \"../shared/chart-legend\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type { BaseChartProps, ChartLegend, ChartTooltipProp } from \"../shared/types\";\n\nexport interface DonutChartDatum {\n name: string;\n value: number;\n color?: string;\n}\n\nexport interface DonutChartProps extends BaseChartProps {\n data: DonutChartDatum[];\n innerRadius?: number | string;\n outerRadius?: number | string;\n paddingAngle?: number;\n legend?: boolean | ChartLegend;\n tooltip?: ChartTooltipProp;\n /** Content rendered in the center of the donut */\n centerLabel?: string;\n centerValue?: string;\n loading?: boolean;\n}\n\nconst DonutChart = React.forwardRef<HTMLDivElement, DonutChartProps>(\n (\n {\n data,\n innerRadius = \"60%\",\n outerRadius = \"80%\",\n paddingAngle = 2,\n legend = false,\n tooltip = true,\n centerLabel,\n centerValue,\n animate = true,\n live = false,\n className,\n height = \"100%\",\n margin = { top: 8, right: 8, left: 8, bottom: 8 },\n loading,\n },\n ref,\n ) => {\n const legendConfig = resolveLegendConfig(legend);\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <RechartsPieChart margin={margin}>\n <Pie\n data={data}\n dataKey=\"value\"\n nameKey=\"name\"\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n paddingAngle={paddingAngle}\n startAngle={90}\n endAngle={-270}\n isAnimationActive={isAnimated}\n animationDuration={isAnimated ? 400 : 0}\n stroke=\"hsl(var(--card))\"\n strokeWidth={2}\n >\n {data.map((entry, index) => (\n <Cell\n key={entry.name}\n fill={getChartColor(index, entry.color)}\n />\n ))}\n </Pie>\n {(centerLabel || centerValue) && (\n <text\n x=\"50%\"\n y=\"50%\"\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n >\n {centerValue && (\n <tspan\n x=\"50%\"\n dy={centerLabel ? \"-0.5em\" : \"0\"}\n fontSize={20}\n fontWeight={700}\n fill=\"hsl(var(--foreground))\"\n >\n {centerValue}\n </tspan>\n )}\n {centerLabel && (\n <tspan\n x=\"50%\"\n dy={centerValue ? \"1.4em\" : \"0\"}\n fontSize={11}\n fill=\"hsl(var(--muted-foreground))\"\n >\n {centerLabel}\n </tspan>\n )}\n </text>\n )}\n {tooltipProps && <Tooltip {...tooltipProps} />}\n {legendConfig && (\n <Legend\n verticalAlign={legendConfig.position ?? \"bottom\"}\n align={legendConfig.align ?? \"center\"}\n content={<ChartLegendContent />}\n />\n )}\n </RechartsPieChart>\n </ChartContainer>\n );\n },\n);\n\nDonutChart.displayName = \"DonutChart\";\nexport { DonutChart };\n","import * as React from \"react\";\nimport {\n RadarChart as RechartsRadarChart,\n Radar,\n PolarGrid,\n PolarAngleAxis,\n PolarRadiusAxis,\n Tooltip,\n Legend,\n} from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartLegendContent, resolveLegendConfig } from \"../shared/chart-legend\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type { BaseChartProps, ChartLegend, ChartTooltipProp } from \"../shared/types\";\n\nexport interface RadarChartSeries {\n dataKey: string;\n name: string;\n color?: string;\n fillOpacity?: number;\n strokeWidth?: number;\n /** Use dashed stroke for baseline/reference series */\n strokeDasharray?: string;\n}\n\nexport interface RadarChartProps extends BaseChartProps {\n data: Record<string, unknown>[];\n series: RadarChartSeries[];\n /** Key in data used for the angle axis labels */\n categoryKey: string;\n domain?: [number, number];\n legend?: boolean | ChartLegend;\n tooltip?: ChartTooltipProp;\n loading?: boolean;\n}\n\nconst RadarChart = React.forwardRef<HTMLDivElement, RadarChartProps>(\n (\n {\n data,\n series,\n categoryKey,\n domain,\n legend = false,\n tooltip = true,\n animate = true,\n live = false,\n className,\n height = \"100%\",\n margin = { top: 8, right: 8, left: 8, bottom: 8 },\n loading,\n },\n ref,\n ) => {\n const legendConfig = resolveLegendConfig(legend);\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <RechartsRadarChart data={data} margin={margin} cx=\"50%\" cy=\"50%\">\n <PolarGrid stroke=\"hsl(var(--divider))\" />\n <PolarAngleAxis\n dataKey={categoryKey}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n />\n <PolarRadiusAxis\n domain={domain}\n tick={{ fontSize: 9, fill: \"hsl(var(--muted-foreground))\" }}\n axisLine={false}\n />\n {tooltipProps && <Tooltip {...tooltipProps} />}\n {legendConfig && (\n <Legend\n verticalAlign={legendConfig.position ?? \"bottom\"}\n align={legendConfig.align ?? \"center\"}\n content={<ChartLegendContent />}\n />\n )}\n {series.map((s, index) => {\n const color = getChartColor(index, s.color);\n return (\n <Radar\n key={s.dataKey}\n name={s.name}\n dataKey={s.dataKey}\n stroke={color}\n strokeWidth={s.strokeWidth ?? 2}\n strokeDasharray={s.strokeDasharray}\n fill={color}\n fillOpacity={s.fillOpacity ?? 0.15}\n isAnimationActive={isAnimated}\n animationDuration={isAnimated ? 400 : 0}\n />\n );\n })}\n </RechartsRadarChart>\n </ChartContainer>\n );\n },\n);\n\nRadarChart.displayName = \"RadarChart\";\nexport { RadarChart };\n","import * as React from \"react\";\nimport {\n RadialBarChart as RechartsRadialBarChart,\n RadialBar,\n Tooltip,\n Legend,\n} from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartLegendContent, resolveLegendConfig } from \"../shared/chart-legend\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type { BaseChartProps, ChartLegend, ChartTooltipProp } from \"../shared/types\";\n\nexport interface RadialBarDatum {\n name: string;\n value: number;\n fill?: string;\n}\n\nexport interface RadialBarChartProps extends BaseChartProps {\n data: RadialBarDatum[];\n innerRadius?: number | string;\n outerRadius?: number | string;\n startAngle?: number;\n endAngle?: number;\n legend?: boolean | ChartLegend;\n tooltip?: ChartTooltipProp;\n /** Show value labels on each bar */\n showLabels?: boolean;\n loading?: boolean;\n}\n\nconst RadialBarChart = React.forwardRef<HTMLDivElement, RadialBarChartProps>(\n (\n {\n data,\n innerRadius = \"30%\",\n outerRadius = \"90%\",\n startAngle = 180,\n endAngle = 0,\n legend = false,\n tooltip = true,\n showLabels = true,\n animate = true,\n live = false,\n className,\n height = \"100%\",\n margin = { top: 8, right: 8, left: 8, bottom: 8 },\n loading,\n },\n ref,\n ) => {\n const legendConfig = resolveLegendConfig(legend);\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n\n const coloredData = React.useMemo(\n () =>\n data.map((d, i) => ({\n ...d,\n fill: d.fill ?? getChartColor(i),\n })),\n [data],\n );\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <RechartsRadialBarChart\n data={coloredData}\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n startAngle={startAngle}\n endAngle={endAngle}\n margin={margin}\n cx=\"50%\"\n cy=\"50%\"\n >\n <RadialBar\n dataKey=\"value\"\n background={{ fill: \"hsl(var(--muted))\" }}\n isAnimationActive={isAnimated}\n animationDuration={isAnimated ? 400 : 0}\n label={\n showLabels\n ? {\n position: \"insideStart\",\n fill: \"hsl(var(--foreground))\",\n fontSize: 10,\n fontWeight: 600,\n }\n : false\n }\n />\n {tooltipProps && <Tooltip {...tooltipProps} />}\n {legendConfig && (\n <Legend\n verticalAlign={legendConfig.position ?? \"bottom\"}\n align={legendConfig.align ?? \"center\"}\n content={<ChartLegendContent />}\n />\n )}\n </RechartsRadialBarChart>\n </ChartContainer>\n );\n },\n);\n\nRadialBarChart.displayName = \"RadialBarChart\";\nexport { RadialBarChart };\n","import * as React from \"react\";\nimport { Sankey, Tooltip, Layer, Rectangle } from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type { BaseChartProps, ChartTooltipProp } from \"../shared/types\";\n\nexport interface SankeyNode {\n name: string;\n color?: string;\n}\n\nexport interface SankeyLink {\n source: number;\n target: number;\n value: number;\n}\n\nexport interface SankeyChartData {\n nodes: SankeyNode[];\n links: SankeyLink[];\n}\n\nexport interface SankeyChartProps extends BaseChartProps {\n data: SankeyChartData;\n nodeWidth?: number;\n nodePadding?: number;\n tooltip?: ChartTooltipProp;\n loading?: boolean;\n}\n\ninterface SankeyNodeRendererProps {\n x: number;\n y: number;\n width: number;\n height: number;\n index: number;\n payload: { name: string; color?: string };\n}\n\nfunction SankeyNodeRenderer({\n x,\n y,\n width,\n height,\n index,\n payload,\n}: SankeyNodeRendererProps) {\n const fill = payload.color ?? getChartColor(index);\n return (\n <Layer key={`node-${index}`}>\n <Rectangle\n x={x}\n y={y}\n width={width}\n height={height}\n fill={fill}\n fillOpacity={0.9}\n />\n <text\n x={x + width + 6}\n y={y + height / 2}\n textAnchor=\"start\"\n dominantBaseline=\"central\"\n fontSize={10}\n fill=\"hsl(var(--foreground))\"\n >\n {payload.name}\n </text>\n </Layer>\n );\n}\n\ninterface SankeyLinkRendererProps {\n sourceX: number;\n sourceY: number;\n sourceControlX: number;\n targetX: number;\n targetY: number;\n targetControlX: number;\n linkWidth: number;\n index: number;\n payload: { source: { color?: string }; target: unknown };\n}\n\nfunction SankeyLinkRenderer({\n sourceX,\n sourceY,\n sourceControlX,\n targetX,\n targetY,\n targetControlX,\n linkWidth,\n index,\n payload,\n}: SankeyLinkRendererProps) {\n const sourceColor =\n (payload.source as { color?: string }).color ?? getChartColor(index);\n return (\n <Layer key={`link-${index}`}>\n <path\n d={`\n M${sourceX},${sourceY}\n C${sourceControlX},${sourceY} ${targetControlX},${targetY} ${targetX},${targetY}\n `}\n fill=\"none\"\n stroke={sourceColor}\n strokeWidth={linkWidth}\n strokeOpacity={0.3}\n />\n </Layer>\n );\n}\n\nconst SankeyChart = React.forwardRef<HTMLDivElement, SankeyChartProps>(\n (\n {\n data,\n nodeWidth = 10,\n nodePadding = 20,\n tooltip = true,\n className,\n height = \"100%\",\n margin = { top: 8, right: 80, left: 8, bottom: 8 },\n loading,\n },\n ref,\n ) => {\n const tooltipProps = resolveTooltipProps(tooltip);\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.nodes?.length}\n >\n <Sankey\n data={data}\n nodeWidth={nodeWidth}\n nodePadding={nodePadding}\n margin={margin}\n node={(SankeyNodeRenderer as never)}\n link={(SankeyLinkRenderer as never)}\n >\n {tooltipProps && <Tooltip {...tooltipProps} />}\n </Sankey>\n </ChartContainer>\n );\n },\n);\n\nSankeyChart.displayName = \"SankeyChart\";\nexport { SankeyChart };\n","import * as React from \"react\";\nimport { Treemap, Tooltip } from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type { BaseChartProps, ChartTooltipProp } from \"../shared/types\";\n\nexport interface TreemapDatum {\n name: string;\n value?: number;\n color?: string;\n children?: TreemapDatum[];\n}\n\nexport interface TreemapChartProps extends BaseChartProps {\n data: TreemapDatum[];\n dataKey?: string;\n aspectRatio?: number;\n tooltip?: ChartTooltipProp;\n loading?: boolean;\n}\n\ninterface TreemapContentProps {\n x: number;\n y: number;\n width: number;\n height: number;\n index: number;\n name: string;\n depth: number;\n color?: string;\n}\n\nfunction TreemapContent({\n x,\n y,\n width,\n height,\n index,\n name,\n depth,\n color,\n}: TreemapContentProps) {\n const fill = color ?? getChartColor(index);\n const showLabel = width > 40 && height > 20;\n\n return (\n <g>\n <rect\n x={x}\n y={y}\n width={width}\n height={height}\n fill={fill}\n fillOpacity={depth === 1 ? 0.85 : 0.6}\n stroke=\"hsl(var(--card))\"\n strokeWidth={2}\n rx={2}\n />\n {showLabel && (\n <text\n x={x + width / 2}\n y={y + height / 2}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n fontSize={Math.min(11, width / 6)}\n fill=\"hsl(var(--card-foreground))\"\n fontWeight={500}\n style={{ pointerEvents: \"none\" }}\n >\n {name.length > width / 7 ? `${name.slice(0, Math.floor(width / 7))}…` : name}\n </text>\n )}\n </g>\n );\n}\n\nconst TreemapChart = React.forwardRef<HTMLDivElement, TreemapChartProps>(\n (\n {\n data,\n dataKey = \"value\",\n aspectRatio = 4 / 3,\n tooltip = true,\n animate = true,\n live = false,\n className,\n height = \"100%\",\n margin,\n loading,\n },\n ref,\n ) => {\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <Treemap\n data={data}\n dataKey={dataKey}\n aspectRatio={aspectRatio}\n isAnimationActive={isAnimated}\n animationDuration={isAnimated ? 400 : 0}\n content={<TreemapContent x={0} y={0} width={0} height={0} index={0} name=\"\" depth={1} />}\n >\n {tooltipProps && <Tooltip {...tooltipProps} />}\n </Treemap>\n </ChartContainer>\n );\n },\n);\n\nTreemapChart.displayName = \"TreemapChart\";\nexport { TreemapChart };\n","import * as React from \"react\";\nimport {\n FunnelChart as RechartsFunnelChart,\n Funnel,\n Cell,\n Tooltip,\n LabelList,\n} from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type { BaseChartProps, ChartTooltipProp } from \"../shared/types\";\n\nexport interface FunnelDatum {\n name: string;\n value: number;\n color?: string;\n}\n\nexport interface FunnelChartProps extends BaseChartProps {\n data: FunnelDatum[];\n tooltip?: ChartTooltipProp;\n showLabels?: boolean;\n loading?: boolean;\n}\n\nconst FunnelChart = React.forwardRef<HTMLDivElement, FunnelChartProps>(\n (\n {\n data,\n tooltip = true,\n showLabels = true,\n animate = true,\n live = false,\n className,\n height = \"100%\",\n margin = { top: 8, right: 8, left: 8, bottom: 8 },\n loading,\n },\n ref,\n ) => {\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <RechartsFunnelChart margin={margin}>\n <Funnel\n dataKey=\"value\"\n data={data}\n isAnimationActive={isAnimated}\n animationDuration={isAnimated ? 400 : 0}\n >\n {data.map((entry, index) => (\n <Cell\n key={entry.name}\n fill={getChartColor(index, entry.color)}\n stroke=\"hsl(var(--card))\"\n strokeWidth={2}\n />\n ))}\n {showLabels && (\n <LabelList\n dataKey=\"name\"\n position=\"center\"\n fill=\"#ffffff\"\n fontSize={13}\n fontWeight={600}\n style={{\n textShadow: \"0 1px 3px rgba(0,0,0,0.4)\",\n paintOrder: \"stroke\",\n stroke: \"rgba(0,0,0,0.2)\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n }}\n />\n )}\n </Funnel>\n {tooltipProps && <Tooltip {...tooltipProps} />}\n </RechartsFunnelChart>\n </ChartContainer>\n );\n },\n);\n\nFunnelChart.displayName = \"FunnelChart\";\nexport { FunnelChart };\n","import * as React from \"react\";\nimport { cn } from \"@optilogic/core\";\nimport { getChartColor } from \"../shared/colors\";\n\nexport interface GanttTask {\n id: string;\n name: string;\n start: Date;\n end: Date;\n /** 0–100 completion percentage */\n progress?: number;\n group?: string;\n color?: string;\n /** Task IDs this task depends on (renders dependency arrows) */\n dependencies?: string[];\n}\n\nexport interface GanttMilestone {\n id: string;\n name: string;\n date: Date;\n color?: string;\n}\n\nexport type GanttTimeScale = \"day\" | \"week\" | \"month\";\n\nexport interface GanttChartProps {\n tasks: GanttTask[];\n milestones?: GanttMilestone[];\n timeScale?: GanttTimeScale;\n className?: string;\n height?: number | string;\n rowHeight?: number;\n labelWidth?: number;\n onTaskClick?: (task: GanttTask) => void;\n}\n\nconst ROW_HEIGHT_DEFAULT = 36;\nconst LABEL_WIDTH_DEFAULT = 160;\nconst HEADER_HEIGHT = 32;\n\nfunction getTimeBounds(tasks: GanttTask[], milestones: GanttMilestone[]) {\n let min = Infinity;\n let max = -Infinity;\n for (const t of tasks) {\n if (t.start.getTime() < min) min = t.start.getTime();\n if (t.end.getTime() > max) max = t.end.getTime();\n }\n for (const m of milestones) {\n if (m.date.getTime() < min) min = m.date.getTime();\n if (m.date.getTime() > max) max = m.date.getTime();\n }\n const pad = (max - min) * 0.05 || 86400000;\n return { min: min - pad, max: max + pad, span: max - min + 2 * pad };\n}\n\nfunction generateTicks(\n min: number,\n max: number,\n scale: GanttTimeScale,\n): { pos: number; label: string }[] {\n const ticks: { pos: number; label: string }[] = [];\n const d = new Date(min);\n\n if (scale === \"day\") {\n d.setHours(0, 0, 0, 0);\n while (d.getTime() <= max) {\n ticks.push({\n pos: d.getTime(),\n label: d.toLocaleDateString(undefined, { month: \"short\", day: \"numeric\" }),\n });\n d.setDate(d.getDate() + 1);\n }\n } else if (scale === \"week\") {\n d.setHours(0, 0, 0, 0);\n d.setDate(d.getDate() - d.getDay());\n while (d.getTime() <= max) {\n ticks.push({\n pos: d.getTime(),\n label: d.toLocaleDateString(undefined, { month: \"short\", day: \"numeric\" }),\n });\n d.setDate(d.getDate() + 7);\n }\n } else {\n d.setDate(1);\n d.setHours(0, 0, 0, 0);\n while (d.getTime() <= max) {\n ticks.push({\n pos: d.getTime(),\n label: d.toLocaleDateString(undefined, { month: \"short\", year: \"2-digit\" }),\n });\n d.setMonth(d.getMonth() + 1);\n }\n }\n return ticks;\n}\n\nconst GanttChart = React.forwardRef<HTMLDivElement, GanttChartProps>(\n function GanttChart(\n {\n tasks,\n milestones = [],\n timeScale = \"day\",\n className,\n height = 400,\n rowHeight = ROW_HEIGHT_DEFAULT,\n labelWidth = LABEL_WIDTH_DEFAULT,\n onTaskClick,\n },\n ref,\n ) {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const [hoveredId, setHoveredId] = React.useState<string | null>(null);\n const [tooltipInfo, setTooltipInfo] = React.useState<{\n task: GanttTask;\n x: number;\n y: number;\n } | null>(null);\n\n const groups = React.useMemo(() => {\n const map = new Map<string, GanttTask[]>();\n for (const t of tasks) {\n const g = t.group ?? \"\";\n if (!map.has(g)) map.set(g, []);\n map.get(g)!.push(t);\n }\n return map;\n }, [tasks]);\n\n const orderedTasks = React.useMemo(() => {\n const result: GanttTask[] = [];\n for (const group of groups.values()) {\n result.push(...group.sort((a, b) => a.start.getTime() - b.start.getTime()));\n }\n return result;\n }, [groups]);\n\n const taskIndex = React.useMemo(() => {\n const m = new Map<string, number>();\n orderedTasks.forEach((t, i) => m.set(t.id, i));\n return m;\n }, [orderedTasks]);\n\n const bounds = React.useMemo(\n () => getTimeBounds(tasks, milestones),\n [tasks, milestones],\n );\n\n const ticks = React.useMemo(\n () => generateTicks(bounds.min, bounds.max, timeScale),\n [bounds, timeScale],\n );\n\n const chartHeight =\n typeof height === \"number\" ? height : undefined;\n const svgHeight = HEADER_HEIGHT + orderedTasks.length * rowHeight + 8;\n\n function xOf(time: number, chartWidth: number) {\n return ((time - bounds.min) / bounds.span) * chartWidth;\n }\n\n return (\n <div\n ref={(node) => {\n (containerRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }}\n className={cn(\"w-full overflow-auto relative\", className)}\n style={{ height }}\n >\n <svg\n width=\"100%\"\n height={Math.max(svgHeight, chartHeight ?? svgHeight)}\n style={{ minWidth: labelWidth + 400 }}\n >\n {/* Label background */}\n <rect\n x={0}\n y={0}\n width={labelWidth}\n height={svgHeight}\n fill=\"hsl(var(--card))\"\n />\n <line\n x1={labelWidth}\n y1={0}\n x2={labelWidth}\n y2={svgHeight}\n stroke=\"hsl(var(--border))\"\n />\n\n {/* Time axis header */}\n <g>\n {ticks.map((tick, i) => {\n const x = labelWidth + xOf(tick.pos, 1000);\n return (\n <g key={i}>\n <line\n x1={x}\n y1={HEADER_HEIGHT}\n x2={x}\n y2={svgHeight}\n stroke=\"hsl(var(--divider))\"\n strokeDasharray=\"2 4\"\n />\n <text\n x={x + 4}\n y={HEADER_HEIGHT - 10}\n fontSize={9}\n fill=\"hsl(var(--muted-foreground))\"\n >\n {tick.label}\n </text>\n </g>\n );\n })}\n </g>\n\n {/* Rows */}\n {orderedTasks.map((task, i) => {\n const y = HEADER_HEIGHT + i * rowHeight;\n const barX = labelWidth + xOf(task.start.getTime(), 1000);\n const barW = xOf(task.end.getTime(), 1000) - xOf(task.start.getTime(), 1000);\n const barH = rowHeight * 0.55;\n const barY = y + (rowHeight - barH) / 2;\n const color = task.color ?? getChartColor(i);\n const isHovered = hoveredId === task.id;\n const progress = task.progress ?? 0;\n\n return (\n <g\n key={task.id}\n onMouseEnter={(e) => {\n setHoveredId(task.id);\n const rect = containerRef.current?.getBoundingClientRect();\n setTooltipInfo({\n task,\n x: e.clientX - (rect?.left ?? 0) + (containerRef.current?.scrollLeft ?? 0),\n y: e.clientY - (rect?.top ?? 0) + (containerRef.current?.scrollTop ?? 0),\n });\n }}\n onMouseLeave={() => {\n setHoveredId(null);\n setTooltipInfo(null);\n }}\n onClick={() => onTaskClick?.(task)}\n style={{ cursor: onTaskClick ? \"pointer\" : \"default\" }}\n >\n {/* Row stripe */}\n {i % 2 === 0 && (\n <rect\n x={0}\n y={y}\n width=\"100%\"\n height={rowHeight}\n fill=\"hsl(var(--muted))\"\n fillOpacity={0.3}\n />\n )}\n {/* Label */}\n <text\n x={12}\n y={y + rowHeight / 2}\n dominantBaseline=\"central\"\n fontSize={11}\n fill=\"hsl(var(--foreground))\"\n fontWeight={isHovered ? 600 : 400}\n >\n {task.name.length > labelWidth / 8\n ? `${task.name.slice(0, Math.floor(labelWidth / 8))}…`\n : task.name}\n </text>\n {/* Background bar */}\n <rect\n x={barX}\n y={barY}\n width={Math.max(barW, 2)}\n height={barH}\n rx={3}\n fill={color}\n fillOpacity={0.25}\n stroke={isHovered ? color : \"none\"}\n strokeWidth={isHovered ? 1.5 : 0}\n />\n {/* Progress fill */}\n {progress > 0 && (\n <rect\n x={barX}\n y={barY}\n width={Math.max((barW * progress) / 100, 2)}\n height={barH}\n rx={3}\n fill={color}\n fillOpacity={0.85}\n />\n )}\n </g>\n );\n })}\n\n {/* Dependency arrows */}\n {orderedTasks.map((task) =>\n (task.dependencies ?? []).map((depId) => {\n const fromIdx = taskIndex.get(depId);\n if (fromIdx === undefined) return null;\n const toIdx = taskIndex.get(task.id)!;\n const fromTask = orderedTasks[fromIdx];\n const fromEndX = labelWidth + xOf(fromTask.end.getTime(), 1000);\n const fromY = HEADER_HEIGHT + fromIdx * rowHeight + rowHeight / 2;\n const toStartX = labelWidth + xOf(task.start.getTime(), 1000);\n const toY = HEADER_HEIGHT + toIdx * rowHeight + rowHeight / 2;\n const midX = (fromEndX + toStartX) / 2;\n\n return (\n <g key={`${depId}-${task.id}`}>\n <path\n d={`M${fromEndX},${fromY} C${midX},${fromY} ${midX},${toY} ${toStartX},${toY}`}\n fill=\"none\"\n stroke=\"hsl(var(--muted-foreground))\"\n strokeWidth={1}\n strokeDasharray=\"3 2\"\n markerEnd=\"url(#arrow)\"\n />\n </g>\n );\n }),\n )}\n\n {/* Milestones */}\n {milestones.map((m, i) => {\n const x = labelWidth + xOf(m.date.getTime(), 1000);\n return (\n <g key={m.id}>\n <line\n x1={x}\n y1={HEADER_HEIGHT}\n x2={x}\n y2={svgHeight}\n stroke={m.color ?? \"hsl(var(--warning))\"}\n strokeWidth={1.5}\n strokeDasharray=\"4 3\"\n />\n <polygon\n points={`${x},${HEADER_HEIGHT - 2} ${x + 5},${HEADER_HEIGHT + 6} ${x},${HEADER_HEIGHT + 14} ${x - 5},${HEADER_HEIGHT + 6}`}\n fill={m.color ?? \"hsl(var(--warning))\"}\n />\n </g>\n );\n })}\n\n {/* Arrow marker definition */}\n <defs>\n <marker\n id=\"arrow\"\n viewBox=\"0 0 6 6\"\n refX={6}\n refY={3}\n markerWidth={6}\n markerHeight={6}\n orient=\"auto-start-reverse\"\n >\n <path\n d=\"M 0 0 L 6 3 L 0 6 z\"\n fill=\"hsl(var(--muted-foreground))\"\n />\n </marker>\n </defs>\n </svg>\n\n {/* Tooltip */}\n {tooltipInfo && (\n <div\n style={{\n position: \"absolute\",\n left: tooltipInfo.x + 12,\n top: tooltipInfo.y - 10,\n background: \"hsl(var(--card))\",\n border: \"1px solid hsl(var(--border))\",\n borderRadius: 6,\n padding: \"6px 10px\",\n fontSize: 11,\n lineHeight: 1.5,\n boxShadow: \"0 2px 8px rgba(0,0,0,0.15)\",\n pointerEvents: \"none\",\n zIndex: 50,\n maxWidth: 220,\n }}\n >\n <div\n style={{\n fontWeight: 600,\n color: \"hsl(var(--foreground))\",\n marginBottom: 2,\n }}\n >\n {tooltipInfo.task.name}\n </div>\n <div style={{ color: \"hsl(var(--muted-foreground))\" }}>\n {tooltipInfo.task.start.toLocaleDateString()} –{\" \"}\n {tooltipInfo.task.end.toLocaleDateString()}\n </div>\n {tooltipInfo.task.progress != null && (\n <div style={{ color: \"hsl(var(--muted-foreground))\" }}>\n Progress: {tooltipInfo.task.progress}%\n </div>\n )}\n </div>\n )}\n </div>\n );\n },\n);\n\nGanttChart.displayName = \"GanttChart\";\nexport { GanttChart };\n","import * as React from \"react\";\nimport { cn } from \"@optilogic/core\";\n\nexport interface HeatmapCell {\n x: string | number;\n y: string | number;\n value: number;\n}\n\nexport interface HeatmapColorScale {\n min: string;\n mid?: string;\n max: string;\n}\n\nexport interface HeatmapChartProps {\n data: HeatmapCell[];\n xLabels: string[];\n yLabels: string[];\n colorScale?: HeatmapColorScale;\n cellSize?: number;\n showValues?: boolean;\n valueFormatter?: (value: number) => string;\n className?: string;\n height?: number | string;\n loading?: boolean;\n onCellClick?: (cell: HeatmapCell) => void;\n}\n\nconst DEFAULT_SCALE: HeatmapColorScale = {\n min: \"hsl(var(--chart-9))\",\n mid: \"hsl(var(--chart-4))\",\n max: \"hsl(var(--chart-7))\",\n};\n\nfunction interpolateColor(t: number, scale: HeatmapColorScale): string {\n if (!scale.mid) {\n return `color-mix(in srgb, ${scale.min} ${(1 - t) * 100}%, ${scale.max})`;\n }\n if (t <= 0.5) {\n const t2 = t * 2;\n return `color-mix(in srgb, ${scale.min} ${(1 - t2) * 100}%, ${scale.mid})`;\n }\n const t2 = (t - 0.5) * 2;\n return `color-mix(in srgb, ${scale.mid} ${(1 - t2) * 100}%, ${scale.max})`;\n}\n\nconst HeatmapChart = React.forwardRef<HTMLDivElement, HeatmapChartProps>(\n function HeatmapChart(\n {\n data,\n xLabels,\n yLabels,\n colorScale = DEFAULT_SCALE,\n cellSize = 40,\n showValues = true,\n valueFormatter,\n className,\n height,\n loading,\n onCellClick,\n },\n ref,\n ) {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const [hoveredCell, setHoveredCell] = React.useState<HeatmapCell | null>(null);\n const [tooltipPos, setTooltipPos] = React.useState({ x: 0, y: 0 });\n\n const { valueMap, minVal, maxVal } = React.useMemo(() => {\n const map = new Map<string, number>();\n let lo = Infinity;\n let hi = -Infinity;\n for (const cell of data) {\n map.set(`${cell.x}|${cell.y}`, cell.value);\n if (cell.value < lo) lo = cell.value;\n if (cell.value > hi) hi = cell.value;\n }\n return { valueMap: map, minVal: lo, maxVal: hi };\n }, [data]);\n\n const normalize = (v: number) =>\n maxVal === minVal ? 0.5 : (v - minVal) / (maxVal - minVal);\n\n const labelColWidth = 80;\n const svgWidth = labelColWidth + xLabels.length * cellSize;\n const svgHeight = 28 + yLabels.length * cellSize;\n\n if (loading) {\n return (\n <div\n ref={ref}\n className={cn(\"w-full flex items-center justify-center\", className)}\n style={{ height: height ?? svgHeight }}\n >\n <div\n className=\"animate-pulse\"\n style={{\n width: \"80%\",\n height: \"60%\",\n borderRadius: 6,\n background: \"hsl(var(--muted))\",\n }}\n />\n </div>\n );\n }\n\n return (\n <div\n ref={(node) => {\n (containerRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }}\n className={cn(\"w-full overflow-auto relative\", className)}\n style={{ height }}\n >\n <svg width={svgWidth} height={svgHeight}>\n {/* X-axis labels */}\n {xLabels.map((label, i) => (\n <text\n key={`x-${i}`}\n x={labelColWidth + i * cellSize + cellSize / 2}\n y={14}\n textAnchor=\"middle\"\n fontSize={9}\n fill=\"hsl(var(--muted-foreground))\"\n >\n {label}\n </text>\n ))}\n\n {/* Y-axis labels + cells */}\n {yLabels.map((yLabel, yi) => (\n <g key={`row-${yi}`}>\n <text\n x={labelColWidth - 8}\n y={28 + yi * cellSize + cellSize / 2}\n textAnchor=\"end\"\n dominantBaseline=\"central\"\n fontSize={9}\n fill=\"hsl(var(--muted-foreground))\"\n >\n {yLabel}\n </text>\n {xLabels.map((xLabel, xi) => {\n const key = `${xLabel}|${yLabel}`;\n const val = valueMap.get(key);\n const t = val != null ? normalize(val) : 0;\n const cx = labelColWidth + xi * cellSize;\n const cy = 28 + yi * cellSize;\n const cellData: HeatmapCell = { x: xLabel, y: yLabel, value: val ?? 0 };\n\n return (\n <g\n key={key}\n onMouseEnter={(e) => {\n setHoveredCell(cellData);\n const rect = containerRef.current?.getBoundingClientRect();\n setTooltipPos({\n x: e.clientX - (rect?.left ?? 0) + (containerRef.current?.scrollLeft ?? 0),\n y: e.clientY - (rect?.top ?? 0) + (containerRef.current?.scrollTop ?? 0),\n });\n }}\n onMouseLeave={() => setHoveredCell(null)}\n onClick={() => onCellClick?.(cellData)}\n style={{ cursor: onCellClick ? \"pointer\" : \"default\" }}\n >\n <rect\n x={cx + 1}\n y={cy + 1}\n width={cellSize - 2}\n height={cellSize - 2}\n rx={3}\n fill={\n val != null\n ? interpolateColor(t, colorScale)\n : \"hsl(var(--muted))\"\n }\n fillOpacity={val != null ? 0.85 : 0.3}\n stroke={\n hoveredCell?.x === xLabel && hoveredCell?.y === yLabel\n ? \"hsl(var(--foreground))\"\n : \"none\"\n }\n strokeWidth={1.5}\n />\n {showValues && val != null && cellSize >= 32 && (\n <text\n x={cx + cellSize / 2}\n y={cy + cellSize / 2}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n fontSize={Math.min(10, cellSize / 4.5)}\n fill=\"hsl(var(--foreground))\"\n fontWeight={500}\n style={{ pointerEvents: \"none\" }}\n >\n {valueFormatter ? valueFormatter(val) : val.toLocaleString()}\n </text>\n )}\n </g>\n );\n })}\n </g>\n ))}\n </svg>\n\n {/* Tooltip */}\n {hoveredCell && (\n <div\n style={{\n position: \"absolute\",\n left: tooltipPos.x + 12,\n top: tooltipPos.y - 10,\n background: \"hsl(var(--card))\",\n border: \"1px solid hsl(var(--border))\",\n borderRadius: 6,\n padding: \"6px 10px\",\n fontSize: 11,\n lineHeight: 1.5,\n boxShadow: \"0 2px 8px rgba(0,0,0,0.15)\",\n pointerEvents: \"none\",\n zIndex: 50,\n maxWidth: 200,\n }}\n >\n <div style={{ color: \"hsl(var(--muted-foreground))\" }}>\n {String(hoveredCell.x)} / {String(hoveredCell.y)}\n </div>\n <div\n style={{\n fontWeight: 600,\n color: \"hsl(var(--foreground))\",\n fontVariantNumeric: \"tabular-nums\",\n }}\n >\n {valueFormatter\n ? valueFormatter(hoveredCell.value)\n : hoveredCell.value.toLocaleString()}\n </div>\n </div>\n )}\n </div>\n );\n },\n);\n\nHeatmapChart.displayName = \"HeatmapChart\";\nexport { HeatmapChart };\n","import * as React from \"react\";\nimport {\n LineChart,\n Line,\n AreaChart,\n Area,\n BarChart,\n Bar,\n ResponsiveContainer,\n} from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\n\nexport type SparklineVariant = \"line\" | \"area\" | \"bar\";\n\nexport interface SparklineProps {\n data: number[];\n variant?: SparklineVariant;\n color?: string;\n width?: number | string;\n height?: number;\n strokeWidth?: number;\n className?: string;\n}\n\nconst Sparkline = React.memo(function Sparkline({\n data,\n variant = \"line\",\n color,\n width = \"100%\",\n height = 24,\n strokeWidth = 1.5,\n className,\n}: SparklineProps) {\n const chartColor = color ?? getChartColor(0);\n\n const points = React.useMemo(\n () => data.map((v, i) => ({ i, v })),\n [data],\n );\n\n if (!points.length) return null;\n\n return (\n <div className={className} style={{ width, height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n {variant === \"bar\" ? (\n <BarChart data={points} margin={{ top: 0, right: 0, left: 0, bottom: 0 }}>\n <Bar dataKey=\"v\" fill={chartColor} fillOpacity={0.7} isAnimationActive={false} />\n </BarChart>\n ) : variant === \"area\" ? (\n <AreaChart data={points} margin={{ top: 0, right: 0, left: 0, bottom: 0 }}>\n <defs>\n <linearGradient id=\"sparkArea\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"5%\" stopColor={chartColor} stopOpacity={0.3} />\n <stop offset=\"95%\" stopColor={chartColor} stopOpacity={0.05} />\n </linearGradient>\n </defs>\n <Area\n type=\"monotone\"\n dataKey=\"v\"\n stroke={chartColor}\n strokeWidth={strokeWidth}\n fill=\"url(#sparkArea)\"\n isAnimationActive={false}\n dot={false}\n />\n </AreaChart>\n ) : (\n <LineChart data={points} margin={{ top: 0, right: 0, left: 0, bottom: 0 }}>\n <Line\n type=\"monotone\"\n dataKey=\"v\"\n stroke={chartColor}\n strokeWidth={strokeWidth}\n dot={false}\n isAnimationActive={false}\n />\n </LineChart>\n )}\n </ResponsiveContainer>\n </div>\n );\n});\n\nSparkline.displayName = \"Sparkline\";\nexport { Sparkline };\n","import * as React from \"react\";\nimport { cn } from \"@optilogic/core\";\nimport { Sparkline, type SparklineVariant } from \"./sparkline\";\n\nexport interface KPICardProps {\n label: string;\n value: string | number;\n /** Previous period value for comparison */\n previousValue?: number;\n /** Change descriptor (e.g. \"vs last month\") */\n changeLabel?: string;\n sparklineData?: number[];\n sparklineVariant?: SparklineVariant;\n sparklineColor?: string;\n icon?: React.ReactNode;\n className?: string;\n}\n\nconst KPICard = React.memo(function KPICard({\n label,\n value,\n previousValue,\n changeLabel,\n sparklineData,\n sparklineVariant = \"area\",\n sparklineColor,\n icon,\n className,\n}: KPICardProps) {\n const currentNum = typeof value === \"number\" ? value : parseFloat(String(value));\n const hasDelta =\n previousValue != null && !isNaN(currentNum) && previousValue !== 0;\n const delta = hasDelta ? ((currentNum - previousValue!) / previousValue!) * 100 : null;\n\n return (\n <div\n className={cn(\n \"rounded-lg border p-4 flex flex-col gap-2\",\n className,\n )}\n style={{\n background: \"hsl(var(--card))\",\n borderColor: \"hsl(var(--border))\",\n }}\n >\n <div className=\"flex items-center justify-between\">\n <span\n style={{\n fontSize: 12,\n color: \"hsl(var(--muted-foreground))\",\n fontWeight: 500,\n }}\n >\n {label}\n </span>\n {icon && (\n <span style={{ color: \"hsl(var(--muted-foreground))\" }}>{icon}</span>\n )}\n </div>\n <div className=\"flex items-end justify-between gap-3\">\n <div className=\"flex flex-col gap-1\">\n <span\n style={{\n fontSize: 22,\n fontWeight: 700,\n color: \"hsl(var(--foreground))\",\n lineHeight: 1,\n fontVariantNumeric: \"tabular-nums\",\n }}\n >\n {value}\n </span>\n {delta != null && (\n <span\n style={{\n fontSize: 11,\n fontWeight: 500,\n color:\n delta > 0\n ? \"hsl(var(--success))\"\n : delta < 0\n ? \"hsl(var(--destructive))\"\n : \"hsl(var(--muted-foreground))\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 2,\n }}\n >\n {delta >= 0 ? \"▲\" : \"▼\"} {delta >= 0 ? \"+\" : \"\"}\n {delta.toFixed(1)}%\n {changeLabel && (\n <span style={{ color: \"hsl(var(--muted-foreground))\", marginLeft: 4 }}>\n {changeLabel}\n </span>\n )}\n </span>\n )}\n </div>\n {sparklineData && sparklineData.length > 1 && (\n <Sparkline\n data={sparklineData}\n variant={sparklineVariant}\n color={\n sparklineColor ??\n (delta != null\n ? delta >= 0\n ? \"hsl(var(--success))\"\n : \"hsl(var(--destructive))\"\n : undefined)\n }\n width={80}\n height={32}\n />\n )}\n </div>\n </div>\n );\n});\n\nKPICard.displayName = \"KPICard\";\nexport { KPICard };\n","import * as React from \"react\";\nimport { cn } from \"@optilogic/core\";\nimport { LineChart } from \"../cartesian/line-chart\";\nimport { BarChart } from \"../cartesian/bar-chart\";\nimport { RadarChart } from \"../radial/radar-chart\";\nimport type { ChartTooltipProp } from \"../shared/types\";\n\nexport interface ScenarioData {\n name: string;\n color?: string;\n data: Record<string, unknown>[];\n}\n\nexport type ScenarioComparisonMode =\n | \"side-by-side\"\n | \"overlay\"\n | \"delta\"\n | \"scorecard\";\n\nexport interface ScenarioComparisonProps {\n scenarios: ScenarioData[];\n /** Data keys to compare */\n metrics: string[];\n /** Category axis key */\n categoryKey: string;\n mode?: ScenarioComparisonMode;\n /** Index of the baseline scenario for delta calculations */\n baselineIndex?: number;\n tooltip?: ChartTooltipProp;\n className?: string;\n height?: number | string;\n}\n\nfunction buildOverlayData(\n scenarios: ScenarioData[],\n categoryKey: string,\n metrics: string[],\n): { data: Record<string, unknown>[]; series: { dataKey: string; name: string; color?: string; strokeDasharray?: string }[] } {\n const merged = new Map<string, Record<string, unknown>>();\n for (const scenario of scenarios) {\n for (const row of scenario.data) {\n const key = String(row[categoryKey]);\n if (!merged.has(key)) merged.set(key, { [categoryKey]: row[categoryKey] });\n const target = merged.get(key)!;\n for (const m of metrics) {\n target[`${scenario.name}_${m}`] = row[m];\n }\n }\n }\n const data = Array.from(merged.values());\n const series = scenarios.flatMap((s, si) =>\n metrics.map((m) => ({\n dataKey: `${s.name}_${m}`,\n name: `${s.name} – ${m}`,\n color: s.color,\n strokeDasharray: si > 0 ? \"5 3\" : undefined,\n })),\n );\n return { data, series };\n}\n\nfunction buildDeltaData(\n scenarios: ScenarioData[],\n baselineIndex: number,\n categoryKey: string,\n metrics: string[],\n): { data: Record<string, unknown>[]; series: { dataKey: string; name: string }[] } {\n const baseline = scenarios[baselineIndex];\n if (!baseline) return { data: [], series: [] };\n\n const baseMap = new Map<string, Record<string, unknown>>();\n for (const row of baseline.data) {\n baseMap.set(String(row[categoryKey]), row);\n }\n\n const comparisons = scenarios.filter((_, i) => i !== baselineIndex);\n const merged = new Map<string, Record<string, unknown>>();\n\n for (const scenario of comparisons) {\n for (const row of scenario.data) {\n const key = String(row[categoryKey]);\n if (!merged.has(key)) merged.set(key, { [categoryKey]: row[categoryKey] });\n const target = merged.get(key)!;\n const baseRow = baseMap.get(key);\n for (const m of metrics) {\n const base = Number(baseRow?.[m] ?? 0);\n const val = Number(row[m] ?? 0);\n target[`${scenario.name}_${m}`] = val - base;\n }\n }\n }\n\n const data = Array.from(merged.values());\n const series = comparisons.flatMap((s) =>\n metrics.map((m) => ({\n dataKey: `${s.name}_${m}`,\n name: `${s.name} Δ ${m}`,\n })),\n );\n return { data, series };\n}\n\nfunction buildScorecardData(\n scenarios: ScenarioData[],\n metrics: string[],\n): { data: Record<string, unknown>[]; series: { dataKey: string; name: string; color?: string; strokeDasharray?: string }[] } {\n const data: Record<string, unknown>[] = metrics.map((m) => {\n const row: Record<string, unknown> = { metric: m };\n for (const s of scenarios) {\n const values = s.data.map((d) => Number(d[m] ?? 0));\n const avg = values.length ? values.reduce((a, b) => a + b, 0) / values.length : 0;\n row[s.name] = Math.round(avg * 10) / 10;\n }\n return row;\n });\n const series = scenarios.map((s, i) => ({\n dataKey: s.name,\n name: s.name,\n color: s.color,\n strokeDasharray: i > 0 ? \"5 3\" : undefined,\n }));\n return { data, series };\n}\n\nconst ScenarioComparison = React.memo(function ScenarioComparison({\n scenarios,\n metrics,\n categoryKey,\n mode = \"overlay\",\n baselineIndex = 0,\n tooltip = true,\n className,\n height = 350,\n}: ScenarioComparisonProps) {\n if (!scenarios.length || !metrics.length) return null;\n\n if (mode === \"side-by-side\") {\n return (\n <div\n className={cn(\"grid gap-4\", className)}\n style={{\n gridTemplateColumns: `repeat(${scenarios.length}, 1fr)`,\n }}\n >\n {scenarios.map((scenario) => (\n <div key={scenario.name} style={{ height }}>\n <div\n style={{\n fontSize: 12,\n fontWeight: 600,\n color: \"hsl(var(--foreground))\",\n marginBottom: 6,\n }}\n >\n {scenario.name}\n </div>\n <LineChart\n data={scenario.data}\n series={metrics.map((m) => ({\n dataKey: m,\n name: m,\n color: scenario.color,\n }))}\n xAxis={{ dataKey: categoryKey }}\n tooltip={tooltip}\n legend={metrics.length > 1}\n height=\"calc(100% - 24px)\"\n />\n </div>\n ))}\n </div>\n );\n }\n\n if (mode === \"overlay\") {\n const { data, series } = buildOverlayData(scenarios, categoryKey, metrics);\n return (\n <div className={className} style={{ height }}>\n <LineChart\n data={data}\n series={series}\n xAxis={{ dataKey: categoryKey }}\n tooltip={tooltip}\n legend\n height=\"100%\"\n />\n </div>\n );\n }\n\n if (mode === \"delta\") {\n const { data, series } = buildDeltaData(\n scenarios,\n baselineIndex,\n categoryKey,\n metrics,\n );\n return (\n <div className={className} style={{ height }}>\n <BarChart\n data={data}\n series={series.map((s) => ({ ...s }))}\n xAxis={{ dataKey: categoryKey }}\n tooltip={tooltip}\n legend\n height=\"100%\"\n />\n </div>\n );\n }\n\n if (mode === \"scorecard\") {\n const { data, series } = buildScorecardData(scenarios, metrics);\n return (\n <div className={className} style={{ height }}>\n <RadarChart\n data={data}\n series={series.map((s) => ({\n ...s,\n fillOpacity: 0.1,\n }))}\n categoryKey=\"metric\"\n tooltip={tooltip}\n legend\n height=\"100%\"\n />\n </div>\n );\n }\n\n return null;\n});\n\nScenarioComparison.displayName = \"ScenarioComparison\";\nexport { ScenarioComparison };\n","import * as React from \"react\";\nimport { LineChart } from \"../cartesian/line-chart\";\nimport { BarChart } from \"../cartesian/bar-chart\";\nimport { AreaChart } from \"../cartesian/area-chart\";\nimport { ScatterChart } from \"../cartesian/scatter-chart\";\nimport { ComposedChart } from \"../cartesian/composed-chart\";\nimport { WaterfallChart, type WaterfallItem } from \"../cartesian/waterfall-chart\";\nimport { PieChart } from \"../radial/pie-chart\";\nimport { DonutChart } from \"../radial/donut-chart\";\nimport { RadarChart } from \"../radial/radar-chart\";\nimport { RadialBarChart } from \"../radial/radial-bar-chart\";\nimport { FunnelChart } from \"../specialized/funnel-chart\";\nimport { TreemapChart } from \"../specialized/treemap-chart\";\nimport { HeatmapChart } from \"../specialized/heatmap-chart\";\nimport type { ChartLegend, ChartTooltipProp } from \"../shared/types\";\n\nexport interface ChartConfigSeries {\n dataKey: string;\n name: string;\n color?: string;\n /** Only used for composed chart */\n composedType?: \"line\" | \"bar\" | \"area\";\n}\n\nexport interface ChartConfig {\n type:\n | \"line\"\n | \"bar\"\n | \"area\"\n | \"pie\"\n | \"donut\"\n | \"scatter\"\n | \"radar\"\n | \"composed\"\n | \"waterfall\"\n | \"funnel\"\n | \"treemap\"\n | \"radialBar\"\n | \"heatmap\";\n categoryKey: string;\n series: ChartConfigSeries[];\n legend?: string;\n grid?: boolean;\n animate?: boolean;\n tooltip?: ChartTooltipProp;\n}\n\nexport interface ChartRendererProps {\n config: ChartConfig;\n data: Record<string, unknown>[];\n height?: number | string;\n className?: string;\n}\n\nfunction resolveLegendFromString(\n val: string | undefined,\n): boolean | ChartLegend {\n if (!val || val === \"none\") return false;\n const parts = val.split(\"-\");\n return {\n position: (parts[0] as \"top\" | \"bottom\") ?? \"top\",\n align: (parts[1] as \"left\" | \"center\" | \"right\") ?? \"right\",\n };\n}\n\nconst ChartRenderer = React.memo(function ChartRenderer({\n config,\n data,\n height = \"100%\",\n className,\n}: ChartRendererProps) {\n if (!data?.length || !config.series.length) {\n return (\n <div\n className={className}\n style={{\n height,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: \"hsl(var(--muted-foreground))\",\n fontSize: 12,\n }}\n >\n Configure a chart to preview\n </div>\n );\n }\n\n const legend = resolveLegendFromString(config.legend);\n const common = {\n className,\n height,\n grid: config.grid ?? true,\n animate: config.animate ?? true,\n tooltip: config.tooltip ?? true,\n legend,\n };\n const xAxis = { dataKey: config.categoryKey };\n const series = config.series;\n\n switch (config.type) {\n case \"line\":\n return <LineChart data={data} series={series} xAxis={xAxis} {...common} />;\n case \"bar\":\n return <BarChart data={data} series={series} xAxis={xAxis} {...common} />;\n case \"area\":\n return <AreaChart data={data} series={series} xAxis={xAxis} {...common} />;\n case \"pie\":\n return (\n <PieChart\n data={data.map((d) => ({\n name: String(d[config.categoryKey]),\n value: Number(d[series[0].dataKey] ?? 0),\n }))}\n label\n {...common}\n />\n );\n case \"donut\":\n return (\n <DonutChart\n data={data.map((d) => ({\n name: String(d[config.categoryKey]),\n value: Number(d[series[0].dataKey] ?? 0),\n }))}\n {...common}\n />\n );\n case \"scatter\":\n return (\n <ScatterChart\n series={[\n {\n name: series[0]?.name ?? \"Data\",\n data: data as Record<string, unknown>[],\n },\n ]}\n xAxis={{ ...xAxis, name: config.categoryKey }}\n {...common}\n />\n );\n case \"radar\":\n return (\n <RadarChart\n data={data}\n series={series}\n categoryKey={config.categoryKey}\n {...common}\n />\n );\n case \"composed\":\n return (\n <ComposedChart\n data={data}\n series={series.map((s) => ({\n type: s.composedType ?? \"bar\",\n dataKey: s.dataKey,\n name: s.name,\n color: s.color,\n }))}\n xAxis={xAxis}\n {...common}\n />\n );\n case \"waterfall\":\n return (\n <WaterfallChart\n data={data.map((d) => ({\n name: String(d[config.categoryKey]),\n value: Number(d[series[0]?.dataKey] ?? 0),\n }))}\n {...common}\n />\n );\n case \"funnel\":\n return (\n <FunnelChart\n data={data.map((d) => ({\n name: String(d[config.categoryKey]),\n value: Number(d[series[0]?.dataKey] ?? 0),\n }))}\n {...common}\n />\n );\n case \"treemap\":\n return (\n <TreemapChart\n data={data.map((d) => ({\n name: String(d[config.categoryKey]),\n value: Number(d[series[0]?.dataKey] ?? 0),\n }))}\n {...common}\n />\n );\n case \"radialBar\":\n return (\n <RadialBarChart\n data={data.map((d) => ({\n name: String(d[config.categoryKey]),\n value: Number(d[series[0]?.dataKey] ?? 0),\n }))}\n {...common}\n />\n );\n case \"heatmap\": {\n if (series.length < 2) {\n return (\n <div\n style={{\n height,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: \"hsl(var(--muted-foreground))\",\n fontSize: 12,\n }}\n >\n Heatmap requires at least 2 series (x, value)\n </div>\n );\n }\n const xLabels = Array.from(\n new Set(data.map((d) => String(d[config.categoryKey]))),\n );\n const yLabels = Array.from(\n new Set(data.map((d) => String(d[series[0].dataKey]))),\n );\n const cells = data.map((d) => ({\n x: String(d[config.categoryKey]),\n y: String(d[series[0].dataKey]),\n value: Number(d[series[1].dataKey] ?? 0),\n }));\n return (\n <HeatmapChart\n data={cells}\n xLabels={xLabels}\n yLabels={yLabels}\n height={height}\n className={className}\n />\n );\n }\n default:\n return null;\n }\n});\n\nChartRenderer.displayName = \"ChartRenderer\";\nexport { ChartRenderer };\n","import * as React from \"react\";\nimport { cn } from \"@optilogic/core\";\nimport { ChartRenderer, type ChartConfig } from \"./chart-renderer\";\n\nconst CHART_TYPE_OPTIONS = [\n { value: \"line\", label: \"Line\" },\n { value: \"bar\", label: \"Bar\" },\n { value: \"area\", label: \"Area\" },\n { value: \"pie\", label: \"Pie\" },\n { value: \"donut\", label: \"Donut\" },\n { value: \"scatter\", label: \"Scatter\" },\n { value: \"radar\", label: \"Radar\" },\n { value: \"composed\", label: \"Composed\" },\n { value: \"waterfall\", label: \"Waterfall\" },\n { value: \"funnel\", label: \"Funnel\" },\n { value: \"treemap\", label: \"Treemap\" },\n { value: \"radialBar\", label: \"Radial Bar\" },\n { value: \"heatmap\", label: \"Heatmap\" },\n] as const;\n\nconst LEGEND_POSITIONS = [\n { value: \"none\", label: \"None\" },\n { value: \"top-left\", label: \"Top Left\" },\n { value: \"top-center\", label: \"Top Center\" },\n { value: \"top-right\", label: \"Top Right\" },\n { value: \"bottom-center\", label: \"Bottom Center\" },\n] as const;\n\nexport interface ChartBuilderProps {\n /** Available data columns the user can map to chart dimensions */\n columns: string[];\n /** The raw data rows */\n data: Record<string, unknown>[];\n /** Called when the config changes */\n onChange?: (config: ChartConfig) => void;\n /** Called when user explicitly saves */\n onSave?: (config: ChartConfig) => void;\n /** Initial config to start editing */\n initialConfig?: Partial<ChartConfig>;\n className?: string;\n}\n\nfunction useControlledConfig(\n initial: Partial<ChartConfig> | undefined,\n columns: string[],\n): [ChartConfig, React.Dispatch<React.SetStateAction<ChartConfig>>] {\n const defaultConfig: ChartConfig = {\n type: \"bar\",\n categoryKey: columns[0] ?? \"\",\n series: columns.length > 1 ? [{ dataKey: columns[1], name: columns[1] }] : [],\n legend: \"none\",\n grid: true,\n animate: true,\n };\n return React.useState<ChartConfig>({ ...defaultConfig, ...initial });\n}\n\nconst selectStyle: React.CSSProperties = {\n width: \"100%\",\n padding: \"5px 8px\",\n fontSize: 12,\n borderRadius: 4,\n border: \"1px solid hsl(var(--border))\",\n background: \"hsl(var(--card))\",\n color: \"hsl(var(--foreground))\",\n};\n\nconst labelStyle: React.CSSProperties = {\n fontSize: 11,\n fontWeight: 500,\n color: \"hsl(var(--muted-foreground))\",\n marginBottom: 3,\n display: \"block\",\n};\n\nconst ChartBuilder = React.memo(function ChartBuilder({\n columns,\n data,\n onChange,\n onSave,\n initialConfig,\n className,\n}: ChartBuilderProps) {\n const [config, setConfig] = useControlledConfig(initialConfig, columns);\n\n React.useEffect(() => {\n onChange?.(config);\n }, [config, onChange]);\n\n const addSeries = () => {\n const unused = columns.find(\n (c) =>\n c !== config.categoryKey &&\n !config.series.some((s) => s.dataKey === c),\n );\n if (!unused) return;\n setConfig((prev) => ({\n ...prev,\n series: [...prev.series, { dataKey: unused, name: unused }],\n }));\n };\n\n const removeSeries = (index: number) => {\n setConfig((prev) => ({\n ...prev,\n series: prev.series.filter((_, i) => i !== index),\n }));\n };\n\n const updateSeries = (index: number, field: string, value: string) => {\n setConfig((prev) => ({\n ...prev,\n series: prev.series.map((s, i) =>\n i === index ? { ...s, [field]: value } : s,\n ),\n }));\n };\n\n return (\n <div\n className={cn(\"flex gap-4\", className)}\n style={{ minHeight: 400 }}\n >\n {/* Config panel */}\n <div\n className=\"flex flex-col gap-3 shrink-0 overflow-y-auto\"\n style={{\n width: 240,\n padding: 12,\n background: \"hsl(var(--card))\",\n border: \"1px solid hsl(var(--border))\",\n borderRadius: 8,\n }}\n >\n <div style={{ fontSize: 13, fontWeight: 600, color: \"hsl(var(--foreground))\" }}>\n Chart Builder\n </div>\n\n {/* Chart type */}\n <div>\n <label style={labelStyle}>Chart Type</label>\n <select\n style={selectStyle}\n value={config.type}\n onChange={(e) =>\n setConfig((prev) => ({ ...prev, type: e.target.value as ChartConfig[\"type\"] }))\n }\n >\n {CHART_TYPE_OPTIONS.map((opt) => (\n <option key={opt.value} value={opt.value}>{opt.label}</option>\n ))}\n </select>\n </div>\n\n {/* Category axis */}\n <div>\n <label style={labelStyle}>Category Axis</label>\n <select\n style={selectStyle}\n value={config.categoryKey}\n onChange={(e) =>\n setConfig((prev) => ({ ...prev, categoryKey: e.target.value }))\n }\n >\n {columns.map((c) => (\n <option key={c} value={c}>{c}</option>\n ))}\n </select>\n </div>\n\n {/* Series */}\n <div>\n <label style={labelStyle}>Series</label>\n {config.series.map((s, i) => (\n <div\n key={i}\n className=\"flex gap-1 items-center\"\n style={{ marginBottom: 4 }}\n >\n <select\n style={{ ...selectStyle, flex: 1 }}\n value={s.dataKey}\n onChange={(e) => updateSeries(i, \"dataKey\", e.target.value)}\n >\n {columns\n .filter((c) => c !== config.categoryKey)\n .map((c) => (\n <option key={c} value={c}>{c}</option>\n ))}\n </select>\n <button\n onClick={() => removeSeries(i)}\n style={{\n padding: \"2px 6px\",\n fontSize: 14,\n lineHeight: 1,\n border: \"1px solid hsl(var(--border))\",\n borderRadius: 4,\n background: \"hsl(var(--card))\",\n color: \"hsl(var(--muted-foreground))\",\n cursor: \"pointer\",\n }}\n >\n ×\n </button>\n </div>\n ))}\n <button\n onClick={addSeries}\n style={{\n width: \"100%\",\n padding: \"4px 8px\",\n fontSize: 11,\n border: \"1px dashed hsl(var(--border))\",\n borderRadius: 4,\n background: \"transparent\",\n color: \"hsl(var(--muted-foreground))\",\n cursor: \"pointer\",\n marginTop: 2,\n }}\n >\n + Add Series\n </button>\n </div>\n\n {/* Legend */}\n <div>\n <label style={labelStyle}>Legend</label>\n <select\n style={selectStyle}\n value={config.legend}\n onChange={(e) =>\n setConfig((prev) => ({ ...prev, legend: e.target.value }))\n }\n >\n {LEGEND_POSITIONS.map((opt) => (\n <option key={opt.value} value={opt.value}>{opt.label}</option>\n ))}\n </select>\n </div>\n\n {/* Grid toggle */}\n <div className=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n id=\"grid-toggle\"\n checked={config.grid}\n onChange={(e) =>\n setConfig((prev) => ({ ...prev, grid: e.target.checked }))\n }\n />\n <label htmlFor=\"grid-toggle\" style={{ ...labelStyle, margin: 0 }}>\n Show Grid\n </label>\n </div>\n\n {/* Animate toggle */}\n <div className=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n id=\"animate-toggle\"\n checked={config.animate}\n onChange={(e) =>\n setConfig((prev) => ({ ...prev, animate: e.target.checked }))\n }\n />\n <label htmlFor=\"animate-toggle\" style={{ ...labelStyle, margin: 0 }}>\n Animate\n </label>\n </div>\n\n {onSave && (\n <button\n onClick={() => onSave(config)}\n style={{\n marginTop: 8,\n padding: \"6px 12px\",\n fontSize: 12,\n fontWeight: 600,\n borderRadius: 6,\n border: \"none\",\n background: \"hsl(var(--primary))\",\n color: \"hsl(var(--primary-foreground))\",\n cursor: \"pointer\",\n }}\n >\n Save Chart\n </button>\n )}\n </div>\n\n {/* Preview */}\n <div\n className=\"flex-1\"\n style={{\n border: \"1px solid hsl(var(--border))\",\n borderRadius: 8,\n padding: 12,\n background: \"hsl(var(--background))\",\n minHeight: 300,\n }}\n >\n <ChartRenderer config={config} data={data} height=\"100%\" />\n </div>\n </div>\n );\n});\n\nChartBuilder.displayName = \"ChartBuilder\";\nexport { ChartBuilder };\n"]}
1
+ {"version":3,"sources":["../src/shared/colors.ts","../src/shared/chart-tooltip.tsx","../src/shared/chart-legend.tsx","../src/shared/chart-container.tsx","../src/shared/use-live-data.ts","../src/shared/formatters.ts","../src/cartesian/line-chart.tsx","../src/cartesian/bar-chart.tsx","../src/cartesian/area-chart.tsx","../src/cartesian/scatter-chart.tsx","../src/cartesian/composed-chart.tsx","../src/cartesian/waterfall-chart.tsx","../src/radial/pie-chart.tsx","../src/radial/donut-chart.tsx","../src/radial/radar-chart.tsx","../src/radial/radial-bar-chart.tsx","../src/specialized/sankey-chart.tsx","../src/specialized/treemap-chart.tsx","../src/specialized/funnel-chart.tsx","../src/specialized/gantt-chart.tsx","../src/specialized/heatmap-chart.tsx","../src/dashboard/sparkline.tsx","../src/dashboard/kpi-card.tsx","../src/dashboard/scenario-comparison.tsx","../src/dashboard/chart-renderer.tsx","../src/dashboard/chart-builder.tsx"],"names":["React","ChartTooltipContent","jsxs","jsx","React2","ChartLegendContent","React3","ChartContainer","cn","ResponsiveContainer","useState","useRef","useCallback","useEffect","h","React4","RechartsLineChart","CartesianGrid","XAxis","YAxis","Tooltip","Legend","Line","React5","RechartsBarChart","Bar","React6","RechartsAreaChart","Area","React7","RechartsScatterChart","ZAxis","Scatter","React8","RechartsComposedChart","React9","ReferenceLine","Cell","React10","RechartsPieChart","Pie","React11","React12","RechartsRadarChart","PolarGrid","PolarAngleAxis","PolarRadiusAxis","Radar","React13","RechartsRadialBarChart","RadialBar","Layer","Rectangle","React14","Sankey","React15","Treemap","React16","RechartsFunnelChart","Funnel","LabelList","React17","GanttChart","t2","React18","HeatmapChart","React19","Sparkline","BarChart","AreaChart","LineChart","React20","KPICard","React21","ScenarioComparison","React22","ChartRenderer","React23","ChartBuilder"],"mappings":"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","file":"index.cjs","sourcesContent":["/** Theme-aware chart colors from CSS variables */\nexport const CHART_COLORS = [\n \"hsl(var(--chart-1))\",\n \"hsl(var(--chart-2))\",\n \"hsl(var(--chart-3))\",\n \"hsl(var(--chart-4))\",\n \"hsl(var(--chart-5))\",\n \"hsl(var(--chart-6))\",\n \"hsl(var(--chart-7))\",\n \"hsl(var(--chart-8))\",\n \"hsl(var(--chart-9))\",\n \"hsl(var(--chart-10))\",\n \"hsl(var(--chart-11))\",\n \"hsl(var(--chart-12))\",\n] as const;\n\nexport function getChartColor(index: number, custom?: string): string {\n if (custom) return custom;\n return CHART_COLORS[index % CHART_COLORS.length] ?? \"hsl(var(--chart-1))\";\n}\n\nexport type SemanticColorName =\n | \"positive\"\n | \"negative\"\n | \"neutral\"\n | \"warning\";\n\nconst SEMANTIC_COLORS: Record<SemanticColorName, string> = {\n positive: \"hsl(var(--success))\",\n negative: \"hsl(var(--destructive))\",\n neutral: \"hsl(var(--muted-foreground))\",\n warning: \"hsl(var(--warning))\",\n};\n\nexport function getSemanticColor(name: SemanticColorName): string {\n return SEMANTIC_COLORS[name];\n}\n","import * as React from \"react\";\nimport type { TooltipProps } from \"recharts\";\nimport type { ChartTooltipConfig } from \"./types\";\n\ninterface ChartTooltipPayloadItem {\n name: string;\n value: number;\n color: string;\n dataKey: string;\n payload: Record<string, unknown>;\n}\n\nexport interface ChartTooltipContentProps\n extends TooltipProps<number, string> {\n config?: ChartTooltipConfig;\n}\n\nexport const ChartTooltipContent = React.memo(function ChartTooltipContent({\n active,\n payload,\n label,\n config,\n}: ChartTooltipContentProps) {\n if (!active || !payload?.length) return null;\n\n const items = payload as unknown as ChartTooltipPayloadItem[];\n\n const formattedLabel = config?.labelFormatter\n ? config.labelFormatter(String(label))\n : String(label ?? \"\");\n\n const total = config?.showTotal\n ? items.reduce((sum, item) => sum + (Number(item.value) || 0), 0)\n : null;\n\n return (\n <div\n style={{\n background: \"hsl(var(--card))\",\n border: \"1px solid hsl(var(--border))\",\n borderRadius: 6,\n padding: \"8px 10px\",\n fontSize: 11,\n lineHeight: 1.5,\n boxShadow: \"0 2px 8px rgba(0,0,0,0.15)\",\n minWidth: 120,\n }}\n >\n {formattedLabel && (\n <div\n style={{\n color: \"hsl(var(--foreground))\",\n fontWeight: 600,\n marginBottom: 4,\n borderBottom: \"1px solid hsl(var(--border))\",\n paddingBottom: 4,\n }}\n >\n {formattedLabel}\n </div>\n )}\n {items.map((item, i) => {\n const formatted = config?.formatter\n ? config.formatter(Number(item.value), item.name)\n : String(item.value);\n const displayValue = Array.isArray(formatted) ? formatted[0] : formatted;\n const displayName = Array.isArray(formatted) ? formatted[1] : item.name;\n\n let delta: React.ReactNode = null;\n if (config?.showDelta && config.baseline) {\n const baselineValue = Number(\n item.payload?.[config.baseline] ?? 0,\n );\n if (baselineValue !== 0) {\n const diff = Number(item.value) - baselineValue;\n const pct = ((diff / baselineValue) * 100).toFixed(1);\n const sign = diff >= 0 ? \"+\" : \"\";\n const color =\n diff > 0\n ? \"hsl(var(--success))\"\n : diff < 0\n ? \"hsl(var(--destructive))\"\n : \"hsl(var(--muted-foreground))\";\n delta = (\n <span style={{ color, marginLeft: 4, fontSize: 10 }}>\n {diff >= 0 ? \"▲\" : \"▼\"} {sign}{pct}%\n </span>\n );\n }\n }\n\n return (\n <div\n key={item.dataKey ?? i}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 12,\n padding: \"1px 0\",\n }}\n >\n <span style={{ display: \"flex\", alignItems: \"center\", gap: 6 }}>\n <span\n style={{\n width: 8,\n height: 8,\n borderRadius: \"50%\",\n background: item.color,\n flexShrink: 0,\n }}\n />\n <span style={{ color: \"hsl(var(--muted-foreground))\" }}>\n {displayName}\n </span>\n </span>\n <span\n style={{\n fontWeight: 600,\n color: \"hsl(var(--foreground))\",\n fontVariantNumeric: \"tabular-nums\",\n }}\n >\n {displayValue}\n {delta}\n </span>\n </div>\n );\n })}\n {total != null && (\n <div\n style={{\n borderTop: \"1px solid hsl(var(--border))\",\n marginTop: 4,\n paddingTop: 4,\n display: \"flex\",\n justifyContent: \"space-between\",\n fontWeight: 600,\n color: \"hsl(var(--foreground))\",\n }}\n >\n <span>Total</span>\n <span style={{ fontVariantNumeric: \"tabular-nums\" }}>\n {config?.formatter ? config.formatter(total, \"Total\") : total}\n </span>\n </div>\n )}\n </div>\n );\n});\n\n/** Resolve the tooltip prop into Recharts Tooltip props */\nexport function resolveTooltipProps(tooltip: boolean | ChartTooltipConfig | undefined) {\n if (tooltip === false || tooltip === undefined) return null;\n if (tooltip === true) return { content: <ChartTooltipContent /> };\n return {\n content: <ChartTooltipContent config={tooltip} />,\n };\n}\n","import * as React from \"react\";\nimport type { ChartLegend } from \"./types\";\n\ninterface LegendPayloadItem {\n value: string;\n color: string;\n dataKey?: string;\n}\n\ninterface ChartLegendContentProps {\n payload?: LegendPayloadItem[];\n}\n\nexport const ChartLegendContent = React.memo(function ChartLegendContent({\n payload,\n}: ChartLegendContentProps) {\n if (!payload?.length) return null;\n\n return (\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"8px 16px\",\n fontSize: 11,\n lineHeight: 1,\n padding: \"0 0 4px\",\n }}\n >\n {payload.map((entry, i) => (\n <span\n key={entry.dataKey ?? i}\n style={{ display: \"flex\", alignItems: \"center\", gap: 5 }}\n >\n <span\n style={{\n width: 8,\n height: 8,\n borderRadius: \"50%\",\n background: entry.color,\n flexShrink: 0,\n }}\n />\n <span style={{ color: \"hsl(var(--muted-foreground))\" }}>\n {entry.value}\n </span>\n </span>\n ))}\n </div>\n );\n});\n\nexport function resolveLegendConfig(legend: boolean | ChartLegend | undefined) {\n if (legend === false || legend === undefined) return null;\n if (legend === true) return { position: \"top\" as const, align: \"right\" as const };\n return legend;\n}\n","import * as React from \"react\";\nimport { ResponsiveContainer } from \"recharts\";\nimport { cn } from \"@optilogic/core\";\n\nexport interface ChartContainerProps {\n children: React.ReactNode;\n className?: string;\n height?: number | string;\n loading?: boolean;\n empty?: boolean;\n emptyMessage?: string;\n title?: string;\n description?: string;\n}\n\nexport const ChartContainer = React.forwardRef<\n HTMLDivElement,\n ChartContainerProps\n>(function ChartContainer(\n {\n children,\n className,\n height = \"100%\",\n loading,\n empty,\n emptyMessage = \"No data available\",\n title,\n description,\n },\n ref,\n) {\n return (\n <div ref={ref} className={cn(\"w-full\", className)} style={{ height }}>\n {(title || description) && (\n <div style={{ marginBottom: 8 }}>\n {title && (\n <div\n style={{\n fontSize: 13,\n fontWeight: 600,\n color: \"hsl(var(--foreground))\",\n }}\n >\n {title}\n </div>\n )}\n {description && (\n <div\n style={{\n fontSize: 11,\n color: \"hsl(var(--muted-foreground))\",\n marginTop: 2,\n }}\n >\n {description}\n </div>\n )}\n </div>\n )}\n {loading ? (\n <div\n style={{\n width: \"100%\",\n height: title || description ? \"calc(100% - 40px)\" : \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <div\n className=\"animate-pulse\"\n style={{\n width: \"80%\",\n height: \"60%\",\n borderRadius: 6,\n background: \"hsl(var(--muted))\",\n }}\n />\n </div>\n ) : empty ? (\n <div\n style={{\n width: \"100%\",\n height: title || description ? \"calc(100% - 40px)\" : \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: \"hsl(var(--muted-foreground))\",\n fontSize: 12,\n }}\n >\n {emptyMessage}\n </div>\n ) : (\n <ResponsiveContainer\n width=\"100%\"\n height={title || description ? \"calc(100% - 40px)\" : \"100%\"}\n >\n {children as React.ReactElement}\n </ResponsiveContainer>\n )}\n </div>\n );\n});\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport interface UseLiveDataConfig<T> {\n /** Initial data snapshot */\n initial?: T[];\n /** Maximum number of data points to retain (ring buffer) */\n maxPoints?: number;\n /** Polling interval in ms (only used when mode is \"poll\") */\n interval?: number;\n /** Data fetch function for poll mode */\n fetcher?: () => Promise<T[]>;\n /** Start in paused state */\n paused?: boolean;\n}\n\nexport interface UseLiveDataReturn<T> {\n data: T[];\n /** Push new data points */\n push: (...items: T[]) => void;\n /** Replace all data at once */\n replace: (items: T[]) => void;\n isPaused: boolean;\n pause: () => void;\n resume: () => void;\n}\n\nexport function useLiveData<T>(\n config: UseLiveDataConfig<T> = {},\n): UseLiveDataReturn<T> {\n const {\n initial = [],\n maxPoints = 200,\n interval = 2000,\n fetcher,\n paused: initialPaused = false,\n } = config;\n\n const [data, setData] = useState<T[]>(initial);\n const [isPaused, setIsPaused] = useState(initialPaused);\n const bufferRef = useRef<T[]>(initial);\n\n const push = useCallback(\n (...items: T[]) => {\n bufferRef.current = [...bufferRef.current, ...items].slice(-maxPoints);\n setData(bufferRef.current);\n },\n [maxPoints],\n );\n\n const replace = useCallback((items: T[]) => {\n bufferRef.current = items;\n setData(items);\n }, []);\n\n const pause = useCallback(() => setIsPaused(true), []);\n const resume = useCallback(() => setIsPaused(false), []);\n\n useEffect(() => {\n if (!fetcher || isPaused) return;\n\n let cancelled = false;\n const tick = async () => {\n try {\n const result = await fetcher();\n if (!cancelled) {\n bufferRef.current = result.slice(-maxPoints);\n setData(bufferRef.current);\n }\n } catch {\n // Silently skip failed polls\n }\n };\n\n tick();\n const id = setInterval(tick, interval);\n return () => {\n cancelled = true;\n clearInterval(id);\n };\n }, [fetcher, interval, isPaused, maxPoints]);\n\n return { data, push, replace, isPaused, pause, resume };\n}\n","const compactThresholds: [number, string][] = [\n [1_000_000_000, \"B\"],\n [1_000_000, \"M\"],\n [1_000, \"K\"],\n];\n\nexport function formatCompact(value: number, decimals = 1): string {\n for (const [threshold, suffix] of compactThresholds) {\n if (Math.abs(value) >= threshold) {\n return `${(value / threshold).toFixed(decimals)}${suffix}`;\n }\n }\n return value.toLocaleString();\n}\n\nexport function formatCurrency(\n value: number,\n currency = \"USD\",\n decimals?: number,\n): string {\n if (Math.abs(value) >= 1_000_000) {\n return `$${formatCompact(value, decimals ?? 1)}`;\n }\n return value.toLocaleString(\"en-US\", {\n style: \"currency\",\n currency,\n minimumFractionDigits: decimals ?? 0,\n maximumFractionDigits: decimals ?? 0,\n });\n}\n\nexport function formatPercent(value: number, decimals = 1): string {\n return `${value.toFixed(decimals)}%`;\n}\n\nexport function formatUnit(value: number, unit: string, decimals = 1): string {\n return `${value.toLocaleString(undefined, { maximumFractionDigits: decimals })} ${unit}`;\n}\n\nexport function formatDuration(seconds: number): string {\n if (seconds < 60) return `${Math.round(seconds)}s`;\n if (seconds < 3600) return `${Math.round(seconds / 60)}m`;\n if (seconds < 86400) {\n const h = Math.floor(seconds / 3600);\n const m = Math.round((seconds % 3600) / 60);\n return m > 0 ? `${h}h ${m}m` : `${h}h`;\n }\n const d = Math.floor(seconds / 86400);\n const h = Math.round((seconds % 86400) / 3600);\n return h > 0 ? `${d}d ${h}h` : `${d}d`;\n}\n","import * as React from \"react\";\nimport {\n LineChart as RechartsLineChart,\n Line,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n} from \"recharts\";\nimport { cn } from \"@optilogic/core\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps, ChartTooltipContent } from \"../shared/chart-tooltip\";\nimport { ChartLegendContent, resolveLegendConfig } from \"../shared/chart-legend\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type {\n BaseChartProps,\n ChartXAxis,\n ChartYAxis,\n ChartGrid,\n ChartLegend,\n ChartTooltipProp,\n} from \"../shared/types\";\n\nexport interface LineChartSeries {\n dataKey: string;\n name: string;\n color?: string;\n strokeWidth?: number;\n dot?: boolean;\n type?: \"monotone\" | \"linear\" | \"step\" | \"basis\" | \"natural\";\n strokeDasharray?: string;\n}\n\nexport interface LineChartProps extends BaseChartProps {\n data: Record<string, unknown>[];\n series: LineChartSeries[];\n xAxis: ChartXAxis;\n yAxis?: ChartYAxis;\n grid?: boolean | ChartGrid;\n legend?: boolean | ChartLegend;\n tooltip?: ChartTooltipProp;\n loading?: boolean;\n}\n\nconst LineChart = React.forwardRef<HTMLDivElement, LineChartProps>(\n (\n {\n data,\n series,\n xAxis,\n yAxis,\n grid = true,\n tooltip = true,\n legend = false,\n animate = false,\n live = false,\n className,\n height = \"100%\",\n margin = { top: 8, right: 12, left: 0, bottom: 4 },\n loading,\n },\n ref,\n ) => {\n const gridConfig = React.useMemo(() => {\n if (grid === false) return null;\n if (grid === true) return { vertical: false, horizontal: true };\n return grid;\n }, [grid]);\n\n const legendConfig = resolveLegendConfig(legend);\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <RechartsLineChart data={data} margin={margin}>\n {gridConfig && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--divider))\"\n vertical={gridConfig.vertical ?? false}\n horizontal={gridConfig.horizontal ?? true}\n />\n )}\n <XAxis\n dataKey={xAxis.dataKey}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n minTickGap={xAxis.minTickGap ?? 24}\n tickFormatter={xAxis.tickFormatter}\n label={\n xAxis.label\n ? {\n value: xAxis.label,\n position: \"insideBottom\",\n offset: -4,\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n <YAxis\n domain={yAxis?.domain ?? [\"auto\", \"auto\"]}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n width={yAxis?.width ?? 30}\n tickFormatter={yAxis?.tickFormatter}\n label={\n yAxis?.label\n ? {\n value: yAxis.label,\n angle: -90,\n position: \"insideLeft\",\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n {tooltipProps && <Tooltip {...tooltipProps} />}\n {legendConfig && (\n <Legend\n verticalAlign={legendConfig.position ?? \"top\"}\n align={legendConfig.align ?? \"right\"}\n content={<ChartLegendContent />}\n />\n )}\n {series.map((s, index) => (\n <Line\n key={s.dataKey}\n type={s.type ?? \"monotone\"}\n dataKey={s.dataKey}\n name={s.name}\n stroke={getChartColor(index, s.color)}\n strokeWidth={s.strokeWidth ?? 2}\n strokeDasharray={s.strokeDasharray}\n dot={s.dot ?? false}\n isAnimationActive={isAnimated}\n animationDuration={isAnimated ? 300 : 0}\n />\n ))}\n </RechartsLineChart>\n </ChartContainer>\n );\n },\n);\n\nLineChart.displayName = \"LineChart\";\nexport { LineChart };\n","import * as React from \"react\";\nimport {\n BarChart as RechartsBarChart,\n Bar,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n} from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartLegendContent, resolveLegendConfig } from \"../shared/chart-legend\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type {\n BaseChartProps,\n ChartXAxis,\n ChartYAxis,\n ChartGrid,\n ChartLegend,\n ChartTooltipProp,\n} from \"../shared/types\";\n\nexport interface BarChartSeries {\n dataKey: string;\n name: string;\n color?: string;\n stackId?: string;\n radius?: number | [number, number, number, number];\n}\n\nexport interface BarChartProps extends BaseChartProps {\n data: Record<string, unknown>[];\n series: BarChartSeries[];\n layout?: \"vertical\" | \"horizontal\";\n xAxis: ChartXAxis;\n yAxis?: ChartYAxis;\n grid?: boolean | ChartGrid;\n legend?: boolean | ChartLegend;\n tooltip?: ChartTooltipProp;\n barSize?: number;\n barGap?: number;\n barCategoryGap?: number | string;\n loading?: boolean;\n}\n\nconst BarChart = React.forwardRef<HTMLDivElement, BarChartProps>(\n (\n {\n data,\n series,\n layout = \"vertical\",\n xAxis,\n yAxis,\n grid = true,\n tooltip = true,\n legend = false,\n animate = true,\n live = false,\n barSize,\n barGap,\n barCategoryGap,\n className,\n height = \"100%\",\n margin = { top: 8, right: 12, left: 0, bottom: 4 },\n loading,\n },\n ref,\n ) => {\n const gridConfig = React.useMemo(() => {\n if (grid === false) return null;\n if (grid === true) return { vertical: false, horizontal: true };\n return grid;\n }, [grid]);\n\n const legendConfig = resolveLegendConfig(legend);\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n const isHorizontal = layout === \"horizontal\";\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <RechartsBarChart\n data={data}\n layout={isHorizontal ? \"vertical\" : \"horizontal\"}\n margin={margin}\n barSize={barSize}\n barGap={barGap}\n barCategoryGap={barCategoryGap}\n >\n {gridConfig && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--divider))\"\n vertical={\n isHorizontal\n ? (gridConfig.horizontal ?? true)\n : (gridConfig.vertical ?? false)\n }\n horizontal={\n isHorizontal\n ? (gridConfig.vertical ?? false)\n : (gridConfig.horizontal ?? true)\n }\n />\n )}\n {isHorizontal ? (\n <XAxis\n type=\"number\"\n domain={yAxis?.domain ?? [\"auto\", \"auto\"]}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={yAxis?.tickFormatter}\n label={\n yAxis?.label\n ? {\n value: yAxis.label,\n position: \"insideBottom\",\n offset: -4,\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n ) : (\n <XAxis\n dataKey={xAxis.dataKey}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n minTickGap={xAxis.minTickGap ?? 24}\n tickFormatter={xAxis.tickFormatter}\n label={\n xAxis.label\n ? {\n value: xAxis.label,\n position: \"insideBottom\",\n offset: -4,\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n )}\n {isHorizontal ? (\n <YAxis\n type=\"category\"\n dataKey={xAxis.dataKey}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n width={yAxis?.width ?? 80}\n tickFormatter={xAxis.tickFormatter}\n />\n ) : (\n <YAxis\n domain={yAxis?.domain ?? [\"auto\", \"auto\"]}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n width={yAxis?.width ?? 30}\n tickFormatter={yAxis?.tickFormatter}\n label={\n yAxis?.label\n ? {\n value: yAxis.label,\n angle: -90,\n position: \"insideLeft\",\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n )}\n {tooltipProps && (\n <Tooltip\n {...tooltipProps}\n cursor={{ fill: \"hsl(var(--accent))\", fillOpacity: 0.3 }}\n />\n )}\n {legendConfig && (\n <Legend\n verticalAlign={legendConfig.position ?? \"top\"}\n align={legendConfig.align ?? \"right\"}\n content={<ChartLegendContent />}\n />\n )}\n {series.map((s, index) => (\n <Bar\n key={s.dataKey}\n dataKey={s.dataKey}\n name={s.name}\n fill={getChartColor(index, s.color)}\n stackId={s.stackId}\n radius={s.radius ?? 0}\n isAnimationActive={isAnimated}\n animationDuration={isAnimated ? 300 : 0}\n />\n ))}\n </RechartsBarChart>\n </ChartContainer>\n );\n },\n);\n\nBarChart.displayName = \"BarChart\";\nexport { BarChart };\n","import * as React from \"react\";\nimport {\n AreaChart as RechartsAreaChart,\n Area,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n} from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartLegendContent, resolveLegendConfig } from \"../shared/chart-legend\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type {\n BaseChartProps,\n ChartXAxis,\n ChartYAxis,\n ChartGrid,\n ChartLegend,\n ChartTooltipProp,\n} from \"../shared/types\";\n\nexport interface AreaChartSeries {\n dataKey: string;\n name: string;\n color?: string;\n fillOpacity?: number;\n strokeWidth?: number;\n type?: \"monotone\" | \"linear\" | \"step\" | \"basis\" | \"natural\";\n stackId?: string;\n}\n\nexport interface AreaChartProps extends BaseChartProps {\n data: Record<string, unknown>[];\n series: AreaChartSeries[];\n xAxis: ChartXAxis;\n yAxis?: ChartYAxis;\n grid?: boolean | ChartGrid;\n legend?: boolean | ChartLegend;\n tooltip?: ChartTooltipProp;\n loading?: boolean;\n}\n\nconst AreaChart = React.forwardRef<HTMLDivElement, AreaChartProps>(\n (\n {\n data,\n series,\n xAxis,\n yAxis,\n grid = true,\n tooltip = true,\n legend = false,\n animate = true,\n live = false,\n className,\n height = \"100%\",\n margin = { top: 8, right: 12, left: 0, bottom: 4 },\n loading,\n },\n ref,\n ) => {\n const gridConfig = React.useMemo(() => {\n if (grid === false) return null;\n if (grid === true) return { vertical: false, horizontal: true };\n return grid;\n }, [grid]);\n\n const legendConfig = resolveLegendConfig(legend);\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <RechartsAreaChart data={data} margin={margin}>\n <defs>\n {series.map((s, index) => {\n const color = getChartColor(index, s.color);\n return (\n <linearGradient\n key={s.dataKey}\n id={`area-gradient-${s.dataKey}`}\n x1=\"0\"\n y1=\"0\"\n x2=\"0\"\n y2=\"1\"\n >\n <stop offset=\"5%\" stopColor={color} stopOpacity={0.3} />\n <stop offset=\"95%\" stopColor={color} stopOpacity={0.05} />\n </linearGradient>\n );\n })}\n </defs>\n {gridConfig && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--divider))\"\n vertical={gridConfig.vertical ?? false}\n horizontal={gridConfig.horizontal ?? true}\n />\n )}\n <XAxis\n dataKey={xAxis.dataKey}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n minTickGap={xAxis.minTickGap ?? 24}\n tickFormatter={xAxis.tickFormatter}\n label={\n xAxis.label\n ? {\n value: xAxis.label,\n position: \"insideBottom\",\n offset: -4,\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n <YAxis\n domain={yAxis?.domain ?? [\"auto\", \"auto\"]}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n width={yAxis?.width ?? 30}\n tickFormatter={yAxis?.tickFormatter}\n label={\n yAxis?.label\n ? {\n value: yAxis.label,\n angle: -90,\n position: \"insideLeft\",\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n {tooltipProps && <Tooltip {...tooltipProps} />}\n {legendConfig && (\n <Legend\n verticalAlign={legendConfig.position ?? \"top\"}\n align={legendConfig.align ?? \"right\"}\n content={<ChartLegendContent />}\n />\n )}\n {series.map((s, index) => (\n <Area\n key={s.dataKey}\n type={s.type ?? \"monotone\"}\n dataKey={s.dataKey}\n name={s.name}\n stroke={getChartColor(index, s.color)}\n strokeWidth={s.strokeWidth ?? 2}\n fill={`url(#area-gradient-${s.dataKey})`}\n fillOpacity={s.fillOpacity ?? 1}\n stackId={s.stackId}\n isAnimationActive={isAnimated}\n animationDuration={isAnimated ? 300 : 0}\n />\n ))}\n </RechartsAreaChart>\n </ChartContainer>\n );\n },\n);\n\nAreaChart.displayName = \"AreaChart\";\nexport { AreaChart };\n","import * as React from \"react\";\nimport {\n ScatterChart as RechartsScatterChart,\n Scatter,\n XAxis,\n YAxis,\n ZAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n} from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartLegendContent, resolveLegendConfig } from \"../shared/chart-legend\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type {\n BaseChartProps,\n ChartXAxis,\n ChartYAxis,\n ChartGrid,\n ChartLegend,\n ChartTooltipProp,\n} from \"../shared/types\";\n\nexport interface ScatterChartSeries {\n name: string;\n data: Record<string, unknown>[];\n color?: string;\n /** Key for bubble size (optional, creates bubble chart) */\n zDataKey?: string;\n}\n\nexport interface ScatterChartProps extends BaseChartProps {\n series: ScatterChartSeries[];\n xAxis: ChartXAxis & { name?: string };\n yAxis?: ChartYAxis & { name?: string };\n zAxis?: { range?: [number, number] };\n grid?: boolean | ChartGrid;\n legend?: boolean | ChartLegend;\n tooltip?: ChartTooltipProp;\n loading?: boolean;\n}\n\nconst ScatterChart = React.forwardRef<HTMLDivElement, ScatterChartProps>(\n (\n {\n series,\n xAxis,\n yAxis,\n zAxis,\n grid = true,\n tooltip = true,\n legend = false,\n animate = true,\n live = false,\n className,\n height = \"100%\",\n margin = { top: 8, right: 12, left: 0, bottom: 4 },\n loading,\n },\n ref,\n ) => {\n const gridConfig = React.useMemo(() => {\n if (grid === false) return null;\n if (grid === true) return { vertical: true, horizontal: true };\n return grid;\n }, [grid]);\n\n const legendConfig = resolveLegendConfig(legend);\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n const hasZ = series.some((s) => s.zDataKey);\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!series.some((s) => s.data?.length)}\n >\n <RechartsScatterChart margin={margin}>\n {gridConfig && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--divider))\"\n vertical={gridConfig.vertical ?? true}\n horizontal={gridConfig.horizontal ?? true}\n />\n )}\n <XAxis\n dataKey={xAxis.dataKey}\n name={xAxis.name ?? xAxis.dataKey}\n type=\"number\"\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={xAxis.tickFormatter}\n label={\n xAxis.label\n ? {\n value: xAxis.label,\n position: \"insideBottom\",\n offset: -4,\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n <YAxis\n dataKey={yAxis?.domain ? undefined : \"y\"}\n name={yAxis?.name}\n type=\"number\"\n domain={yAxis?.domain ?? [\"auto\", \"auto\"]}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n width={yAxis?.width ?? 40}\n tickFormatter={yAxis?.tickFormatter}\n label={\n yAxis?.label\n ? {\n value: yAxis.label,\n angle: -90,\n position: \"insideLeft\",\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n {hasZ && <ZAxis range={zAxis?.range ?? [40, 400]} />}\n {tooltipProps && <Tooltip {...tooltipProps} />}\n {legendConfig && (\n <Legend\n verticalAlign={legendConfig.position ?? \"top\"}\n align={legendConfig.align ?? \"right\"}\n content={<ChartLegendContent />}\n />\n )}\n {series.map((s, index) => (\n <Scatter\n key={s.name}\n name={s.name}\n data={s.data}\n fill={getChartColor(index, s.color)}\n isAnimationActive={isAnimated}\n />\n ))}\n </RechartsScatterChart>\n </ChartContainer>\n );\n },\n);\n\nScatterChart.displayName = \"ScatterChart\";\nexport { ScatterChart };\n","import * as React from \"react\";\nimport {\n ComposedChart as RechartsComposedChart,\n Line,\n Bar,\n Area,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n} from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartLegendContent, resolveLegendConfig } from \"../shared/chart-legend\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type {\n BaseChartProps,\n ChartXAxis,\n ChartYAxis,\n ChartGrid,\n ChartLegend,\n ChartTooltipProp,\n} from \"../shared/types\";\n\nexport interface ComposedChartSeries {\n type: \"line\" | \"bar\" | \"area\";\n dataKey: string;\n name: string;\n color?: string;\n yAxisId?: string;\n stackId?: string;\n strokeWidth?: number;\n strokeDasharray?: string;\n fillOpacity?: number;\n radius?: number | [number, number, number, number];\n}\n\nexport interface ComposedChartProps extends BaseChartProps {\n data: Record<string, unknown>[];\n series: ComposedChartSeries[];\n xAxis: ChartXAxis;\n yAxis?: ChartYAxis;\n /** Secondary Y axis displayed on the right */\n yAxisRight?: ChartYAxis & { id: string };\n grid?: boolean | ChartGrid;\n legend?: boolean | ChartLegend;\n tooltip?: ChartTooltipProp;\n loading?: boolean;\n}\n\nconst ComposedChart = React.forwardRef<HTMLDivElement, ComposedChartProps>(\n (\n {\n data,\n series,\n xAxis,\n yAxis,\n yAxisRight,\n grid = true,\n tooltip = true,\n legend = false,\n animate = true,\n live = false,\n className,\n height = \"100%\",\n margin = { top: 8, right: 12, left: 0, bottom: 4 },\n loading,\n },\n ref,\n ) => {\n const gridConfig = React.useMemo(() => {\n if (grid === false) return null;\n if (grid === true) return { vertical: false, horizontal: true };\n return grid;\n }, [grid]);\n\n const legendConfig = resolveLegendConfig(legend);\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <RechartsComposedChart data={data} margin={margin}>\n {gridConfig && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--divider))\"\n vertical={gridConfig.vertical ?? false}\n horizontal={gridConfig.horizontal ?? true}\n />\n )}\n <XAxis\n dataKey={xAxis.dataKey}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n minTickGap={xAxis.minTickGap ?? 24}\n tickFormatter={xAxis.tickFormatter}\n label={\n xAxis.label\n ? {\n value: xAxis.label,\n position: \"insideBottom\",\n offset: -4,\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n <YAxis\n yAxisId=\"left\"\n domain={yAxis?.domain ?? [\"auto\", \"auto\"]}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n width={yAxis?.width ?? 40}\n tickFormatter={yAxis?.tickFormatter}\n label={\n yAxis?.label\n ? {\n value: yAxis.label,\n angle: -90,\n position: \"insideLeft\",\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n {yAxisRight && (\n <YAxis\n yAxisId={yAxisRight.id}\n orientation=\"right\"\n domain={yAxisRight.domain ?? [\"auto\", \"auto\"]}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n width={yAxisRight.width ?? 40}\n tickFormatter={yAxisRight.tickFormatter}\n label={\n yAxisRight.label\n ? {\n value: yAxisRight.label,\n angle: 90,\n position: \"insideRight\",\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n )}\n {tooltipProps && <Tooltip {...tooltipProps} />}\n {legendConfig && (\n <Legend\n verticalAlign={legendConfig.position ?? \"top\"}\n align={legendConfig.align ?? \"right\"}\n content={<ChartLegendContent />}\n />\n )}\n {series.map((s, index) => {\n const color = getChartColor(index, s.color);\n const yAxisId = s.yAxisId ?? \"left\";\n const props = {\n key: s.dataKey,\n dataKey: s.dataKey,\n name: s.name,\n yAxisId,\n isAnimationActive: isAnimated,\n animationDuration: isAnimated ? 300 : 0,\n };\n switch (s.type) {\n case \"line\":\n return (\n <Line\n {...props}\n type=\"monotone\"\n stroke={color}\n strokeWidth={s.strokeWidth ?? 2}\n strokeDasharray={s.strokeDasharray}\n dot={false}\n />\n );\n case \"bar\":\n return (\n <Bar\n {...props}\n fill={color}\n stackId={s.stackId}\n radius={s.radius ?? 0}\n />\n );\n case \"area\":\n return (\n <Area\n {...props}\n type=\"monotone\"\n stroke={color}\n fill={color}\n fillOpacity={s.fillOpacity ?? 0.15}\n strokeWidth={s.strokeWidth ?? 2}\n stackId={s.stackId}\n />\n );\n }\n })}\n </RechartsComposedChart>\n </ChartContainer>\n );\n },\n);\n\nComposedChart.displayName = \"ComposedChart\";\nexport { ComposedChart };\n","import * as React from \"react\";\nimport {\n BarChart as RechartsBarChart,\n Bar,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Cell,\n ReferenceLine,\n} from \"recharts\";\nimport { getSemanticColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type { BaseChartProps, ChartXAxis, ChartYAxis, ChartTooltipProp } from \"../shared/types\";\n\nexport interface WaterfallItem {\n name: string;\n value: number;\n /** Mark as a summary/total bar rather than a delta */\n isTotal?: boolean;\n}\n\nexport interface WaterfallChartProps extends BaseChartProps {\n data: WaterfallItem[];\n xAxis?: Partial<ChartXAxis>;\n yAxis?: ChartYAxis;\n tooltip?: ChartTooltipProp;\n positiveColor?: string;\n negativeColor?: string;\n totalColor?: string;\n loading?: boolean;\n}\n\ninterface WaterfallRow {\n name: string;\n invisible: number;\n delta: number;\n isTotal: boolean;\n rawValue: number;\n}\n\nfunction buildWaterfallData(items: WaterfallItem[]): WaterfallRow[] {\n let running = 0;\n return items.map((item) => {\n if (item.isTotal) {\n const row: WaterfallRow = {\n name: item.name,\n invisible: 0,\n delta: running,\n isTotal: true,\n rawValue: running,\n };\n return row;\n }\n const start = running;\n running += item.value;\n const base = item.value >= 0 ? start : running;\n return {\n name: item.name,\n invisible: base,\n delta: Math.abs(item.value),\n isTotal: false,\n rawValue: item.value,\n };\n });\n}\n\nconst WaterfallChart = React.forwardRef<HTMLDivElement, WaterfallChartProps>(\n (\n {\n data,\n xAxis,\n yAxis,\n tooltip = true,\n positiveColor,\n negativeColor,\n totalColor,\n animate = true,\n live = false,\n className,\n height = \"100%\",\n margin = { top: 8, right: 12, left: 0, bottom: 4 },\n loading,\n },\n ref,\n ) => {\n const rows = React.useMemo(() => buildWaterfallData(data), [data]);\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n\n const posColor = positiveColor ?? getSemanticColor(\"positive\");\n const negColor = negativeColor ?? getSemanticColor(\"negative\");\n const totColor = totalColor ?? \"hsl(var(--chart-3))\";\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <RechartsBarChart data={rows} margin={margin}>\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--divider))\"\n vertical={false}\n />\n <XAxis\n dataKey=\"name\"\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={xAxis?.tickFormatter}\n />\n <YAxis\n domain={yAxis?.domain ?? [\"auto\", \"auto\"]}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={false}\n axisLine={false}\n width={yAxis?.width ?? 40}\n tickFormatter={yAxis?.tickFormatter}\n label={\n yAxis?.label\n ? {\n value: yAxis.label,\n angle: -90,\n position: \"insideLeft\",\n fontSize: 11,\n fill: \"hsl(var(--muted-foreground))\",\n }\n : undefined\n }\n />\n <ReferenceLine y={0} stroke=\"hsl(var(--divider))\" />\n {tooltipProps && <Tooltip {...tooltipProps} />}\n <Bar\n dataKey=\"invisible\"\n stackId=\"waterfall\"\n fill=\"transparent\"\n isAnimationActive={false}\n />\n <Bar\n dataKey=\"delta\"\n stackId=\"waterfall\"\n isAnimationActive={isAnimated}\n animationDuration={isAnimated ? 300 : 0}\n radius={[2, 2, 0, 0]}\n >\n {rows.map((row, i) => (\n <Cell\n key={i}\n fill={\n row.isTotal\n ? totColor\n : row.rawValue >= 0\n ? posColor\n : negColor\n }\n />\n ))}\n </Bar>\n </RechartsBarChart>\n </ChartContainer>\n );\n },\n);\n\nWaterfallChart.displayName = \"WaterfallChart\";\nexport { WaterfallChart };\n","import * as React from \"react\";\nimport {\n PieChart as RechartsPieChart,\n Pie,\n Cell,\n Tooltip,\n Legend,\n} from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartLegendContent, resolveLegendConfig } from \"../shared/chart-legend\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type { BaseChartProps, ChartLegend, ChartTooltipProp } from \"../shared/types\";\n\nexport interface PieChartDatum {\n name: string;\n value: number;\n color?: string;\n}\n\nexport interface PieChartProps extends BaseChartProps {\n data: PieChartDatum[];\n innerRadius?: number | string;\n outerRadius?: number | string;\n paddingAngle?: number;\n startAngle?: number;\n endAngle?: number;\n legend?: boolean | ChartLegend;\n tooltip?: ChartTooltipProp;\n /** Label rendered on each slice */\n label?: boolean | ((entry: PieChartDatum) => string);\n loading?: boolean;\n}\n\nconst RADIAN = Math.PI / 180;\n\nfunction defaultRenderLabel({\n cx,\n cy,\n midAngle,\n innerRadius,\n outerRadius,\n percent,\n}: {\n cx: number;\n cy: number;\n midAngle: number;\n innerRadius: number;\n outerRadius: number;\n percent: number;\n}) {\n const radius = innerRadius + (outerRadius - innerRadius) * 0.5;\n const x = cx + radius * Math.cos(-midAngle * RADIAN);\n const y = cy + radius * Math.sin(-midAngle * RADIAN);\n if (percent < 0.04) return null;\n return (\n <text\n x={x}\n y={y}\n fill=\"hsl(var(--card-foreground))\"\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n fontSize={10}\n fontWeight={600}\n >\n {`${(percent * 100).toFixed(0)}%`}\n </text>\n );\n}\n\nconst PieChart = React.forwardRef<HTMLDivElement, PieChartProps>(\n (\n {\n data,\n innerRadius = 0,\n outerRadius = \"80%\",\n paddingAngle = 2,\n startAngle = 90,\n endAngle = -270,\n legend = false,\n tooltip = true,\n label = false,\n animate = true,\n live = false,\n className,\n height = \"100%\",\n margin = { top: 8, right: 8, left: 8, bottom: 8 },\n loading,\n },\n ref,\n ) => {\n const legendConfig = resolveLegendConfig(legend);\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n\n const renderLabel =\n label === true\n ? defaultRenderLabel\n : typeof label === \"function\"\n ? (entry: Record<string, unknown>) =>\n (label as (e: PieChartDatum) => string)(entry as unknown as PieChartDatum)\n : undefined;\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <RechartsPieChart margin={margin}>\n <Pie\n data={data}\n dataKey=\"value\"\n nameKey=\"name\"\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n paddingAngle={paddingAngle}\n startAngle={startAngle}\n endAngle={endAngle}\n isAnimationActive={isAnimated}\n animationDuration={isAnimated ? 400 : 0}\n label={renderLabel}\n labelLine={false}\n stroke=\"hsl(var(--card))\"\n strokeWidth={2}\n >\n {data.map((entry, index) => (\n <Cell\n key={entry.name}\n fill={getChartColor(index, entry.color)}\n />\n ))}\n </Pie>\n {tooltipProps && <Tooltip {...tooltipProps} />}\n {legendConfig && (\n <Legend\n verticalAlign={legendConfig.position ?? \"bottom\"}\n align={legendConfig.align ?? \"center\"}\n content={<ChartLegendContent />}\n />\n )}\n </RechartsPieChart>\n </ChartContainer>\n );\n },\n);\n\nPieChart.displayName = \"PieChart\";\nexport { PieChart };\n","import * as React from \"react\";\nimport {\n PieChart as RechartsPieChart,\n Pie,\n Cell,\n Tooltip,\n Legend,\n} from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartLegendContent, resolveLegendConfig } from \"../shared/chart-legend\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type { BaseChartProps, ChartLegend, ChartTooltipProp } from \"../shared/types\";\n\nexport interface DonutChartDatum {\n name: string;\n value: number;\n color?: string;\n}\n\nexport interface DonutChartProps extends BaseChartProps {\n data: DonutChartDatum[];\n innerRadius?: number | string;\n outerRadius?: number | string;\n paddingAngle?: number;\n legend?: boolean | ChartLegend;\n tooltip?: ChartTooltipProp;\n /** Content rendered in the center of the donut */\n centerLabel?: string;\n centerValue?: string;\n loading?: boolean;\n}\n\nconst DonutChart = React.forwardRef<HTMLDivElement, DonutChartProps>(\n (\n {\n data,\n innerRadius = \"60%\",\n outerRadius = \"80%\",\n paddingAngle = 2,\n legend = false,\n tooltip = true,\n centerLabel,\n centerValue,\n animate = true,\n live = false,\n className,\n height = \"100%\",\n margin = { top: 8, right: 8, left: 8, bottom: 8 },\n loading,\n },\n ref,\n ) => {\n const legendConfig = resolveLegendConfig(legend);\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <RechartsPieChart margin={margin}>\n <Pie\n data={data}\n dataKey=\"value\"\n nameKey=\"name\"\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n paddingAngle={paddingAngle}\n startAngle={90}\n endAngle={-270}\n isAnimationActive={isAnimated}\n animationDuration={isAnimated ? 400 : 0}\n stroke=\"hsl(var(--card))\"\n strokeWidth={2}\n >\n {data.map((entry, index) => (\n <Cell\n key={entry.name}\n fill={getChartColor(index, entry.color)}\n />\n ))}\n </Pie>\n {(centerLabel || centerValue) && (\n <text\n x=\"50%\"\n y=\"50%\"\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n >\n {centerValue && (\n <tspan\n x=\"50%\"\n dy={centerLabel ? \"-0.5em\" : \"0\"}\n fontSize={20}\n fontWeight={700}\n fill=\"hsl(var(--foreground))\"\n >\n {centerValue}\n </tspan>\n )}\n {centerLabel && (\n <tspan\n x=\"50%\"\n dy={centerValue ? \"1.4em\" : \"0\"}\n fontSize={11}\n fill=\"hsl(var(--muted-foreground))\"\n >\n {centerLabel}\n </tspan>\n )}\n </text>\n )}\n {tooltipProps && <Tooltip {...tooltipProps} />}\n {legendConfig && (\n <Legend\n verticalAlign={legendConfig.position ?? \"bottom\"}\n align={legendConfig.align ?? \"center\"}\n content={<ChartLegendContent />}\n />\n )}\n </RechartsPieChart>\n </ChartContainer>\n );\n },\n);\n\nDonutChart.displayName = \"DonutChart\";\nexport { DonutChart };\n","import * as React from \"react\";\nimport {\n RadarChart as RechartsRadarChart,\n Radar,\n PolarGrid,\n PolarAngleAxis,\n PolarRadiusAxis,\n Tooltip,\n Legend,\n} from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartLegendContent, resolveLegendConfig } from \"../shared/chart-legend\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type { BaseChartProps, ChartLegend, ChartTooltipProp } from \"../shared/types\";\n\nexport interface RadarChartSeries {\n dataKey: string;\n name: string;\n color?: string;\n fillOpacity?: number;\n strokeWidth?: number;\n /** Use dashed stroke for baseline/reference series */\n strokeDasharray?: string;\n}\n\nexport interface RadarChartProps extends BaseChartProps {\n data: Record<string, unknown>[];\n series: RadarChartSeries[];\n /** Key in data used for the angle axis labels */\n categoryKey: string;\n domain?: [number, number];\n legend?: boolean | ChartLegend;\n tooltip?: ChartTooltipProp;\n loading?: boolean;\n}\n\nconst RadarChart = React.forwardRef<HTMLDivElement, RadarChartProps>(\n (\n {\n data,\n series,\n categoryKey,\n domain,\n legend = false,\n tooltip = true,\n animate = true,\n live = false,\n className,\n height = \"100%\",\n margin = { top: 8, right: 8, left: 8, bottom: 8 },\n loading,\n },\n ref,\n ) => {\n const legendConfig = resolveLegendConfig(legend);\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <RechartsRadarChart data={data} margin={margin} cx=\"50%\" cy=\"50%\">\n <PolarGrid stroke=\"hsl(var(--divider))\" />\n <PolarAngleAxis\n dataKey={categoryKey}\n tick={{ fontSize: 10, fill: \"hsl(var(--muted-foreground))\" }}\n />\n <PolarRadiusAxis\n domain={domain}\n tick={{ fontSize: 9, fill: \"hsl(var(--muted-foreground))\" }}\n axisLine={false}\n />\n {tooltipProps && <Tooltip {...tooltipProps} />}\n {legendConfig && (\n <Legend\n verticalAlign={legendConfig.position ?? \"bottom\"}\n align={legendConfig.align ?? \"center\"}\n content={<ChartLegendContent />}\n />\n )}\n {series.map((s, index) => {\n const color = getChartColor(index, s.color);\n return (\n <Radar\n key={s.dataKey}\n name={s.name}\n dataKey={s.dataKey}\n stroke={color}\n strokeWidth={s.strokeWidth ?? 2}\n strokeDasharray={s.strokeDasharray}\n fill={color}\n fillOpacity={s.fillOpacity ?? 0.15}\n isAnimationActive={isAnimated}\n animationDuration={isAnimated ? 400 : 0}\n />\n );\n })}\n </RechartsRadarChart>\n </ChartContainer>\n );\n },\n);\n\nRadarChart.displayName = \"RadarChart\";\nexport { RadarChart };\n","import * as React from \"react\";\nimport {\n RadialBarChart as RechartsRadialBarChart,\n RadialBar,\n Tooltip,\n Legend,\n} from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartLegendContent, resolveLegendConfig } from \"../shared/chart-legend\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type { BaseChartProps, ChartLegend, ChartTooltipProp } from \"../shared/types\";\n\nexport interface RadialBarDatum {\n name: string;\n value: number;\n fill?: string;\n}\n\nexport interface RadialBarChartProps extends BaseChartProps {\n data: RadialBarDatum[];\n innerRadius?: number | string;\n outerRadius?: number | string;\n startAngle?: number;\n endAngle?: number;\n legend?: boolean | ChartLegend;\n tooltip?: ChartTooltipProp;\n /** Show value labels on each bar */\n showLabels?: boolean;\n loading?: boolean;\n}\n\nconst RadialBarChart = React.forwardRef<HTMLDivElement, RadialBarChartProps>(\n (\n {\n data,\n innerRadius = \"30%\",\n outerRadius = \"90%\",\n startAngle = 180,\n endAngle = 0,\n legend = false,\n tooltip = true,\n showLabels = true,\n animate = true,\n live = false,\n className,\n height = \"100%\",\n margin = { top: 8, right: 8, left: 8, bottom: 8 },\n loading,\n },\n ref,\n ) => {\n const legendConfig = resolveLegendConfig(legend);\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n\n const coloredData = React.useMemo(\n () =>\n data.map((d, i) => ({\n ...d,\n fill: d.fill ?? getChartColor(i),\n })),\n [data],\n );\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <RechartsRadialBarChart\n data={coloredData}\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n startAngle={startAngle}\n endAngle={endAngle}\n margin={margin}\n cx=\"50%\"\n cy=\"50%\"\n >\n <RadialBar\n dataKey=\"value\"\n background={{ fill: \"hsl(var(--muted))\" }}\n isAnimationActive={isAnimated}\n animationDuration={isAnimated ? 400 : 0}\n label={\n showLabels\n ? {\n position: \"insideStart\",\n fill: \"hsl(var(--foreground))\",\n fontSize: 10,\n fontWeight: 600,\n }\n : false\n }\n />\n {tooltipProps && <Tooltip {...tooltipProps} />}\n {legendConfig && (\n <Legend\n verticalAlign={legendConfig.position ?? \"bottom\"}\n align={legendConfig.align ?? \"center\"}\n content={<ChartLegendContent />}\n />\n )}\n </RechartsRadialBarChart>\n </ChartContainer>\n );\n },\n);\n\nRadialBarChart.displayName = \"RadialBarChart\";\nexport { RadialBarChart };\n","import * as React from \"react\";\nimport { Sankey, Tooltip, Layer, Rectangle } from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type { BaseChartProps, ChartTooltipProp } from \"../shared/types\";\n\nexport interface SankeyNode {\n name: string;\n color?: string;\n}\n\nexport interface SankeyLink {\n source: number;\n target: number;\n value: number;\n}\n\nexport interface SankeyChartData {\n nodes: SankeyNode[];\n links: SankeyLink[];\n}\n\nexport interface SankeyChartProps extends BaseChartProps {\n data: SankeyChartData;\n nodeWidth?: number;\n nodePadding?: number;\n tooltip?: ChartTooltipProp;\n loading?: boolean;\n}\n\ninterface SankeyNodeRendererProps {\n x: number;\n y: number;\n width: number;\n height: number;\n index: number;\n payload: { name: string; color?: string };\n}\n\nfunction SankeyNodeRenderer({\n x,\n y,\n width,\n height,\n index,\n payload,\n}: SankeyNodeRendererProps) {\n const fill = payload.color ?? getChartColor(index);\n return (\n <Layer key={`node-${index}`}>\n <Rectangle\n x={x}\n y={y}\n width={width}\n height={height}\n fill={fill}\n fillOpacity={0.9}\n />\n <text\n x={x + width + 6}\n y={y + height / 2}\n textAnchor=\"start\"\n dominantBaseline=\"central\"\n fontSize={10}\n fill=\"hsl(var(--foreground))\"\n >\n {payload.name}\n </text>\n </Layer>\n );\n}\n\ninterface SankeyLinkRendererProps {\n sourceX: number;\n sourceY: number;\n sourceControlX: number;\n targetX: number;\n targetY: number;\n targetControlX: number;\n linkWidth: number;\n index: number;\n payload: { source: { color?: string }; target: unknown };\n}\n\nfunction SankeyLinkRenderer({\n sourceX,\n sourceY,\n sourceControlX,\n targetX,\n targetY,\n targetControlX,\n linkWidth,\n index,\n payload,\n}: SankeyLinkRendererProps) {\n const sourceColor =\n (payload.source as { color?: string }).color ?? getChartColor(index);\n return (\n <Layer key={`link-${index}`}>\n <path\n d={`\n M${sourceX},${sourceY}\n C${sourceControlX},${sourceY} ${targetControlX},${targetY} ${targetX},${targetY}\n `}\n fill=\"none\"\n stroke={sourceColor}\n strokeWidth={linkWidth}\n strokeOpacity={0.3}\n />\n </Layer>\n );\n}\n\nconst SankeyChart = React.forwardRef<HTMLDivElement, SankeyChartProps>(\n (\n {\n data,\n nodeWidth = 10,\n nodePadding = 20,\n tooltip = true,\n className,\n height = \"100%\",\n margin = { top: 8, right: 80, left: 8, bottom: 8 },\n loading,\n },\n ref,\n ) => {\n const tooltipProps = resolveTooltipProps(tooltip);\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.nodes?.length}\n >\n <Sankey\n data={data}\n nodeWidth={nodeWidth}\n nodePadding={nodePadding}\n margin={margin}\n node={(SankeyNodeRenderer as never)}\n link={(SankeyLinkRenderer as never)}\n >\n {tooltipProps && <Tooltip {...tooltipProps} />}\n </Sankey>\n </ChartContainer>\n );\n },\n);\n\nSankeyChart.displayName = \"SankeyChart\";\nexport { SankeyChart };\n","import * as React from \"react\";\nimport { Treemap, Tooltip } from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type { BaseChartProps, ChartTooltipProp } from \"../shared/types\";\n\nexport interface TreemapDatum {\n name: string;\n value?: number;\n color?: string;\n children?: TreemapDatum[];\n}\n\nexport interface TreemapChartProps extends BaseChartProps {\n data: TreemapDatum[];\n dataKey?: string;\n aspectRatio?: number;\n tooltip?: ChartTooltipProp;\n loading?: boolean;\n}\n\ninterface TreemapContentProps {\n x: number;\n y: number;\n width: number;\n height: number;\n index: number;\n name: string;\n depth: number;\n color?: string;\n}\n\nfunction TreemapContent({\n x,\n y,\n width,\n height,\n index,\n name,\n depth,\n color,\n}: TreemapContentProps) {\n const fill = color ?? getChartColor(index);\n const showLabel = width > 40 && height > 20;\n\n return (\n <g>\n <rect\n x={x}\n y={y}\n width={width}\n height={height}\n fill={fill}\n fillOpacity={depth === 1 ? 0.85 : 0.6}\n stroke=\"hsl(var(--card))\"\n strokeWidth={2}\n rx={2}\n />\n {showLabel && (\n <text\n x={x + width / 2}\n y={y + height / 2}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n fontSize={Math.min(11, width / 6)}\n fill=\"hsl(var(--card-foreground))\"\n fontWeight={500}\n style={{ pointerEvents: \"none\" }}\n >\n {name.length > width / 7 ? `${name.slice(0, Math.floor(width / 7))}…` : name}\n </text>\n )}\n </g>\n );\n}\n\nconst TreemapChart = React.forwardRef<HTMLDivElement, TreemapChartProps>(\n (\n {\n data,\n dataKey = \"value\",\n aspectRatio = 4 / 3,\n tooltip = true,\n animate = true,\n live = false,\n className,\n height = \"100%\",\n margin,\n loading,\n },\n ref,\n ) => {\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <Treemap\n data={data}\n dataKey={dataKey}\n aspectRatio={aspectRatio}\n isAnimationActive={isAnimated}\n animationDuration={isAnimated ? 400 : 0}\n content={<TreemapContent x={0} y={0} width={0} height={0} index={0} name=\"\" depth={1} />}\n >\n {tooltipProps && <Tooltip {...tooltipProps} />}\n </Treemap>\n </ChartContainer>\n );\n },\n);\n\nTreemapChart.displayName = \"TreemapChart\";\nexport { TreemapChart };\n","import * as React from \"react\";\nimport {\n FunnelChart as RechartsFunnelChart,\n Funnel,\n Cell,\n Tooltip,\n LabelList,\n} from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\nimport { resolveTooltipProps } from \"../shared/chart-tooltip\";\nimport { ChartContainer } from \"../shared/chart-container\";\nimport type { BaseChartProps, ChartTooltipProp } from \"../shared/types\";\n\nexport interface FunnelDatum {\n name: string;\n value: number;\n color?: string;\n}\n\nexport interface FunnelChartProps extends BaseChartProps {\n data: FunnelDatum[];\n tooltip?: ChartTooltipProp;\n showLabels?: boolean;\n loading?: boolean;\n}\n\nconst FunnelChart = React.forwardRef<HTMLDivElement, FunnelChartProps>(\n (\n {\n data,\n tooltip = true,\n showLabels = true,\n animate = true,\n live = false,\n className,\n height = \"100%\",\n margin = { top: 8, right: 8, left: 8, bottom: 8 },\n loading,\n },\n ref,\n ) => {\n const tooltipProps = resolveTooltipProps(tooltip);\n const isAnimated = live ? false : animate;\n\n return (\n <ChartContainer\n ref={ref}\n className={className}\n height={height}\n loading={loading}\n empty={!data?.length}\n >\n <RechartsFunnelChart margin={margin}>\n <Funnel\n dataKey=\"value\"\n data={data}\n isAnimationActive={isAnimated}\n animationDuration={isAnimated ? 400 : 0}\n >\n {data.map((entry, index) => (\n <Cell\n key={entry.name}\n fill={getChartColor(index, entry.color)}\n stroke=\"hsl(var(--card))\"\n strokeWidth={2}\n />\n ))}\n {showLabels && (\n <LabelList\n dataKey=\"name\"\n position=\"center\"\n fill=\"#ffffff\"\n fontSize={13}\n fontWeight={600}\n style={{\n textShadow: \"0 1px 3px rgba(0,0,0,0.4)\",\n paintOrder: \"stroke\",\n stroke: \"rgba(0,0,0,0.2)\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n }}\n />\n )}\n </Funnel>\n {tooltipProps && <Tooltip {...tooltipProps} />}\n </RechartsFunnelChart>\n </ChartContainer>\n );\n },\n);\n\nFunnelChart.displayName = \"FunnelChart\";\nexport { FunnelChart };\n","import * as React from \"react\";\nimport { cn } from \"@optilogic/core\";\nimport { getChartColor } from \"../shared/colors\";\n\nexport interface GanttTask {\n id: string;\n name: string;\n start: Date;\n end: Date;\n /** 0–100 completion percentage */\n progress?: number;\n group?: string;\n color?: string;\n /** Task IDs this task depends on (renders dependency arrows) */\n dependencies?: string[];\n}\n\nexport interface GanttMilestone {\n id: string;\n name: string;\n date: Date;\n color?: string;\n}\n\nexport type GanttTimeScale = \"day\" | \"week\" | \"month\";\n\nexport interface GanttChartProps {\n tasks: GanttTask[];\n milestones?: GanttMilestone[];\n timeScale?: GanttTimeScale;\n className?: string;\n height?: number | string;\n rowHeight?: number;\n labelWidth?: number;\n onTaskClick?: (task: GanttTask) => void;\n}\n\nconst ROW_HEIGHT_DEFAULT = 36;\nconst LABEL_WIDTH_DEFAULT = 160;\nconst HEADER_HEIGHT = 32;\n/** Minimum horizontal space an axis label needs before labels start to collide. */\nconst MIN_LABEL_SPACING = 64;\n/** Fallback chart width used before the container has been measured. */\nconst FALLBACK_CHART_WIDTH = 640;\n/** Floor for the time-axis width so very narrow containers stay legible (scrolls). */\nconst MIN_CHART_WIDTH = 320;\n\nfunction getTimeBounds(tasks: GanttTask[], milestones: GanttMilestone[]) {\n let min = Infinity;\n let max = -Infinity;\n for (const t of tasks) {\n if (t.start.getTime() < min) min = t.start.getTime();\n if (t.end.getTime() > max) max = t.end.getTime();\n }\n for (const m of milestones) {\n if (m.date.getTime() < min) min = m.date.getTime();\n if (m.date.getTime() > max) max = m.date.getTime();\n }\n const pad = (max - min) * 0.05 || 86400000;\n return { min: min - pad, max: max + pad, span: max - min + 2 * pad };\n}\n\nfunction generateTicks(\n min: number,\n max: number,\n scale: GanttTimeScale,\n): { pos: number; label: string }[] {\n const ticks: { pos: number; label: string }[] = [];\n const d = new Date(min);\n\n if (scale === \"day\") {\n d.setHours(0, 0, 0, 0);\n while (d.getTime() <= max) {\n ticks.push({\n pos: d.getTime(),\n label: d.toLocaleDateString(undefined, { month: \"short\", day: \"numeric\" }),\n });\n d.setDate(d.getDate() + 1);\n }\n } else if (scale === \"week\") {\n d.setHours(0, 0, 0, 0);\n d.setDate(d.getDate() - d.getDay());\n while (d.getTime() <= max) {\n ticks.push({\n pos: d.getTime(),\n label: d.toLocaleDateString(undefined, { month: \"short\", day: \"numeric\" }),\n });\n d.setDate(d.getDate() + 7);\n }\n } else {\n d.setDate(1);\n d.setHours(0, 0, 0, 0);\n while (d.getTime() <= max) {\n ticks.push({\n pos: d.getTime(),\n label: d.toLocaleDateString(undefined, { month: \"short\", year: \"2-digit\" }),\n });\n d.setMonth(d.getMonth() + 1);\n }\n }\n return ticks;\n}\n\nconst GanttChart = React.forwardRef<HTMLDivElement, GanttChartProps>(\n function GanttChart(\n {\n tasks,\n milestones = [],\n timeScale = \"day\",\n className,\n height = 400,\n rowHeight = ROW_HEIGHT_DEFAULT,\n labelWidth = LABEL_WIDTH_DEFAULT,\n onTaskClick,\n },\n ref,\n ) {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = React.useState(0);\n const [hoveredId, setHoveredId] = React.useState<string | null>(null);\n const [tooltipInfo, setTooltipInfo] = React.useState<{\n task: GanttTask;\n x: number;\n y: number;\n } | null>(null);\n\n const groups = React.useMemo(() => {\n const map = new Map<string, GanttTask[]>();\n for (const t of tasks) {\n const g = t.group ?? \"\";\n if (!map.has(g)) map.set(g, []);\n map.get(g)!.push(t);\n }\n return map;\n }, [tasks]);\n\n const orderedTasks = React.useMemo(() => {\n const result: GanttTask[] = [];\n for (const group of groups.values()) {\n result.push(...group.sort((a, b) => a.start.getTime() - b.start.getTime()));\n }\n return result;\n }, [groups]);\n\n const taskIndex = React.useMemo(() => {\n const m = new Map<string, number>();\n orderedTasks.forEach((t, i) => m.set(t.id, i));\n return m;\n }, [orderedTasks]);\n\n const bounds = React.useMemo(\n () => getTimeBounds(tasks, milestones),\n [tasks, milestones],\n );\n\n const ticks = React.useMemo(\n () => generateTicks(bounds.min, bounds.max, timeScale),\n [bounds, timeScale],\n );\n\n // Measure the container so the time axis fills the available width instead\n // of a fixed guess — keeps bars, gridlines, and labels aligned at any size.\n React.useEffect(() => {\n const el = containerRef.current;\n if (!el || typeof ResizeObserver === \"undefined\") return;\n const update = () => setContainerWidth(el.clientWidth);\n update();\n const observer = new ResizeObserver(update);\n observer.observe(el);\n return () => observer.disconnect();\n }, []);\n\n const chartWidth = Math.max(\n (containerWidth || labelWidth + FALLBACK_CHART_WIDTH) - labelWidth,\n MIN_CHART_WIDTH,\n );\n\n // Show at most one label per MIN_LABEL_SPACING px; thin the rest so daily\n // ticks over a long span don't overlap into an unreadable smear. Gridlines\n // are kept for every tick — only the text is thinned.\n const labelStep = Math.max(\n 1,\n Math.ceil(ticks.length / Math.max(1, Math.floor(chartWidth / MIN_LABEL_SPACING))),\n );\n\n const chartHeight =\n typeof height === \"number\" ? height : undefined;\n const svgHeight = HEADER_HEIGHT + orderedTasks.length * rowHeight + 8;\n\n function xOf(time: number, width: number) {\n return ((time - bounds.min) / bounds.span) * width;\n }\n\n return (\n <div\n ref={(node) => {\n (containerRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }}\n className={cn(\"w-full overflow-auto relative\", className)}\n style={{ height }}\n >\n <svg\n width={labelWidth + chartWidth}\n height={Math.max(svgHeight, chartHeight ?? svgHeight)}\n style={{ minWidth: labelWidth + MIN_CHART_WIDTH }}\n >\n {/* Label background */}\n <rect\n x={0}\n y={0}\n width={labelWidth}\n height={svgHeight}\n fill=\"hsl(var(--card))\"\n />\n <line\n x1={labelWidth}\n y1={0}\n x2={labelWidth}\n y2={svgHeight}\n stroke=\"hsl(var(--border))\"\n />\n\n {/* Time axis header */}\n <g>\n {ticks.map((tick, i) => {\n const x = labelWidth + xOf(tick.pos, chartWidth);\n const showLabel = i % labelStep === 0;\n return (\n <g key={i}>\n <line\n x1={x}\n y1={HEADER_HEIGHT}\n x2={x}\n y2={svgHeight}\n stroke=\"hsl(var(--divider))\"\n strokeDasharray=\"2 4\"\n />\n {showLabel && (\n <text\n x={x + 4}\n y={HEADER_HEIGHT - 10}\n fontSize={9}\n fill=\"hsl(var(--muted-foreground))\"\n >\n {tick.label}\n </text>\n )}\n </g>\n );\n })}\n </g>\n\n {/* Rows */}\n {orderedTasks.map((task, i) => {\n const y = HEADER_HEIGHT + i * rowHeight;\n const barX = labelWidth + xOf(task.start.getTime(), chartWidth);\n const barW =\n xOf(task.end.getTime(), chartWidth) -\n xOf(task.start.getTime(), chartWidth);\n const barH = rowHeight * 0.55;\n const barY = y + (rowHeight - barH) / 2;\n const color = task.color ?? getChartColor(i);\n const isHovered = hoveredId === task.id;\n const progress = task.progress ?? 0;\n\n return (\n <g\n key={task.id}\n onMouseEnter={(e) => {\n setHoveredId(task.id);\n const rect = containerRef.current?.getBoundingClientRect();\n setTooltipInfo({\n task,\n x: e.clientX - (rect?.left ?? 0) + (containerRef.current?.scrollLeft ?? 0),\n y: e.clientY - (rect?.top ?? 0) + (containerRef.current?.scrollTop ?? 0),\n });\n }}\n onMouseLeave={() => {\n setHoveredId(null);\n setTooltipInfo(null);\n }}\n onClick={() => onTaskClick?.(task)}\n style={{ cursor: onTaskClick ? \"pointer\" : \"default\" }}\n >\n {/* Row stripe */}\n {i % 2 === 0 && (\n <rect\n x={0}\n y={y}\n width=\"100%\"\n height={rowHeight}\n fill=\"hsl(var(--muted))\"\n fillOpacity={0.3}\n />\n )}\n {/* Label */}\n <text\n x={12}\n y={y + rowHeight / 2}\n dominantBaseline=\"central\"\n fontSize={11}\n fill=\"hsl(var(--foreground))\"\n fontWeight={isHovered ? 600 : 400}\n >\n {task.name.length > labelWidth / 8\n ? `${task.name.slice(0, Math.floor(labelWidth / 8))}…`\n : task.name}\n </text>\n {/* Background bar */}\n <rect\n x={barX}\n y={barY}\n width={Math.max(barW, 2)}\n height={barH}\n rx={3}\n fill={color}\n fillOpacity={0.25}\n stroke={isHovered ? color : \"none\"}\n strokeWidth={isHovered ? 1.5 : 0}\n />\n {/* Progress fill */}\n {progress > 0 && (\n <rect\n x={barX}\n y={barY}\n width={Math.max((barW * progress) / 100, 2)}\n height={barH}\n rx={3}\n fill={color}\n fillOpacity={0.85}\n />\n )}\n </g>\n );\n })}\n\n {/* Dependency arrows */}\n {orderedTasks.map((task) =>\n (task.dependencies ?? []).map((depId) => {\n const fromIdx = taskIndex.get(depId);\n if (fromIdx === undefined) return null;\n const toIdx = taskIndex.get(task.id)!;\n const fromTask = orderedTasks[fromIdx];\n const fromEndX = labelWidth + xOf(fromTask.end.getTime(), chartWidth);\n const fromY = HEADER_HEIGHT + fromIdx * rowHeight + rowHeight / 2;\n const toStartX = labelWidth + xOf(task.start.getTime(), chartWidth);\n const toY = HEADER_HEIGHT + toIdx * rowHeight + rowHeight / 2;\n const midX = (fromEndX + toStartX) / 2;\n\n return (\n <g key={`${depId}-${task.id}`}>\n <path\n d={`M${fromEndX},${fromY} C${midX},${fromY} ${midX},${toY} ${toStartX},${toY}`}\n fill=\"none\"\n stroke=\"hsl(var(--muted-foreground))\"\n strokeWidth={1}\n strokeDasharray=\"3 2\"\n markerEnd=\"url(#arrow)\"\n />\n </g>\n );\n }),\n )}\n\n {/* Milestones */}\n {milestones.map((m) => {\n const x = labelWidth + xOf(m.date.getTime(), chartWidth);\n return (\n <g key={m.id}>\n <line\n x1={x}\n y1={HEADER_HEIGHT}\n x2={x}\n y2={svgHeight}\n stroke={m.color ?? \"hsl(var(--warning))\"}\n strokeWidth={1.5}\n strokeDasharray=\"4 3\"\n />\n <polygon\n points={`${x},${HEADER_HEIGHT - 2} ${x + 5},${HEADER_HEIGHT + 6} ${x},${HEADER_HEIGHT + 14} ${x - 5},${HEADER_HEIGHT + 6}`}\n fill={m.color ?? \"hsl(var(--warning))\"}\n />\n </g>\n );\n })}\n\n {/* Arrow marker definition */}\n <defs>\n <marker\n id=\"arrow\"\n viewBox=\"0 0 6 6\"\n refX={6}\n refY={3}\n markerWidth={6}\n markerHeight={6}\n orient=\"auto-start-reverse\"\n >\n <path\n d=\"M 0 0 L 6 3 L 0 6 z\"\n fill=\"hsl(var(--muted-foreground))\"\n />\n </marker>\n </defs>\n </svg>\n\n {/* Tooltip */}\n {tooltipInfo && (\n <div\n style={{\n position: \"absolute\",\n left: tooltipInfo.x + 12,\n top: tooltipInfo.y - 10,\n background: \"hsl(var(--card))\",\n border: \"1px solid hsl(var(--border))\",\n borderRadius: 6,\n padding: \"6px 10px\",\n fontSize: 11,\n lineHeight: 1.5,\n boxShadow: \"0 2px 8px rgba(0,0,0,0.15)\",\n pointerEvents: \"none\",\n zIndex: 50,\n maxWidth: 220,\n }}\n >\n <div\n style={{\n fontWeight: 600,\n color: \"hsl(var(--foreground))\",\n marginBottom: 2,\n }}\n >\n {tooltipInfo.task.name}\n </div>\n <div style={{ color: \"hsl(var(--muted-foreground))\" }}>\n {tooltipInfo.task.start.toLocaleDateString()} –{\" \"}\n {tooltipInfo.task.end.toLocaleDateString()}\n </div>\n {tooltipInfo.task.progress != null && (\n <div style={{ color: \"hsl(var(--muted-foreground))\" }}>\n Progress: {tooltipInfo.task.progress}%\n </div>\n )}\n </div>\n )}\n </div>\n );\n },\n);\n\nGanttChart.displayName = \"GanttChart\";\nexport { GanttChart };\n","import * as React from \"react\";\nimport { cn } from \"@optilogic/core\";\n\nexport interface HeatmapCell {\n x: string | number;\n y: string | number;\n value: number;\n}\n\nexport interface HeatmapColorScale {\n min: string;\n mid?: string;\n max: string;\n}\n\nexport interface HeatmapChartProps {\n data: HeatmapCell[];\n xLabels: string[];\n yLabels: string[];\n colorScale?: HeatmapColorScale;\n cellSize?: number;\n showValues?: boolean;\n valueFormatter?: (value: number) => string;\n className?: string;\n height?: number | string;\n loading?: boolean;\n onCellClick?: (cell: HeatmapCell) => void;\n}\n\nconst DEFAULT_SCALE: HeatmapColorScale = {\n min: \"hsl(var(--chart-9))\",\n mid: \"hsl(var(--chart-4))\",\n max: \"hsl(var(--chart-7))\",\n};\n\nfunction interpolateColor(t: number, scale: HeatmapColorScale): string {\n if (!scale.mid) {\n return `color-mix(in srgb, ${scale.min} ${(1 - t) * 100}%, ${scale.max})`;\n }\n if (t <= 0.5) {\n const t2 = t * 2;\n return `color-mix(in srgb, ${scale.min} ${(1 - t2) * 100}%, ${scale.mid})`;\n }\n const t2 = (t - 0.5) * 2;\n return `color-mix(in srgb, ${scale.mid} ${(1 - t2) * 100}%, ${scale.max})`;\n}\n\nconst HeatmapChart = React.forwardRef<HTMLDivElement, HeatmapChartProps>(\n function HeatmapChart(\n {\n data,\n xLabels,\n yLabels,\n colorScale = DEFAULT_SCALE,\n cellSize = 40,\n showValues = true,\n valueFormatter,\n className,\n height,\n loading,\n onCellClick,\n },\n ref,\n ) {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const [hoveredCell, setHoveredCell] = React.useState<HeatmapCell | null>(null);\n const [tooltipPos, setTooltipPos] = React.useState({ x: 0, y: 0 });\n\n const { valueMap, minVal, maxVal } = React.useMemo(() => {\n const map = new Map<string, number>();\n let lo = Infinity;\n let hi = -Infinity;\n for (const cell of data) {\n map.set(`${cell.x}|${cell.y}`, cell.value);\n if (cell.value < lo) lo = cell.value;\n if (cell.value > hi) hi = cell.value;\n }\n return { valueMap: map, minVal: lo, maxVal: hi };\n }, [data]);\n\n const normalize = (v: number) =>\n maxVal === minVal ? 0.5 : (v - minVal) / (maxVal - minVal);\n\n const labelColWidth = 80;\n const svgWidth = labelColWidth + xLabels.length * cellSize;\n const svgHeight = 28 + yLabels.length * cellSize;\n\n if (loading) {\n return (\n <div\n ref={ref}\n className={cn(\"w-full flex items-center justify-center\", className)}\n style={{ height: height ?? svgHeight }}\n >\n <div\n className=\"animate-pulse\"\n style={{\n width: \"80%\",\n height: \"60%\",\n borderRadius: 6,\n background: \"hsl(var(--muted))\",\n }}\n />\n </div>\n );\n }\n\n return (\n <div\n ref={(node) => {\n (containerRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }}\n className={cn(\"w-full overflow-auto relative\", className)}\n style={{ height }}\n >\n <svg width={svgWidth} height={svgHeight}>\n {/* X-axis labels */}\n {xLabels.map((label, i) => (\n <text\n key={`x-${i}`}\n x={labelColWidth + i * cellSize + cellSize / 2}\n y={14}\n textAnchor=\"middle\"\n fontSize={9}\n fill=\"hsl(var(--muted-foreground))\"\n >\n {label}\n </text>\n ))}\n\n {/* Y-axis labels + cells */}\n {yLabels.map((yLabel, yi) => (\n <g key={`row-${yi}`}>\n <text\n x={labelColWidth - 8}\n y={28 + yi * cellSize + cellSize / 2}\n textAnchor=\"end\"\n dominantBaseline=\"central\"\n fontSize={9}\n fill=\"hsl(var(--muted-foreground))\"\n >\n {yLabel}\n </text>\n {xLabels.map((xLabel, xi) => {\n const key = `${xLabel}|${yLabel}`;\n const val = valueMap.get(key);\n const t = val != null ? normalize(val) : 0;\n const cx = labelColWidth + xi * cellSize;\n const cy = 28 + yi * cellSize;\n const cellData: HeatmapCell = { x: xLabel, y: yLabel, value: val ?? 0 };\n\n return (\n <g\n key={key}\n onMouseEnter={(e) => {\n setHoveredCell(cellData);\n const rect = containerRef.current?.getBoundingClientRect();\n setTooltipPos({\n x: e.clientX - (rect?.left ?? 0) + (containerRef.current?.scrollLeft ?? 0),\n y: e.clientY - (rect?.top ?? 0) + (containerRef.current?.scrollTop ?? 0),\n });\n }}\n onMouseLeave={() => setHoveredCell(null)}\n onClick={() => onCellClick?.(cellData)}\n style={{ cursor: onCellClick ? \"pointer\" : \"default\" }}\n >\n <rect\n x={cx + 1}\n y={cy + 1}\n width={cellSize - 2}\n height={cellSize - 2}\n rx={3}\n fill={\n val != null\n ? interpolateColor(t, colorScale)\n : \"hsl(var(--muted))\"\n }\n fillOpacity={val != null ? 0.85 : 0.3}\n stroke={\n hoveredCell?.x === xLabel && hoveredCell?.y === yLabel\n ? \"hsl(var(--foreground))\"\n : \"none\"\n }\n strokeWidth={1.5}\n />\n {showValues && val != null && cellSize >= 32 && (\n <text\n x={cx + cellSize / 2}\n y={cy + cellSize / 2}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n fontSize={Math.min(10, cellSize / 4.5)}\n fill=\"hsl(var(--foreground))\"\n fontWeight={500}\n style={{ pointerEvents: \"none\" }}\n >\n {valueFormatter ? valueFormatter(val) : val.toLocaleString()}\n </text>\n )}\n </g>\n );\n })}\n </g>\n ))}\n </svg>\n\n {/* Tooltip */}\n {hoveredCell && (\n <div\n style={{\n position: \"absolute\",\n left: tooltipPos.x + 12,\n top: tooltipPos.y - 10,\n background: \"hsl(var(--card))\",\n border: \"1px solid hsl(var(--border))\",\n borderRadius: 6,\n padding: \"6px 10px\",\n fontSize: 11,\n lineHeight: 1.5,\n boxShadow: \"0 2px 8px rgba(0,0,0,0.15)\",\n pointerEvents: \"none\",\n zIndex: 50,\n maxWidth: 200,\n }}\n >\n <div style={{ color: \"hsl(var(--muted-foreground))\" }}>\n {String(hoveredCell.x)} / {String(hoveredCell.y)}\n </div>\n <div\n style={{\n fontWeight: 600,\n color: \"hsl(var(--foreground))\",\n fontVariantNumeric: \"tabular-nums\",\n }}\n >\n {valueFormatter\n ? valueFormatter(hoveredCell.value)\n : hoveredCell.value.toLocaleString()}\n </div>\n </div>\n )}\n </div>\n );\n },\n);\n\nHeatmapChart.displayName = \"HeatmapChart\";\nexport { HeatmapChart };\n","import * as React from \"react\";\nimport {\n LineChart,\n Line,\n AreaChart,\n Area,\n BarChart,\n Bar,\n ResponsiveContainer,\n} from \"recharts\";\nimport { getChartColor } from \"../shared/colors\";\n\nexport type SparklineVariant = \"line\" | \"area\" | \"bar\";\n\nexport interface SparklineProps {\n data: number[];\n variant?: SparklineVariant;\n color?: string;\n width?: number | string;\n height?: number;\n strokeWidth?: number;\n className?: string;\n}\n\nconst Sparkline = React.memo(function Sparkline({\n data,\n variant = \"line\",\n color,\n width = \"100%\",\n height = 24,\n strokeWidth = 1.5,\n className,\n}: SparklineProps) {\n const chartColor = color ?? getChartColor(0);\n\n const points = React.useMemo(\n () => data.map((v, i) => ({ i, v })),\n [data],\n );\n\n if (!points.length) return null;\n\n return (\n <div className={className} style={{ width, height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n {variant === \"bar\" ? (\n <BarChart data={points} margin={{ top: 0, right: 0, left: 0, bottom: 0 }}>\n <Bar dataKey=\"v\" fill={chartColor} fillOpacity={0.7} isAnimationActive={false} />\n </BarChart>\n ) : variant === \"area\" ? (\n <AreaChart data={points} margin={{ top: 0, right: 0, left: 0, bottom: 0 }}>\n <defs>\n <linearGradient id=\"sparkArea\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"5%\" stopColor={chartColor} stopOpacity={0.3} />\n <stop offset=\"95%\" stopColor={chartColor} stopOpacity={0.05} />\n </linearGradient>\n </defs>\n <Area\n type=\"monotone\"\n dataKey=\"v\"\n stroke={chartColor}\n strokeWidth={strokeWidth}\n fill=\"url(#sparkArea)\"\n isAnimationActive={false}\n dot={false}\n />\n </AreaChart>\n ) : (\n <LineChart data={points} margin={{ top: 0, right: 0, left: 0, bottom: 0 }}>\n <Line\n type=\"monotone\"\n dataKey=\"v\"\n stroke={chartColor}\n strokeWidth={strokeWidth}\n dot={false}\n isAnimationActive={false}\n />\n </LineChart>\n )}\n </ResponsiveContainer>\n </div>\n );\n});\n\nSparkline.displayName = \"Sparkline\";\nexport { Sparkline };\n","import * as React from \"react\";\nimport { cn } from \"@optilogic/core\";\nimport { Sparkline, type SparklineVariant } from \"./sparkline\";\n\nexport interface KPICardProps {\n label: string;\n value: string | number;\n /** Previous period value for comparison */\n previousValue?: number;\n /** Change descriptor (e.g. \"vs last month\") */\n changeLabel?: string;\n sparklineData?: number[];\n sparklineVariant?: SparklineVariant;\n sparklineColor?: string;\n icon?: React.ReactNode;\n className?: string;\n}\n\nconst KPICard = React.memo(function KPICard({\n label,\n value,\n previousValue,\n changeLabel,\n sparklineData,\n sparklineVariant = \"area\",\n sparklineColor,\n icon,\n className,\n}: KPICardProps) {\n const currentNum = typeof value === \"number\" ? value : parseFloat(String(value));\n const hasDelta =\n previousValue != null && !isNaN(currentNum) && previousValue !== 0;\n const delta = hasDelta ? ((currentNum - previousValue!) / previousValue!) * 100 : null;\n\n return (\n <div\n className={cn(\n \"rounded-lg border p-4 flex flex-col gap-2\",\n className,\n )}\n style={{\n background: \"hsl(var(--card))\",\n borderColor: \"hsl(var(--border))\",\n }}\n >\n <div className=\"flex items-center justify-between\">\n <span\n style={{\n fontSize: 12,\n color: \"hsl(var(--muted-foreground))\",\n fontWeight: 500,\n }}\n >\n {label}\n </span>\n {icon && (\n <span style={{ color: \"hsl(var(--muted-foreground))\" }}>{icon}</span>\n )}\n </div>\n <div className=\"flex items-end justify-between gap-3\">\n <div className=\"flex flex-col gap-1\">\n <span\n style={{\n fontSize: 22,\n fontWeight: 700,\n color: \"hsl(var(--foreground))\",\n lineHeight: 1,\n fontVariantNumeric: \"tabular-nums\",\n }}\n >\n {value}\n </span>\n {delta != null && (\n <span\n style={{\n fontSize: 11,\n fontWeight: 500,\n color:\n delta > 0\n ? \"hsl(var(--success))\"\n : delta < 0\n ? \"hsl(var(--destructive))\"\n : \"hsl(var(--muted-foreground))\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 2,\n }}\n >\n {delta >= 0 ? \"▲\" : \"▼\"} {delta >= 0 ? \"+\" : \"\"}\n {delta.toFixed(1)}%\n {changeLabel && (\n <span style={{ color: \"hsl(var(--muted-foreground))\", marginLeft: 4 }}>\n {changeLabel}\n </span>\n )}\n </span>\n )}\n </div>\n {sparklineData && sparklineData.length > 1 && (\n <Sparkline\n data={sparklineData}\n variant={sparklineVariant}\n color={\n sparklineColor ??\n (delta != null\n ? delta >= 0\n ? \"hsl(var(--success))\"\n : \"hsl(var(--destructive))\"\n : undefined)\n }\n width={80}\n height={32}\n />\n )}\n </div>\n </div>\n );\n});\n\nKPICard.displayName = \"KPICard\";\nexport { KPICard };\n","import * as React from \"react\";\nimport { cn } from \"@optilogic/core\";\nimport { LineChart } from \"../cartesian/line-chart\";\nimport { BarChart } from \"../cartesian/bar-chart\";\nimport { RadarChart } from \"../radial/radar-chart\";\nimport type { ChartTooltipProp } from \"../shared/types\";\n\nexport interface ScenarioData {\n name: string;\n color?: string;\n data: Record<string, unknown>[];\n}\n\nexport type ScenarioComparisonMode =\n | \"side-by-side\"\n | \"overlay\"\n | \"delta\"\n | \"scorecard\";\n\nexport interface ScenarioComparisonProps {\n scenarios: ScenarioData[];\n /** Data keys to compare */\n metrics: string[];\n /** Category axis key */\n categoryKey: string;\n mode?: ScenarioComparisonMode;\n /** Index of the baseline scenario for delta calculations */\n baselineIndex?: number;\n tooltip?: ChartTooltipProp;\n className?: string;\n height?: number | string;\n}\n\nfunction buildOverlayData(\n scenarios: ScenarioData[],\n categoryKey: string,\n metrics: string[],\n): { data: Record<string, unknown>[]; series: { dataKey: string; name: string; color?: string; strokeDasharray?: string }[] } {\n const merged = new Map<string, Record<string, unknown>>();\n for (const scenario of scenarios) {\n for (const row of scenario.data) {\n const key = String(row[categoryKey]);\n if (!merged.has(key)) merged.set(key, { [categoryKey]: row[categoryKey] });\n const target = merged.get(key)!;\n for (const m of metrics) {\n target[`${scenario.name}_${m}`] = row[m];\n }\n }\n }\n const data = Array.from(merged.values());\n const series = scenarios.flatMap((s, si) =>\n metrics.map((m) => ({\n dataKey: `${s.name}_${m}`,\n name: `${s.name} – ${m}`,\n color: s.color,\n strokeDasharray: si > 0 ? \"5 3\" : undefined,\n })),\n );\n return { data, series };\n}\n\nfunction buildDeltaData(\n scenarios: ScenarioData[],\n baselineIndex: number,\n categoryKey: string,\n metrics: string[],\n): { data: Record<string, unknown>[]; series: { dataKey: string; name: string }[] } {\n const baseline = scenarios[baselineIndex];\n if (!baseline) return { data: [], series: [] };\n\n const baseMap = new Map<string, Record<string, unknown>>();\n for (const row of baseline.data) {\n baseMap.set(String(row[categoryKey]), row);\n }\n\n const comparisons = scenarios.filter((_, i) => i !== baselineIndex);\n const merged = new Map<string, Record<string, unknown>>();\n\n for (const scenario of comparisons) {\n for (const row of scenario.data) {\n const key = String(row[categoryKey]);\n if (!merged.has(key)) merged.set(key, { [categoryKey]: row[categoryKey] });\n const target = merged.get(key)!;\n const baseRow = baseMap.get(key);\n for (const m of metrics) {\n const base = Number(baseRow?.[m] ?? 0);\n const val = Number(row[m] ?? 0);\n target[`${scenario.name}_${m}`] = val - base;\n }\n }\n }\n\n const data = Array.from(merged.values());\n const series = comparisons.flatMap((s) =>\n metrics.map((m) => ({\n dataKey: `${s.name}_${m}`,\n name: `${s.name} Δ ${m}`,\n })),\n );\n return { data, series };\n}\n\nfunction buildScorecardData(\n scenarios: ScenarioData[],\n metrics: string[],\n): { data: Record<string, unknown>[]; series: { dataKey: string; name: string; color?: string; strokeDasharray?: string }[] } {\n const data: Record<string, unknown>[] = metrics.map((m) => {\n const row: Record<string, unknown> = { metric: m };\n for (const s of scenarios) {\n const values = s.data.map((d) => Number(d[m] ?? 0));\n const avg = values.length ? values.reduce((a, b) => a + b, 0) / values.length : 0;\n row[s.name] = Math.round(avg * 10) / 10;\n }\n return row;\n });\n const series = scenarios.map((s, i) => ({\n dataKey: s.name,\n name: s.name,\n color: s.color,\n strokeDasharray: i > 0 ? \"5 3\" : undefined,\n }));\n return { data, series };\n}\n\nconst ScenarioComparison = React.memo(function ScenarioComparison({\n scenarios,\n metrics,\n categoryKey,\n mode = \"overlay\",\n baselineIndex = 0,\n tooltip = true,\n className,\n height = 350,\n}: ScenarioComparisonProps) {\n if (!scenarios.length || !metrics.length) return null;\n\n if (mode === \"side-by-side\") {\n return (\n <div\n className={cn(\"grid gap-4\", className)}\n style={{\n gridTemplateColumns: `repeat(${scenarios.length}, 1fr)`,\n }}\n >\n {scenarios.map((scenario) => (\n <div key={scenario.name} style={{ height }}>\n <div\n style={{\n fontSize: 12,\n fontWeight: 600,\n color: \"hsl(var(--foreground))\",\n marginBottom: 6,\n }}\n >\n {scenario.name}\n </div>\n <LineChart\n data={scenario.data}\n series={metrics.map((m) => ({\n dataKey: m,\n name: m,\n color: scenario.color,\n }))}\n xAxis={{ dataKey: categoryKey }}\n tooltip={tooltip}\n legend={metrics.length > 1}\n height=\"calc(100% - 24px)\"\n />\n </div>\n ))}\n </div>\n );\n }\n\n if (mode === \"overlay\") {\n const { data, series } = buildOverlayData(scenarios, categoryKey, metrics);\n return (\n <div className={className} style={{ height }}>\n <LineChart\n data={data}\n series={series}\n xAxis={{ dataKey: categoryKey }}\n tooltip={tooltip}\n legend\n height=\"100%\"\n />\n </div>\n );\n }\n\n if (mode === \"delta\") {\n const { data, series } = buildDeltaData(\n scenarios,\n baselineIndex,\n categoryKey,\n metrics,\n );\n return (\n <div className={className} style={{ height }}>\n <BarChart\n data={data}\n series={series.map((s) => ({ ...s }))}\n xAxis={{ dataKey: categoryKey }}\n tooltip={tooltip}\n legend\n height=\"100%\"\n />\n </div>\n );\n }\n\n if (mode === \"scorecard\") {\n const { data, series } = buildScorecardData(scenarios, metrics);\n return (\n <div className={className} style={{ height }}>\n <RadarChart\n data={data}\n series={series.map((s) => ({\n ...s,\n fillOpacity: 0.1,\n }))}\n categoryKey=\"metric\"\n tooltip={tooltip}\n legend\n height=\"100%\"\n />\n </div>\n );\n }\n\n return null;\n});\n\nScenarioComparison.displayName = \"ScenarioComparison\";\nexport { ScenarioComparison };\n","import * as React from \"react\";\nimport { LineChart } from \"../cartesian/line-chart\";\nimport { BarChart } from \"../cartesian/bar-chart\";\nimport { AreaChart } from \"../cartesian/area-chart\";\nimport { ScatterChart } from \"../cartesian/scatter-chart\";\nimport { ComposedChart } from \"../cartesian/composed-chart\";\nimport { WaterfallChart, type WaterfallItem } from \"../cartesian/waterfall-chart\";\nimport { PieChart } from \"../radial/pie-chart\";\nimport { DonutChart } from \"../radial/donut-chart\";\nimport { RadarChart } from \"../radial/radar-chart\";\nimport { RadialBarChart } from \"../radial/radial-bar-chart\";\nimport { FunnelChart } from \"../specialized/funnel-chart\";\nimport { TreemapChart } from \"../specialized/treemap-chart\";\nimport { HeatmapChart } from \"../specialized/heatmap-chart\";\nimport type { ChartLegend, ChartTooltipProp } from \"../shared/types\";\n\nexport interface ChartConfigSeries {\n dataKey: string;\n name: string;\n color?: string;\n /** Only used for composed chart */\n composedType?: \"line\" | \"bar\" | \"area\";\n}\n\nexport interface ChartConfig {\n type:\n | \"line\"\n | \"bar\"\n | \"area\"\n | \"pie\"\n | \"donut\"\n | \"scatter\"\n | \"radar\"\n | \"composed\"\n | \"waterfall\"\n | \"funnel\"\n | \"treemap\"\n | \"radialBar\"\n | \"heatmap\";\n categoryKey: string;\n series: ChartConfigSeries[];\n legend?: string;\n grid?: boolean;\n animate?: boolean;\n tooltip?: ChartTooltipProp;\n}\n\nexport interface ChartRendererProps {\n config: ChartConfig;\n data: Record<string, unknown>[];\n height?: number | string;\n className?: string;\n}\n\nfunction resolveLegendFromString(\n val: string | undefined,\n): boolean | ChartLegend {\n if (!val || val === \"none\") return false;\n const parts = val.split(\"-\");\n return {\n position: (parts[0] as \"top\" | \"bottom\") ?? \"top\",\n align: (parts[1] as \"left\" | \"center\" | \"right\") ?? \"right\",\n };\n}\n\nconst ChartRenderer = React.memo(function ChartRenderer({\n config,\n data,\n height = \"100%\",\n className,\n}: ChartRendererProps) {\n if (!data?.length || !config.series.length) {\n return (\n <div\n className={className}\n style={{\n height,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: \"hsl(var(--muted-foreground))\",\n fontSize: 12,\n }}\n >\n Configure a chart to preview\n </div>\n );\n }\n\n const legend = resolveLegendFromString(config.legend);\n const common = {\n className,\n height,\n grid: config.grid ?? true,\n animate: config.animate ?? true,\n tooltip: config.tooltip ?? true,\n legend,\n };\n const xAxis = { dataKey: config.categoryKey };\n const series = config.series;\n\n switch (config.type) {\n case \"line\":\n return <LineChart data={data} series={series} xAxis={xAxis} {...common} />;\n case \"bar\":\n return <BarChart data={data} series={series} xAxis={xAxis} {...common} />;\n case \"area\":\n return <AreaChart data={data} series={series} xAxis={xAxis} {...common} />;\n case \"pie\":\n return (\n <PieChart\n data={data.map((d) => ({\n name: String(d[config.categoryKey]),\n value: Number(d[series[0].dataKey] ?? 0),\n }))}\n label\n {...common}\n />\n );\n case \"donut\":\n return (\n <DonutChart\n data={data.map((d) => ({\n name: String(d[config.categoryKey]),\n value: Number(d[series[0].dataKey] ?? 0),\n }))}\n {...common}\n />\n );\n case \"scatter\":\n return (\n <ScatterChart\n series={[\n {\n name: series[0]?.name ?? \"Data\",\n data: data as Record<string, unknown>[],\n },\n ]}\n xAxis={{ ...xAxis, name: config.categoryKey }}\n {...common}\n />\n );\n case \"radar\":\n return (\n <RadarChart\n data={data}\n series={series}\n categoryKey={config.categoryKey}\n {...common}\n />\n );\n case \"composed\":\n return (\n <ComposedChart\n data={data}\n series={series.map((s) => ({\n type: s.composedType ?? \"bar\",\n dataKey: s.dataKey,\n name: s.name,\n color: s.color,\n }))}\n xAxis={xAxis}\n {...common}\n />\n );\n case \"waterfall\":\n return (\n <WaterfallChart\n data={data.map((d) => ({\n name: String(d[config.categoryKey]),\n value: Number(d[series[0]?.dataKey] ?? 0),\n }))}\n {...common}\n />\n );\n case \"funnel\":\n return (\n <FunnelChart\n data={data.map((d) => ({\n name: String(d[config.categoryKey]),\n value: Number(d[series[0]?.dataKey] ?? 0),\n }))}\n {...common}\n />\n );\n case \"treemap\":\n return (\n <TreemapChart\n data={data.map((d) => ({\n name: String(d[config.categoryKey]),\n value: Number(d[series[0]?.dataKey] ?? 0),\n }))}\n {...common}\n />\n );\n case \"radialBar\":\n return (\n <RadialBarChart\n data={data.map((d) => ({\n name: String(d[config.categoryKey]),\n value: Number(d[series[0]?.dataKey] ?? 0),\n }))}\n {...common}\n />\n );\n case \"heatmap\": {\n if (series.length < 2) {\n return (\n <div\n style={{\n height,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: \"hsl(var(--muted-foreground))\",\n fontSize: 12,\n }}\n >\n Heatmap requires at least 2 series (x, value)\n </div>\n );\n }\n const xLabels = Array.from(\n new Set(data.map((d) => String(d[config.categoryKey]))),\n );\n const yLabels = Array.from(\n new Set(data.map((d) => String(d[series[0].dataKey]))),\n );\n const cells = data.map((d) => ({\n x: String(d[config.categoryKey]),\n y: String(d[series[0].dataKey]),\n value: Number(d[series[1].dataKey] ?? 0),\n }));\n return (\n <HeatmapChart\n data={cells}\n xLabels={xLabels}\n yLabels={yLabels}\n height={height}\n className={className}\n />\n );\n }\n default:\n return null;\n }\n});\n\nChartRenderer.displayName = \"ChartRenderer\";\nexport { ChartRenderer };\n","import * as React from \"react\";\nimport { cn } from \"@optilogic/core\";\nimport { ChartRenderer, type ChartConfig } from \"./chart-renderer\";\n\nconst CHART_TYPE_OPTIONS = [\n { value: \"line\", label: \"Line\" },\n { value: \"bar\", label: \"Bar\" },\n { value: \"area\", label: \"Area\" },\n { value: \"pie\", label: \"Pie\" },\n { value: \"donut\", label: \"Donut\" },\n { value: \"scatter\", label: \"Scatter\" },\n { value: \"radar\", label: \"Radar\" },\n { value: \"composed\", label: \"Composed\" },\n { value: \"waterfall\", label: \"Waterfall\" },\n { value: \"funnel\", label: \"Funnel\" },\n { value: \"treemap\", label: \"Treemap\" },\n { value: \"radialBar\", label: \"Radial Bar\" },\n { value: \"heatmap\", label: \"Heatmap\" },\n] as const;\n\nconst LEGEND_POSITIONS = [\n { value: \"none\", label: \"None\" },\n { value: \"top-left\", label: \"Top Left\" },\n { value: \"top-center\", label: \"Top Center\" },\n { value: \"top-right\", label: \"Top Right\" },\n { value: \"bottom-center\", label: \"Bottom Center\" },\n] as const;\n\nexport interface ChartBuilderProps {\n /** Available data columns the user can map to chart dimensions */\n columns: string[];\n /** The raw data rows */\n data: Record<string, unknown>[];\n /** Called when the config changes */\n onChange?: (config: ChartConfig) => void;\n /** Called when user explicitly saves */\n onSave?: (config: ChartConfig) => void;\n /** Initial config to start editing */\n initialConfig?: Partial<ChartConfig>;\n className?: string;\n}\n\nfunction useControlledConfig(\n initial: Partial<ChartConfig> | undefined,\n columns: string[],\n): [ChartConfig, React.Dispatch<React.SetStateAction<ChartConfig>>] {\n const defaultConfig: ChartConfig = {\n type: \"bar\",\n categoryKey: columns[0] ?? \"\",\n series: columns.length > 1 ? [{ dataKey: columns[1], name: columns[1] }] : [],\n legend: \"none\",\n grid: true,\n animate: true,\n };\n return React.useState<ChartConfig>({ ...defaultConfig, ...initial });\n}\n\nconst selectStyle: React.CSSProperties = {\n width: \"100%\",\n padding: \"5px 8px\",\n fontSize: 12,\n borderRadius: 4,\n border: \"1px solid hsl(var(--border))\",\n background: \"hsl(var(--card))\",\n color: \"hsl(var(--foreground))\",\n};\n\nconst labelStyle: React.CSSProperties = {\n fontSize: 11,\n fontWeight: 500,\n color: \"hsl(var(--muted-foreground))\",\n marginBottom: 3,\n display: \"block\",\n};\n\nconst ChartBuilder = React.memo(function ChartBuilder({\n columns,\n data,\n onChange,\n onSave,\n initialConfig,\n className,\n}: ChartBuilderProps) {\n const [config, setConfig] = useControlledConfig(initialConfig, columns);\n\n React.useEffect(() => {\n onChange?.(config);\n }, [config, onChange]);\n\n const addSeries = () => {\n const unused = columns.find(\n (c) =>\n c !== config.categoryKey &&\n !config.series.some((s) => s.dataKey === c),\n );\n if (!unused) return;\n setConfig((prev) => ({\n ...prev,\n series: [...prev.series, { dataKey: unused, name: unused }],\n }));\n };\n\n const removeSeries = (index: number) => {\n setConfig((prev) => ({\n ...prev,\n series: prev.series.filter((_, i) => i !== index),\n }));\n };\n\n const updateSeries = (index: number, field: string, value: string) => {\n setConfig((prev) => ({\n ...prev,\n series: prev.series.map((s, i) =>\n i === index ? { ...s, [field]: value } : s,\n ),\n }));\n };\n\n return (\n <div\n className={cn(\"flex gap-4\", className)}\n style={{ minHeight: 400 }}\n >\n {/* Config panel */}\n <div\n className=\"flex flex-col gap-3 shrink-0 overflow-y-auto\"\n style={{\n width: 240,\n padding: 12,\n background: \"hsl(var(--card))\",\n border: \"1px solid hsl(var(--border))\",\n borderRadius: 8,\n }}\n >\n <div style={{ fontSize: 13, fontWeight: 600, color: \"hsl(var(--foreground))\" }}>\n Chart Builder\n </div>\n\n {/* Chart type */}\n <div>\n <label style={labelStyle}>Chart Type</label>\n <select\n style={selectStyle}\n value={config.type}\n onChange={(e) =>\n setConfig((prev) => ({ ...prev, type: e.target.value as ChartConfig[\"type\"] }))\n }\n >\n {CHART_TYPE_OPTIONS.map((opt) => (\n <option key={opt.value} value={opt.value}>{opt.label}</option>\n ))}\n </select>\n </div>\n\n {/* Category axis */}\n <div>\n <label style={labelStyle}>Category Axis</label>\n <select\n style={selectStyle}\n value={config.categoryKey}\n onChange={(e) =>\n setConfig((prev) => ({ ...prev, categoryKey: e.target.value }))\n }\n >\n {columns.map((c) => (\n <option key={c} value={c}>{c}</option>\n ))}\n </select>\n </div>\n\n {/* Series */}\n <div>\n <label style={labelStyle}>Series</label>\n {config.series.map((s, i) => (\n <div\n key={i}\n className=\"flex gap-1 items-center\"\n style={{ marginBottom: 4 }}\n >\n <select\n style={{ ...selectStyle, flex: 1 }}\n value={s.dataKey}\n onChange={(e) => updateSeries(i, \"dataKey\", e.target.value)}\n >\n {columns\n .filter((c) => c !== config.categoryKey)\n .map((c) => (\n <option key={c} value={c}>{c}</option>\n ))}\n </select>\n <button\n onClick={() => removeSeries(i)}\n style={{\n padding: \"2px 6px\",\n fontSize: 14,\n lineHeight: 1,\n border: \"1px solid hsl(var(--border))\",\n borderRadius: 4,\n background: \"hsl(var(--card))\",\n color: \"hsl(var(--muted-foreground))\",\n cursor: \"pointer\",\n }}\n >\n ×\n </button>\n </div>\n ))}\n <button\n onClick={addSeries}\n style={{\n width: \"100%\",\n padding: \"4px 8px\",\n fontSize: 11,\n border: \"1px dashed hsl(var(--border))\",\n borderRadius: 4,\n background: \"transparent\",\n color: \"hsl(var(--muted-foreground))\",\n cursor: \"pointer\",\n marginTop: 2,\n }}\n >\n + Add Series\n </button>\n </div>\n\n {/* Legend */}\n <div>\n <label style={labelStyle}>Legend</label>\n <select\n style={selectStyle}\n value={config.legend}\n onChange={(e) =>\n setConfig((prev) => ({ ...prev, legend: e.target.value }))\n }\n >\n {LEGEND_POSITIONS.map((opt) => (\n <option key={opt.value} value={opt.value}>{opt.label}</option>\n ))}\n </select>\n </div>\n\n {/* Grid toggle */}\n <div className=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n id=\"grid-toggle\"\n checked={config.grid}\n onChange={(e) =>\n setConfig((prev) => ({ ...prev, grid: e.target.checked }))\n }\n />\n <label htmlFor=\"grid-toggle\" style={{ ...labelStyle, margin: 0 }}>\n Show Grid\n </label>\n </div>\n\n {/* Animate toggle */}\n <div className=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n id=\"animate-toggle\"\n checked={config.animate}\n onChange={(e) =>\n setConfig((prev) => ({ ...prev, animate: e.target.checked }))\n }\n />\n <label htmlFor=\"animate-toggle\" style={{ ...labelStyle, margin: 0 }}>\n Animate\n </label>\n </div>\n\n {onSave && (\n <button\n onClick={() => onSave(config)}\n style={{\n marginTop: 8,\n padding: \"6px 12px\",\n fontSize: 12,\n fontWeight: 600,\n borderRadius: 6,\n border: \"none\",\n background: \"hsl(var(--primary))\",\n color: \"hsl(var(--primary-foreground))\",\n cursor: \"pointer\",\n }}\n >\n Save Chart\n </button>\n )}\n </div>\n\n {/* Preview */}\n <div\n className=\"flex-1\"\n style={{\n border: \"1px solid hsl(var(--border))\",\n borderRadius: 8,\n padding: 12,\n background: \"hsl(var(--background))\",\n minHeight: 300,\n }}\n >\n <ChartRenderer config={config} data={data} height=\"100%\" />\n </div>\n </div>\n );\n});\n\nChartBuilder.displayName = \"ChartBuilder\";\nexport { ChartBuilder };\n"]}