@bpfdev/oly-ui 1.0.8 → 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -3628,6 +3628,12 @@ var FalconAuditTimeline = ({
3628
3628
  chevronLeftIcon,
3629
3629
  chevronRightIcon,
3630
3630
  exportIcon,
3631
+ eventsMaxHeight = "280px",
3632
+ cardMaxWidth = "1324px",
3633
+ hideScrollbar = false,
3634
+ scrollbarWidth = "6px",
3635
+ scrollbarThumbColor = "#D1D5DB",
3636
+ scrollbarTrackColor = "transparent",
3631
3637
  timeControlsRowSx
3632
3638
  }) => {
3633
3639
  const getInitialKey = () => {
@@ -3733,10 +3739,25 @@ var FalconAuditTimeline = ({
3733
3739
  {
3734
3740
  sx: {
3735
3741
  display: "flex !important",
3736
- alignItems: "center !important",
3742
+ alignItems: "flex-start !important",
3737
3743
  gap: "8px !important",
3738
3744
  width: "100% !important",
3739
- flexWrap: "wrap"
3745
+ flexWrap: "wrap",
3746
+ overflowY: "auto",
3747
+ maxHeight: eventsMaxHeight,
3748
+ paddingRight: hideScrollbar ? 0 : "4px",
3749
+ scrollbarWidth: hideScrollbar ? "none" : "auto",
3750
+ "&::-webkit-scrollbar": {
3751
+ width: hideScrollbar ? 0 : scrollbarWidth,
3752
+ display: hideScrollbar ? "none" : void 0
3753
+ },
3754
+ "&::-webkit-scrollbar-thumb": {
3755
+ backgroundColor: scrollbarThumbColor,
3756
+ borderRadius: "999px"
3757
+ },
3758
+ "&::-webkit-scrollbar-track": {
3759
+ backgroundColor: scrollbarTrackColor
3760
+ }
3740
3761
  },
3741
3762
  children: activeRuns.map((run, idx) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
3742
3763
  TimelineEventCard,
@@ -3826,9 +3847,9 @@ var FalconAuditTimeline = ({
3826
3847
  {
3827
3848
  sx: {
3828
3849
  width: "100% !important",
3829
- maxWidth: "1324px !important",
3850
+ maxWidth: `${cardMaxWidth} !important`,
3830
3851
  height: "auto !important",
3831
- minHeight: isZeroCount ? "166px !important" : "183.5px !important",
3852
+ minHeight: isZeroCount ? "166px !important" : "200px !important",
3832
3853
  padding: "16px !important",
3833
3854
  borderRadius: `${borderRadius} !important`,
3834
3855
  border: `${borderWidth} solid ${borderColor} !important`,
@@ -3861,7 +3882,9 @@ var FalconAuditTimeline = ({
3861
3882
  display: "flex !important",
3862
3883
  alignItems: "center !important",
3863
3884
  gap: "8px !important",
3864
- overflow: "hidden !important"
3885
+ overflowX: "auto",
3886
+ overflowY: "hidden",
3887
+ paddingBottom: "2px"
3865
3888
  },
3866
3889
  ...timeControlsRowSx ? [timeControlsRowSx] : []
3867
3890
  ],
@@ -6433,6 +6456,7 @@ var ProgressBarNumber = ({
6433
6456
  // src/components/widgets/FootfallByAgeGroups/FootfallByAgeGroups.tsx
6434
6457
  var import_Box9 = __toESM(require("@mui/material/Box"));
6435
6458
  var import_Divider2 = __toESM(require("@mui/material/Divider"));
6459
+ var import_Skeleton = __toESM(require("@mui/material/Skeleton"));
6436
6460
  var import_Stack7 = __toESM(require("@mui/material/Stack"));
6437
6461
  var import_Typography6 = __toESM(require("@mui/material/Typography"));
6438
6462
  var React11 = __toESM(require("react"));
@@ -6467,10 +6491,10 @@ var OLY_DEFAULT_COMPOSED_CHART_CHROME = {
6467
6491
  axisTickLineStroke: "#E5E7EB"
6468
6492
  };
6469
6493
  var OLY_DEFAULT_FOOTFALL_BY_AGE_CHART_MARGIN = {
6470
- top: 36,
6471
- right: 28,
6472
- left: 12,
6473
- bottom: 28
6494
+ top: 16,
6495
+ right: 8,
6496
+ left: 6,
6497
+ bottom: 0
6474
6498
  };
6475
6499
  var OLY_DEFAULT_FOOTFALL_BY_AGE_STACK_TOTAL_LABEL_FILL = "#28293D";
6476
6500
  function mergeCss2(base, override) {
@@ -6497,6 +6521,8 @@ function MultiLineTick({
6497
6521
  y = 0,
6498
6522
  payload,
6499
6523
  angle = -38,
6524
+ dx = 0,
6525
+ style,
6500
6526
  textAnchor = "end",
6501
6527
  fontSize = 12
6502
6528
  }) {
@@ -6506,13 +6532,14 @@ function MultiLineTick({
6506
6532
  const isHorizontal = angle === 0;
6507
6533
  const anchor = isHorizontal ? "middle" : textAnchor;
6508
6534
  const dy0 = isHorizontal ? lineHeight * 0.35 : 4;
6509
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("g", { transform: `translate(${x},${y})`, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
6535
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("g", { transform: `translate(${x + dx},${y})`, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
6510
6536
  "text",
6511
6537
  {
6512
6538
  transform: `rotate(${angle})`,
6513
6539
  textAnchor: anchor,
6514
6540
  fontSize,
6515
6541
  fill: "#666",
6542
+ ...style,
6516
6543
  children: lines.map((line, i) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("tspan", { x: 0, dy: i === 0 ? dy0 : lineHeight, children: line }, i))
6517
6544
  }
6518
6545
  ) });
@@ -6731,6 +6758,7 @@ function FootfallByAgeGroups({
6731
6758
  title,
6732
6759
  data,
6733
6760
  series,
6761
+ isLoading = false,
6734
6762
  chartHeight = OLY_DEFAULT_COMPOSED_CHART_HEIGHT_PX,
6735
6763
  minWidthPerCategory = defaultMinWidthPerCategory,
6736
6764
  horizontalScroll: horizontalScrollProp = "auto",
@@ -6754,11 +6782,15 @@ function FootfallByAgeGroups({
6754
6782
  renderTooltip,
6755
6783
  showLegend = true,
6756
6784
  chartMargin: chartMarginProp,
6785
+ yAxisTickDx = -8,
6786
+ yAxisTickStyle,
6757
6787
  chartColors: chartColorsProp,
6758
6788
  emptyStatePlaceholderProps,
6759
6789
  dimmedStackOpacity = 0.35,
6760
6790
  barStackId = "footfall-by-age-groups",
6761
- xAxisTickAngle = 0
6791
+ xAxisTickAngle = 0,
6792
+ xAxisTickDx = 0,
6793
+ xAxisTickStyle
6762
6794
  }) {
6763
6795
  const [activeIndex, setActiveIndex] = React11.useState(null);
6764
6796
  const handleMouseEnter = React11.useCallback((_, index) => {
@@ -6832,10 +6864,7 @@ function FootfallByAgeGroups({
6832
6864
  const barOpacity = (index) => activeIndex === null || activeIndex === index ? 1 : dimmedStackOpacity;
6833
6865
  const lastSeriesIndex = series.length - 1;
6834
6866
  const chartMargin = React11.useMemo(
6835
- () => ({
6836
- ...defaultChartMargin,
6837
- ...chartMarginProp
6838
- }),
6867
+ () => chartMarginProp ?? defaultChartMargin,
6839
6868
  [chartMarginProp]
6840
6869
  );
6841
6870
  const chartColors = React11.useMemo(
@@ -6909,7 +6938,7 @@ function FootfallByAgeGroups({
6909
6938
  }
6910
6939
  ),
6911
6940
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_Divider2.default, { sx: sxChain({ borderColor: "#D8D9E4" }, dividerSx) }),
6912
- showLegend && hasMeaningfulData && series.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
6941
+ showLegend && !isLoading && hasMeaningfulData && series.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
6913
6942
  import_Box9.default,
6914
6943
  {
6915
6944
  sx: sxChain(
@@ -6984,7 +7013,7 @@ function FootfallByAgeGroups({
6984
7013
  },
6985
7014
  chartScrollAreaSx
6986
7015
  ),
6987
- children: hasMeaningfulData ? /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
7016
+ children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_Skeleton.default, { variant: "rounded", width: "100%", height: "100%" }) : hasMeaningfulData ? /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
6988
7017
  import_recharts.BarChart,
6989
7018
  {
6990
7019
  width: chartWidthPx,
@@ -7011,7 +7040,14 @@ function FootfallByAgeGroups({
7011
7040
  interval: 0,
7012
7041
  height: 68,
7013
7042
  tickMargin: 10,
7014
- tick: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(MultiLineTick, { angle: xAxisTickAngle }),
7043
+ tick: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
7044
+ MultiLineTick,
7045
+ {
7046
+ angle: xAxisTickAngle,
7047
+ dx: xAxisTickDx,
7048
+ style: xAxisTickStyle
7049
+ }
7050
+ ),
7015
7051
  axisLine: { stroke: chartColors.xAxisLineStroke },
7016
7052
  tickLine: { stroke: chartColors.axisTickLineStroke }
7017
7053
  }
@@ -7019,8 +7055,9 @@ function FootfallByAgeGroups({
7019
7055
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
7020
7056
  import_recharts.YAxis,
7021
7057
  {
7058
+ dx: yAxisTickDx,
7022
7059
  tickSize: 8,
7023
- tick: { fontSize: 12, fontWeight: 400 },
7060
+ tick: { fontSize: 12, fontWeight: 400, ...yAxisTickStyle },
7024
7061
  axisLine: { stroke: chartColors.axisTickLineStroke },
7025
7062
  tickLine: { stroke: chartColors.axisTickLineStroke }
7026
7063
  }
@@ -7119,11 +7156,12 @@ function FootfallByAgeGroups({
7119
7156
  }
7120
7157
 
7121
7158
  // src/components/widgets/FootfallByGender/FootfallByGender.tsx
7159
+ var import_react19 = require("@iconify/react");
7122
7160
  var import_Box10 = __toESM(require("@mui/material/Box"));
7123
7161
  var import_Divider3 = __toESM(require("@mui/material/Divider"));
7162
+ var import_Skeleton2 = __toESM(require("@mui/material/Skeleton"));
7124
7163
  var import_Stack8 = __toESM(require("@mui/material/Stack"));
7125
7164
  var import_Typography7 = __toESM(require("@mui/material/Typography"));
7126
- var import_react19 = require("@iconify/react");
7127
7165
  var React12 = __toESM(require("react"));
7128
7166
  var import_recharts2 = require("recharts");
7129
7167
  var import_jsx_runtime31 = require("react/jsx-runtime");
@@ -7134,10 +7172,10 @@ var OLY_DEFAULT_COMPOSED_CHART_CHROME2 = {
7134
7172
  axisTickLineStroke: "#E5E7EB"
7135
7173
  };
7136
7174
  var OLY_DEFAULT_FOOTFALL_GENDER_CHART_MARGIN = {
7137
- top: 28,
7138
- right: 20,
7139
- left: 16,
7140
- bottom: 28
7175
+ top: 16,
7176
+ right: 8,
7177
+ left: 4,
7178
+ bottom: 0
7141
7179
  };
7142
7180
  var OLY_DEFAULT_FOOTFALL_GENDER_SERIES_COLORS = {
7143
7181
  male: "#7266E9",
@@ -7275,6 +7313,8 @@ function MultiLineTick2({
7275
7313
  y = 0,
7276
7314
  payload,
7277
7315
  angle = -38,
7316
+ dx = 0,
7317
+ style,
7278
7318
  textAnchor = "end",
7279
7319
  fontSize = 12
7280
7320
  }) {
@@ -7284,13 +7324,14 @@ function MultiLineTick2({
7284
7324
  const isHorizontal = angle === 0;
7285
7325
  const anchor = isHorizontal ? "middle" : textAnchor;
7286
7326
  const dy0 = isHorizontal ? lineHeight * 0.35 : 4;
7287
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("g", { transform: `translate(${x},${y})`, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
7327
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("g", { transform: `translate(${x + dx},${y})`, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
7288
7328
  "text",
7289
7329
  {
7290
7330
  transform: `rotate(${angle})`,
7291
7331
  textAnchor: anchor,
7292
7332
  fontSize,
7293
7333
  fill: "#666",
7334
+ ...style,
7294
7335
  children: lines.map((line, i) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("tspan", { x: 0, dy: i === 0 ? dy0 : lineHeight, children: line }, i))
7295
7336
  }
7296
7337
  ) });
@@ -7564,6 +7605,7 @@ function resolveCategoryScroll(minWidthPerCategory, horizontalScroll, categoryCo
7564
7605
  function FootfallByGender({
7565
7606
  title,
7566
7607
  data,
7608
+ isLoading = false,
7567
7609
  seriesLabels: seriesLabelsProp,
7568
7610
  seriesColors: seriesColorsProp,
7569
7611
  chartHeight = OLY_DEFAULT_COMPOSED_CHART_HEIGHT_PX2,
@@ -7595,10 +7637,14 @@ function FootfallByGender({
7595
7637
  tooltipStyles,
7596
7638
  renderTooltip,
7597
7639
  chartMargin: chartMarginProp,
7640
+ yAxisTickDx = -6,
7641
+ yAxisTickStyle,
7598
7642
  chartColors: chartColorsProp,
7599
7643
  emptyStatePlaceholderProps,
7600
7644
  yAxisTickFormatter,
7601
7645
  xAxisTickAngle = 0,
7646
+ xAxisTickDx = 0,
7647
+ xAxisTickStyle,
7602
7648
  barValueLabelAngle = 0,
7603
7649
  growthBadgeWidth = 45,
7604
7650
  growthBadgeHeight = 38,
@@ -7700,7 +7746,8 @@ function FootfallByGender({
7700
7746
  if (hasGrowthBadges) top = topReserveForGrowthBadges;
7701
7747
  else if (showBarValueLabels) top = topReserveForBarLabels;
7702
7748
  else top = topReserveNoBarLabels;
7703
- return { ...defaultChartMargin2, top, ...chartMarginProp };
7749
+ if (chartMarginProp) return chartMarginProp;
7750
+ return { ...defaultChartMargin2, top };
7704
7751
  }, [hasGrowthBadges, showBarValueLabels, chartMarginProp]);
7705
7752
  const chartColors = React12.useMemo(
7706
7753
  () => ({
@@ -7803,7 +7850,7 @@ function FootfallByGender({
7803
7850
  },
7804
7851
  chartScrollAreaSx
7805
7852
  ),
7806
- children: processedData.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
7853
+ children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_Skeleton2.default, { variant: "rounded", width: "100%", height: "100%" }) : processedData.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
7807
7854
  import_recharts2.BarChart,
7808
7855
  {
7809
7856
  width: chartWidthPx,
@@ -7832,7 +7879,14 @@ function FootfallByGender({
7832
7879
  interval: 0,
7833
7880
  height: 68,
7834
7881
  tickMargin: 10,
7835
- tick: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(MultiLineTick2, { angle: xAxisTickAngle }),
7882
+ tick: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
7883
+ MultiLineTick2,
7884
+ {
7885
+ angle: xAxisTickAngle,
7886
+ dx: xAxisTickDx,
7887
+ style: xAxisTickStyle
7888
+ }
7889
+ ),
7836
7890
  axisLine: { stroke: chartColors.xAxisLineStroke },
7837
7891
  tickLine: { stroke: chartColors.axisTickLineStroke }
7838
7892
  }
@@ -7841,8 +7895,9 @@ function FootfallByGender({
7841
7895
  import_recharts2.YAxis,
7842
7896
  {
7843
7897
  width: 52,
7898
+ dx: yAxisTickDx,
7844
7899
  tickSize: 8,
7845
- tick: { fontSize: 12, fontWeight: 400 },
7900
+ tick: { fontSize: 12, fontWeight: 400, ...yAxisTickStyle },
7846
7901
  tickFormatter: yAxisTick,
7847
7902
  axisLine: { stroke: chartColors.axisTickLineStroke },
7848
7903
  tickLine: { stroke: chartColors.axisTickLineStroke }
@@ -7882,6 +7937,7 @@ function FootfallByGender({
7882
7937
  dataKey: "male",
7883
7938
  name: seriesLabels.male,
7884
7939
  fill: seriesColors.male,
7940
+ barSize: resolvedMaxBarSize,
7885
7941
  onMouseEnter: handleMouseEnter,
7886
7942
  onMouseLeave: handleMouseLeave,
7887
7943
  children: [
@@ -7932,6 +7988,7 @@ function FootfallByGender({
7932
7988
  dataKey: "female",
7933
7989
  name: seriesLabels.female,
7934
7990
  fill: seriesColors.female,
7991
+ barSize: resolvedMaxBarSize,
7935
7992
  onMouseEnter: handleMouseEnter,
7936
7993
  onMouseLeave: handleMouseLeave,
7937
7994
  children: [
@@ -8001,7 +8058,7 @@ function FootfallByGender({
8001
8058
  )
8002
8059
  }
8003
8060
  ),
8004
- showLegend && processedData.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
8061
+ showLegend && !isLoading && processedData.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
8005
8062
  import_Box10.default,
8006
8063
  {
8007
8064
  component: "ul",
@@ -8136,6 +8193,7 @@ function FootfallByGender({
8136
8193
  // src/components/widgets/PasserbyConversion/PasserbyConversion.tsx
8137
8194
  var import_Box11 = __toESM(require("@mui/material/Box"));
8138
8195
  var import_Divider4 = __toESM(require("@mui/material/Divider"));
8196
+ var import_Skeleton3 = __toESM(require("@mui/material/Skeleton"));
8139
8197
  var import_Stack9 = __toESM(require("@mui/material/Stack"));
8140
8198
  var import_Typography8 = __toESM(require("@mui/material/Typography"));
8141
8199
  var React14 = __toESM(require("react"));
@@ -8176,10 +8234,10 @@ var OLY_DEFAULT_COMPOSED_CHART_CHROME3 = {
8176
8234
  axisTickLineStroke: "#E5E7EB"
8177
8235
  };
8178
8236
  var OLY_DEFAULT_PASSERBY_CHART_MARGIN = {
8179
- top: 28,
8237
+ top: 16,
8180
8238
  right: 8,
8181
- left: 4,
8182
- bottom: 28
8239
+ left: 6,
8240
+ bottom: 0
8183
8241
  };
8184
8242
  var OLY_DEFAULT_PASSERBY_CHART_SERIES_COLORS = {
8185
8243
  passerbyBarFill: "#FFCC4D",
@@ -8208,6 +8266,8 @@ function MultiLineTick3({
8208
8266
  y = 0,
8209
8267
  payload,
8210
8268
  angle = -42,
8269
+ dx = 0,
8270
+ style,
8211
8271
  textAnchor = "end",
8212
8272
  fontSize = 12
8213
8273
  }) {
@@ -8217,13 +8277,14 @@ function MultiLineTick3({
8217
8277
  const isHorizontal = angle === 0;
8218
8278
  const anchor = isHorizontal ? "middle" : textAnchor;
8219
8279
  const dy0 = isHorizontal ? lineHeight * 0.35 : 4;
8220
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("g", { transform: `translate(${x},${y})`, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
8280
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("g", { transform: `translate(${x + dx},${y})`, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
8221
8281
  "text",
8222
8282
  {
8223
8283
  transform: `rotate(${angle})`,
8224
8284
  textAnchor: anchor,
8225
8285
  fontSize,
8226
8286
  fill: "#666",
8287
+ ...style,
8227
8288
  children: lines.map((line, i) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("tspan", { x: 0, dy: i === 0 ? dy0 : lineHeight, children: line }, i))
8228
8289
  }
8229
8290
  ) });
@@ -8494,6 +8555,7 @@ function defaultFormatTooltipConversion(value) {
8494
8555
  function PasserbyConversion({
8495
8556
  title,
8496
8557
  data,
8558
+ isLoading = false,
8497
8559
  timeSlots,
8498
8560
  fillMissingTimeSlots = true,
8499
8561
  chartHeight = OLY_DEFAULT_COMPOSED_CHART_HEIGHT_PX3,
@@ -8533,12 +8595,20 @@ function PasserbyConversion({
8533
8595
  showConversionLine: showConversionLineProp,
8534
8596
  showBarValueLabels = true,
8535
8597
  chartMargin: chartMarginProp,
8598
+ yAxisTickDx = -8,
8599
+ yAxisTickStyle,
8600
+ conversionAxisTickDx = 0,
8601
+ conversionAxisTickStyle,
8602
+ rightYAxisTickDx,
8603
+ rightYAxisTickStyle,
8536
8604
  chartColors: chartColorsProp,
8537
8605
  emptyStatePlaceholderProps,
8538
8606
  isChartAnimationActive = true,
8539
8607
  chartAnimationDuration = 400,
8540
8608
  scrollChartToEndOnDataChange = true,
8541
- xAxisTickAngle = 0
8609
+ xAxisTickAngle = 0,
8610
+ xAxisTickDx = 0,
8611
+ xAxisTickStyle
8542
8612
  }) {
8543
8613
  const [activeIndex, setActiveIndex] = React14.useState(null);
8544
8614
  const handleBarMouseEnter = React14.useCallback((_, index) => {
@@ -8661,12 +8731,8 @@ function PasserbyConversion({
8661
8731
  const chartMargin = React14.useMemo(() => {
8662
8732
  const top = showBarValueLabels ? topReserveForBarLabels2 : topReserveNoBarLabels2;
8663
8733
  const right = showConversionLine ? 52 : defaultChartMargin3.right;
8664
- return {
8665
- ...defaultChartMargin3,
8666
- top,
8667
- right,
8668
- ...chartMarginProp
8669
- };
8734
+ if (chartMarginProp) return chartMarginProp;
8735
+ return { ...defaultChartMargin3, top, right };
8670
8736
  }, [showBarValueLabels, showConversionLine, chartMarginProp]);
8671
8737
  const yTickLeft = yAxisTickFormatter ?? formatYAxisTickDefault2;
8672
8738
  const yTickRight = conversionAxisTickFormatter ?? formatYAxisTickDefault2;
@@ -8763,7 +8829,7 @@ function PasserbyConversion({
8763
8829
  }
8764
8830
  ),
8765
8831
  /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_Divider4.default, { sx: sxChain3({ borderColor: "#D8D9E4" }, dividerSx) }),
8766
- showLegend && hasMeaningfulData && legendItems.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
8832
+ showLegend && !isLoading && hasMeaningfulData && legendItems.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
8767
8833
  import_Box11.default,
8768
8834
  {
8769
8835
  sx: sxChain3(
@@ -8853,7 +8919,7 @@ function PasserbyConversion({
8853
8919
  },
8854
8920
  chartScrollAreaSx
8855
8921
  ),
8856
- children: hasMeaningfulData ? /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
8922
+ children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_Skeleton3.default, { variant: "rounded", width: "100%", height: "100%" }) : hasMeaningfulData ? /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
8857
8923
  import_recharts3.ComposedChart,
8858
8924
  {
8859
8925
  width: chartWidthPx,
@@ -8883,7 +8949,14 @@ function PasserbyConversion({
8883
8949
  interval: 0,
8884
8950
  height: 68,
8885
8951
  tickMargin: 10,
8886
- tick: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(MultiLineTick3, { angle: xAxisTickAngle }),
8952
+ tick: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
8953
+ MultiLineTick3,
8954
+ {
8955
+ angle: xAxisTickAngle,
8956
+ dx: xAxisTickDx,
8957
+ style: xAxisTickStyle
8958
+ }
8959
+ ),
8887
8960
  axisLine: { stroke: chartColors.xAxisLineStroke },
8888
8961
  tickLine: { stroke: chartColors.axisTickLineStroke }
8889
8962
  }
@@ -8892,8 +8965,9 @@ function PasserbyConversion({
8892
8965
  import_recharts3.YAxis,
8893
8966
  {
8894
8967
  yAxisId: "left",
8968
+ dx: yAxisTickDx,
8895
8969
  tickSize: 8,
8896
- tick: { fontSize: 12, fontWeight: 400 },
8970
+ tick: { fontSize: 12, fontWeight: 400, ...yAxisTickStyle },
8897
8971
  tickFormatter: yTickLeft,
8898
8972
  axisLine: { stroke: chartColors.axisTickLineStroke },
8899
8973
  tickLine: { stroke: chartColors.axisTickLineStroke },
@@ -8905,8 +8979,13 @@ function PasserbyConversion({
8905
8979
  {
8906
8980
  yAxisId: "right",
8907
8981
  orientation: "right",
8982
+ dx: rightYAxisTickDx ?? conversionAxisTickDx,
8908
8983
  tickSize: 8,
8909
- tick: { fontSize: 12, fontWeight: 400 },
8984
+ tick: {
8985
+ fontSize: 12,
8986
+ fontWeight: 400,
8987
+ ...rightYAxisTickStyle ?? conversionAxisTickStyle
8988
+ },
8910
8989
  tickFormatter: yTickRight,
8911
8990
  axisLine: { stroke: chartColors.axisTickLineStroke },
8912
8991
  tickLine: { stroke: chartColors.axisTickLineStroke },
@@ -9555,6 +9634,7 @@ var WalkinAnalysis = ({
9555
9634
  // src/components/widgets/WalkinTraffic/WalkinTraffic.tsx
9556
9635
  var import_Box13 = __toESM(require("@mui/material/Box"));
9557
9636
  var import_Divider5 = __toESM(require("@mui/material/Divider"));
9637
+ var import_Skeleton4 = __toESM(require("@mui/material/Skeleton"));
9558
9638
  var import_Stack11 = __toESM(require("@mui/material/Stack"));
9559
9639
  var import_Typography10 = __toESM(require("@mui/material/Typography"));
9560
9640
  var React16 = __toESM(require("react"));
@@ -9568,10 +9648,10 @@ var OLY_DEFAULT_COMPOSED_CHART_CHROME4 = {
9568
9648
  axisTickLineStroke: "#E5E7EB"
9569
9649
  };
9570
9650
  var OLY_DEFAULT_WALKIN_TRAFFIC_CHART_MARGIN = {
9571
- top: 28,
9572
- right: 20,
9573
- left: 12,
9574
- bottom: 28
9651
+ top: 16,
9652
+ right: 8,
9653
+ left: 6,
9654
+ bottom: 0
9575
9655
  };
9576
9656
  var OLY_DEFAULT_WALKIN_TRAFFIC_CHART_SERIES_COLORS = {
9577
9657
  barFill: "#0086A9",
@@ -9641,6 +9721,8 @@ function MultiLineTick4({
9641
9721
  y = 0,
9642
9722
  payload,
9643
9723
  angle = -42,
9724
+ dx = 0,
9725
+ style,
9644
9726
  textAnchor = "end",
9645
9727
  fontSize = 12
9646
9728
  }) {
@@ -9650,13 +9732,14 @@ function MultiLineTick4({
9650
9732
  const isHorizontal = angle === 0;
9651
9733
  const anchor = isHorizontal ? "middle" : textAnchor;
9652
9734
  const dy0 = isHorizontal ? lineHeight * 0.35 : 4;
9653
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("g", { transform: `translate(${x},${y})`, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
9735
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("g", { transform: `translate(${x + dx},${y})`, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
9654
9736
  "text",
9655
9737
  {
9656
9738
  transform: `rotate(${angle})`,
9657
9739
  textAnchor: anchor,
9658
9740
  fontSize,
9659
9741
  fill: "#666",
9742
+ ...style,
9660
9743
  children: lines.map((line, i) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("tspan", { x: 0, dy: i === 0 ? dy0 : lineHeight, children: line }, i))
9661
9744
  }
9662
9745
  ) });
@@ -9934,6 +10017,7 @@ var defaultChartColors4 = {
9934
10017
  function WalkinTraffic({
9935
10018
  title,
9936
10019
  data,
10020
+ isLoading = false,
9937
10021
  chartHeight = OLY_DEFAULT_COMPOSED_CHART_HEIGHT_PX4,
9938
10022
  barSeriesName = "Walk-ins",
9939
10023
  lineSeriesName = "Trend",
@@ -9968,13 +10052,17 @@ function WalkinTraffic({
9968
10052
  showLineInLegend = false,
9969
10053
  showBarValueLabels = true,
9970
10054
  chartMargin: chartMarginProp,
10055
+ yAxisTickDx = -8,
10056
+ yAxisTickStyle,
9971
10057
  chartColors: chartColorsProp,
9972
10058
  emptyStatePlaceholderProps,
9973
10059
  yAxisTickFormatter,
9974
10060
  isChartAnimationActive = true,
9975
10061
  chartAnimationDuration = 400,
9976
10062
  scrollChartToEndOnDataChange = true,
9977
- xAxisTickAngle = 0
10063
+ xAxisTickAngle = 0,
10064
+ xAxisTickDx = 0,
10065
+ xAxisTickStyle
9978
10066
  }) {
9979
10067
  const tooltipFooterNote = tooltipFooterNoteProp === void 0 ? defaultFfGrowthTooltipFooterNote : tooltipFooterNoteProp;
9980
10068
  const processedData = React16.useMemo(
@@ -10051,11 +10139,8 @@ function WalkinTraffic({
10051
10139
  }, [chartInnerMinWidthPx, containerWidth]);
10052
10140
  const chartMargin = React16.useMemo(() => {
10053
10141
  const top = showBarValueLabels ? topReserveForBarLabels3 : topReserveNoBarLabels3;
10054
- return {
10055
- ...defaultChartMargin4,
10056
- top,
10057
- ...chartMarginProp
10058
- };
10142
+ if (chartMarginProp) return chartMarginProp;
10143
+ return { ...defaultChartMargin4, top };
10059
10144
  }, [showBarValueLabels, chartMarginProp]);
10060
10145
  const chartColors = React16.useMemo(
10061
10146
  () => ({
@@ -10155,7 +10240,7 @@ function WalkinTraffic({
10155
10240
  }
10156
10241
  ),
10157
10242
  /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_Divider5.default, { sx: sxChain4({ borderColor: "#D8D9E4" }, dividerSx) }),
10158
- showLegend && hasMeaningfulData && legendItems.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
10243
+ showLegend && !isLoading && hasMeaningfulData && legendItems.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
10159
10244
  import_Box13.default,
10160
10245
  {
10161
10246
  sx: sxChain4(
@@ -10245,7 +10330,7 @@ function WalkinTraffic({
10245
10330
  },
10246
10331
  chartScrollAreaSx
10247
10332
  ),
10248
- children: hasMeaningfulData ? /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
10333
+ children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_Skeleton4.default, { variant: "rounded", width: "100%", height: "100%" }) : hasMeaningfulData ? /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
10249
10334
  import_recharts5.ComposedChart,
10250
10335
  {
10251
10336
  width: chartWidthPx,
@@ -10271,7 +10356,14 @@ function WalkinTraffic({
10271
10356
  interval: 0,
10272
10357
  height: 68,
10273
10358
  tickMargin: 10,
10274
- tick: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(MultiLineTick4, { angle: xAxisTickAngle }),
10359
+ tick: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
10360
+ MultiLineTick4,
10361
+ {
10362
+ angle: xAxisTickAngle,
10363
+ dx: xAxisTickDx,
10364
+ style: xAxisTickStyle
10365
+ }
10366
+ ),
10275
10367
  axisLine: { stroke: chartColors.xAxisLineStroke },
10276
10368
  tickLine: { stroke: chartColors.axisTickLineStroke }
10277
10369
  }
@@ -10279,8 +10371,9 @@ function WalkinTraffic({
10279
10371
  /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
10280
10372
  import_recharts5.YAxis,
10281
10373
  {
10374
+ dx: yAxisTickDx,
10282
10375
  tickSize: 8,
10283
- tick: { fontSize: 12, fontWeight: 400 },
10376
+ tick: { fontSize: 12, fontWeight: 400, ...yAxisTickStyle },
10284
10377
  tickFormatter: yTick,
10285
10378
  axisLine: { stroke: chartColors.axisTickLineStroke },
10286
10379
  tickLine: { stroke: chartColors.axisTickLineStroke }
@@ -13682,6 +13775,7 @@ var peakBillingHoursMockSeriesByTabId = {
13682
13775
  var import_Box18 = __toESM(require("@mui/material/Box"));
13683
13776
  var import_Card3 = __toESM(require("@mui/material/Card"));
13684
13777
  var import_CardContent3 = __toESM(require("@mui/material/CardContent"));
13778
+ var import_Skeleton5 = __toESM(require("@mui/material/Skeleton"));
13685
13779
  var import_Stack17 = __toESM(require("@mui/material/Stack"));
13686
13780
  var import_Typography16 = __toESM(require("@mui/material/Typography"));
13687
13781
  var React26 = __toESM(require("react"));
@@ -13841,7 +13935,12 @@ function BarPlot({
13841
13935
  yAxisDomain,
13842
13936
  yAxisTicks,
13843
13937
  activeTabId,
13844
- renderTooltip
13938
+ renderTooltip,
13939
+ chartMargin,
13940
+ yAxisTickDx = -6,
13941
+ yAxisTickStyle,
13942
+ xAxisTickDx = 0,
13943
+ xAxisTickStyle
13845
13944
  }) {
13846
13945
  const { barChart: bc } = usePeakBillingHoursCustomization();
13847
13946
  const height = bc?.heightPx ?? 320;
@@ -13849,7 +13948,7 @@ function BarPlot({
13849
13948
  const barRadius = bc?.barRadius ?? 0;
13850
13949
  const gridStroke = bc?.gridStroke ?? OLY_DEFAULT_COMPOSED_CHART_CHROME6.cartesianGridStroke;
13851
13950
  const dash = bc?.gridStrokeDasharray ?? "3 3";
13852
- const m = {
13951
+ const m = chartMargin ?? {
13853
13952
  top: bc?.margin?.top ?? 28,
13854
13953
  right: bc?.margin?.right ?? 12,
13855
13954
  bottom: bc?.margin?.bottom ?? 8,
@@ -13889,7 +13988,8 @@ function BarPlot({
13889
13988
  import_recharts10.XAxis,
13890
13989
  {
13891
13990
  dataKey: "label",
13892
- tick: { fill: xFill, fontSize: 11 },
13991
+ dx: xAxisTickDx,
13992
+ tick: { fill: xFill, fontSize: 11, ...xAxisTickStyle },
13893
13993
  tickLine: false,
13894
13994
  axisLine: {
13895
13995
  stroke: OLY_DEFAULT_COMPOSED_CHART_CHROME6.axisTickLineStroke
@@ -13903,7 +14003,8 @@ function BarPlot({
13903
14003
  {
13904
14004
  domain: yAxisDomain,
13905
14005
  ticks: yAxisTicks,
13906
- tick: { fill: yFill, fontSize: 11 },
14006
+ dx: yAxisTickDx,
14007
+ tick: { fill: yFill, fontSize: 11, ...yAxisTickStyle },
13907
14008
  tickLine: false,
13908
14009
  axisLine: false,
13909
14010
  width: yWidth
@@ -13968,7 +14069,13 @@ function PeakBillingHours({
13968
14069
  activeTabId,
13969
14070
  onTabChange,
13970
14071
  data,
14072
+ isLoading = false,
13971
14073
  seriesByTabId,
14074
+ chartMargin,
14075
+ yAxisTickDx = -6,
14076
+ yAxisTickStyle,
14077
+ xAxisTickDx = 0,
14078
+ xAxisTickStyle,
13972
14079
  yAxisDomain = [0, 50],
13973
14080
  yAxisTicks = [0, 10, 20, 30, 40, 50],
13974
14081
  infoPopover,
@@ -14067,14 +14174,19 @@ function PeakBillingHours({
14067
14174
  inactiveTabFontWeight: st?.inactiveTabFontWeight ?? 600
14068
14175
  }
14069
14176
  ),
14070
- chartData.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
14177
+ isLoading ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_Skeleton5.default, { variant: "rounded", width: "100%", height: 320 }) : chartData.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
14071
14178
  BarPlot,
14072
14179
  {
14073
14180
  data: chartData,
14074
14181
  yAxisDomain,
14075
14182
  yAxisTicks,
14076
14183
  activeTabId,
14077
- renderTooltip
14184
+ renderTooltip,
14185
+ chartMargin,
14186
+ yAxisTickDx,
14187
+ yAxisTickStyle,
14188
+ xAxisTickDx,
14189
+ xAxisTickStyle
14078
14190
  }
14079
14191
  ) : /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
14080
14192
  ChartEmptyState,