@andreagiugni/tailwind-dashboard-ui 1.0.17 → 1.0.19

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.
@@ -258,44 +258,124 @@ function getChartElement(chartContext) {
258
258
  const element = chartContext.el;
259
259
  return element instanceof Element ? element : null;
260
260
  }
261
+ function getPathValue(path, fallbackValue) {
262
+ const rawValue = path.getAttribute("val");
263
+ if (rawValue == null || rawValue === "") return fallbackValue;
264
+ const value = Number(rawValue);
265
+ return Number.isFinite(value) ? value : fallbackValue;
266
+ }
267
+ function getHorizontalBarGroups(root) {
268
+ const groups = Array.from(root.querySelectorAll(".apexcharts-series")).map((seriesElement) => ({
269
+ paths: Array.from(seriesElement.querySelectorAll(".apexcharts-bar-area")),
270
+ labels: Array.from(seriesElement.querySelectorAll(".apexcharts-datalabel"))
271
+ })).filter((group) => group.paths.length > 0);
272
+ if (groups.length > 0) return groups;
273
+ return [
274
+ {
275
+ paths: Array.from(root.querySelectorAll(".apexcharts-bar-area")),
276
+ labels: Array.from(root.querySelectorAll(".apexcharts-datalabel"))
277
+ }
278
+ ];
279
+ }
261
280
  function applyMinimumHorizontalBarWidth(chartContext, minBarWidth, valueMatrix) {
262
281
  const root = getChartElement(chartContext);
263
282
  if (!root) return;
264
283
  root.querySelectorAll("[data-taildashboard-min-bar]").forEach((element) => element.remove());
265
284
  if (minBarWidth <= 0) return;
266
285
  const values = valueMatrix.flat();
267
- const paths = Array.from(root.querySelectorAll(".apexcharts-bar-area"));
286
+ const groups = getHorizontalBarGroups(root);
268
287
  const documentRef = root.ownerDocument;
269
- paths.forEach((path, index) => {
270
- const value = values[index] ?? 0;
271
- if (value < 0 || typeof path.getBBox !== "function") return;
272
- const box = path.getBBox();
273
- if (box.width >= minBarWidth || box.height <= 0) return;
274
- const overlay = documentRef.createElementNS("http://www.w3.org/2000/svg", "rect");
275
- const radius = Math.min(5, box.height / 2, minBarWidth / 2);
276
- overlay.setAttribute("data-taildashboard-min-bar", "true");
277
- overlay.setAttribute("x", `${box.x}`);
278
- overlay.setAttribute("y", `${box.y}`);
279
- overlay.setAttribute("width", `${minBarWidth}`);
280
- overlay.setAttribute("height", `${box.height}`);
281
- overlay.setAttribute("rx", `${radius}`);
282
- overlay.setAttribute("fill", path.getAttribute("fill") ?? path.style.fill ?? "currentColor");
283
- overlay.setAttribute("opacity", path.getAttribute("opacity") ?? path.style.opacity ?? "1");
284
- overlay.style.pointerEvents = "none";
285
- path.parentNode?.insertBefore(overlay, path.nextSibling);
288
+ let flatIndex = 0;
289
+ groups.forEach(({ paths }) => {
290
+ paths.forEach((path) => {
291
+ const value = getPathValue(path, values[flatIndex] ?? 0);
292
+ flatIndex += 1;
293
+ if (value < 0 || typeof path.getBBox !== "function") return;
294
+ const box = path.getBBox();
295
+ if (box.width >= minBarWidth || box.height <= 0) return;
296
+ const overlay = documentRef.createElementNS("http://www.w3.org/2000/svg", "rect");
297
+ const radius = Math.min(5, box.height / 2, minBarWidth / 2);
298
+ overlay.setAttribute("data-taildashboard-min-bar", "true");
299
+ overlay.setAttribute("x", `${box.x}`);
300
+ overlay.setAttribute("y", `${box.y}`);
301
+ overlay.setAttribute("width", `${minBarWidth}`);
302
+ overlay.setAttribute("height", `${box.height}`);
303
+ overlay.setAttribute("rx", `${radius}`);
304
+ overlay.setAttribute("fill", path.getAttribute("fill") ?? path.style.fill ?? "currentColor");
305
+ overlay.setAttribute("opacity", path.getAttribute("opacity") ?? path.style.opacity ?? "1");
306
+ overlay.style.pointerEvents = "none";
307
+ path.parentNode?.insertBefore(overlay, path.nextSibling);
308
+ });
286
309
  });
287
310
  }
288
- function scheduleMinimumHorizontalBarWidth(chartContext, minBarWidth, valueMatrix) {
289
- applyMinimumHorizontalBarWidth(chartContext, minBarWidth, valueMatrix);
311
+ function centerHorizontalBarDataLabels(chartContext, minBarWidth, valueMatrix) {
312
+ const root = getChartElement(chartContext);
313
+ if (!root) return;
314
+ const values = valueMatrix.flat();
315
+ const groups = getHorizontalBarGroups(root);
316
+ let flatIndex = 0;
317
+ groups.forEach(({ paths, labels }) => {
318
+ paths.forEach((path, index) => {
319
+ const label = labels[index];
320
+ const value = getPathValue(path, values[flatIndex] ?? 0);
321
+ flatIndex += 1;
322
+ if (!label || value < 0 || typeof path.getBBox !== "function") return;
323
+ const box = path.getBBox();
324
+ if (box.height <= 0) return;
325
+ const width = box.width < minBarWidth ? minBarWidth : box.width;
326
+ const centerX = box.x + width / 2;
327
+ const centerY = box.y + box.height / 2;
328
+ label.setAttribute("x", `${centerX}`);
329
+ label.setAttribute("y", `${centerY}`);
330
+ label.setAttribute("text-anchor", "middle");
331
+ label.setAttribute("dominant-baseline", "middle");
332
+ label.setAttribute("alignment-baseline", "middle");
333
+ label.querySelectorAll("tspan").forEach((tspan) => {
334
+ tspan.setAttribute("x", `${centerX}`);
335
+ tspan.setAttribute("y", `${centerY}`);
336
+ tspan.removeAttribute("dx");
337
+ tspan.removeAttribute("dy");
338
+ });
339
+ });
340
+ });
341
+ }
342
+ function runHorizontalBarDomAdjustments(chartContext, minBarWidth, valueMatrix, shouldApplyMinBarWidth, shouldCenterDataLabels) {
343
+ if (shouldApplyMinBarWidth) {
344
+ applyMinimumHorizontalBarWidth(chartContext, minBarWidth, valueMatrix);
345
+ }
346
+ if (shouldCenterDataLabels) {
347
+ centerHorizontalBarDataLabels(chartContext, minBarWidth, valueMatrix);
348
+ }
349
+ }
350
+ function scheduleHorizontalBarDomAdjustments(chartContext, minBarWidth, valueMatrix, shouldApplyMinBarWidth, shouldCenterDataLabels) {
351
+ runHorizontalBarDomAdjustments(
352
+ chartContext,
353
+ minBarWidth,
354
+ valueMatrix,
355
+ shouldApplyMinBarWidth,
356
+ shouldCenterDataLabels
357
+ );
290
358
  if (typeof window === "undefined" || typeof window.requestAnimationFrame !== "function") return;
291
359
  window.requestAnimationFrame(() => {
292
- applyMinimumHorizontalBarWidth(chartContext, minBarWidth, valueMatrix);
360
+ runHorizontalBarDomAdjustments(
361
+ chartContext,
362
+ minBarWidth,
363
+ valueMatrix,
364
+ shouldApplyMinBarWidth,
365
+ shouldCenterDataLabels
366
+ );
293
367
  });
294
368
  }
295
- function composeMinimumBarWidthEvent(userEvent, minBarWidth, valueMatrix) {
369
+ function composeHorizontalBarLifecycleEvent(userEvent, minBarWidth, valueMatrix, shouldApplyMinBarWidth, shouldCenterDataLabels) {
296
370
  return (chart, eventOptions) => {
297
371
  userEvent?.(chart, eventOptions);
298
- scheduleMinimumHorizontalBarWidth(chart, minBarWidth, valueMatrix);
372
+ scheduleHorizontalBarDomAdjustments(
373
+ chart,
374
+ minBarWidth,
375
+ valueMatrix,
376
+ shouldApplyMinBarWidth,
377
+ shouldCenterDataLabels
378
+ );
299
379
  };
300
380
  }
301
381
  var BarChart = ({
@@ -330,6 +410,8 @@ var BarChart = ({
330
410
  const hasGeneratedLabels = showBarValues || showBarPercentages;
331
411
  const resolvedMinBarWidth = minBarWidth ?? (minBarPercentage === 0 ? 0 : 30);
332
412
  const hasMinimumBarWidth = isHorizontal && resolvedMinBarWidth > 0;
413
+ const shouldCenterDataLabels = isHorizontal && showBarPercentages;
414
+ const hasHorizontalDomAdjustments = hasMinimumBarWidth || shouldCenterDataLabels;
333
415
  const baseGridOptions = isHorizontal ? mergeGridOptions(defaultOptions.grid, horizontalGridOptions) : defaultOptions.grid;
334
416
  const getLabelContext = (seriesIndex, dataPointIndex, total) => ({
335
417
  seriesIndex,
@@ -399,22 +481,28 @@ var BarChart = ({
399
481
  )
400
482
  } : void 0;
401
483
  const userChartEvents = options?.chart?.events;
402
- const generatedChartEvents = hasMinimumBarWidth ? {
484
+ const generatedChartEvents = hasHorizontalDomAdjustments ? {
403
485
  ...userChartEvents,
404
- mounted: composeMinimumBarWidthEvent(
486
+ mounted: composeHorizontalBarLifecycleEvent(
405
487
  userChartEvents?.mounted,
406
488
  resolvedMinBarWidth,
407
- valueMatrix
489
+ valueMatrix,
490
+ hasMinimumBarWidth,
491
+ shouldCenterDataLabels
408
492
  ),
409
- updated: composeMinimumBarWidthEvent(
493
+ updated: composeHorizontalBarLifecycleEvent(
410
494
  userChartEvents?.updated,
411
495
  resolvedMinBarWidth,
412
- valueMatrix
496
+ valueMatrix,
497
+ hasMinimumBarWidth,
498
+ shouldCenterDataLabels
413
499
  ),
414
- animationEnd: composeMinimumBarWidthEvent(
500
+ animationEnd: composeHorizontalBarLifecycleEvent(
415
501
  userChartEvents?.animationEnd,
416
502
  resolvedMinBarWidth,
417
- valueMatrix
503
+ valueMatrix,
504
+ hasMinimumBarWidth,
505
+ shouldCenterDataLabels
418
506
  )
419
507
  } : userChartEvents;
420
508
  const mergedOptions = {
@@ -490,5 +578,5 @@ var BarChart = ({
490
578
  };
491
579
 
492
580
  export { BarChart };
493
- //# sourceMappingURL=chunk-C7OCYM5S.js.map
494
- //# sourceMappingURL=chunk-C7OCYM5S.js.map
581
+ //# sourceMappingURL=chunk-MVPWVI5A.js.map
582
+ //# sourceMappingURL=chunk-MVPWVI5A.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Charts/BarChart.tsx"],"names":[],"mappings":"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","file":"chunk-MVPWVI5A.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 barColors?: string[];\n height?: number;\n horizontal?: boolean;\n showBarValues?: boolean;\n showBarPercentages?: boolean;\n minBarWidth?: number;\n /** @deprecated Use minBarWidth. Passing 0 still disables the minimum visual width. */\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 withDataPointColor(\n value: unknown,\n fillColor: string,\n dataPointIndex: number,\n categories?: string[]\n): unknown {\n if (Array.isArray(value)) {\n return {\n x: value[0],\n y: value[1],\n fillColor,\n };\n }\n\n if (value && typeof value === \"object\") {\n return {\n ...value,\n fillColor,\n };\n }\n\n return {\n x: categories?.[dataPointIndex] ?? dataPointIndex,\n y: value,\n fillColor,\n };\n}\n\nfunction applyBarColors(\n series: ApexAxisChartSeries,\n barColors: string[] | undefined,\n fallbackColors: string[] | undefined,\n categories?: string[]\n): ApexAxisChartSeries {\n if (!barColors?.length) return series;\n\n return series.map((item, seriesIndex) => {\n const fallbackColor =\n fallbackColors?.[seriesIndex] ?? fallbackColors?.[0] ?? defaultOptions.colors?.[0];\n\n return {\n ...item,\n data: item.data.map((value, dataPointIndex) =>\n withDataPointColor(\n value,\n barColors[dataPointIndex] ?? fallbackColor ?? \"#465fff\",\n dataPointIndex,\n categories\n )\n ) as typeof item.data,\n };\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\nfunction getChartElement(chartContext: unknown): Element | null {\n if (typeof Element === \"undefined\") return null;\n if (!chartContext || typeof chartContext !== \"object\" || !(\"el\" in chartContext)) return null;\n\n const element = (chartContext as { el?: unknown }).el;\n return element instanceof Element ? element : null;\n}\n\nfunction getPathValue(path: SVGPathElement, fallbackValue: number): number {\n const rawValue = path.getAttribute(\"val\");\n if (rawValue == null || rawValue === \"\") return fallbackValue;\n\n const value = Number(rawValue);\n return Number.isFinite(value) ? value : fallbackValue;\n}\n\nfunction getHorizontalBarGroups(root: Element): Array<{\n paths: SVGPathElement[];\n labels: SVGTextElement[];\n}> {\n const groups = Array.from(root.querySelectorAll(\".apexcharts-series\"))\n .map((seriesElement) => ({\n paths: Array.from(seriesElement.querySelectorAll<SVGPathElement>(\".apexcharts-bar-area\")),\n labels: Array.from(seriesElement.querySelectorAll<SVGTextElement>(\".apexcharts-datalabel\")),\n }))\n .filter((group) => group.paths.length > 0);\n\n if (groups.length > 0) return groups;\n\n return [\n {\n paths: Array.from(root.querySelectorAll<SVGPathElement>(\".apexcharts-bar-area\")),\n labels: Array.from(root.querySelectorAll<SVGTextElement>(\".apexcharts-datalabel\")),\n },\n ];\n}\n\nfunction applyMinimumHorizontalBarWidth(\n chartContext: unknown,\n minBarWidth: number,\n valueMatrix: number[][]\n) {\n const root = getChartElement(chartContext);\n if (!root) return;\n\n root\n .querySelectorAll(\"[data-taildashboard-min-bar]\")\n .forEach((element) => element.remove());\n\n if (minBarWidth <= 0) return;\n\n const values = valueMatrix.flat();\n const groups = getHorizontalBarGroups(root);\n const documentRef = root.ownerDocument;\n let flatIndex = 0;\n\n groups.forEach(({ paths }) => {\n paths.forEach((path) => {\n const value = getPathValue(path, values[flatIndex] ?? 0);\n flatIndex += 1;\n if (value < 0 || typeof path.getBBox !== \"function\") return;\n\n const box = path.getBBox();\n if (box.width >= minBarWidth || box.height <= 0) return;\n\n const overlay = documentRef.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n const radius = Math.min(5, box.height / 2, minBarWidth / 2);\n overlay.setAttribute(\"data-taildashboard-min-bar\", \"true\");\n overlay.setAttribute(\"x\", `${box.x}`);\n overlay.setAttribute(\"y\", `${box.y}`);\n overlay.setAttribute(\"width\", `${minBarWidth}`);\n overlay.setAttribute(\"height\", `${box.height}`);\n overlay.setAttribute(\"rx\", `${radius}`);\n overlay.setAttribute(\"fill\", path.getAttribute(\"fill\") ?? path.style.fill ?? \"currentColor\");\n overlay.setAttribute(\"opacity\", path.getAttribute(\"opacity\") ?? path.style.opacity ?? \"1\");\n overlay.style.pointerEvents = \"none\";\n path.parentNode?.insertBefore(overlay, path.nextSibling);\n });\n });\n}\n\nfunction centerHorizontalBarDataLabels(\n chartContext: unknown,\n minBarWidth: number,\n valueMatrix: number[][]\n) {\n const root = getChartElement(chartContext);\n if (!root) return;\n\n const values = valueMatrix.flat();\n const groups = getHorizontalBarGroups(root);\n let flatIndex = 0;\n\n groups.forEach(({ paths, labels }) => {\n paths.forEach((path, index) => {\n const label = labels[index];\n const value = getPathValue(path, values[flatIndex] ?? 0);\n flatIndex += 1;\n if (!label || value < 0 || typeof path.getBBox !== \"function\") return;\n\n const box = path.getBBox();\n if (box.height <= 0) return;\n\n const width = box.width < minBarWidth ? minBarWidth : box.width;\n const centerX = box.x + width / 2;\n const centerY = box.y + box.height / 2;\n\n label.setAttribute(\"x\", `${centerX}`);\n label.setAttribute(\"y\", `${centerY}`);\n label.setAttribute(\"text-anchor\", \"middle\");\n label.setAttribute(\"dominant-baseline\", \"middle\");\n label.setAttribute(\"alignment-baseline\", \"middle\");\n label.querySelectorAll(\"tspan\").forEach((tspan) => {\n tspan.setAttribute(\"x\", `${centerX}`);\n tspan.setAttribute(\"y\", `${centerY}`);\n tspan.removeAttribute(\"dx\");\n tspan.removeAttribute(\"dy\");\n });\n });\n });\n}\n\ntype ApexChartEvents = NonNullable<NonNullable<ApexOptions[\"chart\"]>[\"events\"]>;\ntype ApexLifecycleEvent = NonNullable<ApexChartEvents[\"mounted\"]>;\n\nfunction runHorizontalBarDomAdjustments(\n chartContext: unknown,\n minBarWidth: number,\n valueMatrix: number[][],\n shouldApplyMinBarWidth: boolean,\n shouldCenterDataLabels: boolean\n) {\n if (shouldApplyMinBarWidth) {\n applyMinimumHorizontalBarWidth(chartContext, minBarWidth, valueMatrix);\n }\n if (shouldCenterDataLabels) {\n centerHorizontalBarDataLabels(chartContext, minBarWidth, valueMatrix);\n }\n}\n\nfunction scheduleHorizontalBarDomAdjustments(\n chartContext: unknown,\n minBarWidth: number,\n valueMatrix: number[][],\n shouldApplyMinBarWidth: boolean,\n shouldCenterDataLabels: boolean\n) {\n runHorizontalBarDomAdjustments(\n chartContext,\n minBarWidth,\n valueMatrix,\n shouldApplyMinBarWidth,\n shouldCenterDataLabels\n );\n\n if (typeof window === \"undefined\" || typeof window.requestAnimationFrame !== \"function\") return;\n\n window.requestAnimationFrame(() => {\n runHorizontalBarDomAdjustments(\n chartContext,\n minBarWidth,\n valueMatrix,\n shouldApplyMinBarWidth,\n shouldCenterDataLabels\n );\n });\n}\n\nfunction composeHorizontalBarLifecycleEvent(\n userEvent: ApexLifecycleEvent | undefined,\n minBarWidth: number,\n valueMatrix: number[][],\n shouldApplyMinBarWidth: boolean,\n shouldCenterDataLabels: boolean\n): ApexLifecycleEvent {\n return (chart, eventOptions) => {\n userEvent?.(chart, eventOptions);\n scheduleHorizontalBarDomAdjustments(\n chart,\n minBarWidth,\n valueMatrix,\n shouldApplyMinBarWidth,\n shouldCenterDataLabels\n );\n };\n}\n\nexport const BarChart: React.FC<BarChartProps> = ({\n series,\n categories,\n colors,\n barColors,\n height,\n horizontal,\n showBarValues = false,\n showBarPercentages = false,\n minBarWidth,\n minBarPercentage,\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 effectiveColors = colors ?? options?.colors ?? defaultOptions.colors;\n const chartSeries = applyBarColors(\n effectiveSeries,\n barColors,\n effectiveColors as string[] | undefined,\n effectiveCategories\n );\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 resolvedMinBarWidth = minBarWidth ?? (minBarPercentage === 0 ? 0 : 30);\n const hasMinimumBarWidth = isHorizontal && resolvedMinBarWidth > 0;\n const shouldCenterDataLabels = isHorizontal && showBarPercentages;\n const hasHorizontalDomAdjustments = hasMinimumBarWidth || shouldCenterDataLabels;\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 total =\n percentageMode === \"category\"\n ? getCategoryTotal(valueMatrix, dataPointIndex)\n : seriesTotal;\n const context = getLabelContext(seriesIndex, dataPointIndex, total);\n return {\n x: value,\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 userChartEvents = options?.chart?.events;\n const generatedChartEvents: ApexChartEvents | undefined = hasHorizontalDomAdjustments\n ? {\n ...userChartEvents,\n mounted: composeHorizontalBarLifecycleEvent(\n userChartEvents?.mounted,\n resolvedMinBarWidth,\n valueMatrix,\n hasMinimumBarWidth,\n shouldCenterDataLabels\n ),\n updated: composeHorizontalBarLifecycleEvent(\n userChartEvents?.updated,\n resolvedMinBarWidth,\n valueMatrix,\n hasMinimumBarWidth,\n shouldCenterDataLabels\n ),\n animationEnd: composeHorizontalBarLifecycleEvent(\n userChartEvents?.animationEnd,\n resolvedMinBarWidth,\n valueMatrix,\n hasMinimumBarWidth,\n shouldCenterDataLabels\n ),\n }\n : userChartEvents;\n const mergedOptions: ApexOptions = {\n ...defaultOptions,\n ...options,\n colors: effectiveColors,\n chart: {\n ...defaultOptions.chart,\n ...options?.chart,\n events: generatedChartEvents,\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 },\n grid: mergeGridOptions(baseGridOptions, options?.grid),\n annotations: mergeAnnotations(options?.annotations, generatedAnnotations),\n tooltip: mergeTooltipOptions(defaultOptions.tooltip, options?.tooltip, undefined),\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"]}
@@ -264,44 +264,124 @@ function getChartElement(chartContext) {
264
264
  const element = chartContext.el;
265
265
  return element instanceof Element ? element : null;
266
266
  }
267
+ function getPathValue(path, fallbackValue) {
268
+ const rawValue = path.getAttribute("val");
269
+ if (rawValue == null || rawValue === "") return fallbackValue;
270
+ const value = Number(rawValue);
271
+ return Number.isFinite(value) ? value : fallbackValue;
272
+ }
273
+ function getHorizontalBarGroups(root) {
274
+ const groups = Array.from(root.querySelectorAll(".apexcharts-series")).map((seriesElement) => ({
275
+ paths: Array.from(seriesElement.querySelectorAll(".apexcharts-bar-area")),
276
+ labels: Array.from(seriesElement.querySelectorAll(".apexcharts-datalabel"))
277
+ })).filter((group) => group.paths.length > 0);
278
+ if (groups.length > 0) return groups;
279
+ return [
280
+ {
281
+ paths: Array.from(root.querySelectorAll(".apexcharts-bar-area")),
282
+ labels: Array.from(root.querySelectorAll(".apexcharts-datalabel"))
283
+ }
284
+ ];
285
+ }
267
286
  function applyMinimumHorizontalBarWidth(chartContext, minBarWidth, valueMatrix) {
268
287
  const root = getChartElement(chartContext);
269
288
  if (!root) return;
270
289
  root.querySelectorAll("[data-taildashboard-min-bar]").forEach((element) => element.remove());
271
290
  if (minBarWidth <= 0) return;
272
291
  const values = valueMatrix.flat();
273
- const paths = Array.from(root.querySelectorAll(".apexcharts-bar-area"));
292
+ const groups = getHorizontalBarGroups(root);
274
293
  const documentRef = root.ownerDocument;
275
- paths.forEach((path, index) => {
276
- const value = values[index] ?? 0;
277
- if (value < 0 || typeof path.getBBox !== "function") return;
278
- const box = path.getBBox();
279
- if (box.width >= minBarWidth || box.height <= 0) return;
280
- const overlay = documentRef.createElementNS("http://www.w3.org/2000/svg", "rect");
281
- const radius = Math.min(5, box.height / 2, minBarWidth / 2);
282
- overlay.setAttribute("data-taildashboard-min-bar", "true");
283
- overlay.setAttribute("x", `${box.x}`);
284
- overlay.setAttribute("y", `${box.y}`);
285
- overlay.setAttribute("width", `${minBarWidth}`);
286
- overlay.setAttribute("height", `${box.height}`);
287
- overlay.setAttribute("rx", `${radius}`);
288
- overlay.setAttribute("fill", path.getAttribute("fill") ?? path.style.fill ?? "currentColor");
289
- overlay.setAttribute("opacity", path.getAttribute("opacity") ?? path.style.opacity ?? "1");
290
- overlay.style.pointerEvents = "none";
291
- path.parentNode?.insertBefore(overlay, path.nextSibling);
294
+ let flatIndex = 0;
295
+ groups.forEach(({ paths }) => {
296
+ paths.forEach((path) => {
297
+ const value = getPathValue(path, values[flatIndex] ?? 0);
298
+ flatIndex += 1;
299
+ if (value < 0 || typeof path.getBBox !== "function") return;
300
+ const box = path.getBBox();
301
+ if (box.width >= minBarWidth || box.height <= 0) return;
302
+ const overlay = documentRef.createElementNS("http://www.w3.org/2000/svg", "rect");
303
+ const radius = Math.min(5, box.height / 2, minBarWidth / 2);
304
+ overlay.setAttribute("data-taildashboard-min-bar", "true");
305
+ overlay.setAttribute("x", `${box.x}`);
306
+ overlay.setAttribute("y", `${box.y}`);
307
+ overlay.setAttribute("width", `${minBarWidth}`);
308
+ overlay.setAttribute("height", `${box.height}`);
309
+ overlay.setAttribute("rx", `${radius}`);
310
+ overlay.setAttribute("fill", path.getAttribute("fill") ?? path.style.fill ?? "currentColor");
311
+ overlay.setAttribute("opacity", path.getAttribute("opacity") ?? path.style.opacity ?? "1");
312
+ overlay.style.pointerEvents = "none";
313
+ path.parentNode?.insertBefore(overlay, path.nextSibling);
314
+ });
292
315
  });
293
316
  }
294
- function scheduleMinimumHorizontalBarWidth(chartContext, minBarWidth, valueMatrix) {
295
- applyMinimumHorizontalBarWidth(chartContext, minBarWidth, valueMatrix);
317
+ function centerHorizontalBarDataLabels(chartContext, minBarWidth, valueMatrix) {
318
+ const root = getChartElement(chartContext);
319
+ if (!root) return;
320
+ const values = valueMatrix.flat();
321
+ const groups = getHorizontalBarGroups(root);
322
+ let flatIndex = 0;
323
+ groups.forEach(({ paths, labels }) => {
324
+ paths.forEach((path, index) => {
325
+ const label = labels[index];
326
+ const value = getPathValue(path, values[flatIndex] ?? 0);
327
+ flatIndex += 1;
328
+ if (!label || value < 0 || typeof path.getBBox !== "function") return;
329
+ const box = path.getBBox();
330
+ if (box.height <= 0) return;
331
+ const width = box.width < minBarWidth ? minBarWidth : box.width;
332
+ const centerX = box.x + width / 2;
333
+ const centerY = box.y + box.height / 2;
334
+ label.setAttribute("x", `${centerX}`);
335
+ label.setAttribute("y", `${centerY}`);
336
+ label.setAttribute("text-anchor", "middle");
337
+ label.setAttribute("dominant-baseline", "middle");
338
+ label.setAttribute("alignment-baseline", "middle");
339
+ label.querySelectorAll("tspan").forEach((tspan) => {
340
+ tspan.setAttribute("x", `${centerX}`);
341
+ tspan.setAttribute("y", `${centerY}`);
342
+ tspan.removeAttribute("dx");
343
+ tspan.removeAttribute("dy");
344
+ });
345
+ });
346
+ });
347
+ }
348
+ function runHorizontalBarDomAdjustments(chartContext, minBarWidth, valueMatrix, shouldApplyMinBarWidth, shouldCenterDataLabels) {
349
+ if (shouldApplyMinBarWidth) {
350
+ applyMinimumHorizontalBarWidth(chartContext, minBarWidth, valueMatrix);
351
+ }
352
+ if (shouldCenterDataLabels) {
353
+ centerHorizontalBarDataLabels(chartContext, minBarWidth, valueMatrix);
354
+ }
355
+ }
356
+ function scheduleHorizontalBarDomAdjustments(chartContext, minBarWidth, valueMatrix, shouldApplyMinBarWidth, shouldCenterDataLabels) {
357
+ runHorizontalBarDomAdjustments(
358
+ chartContext,
359
+ minBarWidth,
360
+ valueMatrix,
361
+ shouldApplyMinBarWidth,
362
+ shouldCenterDataLabels
363
+ );
296
364
  if (typeof window === "undefined" || typeof window.requestAnimationFrame !== "function") return;
297
365
  window.requestAnimationFrame(() => {
298
- applyMinimumHorizontalBarWidth(chartContext, minBarWidth, valueMatrix);
366
+ runHorizontalBarDomAdjustments(
367
+ chartContext,
368
+ minBarWidth,
369
+ valueMatrix,
370
+ shouldApplyMinBarWidth,
371
+ shouldCenterDataLabels
372
+ );
299
373
  });
300
374
  }
301
- function composeMinimumBarWidthEvent(userEvent, minBarWidth, valueMatrix) {
375
+ function composeHorizontalBarLifecycleEvent(userEvent, minBarWidth, valueMatrix, shouldApplyMinBarWidth, shouldCenterDataLabels) {
302
376
  return (chart, eventOptions) => {
303
377
  userEvent?.(chart, eventOptions);
304
- scheduleMinimumHorizontalBarWidth(chart, minBarWidth, valueMatrix);
378
+ scheduleHorizontalBarDomAdjustments(
379
+ chart,
380
+ minBarWidth,
381
+ valueMatrix,
382
+ shouldApplyMinBarWidth,
383
+ shouldCenterDataLabels
384
+ );
305
385
  };
306
386
  }
307
387
  var BarChart = ({
@@ -336,6 +416,8 @@ var BarChart = ({
336
416
  const hasGeneratedLabels = showBarValues || showBarPercentages;
337
417
  const resolvedMinBarWidth = minBarWidth ?? (minBarPercentage === 0 ? 0 : 30);
338
418
  const hasMinimumBarWidth = isHorizontal && resolvedMinBarWidth > 0;
419
+ const shouldCenterDataLabels = isHorizontal && showBarPercentages;
420
+ const hasHorizontalDomAdjustments = hasMinimumBarWidth || shouldCenterDataLabels;
339
421
  const baseGridOptions = isHorizontal ? mergeGridOptions(defaultOptions.grid, horizontalGridOptions) : defaultOptions.grid;
340
422
  const getLabelContext = (seriesIndex, dataPointIndex, total) => ({
341
423
  seriesIndex,
@@ -405,22 +487,28 @@ var BarChart = ({
405
487
  )
406
488
  } : void 0;
407
489
  const userChartEvents = options?.chart?.events;
408
- const generatedChartEvents = hasMinimumBarWidth ? {
490
+ const generatedChartEvents = hasHorizontalDomAdjustments ? {
409
491
  ...userChartEvents,
410
- mounted: composeMinimumBarWidthEvent(
492
+ mounted: composeHorizontalBarLifecycleEvent(
411
493
  userChartEvents?.mounted,
412
494
  resolvedMinBarWidth,
413
- valueMatrix
495
+ valueMatrix,
496
+ hasMinimumBarWidth,
497
+ shouldCenterDataLabels
414
498
  ),
415
- updated: composeMinimumBarWidthEvent(
499
+ updated: composeHorizontalBarLifecycleEvent(
416
500
  userChartEvents?.updated,
417
501
  resolvedMinBarWidth,
418
- valueMatrix
502
+ valueMatrix,
503
+ hasMinimumBarWidth,
504
+ shouldCenterDataLabels
419
505
  ),
420
- animationEnd: composeMinimumBarWidthEvent(
506
+ animationEnd: composeHorizontalBarLifecycleEvent(
421
507
  userChartEvents?.animationEnd,
422
508
  resolvedMinBarWidth,
423
- valueMatrix
509
+ valueMatrix,
510
+ hasMinimumBarWidth,
511
+ shouldCenterDataLabels
424
512
  )
425
513
  } : userChartEvents;
426
514
  const mergedOptions = {
@@ -496,5 +584,5 @@ var BarChart = ({
496
584
  };
497
585
 
498
586
  exports.BarChart = BarChart;
499
- //# sourceMappingURL=chunk-MIIZ4KLS.cjs.map
500
- //# sourceMappingURL=chunk-MIIZ4KLS.cjs.map
587
+ //# sourceMappingURL=chunk-VJ7Y3CS6.cjs.map
588
+ //# sourceMappingURL=chunk-VJ7Y3CS6.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Charts/BarChart.tsx"],"names":["React","jsx"],"mappings":"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","file":"chunk-VJ7Y3CS6.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 barColors?: string[];\n height?: number;\n horizontal?: boolean;\n showBarValues?: boolean;\n showBarPercentages?: boolean;\n minBarWidth?: number;\n /** @deprecated Use minBarWidth. Passing 0 still disables the minimum visual width. */\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 withDataPointColor(\n value: unknown,\n fillColor: string,\n dataPointIndex: number,\n categories?: string[]\n): unknown {\n if (Array.isArray(value)) {\n return {\n x: value[0],\n y: value[1],\n fillColor,\n };\n }\n\n if (value && typeof value === \"object\") {\n return {\n ...value,\n fillColor,\n };\n }\n\n return {\n x: categories?.[dataPointIndex] ?? dataPointIndex,\n y: value,\n fillColor,\n };\n}\n\nfunction applyBarColors(\n series: ApexAxisChartSeries,\n barColors: string[] | undefined,\n fallbackColors: string[] | undefined,\n categories?: string[]\n): ApexAxisChartSeries {\n if (!barColors?.length) return series;\n\n return series.map((item, seriesIndex) => {\n const fallbackColor =\n fallbackColors?.[seriesIndex] ?? fallbackColors?.[0] ?? defaultOptions.colors?.[0];\n\n return {\n ...item,\n data: item.data.map((value, dataPointIndex) =>\n withDataPointColor(\n value,\n barColors[dataPointIndex] ?? fallbackColor ?? \"#465fff\",\n dataPointIndex,\n categories\n )\n ) as typeof item.data,\n };\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\nfunction getChartElement(chartContext: unknown): Element | null {\n if (typeof Element === \"undefined\") return null;\n if (!chartContext || typeof chartContext !== \"object\" || !(\"el\" in chartContext)) return null;\n\n const element = (chartContext as { el?: unknown }).el;\n return element instanceof Element ? element : null;\n}\n\nfunction getPathValue(path: SVGPathElement, fallbackValue: number): number {\n const rawValue = path.getAttribute(\"val\");\n if (rawValue == null || rawValue === \"\") return fallbackValue;\n\n const value = Number(rawValue);\n return Number.isFinite(value) ? value : fallbackValue;\n}\n\nfunction getHorizontalBarGroups(root: Element): Array<{\n paths: SVGPathElement[];\n labels: SVGTextElement[];\n}> {\n const groups = Array.from(root.querySelectorAll(\".apexcharts-series\"))\n .map((seriesElement) => ({\n paths: Array.from(seriesElement.querySelectorAll<SVGPathElement>(\".apexcharts-bar-area\")),\n labels: Array.from(seriesElement.querySelectorAll<SVGTextElement>(\".apexcharts-datalabel\")),\n }))\n .filter((group) => group.paths.length > 0);\n\n if (groups.length > 0) return groups;\n\n return [\n {\n paths: Array.from(root.querySelectorAll<SVGPathElement>(\".apexcharts-bar-area\")),\n labels: Array.from(root.querySelectorAll<SVGTextElement>(\".apexcharts-datalabel\")),\n },\n ];\n}\n\nfunction applyMinimumHorizontalBarWidth(\n chartContext: unknown,\n minBarWidth: number,\n valueMatrix: number[][]\n) {\n const root = getChartElement(chartContext);\n if (!root) return;\n\n root\n .querySelectorAll(\"[data-taildashboard-min-bar]\")\n .forEach((element) => element.remove());\n\n if (minBarWidth <= 0) return;\n\n const values = valueMatrix.flat();\n const groups = getHorizontalBarGroups(root);\n const documentRef = root.ownerDocument;\n let flatIndex = 0;\n\n groups.forEach(({ paths }) => {\n paths.forEach((path) => {\n const value = getPathValue(path, values[flatIndex] ?? 0);\n flatIndex += 1;\n if (value < 0 || typeof path.getBBox !== \"function\") return;\n\n const box = path.getBBox();\n if (box.width >= minBarWidth || box.height <= 0) return;\n\n const overlay = documentRef.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n const radius = Math.min(5, box.height / 2, minBarWidth / 2);\n overlay.setAttribute(\"data-taildashboard-min-bar\", \"true\");\n overlay.setAttribute(\"x\", `${box.x}`);\n overlay.setAttribute(\"y\", `${box.y}`);\n overlay.setAttribute(\"width\", `${minBarWidth}`);\n overlay.setAttribute(\"height\", `${box.height}`);\n overlay.setAttribute(\"rx\", `${radius}`);\n overlay.setAttribute(\"fill\", path.getAttribute(\"fill\") ?? path.style.fill ?? \"currentColor\");\n overlay.setAttribute(\"opacity\", path.getAttribute(\"opacity\") ?? path.style.opacity ?? \"1\");\n overlay.style.pointerEvents = \"none\";\n path.parentNode?.insertBefore(overlay, path.nextSibling);\n });\n });\n}\n\nfunction centerHorizontalBarDataLabels(\n chartContext: unknown,\n minBarWidth: number,\n valueMatrix: number[][]\n) {\n const root = getChartElement(chartContext);\n if (!root) return;\n\n const values = valueMatrix.flat();\n const groups = getHorizontalBarGroups(root);\n let flatIndex = 0;\n\n groups.forEach(({ paths, labels }) => {\n paths.forEach((path, index) => {\n const label = labels[index];\n const value = getPathValue(path, values[flatIndex] ?? 0);\n flatIndex += 1;\n if (!label || value < 0 || typeof path.getBBox !== \"function\") return;\n\n const box = path.getBBox();\n if (box.height <= 0) return;\n\n const width = box.width < minBarWidth ? minBarWidth : box.width;\n const centerX = box.x + width / 2;\n const centerY = box.y + box.height / 2;\n\n label.setAttribute(\"x\", `${centerX}`);\n label.setAttribute(\"y\", `${centerY}`);\n label.setAttribute(\"text-anchor\", \"middle\");\n label.setAttribute(\"dominant-baseline\", \"middle\");\n label.setAttribute(\"alignment-baseline\", \"middle\");\n label.querySelectorAll(\"tspan\").forEach((tspan) => {\n tspan.setAttribute(\"x\", `${centerX}`);\n tspan.setAttribute(\"y\", `${centerY}`);\n tspan.removeAttribute(\"dx\");\n tspan.removeAttribute(\"dy\");\n });\n });\n });\n}\n\ntype ApexChartEvents = NonNullable<NonNullable<ApexOptions[\"chart\"]>[\"events\"]>;\ntype ApexLifecycleEvent = NonNullable<ApexChartEvents[\"mounted\"]>;\n\nfunction runHorizontalBarDomAdjustments(\n chartContext: unknown,\n minBarWidth: number,\n valueMatrix: number[][],\n shouldApplyMinBarWidth: boolean,\n shouldCenterDataLabels: boolean\n) {\n if (shouldApplyMinBarWidth) {\n applyMinimumHorizontalBarWidth(chartContext, minBarWidth, valueMatrix);\n }\n if (shouldCenterDataLabels) {\n centerHorizontalBarDataLabels(chartContext, minBarWidth, valueMatrix);\n }\n}\n\nfunction scheduleHorizontalBarDomAdjustments(\n chartContext: unknown,\n minBarWidth: number,\n valueMatrix: number[][],\n shouldApplyMinBarWidth: boolean,\n shouldCenterDataLabels: boolean\n) {\n runHorizontalBarDomAdjustments(\n chartContext,\n minBarWidth,\n valueMatrix,\n shouldApplyMinBarWidth,\n shouldCenterDataLabels\n );\n\n if (typeof window === \"undefined\" || typeof window.requestAnimationFrame !== \"function\") return;\n\n window.requestAnimationFrame(() => {\n runHorizontalBarDomAdjustments(\n chartContext,\n minBarWidth,\n valueMatrix,\n shouldApplyMinBarWidth,\n shouldCenterDataLabels\n );\n });\n}\n\nfunction composeHorizontalBarLifecycleEvent(\n userEvent: ApexLifecycleEvent | undefined,\n minBarWidth: number,\n valueMatrix: number[][],\n shouldApplyMinBarWidth: boolean,\n shouldCenterDataLabels: boolean\n): ApexLifecycleEvent {\n return (chart, eventOptions) => {\n userEvent?.(chart, eventOptions);\n scheduleHorizontalBarDomAdjustments(\n chart,\n minBarWidth,\n valueMatrix,\n shouldApplyMinBarWidth,\n shouldCenterDataLabels\n );\n };\n}\n\nexport const BarChart: React.FC<BarChartProps> = ({\n series,\n categories,\n colors,\n barColors,\n height,\n horizontal,\n showBarValues = false,\n showBarPercentages = false,\n minBarWidth,\n minBarPercentage,\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 effectiveColors = colors ?? options?.colors ?? defaultOptions.colors;\n const chartSeries = applyBarColors(\n effectiveSeries,\n barColors,\n effectiveColors as string[] | undefined,\n effectiveCategories\n );\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 resolvedMinBarWidth = minBarWidth ?? (minBarPercentage === 0 ? 0 : 30);\n const hasMinimumBarWidth = isHorizontal && resolvedMinBarWidth > 0;\n const shouldCenterDataLabels = isHorizontal && showBarPercentages;\n const hasHorizontalDomAdjustments = hasMinimumBarWidth || shouldCenterDataLabels;\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 total =\n percentageMode === \"category\"\n ? getCategoryTotal(valueMatrix, dataPointIndex)\n : seriesTotal;\n const context = getLabelContext(seriesIndex, dataPointIndex, total);\n return {\n x: value,\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 userChartEvents = options?.chart?.events;\n const generatedChartEvents: ApexChartEvents | undefined = hasHorizontalDomAdjustments\n ? {\n ...userChartEvents,\n mounted: composeHorizontalBarLifecycleEvent(\n userChartEvents?.mounted,\n resolvedMinBarWidth,\n valueMatrix,\n hasMinimumBarWidth,\n shouldCenterDataLabels\n ),\n updated: composeHorizontalBarLifecycleEvent(\n userChartEvents?.updated,\n resolvedMinBarWidth,\n valueMatrix,\n hasMinimumBarWidth,\n shouldCenterDataLabels\n ),\n animationEnd: composeHorizontalBarLifecycleEvent(\n userChartEvents?.animationEnd,\n resolvedMinBarWidth,\n valueMatrix,\n hasMinimumBarWidth,\n shouldCenterDataLabels\n ),\n }\n : userChartEvents;\n const mergedOptions: ApexOptions = {\n ...defaultOptions,\n ...options,\n colors: effectiveColors,\n chart: {\n ...defaultOptions.chart,\n ...options?.chart,\n events: generatedChartEvents,\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 },\n grid: mergeGridOptions(baseGridOptions, options?.grid),\n annotations: mergeAnnotations(options?.annotations, generatedAnnotations),\n tooltip: mergeTooltipOptions(defaultOptions.tooltip, options?.tooltip, undefined),\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 chunkMIIZ4KLS_cjs = require('../../chunk-MIIZ4KLS.cjs');
4
+ var chunkVJ7Y3CS6_cjs = require('../../chunk-VJ7Y3CS6.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "BarChart", {
9
9
  enumerable: true,
10
- get: function () { return chunkMIIZ4KLS_cjs.BarChart; }
10
+ get: function () { return chunkVJ7Y3CS6_cjs.BarChart; }
11
11
  });
12
12
  //# sourceMappingURL=BarChart.cjs.map
13
13
  //# sourceMappingURL=BarChart.cjs.map
@@ -1,4 +1,4 @@
1
1
  "use client";
2
- export { BarChart } from '../../chunk-C7OCYM5S.js';
2
+ export { BarChart } from '../../chunk-MVPWVI5A.js';
3
3
  //# sourceMappingURL=BarChart.js.map
4
4
  //# sourceMappingURL=BarChart.js.map
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkMIIZ4KLS_cjs = require('./chunk-MIIZ4KLS.cjs');
4
+ var chunkVJ7Y3CS6_cjs = require('./chunk-VJ7Y3CS6.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 chunkMIIZ4KLS_cjs.BarChart; }
2956
+ get: function () { return chunkVJ7Y3CS6_cjs.BarChart; }
2957
2957
  });
2958
2958
  Object.defineProperty(exports, "LineChart", {
2959
2959
  enumerable: true,
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- export { BarChart } from './chunk-C7OCYM5S.js';
2
+ export { BarChart } from './chunk-MVPWVI5A.js';
3
3
  export { LineChart } from './chunk-W6E275RF.js';
4
4
  export { Calendar, Modal } from './chunk-NJBVRPWW.js';
5
5
  export { Editor } from './chunk-PFCUA2W2.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@andreagiugni/tailwind-dashboard-ui",
3
- "version": "1.0.17",
3
+ "version": "1.0.19",
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":"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","file":"chunk-C7OCYM5S.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 barColors?: string[];\n height?: number;\n horizontal?: boolean;\n showBarValues?: boolean;\n showBarPercentages?: boolean;\n minBarWidth?: number;\n /** @deprecated Use minBarWidth. Passing 0 still disables the minimum visual width. */\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 withDataPointColor(\n value: unknown,\n fillColor: string,\n dataPointIndex: number,\n categories?: string[]\n): unknown {\n if (Array.isArray(value)) {\n return {\n x: value[0],\n y: value[1],\n fillColor,\n };\n }\n\n if (value && typeof value === \"object\") {\n return {\n ...value,\n fillColor,\n };\n }\n\n return {\n x: categories?.[dataPointIndex] ?? dataPointIndex,\n y: value,\n fillColor,\n };\n}\n\nfunction applyBarColors(\n series: ApexAxisChartSeries,\n barColors: string[] | undefined,\n fallbackColors: string[] | undefined,\n categories?: string[]\n): ApexAxisChartSeries {\n if (!barColors?.length) return series;\n\n return series.map((item, seriesIndex) => {\n const fallbackColor =\n fallbackColors?.[seriesIndex] ?? fallbackColors?.[0] ?? defaultOptions.colors?.[0];\n\n return {\n ...item,\n data: item.data.map((value, dataPointIndex) =>\n withDataPointColor(\n value,\n barColors[dataPointIndex] ?? fallbackColor ?? \"#465fff\",\n dataPointIndex,\n categories\n )\n ) as typeof item.data,\n };\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\nfunction getChartElement(chartContext: unknown): Element | null {\n if (typeof Element === \"undefined\") return null;\n if (!chartContext || typeof chartContext !== \"object\" || !(\"el\" in chartContext)) return null;\n\n const element = (chartContext as { el?: unknown }).el;\n return element instanceof Element ? element : null;\n}\n\nfunction applyMinimumHorizontalBarWidth(\n chartContext: unknown,\n minBarWidth: number,\n valueMatrix: number[][]\n) {\n const root = getChartElement(chartContext);\n if (!root) return;\n\n root\n .querySelectorAll(\"[data-taildashboard-min-bar]\")\n .forEach((element) => element.remove());\n\n if (minBarWidth <= 0) return;\n\n const values = valueMatrix.flat();\n const paths = Array.from(root.querySelectorAll<SVGPathElement>(\".apexcharts-bar-area\"));\n const documentRef = root.ownerDocument;\n\n paths.forEach((path, index) => {\n const value = values[index] ?? 0;\n if (value < 0 || typeof path.getBBox !== \"function\") return;\n\n const box = path.getBBox();\n if (box.width >= minBarWidth || box.height <= 0) return;\n\n const overlay = documentRef.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n const radius = Math.min(5, box.height / 2, minBarWidth / 2);\n overlay.setAttribute(\"data-taildashboard-min-bar\", \"true\");\n overlay.setAttribute(\"x\", `${box.x}`);\n overlay.setAttribute(\"y\", `${box.y}`);\n overlay.setAttribute(\"width\", `${minBarWidth}`);\n overlay.setAttribute(\"height\", `${box.height}`);\n overlay.setAttribute(\"rx\", `${radius}`);\n overlay.setAttribute(\"fill\", path.getAttribute(\"fill\") ?? path.style.fill ?? \"currentColor\");\n overlay.setAttribute(\"opacity\", path.getAttribute(\"opacity\") ?? path.style.opacity ?? \"1\");\n overlay.style.pointerEvents = \"none\";\n path.parentNode?.insertBefore(overlay, path.nextSibling);\n });\n}\n\nfunction scheduleMinimumHorizontalBarWidth(\n chartContext: unknown,\n minBarWidth: number,\n valueMatrix: number[][]\n) {\n applyMinimumHorizontalBarWidth(chartContext, minBarWidth, valueMatrix);\n\n if (typeof window === \"undefined\" || typeof window.requestAnimationFrame !== \"function\") return;\n\n window.requestAnimationFrame(() => {\n applyMinimumHorizontalBarWidth(chartContext, minBarWidth, valueMatrix);\n });\n}\n\ntype ApexChartEvents = NonNullable<NonNullable<ApexOptions[\"chart\"]>[\"events\"]>;\ntype ApexLifecycleEvent = NonNullable<ApexChartEvents[\"mounted\"]>;\n\nfunction composeMinimumBarWidthEvent(\n userEvent: ApexLifecycleEvent | undefined,\n minBarWidth: number,\n valueMatrix: number[][]\n): ApexLifecycleEvent {\n return (chart, eventOptions) => {\n userEvent?.(chart, eventOptions);\n scheduleMinimumHorizontalBarWidth(chart, minBarWidth, valueMatrix);\n };\n}\n\nexport const BarChart: React.FC<BarChartProps> = ({\n series,\n categories,\n colors,\n barColors,\n height,\n horizontal,\n showBarValues = false,\n showBarPercentages = false,\n minBarWidth,\n minBarPercentage,\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 effectiveColors = colors ?? options?.colors ?? defaultOptions.colors;\n const chartSeries = applyBarColors(\n effectiveSeries,\n barColors,\n effectiveColors as string[] | undefined,\n effectiveCategories\n );\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 resolvedMinBarWidth = minBarWidth ?? (minBarPercentage === 0 ? 0 : 30);\n const hasMinimumBarWidth = isHorizontal && resolvedMinBarWidth > 0;\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 total =\n percentageMode === \"category\"\n ? getCategoryTotal(valueMatrix, dataPointIndex)\n : seriesTotal;\n const context = getLabelContext(seriesIndex, dataPointIndex, total);\n return {\n x: value,\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 userChartEvents = options?.chart?.events;\n const generatedChartEvents: ApexChartEvents | undefined = hasMinimumBarWidth\n ? {\n ...userChartEvents,\n mounted: composeMinimumBarWidthEvent(\n userChartEvents?.mounted,\n resolvedMinBarWidth,\n valueMatrix\n ),\n updated: composeMinimumBarWidthEvent(\n userChartEvents?.updated,\n resolvedMinBarWidth,\n valueMatrix\n ),\n animationEnd: composeMinimumBarWidthEvent(\n userChartEvents?.animationEnd,\n resolvedMinBarWidth,\n valueMatrix\n ),\n }\n : userChartEvents;\n const mergedOptions: ApexOptions = {\n ...defaultOptions,\n ...options,\n colors: effectiveColors,\n chart: {\n ...defaultOptions.chart,\n ...options?.chart,\n events: generatedChartEvents,\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 },\n grid: mergeGridOptions(baseGridOptions, options?.grid),\n annotations: mergeAnnotations(options?.annotations, generatedAnnotations),\n tooltip: mergeTooltipOptions(defaultOptions.tooltip, options?.tooltip, undefined),\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-MIIZ4KLS.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 barColors?: string[];\n height?: number;\n horizontal?: boolean;\n showBarValues?: boolean;\n showBarPercentages?: boolean;\n minBarWidth?: number;\n /** @deprecated Use minBarWidth. Passing 0 still disables the minimum visual width. */\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 withDataPointColor(\n value: unknown,\n fillColor: string,\n dataPointIndex: number,\n categories?: string[]\n): unknown {\n if (Array.isArray(value)) {\n return {\n x: value[0],\n y: value[1],\n fillColor,\n };\n }\n\n if (value && typeof value === \"object\") {\n return {\n ...value,\n fillColor,\n };\n }\n\n return {\n x: categories?.[dataPointIndex] ?? dataPointIndex,\n y: value,\n fillColor,\n };\n}\n\nfunction applyBarColors(\n series: ApexAxisChartSeries,\n barColors: string[] | undefined,\n fallbackColors: string[] | undefined,\n categories?: string[]\n): ApexAxisChartSeries {\n if (!barColors?.length) return series;\n\n return series.map((item, seriesIndex) => {\n const fallbackColor =\n fallbackColors?.[seriesIndex] ?? fallbackColors?.[0] ?? defaultOptions.colors?.[0];\n\n return {\n ...item,\n data: item.data.map((value, dataPointIndex) =>\n withDataPointColor(\n value,\n barColors[dataPointIndex] ?? fallbackColor ?? \"#465fff\",\n dataPointIndex,\n categories\n )\n ) as typeof item.data,\n };\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\nfunction getChartElement(chartContext: unknown): Element | null {\n if (typeof Element === \"undefined\") return null;\n if (!chartContext || typeof chartContext !== \"object\" || !(\"el\" in chartContext)) return null;\n\n const element = (chartContext as { el?: unknown }).el;\n return element instanceof Element ? element : null;\n}\n\nfunction applyMinimumHorizontalBarWidth(\n chartContext: unknown,\n minBarWidth: number,\n valueMatrix: number[][]\n) {\n const root = getChartElement(chartContext);\n if (!root) return;\n\n root\n .querySelectorAll(\"[data-taildashboard-min-bar]\")\n .forEach((element) => element.remove());\n\n if (minBarWidth <= 0) return;\n\n const values = valueMatrix.flat();\n const paths = Array.from(root.querySelectorAll<SVGPathElement>(\".apexcharts-bar-area\"));\n const documentRef = root.ownerDocument;\n\n paths.forEach((path, index) => {\n const value = values[index] ?? 0;\n if (value < 0 || typeof path.getBBox !== \"function\") return;\n\n const box = path.getBBox();\n if (box.width >= minBarWidth || box.height <= 0) return;\n\n const overlay = documentRef.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n const radius = Math.min(5, box.height / 2, minBarWidth / 2);\n overlay.setAttribute(\"data-taildashboard-min-bar\", \"true\");\n overlay.setAttribute(\"x\", `${box.x}`);\n overlay.setAttribute(\"y\", `${box.y}`);\n overlay.setAttribute(\"width\", `${minBarWidth}`);\n overlay.setAttribute(\"height\", `${box.height}`);\n overlay.setAttribute(\"rx\", `${radius}`);\n overlay.setAttribute(\"fill\", path.getAttribute(\"fill\") ?? path.style.fill ?? \"currentColor\");\n overlay.setAttribute(\"opacity\", path.getAttribute(\"opacity\") ?? path.style.opacity ?? \"1\");\n overlay.style.pointerEvents = \"none\";\n path.parentNode?.insertBefore(overlay, path.nextSibling);\n });\n}\n\nfunction scheduleMinimumHorizontalBarWidth(\n chartContext: unknown,\n minBarWidth: number,\n valueMatrix: number[][]\n) {\n applyMinimumHorizontalBarWidth(chartContext, minBarWidth, valueMatrix);\n\n if (typeof window === \"undefined\" || typeof window.requestAnimationFrame !== \"function\") return;\n\n window.requestAnimationFrame(() => {\n applyMinimumHorizontalBarWidth(chartContext, minBarWidth, valueMatrix);\n });\n}\n\ntype ApexChartEvents = NonNullable<NonNullable<ApexOptions[\"chart\"]>[\"events\"]>;\ntype ApexLifecycleEvent = NonNullable<ApexChartEvents[\"mounted\"]>;\n\nfunction composeMinimumBarWidthEvent(\n userEvent: ApexLifecycleEvent | undefined,\n minBarWidth: number,\n valueMatrix: number[][]\n): ApexLifecycleEvent {\n return (chart, eventOptions) => {\n userEvent?.(chart, eventOptions);\n scheduleMinimumHorizontalBarWidth(chart, minBarWidth, valueMatrix);\n };\n}\n\nexport const BarChart: React.FC<BarChartProps> = ({\n series,\n categories,\n colors,\n barColors,\n height,\n horizontal,\n showBarValues = false,\n showBarPercentages = false,\n minBarWidth,\n minBarPercentage,\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 effectiveColors = colors ?? options?.colors ?? defaultOptions.colors;\n const chartSeries = applyBarColors(\n effectiveSeries,\n barColors,\n effectiveColors as string[] | undefined,\n effectiveCategories\n );\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 resolvedMinBarWidth = minBarWidth ?? (minBarPercentage === 0 ? 0 : 30);\n const hasMinimumBarWidth = isHorizontal && resolvedMinBarWidth > 0;\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 total =\n percentageMode === \"category\"\n ? getCategoryTotal(valueMatrix, dataPointIndex)\n : seriesTotal;\n const context = getLabelContext(seriesIndex, dataPointIndex, total);\n return {\n x: value,\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 userChartEvents = options?.chart?.events;\n const generatedChartEvents: ApexChartEvents | undefined = hasMinimumBarWidth\n ? {\n ...userChartEvents,\n mounted: composeMinimumBarWidthEvent(\n userChartEvents?.mounted,\n resolvedMinBarWidth,\n valueMatrix\n ),\n updated: composeMinimumBarWidthEvent(\n userChartEvents?.updated,\n resolvedMinBarWidth,\n valueMatrix\n ),\n animationEnd: composeMinimumBarWidthEvent(\n userChartEvents?.animationEnd,\n resolvedMinBarWidth,\n valueMatrix\n ),\n }\n : userChartEvents;\n const mergedOptions: ApexOptions = {\n ...defaultOptions,\n ...options,\n colors: effectiveColors,\n chart: {\n ...defaultOptions.chart,\n ...options?.chart,\n events: generatedChartEvents,\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 },\n grid: mergeGridOptions(baseGridOptions, options?.grid),\n annotations: mergeAnnotations(options?.annotations, generatedAnnotations),\n tooltip: mergeTooltipOptions(defaultOptions.tooltip, options?.tooltip, undefined),\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"]}