@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.d.mts CHANGED
@@ -1050,6 +1050,36 @@ interface FalconAuditTimelineProps {
1050
1050
  eventCardBg?: string;
1051
1051
  /** Text color for header */
1052
1052
  headerColor?: string;
1053
+ /**
1054
+ * Max height of the scrollable events grid area.
1055
+ * @default '280px'
1056
+ */
1057
+ eventsMaxHeight?: string;
1058
+ /**
1059
+ * Max width of the card. Set to '100%' to fill the container.
1060
+ * @default '1324px'
1061
+ */
1062
+ cardMaxWidth?: string;
1063
+ /**
1064
+ * Hide the scrollbar while keeping scroll functionality.
1065
+ * @default false
1066
+ */
1067
+ hideScrollbar?: boolean;
1068
+ /**
1069
+ * Scrollbar width in px (only applies when hideScrollbar is false).
1070
+ * @default '6px'
1071
+ */
1072
+ scrollbarWidth?: string;
1073
+ /**
1074
+ * Scrollbar thumb color.
1075
+ * @default '#D1D5DB'
1076
+ */
1077
+ scrollbarThumbColor?: string;
1078
+ /**
1079
+ * Scrollbar track color.
1080
+ * @default 'transparent'
1081
+ */
1082
+ scrollbarTrackColor?: string;
1053
1083
  /**
1054
1084
  * Merged onto the **time-controls row** `Box` (year selector + month pill strip).
1055
1085
  * The default includes `overflow: 'hidden !important'` to clip overflowing month pills;
@@ -1619,6 +1649,8 @@ interface FootfallByAgeGroupsProps {
1619
1649
  data: FootfallByAgeGroupsRow[];
1620
1650
  /** Stacked series bottom-to-top (first item is bottom of stack). */
1621
1651
  series: FootfallByAgeGroupsSeries[];
1652
+ /** When `true`, render loading skeleton and suppress chart empty state. Default: `false`. */
1653
+ isLoading?: boolean;
1622
1654
  /** Plot height in px. Default: 430 */
1623
1655
  chartHeight?: number;
1624
1656
  /**
@@ -1677,8 +1709,12 @@ interface FootfallByAgeGroupsProps {
1677
1709
  renderTooltip?: (context: FootfallByAgeGroupsTooltipRenderContext) => ReactNode;
1678
1710
  /** Color key legend above the plot (from \`series\`). Default: \`true\`. */
1679
1711
  showLegend?: boolean;
1680
- /** Recharts \`BarChart\` margin; partial merge with defaults. */
1712
+ /** Recharts `BarChart` margin override (passed through directly when provided). */
1681
1713
  chartMargin?: FootfallByAgeGroupsChartMargin;
1714
+ /** Horizontal offset for left Y-axis tick text. Default: `-8`. */
1715
+ yAxisTickDx?: number;
1716
+ /** Inline SVG style for Y-axis tick text (typography/spacing). */
1717
+ yAxisTickStyle?: Record<string, string | number>;
1682
1718
  /** Grid / axis / bar-top label colors. */
1683
1719
  chartColors?: FootfallByAgeGroupsChartColors;
1684
1720
  emptyStatePlaceholderProps?: ChartEmptyStateProps;
@@ -1693,9 +1729,13 @@ interface FootfallByAgeGroupsProps {
1693
1729
  * Pass `0` for horizontal — labels containing `\n` will render as multiple lines.
1694
1730
  */
1695
1731
  xAxisTickAngle?: number;
1732
+ /** Horizontal offset for X-axis tick text. Default: `0`. */
1733
+ xAxisTickDx?: number;
1734
+ /** Inline SVG style for X-axis tick text (typography/spacing). */
1735
+ xAxisTickStyle?: Record<string, string | number>;
1696
1736
  }
1697
1737
 
1698
- declare function FootfallByAgeGroups({ title, data, series, chartHeight, minWidthPerCategory, horizontalScroll: horizontalScrollProp, maxBarSize: maxBarSizeProp, cardMaxWidth, cardSx, titleRowSx, titleSx, dividerSx, legendRowSx, legendItemSx, legendSwatchSx, legendLabelSx, chartScrollAreaSx, stackSx, emptyStateSx, headerActions, tooltipCategoryLabel, tooltipOverallLabel, tooltipStyles, renderTooltip, showLegend, chartMargin: chartMarginProp, chartColors: chartColorsProp, emptyStatePlaceholderProps, dimmedStackOpacity, barStackId, xAxisTickAngle, }: FootfallByAgeGroupsProps): react_jsx_runtime.JSX.Element;
1738
+ declare function FootfallByAgeGroups({ title, data, series, isLoading, chartHeight, minWidthPerCategory, horizontalScroll: horizontalScrollProp, maxBarSize: maxBarSizeProp, cardMaxWidth, cardSx, titleRowSx, titleSx, dividerSx, legendRowSx, legendItemSx, legendSwatchSx, legendLabelSx, chartScrollAreaSx, stackSx, emptyStateSx, headerActions, tooltipCategoryLabel, tooltipOverallLabel, tooltipStyles, renderTooltip, showLegend, chartMargin: chartMarginProp, yAxisTickDx, yAxisTickStyle, chartColors: chartColorsProp, emptyStatePlaceholderProps, dimmedStackOpacity, barStackId, xAxisTickAngle, xAxisTickDx, xAxisTickStyle, }: FootfallByAgeGroupsProps): react_jsx_runtime.JSX.Element;
1699
1739
 
1700
1740
  /** Optional inline styles merged over tooltip defaults (undefined keys keep defaults). */
1701
1741
  interface FootfallByGenderTooltipStyles {
@@ -1750,6 +1790,8 @@ interface FootfallByGenderProps {
1750
1790
  /** Card heading — **centered**; \`headerActions\` (if any) sit on the right without shifting it. */
1751
1791
  title: string;
1752
1792
  data: FootfallByGenderRow[];
1793
+ /** When `true`, render loading skeleton and suppress chart empty state. Default: `false`. */
1794
+ isLoading?: boolean;
1753
1795
  /** Legend / tooltip labels for the two series. Defaults: Male, Female */
1754
1796
  seriesLabels?: {
1755
1797
  male: string;
@@ -1833,8 +1875,12 @@ interface FootfallByGenderProps {
1833
1875
  * Full custom tooltip renderer. When provided, default tooltip layout is skipped.
1834
1876
  */
1835
1877
  renderTooltip?: (context: FootfallByGenderTooltipRenderContext) => ReactNode;
1836
- /** Recharts \`BarChart\` margin; partial merge after defaults (your values override). */
1878
+ /** Recharts `BarChart` margin override (passed through directly when provided). */
1837
1879
  chartMargin?: FootfallByGenderChartMargin;
1880
+ /** Horizontal offset for left Y-axis tick text. Default: `-6`. */
1881
+ yAxisTickDx?: number;
1882
+ /** Inline SVG style for Y-axis tick text (typography/spacing). */
1883
+ yAxisTickStyle?: Record<string, string | number>;
1838
1884
  /** Grid / axis / bar-top label colors. */
1839
1885
  chartColors?: FootfallByGenderChartColors;
1840
1886
  emptyStatePlaceholderProps?: ChartEmptyStateProps;
@@ -1849,6 +1895,10 @@ interface FootfallByGenderProps {
1849
1895
  * Pass `0` for horizontal — labels containing `\n` will render as multiple lines.
1850
1896
  */
1851
1897
  xAxisTickAngle?: number;
1898
+ /** Horizontal offset for X-axis tick text. Default: `0`. */
1899
+ xAxisTickDx?: number;
1900
+ /** Inline SVG style for X-axis tick text (typography/spacing). */
1901
+ xAxisTickStyle?: Record<string, string | number>;
1852
1902
  /**
1853
1903
  * Rotation angle for bar-top value labels. Default: **-90** (vertical).
1854
1904
  * Pass `0` for horizontal labels.
@@ -1865,7 +1915,7 @@ interface FootfallByGenderProps {
1865
1915
  /**
1866
1916
  * Grouped bar chart: two series (male / female) per category, with hover dimming and a custom tooltip.
1867
1917
  */
1868
- declare function FootfallByGender({ title, data, seriesLabels: seriesLabelsProp, seriesColors: seriesColorsProp, chartHeight, minWidthPerCategory, horizontalScroll: horizontalScrollProp, maxBarSize: maxBarSizeProp, barGap, showLegend, showBarValueLabels, showGrowthBadges, dimmedBarOpacity, hoveredBarOpacity, cardMaxWidth, cardSx, titleRowSx, titleSx, dividerSx, legendOverlaySx, legendItemSx, legendSwatchSx, legendLabelSx, chartViewportSx, chartScrollAreaSx, stackSx, emptyStateSx, headerActions, tooltipCategoryLabel, tooltipOverallLabel, tooltipStyles, renderTooltip, chartMargin: chartMarginProp, chartColors: chartColorsProp, emptyStatePlaceholderProps, yAxisTickFormatter, xAxisTickAngle, barValueLabelAngle, growthBadgeWidth, growthBadgeHeight, growthBadgeOffsetY, }: FootfallByGenderProps): react_jsx_runtime.JSX.Element;
1918
+ declare function FootfallByGender({ title, data, isLoading, seriesLabels: seriesLabelsProp, seriesColors: seriesColorsProp, chartHeight, minWidthPerCategory, horizontalScroll: horizontalScrollProp, maxBarSize: maxBarSizeProp, barGap, showLegend, showBarValueLabels, showGrowthBadges, dimmedBarOpacity, hoveredBarOpacity, cardMaxWidth, cardSx, titleRowSx, titleSx, dividerSx, legendOverlaySx, legendItemSx, legendSwatchSx, legendLabelSx, chartViewportSx, chartScrollAreaSx, stackSx, emptyStateSx, headerActions, tooltipCategoryLabel, tooltipOverallLabel, tooltipStyles, renderTooltip, chartMargin: chartMarginProp, yAxisTickDx, yAxisTickStyle, chartColors: chartColorsProp, emptyStatePlaceholderProps, yAxisTickFormatter, xAxisTickAngle, xAxisTickDx, xAxisTickStyle, barValueLabelAngle, growthBadgeWidth, growthBadgeHeight, growthBadgeOffsetY, }: FootfallByGenderProps): react_jsx_runtime.JSX.Element;
1869
1919
 
1870
1920
  interface PasserbyConversionTooltipStyles {
1871
1921
  container?: CSSProperties;
@@ -1915,6 +1965,8 @@ interface PasserbyConversionTooltipRenderContext {
1915
1965
  interface PasserbyConversionProps {
1916
1966
  title: string;
1917
1967
  data: PasserbyConversionRow[];
1968
+ /** When `true`, render loading skeleton and suppress chart empty state. Default: `false`. */
1969
+ isLoading?: boolean;
1918
1970
  /**
1919
1971
  * Optional fixed X-axis slots (e.g. full day series), used to render a stable time axis
1920
1972
  * even when `data` is partial (API hasn’t returned all slots yet).
@@ -1994,6 +2046,18 @@ interface PasserbyConversionProps {
1994
2046
  showConversionLine?: boolean;
1995
2047
  showBarValueLabels?: boolean;
1996
2048
  chartMargin?: PasserbyConversionChartMargin;
2049
+ /** Horizontal offset for left Y-axis tick text. Default: `-8`. */
2050
+ yAxisTickDx?: number;
2051
+ /** Inline SVG style for left Y-axis tick text (typography/spacing). */
2052
+ yAxisTickStyle?: Record<string, string | number>;
2053
+ /** Horizontal offset for right Y-axis tick text. Default: `0`. */
2054
+ conversionAxisTickDx?: number;
2055
+ /** Inline SVG style for right Y-axis tick text (typography/spacing). */
2056
+ conversionAxisTickStyle?: Record<string, string | number>;
2057
+ /** Alias for `conversionAxisTickDx` on the right Y-axis tick text. */
2058
+ rightYAxisTickDx?: number;
2059
+ /** Alias for `conversionAxisTickStyle` on the right Y-axis tick text. */
2060
+ rightYAxisTickStyle?: Record<string, string | number>;
1997
2061
  chartColors?: PasserbyConversionChartColors;
1998
2062
  emptyStatePlaceholderProps?: ChartEmptyStateProps;
1999
2063
  emptyStateText?: string;
@@ -2014,9 +2078,13 @@ interface PasserbyConversionProps {
2014
2078
  * Pass `0` for horizontal — labels containing `\n` will render as multiple lines.
2015
2079
  */
2016
2080
  xAxisTickAngle?: number;
2081
+ /** Horizontal offset for X-axis tick text. Default: `0`. */
2082
+ xAxisTickDx?: number;
2083
+ /** Inline SVG style for X-axis tick text (typography/spacing). */
2084
+ xAxisTickStyle?: Record<string, string | number>;
2017
2085
  }
2018
2086
 
2019
- declare function PasserbyConversion({ title, data, timeSlots, fillMissingTimeSlots, chartHeight, passerbySeriesName, walkInsSeriesName, conversionSeriesName, lineType, minWidthPerCategory, horizontalScroll: horizontalScrollProp, maxBarSize: maxBarSizeProp, barGap, cardMaxWidth, cardSx, titleRowSx, titleSx, dividerSx, legendRowSx, legendItemSx, legendSwatchSx, legendLabelSx, chartScrollAreaSx, stackSx, emptyStateSx, headerActions, tooltipTimeLabel, tooltipOverallLabel, tooltipWalkInsLabel, tooltipPasserbyLabel, tooltipConversionLabel, formatTooltipConversion, conversionAxisLabel, yAxisTickFormatter, conversionAxisTickFormatter, tooltipStyles, renderTooltip, showLegend, showConversionLine: showConversionLineProp, showBarValueLabels, chartMargin: chartMarginProp, chartColors: chartColorsProp, emptyStatePlaceholderProps, isChartAnimationActive, chartAnimationDuration, scrollChartToEndOnDataChange, xAxisTickAngle, }: PasserbyConversionProps): react_jsx_runtime.JSX.Element;
2087
+ declare function PasserbyConversion({ title, data, isLoading, timeSlots, fillMissingTimeSlots, chartHeight, passerbySeriesName, walkInsSeriesName, conversionSeriesName, lineType, minWidthPerCategory, horizontalScroll: horizontalScrollProp, maxBarSize: maxBarSizeProp, barGap, cardMaxWidth, cardSx, titleRowSx, titleSx, dividerSx, legendRowSx, legendItemSx, legendSwatchSx, legendLabelSx, chartScrollAreaSx, stackSx, emptyStateSx, headerActions, tooltipTimeLabel, tooltipOverallLabel, tooltipWalkInsLabel, tooltipPasserbyLabel, tooltipConversionLabel, formatTooltipConversion, conversionAxisLabel, yAxisTickFormatter, conversionAxisTickFormatter, tooltipStyles, renderTooltip, showLegend, showConversionLine: showConversionLineProp, showBarValueLabels, chartMargin: chartMarginProp, yAxisTickDx, yAxisTickStyle, conversionAxisTickDx, conversionAxisTickStyle, rightYAxisTickDx, rightYAxisTickStyle, chartColors: chartColorsProp, emptyStatePlaceholderProps, isChartAnimationActive, chartAnimationDuration, scrollChartToEndOnDataChange, xAxisTickAngle, xAxisTickDx, xAxisTickStyle, }: PasserbyConversionProps): react_jsx_runtime.JSX.Element;
2020
2088
 
2021
2089
  /** Pie diameter: fixed px, or per-breakpoint (`xs` / `sm` / `md` match MUI breakpoints). */
2022
2090
  type WalkinAnalysisPieSize = number | {
@@ -2202,6 +2270,8 @@ interface WalkinTrafficTooltipRenderContext {
2202
2270
  interface WalkinTrafficProps {
2203
2271
  title: string;
2204
2272
  data: WalkinTrafficRow[];
2273
+ /** When `true`, render loading skeleton and suppress chart empty state. Default: `false`. */
2274
+ isLoading?: boolean;
2205
2275
  /** Plot height in px. Default: **430**. */
2206
2276
  chartHeight?: number;
2207
2277
  /** Legend label and tooltip name for bars. Default: **Walk-ins**. */
@@ -2259,6 +2329,10 @@ interface WalkinTrafficProps {
2259
2329
  showLineInLegend?: boolean;
2260
2330
  showBarValueLabels?: boolean;
2261
2331
  chartMargin?: WalkinTrafficChartMargin;
2332
+ /** Horizontal offset for left Y-axis tick text. Default: `-8`. */
2333
+ yAxisTickDx?: number;
2334
+ /** Inline SVG style for Y-axis tick text (typography/spacing). */
2335
+ yAxisTickStyle?: Record<string, string | number>;
2262
2336
  chartColors?: WalkinTrafficChartColors;
2263
2337
  emptyStatePlaceholderProps?: ChartEmptyStateProps;
2264
2338
  yAxisTickFormatter?: (value: number) => string;
@@ -2279,9 +2353,13 @@ interface WalkinTrafficProps {
2279
2353
  * Pass `0` for horizontal — labels containing `\n` will render as multiple lines.
2280
2354
  */
2281
2355
  xAxisTickAngle?: number;
2356
+ /** Horizontal offset for X-axis tick text. Default: `0`. */
2357
+ xAxisTickDx?: number;
2358
+ /** Inline SVG style for X-axis tick text (typography/spacing). */
2359
+ xAxisTickStyle?: Record<string, string | number>;
2282
2360
  }
2283
2361
 
2284
- declare function WalkinTraffic({ title, data, chartHeight, barSeriesName, lineSeriesName, lineType, minWidthPerCategory, horizontalScroll: horizontalScrollProp, maxBarSize: maxBarSizeProp, cardMaxWidth, cardSx, titleRowSx, titleSx, dividerSx, legendRowSx, legendItemSx, legendSwatchSx, legendLabelSx, chartScrollAreaSx, stackSx, emptyStateSx, headerActions, tooltipTitle, tooltipTimeLabel, tooltipCurrentYearLabel, tooltipLastYearLabel, tooltipGrowthLabel, tooltipFooterNote: tooltipFooterNoteProp, tooltipHourLabel, tooltipStyles, renderTooltip, showLegend, showTrendLine: showTrendLineProp, showLineInLegend, showBarValueLabels, chartMargin: chartMarginProp, chartColors: chartColorsProp, emptyStatePlaceholderProps, yAxisTickFormatter, isChartAnimationActive, chartAnimationDuration, scrollChartToEndOnDataChange, xAxisTickAngle, }: WalkinTrafficProps): react_jsx_runtime.JSX.Element;
2362
+ declare function WalkinTraffic({ title, data, isLoading, chartHeight, barSeriesName, lineSeriesName, lineType, minWidthPerCategory, horizontalScroll: horizontalScrollProp, maxBarSize: maxBarSizeProp, cardMaxWidth, cardSx, titleRowSx, titleSx, dividerSx, legendRowSx, legendItemSx, legendSwatchSx, legendLabelSx, chartScrollAreaSx, stackSx, emptyStateSx, headerActions, tooltipTitle, tooltipTimeLabel, tooltipCurrentYearLabel, tooltipLastYearLabel, tooltipGrowthLabel, tooltipFooterNote: tooltipFooterNoteProp, tooltipHourLabel, tooltipStyles, renderTooltip, showLegend, showTrendLine: showTrendLineProp, showLineInLegend, showBarValueLabels, chartMargin: chartMarginProp, yAxisTickDx, yAxisTickStyle, chartColors: chartColorsProp, emptyStatePlaceholderProps, yAxisTickFormatter, isChartAnimationActive, chartAnimationDuration, scrollChartToEndOnDataChange, xAxisTickAngle, xAxisTickDx, xAxisTickStyle, }: WalkinTrafficProps): react_jsx_runtime.JSX.Element;
2285
2363
 
2286
2364
  /** Primary line + tooltip fill (violet). */
2287
2365
  declare const BILLING_COUNTER_LINE_PRIMARY: "#7C3AED";
@@ -2892,7 +2970,24 @@ type PeakBillingHoursProps = {
2892
2970
  activeTabId: string;
2893
2971
  onTabChange: (tabId: string) => void;
2894
2972
  data?: PeakBillingHoursPoint[];
2973
+ /** When `true`, render loading skeleton and suppress chart empty state. Default: `false`. */
2974
+ isLoading?: boolean;
2895
2975
  seriesByTabId?: Record<string, PeakBillingHoursPoint[]>;
2976
+ /** Recharts `BarChart` margin override (passed through directly when provided). */
2977
+ chartMargin?: {
2978
+ top?: number;
2979
+ right?: number;
2980
+ bottom?: number;
2981
+ left?: number;
2982
+ };
2983
+ /** Horizontal offset for Y-axis tick text. Default: `-6`. */
2984
+ yAxisTickDx?: number;
2985
+ /** Inline SVG style for Y-axis tick text (typography/spacing). */
2986
+ yAxisTickStyle?: Record<string, string | number>;
2987
+ /** Horizontal offset for X-axis tick text. Default: `0`. */
2988
+ xAxisTickDx?: number;
2989
+ /** Inline SVG style for X-axis tick text (typography/spacing). */
2990
+ xAxisTickStyle?: Record<string, string | number>;
2896
2991
  yAxisDomain?: [number, number];
2897
2992
  yAxisTicks?: number[];
2898
2993
  infoPopover?: ChartWidgetInfoPopoverContent | null;
@@ -2913,7 +3008,7 @@ declare const peakBillingHoursMockSeriesByTabId: Record<string, PeakBillingHours
2913
3008
  * Peak billing hours card: title + subtitle, info control, violet segmented tabs (intrinsic),
2914
3009
  * vertical bar chart with square tops, value labels, and panel tooltip.
2915
3010
  */
2916
- declare function PeakBillingHours({ title, subtitle, tabs, activeTabId, onTabChange, data, seriesByTabId, yAxisDomain, yAxisTicks, infoPopover, renderTooltip, emptyStatePlaceholderProps, customization, }: PeakBillingHoursProps): React$1.ReactElement;
3011
+ declare function PeakBillingHours({ title, subtitle, tabs, activeTabId, onTabChange, data, isLoading, seriesByTabId, chartMargin, yAxisTickDx, yAxisTickStyle, xAxisTickDx, xAxisTickStyle, yAxisDomain, yAxisTicks, infoPopover, renderTooltip, emptyStatePlaceholderProps, customization, }: PeakBillingHoursProps): React$1.ReactElement;
2917
3012
 
2918
3013
  type PeakBillingHoursCustomizationProviderProps = {
2919
3014
  value: PeakBillingHoursCustomization;
package/dist/index.d.ts CHANGED
@@ -1050,6 +1050,36 @@ interface FalconAuditTimelineProps {
1050
1050
  eventCardBg?: string;
1051
1051
  /** Text color for header */
1052
1052
  headerColor?: string;
1053
+ /**
1054
+ * Max height of the scrollable events grid area.
1055
+ * @default '280px'
1056
+ */
1057
+ eventsMaxHeight?: string;
1058
+ /**
1059
+ * Max width of the card. Set to '100%' to fill the container.
1060
+ * @default '1324px'
1061
+ */
1062
+ cardMaxWidth?: string;
1063
+ /**
1064
+ * Hide the scrollbar while keeping scroll functionality.
1065
+ * @default false
1066
+ */
1067
+ hideScrollbar?: boolean;
1068
+ /**
1069
+ * Scrollbar width in px (only applies when hideScrollbar is false).
1070
+ * @default '6px'
1071
+ */
1072
+ scrollbarWidth?: string;
1073
+ /**
1074
+ * Scrollbar thumb color.
1075
+ * @default '#D1D5DB'
1076
+ */
1077
+ scrollbarThumbColor?: string;
1078
+ /**
1079
+ * Scrollbar track color.
1080
+ * @default 'transparent'
1081
+ */
1082
+ scrollbarTrackColor?: string;
1053
1083
  /**
1054
1084
  * Merged onto the **time-controls row** `Box` (year selector + month pill strip).
1055
1085
  * The default includes `overflow: 'hidden !important'` to clip overflowing month pills;
@@ -1619,6 +1649,8 @@ interface FootfallByAgeGroupsProps {
1619
1649
  data: FootfallByAgeGroupsRow[];
1620
1650
  /** Stacked series bottom-to-top (first item is bottom of stack). */
1621
1651
  series: FootfallByAgeGroupsSeries[];
1652
+ /** When `true`, render loading skeleton and suppress chart empty state. Default: `false`. */
1653
+ isLoading?: boolean;
1622
1654
  /** Plot height in px. Default: 430 */
1623
1655
  chartHeight?: number;
1624
1656
  /**
@@ -1677,8 +1709,12 @@ interface FootfallByAgeGroupsProps {
1677
1709
  renderTooltip?: (context: FootfallByAgeGroupsTooltipRenderContext) => ReactNode;
1678
1710
  /** Color key legend above the plot (from \`series\`). Default: \`true\`. */
1679
1711
  showLegend?: boolean;
1680
- /** Recharts \`BarChart\` margin; partial merge with defaults. */
1712
+ /** Recharts `BarChart` margin override (passed through directly when provided). */
1681
1713
  chartMargin?: FootfallByAgeGroupsChartMargin;
1714
+ /** Horizontal offset for left Y-axis tick text. Default: `-8`. */
1715
+ yAxisTickDx?: number;
1716
+ /** Inline SVG style for Y-axis tick text (typography/spacing). */
1717
+ yAxisTickStyle?: Record<string, string | number>;
1682
1718
  /** Grid / axis / bar-top label colors. */
1683
1719
  chartColors?: FootfallByAgeGroupsChartColors;
1684
1720
  emptyStatePlaceholderProps?: ChartEmptyStateProps;
@@ -1693,9 +1729,13 @@ interface FootfallByAgeGroupsProps {
1693
1729
  * Pass `0` for horizontal — labels containing `\n` will render as multiple lines.
1694
1730
  */
1695
1731
  xAxisTickAngle?: number;
1732
+ /** Horizontal offset for X-axis tick text. Default: `0`. */
1733
+ xAxisTickDx?: number;
1734
+ /** Inline SVG style for X-axis tick text (typography/spacing). */
1735
+ xAxisTickStyle?: Record<string, string | number>;
1696
1736
  }
1697
1737
 
1698
- declare function FootfallByAgeGroups({ title, data, series, chartHeight, minWidthPerCategory, horizontalScroll: horizontalScrollProp, maxBarSize: maxBarSizeProp, cardMaxWidth, cardSx, titleRowSx, titleSx, dividerSx, legendRowSx, legendItemSx, legendSwatchSx, legendLabelSx, chartScrollAreaSx, stackSx, emptyStateSx, headerActions, tooltipCategoryLabel, tooltipOverallLabel, tooltipStyles, renderTooltip, showLegend, chartMargin: chartMarginProp, chartColors: chartColorsProp, emptyStatePlaceholderProps, dimmedStackOpacity, barStackId, xAxisTickAngle, }: FootfallByAgeGroupsProps): react_jsx_runtime.JSX.Element;
1738
+ declare function FootfallByAgeGroups({ title, data, series, isLoading, chartHeight, minWidthPerCategory, horizontalScroll: horizontalScrollProp, maxBarSize: maxBarSizeProp, cardMaxWidth, cardSx, titleRowSx, titleSx, dividerSx, legendRowSx, legendItemSx, legendSwatchSx, legendLabelSx, chartScrollAreaSx, stackSx, emptyStateSx, headerActions, tooltipCategoryLabel, tooltipOverallLabel, tooltipStyles, renderTooltip, showLegend, chartMargin: chartMarginProp, yAxisTickDx, yAxisTickStyle, chartColors: chartColorsProp, emptyStatePlaceholderProps, dimmedStackOpacity, barStackId, xAxisTickAngle, xAxisTickDx, xAxisTickStyle, }: FootfallByAgeGroupsProps): react_jsx_runtime.JSX.Element;
1699
1739
 
1700
1740
  /** Optional inline styles merged over tooltip defaults (undefined keys keep defaults). */
1701
1741
  interface FootfallByGenderTooltipStyles {
@@ -1750,6 +1790,8 @@ interface FootfallByGenderProps {
1750
1790
  /** Card heading — **centered**; \`headerActions\` (if any) sit on the right without shifting it. */
1751
1791
  title: string;
1752
1792
  data: FootfallByGenderRow[];
1793
+ /** When `true`, render loading skeleton and suppress chart empty state. Default: `false`. */
1794
+ isLoading?: boolean;
1753
1795
  /** Legend / tooltip labels for the two series. Defaults: Male, Female */
1754
1796
  seriesLabels?: {
1755
1797
  male: string;
@@ -1833,8 +1875,12 @@ interface FootfallByGenderProps {
1833
1875
  * Full custom tooltip renderer. When provided, default tooltip layout is skipped.
1834
1876
  */
1835
1877
  renderTooltip?: (context: FootfallByGenderTooltipRenderContext) => ReactNode;
1836
- /** Recharts \`BarChart\` margin; partial merge after defaults (your values override). */
1878
+ /** Recharts `BarChart` margin override (passed through directly when provided). */
1837
1879
  chartMargin?: FootfallByGenderChartMargin;
1880
+ /** Horizontal offset for left Y-axis tick text. Default: `-6`. */
1881
+ yAxisTickDx?: number;
1882
+ /** Inline SVG style for Y-axis tick text (typography/spacing). */
1883
+ yAxisTickStyle?: Record<string, string | number>;
1838
1884
  /** Grid / axis / bar-top label colors. */
1839
1885
  chartColors?: FootfallByGenderChartColors;
1840
1886
  emptyStatePlaceholderProps?: ChartEmptyStateProps;
@@ -1849,6 +1895,10 @@ interface FootfallByGenderProps {
1849
1895
  * Pass `0` for horizontal — labels containing `\n` will render as multiple lines.
1850
1896
  */
1851
1897
  xAxisTickAngle?: number;
1898
+ /** Horizontal offset for X-axis tick text. Default: `0`. */
1899
+ xAxisTickDx?: number;
1900
+ /** Inline SVG style for X-axis tick text (typography/spacing). */
1901
+ xAxisTickStyle?: Record<string, string | number>;
1852
1902
  /**
1853
1903
  * Rotation angle for bar-top value labels. Default: **-90** (vertical).
1854
1904
  * Pass `0` for horizontal labels.
@@ -1865,7 +1915,7 @@ interface FootfallByGenderProps {
1865
1915
  /**
1866
1916
  * Grouped bar chart: two series (male / female) per category, with hover dimming and a custom tooltip.
1867
1917
  */
1868
- declare function FootfallByGender({ title, data, seriesLabels: seriesLabelsProp, seriesColors: seriesColorsProp, chartHeight, minWidthPerCategory, horizontalScroll: horizontalScrollProp, maxBarSize: maxBarSizeProp, barGap, showLegend, showBarValueLabels, showGrowthBadges, dimmedBarOpacity, hoveredBarOpacity, cardMaxWidth, cardSx, titleRowSx, titleSx, dividerSx, legendOverlaySx, legendItemSx, legendSwatchSx, legendLabelSx, chartViewportSx, chartScrollAreaSx, stackSx, emptyStateSx, headerActions, tooltipCategoryLabel, tooltipOverallLabel, tooltipStyles, renderTooltip, chartMargin: chartMarginProp, chartColors: chartColorsProp, emptyStatePlaceholderProps, yAxisTickFormatter, xAxisTickAngle, barValueLabelAngle, growthBadgeWidth, growthBadgeHeight, growthBadgeOffsetY, }: FootfallByGenderProps): react_jsx_runtime.JSX.Element;
1918
+ declare function FootfallByGender({ title, data, isLoading, seriesLabels: seriesLabelsProp, seriesColors: seriesColorsProp, chartHeight, minWidthPerCategory, horizontalScroll: horizontalScrollProp, maxBarSize: maxBarSizeProp, barGap, showLegend, showBarValueLabels, showGrowthBadges, dimmedBarOpacity, hoveredBarOpacity, cardMaxWidth, cardSx, titleRowSx, titleSx, dividerSx, legendOverlaySx, legendItemSx, legendSwatchSx, legendLabelSx, chartViewportSx, chartScrollAreaSx, stackSx, emptyStateSx, headerActions, tooltipCategoryLabel, tooltipOverallLabel, tooltipStyles, renderTooltip, chartMargin: chartMarginProp, yAxisTickDx, yAxisTickStyle, chartColors: chartColorsProp, emptyStatePlaceholderProps, yAxisTickFormatter, xAxisTickAngle, xAxisTickDx, xAxisTickStyle, barValueLabelAngle, growthBadgeWidth, growthBadgeHeight, growthBadgeOffsetY, }: FootfallByGenderProps): react_jsx_runtime.JSX.Element;
1869
1919
 
1870
1920
  interface PasserbyConversionTooltipStyles {
1871
1921
  container?: CSSProperties;
@@ -1915,6 +1965,8 @@ interface PasserbyConversionTooltipRenderContext {
1915
1965
  interface PasserbyConversionProps {
1916
1966
  title: string;
1917
1967
  data: PasserbyConversionRow[];
1968
+ /** When `true`, render loading skeleton and suppress chart empty state. Default: `false`. */
1969
+ isLoading?: boolean;
1918
1970
  /**
1919
1971
  * Optional fixed X-axis slots (e.g. full day series), used to render a stable time axis
1920
1972
  * even when `data` is partial (API hasn’t returned all slots yet).
@@ -1994,6 +2046,18 @@ interface PasserbyConversionProps {
1994
2046
  showConversionLine?: boolean;
1995
2047
  showBarValueLabels?: boolean;
1996
2048
  chartMargin?: PasserbyConversionChartMargin;
2049
+ /** Horizontal offset for left Y-axis tick text. Default: `-8`. */
2050
+ yAxisTickDx?: number;
2051
+ /** Inline SVG style for left Y-axis tick text (typography/spacing). */
2052
+ yAxisTickStyle?: Record<string, string | number>;
2053
+ /** Horizontal offset for right Y-axis tick text. Default: `0`. */
2054
+ conversionAxisTickDx?: number;
2055
+ /** Inline SVG style for right Y-axis tick text (typography/spacing). */
2056
+ conversionAxisTickStyle?: Record<string, string | number>;
2057
+ /** Alias for `conversionAxisTickDx` on the right Y-axis tick text. */
2058
+ rightYAxisTickDx?: number;
2059
+ /** Alias for `conversionAxisTickStyle` on the right Y-axis tick text. */
2060
+ rightYAxisTickStyle?: Record<string, string | number>;
1997
2061
  chartColors?: PasserbyConversionChartColors;
1998
2062
  emptyStatePlaceholderProps?: ChartEmptyStateProps;
1999
2063
  emptyStateText?: string;
@@ -2014,9 +2078,13 @@ interface PasserbyConversionProps {
2014
2078
  * Pass `0` for horizontal — labels containing `\n` will render as multiple lines.
2015
2079
  */
2016
2080
  xAxisTickAngle?: number;
2081
+ /** Horizontal offset for X-axis tick text. Default: `0`. */
2082
+ xAxisTickDx?: number;
2083
+ /** Inline SVG style for X-axis tick text (typography/spacing). */
2084
+ xAxisTickStyle?: Record<string, string | number>;
2017
2085
  }
2018
2086
 
2019
- declare function PasserbyConversion({ title, data, timeSlots, fillMissingTimeSlots, chartHeight, passerbySeriesName, walkInsSeriesName, conversionSeriesName, lineType, minWidthPerCategory, horizontalScroll: horizontalScrollProp, maxBarSize: maxBarSizeProp, barGap, cardMaxWidth, cardSx, titleRowSx, titleSx, dividerSx, legendRowSx, legendItemSx, legendSwatchSx, legendLabelSx, chartScrollAreaSx, stackSx, emptyStateSx, headerActions, tooltipTimeLabel, tooltipOverallLabel, tooltipWalkInsLabel, tooltipPasserbyLabel, tooltipConversionLabel, formatTooltipConversion, conversionAxisLabel, yAxisTickFormatter, conversionAxisTickFormatter, tooltipStyles, renderTooltip, showLegend, showConversionLine: showConversionLineProp, showBarValueLabels, chartMargin: chartMarginProp, chartColors: chartColorsProp, emptyStatePlaceholderProps, isChartAnimationActive, chartAnimationDuration, scrollChartToEndOnDataChange, xAxisTickAngle, }: PasserbyConversionProps): react_jsx_runtime.JSX.Element;
2087
+ declare function PasserbyConversion({ title, data, isLoading, timeSlots, fillMissingTimeSlots, chartHeight, passerbySeriesName, walkInsSeriesName, conversionSeriesName, lineType, minWidthPerCategory, horizontalScroll: horizontalScrollProp, maxBarSize: maxBarSizeProp, barGap, cardMaxWidth, cardSx, titleRowSx, titleSx, dividerSx, legendRowSx, legendItemSx, legendSwatchSx, legendLabelSx, chartScrollAreaSx, stackSx, emptyStateSx, headerActions, tooltipTimeLabel, tooltipOverallLabel, tooltipWalkInsLabel, tooltipPasserbyLabel, tooltipConversionLabel, formatTooltipConversion, conversionAxisLabel, yAxisTickFormatter, conversionAxisTickFormatter, tooltipStyles, renderTooltip, showLegend, showConversionLine: showConversionLineProp, showBarValueLabels, chartMargin: chartMarginProp, yAxisTickDx, yAxisTickStyle, conversionAxisTickDx, conversionAxisTickStyle, rightYAxisTickDx, rightYAxisTickStyle, chartColors: chartColorsProp, emptyStatePlaceholderProps, isChartAnimationActive, chartAnimationDuration, scrollChartToEndOnDataChange, xAxisTickAngle, xAxisTickDx, xAxisTickStyle, }: PasserbyConversionProps): react_jsx_runtime.JSX.Element;
2020
2088
 
2021
2089
  /** Pie diameter: fixed px, or per-breakpoint (`xs` / `sm` / `md` match MUI breakpoints). */
2022
2090
  type WalkinAnalysisPieSize = number | {
@@ -2202,6 +2270,8 @@ interface WalkinTrafficTooltipRenderContext {
2202
2270
  interface WalkinTrafficProps {
2203
2271
  title: string;
2204
2272
  data: WalkinTrafficRow[];
2273
+ /** When `true`, render loading skeleton and suppress chart empty state. Default: `false`. */
2274
+ isLoading?: boolean;
2205
2275
  /** Plot height in px. Default: **430**. */
2206
2276
  chartHeight?: number;
2207
2277
  /** Legend label and tooltip name for bars. Default: **Walk-ins**. */
@@ -2259,6 +2329,10 @@ interface WalkinTrafficProps {
2259
2329
  showLineInLegend?: boolean;
2260
2330
  showBarValueLabels?: boolean;
2261
2331
  chartMargin?: WalkinTrafficChartMargin;
2332
+ /** Horizontal offset for left Y-axis tick text. Default: `-8`. */
2333
+ yAxisTickDx?: number;
2334
+ /** Inline SVG style for Y-axis tick text (typography/spacing). */
2335
+ yAxisTickStyle?: Record<string, string | number>;
2262
2336
  chartColors?: WalkinTrafficChartColors;
2263
2337
  emptyStatePlaceholderProps?: ChartEmptyStateProps;
2264
2338
  yAxisTickFormatter?: (value: number) => string;
@@ -2279,9 +2353,13 @@ interface WalkinTrafficProps {
2279
2353
  * Pass `0` for horizontal — labels containing `\n` will render as multiple lines.
2280
2354
  */
2281
2355
  xAxisTickAngle?: number;
2356
+ /** Horizontal offset for X-axis tick text. Default: `0`. */
2357
+ xAxisTickDx?: number;
2358
+ /** Inline SVG style for X-axis tick text (typography/spacing). */
2359
+ xAxisTickStyle?: Record<string, string | number>;
2282
2360
  }
2283
2361
 
2284
- declare function WalkinTraffic({ title, data, chartHeight, barSeriesName, lineSeriesName, lineType, minWidthPerCategory, horizontalScroll: horizontalScrollProp, maxBarSize: maxBarSizeProp, cardMaxWidth, cardSx, titleRowSx, titleSx, dividerSx, legendRowSx, legendItemSx, legendSwatchSx, legendLabelSx, chartScrollAreaSx, stackSx, emptyStateSx, headerActions, tooltipTitle, tooltipTimeLabel, tooltipCurrentYearLabel, tooltipLastYearLabel, tooltipGrowthLabel, tooltipFooterNote: tooltipFooterNoteProp, tooltipHourLabel, tooltipStyles, renderTooltip, showLegend, showTrendLine: showTrendLineProp, showLineInLegend, showBarValueLabels, chartMargin: chartMarginProp, chartColors: chartColorsProp, emptyStatePlaceholderProps, yAxisTickFormatter, isChartAnimationActive, chartAnimationDuration, scrollChartToEndOnDataChange, xAxisTickAngle, }: WalkinTrafficProps): react_jsx_runtime.JSX.Element;
2362
+ declare function WalkinTraffic({ title, data, isLoading, chartHeight, barSeriesName, lineSeriesName, lineType, minWidthPerCategory, horizontalScroll: horizontalScrollProp, maxBarSize: maxBarSizeProp, cardMaxWidth, cardSx, titleRowSx, titleSx, dividerSx, legendRowSx, legendItemSx, legendSwatchSx, legendLabelSx, chartScrollAreaSx, stackSx, emptyStateSx, headerActions, tooltipTitle, tooltipTimeLabel, tooltipCurrentYearLabel, tooltipLastYearLabel, tooltipGrowthLabel, tooltipFooterNote: tooltipFooterNoteProp, tooltipHourLabel, tooltipStyles, renderTooltip, showLegend, showTrendLine: showTrendLineProp, showLineInLegend, showBarValueLabels, chartMargin: chartMarginProp, yAxisTickDx, yAxisTickStyle, chartColors: chartColorsProp, emptyStatePlaceholderProps, yAxisTickFormatter, isChartAnimationActive, chartAnimationDuration, scrollChartToEndOnDataChange, xAxisTickAngle, xAxisTickDx, xAxisTickStyle, }: WalkinTrafficProps): react_jsx_runtime.JSX.Element;
2285
2363
 
2286
2364
  /** Primary line + tooltip fill (violet). */
2287
2365
  declare const BILLING_COUNTER_LINE_PRIMARY: "#7C3AED";
@@ -2892,7 +2970,24 @@ type PeakBillingHoursProps = {
2892
2970
  activeTabId: string;
2893
2971
  onTabChange: (tabId: string) => void;
2894
2972
  data?: PeakBillingHoursPoint[];
2973
+ /** When `true`, render loading skeleton and suppress chart empty state. Default: `false`. */
2974
+ isLoading?: boolean;
2895
2975
  seriesByTabId?: Record<string, PeakBillingHoursPoint[]>;
2976
+ /** Recharts `BarChart` margin override (passed through directly when provided). */
2977
+ chartMargin?: {
2978
+ top?: number;
2979
+ right?: number;
2980
+ bottom?: number;
2981
+ left?: number;
2982
+ };
2983
+ /** Horizontal offset for Y-axis tick text. Default: `-6`. */
2984
+ yAxisTickDx?: number;
2985
+ /** Inline SVG style for Y-axis tick text (typography/spacing). */
2986
+ yAxisTickStyle?: Record<string, string | number>;
2987
+ /** Horizontal offset for X-axis tick text. Default: `0`. */
2988
+ xAxisTickDx?: number;
2989
+ /** Inline SVG style for X-axis tick text (typography/spacing). */
2990
+ xAxisTickStyle?: Record<string, string | number>;
2896
2991
  yAxisDomain?: [number, number];
2897
2992
  yAxisTicks?: number[];
2898
2993
  infoPopover?: ChartWidgetInfoPopoverContent | null;
@@ -2913,7 +3008,7 @@ declare const peakBillingHoursMockSeriesByTabId: Record<string, PeakBillingHours
2913
3008
  * Peak billing hours card: title + subtitle, info control, violet segmented tabs (intrinsic),
2914
3009
  * vertical bar chart with square tops, value labels, and panel tooltip.
2915
3010
  */
2916
- declare function PeakBillingHours({ title, subtitle, tabs, activeTabId, onTabChange, data, seriesByTabId, yAxisDomain, yAxisTicks, infoPopover, renderTooltip, emptyStatePlaceholderProps, customization, }: PeakBillingHoursProps): React$1.ReactElement;
3011
+ declare function PeakBillingHours({ title, subtitle, tabs, activeTabId, onTabChange, data, isLoading, seriesByTabId, chartMargin, yAxisTickDx, yAxisTickStyle, xAxisTickDx, xAxisTickStyle, yAxisDomain, yAxisTicks, infoPopover, renderTooltip, emptyStatePlaceholderProps, customization, }: PeakBillingHoursProps): React$1.ReactElement;
2917
3012
 
2918
3013
  type PeakBillingHoursCustomizationProviderProps = {
2919
3014
  value: PeakBillingHoursCustomization;