@andreagiugni/tailwind-dashboard-ui 1.0.13 → 1.0.14
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/{chunk-M52ZCIP3.js → chunk-OXOGLCGX.js} +26 -2
- package/dist/chunk-OXOGLCGX.js.map +1 -0
- package/dist/{chunk-RWM5MGRP.cjs → chunk-WIBFUDZM.cjs} +26 -2
- package/dist/chunk-WIBFUDZM.cjs.map +1 -0
- package/dist/components/Charts/BarChart.cjs +2 -2
- package/dist/components/Charts/BarChart.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-M52ZCIP3.js.map +0 -1
- package/dist/chunk-RWM5MGRP.cjs.map +0 -1
|
@@ -8,6 +8,18 @@ var defaultOptions = {
|
|
|
8
8
|
fontFamily: "Outfit, sans-serif",
|
|
9
9
|
type: "bar",
|
|
10
10
|
height: 180,
|
|
11
|
+
animations: {
|
|
12
|
+
enabled: true,
|
|
13
|
+
speed: 200,
|
|
14
|
+
animateGradually: {
|
|
15
|
+
enabled: false,
|
|
16
|
+
delay: 0
|
|
17
|
+
},
|
|
18
|
+
dynamicAnimation: {
|
|
19
|
+
enabled: true,
|
|
20
|
+
speed: 175
|
|
21
|
+
}
|
|
22
|
+
},
|
|
11
23
|
toolbar: {
|
|
12
24
|
show: false
|
|
13
25
|
}
|
|
@@ -339,6 +351,18 @@ var BarChart = ({
|
|
|
339
351
|
chart: {
|
|
340
352
|
...defaultOptions.chart,
|
|
341
353
|
...options?.chart,
|
|
354
|
+
animations: {
|
|
355
|
+
...defaultOptions.chart?.animations,
|
|
356
|
+
...options?.chart?.animations,
|
|
357
|
+
animateGradually: {
|
|
358
|
+
...defaultOptions.chart?.animations?.animateGradually,
|
|
359
|
+
...options?.chart?.animations?.animateGradually
|
|
360
|
+
},
|
|
361
|
+
dynamicAnimation: {
|
|
362
|
+
...defaultOptions.chart?.animations?.dynamicAnimation,
|
|
363
|
+
...options?.chart?.animations?.dynamicAnimation
|
|
364
|
+
}
|
|
365
|
+
},
|
|
342
366
|
height: height ?? options?.chart?.height ?? defaultOptions.chart?.height
|
|
343
367
|
},
|
|
344
368
|
plotOptions: {
|
|
@@ -395,5 +419,5 @@ var BarChart = ({
|
|
|
395
419
|
};
|
|
396
420
|
|
|
397
421
|
export { BarChart };
|
|
398
|
-
//# sourceMappingURL=chunk-
|
|
399
|
-
//# sourceMappingURL=chunk-
|
|
422
|
+
//# sourceMappingURL=chunk-OXOGLCGX.js.map
|
|
423
|
+
//# sourceMappingURL=chunk-OXOGLCGX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Charts/BarChart.tsx"],"names":[],"mappings":"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","file":"chunk-OXOGLCGX.js","sourcesContent":["\"use client\";\nimport React from \"react\";\nimport type { ApexOptions } from \"apexcharts\";\n\ntype ReactApexChartProps = {\n options: ApexOptions;\n series: ApexAxisChartSeries;\n type: \"bar\" | \"area\";\n height: number;\n};\ntype ReactApexChartComponent = React.ComponentType<ReactApexChartProps>;\n\nexport interface BarChartProps {\n series?: ApexAxisChartSeries;\n categories?: string[];\n colors?: string[];\n height?: number;\n horizontal?: boolean;\n showBarValues?: boolean;\n showBarPercentages?: boolean;\n minBarPercentage?: number;\n percentageMode?: \"total\" | \"category\";\n barValueFormatter?: (value: number, context: BarChartLabelContext) => string;\n barPercentageFormatter?: (\n percentage: number,\n value: number,\n context: BarChartLabelContext\n ) => string;\n options?: ApexOptions;\n}\n\nexport interface BarChartLabelContext {\n seriesIndex: number;\n dataPointIndex: number;\n seriesName?: string;\n category?: string;\n total: number;\n}\n\nconst defaultOptions: ApexOptions = {\n colors: [\"#465fff\"],\n chart: {\n fontFamily: \"Outfit, sans-serif\",\n type: \"bar\",\n height: 180,\n animations: {\n enabled: true,\n speed: 200,\n animateGradually: {\n enabled: false,\n delay: 0,\n },\n dynamicAnimation: {\n enabled: true,\n speed: 175,\n },\n },\n toolbar: {\n show: false,\n },\n },\n plotOptions: {\n bar: {\n horizontal: false,\n columnWidth: \"39%\",\n borderRadius: 5,\n borderRadiusApplication: \"end\",\n },\n },\n dataLabels: {\n enabled: false,\n },\n // No transparent stroke around the columns: it shrinks and shifts the\n // painted bar inside its allocated slot, so the hover highlight band\n // (crosshairs width \"barWidth\" = the allocated width) would render wider\n // than — and offset from — the visible bar.\n stroke: {\n show: false,\n },\n xaxis: {\n categories: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n axisBorder: {\n show: false,\n },\n axisTicks: {\n show: false,\n },\n // Match the hover highlight band to the bar width (the default band spans\n // the whole category slot, looking ~3x wider than the 39% columns).\n crosshairs: {\n width: \"barWidth\",\n },\n },\n legend: {\n show: true,\n position: \"top\",\n horizontalAlign: \"left\",\n fontFamily: \"Outfit\",\n // Rounded, border-less swatches that echo the column styling. ApexCharts\n // sets the marker span's `color` to the series color, so `currentColor`\n // picks it up; `customHTML` lets us round the corners (the built-in shapes\n // are sharp SVG paths that CSS border-radius can't touch).\n markers: {\n size: 7,\n strokeWidth: 0,\n customHTML: () =>\n '<span style=\"display:block;height:100%;width:100%;border-radius:3px;background:currentColor\"></span>',\n },\n },\n yaxis: {\n title: {\n text: undefined,\n },\n },\n grid: {\n yaxis: {\n lines: {\n show: true,\n },\n },\n },\n fill: {\n opacity: 1,\n },\n tooltip: {\n x: {\n show: false,\n },\n y: {\n formatter: (val: number) => `${val}`,\n },\n },\n};\n\nconst defaultSeries: ApexAxisChartSeries = [\n {\n name: \"Sales\",\n data: [168, 385, 201, 298, 187, 195, 291, 110, 215, 390, 280, 112],\n },\n];\n\nconst horizontalGridOptions: ApexOptions[\"grid\"] = {\n borderColor: \"transparent\",\n xaxis: {\n lines: {\n show: false,\n },\n },\n yaxis: {\n lines: {\n show: false,\n },\n },\n};\n\nfunction mergeGridOptions(\n base: ApexOptions[\"grid\"],\n override: ApexOptions[\"grid\"]\n): ApexOptions[\"grid\"] {\n return {\n ...base,\n ...override,\n xaxis: {\n ...base?.xaxis,\n ...override?.xaxis,\n lines: {\n ...base?.xaxis?.lines,\n ...override?.xaxis?.lines,\n },\n },\n yaxis: {\n ...base?.yaxis,\n ...override?.yaxis,\n lines: {\n ...base?.yaxis?.lines,\n ...override?.yaxis?.lines,\n },\n },\n };\n}\n\nfunction getDataValue(value: unknown): number | null {\n if (typeof value === \"number\") return value;\n if (Array.isArray(value) && typeof value[1] === \"number\") return value[1];\n if (value && typeof value === \"object\" && \"y\" in value) {\n const y = (value as { y: unknown }).y;\n return typeof y === \"number\" ? y : null;\n }\n return null;\n}\n\nfunction getValueMatrix(series: ApexAxisChartSeries): number[][] {\n return series.map((item) => item.data.map((value) => getDataValue(value) ?? 0));\n}\n\nfunction getSeriesTotal(matrix: number[][]): number {\n return matrix.reduce(\n (seriesTotal, data) => seriesTotal + data.reduce((total, value) => total + value, 0),\n 0\n );\n}\n\nfunction getCategoryTotal(matrix: number[][], dataPointIndex: number): number {\n return matrix.reduce((total, data) => total + (data[dataPointIndex] ?? 0), 0);\n}\n\nfunction getMaxValue(matrix: number[][]): number {\n return matrix.reduce(\n (max, data) => Math.max(max, ...data.map((value) => Math.max(0, value))),\n 0\n );\n}\n\nfunction setDataValue(value: unknown, nextValue: number): unknown {\n if (typeof value === \"number\") return nextValue;\n if (Array.isArray(value)) return [value[0], nextValue, ...value.slice(2)];\n if (value && typeof value === \"object\" && \"y\" in value) {\n return { ...value, y: nextValue };\n }\n return value;\n}\n\nfunction applyMinimumBarValue(\n series: ApexAxisChartSeries,\n minimumValue: number\n): ApexAxisChartSeries {\n return series.map((item) => ({\n ...item,\n data: item.data.map((value) =>\n getDataValue(value) === 0 ? setDataValue(value, minimumValue) : value\n ) as typeof item.data,\n }));\n}\n\nfunction mergeDataLabels(\n base: ApexOptions[\"dataLabels\"],\n override: ApexOptions[\"dataLabels\"],\n generated: ApexOptions[\"dataLabels\"]\n): ApexOptions[\"dataLabels\"] {\n return {\n ...base,\n ...override,\n ...generated,\n style: {\n ...base?.style,\n ...override?.style,\n ...generated?.style,\n },\n background: {\n ...base?.background,\n ...override?.background,\n ...generated?.background,\n },\n };\n}\n\nfunction mergeTooltipOptions(\n base: ApexOptions[\"tooltip\"],\n override: ApexOptions[\"tooltip\"],\n generated: ApexOptions[\"tooltip\"]\n): ApexOptions[\"tooltip\"] {\n const baseY = Array.isArray(base?.y) ? undefined : base?.y;\n const overrideY = Array.isArray(override?.y) ? undefined : override?.y;\n const generatedY = Array.isArray(generated?.y) ? undefined : generated?.y;\n\n return {\n ...base,\n ...override,\n ...generated,\n x: {\n ...base?.x,\n ...override?.x,\n ...generated?.x,\n },\n y: {\n ...baseY,\n ...overrideY,\n ...generatedY,\n },\n };\n}\n\nfunction mergeAnnotations(\n override: ApexOptions[\"annotations\"],\n generated: ApexOptions[\"annotations\"]\n): ApexOptions[\"annotations\"] | undefined {\n if (!override && !generated) return undefined;\n return {\n ...override,\n ...generated,\n points: [...(override?.points ?? []), ...(generated?.points ?? [])],\n };\n}\n\nexport const BarChart: React.FC<BarChartProps> = ({\n series,\n categories,\n colors,\n height,\n horizontal,\n showBarValues = false,\n showBarPercentages = false,\n minBarPercentage = 2,\n percentageMode = \"total\",\n barValueFormatter,\n barPercentageFormatter,\n options,\n}) => {\n const [Chart, setChart] = React.useState<ReactApexChartComponent | null>(null);\n const effectiveSeries = series ?? defaultSeries;\n const effectiveCategories =\n categories ?? (options?.xaxis?.categories as string[] | undefined);\n const valueMatrix = getValueMatrix(effectiveSeries);\n const seriesTotal = getSeriesTotal(valueMatrix);\n const isHorizontal = horizontal ?? (options?.plotOptions?.bar?.horizontal === true);\n const hasGeneratedLabels = showBarValues || showBarPercentages;\n const maxValue = getMaxValue(valueMatrix);\n const minimumValueScale = maxValue > 0 ? maxValue : 100;\n const minimumBarValue = minimumValueScale * (Math.max(0, minBarPercentage) / 100);\n const hasMinimumBarValue = isHorizontal && minimumBarValue > 0;\n const chartSeries = hasMinimumBarValue\n ? applyMinimumBarValue(effectiveSeries, minimumBarValue)\n : effectiveSeries;\n const chartValueMatrix = getValueMatrix(chartSeries);\n const baseGridOptions = isHorizontal\n ? mergeGridOptions(defaultOptions.grid, horizontalGridOptions)\n : defaultOptions.grid;\n const getLabelContext = (\n seriesIndex: number,\n dataPointIndex: number,\n total: number\n ): BarChartLabelContext => ({\n seriesIndex,\n dataPointIndex,\n seriesName: effectiveSeries[seriesIndex]?.name,\n category: effectiveCategories?.[dataPointIndex],\n total,\n });\n const generatedDataLabels: ApexOptions[\"dataLabels\"] | undefined = hasGeneratedLabels\n ? {\n enabled: true,\n textAnchor: \"middle\",\n offsetX: 0,\n offsetY: 0,\n background: {\n enabled: false,\n },\n style: {\n fontSize: \"12px\",\n fontWeight: 600,\n colors: [showBarPercentages ? \"#ffffff\" : \"#344054\"],\n },\n formatter: (_value, opts) => {\n const seriesIndex = opts?.seriesIndex ?? 0;\n const dataPointIndex = opts?.dataPointIndex ?? 0;\n const numericValue = valueMatrix[seriesIndex]?.[dataPointIndex] ?? 0;\n const total =\n percentageMode === \"category\"\n ? getCategoryTotal(valueMatrix, dataPointIndex)\n : seriesTotal;\n const context = getLabelContext(seriesIndex, dataPointIndex, total);\n\n if (showBarPercentages) {\n const percentage = total > 0 ? (numericValue / total) * 100 : 0;\n return barPercentageFormatter\n ? barPercentageFormatter(percentage, numericValue, context)\n : `${Math.round(percentage)}%`;\n }\n\n return barValueFormatter\n ? barValueFormatter(numericValue, context)\n : `${numericValue}`;\n },\n }\n : undefined;\n const generatedAnnotations: ApexOptions[\"annotations\"] | undefined =\n isHorizontal && showBarValues\n ? {\n points: effectiveSeries.flatMap((item, seriesIndex) =>\n item.data.map((dataPoint, dataPointIndex) => {\n const value = getDataValue(dataPoint) ?? 0;\n const chartValue = chartValueMatrix[seriesIndex]?.[dataPointIndex] ?? value;\n const total =\n percentageMode === \"category\"\n ? getCategoryTotal(valueMatrix, dataPointIndex)\n : seriesTotal;\n const context = getLabelContext(seriesIndex, dataPointIndex, total);\n return {\n x: chartValue,\n y: dataPointIndex,\n seriesIndex,\n marker: {\n size: 0,\n },\n label: {\n text: barValueFormatter ? barValueFormatter(value, context) : `${value}`,\n borderWidth: 0,\n offsetY: -12,\n style: {\n background: \"transparent\",\n color: \"#344054\",\n fontSize: \"12px\",\n fontWeight: 600,\n padding: {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n },\n },\n },\n };\n })\n ),\n }\n : undefined;\n const generatedTooltip: ApexOptions[\"tooltip\"] | undefined = hasMinimumBarValue\n ? {\n y: {\n formatter: (_value, opts) => {\n const originalValue =\n valueMatrix[opts?.seriesIndex ?? 0]?.[opts?.dataPointIndex ?? 0] ?? 0;\n const overrideY = Array.isArray(options?.tooltip?.y) ? undefined : options?.tooltip?.y;\n const defaultY = Array.isArray(defaultOptions.tooltip?.y)\n ? undefined\n : defaultOptions.tooltip?.y;\n const formatter = overrideY?.formatter ?? defaultY?.formatter;\n return formatter ? formatter(originalValue, opts) : `${originalValue}`;\n },\n },\n }\n : undefined;\n const mergedOptions: ApexOptions = {\n ...defaultOptions,\n ...options,\n colors: colors ?? options?.colors ?? defaultOptions.colors,\n chart: {\n ...defaultOptions.chart,\n ...options?.chart,\n animations: {\n ...defaultOptions.chart?.animations,\n ...options?.chart?.animations,\n animateGradually: {\n ...defaultOptions.chart?.animations?.animateGradually,\n ...options?.chart?.animations?.animateGradually,\n },\n dynamicAnimation: {\n ...defaultOptions.chart?.animations?.dynamicAnimation,\n ...options?.chart?.animations?.dynamicAnimation,\n },\n },\n height: height ?? options?.chart?.height ?? defaultOptions.chart?.height,\n },\n plotOptions: {\n ...defaultOptions.plotOptions,\n ...options?.plotOptions,\n bar: {\n ...defaultOptions.plotOptions?.bar,\n ...options?.plotOptions?.bar,\n horizontal: isHorizontal,\n ...(hasGeneratedLabels && {\n dataLabels: {\n ...options?.plotOptions?.bar?.dataLabels,\n position: showBarPercentages ? \"center\" : \"top\",\n },\n }),\n },\n },\n dataLabels: mergeDataLabels(\n defaultOptions.dataLabels,\n options?.dataLabels,\n generatedDataLabels\n ),\n xaxis: {\n ...defaultOptions.xaxis,\n ...options?.xaxis,\n categories:\n categories ??\n options?.xaxis?.categories ??\n defaultOptions.xaxis?.categories,\n ...(hasMinimumBarValue &&\n options?.xaxis?.max === undefined && {\n max: minimumValueScale,\n }),\n },\n grid: mergeGridOptions(baseGridOptions, options?.grid),\n annotations: mergeAnnotations(options?.annotations, generatedAnnotations),\n tooltip: mergeTooltipOptions(defaultOptions.tooltip, options?.tooltip, generatedTooltip),\n };\n\n React.useEffect(() => {\n let isMounted = true;\n\n import(\"react-apexcharts\").then((module) => {\n if (isMounted) setChart(() => module.default as ReactApexChartComponent);\n });\n\n return () => {\n isMounted = false;\n };\n }, []);\n\n if (!Chart) return null;\n\n return (\n <Chart\n options={mergedOptions}\n series={chartSeries}\n type=\"bar\"\n height={height ?? 180}\n />\n );\n};\n"]}
|
|
@@ -14,6 +14,18 @@ var defaultOptions = {
|
|
|
14
14
|
fontFamily: "Outfit, sans-serif",
|
|
15
15
|
type: "bar",
|
|
16
16
|
height: 180,
|
|
17
|
+
animations: {
|
|
18
|
+
enabled: true,
|
|
19
|
+
speed: 200,
|
|
20
|
+
animateGradually: {
|
|
21
|
+
enabled: false,
|
|
22
|
+
delay: 0
|
|
23
|
+
},
|
|
24
|
+
dynamicAnimation: {
|
|
25
|
+
enabled: true,
|
|
26
|
+
speed: 175
|
|
27
|
+
}
|
|
28
|
+
},
|
|
17
29
|
toolbar: {
|
|
18
30
|
show: false
|
|
19
31
|
}
|
|
@@ -345,6 +357,18 @@ var BarChart = ({
|
|
|
345
357
|
chart: {
|
|
346
358
|
...defaultOptions.chart,
|
|
347
359
|
...options?.chart,
|
|
360
|
+
animations: {
|
|
361
|
+
...defaultOptions.chart?.animations,
|
|
362
|
+
...options?.chart?.animations,
|
|
363
|
+
animateGradually: {
|
|
364
|
+
...defaultOptions.chart?.animations?.animateGradually,
|
|
365
|
+
...options?.chart?.animations?.animateGradually
|
|
366
|
+
},
|
|
367
|
+
dynamicAnimation: {
|
|
368
|
+
...defaultOptions.chart?.animations?.dynamicAnimation,
|
|
369
|
+
...options?.chart?.animations?.dynamicAnimation
|
|
370
|
+
}
|
|
371
|
+
},
|
|
348
372
|
height: height ?? options?.chart?.height ?? defaultOptions.chart?.height
|
|
349
373
|
},
|
|
350
374
|
plotOptions: {
|
|
@@ -401,5 +425,5 @@ var BarChart = ({
|
|
|
401
425
|
};
|
|
402
426
|
|
|
403
427
|
exports.BarChart = BarChart;
|
|
404
|
-
//# sourceMappingURL=chunk-
|
|
405
|
-
//# sourceMappingURL=chunk-
|
|
428
|
+
//# sourceMappingURL=chunk-WIBFUDZM.cjs.map
|
|
429
|
+
//# sourceMappingURL=chunk-WIBFUDZM.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Charts/BarChart.tsx"],"names":["React","jsx"],"mappings":";;;;;;;;;AAuCA,IAAM,cAAA,GAA8B;AAAA,EAClC,MAAA,EAAQ,CAAC,SAAS,CAAA;AAAA,EAClB,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,oBAAA;AAAA,IACZ,IAAA,EAAM,KAAA;AAAA,IACN,MAAA,EAAQ,GAAA;AAAA,IACR,UAAA,EAAY;AAAA,MACV,OAAA,EAAS,IAAA;AAAA,MACT,KAAA,EAAO,GAAA;AAAA,MACP,gBAAA,EAAkB;AAAA,QAChB,OAAA,EAAS,KAAA;AAAA,QACT,KAAA,EAAO;AAAA,OACT;AAAA,MACA,gBAAA,EAAkB;AAAA,QAChB,OAAA,EAAS,IAAA;AAAA,QACT,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,OAAA,EAAS;AAAA,MACP,IAAA,EAAM;AAAA;AACR,GACF;AAAA,EACA,WAAA,EAAa;AAAA,IACX,GAAA,EAAK;AAAA,MACH,UAAA,EAAY,KAAA;AAAA,MACZ,WAAA,EAAa,KAAA;AAAA,MACb,YAAA,EAAc,CAAA;AAAA,MACd,uBAAA,EAAyB;AAAA;AAC3B,GACF;AAAA,EACA,UAAA,EAAY;AAAA,IACV,OAAA,EAAS;AAAA,GACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA,KAAA,EAAO;AAAA,IACL,UAAA,EAAY;AAAA,MACV,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,UAAA,EAAY;AAAA,MACV,IAAA,EAAM;AAAA,KACR;AAAA,IACA,SAAA,EAAW;AAAA,MACT,IAAA,EAAM;AAAA,KACR;AAAA;AAAA;AAAA,IAGA,UAAA,EAAY;AAAA,MACV,KAAA,EAAO;AAAA;AACT,GACF;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,IAAA;AAAA,IACN,QAAA,EAAU,KAAA;AAAA,IACV,eAAA,EAAiB,MAAA;AAAA,IACjB,UAAA,EAAY,QAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKZ,OAAA,EAAS;AAAA,MACP,IAAA,EAAM,CAAA;AAAA,MACN,WAAA,EAAa,CAAA;AAAA,MACb,YAAY,MACV;AAAA;AACJ,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAO;AAAA,MACL,IAAA,EAAM;AAAA;AACR,GACF;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA,QACL,IAAA,EAAM;AAAA;AACR;AACF,GACF;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,CAAA,EAAG;AAAA,MACD,IAAA,EAAM;AAAA,KACR;AAAA,IACA,CAAA,EAAG;AAAA,MACD,SAAA,EAAW,CAAC,GAAA,KAAgB,CAAA,EAAG,GAAG,CAAA;AAAA;AACpC;AAEJ,CAAA;AAEA,IAAM,aAAA,GAAqC;AAAA,EACzC;AAAA,IACE,IAAA,EAAM,OAAA;AAAA,IACN,IAAA,EAAM,CAAC,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,KAAK,GAAG;AAAA;AAErE,CAAA;AAEA,IAAM,qBAAA,GAA6C;AAAA,EACjD,WAAA,EAAa,aAAA;AAAA,EACb,KAAA,EAAO;AAAA,IACL,KAAA,EAAO;AAAA,MACL,IAAA,EAAM;AAAA;AACR,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAO;AAAA,MACL,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAEA,SAAS,gBAAA,CACP,MACA,QAAA,EACqB;AACrB,EAAA,OAAO;AAAA,IACL,GAAG,IAAA;AAAA,IACH,GAAG,QAAA;AAAA,IACH,KAAA,EAAO;AAAA,MACL,GAAG,IAAA,EAAM,KAAA;AAAA,MACT,GAAG,QAAA,EAAU,KAAA;AAAA,MACb,KAAA,EAAO;AAAA,QACL,GAAG,MAAM,KAAA,EAAO,KAAA;AAAA,QAChB,GAAG,UAAU,KAAA,EAAO;AAAA;AACtB,KACF;AAAA,IACA,KAAA,EAAO;AAAA,MACL,GAAG,IAAA,EAAM,KAAA;AAAA,MACT,GAAG,QAAA,EAAU,KAAA;AAAA,MACb,KAAA,EAAO;AAAA,QACL,GAAG,MAAM,KAAA,EAAO,KAAA;AAAA,QAChB,GAAG,UAAU,KAAA,EAAO;AAAA;AACtB;AACF,GACF;AACF;AAEA,SAAS,aAAa,KAAA,EAA+B;AACnD,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AACtC,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,OAAO,KAAA,CAAM,CAAC,CAAA,KAAM,QAAA,EAAU,OAAO,KAAA,CAAM,CAAC,CAAA;AACxE,EAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,KAAA,EAAO;AACtD,IAAA,MAAM,IAAK,KAAA,CAAyB,CAAA;AACpC,IAAA,OAAO,OAAO,CAAA,KAAM,QAAA,GAAW,CAAA,GAAI,IAAA;AAAA,EACrC;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,eAAe,MAAA,EAAyC;AAC/D,EAAA,OAAO,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,CAAC,KAAA,KAAU,YAAA,CAAa,KAAK,CAAA,IAAK,CAAC,CAAC,CAAA;AAChF;AAEA,SAAS,eAAe,MAAA,EAA4B;AAClD,EAAA,OAAO,MAAA,CAAO,MAAA;AAAA,IACZ,CAAC,WAAA,EAAa,IAAA,KAAS,WAAA,GAAc,IAAA,CAAK,MAAA,CAAO,CAAC,KAAA,EAAO,KAAA,KAAU,KAAA,GAAQ,KAAA,EAAO,CAAC,CAAA;AAAA,IACnF;AAAA,GACF;AACF;AAEA,SAAS,gBAAA,CAAiB,QAAoB,cAAA,EAAgC;AAC5E,EAAA,OAAO,MAAA,CAAO,MAAA,CAAO,CAAC,KAAA,EAAO,IAAA,KAAS,SAAS,IAAA,CAAK,cAAc,CAAA,IAAK,CAAA,CAAA,EAAI,CAAC,CAAA;AAC9E;AAEA,SAAS,YAAY,MAAA,EAA4B;AAC/C,EAAA,OAAO,MAAA,CAAO,MAAA;AAAA,IACZ,CAAC,GAAA,EAAK,IAAA,KAAS,IAAA,CAAK,GAAA,CAAI,KAAK,GAAG,IAAA,CAAK,GAAA,CAAI,CAAC,UAAU,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAK,CAAC,CAAC,CAAA;AAAA,IACvE;AAAA,GACF;AACF;AAEA,SAAS,YAAA,CAAa,OAAgB,SAAA,EAA4B;AAChE,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,SAAA;AACtC,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,SAAU,CAAC,KAAA,CAAM,CAAC,CAAA,EAAG,SAAA,EAAW,GAAG,KAAA,CAAM,KAAA,CAAM,CAAC,CAAC,CAAA;AACxE,EAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,KAAA,EAAO;AACtD,IAAA,OAAO,EAAE,GAAG,KAAA,EAAO,CAAA,EAAG,SAAA,EAAU;AAAA,EAClC;AACA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,oBAAA,CACP,QACA,YAAA,EACqB;AACrB,EAAA,OAAO,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,IAC3B,GAAG,IAAA;AAAA,IACH,IAAA,EAAM,KAAK,IAAA,CAAK,GAAA;AAAA,MAAI,CAAC,UACnB,YAAA,CAAa,KAAK,MAAM,CAAA,GAAI,YAAA,CAAa,KAAA,EAAO,YAAY,CAAA,GAAI;AAAA;AAClE,GACF,CAAE,CAAA;AACJ;AAEA,SAAS,eAAA,CACP,IAAA,EACA,QAAA,EACA,SAAA,EAC2B;AAC3B,EAAA,OAAO;AAAA,IACL,GAAG,IAAA;AAAA,IACH,GAAG,QAAA;AAAA,IACH,GAAG,SAAA;AAAA,IACH,KAAA,EAAO;AAAA,MACL,GAAG,IAAA,EAAM,KAAA;AAAA,MACT,GAAG,QAAA,EAAU,KAAA;AAAA,MACb,GAAG,SAAA,EAAW;AAAA,KAChB;AAAA,IACA,UAAA,EAAY;AAAA,MACV,GAAG,IAAA,EAAM,UAAA;AAAA,MACT,GAAG,QAAA,EAAU,UAAA;AAAA,MACb,GAAG,SAAA,EAAW;AAAA;AAChB,GACF;AACF;AAEA,SAAS,mBAAA,CACP,IAAA,EACA,QAAA,EACA,SAAA,EACwB;AACxB,EAAA,MAAM,QAAQ,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAC,CAAA,GAAI,SAAY,IAAA,EAAM,CAAA;AACzD,EAAA,MAAM,YAAY,KAAA,CAAM,OAAA,CAAQ,UAAU,CAAC,CAAA,GAAI,SAAY,QAAA,EAAU,CAAA;AACrE,EAAA,MAAM,aAAa,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAC,CAAA,GAAI,SAAY,SAAA,EAAW,CAAA;AAExE,EAAA,OAAO;AAAA,IACL,GAAG,IAAA;AAAA,IACH,GAAG,QAAA;AAAA,IACH,GAAG,SAAA;AAAA,IACH,CAAA,EAAG;AAAA,MACD,GAAG,IAAA,EAAM,CAAA;AAAA,MACT,GAAG,QAAA,EAAU,CAAA;AAAA,MACb,GAAG,SAAA,EAAW;AAAA,KAChB;AAAA,IACA,CAAA,EAAG;AAAA,MACD,GAAG,KAAA;AAAA,MACH,GAAG,SAAA;AAAA,MACH,GAAG;AAAA;AACL,GACF;AACF;AAEA,SAAS,gBAAA,CACP,UACA,SAAA,EACwC;AACxC,EAAA,IAAI,CAAC,QAAA,IAAY,CAAC,SAAA,EAAW,OAAO,MAAA;AACpC,EAAA,OAAO;AAAA,IACL,GAAG,QAAA;AAAA,IACH,GAAG,SAAA;AAAA,IACH,MAAA,EAAQ,CAAC,GAAI,QAAA,EAAU,MAAA,IAAU,EAAC,EAAI,GAAI,SAAA,EAAW,MAAA,IAAU,EAAG;AAAA,GACpE;AACF;AAEO,IAAM,WAAoC,CAAC;AAAA,EAChD,MAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA,GAAgB,KAAA;AAAA,EAChB,kBAAA,GAAqB,KAAA;AAAA,EACrB,gBAAA,GAAmB,CAAA;AAAA,EACnB,cAAA,GAAiB,OAAA;AAAA,EACjB,iBAAA;AAAA,EACA,sBAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,sBAAA,CAAM,SAAyC,IAAI,CAAA;AAC7E,EAAA,MAAM,kBAAkB,MAAA,IAAU,aAAA;AAClC,EAAA,MAAM,mBAAA,GACJ,UAAA,IAAe,OAAA,EAAS,KAAA,EAAO,UAAA;AACjC,EAAA,MAAM,WAAA,GAAc,eAAe,eAAe,CAAA;AAClD,EAAA,MAAM,WAAA,GAAc,eAAe,WAAW,CAAA;AAC9C,EAAA,MAAM,YAAA,GAAe,UAAA,IAAe,OAAA,EAAS,WAAA,EAAa,KAAK,UAAA,KAAe,IAAA;AAC9E,EAAA,MAAM,qBAAqB,aAAA,IAAiB,kBAAA;AAC5C,EAAA,MAAM,QAAA,GAAW,YAAY,WAAW,CAAA;AACxC,EAAA,MAAM,iBAAA,GAAoB,QAAA,GAAW,CAAA,GAAI,QAAA,GAAW,GAAA;AACpD,EAAA,MAAM,kBAAkB,iBAAA,IAAqB,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,gBAAgB,CAAA,GAAI,GAAA,CAAA;AAC7E,EAAA,MAAM,kBAAA,GAAqB,gBAAgB,eAAA,GAAkB,CAAA;AAC7D,EAAA,MAAM,WAAA,GAAc,kBAAA,GAChB,oBAAA,CAAqB,eAAA,EAAiB,eAAe,CAAA,GACrD,eAAA;AACJ,EAAA,MAAM,gBAAA,GAAmB,eAAe,WAAW,CAAA;AACnD,EAAA,MAAM,kBAAkB,YAAA,GACpB,gBAAA,CAAiB,eAAe,IAAA,EAAM,qBAAqB,IAC3D,cAAA,CAAe,IAAA;AACnB,EAAA,MAAM,eAAA,GAAkB,CACtB,WAAA,EACA,cAAA,EACA,KAAA,MAC0B;AAAA,IAC1B,WAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA,EAAY,eAAA,CAAgB,WAAW,CAAA,EAAG,IAAA;AAAA,IAC1C,QAAA,EAAU,sBAAsB,cAAc,CAAA;AAAA,IAC9C;AAAA,GACF,CAAA;AACA,EAAA,MAAM,sBAA6D,kBAAA,GAC/D;AAAA,IACE,OAAA,EAAS,IAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,OAAA,EAAS,CAAA;AAAA,IACT,OAAA,EAAS,CAAA;AAAA,IACT,UAAA,EAAY;AAAA,MACV,OAAA,EAAS;AAAA,KACX;AAAA,IACA,KAAA,EAAO;AAAA,MACL,QAAA,EAAU,MAAA;AAAA,MACV,UAAA,EAAY,GAAA;AAAA,MACZ,MAAA,EAAQ,CAAC,kBAAA,GAAqB,SAAA,GAAY,SAAS;AAAA,KACrD;AAAA,IACA,SAAA,EAAW,CAAC,MAAA,EAAQ,IAAA,KAAS;AAC3B,MAAA,MAAM,WAAA,GAAc,MAAM,WAAA,IAAe,CAAA;AACzC,MAAA,MAAM,cAAA,GAAiB,MAAM,cAAA,IAAkB,CAAA;AAC/C,MAAA,MAAM,YAAA,GAAe,WAAA,CAAY,WAAW,CAAA,GAAI,cAAc,CAAA,IAAK,CAAA;AACnE,MAAA,MAAM,QACJ,cAAA,KAAmB,UAAA,GACf,gBAAA,CAAiB,WAAA,EAAa,cAAc,CAAA,GAC5C,WAAA;AACN,MAAA,MAAM,OAAA,GAAU,eAAA,CAAgB,WAAA,EAAa,cAAA,EAAgB,KAAK,CAAA;AAElE,MAAA,IAAI,kBAAA,EAAoB;AACtB,QAAA,MAAM,UAAA,GAAa,KAAA,GAAQ,CAAA,GAAK,YAAA,GAAe,QAAS,GAAA,GAAM,CAAA;AAC9D,QAAA,OAAO,sBAAA,GACH,sBAAA,CAAuB,UAAA,EAAY,YAAA,EAAc,OAAO,IACxD,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,UAAU,CAAC,CAAA,CAAA,CAAA;AAAA,MAC/B;AAEA,MAAA,OAAO,oBACH,iBAAA,CAAkB,YAAA,EAAc,OAAO,CAAA,GACvC,GAAG,YAAY,CAAA,CAAA;AAAA,IACrB;AAAA,GACF,GACA,MAAA;AACJ,EAAA,MAAM,oBAAA,GACJ,gBAAgB,aAAA,GACZ;AAAA,IACE,QAAQ,eAAA,CAAgB,OAAA;AAAA,MAAQ,CAAC,MAAM,WAAA,KACrC,IAAA,CAAK,KAAK,GAAA,CAAI,CAAC,WAAW,cAAA,KAAmB;AAC3C,QAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,SAAS,CAAA,IAAK,CAAA;AACzC,QAAA,MAAM,UAAA,GAAa,gBAAA,CAAiB,WAAW,CAAA,GAAI,cAAc,CAAA,IAAK,KAAA;AACtE,QAAA,MAAM,QACJ,cAAA,KAAmB,UAAA,GACf,gBAAA,CAAiB,WAAA,EAAa,cAAc,CAAA,GAC5C,WAAA;AACN,QAAA,MAAM,OAAA,GAAU,eAAA,CAAgB,WAAA,EAAa,cAAA,EAAgB,KAAK,CAAA;AAClE,QAAA,OAAO;AAAA,UACL,CAAA,EAAG,UAAA;AAAA,UACH,CAAA,EAAG,cAAA;AAAA,UACH,WAAA;AAAA,UACA,MAAA,EAAQ;AAAA,YACN,IAAA,EAAM;AAAA,WACR;AAAA,UACA,KAAA,EAAO;AAAA,YACL,MAAM,iBAAA,GAAoB,iBAAA,CAAkB,OAAO,OAAO,CAAA,GAAI,GAAG,KAAK,CAAA,CAAA;AAAA,YACtE,WAAA,EAAa,CAAA;AAAA,YACb,OAAA,EAAS,GAAA;AAAA,YACT,KAAA,EAAO;AAAA,cACL,UAAA,EAAY,aAAA;AAAA,cACZ,KAAA,EAAO,SAAA;AAAA,cACP,QAAA,EAAU,MAAA;AAAA,cACV,UAAA,EAAY,GAAA;AAAA,cACZ,OAAA,EAAS;AAAA,gBACP,IAAA,EAAM,CAAA;AAAA,gBACN,KAAA,EAAO,CAAA;AAAA,gBACP,GAAA,EAAK,CAAA;AAAA,gBACL,MAAA,EAAQ;AAAA;AACV;AACF;AACF,SACF;AAAA,MACF,CAAC;AAAA;AACH,GACF,GACA,MAAA;AACN,EAAA,MAAM,mBAAuD,kBAAA,GACzD;AAAA,IACE,CAAA,EAAG;AAAA,MACD,SAAA,EAAW,CAAC,MAAA,EAAQ,IAAA,KAAS;AAC3B,QAAA,MAAM,aAAA,GACJ,YAAY,IAAA,EAAM,WAAA,IAAe,CAAC,CAAA,GAAI,IAAA,EAAM,cAAA,IAAkB,CAAC,CAAA,IAAK,CAAA;AACtE,QAAA,MAAM,SAAA,GAAY,MAAM,OAAA,CAAQ,OAAA,EAAS,SAAS,CAAC,CAAA,GAAI,MAAA,GAAY,OAAA,EAAS,OAAA,EAAS,CAAA;AACrF,QAAA,MAAM,QAAA,GAAW,MAAM,OAAA,CAAQ,cAAA,CAAe,SAAS,CAAC,CAAA,GACpD,MAAA,GACA,cAAA,CAAe,OAAA,EAAS,CAAA;AAC5B,QAAA,MAAM,SAAA,GAAY,SAAA,EAAW,SAAA,IAAa,QAAA,EAAU,SAAA;AACpD,QAAA,OAAO,YAAY,SAAA,CAAU,aAAA,EAAe,IAAI,CAAA,GAAI,GAAG,aAAa,CAAA,CAAA;AAAA,MACtE;AAAA;AACF,GACF,GACA,MAAA;AACJ,EAAA,MAAM,aAAA,GAA6B;AAAA,IACjC,GAAG,cAAA;AAAA,IACH,GAAG,OAAA;AAAA,IACH,MAAA,EAAQ,MAAA,IAAU,OAAA,EAAS,MAAA,IAAU,cAAA,CAAe,MAAA;AAAA,IACpD,KAAA,EAAO;AAAA,MACL,GAAG,cAAA,CAAe,KAAA;AAAA,MAClB,GAAG,OAAA,EAAS,KAAA;AAAA,MACZ,UAAA,EAAY;AAAA,QACV,GAAG,eAAe,KAAA,EAAO,UAAA;AAAA,QACzB,GAAG,SAAS,KAAA,EAAO,UAAA;AAAA,QACnB,gBAAA,EAAkB;AAAA,UAChB,GAAG,cAAA,CAAe,KAAA,EAAO,UAAA,EAAY,gBAAA;AAAA,UACrC,GAAG,OAAA,EAAS,KAAA,EAAO,UAAA,EAAY;AAAA,SACjC;AAAA,QACA,gBAAA,EAAkB;AAAA,UAChB,GAAG,cAAA,CAAe,KAAA,EAAO,UAAA,EAAY,gBAAA;AAAA,UACrC,GAAG,OAAA,EAAS,KAAA,EAAO,UAAA,EAAY;AAAA;AACjC,OACF;AAAA,MACA,QAAQ,MAAA,IAAU,OAAA,EAAS,KAAA,EAAO,MAAA,IAAU,eAAe,KAAA,EAAO;AAAA,KACpE;AAAA,IACA,WAAA,EAAa;AAAA,MACX,GAAG,cAAA,CAAe,WAAA;AAAA,MAClB,GAAG,OAAA,EAAS,WAAA;AAAA,MACZ,GAAA,EAAK;AAAA,QACH,GAAG,eAAe,WAAA,EAAa,GAAA;AAAA,QAC/B,GAAG,SAAS,WAAA,EAAa,GAAA;AAAA,QACzB,UAAA,EAAY,YAAA;AAAA,QACZ,GAAI,kBAAA,IAAsB;AAAA,UACxB,UAAA,EAAY;AAAA,YACV,GAAG,OAAA,EAAS,WAAA,EAAa,GAAA,EAAK,UAAA;AAAA,YAC9B,QAAA,EAAU,qBAAqB,QAAA,GAAW;AAAA;AAC5C;AACF;AACF,KACF;AAAA,IACA,UAAA,EAAY,eAAA;AAAA,MACV,cAAA,CAAe,UAAA;AAAA,MACf,OAAA,EAAS,UAAA;AAAA,MACT;AAAA,KACF;AAAA,IACA,KAAA,EAAO;AAAA,MACL,GAAG,cAAA,CAAe,KAAA;AAAA,MAClB,GAAG,OAAA,EAAS,KAAA;AAAA,MACZ,YACE,UAAA,IACA,OAAA,EAAS,KAAA,EAAO,UAAA,IAChB,eAAe,KAAA,EAAO,UAAA;AAAA,MACxB,GAAI,kBAAA,IACF,OAAA,EAAS,KAAA,EAAO,QAAQ,MAAA,IAAa;AAAA,QACnC,GAAA,EAAK;AAAA;AACP,KACJ;AAAA,IACA,IAAA,EAAM,gBAAA,CAAiB,eAAA,EAAiB,OAAA,EAAS,IAAI,CAAA;AAAA,IACrD,WAAA,EAAa,gBAAA,CAAiB,OAAA,EAAS,WAAA,EAAa,oBAAoB,CAAA;AAAA,IACxE,SAAS,mBAAA,CAAoB,cAAA,CAAe,OAAA,EAAS,OAAA,EAAS,SAAS,gBAAgB;AAAA,GACzF;AAEA,EAAAA,sBAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,SAAA,GAAY,IAAA;AAEhB,IAAA,OAAO,kBAAkB,CAAA,CAAE,IAAA,CAAK,CAAC,MAAA,KAAW;AAC1C,MAAA,IAAI,SAAA,EAAW,QAAA,CAAS,MAAM,MAAA,CAAO,OAAkC,CAAA;AAAA,IACzE,CAAC,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,KAAA;AAAA,IACd,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,IAAI,CAAC,OAAO,OAAO,IAAA;AAEnB,EAAA,uBACEC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,aAAA;AAAA,MACT,MAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,KAAA;AAAA,MACL,QAAQ,MAAA,IAAU;AAAA;AAAA,GACpB;AAEJ","file":"chunk-WIBFUDZM.cjs","sourcesContent":["\"use client\";\nimport React from \"react\";\nimport type { ApexOptions } from \"apexcharts\";\n\ntype ReactApexChartProps = {\n options: ApexOptions;\n series: ApexAxisChartSeries;\n type: \"bar\" | \"area\";\n height: number;\n};\ntype ReactApexChartComponent = React.ComponentType<ReactApexChartProps>;\n\nexport interface BarChartProps {\n series?: ApexAxisChartSeries;\n categories?: string[];\n colors?: string[];\n height?: number;\n horizontal?: boolean;\n showBarValues?: boolean;\n showBarPercentages?: boolean;\n minBarPercentage?: number;\n percentageMode?: \"total\" | \"category\";\n barValueFormatter?: (value: number, context: BarChartLabelContext) => string;\n barPercentageFormatter?: (\n percentage: number,\n value: number,\n context: BarChartLabelContext\n ) => string;\n options?: ApexOptions;\n}\n\nexport interface BarChartLabelContext {\n seriesIndex: number;\n dataPointIndex: number;\n seriesName?: string;\n category?: string;\n total: number;\n}\n\nconst defaultOptions: ApexOptions = {\n colors: [\"#465fff\"],\n chart: {\n fontFamily: \"Outfit, sans-serif\",\n type: \"bar\",\n height: 180,\n animations: {\n enabled: true,\n speed: 200,\n animateGradually: {\n enabled: false,\n delay: 0,\n },\n dynamicAnimation: {\n enabled: true,\n speed: 175,\n },\n },\n toolbar: {\n show: false,\n },\n },\n plotOptions: {\n bar: {\n horizontal: false,\n columnWidth: \"39%\",\n borderRadius: 5,\n borderRadiusApplication: \"end\",\n },\n },\n dataLabels: {\n enabled: false,\n },\n // No transparent stroke around the columns: it shrinks and shifts the\n // painted bar inside its allocated slot, so the hover highlight band\n // (crosshairs width \"barWidth\" = the allocated width) would render wider\n // than — and offset from — the visible bar.\n stroke: {\n show: false,\n },\n xaxis: {\n categories: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n axisBorder: {\n show: false,\n },\n axisTicks: {\n show: false,\n },\n // Match the hover highlight band to the bar width (the default band spans\n // the whole category slot, looking ~3x wider than the 39% columns).\n crosshairs: {\n width: \"barWidth\",\n },\n },\n legend: {\n show: true,\n position: \"top\",\n horizontalAlign: \"left\",\n fontFamily: \"Outfit\",\n // Rounded, border-less swatches that echo the column styling. ApexCharts\n // sets the marker span's `color` to the series color, so `currentColor`\n // picks it up; `customHTML` lets us round the corners (the built-in shapes\n // are sharp SVG paths that CSS border-radius can't touch).\n markers: {\n size: 7,\n strokeWidth: 0,\n customHTML: () =>\n '<span style=\"display:block;height:100%;width:100%;border-radius:3px;background:currentColor\"></span>',\n },\n },\n yaxis: {\n title: {\n text: undefined,\n },\n },\n grid: {\n yaxis: {\n lines: {\n show: true,\n },\n },\n },\n fill: {\n opacity: 1,\n },\n tooltip: {\n x: {\n show: false,\n },\n y: {\n formatter: (val: number) => `${val}`,\n },\n },\n};\n\nconst defaultSeries: ApexAxisChartSeries = [\n {\n name: \"Sales\",\n data: [168, 385, 201, 298, 187, 195, 291, 110, 215, 390, 280, 112],\n },\n];\n\nconst horizontalGridOptions: ApexOptions[\"grid\"] = {\n borderColor: \"transparent\",\n xaxis: {\n lines: {\n show: false,\n },\n },\n yaxis: {\n lines: {\n show: false,\n },\n },\n};\n\nfunction mergeGridOptions(\n base: ApexOptions[\"grid\"],\n override: ApexOptions[\"grid\"]\n): ApexOptions[\"grid\"] {\n return {\n ...base,\n ...override,\n xaxis: {\n ...base?.xaxis,\n ...override?.xaxis,\n lines: {\n ...base?.xaxis?.lines,\n ...override?.xaxis?.lines,\n },\n },\n yaxis: {\n ...base?.yaxis,\n ...override?.yaxis,\n lines: {\n ...base?.yaxis?.lines,\n ...override?.yaxis?.lines,\n },\n },\n };\n}\n\nfunction getDataValue(value: unknown): number | null {\n if (typeof value === \"number\") return value;\n if (Array.isArray(value) && typeof value[1] === \"number\") return value[1];\n if (value && typeof value === \"object\" && \"y\" in value) {\n const y = (value as { y: unknown }).y;\n return typeof y === \"number\" ? y : null;\n }\n return null;\n}\n\nfunction getValueMatrix(series: ApexAxisChartSeries): number[][] {\n return series.map((item) => item.data.map((value) => getDataValue(value) ?? 0));\n}\n\nfunction getSeriesTotal(matrix: number[][]): number {\n return matrix.reduce(\n (seriesTotal, data) => seriesTotal + data.reduce((total, value) => total + value, 0),\n 0\n );\n}\n\nfunction getCategoryTotal(matrix: number[][], dataPointIndex: number): number {\n return matrix.reduce((total, data) => total + (data[dataPointIndex] ?? 0), 0);\n}\n\nfunction getMaxValue(matrix: number[][]): number {\n return matrix.reduce(\n (max, data) => Math.max(max, ...data.map((value) => Math.max(0, value))),\n 0\n );\n}\n\nfunction setDataValue(value: unknown, nextValue: number): unknown {\n if (typeof value === \"number\") return nextValue;\n if (Array.isArray(value)) return [value[0], nextValue, ...value.slice(2)];\n if (value && typeof value === \"object\" && \"y\" in value) {\n return { ...value, y: nextValue };\n }\n return value;\n}\n\nfunction applyMinimumBarValue(\n series: ApexAxisChartSeries,\n minimumValue: number\n): ApexAxisChartSeries {\n return series.map((item) => ({\n ...item,\n data: item.data.map((value) =>\n getDataValue(value) === 0 ? setDataValue(value, minimumValue) : value\n ) as typeof item.data,\n }));\n}\n\nfunction mergeDataLabels(\n base: ApexOptions[\"dataLabels\"],\n override: ApexOptions[\"dataLabels\"],\n generated: ApexOptions[\"dataLabels\"]\n): ApexOptions[\"dataLabels\"] {\n return {\n ...base,\n ...override,\n ...generated,\n style: {\n ...base?.style,\n ...override?.style,\n ...generated?.style,\n },\n background: {\n ...base?.background,\n ...override?.background,\n ...generated?.background,\n },\n };\n}\n\nfunction mergeTooltipOptions(\n base: ApexOptions[\"tooltip\"],\n override: ApexOptions[\"tooltip\"],\n generated: ApexOptions[\"tooltip\"]\n): ApexOptions[\"tooltip\"] {\n const baseY = Array.isArray(base?.y) ? undefined : base?.y;\n const overrideY = Array.isArray(override?.y) ? undefined : override?.y;\n const generatedY = Array.isArray(generated?.y) ? undefined : generated?.y;\n\n return {\n ...base,\n ...override,\n ...generated,\n x: {\n ...base?.x,\n ...override?.x,\n ...generated?.x,\n },\n y: {\n ...baseY,\n ...overrideY,\n ...generatedY,\n },\n };\n}\n\nfunction mergeAnnotations(\n override: ApexOptions[\"annotations\"],\n generated: ApexOptions[\"annotations\"]\n): ApexOptions[\"annotations\"] | undefined {\n if (!override && !generated) return undefined;\n return {\n ...override,\n ...generated,\n points: [...(override?.points ?? []), ...(generated?.points ?? [])],\n };\n}\n\nexport const BarChart: React.FC<BarChartProps> = ({\n series,\n categories,\n colors,\n height,\n horizontal,\n showBarValues = false,\n showBarPercentages = false,\n minBarPercentage = 2,\n percentageMode = \"total\",\n barValueFormatter,\n barPercentageFormatter,\n options,\n}) => {\n const [Chart, setChart] = React.useState<ReactApexChartComponent | null>(null);\n const effectiveSeries = series ?? defaultSeries;\n const effectiveCategories =\n categories ?? (options?.xaxis?.categories as string[] | undefined);\n const valueMatrix = getValueMatrix(effectiveSeries);\n const seriesTotal = getSeriesTotal(valueMatrix);\n const isHorizontal = horizontal ?? (options?.plotOptions?.bar?.horizontal === true);\n const hasGeneratedLabels = showBarValues || showBarPercentages;\n const maxValue = getMaxValue(valueMatrix);\n const minimumValueScale = maxValue > 0 ? maxValue : 100;\n const minimumBarValue = minimumValueScale * (Math.max(0, minBarPercentage) / 100);\n const hasMinimumBarValue = isHorizontal && minimumBarValue > 0;\n const chartSeries = hasMinimumBarValue\n ? applyMinimumBarValue(effectiveSeries, minimumBarValue)\n : effectiveSeries;\n const chartValueMatrix = getValueMatrix(chartSeries);\n const baseGridOptions = isHorizontal\n ? mergeGridOptions(defaultOptions.grid, horizontalGridOptions)\n : defaultOptions.grid;\n const getLabelContext = (\n seriesIndex: number,\n dataPointIndex: number,\n total: number\n ): BarChartLabelContext => ({\n seriesIndex,\n dataPointIndex,\n seriesName: effectiveSeries[seriesIndex]?.name,\n category: effectiveCategories?.[dataPointIndex],\n total,\n });\n const generatedDataLabels: ApexOptions[\"dataLabels\"] | undefined = hasGeneratedLabels\n ? {\n enabled: true,\n textAnchor: \"middle\",\n offsetX: 0,\n offsetY: 0,\n background: {\n enabled: false,\n },\n style: {\n fontSize: \"12px\",\n fontWeight: 600,\n colors: [showBarPercentages ? \"#ffffff\" : \"#344054\"],\n },\n formatter: (_value, opts) => {\n const seriesIndex = opts?.seriesIndex ?? 0;\n const dataPointIndex = opts?.dataPointIndex ?? 0;\n const numericValue = valueMatrix[seriesIndex]?.[dataPointIndex] ?? 0;\n const total =\n percentageMode === \"category\"\n ? getCategoryTotal(valueMatrix, dataPointIndex)\n : seriesTotal;\n const context = getLabelContext(seriesIndex, dataPointIndex, total);\n\n if (showBarPercentages) {\n const percentage = total > 0 ? (numericValue / total) * 100 : 0;\n return barPercentageFormatter\n ? barPercentageFormatter(percentage, numericValue, context)\n : `${Math.round(percentage)}%`;\n }\n\n return barValueFormatter\n ? barValueFormatter(numericValue, context)\n : `${numericValue}`;\n },\n }\n : undefined;\n const generatedAnnotations: ApexOptions[\"annotations\"] | undefined =\n isHorizontal && showBarValues\n ? {\n points: effectiveSeries.flatMap((item, seriesIndex) =>\n item.data.map((dataPoint, dataPointIndex) => {\n const value = getDataValue(dataPoint) ?? 0;\n const chartValue = chartValueMatrix[seriesIndex]?.[dataPointIndex] ?? value;\n const total =\n percentageMode === \"category\"\n ? getCategoryTotal(valueMatrix, dataPointIndex)\n : seriesTotal;\n const context = getLabelContext(seriesIndex, dataPointIndex, total);\n return {\n x: chartValue,\n y: dataPointIndex,\n seriesIndex,\n marker: {\n size: 0,\n },\n label: {\n text: barValueFormatter ? barValueFormatter(value, context) : `${value}`,\n borderWidth: 0,\n offsetY: -12,\n style: {\n background: \"transparent\",\n color: \"#344054\",\n fontSize: \"12px\",\n fontWeight: 600,\n padding: {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n },\n },\n },\n };\n })\n ),\n }\n : undefined;\n const generatedTooltip: ApexOptions[\"tooltip\"] | undefined = hasMinimumBarValue\n ? {\n y: {\n formatter: (_value, opts) => {\n const originalValue =\n valueMatrix[opts?.seriesIndex ?? 0]?.[opts?.dataPointIndex ?? 0] ?? 0;\n const overrideY = Array.isArray(options?.tooltip?.y) ? undefined : options?.tooltip?.y;\n const defaultY = Array.isArray(defaultOptions.tooltip?.y)\n ? undefined\n : defaultOptions.tooltip?.y;\n const formatter = overrideY?.formatter ?? defaultY?.formatter;\n return formatter ? formatter(originalValue, opts) : `${originalValue}`;\n },\n },\n }\n : undefined;\n const mergedOptions: ApexOptions = {\n ...defaultOptions,\n ...options,\n colors: colors ?? options?.colors ?? defaultOptions.colors,\n chart: {\n ...defaultOptions.chart,\n ...options?.chart,\n animations: {\n ...defaultOptions.chart?.animations,\n ...options?.chart?.animations,\n animateGradually: {\n ...defaultOptions.chart?.animations?.animateGradually,\n ...options?.chart?.animations?.animateGradually,\n },\n dynamicAnimation: {\n ...defaultOptions.chart?.animations?.dynamicAnimation,\n ...options?.chart?.animations?.dynamicAnimation,\n },\n },\n height: height ?? options?.chart?.height ?? defaultOptions.chart?.height,\n },\n plotOptions: {\n ...defaultOptions.plotOptions,\n ...options?.plotOptions,\n bar: {\n ...defaultOptions.plotOptions?.bar,\n ...options?.plotOptions?.bar,\n horizontal: isHorizontal,\n ...(hasGeneratedLabels && {\n dataLabels: {\n ...options?.plotOptions?.bar?.dataLabels,\n position: showBarPercentages ? \"center\" : \"top\",\n },\n }),\n },\n },\n dataLabels: mergeDataLabels(\n defaultOptions.dataLabels,\n options?.dataLabels,\n generatedDataLabels\n ),\n xaxis: {\n ...defaultOptions.xaxis,\n ...options?.xaxis,\n categories:\n categories ??\n options?.xaxis?.categories ??\n defaultOptions.xaxis?.categories,\n ...(hasMinimumBarValue &&\n options?.xaxis?.max === undefined && {\n max: minimumValueScale,\n }),\n },\n grid: mergeGridOptions(baseGridOptions, options?.grid),\n annotations: mergeAnnotations(options?.annotations, generatedAnnotations),\n tooltip: mergeTooltipOptions(defaultOptions.tooltip, options?.tooltip, generatedTooltip),\n };\n\n React.useEffect(() => {\n let isMounted = true;\n\n import(\"react-apexcharts\").then((module) => {\n if (isMounted) setChart(() => module.default as ReactApexChartComponent);\n });\n\n return () => {\n isMounted = false;\n };\n }, []);\n\n if (!Chart) return null;\n\n return (\n <Chart\n options={mergedOptions}\n series={chartSeries}\n type=\"bar\"\n height={height ?? 180}\n />\n );\n};\n"]}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkWIBFUDZM_cjs = require('../../chunk-WIBFUDZM.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "BarChart", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return chunkWIBFUDZM_cjs.BarChart; }
|
|
11
11
|
});
|
|
12
12
|
//# sourceMappingURL=BarChart.cjs.map
|
|
13
13
|
//# sourceMappingURL=BarChart.cjs.map
|
package/dist/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkWIBFUDZM_cjs = require('./chunk-WIBFUDZM.cjs');
|
|
5
5
|
var chunkZULPBSQV_cjs = require('./chunk-ZULPBSQV.cjs');
|
|
6
6
|
var chunkGBQCVSZU_cjs = require('./chunk-GBQCVSZU.cjs');
|
|
7
7
|
var chunkETOOIXCY_cjs = require('./chunk-ETOOIXCY.cjs');
|
|
@@ -2953,7 +2953,7 @@ var Slider = ({
|
|
|
2953
2953
|
|
|
2954
2954
|
Object.defineProperty(exports, "BarChart", {
|
|
2955
2955
|
enumerable: true,
|
|
2956
|
-
get: function () { return
|
|
2956
|
+
get: function () { return chunkWIBFUDZM_cjs.BarChart; }
|
|
2957
2957
|
});
|
|
2958
2958
|
Object.defineProperty(exports, "LineChart", {
|
|
2959
2959
|
enumerable: true,
|
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@andreagiugni/tailwind-dashboard-ui",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.14",
|
|
4
4
|
"description": "Reusable React + Tailwind CSS v4 dashboard components extracted from TailAdmin.",
|
|
5
5
|
"homepage": "https://taildashboardui.com",
|
|
6
6
|
"author": "Andrea Giugni",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Charts/BarChart.tsx"],"names":[],"mappings":";;;AAuCA,IAAM,cAAA,GAA8B;AAAA,EAClC,MAAA,EAAQ,CAAC,SAAS,CAAA;AAAA,EAClB,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,oBAAA;AAAA,IACZ,IAAA,EAAM,KAAA;AAAA,IACN,MAAA,EAAQ,GAAA;AAAA,IACR,OAAA,EAAS;AAAA,MACP,IAAA,EAAM;AAAA;AACR,GACF;AAAA,EACA,WAAA,EAAa;AAAA,IACX,GAAA,EAAK;AAAA,MACH,UAAA,EAAY,KAAA;AAAA,MACZ,WAAA,EAAa,KAAA;AAAA,MACb,YAAA,EAAc,CAAA;AAAA,MACd,uBAAA,EAAyB;AAAA;AAC3B,GACF;AAAA,EACA,UAAA,EAAY;AAAA,IACV,OAAA,EAAS;AAAA,GACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA,KAAA,EAAO;AAAA,IACL,UAAA,EAAY;AAAA,MACV,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,UAAA,EAAY;AAAA,MACV,IAAA,EAAM;AAAA,KACR;AAAA,IACA,SAAA,EAAW;AAAA,MACT,IAAA,EAAM;AAAA,KACR;AAAA;AAAA;AAAA,IAGA,UAAA,EAAY;AAAA,MACV,KAAA,EAAO;AAAA;AACT,GACF;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,IAAA;AAAA,IACN,QAAA,EAAU,KAAA;AAAA,IACV,eAAA,EAAiB,MAAA;AAAA,IACjB,UAAA,EAAY,QAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKZ,OAAA,EAAS;AAAA,MACP,IAAA,EAAM,CAAA;AAAA,MACN,WAAA,EAAa,CAAA;AAAA,MACb,YAAY,MACV;AAAA;AACJ,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAO;AAAA,MACL,IAAA,EAAM;AAAA;AACR,GACF;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA,QACL,IAAA,EAAM;AAAA;AACR;AACF,GACF;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,CAAA,EAAG;AAAA,MACD,IAAA,EAAM;AAAA,KACR;AAAA,IACA,CAAA,EAAG;AAAA,MACD,SAAA,EAAW,CAAC,GAAA,KAAgB,CAAA,EAAG,GAAG,CAAA;AAAA;AACpC;AAEJ,CAAA;AAEA,IAAM,aAAA,GAAqC;AAAA,EACzC;AAAA,IACE,IAAA,EAAM,OAAA;AAAA,IACN,IAAA,EAAM,CAAC,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,KAAK,GAAG;AAAA;AAErE,CAAA;AAEA,IAAM,qBAAA,GAA6C;AAAA,EACjD,WAAA,EAAa,aAAA;AAAA,EACb,KAAA,EAAO;AAAA,IACL,KAAA,EAAO;AAAA,MACL,IAAA,EAAM;AAAA;AACR,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAO;AAAA,MACL,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAEA,SAAS,gBAAA,CACP,MACA,QAAA,EACqB;AACrB,EAAA,OAAO;AAAA,IACL,GAAG,IAAA;AAAA,IACH,GAAG,QAAA;AAAA,IACH,KAAA,EAAO;AAAA,MACL,GAAG,IAAA,EAAM,KAAA;AAAA,MACT,GAAG,QAAA,EAAU,KAAA;AAAA,MACb,KAAA,EAAO;AAAA,QACL,GAAG,MAAM,KAAA,EAAO,KAAA;AAAA,QAChB,GAAG,UAAU,KAAA,EAAO;AAAA;AACtB,KACF;AAAA,IACA,KAAA,EAAO;AAAA,MACL,GAAG,IAAA,EAAM,KAAA;AAAA,MACT,GAAG,QAAA,EAAU,KAAA;AAAA,MACb,KAAA,EAAO;AAAA,QACL,GAAG,MAAM,KAAA,EAAO,KAAA;AAAA,QAChB,GAAG,UAAU,KAAA,EAAO;AAAA;AACtB;AACF,GACF;AACF;AAEA,SAAS,aAAa,KAAA,EAA+B;AACnD,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AACtC,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,OAAO,KAAA,CAAM,CAAC,CAAA,KAAM,QAAA,EAAU,OAAO,KAAA,CAAM,CAAC,CAAA;AACxE,EAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,KAAA,EAAO;AACtD,IAAA,MAAM,IAAK,KAAA,CAAyB,CAAA;AACpC,IAAA,OAAO,OAAO,CAAA,KAAM,QAAA,GAAW,CAAA,GAAI,IAAA;AAAA,EACrC;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,eAAe,MAAA,EAAyC;AAC/D,EAAA,OAAO,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,CAAC,KAAA,KAAU,YAAA,CAAa,KAAK,CAAA,IAAK,CAAC,CAAC,CAAA;AAChF;AAEA,SAAS,eAAe,MAAA,EAA4B;AAClD,EAAA,OAAO,MAAA,CAAO,MAAA;AAAA,IACZ,CAAC,WAAA,EAAa,IAAA,KAAS,WAAA,GAAc,IAAA,CAAK,MAAA,CAAO,CAAC,KAAA,EAAO,KAAA,KAAU,KAAA,GAAQ,KAAA,EAAO,CAAC,CAAA;AAAA,IACnF;AAAA,GACF;AACF;AAEA,SAAS,gBAAA,CAAiB,QAAoB,cAAA,EAAgC;AAC5E,EAAA,OAAO,MAAA,CAAO,MAAA,CAAO,CAAC,KAAA,EAAO,IAAA,KAAS,SAAS,IAAA,CAAK,cAAc,CAAA,IAAK,CAAA,CAAA,EAAI,CAAC,CAAA;AAC9E;AAEA,SAAS,YAAY,MAAA,EAA4B;AAC/C,EAAA,OAAO,MAAA,CAAO,MAAA;AAAA,IACZ,CAAC,GAAA,EAAK,IAAA,KAAS,IAAA,CAAK,GAAA,CAAI,KAAK,GAAG,IAAA,CAAK,GAAA,CAAI,CAAC,UAAU,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAK,CAAC,CAAC,CAAA;AAAA,IACvE;AAAA,GACF;AACF;AAEA,SAAS,YAAA,CAAa,OAAgB,SAAA,EAA4B;AAChE,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,SAAA;AACtC,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,SAAU,CAAC,KAAA,CAAM,CAAC,CAAA,EAAG,SAAA,EAAW,GAAG,KAAA,CAAM,KAAA,CAAM,CAAC,CAAC,CAAA;AACxE,EAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,KAAA,EAAO;AACtD,IAAA,OAAO,EAAE,GAAG,KAAA,EAAO,CAAA,EAAG,SAAA,EAAU;AAAA,EAClC;AACA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,oBAAA,CACP,QACA,YAAA,EACqB;AACrB,EAAA,OAAO,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,IAC3B,GAAG,IAAA;AAAA,IACH,IAAA,EAAM,KAAK,IAAA,CAAK,GAAA;AAAA,MAAI,CAAC,UACnB,YAAA,CAAa,KAAK,MAAM,CAAA,GAAI,YAAA,CAAa,KAAA,EAAO,YAAY,CAAA,GAAI;AAAA;AAClE,GACF,CAAE,CAAA;AACJ;AAEA,SAAS,eAAA,CACP,IAAA,EACA,QAAA,EACA,SAAA,EAC2B;AAC3B,EAAA,OAAO;AAAA,IACL,GAAG,IAAA;AAAA,IACH,GAAG,QAAA;AAAA,IACH,GAAG,SAAA;AAAA,IACH,KAAA,EAAO;AAAA,MACL,GAAG,IAAA,EAAM,KAAA;AAAA,MACT,GAAG,QAAA,EAAU,KAAA;AAAA,MACb,GAAG,SAAA,EAAW;AAAA,KAChB;AAAA,IACA,UAAA,EAAY;AAAA,MACV,GAAG,IAAA,EAAM,UAAA;AAAA,MACT,GAAG,QAAA,EAAU,UAAA;AAAA,MACb,GAAG,SAAA,EAAW;AAAA;AAChB,GACF;AACF;AAEA,SAAS,mBAAA,CACP,IAAA,EACA,QAAA,EACA,SAAA,EACwB;AACxB,EAAA,MAAM,QAAQ,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAC,CAAA,GAAI,SAAY,IAAA,EAAM,CAAA;AACzD,EAAA,MAAM,YAAY,KAAA,CAAM,OAAA,CAAQ,UAAU,CAAC,CAAA,GAAI,SAAY,QAAA,EAAU,CAAA;AACrE,EAAA,MAAM,aAAa,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAC,CAAA,GAAI,SAAY,SAAA,EAAW,CAAA;AAExE,EAAA,OAAO;AAAA,IACL,GAAG,IAAA;AAAA,IACH,GAAG,QAAA;AAAA,IACH,GAAG,SAAA;AAAA,IACH,CAAA,EAAG;AAAA,MACD,GAAG,IAAA,EAAM,CAAA;AAAA,MACT,GAAG,QAAA,EAAU,CAAA;AAAA,MACb,GAAG,SAAA,EAAW;AAAA,KAChB;AAAA,IACA,CAAA,EAAG;AAAA,MACD,GAAG,KAAA;AAAA,MACH,GAAG,SAAA;AAAA,MACH,GAAG;AAAA;AACL,GACF;AACF;AAEA,SAAS,gBAAA,CACP,UACA,SAAA,EACwC;AACxC,EAAA,IAAI,CAAC,QAAA,IAAY,CAAC,SAAA,EAAW,OAAO,MAAA;AACpC,EAAA,OAAO;AAAA,IACL,GAAG,QAAA;AAAA,IACH,GAAG,SAAA;AAAA,IACH,MAAA,EAAQ,CAAC,GAAI,QAAA,EAAU,MAAA,IAAU,EAAC,EAAI,GAAI,SAAA,EAAW,MAAA,IAAU,EAAG;AAAA,GACpE;AACF;AAEO,IAAM,WAAoC,CAAC;AAAA,EAChD,MAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA,GAAgB,KAAA;AAAA,EAChB,kBAAA,GAAqB,KAAA;AAAA,EACrB,gBAAA,GAAmB,CAAA;AAAA,EACnB,cAAA,GAAiB,OAAA;AAAA,EACjB,iBAAA;AAAA,EACA,sBAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,KAAA,CAAM,SAAyC,IAAI,CAAA;AAC7E,EAAA,MAAM,kBAAkB,MAAA,IAAU,aAAA;AAClC,EAAA,MAAM,mBAAA,GACJ,UAAA,IAAe,OAAA,EAAS,KAAA,EAAO,UAAA;AACjC,EAAA,MAAM,WAAA,GAAc,eAAe,eAAe,CAAA;AAClD,EAAA,MAAM,WAAA,GAAc,eAAe,WAAW,CAAA;AAC9C,EAAA,MAAM,YAAA,GAAe,UAAA,IAAe,OAAA,EAAS,WAAA,EAAa,KAAK,UAAA,KAAe,IAAA;AAC9E,EAAA,MAAM,qBAAqB,aAAA,IAAiB,kBAAA;AAC5C,EAAA,MAAM,QAAA,GAAW,YAAY,WAAW,CAAA;AACxC,EAAA,MAAM,iBAAA,GAAoB,QAAA,GAAW,CAAA,GAAI,QAAA,GAAW,GAAA;AACpD,EAAA,MAAM,kBAAkB,iBAAA,IAAqB,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,gBAAgB,CAAA,GAAI,GAAA,CAAA;AAC7E,EAAA,MAAM,kBAAA,GAAqB,gBAAgB,eAAA,GAAkB,CAAA;AAC7D,EAAA,MAAM,WAAA,GAAc,kBAAA,GAChB,oBAAA,CAAqB,eAAA,EAAiB,eAAe,CAAA,GACrD,eAAA;AACJ,EAAA,MAAM,gBAAA,GAAmB,eAAe,WAAW,CAAA;AACnD,EAAA,MAAM,kBAAkB,YAAA,GACpB,gBAAA,CAAiB,eAAe,IAAA,EAAM,qBAAqB,IAC3D,cAAA,CAAe,IAAA;AACnB,EAAA,MAAM,eAAA,GAAkB,CACtB,WAAA,EACA,cAAA,EACA,KAAA,MAC0B;AAAA,IAC1B,WAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA,EAAY,eAAA,CAAgB,WAAW,CAAA,EAAG,IAAA;AAAA,IAC1C,QAAA,EAAU,sBAAsB,cAAc,CAAA;AAAA,IAC9C;AAAA,GACF,CAAA;AACA,EAAA,MAAM,sBAA6D,kBAAA,GAC/D;AAAA,IACE,OAAA,EAAS,IAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,OAAA,EAAS,CAAA;AAAA,IACT,OAAA,EAAS,CAAA;AAAA,IACT,UAAA,EAAY;AAAA,MACV,OAAA,EAAS;AAAA,KACX;AAAA,IACA,KAAA,EAAO;AAAA,MACL,QAAA,EAAU,MAAA;AAAA,MACV,UAAA,EAAY,GAAA;AAAA,MACZ,MAAA,EAAQ,CAAC,kBAAA,GAAqB,SAAA,GAAY,SAAS;AAAA,KACrD;AAAA,IACA,SAAA,EAAW,CAAC,MAAA,EAAQ,IAAA,KAAS;AAC3B,MAAA,MAAM,WAAA,GAAc,MAAM,WAAA,IAAe,CAAA;AACzC,MAAA,MAAM,cAAA,GAAiB,MAAM,cAAA,IAAkB,CAAA;AAC/C,MAAA,MAAM,YAAA,GAAe,WAAA,CAAY,WAAW,CAAA,GAAI,cAAc,CAAA,IAAK,CAAA;AACnE,MAAA,MAAM,QACJ,cAAA,KAAmB,UAAA,GACf,gBAAA,CAAiB,WAAA,EAAa,cAAc,CAAA,GAC5C,WAAA;AACN,MAAA,MAAM,OAAA,GAAU,eAAA,CAAgB,WAAA,EAAa,cAAA,EAAgB,KAAK,CAAA;AAElE,MAAA,IAAI,kBAAA,EAAoB;AACtB,QAAA,MAAM,UAAA,GAAa,KAAA,GAAQ,CAAA,GAAK,YAAA,GAAe,QAAS,GAAA,GAAM,CAAA;AAC9D,QAAA,OAAO,sBAAA,GACH,sBAAA,CAAuB,UAAA,EAAY,YAAA,EAAc,OAAO,IACxD,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,UAAU,CAAC,CAAA,CAAA,CAAA;AAAA,MAC/B;AAEA,MAAA,OAAO,oBACH,iBAAA,CAAkB,YAAA,EAAc,OAAO,CAAA,GACvC,GAAG,YAAY,CAAA,CAAA;AAAA,IACrB;AAAA,GACF,GACA,MAAA;AACJ,EAAA,MAAM,oBAAA,GACJ,gBAAgB,aAAA,GACZ;AAAA,IACE,QAAQ,eAAA,CAAgB,OAAA;AAAA,MAAQ,CAAC,MAAM,WAAA,KACrC,IAAA,CAAK,KAAK,GAAA,CAAI,CAAC,WAAW,cAAA,KAAmB;AAC3C,QAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,SAAS,CAAA,IAAK,CAAA;AACzC,QAAA,MAAM,UAAA,GAAa,gBAAA,CAAiB,WAAW,CAAA,GAAI,cAAc,CAAA,IAAK,KAAA;AACtE,QAAA,MAAM,QACJ,cAAA,KAAmB,UAAA,GACf,gBAAA,CAAiB,WAAA,EAAa,cAAc,CAAA,GAC5C,WAAA;AACN,QAAA,MAAM,OAAA,GAAU,eAAA,CAAgB,WAAA,EAAa,cAAA,EAAgB,KAAK,CAAA;AAClE,QAAA,OAAO;AAAA,UACL,CAAA,EAAG,UAAA;AAAA,UACH,CAAA,EAAG,cAAA;AAAA,UACH,WAAA;AAAA,UACA,MAAA,EAAQ;AAAA,YACN,IAAA,EAAM;AAAA,WACR;AAAA,UACA,KAAA,EAAO;AAAA,YACL,MAAM,iBAAA,GAAoB,iBAAA,CAAkB,OAAO,OAAO,CAAA,GAAI,GAAG,KAAK,CAAA,CAAA;AAAA,YACtE,WAAA,EAAa,CAAA;AAAA,YACb,OAAA,EAAS,GAAA;AAAA,YACT,KAAA,EAAO;AAAA,cACL,UAAA,EAAY,aAAA;AAAA,cACZ,KAAA,EAAO,SAAA;AAAA,cACP,QAAA,EAAU,MAAA;AAAA,cACV,UAAA,EAAY,GAAA;AAAA,cACZ,OAAA,EAAS;AAAA,gBACP,IAAA,EAAM,CAAA;AAAA,gBACN,KAAA,EAAO,CAAA;AAAA,gBACP,GAAA,EAAK,CAAA;AAAA,gBACL,MAAA,EAAQ;AAAA;AACV;AACF;AACF,SACF;AAAA,MACF,CAAC;AAAA;AACH,GACF,GACA,MAAA;AACN,EAAA,MAAM,mBAAuD,kBAAA,GACzD;AAAA,IACE,CAAA,EAAG;AAAA,MACD,SAAA,EAAW,CAAC,MAAA,EAAQ,IAAA,KAAS;AAC3B,QAAA,MAAM,aAAA,GACJ,YAAY,IAAA,EAAM,WAAA,IAAe,CAAC,CAAA,GAAI,IAAA,EAAM,cAAA,IAAkB,CAAC,CAAA,IAAK,CAAA;AACtE,QAAA,MAAM,SAAA,GAAY,MAAM,OAAA,CAAQ,OAAA,EAAS,SAAS,CAAC,CAAA,GAAI,MAAA,GAAY,OAAA,EAAS,OAAA,EAAS,CAAA;AACrF,QAAA,MAAM,QAAA,GAAW,MAAM,OAAA,CAAQ,cAAA,CAAe,SAAS,CAAC,CAAA,GACpD,MAAA,GACA,cAAA,CAAe,OAAA,EAAS,CAAA;AAC5B,QAAA,MAAM,SAAA,GAAY,SAAA,EAAW,SAAA,IAAa,QAAA,EAAU,SAAA;AACpD,QAAA,OAAO,YAAY,SAAA,CAAU,aAAA,EAAe,IAAI,CAAA,GAAI,GAAG,aAAa,CAAA,CAAA;AAAA,MACtE;AAAA;AACF,GACF,GACA,MAAA;AACJ,EAAA,MAAM,aAAA,GAA6B;AAAA,IACjC,GAAG,cAAA;AAAA,IACH,GAAG,OAAA;AAAA,IACH,MAAA,EAAQ,MAAA,IAAU,OAAA,EAAS,MAAA,IAAU,cAAA,CAAe,MAAA;AAAA,IACpD,KAAA,EAAO;AAAA,MACL,GAAG,cAAA,CAAe,KAAA;AAAA,MAClB,GAAG,OAAA,EAAS,KAAA;AAAA,MACZ,QAAQ,MAAA,IAAU,OAAA,EAAS,KAAA,EAAO,MAAA,IAAU,eAAe,KAAA,EAAO;AAAA,KACpE;AAAA,IACA,WAAA,EAAa;AAAA,MACX,GAAG,cAAA,CAAe,WAAA;AAAA,MAClB,GAAG,OAAA,EAAS,WAAA;AAAA,MACZ,GAAA,EAAK;AAAA,QACH,GAAG,eAAe,WAAA,EAAa,GAAA;AAAA,QAC/B,GAAG,SAAS,WAAA,EAAa,GAAA;AAAA,QACzB,UAAA,EAAY,YAAA;AAAA,QACZ,GAAI,kBAAA,IAAsB;AAAA,UACxB,UAAA,EAAY;AAAA,YACV,GAAG,OAAA,EAAS,WAAA,EAAa,GAAA,EAAK,UAAA;AAAA,YAC9B,QAAA,EAAU,qBAAqB,QAAA,GAAW;AAAA;AAC5C;AACF;AACF,KACF;AAAA,IACA,UAAA,EAAY,eAAA;AAAA,MACV,cAAA,CAAe,UAAA;AAAA,MACf,OAAA,EAAS,UAAA;AAAA,MACT;AAAA,KACF;AAAA,IACA,KAAA,EAAO;AAAA,MACL,GAAG,cAAA,CAAe,KAAA;AAAA,MAClB,GAAG,OAAA,EAAS,KAAA;AAAA,MACZ,YACE,UAAA,IACA,OAAA,EAAS,KAAA,EAAO,UAAA,IAChB,eAAe,KAAA,EAAO,UAAA;AAAA,MACxB,GAAI,kBAAA,IACF,OAAA,EAAS,KAAA,EAAO,QAAQ,MAAA,IAAa;AAAA,QACnC,GAAA,EAAK;AAAA;AACP,KACJ;AAAA,IACA,IAAA,EAAM,gBAAA,CAAiB,eAAA,EAAiB,OAAA,EAAS,IAAI,CAAA;AAAA,IACrD,WAAA,EAAa,gBAAA,CAAiB,OAAA,EAAS,WAAA,EAAa,oBAAoB,CAAA;AAAA,IACxE,SAAS,mBAAA,CAAoB,cAAA,CAAe,OAAA,EAAS,OAAA,EAAS,SAAS,gBAAgB;AAAA,GACzF;AAEA,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,SAAA,GAAY,IAAA;AAEhB,IAAA,OAAO,kBAAkB,CAAA,CAAE,IAAA,CAAK,CAAC,MAAA,KAAW;AAC1C,MAAA,IAAI,SAAA,EAAW,QAAA,CAAS,MAAM,MAAA,CAAO,OAAkC,CAAA;AAAA,IACzE,CAAC,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,KAAA;AAAA,IACd,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,IAAI,CAAC,OAAO,OAAO,IAAA;AAEnB,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,aAAA;AAAA,MACT,MAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,KAAA;AAAA,MACL,QAAQ,MAAA,IAAU;AAAA;AAAA,GACpB;AAEJ","file":"chunk-M52ZCIP3.js","sourcesContent":["\"use client\";\nimport React from \"react\";\nimport type { ApexOptions } from \"apexcharts\";\n\ntype ReactApexChartProps = {\n options: ApexOptions;\n series: ApexAxisChartSeries;\n type: \"bar\" | \"area\";\n height: number;\n};\ntype ReactApexChartComponent = React.ComponentType<ReactApexChartProps>;\n\nexport interface BarChartProps {\n series?: ApexAxisChartSeries;\n categories?: string[];\n colors?: string[];\n height?: number;\n horizontal?: boolean;\n showBarValues?: boolean;\n showBarPercentages?: boolean;\n minBarPercentage?: number;\n percentageMode?: \"total\" | \"category\";\n barValueFormatter?: (value: number, context: BarChartLabelContext) => string;\n barPercentageFormatter?: (\n percentage: number,\n value: number,\n context: BarChartLabelContext\n ) => string;\n options?: ApexOptions;\n}\n\nexport interface BarChartLabelContext {\n seriesIndex: number;\n dataPointIndex: number;\n seriesName?: string;\n category?: string;\n total: number;\n}\n\nconst defaultOptions: ApexOptions = {\n colors: [\"#465fff\"],\n chart: {\n fontFamily: \"Outfit, sans-serif\",\n type: \"bar\",\n height: 180,\n toolbar: {\n show: false,\n },\n },\n plotOptions: {\n bar: {\n horizontal: false,\n columnWidth: \"39%\",\n borderRadius: 5,\n borderRadiusApplication: \"end\",\n },\n },\n dataLabels: {\n enabled: false,\n },\n // No transparent stroke around the columns: it shrinks and shifts the\n // painted bar inside its allocated slot, so the hover highlight band\n // (crosshairs width \"barWidth\" = the allocated width) would render wider\n // than — and offset from — the visible bar.\n stroke: {\n show: false,\n },\n xaxis: {\n categories: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n axisBorder: {\n show: false,\n },\n axisTicks: {\n show: false,\n },\n // Match the hover highlight band to the bar width (the default band spans\n // the whole category slot, looking ~3x wider than the 39% columns).\n crosshairs: {\n width: \"barWidth\",\n },\n },\n legend: {\n show: true,\n position: \"top\",\n horizontalAlign: \"left\",\n fontFamily: \"Outfit\",\n // Rounded, border-less swatches that echo the column styling. ApexCharts\n // sets the marker span's `color` to the series color, so `currentColor`\n // picks it up; `customHTML` lets us round the corners (the built-in shapes\n // are sharp SVG paths that CSS border-radius can't touch).\n markers: {\n size: 7,\n strokeWidth: 0,\n customHTML: () =>\n '<span style=\"display:block;height:100%;width:100%;border-radius:3px;background:currentColor\"></span>',\n },\n },\n yaxis: {\n title: {\n text: undefined,\n },\n },\n grid: {\n yaxis: {\n lines: {\n show: true,\n },\n },\n },\n fill: {\n opacity: 1,\n },\n tooltip: {\n x: {\n show: false,\n },\n y: {\n formatter: (val: number) => `${val}`,\n },\n },\n};\n\nconst defaultSeries: ApexAxisChartSeries = [\n {\n name: \"Sales\",\n data: [168, 385, 201, 298, 187, 195, 291, 110, 215, 390, 280, 112],\n },\n];\n\nconst horizontalGridOptions: ApexOptions[\"grid\"] = {\n borderColor: \"transparent\",\n xaxis: {\n lines: {\n show: false,\n },\n },\n yaxis: {\n lines: {\n show: false,\n },\n },\n};\n\nfunction mergeGridOptions(\n base: ApexOptions[\"grid\"],\n override: ApexOptions[\"grid\"]\n): ApexOptions[\"grid\"] {\n return {\n ...base,\n ...override,\n xaxis: {\n ...base?.xaxis,\n ...override?.xaxis,\n lines: {\n ...base?.xaxis?.lines,\n ...override?.xaxis?.lines,\n },\n },\n yaxis: {\n ...base?.yaxis,\n ...override?.yaxis,\n lines: {\n ...base?.yaxis?.lines,\n ...override?.yaxis?.lines,\n },\n },\n };\n}\n\nfunction getDataValue(value: unknown): number | null {\n if (typeof value === \"number\") return value;\n if (Array.isArray(value) && typeof value[1] === \"number\") return value[1];\n if (value && typeof value === \"object\" && \"y\" in value) {\n const y = (value as { y: unknown }).y;\n return typeof y === \"number\" ? y : null;\n }\n return null;\n}\n\nfunction getValueMatrix(series: ApexAxisChartSeries): number[][] {\n return series.map((item) => item.data.map((value) => getDataValue(value) ?? 0));\n}\n\nfunction getSeriesTotal(matrix: number[][]): number {\n return matrix.reduce(\n (seriesTotal, data) => seriesTotal + data.reduce((total, value) => total + value, 0),\n 0\n );\n}\n\nfunction getCategoryTotal(matrix: number[][], dataPointIndex: number): number {\n return matrix.reduce((total, data) => total + (data[dataPointIndex] ?? 0), 0);\n}\n\nfunction getMaxValue(matrix: number[][]): number {\n return matrix.reduce(\n (max, data) => Math.max(max, ...data.map((value) => Math.max(0, value))),\n 0\n );\n}\n\nfunction setDataValue(value: unknown, nextValue: number): unknown {\n if (typeof value === \"number\") return nextValue;\n if (Array.isArray(value)) return [value[0], nextValue, ...value.slice(2)];\n if (value && typeof value === \"object\" && \"y\" in value) {\n return { ...value, y: nextValue };\n }\n return value;\n}\n\nfunction applyMinimumBarValue(\n series: ApexAxisChartSeries,\n minimumValue: number\n): ApexAxisChartSeries {\n return series.map((item) => ({\n ...item,\n data: item.data.map((value) =>\n getDataValue(value) === 0 ? setDataValue(value, minimumValue) : value\n ) as typeof item.data,\n }));\n}\n\nfunction mergeDataLabels(\n base: ApexOptions[\"dataLabels\"],\n override: ApexOptions[\"dataLabels\"],\n generated: ApexOptions[\"dataLabels\"]\n): ApexOptions[\"dataLabels\"] {\n return {\n ...base,\n ...override,\n ...generated,\n style: {\n ...base?.style,\n ...override?.style,\n ...generated?.style,\n },\n background: {\n ...base?.background,\n ...override?.background,\n ...generated?.background,\n },\n };\n}\n\nfunction mergeTooltipOptions(\n base: ApexOptions[\"tooltip\"],\n override: ApexOptions[\"tooltip\"],\n generated: ApexOptions[\"tooltip\"]\n): ApexOptions[\"tooltip\"] {\n const baseY = Array.isArray(base?.y) ? undefined : base?.y;\n const overrideY = Array.isArray(override?.y) ? undefined : override?.y;\n const generatedY = Array.isArray(generated?.y) ? undefined : generated?.y;\n\n return {\n ...base,\n ...override,\n ...generated,\n x: {\n ...base?.x,\n ...override?.x,\n ...generated?.x,\n },\n y: {\n ...baseY,\n ...overrideY,\n ...generatedY,\n },\n };\n}\n\nfunction mergeAnnotations(\n override: ApexOptions[\"annotations\"],\n generated: ApexOptions[\"annotations\"]\n): ApexOptions[\"annotations\"] | undefined {\n if (!override && !generated) return undefined;\n return {\n ...override,\n ...generated,\n points: [...(override?.points ?? []), ...(generated?.points ?? [])],\n };\n}\n\nexport const BarChart: React.FC<BarChartProps> = ({\n series,\n categories,\n colors,\n height,\n horizontal,\n showBarValues = false,\n showBarPercentages = false,\n minBarPercentage = 2,\n percentageMode = \"total\",\n barValueFormatter,\n barPercentageFormatter,\n options,\n}) => {\n const [Chart, setChart] = React.useState<ReactApexChartComponent | null>(null);\n const effectiveSeries = series ?? defaultSeries;\n const effectiveCategories =\n categories ?? (options?.xaxis?.categories as string[] | undefined);\n const valueMatrix = getValueMatrix(effectiveSeries);\n const seriesTotal = getSeriesTotal(valueMatrix);\n const isHorizontal = horizontal ?? (options?.plotOptions?.bar?.horizontal === true);\n const hasGeneratedLabels = showBarValues || showBarPercentages;\n const maxValue = getMaxValue(valueMatrix);\n const minimumValueScale = maxValue > 0 ? maxValue : 100;\n const minimumBarValue = minimumValueScale * (Math.max(0, minBarPercentage) / 100);\n const hasMinimumBarValue = isHorizontal && minimumBarValue > 0;\n const chartSeries = hasMinimumBarValue\n ? applyMinimumBarValue(effectiveSeries, minimumBarValue)\n : effectiveSeries;\n const chartValueMatrix = getValueMatrix(chartSeries);\n const baseGridOptions = isHorizontal\n ? mergeGridOptions(defaultOptions.grid, horizontalGridOptions)\n : defaultOptions.grid;\n const getLabelContext = (\n seriesIndex: number,\n dataPointIndex: number,\n total: number\n ): BarChartLabelContext => ({\n seriesIndex,\n dataPointIndex,\n seriesName: effectiveSeries[seriesIndex]?.name,\n category: effectiveCategories?.[dataPointIndex],\n total,\n });\n const generatedDataLabels: ApexOptions[\"dataLabels\"] | undefined = hasGeneratedLabels\n ? {\n enabled: true,\n textAnchor: \"middle\",\n offsetX: 0,\n offsetY: 0,\n background: {\n enabled: false,\n },\n style: {\n fontSize: \"12px\",\n fontWeight: 600,\n colors: [showBarPercentages ? \"#ffffff\" : \"#344054\"],\n },\n formatter: (_value, opts) => {\n const seriesIndex = opts?.seriesIndex ?? 0;\n const dataPointIndex = opts?.dataPointIndex ?? 0;\n const numericValue = valueMatrix[seriesIndex]?.[dataPointIndex] ?? 0;\n const total =\n percentageMode === \"category\"\n ? getCategoryTotal(valueMatrix, dataPointIndex)\n : seriesTotal;\n const context = getLabelContext(seriesIndex, dataPointIndex, total);\n\n if (showBarPercentages) {\n const percentage = total > 0 ? (numericValue / total) * 100 : 0;\n return barPercentageFormatter\n ? barPercentageFormatter(percentage, numericValue, context)\n : `${Math.round(percentage)}%`;\n }\n\n return barValueFormatter\n ? barValueFormatter(numericValue, context)\n : `${numericValue}`;\n },\n }\n : undefined;\n const generatedAnnotations: ApexOptions[\"annotations\"] | undefined =\n isHorizontal && showBarValues\n ? {\n points: effectiveSeries.flatMap((item, seriesIndex) =>\n item.data.map((dataPoint, dataPointIndex) => {\n const value = getDataValue(dataPoint) ?? 0;\n const chartValue = chartValueMatrix[seriesIndex]?.[dataPointIndex] ?? value;\n const total =\n percentageMode === \"category\"\n ? getCategoryTotal(valueMatrix, dataPointIndex)\n : seriesTotal;\n const context = getLabelContext(seriesIndex, dataPointIndex, total);\n return {\n x: chartValue,\n y: dataPointIndex,\n seriesIndex,\n marker: {\n size: 0,\n },\n label: {\n text: barValueFormatter ? barValueFormatter(value, context) : `${value}`,\n borderWidth: 0,\n offsetY: -12,\n style: {\n background: \"transparent\",\n color: \"#344054\",\n fontSize: \"12px\",\n fontWeight: 600,\n padding: {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n },\n },\n },\n };\n })\n ),\n }\n : undefined;\n const generatedTooltip: ApexOptions[\"tooltip\"] | undefined = hasMinimumBarValue\n ? {\n y: {\n formatter: (_value, opts) => {\n const originalValue =\n valueMatrix[opts?.seriesIndex ?? 0]?.[opts?.dataPointIndex ?? 0] ?? 0;\n const overrideY = Array.isArray(options?.tooltip?.y) ? undefined : options?.tooltip?.y;\n const defaultY = Array.isArray(defaultOptions.tooltip?.y)\n ? undefined\n : defaultOptions.tooltip?.y;\n const formatter = overrideY?.formatter ?? defaultY?.formatter;\n return formatter ? formatter(originalValue, opts) : `${originalValue}`;\n },\n },\n }\n : undefined;\n const mergedOptions: ApexOptions = {\n ...defaultOptions,\n ...options,\n colors: colors ?? options?.colors ?? defaultOptions.colors,\n chart: {\n ...defaultOptions.chart,\n ...options?.chart,\n height: height ?? options?.chart?.height ?? defaultOptions.chart?.height,\n },\n plotOptions: {\n ...defaultOptions.plotOptions,\n ...options?.plotOptions,\n bar: {\n ...defaultOptions.plotOptions?.bar,\n ...options?.plotOptions?.bar,\n horizontal: isHorizontal,\n ...(hasGeneratedLabels && {\n dataLabels: {\n ...options?.plotOptions?.bar?.dataLabels,\n position: showBarPercentages ? \"center\" : \"top\",\n },\n }),\n },\n },\n dataLabels: mergeDataLabels(\n defaultOptions.dataLabels,\n options?.dataLabels,\n generatedDataLabels\n ),\n xaxis: {\n ...defaultOptions.xaxis,\n ...options?.xaxis,\n categories:\n categories ??\n options?.xaxis?.categories ??\n defaultOptions.xaxis?.categories,\n ...(hasMinimumBarValue &&\n options?.xaxis?.max === undefined && {\n max: minimumValueScale,\n }),\n },\n grid: mergeGridOptions(baseGridOptions, options?.grid),\n annotations: mergeAnnotations(options?.annotations, generatedAnnotations),\n tooltip: mergeTooltipOptions(defaultOptions.tooltip, options?.tooltip, generatedTooltip),\n };\n\n React.useEffect(() => {\n let isMounted = true;\n\n import(\"react-apexcharts\").then((module) => {\n if (isMounted) setChart(() => module.default as ReactApexChartComponent);\n });\n\n return () => {\n isMounted = false;\n };\n }, []);\n\n if (!Chart) return null;\n\n return (\n <Chart\n options={mergedOptions}\n series={chartSeries}\n type=\"bar\"\n height={height ?? 180}\n />\n );\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Charts/BarChart.tsx"],"names":["React","jsx"],"mappings":"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","file":"chunk-RWM5MGRP.cjs","sourcesContent":["\"use client\";\nimport React from \"react\";\nimport type { ApexOptions } from \"apexcharts\";\n\ntype ReactApexChartProps = {\n options: ApexOptions;\n series: ApexAxisChartSeries;\n type: \"bar\" | \"area\";\n height: number;\n};\ntype ReactApexChartComponent = React.ComponentType<ReactApexChartProps>;\n\nexport interface BarChartProps {\n series?: ApexAxisChartSeries;\n categories?: string[];\n colors?: string[];\n height?: number;\n horizontal?: boolean;\n showBarValues?: boolean;\n showBarPercentages?: boolean;\n minBarPercentage?: number;\n percentageMode?: \"total\" | \"category\";\n barValueFormatter?: (value: number, context: BarChartLabelContext) => string;\n barPercentageFormatter?: (\n percentage: number,\n value: number,\n context: BarChartLabelContext\n ) => string;\n options?: ApexOptions;\n}\n\nexport interface BarChartLabelContext {\n seriesIndex: number;\n dataPointIndex: number;\n seriesName?: string;\n category?: string;\n total: number;\n}\n\nconst defaultOptions: ApexOptions = {\n colors: [\"#465fff\"],\n chart: {\n fontFamily: \"Outfit, sans-serif\",\n type: \"bar\",\n height: 180,\n toolbar: {\n show: false,\n },\n },\n plotOptions: {\n bar: {\n horizontal: false,\n columnWidth: \"39%\",\n borderRadius: 5,\n borderRadiusApplication: \"end\",\n },\n },\n dataLabels: {\n enabled: false,\n },\n // No transparent stroke around the columns: it shrinks and shifts the\n // painted bar inside its allocated slot, so the hover highlight band\n // (crosshairs width \"barWidth\" = the allocated width) would render wider\n // than — and offset from — the visible bar.\n stroke: {\n show: false,\n },\n xaxis: {\n categories: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n axisBorder: {\n show: false,\n },\n axisTicks: {\n show: false,\n },\n // Match the hover highlight band to the bar width (the default band spans\n // the whole category slot, looking ~3x wider than the 39% columns).\n crosshairs: {\n width: \"barWidth\",\n },\n },\n legend: {\n show: true,\n position: \"top\",\n horizontalAlign: \"left\",\n fontFamily: \"Outfit\",\n // Rounded, border-less swatches that echo the column styling. ApexCharts\n // sets the marker span's `color` to the series color, so `currentColor`\n // picks it up; `customHTML` lets us round the corners (the built-in shapes\n // are sharp SVG paths that CSS border-radius can't touch).\n markers: {\n size: 7,\n strokeWidth: 0,\n customHTML: () =>\n '<span style=\"display:block;height:100%;width:100%;border-radius:3px;background:currentColor\"></span>',\n },\n },\n yaxis: {\n title: {\n text: undefined,\n },\n },\n grid: {\n yaxis: {\n lines: {\n show: true,\n },\n },\n },\n fill: {\n opacity: 1,\n },\n tooltip: {\n x: {\n show: false,\n },\n y: {\n formatter: (val: number) => `${val}`,\n },\n },\n};\n\nconst defaultSeries: ApexAxisChartSeries = [\n {\n name: \"Sales\",\n data: [168, 385, 201, 298, 187, 195, 291, 110, 215, 390, 280, 112],\n },\n];\n\nconst horizontalGridOptions: ApexOptions[\"grid\"] = {\n borderColor: \"transparent\",\n xaxis: {\n lines: {\n show: false,\n },\n },\n yaxis: {\n lines: {\n show: false,\n },\n },\n};\n\nfunction mergeGridOptions(\n base: ApexOptions[\"grid\"],\n override: ApexOptions[\"grid\"]\n): ApexOptions[\"grid\"] {\n return {\n ...base,\n ...override,\n xaxis: {\n ...base?.xaxis,\n ...override?.xaxis,\n lines: {\n ...base?.xaxis?.lines,\n ...override?.xaxis?.lines,\n },\n },\n yaxis: {\n ...base?.yaxis,\n ...override?.yaxis,\n lines: {\n ...base?.yaxis?.lines,\n ...override?.yaxis?.lines,\n },\n },\n };\n}\n\nfunction getDataValue(value: unknown): number | null {\n if (typeof value === \"number\") return value;\n if (Array.isArray(value) && typeof value[1] === \"number\") return value[1];\n if (value && typeof value === \"object\" && \"y\" in value) {\n const y = (value as { y: unknown }).y;\n return typeof y === \"number\" ? y : null;\n }\n return null;\n}\n\nfunction getValueMatrix(series: ApexAxisChartSeries): number[][] {\n return series.map((item) => item.data.map((value) => getDataValue(value) ?? 0));\n}\n\nfunction getSeriesTotal(matrix: number[][]): number {\n return matrix.reduce(\n (seriesTotal, data) => seriesTotal + data.reduce((total, value) => total + value, 0),\n 0\n );\n}\n\nfunction getCategoryTotal(matrix: number[][], dataPointIndex: number): number {\n return matrix.reduce((total, data) => total + (data[dataPointIndex] ?? 0), 0);\n}\n\nfunction getMaxValue(matrix: number[][]): number {\n return matrix.reduce(\n (max, data) => Math.max(max, ...data.map((value) => Math.max(0, value))),\n 0\n );\n}\n\nfunction setDataValue(value: unknown, nextValue: number): unknown {\n if (typeof value === \"number\") return nextValue;\n if (Array.isArray(value)) return [value[0], nextValue, ...value.slice(2)];\n if (value && typeof value === \"object\" && \"y\" in value) {\n return { ...value, y: nextValue };\n }\n return value;\n}\n\nfunction applyMinimumBarValue(\n series: ApexAxisChartSeries,\n minimumValue: number\n): ApexAxisChartSeries {\n return series.map((item) => ({\n ...item,\n data: item.data.map((value) =>\n getDataValue(value) === 0 ? setDataValue(value, minimumValue) : value\n ) as typeof item.data,\n }));\n}\n\nfunction mergeDataLabels(\n base: ApexOptions[\"dataLabels\"],\n override: ApexOptions[\"dataLabels\"],\n generated: ApexOptions[\"dataLabels\"]\n): ApexOptions[\"dataLabels\"] {\n return {\n ...base,\n ...override,\n ...generated,\n style: {\n ...base?.style,\n ...override?.style,\n ...generated?.style,\n },\n background: {\n ...base?.background,\n ...override?.background,\n ...generated?.background,\n },\n };\n}\n\nfunction mergeTooltipOptions(\n base: ApexOptions[\"tooltip\"],\n override: ApexOptions[\"tooltip\"],\n generated: ApexOptions[\"tooltip\"]\n): ApexOptions[\"tooltip\"] {\n const baseY = Array.isArray(base?.y) ? undefined : base?.y;\n const overrideY = Array.isArray(override?.y) ? undefined : override?.y;\n const generatedY = Array.isArray(generated?.y) ? undefined : generated?.y;\n\n return {\n ...base,\n ...override,\n ...generated,\n x: {\n ...base?.x,\n ...override?.x,\n ...generated?.x,\n },\n y: {\n ...baseY,\n ...overrideY,\n ...generatedY,\n },\n };\n}\n\nfunction mergeAnnotations(\n override: ApexOptions[\"annotations\"],\n generated: ApexOptions[\"annotations\"]\n): ApexOptions[\"annotations\"] | undefined {\n if (!override && !generated) return undefined;\n return {\n ...override,\n ...generated,\n points: [...(override?.points ?? []), ...(generated?.points ?? [])],\n };\n}\n\nexport const BarChart: React.FC<BarChartProps> = ({\n series,\n categories,\n colors,\n height,\n horizontal,\n showBarValues = false,\n showBarPercentages = false,\n minBarPercentage = 2,\n percentageMode = \"total\",\n barValueFormatter,\n barPercentageFormatter,\n options,\n}) => {\n const [Chart, setChart] = React.useState<ReactApexChartComponent | null>(null);\n const effectiveSeries = series ?? defaultSeries;\n const effectiveCategories =\n categories ?? (options?.xaxis?.categories as string[] | undefined);\n const valueMatrix = getValueMatrix(effectiveSeries);\n const seriesTotal = getSeriesTotal(valueMatrix);\n const isHorizontal = horizontal ?? (options?.plotOptions?.bar?.horizontal === true);\n const hasGeneratedLabels = showBarValues || showBarPercentages;\n const maxValue = getMaxValue(valueMatrix);\n const minimumValueScale = maxValue > 0 ? maxValue : 100;\n const minimumBarValue = minimumValueScale * (Math.max(0, minBarPercentage) / 100);\n const hasMinimumBarValue = isHorizontal && minimumBarValue > 0;\n const chartSeries = hasMinimumBarValue\n ? applyMinimumBarValue(effectiveSeries, minimumBarValue)\n : effectiveSeries;\n const chartValueMatrix = getValueMatrix(chartSeries);\n const baseGridOptions = isHorizontal\n ? mergeGridOptions(defaultOptions.grid, horizontalGridOptions)\n : defaultOptions.grid;\n const getLabelContext = (\n seriesIndex: number,\n dataPointIndex: number,\n total: number\n ): BarChartLabelContext => ({\n seriesIndex,\n dataPointIndex,\n seriesName: effectiveSeries[seriesIndex]?.name,\n category: effectiveCategories?.[dataPointIndex],\n total,\n });\n const generatedDataLabels: ApexOptions[\"dataLabels\"] | undefined = hasGeneratedLabels\n ? {\n enabled: true,\n textAnchor: \"middle\",\n offsetX: 0,\n offsetY: 0,\n background: {\n enabled: false,\n },\n style: {\n fontSize: \"12px\",\n fontWeight: 600,\n colors: [showBarPercentages ? \"#ffffff\" : \"#344054\"],\n },\n formatter: (_value, opts) => {\n const seriesIndex = opts?.seriesIndex ?? 0;\n const dataPointIndex = opts?.dataPointIndex ?? 0;\n const numericValue = valueMatrix[seriesIndex]?.[dataPointIndex] ?? 0;\n const total =\n percentageMode === \"category\"\n ? getCategoryTotal(valueMatrix, dataPointIndex)\n : seriesTotal;\n const context = getLabelContext(seriesIndex, dataPointIndex, total);\n\n if (showBarPercentages) {\n const percentage = total > 0 ? (numericValue / total) * 100 : 0;\n return barPercentageFormatter\n ? barPercentageFormatter(percentage, numericValue, context)\n : `${Math.round(percentage)}%`;\n }\n\n return barValueFormatter\n ? barValueFormatter(numericValue, context)\n : `${numericValue}`;\n },\n }\n : undefined;\n const generatedAnnotations: ApexOptions[\"annotations\"] | undefined =\n isHorizontal && showBarValues\n ? {\n points: effectiveSeries.flatMap((item, seriesIndex) =>\n item.data.map((dataPoint, dataPointIndex) => {\n const value = getDataValue(dataPoint) ?? 0;\n const chartValue = chartValueMatrix[seriesIndex]?.[dataPointIndex] ?? value;\n const total =\n percentageMode === \"category\"\n ? getCategoryTotal(valueMatrix, dataPointIndex)\n : seriesTotal;\n const context = getLabelContext(seriesIndex, dataPointIndex, total);\n return {\n x: chartValue,\n y: dataPointIndex,\n seriesIndex,\n marker: {\n size: 0,\n },\n label: {\n text: barValueFormatter ? barValueFormatter(value, context) : `${value}`,\n borderWidth: 0,\n offsetY: -12,\n style: {\n background: \"transparent\",\n color: \"#344054\",\n fontSize: \"12px\",\n fontWeight: 600,\n padding: {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n },\n },\n },\n };\n })\n ),\n }\n : undefined;\n const generatedTooltip: ApexOptions[\"tooltip\"] | undefined = hasMinimumBarValue\n ? {\n y: {\n formatter: (_value, opts) => {\n const originalValue =\n valueMatrix[opts?.seriesIndex ?? 0]?.[opts?.dataPointIndex ?? 0] ?? 0;\n const overrideY = Array.isArray(options?.tooltip?.y) ? undefined : options?.tooltip?.y;\n const defaultY = Array.isArray(defaultOptions.tooltip?.y)\n ? undefined\n : defaultOptions.tooltip?.y;\n const formatter = overrideY?.formatter ?? defaultY?.formatter;\n return formatter ? formatter(originalValue, opts) : `${originalValue}`;\n },\n },\n }\n : undefined;\n const mergedOptions: ApexOptions = {\n ...defaultOptions,\n ...options,\n colors: colors ?? options?.colors ?? defaultOptions.colors,\n chart: {\n ...defaultOptions.chart,\n ...options?.chart,\n height: height ?? options?.chart?.height ?? defaultOptions.chart?.height,\n },\n plotOptions: {\n ...defaultOptions.plotOptions,\n ...options?.plotOptions,\n bar: {\n ...defaultOptions.plotOptions?.bar,\n ...options?.plotOptions?.bar,\n horizontal: isHorizontal,\n ...(hasGeneratedLabels && {\n dataLabels: {\n ...options?.plotOptions?.bar?.dataLabels,\n position: showBarPercentages ? \"center\" : \"top\",\n },\n }),\n },\n },\n dataLabels: mergeDataLabels(\n defaultOptions.dataLabels,\n options?.dataLabels,\n generatedDataLabels\n ),\n xaxis: {\n ...defaultOptions.xaxis,\n ...options?.xaxis,\n categories:\n categories ??\n options?.xaxis?.categories ??\n defaultOptions.xaxis?.categories,\n ...(hasMinimumBarValue &&\n options?.xaxis?.max === undefined && {\n max: minimumValueScale,\n }),\n },\n grid: mergeGridOptions(baseGridOptions, options?.grid),\n annotations: mergeAnnotations(options?.annotations, generatedAnnotations),\n tooltip: mergeTooltipOptions(defaultOptions.tooltip, options?.tooltip, generatedTooltip),\n };\n\n React.useEffect(() => {\n let isMounted = true;\n\n import(\"react-apexcharts\").then((module) => {\n if (isMounted) setChart(() => module.default as ReactApexChartComponent);\n });\n\n return () => {\n isMounted = false;\n };\n }, []);\n\n if (!Chart) return null;\n\n return (\n <Chart\n options={mergedOptions}\n series={chartSeries}\n type=\"bar\"\n height={height ?? 180}\n />\n );\n};\n"]}
|