gridsmith-ui 0.6.2 → 0.6.4

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/dist/charts.d.ts CHANGED
@@ -236,10 +236,12 @@ interface ChartContainerProps {
236
236
  title?: string;
237
237
  loading?: boolean;
238
238
  emptyState?: ReactNode;
239
+ /** "default" is a card surface. "ghost" drops surface, border, shadow and padding for charts embedded in another container. */
240
+ variant?: "default" | "ghost";
239
241
  children: ReactNode;
240
242
  className?: string;
241
243
  }
242
- declare function ChartContainer({ height, title, loading, emptyState, children, className, }: ChartContainerProps): react_jsx_runtime.JSX.Element;
244
+ declare function ChartContainer({ height, title, loading, emptyState, variant, children, className, }: ChartContainerProps): react_jsx_runtime.JSX.Element;
243
245
 
244
246
  declare function useChartColors(count: number, soft?: boolean): string[];
245
247
 
package/dist/charts.js CHANGED
@@ -991,6 +991,7 @@ function ChartContainer({
991
991
  title,
992
992
  loading = false,
993
993
  emptyState,
994
+ variant = "default",
994
995
  children,
995
996
  className
996
997
  }) {
@@ -998,10 +999,11 @@ function ChartContainer({
998
999
  "div",
999
1000
  {
1000
1001
  className: cn(
1001
- "rounded-[var(--ds-radius-md)]",
1002
- "border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]",
1003
- GLASS_SURFACE,
1004
- "p-ds-4",
1002
+ variant === "ghost" ? "bg-transparent" : cn(
1003
+ "rounded-[var(--ds-radius-md)] p-ds-4",
1004
+ "bg-[var(--ds-bg-surface)] border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]",
1005
+ GLASS_SURFACE
1006
+ ),
1005
1007
  className
1006
1008
  ),
1007
1009
  children: [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../showcase/src/lib/chart-utils.ts","../../../showcase/src/components/charts/ChartPrimitives.tsx","../../../showcase/src/components/charts/ChartWrapper.tsx","../../../showcase/src/components/charts/BarChart.tsx","../../../showcase/src/components/charts/LineChart.tsx","../../../showcase/src/components/charts/AreaChart.tsx","../../../showcase/src/components/charts/PieChart.tsx","../../../showcase/src/components/charts/CompositeChart.tsx","../../../showcase/src/components/charts/ScatterChart.tsx","../../../showcase/src/components/charts/RadarChart.tsx","../../../showcase/src/components/charts/RadialBarChart.tsx","../../../showcase/src/components/charts/FunnelChart.tsx","../../../showcase/src/components/charts/TreemapChart.tsx","../../../showcase/src/components/charts/SankeyChart.tsx","../../../showcase/src/components/charts/Sparkline.tsx","../../../showcase/src/components/ChartContainer.tsx"],"names":["ChartWrapper","jsx","forwardRef","BarChart","jsxs","RechartsBarChart","LineChart","ResponsiveContainer","RechartsLineChart","CartesianGrid","XAxis","YAxis","Tooltip","Legend","AreaChart","RechartsAreaChart","PieChart","RechartsPieChart","CompositeChart","Bar","Line","ScatterChart","RechartsScatterChart","RadarChart","RechartsRadarChart","RadialBarChart","RechartsRadialBarChart","FunnelChart","RechartsFunnelChart","TreemapChart","SankeyChart","RechartsSankey","Sparkline","useId","Area","HEIGHT_MAP"],"mappings":"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","file":"charts.js","sourcesContent":["import { useState, useLayoutEffect, useSyncExternalStore } from \"react\";\n\nconst CHART_TOKENS = [\n \"--ds-chart-1\",\n \"--ds-chart-2\",\n \"--ds-chart-3\",\n \"--ds-chart-4\",\n \"--ds-chart-5\",\n \"--ds-chart-6\",\n] as const;\n\nconst CHART_TOKENS_SOFT = [\n \"--ds-chart-1-soft\",\n \"--ds-chart-2-soft\",\n \"--ds-chart-3-soft\",\n \"--ds-chart-4-soft\",\n \"--ds-chart-5-soft\",\n \"--ds-chart-6-soft\",\n] as const;\n\nconst FALLBACK_COLORS: Record<string, string> = {\n \"--ds-chart-1\": \"#6366f1\",\n \"--ds-chart-2\": \"#d97706\",\n \"--ds-chart-3\": \"#059669\",\n \"--ds-chart-4\": \"#dc2626\",\n \"--ds-chart-5\": \"#0891b2\",\n \"--ds-chart-6\": \"#7c3aed\",\n \"--ds-chart-1-soft\": \"rgba(99, 102, 241, 0.3)\",\n \"--ds-chart-2-soft\": \"rgba(217, 119, 6, 0.3)\",\n \"--ds-chart-3-soft\": \"rgba(5, 150, 105, 0.3)\",\n \"--ds-chart-4-soft\": \"rgba(220, 38, 38, 0.3)\",\n \"--ds-chart-5-soft\": \"rgba(8, 145, 178, 0.3)\",\n \"--ds-chart-6-soft\": \"rgba(124, 58, 237, 0.3)\",\n \"--ds-bg-surface\": \"#ffffff\",\n \"--ds-border-subtle\": \"#e5e7eb\",\n \"--ds-text-primary\": \"#111827\",\n \"--ds-text-secondary\": \"#6b7280\",\n \"--ds-text-muted\": \"#9ca3af\",\n};\n\ntype Subscriber = () => void;\n\nlet modeVersion = 0;\nconst subscribers = new Set<Subscriber>();\nlet observerAttached = false;\n\nfunction attachObserver() {\n if (observerAttached || typeof document === \"undefined\") return;\n observerAttached = true;\n\n const observer = new MutationObserver((mutations) => {\n for (const m of mutations) {\n if (m.attributeName === \"data-mode\") {\n modeVersion++;\n for (const sub of subscribers) sub();\n break;\n }\n }\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"data-mode\"],\n });\n}\n\nfunction subscribe(cb: Subscriber) {\n attachObserver();\n subscribers.add(cb);\n return () => { subscribers.delete(cb); };\n}\n\nfunction getSnapshot() {\n return modeVersion;\n}\n\nfunction getServerSnapshot() {\n return 0;\n}\n\nexport function resolveToken(token: string): string {\n if (typeof document === \"undefined\") return FALLBACK_COLORS[token] ?? \"#6366f1\";\n const val = getComputedStyle(document.documentElement).getPropertyValue(token).trim();\n return val || FALLBACK_COLORS[token] || \"#6366f1\";\n}\n\nexport function useChartColors(count: number, soft = false): string[] {\n const version = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n const [colors, setColors] = useState<string[]>(() => fallbackColors(count, soft));\n\n useLayoutEffect(() => {\n setColors(resolveColors(count, soft));\n }, [count, soft, version]);\n\n return colors;\n}\n\nfunction fallbackColors(count: number, soft: boolean): string[] {\n const tokens = soft ? CHART_TOKENS_SOFT : CHART_TOKENS;\n const result: string[] = [];\n for (let i = 0; i < count; i++) {\n const token = tokens[i % tokens.length];\n result.push(FALLBACK_COLORS[token] ?? \"#6366f1\");\n }\n return result;\n}\n\nfunction resolveColors(count: number, soft: boolean): string[] {\n const tokens = soft ? CHART_TOKENS_SOFT : CHART_TOKENS;\n const result: string[] = [];\n for (let i = 0; i < count; i++) {\n const token = tokens[i % tokens.length];\n result.push(resolveToken(token));\n }\n return result;\n}\n\nexport function useResolvedToken(token: string): string {\n const version = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n const [value, setValue] = useState(() => FALLBACK_COLORS[token] ?? \"#6366f1\");\n\n useLayoutEffect(() => {\n setValue(resolveToken(token));\n }, [token, version]);\n\n return value;\n}\n\nexport function useReducedMotion(): boolean {\n const [reduced, setReduced] = useState(() => {\n if (typeof window === \"undefined\") return false;\n return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n });\n\n useLayoutEffect(() => {\n const mql = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n const handler = (e: MediaQueryListEvent) => setReduced(e.matches);\n mql.addEventListener(\"change\", handler);\n return () => mql.removeEventListener(\"change\", handler);\n }, []);\n\n return reduced;\n}\n\nexport const useChartAnimation = (animated?: boolean): boolean => {\n const reduced = useReducedMotion();\n return animated !== false && !reduced;\n};\n","import { Text } from \"recharts\";\nimport { useResolvedToken } from \"../../lib/chart-utils\";\n\ninterface ChartTooltipContentProps {\n active?: boolean;\n payload?: Array<{\n name: string;\n value: number | string;\n color: string;\n dataKey?: string;\n payload?: Record<string, unknown>;\n }>;\n label?: string;\n}\n\nexport function ChartTooltipContent({ active, payload, label }: ChartTooltipContentProps) {\n const bgSurface = useResolvedToken(\"--ds-bg-surface\");\n const borderSubtle = useResolvedToken(\"--ds-border-subtle\");\n const textPrimary = useResolvedToken(\"--ds-text-primary\");\n const textSecondary = useResolvedToken(\"--ds-text-secondary\");\n\n if (!active || !payload?.length) return null;\n\n const showLabel = label != null && label !== \"\" && typeof label !== \"number\";\n\n return (\n <div\n className=\"rounded-[var(--ds-radius-md)] shadow-[var(--ds-shadow-popover)] font-[family-name:var(--ds-font-sans)] text-sm\"\n style={{\n backgroundColor: bgSurface,\n border: `var(--ds-border-width) solid ${borderSubtle}`,\n padding: \"var(--ds-space-2) var(--ds-space-3)\",\n }}\n >\n {showLabel && (\n <p className=\"font-medium mb-ds-1\" style={{ color: textPrimary }}>\n {label}\n </p>\n )}\n {payload.map((entry, i) => {\n const dotColor = (entry.payload?.fill as string) || entry.color || textSecondary;\n const displayName = (typeof entry.payload?.name === \"string\" && entry.payload.name) || entry.name;\n return (\n <div key={i} className=\"flex items-center gap-ds-2\" style={{ marginTop: i > 0 ? 2 : 0 }}>\n <span\n className=\"shrink-0 rounded-[var(--ds-radius-full)]\"\n style={{ width: 8, height: 8, backgroundColor: dotColor }}\n />\n <span style={{ color: textSecondary }}>{displayName}:</span>\n <span className=\"tabular-nums\" style={{ color: textPrimary }}>\n {typeof entry.value === \"number\" ? entry.value.toLocaleString() : entry.value}\n </span>\n </div>\n );\n })}\n </div>\n );\n}\n\ninterface ChartLegendContentProps {\n payload?: Array<{\n value: string;\n color: string;\n dataKey?: string;\n }>;\n}\n\nexport function ChartLegendContent({ payload }: ChartLegendContentProps) {\n const textSecondary = useResolvedToken(\"--ds-text-secondary\");\n\n if (!payload?.length) return null;\n\n return (\n <div className=\"flex flex-wrap justify-center gap-y-ds-1 gap-x-ds-4 font-[family-name:var(--ds-font-sans)] text-sm\">\n {payload.map((entry, i) => (\n <div key={i} className=\"flex items-center gap-ds-1.5\">\n <span\n className=\"shrink-0 rounded-[var(--ds-radius-full)]\"\n style={{ width: 8, height: 8, backgroundColor: entry.color }}\n />\n <span style={{ color: textSecondary }}>{entry.value}</span>\n </div>\n ))}\n </div>\n );\n}\n\nexport function useGridStroke(): string {\n return useResolvedToken(\"--ds-border-subtle\");\n}\n\nexport function useAxisStyle() {\n const textMuted = useResolvedToken(\"--ds-text-muted\");\n\n return {\n tick: {\n fontSize: \"var(--ds-font-size-xs)\",\n fontFamily: \"var(--ds-font-sans)\",\n fill: textMuted,\n },\n };\n}\n\nexport function useRadius(): number {\n const val = useResolvedToken(\"--ds-radius-md\");\n const parsed = parseInt(val, 10);\n return isNaN(parsed) ? 6 : parsed;\n}\n/**\n * Recharts' `tick` prop as an object only passes SVG-valid properties.\n * Props like `maxLines`, `verticalAnchor` are stripped. We must use a\n * function to pass them to the internal Text component.\n */\nexport function xAxisTick(props: Record<string, unknown>) {\n const { x, y, payload, width, visibleTicksCount, ...rest } = props as {\n x: number; y: number; payload: { value: string };\n width?: number; visibleTicksCount?: number;[k: string]: unknown;\n };\n const tickWidth = width && visibleTicksCount ? Math.floor(width / visibleTicksCount) : 100;\n return (\n <Text {...rest} x={x} y={y} width={tickWidth} textAnchor=\"middle\" verticalAnchor=\"start\" maxLines={2}>\n {payload.value}\n </Text>\n );\n}\n\nexport function yAxisTick(props: Record<string, unknown>) {\n const { x, y, payload, ...rest } = props as { x: number; y: number; payload: { value: string };[k: string]: unknown };\n return (\n <Text {...rest} x={x} y={y} textAnchor=\"end\" verticalAnchor=\"middle\" width={200} maxLines={2}>\n {payload.value}\n </Text>\n );\n}\n\n","import { createContext, forwardRef, useContext, type ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport const ChartContainerContext = createContext(false);\n\nexport function useInsideChartContainer(): boolean {\n return useContext(ChartContainerContext);\n}\n\nconst HEIGHT_MAP: Record<string, string> = {\n sm: \"var(--ds-chart-height-sm)\",\n md: \"var(--ds-chart-height-md)\",\n lg: \"var(--ds-chart-height-lg)\",\n};\n\nexport interface ChartWrapperProps {\n height?: \"sm\" | \"md\" | \"lg\" | number;\n className?: string;\n children: ReactNode;\n \"aria-label\"?: string;\n}\n\nexport const ChartWrapper = forwardRef<HTMLDivElement, ChartWrapperProps>(function ChartWrapper({ height = \"md\", className, children, \"aria-label\": ariaLabel }, ref) {\n const insideContainer = useInsideChartContainer();\n\n if (insideContainer) {\n return (\n <div ref={ref} className={cn(\"h-full w-full\", className)} {...(ariaLabel ? { role: \"img\", \"aria-label\": ariaLabel } : {})}>\n {children}\n </div>\n );\n }\n\n const heightValue = typeof height === \"number\" ? `${height}px` : HEIGHT_MAP[height];\n\n return (\n <div ref={ref} className={cn(\"w-full\", className)} style={{ height: heightValue }} {...(ariaLabel ? { role: \"img\", \"aria-label\": ariaLabel } : {})}>\n {children}\n </div>\n );\n});\n","import { forwardRef } from \"react\";\nimport {\n BarChart as RechartsBarChart,\n Bar,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ResponsiveContainer,\n} from \"recharts\";\nimport { useChartColors, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent, ChartLegendContent, useGridStroke, useAxisStyle, useRadius, xAxisTick, yAxisTick } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\n\nexport interface BarDef {\n dataKey: string;\n label?: string;\n soft?: boolean;\n}\n\nexport interface BarChartProps {\n data: Record<string, unknown>[];\n bars: BarDef[];\n xAxisKey: string;\n height?: \"sm\" | \"md\" | \"lg\" | number;\n stacked?: boolean;\n horizontal?: boolean;\n showGrid?: boolean;\n showTooltip?: boolean;\n showLegend?: boolean;\n xAxisLabel?: string;\n yAxisLabel?: string;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const BarChart = forwardRef<HTMLDivElement, BarChartProps>(function BarChart({\n data,\n bars,\n xAxisKey,\n height = \"md\",\n stacked = false,\n horizontal = false,\n showGrid = true,\n showTooltip = true,\n showLegend,\n xAxisLabel,\n yAxisLabel,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const solidColors = useChartColors(bars.length, false);\n const softColors = useChartColors(bars.length, true);\n const gridStroke = useGridStroke();\n const axisStyle = useAxisStyle();\n const isAnimated = useChartAnimation(animated);\n const radius = useRadius();\n const legendVisible = showLegend ?? bars.length >= 2;\n\n const layout = horizontal ? \"vertical\" : \"horizontal\";\n\n function getBarRadius(index: number): [number, number, number, number] {\n if (!stacked) {\n return horizontal ? [0, radius, radius, 0] : [radius, radius, 0, 0];\n }\n const isTopmost = index === bars.length - 1;\n if (!isTopmost) return [0, 0, 0, 0];\n return horizontal ? [0, radius, radius, 0] : [radius, radius, 0, 0];\n }\n\n const axisLabelStyle = { fontSize: \"var(--ds-font-size-xs)\", fontFamily: \"var(--ds-font-sans)\", fill: axisStyle.tick.fill };\n\n if (!data?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsBarChart\n data={data}\n layout={layout}\n margin={{ top: 4, right: 4, bottom: 4, left: 4 }}\n accessibilityLayer\n >\n {showGrid && (\n <CartesianGrid strokeDasharray=\"3 3\" stroke={gridStroke} vertical={!horizontal} horizontal />\n )}\n {horizontal ? (\n <>\n <XAxis\n type=\"number\"\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n label={xAxisLabel ? { value: xAxisLabel, position: \"insideBottom\", offset: -2, style: axisLabelStyle } : undefined}\n />\n <YAxis\n dataKey={xAxisKey}\n type=\"category\"\n width=\"auto\"\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n tick={yAxisTick}\n />\n </>\n ) : (\n <>\n <XAxis\n dataKey={xAxisKey}\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n tick={xAxisTick}\n height=\"auto\"\n label={xAxisLabel ? { value: xAxisLabel, position: \"insideBottom\", offset: -2, style: axisLabelStyle } : undefined}\n />\n <YAxis\n width=\"auto\"\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n label={yAxisLabel ? { value: yAxisLabel, angle: -90, position: \"insideLeft\", style: axisLabelStyle } : undefined}\n />\n </>\n )}\n {showTooltip && <Tooltip content={<ChartTooltipContent />} cursor={{ fill: \"var(--ds-bg-muted)\", opacity: 0.5 }} />}\n {legendVisible && <Legend content={<ChartLegendContent />} wrapperStyle={{ paddingTop: \"var(--ds-space-3)\" }} />}\n {bars.map((bar, i) => (\n <Bar\n key={bar.dataKey}\n dataKey={bar.dataKey}\n name={bar.label ?? bar.dataKey}\n fill={bar.soft ? softColors[i] : solidColors[i]}\n radius={getBarRadius(i)}\n stackId={stacked ? \"stack\" : undefined}\n isAnimationActive={isAnimated}\n />\n ))}\n </RechartsBarChart>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef } from \"react\";\nimport {\n LineChart as RechartsLineChart,\n Line,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ResponsiveContainer,\n} from \"recharts\";\nimport { useChartColors, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent, ChartLegendContent, useGridStroke, useAxisStyle, xAxisTick } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\n\nexport interface LineDef {\n dataKey: string;\n label?: string;\n dashed?: boolean;\n}\n\nexport interface LineChartProps {\n data: Record<string, unknown>[];\n lines: LineDef[];\n xAxisKey: string;\n height?: \"sm\" | \"md\" | \"lg\" | number;\n curved?: boolean;\n showDots?: boolean;\n showGrid?: boolean;\n showTooltip?: boolean;\n showLegend?: boolean;\n xAxisLabel?: string;\n yAxisLabel?: string;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const LineChart = forwardRef<HTMLDivElement, LineChartProps>(function LineChart({\n data,\n lines,\n xAxisKey,\n height = \"md\",\n curved = true,\n showDots = false,\n showGrid = true,\n showTooltip = true,\n showLegend,\n xAxisLabel,\n yAxisLabel,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const colors = useChartColors(lines.length, false);\n const gridStroke = useGridStroke();\n const axisStyle = useAxisStyle();\n const isAnimated = useChartAnimation(animated);\n const legendVisible = showLegend ?? lines.length >= 2;\n const axisLabelStyle = { fontSize: \"var(--ds-font-size-xs)\", fontFamily: \"var(--ds-font-sans)\", fill: axisStyle.tick.fill };\n\n if (!data?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsLineChart data={data} margin={{ top: 4, right: 4, bottom: 4, left: 4 }} accessibilityLayer>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" stroke={gridStroke} />}\n <XAxis\n dataKey={xAxisKey}\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n tick={xAxisTick}\n height=\"auto\"\n label={xAxisLabel ? { value: xAxisLabel, position: \"insideBottom\", offset: -2, style: axisLabelStyle } : undefined}\n />\n <YAxis\n width=\"auto\"\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n label={yAxisLabel ? { value: yAxisLabel, angle: -90, position: \"insideLeft\", style: axisLabelStyle } : undefined}\n />\n {showTooltip && <Tooltip content={<ChartTooltipContent />} />}\n {legendVisible && <Legend content={<ChartLegendContent />} wrapperStyle={{ paddingTop: \"var(--ds-space-3)\" }} />}\n {lines.map((line, i) => (\n <Line\n key={line.dataKey}\n type={curved ? \"monotone\" : \"linear\"}\n dataKey={line.dataKey}\n name={line.label ?? line.dataKey}\n stroke={colors[i]}\n strokeWidth={2}\n strokeDasharray={line.dashed ? \"5 5\" : undefined}\n dot={showDots}\n activeDot={{ r: 5, strokeWidth: 2 }}\n isAnimationActive={isAnimated}\n />\n ))}\n </RechartsLineChart>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef, useId } from \"react\";\nimport {\n AreaChart as RechartsAreaChart,\n Area,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ResponsiveContainer,\n} from \"recharts\";\nimport { useChartColors, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent, ChartLegendContent, useGridStroke, useAxisStyle, xAxisTick } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\n\nexport interface AreaDef {\n dataKey: string;\n label?: string;\n}\n\nexport interface AreaChartProps {\n data: Record<string, unknown>[];\n areas: AreaDef[];\n xAxisKey: string;\n height?: \"sm\" | \"md\" | \"lg\" | number;\n stacked?: boolean;\n curved?: boolean;\n showGrid?: boolean;\n showTooltip?: boolean;\n showLegend?: boolean;\n gradient?: boolean;\n xAxisLabel?: string;\n yAxisLabel?: string;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const AreaChart = forwardRef<HTMLDivElement, AreaChartProps>(function AreaChart({\n data,\n areas,\n xAxisKey,\n height = \"md\",\n stacked = false,\n curved = true,\n showGrid = true,\n showTooltip = true,\n showLegend,\n gradient = true,\n xAxisLabel,\n yAxisLabel,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const instanceId = useId();\n const solidColors = useChartColors(areas.length, false);\n const softColors = useChartColors(areas.length, true);\n const gridStroke = useGridStroke();\n const axisStyle = useAxisStyle();\n const isAnimated = useChartAnimation(animated);\n const legendVisible = showLegend ?? areas.length >= 2;\n const axisLabelStyle = { fontSize: \"var(--ds-font-size-xs)\", fontFamily: \"var(--ds-font-sans)\", fill: axisStyle.tick.fill };\n\n if (!data?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsAreaChart data={data} margin={{ top: 4, right: 4, bottom: 4, left: 4 }} accessibilityLayer>\n <defs>\n {areas.map((area, i) => (\n <linearGradient key={area.dataKey} id={`gradient-${instanceId}-${area.dataKey}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={softColors[i]} stopOpacity={1} />\n <stop offset=\"95%\" stopColor={softColors[i]} stopOpacity={0.1} />\n </linearGradient>\n ))}\n </defs>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" stroke={gridStroke} />}\n <XAxis\n dataKey={xAxisKey}\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n tick={xAxisTick}\n height=\"auto\"\n label={xAxisLabel ? { value: xAxisLabel, position: \"insideBottom\", offset: -2, style: axisLabelStyle } : undefined}\n />\n <YAxis\n width=\"auto\"\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n label={yAxisLabel ? { value: yAxisLabel, angle: -90, position: \"insideLeft\", style: axisLabelStyle } : undefined}\n />\n {showTooltip && <Tooltip content={<ChartTooltipContent />} />}\n {legendVisible && <Legend content={<ChartLegendContent />} wrapperStyle={{ paddingTop: \"var(--ds-space-3)\" }} />}\n {areas.map((area, i) => (\n <Area\n key={area.dataKey}\n type={curved ? \"monotone\" : \"linear\"}\n dataKey={area.dataKey}\n name={area.label ?? area.dataKey}\n stroke={solidColors[i]}\n strokeWidth={2}\n fill={gradient ? `url(#gradient-${instanceId}-${area.dataKey})` : softColors[i]}\n stackId={stacked ? \"stack\" : undefined}\n isAnimationActive={isAnimated}\n />\n ))}\n </RechartsAreaChart>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef } from \"react\";\nimport {\n PieChart as RechartsPieChart,\n Pie,\n Cell,\n Tooltip,\n Legend,\n ResponsiveContainer,\n} from \"recharts\";\nimport { useChartColors, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent, ChartLegendContent } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\n\nexport interface PieChartProps {\n data: { name: string; value: number; [key: string]: unknown }[];\n height?: \"sm\" | \"md\" | \"lg\" | number;\n donut?: boolean;\n showTooltip?: boolean;\n showLegend?: boolean;\n showLabels?: boolean;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const PieChart = forwardRef<HTMLDivElement, PieChartProps>(function PieChart({\n data,\n height = \"md\",\n donut = false,\n showTooltip = true,\n showLegend = true,\n showLabels = false,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const colors = useChartColors(data.length, false);\n const isAnimated = useChartAnimation(animated);\n\n const renderLabel = showLabels\n ? ({ percent }: { percent?: number }) => `${((percent ?? 0) * 100).toFixed(0)}%`\n : false;\n\n if (!data?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsPieChart accessibilityLayer>\n <Pie\n data={data}\n dataKey=\"value\"\n nameKey=\"name\"\n cx=\"50%\"\n cy=\"50%\"\n outerRadius=\"75%\"\n innerRadius={donut ? \"55%\" : 0}\n label={renderLabel}\n labelLine={showLabels}\n isAnimationActive={isAnimated}\n fontSize=\"var(--ds-font-size-xs)\"\n fontFamily=\"var(--ds-font-sans)\"\n >\n {data.map((_, i) => (\n <Cell key={i} fill={colors[i % colors.length]} />\n ))}\n </Pie>\n {showTooltip && <Tooltip content={<ChartTooltipContent />} />}\n {showLegend && <Legend content={<ChartLegendContent />} wrapperStyle={{ paddingTop: \"var(--ds-space-3)\" }} />}\n </RechartsPieChart>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef } from \"react\";\nimport {\n ComposedChart,\n Bar,\n Line,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ResponsiveContainer,\n} from \"recharts\";\nimport { useChartColors, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent, ChartLegendContent, useGridStroke, useAxisStyle, useRadius, xAxisTick } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\nimport type { BarDef } from \"./BarChart\";\nimport type { LineDef } from \"./LineChart\";\n\nexport interface CompositeChartProps {\n data: Record<string, unknown>[];\n bars: BarDef[];\n lines: LineDef[];\n xAxisKey: string;\n height?: \"sm\" | \"md\" | \"lg\" | number;\n dualAxis?: boolean;\n showGrid?: boolean;\n showTooltip?: boolean;\n showLegend?: boolean;\n xAxisLabel?: string;\n yAxisLabel?: string;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const CompositeChart = forwardRef<HTMLDivElement, CompositeChartProps>(function CompositeChart({\n data,\n bars,\n lines,\n xAxisKey,\n height = \"md\",\n dualAxis = true,\n showGrid = true,\n showTooltip = true,\n showLegend = true,\n xAxisLabel,\n yAxisLabel,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const barSoftColors = useChartColors(bars.length, true);\n const lineColors = useChartColors(lines.length, false);\n const gridStroke = useGridStroke();\n const axisStyle = useAxisStyle();\n const isAnimated = useChartAnimation(animated);\n const radius = useRadius();\n const axisLabelStyle = { fontSize: \"var(--ds-font-size-xs)\", fontFamily: \"var(--ds-font-sans)\", fill: axisStyle.tick.fill };\n\n if (!data?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <ComposedChart data={data} margin={{ top: 4, right: 4, bottom: 4, left: 4 }} accessibilityLayer>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" stroke={gridStroke} />}\n <XAxis\n dataKey={xAxisKey}\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n tick={xAxisTick}\n height=\"auto\"\n label={xAxisLabel ? { value: xAxisLabel, position: \"insideBottom\", offset: -2, style: axisLabelStyle } : undefined}\n />\n <YAxis\n yAxisId=\"left\"\n width=\"auto\"\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n label={yAxisLabel ? { value: yAxisLabel, angle: -90, position: \"insideLeft\", style: axisLabelStyle } : undefined}\n />\n {dualAxis && (\n <YAxis yAxisId=\"right\" orientation=\"right\" width=\"auto\" {...axisStyle.tick} axisLine={false} tickLine={false} />\n )}\n {showTooltip && <Tooltip content={<ChartTooltipContent />} />}\n {showLegend && <Legend content={<ChartLegendContent />} wrapperStyle={{ paddingTop: \"var(--ds-space-3)\" }} />}\n {bars.map((bar, i) => (\n <Bar\n key={bar.dataKey}\n dataKey={bar.dataKey}\n name={bar.label ?? bar.dataKey}\n fill={barSoftColors[i]}\n radius={[radius, radius, 0, 0]}\n yAxisId=\"left\"\n isAnimationActive={isAnimated}\n />\n ))}\n {lines.map((line, i) => (\n <Line\n key={line.dataKey}\n type=\"monotone\"\n dataKey={line.dataKey}\n name={line.label ?? line.dataKey}\n stroke={lineColors[i]}\n strokeWidth={2}\n strokeDasharray={line.dashed ? \"5 5\" : undefined}\n dot={false}\n yAxisId={dualAxis ? \"right\" : \"left\"}\n isAnimationActive={isAnimated}\n />\n ))}\n </ComposedChart>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef } from \"react\";\nimport {\n ScatterChart as RechartsScatterChart,\n Scatter,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ResponsiveContainer,\n ZAxis,\n} from \"recharts\";\nimport { useChartColors, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent, ChartLegendContent, useGridStroke, useAxisStyle } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\n\nexport interface ScatterSeries {\n name: string;\n points: { x: number; y: number; z?: number }[];\n}\n\nexport interface ScatterChartProps {\n data: ScatterSeries[];\n xLabel?: string;\n yLabel?: string;\n height?: \"sm\" | \"md\" | \"lg\" | number;\n showGrid?: boolean;\n showTooltip?: boolean;\n showLegend?: boolean;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const ScatterChart = forwardRef<HTMLDivElement, ScatterChartProps>(function ScatterChart({\n data,\n xLabel,\n yLabel,\n height = \"md\",\n showGrid = true,\n showTooltip = true,\n showLegend,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const colors = useChartColors(data.length, false);\n const gridStroke = useGridStroke();\n const axisStyle = useAxisStyle();\n const isAnimated = useChartAnimation(animated);\n const legendVisible = showLegend ?? data.length >= 2;\n const axisLabelStyle = { fontSize: \"var(--ds-font-size-xs)\", fontFamily: \"var(--ds-font-sans)\", fill: axisStyle.tick.fill };\n\n if (!data?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsScatterChart\n margin={{ top: 8, right: 8, bottom: xLabel ? 20 : 4, left: yLabel ? 20 : 4 }}\n accessibilityLayer\n >\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" stroke={gridStroke} />}\n <XAxis\n type=\"number\"\n dataKey=\"x\"\n name={xLabel ?? \"x\"}\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n label={xLabel ? { value: xLabel, position: \"bottom\", offset: 0, style: { ...axisLabelStyle, textAnchor: \"middle\" } } : undefined}\n />\n <YAxis\n type=\"number\"\n dataKey=\"y\"\n name={yLabel ?? \"y\"}\n width=\"auto\"\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n label={yLabel ? { value: yLabel, angle: -90, position: \"left\", offset: 0, style: { ...axisLabelStyle, textAnchor: \"middle\" } } : undefined}\n />\n <ZAxis type=\"number\" dataKey=\"z\" range={[40, 400]} />\n {showTooltip && <Tooltip content={<ChartTooltipContent />} />}\n {legendVisible && <Legend content={<ChartLegendContent />} wrapperStyle={{ paddingTop: \"var(--ds-space-3)\" }} />}\n {data.map((series, i) => (\n <Scatter\n key={series.name}\n name={series.name}\n data={series.points}\n fill={colors[i]}\n isAnimationActive={isAnimated}\n />\n ))}\n </RechartsScatterChart>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef } from \"react\";\nimport {\n RadarChart as RechartsRadarChart,\n Radar,\n PolarGrid,\n PolarAngleAxis,\n PolarRadiusAxis,\n Tooltip,\n Legend,\n ResponsiveContainer,\n} from \"recharts\";\nimport { useChartColors, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent, ChartLegendContent } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\n\nexport interface RadarDataKey {\n key: string;\n label?: string;\n}\n\nexport interface RadarChartProps {\n data: Record<string, unknown>[];\n dataKeys: RadarDataKey[];\n axisKey: string;\n height?: \"sm\" | \"md\" | \"lg\" | number;\n filled?: boolean;\n showDots?: boolean;\n showTooltip?: boolean;\n showLegend?: boolean;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const RadarChart = forwardRef<HTMLDivElement, RadarChartProps>(function RadarChart({\n data,\n dataKeys,\n axisKey,\n height = \"md\",\n filled = true,\n showDots = true,\n showTooltip = true,\n showLegend,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const solidColors = useChartColors(dataKeys.length, false);\n const softColors = useChartColors(dataKeys.length, true);\n const isAnimated = useChartAnimation(animated);\n const legendVisible = showLegend ?? dataKeys.length >= 2;\n\n if (!data?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsRadarChart data={data} cx=\"50%\" cy=\"50%\" outerRadius=\"75%\" accessibilityLayer>\n <PolarGrid stroke=\"var(--ds-border-subtle)\" />\n <PolarAngleAxis\n dataKey={axisKey}\n tick={{ fontSize: \"var(--ds-font-size-xs)\", fontFamily: \"var(--ds-font-sans)\", fill: \"var(--ds-text-muted)\" }}\n />\n <PolarRadiusAxis\n tick={{ fontSize: \"var(--ds-font-size-xs)\", fontFamily: \"var(--ds-font-sans)\", fill: \"var(--ds-text-muted)\" }}\n axisLine={false}\n />\n {showTooltip && <Tooltip content={<ChartTooltipContent />} />}\n {legendVisible && <Legend content={<ChartLegendContent />} wrapperStyle={{ paddingTop: \"var(--ds-space-3)\" }} />}\n {dataKeys.map((dk, i) => (\n <Radar\n key={dk.key}\n name={dk.label ?? dk.key}\n dataKey={dk.key}\n stroke={solidColors[i]}\n fill={filled ? softColors[i] : \"transparent\"}\n strokeWidth={2}\n dot={showDots ? { r: 3, fill: solidColors[i] } : false}\n isAnimationActive={isAnimated}\n />\n ))}\n </RechartsRadarChart>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef } from \"react\";\nimport {\n RadialBarChart as RechartsRadialBarChart,\n RadialBar,\n Legend,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\";\nimport { useChartColors, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent, ChartLegendContent } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\n\nexport interface RadialBarChartProps {\n data: { name: string; value: number; max?: number; [key: string]: unknown }[];\n height?: \"sm\" | \"md\" | \"lg\" | number;\n showTooltip?: boolean;\n showLegend?: boolean;\n showLabels?: boolean;\n startAngle?: number;\n endAngle?: number;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const RadialBarChart = forwardRef<HTMLDivElement, RadialBarChartProps>(function RadialBarChart({\n data,\n height = \"md\",\n showTooltip = true,\n showLegend = true,\n showLabels = false,\n startAngle = 90,\n endAngle = -270,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const colors = useChartColors(data.length, false);\n const isAnimated = useChartAnimation(animated);\n\n const chartData = data.map((d, i) => ({\n ...d,\n fill: colors[i % colors.length],\n }));\n\n if (!data?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsRadialBarChart\n data={chartData}\n cx=\"50%\"\n cy=\"50%\"\n innerRadius=\"20%\"\n outerRadius=\"90%\"\n startAngle={startAngle}\n endAngle={endAngle}\n accessibilityLayer\n >\n <RadialBar\n dataKey=\"value\"\n background={{ fill: \"var(--ds-bg-muted)\" }}\n label={showLabels ? { position: \"insideStart\", fill: \"var(--ds-text-primary)\", fontSize: \"var(--ds-font-size-xs)\" } : false}\n isAnimationActive={isAnimated}\n />\n {showTooltip && <Tooltip content={<ChartTooltipContent />} />}\n {showLegend && <Legend content={<ChartLegendContent />} wrapperStyle={{ paddingTop: \"var(--ds-space-3)\" }} />}\n </RechartsRadialBarChart>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef } from \"react\";\nimport {\n FunnelChart as RechartsFunnelChart,\n Funnel,\n Tooltip,\n Legend,\n LabelList,\n ResponsiveContainer,\n} from \"recharts\";\nimport { useChartColors, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent, ChartLegendContent } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\n\nexport interface FunnelChartProps {\n data: { name: string; value: number; [key: string]: unknown }[];\n height?: \"sm\" | \"md\" | \"lg\" | number;\n showTooltip?: boolean;\n showLegend?: boolean;\n showLabels?: boolean;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const FunnelChart = forwardRef<HTMLDivElement, FunnelChartProps>(function FunnelChart({\n data,\n height = \"md\",\n showTooltip = true,\n showLegend = true,\n showLabels = true,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const colors = useChartColors(data.length, false);\n const isAnimated = useChartAnimation(animated);\n\n const chartData = data.map((d, i) => ({\n ...d,\n fill: colors[i % colors.length],\n }));\n\n if (!data?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsFunnelChart accessibilityLayer>\n <Funnel dataKey=\"value\" data={chartData} isAnimationActive={isAnimated}>\n {showLabels && (\n <LabelList\n dataKey=\"name\"\n position=\"right\"\n fill=\"var(--ds-text-primary)\"\n fontSize=\"var(--ds-font-size-sm)\"\n fontFamily=\"var(--ds-font-sans)\"\n />\n )}\n </Funnel>\n {showTooltip && <Tooltip content={<ChartTooltipContent />} />}\n {showLegend && <Legend content={<ChartLegendContent />} wrapperStyle={{ paddingTop: \"var(--ds-space-3)\" }} />}\n </RechartsFunnelChart>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef } from \"react\";\nimport {\n Treemap,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\";\nimport { useChartColors, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent, useRadius } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\n\nexport interface TreemapNode {\n name: string;\n value?: number;\n children?: TreemapNode[];\n [key: string]: unknown;\n}\n\nexport interface TreemapChartProps {\n data: TreemapNode[];\n height?: \"sm\" | \"md\" | \"lg\" | number;\n showTooltip?: boolean;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\ninterface TreemapContentProps {\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n name?: string;\n depth?: number;\n colors: string[];\n radius: number;\n index?: number;\n}\n\nfunction contrastColor(hex: string): string {\n const c = hex.replace(\"#\", \"\");\n if (c.length < 6) return \"#ffffff\";\n const r = parseInt(c.substring(0, 2), 16);\n const g = parseInt(c.substring(2, 4), 16);\n const b = parseInt(c.substring(4, 6), 16);\n const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;\n return luminance > 0.55 ? \"#1f2937\" : \"#ffffff\";\n}\n\nfunction TreemapContent({ x = 0, y = 0, width = 0, height: h = 0, name, depth, colors, radius, index = 0 }: TreemapContentProps) {\n const fill = colors[index % colors.length];\n const showLabel = width > 40 && h > 20;\n const labelColor = contrastColor(fill);\n\n return (\n <g>\n <rect\n x={x}\n y={y}\n width={width}\n height={h}\n fill={fill}\n stroke=\"var(--ds-bg-surface)\"\n strokeWidth={2}\n rx={depth === 1 ? radius : 0}\n style={{ opacity: depth === 1 ? 1 : 0.85 }}\n />\n {showLabel && (\n <text\n x={x + width / 2}\n y={y + h / 2}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n fill={labelColor}\n stroke=\"none\"\n fontSize=\"var(--ds-font-size-xs)\"\n fontFamily=\"var(--ds-font-sans)\"\n style={{ pointerEvents: \"none\" }}\n >\n {name}\n </text>\n )}\n </g>\n );\n}\n\nfunction addFillToNodes(nodes: TreemapNode[], colors: string[], counter = { i: 0 }): TreemapNode[] {\n return nodes.map((node) => {\n if (node.children) {\n return { ...node, children: addFillToNodes(node.children, colors, counter) };\n }\n const fill = colors[counter.i % colors.length];\n counter.i++;\n return { ...node, fill };\n });\n}\n\nexport const TreemapChart = forwardRef<HTMLDivElement, TreemapChartProps>(function TreemapChart({\n data,\n height = \"md\",\n showTooltip = true,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const colors = useChartColors(6, false);\n const isAnimated = useChartAnimation(animated);\n const radius = useRadius();\n\n const chartData = addFillToNodes(data, colors);\n\n if (!data?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <Treemap\n data={chartData}\n dataKey=\"value\"\n nameKey=\"name\"\n aspectRatio={4 / 3}\n stroke=\"var(--ds-bg-surface)\"\n isAnimationActive={isAnimated}\n content={<TreemapContent colors={colors} radius={radius} />}\n >\n {showTooltip && <Tooltip content={<ChartTooltipContent />} />}\n </Treemap>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef } from \"react\";\nimport {\n Sankey as RechartsSankey,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\";\nimport { useChartColors, useResolvedToken } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\n\nexport interface SankeyChartProps {\n data: {\n nodes: { name: string }[];\n links: { source: number; target: number; value: number }[];\n };\n height?: \"sm\" | \"md\" | \"lg\" | number;\n showTooltip?: boolean;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const SankeyChart = forwardRef<HTMLDivElement, SankeyChartProps>(function SankeyChart({\n data,\n height = \"md\",\n showTooltip = true,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const colors = useChartColors(data.nodes.length, false);\n const linkStroke = useResolvedToken(\"--ds-border-subtle\");\n\n const nodesWithColor = data.nodes.map((node, i) => ({\n ...node,\n fill: colors[i % colors.length],\n }));\n\n const sankeyData = {\n nodes: nodesWithColor,\n links: data.links,\n };\n\n if (!data?.nodes?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsSankey\n data={sankeyData}\n nodeWidth={10}\n nodePadding={24}\n margin={{ top: 8, right: 8, bottom: 8, left: 8 }}\n link={{ stroke: linkStroke, strokeOpacity: 0.4 }}\n >\n {showTooltip && <Tooltip content={<ChartTooltipContent />} />}\n </RechartsSankey>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef, useId } from \"react\";\nimport {\n LineChart,\n Line,\n AreaChart,\n Area,\n BarChart,\n Bar,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { useResolvedToken, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent } from \"./ChartPrimitives\";\nimport { useInsideChartContainer } from \"./ChartWrapper\";\n\nexport interface SparklineProps {\n data: number[];\n variant?: \"line\" | \"area\" | \"bar\";\n color?: 1 | 2 | 3 | 4 | 5 | 6;\n height?: number;\n width?: number | \"100%\";\n showTooltip?: boolean;\n curved?: boolean;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const Sparkline = forwardRef<HTMLDivElement, SparklineProps>(function Sparkline({\n data,\n variant = \"line\",\n color = 1,\n height = 40,\n width = \"100%\",\n showTooltip = false,\n curved = true,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const instanceId = useId();\n const isAnimated = useChartAnimation(animated);\n const insideContainer = useInsideChartContainer();\n\n const tokenName = `--ds-chart-${color}` as const;\n const softTokenName = `--ds-chart-${color}-soft` as const;\n const chartColor = useResolvedToken(tokenName);\n const softColor = useResolvedToken(softTokenName);\n const chartData = data.map((value, i) => ({ value, index: i }));\n\n const containerStyle = insideContainer\n ? { width: \"100%\", height: \"100%\" }\n : { width: typeof width === \"number\" ? `${width}px` : width, height: `${height}px` };\n\n if (!data?.length) return null;\n\n if (variant === \"bar\") {\n return (\n <div ref={ref} style={containerStyle} className={className} {...(ariaLabel ? { role: \"img\", \"aria-label\": ariaLabel } : {})}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <BarChart data={chartData} margin={{ top: 0, right: 0, bottom: 0, left: 0 }}>\n <XAxis dataKey=\"index\" hide />\n <YAxis hide />\n {showTooltip && <Tooltip content={<ChartTooltipContent />} cursor={false} />}\n <Bar\n dataKey=\"value\"\n fill={chartColor}\n radius={[2, 2, 0, 0]}\n isAnimationActive={isAnimated}\n />\n </BarChart>\n </ResponsiveContainer>\n </div>\n );\n }\n\n if (variant === \"area\") {\n const gradientId = `sparkline-gradient-${instanceId}-${color}`;\n return (\n <div ref={ref} style={containerStyle} className={className} {...(ariaLabel ? { role: \"img\", \"aria-label\": ariaLabel } : {})}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <AreaChart data={chartData} margin={{ top: 2, right: 2, bottom: 2, left: 2 }}>\n <defs>\n <linearGradient id={gradientId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={softColor} stopOpacity={1} />\n <stop offset=\"95%\" stopColor={softColor} stopOpacity={0.1} />\n </linearGradient>\n </defs>\n <XAxis dataKey=\"index\" hide />\n <YAxis hide domain={[\"dataMin - 1\", \"dataMax + 1\"]} />\n {showTooltip && <Tooltip content={<ChartTooltipContent />} cursor={false} />}\n <Area\n type={curved ? \"monotone\" : \"linear\"}\n dataKey=\"value\"\n stroke={chartColor}\n strokeWidth={1.5}\n fill={`url(#${gradientId})`}\n dot={false}\n activeDot={showTooltip ? { r: 3, fill: chartColor } : false}\n isAnimationActive={isAnimated}\n />\n </AreaChart>\n </ResponsiveContainer>\n </div>\n );\n }\n\n return (\n <div ref={ref} style={containerStyle} className={className} {...(ariaLabel ? { role: \"img\", \"aria-label\": ariaLabel } : {})}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <LineChart data={chartData} margin={{ top: 2, right: 2, bottom: 2, left: 2 }}>\n <XAxis dataKey=\"index\" hide />\n <YAxis hide domain={[\"dataMin - 1\", \"dataMax + 1\"]} />\n {showTooltip && <Tooltip content={<ChartTooltipContent />} cursor={false} />}\n <Line\n type={curved ? \"monotone\" : \"linear\"}\n dataKey=\"value\"\n stroke={chartColor}\n strokeWidth={1.5}\n dot={false}\n activeDot={showTooltip ? { r: 3, fill: chartColor } : false}\n isAnimationActive={isAnimated}\n />\n </LineChart>\n </ResponsiveContainer>\n </div>\n );\n});\n","import type { ReactNode } from \"react\";\nimport { cn, GLASS_SURFACE } from \"../lib/utils\";\nimport { Skeleton } from \"./Skeleton\";\nimport { ChartContainerContext } from \"./charts/ChartWrapper\";\n\nconst HEIGHT_MAP = {\n sm: \"var(--ds-chart-height-sm)\",\n md: \"var(--ds-chart-height-md)\",\n lg: \"var(--ds-chart-height-lg)\",\n} as const;\n\ninterface ChartContainerProps {\n height?: \"sm\" | \"md\" | \"lg\";\n title?: string;\n loading?: boolean;\n emptyState?: ReactNode;\n children: ReactNode;\n className?: string;\n}\n\nexport function ChartContainer({\n height = \"md\",\n title,\n loading = false,\n emptyState,\n children,\n className,\n}: ChartContainerProps) {\n return (\n <div\n className={cn(\n \"rounded-[var(--ds-radius-md)]\",\n \"border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]\",\n GLASS_SURFACE,\n \"p-ds-4\",\n className\n )}\n >\n {title && (\n <p className=\"text-sm font-medium text-[var(--ds-text-primary)] mb-ds-4\">\n {title}\n </p>\n )}\n <div style={{ height: HEIGHT_MAP[height] }} className=\"relative\">\n {loading ? (\n <div className=\"flex flex-col justify-end h-full gap-ds-2 px-ds-2\">\n <div className=\"flex items-end h-full gap-ds-1\">\n {[65, 40, 80, 55, 72, 45, 60].map((h, i) => (\n <Skeleton\n key={i}\n variant=\"custom\"\n className=\"flex-1\"\n height={`${h}%`}\n />\n ))}\n </div>\n <Skeleton variant=\"text\" lines={1} className=\"w-full\" />\n </div>\n ) : children ? (\n <ChartContainerContext.Provider value={true}>\n <div className=\"h-full w-full\">{children}</div>\n </ChartContainerContext.Provider>\n ) : emptyState ? (\n <div className=\"h-full w-full flex items-center justify-center\">\n {emptyState}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../../../showcase/src/lib/chart-utils.ts","../../../showcase/src/components/charts/ChartPrimitives.tsx","../../../showcase/src/components/charts/ChartWrapper.tsx","../../../showcase/src/components/charts/BarChart.tsx","../../../showcase/src/components/charts/LineChart.tsx","../../../showcase/src/components/charts/AreaChart.tsx","../../../showcase/src/components/charts/PieChart.tsx","../../../showcase/src/components/charts/CompositeChart.tsx","../../../showcase/src/components/charts/ScatterChart.tsx","../../../showcase/src/components/charts/RadarChart.tsx","../../../showcase/src/components/charts/RadialBarChart.tsx","../../../showcase/src/components/charts/FunnelChart.tsx","../../../showcase/src/components/charts/TreemapChart.tsx","../../../showcase/src/components/charts/SankeyChart.tsx","../../../showcase/src/components/charts/Sparkline.tsx","../../../showcase/src/components/ChartContainer.tsx"],"names":["ChartWrapper","jsx","forwardRef","BarChart","jsxs","RechartsBarChart","LineChart","ResponsiveContainer","RechartsLineChart","CartesianGrid","XAxis","YAxis","Tooltip","Legend","AreaChart","RechartsAreaChart","PieChart","RechartsPieChart","CompositeChart","Bar","Line","ScatterChart","RechartsScatterChart","RadarChart","RechartsRadarChart","RadialBarChart","RechartsRadialBarChart","FunnelChart","RechartsFunnelChart","TreemapChart","SankeyChart","RechartsSankey","Sparkline","useId","Area","HEIGHT_MAP"],"mappings":";;;;;;AAEA,IAAM,YAAA,GAAe;AAAA,EACnB,cAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,iBAAA,GAAoB;AAAA,EACxB,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,eAAA,GAA0C;AAAA,EAC9C,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAChB,mBAAA,EAAqB,yBAAA;AAAA,EACrB,mBAAA,EAAqB,wBAAA;AAAA,EACrB,mBAAA,EAAqB,wBAAA;AAAA,EACrB,mBAAA,EAAqB,wBAAA;AAAA,EACrB,mBAAA,EAAqB,wBAAA;AAAA,EACrB,mBAAA,EAAqB,yBAAA;AAAA,EACrB,iBAAA,EAAmB,SAAA;AAAA,EACnB,oBAAA,EAAsB,SAAA;AAAA,EACtB,mBAAA,EAAqB,SAAA;AAAA,EACrB,qBAAA,EAAuB,SAAA;AAAA,EACvB,iBAAA,EAAmB;AACrB,CAAA;AAIA,IAAI,WAAA,GAAc,CAAA;AAClB,IAAM,WAAA,uBAAkB,GAAA,EAAgB;AACxC,IAAI,gBAAA,GAAmB,KAAA;AAEvB,SAAS,cAAA,GAAiB;AACxB,EAAA,IAAI,gBAAA,IAAoB,OAAO,QAAA,KAAa,WAAA,EAAa;AACzD,EAAA,gBAAA,GAAmB,IAAA;AAEnB,EAAA,MAAM,QAAA,GAAW,IAAI,gBAAA,CAAiB,CAAC,SAAA,KAAc;AACnD,IAAA,KAAA,MAAW,KAAK,SAAA,EAAW;AACzB,MAAA,IAAI,CAAA,CAAE,kBAAkB,WAAA,EAAa;AACnC,QAAA,WAAA,EAAA;AACA,QAAA,KAAA,MAAW,GAAA,IAAO,aAAa,GAAA,EAAI;AACnC,QAAA;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC,CAAA;AAED,EAAA,QAAA,CAAS,OAAA,CAAQ,SAAS,eAAA,EAAiB;AAAA,IACzC,UAAA,EAAY,IAAA;AAAA,IACZ,eAAA,EAAiB,CAAC,WAAW;AAAA,GAC9B,CAAA;AACH;AAEA,SAAS,UAAU,EAAA,EAAgB;AACjC,EAAA,cAAA,EAAe;AACf,EAAA,WAAA,CAAY,IAAI,EAAE,CAAA;AAClB,EAAA,OAAO,MAAM;AAAE,IAAA,WAAA,CAAY,OAAO,EAAE,CAAA;AAAA,EAAG,CAAA;AACzC;AAEA,SAAS,WAAA,GAAc;AACrB,EAAA,OAAO,WAAA;AACT;AAEA,SAAS,iBAAA,GAAoB;AAC3B,EAAA,OAAO,CAAA;AACT;AAEO,SAAS,aAAa,KAAA,EAAuB;AAClD,EAAA,IAAI,OAAO,QAAA,KAAa,WAAA,EAAa,OAAO,eAAA,CAAgB,KAAK,CAAA,IAAK,SAAA;AACtE,EAAA,MAAM,GAAA,GAAM,iBAAiB,QAAA,CAAS,eAAe,EAAE,gBAAA,CAAiB,KAAK,EAAE,IAAA,EAAK;AACpF,EAAA,OAAO,GAAA,IAAO,eAAA,CAAgB,KAAK,CAAA,IAAK,SAAA;AAC1C;AAEO,SAAS,cAAA,CAAe,KAAA,EAAe,IAAA,GAAO,KAAA,EAAiB;AACpE,EAAA,MAAM,OAAA,GAAU,oBAAA,CAAqB,SAAA,EAAW,WAAA,EAAa,iBAAiB,CAAA;AAC9E,EAAA,MAAM,CAAC,QAAQ,SAAS,CAAA,GAAI,SAAmB,MAAM,cAAA,CAAe,KAAA,EAAO,IAAI,CAAC,CAAA;AAKhF,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,SAAA,CAAU,aAAA,CAAc,KAAA,EAAO,IAAI,CAAC,CAAA;AAAA,EACtC,CAAA,EAAG,CAAC,KAAA,EAAO,IAAA,EAAM,OAAO,CAAC,CAAA;AAGzB,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,cAAA,CAAe,OAAe,IAAA,EAAyB;AAC9D,EAAA,MAAM,MAAA,GAAS,OAAO,iBAAA,GAAoB,YAAA;AAC1C,EAAA,MAAM,SAAmB,EAAC;AAC1B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,EAAO,CAAA,EAAA,EAAK;AAC9B,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,CAAA,GAAI,MAAA,CAAO,MAAM,CAAA;AACtC,IAAA,MAAA,CAAO,IAAA,CAAK,eAAA,CAAgB,KAAK,CAAA,IAAK,SAAS,CAAA;AAAA,EACjD;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,aAAA,CAAc,OAAe,IAAA,EAAyB;AAC7D,EAAA,MAAM,MAAA,GAAS,OAAO,iBAAA,GAAoB,YAAA;AAC1C,EAAA,MAAM,SAAmB,EAAC;AAC1B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,EAAO,CAAA,EAAA,EAAK;AAC9B,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,CAAA,GAAI,MAAA,CAAO,MAAM,CAAA;AACtC,IAAA,MAAA,CAAO,IAAA,CAAK,YAAA,CAAa,KAAK,CAAC,CAAA;AAAA,EACjC;AACA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,iBAAiB,KAAA,EAAuB;AACtD,EAAA,MAAM,OAAA,GAAU,oBAAA,CAAqB,SAAA,EAAW,WAAA,EAAa,iBAAiB,CAAA;AAC9E,EAAA,MAAM,CAAC,OAAO,QAAQ,CAAA,GAAI,SAAS,MAAM,eAAA,CAAgB,KAAK,CAAA,IAAK,SAAS,CAAA;AAG5E,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,QAAA,CAAS,YAAA,CAAa,KAAK,CAAC,CAAA;AAAA,EAC9B,CAAA,EAAG,CAAC,KAAA,EAAO,OAAO,CAAC,CAAA;AAGnB,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,gBAAA,GAA4B;AAC1C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,MAAM;AAC3C,IAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,KAAA;AAC1C,IAAA,OAAO,MAAA,CAAO,UAAA,CAAW,kCAAkC,CAAA,CAAE,OAAA;AAAA,EAC/D,CAAC,CAAA;AAED,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,MAAM,GAAA,GAAM,MAAA,CAAO,UAAA,CAAW,kCAAkC,CAAA;AAChE,IAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAA2B,UAAA,CAAW,EAAE,OAAO,CAAA;AAChE,IAAA,GAAA,CAAI,gBAAA,CAAiB,UAAU,OAAO,CAAA;AACtC,IAAA,OAAO,MAAM,GAAA,CAAI,mBAAA,CAAoB,QAAA,EAAU,OAAO,CAAA;AAAA,EACxD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,OAAA;AACT;AAEO,IAAM,iBAAA,GAAoB,CAAC,QAAA,KAAgC;AAChE,EAAA,MAAM,UAAU,gBAAA,EAAiB;AACjC,EAAA,OAAO,QAAA,KAAa,SAAS,CAAC,OAAA;AAChC,CAAA;AC1IO,SAAS,mBAAA,CAAoB,EAAE,MAAA,EAAQ,OAAA,EAAS,OAAM,EAA6B;AACxF,EAAA,MAAM,SAAA,GAAY,iBAAiB,iBAAiB,CAAA;AACpD,EAAA,MAAM,YAAA,GAAe,iBAAiB,oBAAoB,CAAA;AAC1D,EAAA,MAAM,WAAA,GAAc,iBAAiB,mBAAmB,CAAA;AACxD,EAAA,MAAM,aAAA,GAAgB,iBAAiB,qBAAqB,CAAA;AAE5D,EAAA,IAAI,CAAC,MAAA,IAAU,CAAC,OAAA,EAAS,QAAQ,OAAO,IAAA;AAExC,EAAA,MAAM,YAAY,KAAA,IAAS,IAAA,IAAQ,KAAA,KAAU,EAAA,IAAM,OAAO,KAAA,KAAU,QAAA;AAEpE,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,gHAAA;AAAA,MACV,KAAA,EAAO;AAAA,QACL,eAAA,EAAiB,SAAA;AAAA,QACjB,MAAA,EAAQ,gCAAgC,YAAY,CAAA,CAAA;AAAA,QACpD,OAAA,EAAS;AAAA,OACX;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,SAAA,oBACC,GAAA,CAAC,OAAE,SAAA,EAAU,qBAAA,EAAsB,OAAO,EAAE,KAAA,EAAO,WAAA,EAAY,EAC5D,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,QAED,OAAA,CAAQ,GAAA,CAAI,CAAC,KAAA,EAAO,CAAA,KAAM;AACzB,UAAA,MAAM,QAAA,GAAY,KAAA,CAAM,OAAA,EAAS,IAAA,IAAmB,MAAM,KAAA,IAAS,aAAA;AACnE,UAAA,MAAM,WAAA,GAAe,OAAO,KAAA,CAAM,OAAA,EAAS,SAAS,QAAA,IAAY,KAAA,CAAM,OAAA,CAAQ,IAAA,IAAS,KAAA,CAAM,IAAA;AAC7F,UAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAY,SAAA,EAAU,4BAAA,EAA6B,KAAA,EAAO,EAAE,SAAA,EAAW,CAAA,GAAI,CAAA,GAAI,CAAA,GAAI,CAAA,EAAE,EACpF,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,0CAAA;AAAA,gBACV,OAAO,EAAE,KAAA,EAAO,GAAG,MAAA,EAAQ,CAAA,EAAG,iBAAiB,QAAA;AAAS;AAAA,aAC1D;AAAA,iCACC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,eAAc,EAAI,QAAA,EAAA;AAAA,cAAA,WAAA;AAAA,cAAY;AAAA,aAAA,EAAC,CAAA;AAAA,gCACpD,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAe,KAAA,EAAO,EAAE,OAAO,WAAA,EAAY,EACxD,QAAA,EAAA,OAAO,KAAA,CAAM,UAAU,QAAA,GAAW,KAAA,CAAM,MAAM,cAAA,EAAe,GAAI,MAAM,KAAA,EAC1E;AAAA,WAAA,EAAA,EARQ,CASV,CAAA;AAAA,QAEJ,CAAC;AAAA;AAAA;AAAA,GACH;AAEJ;AAUO,SAAS,kBAAA,CAAmB,EAAE,OAAA,EAAQ,EAA4B;AACvE,EAAA,MAAM,aAAA,GAAgB,iBAAiB,qBAAqB,CAAA;AAE5D,EAAA,IAAI,CAAC,OAAA,EAAS,MAAA,EAAQ,OAAO,IAAA;AAE7B,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oGAAA,EACZ,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,KAAA,EAAO,CAAA,qBACnB,IAAA,CAAC,KAAA,EAAA,EAAY,SAAA,EAAU,8BAAA,EACrB,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,0CAAA;AAAA,QACV,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAG,eAAA,EAAiB,MAAM,KAAA;AAAM;AAAA,KAC7D;AAAA,oBACA,GAAA,CAAC,UAAK,KAAA,EAAO,EAAE,OAAO,aAAA,EAAc,EAAI,gBAAM,KAAA,EAAM;AAAA,GAAA,EAAA,EAL5C,CAMV,CACD,CAAA,EACH,CAAA;AAEJ;AAEO,SAAS,aAAA,GAAwB;AACtC,EAAA,OAAO,iBAAiB,oBAAoB,CAAA;AAC9C;AAEO,SAAS,YAAA,GAAe;AAC7B,EAAA,MAAM,SAAA,GAAY,iBAAiB,iBAAiB,CAAA;AAEpD,EAAA,OAAO;AAAA,IACL,IAAA,EAAM;AAAA,MACJ,QAAA,EAAU,wBAAA;AAAA,MACV,UAAA,EAAY,qBAAA;AAAA,MACZ,IAAA,EAAM;AAAA;AACR,GACF;AACF;AAEO,SAAS,SAAA,GAAoB;AAClC,EAAA,MAAM,GAAA,GAAM,iBAAiB,gBAAgB,CAAA;AAC7C,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,GAAA,EAAK,EAAE,CAAA;AAC/B,EAAA,OAAO,KAAA,CAAM,MAAM,CAAA,GAAI,CAAA,GAAI,MAAA;AAC7B;AAMO,SAAS,UAAU,KAAA,EAAgC;AACxD,EAAA,MAAM,EAAE,GAAG,CAAA,EAAG,OAAA,EAAS,OAAO,iBAAA,EAAmB,GAAG,MAAK,GAAI,KAAA;AAI7D,EAAA,MAAM,YAAY,KAAA,IAAS,iBAAA,GAAoB,KAAK,KAAA,CAAM,KAAA,GAAQ,iBAAiB,CAAA,GAAI,GAAA;AACvF,EAAA,uBACE,GAAA,CAAC,IAAA,EAAA,EAAM,GAAG,IAAA,EAAM,GAAM,CAAA,EAAM,KAAA,EAAO,SAAA,EAAW,UAAA,EAAW,UAAS,cAAA,EAAe,OAAA,EAAQ,QAAA,EAAU,CAAA,EAChG,kBAAQ,KAAA,EACX,CAAA;AAEJ;AAEO,SAAS,UAAU,KAAA,EAAgC;AACxD,EAAA,MAAM,EAAE,CAAA,EAAG,CAAA,EAAG,OAAA,EAAS,GAAG,MAAK,GAAI,KAAA;AACnC,EAAA,uBACE,GAAA,CAAC,IAAA,EAAA,EAAM,GAAG,IAAA,EAAM,GAAM,CAAA,EAAM,UAAA,EAAW,KAAA,EAAM,cAAA,EAAe,UAAS,KAAA,EAAO,GAAA,EAAK,QAAA,EAAU,CAAA,EACxF,kBAAQ,KAAA,EACX,CAAA;AAEJ;AClIO,IAAM,qBAAA,GAAwB,cAAc,KAAK,CAAA;AAEjD,SAAS,uBAAA,GAAmC;AACjD,EAAA,OAAO,WAAW,qBAAqB,CAAA;AACzC;AAEA,IAAM,UAAA,GAAqC;AAAA,EACzC,EAAA,EAAI,2BAAA;AAAA,EACJ,EAAA,EAAI,2BAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AASO,IAAM,YAAA,GAAe,UAAA,CAA8C,SAASA,aAAAA,CAAa,EAAE,MAAA,GAAS,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,YAAA,EAAc,SAAA,EAAU,EAAG,GAAA,EAAK;AACpK,EAAA,MAAM,kBAAkB,uBAAA,EAAwB;AAEhD,EAAA,IAAI,eAAA,EAAiB;AACnB,IAAA,uBACEC,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAU,SAAA,EAAW,EAAA,CAAG,iBAAiB,SAAS,CAAA,EAAI,GAAI,SAAA,GAAY,EAAE,MAAM,KAAA,EAAO,YAAA,EAAc,WAAU,GAAI,IACnH,QAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,MAAM,WAAA,GAAc,OAAO,MAAA,KAAW,QAAA,GAAW,GAAG,MAAM,CAAA,EAAA,CAAA,GAAO,WAAW,MAAM,CAAA;AAElF,EAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,GAAG,QAAA,EAAU,SAAS,CAAA,EAAG,KAAA,EAAO,EAAE,MAAA,EAAQ,aAAY,EAAI,GAAI,SAAA,GAAY,EAAE,IAAA,EAAM,KAAA,EAAO,cAAc,SAAA,EAAU,GAAI,EAAC,EAC7I,QAAA,EACH,CAAA;AAEJ,CAAC,CAAA;ACFM,IAAM,QAAA,GAAWC,UAAAA,CAA0C,SAASC,SAAAA,CAAS;AAAA,EAClF,IAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA,GAAS,IAAA;AAAA,EACT,OAAA,GAAU,KAAA;AAAA,EACV,UAAA,GAAa,KAAA;AAAA,EACb,QAAA,GAAW,IAAA;AAAA,EACX,WAAA,GAAc,IAAA;AAAA,EACd,UAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd;AACF,CAAA,EAAG,GAAA,EAAK;AACN,EAAA,MAAM,WAAA,GAAc,cAAA,CAAe,IAAA,CAAK,MAAA,EAAQ,KAAK,CAAA;AACrD,EAAA,MAAM,UAAA,GAAa,cAAA,CAAe,IAAA,CAAK,MAAA,EAAQ,IAAI,CAAA;AACnD,EAAA,MAAM,aAAa,aAAA,EAAc;AACjC,EAAA,MAAM,YAAY,YAAA,EAAa;AAC/B,EAAA,MAAM,UAAA,GAAa,kBAAkB,QAAQ,CAAA;AAC7C,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,MAAM,aAAA,GAAgB,UAAA,IAAc,IAAA,CAAK,MAAA,IAAU,CAAA;AAEnD,EAAA,MAAM,MAAA,GAAS,aAAa,UAAA,GAAa,YAAA;AAEzC,EAAA,SAAS,aAAa,KAAA,EAAiD;AACrE,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAO,UAAA,GAAa,CAAC,CAAA,EAAG,MAAA,EAAQ,MAAA,EAAQ,CAAC,CAAA,GAAI,CAAC,MAAA,EAAQ,MAAA,EAAQ,CAAA,EAAG,CAAC,CAAA;AAAA,IACpE;AACA,IAAA,MAAM,SAAA,GAAY,KAAA,KAAU,IAAA,CAAK,MAAA,GAAS,CAAA;AAC1C,IAAA,IAAI,CAAC,SAAA,EAAW,OAAO,CAAC,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAClC,IAAA,OAAO,UAAA,GAAa,CAAC,CAAA,EAAG,MAAA,EAAQ,MAAA,EAAQ,CAAC,CAAA,GAAI,CAAC,MAAA,EAAQ,MAAA,EAAQ,CAAA,EAAG,CAAC,CAAA;AAAA,EACpE;AAEA,EAAA,MAAM,cAAA,GAAiB,EAAE,QAAA,EAAU,wBAAA,EAA0B,YAAY,qBAAA,EAAuB,IAAA,EAAM,SAAA,CAAU,IAAA,CAAK,IAAA,EAAK;AAE1H,EAAA,IAAI,CAAC,IAAA,EAAM,MAAA,EAAQ,OAAO,IAAA;AAE1B,EAAA,uBACEF,GAAAA,CAAC,YAAA,EAAA,EAAa,GAAA,EAAU,QAAgB,SAAA,EAAsB,YAAA,EAAY,SAAA,EACxE,QAAA,kBAAAA,IAAC,mBAAA,EAAA,EAAoB,KAAA,EAAM,MAAA,EAAO,MAAA,EAAO,QACvC,QAAA,kBAAAG,IAAAA;AAAA,IAACC,UAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA,EAAQ,EAAE,GAAA,EAAK,CAAA,EAAG,OAAO,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,IAAA,EAAM,CAAA,EAAE;AAAA,MAC/C,kBAAA,EAAkB,IAAA;AAAA,MAEjB,QAAA,EAAA;AAAA,QAAA,QAAA,oBACCJ,GAAAA,CAAC,aAAA,EAAA,EAAc,eAAA,EAAgB,KAAA,EAAM,MAAA,EAAQ,UAAA,EAAY,QAAA,EAAU,CAAC,UAAA,EAAY,UAAA,EAAU,IAAA,EAAC,CAAA;AAAA,QAE5F,UAAA,mBACCG,IAAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,0BAAAH,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACJ,GAAG,SAAA,CAAU,IAAA;AAAA,cACd,QAAA,EAAU,KAAA;AAAA,cACV,QAAA,EAAU,KAAA;AAAA,cACV,KAAA,EAAO,UAAA,GAAa,EAAE,KAAA,EAAO,UAAA,EAAY,QAAA,EAAU,cAAA,EAAgB,MAAA,EAAQ,EAAA,EAAI,KAAA,EAAO,cAAA,EAAe,GAAI;AAAA;AAAA,WAC3G;AAAA,0BACAA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,QAAA;AAAA,cACT,IAAA,EAAK,UAAA;AAAA,cACL,KAAA,EAAM,MAAA;AAAA,cACL,GAAG,SAAA,CAAU,IAAA;AAAA,cACd,QAAA,EAAU,KAAA;AAAA,cACV,QAAA,EAAU,KAAA;AAAA,cACV,IAAA,EAAM;AAAA;AAAA;AACR,SAAA,EACF,CAAA,mBAEAG,IAAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,0BAAAH,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,QAAA;AAAA,cACR,GAAG,SAAA,CAAU,IAAA;AAAA,cACd,QAAA,EAAU,KAAA;AAAA,cACV,QAAA,EAAU,KAAA;AAAA,cACV,IAAA,EAAM,SAAA;AAAA,cACN,MAAA,EAAO,MAAA;AAAA,cACP,KAAA,EAAO,UAAA,GAAa,EAAE,KAAA,EAAO,UAAA,EAAY,QAAA,EAAU,cAAA,EAAgB,MAAA,EAAQ,EAAA,EAAI,KAAA,EAAO,cAAA,EAAe,GAAI;AAAA;AAAA,WAC3G;AAAA,0BACAA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,MAAA;AAAA,cACL,GAAG,SAAA,CAAU,IAAA;AAAA,cACd,QAAA,EAAU,KAAA;AAAA,cACV,QAAA,EAAU,KAAA;AAAA,cACV,KAAA,EAAO,UAAA,GAAa,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,KAAA,EAAO,cAAA,EAAe,GAAI;AAAA;AAAA;AACzG,SAAA,EACF,CAAA;AAAA,QAED,WAAA,oBAAeA,GAAAA,CAAC,OAAA,EAAA,EAAQ,yBAASA,GAAAA,CAAC,mBAAA,EAAA,EAAoB,CAAA,EAAI,QAAQ,EAAE,IAAA,EAAM,oBAAA,EAAsB,OAAA,EAAS,KAAI,EAAG,CAAA;AAAA,QAChH,aAAA,oBAAiBA,GAAAA,CAAC,MAAA,EAAA,EAAO,OAAA,kBAASA,GAAAA,CAAC,kBAAA,EAAA,EAAmB,CAAA,EAAI,YAAA,EAAc,EAAE,UAAA,EAAY,qBAAoB,EAAG,CAAA;AAAA,QAC7G,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAK,sBACdA,GAAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YAEC,SAAS,GAAA,CAAI,OAAA;AAAA,YACb,IAAA,EAAM,GAAA,CAAI,KAAA,IAAS,GAAA,CAAI,OAAA;AAAA,YACvB,MAAM,GAAA,CAAI,IAAA,GAAO,WAAW,CAAC,CAAA,GAAI,YAAY,CAAC,CAAA;AAAA,YAC9C,MAAA,EAAQ,aAAa,CAAC,CAAA;AAAA,YACtB,OAAA,EAAS,UAAU,OAAA,GAAU,MAAA;AAAA,YAC7B,iBAAA,EAAmB;AAAA,WAAA;AAAA,UANd,GAAA,CAAI;AAAA,SAQZ;AAAA;AAAA;AAAA,KAEL,CAAA,EACF,CAAA;AAEJ,CAAC;AC3GM,IAAM,SAAA,GAAYC,UAAAA,CAA2C,SAASI,UAAAA,CAAU;AAAA,EACrF,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA,GAAS,IAAA;AAAA,EACT,MAAA,GAAS,IAAA;AAAA,EACT,QAAA,GAAW,KAAA;AAAA,EACX,QAAA,GAAW,IAAA;AAAA,EACX,WAAA,GAAc,IAAA;AAAA,EACd,UAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd;AACF,CAAA,EAAG,GAAA,EAAK;AACN,EAAA,MAAM,MAAA,GAAS,cAAA,CAAe,KAAA,CAAM,MAAA,EAAQ,KAAK,CAAA;AACjD,EAAA,MAAM,aAAa,aAAA,EAAc;AACjC,EAAA,MAAM,YAAY,YAAA,EAAa;AAC/B,EAAA,MAAM,UAAA,GAAa,kBAAkB,QAAQ,CAAA;AAC7C,EAAA,MAAM,aAAA,GAAgB,UAAA,IAAc,KAAA,CAAM,MAAA,IAAU,CAAA;AACpD,EAAA,MAAM,cAAA,GAAiB,EAAE,QAAA,EAAU,wBAAA,EAA0B,YAAY,qBAAA,EAAuB,IAAA,EAAM,SAAA,CAAU,IAAA,CAAK,IAAA,EAAK;AAE1H,EAAA,IAAI,CAAC,IAAA,EAAM,MAAA,EAAQ,OAAO,IAAA;AAE1B,EAAA,uBACEL,GAAAA,CAAC,YAAA,EAAA,EAAa,GAAA,EAAU,QAAgB,SAAA,EAAsB,YAAA,EAAY,SAAA,EACxE,QAAA,kBAAAA,GAAAA,CAACM,mBAAAA,EAAA,EAAoB,KAAA,EAAM,QAAO,MAAA,EAAO,MAAA,EACvC,QAAA,kBAAAH,IAAAA,CAACI,WAAA,EAAA,EAAkB,IAAA,EAAY,MAAA,EAAQ,EAAE,KAAK,CAAA,EAAG,KAAA,EAAO,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,IAAA,EAAM,CAAA,EAAE,EAAG,oBAAkB,IAAA,EAChG,QAAA,EAAA;AAAA,IAAA,QAAA,oBAAYP,GAAAA,CAACQ,aAAAA,EAAA,EAAc,eAAA,EAAgB,KAAA,EAAM,QAAQ,UAAA,EAAY,CAAA;AAAA,oBACtER,GAAAA;AAAA,MAACS,KAAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,QAAA;AAAA,QACR,GAAG,SAAA,CAAU,IAAA;AAAA,QACd,QAAA,EAAU,KAAA;AAAA,QACV,QAAA,EAAU,KAAA;AAAA,QACV,IAAA,EAAM,SAAA;AAAA,QACN,MAAA,EAAO,MAAA;AAAA,QACP,KAAA,EAAO,UAAA,GAAa,EAAE,KAAA,EAAO,UAAA,EAAY,QAAA,EAAU,cAAA,EAAgB,MAAA,EAAQ,EAAA,EAAI,KAAA,EAAO,cAAA,EAAe,GAAI;AAAA;AAAA,KAC3G;AAAA,oBACAT,GAAAA;AAAA,MAACU,KAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,MAAA;AAAA,QACL,GAAG,SAAA,CAAU,IAAA;AAAA,QACd,QAAA,EAAU,KAAA;AAAA,QACV,QAAA,EAAU,KAAA;AAAA,QACV,KAAA,EAAO,UAAA,GAAa,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,KAAA,EAAO,cAAA,EAAe,GAAI;AAAA;AAAA,KACzG;AAAA,IACC,WAAA,oBAAeV,GAAAA,CAACW,OAAAA,EAAA,EAAQ,OAAA,kBAASX,GAAAA,CAAC,mBAAA,EAAA,EAAoB,CAAA,EAAI,CAAA;AAAA,IAC1D,aAAA,oBAAiBA,GAAAA,CAACY,MAAAA,EAAA,EAAO,OAAA,kBAASZ,GAAAA,CAAC,kBAAA,EAAA,EAAmB,CAAA,EAAI,YAAA,EAAc,EAAE,UAAA,EAAY,qBAAoB,EAAG,CAAA;AAAA,IAC7G,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,sBAChBA,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QAEC,IAAA,EAAM,SAAS,UAAA,GAAa,QAAA;AAAA,QAC5B,SAAS,IAAA,CAAK,OAAA;AAAA,QACd,IAAA,EAAM,IAAA,CAAK,KAAA,IAAS,IAAA,CAAK,OAAA;AAAA,QACzB,MAAA,EAAQ,OAAO,CAAC,CAAA;AAAA,QAChB,WAAA,EAAa,CAAA;AAAA,QACb,eAAA,EAAiB,IAAA,CAAK,MAAA,GAAS,KAAA,GAAQ,MAAA;AAAA,QACvC,GAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAW,EAAE,CAAA,EAAG,CAAA,EAAG,aAAa,CAAA,EAAE;AAAA,QAClC,iBAAA,EAAmB;AAAA,OAAA;AAAA,MATd,IAAA,CAAK;AAAA,KAWb;AAAA,GAAA,EACH,GACF,CAAA,EACF,CAAA;AAEJ,CAAC;AClEM,IAAM,SAAA,GAAYC,UAAAA,CAA2C,SAASY,UAAAA,CAAU;AAAA,EACrF,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA,GAAS,IAAA;AAAA,EACT,OAAA,GAAU,KAAA;AAAA,EACV,MAAA,GAAS,IAAA;AAAA,EACT,QAAA,GAAW,IAAA;AAAA,EACX,WAAA,GAAc,IAAA;AAAA,EACd,UAAA;AAAA,EACA,QAAA,GAAW,IAAA;AAAA,EACX,UAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd;AACF,CAAA,EAAG,GAAA,EAAK;AACN,EAAA,MAAM,aAAa,KAAA,EAAM;AACzB,EAAA,MAAM,WAAA,GAAc,cAAA,CAAe,KAAA,CAAM,MAAA,EAAQ,KAAK,CAAA;AACtD,EAAA,MAAM,UAAA,GAAa,cAAA,CAAe,KAAA,CAAM,MAAA,EAAQ,IAAI,CAAA;AACpD,EAAA,MAAM,aAAa,aAAA,EAAc;AACjC,EAAA,MAAM,YAAY,YAAA,EAAa;AAC/B,EAAA,MAAM,UAAA,GAAa,kBAAkB,QAAQ,CAAA;AAC7C,EAAA,MAAM,aAAA,GAAgB,UAAA,IAAc,KAAA,CAAM,MAAA,IAAU,CAAA;AACpD,EAAA,MAAM,cAAA,GAAiB,EAAE,QAAA,EAAU,wBAAA,EAA0B,YAAY,qBAAA,EAAuB,IAAA,EAAM,SAAA,CAAU,IAAA,CAAK,IAAA,EAAK;AAE1H,EAAA,IAAI,CAAC,IAAA,EAAM,MAAA,EAAQ,OAAO,IAAA;AAE1B,EAAA,uBACEb,GAAAA,CAAC,YAAA,EAAA,EAAa,GAAA,EAAU,QAAgB,SAAA,EAAsB,YAAA,EAAY,SAAA,EACxE,QAAA,kBAAAA,GAAAA,CAACM,mBAAAA,EAAA,EAAoB,KAAA,EAAM,QAAO,MAAA,EAAO,MAAA,EACvC,QAAA,kBAAAH,IAAAA,CAACW,WAAA,EAAA,EAAkB,IAAA,EAAY,MAAA,EAAQ,EAAE,KAAK,CAAA,EAAG,KAAA,EAAO,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,IAAA,EAAM,CAAA,EAAE,EAAG,oBAAkB,IAAA,EACjG,QAAA,EAAA;AAAA,oBAAAd,GAAAA,CAAC,MAAA,EAAA,EACE,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,MAAM,CAAA,qBAChBG,IAAAA,CAAC,gBAAA,EAAA,EAAkC,EAAA,EAAI,CAAA,SAAA,EAAY,UAAU,CAAA,CAAA,EAAI,IAAA,CAAK,OAAO,CAAA,CAAA,EAAI,EAAA,EAAG,GAAA,EAAI,IAAG,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,GAAA,EACvG,QAAA,EAAA;AAAA,sBAAAH,GAAAA,CAAC,UAAK,MAAA,EAAO,IAAA,EAAK,WAAW,UAAA,CAAW,CAAC,CAAA,EAAG,WAAA,EAAa,CAAA,EAAG,CAAA;AAAA,sBAC5DA,GAAAA,CAAC,MAAA,EAAA,EAAK,MAAA,EAAO,KAAA,EAAM,WAAW,UAAA,CAAW,CAAC,CAAA,EAAG,WAAA,EAAa,GAAA,EAAK;AAAA,KAAA,EAAA,EAF5C,IAAA,CAAK,OAG1B,CACD,CAAA,EACH,CAAA;AAAA,IACC,QAAA,oBAAYA,GAAAA,CAACQ,aAAAA,EAAA,EAAc,eAAA,EAAgB,KAAA,EAAM,QAAQ,UAAA,EAAY,CAAA;AAAA,oBACtER,GAAAA;AAAA,MAACS,KAAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,QAAA;AAAA,QACR,GAAG,SAAA,CAAU,IAAA;AAAA,QACd,QAAA,EAAU,KAAA;AAAA,QACV,QAAA,EAAU,KAAA;AAAA,QACV,IAAA,EAAM,SAAA;AAAA,QACN,MAAA,EAAO,MAAA;AAAA,QACP,KAAA,EAAO,UAAA,GAAa,EAAE,KAAA,EAAO,UAAA,EAAY,QAAA,EAAU,cAAA,EAAgB,MAAA,EAAQ,EAAA,EAAI,KAAA,EAAO,cAAA,EAAe,GAAI;AAAA;AAAA,KAC3G;AAAA,oBACAT,GAAAA;AAAA,MAACU,KAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,MAAA;AAAA,QACL,GAAG,SAAA,CAAU,IAAA;AAAA,QACd,QAAA,EAAU,KAAA;AAAA,QACV,QAAA,EAAU,KAAA;AAAA,QACV,KAAA,EAAO,UAAA,GAAa,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,KAAA,EAAO,cAAA,EAAe,GAAI;AAAA;AAAA,KACzG;AAAA,IACC,WAAA,oBAAeV,GAAAA,CAACW,OAAAA,EAAA,EAAQ,OAAA,kBAASX,GAAAA,CAAC,mBAAA,EAAA,EAAoB,CAAA,EAAI,CAAA;AAAA,IAC1D,aAAA,oBAAiBA,GAAAA,CAACY,MAAAA,EAAA,EAAO,OAAA,kBAASZ,GAAAA,CAAC,kBAAA,EAAA,EAAmB,CAAA,EAAI,YAAA,EAAc,EAAE,UAAA,EAAY,qBAAoB,EAAG,CAAA;AAAA,IAC7G,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,sBAChBA,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QAEC,IAAA,EAAM,SAAS,UAAA,GAAa,QAAA;AAAA,QAC5B,SAAS,IAAA,CAAK,OAAA;AAAA,QACd,IAAA,EAAM,IAAA,CAAK,KAAA,IAAS,IAAA,CAAK,OAAA;AAAA,QACzB,MAAA,EAAQ,YAAY,CAAC,CAAA;AAAA,QACrB,WAAA,EAAa,CAAA;AAAA,QACb,IAAA,EAAM,WAAW,CAAA,cAAA,EAAiB,UAAU,IAAI,IAAA,CAAK,OAAO,CAAA,CAAA,CAAA,GAAM,UAAA,CAAW,CAAC,CAAA;AAAA,QAC9E,OAAA,EAAS,UAAU,OAAA,GAAU,MAAA;AAAA,QAC7B,iBAAA,EAAmB;AAAA,OAAA;AAAA,MARd,IAAA,CAAK;AAAA,KAUb;AAAA,GAAA,EACH,GACF,CAAA,EACF,CAAA;AAEJ,CAAC;ACzFM,IAAM,QAAA,GAAWC,UAAAA,CAA0C,SAASc,SAAAA,CAAS;AAAA,EAClF,IAAA;AAAA,EACA,MAAA,GAAS,IAAA;AAAA,EACT,KAAA,GAAQ,KAAA;AAAA,EACR,WAAA,GAAc,IAAA;AAAA,EACd,UAAA,GAAa,IAAA;AAAA,EACb,UAAA,GAAa,KAAA;AAAA,EACb,QAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd;AACF,CAAA,EAAG,GAAA,EAAK;AACN,EAAA,MAAM,MAAA,GAAS,cAAA,CAAe,IAAA,CAAK,MAAA,EAAQ,KAAK,CAAA;AAChD,EAAA,MAAM,UAAA,GAAa,kBAAkB,QAAQ,CAAA;AAE7C,EAAA,MAAM,WAAA,GAAc,UAAA,GAChB,CAAC,EAAE,OAAA,EAAQ,KAA4B,CAAA,EAAA,CAAA,CAAK,OAAA,IAAW,CAAA,IAAK,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA,GAC3E,KAAA;AAEJ,EAAA,IAAI,CAAC,IAAA,EAAM,MAAA,EAAQ,OAAO,IAAA;AAE1B,EAAA,uBACEf,IAAC,YAAA,EAAA,EAAa,GAAA,EAAU,QAAgB,SAAA,EAAsB,YAAA,EAAY,WACxE,QAAA,kBAAAA,GAAAA,CAACM,qBAAA,EAAoB,KAAA,EAAM,QAAO,MAAA,EAAO,MAAA,EACvC,0BAAAH,IAAAA,CAACa,UAAA,EAAA,EAAiB,oBAAkB,IAAA,EAClC,QAAA,EAAA;AAAA,oBAAAhB,GAAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,OAAA,EAAQ,OAAA;AAAA,QACR,OAAA,EAAQ,MAAA;AAAA,QACR,EAAA,EAAG,KAAA;AAAA,QACH,EAAA,EAAG,KAAA;AAAA,QACH,WAAA,EAAY,KAAA;AAAA,QACZ,WAAA,EAAa,QAAQ,KAAA,GAAQ,CAAA;AAAA,QAC7B,KAAA,EAAO,WAAA;AAAA,QACP,SAAA,EAAW,UAAA;AAAA,QACX,iBAAA,EAAmB,UAAA;AAAA,QACnB,QAAA,EAAS,wBAAA;AAAA,QACT,UAAA,EAAW,qBAAA;AAAA,QAEV,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,EAAG,sBACZA,GAAAA,CAAC,IAAA,EAAA,EAAa,IAAA,EAAM,OAAO,CAAA,GAAI,MAAA,CAAO,MAAM,CAAA,EAAA,EAAjC,CAAoC,CAChD;AAAA;AAAA,KACH;AAAA,IACC,WAAA,oBAAeA,GAAAA,CAACW,OAAAA,EAAA,EAAQ,OAAA,kBAASX,GAAAA,CAAC,mBAAA,EAAA,EAAoB,CAAA,EAAI,CAAA;AAAA,IAC1D,UAAA,oBAAcA,GAAAA,CAACY,MAAAA,EAAA,EAAO,OAAA,kBAASZ,GAAAA,CAAC,kBAAA,EAAA,EAAmB,CAAA,EAAI,YAAA,EAAc,EAAE,UAAA,EAAY,qBAAoB,EAAG;AAAA,GAAA,EAC7G,GACF,CAAA,EACF,CAAA;AAEJ,CAAC;ACtCM,IAAM,cAAA,GAAiBC,UAAAA,CAAgD,SAASgB,eAAAA,CAAe;AAAA,EACpG,IAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA,GAAS,IAAA;AAAA,EACT,QAAA,GAAW,IAAA;AAAA,EACX,QAAA,GAAW,IAAA;AAAA,EACX,WAAA,GAAc,IAAA;AAAA,EACd,UAAA,GAAa,IAAA;AAAA,EACb,UAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd;AACF,CAAA,EAAG,GAAA,EAAK;AACN,EAAA,MAAM,aAAA,GAAgB,cAAA,CAAe,IAAA,CAAK,MAAA,EAAQ,IAAI,CAAA;AACtD,EAAA,MAAM,UAAA,GAAa,cAAA,CAAe,KAAA,CAAM,MAAA,EAAQ,KAAK,CAAA;AACrD,EAAA,MAAM,aAAa,aAAA,EAAc;AACjC,EAAA,MAAM,YAAY,YAAA,EAAa;AAC/B,EAAA,MAAM,UAAA,GAAa,kBAAkB,QAAQ,CAAA;AAC7C,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,MAAM,cAAA,GAAiB,EAAE,QAAA,EAAU,wBAAA,EAA0B,YAAY,qBAAA,EAAuB,IAAA,EAAM,SAAA,CAAU,IAAA,CAAK,IAAA,EAAK;AAE1H,EAAA,IAAI,CAAC,IAAA,EAAM,MAAA,EAAQ,OAAO,IAAA;AAE1B,EAAA,uBACEjB,GAAAA,CAAC,YAAA,EAAA,EAAa,GAAA,EAAU,QAAgB,SAAA,EAAsB,YAAA,EAAY,SAAA,EACxE,QAAA,kBAAAA,GAAAA,CAACM,mBAAAA,EAAA,EAAoB,KAAA,EAAM,QAAO,MAAA,EAAO,MAAA,EACvC,QAAA,kBAAAH,IAAAA,CAAC,aAAA,EAAA,EAAc,IAAA,EAAY,MAAA,EAAQ,EAAE,KAAK,CAAA,EAAG,KAAA,EAAO,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,IAAA,EAAM,CAAA,EAAE,EAAG,oBAAkB,IAAA,EAC5F,QAAA,EAAA;AAAA,IAAA,QAAA,oBAAYH,GAAAA,CAACQ,aAAAA,EAAA,EAAc,eAAA,EAAgB,KAAA,EAAM,QAAQ,UAAA,EAAY,CAAA;AAAA,oBACtER,GAAAA;AAAA,MAACS,KAAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,QAAA;AAAA,QACR,GAAG,SAAA,CAAU,IAAA;AAAA,QACd,QAAA,EAAU,KAAA;AAAA,QACV,QAAA,EAAU,KAAA;AAAA,QACV,IAAA,EAAM,SAAA;AAAA,QACN,MAAA,EAAO,MAAA;AAAA,QACP,KAAA,EAAO,UAAA,GAAa,EAAE,KAAA,EAAO,UAAA,EAAY,QAAA,EAAU,cAAA,EAAgB,MAAA,EAAQ,EAAA,EAAI,KAAA,EAAO,cAAA,EAAe,GAAI;AAAA;AAAA,KAC3G;AAAA,oBACAT,GAAAA;AAAA,MAACU,KAAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,MAAA;AAAA,QACR,KAAA,EAAM,MAAA;AAAA,QACL,GAAG,SAAA,CAAU,IAAA;AAAA,QACd,QAAA,EAAU,KAAA;AAAA,QACV,QAAA,EAAU,KAAA;AAAA,QACV,KAAA,EAAO,UAAA,GAAa,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,KAAA,EAAO,cAAA,EAAe,GAAI;AAAA;AAAA,KACzG;AAAA,IACC,4BACCV,GAAAA,CAACU,KAAAA,EAAA,EAAM,SAAQ,OAAA,EAAQ,WAAA,EAAY,OAAA,EAAQ,KAAA,EAAM,QAAQ,GAAG,SAAA,CAAU,MAAM,QAAA,EAAU,KAAA,EAAO,UAAU,KAAA,EAAO,CAAA;AAAA,IAE/G,WAAA,oBAAeV,GAAAA,CAACW,OAAAA,EAAA,EAAQ,OAAA,kBAASX,GAAAA,CAAC,mBAAA,EAAA,EAAoB,CAAA,EAAI,CAAA;AAAA,IAC1D,UAAA,oBAAcA,GAAAA,CAACY,MAAAA,EAAA,EAAO,OAAA,kBAASZ,GAAAA,CAAC,kBAAA,EAAA,EAAmB,CAAA,EAAI,YAAA,EAAc,EAAE,UAAA,EAAY,qBAAoB,EAAG,CAAA;AAAA,IAC1G,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAK,sBACdA,GAAAA;AAAA,MAACkB,GAAAA;AAAA,MAAA;AAAA,QAEC,SAAS,GAAA,CAAI,OAAA;AAAA,QACb,IAAA,EAAM,GAAA,CAAI,KAAA,IAAS,GAAA,CAAI,OAAA;AAAA,QACvB,IAAA,EAAM,cAAc,CAAC,CAAA;AAAA,QACrB,MAAA,EAAQ,CAAC,MAAA,EAAQ,MAAA,EAAQ,GAAG,CAAC,CAAA;AAAA,QAC7B,OAAA,EAAQ,MAAA;AAAA,QACR,iBAAA,EAAmB;AAAA,OAAA;AAAA,MANd,GAAA,CAAI;AAAA,KAQZ,CAAA;AAAA,IACA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,sBAChBlB,GAAAA;AAAA,MAACmB,IAAAA;AAAA,MAAA;AAAA,QAEC,IAAA,EAAK,UAAA;AAAA,QACL,SAAS,IAAA,CAAK,OAAA;AAAA,QACd,IAAA,EAAM,IAAA,CAAK,KAAA,IAAS,IAAA,CAAK,OAAA;AAAA,QACzB,MAAA,EAAQ,WAAW,CAAC,CAAA;AAAA,QACpB,WAAA,EAAa,CAAA;AAAA,QACb,eAAA,EAAiB,IAAA,CAAK,MAAA,GAAS,KAAA,GAAQ,MAAA;AAAA,QACvC,GAAA,EAAK,KAAA;AAAA,QACL,OAAA,EAAS,WAAW,OAAA,GAAU,MAAA;AAAA,QAC9B,iBAAA,EAAmB;AAAA,OAAA;AAAA,MATd,IAAA,CAAK;AAAA,KAWb;AAAA,GAAA,EACH,GACF,CAAA,EACF,CAAA;AAEJ,CAAC;ACnFM,IAAM,YAAA,GAAelB,UAAAA,CAA8C,SAASmB,aAAAA,CAAa;AAAA,EAC9F,IAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA,GAAS,IAAA;AAAA,EACT,QAAA,GAAW,IAAA;AAAA,EACX,WAAA,GAAc,IAAA;AAAA,EACd,UAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd;AACF,CAAA,EAAG,GAAA,EAAK;AACN,EAAA,MAAM,MAAA,GAAS,cAAA,CAAe,IAAA,CAAK,MAAA,EAAQ,KAAK,CAAA;AAChD,EAAA,MAAM,aAAa,aAAA,EAAc;AACjC,EAAA,MAAM,YAAY,YAAA,EAAa;AAC/B,EAAA,MAAM,UAAA,GAAa,kBAAkB,QAAQ,CAAA;AAC7C,EAAA,MAAM,aAAA,GAAgB,UAAA,IAAc,IAAA,CAAK,MAAA,IAAU,CAAA;AACnD,EAAA,MAAM,cAAA,GAAiB,EAAE,QAAA,EAAU,wBAAA,EAA0B,YAAY,qBAAA,EAAuB,IAAA,EAAM,SAAA,CAAU,IAAA,CAAK,IAAA,EAAK;AAE1H,EAAA,IAAI,CAAC,IAAA,EAAM,MAAA,EAAQ,OAAO,IAAA;AAE1B,EAAA,uBACEpB,GAAAA,CAAC,YAAA,EAAA,EAAa,GAAA,EAAU,MAAA,EAAgB,WAAsB,YAAA,EAAY,SAAA,EACxE,QAAA,kBAAAA,GAAAA,CAACM,qBAAA,EAAoB,KAAA,EAAM,MAAA,EAAO,MAAA,EAAO,QACvC,QAAA,kBAAAH,IAAAA;AAAA,IAACkB,cAAA;AAAA,IAAA;AAAA,MACC,MAAA,EAAQ,EAAE,GAAA,EAAK,CAAA,EAAG,KAAA,EAAO,CAAA,EAAG,MAAA,EAAQ,MAAA,GAAS,EAAA,GAAK,CAAA,EAAG,IAAA,EAAM,MAAA,GAAS,KAAK,CAAA,EAAE;AAAA,MAC3E,kBAAA,EAAkB,IAAA;AAAA,MAEjB,QAAA,EAAA;AAAA,QAAA,QAAA,oBAAYrB,GAAAA,CAACQ,aAAAA,EAAA,EAAc,eAAA,EAAgB,KAAA,EAAM,QAAQ,UAAA,EAAY,CAAA;AAAA,wBACtER,GAAAA;AAAA,UAACS,KAAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAQ,GAAA;AAAA,YACR,MAAM,MAAA,IAAU,GAAA;AAAA,YACf,GAAG,SAAA,CAAU,IAAA;AAAA,YACd,QAAA,EAAU,KAAA;AAAA,YACV,QAAA,EAAU,KAAA;AAAA,YACV,OAAO,MAAA,GAAS,EAAE,KAAA,EAAO,MAAA,EAAQ,UAAU,QAAA,EAAU,MAAA,EAAQ,CAAA,EAAG,KAAA,EAAO,EAAE,GAAG,cAAA,EAAgB,UAAA,EAAY,QAAA,IAAW,GAAI;AAAA;AAAA,SACzH;AAAA,wBACAT,GAAAA;AAAA,UAACU,KAAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAQ,GAAA;AAAA,YACR,MAAM,MAAA,IAAU,GAAA;AAAA,YAChB,KAAA,EAAM,MAAA;AAAA,YACL,GAAG,SAAA,CAAU,IAAA;AAAA,YACd,QAAA,EAAU,KAAA;AAAA,YACV,QAAA,EAAU,KAAA;AAAA,YACV,OAAO,MAAA,GAAS,EAAE,OAAO,MAAA,EAAQ,KAAA,EAAO,KAAK,QAAA,EAAU,MAAA,EAAQ,MAAA,EAAQ,CAAA,EAAG,OAAO,EAAE,GAAG,gBAAgB,UAAA,EAAY,QAAA,IAAW,GAAI;AAAA;AAAA,SACnI;AAAA,wBACAV,GAAAA,CAAC,KAAA,EAAA,EAAM,IAAA,EAAK,QAAA,EAAS,OAAA,EAAQ,GAAA,EAAI,KAAA,EAAO,CAAC,EAAA,EAAI,GAAG,CAAA,EAAG,CAAA;AAAA,QAClD,WAAA,oBAAeA,GAAAA,CAACW,OAAAA,EAAA,EAAQ,OAAA,kBAASX,GAAAA,CAAC,mBAAA,EAAA,EAAoB,CAAA,EAAI,CAAA;AAAA,QAC1D,aAAA,oBAAiBA,GAAAA,CAACY,MAAAA,EAAA,EAAO,OAAA,kBAASZ,GAAAA,CAAC,kBAAA,EAAA,EAAmB,CAAA,EAAI,YAAA,EAAc,EAAE,UAAA,EAAY,qBAAoB,EAAG,CAAA;AAAA,QAC7G,IAAA,CAAK,GAAA,CAAI,CAAC,MAAA,EAAQ,sBACjBA,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YAEC,MAAM,MAAA,CAAO,IAAA;AAAA,YACb,MAAM,MAAA,CAAO,MAAA;AAAA,YACb,IAAA,EAAM,OAAO,CAAC,CAAA;AAAA,YACd,iBAAA,EAAmB;AAAA,WAAA;AAAA,UAJd,MAAA,CAAO;AAAA,SAMf;AAAA;AAAA;AAAA,KAEL,CAAA,EACF,CAAA;AAEJ,CAAC;AChEM,IAAM,UAAA,GAAaC,UAAAA,CAA4C,SAASqB,WAAAA,CAAW;AAAA,EACxF,IAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA,GAAS,IAAA;AAAA,EACT,MAAA,GAAS,IAAA;AAAA,EACT,QAAA,GAAW,IAAA;AAAA,EACX,WAAA,GAAc,IAAA;AAAA,EACd,UAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd;AACF,CAAA,EAAG,GAAA,EAAK;AACN,EAAA,MAAM,WAAA,GAAc,cAAA,CAAe,QAAA,CAAS,MAAA,EAAQ,KAAK,CAAA;AACzD,EAAA,MAAM,UAAA,GAAa,cAAA,CAAe,QAAA,CAAS,MAAA,EAAQ,IAAI,CAAA;AACvD,EAAA,MAAM,UAAA,GAAa,kBAAkB,QAAQ,CAAA;AAC7C,EAAA,MAAM,aAAA,GAAgB,UAAA,IAAc,QAAA,CAAS,MAAA,IAAU,CAAA;AAEvD,EAAA,IAAI,CAAC,IAAA,EAAM,MAAA,EAAQ,OAAO,IAAA;AAE1B,EAAA,uBACEtB,GAAAA,CAAC,YAAA,EAAA,EAAa,GAAA,EAAU,MAAA,EAAgB,SAAA,EAAsB,YAAA,EAAY,SAAA,EACxE,QAAA,kBAAAA,GAAAA,CAACM,mBAAAA,EAAA,EAAoB,KAAA,EAAM,MAAA,EAAO,MAAA,EAAO,MAAA,EACvC,QAAA,kBAAAH,IAAAA,CAACoB,YAAA,EAAA,EAAmB,IAAA,EAAY,EAAA,EAAG,KAAA,EAAM,EAAA,EAAG,KAAA,EAAM,WAAA,EAAY,KAAA,EAAM,kBAAA,EAAkB,IAAA,EACpF,QAAA,EAAA;AAAA,oBAAAvB,GAAAA,CAAC,SAAA,EAAA,EAAU,MAAA,EAAO,yBAAA,EAA0B,CAAA;AAAA,oBAC5CA,GAAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,OAAA;AAAA,QACT,MAAM,EAAE,QAAA,EAAU,0BAA0B,UAAA,EAAY,qBAAA,EAAuB,MAAM,sBAAA;AAAuB;AAAA,KAC9G;AAAA,oBACAA,GAAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,MAAM,EAAE,QAAA,EAAU,0BAA0B,UAAA,EAAY,qBAAA,EAAuB,MAAM,sBAAA,EAAuB;AAAA,QAC5G,QAAA,EAAU;AAAA;AAAA,KACZ;AAAA,IACC,WAAA,oBAAeA,GAAAA,CAACW,OAAAA,EAAA,EAAQ,OAAA,kBAASX,GAAAA,CAAC,mBAAA,EAAA,EAAoB,CAAA,EAAI,CAAA;AAAA,IAC1D,aAAA,oBAAiBA,GAAAA,CAACY,MAAAA,EAAA,EAAO,OAAA,kBAASZ,GAAAA,CAAC,kBAAA,EAAA,EAAmB,CAAA,EAAI,YAAA,EAAc,EAAE,UAAA,EAAY,qBAAoB,EAAG,CAAA;AAAA,IAC7G,QAAA,CAAS,GAAA,CAAI,CAAC,EAAA,EAAI,sBACjBA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,IAAA,EAAM,EAAA,CAAG,KAAA,IAAS,EAAA,CAAG,GAAA;AAAA,QACrB,SAAS,EAAA,CAAG,GAAA;AAAA,QACZ,MAAA,EAAQ,YAAY,CAAC,CAAA;AAAA,QACrB,IAAA,EAAM,MAAA,GAAS,UAAA,CAAW,CAAC,CAAA,GAAI,aAAA;AAAA,QAC/B,WAAA,EAAa,CAAA;AAAA,QACb,GAAA,EAAK,WAAW,EAAE,CAAA,EAAG,GAAG,IAAA,EAAM,WAAA,CAAY,CAAC,CAAA,EAAE,GAAI,KAAA;AAAA,QACjD,iBAAA,EAAmB;AAAA,OAAA;AAAA,MAPd,EAAA,CAAG;AAAA,KASX;AAAA,GAAA,EACH,GACF,CAAA,EACF,CAAA;AAEJ,CAAC;AC5DM,IAAM,cAAA,GAAiBC,UAAAA,CAAgD,SAASuB,eAAAA,CAAe;AAAA,EACpG,IAAA;AAAA,EACA,MAAA,GAAS,IAAA;AAAA,EACT,WAAA,GAAc,IAAA;AAAA,EACd,UAAA,GAAa,IAAA;AAAA,EACb,UAAA,GAAa,KAAA;AAAA,EACb,UAAA,GAAa,EAAA;AAAA,EACb,QAAA,GAAW,IAAA;AAAA,EACX,QAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd;AACF,CAAA,EAAG,GAAA,EAAK;AACN,EAAA,MAAM,MAAA,GAAS,cAAA,CAAe,IAAA,CAAK,MAAA,EAAQ,KAAK,CAAA;AAChD,EAAA,MAAM,UAAA,GAAa,kBAAkB,QAAQ,CAAA;AAE7C,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,CAAC,GAAG,CAAA,MAAO;AAAA,IACpC,GAAG,CAAA;AAAA,IACH,IAAA,EAAM,MAAA,CAAO,CAAA,GAAI,MAAA,CAAO,MAAM;AAAA,GAChC,CAAE,CAAA;AAEF,EAAA,IAAI,CAAC,IAAA,EAAM,MAAA,EAAQ,OAAO,IAAA;AAE1B,EAAA,uBACExB,GAAAA,CAAC,YAAA,EAAA,EAAa,GAAA,EAAU,MAAA,EAAgB,WAAsB,YAAA,EAAY,SAAA,EACxE,QAAA,kBAAAA,GAAAA,CAACM,qBAAA,EAAoB,KAAA,EAAM,MAAA,EAAO,MAAA,EAAO,QACvC,QAAA,kBAAAH,IAAAA;AAAA,IAACsB,gBAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAM,SAAA;AAAA,MACN,EAAA,EAAG,KAAA;AAAA,MACH,EAAA,EAAG,KAAA;AAAA,MACH,WAAA,EAAY,KAAA;AAAA,MACZ,WAAA,EAAY,KAAA;AAAA,MACZ,UAAA;AAAA,MACA,QAAA;AAAA,MACA,kBAAA,EAAkB,IAAA;AAAA,MAElB,QAAA,EAAA;AAAA,wBAAAzB,GAAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,OAAA;AAAA,YACR,UAAA,EAAY,EAAE,IAAA,EAAM,oBAAA,EAAqB;AAAA,YACzC,KAAA,EAAO,aAAa,EAAE,QAAA,EAAU,eAAe,IAAA,EAAM,wBAAA,EAA0B,QAAA,EAAU,wBAAA,EAAyB,GAAI,KAAA;AAAA,YACtH,iBAAA,EAAmB;AAAA;AAAA,SACrB;AAAA,QACC,WAAA,oBAAeA,GAAAA,CAACW,OAAAA,EAAA,EAAQ,OAAA,kBAASX,GAAAA,CAAC,mBAAA,EAAA,EAAoB,CAAA,EAAI,CAAA;AAAA,QAC1D,UAAA,oBAAcA,GAAAA,CAACY,MAAAA,EAAA,EAAO,OAAA,kBAASZ,GAAAA,CAAC,kBAAA,EAAA,EAAmB,CAAA,EAAI,YAAA,EAAc,EAAE,UAAA,EAAY,qBAAoB,EAAG;AAAA;AAAA;AAAA,KAE/G,CAAA,EACF,CAAA;AAEJ,CAAC;AChDM,IAAM,WAAA,GAAcC,UAAAA,CAA6C,SAASyB,YAAAA,CAAY;AAAA,EAC3F,IAAA;AAAA,EACA,MAAA,GAAS,IAAA;AAAA,EACT,WAAA,GAAc,IAAA;AAAA,EACd,UAAA,GAAa,IAAA;AAAA,EACb,UAAA,GAAa,IAAA;AAAA,EACb,QAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd;AACF,CAAA,EAAG,GAAA,EAAK;AACN,EAAA,MAAM,MAAA,GAAS,cAAA,CAAe,IAAA,CAAK,MAAA,EAAQ,KAAK,CAAA;AAChD,EAAA,MAAM,UAAA,GAAa,kBAAkB,QAAQ,CAAA;AAE7C,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,CAAC,GAAG,CAAA,MAAO;AAAA,IACpC,GAAG,CAAA;AAAA,IACH,IAAA,EAAM,MAAA,CAAO,CAAA,GAAI,MAAA,CAAO,MAAM;AAAA,GAChC,CAAE,CAAA;AAEF,EAAA,IAAI,CAAC,IAAA,EAAM,MAAA,EAAQ,OAAO,IAAA;AAE1B,EAAA,uBACE1B,IAAC,YAAA,EAAA,EAAa,GAAA,EAAU,QAAgB,SAAA,EAAsB,YAAA,EAAY,WACxE,QAAA,kBAAAA,GAAAA,CAACM,qBAAA,EAAoB,KAAA,EAAM,QAAO,MAAA,EAAO,MAAA,EACvC,0BAAAH,IAAAA,CAACwB,aAAA,EAAA,EAAoB,oBAAkB,IAAA,EACrC,QAAA,EAAA;AAAA,oBAAA3B,GAAAA,CAAC,UAAO,OAAA,EAAQ,OAAA,EAAQ,MAAM,SAAA,EAAW,iBAAA,EAAmB,UAAA,EACzD,QAAA,EAAA,UAAA,oBACCA,GAAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,MAAA;AAAA,QACR,QAAA,EAAS,OAAA;AAAA,QACT,IAAA,EAAK,wBAAA;AAAA,QACL,QAAA,EAAS,wBAAA;AAAA,QACT,UAAA,EAAW;AAAA;AAAA,KACb,EAEJ,CAAA;AAAA,IACC,WAAA,oBAAeA,GAAAA,CAACW,OAAAA,EAAA,EAAQ,OAAA,kBAASX,GAAAA,CAAC,mBAAA,EAAA,EAAoB,CAAA,EAAI,CAAA;AAAA,IAC1D,UAAA,oBAAcA,GAAAA,CAACY,MAAAA,EAAA,EAAO,OAAA,kBAASZ,GAAAA,CAAC,kBAAA,EAAA,EAAmB,CAAA,EAAI,YAAA,EAAc,EAAE,UAAA,EAAY,qBAAoB,EAAG;AAAA,GAAA,EAC7G,GACF,CAAA,EACF,CAAA;AAEJ,CAAC;AC3BD,SAAS,cAAc,GAAA,EAAqB;AAC1C,EAAA,MAAM,CAAA,GAAI,GAAA,CAAI,OAAA,CAAQ,GAAA,EAAK,EAAE,CAAA;AAC7B,EAAA,IAAI,CAAA,CAAE,MAAA,GAAS,CAAA,EAAG,OAAO,SAAA;AACzB,EAAA,MAAM,IAAI,QAAA,CAAS,CAAA,CAAE,UAAU,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AACxC,EAAA,MAAM,IAAI,QAAA,CAAS,CAAA,CAAE,UAAU,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AACxC,EAAA,MAAM,IAAI,QAAA,CAAS,CAAA,CAAE,UAAU,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AACxC,EAAA,MAAM,aAAa,KAAA,GAAQ,CAAA,GAAI,KAAA,GAAQ,CAAA,GAAI,QAAQ,CAAA,IAAK,GAAA;AACxD,EAAA,OAAO,SAAA,GAAY,OAAO,SAAA,GAAY,SAAA;AACxC;AAEA,SAAS,eAAe,EAAE,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAG,KAAA,GAAQ,CAAA,EAAG,MAAA,EAAQ,CAAA,GAAI,GAAG,IAAA,EAAM,KAAA,EAAO,QAAQ,MAAA,EAAQ,KAAA,GAAQ,GAAE,EAAwB;AAC/H,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,GAAQ,MAAA,CAAO,MAAM,CAAA;AACzC,EAAA,MAAM,SAAA,GAAY,KAAA,GAAQ,EAAA,IAAM,CAAA,GAAI,EAAA;AACpC,EAAA,MAAM,UAAA,GAAa,cAAc,IAAI,CAAA;AAErC,EAAA,uBACEG,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAH,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,CAAA;AAAA,QACA,CAAA;AAAA,QACA,KAAA;AAAA,QACA,MAAA,EAAQ,CAAA;AAAA,QACR,IAAA;AAAA,QACA,MAAA,EAAO,sBAAA;AAAA,QACP,WAAA,EAAa,CAAA;AAAA,QACb,EAAA,EAAI,KAAA,KAAU,CAAA,GAAI,MAAA,GAAS,CAAA;AAAA,QAC3B,OAAO,EAAE,OAAA,EAAS,KAAA,KAAU,CAAA,GAAI,IAAI,IAAA;AAAK;AAAA,KAC3C;AAAA,IACC,6BACCA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAG,IAAI,KAAA,GAAQ,CAAA;AAAA,QACf,CAAA,EAAG,IAAI,CAAA,GAAI,CAAA;AAAA,QACX,UAAA,EAAW,QAAA;AAAA,QACX,gBAAA,EAAiB,SAAA;AAAA,QACjB,IAAA,EAAM,UAAA;AAAA,QACN,MAAA,EAAO,MAAA;AAAA,QACP,QAAA,EAAS,wBAAA;AAAA,QACT,UAAA,EAAW,qBAAA;AAAA,QACX,KAAA,EAAO,EAAE,aAAA,EAAe,MAAA,EAAO;AAAA,QAE9B,QAAA,EAAA;AAAA;AAAA;AACH,GAAA,EAEJ,CAAA;AAEJ;AAEA,SAAS,eAAe,KAAA,EAAsB,MAAA,EAAkB,UAAU,EAAE,CAAA,EAAG,GAAE,EAAkB;AACjG,EAAA,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACzB,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA,OAAO,EAAE,GAAG,IAAA,EAAM,QAAA,EAAU,eAAe,IAAA,CAAK,QAAA,EAAU,MAAA,EAAQ,OAAO,CAAA,EAAE;AAAA,IAC7E;AACA,IAAA,MAAM,IAAA,GAAO,MAAA,CAAO,OAAA,CAAQ,CAAA,GAAI,OAAO,MAAM,CAAA;AAC7C,IAAA,OAAA,CAAQ,CAAA,EAAA;AACR,IAAA,OAAO,EAAE,GAAG,IAAA,EAAM,IAAA,EAAK;AAAA,EACzB,CAAC,CAAA;AACH;AAEO,IAAM,YAAA,GAAeC,UAAAA,CAA8C,SAAS2B,aAAAA,CAAa;AAAA,EAC9F,IAAA;AAAA,EACA,MAAA,GAAS,IAAA;AAAA,EACT,WAAA,GAAc,IAAA;AAAA,EACd,QAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd;AACF,CAAA,EAAG,GAAA,EAAK;AACN,EAAA,MAAM,MAAA,GAAS,cAAA,CAAe,CAAA,EAAG,KAAK,CAAA;AACtC,EAAA,MAAM,UAAA,GAAa,kBAAkB,QAAQ,CAAA;AAC7C,EAAA,MAAM,SAAS,SAAA,EAAU;AAEzB,EAAA,MAAM,SAAA,GAAY,cAAA,CAAe,IAAA,EAAM,MAAM,CAAA;AAE7C,EAAA,IAAI,CAAC,IAAA,EAAM,MAAA,EAAQ,OAAO,IAAA;AAE1B,EAAA,uBACE5B,GAAAA,CAAC,YAAA,EAAA,EAAa,GAAA,EAAU,MAAA,EAAgB,WAAsB,YAAA,EAAY,SAAA,EACxE,QAAA,kBAAAA,GAAAA,CAACM,qBAAA,EAAoB,KAAA,EAAM,MAAA,EAAO,MAAA,EAAO,QACvC,QAAA,kBAAAN,GAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAM,SAAA;AAAA,MACN,OAAA,EAAQ,OAAA;AAAA,MACR,OAAA,EAAQ,MAAA;AAAA,MACR,aAAa,CAAA,GAAI,CAAA;AAAA,MACjB,MAAA,EAAO,sBAAA;AAAA,MACP,iBAAA,EAAmB,UAAA;AAAA,MACnB,OAAA,kBAASA,GAAAA,CAAC,cAAA,EAAA,EAAe,QAAgB,MAAA,EAAgB,CAAA;AAAA,MAExD,QAAA,EAAA,WAAA,oBAAeA,GAAAA,CAACW,OAAAA,EAAA,EAAQ,OAAA,kBAASX,GAAAA,CAAC,mBAAA,EAAA,EAAoB,CAAA,EAAI;AAAA;AAAA,KAE/D,CAAA,EACF,CAAA;AAEJ,CAAC;AC3GM,IAAM,WAAA,GAAcC,UAAAA,CAA6C,SAAS4B,YAAAA,CAAY;AAAA,EAC3F,IAAA;AAAA,EACA,MAAA,GAAS,IAAA;AAAA,EACT,WAAA,GAAc,IAAA;AAAA,EACd,YAAA,EAAc,SAAA;AAAA,EACd;AACF,CAAA,EAAG,GAAA,EAAK;AACN,EAAA,MAAM,MAAA,GAAS,cAAA,CAAe,IAAA,CAAK,KAAA,CAAM,QAAQ,KAAK,CAAA;AACtD,EAAA,MAAM,UAAA,GAAa,iBAAiB,oBAAoB,CAAA;AAExD,EAAA,MAAM,iBAAiB,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,CAAC,MAAM,CAAA,MAAO;AAAA,IAClD,GAAG,IAAA;AAAA,IACH,IAAA,EAAM,MAAA,CAAO,CAAA,GAAI,MAAA,CAAO,MAAM;AAAA,GAChC,CAAE,CAAA;AAEF,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,KAAA,EAAO,cAAA;AAAA,IACP,OAAO,IAAA,CAAK;AAAA,GACd;AAEA,EAAA,IAAI,CAAC,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ,OAAO,IAAA;AAEjC,EAAA,uBACE7B,GAAAA,CAAC,YAAA,EAAA,EAAa,GAAA,EAAU,MAAA,EAAgB,WAAsB,YAAA,EAAY,SAAA,EACxE,QAAA,kBAAAA,GAAAA,CAACM,qBAAA,EAAoB,KAAA,EAAM,MAAA,EAAO,MAAA,EAAO,QACvC,QAAA,kBAAAN,GAAAA;AAAA,IAAC8B,MAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAM,UAAA;AAAA,MACN,SAAA,EAAW,EAAA;AAAA,MACX,WAAA,EAAa,EAAA;AAAA,MACb,MAAA,EAAQ,EAAE,GAAA,EAAK,CAAA,EAAG,OAAO,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,IAAA,EAAM,CAAA,EAAE;AAAA,MAC/C,IAAA,EAAM,EAAE,MAAA,EAAQ,UAAA,EAAY,eAAe,GAAA,EAAI;AAAA,MAE9C,QAAA,EAAA,WAAA,oBAAe9B,GAAAA,CAACW,OAAAA,EAAA,EAAQ,OAAA,kBAASX,GAAAA,CAAC,mBAAA,EAAA,EAAoB,CAAA,EAAI;AAAA;AAAA,KAE/D,CAAA,EACF,CAAA;AAEJ,CAAC;AC7BM,IAAM,SAAA,GAAYC,UAAAA,CAA2C,SAAS8B,UAAAA,CAAU;AAAA,EACrF,IAAA;AAAA,EACA,OAAA,GAAU,MAAA;AAAA,EACV,KAAA,GAAQ,CAAA;AAAA,EACR,MAAA,GAAS,EAAA;AAAA,EACT,KAAA,GAAQ,MAAA;AAAA,EACR,WAAA,GAAc,KAAA;AAAA,EACd,MAAA,GAAS,IAAA;AAAA,EACT,QAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd;AACF,CAAA,EAAG,GAAA,EAAK;AACN,EAAA,MAAM,aAAaC,KAAAA,EAAM;AACzB,EAAA,MAAM,UAAA,GAAa,kBAAkB,QAAQ,CAAA;AAC7C,EAAA,MAAM,kBAAkB,uBAAA,EAAwB;AAEhD,EAAA,MAAM,SAAA,GAAY,cAAc,KAAK,CAAA,CAAA;AACrC,EAAA,MAAM,aAAA,GAAgB,cAAc,KAAK,CAAA,KAAA,CAAA;AACzC,EAAA,MAAM,UAAA,GAAa,iBAAiB,SAAS,CAAA;AAC7C,EAAA,MAAM,SAAA,GAAY,iBAAiB,aAAa,CAAA;AAChD,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,CAAC,KAAA,EAAO,OAAO,EAAE,KAAA,EAAO,KAAA,EAAO,CAAA,EAAE,CAAE,CAAA;AAE9D,EAAA,MAAM,cAAA,GAAiB,kBACnB,EAAE,KAAA,EAAO,QAAQ,MAAA,EAAQ,MAAA,KACzB,EAAE,KAAA,EAAO,OAAO,KAAA,KAAU,QAAA,GAAW,GAAG,KAAK,CAAA,EAAA,CAAA,GAAO,OAAO,MAAA,EAAQ,CAAA,EAAG,MAAM,CAAA,EAAA,CAAA,EAAK;AAErF,EAAA,IAAI,CAAC,IAAA,EAAM,MAAA,EAAQ,OAAO,IAAA;AAE1B,EAAA,IAAI,YAAY,KAAA,EAAO;AACrB,IAAA,uBACEhC,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAU,KAAA,EAAO,cAAA,EAAgB,WAAuB,GAAI,SAAA,GAAY,EAAE,IAAA,EAAM,OAAO,YAAA,EAAc,SAAA,KAAc,EAAC,EACvH,0BAAAA,GAAAA,CAACM,mBAAAA,EAAA,EAAoB,KAAA,EAAM,QAAO,MAAA,EAAO,MAAA,EACvC,0BAAAH,IAAAA,CAACD,UAAAA,EAAA,EAAS,IAAA,EAAM,SAAA,EAAW,QAAQ,EAAE,GAAA,EAAK,GAAG,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAG,IAAA,EAAM,GAAE,EACxE,QAAA,EAAA;AAAA,sBAAAF,IAACS,KAAAA,EAAA,EAAM,OAAA,EAAQ,OAAA,EAAQ,MAAI,IAAA,EAAC,CAAA;AAAA,sBAC5BT,GAAAA,CAACU,KAAAA,EAAA,EAAM,MAAI,IAAA,EAAC,CAAA;AAAA,MACX,WAAA,oBAAeV,GAAAA,CAACW,OAAAA,EAAA,EAAQ,OAAA,kBAASX,GAAAA,CAAC,mBAAA,EAAA,EAAoB,CAAA,EAAI,MAAA,EAAQ,KAAA,EAAO,CAAA;AAAA,sBAC1EA,GAAAA;AAAA,QAACkB,GAAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,OAAA;AAAA,UACR,IAAA,EAAM,UAAA;AAAA,UACN,MAAA,EAAQ,CAAC,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,UACnB,iBAAA,EAAmB;AAAA;AAAA;AACrB,KAAA,EACF,GACF,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,IAAI,YAAY,MAAA,EAAQ;AACtB,IAAA,MAAM,UAAA,GAAa,CAAA,mBAAA,EAAsB,UAAU,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAC5D,IAAA,uBACElB,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAU,KAAA,EAAO,cAAA,EAAgB,WAAuB,GAAI,SAAA,GAAY,EAAE,IAAA,EAAM,OAAO,YAAA,EAAc,SAAA,KAAc,EAAC,EACvH,0BAAAA,GAAAA,CAACM,mBAAAA,EAAA,EAAoB,KAAA,EAAM,QAAO,MAAA,EAAO,MAAA,EACvC,0BAAAH,IAAAA,CAACU,WAAAA,EAAA,EAAU,IAAA,EAAM,SAAA,EAAW,QAAQ,EAAE,GAAA,EAAK,GAAG,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAG,IAAA,EAAM,GAAE,EACzE,QAAA,EAAA;AAAA,sBAAAb,GAAAA,CAAC,MAAA,EAAA,EACC,QAAA,kBAAAG,IAAAA,CAAC,oBAAe,EAAA,EAAI,UAAA,EAAY,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,IAAG,GAAA,EACtD,QAAA,EAAA;AAAA,wBAAAH,IAAC,MAAA,EAAA,EAAK,MAAA,EAAO,MAAK,SAAA,EAAW,SAAA,EAAW,aAAa,CAAA,EAAG,CAAA;AAAA,wBACxDA,IAAC,MAAA,EAAA,EAAK,MAAA,EAAO,OAAM,SAAA,EAAW,SAAA,EAAW,aAAa,GAAA,EAAK;AAAA,OAAA,EAC7D,CAAA,EACF,CAAA;AAAA,sBACAA,GAAAA,CAACS,KAAAA,EAAA,EAAM,OAAA,EAAQ,OAAA,EAAQ,MAAI,IAAA,EAAC,CAAA;AAAA,sBAC5BT,GAAAA,CAACU,KAAAA,EAAA,EAAM,IAAA,EAAI,MAAC,MAAA,EAAQ,CAAC,aAAA,EAAe,aAAa,CAAA,EAAG,CAAA;AAAA,MACnD,WAAA,oBAAeV,GAAAA,CAACW,OAAAA,EAAA,EAAQ,OAAA,kBAASX,GAAAA,CAAC,mBAAA,EAAA,EAAoB,CAAA,EAAI,MAAA,EAAQ,KAAA,EAAO,CAAA;AAAA,sBAC1EA,GAAAA;AAAA,QAACiC,IAAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,SAAS,UAAA,GAAa,QAAA;AAAA,UAC5B,OAAA,EAAQ,OAAA;AAAA,UACR,MAAA,EAAQ,UAAA;AAAA,UACR,WAAA,EAAa,GAAA;AAAA,UACb,IAAA,EAAM,QAAQ,UAAU,CAAA,CAAA,CAAA;AAAA,UACxB,GAAA,EAAK,KAAA;AAAA,UACL,WAAW,WAAA,GAAc,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,YAAW,GAAI,KAAA;AAAA,UACtD,iBAAA,EAAmB;AAAA;AAAA;AACrB,KAAA,EACF,GACF,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEjC,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAU,KAAA,EAAO,cAAA,EAAgB,WAAuB,GAAI,SAAA,GAAY,EAAE,IAAA,EAAM,OAAO,YAAA,EAAc,SAAA,KAAc,EAAC,EACvH,0BAAAA,GAAAA,CAACM,mBAAAA,EAAA,EAAoB,KAAA,EAAM,QAAO,MAAA,EAAO,MAAA,EACvC,0BAAAH,IAAAA,CAACE,WAAAA,EAAA,EAAU,IAAA,EAAM,SAAA,EAAW,QAAQ,EAAE,GAAA,EAAK,GAAG,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAG,IAAA,EAAM,GAAE,EACzE,QAAA,EAAA;AAAA,oBAAAL,IAACS,KAAAA,EAAA,EAAM,OAAA,EAAQ,OAAA,EAAQ,MAAI,IAAA,EAAC,CAAA;AAAA,oBAC5BT,GAAAA,CAACU,KAAAA,EAAA,EAAM,IAAA,EAAI,MAAC,MAAA,EAAQ,CAAC,aAAA,EAAe,aAAa,CAAA,EAAG,CAAA;AAAA,IACnD,WAAA,oBAAeV,GAAAA,CAACW,OAAAA,EAAA,EAAQ,OAAA,kBAASX,GAAAA,CAAC,mBAAA,EAAA,EAAoB,CAAA,EAAI,MAAA,EAAQ,KAAA,EAAO,CAAA;AAAA,oBAC1EA,GAAAA;AAAA,MAACmB,IAAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,SAAS,UAAA,GAAa,QAAA;AAAA,QAC5B,OAAA,EAAQ,OAAA;AAAA,QACR,MAAA,EAAQ,UAAA;AAAA,QACR,WAAA,EAAa,GAAA;AAAA,QACb,GAAA,EAAK,KAAA;AAAA,QACL,WAAW,WAAA,GAAc,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,YAAW,GAAI,KAAA;AAAA,QACtD,iBAAA,EAAmB;AAAA;AAAA;AACrB,GAAA,EACF,GACF,CAAA,EACF,CAAA;AAEJ,CAAC;AC5HD,IAAMe,WAAAA,GAAa;AAAA,EACjB,EAAA,EAAI,2BAAA;AAAA,EACJ,EAAA,EAAI,2BAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAaO,SAAS,cAAA,CAAe;AAAA,EAC7B,MAAA,GAAS,IAAA;AAAA,EACT,KAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,UAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,QAAA;AAAA,EACA;AACF,CAAA,EAAwB;AACtB,EAAA,uBACE/B,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,OAAA,KAAY,UACR,gBAAA,GACA,EAAA;AAAA,UACE,sCAAA;AAAA,UACA,mGAAA;AAAA,UACA;AAAA,SACF;AAAA,QACJ;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,KAAA,oBACCH,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,6DACV,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,wBAEFA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,QAAQkC,WAAAA,CAAW,MAAM,CAAA,EAAE,EAAG,WAAU,UAAA,EACnD,QAAA,EAAA,OAAA,mBACC/B,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mDAAA,EACb,QAAA,EAAA;AAAA,0BAAAH,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gCAAA,EACZ,QAAA,EAAA,CAAC,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,IAAI,EAAE,CAAA,CAAE,IAAI,CAAC,CAAA,EAAG,sBACpCA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cAEC,OAAA,EAAQ,QAAA;AAAA,cACR,SAAA,EAAU,QAAA;AAAA,cACV,MAAA,EAAQ,GAAG,CAAC,CAAA,CAAA;AAAA,aAAA;AAAA,YAHP;AAAA,WAKR,CAAA,EACH,CAAA;AAAA,0BACAA,IAAC,QAAA,EAAA,EAAS,OAAA,EAAQ,QAAO,KAAA,EAAO,CAAA,EAAG,WAAU,QAAA,EAAS;AAAA,SAAA,EACxD,CAAA,GACE,QAAA,mBACFA,GAAAA,CAAC,qBAAA,CAAsB,UAAtB,EAA+B,KAAA,EAAO,IAAA,EACrC,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,eAAA,EAAiB,QAAA,EAAS,CAAA,EAC3C,CAAA,GACE,UAAA,mBACFA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gDAAA,EACZ,QAAA,EAAA,UAAA,EACH,CAAA,GACE,IAAA,EACN;AAAA;AAAA;AAAA,GACF;AAEJ","file":"charts.js","sourcesContent":["import { useState, useLayoutEffect, useSyncExternalStore } from \"react\";\n\nconst CHART_TOKENS = [\n \"--ds-chart-1\",\n \"--ds-chart-2\",\n \"--ds-chart-3\",\n \"--ds-chart-4\",\n \"--ds-chart-5\",\n \"--ds-chart-6\",\n] as const;\n\nconst CHART_TOKENS_SOFT = [\n \"--ds-chart-1-soft\",\n \"--ds-chart-2-soft\",\n \"--ds-chart-3-soft\",\n \"--ds-chart-4-soft\",\n \"--ds-chart-5-soft\",\n \"--ds-chart-6-soft\",\n] as const;\n\nconst FALLBACK_COLORS: Record<string, string> = {\n \"--ds-chart-1\": \"#6366f1\",\n \"--ds-chart-2\": \"#d97706\",\n \"--ds-chart-3\": \"#059669\",\n \"--ds-chart-4\": \"#dc2626\",\n \"--ds-chart-5\": \"#0891b2\",\n \"--ds-chart-6\": \"#7c3aed\",\n \"--ds-chart-1-soft\": \"rgba(99, 102, 241, 0.3)\",\n \"--ds-chart-2-soft\": \"rgba(217, 119, 6, 0.3)\",\n \"--ds-chart-3-soft\": \"rgba(5, 150, 105, 0.3)\",\n \"--ds-chart-4-soft\": \"rgba(220, 38, 38, 0.3)\",\n \"--ds-chart-5-soft\": \"rgba(8, 145, 178, 0.3)\",\n \"--ds-chart-6-soft\": \"rgba(124, 58, 237, 0.3)\",\n \"--ds-bg-surface\": \"#ffffff\",\n \"--ds-border-subtle\": \"#e5e7eb\",\n \"--ds-text-primary\": \"#111827\",\n \"--ds-text-secondary\": \"#6b7280\",\n \"--ds-text-muted\": \"#9ca3af\",\n};\n\ntype Subscriber = () => void;\n\nlet modeVersion = 0;\nconst subscribers = new Set<Subscriber>();\nlet observerAttached = false;\n\nfunction attachObserver() {\n if (observerAttached || typeof document === \"undefined\") return;\n observerAttached = true;\n\n const observer = new MutationObserver((mutations) => {\n for (const m of mutations) {\n if (m.attributeName === \"data-mode\") {\n modeVersion++;\n for (const sub of subscribers) sub();\n break;\n }\n }\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"data-mode\"],\n });\n}\n\nfunction subscribe(cb: Subscriber) {\n attachObserver();\n subscribers.add(cb);\n return () => { subscribers.delete(cb); };\n}\n\nfunction getSnapshot() {\n return modeVersion;\n}\n\nfunction getServerSnapshot() {\n return 0;\n}\n\nexport function resolveToken(token: string): string {\n if (typeof document === \"undefined\") return FALLBACK_COLORS[token] ?? \"#6366f1\";\n const val = getComputedStyle(document.documentElement).getPropertyValue(token).trim();\n return val || FALLBACK_COLORS[token] || \"#6366f1\";\n}\n\nexport function useChartColors(count: number, soft = false): string[] {\n const version = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n const [colors, setColors] = useState<string[]>(() => fallbackColors(count, soft));\n\n // Reads computed CSS custom properties, which only exist after the theme's\n // style tag is committed — this has to be a post-layout effect.\n /* eslint-disable react-hooks/set-state-in-effect -- token resolution is a DOM read after commit */\n useLayoutEffect(() => {\n setColors(resolveColors(count, soft));\n }, [count, soft, version]);\n /* eslint-enable react-hooks/set-state-in-effect */\n\n return colors;\n}\n\nfunction fallbackColors(count: number, soft: boolean): string[] {\n const tokens = soft ? CHART_TOKENS_SOFT : CHART_TOKENS;\n const result: string[] = [];\n for (let i = 0; i < count; i++) {\n const token = tokens[i % tokens.length];\n result.push(FALLBACK_COLORS[token] ?? \"#6366f1\");\n }\n return result;\n}\n\nfunction resolveColors(count: number, soft: boolean): string[] {\n const tokens = soft ? CHART_TOKENS_SOFT : CHART_TOKENS;\n const result: string[] = [];\n for (let i = 0; i < count; i++) {\n const token = tokens[i % tokens.length];\n result.push(resolveToken(token));\n }\n return result;\n}\n\nexport function useResolvedToken(token: string): string {\n const version = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n const [value, setValue] = useState(() => FALLBACK_COLORS[token] ?? \"#6366f1\");\n\n /* eslint-disable react-hooks/set-state-in-effect -- token resolution is a DOM read after commit */\n useLayoutEffect(() => {\n setValue(resolveToken(token));\n }, [token, version]);\n /* eslint-enable react-hooks/set-state-in-effect */\n\n return value;\n}\n\nexport function useReducedMotion(): boolean {\n const [reduced, setReduced] = useState(() => {\n if (typeof window === \"undefined\") return false;\n return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n });\n\n useLayoutEffect(() => {\n const mql = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n const handler = (e: MediaQueryListEvent) => setReduced(e.matches);\n mql.addEventListener(\"change\", handler);\n return () => mql.removeEventListener(\"change\", handler);\n }, []);\n\n return reduced;\n}\n\nexport const useChartAnimation = (animated?: boolean): boolean => {\n const reduced = useReducedMotion();\n return animated !== false && !reduced;\n};\n","import { Text } from \"recharts\";\nimport { useResolvedToken } from \"../../lib/chart-utils\";\n\ninterface ChartTooltipContentProps {\n active?: boolean;\n payload?: Array<{\n name: string;\n value: number | string;\n color: string;\n dataKey?: string;\n payload?: Record<string, unknown>;\n }>;\n label?: string;\n}\n\nexport function ChartTooltipContent({ active, payload, label }: ChartTooltipContentProps) {\n const bgSurface = useResolvedToken(\"--ds-bg-surface\");\n const borderSubtle = useResolvedToken(\"--ds-border-subtle\");\n const textPrimary = useResolvedToken(\"--ds-text-primary\");\n const textSecondary = useResolvedToken(\"--ds-text-secondary\");\n\n if (!active || !payload?.length) return null;\n\n const showLabel = label != null && label !== \"\" && typeof label !== \"number\";\n\n return (\n <div\n className=\"rounded-[var(--ds-radius-md)] shadow-[var(--ds-shadow-popover)] font-[family-name:var(--ds-font-sans)] text-sm\"\n style={{\n backgroundColor: bgSurface,\n border: `var(--ds-border-width) solid ${borderSubtle}`,\n padding: \"var(--ds-space-2) var(--ds-space-3)\",\n }}\n >\n {showLabel && (\n <p className=\"font-medium mb-ds-1\" style={{ color: textPrimary }}>\n {label}\n </p>\n )}\n {payload.map((entry, i) => {\n const dotColor = (entry.payload?.fill as string) || entry.color || textSecondary;\n const displayName = (typeof entry.payload?.name === \"string\" && entry.payload.name) || entry.name;\n return (\n <div key={i} className=\"flex items-center gap-ds-2\" style={{ marginTop: i > 0 ? 2 : 0 }}>\n <span\n className=\"shrink-0 rounded-[var(--ds-radius-full)]\"\n style={{ width: 8, height: 8, backgroundColor: dotColor }}\n />\n <span style={{ color: textSecondary }}>{displayName}:</span>\n <span className=\"tabular-nums\" style={{ color: textPrimary }}>\n {typeof entry.value === \"number\" ? entry.value.toLocaleString() : entry.value}\n </span>\n </div>\n );\n })}\n </div>\n );\n}\n\ninterface ChartLegendContentProps {\n payload?: Array<{\n value: string;\n color: string;\n dataKey?: string;\n }>;\n}\n\nexport function ChartLegendContent({ payload }: ChartLegendContentProps) {\n const textSecondary = useResolvedToken(\"--ds-text-secondary\");\n\n if (!payload?.length) return null;\n\n return (\n <div className=\"flex flex-wrap justify-center gap-y-ds-1 gap-x-ds-4 font-[family-name:var(--ds-font-sans)] text-sm\">\n {payload.map((entry, i) => (\n <div key={i} className=\"flex items-center gap-ds-1.5\">\n <span\n className=\"shrink-0 rounded-[var(--ds-radius-full)]\"\n style={{ width: 8, height: 8, backgroundColor: entry.color }}\n />\n <span style={{ color: textSecondary }}>{entry.value}</span>\n </div>\n ))}\n </div>\n );\n}\n\nexport function useGridStroke(): string {\n return useResolvedToken(\"--ds-border-subtle\");\n}\n\nexport function useAxisStyle() {\n const textMuted = useResolvedToken(\"--ds-text-muted\");\n\n return {\n tick: {\n fontSize: \"var(--ds-font-size-xs)\",\n fontFamily: \"var(--ds-font-sans)\",\n fill: textMuted,\n },\n };\n}\n\nexport function useRadius(): number {\n const val = useResolvedToken(\"--ds-radius-md\");\n const parsed = parseInt(val, 10);\n return isNaN(parsed) ? 6 : parsed;\n}\n/**\n * Recharts' `tick` prop as an object only passes SVG-valid properties.\n * Props like `maxLines`, `verticalAnchor` are stripped. We must use a\n * function to pass them to the internal Text component.\n */\nexport function xAxisTick(props: Record<string, unknown>) {\n const { x, y, payload, width, visibleTicksCount, ...rest } = props as {\n x: number; y: number; payload: { value: string };\n width?: number; visibleTicksCount?: number;[k: string]: unknown;\n };\n const tickWidth = width && visibleTicksCount ? Math.floor(width / visibleTicksCount) : 100;\n return (\n <Text {...rest} x={x} y={y} width={tickWidth} textAnchor=\"middle\" verticalAnchor=\"start\" maxLines={2}>\n {payload.value}\n </Text>\n );\n}\n\nexport function yAxisTick(props: Record<string, unknown>) {\n const { x, y, payload, ...rest } = props as { x: number; y: number; payload: { value: string };[k: string]: unknown };\n return (\n <Text {...rest} x={x} y={y} textAnchor=\"end\" verticalAnchor=\"middle\" width={200} maxLines={2}>\n {payload.value}\n </Text>\n );\n}\n\n","import { createContext, forwardRef, useContext, type ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport const ChartContainerContext = createContext(false);\n\nexport function useInsideChartContainer(): boolean {\n return useContext(ChartContainerContext);\n}\n\nconst HEIGHT_MAP: Record<string, string> = {\n sm: \"var(--ds-chart-height-sm)\",\n md: \"var(--ds-chart-height-md)\",\n lg: \"var(--ds-chart-height-lg)\",\n};\n\nexport interface ChartWrapperProps {\n height?: \"sm\" | \"md\" | \"lg\" | number;\n className?: string;\n children: ReactNode;\n \"aria-label\"?: string;\n}\n\nexport const ChartWrapper = forwardRef<HTMLDivElement, ChartWrapperProps>(function ChartWrapper({ height = \"md\", className, children, \"aria-label\": ariaLabel }, ref) {\n const insideContainer = useInsideChartContainer();\n\n if (insideContainer) {\n return (\n <div ref={ref} className={cn(\"h-full w-full\", className)} {...(ariaLabel ? { role: \"img\", \"aria-label\": ariaLabel } : {})}>\n {children}\n </div>\n );\n }\n\n const heightValue = typeof height === \"number\" ? `${height}px` : HEIGHT_MAP[height];\n\n return (\n <div ref={ref} className={cn(\"w-full\", className)} style={{ height: heightValue }} {...(ariaLabel ? { role: \"img\", \"aria-label\": ariaLabel } : {})}>\n {children}\n </div>\n );\n});\n","import { forwardRef } from \"react\";\nimport {\n BarChart as RechartsBarChart,\n Bar,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ResponsiveContainer,\n} from \"recharts\";\nimport { useChartColors, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent, ChartLegendContent, useGridStroke, useAxisStyle, useRadius, xAxisTick, yAxisTick } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\n\nexport interface BarDef {\n dataKey: string;\n label?: string;\n soft?: boolean;\n}\n\nexport interface BarChartProps {\n data: Record<string, unknown>[];\n bars: BarDef[];\n xAxisKey: string;\n height?: \"sm\" | \"md\" | \"lg\" | number;\n stacked?: boolean;\n horizontal?: boolean;\n showGrid?: boolean;\n showTooltip?: boolean;\n showLegend?: boolean;\n xAxisLabel?: string;\n yAxisLabel?: string;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const BarChart = forwardRef<HTMLDivElement, BarChartProps>(function BarChart({\n data,\n bars,\n xAxisKey,\n height = \"md\",\n stacked = false,\n horizontal = false,\n showGrid = true,\n showTooltip = true,\n showLegend,\n xAxisLabel,\n yAxisLabel,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const solidColors = useChartColors(bars.length, false);\n const softColors = useChartColors(bars.length, true);\n const gridStroke = useGridStroke();\n const axisStyle = useAxisStyle();\n const isAnimated = useChartAnimation(animated);\n const radius = useRadius();\n const legendVisible = showLegend ?? bars.length >= 2;\n\n const layout = horizontal ? \"vertical\" : \"horizontal\";\n\n function getBarRadius(index: number): [number, number, number, number] {\n if (!stacked) {\n return horizontal ? [0, radius, radius, 0] : [radius, radius, 0, 0];\n }\n const isTopmost = index === bars.length - 1;\n if (!isTopmost) return [0, 0, 0, 0];\n return horizontal ? [0, radius, radius, 0] : [radius, radius, 0, 0];\n }\n\n const axisLabelStyle = { fontSize: \"var(--ds-font-size-xs)\", fontFamily: \"var(--ds-font-sans)\", fill: axisStyle.tick.fill };\n\n if (!data?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsBarChart\n data={data}\n layout={layout}\n margin={{ top: 4, right: 4, bottom: 4, left: 4 }}\n accessibilityLayer\n >\n {showGrid && (\n <CartesianGrid strokeDasharray=\"3 3\" stroke={gridStroke} vertical={!horizontal} horizontal />\n )}\n {horizontal ? (\n <>\n <XAxis\n type=\"number\"\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n label={xAxisLabel ? { value: xAxisLabel, position: \"insideBottom\", offset: -2, style: axisLabelStyle } : undefined}\n />\n <YAxis\n dataKey={xAxisKey}\n type=\"category\"\n width=\"auto\"\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n tick={yAxisTick}\n />\n </>\n ) : (\n <>\n <XAxis\n dataKey={xAxisKey}\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n tick={xAxisTick}\n height=\"auto\"\n label={xAxisLabel ? { value: xAxisLabel, position: \"insideBottom\", offset: -2, style: axisLabelStyle } : undefined}\n />\n <YAxis\n width=\"auto\"\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n label={yAxisLabel ? { value: yAxisLabel, angle: -90, position: \"insideLeft\", style: axisLabelStyle } : undefined}\n />\n </>\n )}\n {showTooltip && <Tooltip content={<ChartTooltipContent />} cursor={{ fill: \"var(--ds-bg-muted)\", opacity: 0.5 }} />}\n {legendVisible && <Legend content={<ChartLegendContent />} wrapperStyle={{ paddingTop: \"var(--ds-space-3)\" }} />}\n {bars.map((bar, i) => (\n <Bar\n key={bar.dataKey}\n dataKey={bar.dataKey}\n name={bar.label ?? bar.dataKey}\n fill={bar.soft ? softColors[i] : solidColors[i]}\n radius={getBarRadius(i)}\n stackId={stacked ? \"stack\" : undefined}\n isAnimationActive={isAnimated}\n />\n ))}\n </RechartsBarChart>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef } from \"react\";\nimport {\n LineChart as RechartsLineChart,\n Line,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ResponsiveContainer,\n} from \"recharts\";\nimport { useChartColors, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent, ChartLegendContent, useGridStroke, useAxisStyle, xAxisTick } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\n\nexport interface LineDef {\n dataKey: string;\n label?: string;\n dashed?: boolean;\n}\n\nexport interface LineChartProps {\n data: Record<string, unknown>[];\n lines: LineDef[];\n xAxisKey: string;\n height?: \"sm\" | \"md\" | \"lg\" | number;\n curved?: boolean;\n showDots?: boolean;\n showGrid?: boolean;\n showTooltip?: boolean;\n showLegend?: boolean;\n xAxisLabel?: string;\n yAxisLabel?: string;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const LineChart = forwardRef<HTMLDivElement, LineChartProps>(function LineChart({\n data,\n lines,\n xAxisKey,\n height = \"md\",\n curved = true,\n showDots = false,\n showGrid = true,\n showTooltip = true,\n showLegend,\n xAxisLabel,\n yAxisLabel,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const colors = useChartColors(lines.length, false);\n const gridStroke = useGridStroke();\n const axisStyle = useAxisStyle();\n const isAnimated = useChartAnimation(animated);\n const legendVisible = showLegend ?? lines.length >= 2;\n const axisLabelStyle = { fontSize: \"var(--ds-font-size-xs)\", fontFamily: \"var(--ds-font-sans)\", fill: axisStyle.tick.fill };\n\n if (!data?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsLineChart data={data} margin={{ top: 4, right: 4, bottom: 4, left: 4 }} accessibilityLayer>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" stroke={gridStroke} />}\n <XAxis\n dataKey={xAxisKey}\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n tick={xAxisTick}\n height=\"auto\"\n label={xAxisLabel ? { value: xAxisLabel, position: \"insideBottom\", offset: -2, style: axisLabelStyle } : undefined}\n />\n <YAxis\n width=\"auto\"\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n label={yAxisLabel ? { value: yAxisLabel, angle: -90, position: \"insideLeft\", style: axisLabelStyle } : undefined}\n />\n {showTooltip && <Tooltip content={<ChartTooltipContent />} />}\n {legendVisible && <Legend content={<ChartLegendContent />} wrapperStyle={{ paddingTop: \"var(--ds-space-3)\" }} />}\n {lines.map((line, i) => (\n <Line\n key={line.dataKey}\n type={curved ? \"monotone\" : \"linear\"}\n dataKey={line.dataKey}\n name={line.label ?? line.dataKey}\n stroke={colors[i]}\n strokeWidth={2}\n strokeDasharray={line.dashed ? \"5 5\" : undefined}\n dot={showDots}\n activeDot={{ r: 5, strokeWidth: 2 }}\n isAnimationActive={isAnimated}\n />\n ))}\n </RechartsLineChart>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef, useId } from \"react\";\nimport {\n AreaChart as RechartsAreaChart,\n Area,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ResponsiveContainer,\n} from \"recharts\";\nimport { useChartColors, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent, ChartLegendContent, useGridStroke, useAxisStyle, xAxisTick } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\n\nexport interface AreaDef {\n dataKey: string;\n label?: string;\n}\n\nexport interface AreaChartProps {\n data: Record<string, unknown>[];\n areas: AreaDef[];\n xAxisKey: string;\n height?: \"sm\" | \"md\" | \"lg\" | number;\n stacked?: boolean;\n curved?: boolean;\n showGrid?: boolean;\n showTooltip?: boolean;\n showLegend?: boolean;\n gradient?: boolean;\n xAxisLabel?: string;\n yAxisLabel?: string;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const AreaChart = forwardRef<HTMLDivElement, AreaChartProps>(function AreaChart({\n data,\n areas,\n xAxisKey,\n height = \"md\",\n stacked = false,\n curved = true,\n showGrid = true,\n showTooltip = true,\n showLegend,\n gradient = true,\n xAxisLabel,\n yAxisLabel,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const instanceId = useId();\n const solidColors = useChartColors(areas.length, false);\n const softColors = useChartColors(areas.length, true);\n const gridStroke = useGridStroke();\n const axisStyle = useAxisStyle();\n const isAnimated = useChartAnimation(animated);\n const legendVisible = showLegend ?? areas.length >= 2;\n const axisLabelStyle = { fontSize: \"var(--ds-font-size-xs)\", fontFamily: \"var(--ds-font-sans)\", fill: axisStyle.tick.fill };\n\n if (!data?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsAreaChart data={data} margin={{ top: 4, right: 4, bottom: 4, left: 4 }} accessibilityLayer>\n <defs>\n {areas.map((area, i) => (\n <linearGradient key={area.dataKey} id={`gradient-${instanceId}-${area.dataKey}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={softColors[i]} stopOpacity={1} />\n <stop offset=\"95%\" stopColor={softColors[i]} stopOpacity={0.1} />\n </linearGradient>\n ))}\n </defs>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" stroke={gridStroke} />}\n <XAxis\n dataKey={xAxisKey}\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n tick={xAxisTick}\n height=\"auto\"\n label={xAxisLabel ? { value: xAxisLabel, position: \"insideBottom\", offset: -2, style: axisLabelStyle } : undefined}\n />\n <YAxis\n width=\"auto\"\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n label={yAxisLabel ? { value: yAxisLabel, angle: -90, position: \"insideLeft\", style: axisLabelStyle } : undefined}\n />\n {showTooltip && <Tooltip content={<ChartTooltipContent />} />}\n {legendVisible && <Legend content={<ChartLegendContent />} wrapperStyle={{ paddingTop: \"var(--ds-space-3)\" }} />}\n {areas.map((area, i) => (\n <Area\n key={area.dataKey}\n type={curved ? \"monotone\" : \"linear\"}\n dataKey={area.dataKey}\n name={area.label ?? area.dataKey}\n stroke={solidColors[i]}\n strokeWidth={2}\n fill={gradient ? `url(#gradient-${instanceId}-${area.dataKey})` : softColors[i]}\n stackId={stacked ? \"stack\" : undefined}\n isAnimationActive={isAnimated}\n />\n ))}\n </RechartsAreaChart>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef } from \"react\";\nimport {\n PieChart as RechartsPieChart,\n Pie,\n Cell,\n Tooltip,\n Legend,\n ResponsiveContainer,\n} from \"recharts\";\nimport { useChartColors, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent, ChartLegendContent } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\n\nexport interface PieChartProps {\n data: { name: string; value: number; [key: string]: unknown }[];\n height?: \"sm\" | \"md\" | \"lg\" | number;\n donut?: boolean;\n showTooltip?: boolean;\n showLegend?: boolean;\n showLabels?: boolean;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const PieChart = forwardRef<HTMLDivElement, PieChartProps>(function PieChart({\n data,\n height = \"md\",\n donut = false,\n showTooltip = true,\n showLegend = true,\n showLabels = false,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const colors = useChartColors(data.length, false);\n const isAnimated = useChartAnimation(animated);\n\n const renderLabel = showLabels\n ? ({ percent }: { percent?: number }) => `${((percent ?? 0) * 100).toFixed(0)}%`\n : false;\n\n if (!data?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsPieChart accessibilityLayer>\n <Pie\n data={data}\n dataKey=\"value\"\n nameKey=\"name\"\n cx=\"50%\"\n cy=\"50%\"\n outerRadius=\"75%\"\n innerRadius={donut ? \"55%\" : 0}\n label={renderLabel}\n labelLine={showLabels}\n isAnimationActive={isAnimated}\n fontSize=\"var(--ds-font-size-xs)\"\n fontFamily=\"var(--ds-font-sans)\"\n >\n {data.map((_, i) => (\n <Cell key={i} fill={colors[i % colors.length]} />\n ))}\n </Pie>\n {showTooltip && <Tooltip content={<ChartTooltipContent />} />}\n {showLegend && <Legend content={<ChartLegendContent />} wrapperStyle={{ paddingTop: \"var(--ds-space-3)\" }} />}\n </RechartsPieChart>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef } from \"react\";\nimport {\n ComposedChart,\n Bar,\n Line,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ResponsiveContainer,\n} from \"recharts\";\nimport { useChartColors, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent, ChartLegendContent, useGridStroke, useAxisStyle, useRadius, xAxisTick } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\nimport type { BarDef } from \"./BarChart\";\nimport type { LineDef } from \"./LineChart\";\n\nexport interface CompositeChartProps {\n data: Record<string, unknown>[];\n bars: BarDef[];\n lines: LineDef[];\n xAxisKey: string;\n height?: \"sm\" | \"md\" | \"lg\" | number;\n dualAxis?: boolean;\n showGrid?: boolean;\n showTooltip?: boolean;\n showLegend?: boolean;\n xAxisLabel?: string;\n yAxisLabel?: string;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const CompositeChart = forwardRef<HTMLDivElement, CompositeChartProps>(function CompositeChart({\n data,\n bars,\n lines,\n xAxisKey,\n height = \"md\",\n dualAxis = true,\n showGrid = true,\n showTooltip = true,\n showLegend = true,\n xAxisLabel,\n yAxisLabel,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const barSoftColors = useChartColors(bars.length, true);\n const lineColors = useChartColors(lines.length, false);\n const gridStroke = useGridStroke();\n const axisStyle = useAxisStyle();\n const isAnimated = useChartAnimation(animated);\n const radius = useRadius();\n const axisLabelStyle = { fontSize: \"var(--ds-font-size-xs)\", fontFamily: \"var(--ds-font-sans)\", fill: axisStyle.tick.fill };\n\n if (!data?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <ComposedChart data={data} margin={{ top: 4, right: 4, bottom: 4, left: 4 }} accessibilityLayer>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" stroke={gridStroke} />}\n <XAxis\n dataKey={xAxisKey}\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n tick={xAxisTick}\n height=\"auto\"\n label={xAxisLabel ? { value: xAxisLabel, position: \"insideBottom\", offset: -2, style: axisLabelStyle } : undefined}\n />\n <YAxis\n yAxisId=\"left\"\n width=\"auto\"\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n label={yAxisLabel ? { value: yAxisLabel, angle: -90, position: \"insideLeft\", style: axisLabelStyle } : undefined}\n />\n {dualAxis && (\n <YAxis yAxisId=\"right\" orientation=\"right\" width=\"auto\" {...axisStyle.tick} axisLine={false} tickLine={false} />\n )}\n {showTooltip && <Tooltip content={<ChartTooltipContent />} />}\n {showLegend && <Legend content={<ChartLegendContent />} wrapperStyle={{ paddingTop: \"var(--ds-space-3)\" }} />}\n {bars.map((bar, i) => (\n <Bar\n key={bar.dataKey}\n dataKey={bar.dataKey}\n name={bar.label ?? bar.dataKey}\n fill={barSoftColors[i]}\n radius={[radius, radius, 0, 0]}\n yAxisId=\"left\"\n isAnimationActive={isAnimated}\n />\n ))}\n {lines.map((line, i) => (\n <Line\n key={line.dataKey}\n type=\"monotone\"\n dataKey={line.dataKey}\n name={line.label ?? line.dataKey}\n stroke={lineColors[i]}\n strokeWidth={2}\n strokeDasharray={line.dashed ? \"5 5\" : undefined}\n dot={false}\n yAxisId={dualAxis ? \"right\" : \"left\"}\n isAnimationActive={isAnimated}\n />\n ))}\n </ComposedChart>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef } from \"react\";\nimport {\n ScatterChart as RechartsScatterChart,\n Scatter,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ResponsiveContainer,\n ZAxis,\n} from \"recharts\";\nimport { useChartColors, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent, ChartLegendContent, useGridStroke, useAxisStyle } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\n\nexport interface ScatterSeries {\n name: string;\n points: { x: number; y: number; z?: number }[];\n}\n\nexport interface ScatterChartProps {\n data: ScatterSeries[];\n xLabel?: string;\n yLabel?: string;\n height?: \"sm\" | \"md\" | \"lg\" | number;\n showGrid?: boolean;\n showTooltip?: boolean;\n showLegend?: boolean;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const ScatterChart = forwardRef<HTMLDivElement, ScatterChartProps>(function ScatterChart({\n data,\n xLabel,\n yLabel,\n height = \"md\",\n showGrid = true,\n showTooltip = true,\n showLegend,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const colors = useChartColors(data.length, false);\n const gridStroke = useGridStroke();\n const axisStyle = useAxisStyle();\n const isAnimated = useChartAnimation(animated);\n const legendVisible = showLegend ?? data.length >= 2;\n const axisLabelStyle = { fontSize: \"var(--ds-font-size-xs)\", fontFamily: \"var(--ds-font-sans)\", fill: axisStyle.tick.fill };\n\n if (!data?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsScatterChart\n margin={{ top: 8, right: 8, bottom: xLabel ? 20 : 4, left: yLabel ? 20 : 4 }}\n accessibilityLayer\n >\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" stroke={gridStroke} />}\n <XAxis\n type=\"number\"\n dataKey=\"x\"\n name={xLabel ?? \"x\"}\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n label={xLabel ? { value: xLabel, position: \"bottom\", offset: 0, style: { ...axisLabelStyle, textAnchor: \"middle\" } } : undefined}\n />\n <YAxis\n type=\"number\"\n dataKey=\"y\"\n name={yLabel ?? \"y\"}\n width=\"auto\"\n {...axisStyle.tick}\n axisLine={false}\n tickLine={false}\n label={yLabel ? { value: yLabel, angle: -90, position: \"left\", offset: 0, style: { ...axisLabelStyle, textAnchor: \"middle\" } } : undefined}\n />\n <ZAxis type=\"number\" dataKey=\"z\" range={[40, 400]} />\n {showTooltip && <Tooltip content={<ChartTooltipContent />} />}\n {legendVisible && <Legend content={<ChartLegendContent />} wrapperStyle={{ paddingTop: \"var(--ds-space-3)\" }} />}\n {data.map((series, i) => (\n <Scatter\n key={series.name}\n name={series.name}\n data={series.points}\n fill={colors[i]}\n isAnimationActive={isAnimated}\n />\n ))}\n </RechartsScatterChart>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef } from \"react\";\nimport {\n RadarChart as RechartsRadarChart,\n Radar,\n PolarGrid,\n PolarAngleAxis,\n PolarRadiusAxis,\n Tooltip,\n Legend,\n ResponsiveContainer,\n} from \"recharts\";\nimport { useChartColors, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent, ChartLegendContent } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\n\nexport interface RadarDataKey {\n key: string;\n label?: string;\n}\n\nexport interface RadarChartProps {\n data: Record<string, unknown>[];\n dataKeys: RadarDataKey[];\n axisKey: string;\n height?: \"sm\" | \"md\" | \"lg\" | number;\n filled?: boolean;\n showDots?: boolean;\n showTooltip?: boolean;\n showLegend?: boolean;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const RadarChart = forwardRef<HTMLDivElement, RadarChartProps>(function RadarChart({\n data,\n dataKeys,\n axisKey,\n height = \"md\",\n filled = true,\n showDots = true,\n showTooltip = true,\n showLegend,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const solidColors = useChartColors(dataKeys.length, false);\n const softColors = useChartColors(dataKeys.length, true);\n const isAnimated = useChartAnimation(animated);\n const legendVisible = showLegend ?? dataKeys.length >= 2;\n\n if (!data?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsRadarChart data={data} cx=\"50%\" cy=\"50%\" outerRadius=\"75%\" accessibilityLayer>\n <PolarGrid stroke=\"var(--ds-border-subtle)\" />\n <PolarAngleAxis\n dataKey={axisKey}\n tick={{ fontSize: \"var(--ds-font-size-xs)\", fontFamily: \"var(--ds-font-sans)\", fill: \"var(--ds-text-muted)\" }}\n />\n <PolarRadiusAxis\n tick={{ fontSize: \"var(--ds-font-size-xs)\", fontFamily: \"var(--ds-font-sans)\", fill: \"var(--ds-text-muted)\" }}\n axisLine={false}\n />\n {showTooltip && <Tooltip content={<ChartTooltipContent />} />}\n {legendVisible && <Legend content={<ChartLegendContent />} wrapperStyle={{ paddingTop: \"var(--ds-space-3)\" }} />}\n {dataKeys.map((dk, i) => (\n <Radar\n key={dk.key}\n name={dk.label ?? dk.key}\n dataKey={dk.key}\n stroke={solidColors[i]}\n fill={filled ? softColors[i] : \"transparent\"}\n strokeWidth={2}\n dot={showDots ? { r: 3, fill: solidColors[i] } : false}\n isAnimationActive={isAnimated}\n />\n ))}\n </RechartsRadarChart>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef } from \"react\";\nimport {\n RadialBarChart as RechartsRadialBarChart,\n RadialBar,\n Legend,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\";\nimport { useChartColors, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent, ChartLegendContent } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\n\nexport interface RadialBarChartProps {\n data: { name: string; value: number; max?: number; [key: string]: unknown }[];\n height?: \"sm\" | \"md\" | \"lg\" | number;\n showTooltip?: boolean;\n showLegend?: boolean;\n showLabels?: boolean;\n startAngle?: number;\n endAngle?: number;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const RadialBarChart = forwardRef<HTMLDivElement, RadialBarChartProps>(function RadialBarChart({\n data,\n height = \"md\",\n showTooltip = true,\n showLegend = true,\n showLabels = false,\n startAngle = 90,\n endAngle = -270,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const colors = useChartColors(data.length, false);\n const isAnimated = useChartAnimation(animated);\n\n const chartData = data.map((d, i) => ({\n ...d,\n fill: colors[i % colors.length],\n }));\n\n if (!data?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsRadialBarChart\n data={chartData}\n cx=\"50%\"\n cy=\"50%\"\n innerRadius=\"20%\"\n outerRadius=\"90%\"\n startAngle={startAngle}\n endAngle={endAngle}\n accessibilityLayer\n >\n <RadialBar\n dataKey=\"value\"\n background={{ fill: \"var(--ds-bg-muted)\" }}\n label={showLabels ? { position: \"insideStart\", fill: \"var(--ds-text-primary)\", fontSize: \"var(--ds-font-size-xs)\" } : false}\n isAnimationActive={isAnimated}\n />\n {showTooltip && <Tooltip content={<ChartTooltipContent />} />}\n {showLegend && <Legend content={<ChartLegendContent />} wrapperStyle={{ paddingTop: \"var(--ds-space-3)\" }} />}\n </RechartsRadialBarChart>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef } from \"react\";\nimport {\n FunnelChart as RechartsFunnelChart,\n Funnel,\n Tooltip,\n Legend,\n LabelList,\n ResponsiveContainer,\n} from \"recharts\";\nimport { useChartColors, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent, ChartLegendContent } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\n\nexport interface FunnelChartProps {\n data: { name: string; value: number; [key: string]: unknown }[];\n height?: \"sm\" | \"md\" | \"lg\" | number;\n showTooltip?: boolean;\n showLegend?: boolean;\n showLabels?: boolean;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const FunnelChart = forwardRef<HTMLDivElement, FunnelChartProps>(function FunnelChart({\n data,\n height = \"md\",\n showTooltip = true,\n showLegend = true,\n showLabels = true,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const colors = useChartColors(data.length, false);\n const isAnimated = useChartAnimation(animated);\n\n const chartData = data.map((d, i) => ({\n ...d,\n fill: colors[i % colors.length],\n }));\n\n if (!data?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsFunnelChart accessibilityLayer>\n <Funnel dataKey=\"value\" data={chartData} isAnimationActive={isAnimated}>\n {showLabels && (\n <LabelList\n dataKey=\"name\"\n position=\"right\"\n fill=\"var(--ds-text-primary)\"\n fontSize=\"var(--ds-font-size-sm)\"\n fontFamily=\"var(--ds-font-sans)\"\n />\n )}\n </Funnel>\n {showTooltip && <Tooltip content={<ChartTooltipContent />} />}\n {showLegend && <Legend content={<ChartLegendContent />} wrapperStyle={{ paddingTop: \"var(--ds-space-3)\" }} />}\n </RechartsFunnelChart>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef } from \"react\";\nimport {\n Treemap,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\";\nimport { useChartColors, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent, useRadius } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\n\nexport interface TreemapNode {\n name: string;\n value?: number;\n children?: TreemapNode[];\n [key: string]: unknown;\n}\n\nexport interface TreemapChartProps {\n data: TreemapNode[];\n height?: \"sm\" | \"md\" | \"lg\" | number;\n showTooltip?: boolean;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\ninterface TreemapContentProps {\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n name?: string;\n depth?: number;\n colors: string[];\n radius: number;\n index?: number;\n}\n\nfunction contrastColor(hex: string): string {\n const c = hex.replace(\"#\", \"\");\n if (c.length < 6) return \"#ffffff\";\n const r = parseInt(c.substring(0, 2), 16);\n const g = parseInt(c.substring(2, 4), 16);\n const b = parseInt(c.substring(4, 6), 16);\n const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;\n return luminance > 0.55 ? \"#1f2937\" : \"#ffffff\";\n}\n\nfunction TreemapContent({ x = 0, y = 0, width = 0, height: h = 0, name, depth, colors, radius, index = 0 }: TreemapContentProps) {\n const fill = colors[index % colors.length];\n const showLabel = width > 40 && h > 20;\n const labelColor = contrastColor(fill);\n\n return (\n <g>\n <rect\n x={x}\n y={y}\n width={width}\n height={h}\n fill={fill}\n stroke=\"var(--ds-bg-surface)\"\n strokeWidth={2}\n rx={depth === 1 ? radius : 0}\n style={{ opacity: depth === 1 ? 1 : 0.85 }}\n />\n {showLabel && (\n <text\n x={x + width / 2}\n y={y + h / 2}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n fill={labelColor}\n stroke=\"none\"\n fontSize=\"var(--ds-font-size-xs)\"\n fontFamily=\"var(--ds-font-sans)\"\n style={{ pointerEvents: \"none\" }}\n >\n {name}\n </text>\n )}\n </g>\n );\n}\n\nfunction addFillToNodes(nodes: TreemapNode[], colors: string[], counter = { i: 0 }): TreemapNode[] {\n return nodes.map((node) => {\n if (node.children) {\n return { ...node, children: addFillToNodes(node.children, colors, counter) };\n }\n const fill = colors[counter.i % colors.length];\n counter.i++;\n return { ...node, fill };\n });\n}\n\nexport const TreemapChart = forwardRef<HTMLDivElement, TreemapChartProps>(function TreemapChart({\n data,\n height = \"md\",\n showTooltip = true,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const colors = useChartColors(6, false);\n const isAnimated = useChartAnimation(animated);\n const radius = useRadius();\n\n const chartData = addFillToNodes(data, colors);\n\n if (!data?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <Treemap\n data={chartData}\n dataKey=\"value\"\n nameKey=\"name\"\n aspectRatio={4 / 3}\n stroke=\"var(--ds-bg-surface)\"\n isAnimationActive={isAnimated}\n content={<TreemapContent colors={colors} radius={radius} />}\n >\n {showTooltip && <Tooltip content={<ChartTooltipContent />} />}\n </Treemap>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef } from \"react\";\nimport {\n Sankey as RechartsSankey,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\";\nimport { useChartColors, useResolvedToken } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent } from \"./ChartPrimitives\";\nimport { ChartWrapper } from \"./ChartWrapper\";\n\nexport interface SankeyChartProps {\n data: {\n nodes: { name: string }[];\n links: { source: number; target: number; value: number }[];\n };\n height?: \"sm\" | \"md\" | \"lg\" | number;\n showTooltip?: boolean;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const SankeyChart = forwardRef<HTMLDivElement, SankeyChartProps>(function SankeyChart({\n data,\n height = \"md\",\n showTooltip = true,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const colors = useChartColors(data.nodes.length, false);\n const linkStroke = useResolvedToken(\"--ds-border-subtle\");\n\n const nodesWithColor = data.nodes.map((node, i) => ({\n ...node,\n fill: colors[i % colors.length],\n }));\n\n const sankeyData = {\n nodes: nodesWithColor,\n links: data.links,\n };\n\n if (!data?.nodes?.length) return null;\n\n return (\n <ChartWrapper ref={ref} height={height} className={className} aria-label={ariaLabel}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsSankey\n data={sankeyData}\n nodeWidth={10}\n nodePadding={24}\n margin={{ top: 8, right: 8, bottom: 8, left: 8 }}\n link={{ stroke: linkStroke, strokeOpacity: 0.4 }}\n >\n {showTooltip && <Tooltip content={<ChartTooltipContent />} />}\n </RechartsSankey>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n});\n","import { forwardRef, useId } from \"react\";\nimport {\n LineChart,\n Line,\n AreaChart,\n Area,\n BarChart,\n Bar,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { useResolvedToken, useChartAnimation } from \"../../lib/chart-utils\";\nimport { ChartTooltipContent } from \"./ChartPrimitives\";\nimport { useInsideChartContainer } from \"./ChartWrapper\";\n\nexport interface SparklineProps {\n data: number[];\n variant?: \"line\" | \"area\" | \"bar\";\n color?: 1 | 2 | 3 | 4 | 5 | 6;\n height?: number;\n width?: number | \"100%\";\n showTooltip?: boolean;\n curved?: boolean;\n animated?: boolean;\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport const Sparkline = forwardRef<HTMLDivElement, SparklineProps>(function Sparkline({\n data,\n variant = \"line\",\n color = 1,\n height = 40,\n width = \"100%\",\n showTooltip = false,\n curved = true,\n animated,\n \"aria-label\": ariaLabel,\n className,\n}, ref) {\n const instanceId = useId();\n const isAnimated = useChartAnimation(animated);\n const insideContainer = useInsideChartContainer();\n\n const tokenName = `--ds-chart-${color}` as const;\n const softTokenName = `--ds-chart-${color}-soft` as const;\n const chartColor = useResolvedToken(tokenName);\n const softColor = useResolvedToken(softTokenName);\n const chartData = data.map((value, i) => ({ value, index: i }));\n\n const containerStyle = insideContainer\n ? { width: \"100%\", height: \"100%\" }\n : { width: typeof width === \"number\" ? `${width}px` : width, height: `${height}px` };\n\n if (!data?.length) return null;\n\n if (variant === \"bar\") {\n return (\n <div ref={ref} style={containerStyle} className={className} {...(ariaLabel ? { role: \"img\", \"aria-label\": ariaLabel } : {})}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <BarChart data={chartData} margin={{ top: 0, right: 0, bottom: 0, left: 0 }}>\n <XAxis dataKey=\"index\" hide />\n <YAxis hide />\n {showTooltip && <Tooltip content={<ChartTooltipContent />} cursor={false} />}\n <Bar\n dataKey=\"value\"\n fill={chartColor}\n radius={[2, 2, 0, 0]}\n isAnimationActive={isAnimated}\n />\n </BarChart>\n </ResponsiveContainer>\n </div>\n );\n }\n\n if (variant === \"area\") {\n const gradientId = `sparkline-gradient-${instanceId}-${color}`;\n return (\n <div ref={ref} style={containerStyle} className={className} {...(ariaLabel ? { role: \"img\", \"aria-label\": ariaLabel } : {})}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <AreaChart data={chartData} margin={{ top: 2, right: 2, bottom: 2, left: 2 }}>\n <defs>\n <linearGradient id={gradientId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={softColor} stopOpacity={1} />\n <stop offset=\"95%\" stopColor={softColor} stopOpacity={0.1} />\n </linearGradient>\n </defs>\n <XAxis dataKey=\"index\" hide />\n <YAxis hide domain={[\"dataMin - 1\", \"dataMax + 1\"]} />\n {showTooltip && <Tooltip content={<ChartTooltipContent />} cursor={false} />}\n <Area\n type={curved ? \"monotone\" : \"linear\"}\n dataKey=\"value\"\n stroke={chartColor}\n strokeWidth={1.5}\n fill={`url(#${gradientId})`}\n dot={false}\n activeDot={showTooltip ? { r: 3, fill: chartColor } : false}\n isAnimationActive={isAnimated}\n />\n </AreaChart>\n </ResponsiveContainer>\n </div>\n );\n }\n\n return (\n <div ref={ref} style={containerStyle} className={className} {...(ariaLabel ? { role: \"img\", \"aria-label\": ariaLabel } : {})}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <LineChart data={chartData} margin={{ top: 2, right: 2, bottom: 2, left: 2 }}>\n <XAxis dataKey=\"index\" hide />\n <YAxis hide domain={[\"dataMin - 1\", \"dataMax + 1\"]} />\n {showTooltip && <Tooltip content={<ChartTooltipContent />} cursor={false} />}\n <Line\n type={curved ? \"monotone\" : \"linear\"}\n dataKey=\"value\"\n stroke={chartColor}\n strokeWidth={1.5}\n dot={false}\n activeDot={showTooltip ? { r: 3, fill: chartColor } : false}\n isAnimationActive={isAnimated}\n />\n </LineChart>\n </ResponsiveContainer>\n </div>\n );\n});\n","import type { ReactNode } from \"react\";\nimport { cn, GLASS_SURFACE } from \"../lib/utils\";\nimport { Skeleton } from \"./Skeleton\";\nimport { ChartContainerContext } from \"./charts/ChartWrapper\";\n\nconst HEIGHT_MAP = {\n sm: \"var(--ds-chart-height-sm)\",\n md: \"var(--ds-chart-height-md)\",\n lg: \"var(--ds-chart-height-lg)\",\n} as const;\n\ninterface ChartContainerProps {\n height?: \"sm\" | \"md\" | \"lg\";\n title?: string;\n loading?: boolean;\n emptyState?: ReactNode;\n /** \"default\" is a card surface. \"ghost\" drops surface, border, shadow and padding for charts embedded in another container. */\n variant?: \"default\" | \"ghost\";\n children: ReactNode;\n className?: string;\n}\n\nexport function ChartContainer({\n height = \"md\",\n title,\n loading = false,\n emptyState,\n variant = \"default\",\n children,\n className,\n}: ChartContainerProps) {\n return (\n <div\n className={cn(\n variant === \"ghost\"\n ? \"bg-transparent\"\n : cn(\n \"rounded-[var(--ds-radius-md)] p-ds-4\",\n \"bg-[var(--ds-bg-surface)] border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]\",\n GLASS_SURFACE,\n ),\n className\n )}\n >\n {title && (\n <p className=\"text-sm font-medium text-[var(--ds-text-primary)] mb-ds-4\">\n {title}\n </p>\n )}\n <div style={{ height: HEIGHT_MAP[height] }} className=\"relative\">\n {loading ? (\n <div className=\"flex flex-col justify-end h-full gap-ds-2 px-ds-2\">\n <div className=\"flex items-end h-full gap-ds-1\">\n {[65, 40, 80, 55, 72, 45, 60].map((h, i) => (\n <Skeleton\n key={i}\n variant=\"custom\"\n className=\"flex-1\"\n height={`${h}%`}\n />\n ))}\n </div>\n <Skeleton variant=\"text\" lines={1} className=\"w-full\" />\n </div>\n ) : children ? (\n <ChartContainerContext.Provider value={true}>\n <div className=\"h-full w-full\">{children}</div>\n </ChartContainerContext.Provider>\n ) : emptyState ? (\n <div className=\"h-full w-full flex items-center justify-center\">\n {emptyState}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { cn, GLASS_DROPDOWN } from './chunk-TTZSZNJ6.js';
2
- import { isValidElement, cloneElement, useState, useRef, useCallback, useLayoutEffect, useEffect } from 'react';
2
+ import { isValidElement, cloneElement, useState, useRef, useCallback, useLayoutEffect, useId, useEffect } from 'react';
3
3
  import { createPortal } from 'react-dom';
4
4
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
5
5
 
@@ -122,7 +122,7 @@ function Tooltip({ content, children, side = "top", delay = 300, className, cont
122
122
  const triggerRef = useRef(null);
123
123
  const floatingRef = useRef(null);
124
124
  const timeoutRef = useRef(void 0);
125
- const id = useRef(`tooltip-${Math.random().toString(36).slice(2, 8)}`).current;
125
+ const id = useId();
126
126
  const pos = usePosition(triggerRef, floatingRef, open, { side, offset: 6, flip: true });
127
127
  const show = useCallback(() => {
128
128
  timeoutRef.current = setTimeout(() => setOpen(true), delay);
@@ -169,6 +169,15 @@ function Tooltip({ content, children, side = "top", delay = 300, className, cont
169
169
  )
170
170
  ] });
171
171
  }
172
+ function useLatest(value) {
173
+ const ref = useRef(value);
174
+ useLayoutEffect(() => {
175
+ ref.current = value;
176
+ });
177
+ return ref;
178
+ }
179
+
180
+ // ../../showcase/src/lib/use-text-overflow.ts
172
181
  var registry = /* @__PURE__ */ new WeakMap();
173
182
  var sharedObserver = null;
174
183
  var rafId = null;
@@ -226,7 +235,6 @@ function useTextOverflow(options = {}) {
226
235
  const { lines = 1, disabled = false, content } = options;
227
236
  const [isTruncated, setIsTruncated] = useState(false);
228
237
  const elementRef = useRef(null);
229
- const checkRef = useRef(null);
230
238
  const registeredRef = useRef(null);
231
239
  const doCheck = useCallback(() => {
232
240
  if (!elementRef.current || disabled) {
@@ -236,7 +244,7 @@ function useTextOverflow(options = {}) {
236
244
  const next = checkOverflow(elementRef.current, lines);
237
245
  setIsTruncated((prev) => prev !== next ? next : prev);
238
246
  }, [lines, disabled]);
239
- checkRef.current = doCheck;
247
+ const checkRef = useLatest(doCheck);
240
248
  useEffect(() => {
241
249
  if (disabled) {
242
250
  setIsTruncated(false);
@@ -261,7 +269,7 @@ function useTextOverflow(options = {}) {
261
269
  setIsTruncated(initial);
262
270
  }
263
271
  },
264
- [lines, disabled]
272
+ [lines, disabled, checkRef]
265
273
  );
266
274
  useEffect(() => {
267
275
  return () => {
@@ -273,6 +281,6 @@ function useTextOverflow(options = {}) {
273
281
  return { ref, isTruncated };
274
282
  }
275
283
 
276
- export { Slot, Tooltip, usePosition, useTextOverflow };
277
- //# sourceMappingURL=chunk-R5QGJURZ.js.map
278
- //# sourceMappingURL=chunk-R5QGJURZ.js.map
284
+ export { Slot, Tooltip, useLatest, usePosition, useTextOverflow };
285
+ //# sourceMappingURL=chunk-DDKCQVKO.js.map
286
+ //# sourceMappingURL=chunk-DDKCQVKO.js.map