react-premium-charts 0.1.6
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.
- package/LICENSE +1 -0
- package/README.md +117 -0
- package/dist/index.cjs +2087 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +478 -0
- package/dist/index.d.ts +478 -0
- package/dist/index.js +2053 -0
- package/dist/index.js.map +1 -0
- package/dist/styles.css +222 -0
- package/package.json +71 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/theme/ThemeProvider.tsx","../src/primitives/Chart.tsx","../src/primitives/Axis.tsx","../src/primitives/Grid.tsx","../src/primitives/ThresholdLine.tsx","../src/primitives/LinearGradient.tsx","../src/primitives/RadialGradient.tsx","../src/primitives/ChartTitle.tsx","../src/primitives/Legend.tsx","../src/primitives/Tooltip.tsx","../src/series/LineSeries.tsx","../src/series/AreaSeries.tsx","../src/series/BarSeries.tsx","../src/series/HorizontalBarSeries.tsx","../src/series/GroupedBarSeries.tsx","../src/series/StackedBarSeries.tsx","../src/series/PieSeries.tsx","../src/series/PolarAreaSeries.tsx","../src/components/PieChart.tsx","../src/components/ComboChart.tsx","../src/components/RadarChart.tsx","../src/components/PolarAreaChart.tsx","../src/components/MultiaxisLineChart.tsx","../src/series/ScatterSeries.tsx","../src/series/BubbleSeries.tsx","../src/series/HeatmapSeries.tsx","../src/hooks/useNearestPoint.ts"],"names":["createContext","useMemo","jsx","useContext","useRef","useState","useCallback","jsxs","useEffect","createPortal","d3line","curveMonotoneX","curveLinear","pathD","points","Fragment","d3area","HOVER_LEAVE_DELAY","cx","cy","d3pie","arcGen","d3arc","arcs","DEFAULT_COLORS","scaleBand","scaleLinear","bisector"],"mappings":"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","file":"index.cjs","sourcesContent":["import React, { createContext, useContext, useMemo } from \"react\";\n\nexport type ThemeMode = \"light\" | \"dark\";\n\n/** Predefined color palettes for chart series (--msc-s1 through --msc-s5) */\nexport type ChartPalette = \"default\" | \"sage\" | \"periwinkle\" | \"indigo\" | \"ocean\" | \"forest\";\n\nconst Ctx = createContext<{ mode: ThemeMode; palette: ChartPalette; isGradientEnabled: boolean }>({\n mode: \"light\",\n palette: \"default\",\n isGradientEnabled: true\n});\n\nexport function ThemeProvider({\n mode = \"light\",\n palette = \"default\",\n isGradientEnabled = true,\n children\n}: {\n mode?: ThemeMode;\n palette?: ChartPalette;\n isGradientEnabled?: boolean;\n children: React.ReactNode;\n}) {\n const value = useMemo(() => ({ mode, palette, isGradientEnabled }), [mode, palette, isGradientEnabled]);\n return (\n <Ctx.Provider value={value}>\n <div className=\"msc-root\" data-msc-theme={mode} data-msc-palette={palette}>\n {children}\n </div>\n </Ctx.Provider>\n );\n}\n\nexport function useTheme() {\n return useContext(Ctx);\n}\n","import React, { createContext, useContext, useMemo, useRef, useState, useCallback } from \"react\";\n\nexport type ChartMargin = { top: number; right: number; bottom: number; left: number };\nexport type ChartSize = { width: number; height: number };\n\ntype ChartContextValue = {\n size: ChartSize;\n margin: ChartMargin;\n innerWidth: number;\n innerHeight: number;\n svgRef: React.RefObject<SVGSVGElement>;\n pointer: { x: number; y: number } | null;\n setPointer: (p: { x: number; y: number } | null) => void;\n registerClearTooltip: (fn: () => void) => () => void;\n clearAllTooltips: () => void;\n};\n\nconst ChartCtx = createContext<ChartContextValue | null>(null);\n\nexport function useChart() {\n const v = useContext(ChartCtx);\n if (!v) throw new Error(\"useChart must be used inside <Chart>\");\n return v;\n}\n\nexport function Chart({\n width,\n height,\n margin = { top: 16, right: 16, bottom: 28, left: 40 },\n defs,\n children,\n className,\n style\n}: {\n width: number;\n height: number;\n margin?: ChartMargin;\n defs?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}) {\n const svgRef = useRef<SVGSVGElement>(null);\n const [pointer, setPointer] = useState<{ x: number; y: number } | null>(null);\n const clearTooltipFns = useRef<Set<() => void>>(new Set());\n\n const registerClearTooltip = useCallback((fn: () => void) => {\n clearTooltipFns.current.add(fn);\n return () => {\n clearTooltipFns.current.delete(fn);\n };\n }, []);\n\n const handleChartLeave = useCallback(() => {\n setPointer(null);\n clearTooltipFns.current.forEach((fn) => fn());\n }, []);\n\n const clearAllTooltips = useCallback(() => {\n clearTooltipFns.current.forEach((fn) => fn());\n }, []);\n\n const innerWidth = Math.max(0, width - margin.left - margin.right);\n const innerHeight = Math.max(0, height - margin.top - margin.bottom);\n\n const value = useMemo<ChartContextValue>(\n () => ({\n size: { width, height },\n margin,\n innerWidth,\n innerHeight,\n svgRef,\n pointer,\n setPointer,\n registerClearTooltip,\n clearAllTooltips\n }),\n [width, height, margin, innerWidth, innerHeight, pointer, registerClearTooltip, clearAllTooltips]\n );\n\n return (\n <ChartCtx.Provider value={value}>\n <svg\n ref={svgRef}\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n overflow=\"visible\"\n className={className}\n style={{ background: \"var(--msc-panel)\", borderRadius: \"var(--msc-radius)\", ...style }}\n onMouseLeave={handleChartLeave}\n onMouseMove={(e) => {\n const svg = svgRef.current;\n if (!svg) return;\n const pt = svg.createSVGPoint();\n pt.x = e.clientX;\n pt.y = e.clientY;\n const screenCTM = svg.getScreenCTM();\n if (!screenCTM) return;\n const local = pt.matrixTransform(screenCTM.inverse());\n setPointer({ x: local.x, y: local.y });\n }}\n >\n <g transform={`translate(${margin.left},${margin.top})`}>{defs}{children}</g>\n </svg>\n </ChartCtx.Provider>\n );\n}\n","import React from \"react\";\nimport { useChart } from \"./Chart\";\n\ntype Tick = { value: string; x: number; y: number };\n\nexport function AxisBottom({\n ticks,\n y = undefined\n}: {\n ticks: Tick[];\n y?: number;\n}) {\n const { innerHeight } = useChart();\n const yy = y ?? innerHeight;\n\n return (\n <g>\n <line x1={0} x2={Math.max(...ticks.map(t => t.x), 0)} y1={yy} y2={yy} stroke=\"var(--msc-border)\" />\n {ticks.map((t) => (\n <g key={t.value} transform={`translate(${t.x},${yy})`}>\n <line y2={6} stroke=\"var(--msc-border)\" />\n <text\n y={18}\n textAnchor=\"middle\"\n fontSize={12}\n fill=\"var(--msc-muted)\"\n >\n {t.value}\n </text>\n </g>\n ))}\n </g>\n );\n}\n\nexport function AxisLeft({\n ticks\n}: {\n ticks: Tick[];\n}) {\n const x = 0;\n const maxY = Math.max(...ticks.map(t => t.y), 0);\n\n return (\n <g>\n <line x1={x} x2={x} y1={0} y2={maxY} stroke=\"var(--msc-border)\" />\n {ticks.map((t) => (\n <g key={t.value} transform={`translate(${x},${t.y})`}>\n <line x2={-6} stroke=\"var(--msc-border)\" />\n <text\n x={-10}\n dy=\"0.32em\"\n textAnchor=\"end\"\n fontSize={12}\n fill=\"var(--msc-muted)\"\n >\n {t.value}\n </text>\n </g>\n ))}\n </g>\n );\n}\n\nexport function AxisRight({\n ticks,\n x\n}: {\n ticks: Tick[];\n x: number;\n}) {\n const maxY = Math.max(...ticks.map(t => t.y), 0);\n\n return (\n <g>\n <line x1={x} x2={x} y1={0} y2={maxY} stroke=\"var(--msc-border)\" />\n {ticks.map((t) => (\n <g key={t.value} transform={`translate(${x},${t.y})`}>\n <line x2={6} stroke=\"var(--msc-border)\" />\n <text\n x={10}\n dy=\"0.32em\"\n textAnchor=\"start\"\n fontSize={12}\n fill=\"var(--msc-muted)\"\n >\n {t.value}\n </text>\n </g>\n ))}\n </g>\n );\n}\n","import React from \"react\";\nimport { useChart } from \"./Chart\";\n\nexport function Grid({\n xTicks,\n yTicks\n}: {\n xTicks: number[];\n yTicks: number[];\n}) {\n const { innerWidth, innerHeight } = useChart();\n\n return (\n <g aria-hidden=\"true\">\n {xTicks.map((x) => (\n <line\n key={`x-${x}`}\n x1={x}\n x2={x}\n y1={0}\n y2={innerHeight}\n stroke=\"var(--msc-grid)\"\n strokeDasharray=\"3 6\"\n />\n ))}\n {yTicks.map((y) => (\n <line\n key={`y-${y}`}\n x1={0}\n x2={innerWidth}\n y1={y}\n y2={y}\n stroke=\"var(--msc-grid)\"\n strokeDasharray=\"3 6\"\n />\n ))}\n </g>\n );\n}\n","import React from \"react\";\nimport { useChart } from \"./Chart\";\n\nexport function ThresholdLine({\n value,\n yScale,\n stroke = \"var(--msc-s4)\",\n strokeWidth = 1.5,\n strokeDasharray = \"6 4\",\n label\n}: {\n value: number;\n yScale: (v: number) => number;\n stroke?: string;\n strokeWidth?: number;\n strokeDasharray?: string;\n label?: string;\n}) {\n const { innerWidth } = useChart();\n const y = yScale(value);\n\n return (\n <g>\n <line\n x1={0}\n x2={innerWidth}\n y1={y}\n y2={y}\n stroke={stroke}\n strokeWidth={strokeWidth}\n strokeDasharray={strokeDasharray}\n />\n {label && (\n <text\n x={innerWidth - 4}\n y={y - 6}\n textAnchor=\"end\"\n fontSize={11}\n fill=\"var(--msc-muted)\"\n >\n {label}\n </text>\n )}\n </g>\n );\n}\n","import React from \"react\";\n\nexport function LinearGradient({\n id,\n x1 = \"0%\",\n y1 = \"0%\",\n x2 = \"0%\",\n y2 = \"100%\",\n stops\n}: {\n id: string;\n x1?: string | number;\n y1?: string | number;\n x2?: string | number;\n y2?: string | number;\n stops: Array<{ offset: string | number; color: string; opacity?: number }>;\n}) {\n return (\n <defs>\n <linearGradient id={id} x1={x1} y1={y1} x2={x2} y2={y2}>\n {stops.map((s, i) => (\n <stop\n key={i}\n offset={s.offset}\n stopColor={s.color}\n stopOpacity={s.opacity ?? 1}\n />\n ))}\n </linearGradient>\n </defs>\n );\n}\n","import React from \"react\";\n\nexport function RadialGradient({\n id,\n cx = \"50%\",\n cy = \"50%\",\n r = \"50%\",\n fx,\n fy,\n stops\n}: {\n id: string;\n cx?: string | number;\n cy?: string | number;\n r?: string | number;\n fx?: string | number;\n fy?: string | number;\n stops: Array<{ offset: string | number; color: string; opacity?: number }>;\n}) {\n return (\n <defs>\n <radialGradient id={id} cx={cx} cy={cy} r={r} fx={fx} fy={fy}>\n {stops.map((s, i) => (\n <stop\n key={i}\n offset={s.offset}\n stopColor={s.color}\n stopOpacity={s.opacity ?? 1}\n />\n ))}\n </radialGradient>\n </defs>\n );\n}\n","import React from \"react\";\n\nexport function ChartTitle({\n title,\n x = 0,\n y = -8\n}: {\n title: string;\n x?: number;\n y?: number;\n}) {\n return (\n <text\n x={x}\n y={y}\n fontSize={14}\n fontWeight={600}\n fill=\"var(--msc-muted)\"\n >\n {title}\n </text>\n );\n}\n","import React from \"react\";\n\nexport type LegendItem = {\n label: string;\n value?: string;\n color: string;\n};\n\nexport function Legend({\n items,\n direction = \"row\"\n}: {\n items: LegendItem[];\n direction?: \"row\" | \"column\";\n}) {\n return (\n <div\n className=\"msc-legend\"\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: 12,\n flexDirection: direction,\n alignItems: \"center\",\n justifyContent: \"center\",\n marginTop: 12\n }}\n >\n {items.map((item, i) => (\n <div\n key={`${item.label}-${i}`}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n fontSize: 12,\n color: \"var(--msc-muted)\"\n }}\n >\n <span\n className=\"msc-dot\"\n style={{\n background: item.color,\n width: 8,\n height: 8,\n marginRight: 0\n }}\n />\n <span>\n {item.label}\n {item.value != null && `: ${item.value}`}\n </span>\n </div>\n ))}\n </div>\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nconst TOOLTIP_WIDTH = 200;\nconst TOOLTIP_HEIGHT = 120;\nconst OFFSET = 12;\nconst PADDING = 8;\nconst TOOLTIP_Z_INDEX = 10000;\n\n/**\n * Computes tooltip position to stay within container bounds.\n * Prefers top-right of anchor; flips horizontally/vertically as needed.\n */\nexport function computeTooltipPosition(\n anchorX: number,\n anchorY: number,\n containerWidth: number,\n containerHeight: number,\n tooltipWidth = TOOLTIP_WIDTH,\n tooltipHeight = TOOLTIP_HEIGHT\n): { x: number; y: number } {\n let x = anchorX + OFFSET;\n let y = anchorY - tooltipHeight - OFFSET;\n\n if (x + tooltipWidth > containerWidth - PADDING) {\n x = anchorX - tooltipWidth - OFFSET;\n }\n if (x < PADDING) {\n x = PADDING;\n }\n if (y < PADDING) {\n y = anchorY + OFFSET;\n }\n if (y + tooltipHeight > containerHeight - PADDING) {\n y = containerHeight - tooltipHeight - PADDING;\n }\n\n return { x: Math.max(PADDING, x), y: Math.max(PADDING, y) };\n}\n\nfunction useScreenPosition(\n innerX: number,\n innerY: number,\n svgRef: React.RefObject<SVGSVGElement | null> | undefined,\n margin: { left: number; top: number } | undefined\n): { x: number; y: number } | null {\n const [pos, setPos] = useState<{ x: number; y: number } | null>(null);\n\n useEffect(() => {\n const svg = svgRef?.current;\n if (!svg || !margin) return;\n const pt = svg.createSVGPoint();\n pt.x = innerX + margin.left;\n pt.y = innerY + margin.top;\n const ctm = svg.getScreenCTM();\n if (!ctm) return;\n const screen = pt.matrixTransform(ctm);\n setPos({ x: screen.x, y: screen.y });\n }, [innerX, innerY, svgRef, margin]);\n\n return pos;\n}\n\nexport function TooltipPortal({\n x,\n y,\n anchorX,\n anchorY,\n containerWidth,\n containerHeight,\n svgRef,\n margin,\n children\n}: {\n x?: number;\n y?: number;\n anchorX?: number;\n anchorY?: number;\n containerWidth?: number;\n containerHeight?: number;\n svgRef?: React.RefObject<SVGSVGElement | null>;\n margin?: { left: number; top: number };\n children: React.ReactNode;\n}) {\n const innerPosition =\n anchorX != null &&\n anchorY != null &&\n containerWidth != null &&\n containerHeight != null\n ? computeTooltipPosition(anchorX, anchorY, containerWidth, containerHeight)\n : { x: x ?? 0, y: y ?? 0 };\n\n const screenPos = useScreenPosition(\n innerPosition.x,\n innerPosition.y,\n svgRef,\n margin ?? undefined\n );\n\n const usePortal = svgRef != null && margin != null && screenPos != null;\n\n if (usePortal && screenPos) {\n return createPortal(\n <div\n style={{\n position: \"fixed\",\n left: screenPos.x,\n top: screenPos.y,\n zIndex: TOOLTIP_Z_INDEX,\n pointerEvents: \"none\",\n width: \"max-content\",\n maxWidth: TOOLTIP_WIDTH,\n minWidth: 140\n }}\n >\n {children}\n </div>,\n document.body\n );\n }\n\n return (\n <foreignObject\n x={innerPosition.x}\n y={innerPosition.y}\n width={TOOLTIP_WIDTH + 40}\n height={TOOLTIP_HEIGHT + 40}\n style={{ overflow: \"visible\", pointerEvents: \"none\" }}\n >\n <div\n style={{\n width: \"max-content\",\n maxWidth: TOOLTIP_WIDTH,\n minWidth: 140,\n pointerEvents: \"none\"\n }}\n >\n {children}\n </div>\n </foreignObject>\n );\n}\n\nexport function DefaultTooltip({\n title,\n rows\n}: {\n title: string;\n rows: Array<{ label: string; value: string; color: string }>;\n}) {\n return (\n <div className=\"msc-tooltip\">\n <div className=\"msc-tooltip-title\">{title}</div>\n {rows.map((r) => (\n <div key={r.label} className=\"msc-tooltip-row\">\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\n <span className=\"msc-dot\" style={{ background: r.color }} />\n <span>{r.label}</span>\n </div>\n <div style={{ fontWeight: 650 }}>{r.value}</div>\n </div>\n ))}\n </div>\n );\n}\n","import React, { useMemo, useState, useRef, useEffect } from \"react\";\nimport { line as d3line, curveMonotoneX, curveLinear } from \"d3-shape\";\nimport type { ScaleContinuousNumeric } from \"d3-scale\";\nimport type { Datum, Accessor } from \"../types\";\nimport { TooltipPortal, DefaultTooltip } from \"../primitives/Tooltip\";\nimport type { TooltipContent } from \"./BarSeries\";\nimport { useChart } from \"../primitives/Chart\";\n\nconst HOVER_HIT_RADIUS = 12;\nconst HOVER_LEAVE_DELAY = 150;\n\nexport function LineSeries<T extends Datum>({\n data,\n x,\n y,\n xScale,\n yScale,\n stroke = \"var(--msc-s1)\",\n strokeWidth = 2.5,\n curve = \"monotone\",\n showMarkers = false,\n animate = true,\n duration = 800,\n hoverDimOpacity = 0.5,\n tooltip\n}: {\n data: T[];\n x: Accessor<T, number>;\n y: Accessor<T, number>;\n xScale: ScaleContinuousNumeric<number, number>;\n yScale: ScaleContinuousNumeric<number, number>;\n stroke?: string;\n strokeWidth?: number;\n curve?: \"monotone\" | \"linear\";\n showMarkers?: boolean;\n animate?: boolean;\n duration?: number;\n hoverDimOpacity?: number;\n tooltip?: (d: T, i: number) => TooltipContent;\n}) {\n const [hoveredIndex, setHoveredIndex] = useState<number | null>(null);\n const leaveTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const { innerWidth, innerHeight, svgRef, margin, registerClearTooltip, clearAllTooltips } = useChart();\n\n const clearTooltip = () => {\n if (leaveTimeoutRef.current) clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = null;\n setHoveredIndex(null);\n };\n\n useEffect(() => {\n return registerClearTooltip(clearTooltip);\n }, [registerClearTooltip]);\n\n const handleEnter = (i: number) => {\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = null;\n }\n clearAllTooltips();\n setHoveredIndex(i);\n };\n\n const handleLeave = () => {\n leaveTimeoutRef.current = setTimeout(clearTooltip, HOVER_LEAVE_DELAY);\n };\n\n const { pathD, points } = useMemo(() => {\n const gen = d3line<T>()\n .x((dd: T, i: number) => xScale(x(dd, i)))\n .y((dd: T, i: number) => yScale(y(dd, i)))\n .defined((dd: T, i: number) => Number.isFinite(x(dd, i)) && Number.isFinite(y(dd, i)))\n .curve(curve === \"monotone\" ? curveMonotoneX : curveLinear);\n const pathD = gen(data) ?? \"\";\n const points = data.map((d, i) => ({\n x: xScale(x(d, i)),\n y: yScale(y(d, i)),\n datum: d,\n index: i\n }));\n return { pathD, points };\n }, [data, x, y, xScale, yScale, curve]);\n\n const lineOpacity = hoveredIndex === null ? 1 : hoverDimOpacity;\n\n return (\n <g>\n <path\n d={pathD}\n fill=\"none\"\n stroke={stroke}\n strokeWidth={strokeWidth}\n opacity={lineOpacity}\n pathLength={animate ? 1 : undefined}\n strokeDasharray={animate ? \"1 1\" : undefined}\n strokeDashoffset={animate ? 1 : undefined}\n style={{\n ...(animate ? { animation: `msc-line-draw ${duration}ms ease-out forwards` } : {}),\n transition: \"opacity 0.2s ease\"\n }}\n />\n {points.map((pt, i) => (\n <g key={i}>\n {/* Invisible hit target for easier hover */}\n <circle\n cx={pt.x}\n cy={pt.y}\n r={HOVER_HIT_RADIUS}\n fill=\"transparent\"\n style={{ cursor: \"pointer\" }}\n onMouseEnter={() => handleEnter(i)}\n onMouseLeave={handleLeave}\n />\n {(showMarkers || hoveredIndex === i) && (\n <>\n <circle\n cx={pt.x}\n cy={pt.y}\n r={showMarkers ? 4 : 6}\n fill={showMarkers ? stroke : \"var(--msc-panel)\"}\n stroke={showMarkers ? \"var(--msc-panel)\" : stroke}\n strokeWidth={showMarkers ? 2 : 2.5}\n style={{\n transition: \"opacity 0.15s ease\",\n transformOrigin: \"center\",\n ...(animate\n ? {\n animation: `msc-marker-pop 400ms ease-out ${Math.min(300 + i * 80, duration - 100)}ms both`\n }\n : {})\n }}\n />\n {tooltip && hoveredIndex === i && (\n <TooltipPortal\n anchorX={pt.x}\n anchorY={pt.y}\n containerWidth={innerWidth}\n containerHeight={innerHeight}\n svgRef={svgRef}\n margin={margin}\n >\n <DefaultTooltip {...tooltip(pt.datum, i)} />\n </TooltipPortal>\n )}\n </>\n )}\n </g>\n ))}\n </g>\n );\n}\n","import React, { useMemo } from \"react\";\nimport { area as d3area, curveMonotoneX, curveLinear } from \"d3-shape\";\nimport type { ScaleContinuousNumeric } from \"d3-scale\";\nimport type { Datum, Accessor } from \"../types\";\n\nexport function AreaSeries<T extends Datum>({\n data,\n x,\n y,\n y0 = 0,\n xScale,\n yScale,\n fill = \"var(--msc-s1)\",\n fillOpacity = 0.18,\n curve = \"monotone\",\n animate = true,\n duration = 600\n}: {\n data: T[];\n x: Accessor<T, number>;\n y: Accessor<T, number>;\n y0?: number;\n xScale: ScaleContinuousNumeric<number, number>;\n yScale: ScaleContinuousNumeric<number, number>;\n fill?: string;\n fillOpacity?: number;\n curve?: \"monotone\" | \"linear\";\n animate?: boolean;\n duration?: number;\n}) {\n const d = useMemo(() => {\n const gen = d3area<T>()\n .x((dd: T, i: number) => xScale(x(dd, i)))\n .y1((dd: T, i: number) => yScale(y(dd, i)))\n .y0(() => yScale(y0))\n .defined((dd: T, i: number) => Number.isFinite(x(dd, i)) && Number.isFinite(y(dd, i)))\n .curve(curve === \"monotone\" ? curveMonotoneX : curveLinear);\n return gen(data) ?? \"\";\n }, [data, x, y, y0, xScale, yScale, curve]);\n\n return (\n <path\n d={d}\n fill={fill}\n fillOpacity={fillOpacity}\n stroke=\"none\"\n className={animate ? \"msc-area-animate\" : undefined}\n style={\n animate\n ? {\n animation: `msc-area-reveal ${duration}ms ease-out forwards`\n }\n : undefined\n }\n />\n );\n}\n","import React, { useState, useRef, useEffect } from \"react\";\nimport type { ScaleBand, ScaleContinuousNumeric } from \"d3-scale\";\nimport type { Datum, Accessor } from \"../types\";\nimport { TooltipPortal, DefaultTooltip } from \"../primitives/Tooltip\";\nimport { useChart } from \"../primitives/Chart\";\n\nexport type TooltipContent = {\n title: string;\n rows: Array<{ label: string; value: string; color: string }>;\n};\n\nconst HOVER_LEAVE_DELAY = 150;\n\nexport function BarSeries<T extends Datum>({\n data,\n x,\n y,\n xScale,\n yScale,\n fill = \"var(--msc-s1)\",\n radius = 10,\n animate = true,\n duration = 500,\n hoverDimOpacity = 0.4,\n tooltip\n}: {\n data: T[];\n x: Accessor<T, string>;\n y: Accessor<T, number>;\n xScale: ScaleBand<string>;\n yScale: ScaleContinuousNumeric<number, number>;\n fill?: string;\n radius?: number;\n animate?: boolean;\n duration?: number;\n hoverDimOpacity?: number;\n tooltip?: (d: T, i: number) => TooltipContent;\n}) {\n const [hoveredIndex, setHoveredIndex] = useState<number | null>(null);\n const leaveTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const { innerWidth, innerHeight, svgRef, margin, registerClearTooltip, clearAllTooltips } = useChart();\n const barW = xScale.bandwidth();\n\n const clearTooltip = () => {\n if (leaveTimeoutRef.current) clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = null;\n setHoveredIndex(null);\n };\n\n useEffect(() => {\n return registerClearTooltip(clearTooltip);\n }, [registerClearTooltip]);\n\n const handleEnter = (i: number) => {\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = null;\n }\n clearAllTooltips();\n setHoveredIndex(i);\n };\n\n const handleLeave = () => {\n leaveTimeoutRef.current = setTimeout(clearTooltip, HOVER_LEAVE_DELAY);\n };\n\n return (\n <g>\n {data.map((d, i) => {\n const xx = xScale(x(d, i));\n if (xx == null) return null;\n const yVal = y(d, i);\n const yy = yScale(yVal);\n const zeroY = yScale(0);\n const h = zeroY - yy;\n const isHovered = hoveredIndex === i;\n const opacity = hoveredIndex === null ? 0.92 : isHovered ? 1 : hoverDimOpacity;\n const anchorX = xx + barW / 2;\n const anchorY = yy;\n\n return (\n <g key={i}>\n <rect\n x={xx}\n y={h >= 0 ? yy : zeroY}\n width={barW}\n height={Math.abs(h)}\n rx={radius}\n ry={radius}\n fill={fill}\n opacity={opacity}\n className={`msc-bar-hoverable ${animate ? \"msc-bar-animate\" : \"\"}`.trim()}\n style={{\n ...(animate\n ? { animation: `msc-bar-grow ${duration}ms ease-out ${i * 60}ms both` }\n : {}),\n transition: \"opacity 0.2s ease\",\n cursor: tooltip ? \"pointer\" : undefined\n }}\n onMouseEnter={() => handleEnter(i)}\n onMouseLeave={handleLeave}\n />\n {tooltip && isHovered && (\n <TooltipPortal\n anchorX={anchorX}\n anchorY={anchorY}\n containerWidth={innerWidth}\n containerHeight={innerHeight}\n svgRef={svgRef}\n margin={margin}\n >\n <DefaultTooltip {...tooltip(d, i)} />\n </TooltipPortal>\n )}\n </g>\n );\n })}\n </g>\n );\n}\n","import React, { useState, useRef, useEffect } from \"react\";\nimport type { ScaleBand, ScaleContinuousNumeric } from \"d3-scale\";\nimport type { Datum, Accessor } from \"../types\";\nimport { TooltipPortal, DefaultTooltip } from \"../primitives/Tooltip\";\nimport { useChart } from \"../primitives/Chart\";\nimport type { TooltipContent } from \"./BarSeries\";\n\nconst HOVER_LEAVE_DELAY = 150;\n\nexport function HorizontalBarSeries<T extends Datum>({\n data,\n y,\n x,\n yScale,\n xScale,\n fill = \"var(--msc-s1)\",\n radius = 6,\n animate = true,\n duration = 500,\n hoverDimOpacity = 0.4,\n tooltip\n}: {\n data: T[];\n y: Accessor<T, string>;\n x: Accessor<T, number>;\n yScale: ScaleBand<string>;\n xScale: ScaleContinuousNumeric<number, number>;\n fill?: string;\n radius?: number;\n animate?: boolean;\n duration?: number;\n hoverDimOpacity?: number;\n tooltip?: (d: T, i: number) => TooltipContent;\n}) {\n const [hoveredIndex, setHoveredIndex] = useState<number | null>(null);\n const leaveTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const { innerWidth, innerHeight, svgRef, margin, registerClearTooltip, clearAllTooltips } = useChart();\n const barH = yScale.bandwidth();\n\n const clearTooltip = () => {\n if (leaveTimeoutRef.current) clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = null;\n setHoveredIndex(null);\n };\n\n useEffect(() => {\n return registerClearTooltip(clearTooltip);\n }, [registerClearTooltip]);\n\n const handleEnter = (i: number) => {\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = null;\n }\n clearAllTooltips();\n setHoveredIndex(i);\n };\n\n const handleLeave = () => {\n leaveTimeoutRef.current = setTimeout(clearTooltip, HOVER_LEAVE_DELAY);\n };\n\n return (\n <g>\n {data.map((d, i) => {\n const yy = yScale(y(d, i));\n if (yy == null) return null;\n const xVal = x(d, i);\n const xx = xScale(xVal);\n const zeroX = xScale(0);\n const w = xx - zeroX;\n const isHovered = hoveredIndex === i;\n const opacity = hoveredIndex === null ? 0.92 : isHovered ? 1 : hoverDimOpacity;\n const anchorX = w >= 0 ? zeroX + Math.abs(w) / 2 : zeroX - Math.abs(w) / 2;\n const anchorY = yy + barH / 2;\n\n return (\n <g key={i}>\n <rect\n x={w >= 0 ? zeroX : xx}\n y={yy}\n width={Math.abs(w)}\n height={barH}\n rx={radius}\n ry={radius}\n fill={fill}\n opacity={opacity}\n className={`msc-bar-hoverable ${animate ? \"msc-bar-animate msc-bar-horizontal\" : \"\"}`.trim()}\n style={{\n ...(animate\n ? { animation: `msc-bar-grow-horizontal ${duration}ms ease-out ${i * 60}ms both` }\n : {}),\n transition: \"opacity 0.2s ease\",\n cursor: tooltip ? \"pointer\" : undefined\n }}\n onMouseEnter={() => handleEnter(i)}\n onMouseLeave={handleLeave}\n />\n {tooltip && isHovered && (\n <TooltipPortal\n anchorX={anchorX}\n anchorY={anchorY}\n containerWidth={innerWidth}\n containerHeight={innerHeight}\n svgRef={svgRef}\n margin={margin}\n >\n <DefaultTooltip {...tooltip(d, i)} />\n </TooltipPortal>\n )}\n </g>\n );\n })}\n </g>\n );\n}\n","import React, { useState, useRef, useEffect } from \"react\";\nimport type { ScaleBand, ScaleContinuousNumeric } from \"d3-scale\";\nimport type { Datum, Accessor } from \"../types\";\nimport { TooltipPortal, DefaultTooltip } from \"../primitives/Tooltip\";\nimport { useChart } from \"../primitives/Chart\";\nimport type { TooltipContent } from \"./BarSeries\";\n\nconst HOVER_LEAVE_DELAY = 150;\n\nexport type GroupedBarConfig<T extends Datum> = {\n y: Accessor<T, number>;\n fill: string;\n tooltip?: (d: T, i: number) => TooltipContent;\n};\n\nexport function GroupedBarSeries<T extends Datum>({\n data,\n x,\n xScale,\n yScale,\n groups,\n radius = 6,\n animate = true,\n duration = 500,\n hoverDimOpacity = 0.4\n}: {\n data: T[];\n x: Accessor<T, string>;\n xScale: ScaleBand<string>;\n yScale: ScaleContinuousNumeric<number, number>;\n groups: GroupedBarConfig<T>[];\n radius?: number;\n animate?: boolean;\n duration?: number;\n hoverDimOpacity?: number;\n}) {\n const [hovered, setHovered] = useState<{ groupIdx: number; dataIdx: number } | null>(null);\n const leaveTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const { innerWidth, innerHeight, svgRef, margin, registerClearTooltip, clearAllTooltips } = useChart();\n\n const clearTooltip = () => {\n if (leaveTimeoutRef.current) clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = null;\n setHovered(null);\n };\n\n useEffect(() => {\n return registerClearTooltip(clearTooltip);\n }, [registerClearTooltip]);\n\n const handleEnter = (groupIdx: number, dataIdx: number) => {\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = null;\n }\n clearAllTooltips();\n setHovered({ groupIdx, dataIdx });\n };\n\n const handleLeave = () => {\n leaveTimeoutRef.current = setTimeout(clearTooltip, HOVER_LEAVE_DELAY);\n };\n\n const groupCount = groups.length;\n const categoryBand = xScale.bandwidth();\n const barGap = 2;\n const barWidth = (categoryBand - barGap * (groupCount - 1)) / groupCount;\n\n return (\n <g>\n {groups.map((group, groupIdx) =>\n data.map((d, i) => {\n const xx = xScale(x(d, i));\n if (xx == null) return null;\n const xOffset = xx + groupIdx * (barWidth + barGap);\n const yVal = group.y(d, i);\n const yy = yScale(yVal);\n const zeroY = yScale(0);\n const h = zeroY - yy;\n const rectY = h >= 0 ? yy : zeroY;\n const isHovered = hovered?.groupIdx === groupIdx && hovered?.dataIdx === i;\n const opacity = hovered === null ? 0.92 : isHovered ? 1 : hoverDimOpacity;\n\n return (\n <g key={`${groupIdx}-${i}`}>\n <rect\n x={xOffset}\n y={rectY}\n width={barWidth}\n height={Math.abs(h)}\n rx={radius}\n ry={radius}\n fill={group.fill}\n opacity={opacity}\n className={`msc-bar-hoverable ${animate ? \"msc-bar-animate\" : \"\"}`.trim()}\n style={{\n ...(animate\n ? { animation: `msc-bar-grow ${duration}ms ease-out ${(i * groupCount + groupIdx) * 40}ms both` }\n : {}),\n transition: \"opacity 0.2s ease\",\n cursor: group.tooltip ? \"pointer\" : undefined\n }}\n onMouseEnter={() => handleEnter(groupIdx, i)}\n onMouseLeave={handleLeave}\n />\n {group.tooltip && isHovered && (\n <TooltipPortal\n anchorX={xOffset + barWidth / 2}\n anchorY={yy}\n containerWidth={innerWidth}\n containerHeight={innerHeight}\n svgRef={svgRef}\n margin={margin}\n >\n <DefaultTooltip {...group.tooltip(d, i)} />\n </TooltipPortal>\n )}\n </g>\n );\n })\n )}\n </g>\n );\n}\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { TooltipPortal, DefaultTooltip } from \"../primitives/Tooltip\";\nimport { useChart } from \"../primitives/Chart\";\nimport type { TooltipContent } from \"./BarSeries\";\n\nconst HOVER_LEAVE_DELAY = 150;\n\nexport type StackedSegment = {\n value: number;\n fill: string;\n label?: string;\n tooltip?: TooltipContent;\n};\n\nexport function StackedBarSeries({\n segments,\n orientation = \"horizontal\",\n radius = 4,\n animate = true,\n duration = 400,\n hoverDimOpacity = 0.4,\n showValues = true,\n valueFormat = (v) => String(v)\n}: {\n segments: StackedSegment[];\n orientation?: \"horizontal\" | \"vertical\";\n radius?: number;\n animate?: boolean;\n duration?: number;\n hoverDimOpacity?: number;\n showValues?: boolean;\n valueFormat?: (value: number) => string;\n}) {\n const [hoveredIdx, setHoveredIdx] = useState<number | null>(null);\n const leaveTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const { innerWidth, innerHeight, svgRef, margin, registerClearTooltip, clearAllTooltips } = useChart();\n\n const clearTooltip = () => {\n if (leaveTimeoutRef.current) clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = null;\n setHoveredIdx(null);\n };\n\n useEffect(() => {\n return registerClearTooltip(clearTooltip);\n }, [registerClearTooltip]);\n\n const handleEnter = (idx: number) => {\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = null;\n }\n clearAllTooltips();\n setHoveredIdx(idx);\n };\n\n const handleLeave = () => {\n leaveTimeoutRef.current = setTimeout(clearTooltip, HOVER_LEAVE_DELAY);\n };\n\n const total = segments.reduce((s, seg) => s + seg.value, 0);\n if (total <= 0) return null;\n\n const isHorizontal = orientation === \"horizontal\";\n const barLength = isHorizontal ? innerWidth : innerHeight;\n const barThickness = isHorizontal ? innerHeight : innerWidth;\n const n = segments.length;\n\n function roundedRectPath(\n x: number,\n y: number,\n w: number,\n h: number,\n r: number,\n roundLeft: boolean,\n roundRight: boolean\n ): string {\n const r2 = Math.min(r, w / 2, h / 2);\n if (r2 <= 0) return `M ${x} ${y} L ${x + w} ${y} L ${x + w} ${y + h} L ${x} ${y + h} Z`;\n if (roundLeft && roundRight) {\n return `M ${x + r2} ${y} L ${x + w - r2} ${y} A ${r2} ${r2} 0 0 1 ${x + w} ${y + r2} L ${x + w} ${y + h - r2} A ${r2} ${r2} 0 0 1 ${x + w - r2} ${y + h} L ${x + r2} ${y + h} A ${r2} ${r2} 0 0 1 ${x} ${y + h - r2} L ${x} ${y + r2} A ${r2} ${r2} 0 0 1 ${x + r2} ${y} Z`;\n }\n if (roundLeft) {\n return `M ${x + r2} ${y} L ${x + w} ${y} L ${x + w} ${y + h} L ${x + r2} ${y + h} A ${r2} ${r2} 0 0 1 ${x} ${y + h - r2} L ${x} ${y + r2} A ${r2} ${r2} 0 0 1 ${x + r2} ${y} Z`;\n }\n if (roundRight) {\n return `M ${x} ${y} L ${x + w - r2} ${y} A ${r2} ${r2} 0 0 1 ${x + w} ${y + r2} L ${x + w} ${y + h - r2} A ${r2} ${r2} 0 0 1 ${x + w - r2} ${y + h} L ${x} ${y + h} Z`;\n }\n return `M ${x} ${y} L ${x + w} ${y} L ${x + w} ${y + h} L ${x} ${y + h} Z`;\n }\n\n let offset = 0;\n\n return (\n <g transform={isHorizontal ? undefined : `translate(0,${innerHeight}) rotate(-90)`}>\n {segments.map((seg, idx) => {\n const width = (seg.value / total) * barLength;\n const x = offset;\n offset += width;\n\n const isHovered = hoveredIdx === idx;\n const opacity = hoveredIdx === null ? 0.92 : isHovered ? 1 : hoverDimOpacity;\n const textX = x + width / 2;\n const textY = barThickness / 2;\n const minWidthForLabel = 24;\n\n const isFirst = idx === 0;\n const isLast = idx === n - 1;\n const roundLeft = isFirst;\n const roundRight = isLast;\n const pathD = roundedRectPath(x, 0, Math.max(0, width), barThickness, radius, roundLeft, roundRight);\n\n return (\n <g key={idx}>\n <path\n d={pathD}\n fill={seg.fill}\n opacity={opacity}\n style={{\n ...(animate\n ? { animation: `msc-bar-grow ${duration}ms ease-out ${idx * 50}ms both` }\n : {}),\n transition: \"opacity 0.2s ease\",\n cursor: seg.tooltip ? \"pointer\" : undefined\n }}\n onMouseEnter={() => handleEnter(idx)}\n onMouseLeave={handleLeave}\n />\n {showValues && width >= minWidthForLabel && (\n <text\n x={textX}\n y={textY}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n fill=\"white\"\n style={{\n fontSize: 11,\n fontWeight: 600,\n pointerEvents: \"none\",\n textShadow: \"0 1px 1px rgba(0,0,0,0.3)\"\n }}\n >\n {seg.label ? `${seg.label}: ${valueFormat(seg.value)}` : valueFormat(seg.value)}\n </text>\n )}\n {seg.tooltip && isHovered && (\n <TooltipPortal\n anchorX={x + width / 2}\n anchorY={barThickness / 2}\n containerWidth={innerWidth}\n containerHeight={innerHeight}\n svgRef={svgRef}\n margin={margin}\n >\n <DefaultTooltip {...seg.tooltip} />\n </TooltipPortal>\n )}\n </g>\n );\n })}\n </g>\n );\n}\n","import React, { useMemo, useState, useRef, useEffect } from \"react\";\nimport { pie as d3pie, arc as d3arc } from \"d3-shape\";\nimport type { Datum, Accessor } from \"../types\";\nimport { useChart } from \"../primitives/Chart\";\nimport { TooltipPortal, DefaultTooltip } from \"../primitives/Tooltip\";\nimport type { TooltipContent } from \"./BarSeries\";\n\nconst DEFAULT_COLORS = [\n \"var(--msc-s1)\",\n \"var(--msc-s2)\",\n \"var(--msc-s3)\",\n \"var(--msc-s4)\",\n \"var(--msc-s5)\"\n];\n\nexport function PieSeries<T extends Datum>({\n data,\n value,\n colors = DEFAULT_COLORS,\n innerRadius = 0,\n outerRadius,\n padAngle = 0,\n cornerRadius = 0,\n animate = true,\n duration = 600,\n hoverDimOpacity = 0.4,\n tooltip\n}: {\n data: T[];\n value: Accessor<T, number>;\n colors?: string[];\n innerRadius?: number;\n outerRadius?: number;\n padAngle?: number;\n cornerRadius?: number;\n animate?: boolean;\n duration?: number;\n hoverDimOpacity?: number;\n tooltip?: (d: T, i: number) => TooltipContent;\n}) {\n const [hoveredIndex, setHoveredIndex] = useState<number | null>(null);\n const leaveTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const { innerWidth, innerHeight, svgRef, margin, registerClearTooltip, clearAllTooltips } = useChart();\n\n const clearTooltip = () => {\n if (leaveTimeoutRef.current) clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = null;\n setHoveredIndex(null);\n };\n\n useEffect(() => {\n return registerClearTooltip(clearTooltip);\n }, [registerClearTooltip]);\n\n const handleEnter = (i: number) => {\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = null;\n }\n clearAllTooltips();\n setHoveredIndex(i);\n };\n\n const handleLeave = () => {\n leaveTimeoutRef.current = setTimeout(clearTooltip, 150);\n };\n\n type ArcDatum = { data: T; index: number };\n\n const { arcs, arcGen, cx, cy } = useMemo(() => {\n const r = outerRadius ?? Math.min(innerWidth, innerHeight) / 2 - 8;\n const cx = innerWidth / 2;\n const cy = innerHeight / 2;\n\n const pieGen = d3pie<T>()\n .value((d: T, i: number) => value(d, i))\n .sort(null);\n\n const arcGen = d3arc<ArcDatum>()\n .innerRadius(innerRadius)\n .outerRadius(r)\n .padAngle(padAngle)\n .cornerRadius(cornerRadius);\n\n const arcs = pieGen(data).map((d, i) => ({ ...d, index: i }));\n\n return { arcs, arcGen, cx, cy };\n }, [data, value, innerWidth, innerHeight, outerRadius, innerRadius, padAngle, cornerRadius]);\n\n return (\n <g transform={`translate(${cx},${cy})`}>\n {arcs.map((arc: ArcDatum, i: number) => {\n const d = arcGen(arc);\n if (!d) return null;\n const fill = colors[i % colors.length] ?? colors[0];\n const isHovered = hoveredIndex === i;\n const fillOpacity =\n hoveredIndex === null ? 0.92 : isHovered ? 1 : hoverDimOpacity;\n const [centroidX, centroidY] = arcGen.centroid(arc);\n\n return (\n <g key={i}>\n <path\n d={d}\n fill={fill}\n fillOpacity={fillOpacity}\n className={`msc-pie-slice-hoverable ${animate ? \"msc-pie-slice-animate\" : \"\"}`.trim()}\n style={{\n ...(animate\n ? { animation: `msc-pie-draw ${duration}ms ease-out ${i * 40}ms both` }\n : {}),\n transition: \"fill-opacity 0.2s ease\",\n cursor: tooltip ? \"pointer\" : undefined\n }}\n onMouseEnter={() => handleEnter(i)}\n onMouseLeave={handleLeave}\n />\n {tooltip && isHovered && (\n <TooltipPortal\n anchorX={cx + centroidX}\n anchorY={cy + centroidY}\n containerWidth={innerWidth}\n containerHeight={innerHeight}\n svgRef={svgRef}\n margin={margin}\n >\n <DefaultTooltip {...tooltip(arc.data, i)} />\n </TooltipPortal>\n )}\n </g>\n );\n })}\n </g>\n );\n}\n","import React, { useMemo, useState, useRef, useEffect } from \"react\";\nimport { arc as d3arc } from \"d3-shape\";\nimport type { Datum, Accessor } from \"../types\";\nimport { useChart } from \"../primitives/Chart\";\nimport { TooltipPortal, DefaultTooltip } from \"../primitives/Tooltip\";\nimport type { TooltipContent } from \"./BarSeries\";\n\nconst DEFAULT_COLORS = [\n \"var(--msc-s1)\",\n \"var(--msc-s2)\",\n \"var(--msc-s3)\",\n \"var(--msc-s4)\",\n \"var(--msc-s5)\"\n];\n\nconst HOVER_LEAVE_DELAY = 150;\n\ntype ArcDatum = { data: Datum; index: number; startAngle: number; endAngle: number; innerRadius: number; outerRadius: number };\n\nexport function PolarAreaSeries<T extends Datum>({\n data,\n value,\n colors = DEFAULT_COLORS,\n innerRadius = 0,\n padAngle = 0.02,\n cornerRadius = 4,\n animate = true,\n duration = 600,\n hoverDimOpacity = 0.4,\n tooltip\n}: {\n data: T[];\n value: Accessor<T, number>;\n colors?: string[];\n innerRadius?: number;\n padAngle?: number;\n cornerRadius?: number;\n animate?: boolean;\n duration?: number;\n hoverDimOpacity?: number;\n tooltip?: (d: T, i: number) => TooltipContent;\n}) {\n const [hoveredIndex, setHoveredIndex] = useState<number | null>(null);\n const leaveTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const { innerWidth, innerHeight, svgRef, margin, registerClearTooltip, clearAllTooltips } = useChart();\n\n const clearTooltip = () => {\n if (leaveTimeoutRef.current) clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = null;\n setHoveredIndex(null);\n };\n\n useEffect(() => {\n return registerClearTooltip(clearTooltip);\n }, [registerClearTooltip]);\n\n const handleEnter = (i: number) => {\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = null;\n }\n clearAllTooltips();\n setHoveredIndex(i);\n };\n\n const handleLeave = () => {\n leaveTimeoutRef.current = setTimeout(clearTooltip, HOVER_LEAVE_DELAY);\n };\n\n const { arcs, arcGen, cx, cy } = useMemo(() => {\n const r = Math.min(innerWidth, innerHeight) / 2 - 8;\n const cx = innerWidth / 2;\n const cy = innerHeight / 2;\n const maxVal = Math.max(...data.map((d, i) => value(d, i)), 1);\n const n = data.length;\n const angleStep = (2 * Math.PI) / n;\n\n const arcs: ArcDatum[] = data.map((d, i) => {\n const val = value(d, i);\n const outerR = innerRadius + (val / maxVal) * (r - innerRadius);\n return {\n data: d,\n index: i,\n startAngle: i * angleStep,\n endAngle: (i + 1) * angleStep,\n innerRadius,\n outerRadius: outerR\n };\n });\n\n const arcGen = d3arc<ArcDatum>()\n .innerRadius((a) => a.innerRadius)\n .outerRadius((a) => a.outerRadius)\n .padAngle(padAngle)\n .cornerRadius(cornerRadius);\n\n return { arcs, arcGen, cx, cy };\n }, [data, value, innerWidth, innerHeight, innerRadius, padAngle, cornerRadius]);\n\n return (\n <g transform={`translate(${cx},${cy})`}>\n {arcs.map((arc, i) => {\n const d = arcGen(arc);\n if (!d) return null;\n const fill = colors[i % colors.length] ?? colors[0];\n const isHovered = hoveredIndex === i;\n const fillOpacity = hoveredIndex === null ? 0.92 : isHovered ? 1 : hoverDimOpacity;\n const [centroidX, centroidY] = arcGen.centroid(arc);\n\n return (\n <g key={i}>\n <path\n d={d}\n fill={fill}\n fillOpacity={fillOpacity}\n className={`msc-pie-slice-hoverable ${animate ? \"msc-pie-slice-animate\" : \"\"}`.trim()}\n style={{\n ...(animate\n ? { animation: `msc-pie-draw ${duration}ms ease-out ${i * 40}ms both` }\n : {}),\n transition: \"fill-opacity 0.2s ease\",\n cursor: tooltip ? \"pointer\" : undefined\n }}\n onMouseEnter={() => handleEnter(i)}\n onMouseLeave={handleLeave}\n />\n {tooltip && isHovered && (\n <TooltipPortal\n anchorX={cx + centroidX}\n anchorY={cy + centroidY}\n containerWidth={innerWidth}\n containerHeight={innerHeight}\n svgRef={svgRef}\n margin={margin}\n >\n <DefaultTooltip {...tooltip(arc.data as T, i)} />\n </TooltipPortal>\n )}\n </g>\n );\n })}\n </g>\n );\n}\n","import React from \"react\";\nimport { Chart } from \"../primitives/Chart\";\nimport { PieSeries } from \"../series/PieSeries\";\nimport { Legend } from \"../primitives/Legend\";\nimport type { Datum, Accessor } from \"../types\";\nimport type { TooltipContent } from \"../series/BarSeries\";\n\nconst DEFAULT_COLORS = [\n \"var(--msc-s1)\",\n \"var(--msc-s2)\",\n \"var(--msc-s3)\",\n \"var(--msc-s4)\",\n \"var(--msc-s5)\"\n];\n\nexport function PieChart<T extends Datum>({\n data,\n value,\n label,\n colors = DEFAULT_COLORS,\n width = 280,\n height = 260,\n margin = { top: 16, right: 16, bottom: 16, left: 16 },\n showLegend = true,\n showValues = true,\n valueFormat = (v) => String(v),\n innerRadius = 0,\n padAngle = 0.02,\n cornerRadius = 4,\n animate = true,\n defs,\n tooltip\n}: {\n data: T[];\n value: Accessor<T, number>;\n label?: Accessor<T, string>;\n colors?: string[];\n width?: number;\n height?: number;\n margin?: { top?: number; right?: number; bottom?: number; left?: number };\n showLegend?: boolean;\n showValues?: boolean;\n valueFormat?: (value: number) => string;\n innerRadius?: number;\n padAngle?: number;\n cornerRadius?: number;\n animate?: boolean;\n defs?: React.ReactNode;\n tooltip?: (d: T, i: number) => TooltipContent;\n}) {\n const getColor = (i: number): string =>\n colors[i % colors.length] ?? colors[0] ?? \"var(--msc-s1)\";\n\n const legendItems = data.map((d, i) => ({\n label: label ? label(d, i) : `Item ${i + 1}`,\n value: showValues ? valueFormat(value(d, i)) : undefined,\n color: getColor(i)\n }));\n\n const defaultTooltip: (d: T, i: number) => TooltipContent =\n tooltip ??\n ((d, i) => ({\n title: label ? label(d, i) : `Item ${i + 1}`,\n rows: [{ label: \"Value\", value: valueFormat(value(d, i)), color: getColor(i) }]\n }));\n\n const chartMargin = {\n top: margin.top ?? 16,\n right: margin.right ?? 16,\n bottom: margin.bottom ?? 16,\n left: margin.left ?? 16\n };\n\n return (\n <div>\n <Chart width={width} height={height} margin={chartMargin}>\n {defs}\n <PieSeries\n data={data}\n value={value}\n colors={colors}\n innerRadius={innerRadius}\n padAngle={padAngle}\n cornerRadius={cornerRadius}\n animate={animate}\n tooltip={defaultTooltip}\n />\n </Chart>\n {showLegend && <Legend items={legendItems} />}\n </div>\n );\n}\n","import React, { useMemo } from \"react\";\nimport { scaleLinear, scaleBand } from \"d3-scale\";\nimport { Chart } from \"../primitives/Chart\";\nimport { Grid } from \"../primitives/Grid\";\nimport { AxisBottom, AxisLeft } from \"../primitives/Axis\";\nimport { BarSeries } from \"../series/BarSeries\";\nimport { LineSeries } from \"../series/LineSeries\";\nimport type { Datum, Accessor } from \"../types\";\nimport type { TooltipContent } from \"../series/BarSeries\";\n\nexport function ComboChart<T extends Datum>({\n data,\n x,\n bar,\n line,\n barLabel = \"Bar\",\n lineLabel = \"Line\",\n barFill = \"var(--msc-s1)\",\n lineStroke = \"var(--msc-s2)\",\n width = 320,\n height = 200,\n margin = { top: 24, right: 16, bottom: 28, left: 46 },\n showMarkers = true,\n animate = true,\n defs,\n barTooltip,\n lineTooltip\n}: {\n data: T[];\n x: Accessor<T, string>;\n bar: Accessor<T, number>;\n line: Accessor<T, number>;\n barLabel?: string;\n lineLabel?: string;\n barFill?: string;\n lineStroke?: string;\n width?: number;\n height?: number;\n margin?: { top?: number; right?: number; bottom?: number; left?: number };\n showMarkers?: boolean;\n animate?: boolean;\n defs?: React.ReactNode;\n barTooltip?: (d: T, i: number) => TooltipContent;\n lineTooltip?: (d: T, i: number) => TooltipContent;\n}) {\n const chartMargin = {\n top: margin.top ?? 24,\n right: margin.right ?? 16,\n bottom: margin.bottom ?? 28,\n left: margin.left ?? 46\n };\n\n const innerW = width - (chartMargin.left ?? 0) - (chartMargin.right ?? 0);\n const innerH = height - (chartMargin.top ?? 0) - (chartMargin.bottom ?? 0);\n\n const xScale = useMemo(\n () => scaleBand<string>().domain(data.map((d, i) => x(d, i))).range([0, innerW]).padding(0.25),\n [data, x, innerW]\n );\n\n const yScale = useMemo(() => {\n const barVals = data.map((d, i) => bar(d, i));\n const lineVals = data.map((d, i) => line(d, i));\n const all = [...barVals, ...lineVals];\n return scaleLinear()\n .domain([Math.min(...all, 0), Math.max(...all)])\n .nice()\n .range([innerH, 0]);\n }, [data, bar, line, innerH]);\n\n const lineXScale = useMemo(() => {\n const firstD = data[0];\n const lastD = data[data.length - 1];\n const first = firstD ? (xScale(x(firstD, 0)) ?? 0) + xScale.bandwidth() / 2 : 0;\n const last =\n data.length > 1 && lastD\n ? (xScale(x(lastD, data.length - 1)) ?? 0) + xScale.bandwidth() / 2\n : first;\n return scaleLinear().domain([0, Math.max(0, data.length - 1)]).range([first, last]);\n }, [data, x, xScale]);\n\n const bottomTicks = useMemo(\n () => data.map((d, i) => ({ value: x(d, i), x: (xScale(x(d, i)) ?? 0) + xScale.bandwidth() / 2, y: innerH })),\n [data, x, xScale, innerH]\n );\n const leftTicks = useMemo(() => yScale.ticks(5).map((v) => ({ value: String(v), x: 0, y: yScale(v) })), [yScale]);\n const xTicks = xScale.domain().map((m) => (xScale(m) ?? 0) + xScale.bandwidth() / 2);\n const yTicks = yScale.ticks(5).map((v) => yScale(v));\n\n const defaultBarTooltip: (d: T, i: number) => TooltipContent =\n barTooltip ??\n ((d, i) => ({\n title: x(d, i),\n rows: [{ label: barLabel, value: String(bar(d, i)), color: barFill }]\n }));\n\n const defaultLineTooltip: (d: T, i: number) => TooltipContent =\n lineTooltip ??\n ((d, i) => ({\n title: x(d, i),\n rows: [{ label: lineLabel, value: String(line(d, i)), color: lineStroke }]\n }));\n\n return (\n <Chart width={width} height={height} margin={chartMargin}>\n {defs}\n <Grid xTicks={xTicks} yTicks={yTicks} />\n <AxisLeft ticks={leftTicks} />\n <AxisBottom ticks={bottomTicks} />\n <BarSeries\n data={data}\n x={x}\n y={bar}\n xScale={xScale}\n yScale={yScale}\n fill={barFill}\n animate={animate}\n tooltip={defaultBarTooltip}\n />\n <LineSeries\n data={data}\n x={(_, i) => i}\n y={line}\n xScale={lineXScale}\n yScale={yScale}\n stroke={lineStroke}\n showMarkers={showMarkers}\n animate={animate}\n tooltip={defaultLineTooltip}\n />\n </Chart>\n );\n}\n","import React, { useMemo, useState, useRef, useEffect } from \"react\";\nimport { Chart } from \"../primitives/Chart\";\nimport { TooltipPortal, DefaultTooltip } from \"../primitives/Tooltip\";\nimport { useChart } from \"../primitives/Chart\";\nimport type { Datum, Accessor } from \"../types\";\nimport type { TooltipContent } from \"../series/BarSeries\";\n\nconst HOVER_LEAVE_DELAY = 150;\n\nexport function RadarChart<T extends Datum>({\n data,\n value,\n label,\n colors = [\"var(--msc-s1)\", \"var(--msc-s2)\", \"var(--msc-s3)\"],\n width = 280,\n height = 280,\n margin = { top: 24, right: 24, bottom: 24, left: 24 },\n levels = 5,\n animate = true,\n duration = 500,\n fillOpacity = 0.25,\n strokeWidth = 2,\n fill,\n stroke,\n defs,\n tooltip\n}: {\n data: T[];\n value: Accessor<T, number>;\n label: Accessor<T, string>;\n colors?: string[];\n width?: number;\n height?: number;\n margin?: { top?: number; right?: number; bottom?: number; left?: number };\n levels?: number;\n animate?: boolean;\n duration?: number;\n fillOpacity?: number;\n strokeWidth?: number;\n fill?: string;\n stroke?: string;\n defs?: React.ReactNode;\n tooltip?: (d: T, i: number) => TooltipContent;\n}) {\n const chartMargin = {\n top: margin.top ?? 24,\n right: margin.right ?? 24,\n bottom: margin.bottom ?? 24,\n left: margin.left ?? 24\n };\n\n const innerW = width - (chartMargin.left ?? 0) - (chartMargin.right ?? 0);\n const innerH = height - (chartMargin.top ?? 0) - (chartMargin.bottom ?? 0);\n const cx = innerW / 2;\n const cy = innerH / 2;\n const radius = Math.min(cx, cy) - 16;\n\n const n = data.length;\n const angleStep = (2 * Math.PI) / n;\n\n const points = useMemo(() => {\n const maxVal = Math.max(...data.map((d, i) => value(d, i)), 1);\n return data.map((d, i) => {\n const angle = i * angleStep - Math.PI / 2;\n const val = value(d, i);\n const r = (val / maxVal) * radius;\n return {\n x: cx + r * Math.cos(angle),\n y: cy + r * Math.sin(angle),\n label: label(d, i),\n value: val,\n datum: d,\n index: i\n };\n });\n }, [data, value, label, angleStep, radius, cx, cy]);\n\n const polygonPoints = points.map((p) => `${p.x},${p.y}`).join(\" \");\n const fillColor = fill ?? colors[0] ?? \"var(--msc-s1)\";\n const strokeColor = stroke ?? colors[0] ?? \"var(--msc-s1)\";\n\n return (\n <Chart width={width} height={height} margin={chartMargin}>\n {defs}\n <RadarGrid\n n={n}\n levels={levels}\n cx={cx}\n cy={cy}\n radius={radius}\n angleStep={angleStep}\n />\n <g>\n <polygon\n points={polygonPoints}\n fill={fillColor}\n fillOpacity={fillOpacity}\n stroke={strokeColor}\n strokeWidth={strokeWidth}\n style={{\n ...(animate\n ? { animation: `msc-area-reveal ${duration}ms ease-out forwards` }\n : {})\n }}\n />\n {points.map((pt, i) => (\n <RadarPoint\n key={i}\n pt={pt}\n color={strokeColor}\n animate={animate}\n duration={duration}\n delay={i * 60}\n tooltip={tooltip}\n />\n ))}\n </g>\n {points.map((pt, i) => (\n <text\n key={`label-${i}`}\n x={pt.x + (pt.x >= cx ? 8 : -8)}\n y={pt.y}\n textAnchor={pt.x >= cx ? \"start\" : \"end\"}\n dominantBaseline=\"middle\"\n fontSize={10}\n fill=\"var(--msc-muted)\"\n >\n {pt.label}\n </text>\n ))}\n </Chart>\n );\n}\n\nfunction RadarGrid({\n n,\n levels,\n cx,\n cy,\n radius,\n angleStep\n}: {\n n: number;\n levels: number;\n cx: number;\n cy: number;\n radius: number;\n angleStep: number;\n}) {\n const lines: React.ReactNode[] = [];\n\n for (let level = 1; level <= levels; level++) {\n const r = (radius * level) / levels;\n const pts: string[] = [];\n for (let i = 0; i <= n; i++) {\n const angle = i * angleStep - Math.PI / 2;\n pts.push(`${cx + r * Math.cos(angle)},${cy + r * Math.sin(angle)}`);\n }\n lines.push(\n <polygon\n key={`level-${level}`}\n points={pts.join(\" \")}\n fill=\"none\"\n stroke=\"var(--msc-grid)\"\n strokeWidth={1}\n />\n );\n }\n\n for (let i = 0; i < n; i++) {\n const angle = i * angleStep - Math.PI / 2;\n const x2 = cx + radius * Math.cos(angle);\n const y2 = cy + radius * Math.sin(angle);\n lines.push(\n <line\n key={`axis-${i}`}\n x1={cx}\n y1={cy}\n x2={x2}\n y2={y2}\n stroke=\"var(--msc-grid)\"\n strokeWidth={1}\n />\n );\n }\n\n return <g>{lines}</g>;\n}\n\nfunction RadarPoint<T extends Datum>({\n pt,\n color,\n animate,\n duration,\n delay,\n tooltip\n}: {\n pt: { x: number; y: number; datum: T; index: number };\n color: string;\n animate: boolean;\n duration: number;\n delay: number;\n tooltip?: (d: T, i: number) => TooltipContent;\n}) {\n const [hovered, setHovered] = useState(false);\n const leaveTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const { innerWidth, innerHeight, svgRef, margin, registerClearTooltip, clearAllTooltips } = useChart();\n\n useEffect(() => {\n const clear = () => {\n if (leaveTimeoutRef.current) clearTimeout(leaveTimeoutRef.current);\n setHovered(false);\n };\n return registerClearTooltip(clear);\n }, [registerClearTooltip]);\n\n const handleEnter = () => {\n if (leaveTimeoutRef.current) clearTimeout(leaveTimeoutRef.current);\n clearAllTooltips();\n setHovered(true);\n };\n\n const handleLeave = () => {\n leaveTimeoutRef.current = setTimeout(() => setHovered(false), HOVER_LEAVE_DELAY);\n };\n\n return (\n <g>\n <circle\n cx={pt.x}\n cy={pt.y}\n r={5}\n fill={color}\n stroke=\"var(--msc-panel)\"\n strokeWidth={2}\n style={{\n cursor: tooltip ? \"pointer\" : undefined,\n ...(animate\n ? { animation: `msc-marker-pop 400ms ease-out ${delay}ms both` }\n : {})\n }}\n onMouseEnter={handleEnter}\n onMouseLeave={handleLeave}\n />\n {tooltip && hovered && (\n <TooltipPortal\n anchorX={pt.x}\n anchorY={pt.y}\n containerWidth={innerWidth}\n containerHeight={innerHeight}\n svgRef={svgRef}\n margin={margin}\n >\n <DefaultTooltip {...tooltip(pt.datum, pt.index)} />\n </TooltipPortal>\n )}\n </g>\n );\n}\n","import React from \"react\";\nimport { Chart } from \"../primitives/Chart\";\nimport { PolarAreaSeries } from \"../series/PolarAreaSeries\";\nimport { Legend } from \"../primitives/Legend\";\nimport type { Datum, Accessor } from \"../types\";\nimport type { TooltipContent } from \"../series/BarSeries\";\n\nconst DEFAULT_COLORS = [\n \"var(--msc-s1)\",\n \"var(--msc-s2)\",\n \"var(--msc-s3)\",\n \"var(--msc-s4)\",\n \"var(--msc-s5)\"\n];\n\nexport function PolarAreaChart<T extends Datum>({\n data,\n value,\n label,\n colors = DEFAULT_COLORS,\n width = 280,\n height = 260,\n margin = { top: 16, right: 16, bottom: 16, left: 16 },\n showLegend = true,\n showValues = true,\n valueFormat = (v) => String(v),\n animate = true,\n defs,\n tooltip\n}: {\n data: T[];\n value: Accessor<T, number>;\n label?: Accessor<T, string>;\n colors?: string[];\n width?: number;\n height?: number;\n margin?: { top?: number; right?: number; bottom?: number; left?: number };\n showLegend?: boolean;\n showValues?: boolean;\n valueFormat?: (value: number) => string;\n animate?: boolean;\n defs?: React.ReactNode;\n tooltip?: (d: T, i: number) => TooltipContent;\n}) {\n const getColor = (i: number): string =>\n colors[i % colors.length] ?? colors[0] ?? \"var(--msc-s1)\";\n\n const legendItems = data.map((d, i) => ({\n label: label ? label(d, i) : `Item ${i + 1}`,\n value: showValues ? valueFormat(value(d, i)) : undefined,\n color: getColor(i)\n }));\n\n const chartMargin = {\n top: margin.top ?? 16,\n right: margin.right ?? 16,\n bottom: margin.bottom ?? 16,\n left: margin.left ?? 16\n };\n\n return (\n <div>\n <Chart width={width} height={height} margin={chartMargin}>\n {defs}\n <PolarAreaSeries\n data={data}\n value={value}\n colors={colors}\n animate={animate}\n tooltip={tooltip}\n />\n </Chart>\n {showLegend && <Legend items={legendItems} />}\n </div>\n );\n}\n","import React, { useMemo } from \"react\";\nimport { scaleLinear, scaleBand } from \"d3-scale\";\nimport { Chart } from \"../primitives/Chart\";\nimport { Grid } from \"../primitives/Grid\";\nimport { AxisBottom, AxisLeft, AxisRight } from \"../primitives/Axis\";\nimport { LineSeries } from \"../series/LineSeries\";\nimport type { Datum, Accessor } from \"../types\";\nimport type { TooltipContent } from \"../series/BarSeries\";\n\nexport function MultiaxisLineChart<T extends Datum>({\n data,\n x,\n leftLine,\n rightLine,\n leftLabel = \"Left\",\n rightLabel = \"Right\",\n leftStroke = \"var(--msc-s1)\",\n rightStroke = \"var(--msc-s2)\",\n width = 400,\n height = 240,\n margin = { top: 24, right: 48, bottom: 28, left: 48 },\n showMarkers = true,\n defs,\n leftTooltip,\n rightTooltip\n}: {\n data: T[];\n x: Accessor<T, string | number>;\n leftLine: Accessor<T, number>;\n rightLine: Accessor<T, number>;\n leftLabel?: string;\n rightLabel?: string;\n leftStroke?: string;\n rightStroke?: string;\n width?: number;\n height?: number;\n margin?: { top?: number; right?: number; bottom?: number; left?: number };\n showMarkers?: boolean;\n defs?: React.ReactNode;\n leftTooltip?: (d: T, i: number) => TooltipContent;\n rightTooltip?: (d: T, i: number) => TooltipContent;\n}) {\n const chartMargin = {\n top: margin.top ?? 24,\n right: margin.right ?? 48,\n bottom: margin.bottom ?? 28,\n left: margin.left ?? 48\n };\n\n const innerW = width - (chartMargin.left ?? 0) - (chartMargin.right ?? 0);\n const innerH = height - (chartMargin.top ?? 0) - (chartMargin.bottom ?? 0);\n\n const leftVals = data.map((d, i) => leftLine(d, i));\n const rightVals = data.map((d, i) => rightLine(d, i));\n\n const leftYScale = useMemo(\n () =>\n scaleLinear()\n .domain([Math.min(...leftVals, 0), Math.max(...leftVals)])\n .nice()\n .range([innerH, 0]),\n [leftVals, innerH]\n );\n\n const rightYScale = useMemo(\n () =>\n scaleLinear()\n .domain([Math.min(...rightVals, 0), Math.max(...rightVals)])\n .nice()\n .range([innerH, 0]),\n [rightVals, innerH]\n );\n\n const xScale = useMemo(() => {\n const labels = data.map((d, i) => String(x(d, i)));\n return scaleBand<string>().domain(labels).range([0, innerW]).padding(0.25);\n }, [data, x, innerW]);\n\n const lineXScale = useMemo(() => {\n const domain = xScale.domain();\n const firstLabel = domain[0] ?? \"\";\n const lastLabel = domain[domain.length - 1] ?? firstLabel;\n const first = (xScale(firstLabel) ?? 0) + xScale.bandwidth() / 2;\n const last = (xScale(lastLabel) ?? first) + xScale.bandwidth() / 2;\n return scaleLinear().domain([0, data.length - 1]).range([first, last]);\n }, [xScale, data.length]);\n\n const bottomTicks = useMemo(\n () =>\n data.map((d, i) => ({\n value: String(x(d, i)),\n x: (xScale(String(x(d, i))) ?? 0) + xScale.bandwidth() / 2,\n y: innerH\n })),\n [data, x, xScale, innerH]\n );\n\n const leftTicks = useMemo(\n () => leftYScale.ticks(5).map((v) => ({ value: String(v), x: 0, y: leftYScale(v) })),\n [leftYScale]\n );\n\n const rightTicks = useMemo(\n () =>\n rightYScale.ticks(5).map((v) => ({\n value: String(v),\n x: innerW,\n y: rightYScale(v)\n })),\n [rightYScale, innerW]\n );\n\n const xTicks = xScale.domain().map((m) => (xScale(m) ?? 0) + xScale.bandwidth() / 2);\n const yTicks = leftYScale.ticks(5).map((v) => leftYScale(v));\n\n const defaultLeftTooltip: (d: T, i: number) => TooltipContent =\n leftTooltip ??\n ((d, i) => ({\n title: String(x(d, i)),\n rows: [{ label: leftLabel, value: String(leftLine(d, i)), color: leftStroke }]\n }));\n\n const defaultRightTooltip: (d: T, i: number) => TooltipContent =\n rightTooltip ??\n ((d, i) => ({\n title: String(x(d, i)),\n rows: [{ label: rightLabel, value: String(rightLine(d, i)), color: rightStroke }]\n }));\n\n return (\n <Chart width={width} height={height} margin={chartMargin}>\n {defs}\n <Grid xTicks={xTicks} yTicks={yTicks} />\n <AxisLeft ticks={leftTicks} />\n <AxisRight ticks={rightTicks} x={innerW} />\n <AxisBottom ticks={bottomTicks} />\n <LineSeries\n data={data}\n x={(_, i) => i}\n y={leftLine}\n xScale={lineXScale}\n yScale={leftYScale}\n stroke={leftStroke}\n showMarkers={showMarkers}\n tooltip={defaultLeftTooltip}\n />\n <LineSeries\n data={data}\n x={(_, i) => i}\n y={rightLine}\n xScale={lineXScale}\n yScale={rightYScale}\n stroke={rightStroke}\n showMarkers={showMarkers}\n tooltip={defaultRightTooltip}\n />\n </Chart>\n );\n}\n","import React, { useState, useRef, useEffect } from \"react\";\nimport type { ScaleContinuousNumeric } from \"d3-scale\";\nimport type { Datum, Accessor } from \"../types\";\nimport { TooltipPortal, DefaultTooltip } from \"../primitives/Tooltip\";\nimport { useChart } from \"../primitives/Chart\";\nimport type { TooltipContent } from \"./BarSeries\";\n\nconst HOVER_LEAVE_DELAY = 150;\n\nexport function ScatterSeries<T extends Datum>({\n data,\n x,\n y,\n xScale,\n yScale,\n fill = \"var(--msc-s1)\",\n stroke = \"var(--msc-panel)\",\n strokeWidth = 2,\n radius = 5,\n animate = true,\n duration = 400,\n hoverDimOpacity = 0.5,\n tooltip\n}: {\n data: T[];\n x: Accessor<T, number>;\n y: Accessor<T, number>;\n xScale: ScaleContinuousNumeric<number, number>;\n yScale: ScaleContinuousNumeric<number, number>;\n fill?: string;\n stroke?: string;\n strokeWidth?: number;\n radius?: number;\n animate?: boolean;\n duration?: number;\n hoverDimOpacity?: number;\n tooltip?: (d: T, i: number) => TooltipContent;\n}) {\n const [hoveredIndex, setHoveredIndex] = useState<number | null>(null);\n const leaveTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const { innerWidth, innerHeight, svgRef, margin, registerClearTooltip, clearAllTooltips } = useChart();\n\n const clearTooltip = () => {\n if (leaveTimeoutRef.current) clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = null;\n setHoveredIndex(null);\n };\n\n useEffect(() => {\n return registerClearTooltip(clearTooltip);\n }, [registerClearTooltip]);\n\n const handleEnter = (i: number) => {\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = null;\n }\n clearAllTooltips();\n setHoveredIndex(i);\n };\n\n const handleLeave = () => {\n leaveTimeoutRef.current = setTimeout(clearTooltip, HOVER_LEAVE_DELAY);\n };\n\n return (\n <g>\n {data.map((d, i) => {\n const xx = xScale(x(d, i));\n const yy = yScale(y(d, i));\n if (!Number.isFinite(xx) || !Number.isFinite(yy)) return null;\n const isHovered = hoveredIndex === i;\n const opacity = hoveredIndex === null ? 0.92 : isHovered ? 1 : hoverDimOpacity;\n\n return (\n <g key={i}>\n <circle\n cx={xx}\n cy={yy}\n r={radius}\n fill={fill}\n stroke={stroke}\n strokeWidth={strokeWidth}\n opacity={opacity}\n style={{\n transition: \"opacity 0.2s ease\",\n cursor: tooltip ? \"pointer\" : undefined,\n ...(animate\n ? { animation: `msc-marker-pop ${duration}ms ease-out ${i * 50}ms both` }\n : {})\n }}\n onMouseEnter={() => handleEnter(i)}\n onMouseLeave={handleLeave}\n />\n {tooltip && isHovered && (\n <TooltipPortal\n anchorX={xx}\n anchorY={yy}\n containerWidth={innerWidth}\n containerHeight={innerHeight}\n svgRef={svgRef}\n margin={margin}\n >\n <DefaultTooltip {...tooltip(d, i)} />\n </TooltipPortal>\n )}\n </g>\n );\n })}\n </g>\n );\n}\n","import React, { useState, useRef, useEffect, useMemo } from \"react\";\nimport type { ScaleContinuousNumeric } from \"d3-scale\";\nimport type { Datum, Accessor } from \"../types\";\nimport { TooltipPortal, DefaultTooltip } from \"../primitives/Tooltip\";\nimport { useChart } from \"../primitives/Chart\";\nimport type { TooltipContent } from \"./BarSeries\";\n\nconst HOVER_LEAVE_DELAY = 150;\nconst MIN_RADIUS = 4;\nconst MAX_RADIUS = 24;\n\nexport function BubbleSeries<T extends Datum>({\n data,\n x,\n y,\n size,\n xScale,\n yScale,\n fill = \"var(--msc-s1)\",\n stroke = \"var(--msc-panel)\",\n strokeWidth = 2,\n fillOpacity = 0.7,\n animate = true,\n duration = 400,\n hoverDimOpacity = 0.5,\n tooltip\n}: {\n data: T[];\n x: Accessor<T, number>;\n y: Accessor<T, number>;\n size: Accessor<T, number>;\n xScale: ScaleContinuousNumeric<number, number>;\n yScale: ScaleContinuousNumeric<number, number>;\n fill?: string;\n stroke?: string;\n strokeWidth?: number;\n fillOpacity?: number;\n animate?: boolean;\n duration?: number;\n hoverDimOpacity?: number;\n tooltip?: (d: T, i: number) => TooltipContent;\n}) {\n const [hoveredIndex, setHoveredIndex] = useState<number | null>(null);\n const leaveTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const { innerWidth, innerHeight, svgRef, margin, registerClearTooltip, clearAllTooltips } = useChart();\n\n const sizeScale = useMemo(() => {\n const sizes = data.map((d, i) => size(d, i));\n const min = Math.min(...sizes);\n const max = Math.max(...sizes);\n return (v: number) => {\n if (max === min) return (MIN_RADIUS + MAX_RADIUS) / 2;\n const t = (v - min) / (max - min);\n return MIN_RADIUS + t * (MAX_RADIUS - MIN_RADIUS);\n };\n }, [data, size]);\n\n const clearTooltip = () => {\n if (leaveTimeoutRef.current) clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = null;\n setHoveredIndex(null);\n };\n\n useEffect(() => {\n return registerClearTooltip(clearTooltip);\n }, [registerClearTooltip]);\n\n const handleEnter = (i: number) => {\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = null;\n }\n clearAllTooltips();\n setHoveredIndex(i);\n };\n\n const handleLeave = () => {\n leaveTimeoutRef.current = setTimeout(clearTooltip, HOVER_LEAVE_DELAY);\n };\n\n return (\n <g>\n {data.map((d, i) => {\n const xx = xScale(x(d, i));\n const yy = yScale(y(d, i));\n if (!Number.isFinite(xx) || !Number.isFinite(yy)) return null;\n const r = sizeScale(size(d, i));\n const isHovered = hoveredIndex === i;\n const opacity = hoveredIndex === null ? fillOpacity : isHovered ? fillOpacity : hoverDimOpacity;\n\n return (\n <g key={i}>\n <circle\n cx={xx}\n cy={yy}\n r={r}\n fill={fill}\n stroke={stroke}\n strokeWidth={strokeWidth}\n fillOpacity={opacity}\n style={{\n transition: \"opacity 0.2s ease\",\n cursor: tooltip ? \"pointer\" : undefined,\n ...(animate\n ? { animation: `msc-marker-pop ${duration}ms ease-out ${i * 50}ms both` }\n : {})\n }}\n onMouseEnter={() => handleEnter(i)}\n onMouseLeave={handleLeave}\n />\n {tooltip && isHovered && (\n <TooltipPortal\n anchorX={xx}\n anchorY={yy}\n containerWidth={innerWidth}\n containerHeight={innerHeight}\n svgRef={svgRef}\n margin={margin}\n >\n <DefaultTooltip {...tooltip(d, i)} />\n </TooltipPortal>\n )}\n </g>\n );\n })}\n </g>\n );\n}\n","import React, { useMemo, useState, useRef, useEffect } from \"react\";\nimport { useChart } from \"../primitives/Chart\";\nimport { TooltipPortal, DefaultTooltip } from \"../primitives/Tooltip\";\n\nexport type HeatmapCell = {\n value: number;\n label?: string;\n};\n\nfunction interpolateColor(\n t: number,\n stops: Array<{ offset: number; color: string }>\n): string {\n if (stops.length === 0) return \"var(--msc-grid)\";\n const first = stops[0];\n if (stops.length === 1 || !first) return first?.color ?? \"var(--msc-grid)\";\n t = Math.max(0, Math.min(1, t));\n for (let i = 0; i < stops.length - 1; i++) {\n const a = stops[i];\n const b = stops[i + 1];\n if (a && b && t >= a.offset && t <= b.offset) {\n const local = (t - a.offset) / (b.offset - a.offset || 1);\n return lerpColor(a.color, b.color, local);\n }\n }\n const last = stops[stops.length - 1];\n return last?.color ?? \"var(--msc-grid)\";\n}\n\nfunction lerpColor(a: string, b: string, t: number): string {\n const parse = (hex: string): [number, number, number] => {\n const m = hex.match(/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i);\n return m ? [parseInt(m[1] ?? \"0\", 16), parseInt(m[2] ?? \"0\", 16), parseInt(m[3] ?? \"0\", 16)] : [0, 0, 0];\n };\n const [r1, g1, b1] = parse(a);\n const [r2, g2, b2] = parse(b);\n const r = Math.round(r1 + (r2 - r1) * t);\n const g = Math.round(g1 + (g2 - g1) * t);\n const bl = Math.round(b1 + (b2 - b1) * t);\n return `rgb(${r},${g},${bl})`;\n}\n\nexport type HeatmapGradientStop = { offset: number; color: string };\n\nexport function HeatmapSeries({\n rows,\n columns,\n data,\n colorScale = [\"#93c5fd\", \"#3b82f6\", \"#8b5cf6\", \"#7c3aed\"],\n gradientStops,\n animate = true,\n duration = 300,\n hoverDimOpacity = 0.7,\n tooltip\n}: {\n rows: string[];\n columns: string[];\n data: HeatmapCell[][];\n colorScale?: string[];\n gradientStops?: HeatmapGradientStop[];\n animate?: boolean;\n duration?: number;\n hoverDimOpacity?: number;\n tooltip?: (row: string, col: string, cell: HeatmapCell) => { title: string; rows: Array<{ label: string; value: string; color: string }> };\n}) {\n const [hovered, setHovered] = useState<{ r: number; c: number } | null>(null);\n const leaveTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const { innerWidth, innerHeight, svgRef, margin, registerClearTooltip, clearAllTooltips } = useChart();\n\n const clearTooltip = () => {\n if (leaveTimeoutRef.current) clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = null;\n setHovered(null);\n };\n\n useEffect(() => {\n return registerClearTooltip(clearTooltip);\n }, [registerClearTooltip]);\n\n const handleEnter = (r: number, c: number) => {\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = null;\n }\n clearAllTooltips();\n setHovered({ r, c });\n };\n\n const handleLeave = () => {\n leaveTimeoutRef.current = setTimeout(clearTooltip, 150);\n };\n\n const { cellWidth, cellHeight, minVal, maxVal } = useMemo(() => {\n const cellW = innerWidth / Math.max(columns.length, 1);\n const cellH = innerHeight / Math.max(rows.length, 1);\n let min = Infinity;\n let max = -Infinity;\n data.forEach((row) =>\n row.forEach((cell) => {\n if (cell.value < min) min = cell.value;\n if (cell.value > max) max = cell.value;\n })\n );\n if (min === Infinity) min = 0;\n if (max === -Infinity) max = 1;\n return { cellWidth: cellW, cellHeight: cellH, minVal: min, maxVal: max };\n }, [innerWidth, innerHeight, columns.length, rows.length, data]);\n\n const getColor = (value: number) => {\n const t = maxVal === minVal ? 0 : (value - minVal) / (maxVal - minVal);\n if (gradientStops && gradientStops.length > 0) {\n return interpolateColor(t, gradientStops);\n }\n if (colorScale.length === 0) return \"var(--msc-grid)\";\n const idx = Math.min(\n Math.floor(t * (colorScale.length - 1)),\n colorScale.length - 1\n );\n return colorScale[idx];\n };\n\n return (\n <g>\n {rows.map((rowLabel, r) => (\n <text\n key={`row-${r}`}\n x={-8}\n y={r * cellHeight + cellHeight / 2}\n textAnchor=\"end\"\n fontSize={10}\n fill=\"var(--msc-muted)\"\n dy=\"0.32em\"\n >\n {rowLabel}\n </text>\n ))}\n {columns.map((colLabel, c) => (\n <text\n key={`col-${c}`}\n x={c * cellWidth + cellWidth / 2}\n y={innerHeight + 16}\n textAnchor=\"middle\"\n fontSize={10}\n fill=\"var(--msc-muted)\"\n >\n {colLabel}\n </text>\n ))}\n {rows.map((rowLabel, r) =>\n columns.map((colLabel, c) => {\n const cell = data[r]?.[c] ?? { value: 0 };\n const x = c * cellWidth;\n const y = r * cellHeight;\n const isHovered = hovered?.r === r && hovered?.c === c;\n const opacity = hovered === null ? 1 : isHovered ? 1 : hoverDimOpacity;\n\n return (\n <g key={`${r}-${c}`}>\n <rect\n x={x + 1}\n y={y + 1}\n width={cellWidth - 2}\n height={cellHeight - 2}\n fill={getColor(cell.value)}\n opacity={opacity}\n rx={2}\n style={{\n ...(animate\n ? { animation: `msc-area-reveal ${duration}ms ease-out ${(r * columns.length + c) * 20}ms both` }\n : {}),\n transition: \"opacity 0.2s ease\",\n cursor: tooltip ? \"pointer\" : undefined\n }}\n onMouseEnter={() => handleEnter(r, c)}\n onMouseLeave={handleLeave}\n />\n {tooltip && isHovered && (\n <TooltipPortal\n anchorX={x + cellWidth / 2}\n anchorY={y + cellHeight / 2}\n containerWidth={innerWidth}\n containerHeight={innerHeight}\n svgRef={svgRef}\n margin={margin}\n >\n <DefaultTooltip {...tooltip(rowLabel, colLabel, cell)} />\n </TooltipPortal>\n )}\n </g>\n );\n })\n )}\n </g>\n );\n}\n","import { bisector } from \"d3-array\";\nimport type { Datum, Accessor } from \"../types\";\n\nexport type NearestPoint<T extends Datum> = {\n index: number;\n datum: T;\n x: number;\n y: number;\n distance: number;\n};\n\nexport function useNearestPoint<T extends Datum>(\n data: T[],\n xAccessor: Accessor<T, number>,\n xScale: (x: number) => number,\n yAccessor: Accessor<T, number>,\n yScale: (y: number) => number\n) {\n const b = bisector((d: T) => xAccessor(d, 0)).center;\n\n return function findNearest(pointerX: number): NearestPoint<T> | null {\n if (!data.length) return null;\n // map pointer x (pixels) back into domain with a small numerical search by nearest pixel\n // We approximate by searching across xAccessor values using scale inversion is not guaranteed.\n // Prefer passing an invertible scale for x; for linear/time scales, you can wrap invert externally later.\n // Here we find nearest by scanning centered bisector on xAccessor domain using an approximate invert:\n // We'll binary search in data using xAccessor in domain space by mapping pointerX to a proportional index\n const lastDatum = data[data.length - 1];\n if (lastDatum === undefined) return null;\n const approxIndex = Math.round((pointerX / Math.max(xScale(xAccessor(lastDatum, data.length - 1)), 1)) * (data.length - 1));\n const seed = Math.max(0, Math.min(data.length - 1, approxIndex));\n const idx = Math.max(0, Math.min(data.length - 1, seed));\n const d = data[idx];\n if (d === undefined) return null;\n const x = xScale(xAccessor(d, idx));\n const y = yScale(yAccessor(d, idx));\n const distance = Math.abs(pointerX - x);\n return { index: idx, datum: d, x, y, distance };\n };\n}\n"]}
|