@sckyzo/cosmos-charts 0.0.2 → 0.2.0

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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme.ts","../src/LineAreaChart.tsx","../src/RealtimeChart.tsx","../src/RadialBarChart.tsx","../src/GradientRadial.tsx","../src/SemiCircleGauge.tsx","../src/StrokedGauge.tsx","../src/DonutChart.tsx","../src/Sparkline.tsx","../src/TreemapChart.tsx","../src/BarChart.tsx"],"names":["useState","useEffect","jsx","ReactApexChart"],"mappings":"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","file":"index.js","sourcesContent":["import type { ApexOptions } from 'apexcharts';\nimport { useEffect, useState } from 'react';\n\nexport const COSMOS_BRAND = '#465fff';\nexport const COSMOS_PALETTE = ['#465fff', '#10b981', '#f59e0b', '#ef4444', '#8b5cf6'];\n\nconst detectDark = (): boolean => {\n if (typeof document === 'undefined') return false;\n return document.documentElement.classList.contains('dark');\n};\n\n/**\n * Subscribes to dark-mode toggles on `<html>` (the Cosmos convention).\n * Returns the current `isDark` value.\n */\nexport const useDarkMode = (): boolean => {\n const [dark, setDark] = useState(detectDark);\n\n useEffect(() => {\n if (typeof document === 'undefined') return;\n const observer = new MutationObserver(() => setDark(detectDark()));\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class'],\n });\n return () => observer.disconnect();\n }, []);\n\n return dark;\n};\n\n/**\n * Returns ApexCharts grid + axis options matching the Cosmos design tokens\n * for the current color scheme.\n */\nexport const useChartTheme = () => {\n const dark = useDarkMode();\n const grid: ApexOptions['grid'] = {\n borderColor: dark ? '#1f2937' : '#e5e7eb',\n strokeDashArray: 4,\n };\n const axisLabels = {\n style: {\n colors: dark ? '#9ca3af' : '#6b7280',\n fontSize: '11px',\n fontFamily: 'inherit',\n },\n };\n return { dark, grid, axisLabels, brand: COSMOS_BRAND, palette: COSMOS_PALETTE };\n};\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/line';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type LineAreaChartProps = ChartSize & {\n series: { name: string; data: number[] }[];\n categories: (string | number)[];\n};\n\nexport const LineAreaChart = ({\n series,\n categories,\n height = 280,\n width = '100%',\n}: LineAreaChartProps) => {\n const { grid, axisLabels, palette } = useChartTheme();\n const options: ApexOptions = {\n chart: {\n type: 'area',\n toolbar: { show: false },\n zoom: { enabled: false },\n fontFamily: 'inherit',\n },\n colors: palette,\n dataLabels: { enabled: false },\n stroke: { curve: 'smooth', width: 2 },\n fill: { type: 'gradient', gradient: { opacityFrom: 0.45, opacityTo: 0.05 } },\n grid,\n xaxis: {\n categories,\n labels: axisLabels,\n axisBorder: { show: false },\n axisTicks: { show: false },\n },\n yaxis: { labels: axisLabels },\n legend: { show: false },\n tooltip: { theme: 'dark' },\n };\n return (\n <ReactApexChart type=\"area\" options={options} series={series} height={height} width={width} />\n );\n};\n","import { useEffect, useState } from 'react';\nimport type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/line';\nimport 'apexcharts/features/annotations';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type RealtimeChartProps = ChartSize & {\n /** Sample generator — defaults to a noisy walk between 30 and 80. */\n generator?: () => number;\n /** Interval in ms — defaults to 2000. */\n intervalMs?: number;\n windowSize?: number;\n warnThreshold?: number;\n critThreshold?: number;\n};\n\nconst defaultGenerator = (() => {\n let last = 50;\n return () => {\n last += (Math.random() - 0.5) * 8;\n last = Math.max(20, Math.min(95, last));\n return Math.round(last);\n };\n})();\n\nexport const RealtimeChart = ({\n generator = defaultGenerator,\n intervalMs = 2000,\n windowSize = 30,\n warnThreshold = 70,\n critThreshold = 85,\n height = 240,\n width = '100%',\n}: RealtimeChartProps) => {\n const { grid, axisLabels, brand } = useChartTheme();\n const [series, setSeries] = useState(() => Array.from({ length: windowSize }, () => generator()));\n\n useEffect(() => {\n const id = setInterval(() => {\n setSeries((current) => [...current.slice(1), generator()]);\n }, intervalMs);\n return () => clearInterval(id);\n }, [generator, intervalMs]);\n\n const options: ApexOptions = {\n chart: {\n type: 'line',\n animations: { enabled: true, dynamicAnimation: { enabled: true, speed: 800 } },\n toolbar: { show: false },\n zoom: { enabled: false },\n fontFamily: 'inherit',\n },\n colors: [brand],\n stroke: { curve: 'smooth', width: 2 },\n dataLabels: { enabled: false },\n grid,\n xaxis: {\n type: 'numeric',\n labels: { show: false },\n axisBorder: { show: false },\n axisTicks: { show: false },\n },\n yaxis: { min: 0, max: 100, labels: axisLabels },\n annotations: {\n yaxis: [\n {\n y: warnThreshold,\n borderColor: '#f59e0b',\n label: { text: 'WARN', style: { color: '#fff', background: '#f59e0b' } },\n },\n {\n y: critThreshold,\n borderColor: '#ef4444',\n label: { text: 'CRIT', style: { color: '#fff', background: '#ef4444' } },\n },\n ],\n },\n tooltip: { theme: 'dark' },\n };\n\n return (\n <ReactApexChart\n type=\"line\"\n options={options}\n series={[{ name: 'value', data: series }]}\n height={height}\n width={width}\n />\n );\n};\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/radialBar';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type RadialBarChartProps = ChartSize & {\n series: number[];\n labels: string[];\n};\n\nexport const RadialBarChart = ({\n series,\n labels,\n height = 320,\n width = '100%',\n}: RadialBarChartProps) => {\n const { palette } = useChartTheme();\n const options: ApexOptions = {\n chart: { type: 'radialBar', fontFamily: 'inherit' },\n colors: palette,\n labels,\n plotOptions: {\n radialBar: {\n track: { background: 'rgba(150,150,150,0.15)' },\n dataLabels: {\n name: { fontSize: '12px' },\n value: { fontSize: '14px', formatter: (v) => `${v}%` },\n total: {\n show: true,\n label: 'Avg',\n formatter: () => `${Math.round(series.reduce((a, b) => a + b, 0) / series.length)}%`,\n },\n },\n },\n },\n };\n return (\n <ReactApexChart\n type=\"radialBar\"\n options={options}\n series={series}\n height={height}\n width={width}\n />\n );\n};\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/radialBar';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type GradientRadialProps = ChartSize & {\n value: number;\n label?: string;\n};\n\nexport const GradientRadial = ({\n value,\n label = 'Score',\n height = 280,\n width = '100%',\n}: GradientRadialProps) => {\n const { brand } = useChartTheme();\n const options: ApexOptions = {\n chart: { type: 'radialBar', fontFamily: 'inherit' },\n colors: [brand],\n fill: {\n type: 'gradient',\n gradient: {\n shade: 'dark',\n type: 'horizontal',\n shadeIntensity: 0.5,\n gradientToColors: ['#10b981'],\n inverseColors: false,\n opacityFrom: 1,\n opacityTo: 1,\n stops: [0, 100],\n },\n },\n plotOptions: {\n radialBar: {\n hollow: { size: '70%' },\n dataLabels: {\n name: { fontSize: '12px', offsetY: -10 },\n value: { fontSize: '32px', fontWeight: 700, formatter: (v) => `${v}%` },\n },\n },\n },\n labels: [label],\n };\n return (\n <ReactApexChart\n type=\"radialBar\"\n options={options}\n series={[value]}\n height={height}\n width={width}\n />\n );\n};\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/radialBar';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type SemiCircleGaugeProps = ChartSize & {\n value: number;\n label?: string;\n color?: string;\n};\n\nexport const SemiCircleGauge = ({\n value,\n label = '',\n color,\n height = 200,\n width = '100%',\n}: SemiCircleGaugeProps) => {\n const { brand } = useChartTheme();\n const options: ApexOptions = {\n chart: { type: 'radialBar', fontFamily: 'inherit', sparkline: { enabled: true } },\n colors: [color ?? brand],\n plotOptions: {\n radialBar: {\n startAngle: -90,\n endAngle: 90,\n track: { background: 'rgba(150,150,150,0.15)', strokeWidth: '100%' },\n dataLabels: {\n name: { offsetY: -10, fontSize: '12px' },\n value: { offsetY: -45, fontSize: '24px', fontWeight: 700, formatter: (v) => `${v}%` },\n },\n },\n },\n labels: [label],\n };\n return (\n <ReactApexChart\n type=\"radialBar\"\n options={options}\n series={[value]}\n height={height}\n width={width}\n />\n );\n};\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/radialBar';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type StrokedGaugeProps = ChartSize & {\n value: number;\n label?: string;\n};\n\nexport const StrokedGauge = ({\n value,\n label = '',\n height = 280,\n width = '100%',\n}: StrokedGaugeProps) => {\n const { brand } = useChartTheme();\n const options: ApexOptions = {\n chart: { type: 'radialBar', fontFamily: 'inherit' },\n colors: [brand],\n stroke: { lineCap: 'round', dashArray: 4 },\n plotOptions: {\n radialBar: {\n hollow: { size: '70%' },\n track: { background: 'rgba(150,150,150,0.15)', strokeWidth: '100%' },\n dataLabels: {\n name: { fontSize: '12px', offsetY: -10 },\n value: { fontSize: '32px', fontWeight: 700, formatter: (v) => `${v}%` },\n },\n },\n },\n labels: [label],\n };\n return (\n <ReactApexChart\n type=\"radialBar\"\n options={options}\n series={[value]}\n height={height}\n width={width}\n />\n );\n};\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/donut';\nimport 'apexcharts/features/legend';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type DonutChartProps = ChartSize & {\n series: number[];\n labels: string[];\n /** Whether to show the right-side legend (default: bottom). */\n rightLegend?: boolean;\n};\n\nexport const DonutChart = ({\n series,\n labels,\n rightLegend = false,\n height = 280,\n width = '100%',\n}: DonutChartProps) => {\n const { palette } = useChartTheme();\n const options: ApexOptions = {\n chart: { type: 'donut', fontFamily: 'inherit' },\n colors: palette,\n labels,\n legend: { position: rightLegend ? 'right' : 'bottom' },\n dataLabels: { enabled: false },\n plotOptions: {\n pie: {\n donut: { size: '68%', labels: { show: true, total: { show: true, label: 'Total' } } },\n },\n },\n };\n return (\n <ReactApexChart type=\"donut\" options={options} series={series} height={height} width={width} />\n );\n};\n\nexport const DonutRightLegend = (props: Omit<DonutChartProps, 'rightLegend'>) => (\n <DonutChart {...props} rightLegend />\n);\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/line';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type SparklineProps = ChartSize & {\n data: number[];\n color?: string;\n variant?: 'line' | 'area';\n};\n\nexport const Sparkline = ({\n data,\n color,\n variant = 'area',\n height = 60,\n width = '100%',\n}: SparklineProps) => {\n const { brand } = useChartTheme();\n const options: ApexOptions = {\n chart: { sparkline: { enabled: true }, fontFamily: 'inherit', type: variant },\n colors: [color ?? brand],\n stroke: { curve: 'smooth', width: 2 },\n fill:\n variant === 'area'\n ? { type: 'gradient', gradient: { opacityFrom: 0.45, opacityTo: 0.05 } }\n : undefined,\n tooltip: { fixed: { enabled: false }, x: { show: false }, marker: { show: false } },\n };\n return (\n <ReactApexChart\n type={variant}\n options={options}\n series={[{ name: 'value', data }]}\n height={height}\n width={width}\n />\n );\n};\n\nexport type SparklineGroupItem = {\n label: string;\n value: number | string;\n data: number[];\n color?: string;\n};\n\nexport const SparklineGroup = ({\n items,\n className,\n}: {\n items: SparklineGroupItem[];\n className?: string;\n}) => (\n <div\n className={className}\n style={{\n display: 'grid',\n gap: '1rem',\n gridTemplateColumns: 'repeat(auto-fit, minmax(180px, 1fr))',\n }}\n >\n {items.map((it) => (\n <div\n key={it.label}\n className=\"rounded-2xl border border-gray-200 bg-white p-4 dark:border-gray-800 dark:bg-gray-900\"\n >\n <p className=\"text-xs font-medium tracking-wider text-gray-500 uppercase dark:text-gray-400\">\n {it.label}\n </p>\n <p className=\"mt-1 text-2xl font-bold text-gray-900 dark:text-white\">{it.value}</p>\n <Sparkline data={it.data} color={it.color} height={50} />\n </div>\n ))}\n </div>\n);\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/treemap';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type TreemapDatum = { x: string; y: number };\n\nexport type TreemapChartProps = ChartSize & {\n series: { name?: string; data: TreemapDatum[] }[];\n};\n\nexport const TreemapChart = ({ series, height = 320, width = '100%' }: TreemapChartProps) => {\n const { palette } = useChartTheme();\n const options: ApexOptions = {\n chart: { type: 'treemap', fontFamily: 'inherit', toolbar: { show: false } },\n colors: palette,\n legend: { show: false },\n dataLabels: { enabled: true, style: { fontSize: '12px' } },\n plotOptions: { treemap: { distributed: true, enableShades: false } },\n };\n return (\n <ReactApexChart\n type=\"treemap\"\n options={options}\n series={series}\n height={height}\n width={width}\n />\n );\n};\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/bar';\nimport 'apexcharts/features/legend';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type BarChartOrientation = 'vertical' | 'horizontal';\n\nexport type BarChartProps = ChartSize & {\n series: { name: string; data: number[] }[];\n categories: (string | number)[];\n /** `vertical` (default) draws bars upward; `horizontal` draws them rightward. */\n orientation?: BarChartOrientation;\n /** Stack multi-series bars instead of grouping them side-by-side. */\n stacked?: boolean;\n /** Override the default Cosmos palette. */\n colors?: string[];\n /** Format the numeric axis labels (and tooltip values). */\n formatValue?: (value: number) => string;\n /** Show the legend (auto-true when 2+ series). */\n showLegend?: boolean;\n /** Tailwind border-radius applied to bar tops. Default 4. */\n borderRadius?: number;\n};\n\nexport const BarChart = ({\n series,\n categories,\n orientation = 'vertical',\n stacked = false,\n colors,\n formatValue,\n showLegend,\n borderRadius = 4,\n height = 320,\n width = '100%',\n}: BarChartProps) => {\n const { grid, axisLabels, palette } = useChartTheme();\n const horizontal = orientation === 'horizontal';\n const legendVisible = showLegend ?? series.length > 1;\n\n const valueFormatter = formatValue ?? ((v: number) => String(v));\n\n const options: ApexOptions = {\n chart: {\n type: 'bar',\n toolbar: { show: false },\n zoom: { enabled: false },\n stacked,\n fontFamily: 'inherit',\n },\n colors: colors ?? palette,\n dataLabels: { enabled: false },\n plotOptions: {\n bar: {\n horizontal,\n borderRadius,\n borderRadiusApplication: 'end',\n columnWidth: '55%',\n },\n },\n grid,\n xaxis: {\n categories,\n labels: {\n ...axisLabels,\n formatter: horizontal ? (val) => valueFormatter(Number(val)) : undefined,\n },\n axisBorder: { show: false },\n axisTicks: { show: false },\n },\n yaxis: {\n labels: {\n ...axisLabels,\n formatter: horizontal ? undefined : (val) => valueFormatter(Number(val)),\n },\n },\n legend: {\n show: legendVisible,\n position: 'top',\n horizontalAlign: 'right',\n labels: { colors: axisLabels.style.colors },\n markers: { size: 5 },\n },\n tooltip: {\n theme: 'dark',\n y: { formatter: (v) => valueFormatter(Number(v)) },\n },\n fill: { opacity: 1 },\n stroke: { show: false },\n };\n\n return (\n <ReactApexChart type=\"bar\" options={options} series={series} height={height} width={width} />\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/theme.ts","../src/escape.ts","../src/LineAreaChart.tsx","../src/RealtimeChart.tsx","../src/RadialBarChart.tsx","../src/GradientRadial.tsx","../src/SemiCircleGauge.tsx","../src/StrokedGauge.tsx","../src/DonutChart.tsx","../src/Sparkline.tsx","../src/TreemapChart.tsx","../src/BarChart.tsx","../src/HeatmapChart.tsx","../src/RadarChart.tsx","../src/tooltip.ts","../src/ScatterChart.tsx","../src/BoxPlotChart.tsx","../src/RangeBarChart.tsx","../src/MixedChart.tsx"],"names":["ReactApexChart","useState","useEffect","jsx","round"],"mappings":"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","file":"index.js","sourcesContent":["import type { ApexOptions } from 'apexcharts';\nimport { useEffect, useState } from 'react';\n\n/** Default brand color (the blue accent). Prefer `useChartTheme().brand`, which follows the accent. */\nexport const COSMOS_BRAND = '#465fff';\nexport const COSMOS_PALETTE = ['#465fff', '#10b981', '#f59e0b', '#ef4444', '#8b5cf6'];\n\n// Theme classes that enable the dark variant (see @sckyzo/cosmos-theme).\nconst DARK_THEME_CLASSES = ['dark', 'deep-blue'];\n\n// Brand steps of the sequential scale, low to high. Light themes run from a\n// pale tint to a deep shade, dark themes from a dark tint to a bright one, so\n// low values stay a muted cell on the card instead of a glaring one. The steps\n// skip neighbors that look alike in some accents (800 and 900, 100 and 200).\nconst BRAND_SCALE_LIGHT = [100, 300, 400, 500, 700];\nconst BRAND_SCALE_DARK = [900, 700, 500, 400, 300];\n// The blue accent's steps, used when the theme CSS isn't loaded or during SSR.\nconst BLUE_STEPS: Record<number, string> = {\n 100: '#dde9ff',\n 300: '#9cb9ff',\n 400: '#7592ff',\n 500: COSMOS_BRAND,\n 700: '#2a31d8',\n 900: '#262e89',\n};\n\nconst detectDark = (): boolean => {\n if (typeof document === 'undefined') return false;\n const { classList } = document.documentElement;\n return DARK_THEME_CLASSES.some((c) => classList.contains(c));\n};\n\n/** A CSS custom property on `<html>`, or `fallback` when it's unset or during SSR. */\nconst readCssVar = (name: string, fallback: string): string => {\n if (typeof document === 'undefined') return fallback;\n return getComputedStyle(document.documentElement).getPropertyValue(name).trim() || fallback;\n};\n\nconst readChartColors = () => {\n const dark = detectDark();\n return {\n dark,\n brand: readCssVar('--color-brand-500', COSMOS_BRAND),\n brandScale: (dark ? BRAND_SCALE_DARK : BRAND_SCALE_LIGHT).map((step) =>\n readCssVar(`--color-brand-${step}`, BLUE_STEPS[step])\n ),\n // The card background (`bg-white dark:bg-gray-900`).\n surface: dark ? readCssVar('--color-gray-900', '#111827') : readCssVar('--color-white', '#fff'),\n grid: dark\n ? readCssVar('--color-gray-800', '#1f2937')\n : readCssVar('--color-gray-200', '#e5e7eb'),\n axis: dark\n ? readCssVar('--color-gray-400', '#9ca3af')\n : readCssVar('--color-gray-500', '#6b7280'),\n };\n};\n\n/**\n * Returns `read()` and calls it again whenever `<html>` changes theme or\n * accent (the Cosmos convention: a theme class and `data-accent`). `read`\n * must be stable.\n */\nconst useHtmlAppearance = <T>(read: () => T): T => {\n const [value, setValue] = useState(read);\n\n useEffect(() => {\n if (typeof document === 'undefined') return;\n const observer = new MutationObserver(() => setValue(read));\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class', 'data-accent'],\n });\n return () => observer.disconnect();\n }, [read]);\n\n return value;\n};\n\n/**\n * Subscribes to dark-mode toggles on `<html>` (the Cosmos convention).\n * Returns the current `isDark` value.\n */\nexport const useDarkMode = (): boolean => useHtmlAppearance(detectDark);\n\n/**\n * Returns ApexCharts grid + axis options and colors matching the Cosmos\n * design tokens for the current theme and accent: `brandScale` is a\n * sequential scale (five brand steps, low to high) and `surface` the card\n * background.\n */\nexport const useChartTheme = () => {\n const {\n dark,\n brand,\n brandScale,\n surface,\n grid: gridColor,\n axis,\n } = useHtmlAppearance(readChartColors);\n const grid: ApexOptions['grid'] = {\n borderColor: gridColor,\n strokeDashArray: 4,\n };\n const axisLabels = {\n style: {\n colors: axis,\n fontSize: '11px',\n fontFamily: 'inherit',\n },\n };\n return {\n dark,\n grid,\n axisLabels,\n brand,\n brandScale,\n surface,\n palette: [brand, ...COSMOS_PALETTE.slice(1)],\n };\n};\n","const ENTITIES: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n};\n\n/**\n * Escapes text for the parts of a chart ApexCharts writes with innerHTML:\n * legend entries, tooltip titles, series names and values. Series names,\n * categories and labels are data and must never be parsed as markup. Axis\n * labels are SVG text and must stay unescaped.\n */\nexport const escapeHtml = (value: unknown): string =>\n String(value).replace(/[&<>\"']/g, (char) => ENTITIES[char]);\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/line';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { escapeHtml } from './escape';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type LineAreaChartProps = ChartSize & {\n series: { name: string; data: number[] }[];\n categories: (string | number)[];\n};\n\nexport const LineAreaChart = ({\n series,\n categories,\n height = 280,\n width = '100%',\n}: LineAreaChartProps) => {\n const { grid, axisLabels, palette } = useChartTheme();\n const options: ApexOptions = {\n chart: {\n type: 'area',\n toolbar: { show: false },\n zoom: { enabled: false },\n fontFamily: 'inherit',\n },\n colors: palette,\n dataLabels: { enabled: false },\n stroke: { curve: 'smooth', width: 2 },\n fill: { type: 'gradient', gradient: { opacityFrom: 0.45, opacityTo: 0.05 } },\n grid,\n // One labels object per axis: ApexCharts writes the x-axis category\n // formatter onto it, which blanked the y labels on the next update.\n xaxis: {\n categories,\n labels: { ...axisLabels },\n axisBorder: { show: false },\n axisTicks: { show: false },\n },\n yaxis: { labels: { ...axisLabels } },\n legend: { show: false },\n // The tooltip is HTML: escape the category and the series name. ApexCharts\n // hands the x formatter the point's position on the axis (1, 2, …), not\n // its category, so read the category back by index.\n tooltip: {\n theme: 'dark',\n x: {\n formatter: (v, opts) =>\n escapeHtml(opts === undefined ? v : (categories[opts.dataPointIndex] ?? v)),\n },\n y: { title: { formatter: (name) => `${escapeHtml(name)}: ` } },\n },\n };\n return (\n <ReactApexChart type=\"area\" options={options} series={series} height={height} width={width} />\n );\n};\n","import { useEffect, useState } from 'react';\nimport type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/line';\nimport 'apexcharts/features/annotations';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type RealtimeChartProps = ChartSize & {\n /** Sample generator — defaults to a noisy walk between 30 and 80. */\n generator?: () => number;\n /** Interval in ms — defaults to 2000. */\n intervalMs?: number;\n windowSize?: number;\n warnThreshold?: number;\n critThreshold?: number;\n};\n\nconst defaultGenerator = (() => {\n let last = 50;\n return () => {\n last += (Math.random() - 0.5) * 8;\n last = Math.max(20, Math.min(95, last));\n return Math.round(last);\n };\n})();\n\nexport const RealtimeChart = ({\n generator = defaultGenerator,\n intervalMs = 2000,\n windowSize = 30,\n warnThreshold = 70,\n critThreshold = 85,\n height = 240,\n width = '100%',\n}: RealtimeChartProps) => {\n const { grid, axisLabels, brand } = useChartTheme();\n const [series, setSeries] = useState(() => Array.from({ length: windowSize }, () => generator()));\n\n useEffect(() => {\n const id = setInterval(() => {\n setSeries((current) => [...current.slice(1), generator()]);\n }, intervalMs);\n return () => clearInterval(id);\n }, [generator, intervalMs]);\n\n const options: ApexOptions = {\n chart: {\n type: 'line',\n animations: { enabled: true, dynamicAnimation: { enabled: true, speed: 800 } },\n toolbar: { show: false },\n zoom: { enabled: false },\n fontFamily: 'inherit',\n },\n colors: [brand],\n stroke: { curve: 'smooth', width: 2 },\n dataLabels: { enabled: false },\n grid,\n xaxis: {\n type: 'numeric',\n labels: { show: false },\n axisBorder: { show: false },\n axisTicks: { show: false },\n },\n yaxis: { min: 0, max: 100, labels: axisLabels },\n annotations: {\n yaxis: [\n {\n y: warnThreshold,\n borderColor: '#f59e0b',\n label: { text: 'WARN', style: { color: '#fff', background: '#f59e0b' } },\n },\n {\n y: critThreshold,\n borderColor: '#ef4444',\n label: { text: 'CRIT', style: { color: '#fff', background: '#ef4444' } },\n },\n ],\n },\n tooltip: { theme: 'dark' },\n };\n\n return (\n <ReactApexChart\n type=\"line\"\n options={options}\n series={[{ name: 'value', data: series }]}\n height={height}\n width={width}\n />\n );\n};\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/radialBar';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type RadialBarChartProps = ChartSize & {\n series: number[];\n labels: string[];\n};\n\nexport const RadialBarChart = ({\n series,\n labels,\n height = 320,\n width = '100%',\n}: RadialBarChartProps) => {\n const { palette } = useChartTheme();\n const options: ApexOptions = {\n chart: { type: 'radialBar', fontFamily: 'inherit' },\n colors: palette,\n labels,\n plotOptions: {\n radialBar: {\n track: { background: 'rgba(150,150,150,0.15)' },\n dataLabels: {\n name: { fontSize: '12px' },\n value: { fontSize: '14px', formatter: (v) => `${v}%` },\n total: {\n show: true,\n label: 'Avg',\n formatter: () => `${Math.round(series.reduce((a, b) => a + b, 0) / series.length)}%`,\n },\n },\n },\n },\n };\n return (\n <ReactApexChart\n type=\"radialBar\"\n options={options}\n series={series}\n height={height}\n width={width}\n />\n );\n};\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/radialBar';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type GradientRadialProps = ChartSize & {\n value: number;\n label?: string;\n};\n\nexport const GradientRadial = ({\n value,\n label = 'Score',\n height = 280,\n width = '100%',\n}: GradientRadialProps) => {\n const { brand } = useChartTheme();\n const options: ApexOptions = {\n chart: { type: 'radialBar', fontFamily: 'inherit' },\n colors: [brand],\n fill: {\n type: 'gradient',\n gradient: {\n shade: 'dark',\n type: 'horizontal',\n shadeIntensity: 0.5,\n gradientToColors: ['#10b981'],\n inverseColors: false,\n opacityFrom: 1,\n opacityTo: 1,\n stops: [0, 100],\n },\n },\n plotOptions: {\n radialBar: {\n hollow: { size: '70%' },\n dataLabels: {\n name: { fontSize: '12px', offsetY: -10 },\n value: { fontSize: '32px', fontWeight: 700, formatter: (v) => `${v}%` },\n },\n },\n },\n labels: [label],\n };\n return (\n <ReactApexChart\n type=\"radialBar\"\n options={options}\n series={[value]}\n height={height}\n width={width}\n />\n );\n};\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/radialBar';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type SemiCircleGaugeProps = ChartSize & {\n value: number;\n label?: string;\n color?: string;\n};\n\nexport const SemiCircleGauge = ({\n value,\n label = '',\n color,\n height = 200,\n width = '100%',\n}: SemiCircleGaugeProps) => {\n const { brand } = useChartTheme();\n const options: ApexOptions = {\n chart: { type: 'radialBar', fontFamily: 'inherit', sparkline: { enabled: true } },\n colors: [color ?? brand],\n plotOptions: {\n radialBar: {\n startAngle: -90,\n endAngle: 90,\n track: { background: 'rgba(150,150,150,0.15)', strokeWidth: '100%' },\n dataLabels: {\n name: { offsetY: -10, fontSize: '12px' },\n value: { offsetY: -45, fontSize: '24px', fontWeight: 700, formatter: (v) => `${v}%` },\n },\n },\n },\n labels: [label],\n };\n return (\n <ReactApexChart\n type=\"radialBar\"\n options={options}\n series={[value]}\n height={height}\n width={width}\n />\n );\n};\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/radialBar';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type StrokedGaugeProps = ChartSize & {\n value: number;\n label?: string;\n};\n\nexport const StrokedGauge = ({\n value,\n label = '',\n height = 280,\n width = '100%',\n}: StrokedGaugeProps) => {\n const { brand } = useChartTheme();\n const options: ApexOptions = {\n chart: { type: 'radialBar', fontFamily: 'inherit' },\n colors: [brand],\n stroke: { lineCap: 'round', dashArray: 4 },\n plotOptions: {\n radialBar: {\n hollow: { size: '70%' },\n track: { background: 'rgba(150,150,150,0.15)', strokeWidth: '100%' },\n dataLabels: {\n name: { fontSize: '12px', offsetY: -10 },\n value: { fontSize: '32px', fontWeight: 700, formatter: (v) => `${v}%` },\n },\n },\n },\n labels: [label],\n };\n return (\n <ReactApexChart\n type=\"radialBar\"\n options={options}\n series={[value]}\n height={height}\n width={width}\n />\n );\n};\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/donut';\nimport 'apexcharts/features/legend';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { escapeHtml } from './escape';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type DonutChartProps = ChartSize & {\n series: number[];\n labels: string[];\n /** Whether to show the right-side legend (default: bottom). */\n rightLegend?: boolean;\n};\n\nexport const DonutChart = ({\n series,\n labels,\n rightLegend = false,\n height = 280,\n width = '100%',\n}: DonutChartProps) => {\n const { palette } = useChartTheme();\n const options: ApexOptions = {\n chart: { type: 'donut', fontFamily: 'inherit' },\n colors: palette,\n labels,\n // The legend and the tooltip are HTML: escape the labels.\n legend: { position: rightLegend ? 'right' : 'bottom', formatter: (name) => escapeHtml(name) },\n tooltip: { y: { title: { formatter: (name) => `${escapeHtml(name)}: ` } } },\n dataLabels: { enabled: false },\n plotOptions: {\n pie: {\n donut: { size: '68%', labels: { show: true, total: { show: true, label: 'Total' } } },\n },\n },\n };\n return (\n <ReactApexChart type=\"donut\" options={options} series={series} height={height} width={width} />\n );\n};\n\nexport const DonutRightLegend = (props: Omit<DonutChartProps, 'rightLegend'>) => (\n <DonutChart {...props} rightLegend />\n);\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/line';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type SparklineProps = ChartSize & {\n data: number[];\n color?: string;\n variant?: 'line' | 'area';\n};\n\nexport const Sparkline = ({\n data,\n color,\n variant = 'area',\n height = 60,\n width = '100%',\n}: SparklineProps) => {\n const { brand } = useChartTheme();\n const options: ApexOptions = {\n chart: { sparkline: { enabled: true }, fontFamily: 'inherit', type: variant },\n colors: [color ?? brand],\n stroke: { curve: 'smooth', width: 2 },\n fill:\n variant === 'area'\n ? { type: 'gradient', gradient: { opacityFrom: 0.45, opacityTo: 0.05 } }\n : undefined,\n tooltip: { fixed: { enabled: false }, x: { show: false }, marker: { show: false } },\n };\n return (\n <ReactApexChart\n type={variant}\n options={options}\n series={[{ name: 'value', data }]}\n height={height}\n width={width}\n />\n );\n};\n\nexport type SparklineGroupItem = {\n label: string;\n value: number | string;\n data: number[];\n color?: string;\n};\n\nexport const SparklineGroup = ({\n items,\n className,\n}: {\n items: SparklineGroupItem[];\n className?: string;\n}) => (\n <div\n className={className}\n style={{\n display: 'grid',\n gap: '1rem',\n gridTemplateColumns: 'repeat(auto-fit, minmax(180px, 1fr))',\n }}\n >\n {items.map((it) => (\n <div\n key={it.label}\n className=\"rounded-2xl border border-gray-200 bg-white p-4 dark:border-gray-800 dark:bg-gray-900\"\n >\n <p className=\"text-xs font-medium tracking-wider text-gray-500 uppercase dark:text-gray-400\">\n {it.label}\n </p>\n <p className=\"mt-1 text-2xl font-bold text-gray-900 dark:text-white\">{it.value}</p>\n <Sparkline data={it.data} color={it.color} height={50} />\n </div>\n ))}\n </div>\n);\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/treemap';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type TreemapDatum = { x: string; y: number };\n\nexport type TreemapChartProps = ChartSize & {\n series: { name?: string; data: TreemapDatum[] }[];\n};\n\nexport const TreemapChart = ({ series, height = 320, width = '100%' }: TreemapChartProps) => {\n const { palette } = useChartTheme();\n const options: ApexOptions = {\n chart: { type: 'treemap', fontFamily: 'inherit', toolbar: { show: false } },\n colors: palette,\n legend: { show: false },\n dataLabels: { enabled: true, style: { fontSize: '12px' } },\n plotOptions: { treemap: { distributed: true, enableShades: false } },\n };\n return (\n <ReactApexChart\n type=\"treemap\"\n options={options}\n series={series}\n height={height}\n width={width}\n />\n );\n};\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/bar';\nimport 'apexcharts/features/legend';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { escapeHtml } from './escape';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type BarChartOrientation = 'vertical' | 'horizontal';\n\nexport type BarChartProps = ChartSize & {\n series: { name: string; data: number[] }[];\n categories: (string | number)[];\n /** `vertical` (default) draws bars upward; `horizontal` draws them rightward. */\n orientation?: BarChartOrientation;\n /** Stack multi-series bars instead of grouping them side-by-side. */\n stacked?: boolean;\n /** Override the default Cosmos palette. */\n colors?: string[];\n /** Format the numeric axis labels (and tooltip values). */\n formatValue?: (value: number) => string;\n /** Show the legend (auto-true when 2+ series). */\n showLegend?: boolean;\n /** Tailwind border-radius applied to bar tops. Default 4. */\n borderRadius?: number;\n};\n\nexport const BarChart = ({\n series,\n categories,\n orientation = 'vertical',\n stacked = false,\n colors,\n formatValue,\n showLegend,\n borderRadius = 4,\n height = 320,\n width = '100%',\n}: BarChartProps) => {\n const { grid, axisLabels, palette } = useChartTheme();\n const horizontal = orientation === 'horizontal';\n const legendVisible = showLegend ?? series.length > 1;\n\n const valueFormatter = formatValue ?? ((v: number) => String(v));\n\n const options: ApexOptions = {\n chart: {\n type: 'bar',\n toolbar: { show: false },\n zoom: { enabled: false },\n stacked,\n fontFamily: 'inherit',\n },\n colors: colors ?? palette,\n dataLabels: { enabled: false },\n plotOptions: {\n bar: {\n horizontal,\n borderRadius,\n borderRadiusApplication: 'end',\n columnWidth: '55%',\n },\n },\n grid,\n xaxis: {\n categories,\n labels: {\n ...axisLabels,\n formatter: horizontal ? (val) => valueFormatter(Number(val)) : undefined,\n },\n axisBorder: { show: false },\n axisTicks: { show: false },\n },\n yaxis: {\n labels: {\n ...axisLabels,\n formatter: horizontal ? undefined : (val) => valueFormatter(Number(val)),\n },\n },\n legend: {\n show: legendVisible,\n position: 'top',\n horizontalAlign: 'right',\n labels: { colors: axisLabels.style.colors },\n markers: { size: 5 },\n formatter: (name) => escapeHtml(name),\n },\n // Tooltips and the legend are HTML: escape names, categories and values.\n tooltip: {\n theme: 'dark',\n x: { formatter: (v) => escapeHtml(v) },\n y: {\n formatter: (v) => escapeHtml(valueFormatter(Number(v))),\n title: { formatter: (name) => `${escapeHtml(name)}: ` },\n },\n },\n fill: { opacity: 1 },\n stroke: { show: false },\n };\n\n return (\n <ReactApexChart type=\"bar\" options={options} series={series} height={height} width={width} />\n );\n};\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/heatmap';\nimport 'apexcharts/features/legend';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { escapeHtml } from './escape';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type HeatmapColorRange = {\n /** Lowest value of the range, inclusive. */\n from: number;\n /** Highest value of the range, inclusive. A value on a shared bound takes the later range. */\n to: number;\n color: string;\n /** Legend label. Default: `from – to`, formatted with `formatValue`. */\n name?: string;\n};\n\nexport type HeatmapChartProps = ChartSize & {\n /** One row per series, drawn top to bottom; one value per category. */\n series: { name: string; data: number[] }[];\n categories: (string | number)[];\n /**\n * Color steps, low to high, spread over the data range in buckets with\n * round bounds. Default: five brand steps of the current theme and accent.\n */\n colors?: string[];\n /**\n * Explicit color ranges (thresholds such as OK / WARN / CRIT), which take\n * precedence over `colors`. Cover every value: a cell outside all ranges\n * falls back to a series color.\n */\n ranges?: HeatmapColorRange[];\n /** Format the values in the tooltip, the legend and the cells. */\n formatValue?: (value: number) => string;\n /** Print each value inside its cell. */\n showValues?: boolean;\n /** Show the color legend. Default true. */\n showLegend?: boolean;\n};\n\n// Round bucket sizes, × 10^n. Finer than 1-2-5 so that the buckets fit the\n// data instead of leaving the top colors unused.\nconst NICE_STEPS = [1, 2, 2.5, 3, 4, 5, 6, 8, 10];\n\n/** The smallest round bucket size that is at least `value`. */\nconst niceStep = (value: number): number => {\n const magnitude = 10 ** Math.floor(Math.log10(value));\n const step = NICE_STEPS.find((m) => m * magnitude >= value) ?? 10;\n return step * magnitude;\n};\n\n// Drops the float noise of `start + i * step` (0.30000000000000004).\nconst round = (value: number) => Number(value.toPrecision(12));\n\n/** `colors.length` contiguous ranges with round bounds covering every value. */\nconst evenRanges = (values: number[], colors: string[]): HeatmapColorRange[] => {\n const finite = values.filter(Number.isFinite);\n if (finite.length === 0 || colors.length === 0) return [];\n const min = finite.reduce((a, b) => Math.min(a, b));\n const max = finite.reduce((a, b) => Math.max(a, b));\n let step = niceStep((max - min) / colors.length || Math.abs(max) || 1);\n let start = Math.floor(min / step) * step;\n // Flooring the start can leave the top value out: take the next round step.\n while (start + step * colors.length < max) {\n step = niceStep(step * 1.001);\n start = Math.floor(min / step) * step;\n }\n return colors.map((color, i) => ({\n from: round(start + step * i),\n to: round(start + step * (i + 1)),\n color,\n }));\n};\n\n/** Dark text on light cells, white on dark ones. `undefined` for a non-hex color. */\nconst textColorOn = (color: string): string | undefined => {\n const hex = /^#([0-9a-f]{6})$/i.exec(color)?.[1];\n if (!hex) return undefined;\n const [r, g, b] = [0, 2, 4].map((i) => {\n const c = parseInt(hex.slice(i, i + 2), 16) / 255;\n return c <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b > 0.2 ? '#101828' : '#ffffff';\n};\n\nexport const HeatmapChart = ({\n series,\n categories,\n colors,\n ranges,\n formatValue,\n showValues = false,\n showLegend = true,\n height = 320,\n width = '100%',\n}: HeatmapChartProps) => {\n const { axisLabels, brandScale, surface } = useChartTheme();\n const valueFormatter = formatValue ?? ((v: number) => String(v));\n\n const colorRanges = (\n ranges ??\n evenRanges(\n series.flatMap((s) => s.data),\n colors ?? brandScale\n )\n ).map((range) => ({\n ...range,\n name: range.name ?? `${valueFormatter(range.from)} – ${valueFormatter(range.to)}`,\n foreColor: textColorOn(range.color),\n }));\n\n const options: ApexOptions = {\n chart: {\n type: 'heatmap',\n toolbar: { show: false },\n fontFamily: 'inherit',\n },\n dataLabels: {\n enabled: showValues,\n formatter: (v) => valueFormatter(Number(v)),\n style: { fontSize: '11px', fontWeight: 500 },\n },\n plotOptions: {\n heatmap: {\n radius: 3,\n // The ranges carry the exact colors: no shading on top of them.\n enableShades: false,\n colorScale: { ranges: colorRanges },\n },\n },\n // Gaps between the cells, in the card's color.\n stroke: { width: 2, colors: [surface] },\n grid: { show: false },\n // One labels object per axis: ApexCharts mutates them. Narrow columns\n // skip the labels that would overlap instead of rotating them into a\n // pile; the tooltip still names every column.\n xaxis: {\n categories,\n labels: { ...axisLabels, rotate: 0 },\n axisBorder: { show: false },\n axisTicks: { show: false },\n tooltip: { enabled: false },\n },\n // ApexCharts draws the first series at the bottom; read top-down instead.\n yaxis: { reversed: true, labels: { ...axisLabels } },\n legend: {\n show: showLegend,\n position: 'top',\n horizontalAlign: 'right',\n labels: { colors: axisLabels.style.colors },\n // The default stroke outlines the swatches in white, glaring in dark themes.\n markers: { size: 5, strokeWidth: 0 },\n formatter: (name) => escapeHtml(name),\n },\n // The tooltip and the legend are HTML: escape row names, categories,\n // range names and values. The title is the hovered column's category.\n tooltip: {\n theme: 'dark',\n x: {\n show: true,\n formatter: (v, opts) =>\n escapeHtml(opts === undefined ? v : (categories[opts.dataPointIndex] ?? v)),\n },\n y: {\n formatter: (v) => escapeHtml(valueFormatter(Number(v))),\n title: { formatter: (name) => `${escapeHtml(name)}: ` },\n },\n },\n };\n\n return (\n <ReactApexChart\n type=\"heatmap\"\n options={options}\n series={series}\n height={height}\n width={width}\n />\n );\n};\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/radar';\nimport 'apexcharts/features/legend';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { escapeHtml } from './escape';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type RadarChartProps = ChartSize & {\n /** One polygon per series; one value per category, in the same order. */\n series: { name: string; data: number[] }[];\n /** The axes, clockwise from the top. */\n categories: string[];\n /** Override the default Cosmos palette. */\n colors?: string[];\n /** Format the scale labels and the tooltip values. */\n formatValue?: (value: number) => string;\n /** Show the legend (auto-true when 2+ series). */\n showLegend?: boolean;\n /** Top of the scale, e.g. 100 for scores. Default: rounded up from the data. */\n max?: number;\n};\n\nexport const RadarChart = ({\n series,\n categories,\n colors,\n formatValue,\n showLegend,\n max,\n height = 340,\n width = '100%',\n}: RadarChartProps) => {\n const { grid, axisLabels, palette } = useChartTheme();\n const legendVisible = showLegend ?? series.length > 1;\n const valueFormatter = formatValue ?? ((v: number) => String(v));\n\n const options: ApexOptions = {\n chart: {\n type: 'radar',\n toolbar: { show: false },\n fontFamily: 'inherit',\n },\n colors: colors ?? palette,\n dataLabels: { enabled: false },\n stroke: { width: 2 },\n fill: { opacity: 0.15 },\n // The tooltip is hit-tested on the markers: keep them.\n markers: { size: 3, strokeWidth: 0 },\n // ApexCharts reserves part of an axis name's width only, so on a narrow\n // chart the names at the side vertices ran off the edge. No effect on a\n // wide chart: its size follows the height.\n grid: { padding: { left: 24, right: 24 } },\n plotOptions: {\n radar: {\n polygons: {\n strokeColors: grid?.borderColor,\n connectorColors: grid?.borderColor,\n fill: { colors: ['transparent'] },\n },\n },\n },\n // One labels object per axis: ApexCharts mutates them.\n xaxis: { categories, labels: { ...axisLabels } },\n yaxis: {\n max,\n labels: { ...axisLabels, formatter: (val) => valueFormatter(Number(val)) },\n },\n legend: {\n show: legendVisible,\n position: 'top',\n horizontalAlign: 'right',\n labels: { colors: axisLabels.style.colors },\n // The default stroke outlines the swatches in white, glaring in dark themes.\n markers: { size: 5, strokeWidth: 0 },\n formatter: (name) => escapeHtml(name),\n },\n // The tooltip and the legend are HTML: escape names, categories and\n // values. The title is the hovered axis.\n tooltip: {\n theme: 'dark',\n x: {\n formatter: (v, opts) =>\n escapeHtml(opts === undefined ? v : (categories[opts.dataPointIndex] ?? v)),\n },\n y: {\n formatter: (v) => escapeHtml(valueFormatter(Number(v))),\n title: { formatter: (name) => `${escapeHtml(name)}: ` },\n },\n },\n };\n\n return (\n <ReactApexChart type=\"radar\" options={options} series={series} height={height} width={width} />\n );\n};\n","import { escapeHtml } from './escape';\n\n/** One tooltip line: a label and its formatted value. */\nexport type TooltipRow = [label: string, value: string];\n\nexport type TooltipContent = {\n /** First line, in the tooltip title style (a category, a point's name). */\n title?: string;\n /** The series: its name after a dot in its color. */\n series?: { name: string; color: string };\n rows: TooltipRow[];\n};\n\nconst line = (content: string) =>\n `<div class=\"apexcharts-tooltip-series-group apexcharts-active\" style=\"display:flex\">${content}</div>`;\n\n/**\n * Markup for a `tooltip.custom` callback, built from ApexCharts' own tooltip\n * classes so it looks like the built-in tooltips. ApexCharts writes it with\n * innerHTML: every string is escaped here, so callers pass raw data.\n */\nexport const tooltipHtml = ({ title, series, rows }: TooltipContent): string =>\n (title === undefined ? '' : `<div class=\"apexcharts-tooltip-title\">${escapeHtml(title)}</div>`) +\n (series === undefined\n ? ''\n : line(\n `<span class=\"apexcharts-tooltip-marker\" style=\"background-color:${escapeHtml(series.color)};border-radius:50%\"></span>` +\n `<span class=\"apexcharts-tooltip-text-y-label\">${escapeHtml(series.name)}</span>`\n )) +\n rows\n .map(([label, value]) =>\n line(\n `<span class=\"apexcharts-tooltip-text-y-label\">${escapeHtml(label)}:</span>` +\n `<span class=\"apexcharts-tooltip-text-y-value\">${escapeHtml(value)}</span>`\n )\n )\n .join('');\n","import type { ApexOptions } from 'apexcharts';\n// `apexcharts/scatter` and `apexcharts/bubble` are byte-identical copies of\n// `apexcharts/line`, which registers both types. Importing `line`, like the\n// other line-family wrappers, keeps a single copy of the engine in a bundle.\nimport 'apexcharts/line';\nimport 'apexcharts/features/legend';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { escapeHtml } from './escape';\nimport { useChartTheme } from './theme';\nimport { tooltipHtml, type TooltipRow } from './tooltip';\nimport type { ChartSize } from './types';\n\nexport type ScatterPoint = {\n x: number;\n y: number;\n /** Names the point in the tooltip title: a node, a host, a rack. */\n label?: string;\n};\n\nexport type BubblePoint = ScatterPoint & {\n /** Third measure, drawn as the bubble size. */\n z: number;\n};\n\ntype XYChartProps = ChartSize & {\n /** Title under the x-axis. Also labels the x value in the tooltip (default `x`). */\n xTitle?: string;\n /** Title beside the y-axis. Also labels the y value in the tooltip (default `y`). */\n yTitle?: string;\n /** Override the default Cosmos palette, one color per series. */\n colors?: string[];\n /** Format the x-axis labels and the tooltip's x value (default: at most two decimals). */\n formatX?: (value: number) => string;\n /** Format the y-axis labels and the tooltip's y value (default: at most two decimals). */\n formatY?: (value: number) => string;\n /** Show the legend (auto-true when 2+ series). */\n showLegend?: boolean;\n};\n\nexport type ScatterChartProps = XYChartProps & {\n series: { name: string; data: ScatterPoint[] }[];\n};\n\nexport type BubbleChartProps = XYChartProps & {\n series: { name: string; data: BubblePoint[] }[];\n /** Labels the size in the tooltip. Default `Size`. */\n sizeTitle?: string;\n /** Format the size in the tooltip (default: at most two decimals). */\n formatSize?: (value: number) => string;\n};\n\n/** Drops the float noise of computed values: 33.333333 reads 33.33. */\nconst formatNumber = (value: number) => String(Number(value.toFixed(2)));\n\n/**\n * Axis bounds and tick count that put every tick on a round value.\n * ApexCharts splits a numeric x-axis evenly between the data extremes (12,\n * 16.59, 21.18…). `pad` first widens the range by that fraction on each side,\n * so the bubbles at the edges are not clipped; it never crosses zero.\n */\nconst niceAxis = (values: number[], pad = 0, ticks = 5) => {\n const low = Math.min(...values);\n const high = Math.max(...values);\n const margin = (high - low) * pad;\n const min = low >= 0 ? Math.max(low - margin, 0) : low - margin;\n const max = high <= 0 ? Math.min(high + margin, 0) : high + margin;\n // No data, or a single value: let ApexCharts scale it.\n if (!(max > min)) return {};\n const rough = (max - min) / ticks;\n const magnitude = 10 ** Math.floor(Math.log10(rough));\n const step = [1, 2, 2.5, 5, 10].map((f) => f * magnitude).find((s) => s >= rough) ?? rough;\n const round = (value: number) => Number(value.toPrecision(12));\n const niceMin = round(Math.floor(min / step) * step);\n const niceMax = round(Math.ceil(max / step) * step);\n return { min: niceMin, max: niceMax, tickAmount: Math.round((niceMax - niceMin) / step) };\n};\n\nconst xyOptions = <P extends ScatterPoint>(\n { grid, axisLabels, palette }: ReturnType<typeof useChartTheme>,\n {\n series,\n xTitle,\n yTitle,\n colors,\n formatX = formatNumber,\n formatY = formatNumber,\n showLegend,\n }: XYChartProps & { series: { name: string; data: P[] }[] },\n { pad = 0, extraRows = () => [] }: { pad?: number; extraRows?: (point: P) => TooltipRow[] } = {}\n): ApexOptions => {\n const seriesColors = colors ?? palette;\n const points = series.flatMap(({ data }) => data);\n const axisTitle = (text: string | undefined) =>\n text === undefined\n ? undefined\n : {\n text,\n style: {\n color: axisLabels.style.colors,\n fontSize: '12px',\n fontFamily: 'inherit',\n fontWeight: 500,\n },\n };\n\n return {\n chart: { toolbar: { show: false }, zoom: { enabled: false }, fontFamily: 'inherit' },\n colors: seriesColors,\n dataLabels: { enabled: false },\n grid,\n // One labels object per axis: ApexCharts writes formatters onto them.\n // Axis labels and titles are SVG text and stay unescaped.\n xaxis: {\n type: 'numeric',\n ...niceAxis(\n points.map(({ x }) => x),\n pad\n ),\n title: axisTitle(xTitle),\n labels: { ...axisLabels, formatter: (value) => formatX(Number(value)) },\n axisBorder: { show: false },\n axisTicks: { show: false },\n // The x-axis tooltip is HTML and repeats the x value of the tooltip.\n tooltip: { enabled: false },\n },\n yaxis: {\n ...niceAxis(\n points.map(({ y }) => y),\n pad\n ),\n title: axisTitle(yTitle),\n labels: { ...axisLabels, formatter: (value) => formatY(value) },\n },\n legend: {\n show: showLegend ?? series.length > 1,\n position: 'top',\n horizontalAlign: 'right',\n labels: { colors: axisLabels.style.colors },\n markers: { size: 5 },\n formatter: (name) => escapeHtml(name),\n },\n // The tooltip is HTML: tooltipHtml escapes the label, the series name and\n // the values.\n tooltip: {\n theme: 'dark',\n custom: ({ seriesIndex, dataPointIndex }) => {\n const { name, data } = series[seriesIndex];\n const point = data[dataPointIndex];\n return tooltipHtml({\n title: point.label,\n series: { name, color: seriesColors[seriesIndex % seriesColors.length] },\n rows: [\n [xTitle ?? 'x', formatX(point.x)],\n [yTitle ?? 'y', formatY(point.y)],\n ...extraRows(point),\n ],\n });\n },\n },\n };\n};\n\n/** Points on two numeric axes, e.g. latency against load, one point per node. */\nexport const ScatterChart = ({ height = 320, width = '100%', ...props }: ScatterChartProps) => {\n const base = xyOptions(useChartTheme(), props);\n const options: ApexOptions = {\n ...base,\n chart: { ...base.chart, type: 'scatter' },\n markers: { size: 6, strokeWidth: 0, hover: { sizeOffset: 2 } },\n };\n return (\n <ReactApexChart\n type=\"scatter\"\n options={options}\n series={props.series}\n height={height}\n width={width}\n />\n );\n};\n\n/** A scatter chart whose bubble size carries a third measure (`z`), e.g. request volume. */\nexport const BubbleChart = ({\n sizeTitle = 'Size',\n formatSize = formatNumber,\n height = 320,\n width = '100%',\n ...props\n}: BubbleChartProps) => {\n const theme = useChartTheme();\n const base = xyOptions(theme, props, {\n // Room for the bubbles at the edges of the plot.\n pad: 0.08,\n extraRows: (point) => [[sizeTitle, formatSize(point.z)]],\n });\n const options: ApexOptions = {\n ...base,\n chart: { ...base.chart, type: 'bubble' },\n plotOptions: { bubble: { minBubbleRadius: 4 } },\n // Translucent bubbles, outlined in their own color (ApexCharts' white\n // outline glares on the dark themes), keep the overlapping ones readable.\n fill: { opacity: 0.55 },\n markers: { strokeWidth: 1, strokeColors: props.colors ?? theme.palette },\n };\n return (\n <ReactApexChart\n type=\"bubble\"\n options={options}\n series={props.series}\n height={height}\n width={width}\n />\n );\n};\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/boxPlot';\nimport 'apexcharts/features/legend';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { escapeHtml } from './escape';\nimport { useChartTheme } from './theme';\nimport { tooltipHtml } from './tooltip';\nimport type { ChartSize } from './types';\n\nexport type BoxPlotChartOrientation = 'vertical' | 'horizontal';\n\n/** One box, the five-number summary of a distribution. */\nexport type BoxPlotSummary = [min: number, q1: number, median: number, q3: number, max: number];\n\nexport type BoxPlotChartProps = ChartSize & {\n /** One summary per category, in the order of `categories`. */\n series: { name: string; data: BoxPlotSummary[] }[];\n categories: string[];\n /** `vertical` (default) draws boxes upward; `horizontal` draws them rightward. */\n orientation?: BoxPlotChartOrientation;\n /** Override the default Cosmos palette, one color per series. */\n colors?: string[];\n /** Format the value axis labels and the tooltip values. */\n formatValue?: (value: number) => string;\n /** Show the legend (auto-true when 2+ series). */\n showLegend?: boolean;\n};\n\n// Top to bottom, the way a vertical box reads.\nconst ROWS = [\n ['Max', 4],\n ['Q3', 3],\n ['Median', 2],\n ['Q1', 1],\n ['Min', 0],\n] as const;\n\n/** Distributions per category (min, quartiles, median, max), e.g. response times per service. */\nexport const BoxPlotChart = ({\n series,\n categories,\n orientation = 'vertical',\n colors,\n formatValue,\n showLegend,\n height = 320,\n width = '100%',\n}: BoxPlotChartProps) => {\n const { grid, axisLabels, palette } = useChartTheme();\n const horizontal = orientation === 'horizontal';\n const seriesColors = colors ?? palette;\n const valueFormatter = formatValue ?? ((v: number) => String(v));\n\n // One labels object per axis: ApexCharts writes formatters onto them.\n // Axis labels are SVG text and stay unescaped.\n const categoryLabels = () => ({ ...axisLabels });\n const valueLabels = () => ({\n ...axisLabels,\n formatter: (value: string | number) => valueFormatter(Number(value)),\n });\n\n const options: ApexOptions = {\n chart: {\n type: 'boxPlot',\n toolbar: { show: false },\n zoom: { enabled: false },\n fontFamily: 'inherit',\n },\n colors: seriesColors,\n plotOptions: {\n bar: { horizontal, columnWidth: '50%', barHeight: '50%' },\n // Both halves take the series color: a translucent fill, and an outline,\n // median and whiskers drawn in the full color (ApexCharts' defaults are\n // fixed colors, with a near-black stroke lost on the dark themes).\n boxPlot: { colors: { upper: seriesColors, lower: seriesColors } },\n },\n fill: { opacity: 0.35 },\n stroke: { width: 1.5, colors: seriesColors },\n grid,\n xaxis: {\n labels: horizontal ? valueLabels() : categoryLabels(),\n axisBorder: { show: false },\n axisTicks: { show: false },\n // The x-axis tooltip is HTML and repeats the tooltip title.\n tooltip: { enabled: false },\n },\n yaxis: { labels: horizontal ? categoryLabels() : valueLabels() },\n // Horizontal, the value labels sit side by side and run into each other\n // on a phone: keep three of them.\n responsive: horizontal ? [{ breakpoint: 640, options: { xaxis: { tickAmount: 2 } } }] : [],\n legend: {\n show: showLegend ?? series.length > 1,\n position: 'top',\n horizontalAlign: 'right',\n labels: { colors: axisLabels.style.colors },\n markers: { size: 5 },\n formatter: (name) => escapeHtml(name),\n },\n // ApexCharts' own box plot tooltip prints the values raw. This one is\n // HTML too: tooltipHtml escapes the category, the series name and values.\n tooltip: {\n theme: 'dark',\n custom: ({ seriesIndex, dataPointIndex }) => {\n const { name, data } = series[seriesIndex];\n const summary = data[dataPointIndex];\n return tooltipHtml({\n title: categories[dataPointIndex],\n series:\n series.length > 1\n ? { name, color: seriesColors[seriesIndex % seriesColors.length] }\n : undefined,\n rows: ROWS.map(([label, index]) => [label, valueFormatter(summary[index])]),\n });\n },\n },\n };\n\n const chartSeries = series.map(({ name, data }) => ({\n name,\n data: data.map((y, index) => ({ x: categories[index], y })),\n }));\n\n return (\n <ReactApexChart\n type=\"boxPlot\"\n options={options}\n series={chartSeries}\n height={height}\n width={width}\n />\n );\n};\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/rangeBar';\nimport 'apexcharts/features/legend';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { escapeHtml } from './escape';\nimport { useChartTheme } from './theme';\nimport { tooltipHtml } from './tooltip';\nimport type { ChartSize } from './types';\n\nexport type RangeBarPoint = {\n /** Row label: the service, rack or host the range belongs to. */\n x: string;\n /** Start and end, as timestamps in milliseconds. */\n y: [number, number];\n};\n\nexport type RangeBarChartProps = ChartSize & {\n /** One series per kind of range (maintenance, deploy, incident…), drawn on a datetime axis. */\n series: { name: string; data: RangeBarPoint[] }[];\n /** Draw every series of a row on one lane, instead of one lane per series. */\n groupRows?: boolean;\n /** Override the default Cosmos palette. */\n colors?: string[];\n /** Format the start and end times in the tooltip. Default: `14 Oct, 02:00`, in UTC like the axis. */\n formatDate?: (timestamp: number) => string;\n /** Show the legend (auto-true when 2+ series). */\n showLegend?: boolean;\n};\n\n// The axis labels are UTC (`datetimeUTC`), so the default tooltip is too.\nconst UTC_DATE_TIME = new Intl.DateTimeFormat('en-GB', {\n day: '2-digit',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n hourCycle: 'h23',\n timeZone: 'UTC',\n});\n\nconst defaultFormatDate = (timestamp: number) => UTC_DATE_TIME.format(timestamp);\n\nexport const RangeBarChart = ({\n series,\n groupRows = false,\n colors,\n formatDate = defaultFormatDate,\n showLegend,\n height = 320,\n width = '100%',\n}: RangeBarChartProps) => {\n const { grid, axisLabels, palette } = useChartTheme();\n const seriesColors = colors ?? palette;\n const legendVisible = showLegend ?? series.length > 1;\n const lanes = groupRows ? 1 : series.length;\n\n // ApexCharts builds the range bar tooltip itself and writes it with\n // innerHTML, so this one replaces it. tooltipHtml escapes the row, the\n // series name and the dates.\n const tooltip = ({\n seriesIndex,\n dataPointIndex,\n }: {\n seriesIndex: number;\n dataPointIndex: number;\n }) => {\n const s = series[seriesIndex];\n const point = s?.data[dataPointIndex];\n if (!point) return '';\n const [start, end] = point.y;\n return tooltipHtml({\n title: point.x,\n series: { name: s.name, color: seriesColors[seriesIndex % seriesColors.length] },\n rows: [\n ['Start', formatDate(start)],\n ['End', formatDate(end)],\n ],\n });\n };\n\n const options: ApexOptions = {\n chart: {\n type: 'rangeBar',\n toolbar: { show: false },\n zoom: { enabled: false },\n fontFamily: 'inherit',\n },\n colors: seriesColors,\n dataLabels: { enabled: false },\n plotOptions: {\n bar: {\n horizontal: true,\n // Without groupRows each series gets its own lane in the row: give\n // the bars more of their (thinner) lane.\n barHeight: lanes > 1 ? '80%' : '60%',\n borderRadius: 3,\n borderRadiusApplication: 'around',\n rangeBarGroupRows: groupRows,\n },\n },\n // Time runs left to right: vertical grid lines, plus a line between rows.\n grid: { ...grid, xaxis: { lines: { show: true } }, yaxis: { lines: { show: true } } },\n // One labels object per axis: ApexCharts mutates them.\n xaxis: {\n type: 'datetime',\n labels: { ...axisLabels, datetimeUTC: true },\n axisBorder: { show: false },\n axisTicks: { show: false },\n },\n yaxis: { labels: { ...axisLabels } },\n legend: {\n show: legendVisible,\n position: 'top',\n horizontalAlign: 'right',\n labels: { colors: axisLabels.style.colors },\n markers: { size: 5 },\n formatter: (name) => escapeHtml(name),\n },\n tooltip: { theme: 'dark', custom: tooltip },\n fill: { opacity: 1 },\n };\n\n return (\n <ReactApexChart\n type=\"rangeBar\"\n options={options}\n series={series}\n height={height}\n width={width}\n />\n );\n};\n","import type { ApexOptions } from 'apexcharts';\nimport 'apexcharts/line';\nimport 'apexcharts/bar';\nimport 'apexcharts/features/legend';\nimport ReactApexChart from 'react-apexcharts/core';\nimport { escapeHtml } from './escape';\nimport { useChartTheme } from './theme';\nimport type { ChartSize } from './types';\n\nexport type MixedChartAxis = 'left' | 'right';\n\nexport type MixedChartSeries = {\n name: string;\n /** `column` draws bars, `line` draws a line over them. */\n type: 'line' | 'column';\n data: number[];\n /** The y axis the series is read on. Any `right` series adds a second axis. Default `left`. */\n axis?: MixedChartAxis;\n};\n\nexport type MixedChartProps = ChartSize & {\n /** Lines and columns on one category axis. Names must be unique: each y axis finds its series by name. */\n series: MixedChartSeries[];\n categories: (string | number)[];\n /** Override the default Cosmos palette. */\n colors?: string[];\n /** Format the left axis labels and the tooltip values of its series. */\n formatValue?: (value: number) => string;\n /** Format the right axis labels and the tooltip values of its series. */\n formatRightValue?: (value: number) => string;\n /** Show the legend (auto-true when 2+ series). */\n showLegend?: boolean;\n};\n\nconst SIDES: MixedChartAxis[] = ['left', 'right'];\nconst axisOf = (s: MixedChartSeries): MixedChartAxis => s.axis ?? 'left';\n\nexport const MixedChart = ({\n series,\n categories,\n colors,\n formatValue,\n formatRightValue,\n showLegend,\n height = 320,\n width = '100%',\n}: MixedChartProps) => {\n const { grid, axisLabels, palette } = useChartTheme();\n const legendVisible = showLegend ?? series.length > 1;\n const formatters = { left: formatValue, right: formatRightValue };\n\n const usedSides = SIDES.filter((side) => series.some((s) => axisOf(s) === side));\n const sides = usedSides.length > 0 ? usedSides : SIDES.slice(0, 1);\n // One labels object per axis: ApexCharts mutates them. With two axes, each\n // one lists its series by name; a single axis reads every series.\n const yaxis: ApexOptions['yaxis'] = sides.map((side) => ({\n seriesName:\n sides.length > 1 ? series.filter((s) => axisOf(s) === side).map((s) => s.name) : undefined,\n opposite: side === 'right',\n labels: { ...axisLabels, formatter: formatters[side] },\n }));\n\n const options: ApexOptions = {\n chart: {\n type: 'line',\n toolbar: { show: false },\n zoom: { enabled: false },\n fontFamily: 'inherit',\n },\n colors: colors ?? palette,\n dataLabels: { enabled: false },\n // Lines only: columns have no stroke. monotoneCubic stays smooth without\n // overshooting the samples, so a latency line never dips below its data.\n stroke: { width: series.map((s) => (s.type === 'line' ? 3 : 0)), curve: 'monotoneCubic' },\n plotOptions: {\n bar: { columnWidth: '55%', borderRadius: 4, borderRadiusApplication: 'end' },\n },\n grid,\n xaxis: {\n categories,\n labels: { ...axisLabels },\n axisBorder: { show: false },\n axisTicks: { show: false },\n },\n yaxis,\n legend: {\n show: legendVisible,\n position: 'top',\n horizontalAlign: 'right',\n labels: { colors: axisLabels.style.colors },\n markers: { size: 5 },\n // ApexCharts stacks the series of each y axis in a column of their own:\n // keep one row, like the other charts.\n clusterGroupedSeries: false,\n formatter: (name) => escapeHtml(name),\n },\n // The tooltip is HTML: escape the category, the series names and the\n // values. ApexCharts hands the x formatter the point's position on a line\n // chart's axis, not its category, so read the category back by index.\n tooltip: {\n theme: 'dark',\n x: {\n formatter: (v, opts) =>\n escapeHtml(opts === undefined ? v : (categories[opts.dataPointIndex] ?? v)),\n },\n y: {\n formatter: (v, opts) => {\n const s = opts && series[opts.seriesIndex];\n const format = (s && formatters[axisOf(s)]) ?? String;\n return escapeHtml(format(Number(v)));\n },\n title: { formatter: (name) => `${escapeHtml(name)}: ` },\n },\n },\n fill: { opacity: 1 },\n };\n\n return (\n <ReactApexChart type=\"line\" options={options} series={series} height={height} width={width} />\n );\n};\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sckyzo/cosmos-charts",
3
- "version": "0.0.2",
4
- "description": "React chart components for the Cosmos design system — themeable ApexCharts 5 wrappers (bar, line, area, donut, radial gauges, sparkline, treemap, realtime) with light/dark support.",
3
+ "version": "0.2.0",
4
+ "description": "React chart components for the Cosmos design system — themeable ApexCharts wrappers (bar, line, area, donut, radial gauges, sparkline, treemap, realtime, heatmap, radar, scatter, bubble, box plot, range bar, mixed) with light/dark support.",
5
5
  "license": "MIT",
6
6
  "author": "SckyzO",
7
7
  "homepage": "https://github.com/SckyzO/cosmos/tree/main/packages/charts",
@@ -42,20 +42,19 @@
42
42
  "react-dom": "^19.0.0"
43
43
  },
44
44
  "dependencies": {
45
- "apexcharts": "^5.12.0",
46
- "clsx": "^2.1.1",
47
- "react-apexcharts": "^2.1.0"
45
+ "apexcharts": "^8.3.1",
46
+ "react-apexcharts": "^2.1.1"
48
47
  },
49
48
  "devDependencies": {
50
- "@storybook/react-vite": "^10.4.0",
51
- "@types/react": "^19.2.15",
52
- "@types/react-dom": "^19.2.3",
53
- "react": "^19.2.6",
54
- "react-dom": "^19.2.6",
55
- "storybook": "^10.4.0",
49
+ "@storybook/react-vite": "^10.6.3",
50
+ "@types/react": "^19.3.0",
51
+ "@types/react-dom": "^19.3.0",
52
+ "react": "^19.3.1",
53
+ "react-dom": "^19.3.1",
54
+ "storybook": "^10.6.3",
56
55
  "tsup": "^8.5.1",
57
56
  "typescript": "^6.0.3",
58
- "vitest": "^4.1.7"
57
+ "vitest": "^4.1.12"
59
58
  },
60
59
  "publishConfig": {
61
60
  "access": "public"