@bpfdev/oly-ui 1.0.4 → 1.0.5
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 +945 -604
- package/dist/index.d.ts +945 -604
- package/dist/index.js +7410 -6420
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8633 -7652
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -3,6 +3,7 @@ import { SxProps, Theme, ButtonProps } from '@mui/material';
|
|
|
3
3
|
import * as React$1 from 'react';
|
|
4
4
|
import { ReactNode, ReactElement, CSSProperties } from 'react';
|
|
5
5
|
import { SxProps as SxProps$1, Theme as Theme$1 } from '@mui/material/styles';
|
|
6
|
+
import { TooltipContentProps } from 'recharts';
|
|
6
7
|
import { GridColDef } from '@mui/x-data-grid';
|
|
7
8
|
|
|
8
9
|
interface AddCommentInputProps {
|
|
@@ -101,35 +102,6 @@ interface ButtonWithIconProps extends ButtonProps {
|
|
|
101
102
|
|
|
102
103
|
declare const ButtonWithIcon: ({ size, variant, children, icon, ...props }: ButtonWithIconProps) => react_jsx_runtime.JSX.Element;
|
|
103
104
|
|
|
104
|
-
/** Style props actually used by the header filter (trigger + list popper only; no search / checkboxes / apply row). */
|
|
105
|
-
type WidgetHeaderFilterStyleProps = Pick<FalconMultiSelectStyleProps, 'triggerBg' | 'triggerColor' | 'triggerMinWidth' | 'triggerBorderRadius' | 'triggerSx' | 'popperWidth' | 'popperBorderColor' | 'popperBorderColorDark' | 'popperBg' | 'popperBgDark' | 'popperColor' | 'popperColorDark'> & {
|
|
106
|
-
/**
|
|
107
|
-
* When `true` (default), the dropdown panel tracks the trigger width.
|
|
108
|
-
* When `false`, the panel uses `popperWidth`, or **300** if `popperWidth` is omitted.
|
|
109
|
-
*/
|
|
110
|
-
popperMatchTrigger?: boolean;
|
|
111
|
-
/** Merged into the dropdown `Paper` after base styles (e.g. `minWidth`, `maxWidth`, padding). */
|
|
112
|
-
popperSx?: SxProps<Theme>;
|
|
113
|
-
};
|
|
114
|
-
/** Props for the widget header filter: two-line trigger + simple option list. */
|
|
115
|
-
type WidgetHeaderFilterProps = {
|
|
116
|
-
/** First line of the trigger (full string), e.g. **Select gender** or **Region**. */
|
|
117
|
-
label: string;
|
|
118
|
-
list: FalconMultiSelectOption[];
|
|
119
|
-
data: FalconMultiSelectOption[];
|
|
120
|
-
setData: (value: FalconMultiSelectOption[]) => void;
|
|
121
|
-
} & Partial<WidgetHeaderFilterStyleProps>;
|
|
122
|
-
/** Alias for toolbar props that include this filter. */
|
|
123
|
-
type WidgetHeaderMultiSelectConfig = WidgetHeaderFilterProps;
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Widget header filter styled like the provided mock:
|
|
127
|
-
* two-line trigger + simple dropdown list.
|
|
128
|
-
*/
|
|
129
|
-
declare const WidgetHeaderFilter: ({ label, list, data, setData, triggerBg, triggerColor, triggerMinWidth, triggerBorderRadius, triggerSx, popperMatchTrigger, popperWidth, popperSx, popperBorderColor, popperBorderColorDark, popperBg, popperBgDark, popperColor, popperColorDark, }: WidgetHeaderFilterProps) => react_jsx_runtime.JSX.Element;
|
|
130
|
-
|
|
131
|
-
declare const ChartWidgetHeaderSeparator: () => react_jsx_runtime.JSX.Element;
|
|
132
|
-
|
|
133
105
|
interface ChartWidgetInfoPopoverContent {
|
|
134
106
|
title: string;
|
|
135
107
|
description: string;
|
|
@@ -170,6 +142,110 @@ interface ChartWidgetInfoButtonProps {
|
|
|
170
142
|
|
|
171
143
|
declare const ChartWidgetInfoButton: ({ onClick, ariaLabel, sx, iconColor, buttonBg, buttonHoverBg, iconSize: iconSizeProp, buttonSize: buttonSizeProp, popover, popoverWidth: popoverWidthProp, density, }: ChartWidgetInfoButtonProps) => react_jsx_runtime.JSX.Element;
|
|
172
144
|
|
|
145
|
+
declare const ChartWidgetHeaderSeparator: () => react_jsx_runtime.JSX.Element;
|
|
146
|
+
|
|
147
|
+
type ChartEmptyStateProps = {
|
|
148
|
+
/** Min-height of the container. Defaults to 300. */
|
|
149
|
+
minHeight?: number | string;
|
|
150
|
+
/** Iconify icon name. Set to null to hide. Defaults to 'mdi:chart-box-outline'. */
|
|
151
|
+
icon?: string | null;
|
|
152
|
+
/** Size of the icon in pixels. Defaults to 40. */
|
|
153
|
+
iconSize?: number;
|
|
154
|
+
/** Color of the icon. Defaults to '#9CA3AF'. */
|
|
155
|
+
iconColor?: string;
|
|
156
|
+
/** Primary message. Set to null to hide. Defaults to 'No Data Available'. */
|
|
157
|
+
title?: string | null;
|
|
158
|
+
/** Secondary message. Set to null to hide. Defaults to "There's no data to display in this chart yet". */
|
|
159
|
+
subtitle?: string | null;
|
|
160
|
+
/** Vertical gap between elements. Defaults to 1. */
|
|
161
|
+
gap?: number;
|
|
162
|
+
/** Custom MUI sx styles for the outermost Box container. */
|
|
163
|
+
containerSx?: SxProps$1<Theme$1>;
|
|
164
|
+
/** Custom MUI sx styles for the title Typography. */
|
|
165
|
+
titleSx?: SxProps$1<Theme$1>;
|
|
166
|
+
/** Custom MUI sx styles for the subtitle Typography. */
|
|
167
|
+
subtitleSx?: SxProps$1<Theme$1>;
|
|
168
|
+
/** Font weight for the title. Defaults to 700. */
|
|
169
|
+
titleWeight?: number | string;
|
|
170
|
+
/** Font weight for the subtitle. Defaults to 400. */
|
|
171
|
+
subtitleWeight?: number | string;
|
|
172
|
+
/** Layout orientation. Defaults to 'column'. */
|
|
173
|
+
direction?: 'column' | 'row';
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* A reusable empty state / placeholder component specifically for charts.
|
|
178
|
+
*/
|
|
179
|
+
declare function ChartEmptyState({ minHeight, icon, iconSize, iconColor, title, subtitle, gap, containerSx, titleSx, subtitleSx, titleWeight, subtitleWeight, direction, }: ChartEmptyStateProps): React$1.ReactElement;
|
|
180
|
+
|
|
181
|
+
/** Style props actually used by the header filter (trigger + list popper only; no search / checkboxes / apply row). */
|
|
182
|
+
type WidgetHeaderFilterStyleProps = Pick<FalconMultiSelectStyleProps, 'triggerBg' | 'triggerColor' | 'triggerMinWidth' | 'triggerBorderRadius' | 'triggerSx' | 'popperWidth' | 'popperBorderColor' | 'popperBorderColorDark' | 'popperBg' | 'popperBgDark' | 'popperColor' | 'popperColorDark'> & {
|
|
183
|
+
/**
|
|
184
|
+
* When `true` (default), the dropdown panel tracks the trigger width.
|
|
185
|
+
* When `false`, the panel uses `popperWidth`, or **300** if `popperWidth` is omitted.
|
|
186
|
+
*/
|
|
187
|
+
popperMatchTrigger?: boolean;
|
|
188
|
+
/** Merged into the dropdown `Paper` after base styles (e.g. `minWidth`, `maxWidth`, padding). */
|
|
189
|
+
popperSx?: SxProps<Theme>;
|
|
190
|
+
};
|
|
191
|
+
/** Props for the widget header filter: two-line trigger + simple option list. */
|
|
192
|
+
type WidgetHeaderFilterProps = {
|
|
193
|
+
/** First line of the trigger (full string), e.g. **Select gender** or **Region**. */
|
|
194
|
+
label: string;
|
|
195
|
+
list: FalconMultiSelectOption[];
|
|
196
|
+
/** Optional grouped options for `multiSelect` mode (renders section headers like the design mock). */
|
|
197
|
+
groupedList?: ReadonlyArray<{
|
|
198
|
+
title: string;
|
|
199
|
+
options: FalconMultiSelectOption[];
|
|
200
|
+
}>;
|
|
201
|
+
data: FalconMultiSelectOption[];
|
|
202
|
+
setData: (value: FalconMultiSelectOption[]) => void;
|
|
203
|
+
/** Enables checkbox-based multi select with search + Apply/Cancel row. */
|
|
204
|
+
multiSelect?: boolean;
|
|
205
|
+
/** Search field placeholder for `multiSelect` mode. @default 'Search' */
|
|
206
|
+
searchPlaceholder?: string;
|
|
207
|
+
/** Apply button label for `multiSelect` mode. @default 'Apply' */
|
|
208
|
+
applyLabel?: string;
|
|
209
|
+
/** Cancel button label for `multiSelect` mode. @default 'Cancel' */
|
|
210
|
+
cancelLabel?: string;
|
|
211
|
+
/** Checkbox unchecked color for `multiSelect` mode. @default '#5B5B69' */
|
|
212
|
+
checkboxColor?: string;
|
|
213
|
+
/** Checkbox checked color for `multiSelect` mode. @default '#6750A4' */
|
|
214
|
+
checkboxCheckedColor?: string;
|
|
215
|
+
/** Section header background for grouped rows. @default 'rgba(0,0,0,0.03)' */
|
|
216
|
+
groupHeaderBg?: string;
|
|
217
|
+
/** Section header text color. @default '#111827' */
|
|
218
|
+
groupHeaderColor?: string;
|
|
219
|
+
/** Section header font size. @default 14 */
|
|
220
|
+
groupHeaderFontSize?: number;
|
|
221
|
+
/** Row text color in options list. @default '#111827' */
|
|
222
|
+
optionTextColor?: string;
|
|
223
|
+
/** Search icon color. @default '#49454F' */
|
|
224
|
+
searchIconColor?: string;
|
|
225
|
+
/** Search input text color. @default '#111827' */
|
|
226
|
+
searchTextColor?: string;
|
|
227
|
+
/** Search placeholder color. @default '#6B7280' */
|
|
228
|
+
searchPlaceholderColor?: string;
|
|
229
|
+
/** Apply button background color. @default '#6750A4' */
|
|
230
|
+
applyBg?: string;
|
|
231
|
+
/** Apply button text color. @default '#FFFFFF' */
|
|
232
|
+
applyColor?: string;
|
|
233
|
+
/** Cancel button background color. @default 'transparent' */
|
|
234
|
+
cancelBg?: string;
|
|
235
|
+
/** Cancel button text color. @default '#374151' */
|
|
236
|
+
cancelColor?: string;
|
|
237
|
+
/** Cancel button border color. @default '#9CA3AF' */
|
|
238
|
+
cancelBorderColor?: string;
|
|
239
|
+
} & Partial<WidgetHeaderFilterStyleProps>;
|
|
240
|
+
/** Alias for toolbar props that include this filter. */
|
|
241
|
+
type WidgetHeaderMultiSelectConfig = WidgetHeaderFilterProps;
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Widget header filter styled like the provided mock:
|
|
245
|
+
* two-line trigger + simple dropdown list.
|
|
246
|
+
*/
|
|
247
|
+
declare const WidgetHeaderFilter: ({ label, list, groupedList, data, setData, triggerBg, triggerColor, triggerMinWidth, triggerBorderRadius, triggerSx, popperMatchTrigger, popperWidth, popperSx, popperBorderColor, popperBorderColorDark, popperBg, popperBgDark, popperColor, popperColorDark, multiSelect, searchPlaceholder, applyLabel, cancelLabel, checkboxColor, checkboxCheckedColor, groupHeaderBg, groupHeaderColor, groupHeaderFontSize, optionTextColor, searchIconColor, searchTextColor, searchPlaceholderColor, applyBg, applyColor, cancelBg, cancelColor, cancelBorderColor, }: WidgetHeaderFilterProps) => react_jsx_runtime.JSX.Element;
|
|
248
|
+
|
|
173
249
|
/** One slice inside a row’s bar (e.g. age band). Widths are proportional to `value` within the row. */
|
|
174
250
|
interface RankedBarListSegment {
|
|
175
251
|
id: string;
|
|
@@ -179,6 +255,22 @@ interface RankedBarListSegment {
|
|
|
179
255
|
/** Segment fill; stacks left → right inside the row’s filled width. */
|
|
180
256
|
color: string;
|
|
181
257
|
}
|
|
258
|
+
/** Optional `sx` for the card title, inner list column headers, and each data row’s typographies. */
|
|
259
|
+
interface RankedBarListCustomization {
|
|
260
|
+
/** Merged onto the card **title** `Typography` (`h2`) after built-in styles. */
|
|
261
|
+
titleSx?: SxProps$1<Theme$1>;
|
|
262
|
+
/** Merged onto both **list** column header `Typography` nodes (label + value header). */
|
|
263
|
+
listHeaderSx?: SxProps$1<Theme$1>;
|
|
264
|
+
/** Merged onto each row’s **label** `Typography`. */
|
|
265
|
+
rowTypographySx?: SxProps$1<Theme$1>;
|
|
266
|
+
/** Merged onto each row’s **numeric value** `Typography`. */
|
|
267
|
+
valueTypographySx?: SxProps$1<Theme$1>;
|
|
268
|
+
/**
|
|
269
|
+
* When set, overrides the top-level **`showSortControl`** prop for the list header sort icon
|
|
270
|
+
* next to **`listHeaderLabel`**. Use **`false`** to hide it when wiring styles through **`customization`** only.
|
|
271
|
+
*/
|
|
272
|
+
showSortControl?: boolean;
|
|
273
|
+
}
|
|
182
274
|
interface RankedBarListItem {
|
|
183
275
|
id: string;
|
|
184
276
|
/** Row label (e.g. camera id). */
|
|
@@ -191,6 +283,10 @@ interface RankedBarListItem {
|
|
|
191
283
|
*/
|
|
192
284
|
segments?: RankedBarListSegment[];
|
|
193
285
|
}
|
|
286
|
+
interface RankedBarListSegmentTooltipRenderContext {
|
|
287
|
+
segment: RankedBarListSegment;
|
|
288
|
+
row: RankedBarListItem;
|
|
289
|
+
}
|
|
194
290
|
interface RankedBarListProps {
|
|
195
291
|
/** Card title (e.g. “No. of Alerts Generated by Cameras”). */
|
|
196
292
|
title: string;
|
|
@@ -209,7 +305,10 @@ interface RankedBarListProps {
|
|
|
209
305
|
listHeaderLabel?: string;
|
|
210
306
|
/** Right column header above numeric values. */
|
|
211
307
|
valueColumnHeader?: string;
|
|
212
|
-
/**
|
|
308
|
+
/**
|
|
309
|
+
* Show sort icon next to `listHeaderLabel` (default **true**).
|
|
310
|
+
* Override per render via **`customization.showSortControl`** when that property is set.
|
|
311
|
+
*/
|
|
213
312
|
showSortControl?: boolean;
|
|
214
313
|
/** Called when the sort icon is clicked. */
|
|
215
314
|
onSortClick?: () => void;
|
|
@@ -225,6 +324,11 @@ interface RankedBarListProps {
|
|
|
225
324
|
* Tooltip for a stacked segment. Default: **label**, **" : "**, and **value** (e.g. Teens (13-21 years) : 38).
|
|
226
325
|
*/
|
|
227
326
|
formatSegmentTooltip?: (segment: RankedBarListSegment, row: RankedBarListItem) => string;
|
|
327
|
+
/**
|
|
328
|
+
* Full custom renderer for stacked segment tooltips.
|
|
329
|
+
* When provided, `formatSegmentTooltip` and default card layout are bypassed.
|
|
330
|
+
*/
|
|
331
|
+
renderSegmentTooltip?: (context: RankedBarListSegmentTooltipRenderContext) => ReactNode;
|
|
228
332
|
/**
|
|
229
333
|
* MUI **`sx`** merged onto the segment tooltip **card** (white panel: border, shadow, rounded corners; stacked bars only).
|
|
230
334
|
* The Popper wrapper stays transparent; style the panel here.
|
|
@@ -249,6 +353,7 @@ interface RankedBarListProps {
|
|
|
249
353
|
md?: number | string;
|
|
250
354
|
};
|
|
251
355
|
cardSx?: SxProps$1<Theme$1>;
|
|
356
|
+
emptyStatePlaceholderProps?: ChartEmptyStateProps;
|
|
252
357
|
/** Copy when `items` is empty. Default **No data**. */
|
|
253
358
|
emptyStateText?: string;
|
|
254
359
|
/**
|
|
@@ -262,76 +367,15 @@ interface RankedBarListProps {
|
|
|
262
367
|
* Set **`false`** to preserve manual scroll position.
|
|
263
368
|
*/
|
|
264
369
|
scrollListToTopOnItemsChange?: boolean;
|
|
370
|
+
/** Targeted `sx` for list headers and row text without deep nested selectors. */
|
|
371
|
+
customization?: RankedBarListCustomization;
|
|
265
372
|
}
|
|
266
373
|
|
|
267
374
|
/**
|
|
268
375
|
* Ranked list widget: title row, optional header actions, scrollable list of labels with
|
|
269
376
|
* horizontal bars sized by numeric value (highest value = full bar width).
|
|
270
377
|
*/
|
|
271
|
-
declare const RankedBarList: ({ title, items, sortByValueDescending, maxValue: maxValueProp, listHeaderLabel, valueColumnHeader, showSortControl, onSortClick, headerActions, barColor, barTrackColor, barHeight, formatSegmentTooltip, segmentTooltipSx, listMaxHeight, fullWidth, fillHeight, cardMaxWidth, cardSx,
|
|
272
|
-
|
|
273
|
-
/** How tab segments use horizontal space inside the pill track. */
|
|
274
|
-
type ChartWidgetSegmentedTabLayout = 'intrinsic' | 'equalWidth';
|
|
275
|
-
interface ChartWidgetSegmentedTab {
|
|
276
|
-
id: string;
|
|
277
|
-
label: string;
|
|
278
|
-
}
|
|
279
|
-
interface ChartWidgetSegmentedTabsProps {
|
|
280
|
-
tabs: ChartWidgetSegmentedTab[];
|
|
281
|
-
activeTabId: string;
|
|
282
|
-
onTabChange: (tabId: string) => void;
|
|
283
|
-
/** @default 'Scope' */
|
|
284
|
-
ariaLabel?: string;
|
|
285
|
-
/**
|
|
286
|
-
* When true (default), the track stretches to the parent width.
|
|
287
|
-
* When false, the pill track is only as wide as the tabs (`fit-content`).
|
|
288
|
-
*/
|
|
289
|
-
fullWidth?: boolean;
|
|
290
|
-
/** Tab label `fontSize` (number → px). Default **14**. */
|
|
291
|
-
tabFontSize?: number | string;
|
|
292
|
-
rootSx?: SxProps$1<Theme$1>;
|
|
293
|
-
/** Pill track background. @default `#ECECEC` */
|
|
294
|
-
trackBackgroundColor?: string;
|
|
295
|
-
/** Selected segment background. @default `#fff` */
|
|
296
|
-
activeTabBackground?: string;
|
|
297
|
-
/** Selected segment text color. @default `#2a2a2a` */
|
|
298
|
-
activeTabColor?: string;
|
|
299
|
-
/** Unselected segment text color. @default `#2a2a2a` */
|
|
300
|
-
inactiveTabColor?: string;
|
|
301
|
-
/**
|
|
302
|
-
* Selected segment box shadow. @default light elevation. Use **`'none'`** for flat violet pills.
|
|
303
|
-
*/
|
|
304
|
-
activeTabBoxShadow?: string;
|
|
305
|
-
/**
|
|
306
|
-
* **`intrinsic`** (default): tabs size to their labels and sit at the **start** of the track (empty space
|
|
307
|
-
* may appear on the right when **`fullWidth`** is true). **`equalWidth`**: each tab grows so segments **fill**
|
|
308
|
-
* the track — typical for full-width dashboard bars.
|
|
309
|
-
*/
|
|
310
|
-
tabLayout?: ChartWidgetSegmentedTabLayout;
|
|
311
|
-
/** Selected tab `fontWeight`. @default **700** */
|
|
312
|
-
activeTabFontWeight?: number;
|
|
313
|
-
/** Unselected tab `fontWeight`. @default **600** */
|
|
314
|
-
inactiveTabFontWeight?: number;
|
|
315
|
-
/**
|
|
316
|
-
* Duration (ms) for the sliding selection pill when switching tabs.
|
|
317
|
-
* @default 260
|
|
318
|
-
*/
|
|
319
|
-
tabIndicatorTransitionMs?: number;
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
/**
|
|
323
|
-
* Pill-style segmented control for chart cards (e.g. Walk-in scope tabs, billing analytics).
|
|
324
|
-
*
|
|
325
|
-
* **Defaults** match the classic walk-in look: grey track, **white** selected pill, dark text, light shadow.
|
|
326
|
-
* Override **`trackBackgroundColor`**, **`activeTabBackground`**, **`activeTabColor`**, **`inactiveTabColor`**, and
|
|
327
|
-
* **`activeTabBoxShadow`** for other themes (e.g. violet selected pill + white text, **`activeTabBoxShadow: 'none'`**).
|
|
328
|
-
*
|
|
329
|
-
* Use **`tabLayout="equalWidth"`** when the track is full width and each tab should grow to **fill** the bar;
|
|
330
|
-
* default **`intrinsic`** keeps label-sized pills aligned to the **start** (walk-in style).
|
|
331
|
-
*
|
|
332
|
-
* The active segment uses a **sliding pill** (animated with **`tabIndicatorTransitionMs`**).
|
|
333
|
-
*/
|
|
334
|
-
declare const ChartWidgetSegmentedTabs: ({ tabs, activeTabId, onTabChange, ariaLabel, fullWidth, tabFontSize, rootSx, trackBackgroundColor, activeTabBackground, activeTabColor, inactiveTabColor, activeTabBoxShadow, tabLayout, activeTabFontWeight, inactiveTabFontWeight, tabIndicatorTransitionMs, }: ChartWidgetSegmentedTabsProps) => react_jsx_runtime.JSX.Element;
|
|
378
|
+
declare const RankedBarList: ({ title, items, sortByValueDescending, maxValue: maxValueProp, listHeaderLabel, valueColumnHeader, showSortControl: showSortControlProp, onSortClick, headerActions, barColor, barTrackColor, barHeight, formatSegmentTooltip, renderSegmentTooltip, segmentTooltipSx, listMaxHeight, fullWidth, fillHeight, cardMaxWidth, cardSx, emptyStatePlaceholderProps, isBarWidthAnimationActive, scrollListToTopOnItemsChange, customization, }: RankedBarListProps) => react_jsx_runtime.JSX.Element;
|
|
335
379
|
|
|
336
380
|
/** Partial **ChartWidgetInfoButton** props (popover always comes from **`infoPopover`** on **TimePeriodFilter**). */
|
|
337
381
|
type TimePeriodFilterInfoButtonPresentation = Partial<Omit<ChartWidgetInfoButtonProps, 'popover'>>;
|
|
@@ -393,6 +437,8 @@ type QueueTimeBreakdownCustomization = {
|
|
|
393
437
|
rootCard?: {
|
|
394
438
|
sx?: SxProps$1<Theme$1>;
|
|
395
439
|
elevation?: number;
|
|
440
|
+
/** Merged into the outer shell `CardContent` (padding, gaps). */
|
|
441
|
+
cardContentSx?: SxProps$1<Theme$1>;
|
|
396
442
|
};
|
|
397
443
|
periodFilter?: TimePeriodFilterTheme;
|
|
398
444
|
header?: {
|
|
@@ -404,9 +450,26 @@ type QueueTimeBreakdownCustomization = {
|
|
|
404
450
|
ruleColor?: string;
|
|
405
451
|
labelPercentSx?: SxProps$1<Theme$1>;
|
|
406
452
|
labelRangeSx?: SxProps$1<Theme$1>;
|
|
453
|
+
/**
|
|
454
|
+
* Merged into the flex row under each bar (segment percent + range labels).
|
|
455
|
+
* Prefer this over targeting `.MuiBox-root:nth-of-type(...)` on the card root.
|
|
456
|
+
*/
|
|
457
|
+
labelRowContainerSx?: SxProps$1<Theme$1>;
|
|
407
458
|
tooltip?: QueueTimeRechartsTooltipTheme;
|
|
408
459
|
};
|
|
460
|
+
/**
|
|
461
|
+
* First grid column: headline + stacked bars + data-comparison block.
|
|
462
|
+
* Lets hosts adjust spacing without coupling to internal DOM order.
|
|
463
|
+
*/
|
|
464
|
+
leftColumn?: {
|
|
465
|
+
/** Outer `Stack` (`gap={1}`) wrapping the header block and bar list. */
|
|
466
|
+
columnStackSx?: SxProps$1<Theme$1>;
|
|
467
|
+
/** `Stack` that wraps the mapped `QueueTimeBreakdownStackedBar` list. */
|
|
468
|
+
barRowsStackSx?: SxProps$1<Theme$1>;
|
|
469
|
+
};
|
|
409
470
|
dataComparison?: {
|
|
471
|
+
/** “Data comparison” title line above the donut comparison card. */
|
|
472
|
+
titleSx?: SxProps$1<Theme$1>;
|
|
410
473
|
cardSx?: SxProps$1<Theme$1>;
|
|
411
474
|
dividerSx?: SxProps$1<Theme$1>;
|
|
412
475
|
};
|
|
@@ -442,6 +505,65 @@ type QueueTimeBreakdownCustomization = {
|
|
|
442
505
|
};
|
|
443
506
|
};
|
|
444
507
|
|
|
508
|
+
type QueueTimeAreaSeriesPoint = {
|
|
509
|
+
name: string;
|
|
510
|
+
data: number[];
|
|
511
|
+
};
|
|
512
|
+
type QueueTimeBreakdownAreaProps = {
|
|
513
|
+
series: QueueTimeAreaSeriesPoint[];
|
|
514
|
+
xAxis: string[];
|
|
515
|
+
renderTooltip?: (context: QueueTimeBreakdownAreaTooltipRenderContext) => ReactNode;
|
|
516
|
+
};
|
|
517
|
+
type QueueTimeBreakdownAreaTooltipRenderContext = {
|
|
518
|
+
tooltipProps: TooltipContentProps;
|
|
519
|
+
chartData: Record<string, string | number>[];
|
|
520
|
+
series: QueueTimeAreaSeriesPoint[];
|
|
521
|
+
xAxis: string[];
|
|
522
|
+
};
|
|
523
|
+
declare const QueueTimeBreakdownArea: ({ series, xAxis, renderTooltip, }: QueueTimeBreakdownAreaProps) => React$1.ReactElement;
|
|
524
|
+
|
|
525
|
+
declare function getQueueTimeBreakdownAreaXAxisData(type: QueueTimeChartFilter): string[];
|
|
526
|
+
declare function getQueueTimeBreakdownAreaSeriesData(type: QueueTimeChartFilter): QueueTimeAreaSeriesPoint[];
|
|
527
|
+
|
|
528
|
+
type QueueTimeBreakdownDonutProps = {
|
|
529
|
+
chartFilter: QueueTimeChartFilter;
|
|
530
|
+
averageData: number[];
|
|
531
|
+
LabelName: string;
|
|
532
|
+
labels?: readonly string[];
|
|
533
|
+
renderTooltip?: (context: QueueTimeBreakdownDonutTooltipRenderContext) => ReactNode;
|
|
534
|
+
};
|
|
535
|
+
type PieDatum = {
|
|
536
|
+
name: string;
|
|
537
|
+
value: number;
|
|
538
|
+
};
|
|
539
|
+
type QueueTimeBreakdownDonutTooltipRenderContext = {
|
|
540
|
+
tooltipProps: TooltipContentProps;
|
|
541
|
+
pieData: PieDatum[];
|
|
542
|
+
total: number;
|
|
543
|
+
chartFilter: QueueTimeChartFilter;
|
|
544
|
+
labelName: string;
|
|
545
|
+
};
|
|
546
|
+
declare function QueueTimeBreakdownDonut({ chartFilter, averageData, LabelName, labels, renderTooltip, }: QueueTimeBreakdownDonutProps): React$1.ReactElement;
|
|
547
|
+
|
|
548
|
+
type QueueTimeBreakdownStackedBarProps = {
|
|
549
|
+
row: QueueTimeBreakdownBarRow;
|
|
550
|
+
/** One entry per segment: percent line + range line (aligned under each slice). */
|
|
551
|
+
legendRows: readonly QueueBucketLegendItem[];
|
|
552
|
+
renderTooltip?: (context: QueueTimeBreakdownStackedBarTooltipRenderContext) => ReactNode;
|
|
553
|
+
};
|
|
554
|
+
type QueueTimeBreakdownStackedBarTooltipRenderContext = {
|
|
555
|
+
row: QueueTimeBreakdownBarRow;
|
|
556
|
+
segmentIndex: number;
|
|
557
|
+
percent: number;
|
|
558
|
+
count: number;
|
|
559
|
+
color: string;
|
|
560
|
+
};
|
|
561
|
+
/**
|
|
562
|
+
* Custom horizontal 100% stacked bar — slim pill with rounded ends.
|
|
563
|
+
* Segments are individually hoverable with MUI tooltips.
|
|
564
|
+
*/
|
|
565
|
+
declare function QueueTimeBreakdownStackedBar({ row, legendRows, renderTooltip, }: QueueTimeBreakdownStackedBarProps): React$1.ReactElement;
|
|
566
|
+
|
|
445
567
|
/**
|
|
446
568
|
* Header illustration for the queue breakdown card.
|
|
447
569
|
* Default GIF path (place under app **`public`** or override with **`headerImageSrc`**).
|
|
@@ -497,6 +619,24 @@ type QueueTimeBreakdownProps = {
|
|
|
497
619
|
* **`ChartWidgetInfoButton`**. Standalone **`TimePeriodFilter`** does not inject popover copy implicitly.
|
|
498
620
|
*/
|
|
499
621
|
infoPopover?: ChartWidgetInfoPopoverContent | null;
|
|
622
|
+
/**
|
|
623
|
+
* Info popover shown beside the headline subtitle ("Avg. Queue Time Breakdown...").
|
|
624
|
+
* Defaults to the same content used by `infoPopover` when omitted.
|
|
625
|
+
* Pass `null` to hide the subtitle info button.
|
|
626
|
+
*/
|
|
627
|
+
headlineInfoPopover?: ChartWidgetInfoPopoverContent | null;
|
|
628
|
+
/**
|
|
629
|
+
* Full custom tooltip renderer for the area chart.
|
|
630
|
+
*/
|
|
631
|
+
renderAreaTooltip?: QueueTimeBreakdownAreaProps['renderTooltip'];
|
|
632
|
+
/**
|
|
633
|
+
* Full custom tooltip renderer for both donut charts.
|
|
634
|
+
*/
|
|
635
|
+
renderDonutTooltip?: QueueTimeBreakdownDonutProps['renderTooltip'];
|
|
636
|
+
/**
|
|
637
|
+
* Full custom tooltip renderer for each stacked bar row.
|
|
638
|
+
*/
|
|
639
|
+
renderStackedBarTooltip?: QueueTimeBreakdownStackedBarProps['renderTooltip'];
|
|
500
640
|
/** Visual / layout overrides for all sub-widgets (tooltips, palette, D/W/M/Y control, etc.). */
|
|
501
641
|
customization?: QueueTimeBreakdownCustomization;
|
|
502
642
|
};
|
|
@@ -531,37 +671,233 @@ type TimePeriodFilterProps = {
|
|
|
531
671
|
*/
|
|
532
672
|
declare function TimePeriodFilter({ selectedFilter, onFilterChange, infoPopover, infoButtonProps, sx, }: TimePeriodFilterProps): React$1.ReactElement;
|
|
533
673
|
|
|
674
|
+
/** How tab segments use horizontal space inside the pill track. */
|
|
675
|
+
type ChartWidgetSegmentedTabLayout = 'intrinsic' | 'equalWidth';
|
|
676
|
+
interface ChartWidgetSegmentedTab {
|
|
677
|
+
id: string;
|
|
678
|
+
label: string;
|
|
679
|
+
}
|
|
680
|
+
interface ChartWidgetSegmentedTabsProps {
|
|
681
|
+
tabs: ChartWidgetSegmentedTab[];
|
|
682
|
+
activeTabId: string;
|
|
683
|
+
onTabChange: (tabId: string) => void;
|
|
684
|
+
/** @default 'Scope' */
|
|
685
|
+
ariaLabel?: string;
|
|
686
|
+
/**
|
|
687
|
+
* When true (default), the track stretches to the parent width.
|
|
688
|
+
* When false, the pill track is only as wide as the tabs (`fit-content`).
|
|
689
|
+
*/
|
|
690
|
+
fullWidth?: boolean;
|
|
691
|
+
/** Tab label `fontSize` (number → px). Default **14**. */
|
|
692
|
+
tabFontSize?: number | string;
|
|
693
|
+
rootSx?: SxProps$1<Theme$1>;
|
|
694
|
+
/** Pill track background. @default `#ECECEC` */
|
|
695
|
+
trackBackgroundColor?: string;
|
|
696
|
+
/** Selected segment background. @default `#fff` */
|
|
697
|
+
activeTabBackground?: string;
|
|
698
|
+
/** Selected segment text color. @default `#2a2a2a` */
|
|
699
|
+
activeTabColor?: string;
|
|
700
|
+
/** Unselected segment text color. @default `#2a2a2a` */
|
|
701
|
+
inactiveTabColor?: string;
|
|
702
|
+
/**
|
|
703
|
+
* Selected segment box shadow. @default light elevation. Use **`'none'`** for flat violet pills.
|
|
704
|
+
*/
|
|
705
|
+
activeTabBoxShadow?: string;
|
|
706
|
+
/**
|
|
707
|
+
* **`intrinsic`** (default): tabs size to their labels and sit at the **start** of the track (empty space
|
|
708
|
+
* may appear on the right when **`fullWidth`** is true). **`equalWidth`**: each tab grows so segments **fill**
|
|
709
|
+
* the track — typical for full-width dashboard bars.
|
|
710
|
+
*/
|
|
711
|
+
tabLayout?: ChartWidgetSegmentedTabLayout;
|
|
712
|
+
/** Selected tab `fontWeight`. @default **700** */
|
|
713
|
+
activeTabFontWeight?: number;
|
|
714
|
+
/** Unselected tab `fontWeight`. @default **600** */
|
|
715
|
+
inactiveTabFontWeight?: number;
|
|
716
|
+
/**
|
|
717
|
+
* Duration (ms) for the sliding selection pill when switching tabs.
|
|
718
|
+
* @default 260
|
|
719
|
+
*/
|
|
720
|
+
tabIndicatorTransitionMs?: number;
|
|
721
|
+
}
|
|
722
|
+
|
|
534
723
|
/**
|
|
535
|
-
*
|
|
536
|
-
* generic help — **not** tied to **QueueTimeBreakdown** or any other specific card.
|
|
724
|
+
* Pill-style segmented control for chart cards (e.g. Walk-in scope tabs, billing analytics).
|
|
537
725
|
*
|
|
538
|
-
* **
|
|
539
|
-
*
|
|
726
|
+
* **Defaults** match the classic walk-in look: grey track, **white** selected pill, dark text, light shadow.
|
|
727
|
+
* Override **`trackBackgroundColor`**, **`activeTabBackground`**, **`activeTabColor`**, **`inactiveTabColor`**, and
|
|
728
|
+
* **`activeTabBoxShadow`** for other themes (e.g. violet selected pill + white text, **`activeTabBoxShadow: 'none'`**).
|
|
540
729
|
*
|
|
541
|
-
*
|
|
542
|
-
*
|
|
543
|
-
* - **`description`:** Explains that switching day / week / month / year changes grouping or how the time axis is labelled.
|
|
544
|
-
* - **`helpTitle`:** “How does it help?”
|
|
545
|
-
* - **`helpBullets`:** (1) Align the view with your reporting window; (2) Keep period in sync with other controls on the page.
|
|
730
|
+
* Use **`tabLayout="equalWidth"`** when the track is full width and each tab should grow to **fill** the bar;
|
|
731
|
+
* default **`intrinsic`** keeps label-sized pills aligned to the **start** (walk-in style).
|
|
546
732
|
*
|
|
547
|
-
*
|
|
548
|
-
* **`ChartWidgetInfoPopoverContent`** if you need product-specific wording.
|
|
549
|
-
*/
|
|
550
|
-
declare const TIME_PERIOD_FILTER_INFO_POPOVER: ChartWidgetInfoPopoverContent;
|
|
551
|
-
/**
|
|
552
|
-
* Info copy aligned with the **QueueTimeBreakdown** composite card (header next to D/W/M/Y).
|
|
553
|
-
* **QueueTimeBreakdown** uses this when **`infoPopover`** is omitted on the card.
|
|
554
|
-
* Use **`TIME_PERIOD_FILTER_INFO_POPOVER`** instead when the filter is not on that card.
|
|
555
|
-
*/
|
|
556
|
-
declare const TIME_PERIOD_FILTER_INFO_POPOVER_BREAKDOWN: ChartWidgetInfoPopoverContent;
|
|
557
|
-
/** @deprecated Use {@link TIME_PERIOD_FILTER_INFO_POPOVER}. */
|
|
558
|
-
declare const CHART_PERIOD_FILTER_INFO_POPOVER: ChartWidgetInfoPopoverContent;
|
|
559
|
-
/** @deprecated Use {@link TIME_PERIOD_FILTER_INFO_POPOVER_BREAKDOWN}. */
|
|
560
|
-
declare const QUEUE_TIME_BREAKDOWN_INFO_POPOVER: ChartWidgetInfoPopoverContent;
|
|
561
|
-
/**
|
|
562
|
-
* @deprecated Use {@link TIME_PERIOD_FILTER_INFO_POPOVER_BREAKDOWN}.
|
|
733
|
+
* The active segment uses a **sliding pill** (animated with **`tabIndicatorTransitionMs`**).
|
|
563
734
|
*/
|
|
564
|
-
declare const
|
|
735
|
+
declare const ChartWidgetSegmentedTabs: ({ tabs, activeTabId, onTabChange, ariaLabel, fullWidth, tabFontSize, rootSx, trackBackgroundColor, activeTabBackground, activeTabColor, inactiveTabColor, activeTabBoxShadow, tabLayout, activeTabFontWeight, inactiveTabFontWeight, tabIndicatorTransitionMs, }: ChartWidgetSegmentedTabsProps) => react_jsx_runtime.JSX.Element;
|
|
736
|
+
|
|
737
|
+
/** How the trend / baseline row is laid out under the main value. */
|
|
738
|
+
type KpiTrendLayout = 'row' | 'stacked';
|
|
739
|
+
type KpiTrend = {
|
|
740
|
+
/**
|
|
741
|
+
* **row** (default) — one line: optional %, direction arrow, comparison (caption style).
|
|
742
|
+
* **stacked** — comparison on its **own line** below the value (e.g. schedule cards: value `4 - 5pm`,
|
|
743
|
+
* line below `yesterday is 3 - 4pm` in **comparisonColor**). No %/arrow row.
|
|
744
|
+
*/
|
|
745
|
+
layout?: KpiTrendLayout;
|
|
746
|
+
/**
|
|
747
|
+
* Change vs baseline, e.g. `"82%"`. Only used when **`layout`** is **`row`** (or omitted).
|
|
748
|
+
*/
|
|
749
|
+
percentLabel?: string;
|
|
750
|
+
/**
|
|
751
|
+
* Baseline / comparison copy (required for **`row`**).
|
|
752
|
+
* For **`stacked`**, omit when using **`comparisonPrefix`** + **`comparisonHighlight`** (split line).
|
|
753
|
+
*/
|
|
754
|
+
comparisonText?: string | ReactNode;
|
|
755
|
+
/**
|
|
756
|
+
* **Stacked only:** static copy before the API window (muted). Pair with **`comparisonHighlight`**.
|
|
757
|
+
* Example: `"yesterday is "` (include trailing space if needed).
|
|
758
|
+
*/
|
|
759
|
+
comparisonPrefix?: string;
|
|
760
|
+
/**
|
|
761
|
+
* **Stacked only:** dynamic value from the API (accent color — default violet). Pair with **`comparisonPrefix`**.
|
|
762
|
+
* Example: `"3 - 4pm"`.
|
|
763
|
+
*/
|
|
764
|
+
comparisonHighlight?: string;
|
|
765
|
+
/**
|
|
766
|
+
* Arrow + tint for **`layout: 'row'`**. Ignored when **`layout: 'stacked'`** (pass a dummy if required by callers).
|
|
767
|
+
*/
|
|
768
|
+
direction: 'up' | 'down';
|
|
769
|
+
/**
|
|
770
|
+
* **Stacked:** color for **`comparisonHighlight`** only (split mode), or entire line if you pass a single **`comparisonText`** (default line color is **muted** unless **`comparisonColor`** is set).
|
|
771
|
+
* @default `#5E35B1` for the highlight segment in split mode.
|
|
772
|
+
*/
|
|
773
|
+
comparisonColor?: string;
|
|
774
|
+
/**
|
|
775
|
+
* **Stacked split:** color for **`comparisonPrefix`** (muted segment). CSS string or MUI palette path.
|
|
776
|
+
* @default \`text.secondary\` (theme)
|
|
777
|
+
*/
|
|
778
|
+
comparisonPrefixColor?: string;
|
|
779
|
+
};
|
|
780
|
+
/** Where the optional info button sits in the detailed layout. */
|
|
781
|
+
type KpiStatCardInfoPlacement = 'title' | 'value';
|
|
782
|
+
/** Shape of the decorative icon backdrop (top-right). */
|
|
783
|
+
type KpiStatCardIconBackdropShape = 'rounded' | 'round';
|
|
784
|
+
/** Optional `sx` hooks for the title and primary metric lines (inline + detailed). */
|
|
785
|
+
interface KpiStatCardCustomization {
|
|
786
|
+
/** Merged onto the **title** `Typography` after built-in styles. */
|
|
787
|
+
labelTypographySx?: SxProps$1<Theme$1>;
|
|
788
|
+
/** Merged onto the **value** `Typography` after built-in styles. */
|
|
789
|
+
valueTypographySx?: SxProps$1<Theme$1>;
|
|
790
|
+
/**
|
|
791
|
+
* Merged onto the **trend comparison** line when **`trend.layout`** is **`row`** (caption next to % / arrow).
|
|
792
|
+
*/
|
|
793
|
+
trendComparisonTypographySx?: SxProps$1<Theme$1>;
|
|
794
|
+
/**
|
|
795
|
+
* Merged onto **stacked** trend UI (`trend.layout: 'stacked'`): split prefix/highlight **Typography** nodes,
|
|
796
|
+
* a single **`comparisonText`** line, or the rich **`comparisonText`** `Box`.
|
|
797
|
+
*/
|
|
798
|
+
stackedComparisonTypographySx?: SxProps$1<Theme$1>;
|
|
799
|
+
}
|
|
800
|
+
type KpiStatCardShared = {
|
|
801
|
+
/** Iconify icon id, e.g. `mdi:store` */
|
|
802
|
+
icon: string;
|
|
803
|
+
/** Icon color (CSS). */
|
|
804
|
+
iconColor?: string;
|
|
805
|
+
/** Icon size in px. */
|
|
806
|
+
iconSize?: number;
|
|
807
|
+
title: string;
|
|
808
|
+
value: string | number;
|
|
809
|
+
/**
|
|
810
|
+
* When \`value\` is a finite **number**, animate changes with an internal ease-out tween (no extra
|
|
811
|
+
* dependencies). Set \`false\` to show a static formatted number. Ignored for strings and non-finite numbers.
|
|
812
|
+
* @default true
|
|
813
|
+
*/
|
|
814
|
+
animateValue?: boolean;
|
|
815
|
+
/**
|
|
816
|
+
* Duration for **`animateValue`** (ms).
|
|
817
|
+
* @default 1000
|
|
818
|
+
*/
|
|
819
|
+
valueAnimationDurationMs?: number;
|
|
820
|
+
/**
|
|
821
|
+
* Passed to **`Number.prototype.toLocaleString`** as grouping (thousands separators).
|
|
822
|
+
* @default true
|
|
823
|
+
*/
|
|
824
|
+
valueAnimationUseGrouping?: boolean;
|
|
825
|
+
/**
|
|
826
|
+
* BCP 47 locale for **`toLocaleString`** when animating; omit for the runtime default locale.
|
|
827
|
+
*/
|
|
828
|
+
valueAnimationLocale?: string;
|
|
829
|
+
/**
|
|
830
|
+
* Large primary metric color (inline + detailed).
|
|
831
|
+
* @default '#000000'
|
|
832
|
+
*/
|
|
833
|
+
metricColor?: string;
|
|
834
|
+
/**
|
|
835
|
+
* Minimum height of the root `Paper` (px).
|
|
836
|
+
* @default Inline **96**; detailed **118**.
|
|
837
|
+
*/
|
|
838
|
+
cardMinHeightPx?: number;
|
|
839
|
+
/**
|
|
840
|
+
* Maximum height of the root `Paper` (px). When set, the card uses `overflow: auto` so content can scroll.
|
|
841
|
+
*/
|
|
842
|
+
cardMaxHeightPx?: number;
|
|
843
|
+
/** Extra root `Paper` styles — merges last; use to override borders, shadows, width, etc. */
|
|
844
|
+
sx?: SxProps$1<Theme$1>;
|
|
845
|
+
/** Targeted typography `sx` without fragile parent selectors. */
|
|
846
|
+
customization?: KpiStatCardCustomization;
|
|
847
|
+
};
|
|
848
|
+
type KpiStatCardInlineProps = KpiStatCardShared & {
|
|
849
|
+
variant: 'inline';
|
|
850
|
+
};
|
|
851
|
+
type KpiStatCardDetailedProps = KpiStatCardShared & {
|
|
852
|
+
variant: 'detailed';
|
|
853
|
+
trend: KpiTrend;
|
|
854
|
+
/**
|
|
855
|
+
* Popover for **ChartWidgetInfoButton** (same shape as other chart widgets).
|
|
856
|
+
* Placement is controlled by **`infoPlacement`**.
|
|
857
|
+
*/
|
|
858
|
+
infoPopover?: ChartWidgetInfoPopoverContent;
|
|
859
|
+
/**
|
|
860
|
+
* Where to show **ChartWidgetInfoButton** when **`infoPopover`** is set.
|
|
861
|
+
* @default 'value'
|
|
862
|
+
*/
|
|
863
|
+
infoPlacement?: KpiStatCardInfoPlacement;
|
|
864
|
+
/** Background of the decorative icon container (top-right) */
|
|
865
|
+
iconBackdropColor?: string;
|
|
866
|
+
/**
|
|
867
|
+
* **rounded** — rounded rectangle (squircle). **round** — circle.
|
|
868
|
+
* @default 'rounded'
|
|
869
|
+
*/
|
|
870
|
+
iconBackdropShape?: KpiStatCardIconBackdropShape;
|
|
871
|
+
/** Color for trend % + arrow (defaults by direction) */
|
|
872
|
+
trendColor?: string;
|
|
873
|
+
/** Optional slot above title (e.g. filter) */
|
|
874
|
+
slotHeader?: ReactNode;
|
|
875
|
+
/**
|
|
876
|
+
* Title line color (CSS or MUI palette path e.g. \`text.secondary\`).
|
|
877
|
+
* @default \`text.secondary\`
|
|
878
|
+
*/
|
|
879
|
+
titleColor?: string;
|
|
880
|
+
/** Card width in px. @default 247 */
|
|
881
|
+
cardWidthPx?: number;
|
|
882
|
+
/** Root padding in px. @default 12 */
|
|
883
|
+
cardPaddingPx?: number;
|
|
884
|
+
/** Vertical gap between title / value / trend blocks (px). @default 8 */
|
|
885
|
+
blockGapPx?: number;
|
|
886
|
+
/** Decorative icon badge width and height (px). @default 48 */
|
|
887
|
+
iconBackdropSizePx?: number;
|
|
888
|
+
/** Row trend: font size for % and comparison text (px). @default 12 */
|
|
889
|
+
rowTrendFontSizePx?: number;
|
|
890
|
+
/** Row trend: direction arrow icon size (px). @default 16 */
|
|
891
|
+
rowTrendIconSizePx?: number;
|
|
892
|
+
/**
|
|
893
|
+
* Row trend: comparison string color (CSS or palette key).
|
|
894
|
+
* @default \`text.secondary\`
|
|
895
|
+
*/
|
|
896
|
+
rowTrendComparisonColor?: string;
|
|
897
|
+
};
|
|
898
|
+
type KpiStatCardProps = KpiStatCardInlineProps | KpiStatCardDetailedProps;
|
|
899
|
+
|
|
900
|
+
declare const KpiStatCard: (props: KpiStatCardProps) => react_jsx_runtime.JSX.Element;
|
|
565
901
|
|
|
566
902
|
interface FalconButtonProps extends ButtonProps {
|
|
567
903
|
loading?: boolean;
|
|
@@ -664,6 +1000,62 @@ interface FalconTicketFilterProps {
|
|
|
664
1000
|
|
|
665
1001
|
declare const FalconTicketFilter: ({ children, label, open: controlledOpen, onOpenChange, }: FalconTicketFilterProps) => react_jsx_runtime.JSX.Element;
|
|
666
1002
|
|
|
1003
|
+
/**
|
|
1004
|
+
* Ready-made **`ChartWidgetInfoPopoverContent`** for **TimePeriodFilter** (D / W / M / Y) when you want
|
|
1005
|
+
* generic help — **not** tied to **QueueTimeBreakdown** or any other specific card.
|
|
1006
|
+
*
|
|
1007
|
+
* **Use this when:** you show the period control next to charts or KPIs on any page and need a short
|
|
1008
|
+
* explanation of what the control does and why it matters, without duplicating copy in your app.
|
|
1009
|
+
*
|
|
1010
|
+
* **What it contains (for authors / Storybook):**
|
|
1011
|
+
* - **`title`:** “Time period” — names the control.
|
|
1012
|
+
* - **`description`:** Explains that switching day / week / month / year changes grouping or how the time axis is labelled.
|
|
1013
|
+
* - **`helpTitle`:** “How does it help?”
|
|
1014
|
+
* - **`helpBullets`:** (1) Align the view with your reporting window; (2) Keep period in sync with other controls on the page.
|
|
1015
|
+
*
|
|
1016
|
+
* Pass as **`infoPopover={TIME_PERIOD_FILTER_INFO_POPOVER}`** on **TimePeriodFilter**, or use your own
|
|
1017
|
+
* **`ChartWidgetInfoPopoverContent`** if you need product-specific wording.
|
|
1018
|
+
*/
|
|
1019
|
+
declare const TIME_PERIOD_FILTER_INFO_POPOVER: ChartWidgetInfoPopoverContent;
|
|
1020
|
+
/**
|
|
1021
|
+
* Info copy aligned with the **QueueTimeBreakdown** composite card (header next to D/W/M/Y).
|
|
1022
|
+
* **QueueTimeBreakdown** uses this when **`infoPopover`** is omitted on the card.
|
|
1023
|
+
* Use **`TIME_PERIOD_FILTER_INFO_POPOVER`** instead when the filter is not on that card.
|
|
1024
|
+
*/
|
|
1025
|
+
declare const TIME_PERIOD_FILTER_INFO_POPOVER_BREAKDOWN: ChartWidgetInfoPopoverContent;
|
|
1026
|
+
/** @deprecated Use {@link TIME_PERIOD_FILTER_INFO_POPOVER}. */
|
|
1027
|
+
declare const CHART_PERIOD_FILTER_INFO_POPOVER: ChartWidgetInfoPopoverContent;
|
|
1028
|
+
/** @deprecated Use {@link TIME_PERIOD_FILTER_INFO_POPOVER_BREAKDOWN}. */
|
|
1029
|
+
declare const QUEUE_TIME_BREAKDOWN_INFO_POPOVER: ChartWidgetInfoPopoverContent;
|
|
1030
|
+
/**
|
|
1031
|
+
* @deprecated Use {@link TIME_PERIOD_FILTER_INFO_POPOVER_BREAKDOWN}.
|
|
1032
|
+
*/
|
|
1033
|
+
declare const DEFAULT_QUEUE_TIME_BREAKDOWN_INFO_POPOVER: ChartWidgetInfoPopoverContent;
|
|
1034
|
+
|
|
1035
|
+
interface HeatMapLegendItem {
|
|
1036
|
+
label: string;
|
|
1037
|
+
color: string;
|
|
1038
|
+
}
|
|
1039
|
+
interface HeatMapChartLegendProps {
|
|
1040
|
+
title: string;
|
|
1041
|
+
items: HeatMapLegendItem[];
|
|
1042
|
+
gradientId: string;
|
|
1043
|
+
gradientStops: {
|
|
1044
|
+
offset: string;
|
|
1045
|
+
color: string;
|
|
1046
|
+
}[];
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1049
|
+
declare const HeatMapChartLegend: ({ title, items, gradientId, gradientStops, }: HeatMapChartLegendProps) => react_jsx_runtime.JSX.Element;
|
|
1050
|
+
|
|
1051
|
+
interface ProgressBarNumberProps {
|
|
1052
|
+
number: number;
|
|
1053
|
+
progress: 0 | 50 | 100;
|
|
1054
|
+
numColor: string;
|
|
1055
|
+
}
|
|
1056
|
+
|
|
1057
|
+
declare const ProgressBarNumber: ({ number, progress, numColor, }: ProgressBarNumberProps) => react_jsx_runtime.JSX.Element;
|
|
1058
|
+
|
|
667
1059
|
/** Shared max-width rules for chart cards (WalkinAnalysis-style). */
|
|
668
1060
|
type ChartCardMaxWidth = number | string | {
|
|
669
1061
|
xs?: number | string;
|
|
@@ -727,6 +1119,11 @@ interface FootfallByAgeGroupsSeries {
|
|
|
727
1119
|
type FootfallByAgeGroupsRow = {
|
|
728
1120
|
name: string;
|
|
729
1121
|
} & Record<string, string | number>;
|
|
1122
|
+
interface FootfallByAgeGroupsTooltipRenderContext {
|
|
1123
|
+
tooltipProps: TooltipContentProps;
|
|
1124
|
+
rows: FootfallByAgeGroupsRow[];
|
|
1125
|
+
series: FootfallByAgeGroupsSeries[];
|
|
1126
|
+
}
|
|
730
1127
|
interface FootfallByAgeGroupsProps {
|
|
731
1128
|
/** Card heading — **centered**; \`headerActions\` (if any) sit on the right without shifting it. */
|
|
732
1129
|
title: string;
|
|
@@ -785,290 +1182,26 @@ interface FootfallByAgeGroupsProps {
|
|
|
785
1182
|
tooltipOverallLabel?: string;
|
|
786
1183
|
/** Merge over default tooltip inline styles. */
|
|
787
1184
|
tooltipStyles?: FootfallByAgeGroupsTooltipStyles;
|
|
1185
|
+
/**
|
|
1186
|
+
* Full custom tooltip renderer. When provided, default tooltip layout is skipped.
|
|
1187
|
+
*/
|
|
1188
|
+
renderTooltip?: (context: FootfallByAgeGroupsTooltipRenderContext) => ReactNode;
|
|
788
1189
|
/** Color key legend above the plot (from \`series\`). Default: \`true\`. */
|
|
789
1190
|
showLegend?: boolean;
|
|
790
1191
|
/** Recharts \`BarChart\` margin; partial merge with defaults. */
|
|
791
1192
|
chartMargin?: FootfallByAgeGroupsChartMargin;
|
|
792
1193
|
/** Grid / axis / bar-top label colors. */
|
|
793
1194
|
chartColors?: FootfallByAgeGroupsChartColors;
|
|
1195
|
+
emptyStatePlaceholderProps?: ChartEmptyStateProps;
|
|
794
1196
|
/** Opacity for non-hovered stacks while another bar is hovered. Default: \`0.35\` */
|
|
795
1197
|
dimmedStackOpacity?: number;
|
|
796
1198
|
/** Recharts \`stackId\` for stacked \`Bar\`s. Default: \`footfall-by-age-groups\` */
|
|
797
|
-
barStackId?: string;
|
|
798
|
-
/** Copy when \`data\` is empty. Default: \`No data\` */
|
|
799
|
-
emptyStateText?: string;
|
|
800
|
-
}
|
|
801
|
-
|
|
802
|
-
declare function FootfallByAgeGroups({ title, data, series, chartHeight, minWidthPerCategory, horizontalScroll: horizontalScrollProp, maxBarSize: maxBarSizeProp, cardMaxWidth, cardSx, titleRowSx, titleSx, dividerSx, legendRowSx, legendItemSx, legendSwatchSx, legendLabelSx, chartScrollAreaSx, stackSx, emptyStateSx, emptyStateTextSx, headerActions, tooltipCategoryLabel, tooltipOverallLabel, tooltipStyles, showLegend, chartMargin: chartMarginProp, chartColors: chartColorsProp, dimmedStackOpacity, barStackId, emptyStateText, }: FootfallByAgeGroupsProps): react_jsx_runtime.JSX.Element;
|
|
803
|
-
|
|
804
|
-
interface HeatMapLegendItem {
|
|
805
|
-
label: string;
|
|
806
|
-
color: string;
|
|
807
|
-
}
|
|
808
|
-
interface HeatMapChartLegendProps {
|
|
809
|
-
title: string;
|
|
810
|
-
items: HeatMapLegendItem[];
|
|
811
|
-
gradientId: string;
|
|
812
|
-
gradientStops: {
|
|
813
|
-
offset: string;
|
|
814
|
-
color: string;
|
|
815
|
-
}[];
|
|
816
|
-
}
|
|
817
|
-
|
|
818
|
-
declare const HeatMapChartLegend: ({ title, items, gradientId, gradientStops, }: HeatMapChartLegendProps) => react_jsx_runtime.JSX.Element;
|
|
819
|
-
|
|
820
|
-
/** How the trend / baseline row is laid out under the main value. */
|
|
821
|
-
type KpiTrendLayout = 'row' | 'stacked';
|
|
822
|
-
type KpiTrend = {
|
|
823
|
-
/**
|
|
824
|
-
* **row** (default) — one line: optional %, direction arrow, comparison (caption style).
|
|
825
|
-
* **stacked** — comparison on its **own line** below the value (e.g. schedule cards: value `4 - 5pm`,
|
|
826
|
-
* line below `yesterday is 3 - 4pm` in **comparisonColor**). No %/arrow row.
|
|
827
|
-
*/
|
|
828
|
-
layout?: KpiTrendLayout;
|
|
829
|
-
/**
|
|
830
|
-
* Change vs baseline, e.g. `"82%"`. Only used when **`layout`** is **`row`** (or omitted).
|
|
831
|
-
*/
|
|
832
|
-
percentLabel?: string;
|
|
833
|
-
/**
|
|
834
|
-
* Baseline / comparison copy (required for **`row`**).
|
|
835
|
-
* For **`stacked`**, omit when using **`comparisonPrefix`** + **`comparisonHighlight`** (split line).
|
|
836
|
-
*/
|
|
837
|
-
comparisonText?: string | ReactNode;
|
|
838
|
-
/**
|
|
839
|
-
* **Stacked only:** static copy before the API window (muted). Pair with **`comparisonHighlight`**.
|
|
840
|
-
* Example: `"yesterday is "` (include trailing space if needed).
|
|
841
|
-
*/
|
|
842
|
-
comparisonPrefix?: string;
|
|
843
|
-
/**
|
|
844
|
-
* **Stacked only:** dynamic value from the API (accent color — default violet). Pair with **`comparisonPrefix`**.
|
|
845
|
-
* Example: `"3 - 4pm"`.
|
|
846
|
-
*/
|
|
847
|
-
comparisonHighlight?: string;
|
|
848
|
-
/**
|
|
849
|
-
* Arrow + tint for **`layout: 'row'`**. Ignored when **`layout: 'stacked'`** (pass a dummy if required by callers).
|
|
850
|
-
*/
|
|
851
|
-
direction: 'up' | 'down';
|
|
852
|
-
/**
|
|
853
|
-
* **Stacked:** color for **`comparisonHighlight`** only (split mode), or entire line if you pass a single **`comparisonText`** (default line color is **muted** unless **`comparisonColor`** is set).
|
|
854
|
-
* @default `#5E35B1` for the highlight segment in split mode.
|
|
855
|
-
*/
|
|
856
|
-
comparisonColor?: string;
|
|
857
|
-
/**
|
|
858
|
-
* **Stacked split:** color for **`comparisonPrefix`** (muted segment). CSS string or MUI palette path.
|
|
859
|
-
* @default \`text.secondary\` (theme)
|
|
860
|
-
*/
|
|
861
|
-
comparisonPrefixColor?: string;
|
|
862
|
-
};
|
|
863
|
-
/** Where the optional info button sits in the detailed layout. */
|
|
864
|
-
type KpiStatCardInfoPlacement = 'title' | 'value';
|
|
865
|
-
/** Shape of the decorative icon backdrop (top-right). */
|
|
866
|
-
type KpiStatCardIconBackdropShape = 'rounded' | 'round';
|
|
867
|
-
type KpiStatCardShared = {
|
|
868
|
-
/** Iconify icon id, e.g. `mdi:store` */
|
|
869
|
-
icon: string;
|
|
870
|
-
/** Icon color (CSS). */
|
|
871
|
-
iconColor?: string;
|
|
872
|
-
/** Icon size in px. */
|
|
873
|
-
iconSize?: number;
|
|
874
|
-
title: string;
|
|
875
|
-
value: string | number;
|
|
876
|
-
/**
|
|
877
|
-
* When \`value\` is a finite **number**, animate changes with an internal ease-out tween (no extra
|
|
878
|
-
* dependencies). Set \`false\` to show a static formatted number. Ignored for strings and non-finite numbers.
|
|
879
|
-
* @default true
|
|
880
|
-
*/
|
|
881
|
-
animateValue?: boolean;
|
|
882
|
-
/**
|
|
883
|
-
* Duration for **`animateValue`** (ms).
|
|
884
|
-
* @default 1000
|
|
885
|
-
*/
|
|
886
|
-
valueAnimationDurationMs?: number;
|
|
887
|
-
/**
|
|
888
|
-
* Passed to **`Number.prototype.toLocaleString`** as grouping (thousands separators).
|
|
889
|
-
* @default true
|
|
890
|
-
*/
|
|
891
|
-
valueAnimationUseGrouping?: boolean;
|
|
892
|
-
/**
|
|
893
|
-
* BCP 47 locale for **`toLocaleString`** when animating; omit for the runtime default locale.
|
|
894
|
-
*/
|
|
895
|
-
valueAnimationLocale?: string;
|
|
896
|
-
/**
|
|
897
|
-
* Large primary metric color (inline + detailed).
|
|
898
|
-
* @default '#000000'
|
|
899
|
-
*/
|
|
900
|
-
metricColor?: string;
|
|
901
|
-
/**
|
|
902
|
-
* Minimum height of the root `Paper` (px).
|
|
903
|
-
* @default Inline **96**; detailed **118**.
|
|
904
|
-
*/
|
|
905
|
-
cardMinHeightPx?: number;
|
|
906
|
-
/**
|
|
907
|
-
* Maximum height of the root `Paper` (px). When set, the card uses `overflow: auto` so content can scroll.
|
|
908
|
-
*/
|
|
909
|
-
cardMaxHeightPx?: number;
|
|
910
|
-
/** Extra root `Paper` styles — merges last; use to override borders, shadows, width, etc. */
|
|
911
|
-
sx?: SxProps$1<Theme$1>;
|
|
912
|
-
};
|
|
913
|
-
type KpiStatCardInlineProps = KpiStatCardShared & {
|
|
914
|
-
variant: 'inline';
|
|
915
|
-
};
|
|
916
|
-
type KpiStatCardDetailedProps = KpiStatCardShared & {
|
|
917
|
-
variant: 'detailed';
|
|
918
|
-
trend: KpiTrend;
|
|
919
|
-
/**
|
|
920
|
-
* Popover for **ChartWidgetInfoButton** (same shape as other chart widgets).
|
|
921
|
-
* Placement is controlled by **`infoPlacement`**.
|
|
922
|
-
*/
|
|
923
|
-
infoPopover?: ChartWidgetInfoPopoverContent;
|
|
924
|
-
/**
|
|
925
|
-
* Where to show **ChartWidgetInfoButton** when **`infoPopover`** is set.
|
|
926
|
-
* @default 'value'
|
|
927
|
-
*/
|
|
928
|
-
infoPlacement?: KpiStatCardInfoPlacement;
|
|
929
|
-
/** Background of the decorative icon container (top-right) */
|
|
930
|
-
iconBackdropColor?: string;
|
|
931
|
-
/**
|
|
932
|
-
* **rounded** — rounded rectangle (squircle). **round** — circle.
|
|
933
|
-
* @default 'rounded'
|
|
934
|
-
*/
|
|
935
|
-
iconBackdropShape?: KpiStatCardIconBackdropShape;
|
|
936
|
-
/** Color for trend % + arrow (defaults by direction) */
|
|
937
|
-
trendColor?: string;
|
|
938
|
-
/** Optional slot above title (e.g. filter) */
|
|
939
|
-
slotHeader?: ReactNode;
|
|
940
|
-
/**
|
|
941
|
-
* Title line color (CSS or MUI palette path e.g. \`text.secondary\`).
|
|
942
|
-
* @default \`text.secondary\`
|
|
943
|
-
*/
|
|
944
|
-
titleColor?: string;
|
|
945
|
-
/** Card width in px. @default 247 */
|
|
946
|
-
cardWidthPx?: number;
|
|
947
|
-
/** Root padding in px. @default 12 */
|
|
948
|
-
cardPaddingPx?: number;
|
|
949
|
-
/** Vertical gap between title / value / trend blocks (px). @default 8 */
|
|
950
|
-
blockGapPx?: number;
|
|
951
|
-
/** Decorative icon badge width and height (px). @default 48 */
|
|
952
|
-
iconBackdropSizePx?: number;
|
|
953
|
-
/** Row trend: font size for % and comparison text (px). @default 12 */
|
|
954
|
-
rowTrendFontSizePx?: number;
|
|
955
|
-
/** Row trend: direction arrow icon size (px). @default 16 */
|
|
956
|
-
rowTrendIconSizePx?: number;
|
|
957
|
-
/**
|
|
958
|
-
* Row trend: comparison string color (CSS or palette key).
|
|
959
|
-
* @default \`text.secondary\`
|
|
960
|
-
*/
|
|
961
|
-
rowTrendComparisonColor?: string;
|
|
962
|
-
};
|
|
963
|
-
type KpiStatCardProps = KpiStatCardInlineProps | KpiStatCardDetailedProps;
|
|
964
|
-
|
|
965
|
-
declare const KpiStatCard: (props: KpiStatCardProps) => react_jsx_runtime.JSX.Element;
|
|
966
|
-
|
|
967
|
-
interface ProgressBarNumberProps {
|
|
968
|
-
number: number;
|
|
969
|
-
progress: 0 | 50 | 100;
|
|
970
|
-
numColor: string;
|
|
971
|
-
}
|
|
972
|
-
|
|
973
|
-
declare const ProgressBarNumber: ({ number, progress, numColor, }: ProgressBarNumberProps) => react_jsx_runtime.JSX.Element;
|
|
974
|
-
|
|
975
|
-
/** Pie diameter: fixed px, or per-breakpoint (`xs` / `sm` / `md` match MUI breakpoints). */
|
|
976
|
-
type WalkinAnalysisPieSize = number | {
|
|
977
|
-
xs?: number;
|
|
978
|
-
sm?: number;
|
|
979
|
-
md?: number;
|
|
980
|
-
};
|
|
981
|
-
/**
|
|
982
|
-
* Card `max-width`: a number is pixels on all breakpoints; a string is any CSS length;
|
|
983
|
-
* an object sets `maxWidth` per breakpoint (numbers become px). Omitted keys use `100%` (xs) and `640` (sm).
|
|
984
|
-
*/
|
|
985
|
-
type WalkinAnalysisCardMaxWidth = number | string | {
|
|
986
|
-
xs?: number | string;
|
|
987
|
-
sm?: number | string;
|
|
988
|
-
md?: number | string;
|
|
989
|
-
};
|
|
990
|
-
/** Same shape as `ChartWidgetSegmentedTab`; rendered with `ChartWidgetSegmentedTabs` inside WalkinAnalysis. */
|
|
991
|
-
interface WalkinAnalysisTab {
|
|
992
|
-
id: string;
|
|
993
|
-
label: string;
|
|
994
|
-
}
|
|
995
|
-
/**
|
|
996
|
-
* Optional `fontSize` overrides (number → px). Omitted keys keep the built-in defaults.
|
|
997
|
-
*/
|
|
998
|
-
interface WalkinAnalysisTypography {
|
|
999
|
-
title?: number | string;
|
|
1000
|
-
tabs?: number | string;
|
|
1001
|
-
piePercent?: number | string;
|
|
1002
|
-
legendLabel?: number | string;
|
|
1003
|
-
legendValue?: number | string;
|
|
1004
|
-
tooltipTitle?: number | string;
|
|
1005
|
-
tooltipValue?: number | string;
|
|
1006
|
-
emptyState?: number | string;
|
|
1007
|
-
}
|
|
1008
|
-
interface WalkinAnalysisSlice {
|
|
1009
|
-
id: string;
|
|
1010
|
-
/** Legend title and accessible pie summary (e.g. “Individual Walk-ins”). */
|
|
1011
|
-
label: string;
|
|
1012
|
-
count: number;
|
|
1013
|
-
/** Segment fill in the pie and legend swatch color. */
|
|
1014
|
-
color: string;
|
|
1015
|
-
/** Legend title text color (default `#424242`). */
|
|
1016
|
-
legendLabelColor?: string;
|
|
1017
|
-
/** Legend count / percentage line color (default `#333`). */
|
|
1018
|
-
legendValueColor?: string;
|
|
1019
|
-
/** Fill for the percentage label inside the pie slice (default `#fff`). */
|
|
1020
|
-
segmentPercentColor?: string;
|
|
1021
|
-
/**
|
|
1022
|
-
* Optional control after the legend count line — e.g. **`<ChartWidgetInfoButton popover={…} />`**
|
|
1023
|
-
* from `@bpfdev/oly-ui` so legend info matches the header info pattern.
|
|
1024
|
-
*/
|
|
1025
|
-
legendInfo?: ReactNode;
|
|
1026
|
-
}
|
|
1027
|
-
interface WalkinAnalysisProps {
|
|
1028
|
-
title: string;
|
|
1029
|
-
tabs: WalkinAnalysisTab[];
|
|
1030
|
-
activeTabId: string;
|
|
1031
|
-
onTabChange: (tabId: string) => void;
|
|
1032
|
-
/**
|
|
1033
|
-
* Omit or `true`: scope tabs span the card width (default — forwarded as **ChartWidgetSegmentedTabs** `fullWidth`).
|
|
1034
|
-
* `false`: pill track only as wide as the labels.
|
|
1035
|
-
*/
|
|
1036
|
-
segmentedTabsFullWidth?: boolean;
|
|
1037
|
-
/**
|
|
1038
|
-
* Merged onto **ChartWidgetSegmentedTabs** `rootSx` after `fullWidth` width rules — use for `width`, `maxWidth`, alignment, etc.
|
|
1039
|
-
*/
|
|
1040
|
-
segmentedTabsSx?: SxProps$1<Theme$1>;
|
|
1041
|
-
/** Each item’s `label`, `count`, and `color` drive pie segments and legend; optional colors override legend / in-slice % text. */
|
|
1042
|
-
slices: WalkinAnalysisSlice[];
|
|
1043
|
-
/** Right side of the title row: compose `WidgetHeaderFilter`, `ChartWidgetHeaderSeparator`, `ChartWidgetInfoButton`, or custom nodes. */
|
|
1044
|
-
headerActions?: ReactNode;
|
|
1045
|
-
cardSx?: SxProps$1<Theme$1>;
|
|
1046
|
-
/**
|
|
1047
|
-
* Card maximum width. Defaults to full width on xs and 640px from sm up.
|
|
1048
|
-
* Use `cardSx` for further layout overrides (it merges after this).
|
|
1049
|
-
*/
|
|
1050
|
-
cardMaxWidth?: WalkinAnalysisCardMaxWidth;
|
|
1051
|
-
/**
|
|
1052
|
-
* Pie diameter (px). Use a number for the same size on all screens.
|
|
1053
|
-
* Use an object to set sizes at `xs`, `sm`, and `md` (unset keys use 180, 220, 260).
|
|
1054
|
-
* Omit for built-in responsive sizing across breakpoints.
|
|
1055
|
-
*/
|
|
1056
|
-
pieSize?: WalkinAnalysisPieSize;
|
|
1057
|
-
/** Per-region `fontSize` overrides (numbers are px). */
|
|
1058
|
-
typography?: WalkinAnalysisTypography;
|
|
1059
|
-
/**
|
|
1060
|
-
* Recharts **`Pie`** animation. Defaults **true** / **400** ms.
|
|
1061
|
-
* There is no horizontal plot scroll on this card (pie layout); only animation applies.
|
|
1062
|
-
*/
|
|
1063
|
-
isChartAnimationActive?: boolean;
|
|
1064
|
-
chartAnimationDuration?: number;
|
|
1199
|
+
barStackId?: string;
|
|
1200
|
+
/** Copy when \`data\` is empty. Default: \`No data\` */
|
|
1201
|
+
emptyStateText?: string;
|
|
1065
1202
|
}
|
|
1066
1203
|
|
|
1067
|
-
|
|
1068
|
-
* Walk-in style analysis card: title row (optional `headerActions`), tabs, Recharts pie, legend.
|
|
1069
|
-
* Pie and legend are driven by `slices` (`label`, `count`, `color`, optional legend / segment % colors).
|
|
1070
|
-
*/
|
|
1071
|
-
declare const WalkinAnalysis: ({ title, tabs, activeTabId, onTabChange, segmentedTabsFullWidth, segmentedTabsSx, slices, headerActions, cardSx, cardMaxWidth, pieSize, typography, isChartAnimationActive, chartAnimationDuration, }: WalkinAnalysisProps) => react_jsx_runtime.JSX.Element;
|
|
1204
|
+
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, }: FootfallByAgeGroupsProps): react_jsx_runtime.JSX.Element;
|
|
1072
1205
|
|
|
1073
1206
|
/** Optional inline styles merged over tooltip defaults (undefined keys keep defaults). */
|
|
1074
1207
|
interface FootfallByGenderTooltipStyles {
|
|
@@ -1112,6 +1245,10 @@ interface FootfallByGenderRow {
|
|
|
1112
1245
|
male: number;
|
|
1113
1246
|
female: number;
|
|
1114
1247
|
}
|
|
1248
|
+
interface FootfallByGenderTooltipRenderContext {
|
|
1249
|
+
tooltipProps: TooltipContentProps;
|
|
1250
|
+
rows: FootfallByGenderRow[];
|
|
1251
|
+
}
|
|
1115
1252
|
interface FootfallByGenderProps {
|
|
1116
1253
|
/** Card heading — **centered**; \`headerActions\` (if any) sit on the right without shifting it. */
|
|
1117
1254
|
title: string;
|
|
@@ -1191,10 +1328,15 @@ interface FootfallByGenderProps {
|
|
|
1191
1328
|
tooltipOverallLabel?: string;
|
|
1192
1329
|
/** Merge over default tooltip inline styles. */
|
|
1193
1330
|
tooltipStyles?: FootfallByGenderTooltipStyles;
|
|
1331
|
+
/**
|
|
1332
|
+
* Full custom tooltip renderer. When provided, default tooltip layout is skipped.
|
|
1333
|
+
*/
|
|
1334
|
+
renderTooltip?: (context: FootfallByGenderTooltipRenderContext) => ReactNode;
|
|
1194
1335
|
/** Recharts \`BarChart\` margin; partial merge after defaults (your values override). */
|
|
1195
1336
|
chartMargin?: FootfallByGenderChartMargin;
|
|
1196
1337
|
/** Grid / axis / bar-top label colors. */
|
|
1197
1338
|
chartColors?: FootfallByGenderChartColors;
|
|
1339
|
+
emptyStatePlaceholderProps?: ChartEmptyStateProps;
|
|
1198
1340
|
/**
|
|
1199
1341
|
* Y-axis tick formatter. Default: compact \`k\` suffix for thousands.
|
|
1200
1342
|
*/
|
|
@@ -1206,7 +1348,7 @@ interface FootfallByGenderProps {
|
|
|
1206
1348
|
/**
|
|
1207
1349
|
* Grouped bar chart: two series (male / female) per category, with hover dimming and a custom tooltip.
|
|
1208
1350
|
*/
|
|
1209
|
-
declare function FootfallByGender({ title, data, seriesLabels: seriesLabelsProp, seriesColors: seriesColorsProp, chartHeight, minWidthPerCategory, horizontalScroll: horizontalScrollProp, maxBarSize: maxBarSizeProp, barGap, showLegend, showBarValueLabels, dimmedBarOpacity, hoveredBarOpacity, cardMaxWidth, cardSx, titleRowSx, titleSx, dividerSx, legendOverlaySx, legendItemSx, legendSwatchSx, legendLabelSx, chartViewportSx, chartScrollAreaSx, stackSx, emptyStateSx,
|
|
1351
|
+
declare function FootfallByGender({ title, data, seriesLabels: seriesLabelsProp, seriesColors: seriesColorsProp, chartHeight, minWidthPerCategory, horizontalScroll: horizontalScrollProp, maxBarSize: maxBarSizeProp, barGap, showLegend, showBarValueLabels, 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, }: FootfallByGenderProps): react_jsx_runtime.JSX.Element;
|
|
1210
1352
|
|
|
1211
1353
|
interface PasserbyConversionTooltipStyles {
|
|
1212
1354
|
container?: CSSProperties;
|
|
@@ -1248,6 +1390,11 @@ interface PasserbyConversionRow {
|
|
|
1248
1390
|
*/
|
|
1249
1391
|
conversion: number | null;
|
|
1250
1392
|
}
|
|
1393
|
+
interface PasserbyConversionTooltipRenderContext {
|
|
1394
|
+
tooltipProps: TooltipContentProps;
|
|
1395
|
+
rows: PasserbyConversionRow[];
|
|
1396
|
+
showConversionLine: boolean;
|
|
1397
|
+
}
|
|
1251
1398
|
interface PasserbyConversionProps {
|
|
1252
1399
|
title: string;
|
|
1253
1400
|
data: PasserbyConversionRow[];
|
|
@@ -1318,6 +1465,10 @@ interface PasserbyConversionProps {
|
|
|
1318
1465
|
/** Tick formatter for the right (conversion) Y-axis. */
|
|
1319
1466
|
conversionAxisTickFormatter?: (value: number) => string;
|
|
1320
1467
|
tooltipStyles?: PasserbyConversionTooltipStyles;
|
|
1468
|
+
/**
|
|
1469
|
+
* Full custom tooltip renderer. When provided, default tooltip layout is skipped.
|
|
1470
|
+
*/
|
|
1471
|
+
renderTooltip?: (context: PasserbyConversionTooltipRenderContext) => ReactNode;
|
|
1321
1472
|
showLegend?: boolean;
|
|
1322
1473
|
/**
|
|
1323
1474
|
* When `true` and at least one row has a finite `conversion`, render the line and right axis.
|
|
@@ -1327,6 +1478,7 @@ interface PasserbyConversionProps {
|
|
|
1327
1478
|
showBarValueLabels?: boolean;
|
|
1328
1479
|
chartMargin?: PasserbyConversionChartMargin;
|
|
1329
1480
|
chartColors?: PasserbyConversionChartColors;
|
|
1481
|
+
emptyStatePlaceholderProps?: ChartEmptyStateProps;
|
|
1330
1482
|
emptyStateText?: string;
|
|
1331
1483
|
/**
|
|
1332
1484
|
* When `true`, Recharts animates bars and the conversion line on first draw and when values change.
|
|
@@ -1342,7 +1494,129 @@ interface PasserbyConversionProps {
|
|
|
1342
1494
|
scrollChartToEndOnDataChange?: boolean;
|
|
1343
1495
|
}
|
|
1344
1496
|
|
|
1345
|
-
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,
|
|
1497
|
+
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, }: PasserbyConversionProps): react_jsx_runtime.JSX.Element;
|
|
1498
|
+
|
|
1499
|
+
/** Pie diameter: fixed px, or per-breakpoint (`xs` / `sm` / `md` match MUI breakpoints). */
|
|
1500
|
+
type WalkinAnalysisPieSize = number | {
|
|
1501
|
+
xs?: number;
|
|
1502
|
+
sm?: number;
|
|
1503
|
+
md?: number;
|
|
1504
|
+
};
|
|
1505
|
+
/**
|
|
1506
|
+
* Card `max-width`: a number is pixels on all breakpoints; a string is any CSS length;
|
|
1507
|
+
* an object sets `maxWidth` per breakpoint (numbers become px). Omitted keys use `100%` (xs) and `640` (sm).
|
|
1508
|
+
*/
|
|
1509
|
+
type WalkinAnalysisCardMaxWidth = number | string | {
|
|
1510
|
+
xs?: number | string;
|
|
1511
|
+
sm?: number | string;
|
|
1512
|
+
md?: number | string;
|
|
1513
|
+
};
|
|
1514
|
+
/** Same shape as `ChartWidgetSegmentedTab`; rendered with `ChartWidgetSegmentedTabs` inside WalkinAnalysis. */
|
|
1515
|
+
interface WalkinAnalysisTab {
|
|
1516
|
+
id: string;
|
|
1517
|
+
label: string;
|
|
1518
|
+
}
|
|
1519
|
+
/** Optional `sx` for title row layout, title text, legend column layout, and legend typographies. */
|
|
1520
|
+
interface WalkinAnalysisCustomization {
|
|
1521
|
+
/** Merged onto the **title row** `Stack` (title + `headerActions`) after built-in styles. */
|
|
1522
|
+
titleRowStackSx?: SxProps$1<Theme$1>;
|
|
1523
|
+
/** Merged onto the card **title** `Typography` after built-in styles. */
|
|
1524
|
+
titleSx?: SxProps$1<Theme$1>;
|
|
1525
|
+
/** Merged onto the **legend column** `Stack` (list of slice rows) after built-in styles. */
|
|
1526
|
+
legendColumnStackSx?: SxProps$1<Theme$1>;
|
|
1527
|
+
/** Merged onto each legend **label** and **count** `Typography` after built-in styles. */
|
|
1528
|
+
legendTypographySx?: SxProps$1<Theme$1>;
|
|
1529
|
+
}
|
|
1530
|
+
/**
|
|
1531
|
+
* Optional `fontSize` overrides (number → px). Omitted keys keep the built-in defaults.
|
|
1532
|
+
*/
|
|
1533
|
+
interface WalkinAnalysisTypography {
|
|
1534
|
+
title?: number | string;
|
|
1535
|
+
tabs?: number | string;
|
|
1536
|
+
piePercent?: number | string;
|
|
1537
|
+
legendLabel?: number | string;
|
|
1538
|
+
legendValue?: number | string;
|
|
1539
|
+
tooltipTitle?: number | string;
|
|
1540
|
+
tooltipValue?: number | string;
|
|
1541
|
+
emptyState?: number | string;
|
|
1542
|
+
}
|
|
1543
|
+
interface WalkinAnalysisSlice {
|
|
1544
|
+
id: string;
|
|
1545
|
+
/** Legend title and accessible pie summary (e.g. “Individual Walk-ins”). */
|
|
1546
|
+
label: string;
|
|
1547
|
+
count: number;
|
|
1548
|
+
/** Segment fill in the pie and legend swatch color. */
|
|
1549
|
+
color: string;
|
|
1550
|
+
/** Legend title text color (default **`#0f172a`**, lifestyle section title). */
|
|
1551
|
+
legendLabelColor?: string;
|
|
1552
|
+
/** Legend count / percentage line color (default **`#64748B`**). */
|
|
1553
|
+
legendValueColor?: string;
|
|
1554
|
+
/** Fill for the percentage label inside the pie slice (default `#fff`). */
|
|
1555
|
+
segmentPercentColor?: string;
|
|
1556
|
+
/**
|
|
1557
|
+
* Optional control after the legend count line — e.g. **`<ChartWidgetInfoButton popover={…} />`**
|
|
1558
|
+
* from `@bpfdev/oly-ui` so legend info matches the header info pattern.
|
|
1559
|
+
*/
|
|
1560
|
+
legendInfo?: ReactNode;
|
|
1561
|
+
}
|
|
1562
|
+
interface WalkinAnalysisProps {
|
|
1563
|
+
title: string;
|
|
1564
|
+
tabs: WalkinAnalysisTab[];
|
|
1565
|
+
activeTabId: string;
|
|
1566
|
+
onTabChange: (tabId: string) => void;
|
|
1567
|
+
/**
|
|
1568
|
+
* Omit or `true`: scope tabs span the card width (default — forwarded as **ChartWidgetSegmentedTabs** `fullWidth`).
|
|
1569
|
+
* `false`: pill track only as wide as the labels.
|
|
1570
|
+
*/
|
|
1571
|
+
segmentedTabsFullWidth?: boolean;
|
|
1572
|
+
/**
|
|
1573
|
+
* Merged onto **ChartWidgetSegmentedTabs** `rootSx` after `fullWidth` width rules — use for `width`, `maxWidth`, alignment, etc.
|
|
1574
|
+
*/
|
|
1575
|
+
segmentedTabsSx?: SxProps$1<Theme$1>;
|
|
1576
|
+
/** Each item’s `label`, `count`, and `color` drive pie segments and legend; optional colors override legend / in-slice % text. */
|
|
1577
|
+
slices: WalkinAnalysisSlice[];
|
|
1578
|
+
/** Right side of the title row: compose `WidgetHeaderFilter`, `ChartWidgetHeaderSeparator`, `ChartWidgetInfoButton`, or custom nodes. */
|
|
1579
|
+
headerActions?: ReactNode;
|
|
1580
|
+
cardSx?: SxProps$1<Theme$1>;
|
|
1581
|
+
/**
|
|
1582
|
+
* Card maximum width. Defaults to full width on xs and 640px from sm up.
|
|
1583
|
+
* Use `cardSx` for further layout overrides (it merges after this).
|
|
1584
|
+
*/
|
|
1585
|
+
cardMaxWidth?: WalkinAnalysisCardMaxWidth;
|
|
1586
|
+
/**
|
|
1587
|
+
* Pie diameter (px). Use a number for the same size on all screens.
|
|
1588
|
+
* Use an object to set sizes at `xs`, `sm`, and `md` (unset keys use 180, 220, 260).
|
|
1589
|
+
* Omit for built-in responsive sizing across breakpoints.
|
|
1590
|
+
*/
|
|
1591
|
+
pieSize?: WalkinAnalysisPieSize;
|
|
1592
|
+
/** Per-region `fontSize` overrides (numbers are px). */
|
|
1593
|
+
typography?: WalkinAnalysisTypography;
|
|
1594
|
+
/** Targeted `sx` for title row, legend column, and typographies (avoid brittle `cardSx` descendant selectors). */
|
|
1595
|
+
customization?: WalkinAnalysisCustomization;
|
|
1596
|
+
emptyStatePlaceholderProps?: ChartEmptyStateProps;
|
|
1597
|
+
/**
|
|
1598
|
+
* Recharts **`Pie`** animation. Defaults **true** / **400** ms.
|
|
1599
|
+
* There is no horizontal plot scroll on this card (pie layout); only animation applies.
|
|
1600
|
+
*/
|
|
1601
|
+
isChartAnimationActive?: boolean;
|
|
1602
|
+
chartAnimationDuration?: number;
|
|
1603
|
+
/**
|
|
1604
|
+
* Full custom tooltip renderer. When provided, default tooltip layout is skipped.
|
|
1605
|
+
*/
|
|
1606
|
+
renderTooltip?: (context: WalkinAnalysisTooltipRenderContext) => ReactNode;
|
|
1607
|
+
}
|
|
1608
|
+
interface WalkinAnalysisTooltipRenderContext {
|
|
1609
|
+
tooltipProps: TooltipContentProps;
|
|
1610
|
+
slices: WalkinAnalysisSlice[];
|
|
1611
|
+
total: number;
|
|
1612
|
+
activeTabId: string;
|
|
1613
|
+
}
|
|
1614
|
+
|
|
1615
|
+
/**
|
|
1616
|
+
* Walk-in style analysis card: title row (optional `headerActions`), tabs, Recharts pie, legend.
|
|
1617
|
+
* Pie and legend are driven by `slices` (`label`, `count`, `color`, optional legend / segment % colors).
|
|
1618
|
+
*/
|
|
1619
|
+
declare const WalkinAnalysis: ({ title, tabs, activeTabId, onTabChange, segmentedTabsFullWidth, segmentedTabsSx, slices, headerActions, cardSx, cardMaxWidth, pieSize, typography, customization, emptyStatePlaceholderProps, renderTooltip, isChartAnimationActive, chartAnimationDuration, }: WalkinAnalysisProps) => react_jsx_runtime.JSX.Element;
|
|
1346
1620
|
|
|
1347
1621
|
interface WalkinTrafficTooltipStyles {
|
|
1348
1622
|
/** Outer flex wrapper (arrow + card). */
|
|
@@ -1388,6 +1662,11 @@ interface WalkinTrafficRow {
|
|
|
1388
1662
|
/** Footfall growth % vs last year for this slot; drives **FF Growth%** row and direction icon. */
|
|
1389
1663
|
ffGrowthPercent?: number | null;
|
|
1390
1664
|
}
|
|
1665
|
+
interface WalkinTrafficTooltipRenderContext {
|
|
1666
|
+
tooltipProps: TooltipContentProps;
|
|
1667
|
+
rows: WalkinTrafficRow[];
|
|
1668
|
+
showTrendLine: boolean;
|
|
1669
|
+
}
|
|
1391
1670
|
interface WalkinTrafficProps {
|
|
1392
1671
|
title: string;
|
|
1393
1672
|
data: WalkinTrafficRow[];
|
|
@@ -1434,6 +1713,10 @@ interface WalkinTrafficProps {
|
|
|
1434
1713
|
/** @deprecated Use **`tooltipTimeLabel`** instead. */
|
|
1435
1714
|
tooltipHourLabel?: string;
|
|
1436
1715
|
tooltipStyles?: WalkinTrafficTooltipStyles;
|
|
1716
|
+
/**
|
|
1717
|
+
* Full custom tooltip renderer. When provided, default tooltip layout is skipped.
|
|
1718
|
+
*/
|
|
1719
|
+
renderTooltip?: (context: WalkinTrafficTooltipRenderContext) => ReactNode;
|
|
1437
1720
|
showLegend?: boolean;
|
|
1438
1721
|
/**
|
|
1439
1722
|
* When `true` and at least one row has a finite `trend`, render the line.
|
|
@@ -1445,6 +1728,7 @@ interface WalkinTrafficProps {
|
|
|
1445
1728
|
showBarValueLabels?: boolean;
|
|
1446
1729
|
chartMargin?: WalkinTrafficChartMargin;
|
|
1447
1730
|
chartColors?: WalkinTrafficChartColors;
|
|
1731
|
+
emptyStatePlaceholderProps?: ChartEmptyStateProps;
|
|
1448
1732
|
yAxisTickFormatter?: (value: number) => string;
|
|
1449
1733
|
emptyStateText?: string;
|
|
1450
1734
|
/**
|
|
@@ -1460,7 +1744,190 @@ interface WalkinTrafficProps {
|
|
|
1460
1744
|
scrollChartToEndOnDataChange?: boolean;
|
|
1461
1745
|
}
|
|
1462
1746
|
|
|
1463
|
-
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,
|
|
1747
|
+
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, }: WalkinTrafficProps): react_jsx_runtime.JSX.Element;
|
|
1748
|
+
|
|
1749
|
+
/** Primary line + tooltip fill (violet). */
|
|
1750
|
+
declare const BILLING_COUNTER_LINE_PRIMARY: "#7C3AED";
|
|
1751
|
+
/** Default pill track behind segmented tabs. */
|
|
1752
|
+
declare const BILLING_COUNTER_TABS_TRACK_BG: "#E8E8E8";
|
|
1753
|
+
|
|
1754
|
+
type BillingCounterChartMargin = {
|
|
1755
|
+
top?: number;
|
|
1756
|
+
right?: number;
|
|
1757
|
+
bottom?: number;
|
|
1758
|
+
left?: number;
|
|
1759
|
+
};
|
|
1760
|
+
/**
|
|
1761
|
+
* Simple panel tooltip: thin **grey bar** on top, then white body. Each line uses **muted prefix**
|
|
1762
|
+
* (**Date:** / **Total:**) + **bold dark value** (same pattern as the earlier two-row design).
|
|
1763
|
+
*/
|
|
1764
|
+
type BillingCounterAnalyticsTooltipTheme = {
|
|
1765
|
+
borderColor?: string;
|
|
1766
|
+
borderRadiusPx?: number;
|
|
1767
|
+
boxShadow?: string;
|
|
1768
|
+
/** Grey strip at the top (no text). @default **#E5E7EB** */
|
|
1769
|
+
topBarBackground?: string;
|
|
1770
|
+
/** Height of the grey strip in px. @default **8** */
|
|
1771
|
+
topBarHeightPx?: number;
|
|
1772
|
+
bodyBackground?: string;
|
|
1773
|
+
/** **Date:** / **Total:** label colour. @default **#6B7280** */
|
|
1774
|
+
prefixColor?: string;
|
|
1775
|
+
/** Date string and numeric value colour. @default **#111827** */
|
|
1776
|
+
valueColor?: string;
|
|
1777
|
+
/**
|
|
1778
|
+
* When set without **prefixColor** / **valueColor**, both prefix and value use this single colour
|
|
1779
|
+
* (legacy / compact override).
|
|
1780
|
+
*/
|
|
1781
|
+
textColor?: string;
|
|
1782
|
+
fontSizePx?: number;
|
|
1783
|
+
/** Space between the two text lines in px. @default **6** */
|
|
1784
|
+
lineGapPx?: number;
|
|
1785
|
+
dateLabelPrefix?: string;
|
|
1786
|
+
totalLabelPrefix?: string;
|
|
1787
|
+
/** **Date:** / **Total:** — default **400** */
|
|
1788
|
+
prefixFontWeight?: number;
|
|
1789
|
+
/** Time label and numeric value — default **700** */
|
|
1790
|
+
valueFontWeight?: number;
|
|
1791
|
+
bodyStyle?: CSSProperties;
|
|
1792
|
+
};
|
|
1793
|
+
/**
|
|
1794
|
+
* Optional layout / theme overrides for **BillingCounterAnalytics** and its children.
|
|
1795
|
+
* Pass via **`customization`** on the component or **BillingCounterAnalyticsCustomizationProvider**.
|
|
1796
|
+
*/
|
|
1797
|
+
type BillingCounterAnalyticsCustomization = {
|
|
1798
|
+
rootCard?: {
|
|
1799
|
+
sx?: SxProps$1<Theme$1>;
|
|
1800
|
+
elevation?: number;
|
|
1801
|
+
};
|
|
1802
|
+
header?: {
|
|
1803
|
+
titleSx?: SxProps$1<Theme$1>;
|
|
1804
|
+
};
|
|
1805
|
+
/** Merged into **ChartWidgetSegmentedTabs** alongside billing defaults. */
|
|
1806
|
+
segmentedTabs?: {
|
|
1807
|
+
trackBackgroundColor?: string;
|
|
1808
|
+
activeTabBackground?: string;
|
|
1809
|
+
activeTabColor?: string;
|
|
1810
|
+
inactiveTabColor?: string;
|
|
1811
|
+
activeTabBoxShadow?: string;
|
|
1812
|
+
rootSx?: SxProps$1<Theme$1>;
|
|
1813
|
+
tabFontSize?: number | string;
|
|
1814
|
+
fullWidth?: boolean;
|
|
1815
|
+
/** Segmented tab flex layout; billing defaults to **equalWidth** (tabs fill the track). */
|
|
1816
|
+
tabLayout?: ChartWidgetSegmentedTabLayout;
|
|
1817
|
+
activeTabFontWeight?: number;
|
|
1818
|
+
inactiveTabFontWeight?: number;
|
|
1819
|
+
};
|
|
1820
|
+
lineChart?: {
|
|
1821
|
+
heightPx?: number;
|
|
1822
|
+
lineColor?: string;
|
|
1823
|
+
lineStrokeWidth?: number;
|
|
1824
|
+
gridStroke?: string;
|
|
1825
|
+
gridStrokeDasharray?: string;
|
|
1826
|
+
margin?: BillingCounterChartMargin;
|
|
1827
|
+
xAxisTickFill?: string;
|
|
1828
|
+
yAxisTickFill?: string;
|
|
1829
|
+
yAxisWidth?: number;
|
|
1830
|
+
tooltip?: BillingCounterAnalyticsTooltipTheme;
|
|
1831
|
+
cursorStroke?: string;
|
|
1832
|
+
cursorStrokeDasharray?: string;
|
|
1833
|
+
/**
|
|
1834
|
+
* Line path: **`linear`** = straight segments (sharp corners). **`monotone`** = smooth curve.
|
|
1835
|
+
* @default **`linear`**
|
|
1836
|
+
*/
|
|
1837
|
+
lineType?: 'linear' | 'monotone' | 'step' | 'stepBefore' | 'stepAfter' | 'natural';
|
|
1838
|
+
};
|
|
1839
|
+
};
|
|
1840
|
+
|
|
1841
|
+
declare const DEFAULT_BILLING_COUNTER_ANALYTICS_INFO_POPOVER: ChartWidgetInfoPopoverContent;
|
|
1842
|
+
|
|
1843
|
+
type BillingCounterAnalyticsPoint = {
|
|
1844
|
+
/** X-axis tick (e.g. Jan 12, Today). */
|
|
1845
|
+
label: string;
|
|
1846
|
+
value: number;
|
|
1847
|
+
};
|
|
1848
|
+
type BillingCounterAnalyticsTooltipRenderContext = {
|
|
1849
|
+
tooltipProps: TooltipContentProps;
|
|
1850
|
+
data: BillingCounterAnalyticsPoint[];
|
|
1851
|
+
activeTabId: string;
|
|
1852
|
+
};
|
|
1853
|
+
type BillingCounterAnalyticsProps = {
|
|
1854
|
+
/** Card title (left side of the header row). */
|
|
1855
|
+
title?: string;
|
|
1856
|
+
tabs: ChartWidgetSegmentedTab[];
|
|
1857
|
+
activeTabId: string;
|
|
1858
|
+
onTabChange: (tabId: string) => void;
|
|
1859
|
+
/**
|
|
1860
|
+
* Series for the active tab only. Ignored when **`seriesByTabId`** is set.
|
|
1861
|
+
*/
|
|
1862
|
+
data?: BillingCounterAnalyticsPoint[];
|
|
1863
|
+
/**
|
|
1864
|
+
* All tab series keyed by **`tabs[].id`**. When set, overrides **`data`**.
|
|
1865
|
+
*/
|
|
1866
|
+
seriesByTabId?: Record<string, BillingCounterAnalyticsPoint[]>;
|
|
1867
|
+
/** Y-axis domain. @default `[0, 100]` */
|
|
1868
|
+
yAxisDomain?: [number, number];
|
|
1869
|
+
/** Y-axis tick values. @default `[20, 40, 60, 80, 100]` */
|
|
1870
|
+
yAxisTicks?: number[];
|
|
1871
|
+
/**
|
|
1872
|
+
* Header info popover. Defaults to built-in copy; **`null`** hides separator + info button.
|
|
1873
|
+
*/
|
|
1874
|
+
infoPopover?: ChartWidgetInfoPopoverContent | null;
|
|
1875
|
+
/**
|
|
1876
|
+
* Full custom tooltip renderer. When provided, default tooltip layout is skipped.
|
|
1877
|
+
*/
|
|
1878
|
+
renderTooltip?: (context: BillingCounterAnalyticsTooltipRenderContext) => ReactNode;
|
|
1879
|
+
emptyStatePlaceholderProps?: ChartEmptyStateProps;
|
|
1880
|
+
customization?: BillingCounterAnalyticsCustomization;
|
|
1881
|
+
};
|
|
1882
|
+
|
|
1883
|
+
declare const billingCounterDefaultTabs: ChartWidgetSegmentedTab[];
|
|
1884
|
+
/** Demo datasets aligned with **billingCounterDefaultTabs** ids. */
|
|
1885
|
+
declare const billingCounterMockSeriesByTabId: Record<string, BillingCounterAnalyticsPoint[]>;
|
|
1886
|
+
|
|
1887
|
+
/**
|
|
1888
|
+
* Billing counter analytics card: title row (optional info), pill tabs, Recharts line chart with violet styling.
|
|
1889
|
+
*/
|
|
1890
|
+
declare function BillingCounterAnalytics({ title, tabs, activeTabId, onTabChange, data, seriesByTabId, yAxisDomain, yAxisTicks, infoPopover, renderTooltip, emptyStatePlaceholderProps, customization, }: BillingCounterAnalyticsProps): React$1.ReactElement;
|
|
1891
|
+
|
|
1892
|
+
type BillingCounterAnalyticsCustomizationProviderProps = {
|
|
1893
|
+
value: BillingCounterAnalyticsCustomization;
|
|
1894
|
+
children: React$1.ReactNode;
|
|
1895
|
+
};
|
|
1896
|
+
declare function BillingCounterAnalyticsCustomizationProvider({ value, children, }: BillingCounterAnalyticsCustomizationProviderProps): React$1.ReactElement;
|
|
1897
|
+
declare function useBillingCounterAnalyticsCustomization(): BillingCounterAnalyticsCustomization;
|
|
1898
|
+
|
|
1899
|
+
/**
|
|
1900
|
+
* Shared queue-time visualization palette (stacked bar, donut, area).
|
|
1901
|
+
* Four violet shades, light → dark (segment index order) — pill bar / donut / area.
|
|
1902
|
+
*/
|
|
1903
|
+
declare const QUEUE_CHART_COLORS: readonly ["#E9E5FF", "#C4B5FD", "#8B5CF6", "#6D28D9"];
|
|
1904
|
+
/** Thin horizontal stacked bar height (px); pill radius uses half of this. */
|
|
1905
|
+
declare const QUEUE_STACKED_BAR_THICKNESS_PX = 8;
|
|
1906
|
+
|
|
1907
|
+
type QueueTimeBreakdownCustomizationProviderProps = {
|
|
1908
|
+
value: QueueTimeBreakdownCustomization;
|
|
1909
|
+
children: React$1.ReactNode;
|
|
1910
|
+
};
|
|
1911
|
+
declare function QueueTimeBreakdownCustomizationProvider({ value, children, }: QueueTimeBreakdownCustomizationProviderProps): React$1.ReactElement;
|
|
1912
|
+
declare function useQueueTimeBreakdownCustomization(): QueueTimeBreakdownCustomization;
|
|
1913
|
+
|
|
1914
|
+
declare function mergeCss(a: CSSProperties, b?: CSSProperties): CSSProperties;
|
|
1915
|
+
declare function mergeSx(...parts: Array<SxProps$1<Theme$1> | undefined>): SxProps$1<Theme$1> | undefined;
|
|
1916
|
+
declare function mergeRechartsTooltipStyles(overrides?: QueueTimeRechartsTooltipTheme): {
|
|
1917
|
+
contentStyle: CSSProperties;
|
|
1918
|
+
itemStyle: CSSProperties;
|
|
1919
|
+
labelStyle: CSSProperties;
|
|
1920
|
+
wrapperStyle: CSSProperties;
|
|
1921
|
+
};
|
|
1922
|
+
declare function mergeAreaTooltipStyles(overrides?: QueueTimeAreaTooltipTheme): Required<QueueTimeAreaTooltipTheme>;
|
|
1923
|
+
|
|
1924
|
+
/** Demo data for Storybook / prototyping. */
|
|
1925
|
+
declare function generateMockPerformanceData(): QueueTimeBreakdownBarRow[];
|
|
1926
|
+
|
|
1927
|
+
/**
|
|
1928
|
+
* Queue time breakdown dashboard widget: stacked bars, queue buckets, donut comparison, area chart (Recharts).
|
|
1929
|
+
*/
|
|
1930
|
+
declare function QueueTimeBreakdown({ data, Donut_data, donutYesterdayData, headerImageSrc, headlineTotal, headlineSubtitle, dataComparisonTitle, queueBucketLegend, title, infoPopover, headlineInfoPopover, renderAreaTooltip, renderDonutTooltip, renderStackedBarTooltip, customization, }: QueueTimeBreakdownProps): React$1.ReactElement;
|
|
1464
1931
|
|
|
1465
1932
|
/**
|
|
1466
1933
|
* Treemap data helpers for FootFallHeatMap.
|
|
@@ -1569,10 +2036,38 @@ declare function metricForNode(node: unknown, sortBy: 'walkins' | 'dwell'): numb
|
|
|
1569
2036
|
/** Read optional `zone_kpi_strip` / `zoneKpiStrip` from a hierarchy or flat API node. */
|
|
1570
2037
|
declare function parseZoneKpiStripFromRaw(node: Record<string, unknown>): ZoneKpiStripPayload | undefined;
|
|
1571
2038
|
declare function hashColor(seed: string): string;
|
|
1572
|
-
|
|
2039
|
+
/**
|
|
2040
|
+
* Optional treemap tile fill: **vivid** HSL tuning from **`hashColor(seed)`**, or a full **`tileColorFromSeed`** override.
|
|
2041
|
+
* Pass **`treemap.tileColors`** on **`FootFallHeatMapView`**, or use **`createTreemapTileColorResolver`** inside **`tree.buildNodes`**.
|
|
2042
|
+
*/
|
|
2043
|
+
type FootFallHeatMapTreemapColorCustomization = {
|
|
2044
|
+
/** Replace the built-in vivid / hash pipeline entirely. */
|
|
2045
|
+
tileColorFromSeed?: (seed: string) => string;
|
|
2046
|
+
/** Multiply base saturation after conversion to HSL. @default **1.48** */
|
|
2047
|
+
saturationBoost?: number;
|
|
2048
|
+
/** Added after boost; result is clamped to **1**. @default **0.1** */
|
|
2049
|
+
saturationFloor?: number;
|
|
2050
|
+
/** Clamp lightness lower bound (**0–1**). @default **0.38** */
|
|
2051
|
+
lightnessClampMin?: number;
|
|
2052
|
+
/** Clamp lightness upper bound (**0–1**). @default **0.55** */
|
|
2053
|
+
lightnessClampMax?: number;
|
|
2054
|
+
/** Scale base lightness from hash before clamp. @default **0.96** */
|
|
2055
|
+
lightnessScale?: number;
|
|
2056
|
+
/** Offset after scale. @default **0.02** */
|
|
2057
|
+
lightnessOffset?: number;
|
|
2058
|
+
};
|
|
2059
|
+
/**
|
|
2060
|
+
* - **`undefined` / `null`** → **`hashColor`** only.
|
|
2061
|
+
* - **`{ tileColorFromSeed }`** → use that resolver.
|
|
2062
|
+
* - **Any other object** (including **`{}`**) → vivid HSL pipeline with defaults merged from **`customization`**.
|
|
2063
|
+
*/
|
|
2064
|
+
declare function createTreemapTileColorResolver(customization?: FootFallHeatMapTreemapColorCustomization | null): (seed: string) => string;
|
|
2065
|
+
declare function buildTreemapNodes({ container, sortBy, pathKey, tileColorFromSeed, }: {
|
|
1573
2066
|
container: Record<string, unknown>;
|
|
1574
2067
|
sortBy: 'walkins' | 'dwell';
|
|
1575
2068
|
pathKey: string;
|
|
2069
|
+
/** When set, used for `color`; otherwise **`hashColor(\`${pathKey}/${name}\`)`**. */
|
|
2070
|
+
tileColorFromSeed?: (seed: string) => string;
|
|
1576
2071
|
}): TreemapNode[];
|
|
1577
2072
|
declare function getNestedList(payload: TreemapNode & {
|
|
1578
2073
|
children?: TreemapNode[];
|
|
@@ -1607,6 +2102,20 @@ type FootFallHeatMapIcons = {
|
|
|
1607
2102
|
/** Iconify id for the title-row info button. */
|
|
1608
2103
|
headerInfo?: string;
|
|
1609
2104
|
};
|
|
2105
|
+
/**
|
|
2106
|
+
* Optional `sx` for visitor/dwell **metric chips** inside each treemap `foreignObject` tile
|
|
2107
|
+
* (replaces brittle `& foreignObject > .MuiStack-root …` overrides on a parent wrapper).
|
|
2108
|
+
*/
|
|
2109
|
+
type FootFallHeatMapTileMetricsCustomization = {
|
|
2110
|
+
/** Merged onto the **row** `Stack` that wraps both metric pills (below title / %). */
|
|
2111
|
+
metricsRowStackSx?: SxProps$1<Theme$1>;
|
|
2112
|
+
/** Merged onto each **pill** `Stack` (visitors + dwell) after built-in chip styles. */
|
|
2113
|
+
metricPillStackSx?: SxProps$1<Theme$1>;
|
|
2114
|
+
/** Merged onto the **numeric Typography** inside each pill after built-in styles. */
|
|
2115
|
+
metricPillValueTypographySx?: SxProps$1<Theme$1>;
|
|
2116
|
+
/** Merged onto the **icon circle `Box`** inside each pill after built-in styles. */
|
|
2117
|
+
metricPillIconBoxSx?: SxProps$1<Theme$1>;
|
|
2118
|
+
};
|
|
1610
2119
|
type FootFallHeatMapTreemapLayout = {
|
|
1611
2120
|
/** Pixel height when a breadcrumb strip is visible above the chart. */
|
|
1612
2121
|
heightWithBreadcrumb?: number;
|
|
@@ -1622,6 +2131,13 @@ type FootFallHeatMapTreemapLayout = {
|
|
|
1622
2131
|
fill?: string;
|
|
1623
2132
|
/** MUI `sx` merged onto the blank terminal-details body below the KPI strip. */
|
|
1624
2133
|
leafDetailsBodySx?: SxProps$1<Theme$1>;
|
|
2134
|
+
/** Per-tile visitor/dwell metric chip styling (merged on real `Stack` / `Typography` / `Box` nodes). */
|
|
2135
|
+
tileMetrics?: FootFallHeatMapTileMetricsCustomization;
|
|
2136
|
+
/**
|
|
2137
|
+
* Treemap tile **fill** tuning: vivid HSL pipeline from **`hashColor(seed)`**, or a full **`tileColorFromSeed`** override.
|
|
2138
|
+
* Wired into default **`buildTreemapNodes`** and passed as **`options.tileColorFromSeed`** to **`tree.buildNodes`**.
|
|
2139
|
+
*/
|
|
2140
|
+
tileColors?: FootFallHeatMapTreemapColorCustomization;
|
|
1625
2141
|
};
|
|
1626
2142
|
type FootFallHeatMapTreeOptions = {
|
|
1627
2143
|
/** Starting hierarchy level shown in treemap for hierarchical payloads. */
|
|
@@ -1657,6 +2173,8 @@ type FootFallHeatMapTreeOptions = {
|
|
|
1657
2173
|
*/
|
|
1658
2174
|
buildNodes?: (initialData: ZoneAnalyticsHierarchy | ZoneAnalyticsFlatItem[] | null, options: {
|
|
1659
2175
|
sortBy: 'walkins' | 'dwell';
|
|
2176
|
+
/** From **`treemap.tileColors`** — use for tile `color` fields (same resolver as built-in tree). */
|
|
2177
|
+
tileColorFromSeed?: (seed: string) => string;
|
|
1660
2178
|
}) => TreemapNode[];
|
|
1661
2179
|
};
|
|
1662
2180
|
/** KPI numbers used for the summary row and passed to `summaryCards`. */
|
|
@@ -1676,6 +2194,17 @@ type FootFallHeatMapKpiSummaryCardItem = {
|
|
|
1676
2194
|
/** Per-card icon color; falls back to `statCardIconColor`. */
|
|
1677
2195
|
iconColor?: string;
|
|
1678
2196
|
};
|
|
2197
|
+
type FootFallHeatMapKpiStripSegmentTooltipRenderContext = {
|
|
2198
|
+
segment: {
|
|
2199
|
+
id: string;
|
|
2200
|
+
label: string;
|
|
2201
|
+
value: number;
|
|
2202
|
+
color?: string;
|
|
2203
|
+
};
|
|
2204
|
+
segmentIndex: number;
|
|
2205
|
+
itemLabel: string;
|
|
2206
|
+
itemValue: number;
|
|
2207
|
+
};
|
|
1679
2208
|
/**
|
|
1680
2209
|
* Optional styling for the zone KPI block: summary stat cards, outer panel, segmented bar, and tooltips.
|
|
1681
2210
|
* Segment colors cycle by index when the palette is shorter than the number of segments.
|
|
@@ -1701,6 +2230,11 @@ type FootFallHeatMapKpiStripPresentation = {
|
|
|
1701
2230
|
segmentValueSx?: SxProps$1<Theme$1>;
|
|
1702
2231
|
/** Merged onto the segment tooltip card (popover). */
|
|
1703
2232
|
segmentTooltipCardSx?: SxProps$1<Theme$1>;
|
|
2233
|
+
/**
|
|
2234
|
+
* Full custom renderer for segmented bar tooltips.
|
|
2235
|
+
* When provided, default tooltip card layout is skipped.
|
|
2236
|
+
*/
|
|
2237
|
+
renderSegmentTooltip?: (context: FootFallHeatMapKpiStripSegmentTooltipRenderContext) => ReactNode;
|
|
1704
2238
|
/**
|
|
1705
2239
|
* Build any number of summary KPI cards from live zone metrics. When the returned array is **non-empty**,
|
|
1706
2240
|
* it replaces the default “No. of Stores” / “Overall Visitors” pair. Return `[]` to hide all summary cards.
|
|
@@ -1729,222 +2263,19 @@ type FootFallHeatMapViewProps = {
|
|
|
1729
2263
|
* panel; `statCardSx` / `statCardIconColor`; segment row + tooltip styling.
|
|
1730
2264
|
*/
|
|
1731
2265
|
kpiStrip?: FootFallHeatMapKpiStripPresentation;
|
|
2266
|
+
emptyStatePlaceholderProps?: ChartEmptyStateProps;
|
|
1732
2267
|
};
|
|
1733
2268
|
|
|
1734
2269
|
/**
|
|
1735
2270
|
* In-store zone treemap with drill-down and leaf KPIs. Pass `initialData` from your API or mocks.
|
|
1736
2271
|
*/
|
|
1737
|
-
declare function FootFallHeatMapView({ initialData, isLoading, isFetching, error, title, infoTooltip, brandLabel, icons: iconsProp, iconSize: iconSizeProp, iconColor: iconColorProp, headerInfoIconSize, treemap: treemapProp, tree: treeProp, kpiStrip: kpiStripPresentation, }: FootFallHeatMapViewProps): react_jsx_runtime.JSX.Element;
|
|
2272
|
+
declare function FootFallHeatMapView({ initialData, isLoading, isFetching, error, title, infoTooltip, brandLabel, icons: iconsProp, iconSize: iconSizeProp, iconColor: iconColorProp, headerInfoIconSize, treemap: treemapProp, tree: treeProp, kpiStrip: kpiStripPresentation, emptyStatePlaceholderProps, }: FootFallHeatMapViewProps): react_jsx_runtime.JSX.Element;
|
|
1738
2273
|
|
|
1739
2274
|
/** Zone KPI grid using MUI layout. */
|
|
1740
2275
|
declare const ZoneWiseKpiCards: ({ metrics }: {
|
|
1741
2276
|
metrics: ZoneAnalyticsMetrics;
|
|
1742
2277
|
}) => react_jsx_runtime.JSX.Element;
|
|
1743
2278
|
|
|
1744
|
-
/**
|
|
1745
|
-
* Shared queue-time visualization palette (stacked bar, donut, area).
|
|
1746
|
-
* Four violet shades, light → dark (segment index order) — pill bar / donut / area.
|
|
1747
|
-
*/
|
|
1748
|
-
declare const QUEUE_CHART_COLORS: readonly ["#E9E5FF", "#C4B5FD", "#8B5CF6", "#6D28D9"];
|
|
1749
|
-
/** Thin horizontal stacked bar height (px); pill radius uses half of this. */
|
|
1750
|
-
declare const QUEUE_STACKED_BAR_THICKNESS_PX = 8;
|
|
1751
|
-
|
|
1752
|
-
type QueueTimeBreakdownCustomizationProviderProps = {
|
|
1753
|
-
value: QueueTimeBreakdownCustomization;
|
|
1754
|
-
children: React$1.ReactNode;
|
|
1755
|
-
};
|
|
1756
|
-
declare function QueueTimeBreakdownCustomizationProvider({ value, children, }: QueueTimeBreakdownCustomizationProviderProps): React$1.ReactElement;
|
|
1757
|
-
declare function useQueueTimeBreakdownCustomization(): QueueTimeBreakdownCustomization;
|
|
1758
|
-
|
|
1759
|
-
declare function mergeCss(a: CSSProperties, b?: CSSProperties): CSSProperties;
|
|
1760
|
-
declare function mergeSx(...parts: Array<SxProps$1<Theme$1> | undefined>): SxProps$1<Theme$1> | undefined;
|
|
1761
|
-
declare function mergeRechartsTooltipStyles(overrides?: QueueTimeRechartsTooltipTheme): {
|
|
1762
|
-
contentStyle: CSSProperties;
|
|
1763
|
-
itemStyle: CSSProperties;
|
|
1764
|
-
labelStyle: CSSProperties;
|
|
1765
|
-
wrapperStyle: CSSProperties;
|
|
1766
|
-
};
|
|
1767
|
-
declare function mergeAreaTooltipStyles(overrides?: QueueTimeAreaTooltipTheme): Required<QueueTimeAreaTooltipTheme>;
|
|
1768
|
-
|
|
1769
|
-
/** Demo data for Storybook / prototyping. */
|
|
1770
|
-
declare function generateMockPerformanceData(): QueueTimeBreakdownBarRow[];
|
|
1771
|
-
|
|
1772
|
-
/**
|
|
1773
|
-
* Queue time breakdown dashboard widget: stacked bars, queue buckets, donut comparison, area chart (Recharts).
|
|
1774
|
-
*/
|
|
1775
|
-
declare function QueueTimeBreakdown({ data, Donut_data, donutYesterdayData, headerImageSrc, headlineTotal, headlineSubtitle, dataComparisonTitle, queueBucketLegend, title, infoPopover, customization, }: QueueTimeBreakdownProps): React$1.ReactElement;
|
|
1776
|
-
|
|
1777
|
-
type QueueTimeBreakdownDonutProps = {
|
|
1778
|
-
chartFilter: QueueTimeChartFilter;
|
|
1779
|
-
averageData: number[];
|
|
1780
|
-
LabelName: string;
|
|
1781
|
-
labels?: readonly string[];
|
|
1782
|
-
};
|
|
1783
|
-
declare function QueueTimeBreakdownDonut({ chartFilter, averageData, LabelName, labels, }: QueueTimeBreakdownDonutProps): React$1.ReactElement;
|
|
1784
|
-
|
|
1785
|
-
type QueueTimeBreakdownStackedBarProps = {
|
|
1786
|
-
row: QueueTimeBreakdownBarRow;
|
|
1787
|
-
/** One entry per segment: percent line + range line (aligned under each slice). */
|
|
1788
|
-
legendRows: readonly QueueBucketLegendItem[];
|
|
1789
|
-
};
|
|
1790
|
-
/**
|
|
1791
|
-
* Horizontal 100% stacked bar (Recharts) — slim pill, framed by two rules; labels use the same flex widths as data.
|
|
1792
|
-
*/
|
|
1793
|
-
declare function QueueTimeBreakdownStackedBar({ row, legendRows, }: QueueTimeBreakdownStackedBarProps): React$1.ReactElement;
|
|
1794
|
-
|
|
1795
|
-
type QueueTimeAreaSeriesPoint = {
|
|
1796
|
-
name: string;
|
|
1797
|
-
data: number[];
|
|
1798
|
-
};
|
|
1799
|
-
type QueueTimeBreakdownAreaProps = {
|
|
1800
|
-
series: QueueTimeAreaSeriesPoint[];
|
|
1801
|
-
xAxis: string[];
|
|
1802
|
-
};
|
|
1803
|
-
declare const QueueTimeBreakdownArea: ({ series, xAxis, }: QueueTimeBreakdownAreaProps) => React$1.ReactElement;
|
|
1804
|
-
|
|
1805
|
-
declare function getQueueTimeBreakdownAreaXAxisData(type: QueueTimeChartFilter): string[];
|
|
1806
|
-
declare function getQueueTimeBreakdownAreaSeriesData(type: QueueTimeChartFilter): QueueTimeAreaSeriesPoint[];
|
|
1807
|
-
|
|
1808
|
-
/** Primary line + tooltip fill (violet). */
|
|
1809
|
-
declare const BILLING_COUNTER_LINE_PRIMARY: "#7C3AED";
|
|
1810
|
-
/** Default pill track behind segmented tabs. */
|
|
1811
|
-
declare const BILLING_COUNTER_TABS_TRACK_BG: "#E8E8E8";
|
|
1812
|
-
|
|
1813
|
-
type BillingCounterChartMargin = {
|
|
1814
|
-
top?: number;
|
|
1815
|
-
right?: number;
|
|
1816
|
-
bottom?: number;
|
|
1817
|
-
left?: number;
|
|
1818
|
-
};
|
|
1819
|
-
/**
|
|
1820
|
-
* Simple panel tooltip: thin **grey bar** on top, then white body. Each line uses **muted prefix**
|
|
1821
|
-
* (**Date:** / **Total:**) + **bold dark value** (same pattern as the earlier two-row design).
|
|
1822
|
-
*/
|
|
1823
|
-
type BillingCounterAnalyticsTooltipTheme = {
|
|
1824
|
-
borderColor?: string;
|
|
1825
|
-
borderRadiusPx?: number;
|
|
1826
|
-
boxShadow?: string;
|
|
1827
|
-
/** Grey strip at the top (no text). @default **#E5E7EB** */
|
|
1828
|
-
topBarBackground?: string;
|
|
1829
|
-
/** Height of the grey strip in px. @default **8** */
|
|
1830
|
-
topBarHeightPx?: number;
|
|
1831
|
-
bodyBackground?: string;
|
|
1832
|
-
/** **Date:** / **Total:** label colour. @default **#6B7280** */
|
|
1833
|
-
prefixColor?: string;
|
|
1834
|
-
/** Date string and numeric value colour. @default **#111827** */
|
|
1835
|
-
valueColor?: string;
|
|
1836
|
-
/**
|
|
1837
|
-
* When set without **prefixColor** / **valueColor**, both prefix and value use this single colour
|
|
1838
|
-
* (legacy / compact override).
|
|
1839
|
-
*/
|
|
1840
|
-
textColor?: string;
|
|
1841
|
-
fontSizePx?: number;
|
|
1842
|
-
/** Space between the two text lines in px. @default **6** */
|
|
1843
|
-
lineGapPx?: number;
|
|
1844
|
-
dateLabelPrefix?: string;
|
|
1845
|
-
totalLabelPrefix?: string;
|
|
1846
|
-
/** **Date:** / **Total:** — default **400** */
|
|
1847
|
-
prefixFontWeight?: number;
|
|
1848
|
-
/** Time label and numeric value — default **700** */
|
|
1849
|
-
valueFontWeight?: number;
|
|
1850
|
-
bodyStyle?: CSSProperties;
|
|
1851
|
-
};
|
|
1852
|
-
/**
|
|
1853
|
-
* Optional layout / theme overrides for **BillingCounterAnalytics** and its children.
|
|
1854
|
-
* Pass via **`customization`** on the component or **BillingCounterAnalyticsCustomizationProvider**.
|
|
1855
|
-
*/
|
|
1856
|
-
type BillingCounterAnalyticsCustomization = {
|
|
1857
|
-
rootCard?: {
|
|
1858
|
-
sx?: SxProps$1<Theme$1>;
|
|
1859
|
-
elevation?: number;
|
|
1860
|
-
};
|
|
1861
|
-
header?: {
|
|
1862
|
-
titleSx?: SxProps$1<Theme$1>;
|
|
1863
|
-
};
|
|
1864
|
-
/** Merged into **ChartWidgetSegmentedTabs** alongside billing defaults. */
|
|
1865
|
-
segmentedTabs?: {
|
|
1866
|
-
trackBackgroundColor?: string;
|
|
1867
|
-
activeTabBackground?: string;
|
|
1868
|
-
activeTabColor?: string;
|
|
1869
|
-
inactiveTabColor?: string;
|
|
1870
|
-
activeTabBoxShadow?: string;
|
|
1871
|
-
rootSx?: SxProps$1<Theme$1>;
|
|
1872
|
-
tabFontSize?: number | string;
|
|
1873
|
-
fullWidth?: boolean;
|
|
1874
|
-
/** Segmented tab flex layout; billing defaults to **equalWidth** (tabs fill the track). */
|
|
1875
|
-
tabLayout?: ChartWidgetSegmentedTabLayout;
|
|
1876
|
-
activeTabFontWeight?: number;
|
|
1877
|
-
inactiveTabFontWeight?: number;
|
|
1878
|
-
};
|
|
1879
|
-
lineChart?: {
|
|
1880
|
-
heightPx?: number;
|
|
1881
|
-
lineColor?: string;
|
|
1882
|
-
lineStrokeWidth?: number;
|
|
1883
|
-
gridStroke?: string;
|
|
1884
|
-
gridStrokeDasharray?: string;
|
|
1885
|
-
margin?: BillingCounterChartMargin;
|
|
1886
|
-
xAxisTickFill?: string;
|
|
1887
|
-
yAxisTickFill?: string;
|
|
1888
|
-
yAxisWidth?: number;
|
|
1889
|
-
tooltip?: BillingCounterAnalyticsTooltipTheme;
|
|
1890
|
-
cursorStroke?: string;
|
|
1891
|
-
cursorStrokeDasharray?: string;
|
|
1892
|
-
/**
|
|
1893
|
-
* Line path: **`linear`** = straight segments (sharp corners). **`monotone`** = smooth curve.
|
|
1894
|
-
* @default **`linear`**
|
|
1895
|
-
*/
|
|
1896
|
-
lineType?: 'linear' | 'monotone' | 'step' | 'stepBefore' | 'stepAfter' | 'natural';
|
|
1897
|
-
};
|
|
1898
|
-
};
|
|
1899
|
-
|
|
1900
|
-
declare const DEFAULT_BILLING_COUNTER_ANALYTICS_INFO_POPOVER: ChartWidgetInfoPopoverContent;
|
|
1901
|
-
|
|
1902
|
-
type BillingCounterAnalyticsPoint = {
|
|
1903
|
-
/** X-axis tick (e.g. Jan 12, Today). */
|
|
1904
|
-
label: string;
|
|
1905
|
-
value: number;
|
|
1906
|
-
};
|
|
1907
|
-
type BillingCounterAnalyticsProps = {
|
|
1908
|
-
/** Card title (left side of the header row). */
|
|
1909
|
-
title?: string;
|
|
1910
|
-
tabs: ChartWidgetSegmentedTab[];
|
|
1911
|
-
activeTabId: string;
|
|
1912
|
-
onTabChange: (tabId: string) => void;
|
|
1913
|
-
/**
|
|
1914
|
-
* Series for the active tab only. Ignored when **`seriesByTabId`** is set.
|
|
1915
|
-
*/
|
|
1916
|
-
data?: BillingCounterAnalyticsPoint[];
|
|
1917
|
-
/**
|
|
1918
|
-
* All tab series keyed by **`tabs[].id`**. When set, overrides **`data`**.
|
|
1919
|
-
*/
|
|
1920
|
-
seriesByTabId?: Record<string, BillingCounterAnalyticsPoint[]>;
|
|
1921
|
-
/** Y-axis domain. @default `[0, 100]` */
|
|
1922
|
-
yAxisDomain?: [number, number];
|
|
1923
|
-
/** Y-axis tick values. @default `[20, 40, 60, 80, 100]` */
|
|
1924
|
-
yAxisTicks?: number[];
|
|
1925
|
-
/**
|
|
1926
|
-
* Header info popover. Defaults to built-in copy; **`null`** hides separator + info button.
|
|
1927
|
-
*/
|
|
1928
|
-
infoPopover?: ChartWidgetInfoPopoverContent | null;
|
|
1929
|
-
customization?: BillingCounterAnalyticsCustomization;
|
|
1930
|
-
};
|
|
1931
|
-
|
|
1932
|
-
declare const billingCounterDefaultTabs: ChartWidgetSegmentedTab[];
|
|
1933
|
-
/** Demo datasets aligned with **billingCounterDefaultTabs** ids. */
|
|
1934
|
-
declare const billingCounterMockSeriesByTabId: Record<string, BillingCounterAnalyticsPoint[]>;
|
|
1935
|
-
|
|
1936
|
-
/**
|
|
1937
|
-
* Billing counter analytics card: title row (optional info), pill tabs, Recharts line chart with violet styling.
|
|
1938
|
-
*/
|
|
1939
|
-
declare function BillingCounterAnalytics({ title, tabs, activeTabId, onTabChange, data, seriesByTabId, yAxisDomain, yAxisTicks, infoPopover, customization, }: BillingCounterAnalyticsProps): React$1.ReactElement;
|
|
1940
|
-
|
|
1941
|
-
type BillingCounterAnalyticsCustomizationProviderProps = {
|
|
1942
|
-
value: BillingCounterAnalyticsCustomization;
|
|
1943
|
-
children: React$1.ReactNode;
|
|
1944
|
-
};
|
|
1945
|
-
declare function BillingCounterAnalyticsCustomizationProvider({ value, children, }: BillingCounterAnalyticsCustomizationProviderProps): React$1.ReactElement;
|
|
1946
|
-
declare function useBillingCounterAnalyticsCustomization(): BillingCounterAnalyticsCustomization;
|
|
1947
|
-
|
|
1948
2279
|
type PeakBillingHoursChartMargin = {
|
|
1949
2280
|
top?: number;
|
|
1950
2281
|
right?: number;
|
|
@@ -2005,6 +2336,11 @@ type PeakBillingHoursPoint = {
|
|
|
2005
2336
|
/** Bar height; **0** omits the value label and draws a flat bar. */
|
|
2006
2337
|
value: number;
|
|
2007
2338
|
};
|
|
2339
|
+
type PeakBillingHoursTooltipRenderContext = {
|
|
2340
|
+
tooltipProps: TooltipContentProps;
|
|
2341
|
+
data: PeakBillingHoursPoint[];
|
|
2342
|
+
activeTabId: string;
|
|
2343
|
+
};
|
|
2008
2344
|
type PeakBillingHoursProps = {
|
|
2009
2345
|
title?: string;
|
|
2010
2346
|
/** Shown after the title (e.g. **(Last 7 days)**). */
|
|
@@ -2017,6 +2353,11 @@ type PeakBillingHoursProps = {
|
|
|
2017
2353
|
yAxisDomain?: [number, number];
|
|
2018
2354
|
yAxisTicks?: number[];
|
|
2019
2355
|
infoPopover?: ChartWidgetInfoPopoverContent | null;
|
|
2356
|
+
/**
|
|
2357
|
+
* Full custom tooltip renderer. When provided, default tooltip layout is skipped.
|
|
2358
|
+
*/
|
|
2359
|
+
renderTooltip?: (context: PeakBillingHoursTooltipRenderContext) => ReactNode;
|
|
2360
|
+
emptyStatePlaceholderProps?: ChartEmptyStateProps;
|
|
2020
2361
|
customization?: PeakBillingHoursCustomization;
|
|
2021
2362
|
};
|
|
2022
2363
|
|
|
@@ -2029,7 +2370,7 @@ declare const peakBillingHoursMockSeriesByTabId: Record<string, PeakBillingHours
|
|
|
2029
2370
|
* Peak billing hours card: title + subtitle, info control, violet segmented tabs (intrinsic),
|
|
2030
2371
|
* vertical bar chart with square tops, value labels, and panel tooltip.
|
|
2031
2372
|
*/
|
|
2032
|
-
declare function PeakBillingHours({ title, subtitle, tabs, activeTabId, onTabChange, data, seriesByTabId, yAxisDomain, yAxisTicks, infoPopover, customization, }: PeakBillingHoursProps): React$1.ReactElement;
|
|
2373
|
+
declare function PeakBillingHours({ title, subtitle, tabs, activeTabId, onTabChange, data, seriesByTabId, yAxisDomain, yAxisTicks, infoPopover, renderTooltip, emptyStatePlaceholderProps, customization, }: PeakBillingHoursProps): React$1.ReactElement;
|
|
2033
2374
|
|
|
2034
2375
|
type PeakBillingHoursCustomizationProviderProps = {
|
|
2035
2376
|
value: PeakBillingHoursCustomization;
|
|
@@ -2058,4 +2399,4 @@ interface FalconThemeProviderProps {
|
|
|
2058
2399
|
|
|
2059
2400
|
declare const FalconThemeProvider: ({ children, mode: modeProp, settings, }: FalconThemeProviderProps) => react_jsx_runtime.JSX.Element;
|
|
2060
2401
|
|
|
2061
|
-
export { AddCommentInput, type AddCommentInputProps, AdvancedFiltersDialog, type AdvancedFiltersDialogProps, BILLING_COUNTER_LINE_PRIMARY, BILLING_COUNTER_TABS_TRACK_BG, BillingCounterAnalytics, type BillingCounterAnalyticsCustomization, BillingCounterAnalyticsCustomizationProvider, type BillingCounterAnalyticsPoint, type BillingCounterAnalyticsProps, type BillingCounterAnalyticsTooltipTheme, type BillingCounterChartMargin, ButtonWithIcon, type ButtonWithIconProps, CHART_PERIOD_FILTER_INFO_POPOVER, ChartWidgetHeaderSeparator, ChartWidgetInfoButton, type ChartWidgetInfoButtonProps, type ChartWidgetInfoPopoverContent, RankedBarList as ChartWidgetRankedBarList, type RankedBarListItem as ChartWidgetRankedBarListItem, type RankedBarListProps as ChartWidgetRankedBarListProps, type RankedBarListSegment as ChartWidgetRankedBarSegment, type ChartWidgetSegmentedTab, type ChartWidgetSegmentedTabLayout, ChartWidgetSegmentedTabs, type ChartWidgetSegmentedTabsProps, DEFAULT_BILLING_COUNTER_ANALYTICS_INFO_POPOVER, DEFAULT_FOOTFALL_TILE_ICONS, DEFAULT_PEAK_BILLING_HOURS_INFO_POPOVER, DEFAULT_QUEUE_TIME_BREAKDOWN_INFO_POPOVER, FalconButton, type FalconButtonProps, FalconDIstrictFilter, type FalconDIstrictFilterOption, type FalconDIstrictFilterProps, FalconGrayButton, type FalconGrayButtonProps, FalconMultiSelect, type FalconMultiSelectOption, type FalconMultiSelectProps, type FalconMultiSelectStyleProps, FalconPagination, type FalconPaginationProps, FalconSelect, type FalconSelectOption, type FalconSelectProps, FalconSingleSwitch, type FalconSingleSwitchProps, FalconTable, type FalconTableProps, type FalconThemeDirection, type FalconThemeMode, FalconThemeProvider, type FalconThemeProviderProps, type FalconThemeSettings, FalconTicketColumsFilter, type FalconTicketColumsFilterProps, FalconTicketFilter, type FalconTicketFilterProps, type FootFallHeatMapIconColor, type FootFallHeatMapIconSize, type FootFallHeatMapIconSizeContext, type FootFallHeatMapIcons, type FootFallHeatMapKpiStripPresentation, type FootFallHeatMapKpiSummaryCardItem, type FootFallHeatMapSummaryKpis, type FootFallHeatMapTileIconRole, type FootFallHeatMapTreeOptions, type FootFallHeatMapTreemapLayout, FootFallHeatMapView, type FootFallHeatMapViewProps, FootfallByAgeGroups, type ChartCardMaxWidth as FootfallByAgeGroupsCardMaxWidth, type FootfallByAgeGroupsChartColors, type FootfallByAgeGroupsChartMargin, type FootfallByAgeGroupsHorizontalScroll, type FootfallByAgeGroupsProps, type FootfallByAgeGroupsRow, type FootfallByAgeGroupsSeries, type FootfallByAgeGroupsTooltipStyles, FootfallByGender, type ChartCardMaxWidth as FootfallByGenderCardMaxWidth, type FootfallByGenderChartColors, type FootfallByGenderChartMargin, type FootfallByGenderHorizontalScroll, type FootfallByGenderProps, type FootfallByGenderRow, type FootfallByGenderTooltipStyles, HeatMapChartLegend, type HeatMapChartLegendProps, type HeatMapLegendItem, KpiStatCard, type KpiStatCardDetailedProps, type KpiStatCardIconBackdropShape, type KpiStatCardInfoPlacement, type KpiStatCardInlineProps, type KpiStatCardProps, type KpiTrend, type KpiTrendLayout, PasserbyConversion, type ChartCardMaxWidth as PasserbyConversionCardMaxWidth, type PasserbyConversionChartColors, type PasserbyConversionChartMargin, type PasserbyConversionHorizontalScroll, type PasserbyConversionProps, type PasserbyConversionRow, type PasserbyConversionTooltipStyles, PeakBillingHours, type PeakBillingHoursChartMargin, type PeakBillingHoursCustomization, PeakBillingHoursCustomizationProvider, type PeakBillingHoursPoint, type PeakBillingHoursProps, ProgressBarNumber, type ProgressBarNumberProps, QUEUE_CHART_COLORS, QUEUE_STACKED_BAR_THICKNESS_PX, QUEUE_TIME_BREAKDOWN_DEFAULT_HEADER_IMAGE_SRC, QUEUE_TIME_BREAKDOWN_INFO_POPOVER, type QueueBucketLegendItem, type QueueTimeAreaSeriesPoint, type QueueTimeAreaTooltipTheme, QueueTimeBreakdown, QueueTimeBreakdownArea, type QueueTimeBreakdownAreaProps, type QueueTimeBreakdownBarRow, type QueueTimeBreakdownCustomization, QueueTimeBreakdownCustomizationProvider, QueueTimeBreakdownDonut, type QueueTimeBreakdownDonutProps, type QueueTimeBreakdownProps, QueueTimeBreakdownStackedBar, type QueueTimeBreakdownStackedBarProps, type QueueTimeChartFilter, TimePeriodFilter as QueueTimePeriodFilter, type QueueTimePeriodFilterInfoButtonPresentation, type TimePeriodFilterProps as QueueTimePeriodFilterProps, type QueueTimePeriodFilterTheme, type QueueTimeRechartsTooltipTheme, type QueueTimeStackedSeriesItem, RankedBarList, type RankedBarListItem, type RankedBarListProps, type RankedBarListSegment, TIME_PERIOD_FILTER_INFO_POPOVER, TIME_PERIOD_FILTER_INFO_POPOVER_BREAKDOWN, TimePeriodFilter, type TimePeriodFilterInfoButtonPresentation, type TimePeriodFilterProps, type TimePeriodFilterTheme, type TreemapNode, WalkinAnalysis, type WalkinAnalysisCardMaxWidth, type WalkinAnalysisPieSize, type WalkinAnalysisProps, type WalkinAnalysisSlice, type WalkinAnalysisTab, type WalkinAnalysisTypography, WalkinTraffic, WalkinTraffic as WalkinTrafficByHour, type ChartCardMaxWidth as WalkinTrafficByHourCardMaxWidth, type WalkinTrafficChartColors as WalkinTrafficByHourChartColors, type WalkinTrafficChartMargin as WalkinTrafficByHourChartMargin, type WalkinTrafficHorizontalScroll as WalkinTrafficByHourHorizontalScroll, type WalkinTrafficProps as WalkinTrafficByHourProps, type WalkinTrafficRow as WalkinTrafficByHourRow, type WalkinTrafficTooltipStyles as WalkinTrafficByHourTooltipStyles, type ChartCardMaxWidth as WalkinTrafficCardMaxWidth, type WalkinTrafficChartColors, type WalkinTrafficChartMargin, type WalkinTrafficHorizontalScroll, type WalkinTrafficProps, type WalkinTrafficRow, type WalkinTrafficTooltipStyles, WidgetHeaderFilter, type WidgetHeaderFilterProps, type WidgetHeaderFilterStyleProps, type WidgetHeaderMultiSelectConfig, type ZoneAnalyticsFlatItem, type ZoneAnalyticsHierarchy, type ZoneAnalyticsMetrics, type ZoneKpiStripPayload, ZoneWiseKpiCards, billingCounterDefaultTabs, billingCounterMockSeriesByTabId, buildTreemapNodes, generateMockPerformanceData, getChildContainer, getNestedList, getQueueTimeBreakdownAreaSeriesData, getQueueTimeBreakdownAreaXAxisData, hashColor, isPlainObject, mergeAreaTooltipStyles, mergeCss, mergeRechartsTooltipStyles, mergeSx, metricForNode, parseMinutes, parseZoneKpiStripFromRaw, peakBillingHoursDefaultTabs, peakBillingHoursMockSeriesByTabId, peakBillingHoursVisitsMock, preprocessData, skipSingleBranchLevels, toRechartsTreemapData, useBillingCounterAnalyticsCustomization, usePeakBillingHoursCustomization, useQueueTimeBreakdownCustomization };
|
|
2402
|
+
export { AddCommentInput, type AddCommentInputProps, AdvancedFiltersDialog, type AdvancedFiltersDialogProps, BILLING_COUNTER_LINE_PRIMARY, BILLING_COUNTER_TABS_TRACK_BG, BillingCounterAnalytics, type BillingCounterAnalyticsCustomization, BillingCounterAnalyticsCustomizationProvider, type BillingCounterAnalyticsPoint, type BillingCounterAnalyticsProps, type BillingCounterAnalyticsTooltipRenderContext, type BillingCounterAnalyticsTooltipTheme, type BillingCounterChartMargin, ButtonWithIcon, type ButtonWithIconProps, CHART_PERIOD_FILTER_INFO_POPOVER, ChartEmptyState, type ChartEmptyStateProps, ChartWidgetHeaderSeparator, ChartWidgetInfoButton, type ChartWidgetInfoButtonProps, type ChartWidgetInfoPopoverContent, RankedBarList as ChartWidgetRankedBarList, type RankedBarListItem as ChartWidgetRankedBarListItem, type RankedBarListProps as ChartWidgetRankedBarListProps, type RankedBarListSegment as ChartWidgetRankedBarSegment, type ChartWidgetSegmentedTab, type ChartWidgetSegmentedTabLayout, ChartWidgetSegmentedTabs, type ChartWidgetSegmentedTabsProps, DEFAULT_BILLING_COUNTER_ANALYTICS_INFO_POPOVER, DEFAULT_FOOTFALL_TILE_ICONS, DEFAULT_PEAK_BILLING_HOURS_INFO_POPOVER, DEFAULT_QUEUE_TIME_BREAKDOWN_INFO_POPOVER, FalconButton, type FalconButtonProps, FalconDIstrictFilter, type FalconDIstrictFilterOption, type FalconDIstrictFilterProps, FalconGrayButton, type FalconGrayButtonProps, FalconMultiSelect, type FalconMultiSelectOption, type FalconMultiSelectProps, type FalconMultiSelectStyleProps, FalconPagination, type FalconPaginationProps, FalconSelect, type FalconSelectOption, type FalconSelectProps, FalconSingleSwitch, type FalconSingleSwitchProps, FalconTable, type FalconTableProps, type FalconThemeDirection, type FalconThemeMode, FalconThemeProvider, type FalconThemeProviderProps, type FalconThemeSettings, FalconTicketColumsFilter, type FalconTicketColumsFilterProps, FalconTicketFilter, type FalconTicketFilterProps, type FootFallHeatMapIconColor, type FootFallHeatMapIconSize, type FootFallHeatMapIconSizeContext, type FootFallHeatMapIcons, type FootFallHeatMapKpiStripPresentation, type FootFallHeatMapKpiStripSegmentTooltipRenderContext, type FootFallHeatMapKpiSummaryCardItem, type FootFallHeatMapSummaryKpis, type FootFallHeatMapTileIconRole, type FootFallHeatMapTileMetricsCustomization, type FootFallHeatMapTreeOptions, type FootFallHeatMapTreemapColorCustomization, type FootFallHeatMapTreemapLayout, FootFallHeatMapView, type FootFallHeatMapViewProps, FootfallByAgeGroups, type ChartCardMaxWidth as FootfallByAgeGroupsCardMaxWidth, type FootfallByAgeGroupsChartColors, type FootfallByAgeGroupsChartMargin, type FootfallByAgeGroupsHorizontalScroll, type FootfallByAgeGroupsProps, type FootfallByAgeGroupsRow, type FootfallByAgeGroupsSeries, type FootfallByAgeGroupsTooltipRenderContext, type FootfallByAgeGroupsTooltipStyles, FootfallByGender, type ChartCardMaxWidth as FootfallByGenderCardMaxWidth, type FootfallByGenderChartColors, type FootfallByGenderChartMargin, type FootfallByGenderHorizontalScroll, type FootfallByGenderProps, type FootfallByGenderRow, type FootfallByGenderTooltipRenderContext, type FootfallByGenderTooltipStyles, HeatMapChartLegend, type HeatMapChartLegendProps, type HeatMapLegendItem, KpiStatCard, type KpiStatCardCustomization, type KpiStatCardDetailedProps, type KpiStatCardIconBackdropShape, type KpiStatCardInfoPlacement, type KpiStatCardInlineProps, type KpiStatCardProps, type KpiTrend, type KpiTrendLayout, PasserbyConversion, type ChartCardMaxWidth as PasserbyConversionCardMaxWidth, type PasserbyConversionChartColors, type PasserbyConversionChartMargin, type PasserbyConversionHorizontalScroll, type PasserbyConversionProps, type PasserbyConversionRow, type PasserbyConversionTooltipRenderContext, type PasserbyConversionTooltipStyles, PeakBillingHours, type PeakBillingHoursChartMargin, type PeakBillingHoursCustomization, PeakBillingHoursCustomizationProvider, type PeakBillingHoursPoint, type PeakBillingHoursProps, type PeakBillingHoursTooltipRenderContext, ProgressBarNumber, type ProgressBarNumberProps, QUEUE_CHART_COLORS, QUEUE_STACKED_BAR_THICKNESS_PX, QUEUE_TIME_BREAKDOWN_DEFAULT_HEADER_IMAGE_SRC, QUEUE_TIME_BREAKDOWN_INFO_POPOVER, type QueueBucketLegendItem, type QueueTimeAreaSeriesPoint, type QueueTimeAreaTooltipTheme, QueueTimeBreakdown, QueueTimeBreakdownArea, type QueueTimeBreakdownAreaProps, type QueueTimeBreakdownAreaTooltipRenderContext, type QueueTimeBreakdownBarRow, type QueueTimeBreakdownCustomization, QueueTimeBreakdownCustomizationProvider, QueueTimeBreakdownDonut, type QueueTimeBreakdownDonutProps, type QueueTimeBreakdownDonutTooltipRenderContext, type QueueTimeBreakdownProps, QueueTimeBreakdownStackedBar, type QueueTimeBreakdownStackedBarProps, type QueueTimeBreakdownStackedBarTooltipRenderContext, type QueueTimeChartFilter, TimePeriodFilter as QueueTimePeriodFilter, type QueueTimePeriodFilterInfoButtonPresentation, type TimePeriodFilterProps as QueueTimePeriodFilterProps, type QueueTimePeriodFilterTheme, type QueueTimeRechartsTooltipTheme, type QueueTimeStackedSeriesItem, RankedBarList, type RankedBarListCustomization, type RankedBarListItem, type RankedBarListProps, type RankedBarListSegment, type RankedBarListSegmentTooltipRenderContext, TIME_PERIOD_FILTER_INFO_POPOVER, TIME_PERIOD_FILTER_INFO_POPOVER_BREAKDOWN, TimePeriodFilter, type TimePeriodFilterInfoButtonPresentation, type TimePeriodFilterProps, type TimePeriodFilterTheme, type TreemapNode, WalkinAnalysis, type WalkinAnalysisCardMaxWidth, type WalkinAnalysisCustomization, type WalkinAnalysisPieSize, type WalkinAnalysisProps, type WalkinAnalysisSlice, type WalkinAnalysisTab, type WalkinAnalysisTooltipRenderContext, type WalkinAnalysisTypography, WalkinTraffic, WalkinTraffic as WalkinTrafficByHour, type ChartCardMaxWidth as WalkinTrafficByHourCardMaxWidth, type WalkinTrafficChartColors as WalkinTrafficByHourChartColors, type WalkinTrafficChartMargin as WalkinTrafficByHourChartMargin, type WalkinTrafficHorizontalScroll as WalkinTrafficByHourHorizontalScroll, type WalkinTrafficProps as WalkinTrafficByHourProps, type WalkinTrafficRow as WalkinTrafficByHourRow, type WalkinTrafficTooltipStyles as WalkinTrafficByHourTooltipStyles, type ChartCardMaxWidth as WalkinTrafficCardMaxWidth, type WalkinTrafficChartColors, type WalkinTrafficChartMargin, type WalkinTrafficHorizontalScroll, type WalkinTrafficProps, type WalkinTrafficRow, type WalkinTrafficTooltipRenderContext, type WalkinTrafficTooltipStyles, WidgetHeaderFilter, type WidgetHeaderFilterProps, type WidgetHeaderFilterStyleProps, type WidgetHeaderMultiSelectConfig, type ZoneAnalyticsFlatItem, type ZoneAnalyticsHierarchy, type ZoneAnalyticsMetrics, type ZoneKpiStripPayload, ZoneWiseKpiCards, billingCounterDefaultTabs, billingCounterMockSeriesByTabId, buildTreemapNodes, createTreemapTileColorResolver, generateMockPerformanceData, getChildContainer, getNestedList, getQueueTimeBreakdownAreaSeriesData, getQueueTimeBreakdownAreaXAxisData, hashColor, isPlainObject, mergeAreaTooltipStyles, mergeCss, mergeRechartsTooltipStyles, mergeSx, metricForNode, parseMinutes, parseZoneKpiStripFromRaw, peakBillingHoursDefaultTabs, peakBillingHoursMockSeriesByTabId, peakBillingHoursVisitsMock, preprocessData, skipSingleBranchLevels, toRechartsTreemapData, useBillingCounterAnalyticsCustomization, usePeakBillingHoursCustomization, useQueueTimeBreakdownCustomization };
|