@bikdotai/bik-component-library 0.0.859 → 0.0.860-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/README.md +9 -0
  2. package/dist/cjs/components/analytics-chips-and-dropdowns/AnalyticsTrend.js +1 -1
  3. package/dist/cjs/components/analytics-chips-and-dropdowns/AnalyticsTrend.js.map +1 -1
  4. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/ChartLayout.js +2 -0
  5. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/ChartLayout.js.map +1 -0
  6. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/ComparisonBarChart/ComparisonBarChart.js +2 -0
  7. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/ComparisonBarChart/ComparisonBarChart.js.map +1 -0
  8. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/ComparisonBarChart/ComparisonBarChart.styled.js +50 -0
  9. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/ComparisonBarChart/ComparisonBarChart.styled.js.map +1 -0
  10. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/FunnelChart/FunnelChart.js +2 -0
  11. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/FunnelChart/FunnelChart.js.map +1 -0
  12. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/FunnelChart/FunnelChart.styled.js +43 -0
  13. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/FunnelChart/FunnelChart.styled.js.map +1 -0
  14. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/FunnelChart/funnelGeometry.js +2 -0
  15. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/FunnelChart/funnelGeometry.js.map +1 -0
  16. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/HorizontalBarGraph/HorizontalGraph.js +1 -1
  17. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/HorizontalBarGraph/HorizontalGraph.js.map +1 -1
  18. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.js +1 -1
  19. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.js.map +1 -1
  20. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.model.js.map +1 -1
  21. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/chartPalette.js +2 -0
  22. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/chartPalette.js.map +1 -0
  23. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/formatChartValue.js +2 -0
  24. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/formatChartValue.js.map +1 -0
  25. package/dist/cjs/index.js +1 -1
  26. package/dist/esm/components/analytics-chips-and-dropdowns/AnalyticsTrend.d.ts +3 -0
  27. package/dist/esm/components/analytics-chips-and-dropdowns/AnalyticsTrend.js +182 -172
  28. package/dist/esm/components/analytics-chips-and-dropdowns/AnalyticsTrend.js.map +1 -1
  29. package/dist/esm/components/analytics-chips-and-dropdowns/chart/ChartLayout.d.ts +16 -0
  30. package/dist/esm/components/analytics-chips-and-dropdowns/chart/ChartLayout.js +69 -0
  31. package/dist/esm/components/analytics-chips-and-dropdowns/chart/ChartLayout.js.map +1 -0
  32. package/dist/esm/components/analytics-chips-and-dropdowns/chart/ComparisonBarChart/ComparisonBarChart.d.ts +3 -0
  33. package/dist/esm/components/analytics-chips-and-dropdowns/chart/ComparisonBarChart/ComparisonBarChart.js +110 -0
  34. package/dist/esm/components/analytics-chips-and-dropdowns/chart/ComparisonBarChart/ComparisonBarChart.js.map +1 -0
  35. package/dist/esm/components/analytics-chips-and-dropdowns/chart/ComparisonBarChart/ComparisonBarChart.model.d.ts +21 -0
  36. package/dist/esm/components/analytics-chips-and-dropdowns/chart/ComparisonBarChart/ComparisonBarChart.styled.d.ts +16 -0
  37. package/dist/esm/components/analytics-chips-and-dropdowns/chart/ComparisonBarChart/ComparisonBarChart.styled.js +61 -0
  38. package/dist/esm/components/analytics-chips-and-dropdowns/chart/ComparisonBarChart/ComparisonBarChart.styled.js.map +1 -0
  39. package/dist/esm/components/analytics-chips-and-dropdowns/chart/FunnelChart/FunnelChart.d.ts +3 -0
  40. package/dist/esm/components/analytics-chips-and-dropdowns/chart/FunnelChart/FunnelChart.js +109 -0
  41. package/dist/esm/components/analytics-chips-and-dropdowns/chart/FunnelChart/FunnelChart.js.map +1 -0
  42. package/dist/esm/components/analytics-chips-and-dropdowns/chart/FunnelChart/FunnelChart.model.d.ts +19 -0
  43. package/dist/esm/components/analytics-chips-and-dropdowns/chart/FunnelChart/FunnelChart.styled.d.ts +16 -0
  44. package/dist/esm/components/analytics-chips-and-dropdowns/chart/FunnelChart/FunnelChart.styled.js +54 -0
  45. package/dist/esm/components/analytics-chips-and-dropdowns/chart/FunnelChart/FunnelChart.styled.js.map +1 -0
  46. package/dist/esm/components/analytics-chips-and-dropdowns/chart/FunnelChart/funnelGeometry.d.ts +23 -0
  47. package/dist/esm/components/analytics-chips-and-dropdowns/chart/FunnelChart/funnelGeometry.js +48 -0
  48. package/dist/esm/components/analytics-chips-and-dropdowns/chart/FunnelChart/funnelGeometry.js.map +1 -0
  49. package/dist/esm/components/analytics-chips-and-dropdowns/chart/HorizontalBarGraph/HorizontalGraph.js +16 -15
  50. package/dist/esm/components/analytics-chips-and-dropdowns/chart/HorizontalBarGraph/HorizontalGraph.js.map +1 -1
  51. package/dist/esm/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.js +1 -1
  52. package/dist/esm/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.js.map +1 -1
  53. package/dist/esm/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.model.d.ts +1 -0
  54. package/dist/esm/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.model.js.map +1 -1
  55. package/dist/esm/components/analytics-chips-and-dropdowns/chart/chartPalette.d.ts +3 -0
  56. package/dist/esm/components/analytics-chips-and-dropdowns/chart/chartPalette.js +18 -0
  57. package/dist/esm/components/analytics-chips-and-dropdowns/chart/chartPalette.js.map +1 -0
  58. package/dist/esm/components/analytics-chips-and-dropdowns/chart/formatChartValue.d.ts +4 -0
  59. package/dist/esm/components/analytics-chips-and-dropdowns/chart/formatChartValue.js +13 -0
  60. package/dist/esm/components/analytics-chips-and-dropdowns/chart/formatChartValue.js.map +1 -0
  61. package/dist/esm/components/analytics-chips-and-dropdowns/index.d.ts +4 -0
  62. package/dist/esm/icons/index.d.ts +25 -25
  63. package/dist/esm/index.js +383 -379
  64. package/dist/esm/index.js.map +1 -1
  65. package/package.json +1 -1
@@ -3,7 +3,7 @@ import { Chart as S, CategoryScale as z, LinearScale as D, BarElement as R, Tool
3
3
  import B from "chartjs-plugin-datalabels";
4
4
  import { Bar as F } from "react-chartjs-2";
5
5
  import { TitleRegular as L } from "../../../TypographyStyle.js";
6
- import { COLORS as l, FONTS as d } from "../../../../constants/Theme.js";
6
+ import { COLORS as r, FONTS as d } from "../../../../constants/Theme.js";
7
7
  import { truncateValueForInternationalStore as P, truncateValueForIndianStore as T } from "../utils/calcPercentage.js";
8
8
  import { GraphContainerWrapper as v } from "./HorizontalGraph.styles.js";
9
9
  S.register(
@@ -18,7 +18,7 @@ const _ = (t) => {
18
18
  min: 0,
19
19
  max: 2e3,
20
20
  stepSize: t.xAxis.stepSize ?? 200
21
- }, m = {
21
+ }, C = {
22
22
  indexAxis: "y",
23
23
  elements: {},
24
24
  responsive: !0,
@@ -35,6 +35,7 @@ const _ = (t) => {
35
35
  tooltip: {
36
36
  enabled: !i,
37
37
  callbacks: {
38
+ title: t.tooltipConfig?.titleCallback,
38
39
  label: t.xAxis.toolTipCallback,
39
40
  footer: t.tooltipConfig?.footerCallback
40
41
  },
@@ -49,13 +50,13 @@ const _ = (t) => {
49
50
  const n = o.datasetIndex, e = o.chart.data.datasets;
50
51
  if (n !== e.length - 1)
51
52
  return "";
52
- const r = o.dataIndex;
53
+ const l = o.dataIndex;
53
54
  let c = 0;
54
55
  for (let s = 0; s < e.length; s++)
55
- c += e[s].data[r] ?? 0;
56
+ c += e[s].data[l] ?? 0;
56
57
  return c ? t.isInternationalStore ? P(c) : T(c) : "";
57
58
  },
58
- color: l.content.secondary
59
+ color: r.content.secondary
59
60
  }
60
61
  },
61
62
  scales: {
@@ -70,11 +71,11 @@ const _ = (t) => {
70
71
  },
71
72
  grid: {
72
73
  display: !1,
73
- borderColor: l.background.base
74
+ borderColor: r.background.base
74
75
  },
75
76
  ticks: {
76
77
  fontSize: d.caption.fontSize,
77
- color: t.yAxis.labelColor ?? l.content.secondary
78
+ color: t.yAxis.labelColor ?? r.content.secondary
78
79
  }
79
80
  },
80
81
  x: {
@@ -88,12 +89,12 @@ const _ = (t) => {
88
89
  },
89
90
  grid: {
90
91
  borderColor: "white",
91
- color: l.background.base
92
+ color: r.background.base
92
93
  },
93
94
  ticks: {
94
95
  callback: t.xAxis.ticksCallback,
95
96
  fontSize: d.caption.fontSize,
96
- color: t.xAxis.labelColor ?? l.content.secondary,
97
+ color: t.xAxis.labelColor ?? r.content.secondary,
97
98
  ...i ? u : {
98
99
  max: t.xAxis.max,
99
100
  stepSize: t.xAxis.stepSize
@@ -107,17 +108,17 @@ const _ = (t) => {
107
108
  t.onBarClick(n);
108
109
  }
109
110
  }
110
- }, C = (a) => {
111
+ }, m = (a) => {
111
112
  const n = a.chart.ctx.createLinearGradient(0, 0, 0, 200);
112
113
  let e = "";
113
114
  if (i)
114
115
  e = "rgba(0,0,0,0)";
115
116
  else if (t.barColorRGBA) {
116
- const r = t.barColorRGBA;
117
- e = `rgba(${r.r}, ${r.g}, ${r.b}, ${r.a ?? "0.3"})`;
117
+ const l = t.barColorRGBA;
118
+ e = `rgba(${l.r}, ${l.g}, ${l.b}, ${l.a ?? "0.3"})`;
118
119
  }
119
120
  return n.addColorStop(0, e || "rgba(146, 96, 237, 0.3)"), n.addColorStop(1, e || "rgba(146, 96, 237, 0.3)"), n;
120
- }, k = () => i ? "rgba(0,0,0,0)" : t.barColors && t.barColors.length > 0 ? t.barColors : (a) => C(a), h = () => t.stacked && t.stackedDatasets && t.stackedDatasets.length > 0 ? t.stackedDatasets.map((a) => ({
121
+ }, k = () => i ? "rgba(0,0,0,0)" : t.barColors && t.barColors.length > 0 ? t.barColors : (a) => m(a), h = () => t.stacked && t.stackedDatasets && t.stackedDatasets.length > 0 ? t.stackedDatasets.map((a) => ({
121
122
  label: a.label || "",
122
123
  data: i ? x : a.data,
123
124
  backgroundColor: a.backgroundColor,
@@ -145,7 +146,7 @@ const _ = (t) => {
145
146
  t.chartHeading && /* @__PURE__ */ g(
146
147
  L,
147
148
  {
148
- color: t.chartHeading.color ?? l.content.secondary,
149
+ color: t.chartHeading.color ?? r.content.secondary,
149
150
  children: t.chartHeading.heading
150
151
  }
151
152
  ),
@@ -155,7 +156,7 @@ const _ = (t) => {
155
156
  style: {
156
157
  height: t.maintainAspectRatio ? void 0 : t.graphCanvasHeight ?? 500
157
158
  },
158
- children: /* @__PURE__ */ g(F, { options: m, data: y })
159
+ children: /* @__PURE__ */ g(F, { options: C, data: y })
159
160
  }
160
161
  )
161
162
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"HorizontalGraph.js","sources":["../../../../../../src/components/analytics-chips-and-dropdowns/chart/HorizontalBarGraph/HorizontalGraph.tsx"],"sourcesContent":["import {\n\tBarElement,\n\tCategoryScale,\n\tChart as ChartJS,\n\tLinearScale,\n\tTooltip,\n} from 'chart.js';\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\nimport React from 'react';\nimport { Bar } from 'react-chartjs-2';\nimport { TitleRegular } from '@src/components/TypographyStyle';\nimport { COLORS, FONTS } from '@src/constants/Theme';\nimport {\n\ttruncateValueForIndianStore,\n\ttruncateValueForInternationalStore,\n} from '../utils/calcPercentage';\nimport { GraphContainerWrapper } from './HorizontalGraph.styles';\nimport { HorizontalGraphI } from './HorizontalGraph.type';\n\nChartJS.register(\n\tCategoryScale,\n\tLinearScale,\n\tBarElement,\n\tTooltip,\n\tChartDataLabels,\n);\n\nexport const HorizontalGraph: React.FC<HorizontalGraphI> = (props) => {\n\tconst dummyValues = [250, 1000, 800, 1500, 300, 600];\n\n\t// Check if data is present - consider both regular xAxis data and stacked datasets\n\tconst hasStackedData =\n\t\tprops.stacked &&\n\t\tprops.stackedDatasets &&\n\t\tprops.stackedDatasets.length > 0 &&\n\t\tprops.stackedDatasets.some((ds) => ds.data.some((val) => val !== 0));\n\n\tconst hasXAxisData = props.xAxis.data.findIndex((ele) => ele !== 0) !== -1;\n\n\tconst noDataPresent = !hasStackedData && !hasXAxisData;\n\tconst xAxisConfigForNoData = {\n\t\tmin: 0,\n\t\tmax: 2000,\n\t\tstepSize: props.xAxis.stepSize ?? 200,\n\t};\n\tconst options = {\n\t\tindexAxis: 'y' as const,\n\t\telements: {},\n\t\tresponsive: true,\n\t\tmaintainAspectRatio: props.maintainAspectRatio,\n\t\tlayout: {\n\t\t\tpadding: {\n\t\t\t\tright: props.showTotal ? 50 : 0,\n\t\t\t},\n\t\t},\n\t\tplugins: {\n\t\t\tlegend: {\n\t\t\t\tdisplay: false,\n\t\t\t},\n\t\t\ttooltip: {\n\t\t\t\tenabled: !noDataPresent,\n\t\t\t\tcallbacks: {\n\t\t\t\t\tlabel: props.xAxis.toolTipCallback,\n\t\t\t\t\tfooter: props.tooltipConfig?.footerCallback,\n\t\t\t\t},\n\t\t\t\tfooterFont: props.tooltipConfig?.footerStyles?.footerFont,\n\t\t\t},\n\t\t\tdatalabels: {\n\t\t\t\tdisplay: (!noDataPresent && props.showTotal) ?? false,\n\t\t\t\tanchor: 'end' as const,\n\t\t\t\talign: 'end' as const,\n\t\t\t\tclamp: true,\n\t\t\t\tformatter: (_, context) => {\n\t\t\t\t\tconst datasetIndex = context.datasetIndex;\n\t\t\t\t\tconst datasets = context.chart.data.datasets;\n\t\t\t\t\tif (datasetIndex !== datasets.length - 1) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\t\t\t\t\tconst dataIndex = context.dataIndex;\n\t\t\t\t\tlet sum = 0;\n\t\t\t\t\tfor (let i = 0; i < datasets.length; i++) {\n\t\t\t\t\t\tsum += datasets[i].data[dataIndex] ?? 0;\n\t\t\t\t\t}\n\t\t\t\t\tif (!sum) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\t\t\t\t\treturn props.isInternationalStore\n\t\t\t\t\t\t? truncateValueForInternationalStore(sum)\n\t\t\t\t\t\t: truncateValueForIndianStore(sum);\n\t\t\t\t},\n\t\t\t\tcolor: COLORS.content.secondary,\n\t\t\t},\n\t\t},\n\t\tscales: {\n\t\t\ty: {\n\t\t\t\tstacked: props.stacked ?? false,\n\t\t\t\ttitle: {\n\t\t\t\t\tdisplay: !!props.yAxis.title,\n\t\t\t\t\ttext: props.yAxis.title,\n\t\t\t\t\tcolor: props.yAxis.titleColor,\n\t\t\t\t\tfont: { size: FONTS.caption.fontSize, color: props.yAxis.titleColor },\n\t\t\t\t\tpadding: { bottom: 10 },\n\t\t\t\t},\n\t\t\t\tgrid: {\n\t\t\t\t\tdisplay: false,\n\t\t\t\t\tborderColor: COLORS.background.base,\n\t\t\t\t},\n\n\t\t\t\tticks: {\n\t\t\t\t\tfontSize: FONTS.caption.fontSize,\n\t\t\t\t\tcolor: props.yAxis.labelColor ?? COLORS.content.secondary,\n\t\t\t\t},\n\t\t\t},\n\n\t\t\tx: {\n\t\t\t\tstacked: props.stacked ?? false,\n\t\t\t\ttitle: {\n\t\t\t\t\tdisplay: !!props.xAxis.title,\n\t\t\t\t\ttext: props.xAxis.title,\n\t\t\t\t\tcolor: props.xAxis.titleColor,\n\t\t\t\t\tfont: { size: FONTS.caption.fontSize },\n\t\t\t\t\tpadding: { top: 10 },\n\t\t\t\t},\n\t\t\t\tgrid: {\n\t\t\t\t\tborderColor: 'white',\n\t\t\t\t\tcolor: COLORS.background.base,\n\t\t\t\t},\n\t\t\t\tticks: {\n\t\t\t\t\tcallback: props.xAxis.ticksCallback,\n\t\t\t\t\tfontSize: FONTS.caption.fontSize,\n\t\t\t\t\tcolor: props.xAxis.labelColor ?? COLORS.content.secondary,\n\t\t\t\t\t...(noDataPresent\n\t\t\t\t\t\t? xAxisConfigForNoData\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\tmax: props.xAxis.max,\n\t\t\t\t\t\t\t\tstepSize: props.xAxis.stepSize,\n\t\t\t\t\t\t }),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tonClick: (_event: any, elements: any[]) => {\n\t\t\tif (elements.length > 0 && props.onBarClick) {\n\t\t\t\tconst index = elements[0].index;\n\t\t\t\tprops.onBarClick(index);\n\t\t\t}\n\t\t},\n\t} as any;\n\n\tconst getColorSpectrum = (context) => {\n\t\tconst ctx = context.chart.ctx;\n\t\tconst gradient = ctx.createLinearGradient(0, 0, 0, 200);\n\t\tlet rgbaColor = '';\n\t\tif (noDataPresent) {\n\t\t\trgbaColor = 'rgba(0,0,0,0)';\n\t\t} else if (props.barColorRGBA) {\n\t\t\tconst rgb = props.barColorRGBA;\n\t\t\trgbaColor = `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${rgb.a ?? '0.3'})`;\n\t\t}\n\n\t\tgradient.addColorStop(0, rgbaColor ? rgbaColor : 'rgba(146, 96, 237, 0.3)');\n\t\tgradient.addColorStop(1, rgbaColor ? rgbaColor : `rgba(146, 96, 237, 0.3)`);\n\n\t\treturn gradient;\n\t};\n\n\t// Get background color - supports per-bar colors via barColors array\n\tconst getBackgroundColor = () => {\n\t\tif (noDataPresent) {\n\t\t\treturn 'rgba(0,0,0,0)';\n\t\t}\n\t\t// If barColors array is provided, use it for per-bar coloring\n\t\tif (props.barColors && props.barColors.length > 0) {\n\t\t\treturn props.barColors;\n\t\t}\n\t\t// Fallback to single color via getColorSpectrum\n\t\treturn (context) => getColorSpectrum(context);\n\t};\n\n\t// Build datasets - support stacked datasets if provided\n\tconst buildDatasets = () => {\n\t\tif (\n\t\t\tprops.stacked &&\n\t\t\tprops.stackedDatasets &&\n\t\t\tprops.stackedDatasets.length > 0\n\t\t) {\n\t\t\treturn props.stackedDatasets.map((dataset) => ({\n\t\t\t\tlabel: dataset.label || '',\n\t\t\t\tdata: noDataPresent ? dummyValues : dataset.data,\n\t\t\t\tbackgroundColor: dataset.backgroundColor,\n\t\t\t\tbarPercentage: 0.4,\n\t\t\t\tcategoryPercentage: 1,\n\t\t\t\tborderRadius: 4,\n\t\t\t}));\n\t\t}\n\t\t// Default single dataset\n\t\treturn [\n\t\t\t{\n\t\t\t\tdata: noDataPresent ? dummyValues : props.xAxis.data,\n\t\t\t\tbackgroundColor: getBackgroundColor(),\n\t\t\t\tbarPercentage: 0.4,\n\t\t\t\tcategoryPercentage: 1,\n\t\t\t\tborderRadius: 4,\n\t\t\t},\n\t\t];\n\t};\n\n\tconst data = {\n\t\tlabels: props.yAxis.data.map((d) => d.toString()),\n\t\tdatasets: buildDatasets(),\n\t};\n\treturn (\n\t\t<GraphContainerWrapper\n\t\t\tpadding={props.outerPadding}\n\t\t\tskipOuterLayout={props.skipOuterLayout}\n\t\t>\n\t\t\t{props.chartHeading && (\n\t\t\t\t<TitleRegular\n\t\t\t\t\tcolor={props.chartHeading.color ?? COLORS.content.secondary}\n\t\t\t\t>\n\t\t\t\t\t{props.chartHeading.heading}\n\t\t\t\t</TitleRegular>\n\t\t\t)}\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\theight: props.maintainAspectRatio\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: props.graphCanvasHeight ?? 500,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<Bar options={options} data={data} />\n\t\t\t</div>\n\t\t</GraphContainerWrapper>\n\t);\n};\n"],"names":["ChartJS","CategoryScale","LinearScale","BarElement","Tooltip","ChartDataLabels","HorizontalGraph","props","dummyValues","hasStackedData","ds","val","hasXAxisData","ele","noDataPresent","xAxisConfigForNoData","options","_","context","datasetIndex","datasets","dataIndex","sum","i","truncateValueForInternationalStore","truncateValueForIndianStore","COLORS","FONTS","_event","elements","index","getColorSpectrum","gradient","rgbaColor","rgb","getBackgroundColor","buildDatasets","dataset","data","d","jsxs","GraphContainerWrapper","jsx","TitleRegular","Bar"],"mappings":"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"}
1
+ {"version":3,"file":"HorizontalGraph.js","sources":["../../../../../../src/components/analytics-chips-and-dropdowns/chart/HorizontalBarGraph/HorizontalGraph.tsx"],"sourcesContent":["import {\n\tBarElement,\n\tCategoryScale,\n\tChart as ChartJS,\n\tLinearScale,\n\tTooltip,\n} from 'chart.js';\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\nimport React from 'react';\nimport { Bar } from 'react-chartjs-2';\nimport { TitleRegular } from '@src/components/TypographyStyle';\nimport { COLORS, FONTS } from '@src/constants/Theme';\nimport {\n\ttruncateValueForIndianStore,\n\ttruncateValueForInternationalStore,\n} from '../utils/calcPercentage';\nimport { GraphContainerWrapper } from './HorizontalGraph.styles';\nimport { HorizontalGraphI } from './HorizontalGraph.type';\n\nChartJS.register(\n\tCategoryScale,\n\tLinearScale,\n\tBarElement,\n\tTooltip,\n\tChartDataLabels,\n);\n\nexport const HorizontalGraph: React.FC<HorizontalGraphI> = (props) => {\n\tconst dummyValues = [250, 1000, 800, 1500, 300, 600];\n\n\t// Check if data is present - consider both regular xAxis data and stacked datasets\n\tconst hasStackedData =\n\t\tprops.stacked &&\n\t\tprops.stackedDatasets &&\n\t\tprops.stackedDatasets.length > 0 &&\n\t\tprops.stackedDatasets.some((ds) => ds.data.some((val) => val !== 0));\n\n\tconst hasXAxisData = props.xAxis.data.findIndex((ele) => ele !== 0) !== -1;\n\n\tconst noDataPresent = !hasStackedData && !hasXAxisData;\n\tconst xAxisConfigForNoData = {\n\t\tmin: 0,\n\t\tmax: 2000,\n\t\tstepSize: props.xAxis.stepSize ?? 200,\n\t};\n\tconst options = {\n\t\tindexAxis: 'y' as const,\n\t\telements: {},\n\t\tresponsive: true,\n\t\tmaintainAspectRatio: props.maintainAspectRatio,\n\t\tlayout: {\n\t\t\tpadding: {\n\t\t\t\tright: props.showTotal ? 50 : 0,\n\t\t\t},\n\t\t},\n\t\tplugins: {\n\t\t\tlegend: {\n\t\t\t\tdisplay: false,\n\t\t\t},\n\t\t\ttooltip: {\n\t\t\t\tenabled: !noDataPresent,\n\t\t\t\tcallbacks: {\n\t\t\t\t\ttitle: props.tooltipConfig?.titleCallback,\n\t\t\t\t\tlabel: props.xAxis.toolTipCallback,\n\t\t\t\t\tfooter: props.tooltipConfig?.footerCallback,\n\t\t\t\t},\n\t\t\t\tfooterFont: props.tooltipConfig?.footerStyles?.footerFont,\n\t\t\t},\n\t\t\tdatalabels: {\n\t\t\t\tdisplay: (!noDataPresent && props.showTotal) ?? false,\n\t\t\t\tanchor: 'end' as const,\n\t\t\t\talign: 'end' as const,\n\t\t\t\tclamp: true,\n\t\t\t\tformatter: (_, context) => {\n\t\t\t\t\tconst datasetIndex = context.datasetIndex;\n\t\t\t\t\tconst datasets = context.chart.data.datasets;\n\t\t\t\t\tif (datasetIndex !== datasets.length - 1) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\t\t\t\t\tconst dataIndex = context.dataIndex;\n\t\t\t\t\tlet sum = 0;\n\t\t\t\t\tfor (let i = 0; i < datasets.length; i++) {\n\t\t\t\t\t\tsum += datasets[i].data[dataIndex] ?? 0;\n\t\t\t\t\t}\n\t\t\t\t\tif (!sum) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\t\t\t\t\treturn props.isInternationalStore\n\t\t\t\t\t\t? truncateValueForInternationalStore(sum)\n\t\t\t\t\t\t: truncateValueForIndianStore(sum);\n\t\t\t\t},\n\t\t\t\tcolor: COLORS.content.secondary,\n\t\t\t},\n\t\t},\n\t\tscales: {\n\t\t\ty: {\n\t\t\t\tstacked: props.stacked ?? false,\n\t\t\t\ttitle: {\n\t\t\t\t\tdisplay: !!props.yAxis.title,\n\t\t\t\t\ttext: props.yAxis.title,\n\t\t\t\t\tcolor: props.yAxis.titleColor,\n\t\t\t\t\tfont: { size: FONTS.caption.fontSize, color: props.yAxis.titleColor },\n\t\t\t\t\tpadding: { bottom: 10 },\n\t\t\t\t},\n\t\t\t\tgrid: {\n\t\t\t\t\tdisplay: false,\n\t\t\t\t\tborderColor: COLORS.background.base,\n\t\t\t\t},\n\n\t\t\t\tticks: {\n\t\t\t\t\tfontSize: FONTS.caption.fontSize,\n\t\t\t\t\tcolor: props.yAxis.labelColor ?? COLORS.content.secondary,\n\t\t\t\t},\n\t\t\t},\n\n\t\t\tx: {\n\t\t\t\tstacked: props.stacked ?? false,\n\t\t\t\ttitle: {\n\t\t\t\t\tdisplay: !!props.xAxis.title,\n\t\t\t\t\ttext: props.xAxis.title,\n\t\t\t\t\tcolor: props.xAxis.titleColor,\n\t\t\t\t\tfont: { size: FONTS.caption.fontSize },\n\t\t\t\t\tpadding: { top: 10 },\n\t\t\t\t},\n\t\t\t\tgrid: {\n\t\t\t\t\tborderColor: 'white',\n\t\t\t\t\tcolor: COLORS.background.base,\n\t\t\t\t},\n\t\t\t\tticks: {\n\t\t\t\t\tcallback: props.xAxis.ticksCallback,\n\t\t\t\t\tfontSize: FONTS.caption.fontSize,\n\t\t\t\t\tcolor: props.xAxis.labelColor ?? COLORS.content.secondary,\n\t\t\t\t\t...(noDataPresent\n\t\t\t\t\t\t? xAxisConfigForNoData\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\tmax: props.xAxis.max,\n\t\t\t\t\t\t\t\tstepSize: props.xAxis.stepSize,\n\t\t\t\t\t\t }),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tonClick: (_event: any, elements: any[]) => {\n\t\t\tif (elements.length > 0 && props.onBarClick) {\n\t\t\t\tconst index = elements[0].index;\n\t\t\t\tprops.onBarClick(index);\n\t\t\t}\n\t\t},\n\t} as any;\n\n\tconst getColorSpectrum = (context) => {\n\t\tconst ctx = context.chart.ctx;\n\t\tconst gradient = ctx.createLinearGradient(0, 0, 0, 200);\n\t\tlet rgbaColor = '';\n\t\tif (noDataPresent) {\n\t\t\trgbaColor = 'rgba(0,0,0,0)';\n\t\t} else if (props.barColorRGBA) {\n\t\t\tconst rgb = props.barColorRGBA;\n\t\t\trgbaColor = `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${rgb.a ?? '0.3'})`;\n\t\t}\n\n\t\tgradient.addColorStop(0, rgbaColor ? rgbaColor : 'rgba(146, 96, 237, 0.3)');\n\t\tgradient.addColorStop(1, rgbaColor ? rgbaColor : `rgba(146, 96, 237, 0.3)`);\n\n\t\treturn gradient;\n\t};\n\n\t// Get background color - supports per-bar colors via barColors array\n\tconst getBackgroundColor = () => {\n\t\tif (noDataPresent) {\n\t\t\treturn 'rgba(0,0,0,0)';\n\t\t}\n\t\t// If barColors array is provided, use it for per-bar coloring\n\t\tif (props.barColors && props.barColors.length > 0) {\n\t\t\treturn props.barColors;\n\t\t}\n\t\t// Fallback to single color via getColorSpectrum\n\t\treturn (context) => getColorSpectrum(context);\n\t};\n\n\t// Build datasets - support stacked datasets if provided\n\tconst buildDatasets = () => {\n\t\tif (\n\t\t\tprops.stacked &&\n\t\t\tprops.stackedDatasets &&\n\t\t\tprops.stackedDatasets.length > 0\n\t\t) {\n\t\t\treturn props.stackedDatasets.map((dataset) => ({\n\t\t\t\tlabel: dataset.label || '',\n\t\t\t\tdata: noDataPresent ? dummyValues : dataset.data,\n\t\t\t\tbackgroundColor: dataset.backgroundColor,\n\t\t\t\tbarPercentage: 0.4,\n\t\t\t\tcategoryPercentage: 1,\n\t\t\t\tborderRadius: 4,\n\t\t\t}));\n\t\t}\n\t\t// Default single dataset\n\t\treturn [\n\t\t\t{\n\t\t\t\tdata: noDataPresent ? dummyValues : props.xAxis.data,\n\t\t\t\tbackgroundColor: getBackgroundColor(),\n\t\t\t\tbarPercentage: 0.4,\n\t\t\t\tcategoryPercentage: 1,\n\t\t\t\tborderRadius: 4,\n\t\t\t},\n\t\t];\n\t};\n\n\tconst data = {\n\t\tlabels: props.yAxis.data.map((d) => d.toString()),\n\t\tdatasets: buildDatasets(),\n\t};\n\treturn (\n\t\t<GraphContainerWrapper\n\t\t\tpadding={props.outerPadding}\n\t\t\tskipOuterLayout={props.skipOuterLayout}\n\t\t>\n\t\t\t{props.chartHeading && (\n\t\t\t\t<TitleRegular\n\t\t\t\t\tcolor={props.chartHeading.color ?? COLORS.content.secondary}\n\t\t\t\t>\n\t\t\t\t\t{props.chartHeading.heading}\n\t\t\t\t</TitleRegular>\n\t\t\t)}\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\theight: props.maintainAspectRatio\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: props.graphCanvasHeight ?? 500,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<Bar options={options} data={data} />\n\t\t\t</div>\n\t\t</GraphContainerWrapper>\n\t);\n};\n"],"names":["ChartJS","CategoryScale","LinearScale","BarElement","Tooltip","ChartDataLabels","HorizontalGraph","props","dummyValues","hasStackedData","ds","val","hasXAxisData","ele","noDataPresent","xAxisConfigForNoData","options","_","context","datasetIndex","datasets","dataIndex","sum","i","truncateValueForInternationalStore","truncateValueForIndianStore","COLORS","FONTS","_event","elements","index","getColorSpectrum","gradient","rgbaColor","rgb","getBackgroundColor","buildDatasets","dataset","data","d","jsxs","GraphContainerWrapper","jsx","TitleRegular","Bar"],"mappings":"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"}
@@ -65,7 +65,7 @@ const ae = (e, d, x) => {
65
65
  ], P = e.customBarColors ? e.customBarColors : e.customColourScaleBrand || e.customColourScalePastel ? e.colorSchema === E.PASTEL ? e.customColourScalePastel : e.customColourScaleBrand : e.colorSchema === E.PASTEL ? N : S, v = e.customHoverColour, Z = K(
66
66
  () => ({
67
67
  barPercentage: e?.barPercentage || 0.4,
68
- categoryPercentage: 1,
68
+ categoryPercentage: e?.categoryPercentage ?? 1,
69
69
  pointStyle: "circle",
70
70
  barWidth: e.barWidth,
71
71
  borderRadius: e?.borderRadius || void 0,
@@ -1 +1 @@
1
- {"version":3,"file":"StackedBarChart.js","sources":["../../../../../../src/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.tsx"],"sourcesContent":["import MaximizeIcon from '@src/assets/icons/maximize.svg';\nimport {\n\tBarElement,\n\tCategoryScale,\n\tChart as ChartJS,\n\tLegend,\n\tLinearScale,\n\tTooltip,\n} from 'chart.js';\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\nimport { useMemo, useState } from 'react';\nimport { Bar } from 'react-chartjs-2';\nimport { IconButton } from '@src/components/icon-button';\nimport { StyledModal } from '@src/components/modals';\nimport { BodyTiny, TitleRegular } from '@src/components/TypographyStyle';\nimport { COLORS, FONTS } from '@src/constants/Theme';\nimport {\n\ttruncateValueForIndianStore,\n\ttruncateValueForInternationalStore,\n} from '../utils/calcPercentage';\nimport {\n\tCOLOR_SCHEMA,\n\tGRAPH_ORIENTATION,\n\tStackedBarGraphI,\n} from './StackedBarChart.model';\nimport {\n\tGraphContainerWrapper,\n\tHeaderIconWrapper,\n} from './StackedBarChart.styles';\n\nChartJS.register(\n\tCategoryScale,\n\tLinearScale,\n\tBarElement,\n\tTooltip,\n\tLegend,\n\tChartDataLabels,\n);\n\nconst truncateBars = (data, labels, limit) => {\n\tif (labels.length <= limit)\n\t\treturn {\n\t\t\ttruncatedData: data,\n\t\t\ttruncatedLabels: labels,\n\t\t\toriginalData: data,\n\t\t\toriginalLabels: labels,\n\t\t};\n\tconst truncatedData = data.map((d) => d.slice(0, limit));\n\tconst othersData = data.map((d) =>\n\t\td.slice(limit).reduce((acc, curr) => acc + curr, 0),\n\t);\n\ttruncatedData.forEach((d, i) => d.push(othersData[i]));\n\tconst truncatedLabels = labels.slice(0, limit);\n\ttruncatedLabels.push('Others');\n\treturn {\n\t\ttruncatedData,\n\t\ttruncatedLabels,\n\t\toriginalData: data,\n\t\toriginalLabels: labels,\n\t};\n};\n\nexport const StackedBarChart = (props: StackedBarGraphI) => {\n\tconst { headerIcons = [], legendsAndIconDirection = 'row' } = props;\n\tconst [showPopup, setShowPopup] = useState(false);\n\tconst dummyValues = [250, 1000, 800, 1500, 300, 600];\n\tconst noDataPresent = props.yAxis.data.length === 0;\n\tconst yAxisConfigForNoData = {\n\t\tmin: 0,\n\t\tmax: 2000,\n\t\tstepSize: 200,\n\t};\n\n\tconst colorScaleBrand = [\n\t\t'#5E07BB',\n\t\t'#9E77ED',\n\t\t'#D2AEFF',\n\t\t'#F7D7FF',\n\t\t'#CDE1FF',\n\t\t'#92AFFA',\n\t\t'#3935E1',\n\t];\n\n\tconst colourScalePastel = [\n\t\t'#E6C7FF',\n\t\t'#FEC6C6',\n\t\t'#FEDEF3',\n\t\t'#DEEFFF',\n\t\t'#FFD8B1',\n\t\t'#C7E5FF',\n\t\t'#FFD3E6',\n\t\t'#C9FFE5',\n\t\t'#FFE3C7',\n\t\t'#D9D9FF',\n\t];\n\n\t// Determine which color scale to use based on props\n\tconst getColorScale = () => {\n\t\t// If custom bar colors are provided, use them\n\t\tif (props.customBarColors) return props.customBarColors;\n\n\t\t// If custom brand or pastel colors are provided\n\t\tif (props.customColourScaleBrand || props.customColourScalePastel) {\n\t\t\tif (props.colorSchema === COLOR_SCHEMA.PASTEL) {\n\t\t\t\treturn props.customColourScalePastel;\n\t\t\t} else {\n\t\t\t\treturn props.customColourScaleBrand;\n\t\t\t}\n\t\t}\n\n\t\t// Use default color scales based on schema\n\t\tif (props.colorSchema === COLOR_SCHEMA.PASTEL) {\n\t\t\treturn colourScalePastel;\n\t\t} else {\n\t\t\treturn colorScaleBrand;\n\t\t}\n\t};\n\n\tconst colourScale = getColorScale();\n\tconst hoverColourScale = props.customHoverColour;\n\n\t// Memoized bar configuration settings\n\tconst barConfig = useMemo(\n\t\t() => ({\n\t\t\tbarPercentage: props?.barPercentage || 0.4,\n\t\t\tcategoryPercentage: 1,\n\t\t\tpointStyle: 'circle',\n\t\t\tbarWidth: props.barWidth,\n\t\t\tborderRadius: props?.borderRadius || undefined,\n\t\t\t// If borderRadius is an object, disable border skipping\n\t\t\t...(typeof props?.borderRadius === 'object'\n\t\t\t\t? { borderSkipped: false }\n\t\t\t\t: {}),\n\t\t\t// If bar gap is enabled, add transparent borders for spacing\n\t\t\t...(props?.addBarGap?.flag\n\t\t\t\t? {\n\t\t\t\t\t\tborderWidth: {\n\t\t\t\t\t\t\ttop: props?.addBarGap?.value || 2,\n\t\t\t\t\t\t\tbottom: props?.addBarGap?.value || 2,\n\t\t\t\t\t\t\tright: 0,\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tborderColor: 'transparent',\n\t\t\t\t }\n\t\t\t\t: {}),\n\t\t}),\n\t\t[\n\t\t\tprops.barWidth,\n\t\t\tprops?.borderRadius,\n\t\t\tprops?.barPercentage,\n\t\t\tprops?.addBarGap,\n\t\t],\n\t);\n\n\t// Transform y-axis data into a map grouped by dataset name\n\tconst dataSetMap = {};\n\tprops.yAxis.data.map((ele) => {\n\t\tele.map((obj) => {\n\t\t\tif (dataSetMap[obj.name]) {\n\t\t\t\tdataSetMap[obj.name].push(obj.value);\n\t\t\t} else {\n\t\t\t\tdataSetMap[obj.name] = [obj.value];\n\t\t\t}\n\t\t});\n\t});\n\n\t// Create datasets for chart with colors and bar configuration\n\tconst yAxisStackedData = Object.keys(dataSetMap).map((key, ind) => {\n\t\treturn {\n\t\t\tlabel: key,\n\t\t\tdata: dataSetMap[key],\n\t\t\tbackgroundColor: colourScale?.[ind],\n\t\t\thoverBackgroundColor:\n\t\t\t\thoverColourScale === undefined ? undefined : hoverColourScale[ind],\n\t\t\t...barConfig,\n\t\t};\n\t});\n\n\t// Conditionally reorder datasets so smaller values are drawn on top (for overlapping bars)\n\tlet reorderedYAxisData;\n\tif (props.renderInHeightWiseManner) {\n\t\treorderedYAxisData = yAxisStackedData\n\t\t\t.map((dataset, datasetIndex) => {\n\t\t\t\treturn {\n\t\t\t\t\t...dataset,\n\t\t\t\t\t// Add order property: higher values = drawn first (behind)\n\t\t\t\t\torder: dataset.data.reduce((sum, val) => sum + (val || 0), 0),\n\t\t\t\t};\n\t\t\t})\n\t\t\t.sort((a, b) => b.order - a.order);\n\t} else {\n\t\treorderedYAxisData = yAxisStackedData;\n\t}\n\n\t// Extract labels from x-axis data (either string or object with name property)\n\tlet labels = props.xAxis.data.map((data) =>\n\t\ttypeof data === 'string' ? data : data.name,\n\t);\n\n\t// Keep track of original data before any truncation\n\tlet originalData = reorderedYAxisData;\n\t// Truncate bars if limit is specified\n\tif (props.truncateBars) {\n\t\tconst truncated = truncateBars(\n\t\t\treorderedYAxisData.map((d) => d.data),\n\t\t\tlabels,\n\t\t\tprops.truncateBars,\n\t\t);\n\t\treorderedYAxisData.forEach((d, i) => (d.data = truncated.truncatedData[i]));\n\t\tlabels = truncated.truncatedLabels;\n\t\toriginalData = truncated.originalData.map((data, i) => ({\n\t\t\t...reorderedYAxisData[i],\n\t\t\tdata,\n\t\t}));\n\t}\n\n\tconst options = {\n\t\tplugins: {\n\t\t\tlegend: {\n\t\t\t\t// Show legend only if data exists and custom legend is not used\n\t\t\t\tdisplay: !noDataPresent && !props.customLegend,\n\t\t\t\tlabels: {\n\t\t\t\t\tusePointStyle: true,\n\t\t\t\t\tfontSize: 2,\n\t\t\t\t},\n\t\t\t},\n\t\t\ttooltip: {\n\t\t\t\t// Enable tooltip only when data is present\n\t\t\t\tenabled: !noDataPresent,\n\t\t\t\tcallbacks: {\n\t\t\t\t\tlabel: props.tooltipConfig?.labelCallback,\n\t\t\t\t\ttitle: props.tooltipConfig?.titleCallback,\n\t\t\t\t\tfooter: props.tooltipConfig?.footerCallback,\n\t\t\t\t},\n\t\t\t\tfooterFont: props.tooltipConfig?.footerStyles?.footerFont,\n\t\t\t},\n\t\t\tdatalabels: {\n\t\t\t\tdisplay: props.showTotal ?? false,\n\t\t\t\tanchor: 'end' as const,\n\t\t\t\talign: 'end' as const,\n\t\t\t\tclamp: true,\n\t\t\t\t// Format total value label for stacked bars\n\t\t\t\tformatter: (_, context) => {\n\t\t\t\t\tconst datasetIndex = context.datasetIndex;\n\t\t\t\t\tconst datasets = context.chart.data.datasets;\n\t\t\t\t\t// Only show label on the last dataset (top of stack)\n\t\t\t\t\tif (datasetIndex !== datasets.length - 1) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\t\t\t\t\tconst dataIndex = context.dataIndex;\n\t\t\t\t\t// Calculate sum across all datasets for this data point\n\t\t\t\t\tlet sum = 0;\n\t\t\t\t\tfor (let i = 0; i < datasets.length; i++) {\n\t\t\t\t\t\tsum += datasets[i].data[dataIndex] ?? 0;\n\t\t\t\t\t}\n\t\t\t\t\tif (!sum) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\t\t\t\t\t// Format values under 1000 as-is, others as 'k' format\n\t\t\t\t\tif (sum < 1000) {\n\t\t\t\t\t\treturn sum;\n\t\t\t\t\t}\n\t\t\t\t\treturn (sum / 1000).toString().substring(0, 4) + 'k';\n\t\t\t\t},\n\t\t\t\tcolor: COLORS.content.secondary,\n\t\t\t},\n\t\t},\n\t\tlayout: {\n\t\t\tpadding: {\n\t\t\t\t// Add right padding for horizontal orientation when showing totals\n\t\t\t\tright:\n\t\t\t\t\tprops.showTotal && props.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t? 50\n\t\t\t\t\t\t: 0,\n\t\t\t\t// Add top padding for non-horizontal orientation when showing totals\n\t\t\t\ttop:\n\t\t\t\t\tprops.showTotal && props.orientation != GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t? 50\n\t\t\t\t\t\t: 0,\n\t\t\t},\n\t\t},\n\t\tresponsive: true,\n\t\tmaintainAspectRatio: false,\n\t\tlegend: {\n\t\t\tdisplay: !props.customLegend,\n\t\t\tlabels: {\n\t\t\t\tusePointStyle: true,\n\t\t\t},\n\t\t},\n\t\t// Set index axis based on orientation (y for horizontal, x for vertical)\n\t\tindexAxis: (props.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t? 'y'\n\t\t\t: 'x') as 'y' | 'x',\n\t\tscales: {\n\t\t\tx: {\n\t\t\t\ttitle: {\n\t\t\t\t\t// For horizontal orientation, x-axis shows y-axis data and vice versa\n\t\t\t\t\tdisplay: !!(props.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t? props.yAxis?.title\n\t\t\t\t\t\t: props.xAxis?.title),\n\t\t\t\t\ttext:\n\t\t\t\t\t\tprops.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t\t? props.yAxis?.title\n\t\t\t\t\t\t\t: props.xAxis?.title,\n\t\t\t\t\tcolor:\n\t\t\t\t\t\t(props.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t\t? props.yAxis?.titleColor\n\t\t\t\t\t\t\t: props.xAxis?.titleColor) ?? COLORS.content.secondary,\n\t\t\t\t\tfont: { size: FONTS.caption.fontSize },\n\t\t\t\t},\n\t\t\t\tgrid: {\n\t\t\t\t\t// Show grid lines for horizontal orientation (default true unless specified)\n\t\t\t\t\tdisplay:\n\t\t\t\t\t\tprops.orientation === GRAPH_ORIENTATION.HORIZONTAL &&\n\t\t\t\t\t\t(typeof props?.showGridLines?.x === 'undefined'\n\t\t\t\t\t\t\t? true\n\t\t\t\t\t\t\t: props?.showGridLines?.x),\n\t\t\t\t\tcolor: COLORS.background.base,\n\t\t\t\t},\n\t\t\t\tticks: {\n\t\t\t\t\tfontSize: FONTS.caption.fontSize,\n\t\t\t\t\tcolor: props.yAxis.labelColor ?? COLORS.content.secondary,\n\t\t\t\t\t// Format tick labels based on orientation\n\t\t\t\t\tcallback:\n\t\t\t\t\t\tprops.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t\t? (value) => {\n\t\t\t\t\t\t\t\t\t// For horizontal, format and truncate based on store type\n\t\t\t\t\t\t\t\t\tlet formattedValue;\n\t\t\t\t\t\t\t\t\tif (props.isInternationalStore) {\n\t\t\t\t\t\t\t\t\t\tformattedValue = truncateValueForInternationalStore(value);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tformattedValue = truncateValueForIndianStore(value);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconst suffix = props.yAxis?.axisSuffix || '';\n\t\t\t\t\t\t\t\t\treturn `${formattedValue}${suffix}`;\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: props.xAxis?.axisSuffix\n\t\t\t\t\t\t\t? (value) => `${value}${props.xAxis.axisSuffix}`\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t},\n\t\t\t\t// Determine if x-axis should be stacked (default true)\n\t\t\t\tstacked:\n\t\t\t\t\tprops.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t? typeof props.yAxis?.stacked === 'boolean'\n\t\t\t\t\t\t\t? props.yAxis?.stacked\n\t\t\t\t\t\t\t: true\n\t\t\t\t\t\t: typeof props.xAxis?.stacked === 'boolean'\n\t\t\t\t\t\t? props.xAxis?.stacked\n\t\t\t\t\t\t: true,\n\t\t\t},\n\t\t\ty: {\n\t\t\t\t// Set equal height if flag is enabled (for symmetric charts)\n\t\t\t\t...(props?.equalHeight?.flag\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tsuggestedMin: -props?.equalHeight.max, // Set negative side\n\t\t\t\t\t\t\tsuggestedMax: props?.equalHeight.max, // Set positive side\n\t\t\t\t\t }\n\t\t\t\t\t: {}),\n\t\t\t\tmax: props?.yAxis?.max,\n\t\t\t\ttitle: {\n\t\t\t\t\t// For horizontal orientation, y-axis shows x-axis data and vice versa\n\t\t\t\t\tdisplay: !!(props.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t? props.xAxis?.title\n\t\t\t\t\t\t: props.yAxis?.title),\n\t\t\t\t\ttext:\n\t\t\t\t\t\tprops.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t\t? props.xAxis?.title\n\t\t\t\t\t\t\t: props.yAxis?.title,\n\t\t\t\t\tcolor:\n\t\t\t\t\t\t(props.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t\t? props.xAxis?.titleColor\n\t\t\t\t\t\t\t: props.yAxis?.titleColor) ?? COLORS.content.secondary,\n\t\t\t\t\tfont: { size: FONTS.caption.fontSize },\n\t\t\t\t},\n\t\t\t\tgrid: {\n\t\t\t\t\t// Show grid lines for non-horizontal orientation (default true unless specified)\n\t\t\t\t\tdisplay:\n\t\t\t\t\t\tprops.orientation !== GRAPH_ORIENTATION.HORIZONTAL &&\n\t\t\t\t\t\t(typeof props?.showGridLines?.y === 'undefined'\n\t\t\t\t\t\t\t? true\n\t\t\t\t\t\t\t: props?.showGridLines?.y),\n\t\t\t\t\tcolor: COLORS.background.base,\n\t\t\t\t},\n\t\t\t\tticks: {\n\t\t\t\t\tstepSize:\n\t\t\t\t\t\tprops.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t\t? props.xAxis?.stepSize\n\t\t\t\t\t\t\t: props.yAxis?.stepSize,\n\t\t\t\t\tfontSize: FONTS.caption.fontSize,\n\t\t\t\t\tcolor: props.xAxis.labelColor ?? COLORS.content.secondary,\n\t\t\t\t\t// Apply no-data config if no data exists\n\t\t\t\t\t...(noDataPresent ? yAxisConfigForNoData : {}),\n\t\t\t\t\t// Use custom callback if provided, otherwise format based on orientation\n\t\t\t\t\tcallback: props?.ticksCallback\n\t\t\t\t\t\t? props?.ticksCallback\n\t\t\t\t\t\t: props.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t? (value) => {\n\t\t\t\t\t\t\t\t// For horizontal, format and truncate based on store type\n\t\t\t\t\t\t\t\tlet formattedValue;\n\t\t\t\t\t\t\t\tif (props.isInternationalStore) {\n\t\t\t\t\t\t\t\t\tformattedValue = truncateValueForInternationalStore(value);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tformattedValue = truncateValueForIndianStore(value);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst suffix = props.xAxis?.axisSuffix || '';\n\t\t\t\t\t\t\t\treturn `${formattedValue}${suffix}`;\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: props.yAxis?.axisSuffix\n\t\t\t\t\t\t? (value) => `${value}${props.yAxis.axisSuffix}`\n\t\t\t\t\t\t: undefined,\n\t\t\t\t},\n\t\t\t\t// Determine if y-axis should be stacked (default true)\n\t\t\t\tstacked:\n\t\t\t\t\tprops.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t? typeof props.xAxis?.stacked === 'boolean'\n\t\t\t\t\t\t\t? props.xAxis?.stacked\n\t\t\t\t\t\t\t: true\n\t\t\t\t\t\t: typeof props.yAxis?.stacked === 'boolean'\n\t\t\t\t\t\t? props.yAxis?.stacked\n\t\t\t\t\t\t: true,\n\t\t\t},\n\t\t},\n\t\t// Handle bar click events\n\t\tonClick: (e, activeEls) => {\n\t\t\tif (!props.onBarClick) return;\n\t\t\tconst datasetIndex = activeEls[0].datasetIndex;\n\t\t\tconst dataIndex = activeEls[0].index;\n\t\t\tconst yAxisLabel = e.chart.data.datasets[datasetIndex].label;\n\t\t\tconst xAxisLabel = e.chart.data.labels[dataIndex];\n\t\t\tprops.onBarClick(xAxisLabel, yAxisLabel);\n\t\t},\n\t\t// Change cursor to pointer on hover when bar is clickable\n\t\tonHover: (e, activeEls) => {\n\t\t\tif (!props.onBarClick) return;\n\t\t\tif (activeEls.length) e.native.target.style.cursor = 'pointer';\n\t\t},\n\t};\n\n\t// Clean up tick callbacks based on orientation\n\tif (!props.orientation || props.orientation === GRAPH_ORIENTATION.VERTICAL) {\n\t\tdelete options.scales.x.ticks['callback'];\n\t} else {\n\t\tdelete options.scales.y.ticks['callback'];\n\t}\n\n\t// Prepare data for the chart\n\tlet chartDatasets;\n\tif (noDataPresent) {\n\t\tchartDatasets = [{ data: dummyValues, backgroundColor: 'rgba(0,0,0,0)' }];\n\t} else {\n\t\tchartDatasets = reorderedYAxisData;\n\t}\n\n\tconst data = {\n\t\tlabels: labels,\n\t\tdatasets: chartDatasets,\n\t};\n\n\t// Prepare original chart data (used for popup modal)\n\tlet originalChartDatasets;\n\tif (noDataPresent) {\n\t\toriginalChartDatasets = [\n\t\t\t{ data: dummyValues, backgroundColor: 'rgba(0,0,0,0)' },\n\t\t];\n\t} else {\n\t\toriginalChartDatasets = originalData;\n\t}\n\n\tconst originalChartData = {\n\t\tlabels: props.xAxis.data.map((data) =>\n\t\t\ttypeof data === 'string' ? data : data.name,\n\t\t),\n\t\tdatasets: originalChartDatasets,\n\t};\n\n\t// Render custom legend with color boxes\n\tconst renderLegend = (isPopup = false) => {\n\t\t// Determine justification based on whether popup is allowed and current context\n\t\tlet justification;\n\t\tif (props.allowChartPopup && !isPopup) {\n\t\t\tjustification = 'flex-start';\n\t\t} else {\n\t\t\tjustification = 'flex-end';\n\t\t}\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\toverflowY: 'scroll',\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\tflexDirection: 'row',\n\t\t\t\t\tgap: '10px',\n\t\t\t\t\tpadding: '0px 24px 12px 24px',\n\t\t\t\t\tjustifyContent: justification,\n\t\t\t\t\tflexWrap: 'wrap',\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{yAxisStackedData.map((_item) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={_item.label.replace(' ', '_')}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\tgap: '8px',\n\t\t\t\t\t\t\t\tmarginTop: '4px',\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tbackgroundColor: _item.backgroundColor,\n\t\t\t\t\t\t\t\t\twidth: '16px',\n\t\t\t\t\t\t\t\t\theight: '16px',\n\t\t\t\t\t\t\t\t\tborderRadius: '2px',\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<BodyTiny color={COLORS.content.secondary}>\n\t\t\t\t\t\t\t\t{_item.label}\n\t\t\t\t\t\t\t</BodyTiny>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t);\n\t};\n\n\treturn (\n\t\t<GraphContainerWrapper\n\t\t\tstyle={props.wrapperStyle ?? {}}\n\t\t\tpadding={props.outerPadding}\n\t\t\tcustomLegend={props.customLegend}\n\t\t>\n\t\t\t{props.chartHeading && (\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tmarginBottom: 24,\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\tjustifyContent: props.hideHeading ? 'flex-end' : 'space-between',\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{props.hideHeading !== true && (\n\t\t\t\t\t\t<TitleRegular\n\t\t\t\t\t\t\tcolor={props.chartHeading.color ?? COLORS.content.secondary}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{props.chartHeading.heading}\n\t\t\t\t\t\t</TitleRegular>\n\t\t\t\t\t)}\n\t\t\t\t\t{props.allowChartPopup && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\tjustifyContent: 'flex-end',\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\tIcon={MaximizeIcon}\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\tsetShowPopup(true);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{props.customLegend && (\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\tflexDirection: legendsAndIconDirection,\n\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<HeaderIconWrapper>\n\t\t\t\t\t\t{headerIcons.map((icon, index) => (\n\t\t\t\t\t\t\t<div key={index}>\n\t\t\t\t\t\t\t\t<div>{icon}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</HeaderIconWrapper>\n\t\t\t\t\t{renderLegend()}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<div className=\"graph__wrapper\">\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\theight: props.graphCanvasHeight ?? 500,\n\t\t\t\t\t\twidth: props.graphCanvasWidth ?? 'auto',\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<Bar options={options} data={data} />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{showPopup && (\n\t\t\t\t<StyledModal\n\t\t\t\t\topen={showPopup}\n\t\t\t\t\tonClose={() => setShowPopup(false)}\n\t\t\t\t\tcloseOnOutsideClick\n\t\t\t\t\theadingTitle={props.chartHeading?.heading}\n\t\t\t\t\twidth=\"85%\"\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"graph__wrapper\"\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tpadding: '8px',\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{props.customLegend && renderLegend(true)}\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\theight: '70vh',\n\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\tpadding: '16px',\n\t\t\t\t\t\t\t\tborderRadius: '8px',\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Bar options={options} data={originalChartData} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</StyledModal>\n\t\t\t)}\n\t\t</GraphContainerWrapper>\n\t);\n};\n"],"names":["ChartJS","CategoryScale","LinearScale","BarElement","Tooltip","Legend","ChartDataLabels","truncateBars","data","labels","limit","truncatedData","d","othersData","acc","curr","i","truncatedLabels","StackedBarChart","props","headerIcons","legendsAndIconDirection","showPopup","setShowPopup","useState","dummyValues","noDataPresent","yAxisConfigForNoData","colorScaleBrand","colourScalePastel","colourScale","COLOR_SCHEMA","hoverColourScale","barConfig","useMemo","dataSetMap","ele","obj","yAxisStackedData","key","ind","reorderedYAxisData","dataset","datasetIndex","sum","val","a","b","originalData","truncated","options","_","context","datasets","dataIndex","COLORS","GRAPH_ORIENTATION","FONTS","value","formattedValue","truncateValueForInternationalStore","truncateValueForIndianStore","suffix","e","activeEls","yAxisLabel","xAxisLabel","chartDatasets","originalChartDatasets","originalChartData","renderLegend","isPopup","justification","jsx","_item","jsxs","BodyTiny","GraphContainerWrapper","TitleRegular","IconButton","MaximizeIcon","HeaderIconWrapper","icon","index","Bar","StyledModal"],"mappings":"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"}
1
+ {"version":3,"file":"StackedBarChart.js","sources":["../../../../../../src/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.tsx"],"sourcesContent":["import MaximizeIcon from '@src/assets/icons/maximize.svg';\nimport {\n\tBarElement,\n\tCategoryScale,\n\tChart as ChartJS,\n\tLegend,\n\tLinearScale,\n\tTooltip,\n} from 'chart.js';\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\nimport { useMemo, useState } from 'react';\nimport { Bar } from 'react-chartjs-2';\nimport { IconButton } from '@src/components/icon-button';\nimport { StyledModal } from '@src/components/modals';\nimport { BodyTiny, TitleRegular } from '@src/components/TypographyStyle';\nimport { COLORS, FONTS } from '@src/constants/Theme';\nimport {\n\ttruncateValueForIndianStore,\n\ttruncateValueForInternationalStore,\n} from '../utils/calcPercentage';\nimport {\n\tCOLOR_SCHEMA,\n\tGRAPH_ORIENTATION,\n\tStackedBarGraphI,\n} from './StackedBarChart.model';\nimport {\n\tGraphContainerWrapper,\n\tHeaderIconWrapper,\n} from './StackedBarChart.styles';\n\nChartJS.register(\n\tCategoryScale,\n\tLinearScale,\n\tBarElement,\n\tTooltip,\n\tLegend,\n\tChartDataLabels,\n);\n\nconst truncateBars = (data, labels, limit) => {\n\tif (labels.length <= limit)\n\t\treturn {\n\t\t\ttruncatedData: data,\n\t\t\ttruncatedLabels: labels,\n\t\t\toriginalData: data,\n\t\t\toriginalLabels: labels,\n\t\t};\n\tconst truncatedData = data.map((d) => d.slice(0, limit));\n\tconst othersData = data.map((d) =>\n\t\td.slice(limit).reduce((acc, curr) => acc + curr, 0),\n\t);\n\ttruncatedData.forEach((d, i) => d.push(othersData[i]));\n\tconst truncatedLabels = labels.slice(0, limit);\n\ttruncatedLabels.push('Others');\n\treturn {\n\t\ttruncatedData,\n\t\ttruncatedLabels,\n\t\toriginalData: data,\n\t\toriginalLabels: labels,\n\t};\n};\n\nexport const StackedBarChart = (props: StackedBarGraphI) => {\n\tconst { headerIcons = [], legendsAndIconDirection = 'row' } = props;\n\tconst [showPopup, setShowPopup] = useState(false);\n\tconst dummyValues = [250, 1000, 800, 1500, 300, 600];\n\tconst noDataPresent = props.yAxis.data.length === 0;\n\tconst yAxisConfigForNoData = {\n\t\tmin: 0,\n\t\tmax: 2000,\n\t\tstepSize: 200,\n\t};\n\n\tconst colorScaleBrand = [\n\t\t'#5E07BB',\n\t\t'#9E77ED',\n\t\t'#D2AEFF',\n\t\t'#F7D7FF',\n\t\t'#CDE1FF',\n\t\t'#92AFFA',\n\t\t'#3935E1',\n\t];\n\n\tconst colourScalePastel = [\n\t\t'#E6C7FF',\n\t\t'#FEC6C6',\n\t\t'#FEDEF3',\n\t\t'#DEEFFF',\n\t\t'#FFD8B1',\n\t\t'#C7E5FF',\n\t\t'#FFD3E6',\n\t\t'#C9FFE5',\n\t\t'#FFE3C7',\n\t\t'#D9D9FF',\n\t];\n\n\t// Determine which color scale to use based on props\n\tconst getColorScale = () => {\n\t\t// If custom bar colors are provided, use them\n\t\tif (props.customBarColors) return props.customBarColors;\n\n\t\t// If custom brand or pastel colors are provided\n\t\tif (props.customColourScaleBrand || props.customColourScalePastel) {\n\t\t\tif (props.colorSchema === COLOR_SCHEMA.PASTEL) {\n\t\t\t\treturn props.customColourScalePastel;\n\t\t\t} else {\n\t\t\t\treturn props.customColourScaleBrand;\n\t\t\t}\n\t\t}\n\n\t\t// Use default color scales based on schema\n\t\tif (props.colorSchema === COLOR_SCHEMA.PASTEL) {\n\t\t\treturn colourScalePastel;\n\t\t} else {\n\t\t\treturn colorScaleBrand;\n\t\t}\n\t};\n\n\tconst colourScale = getColorScale();\n\tconst hoverColourScale = props.customHoverColour;\n\n\t// Memoized bar configuration settings\n\tconst barConfig = useMemo(\n\t\t() => ({\n\t\t\tbarPercentage: props?.barPercentage || 0.4,\n\t\t\tcategoryPercentage: props?.categoryPercentage ?? 1,\n\t\t\tpointStyle: 'circle',\n\t\t\tbarWidth: props.barWidth,\n\t\t\tborderRadius: props?.borderRadius || undefined,\n\t\t\t// If borderRadius is an object, disable border skipping\n\t\t\t...(typeof props?.borderRadius === 'object'\n\t\t\t\t? { borderSkipped: false }\n\t\t\t\t: {}),\n\t\t\t// If bar gap is enabled, add transparent borders for spacing\n\t\t\t...(props?.addBarGap?.flag\n\t\t\t\t? {\n\t\t\t\t\t\tborderWidth: {\n\t\t\t\t\t\t\ttop: props?.addBarGap?.value || 2,\n\t\t\t\t\t\t\tbottom: props?.addBarGap?.value || 2,\n\t\t\t\t\t\t\tright: 0,\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tborderColor: 'transparent',\n\t\t\t\t }\n\t\t\t\t: {}),\n\t\t}),\n\t\t[\n\t\t\tprops.barWidth,\n\t\t\tprops?.borderRadius,\n\t\t\tprops?.barPercentage,\n\t\t\tprops?.addBarGap,\n\t\t],\n\t);\n\n\t// Transform y-axis data into a map grouped by dataset name\n\tconst dataSetMap = {};\n\tprops.yAxis.data.map((ele) => {\n\t\tele.map((obj) => {\n\t\t\tif (dataSetMap[obj.name]) {\n\t\t\t\tdataSetMap[obj.name].push(obj.value);\n\t\t\t} else {\n\t\t\t\tdataSetMap[obj.name] = [obj.value];\n\t\t\t}\n\t\t});\n\t});\n\n\t// Create datasets for chart with colors and bar configuration\n\tconst yAxisStackedData = Object.keys(dataSetMap).map((key, ind) => {\n\t\treturn {\n\t\t\tlabel: key,\n\t\t\tdata: dataSetMap[key],\n\t\t\tbackgroundColor: colourScale?.[ind],\n\t\t\thoverBackgroundColor:\n\t\t\t\thoverColourScale === undefined ? undefined : hoverColourScale[ind],\n\t\t\t...barConfig,\n\t\t};\n\t});\n\n\t// Conditionally reorder datasets so smaller values are drawn on top (for overlapping bars)\n\tlet reorderedYAxisData;\n\tif (props.renderInHeightWiseManner) {\n\t\treorderedYAxisData = yAxisStackedData\n\t\t\t.map((dataset, datasetIndex) => {\n\t\t\t\treturn {\n\t\t\t\t\t...dataset,\n\t\t\t\t\t// Add order property: higher values = drawn first (behind)\n\t\t\t\t\torder: dataset.data.reduce((sum, val) => sum + (val || 0), 0),\n\t\t\t\t};\n\t\t\t})\n\t\t\t.sort((a, b) => b.order - a.order);\n\t} else {\n\t\treorderedYAxisData = yAxisStackedData;\n\t}\n\n\t// Extract labels from x-axis data (either string or object with name property)\n\tlet labels = props.xAxis.data.map((data) =>\n\t\ttypeof data === 'string' ? data : data.name,\n\t);\n\n\t// Keep track of original data before any truncation\n\tlet originalData = reorderedYAxisData;\n\t// Truncate bars if limit is specified\n\tif (props.truncateBars) {\n\t\tconst truncated = truncateBars(\n\t\t\treorderedYAxisData.map((d) => d.data),\n\t\t\tlabels,\n\t\t\tprops.truncateBars,\n\t\t);\n\t\treorderedYAxisData.forEach((d, i) => (d.data = truncated.truncatedData[i]));\n\t\tlabels = truncated.truncatedLabels;\n\t\toriginalData = truncated.originalData.map((data, i) => ({\n\t\t\t...reorderedYAxisData[i],\n\t\t\tdata,\n\t\t}));\n\t}\n\n\tconst options = {\n\t\tplugins: {\n\t\t\tlegend: {\n\t\t\t\t// Show legend only if data exists and custom legend is not used\n\t\t\t\tdisplay: !noDataPresent && !props.customLegend,\n\t\t\t\tlabels: {\n\t\t\t\t\tusePointStyle: true,\n\t\t\t\t\tfontSize: 2,\n\t\t\t\t},\n\t\t\t},\n\t\t\ttooltip: {\n\t\t\t\t// Enable tooltip only when data is present\n\t\t\t\tenabled: !noDataPresent,\n\t\t\t\tcallbacks: {\n\t\t\t\t\tlabel: props.tooltipConfig?.labelCallback,\n\t\t\t\t\ttitle: props.tooltipConfig?.titleCallback,\n\t\t\t\t\tfooter: props.tooltipConfig?.footerCallback,\n\t\t\t\t},\n\t\t\t\tfooterFont: props.tooltipConfig?.footerStyles?.footerFont,\n\t\t\t},\n\t\t\tdatalabels: {\n\t\t\t\tdisplay: props.showTotal ?? false,\n\t\t\t\tanchor: 'end' as const,\n\t\t\t\talign: 'end' as const,\n\t\t\t\tclamp: true,\n\t\t\t\t// Format total value label for stacked bars\n\t\t\t\tformatter: (_, context) => {\n\t\t\t\t\tconst datasetIndex = context.datasetIndex;\n\t\t\t\t\tconst datasets = context.chart.data.datasets;\n\t\t\t\t\t// Only show label on the last dataset (top of stack)\n\t\t\t\t\tif (datasetIndex !== datasets.length - 1) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\t\t\t\t\tconst dataIndex = context.dataIndex;\n\t\t\t\t\t// Calculate sum across all datasets for this data point\n\t\t\t\t\tlet sum = 0;\n\t\t\t\t\tfor (let i = 0; i < datasets.length; i++) {\n\t\t\t\t\t\tsum += datasets[i].data[dataIndex] ?? 0;\n\t\t\t\t\t}\n\t\t\t\t\tif (!sum) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\t\t\t\t\t// Format values under 1000 as-is, others as 'k' format\n\t\t\t\t\tif (sum < 1000) {\n\t\t\t\t\t\treturn sum;\n\t\t\t\t\t}\n\t\t\t\t\treturn (sum / 1000).toString().substring(0, 4) + 'k';\n\t\t\t\t},\n\t\t\t\tcolor: COLORS.content.secondary,\n\t\t\t},\n\t\t},\n\t\tlayout: {\n\t\t\tpadding: {\n\t\t\t\t// Add right padding for horizontal orientation when showing totals\n\t\t\t\tright:\n\t\t\t\t\tprops.showTotal && props.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t? 50\n\t\t\t\t\t\t: 0,\n\t\t\t\t// Add top padding for non-horizontal orientation when showing totals\n\t\t\t\ttop:\n\t\t\t\t\tprops.showTotal && props.orientation != GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t? 50\n\t\t\t\t\t\t: 0,\n\t\t\t},\n\t\t},\n\t\tresponsive: true,\n\t\tmaintainAspectRatio: false,\n\t\tlegend: {\n\t\t\tdisplay: !props.customLegend,\n\t\t\tlabels: {\n\t\t\t\tusePointStyle: true,\n\t\t\t},\n\t\t},\n\t\t// Set index axis based on orientation (y for horizontal, x for vertical)\n\t\tindexAxis: (props.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t? 'y'\n\t\t\t: 'x') as 'y' | 'x',\n\t\tscales: {\n\t\t\tx: {\n\t\t\t\ttitle: {\n\t\t\t\t\t// For horizontal orientation, x-axis shows y-axis data and vice versa\n\t\t\t\t\tdisplay: !!(props.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t? props.yAxis?.title\n\t\t\t\t\t\t: props.xAxis?.title),\n\t\t\t\t\ttext:\n\t\t\t\t\t\tprops.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t\t? props.yAxis?.title\n\t\t\t\t\t\t\t: props.xAxis?.title,\n\t\t\t\t\tcolor:\n\t\t\t\t\t\t(props.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t\t? props.yAxis?.titleColor\n\t\t\t\t\t\t\t: props.xAxis?.titleColor) ?? COLORS.content.secondary,\n\t\t\t\t\tfont: { size: FONTS.caption.fontSize },\n\t\t\t\t},\n\t\t\t\tgrid: {\n\t\t\t\t\t// Show grid lines for horizontal orientation (default true unless specified)\n\t\t\t\t\tdisplay:\n\t\t\t\t\t\tprops.orientation === GRAPH_ORIENTATION.HORIZONTAL &&\n\t\t\t\t\t\t(typeof props?.showGridLines?.x === 'undefined'\n\t\t\t\t\t\t\t? true\n\t\t\t\t\t\t\t: props?.showGridLines?.x),\n\t\t\t\t\tcolor: COLORS.background.base,\n\t\t\t\t},\n\t\t\t\tticks: {\n\t\t\t\t\tfontSize: FONTS.caption.fontSize,\n\t\t\t\t\tcolor: props.yAxis.labelColor ?? COLORS.content.secondary,\n\t\t\t\t\t// Format tick labels based on orientation\n\t\t\t\t\tcallback:\n\t\t\t\t\t\tprops.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t\t? (value) => {\n\t\t\t\t\t\t\t\t\t// For horizontal, format and truncate based on store type\n\t\t\t\t\t\t\t\t\tlet formattedValue;\n\t\t\t\t\t\t\t\t\tif (props.isInternationalStore) {\n\t\t\t\t\t\t\t\t\t\tformattedValue = truncateValueForInternationalStore(value);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tformattedValue = truncateValueForIndianStore(value);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconst suffix = props.yAxis?.axisSuffix || '';\n\t\t\t\t\t\t\t\t\treturn `${formattedValue}${suffix}`;\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: props.xAxis?.axisSuffix\n\t\t\t\t\t\t\t? (value) => `${value}${props.xAxis.axisSuffix}`\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t},\n\t\t\t\t// Determine if x-axis should be stacked (default true)\n\t\t\t\tstacked:\n\t\t\t\t\tprops.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t? typeof props.yAxis?.stacked === 'boolean'\n\t\t\t\t\t\t\t? props.yAxis?.stacked\n\t\t\t\t\t\t\t: true\n\t\t\t\t\t\t: typeof props.xAxis?.stacked === 'boolean'\n\t\t\t\t\t\t? props.xAxis?.stacked\n\t\t\t\t\t\t: true,\n\t\t\t},\n\t\t\ty: {\n\t\t\t\t// Set equal height if flag is enabled (for symmetric charts)\n\t\t\t\t...(props?.equalHeight?.flag\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tsuggestedMin: -props?.equalHeight.max, // Set negative side\n\t\t\t\t\t\t\tsuggestedMax: props?.equalHeight.max, // Set positive side\n\t\t\t\t\t }\n\t\t\t\t\t: {}),\n\t\t\t\tmax: props?.yAxis?.max,\n\t\t\t\ttitle: {\n\t\t\t\t\t// For horizontal orientation, y-axis shows x-axis data and vice versa\n\t\t\t\t\tdisplay: !!(props.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t? props.xAxis?.title\n\t\t\t\t\t\t: props.yAxis?.title),\n\t\t\t\t\ttext:\n\t\t\t\t\t\tprops.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t\t? props.xAxis?.title\n\t\t\t\t\t\t\t: props.yAxis?.title,\n\t\t\t\t\tcolor:\n\t\t\t\t\t\t(props.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t\t? props.xAxis?.titleColor\n\t\t\t\t\t\t\t: props.yAxis?.titleColor) ?? COLORS.content.secondary,\n\t\t\t\t\tfont: { size: FONTS.caption.fontSize },\n\t\t\t\t},\n\t\t\t\tgrid: {\n\t\t\t\t\t// Show grid lines for non-horizontal orientation (default true unless specified)\n\t\t\t\t\tdisplay:\n\t\t\t\t\t\tprops.orientation !== GRAPH_ORIENTATION.HORIZONTAL &&\n\t\t\t\t\t\t(typeof props?.showGridLines?.y === 'undefined'\n\t\t\t\t\t\t\t? true\n\t\t\t\t\t\t\t: props?.showGridLines?.y),\n\t\t\t\t\tcolor: COLORS.background.base,\n\t\t\t\t},\n\t\t\t\tticks: {\n\t\t\t\t\tstepSize:\n\t\t\t\t\t\tprops.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t\t? props.xAxis?.stepSize\n\t\t\t\t\t\t\t: props.yAxis?.stepSize,\n\t\t\t\t\tfontSize: FONTS.caption.fontSize,\n\t\t\t\t\tcolor: props.xAxis.labelColor ?? COLORS.content.secondary,\n\t\t\t\t\t// Apply no-data config if no data exists\n\t\t\t\t\t...(noDataPresent ? yAxisConfigForNoData : {}),\n\t\t\t\t\t// Use custom callback if provided, otherwise format based on orientation\n\t\t\t\t\tcallback: props?.ticksCallback\n\t\t\t\t\t\t? props?.ticksCallback\n\t\t\t\t\t\t: props.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t? (value) => {\n\t\t\t\t\t\t\t\t// For horizontal, format and truncate based on store type\n\t\t\t\t\t\t\t\tlet formattedValue;\n\t\t\t\t\t\t\t\tif (props.isInternationalStore) {\n\t\t\t\t\t\t\t\t\tformattedValue = truncateValueForInternationalStore(value);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tformattedValue = truncateValueForIndianStore(value);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst suffix = props.xAxis?.axisSuffix || '';\n\t\t\t\t\t\t\t\treturn `${formattedValue}${suffix}`;\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: props.yAxis?.axisSuffix\n\t\t\t\t\t\t? (value) => `${value}${props.yAxis.axisSuffix}`\n\t\t\t\t\t\t: undefined,\n\t\t\t\t},\n\t\t\t\t// Determine if y-axis should be stacked (default true)\n\t\t\t\tstacked:\n\t\t\t\t\tprops.orientation === GRAPH_ORIENTATION.HORIZONTAL\n\t\t\t\t\t\t? typeof props.xAxis?.stacked === 'boolean'\n\t\t\t\t\t\t\t? props.xAxis?.stacked\n\t\t\t\t\t\t\t: true\n\t\t\t\t\t\t: typeof props.yAxis?.stacked === 'boolean'\n\t\t\t\t\t\t? props.yAxis?.stacked\n\t\t\t\t\t\t: true,\n\t\t\t},\n\t\t},\n\t\t// Handle bar click events\n\t\tonClick: (e, activeEls) => {\n\t\t\tif (!props.onBarClick) return;\n\t\t\tconst datasetIndex = activeEls[0].datasetIndex;\n\t\t\tconst dataIndex = activeEls[0].index;\n\t\t\tconst yAxisLabel = e.chart.data.datasets[datasetIndex].label;\n\t\t\tconst xAxisLabel = e.chart.data.labels[dataIndex];\n\t\t\tprops.onBarClick(xAxisLabel, yAxisLabel);\n\t\t},\n\t\t// Change cursor to pointer on hover when bar is clickable\n\t\tonHover: (e, activeEls) => {\n\t\t\tif (!props.onBarClick) return;\n\t\t\tif (activeEls.length) e.native.target.style.cursor = 'pointer';\n\t\t},\n\t};\n\n\t// Clean up tick callbacks based on orientation\n\tif (!props.orientation || props.orientation === GRAPH_ORIENTATION.VERTICAL) {\n\t\tdelete options.scales.x.ticks['callback'];\n\t} else {\n\t\tdelete options.scales.y.ticks['callback'];\n\t}\n\n\t// Prepare data for the chart\n\tlet chartDatasets;\n\tif (noDataPresent) {\n\t\tchartDatasets = [{ data: dummyValues, backgroundColor: 'rgba(0,0,0,0)' }];\n\t} else {\n\t\tchartDatasets = reorderedYAxisData;\n\t}\n\n\tconst data = {\n\t\tlabels: labels,\n\t\tdatasets: chartDatasets,\n\t};\n\n\t// Prepare original chart data (used for popup modal)\n\tlet originalChartDatasets;\n\tif (noDataPresent) {\n\t\toriginalChartDatasets = [\n\t\t\t{ data: dummyValues, backgroundColor: 'rgba(0,0,0,0)' },\n\t\t];\n\t} else {\n\t\toriginalChartDatasets = originalData;\n\t}\n\n\tconst originalChartData = {\n\t\tlabels: props.xAxis.data.map((data) =>\n\t\t\ttypeof data === 'string' ? data : data.name,\n\t\t),\n\t\tdatasets: originalChartDatasets,\n\t};\n\n\t// Render custom legend with color boxes\n\tconst renderLegend = (isPopup = false) => {\n\t\t// Determine justification based on whether popup is allowed and current context\n\t\tlet justification;\n\t\tif (props.allowChartPopup && !isPopup) {\n\t\t\tjustification = 'flex-start';\n\t\t} else {\n\t\t\tjustification = 'flex-end';\n\t\t}\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\toverflowY: 'scroll',\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\tflexDirection: 'row',\n\t\t\t\t\tgap: '10px',\n\t\t\t\t\tpadding: '0px 24px 12px 24px',\n\t\t\t\t\tjustifyContent: justification,\n\t\t\t\t\tflexWrap: 'wrap',\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{yAxisStackedData.map((_item) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={_item.label.replace(' ', '_')}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\tgap: '8px',\n\t\t\t\t\t\t\t\tmarginTop: '4px',\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tbackgroundColor: _item.backgroundColor,\n\t\t\t\t\t\t\t\t\twidth: '16px',\n\t\t\t\t\t\t\t\t\theight: '16px',\n\t\t\t\t\t\t\t\t\tborderRadius: '2px',\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<BodyTiny color={COLORS.content.secondary}>\n\t\t\t\t\t\t\t\t{_item.label}\n\t\t\t\t\t\t\t</BodyTiny>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t);\n\t};\n\n\treturn (\n\t\t<GraphContainerWrapper\n\t\t\tstyle={props.wrapperStyle ?? {}}\n\t\t\tpadding={props.outerPadding}\n\t\t\tcustomLegend={props.customLegend}\n\t\t>\n\t\t\t{props.chartHeading && (\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tmarginBottom: 24,\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\tjustifyContent: props.hideHeading ? 'flex-end' : 'space-between',\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{props.hideHeading !== true && (\n\t\t\t\t\t\t<TitleRegular\n\t\t\t\t\t\t\tcolor={props.chartHeading.color ?? COLORS.content.secondary}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{props.chartHeading.heading}\n\t\t\t\t\t\t</TitleRegular>\n\t\t\t\t\t)}\n\t\t\t\t\t{props.allowChartPopup && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\tjustifyContent: 'flex-end',\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\tIcon={MaximizeIcon}\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\tsetShowPopup(true);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{props.customLegend && (\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\tflexDirection: legendsAndIconDirection,\n\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<HeaderIconWrapper>\n\t\t\t\t\t\t{headerIcons.map((icon, index) => (\n\t\t\t\t\t\t\t<div key={index}>\n\t\t\t\t\t\t\t\t<div>{icon}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</HeaderIconWrapper>\n\t\t\t\t\t{renderLegend()}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<div className=\"graph__wrapper\">\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\theight: props.graphCanvasHeight ?? 500,\n\t\t\t\t\t\twidth: props.graphCanvasWidth ?? 'auto',\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<Bar options={options} data={data} />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{showPopup && (\n\t\t\t\t<StyledModal\n\t\t\t\t\topen={showPopup}\n\t\t\t\t\tonClose={() => setShowPopup(false)}\n\t\t\t\t\tcloseOnOutsideClick\n\t\t\t\t\theadingTitle={props.chartHeading?.heading}\n\t\t\t\t\twidth=\"85%\"\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"graph__wrapper\"\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tpadding: '8px',\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{props.customLegend && renderLegend(true)}\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\theight: '70vh',\n\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\tpadding: '16px',\n\t\t\t\t\t\t\t\tborderRadius: '8px',\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Bar options={options} data={originalChartData} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</StyledModal>\n\t\t\t)}\n\t\t</GraphContainerWrapper>\n\t);\n};\n"],"names":["ChartJS","CategoryScale","LinearScale","BarElement","Tooltip","Legend","ChartDataLabels","truncateBars","data","labels","limit","truncatedData","d","othersData","acc","curr","i","truncatedLabels","StackedBarChart","props","headerIcons","legendsAndIconDirection","showPopup","setShowPopup","useState","dummyValues","noDataPresent","yAxisConfigForNoData","colorScaleBrand","colourScalePastel","colourScale","COLOR_SCHEMA","hoverColourScale","barConfig","useMemo","dataSetMap","ele","obj","yAxisStackedData","key","ind","reorderedYAxisData","dataset","datasetIndex","sum","val","a","b","originalData","truncated","options","_","context","datasets","dataIndex","COLORS","GRAPH_ORIENTATION","FONTS","value","formattedValue","truncateValueForInternationalStore","truncateValueForIndianStore","suffix","e","activeEls","yAxisLabel","xAxisLabel","chartDatasets","originalChartDatasets","originalChartData","renderLegend","isPopup","justification","jsx","_item","jsxs","BodyTiny","GraphContainerWrapper","TitleRegular","IconButton","MaximizeIcon","HeaderIconWrapper","icon","index","Bar","StyledModal"],"mappings":"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"}
@@ -80,6 +80,7 @@ export interface StackedBarGraphI {
80
80
  max: number;
81
81
  };
82
82
  barPercentage?: number;
83
+ categoryPercentage?: number;
83
84
  addBarGap?: {
84
85
  flag: boolean;
85
86
  value: number;
@@ -1 +1 @@
1
- {"version":3,"file":"StackedBarChart.model.js","sources":["../../../../../../src/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.model.ts"],"sourcesContent":["import { FontSpec, TooltipItem } from 'chart.js';\n\nexport interface AxisDetailsI {\n\ttitle?: string;\n\ttitleColor?: string;\n\tdata: XAxisDataI[] | string[];\n\tlabelColor?: string;\n\tstepSize?: number;\n\tstacked?: boolean;\n\taxisSuffix?: string; // Suffix to append to axis values (e.g., '%', 'k', 'M')\n\tmax?: number;\n}\n\nexport interface XAxisDataI {\n\tname: string;\n\tvalue: number;\n}\n\nexport interface RGBColorI {\n\tr: number;\n\tg: number;\n\tb: number;\n\ta?: number;\n}\n\nexport interface ChartHeadingI {\n\theading: string;\n\tcolor?: string;\n}\n\nexport enum COLOR_SCHEMA {\n\tBRAND = 'brand',\n\tPASTEL = 'pastel',\n}\n\nexport enum GRAPH_ORIENTATION {\n\tVERTICAL = 'vertical',\n\tHORIZONTAL = 'horizontal',\n}\n\nexport interface StackedBarGraphI {\n\tgraphCanvasHeight?: number | string;\n\tgraphCanvasWidth?: string;\n\ttickColor?: string;\n\tlabelColor?: string;\n\tchartHeading?: ChartHeadingI;\n\txAxis: AxisDetailsI;\n\tyAxis: AxisDetailsI;\n\tbarColorRGBA: RGBColorI;\n\touterPadding?: string;\n\tonBarClick?: (xAxisLabel: string, yAxisLabel: string) => void;\n\tcolorSchema?: COLOR_SCHEMA;\n\torientation?: GRAPH_ORIENTATION;\n\tbarWidth?: number;\n\twrapperStyle?: React.CSSProperties;\n\tcustomLegend?: boolean;\n\tshowTotal?: boolean;\n\ttooltipConfig?: {\n\t\ttitleCallback?: (toolTipItems: TooltipItem<'bar'>[]) => string | string[];\n\t\tlabelCallback?: (toolTipItem: TooltipItem<'bar'>) => string | string[];\n\t\tfooterCallback?: (toolTipItems: TooltipItem<'bar'>[]) => string | string[];\n\t\tfooterStyles?: {\n\t\t\tfooterFont?: Partial<FontSpec>;\n\t\t};\n\t};\n\tcustomColourScaleBrand?: string[];\n\tcustomColourScalePastel?: string[];\n\tcustomHoverColour?: string[];\n\tcustomBarColors?: string[] /** Custom colors for individual bars in the stack */;\n\tisInternationalStore?: boolean;\n\ttruncateBars?: number;\n\tallowChartPopup?: boolean;\n\thideHeading?: boolean;\n\t/** borderRadius - if number passes only the top bar of the stack will be given radius. Send object to apply border in all the bars of the stack */\n\tborderRadius?:\n\t\t| number\n\t\t| {\n\t\t\t\ttopLeft?: number;\n\t\t\t\ttopRight?: number;\n\t\t\t\tbottomLeft?: number;\n\t\t\t\tbottomRight?: number;\n\t\t };\n\tshowGridLines?: { x?: boolean; y?: boolean };\n\tequalHeight?: { flag: boolean; max: number };\n\tbarPercentage?: number; // 0 to 1\n\taddBarGap?: { flag: boolean; value: number };\n\tticksCallback?: (value: number | string) => string;\n\tlegendsAndIconDirection?: 'row-reverse' | 'row';\n\theaderIcons?: React.ReactNode[];\n\trenderInHeightWiseManner?: boolean /** When true, renders smaller bars on top of larger bars */;\n}\n"],"names":["COLOR_SCHEMA","GRAPH_ORIENTATION"],"mappings":"AA8BO,IAAKA,sBAAAA,OACXA,EAAA,QAAQ,SACRA,EAAA,SAAS,UAFEA,IAAAA,KAAA,CAAA,CAAA,GAKAC,sBAAAA,OACXA,EAAA,WAAW,YACXA,EAAA,aAAa,cAFFA,IAAAA,KAAA,CAAA,CAAA;"}
1
+ {"version":3,"file":"StackedBarChart.model.js","sources":["../../../../../../src/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.model.ts"],"sourcesContent":["import { FontSpec, TooltipItem } from 'chart.js';\n\nexport interface AxisDetailsI {\n\ttitle?: string;\n\ttitleColor?: string;\n\tdata: XAxisDataI[] | string[];\n\tlabelColor?: string;\n\tstepSize?: number;\n\tstacked?: boolean;\n\taxisSuffix?: string; // Suffix to append to axis values (e.g., '%', 'k', 'M')\n\tmax?: number;\n}\n\nexport interface XAxisDataI {\n\tname: string;\n\tvalue: number;\n}\n\nexport interface RGBColorI {\n\tr: number;\n\tg: number;\n\tb: number;\n\ta?: number;\n}\n\nexport interface ChartHeadingI {\n\theading: string;\n\tcolor?: string;\n}\n\nexport enum COLOR_SCHEMA {\n\tBRAND = 'brand',\n\tPASTEL = 'pastel',\n}\n\nexport enum GRAPH_ORIENTATION {\n\tVERTICAL = 'vertical',\n\tHORIZONTAL = 'horizontal',\n}\n\nexport interface StackedBarGraphI {\n\tgraphCanvasHeight?: number | string;\n\tgraphCanvasWidth?: string;\n\ttickColor?: string;\n\tlabelColor?: string;\n\tchartHeading?: ChartHeadingI;\n\txAxis: AxisDetailsI;\n\tyAxis: AxisDetailsI;\n\tbarColorRGBA: RGBColorI;\n\touterPadding?: string;\n\tonBarClick?: (xAxisLabel: string, yAxisLabel: string) => void;\n\tcolorSchema?: COLOR_SCHEMA;\n\torientation?: GRAPH_ORIENTATION;\n\tbarWidth?: number;\n\twrapperStyle?: React.CSSProperties;\n\tcustomLegend?: boolean;\n\tshowTotal?: boolean;\n\ttooltipConfig?: {\n\t\ttitleCallback?: (toolTipItems: TooltipItem<'bar'>[]) => string | string[];\n\t\tlabelCallback?: (toolTipItem: TooltipItem<'bar'>) => string | string[];\n\t\tfooterCallback?: (toolTipItems: TooltipItem<'bar'>[]) => string | string[];\n\t\tfooterStyles?: {\n\t\t\tfooterFont?: Partial<FontSpec>;\n\t\t};\n\t};\n\tcustomColourScaleBrand?: string[];\n\tcustomColourScalePastel?: string[];\n\tcustomHoverColour?: string[];\n\tcustomBarColors?: string[] /** Custom colors for individual bars in the stack */;\n\tisInternationalStore?: boolean;\n\ttruncateBars?: number;\n\tallowChartPopup?: boolean;\n\thideHeading?: boolean;\n\t/** borderRadius - if number passes only the top bar of the stack will be given radius. Send object to apply border in all the bars of the stack */\n\tborderRadius?:\n\t\t| number\n\t\t| {\n\t\t\t\ttopLeft?: number;\n\t\t\t\ttopRight?: number;\n\t\t\t\tbottomLeft?: number;\n\t\t\t\tbottomRight?: number;\n\t\t };\n\tshowGridLines?: { x?: boolean; y?: boolean };\n\tequalHeight?: { flag: boolean; max: number };\n\tbarPercentage?: number; // 0 to 1\n\tcategoryPercentage?: number;\n\taddBarGap?: { flag: boolean; value: number };\n\tticksCallback?: (value: number | string) => string;\n\tlegendsAndIconDirection?: 'row-reverse' | 'row';\n\theaderIcons?: React.ReactNode[];\n\trenderInHeightWiseManner?: boolean /** When true, renders smaller bars on top of larger bars */;\n}\n"],"names":["COLOR_SCHEMA","GRAPH_ORIENTATION"],"mappings":"AA8BO,IAAKA,sBAAAA,OACXA,EAAA,QAAQ,SACRA,EAAA,SAAS,UAFEA,IAAAA,KAAA,CAAA,CAAA,GAKAC,sBAAAA,OACXA,EAAA,WAAW,YACXA,EAAA,aAAa,cAFFA,IAAAA,KAAA,CAAA,CAAA;"}
@@ -0,0 +1,3 @@
1
+ export declare const FUNNEL_BAND_COLORS: string[];
2
+ export declare const COMPARISON_BAR_COLORS: string[];
3
+ export declare const pickColor: (colors: string[], index: number) => string | undefined;
@@ -0,0 +1,18 @@
1
+ import { COLORS as n } from "../../../constants/Theme.js";
2
+ const b = [
3
+ n.stroke.brandLightAlt,
4
+ n.background.brandLight,
5
+ n.background.brandTint,
6
+ n.background.brandVeryLight
7
+ ], a = [
8
+ n.background.brand,
9
+ n.stroke.brandSubdued,
10
+ n.stroke.brandLightAlt,
11
+ n.background.brandTint
12
+ ], o = (r, t) => r.length ? r[t % r.length] : void 0;
13
+ export {
14
+ a as COMPARISON_BAR_COLORS,
15
+ b as FUNNEL_BAND_COLORS,
16
+ o as pickColor
17
+ };
18
+ //# sourceMappingURL=chartPalette.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chartPalette.js","sources":["../../../../../src/components/analytics-chips-and-dropdowns/chart/chartPalette.ts"],"sourcesContent":["import { COLORS } from '@src/constants/Theme';\n\nexport const FUNNEL_BAND_COLORS = [\n\tCOLORS.stroke.brandLightAlt,\n\tCOLORS.background.brandLight,\n\tCOLORS.background.brandTint,\n\tCOLORS.background.brandVeryLight,\n];\n\nexport const COMPARISON_BAR_COLORS = [\n\tCOLORS.background.brand,\n\tCOLORS.stroke.brandSubdued,\n\tCOLORS.stroke.brandLightAlt,\n\tCOLORS.background.brandTint,\n];\n\nexport const pickColor = (colors: string[], index: number) =>\n\tcolors.length ? colors[index % colors.length] : undefined;\n"],"names":["FUNNEL_BAND_COLORS","COLORS","COMPARISON_BAR_COLORS","pickColor","colors","index"],"mappings":";AAEO,MAAMA,IAAqB;AAAA,EACjCC,EAAO,OAAO;AAAA,EACdA,EAAO,WAAW;AAAA,EAClBA,EAAO,WAAW;AAAA,EAClBA,EAAO,WAAW;AACnB,GAEaC,IAAwB;AAAA,EACpCD,EAAO,WAAW;AAAA,EAClBA,EAAO,OAAO;AAAA,EACdA,EAAO,OAAO;AAAA,EACdA,EAAO,WAAW;AACnB,GAEaE,IAAY,CAACC,GAAkBC,MAC3CD,EAAO,SAASA,EAAOC,IAAQD,EAAO,MAAM,IAAI;"}
@@ -0,0 +1,4 @@
1
+ export declare const toChartValue: (value: number | undefined) => number;
2
+ export declare const formatChartValue: (value: number, locale?: string) => string;
3
+ export declare const formatPercent: (value: number) => string;
4
+ export declare const clamp: (value: number, min: number, max: number) => number;
@@ -0,0 +1,13 @@
1
+ const e = (t) => typeof t == "number" && Number.isFinite(t) && t > 0 ? t : 0, o = (t, r = "en-IN") => Number.isFinite(t) ? new Intl.NumberFormat(r).format(t) : "0", i = (t) => {
2
+ if (!Number.isFinite(t))
3
+ return "0";
4
+ const r = Math.round(t * 10) / 10;
5
+ return Number.isInteger(r) ? `${r}` : r.toFixed(1);
6
+ }, m = (t, r, n) => Math.min(Math.max(t, r), n);
7
+ export {
8
+ m as clamp,
9
+ o as formatChartValue,
10
+ i as formatPercent,
11
+ e as toChartValue
12
+ };
13
+ //# sourceMappingURL=formatChartValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatChartValue.js","sources":["../../../../../src/components/analytics-chips-and-dropdowns/chart/formatChartValue.ts"],"sourcesContent":["export const toChartValue = (value: number | undefined): number =>\n\ttypeof value === 'number' && Number.isFinite(value) && value > 0 ? value : 0;\n\nexport const formatChartValue = (value: number, locale = 'en-IN'): string =>\n\tNumber.isFinite(value) ? new Intl.NumberFormat(locale).format(value) : '0';\n\nexport const formatPercent = (value: number): string => {\n\tif (!Number.isFinite(value)) {\n\t\treturn '0';\n\t}\n\tconst rounded = Math.round(value * 10) / 10;\n\treturn Number.isInteger(rounded) ? `${rounded}` : rounded.toFixed(1);\n};\n\nexport const clamp = (value: number, min: number, max: number): number =>\n\tMath.min(Math.max(value, min), max);\n"],"names":["toChartValue","value","formatChartValue","locale","formatPercent","rounded","clamp","min","max"],"mappings":"AAAO,MAAMA,IAAe,CAACC,MAC5B,OAAOA,KAAU,YAAY,OAAO,SAASA,CAAK,KAAKA,IAAQ,IAAIA,IAAQ,GAE/DC,IAAmB,CAACD,GAAeE,IAAS,YACxD,OAAO,SAASF,CAAK,IAAI,IAAI,KAAK,aAAaE,CAAM,EAAE,OAAOF,CAAK,IAAI,KAE3DG,IAAgB,CAACH,MAA0B;AACvD,MAAI,CAAC,OAAO,SAASA,CAAK;AACzB,WAAO;AAER,QAAMI,IAAU,KAAK,MAAMJ,IAAQ,EAAE,IAAI;AACzC,SAAO,OAAO,UAAUI,CAAO,IAAI,GAAGA,CAAO,KAAKA,EAAQ,QAAQ,CAAC;AACpE,GAEaC,IAAQ,CAACL,GAAeM,GAAaC,MACjD,KAAK,IAAI,KAAK,IAAIP,GAAOM,CAAG,GAAGC,CAAG;"}
@@ -15,6 +15,10 @@ export * from './chart/StackedBarChart/StackedBarDistributionChart';
15
15
  export * from './chart/StackedBarChart/StackedBarDistributionChart.model';
16
16
  export * from './chart/VerticalBarGraph/VerticalGraph';
17
17
  export * from './chart/VerticalBarGraph/FunnelVerticalBarGraph';
18
+ export * from './chart/FunnelChart/FunnelChart';
19
+ export * from './chart/FunnelChart/FunnelChart.model';
20
+ export * from './chart/ComparisonBarChart/ComparisonBarChart';
21
+ export * from './chart/ComparisonBarChart/ComparisonBarChart.model';
18
22
  export * from './chart/heatmap/HeatMap';
19
23
  export * from './chart/heatmap/HeatMapVertical';
20
24
  export * from './chart/VerticalBarAndLinearGraph/VerticalBarAndLinearGraph';
@@ -1,44 +1,44 @@
1
- export { Send, Activate, Code, Cross, Deactivate, Delete, Edit, Forward, Fullscreen, LinkSimpleHorizontal, Minus, Plus, ProductTour, RestApi, Save, SendAirplane, ShareAndroid, Shortcut, Task } from './Actions/Common actions';
2
- export { CheckboxIcon, Copy, DecreaseIndent, Dropdown, IncreaseIndent, MultiLine, MultiSelect, Number, NumberList, Quotes, Subscript, Superscript, TextBold, Text, TextAlignCenter, TextAlignLeft, TextAlignRight, TextItalics, TextJustify, TextStrikethrough, TextUnderline, Textbox } from './Actions/Formatting';
3
- export { ArrowRedo, ArrowUndo, LogIn, LogOut, OpenNewWindow, Refresh, Rewind, Sync, Whatsapp } from './Actions/Navigation';
1
+ export { Send, Activate, Code, Cross, Deactivate, Delete, Edit, Forward, Fullscreen, LinkSimpleHorizontal, Minus, Plus, ProductTour, RestApi, Save, SendAirplane, ShareAndroid, Shortcut, Task, } from './Actions/Common actions';
2
+ export { CheckboxIcon, Copy, DecreaseIndent, Dropdown, IncreaseIndent, MultiLine, MultiSelect, Number, NumberList, Quotes, Subscript, Superscript, TextBold, Text, TextAlignCenter, TextAlignLeft, TextAlignRight, TextItalics, TextJustify, TextStrikethrough, TextUnderline, Textbox, } from './Actions/Formatting';
3
+ export { ArrowRedo, ArrowUndo, LogIn, LogOut, OpenNewWindow, Refresh, Rewind, Sync, Whatsapp, } from './Actions/Navigation';
4
4
  export { HandleDrag, SingleChoice } from './Actions/Selection';
5
5
  export { CaratDown, CaratLeft, CaratRight, CaratUp } from './Arrows/Carat';
6
- export { ChevronDown, ChevronLeft, ChevronRight, ChevronUp } from './Arrows/Chevron';
7
- export { ChevronDoubleDown, ChevronDoubleLeft, ChevronDoubleRight, ChevronDoubleUp } from './Arrows/Double chevron';
8
- export { ArrowDown, ArrowDownLeft, ArrowDownRight, ArrowLeft, ArrowRight, ArrowUp, ArrowUpLeft, ArrowUpRight } from './Arrows/Normal arrows';
6
+ export { ChevronDown, ChevronLeft, ChevronRight, ChevronUp, } from './Arrows/Chevron';
7
+ export { ChevronDoubleDown, ChevronDoubleLeft, ChevronDoubleRight, ChevronDoubleUp, } from './Arrows/Double chevron';
8
+ export { ArrowDown, ArrowDownLeft, ArrowDownRight, ArrowLeft, ArrowRight, ArrowUp, ArrowUpLeft, ArrowUpRight, } from './Arrows/Normal arrows';
9
9
  export { ArrowSwitch } from './Arrows/Special';
10
- export { AiVoice, AiIcon, Webhook, AiAgent, AiEmoji, AiRobot, Expand, Frame27389, Frame27597, Frame27598, Frame27599, GeminiSparkle, ManifestSparkle, PricePlease, Shape, Shorter, Sparkling2Line, WandSparkles, Write } from './BIK AI specific';
11
- export { Shield, ShieldOutline, Bell, BellSync, Bulb, Forms, MenuHamburger, MessageSearch, MoreHorizontal, MoreVertical, Placeholder, Search, Settings, Training } from './Informational/Common UI';
12
- export { At, Chat, ChatCheck, ChatQuestion, ChatStar, Email, LiveChat, Phone } from './Informational/Communication';
13
- export { ClipboardCheck, Experimental, Help, Percent, Purchase, Services, ShoppingCart, Unsatisfactory, UserSound } from './Informational/Customer intent';
10
+ export { AiVoice, AiIcon, Webhook, AiAgent, AiEmoji, AiRobot, Expand, Frame27389, Frame27597, Frame27598, Frame27599, GeminiSparkle, ManifestSparkle, PricePlease, Shape, Shorter, Sparkling2Line, WandSparkles, Write, } from './BIK AI specific';
11
+ export { Shield, ShieldOutline, Bell, BellSync, Bulb, Forms, MenuHamburger, MessageSearch, MoreHorizontal, MoreVertical, Placeholder, Search, Settings, Training, } from './Informational/Common UI';
12
+ export { At, Chat, ChatCheck, ChatQuestion, ChatStar, Email, LiveChat, Phone, } from './Informational/Communication';
13
+ export { ClipboardCheck, Experimental, Help, Percent, Purchase, Services, ShoppingCart, Unsatisfactory, UserSound, } from './Informational/Customer intent';
14
14
  export { SingleChoice as SingleChoice2 } from './Informational/Customer intent';
15
- export { CalendarCheck, Calendar, CalendarAdd, Clock, HourGlass, WorkingHours } from './Informational/Date and time';
16
- export { AddLabel, Click, Filter, Gift1, GiftMinus, GiftPlus, Promocode, Receipt, ShieldCheck, ShoppingBag, ShoppingBasket } from './Informational/eCommerce';
15
+ export { CalendarCheck, Calendar, CalendarAdd, Clock, HourGlass, WorkingHours, } from './Informational/Date and time';
16
+ export { AddLabel, Click, Filter, Gift1, GiftMinus, GiftPlus, Promocode, Receipt, ShieldCheck, ShoppingBag, ShoppingBasket, } from './Informational/eCommerce';
17
17
  export { ShoppingCart as ShoppingCart2 } from './Informational/eCommerce';
18
- export { Archive1, Excel, File, FileCsv, FilePage, FilePdf, Folder, MediaMessage, Move, OrderHistory, PrivateNote, TextMessage, Unarchive } from './Informational/Files and folders';
19
- export { Bank, CashOnDelivery, ChartLine, CreditCard, Growth, Money1, NoCredits, Rupee, TablerTicket, Wallet } from './Informational/Finance';
18
+ export { Archive1, Excel, File, FileCsv, FilePage, FilePdf, Folder, MediaMessage, Move, OrderHistory, PrivateNote, TextMessage, Unarchive, } from './Informational/Files and folders';
19
+ export { Bank, CashOnDelivery, ChartLine, CreditCard, Growth, Money1, NoCredits, Rupee, TablerTicket, Wallet, } from './Informational/Finance';
20
20
  export { Percent as Percent2 } from './Informational/Finance';
21
- export { BookOpenText, TicketV2, AlertTriangle, Check, CheckDouble, CloseTicket1, Error, FailDoc, HourglassFilled, IcList, Info, Merge, NewTicket, RoundCheck, Slash } from './Informational/General';
21
+ export { BookOpenText, TicketV2, AlertTriangle, Check, CheckDouble, CloseTicket1, Error, FailDoc, HourglassFilled, IcList, Info, Merge, NewTicket, RoundCheck, Slash, } from './Informational/General';
22
22
  export { Help as Help2 } from './Informational/General';
23
- export { PuzzlePiece, User, Chatbot, Contacts, Group, IdCard, Person, Robot, Union, Union1, UserMinus1, UserPlus } from './Informational/Identity';
24
- export { Address, LanguageChange, MapPin, Truck } from './Informational/Location';
25
- export { AllProduct, Clipboard, CustomerReport, Head112, InventoryReport, LegalBalance, OrderReport, PaymentReport, Store, StoreSync, TicketForm } from './Informational/Store related';
23
+ export { PuzzlePiece, User, Chatbot, Contacts, Group, IdCard, Person, Robot, Union, Union1, UserMinus1, UserPlus, } from './Informational/Identity';
24
+ export { Address, LanguageChange, MapPin, Truck, } from './Informational/Location';
25
+ export { AllProduct, Clipboard, CustomerReport, Head112, InventoryReport, LegalBalance, OrderReport, PaymentReport, Store, StoreSync, TicketForm, } from './Informational/Store related';
26
26
  export { ClipboardCheck as ClipboardCheck2 } from './Informational/Store related';
27
27
  export { Box, Box2 } from './Legacy - Bikayi specific/Categories';
28
28
  export { Journeys } from './Legacy - Bikayi specific/Navigation';
29
29
  export { Services as Services2 } from './Legacy - Bikayi specific/Navigation';
30
30
  export { PlanUltimate } from './Legacy - Bikayi specific/Plans';
31
- export { Businesscard, Customdomain, LoudSpeaker, Marketing, PaymentLink, Theme } from './Legacy - Bikayi specific/Services';
32
- export { Microphone, Pause, Play, Sleep, VolumeMute, VolumeOneline, VolumeTwoline } from './Media/Audio';
31
+ export { Businesscard, Customdomain, LoudSpeaker, Marketing, PaymentLink, Theme, } from './Legacy - Bikayi specific/Services';
32
+ export { Microphone, Pause, Play, Sleep, VolumeMute, VolumeOneline, VolumeTwoline, } from './Media/Audio';
33
33
  export { Desktop, Smartphone } from './Media/Devices';
34
- export { BarcodeScan, Download, EmojiSmile, Paperclip, Upload } from './Media/Others';
35
- export { Frame26086263, Camera, CameraAdd, Crop, FlashOff, FlashOn, FormkitHappy, FormkitNeutral, FormkitSad, IconTrailing, Image, ImageAdd, Images, Maximize, RotateAnticlockwise, RotateClockwise, VideoCamcorder, VideoFilm } from './Media/Visual';
36
- export { EmailMarketingV2, EmailV2, FacebookCommentV2, FacebookV2, GmailV2, InstagramCommentV2, InstagramV2, ManifestLiveChat, MessengerV2, PhoneV2, RcsV2, SmsV2, TaskV2, WebpushV2, WhatsAppCallV2, WhatsAppV2, Bigcommerce, EmailMarketing, Facebook, FacebookComment, FreshdeskApp, Instagram, InstagramIcon, Messenger, MonoFacebookComment, MonoFacebook, MonoInstagram, MonoInstagramComment, MonoMail, MonoMessenger, MonoPhone, MonoTasks, MonoWhatsapp, ShopifyBrand, Tasks, WebPush, WhatsApp } from './Social/Channels';
34
+ export { BarcodeScan, Download, EmojiSmile, Paperclip, Upload, } from './Media/Others';
35
+ export { Frame26086263, Camera, CameraAdd, Crop, FlashOff, FlashOn, FormkitHappy, FormkitNeutral, FormkitSad, IconTrailing, Image, ImageAdd, Images, Maximize, RotateAnticlockwise, RotateClockwise, VideoCamcorder, VideoFilm, } from './Media/Visual';
36
+ export { EmailMarketingV2, EmailV2, FacebookCommentV2, FacebookV2, GmailV2, InstagramCommentV2, InstagramV2, ManifestLiveChat, MessengerV2, PhoneV2, RcsV2, SmsV2, TaskV2, WebpushV2, WhatsAppCallV2, WhatsAppV2, Bigcommerce, EmailMarketing, Facebook, FacebookComment, FreshdeskApp, Instagram, InstagramIcon, Messenger, MonoFacebookComment, MonoFacebook, MonoInstagram, MonoInstagramComment, MonoMail, MonoMessenger, MonoPhone, MonoTasks, MonoWhatsapp, ShopifyBrand, Tasks, WebPush, WhatsApp, } from './Social/Channels';
37
37
  export { Email as Email2 } from './Social/Channels';
38
- export { SlackIcon, BigCommerce, Google, Gorgias, Kustomer, Rcs, ShopifyDefault, Twitter, Website, WooCommerce, Youtube, Zendesk } from './Social/Social';
38
+ export { SlackIcon, BigCommerce, Google, Gorgias, Kustomer, Rcs, ShopifyDefault, Twitter, Website, WooCommerce, Youtube, Zendesk, } from './Social/Social';
39
39
  export { EmailMarketing as EmailMarketing2 } from './Social/Social';
40
40
  export { Facebook as Facebook2 } from './Social/Social';
41
41
  export { Instagram as Instagram2 } from './Social/Social';
42
42
  export { Messenger as Messenger2 } from './Social/Social';
43
43
  export { Whatsapp as Whatsapp2 } from './Social/Social';
44
- export { Eye, EyeClosed, EyeOff, HeartEmpty, HeartFilled, Lock, StarEmpty, StarFilled, StarHalf, Unlock } from './Toggles/General';
44
+ export { Eye, EyeClosed, EyeOff, HeartEmpty, HeartFilled, Lock, StarEmpty, StarFilled, StarHalf, Unlock, } from './Toggles/General';