@bpfdev/oly-ui 1.0.4 → 1.0.6
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 +1415 -661
- package/dist/index.d.ts +1415 -661
- package/dist/index.js +10458 -7175
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +10860 -7568
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { SxProps, Theme, ButtonProps } from '@mui/material';
|
|
3
3
|
import * as React$1 from 'react';
|
|
4
|
-
import { ReactNode, ReactElement, CSSProperties } from 'react';
|
|
4
|
+
import React__default, { 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,291 +671,68 @@ 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}.
|
|
563
|
-
*/
|
|
564
|
-
declare const DEFAULT_QUEUE_TIME_BREAKDOWN_INFO_POPOVER: ChartWidgetInfoPopoverContent;
|
|
565
|
-
|
|
566
|
-
interface FalconButtonProps extends ButtonProps {
|
|
567
|
-
loading?: boolean;
|
|
568
|
-
iconPlacement?: 'start' | 'end';
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
declare const FalconButton: ({ loading, disabled, children, size, variant, type, fullWidth, className, ...props }: FalconButtonProps) => react_jsx_runtime.JSX.Element;
|
|
572
|
-
|
|
573
|
-
interface FalconDIstrictFilterOption {
|
|
574
|
-
id: string | number;
|
|
575
|
-
label: string;
|
|
576
|
-
}
|
|
577
|
-
interface FalconDIstrictFilterProps {
|
|
578
|
-
label?: string;
|
|
579
|
-
options?: FalconDIstrictFilterOption[];
|
|
580
|
-
value?: FalconDIstrictFilterOption[];
|
|
581
|
-
onChange?: (value: FalconDIstrictFilterOption[]) => void;
|
|
582
|
-
}
|
|
583
|
-
|
|
584
|
-
/** District filter — full implementation can be migrated from apps/docs. */
|
|
585
|
-
declare const FalconDIstrictFilter: ({ label, options, value, onChange, }: FalconDIstrictFilterProps) => react_jsx_runtime.JSX.Element;
|
|
586
|
-
|
|
587
|
-
interface FalconGrayButtonProps {
|
|
588
|
-
text: string;
|
|
589
|
-
Icon?: ReactNode;
|
|
590
|
-
onClick?: () => void;
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
declare const FalconGrayButton: ({ text, Icon, onClick, }: FalconGrayButtonProps) => react_jsx_runtime.JSX.Element;
|
|
594
|
-
|
|
595
|
-
interface FalconPaginationProps {
|
|
596
|
-
pageNo: number;
|
|
597
|
-
setPageNo: (n: number) => void;
|
|
598
|
-
perPage: number;
|
|
599
|
-
setPerPage: (n: number) => void;
|
|
600
|
-
totalItems: number;
|
|
601
|
-
perPageOptions?: number[];
|
|
602
|
-
}
|
|
603
|
-
|
|
604
|
-
declare const FalconPagination: ({ pageNo, setPageNo, perPage, setPerPage, totalItems, perPageOptions, }: FalconPaginationProps) => react_jsx_runtime.JSX.Element;
|
|
605
|
-
|
|
606
|
-
interface FalconSelectOption {
|
|
607
|
-
value: string;
|
|
608
|
-
label: string;
|
|
609
|
-
}
|
|
610
|
-
interface FalconSelectProps {
|
|
611
|
-
label: string;
|
|
612
|
-
value: string;
|
|
613
|
-
onChange: (value: string) => void;
|
|
614
|
-
options: string[] | FalconSelectOption[];
|
|
615
|
-
disabled?: boolean;
|
|
616
|
-
clearable?: boolean;
|
|
617
|
-
}
|
|
618
|
-
|
|
619
|
-
declare const FalconSelect: ({ label, value, onChange, options, disabled, clearable, }: FalconSelectProps) => react_jsx_runtime.JSX.Element;
|
|
620
|
-
|
|
621
|
-
interface FalconSingleSwitchProps {
|
|
622
|
-
color?: 'success' | 'warning' | 'error' | 'info' | 'primary' | 'secondary' | 'default';
|
|
623
|
-
setStatus?: (status: boolean) => void;
|
|
624
|
-
value?: boolean;
|
|
625
|
-
onChange?: (event: React.ChangeEvent<HTMLInputElement>, checked: boolean) => void;
|
|
626
|
-
}
|
|
627
|
-
|
|
628
|
-
declare const FalconSingleSwitch: ({ color, setStatus, value, onChange, }: FalconSingleSwitchProps) => react_jsx_runtime.JSX.Element;
|
|
629
|
-
|
|
630
|
-
interface FalconTableProps<T = Record<string, unknown>> {
|
|
631
|
-
rows: T[];
|
|
632
|
-
getRowId: (row: T) => string | number;
|
|
633
|
-
columns: GridColDef[];
|
|
634
|
-
pageSizeOptions?: number[];
|
|
635
|
-
initialState?: {
|
|
636
|
-
pagination?: {
|
|
637
|
-
paginationModel: {
|
|
638
|
-
pageSize: number;
|
|
639
|
-
};
|
|
640
|
-
};
|
|
641
|
-
};
|
|
642
|
-
}
|
|
643
|
-
|
|
644
|
-
declare const FalconTable: <T extends Record<string, unknown>>({ rows, getRowId, columns, pageSizeOptions, }: FalconTableProps<T>) => react_jsx_runtime.JSX.Element;
|
|
645
|
-
|
|
646
|
-
interface FalconTicketColumsFilterProps {
|
|
647
|
-
columns?: {
|
|
648
|
-
id: string;
|
|
649
|
-
label: string;
|
|
650
|
-
}[];
|
|
651
|
-
selected?: string[];
|
|
652
|
-
onSelectionChange?: (selected: string[]) => void;
|
|
653
|
-
}
|
|
654
|
-
|
|
655
|
-
/** Column filter UI — full implementation can be migrated from apps/docs. */
|
|
656
|
-
declare const FalconTicketColumsFilter: ({ columns, selected, onSelectionChange, }: FalconTicketColumsFilterProps) => react_jsx_runtime.JSX.Element;
|
|
657
|
-
|
|
658
|
-
interface FalconTicketFilterProps {
|
|
659
|
-
children: ReactNode;
|
|
660
|
-
label?: string;
|
|
661
|
-
open?: boolean;
|
|
662
|
-
onOpenChange?: (open: boolean) => void;
|
|
663
|
-
}
|
|
664
|
-
|
|
665
|
-
declare const FalconTicketFilter: ({ children, label, open: controlledOpen, onOpenChange, }: FalconTicketFilterProps) => react_jsx_runtime.JSX.Element;
|
|
666
|
-
|
|
667
|
-
/** Shared max-width rules for chart cards (WalkinAnalysis-style). */
|
|
668
|
-
type ChartCardMaxWidth = number | string | {
|
|
669
|
-
xs?: number | string;
|
|
670
|
-
sm?: number | string;
|
|
671
|
-
md?: number | string;
|
|
672
|
-
};
|
|
673
|
-
|
|
674
|
-
/** Optional inline styles merged over tooltip defaults (undefined keys keep defaults). */
|
|
675
|
-
interface FootfallByAgeGroupsTooltipStyles {
|
|
676
|
-
container?: CSSProperties;
|
|
677
|
-
/** Each horizontal row in the tooltip */
|
|
678
|
-
sectionRow?: CSSProperties;
|
|
679
|
-
/** Prefix text like “Time:”, “Overall:” */
|
|
680
|
-
metaLabel?: CSSProperties;
|
|
681
|
-
/** Values next to meta labels (e.g. “11am”, total count) */
|
|
682
|
-
metaValue?: CSSProperties;
|
|
683
|
-
/** Colored dot before each series name */
|
|
684
|
-
seriesDot?: CSSProperties;
|
|
685
|
-
/** Bold series name in tooltip (short \`label\`, e.g. “Kids:”) */
|
|
686
|
-
seriesName?: CSSProperties;
|
|
687
|
-
/** Numeric value after series name */
|
|
688
|
-
seriesValue?: CSSProperties;
|
|
689
|
-
}
|
|
690
|
-
/** Partial Recharts outer margin; omitted sides use built-in defaults. */
|
|
691
|
-
interface FootfallByAgeGroupsChartMargin {
|
|
692
|
-
top?: number;
|
|
693
|
-
right?: number;
|
|
694
|
-
bottom?: number;
|
|
695
|
-
left?: number;
|
|
696
|
-
}
|
|
697
|
-
/** Optional chart chrome colors (stroke / fills). */
|
|
698
|
-
interface FootfallByAgeGroupsChartColors {
|
|
699
|
-
cartesianGridStroke?: string;
|
|
700
|
-
xAxisLineStroke?: string;
|
|
701
|
-
axisTickLineStroke?: string;
|
|
702
|
-
stackTotalLabelFill?: string;
|
|
703
|
-
}
|
|
704
|
-
|
|
705
|
-
/**
|
|
706
|
-
* Horizontal scrolling of the plot when it is wider than the card.
|
|
707
|
-
* - \`auto\` (default): only when \`minWidthPerCategory\` is positive **and** there are **2+** data rows.
|
|
708
|
-
* - \`on\`: allow scroll whenever \`minWidthPerCategory\` is positive (including a single bar).
|
|
709
|
-
* - \`off\`: never; chart width follows the viewport (\`minWidthPerCategory\` still affects nothing for width).
|
|
710
|
-
*/
|
|
711
|
-
type FootfallByAgeGroupsHorizontalScroll = 'auto' | 'on' | 'off';
|
|
712
|
-
interface FootfallByAgeGroupsSeries {
|
|
713
|
-
/** Must match a numeric field on each row (e.g. \`Kids\`, \`Teens\`). */
|
|
714
|
-
dataKey: string;
|
|
715
|
-
/** Short name for **tooltip** rows and \`Bar\` \`name\` (e.g. \`Kids\`). */
|
|
716
|
-
label: string;
|
|
717
|
-
color: string;
|
|
718
|
-
/**
|
|
719
|
-
* Optional longer text for the **legend** only (e.g. \`Kids (3-12 years old)\`).
|
|
720
|
-
* Omit to use \`label\` in the legend as well.
|
|
721
|
-
*/
|
|
722
|
-
legendLabel?: string;
|
|
723
|
-
}
|
|
724
|
-
/**
|
|
725
|
-
* Each row is one X-axis tick; \`name\` is the label. Other keys match \`series[].dataKey\` with numeric values.
|
|
733
|
+
* The active segment uses a **sliding pill** (animated with **`tabIndicatorTransitionMs`**).
|
|
726
734
|
*/
|
|
727
|
-
|
|
728
|
-
name: string;
|
|
729
|
-
} & Record<string, string | number>;
|
|
730
|
-
interface FootfallByAgeGroupsProps {
|
|
731
|
-
/** Card heading — **centered**; \`headerActions\` (if any) sit on the right without shifting it. */
|
|
732
|
-
title: string;
|
|
733
|
-
data: FootfallByAgeGroupsRow[];
|
|
734
|
-
/** Stacked series bottom-to-top (first item is bottom of stack). */
|
|
735
|
-
series: FootfallByAgeGroupsSeries[];
|
|
736
|
-
/** Plot height in px. Default: 430 */
|
|
737
|
-
chartHeight?: number;
|
|
738
|
-
/**
|
|
739
|
-
* Minimum pixels reserved per X-axis category so the chart can grow wider than the card and scroll horizontally.
|
|
740
|
-
* Set `0` to disable (chart stays `100%` wide only). Default: **56**.
|
|
741
|
-
* Used only when horizontal scrolling is active — see \`horizontalScroll\`.
|
|
742
|
-
*/
|
|
743
|
-
minWidthPerCategory?: number;
|
|
744
|
-
/**
|
|
745
|
-
* When the plot may scroll horizontally. Default \`auto\`: **off** for a single row, **on** for two or more
|
|
746
|
-
* (if \`minWidthPerCategory\` is positive). Use \`off\` to avoid a scrollbar; \`on\` to always allow it.
|
|
747
|
-
*/
|
|
748
|
-
horizontalScroll?: FootfallByAgeGroupsHorizontalScroll;
|
|
749
|
-
/**
|
|
750
|
-
* Recharts \`maxBarSize\`: caps how thick each vertical bar is when the category band is very wide
|
|
751
|
-
* (e.g. a single region in a wide scroll area). Default: **36** px, and never wider than the category
|
|
752
|
-
* width cap (\`minWidthPerCategory\` when positive, else **56**).
|
|
753
|
-
*/
|
|
754
|
-
maxBarSize?: number;
|
|
755
|
-
cardMaxWidth?: ChartCardMaxWidth;
|
|
756
|
-
/** Outer card; merged after defaults (padding, border, width, etc.). */
|
|
757
|
-
cardSx?: SxProps$1<Theme$1>;
|
|
758
|
-
/** Wrapper around the centered title row (relative positioning). */
|
|
759
|
-
titleRowSx?: SxProps$1<Theme$1>;
|
|
760
|
-
/** Card heading \`Typography\`; merged after default weight/color. */
|
|
761
|
-
titleSx?: SxProps$1<Theme$1>;
|
|
762
|
-
/** Under the title row. */
|
|
763
|
-
dividerSx?: SxProps$1<Theme$1>;
|
|
764
|
-
/** Legend flex row (when \`showLegend\`). */
|
|
765
|
-
legendRowSx?: SxProps$1<Theme$1>;
|
|
766
|
-
/** Each legend item row (swatch + label). */
|
|
767
|
-
legendItemSx?: SxProps$1<Theme$1>;
|
|
768
|
-
/** Color swatch \`Box\` in the legend. */
|
|
769
|
-
legendSwatchSx?: SxProps$1<Theme$1>;
|
|
770
|
-
/** Legend text \`Typography\`. */
|
|
771
|
-
legendLabelSx?: SxProps$1<Theme$1>;
|
|
772
|
-
/** Scrollable chart viewport. */
|
|
773
|
-
chartScrollAreaSx?: SxProps$1<Theme$1>;
|
|
774
|
-
/** Outer vertical \`Stack\` (card body). */
|
|
775
|
-
stackSx?: SxProps$1<Theme$1>;
|
|
776
|
-
/** Empty state wrapper when \`data\` is empty. */
|
|
777
|
-
emptyStateSx?: SxProps$1<Theme$1>;
|
|
778
|
-
/** “No data” \`Typography\`. */
|
|
779
|
-
emptyStateTextSx?: SxProps$1<Theme$1>;
|
|
780
|
-
/** Filters / info control — **absolutely positioned** on the right of the title row. */
|
|
781
|
-
headerActions?: ReactNode;
|
|
782
|
-
/** Tooltip label before the category value. Default: \`Time\` */
|
|
783
|
-
tooltipCategoryLabel?: string;
|
|
784
|
-
/** Tooltip label before the stacked total. Default: \`Overall\` */
|
|
785
|
-
tooltipOverallLabel?: string;
|
|
786
|
-
/** Merge over default tooltip inline styles. */
|
|
787
|
-
tooltipStyles?: FootfallByAgeGroupsTooltipStyles;
|
|
788
|
-
/** Color key legend above the plot (from \`series\`). Default: \`true\`. */
|
|
789
|
-
showLegend?: boolean;
|
|
790
|
-
/** Recharts \`BarChart\` margin; partial merge with defaults. */
|
|
791
|
-
chartMargin?: FootfallByAgeGroupsChartMargin;
|
|
792
|
-
/** Grid / axis / bar-top label colors. */
|
|
793
|
-
chartColors?: FootfallByAgeGroupsChartColors;
|
|
794
|
-
/** Opacity for non-hovered stacks while another bar is hovered. Default: \`0.35\` */
|
|
795
|
-
dimmedStackOpacity?: number;
|
|
796
|
-
/** 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;
|
|
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;
|
|
819
736
|
|
|
820
737
|
/** How the trend / baseline row is laid out under the main value. */
|
|
821
738
|
type KpiTrendLayout = 'row' | 'stacked';
|
|
@@ -864,6 +781,22 @@ type KpiTrend = {
|
|
|
864
781
|
type KpiStatCardInfoPlacement = 'title' | 'value';
|
|
865
782
|
/** Shape of the decorative icon backdrop (top-right). */
|
|
866
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
|
+
}
|
|
867
800
|
type KpiStatCardShared = {
|
|
868
801
|
/** Iconify icon id, e.g. `mdi:store` */
|
|
869
802
|
icon: string;
|
|
@@ -909,6 +842,8 @@ type KpiStatCardShared = {
|
|
|
909
842
|
cardMaxHeightPx?: number;
|
|
910
843
|
/** Extra root `Paper` styles — merges last; use to override borders, shadows, width, etc. */
|
|
911
844
|
sx?: SxProps$1<Theme$1>;
|
|
845
|
+
/** Targeted typography `sx` without fragile parent selectors. */
|
|
846
|
+
customization?: KpiStatCardCustomization;
|
|
912
847
|
};
|
|
913
848
|
type KpiStatCardInlineProps = KpiStatCardShared & {
|
|
914
849
|
variant: 'inline';
|
|
@@ -962,7 +897,569 @@ type KpiStatCardDetailedProps = KpiStatCardShared & {
|
|
|
962
897
|
};
|
|
963
898
|
type KpiStatCardProps = KpiStatCardInlineProps | KpiStatCardDetailedProps;
|
|
964
899
|
|
|
965
|
-
declare const KpiStatCard: (props: KpiStatCardProps) => react_jsx_runtime.JSX.Element;
|
|
900
|
+
declare const KpiStatCard: (props: KpiStatCardProps) => react_jsx_runtime.JSX.Element;
|
|
901
|
+
|
|
902
|
+
interface FalconButtonProps extends ButtonProps {
|
|
903
|
+
loading?: boolean;
|
|
904
|
+
iconPlacement?: 'start' | 'end';
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
declare const FalconButton: ({ loading, disabled, children, size, variant, type, fullWidth, className, ...props }: FalconButtonProps) => react_jsx_runtime.JSX.Element;
|
|
908
|
+
|
|
909
|
+
interface MonthData {
|
|
910
|
+
label: string;
|
|
911
|
+
count: number;
|
|
912
|
+
}
|
|
913
|
+
interface FalconAuditTimelineProps {
|
|
914
|
+
/**
|
|
915
|
+
* Title of the component
|
|
916
|
+
* @default 'Audit Timeline'
|
|
917
|
+
*/
|
|
918
|
+
title?: string;
|
|
919
|
+
/**
|
|
920
|
+
* Months data array
|
|
921
|
+
*/
|
|
922
|
+
months?: MonthData[];
|
|
923
|
+
/**
|
|
924
|
+
* Initial selected month label
|
|
925
|
+
* @default 'Mar'
|
|
926
|
+
*/
|
|
927
|
+
initialSelectedMonth?: string;
|
|
928
|
+
/**
|
|
929
|
+
* Current year to display
|
|
930
|
+
* @default 2026
|
|
931
|
+
*/
|
|
932
|
+
year?: number;
|
|
933
|
+
/**
|
|
934
|
+
* Message when no audits are scheduled
|
|
935
|
+
* @default 'No Audit Scheduled'
|
|
936
|
+
*/
|
|
937
|
+
emptyStateMessage?: string;
|
|
938
|
+
/**
|
|
939
|
+
* Text for the export button
|
|
940
|
+
* @default 'Export Report'
|
|
941
|
+
*/
|
|
942
|
+
exportButtonText?: string;
|
|
943
|
+
/**
|
|
944
|
+
* Text for the upcoming status button
|
|
945
|
+
* @default 'Upcoming'
|
|
946
|
+
*/
|
|
947
|
+
upcomingButtonText?: string;
|
|
948
|
+
/**
|
|
949
|
+
* Show/Hide title
|
|
950
|
+
* @default true
|
|
951
|
+
*/
|
|
952
|
+
showTitle?: boolean;
|
|
953
|
+
/**
|
|
954
|
+
* Show/Hide year selector
|
|
955
|
+
* @default true
|
|
956
|
+
*/
|
|
957
|
+
showYearSelector?: boolean;
|
|
958
|
+
/**
|
|
959
|
+
* Callback on month change
|
|
960
|
+
*/
|
|
961
|
+
onMonthChange?: (month: string) => void;
|
|
962
|
+
/**
|
|
963
|
+
* Callback for previous year click
|
|
964
|
+
*/
|
|
965
|
+
onPrevYearClick?: () => void;
|
|
966
|
+
/**
|
|
967
|
+
* Callback for next year click
|
|
968
|
+
*/
|
|
969
|
+
onNextYearClick?: () => void;
|
|
970
|
+
/**
|
|
971
|
+
* Callback for export report click
|
|
972
|
+
*/
|
|
973
|
+
onExportReportClick?: (event: React__default.MouseEvent, date: string) => void;
|
|
974
|
+
/**
|
|
975
|
+
* Custom brand font
|
|
976
|
+
* @default '"Neue Haas Grotesk Display Pro", Arial, sans-serif'
|
|
977
|
+
*/
|
|
978
|
+
brandFont?: string;
|
|
979
|
+
/**
|
|
980
|
+
* Custom inter font
|
|
981
|
+
* @default '"Inter", Arial, sans-serif'
|
|
982
|
+
*/
|
|
983
|
+
interFont?: string;
|
|
984
|
+
/** Header Font Size */
|
|
985
|
+
headerFontSize?: string;
|
|
986
|
+
/** Header Font Weight */
|
|
987
|
+
headerFontWeight?: string | number;
|
|
988
|
+
/** Month Button Label Font Size */
|
|
989
|
+
monthFontSize?: string;
|
|
990
|
+
/** Month Button Label Font Weight */
|
|
991
|
+
monthFontWeight?: string | number;
|
|
992
|
+
/** Date Label Font Size */
|
|
993
|
+
eventDateSize?: string;
|
|
994
|
+
/** Date Label Font Weight */
|
|
995
|
+
eventDateWeight?: string | number;
|
|
996
|
+
/** Card Border Radius */
|
|
997
|
+
borderRadius?: string;
|
|
998
|
+
/** Card Border Width */
|
|
999
|
+
borderWidth?: string;
|
|
1000
|
+
/** Card Border Color */
|
|
1001
|
+
borderColor?: string;
|
|
1002
|
+
/** Card Box Shadow */
|
|
1003
|
+
boxShadow?: string;
|
|
1004
|
+
/** Primary color for selected state */
|
|
1005
|
+
primaryColor?: string;
|
|
1006
|
+
/** Color for completed status dot */
|
|
1007
|
+
completedColor?: string;
|
|
1008
|
+
/** Color for upcoming status dot */
|
|
1009
|
+
upcomingColor?: string;
|
|
1010
|
+
/** Background color for unselected month */
|
|
1011
|
+
inactiveMonthBg?: string;
|
|
1012
|
+
/** Background color for event card */
|
|
1013
|
+
eventCardBg?: string;
|
|
1014
|
+
/** Text color for header */
|
|
1015
|
+
headerColor?: string;
|
|
1016
|
+
/** Custom calendar icon */
|
|
1017
|
+
calendarIcon?: string | React__default.ReactNode;
|
|
1018
|
+
/** Custom chevron left icon */
|
|
1019
|
+
chevronLeftIcon?: string | React__default.ReactNode;
|
|
1020
|
+
/** Custom chevron right icon */
|
|
1021
|
+
chevronRightIcon?: string | React__default.ReactNode;
|
|
1022
|
+
/** Custom export/upload icon */
|
|
1023
|
+
exportIcon?: string | React__default.ReactNode;
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
declare const FalconAuditTimeline: React__default.FC<FalconAuditTimelineProps>;
|
|
1027
|
+
|
|
1028
|
+
interface FalconExportDialogProps {
|
|
1029
|
+
/**
|
|
1030
|
+
* Dialog title
|
|
1031
|
+
* @default 'Export Report'
|
|
1032
|
+
*/
|
|
1033
|
+
title?: string;
|
|
1034
|
+
/**
|
|
1035
|
+
* Label for the 'From' date selection box
|
|
1036
|
+
* @default 'From'
|
|
1037
|
+
*/
|
|
1038
|
+
fromDateTitle?: string;
|
|
1039
|
+
/**
|
|
1040
|
+
* Initial 'From' date value
|
|
1041
|
+
* @default ''
|
|
1042
|
+
*/
|
|
1043
|
+
fromDateValue?: string;
|
|
1044
|
+
/**
|
|
1045
|
+
* Label for the 'To' date selection box
|
|
1046
|
+
* @default 'To'
|
|
1047
|
+
*/
|
|
1048
|
+
toDateTitle?: string;
|
|
1049
|
+
/**
|
|
1050
|
+
* Initial 'To' date value
|
|
1051
|
+
* @default ''
|
|
1052
|
+
*/
|
|
1053
|
+
toDateValue?: string;
|
|
1054
|
+
/**
|
|
1055
|
+
* Callback function triggered on dialog close
|
|
1056
|
+
*/
|
|
1057
|
+
onClose?: () => void;
|
|
1058
|
+
/**
|
|
1059
|
+
* Callback function triggered on export action
|
|
1060
|
+
* @param data - Object containing CSV and PDF selection state
|
|
1061
|
+
*/
|
|
1062
|
+
onExport?: (data: {
|
|
1063
|
+
csv: boolean;
|
|
1064
|
+
pdf: boolean;
|
|
1065
|
+
}) => void;
|
|
1066
|
+
/**
|
|
1067
|
+
* Label for the export button
|
|
1068
|
+
* @default 'Export'
|
|
1069
|
+
*/
|
|
1070
|
+
exportButtonText?: string;
|
|
1071
|
+
/**
|
|
1072
|
+
* Label for the close button
|
|
1073
|
+
* @default 'Close'
|
|
1074
|
+
*/
|
|
1075
|
+
closeButtonText?: string;
|
|
1076
|
+
/**
|
|
1077
|
+
* Initial state for the CSV export checkbox
|
|
1078
|
+
* @default true
|
|
1079
|
+
*/
|
|
1080
|
+
initialExportCsv?: boolean;
|
|
1081
|
+
/**
|
|
1082
|
+
* Initial state for the PDF export checkbox
|
|
1083
|
+
* @default false
|
|
1084
|
+
*/
|
|
1085
|
+
initialExportPdf?: boolean;
|
|
1086
|
+
/**
|
|
1087
|
+
* Custom calendar icon (Iconify icon name)
|
|
1088
|
+
* @default 'solar:calendar-bold'
|
|
1089
|
+
*/
|
|
1090
|
+
calendarIcon?: string;
|
|
1091
|
+
/**
|
|
1092
|
+
* Primary color for export actions and checked states
|
|
1093
|
+
* @default '#401070'
|
|
1094
|
+
*/
|
|
1095
|
+
primaryColor?: string;
|
|
1096
|
+
/**
|
|
1097
|
+
* Secondary color for close action
|
|
1098
|
+
* @default '#DFDFE0'
|
|
1099
|
+
*/
|
|
1100
|
+
secondaryColor?: string;
|
|
1101
|
+
/**
|
|
1102
|
+
* Text color for the dialog title
|
|
1103
|
+
* @default '#000000'
|
|
1104
|
+
*/
|
|
1105
|
+
titleColor?: string;
|
|
1106
|
+
/**
|
|
1107
|
+
* Custom brand font for headers and labels
|
|
1108
|
+
* @default '"Neue Haas Grotesk Display Pro", Arial, sans-serif'
|
|
1109
|
+
*/
|
|
1110
|
+
brandFont?: string;
|
|
1111
|
+
/**
|
|
1112
|
+
* Custom font for buttons and main UI text
|
|
1113
|
+
* @default '"Roboto", Arial, sans-serif'
|
|
1114
|
+
*/
|
|
1115
|
+
robotoFont?: string;
|
|
1116
|
+
/** Title font size */
|
|
1117
|
+
titleFontSize?: string;
|
|
1118
|
+
/** Title font weight */
|
|
1119
|
+
titleFontWeight?: string | number;
|
|
1120
|
+
/** Label font size (Form labels and check labels) */
|
|
1121
|
+
labelFontSize?: string;
|
|
1122
|
+
/** Label font weight */
|
|
1123
|
+
labelFontWeight?: string | number;
|
|
1124
|
+
/** Value font size (Date values) */
|
|
1125
|
+
valueFontSize?: string;
|
|
1126
|
+
/** Value font weight */
|
|
1127
|
+
valueFontWeight?: string | number;
|
|
1128
|
+
/** Dialog border radius */
|
|
1129
|
+
borderRadius?: string | number;
|
|
1130
|
+
/** Dialog box shadow */
|
|
1131
|
+
boxShadow?: string;
|
|
1132
|
+
/** Export button width */
|
|
1133
|
+
exportButtonWidth?: string | number;
|
|
1134
|
+
/** Export button height */
|
|
1135
|
+
exportButtonHeight?: string | number;
|
|
1136
|
+
/** Close button width */
|
|
1137
|
+
closeButtonWidth?: string | number;
|
|
1138
|
+
/** Close button height */
|
|
1139
|
+
closeButtonHeight?: string | number;
|
|
1140
|
+
/** Date input box width */
|
|
1141
|
+
dateBoxWidth?: string | number;
|
|
1142
|
+
/** Date input box height */
|
|
1143
|
+
dateBoxHeight?: string | number;
|
|
1144
|
+
/** Text for CSV export checkbox */
|
|
1145
|
+
exportCsvText?: string;
|
|
1146
|
+
/** Text for PDF export checkbox */
|
|
1147
|
+
exportPdfText?: string;
|
|
1148
|
+
/** Primary color for calendar (selected day bg, header icons) */
|
|
1149
|
+
calendarPrimaryColor?: string;
|
|
1150
|
+
/** Text color for the selected day in calendar */
|
|
1151
|
+
calendarSelectedTextColor?: string;
|
|
1152
|
+
/** Background color for the calendar picker */
|
|
1153
|
+
calendarBackgroundColor?: string;
|
|
1154
|
+
/** Text color for the months/year header in calendar */
|
|
1155
|
+
calendarHeaderColor?: string;
|
|
1156
|
+
/** Text color for the S/M/T/W/T/F/S day labels */
|
|
1157
|
+
calendarDayLabelColor?: string;
|
|
1158
|
+
/** Text color for dates in the calendar */
|
|
1159
|
+
calendarDateColor?: string;
|
|
1160
|
+
/** Color for the format checkboxes */
|
|
1161
|
+
checkboxColor?: string;
|
|
1162
|
+
/** Hover background color for the main export button */
|
|
1163
|
+
exportButtonHoverBg?: string;
|
|
1164
|
+
/** Hover background color for the main close button */
|
|
1165
|
+
closeButtonHoverBg?: string;
|
|
1166
|
+
/** Background color for the calendar apply button */
|
|
1167
|
+
calendarApplyButtonBg?: string;
|
|
1168
|
+
/** Hover background color for the calendar apply button */
|
|
1169
|
+
calendarApplyButtonHoverBg?: string;
|
|
1170
|
+
/** Background color for the calendar cancel button */
|
|
1171
|
+
calendarCancelButtonBg?: string;
|
|
1172
|
+
/** Hover background color for the calendar cancel button */
|
|
1173
|
+
calendarCancelButtonHoverBg?: string;
|
|
1174
|
+
}
|
|
1175
|
+
|
|
1176
|
+
declare const FalconExportDialog: React__default.FC<FalconExportDialogProps>;
|
|
1177
|
+
|
|
1178
|
+
interface FilterOption {
|
|
1179
|
+
/** Label for the filter dropdown (e.g., 'Region') */
|
|
1180
|
+
label: string;
|
|
1181
|
+
/** Number of selected items by default */
|
|
1182
|
+
selected: number;
|
|
1183
|
+
/** List of selectable stores for this region */
|
|
1184
|
+
stores?: string[];
|
|
1185
|
+
}
|
|
1186
|
+
interface FalconExportReportDialogProps {
|
|
1187
|
+
/**
|
|
1188
|
+
* Dialog title
|
|
1189
|
+
* @default 'Export Report'
|
|
1190
|
+
*/
|
|
1191
|
+
title?: string;
|
|
1192
|
+
/**
|
|
1193
|
+
* Callback function triggered on dialog close
|
|
1194
|
+
*/
|
|
1195
|
+
onClose?: () => void;
|
|
1196
|
+
/**
|
|
1197
|
+
* Callback function triggered on export action
|
|
1198
|
+
* @param data - Object containing CSV and PDF selection state
|
|
1199
|
+
*/
|
|
1200
|
+
onExport?: (data: {
|
|
1201
|
+
csv: boolean;
|
|
1202
|
+
pdf: boolean;
|
|
1203
|
+
}) => void;
|
|
1204
|
+
/**
|
|
1205
|
+
* Filter options to display in the mini variant
|
|
1206
|
+
* @default DEFAULT_FILTERS
|
|
1207
|
+
*/
|
|
1208
|
+
filters?: FilterOption[];
|
|
1209
|
+
/**
|
|
1210
|
+
* Mapping for filter labels to store lists if not provided in filters
|
|
1211
|
+
*/
|
|
1212
|
+
filterStoreMapping?: Record<string, string[]>;
|
|
1213
|
+
/**
|
|
1214
|
+
* Label for the export button
|
|
1215
|
+
* @default 'Export'
|
|
1216
|
+
*/
|
|
1217
|
+
exportButtonText?: string;
|
|
1218
|
+
/**
|
|
1219
|
+
* Label for the close button
|
|
1220
|
+
* @default 'Close'
|
|
1221
|
+
*/
|
|
1222
|
+
closeButtonText?: string;
|
|
1223
|
+
/**
|
|
1224
|
+
* Initial state for the CSV export checkbox
|
|
1225
|
+
* @default true
|
|
1226
|
+
*/
|
|
1227
|
+
initialExportCsv?: boolean;
|
|
1228
|
+
/**
|
|
1229
|
+
* Initial state for the PDF export checkbox
|
|
1230
|
+
* @default false
|
|
1231
|
+
*/
|
|
1232
|
+
initialExportPdf?: boolean;
|
|
1233
|
+
/**
|
|
1234
|
+
* Primary color for export actions and checked states
|
|
1235
|
+
* @default '#401070'
|
|
1236
|
+
*/
|
|
1237
|
+
primaryColor?: string;
|
|
1238
|
+
/**
|
|
1239
|
+
* Secondary color for close action
|
|
1240
|
+
* @default '#DFDFE0'
|
|
1241
|
+
*/
|
|
1242
|
+
secondaryColor?: string;
|
|
1243
|
+
/**
|
|
1244
|
+
* Text color for the dialog title
|
|
1245
|
+
* @default '#000000'
|
|
1246
|
+
*/
|
|
1247
|
+
titleColor?: string;
|
|
1248
|
+
/**
|
|
1249
|
+
* Custom brand font for headers and labels
|
|
1250
|
+
* @default '"Neue Haas Grotesk Display Pro", Arial, sans-serif'
|
|
1251
|
+
*/
|
|
1252
|
+
brandFont?: string;
|
|
1253
|
+
/**
|
|
1254
|
+
* Custom font for buttons and main UI text
|
|
1255
|
+
* @default '"Roboto", Arial, sans-serif'
|
|
1256
|
+
*/
|
|
1257
|
+
robotoFont?: string;
|
|
1258
|
+
/** Title font size */
|
|
1259
|
+
titleFontSize?: string;
|
|
1260
|
+
/** Title font weight */
|
|
1261
|
+
titleFontWeight?: string | number;
|
|
1262
|
+
/** Filter title font size (the 'Filter' label) */
|
|
1263
|
+
filterTitleFontSize?: string;
|
|
1264
|
+
/** Filter title font weight */
|
|
1265
|
+
filterTitleFontWeight?: string | number;
|
|
1266
|
+
/** Label font size (Form labels and check labels) */
|
|
1267
|
+
labelFontSize?: string;
|
|
1268
|
+
/** Label font weight */
|
|
1269
|
+
labelFontWeight?: string | number;
|
|
1270
|
+
/** Value font size (Selected count values) */
|
|
1271
|
+
valueFontSize?: string;
|
|
1272
|
+
/** Value font weight */
|
|
1273
|
+
valueFontWeight?: string | number;
|
|
1274
|
+
/** Dialog border radius */
|
|
1275
|
+
borderRadius?: string | number;
|
|
1276
|
+
/** Dialog box shadow */
|
|
1277
|
+
boxShadow?: string;
|
|
1278
|
+
/** Export button width */
|
|
1279
|
+
exportButtonWidth?: string | number;
|
|
1280
|
+
/** Export button height */
|
|
1281
|
+
exportButtonHeight?: string | number;
|
|
1282
|
+
/** Close button width */
|
|
1283
|
+
closeButtonWidth?: string | number;
|
|
1284
|
+
/** Close button height */
|
|
1285
|
+
closeButtonHeight?: string | number;
|
|
1286
|
+
/** Filter dropdown box width */
|
|
1287
|
+
filterBoxWidth?: string | number;
|
|
1288
|
+
/** Filter dropdown box height */
|
|
1289
|
+
filterBoxHeight?: string | number;
|
|
1290
|
+
/** Text for CSV export checkbox */
|
|
1291
|
+
exportCsvText?: string;
|
|
1292
|
+
/** Text for PDF export checkbox */
|
|
1293
|
+
exportPdfText?: string;
|
|
1294
|
+
/** Background color for the regional dropdowns */
|
|
1295
|
+
dropdownBackgroundColor?: string;
|
|
1296
|
+
/** Text color for the stores in the dropdown */
|
|
1297
|
+
dropdownTextColor?: string;
|
|
1298
|
+
/** Font family for items in the dropdown */
|
|
1299
|
+
dropdownItemFontFamily?: string;
|
|
1300
|
+
/** Font size for items in the dropdown */
|
|
1301
|
+
dropdownItemFontSize?: string;
|
|
1302
|
+
/** Hover color for items in the dropdown */
|
|
1303
|
+
dropdownHoverColor?: string;
|
|
1304
|
+
/** Color for all checkboxes */
|
|
1305
|
+
checkboxColor?: string;
|
|
1306
|
+
/** Hover background color for the main export button */
|
|
1307
|
+
exportButtonHoverBg?: string;
|
|
1308
|
+
/** Hover background color for the main close button */
|
|
1309
|
+
closeButtonHoverBg?: string;
|
|
1310
|
+
/** Background color for the dropdown apply button */
|
|
1311
|
+
dropdownApplyButtonBg?: string;
|
|
1312
|
+
/** Hover background color for the dropdown apply button */
|
|
1313
|
+
dropdownApplyButtonHoverBg?: string;
|
|
1314
|
+
/** Background color for the dropdown clear button */
|
|
1315
|
+
dropdownClearButtonBg?: string;
|
|
1316
|
+
/** Hover background color for the dropdown clear button */
|
|
1317
|
+
dropdownClearButtonHoverBg?: string;
|
|
1318
|
+
}
|
|
1319
|
+
|
|
1320
|
+
declare const FalconExportReportDialog: React__default.FC<FalconExportReportDialogProps>;
|
|
1321
|
+
|
|
1322
|
+
interface FalconDIstrictFilterOption {
|
|
1323
|
+
id: string | number;
|
|
1324
|
+
label: string;
|
|
1325
|
+
}
|
|
1326
|
+
interface FalconDIstrictFilterProps {
|
|
1327
|
+
label?: string;
|
|
1328
|
+
options?: FalconDIstrictFilterOption[];
|
|
1329
|
+
value?: FalconDIstrictFilterOption[];
|
|
1330
|
+
onChange?: (value: FalconDIstrictFilterOption[]) => void;
|
|
1331
|
+
}
|
|
1332
|
+
|
|
1333
|
+
/** District filter — full implementation can be migrated from apps/docs. */
|
|
1334
|
+
declare const FalconDIstrictFilter: ({ label, options, value, onChange, }: FalconDIstrictFilterProps) => react_jsx_runtime.JSX.Element;
|
|
1335
|
+
|
|
1336
|
+
interface FalconGrayButtonProps {
|
|
1337
|
+
text: string;
|
|
1338
|
+
Icon?: ReactNode;
|
|
1339
|
+
onClick?: () => void;
|
|
1340
|
+
}
|
|
1341
|
+
|
|
1342
|
+
declare const FalconGrayButton: ({ text, Icon, onClick, }: FalconGrayButtonProps) => react_jsx_runtime.JSX.Element;
|
|
1343
|
+
|
|
1344
|
+
interface FalconPaginationProps {
|
|
1345
|
+
pageNo: number;
|
|
1346
|
+
setPageNo: (n: number) => void;
|
|
1347
|
+
perPage: number;
|
|
1348
|
+
setPerPage: (n: number) => void;
|
|
1349
|
+
totalItems: number;
|
|
1350
|
+
perPageOptions?: number[];
|
|
1351
|
+
}
|
|
1352
|
+
|
|
1353
|
+
declare const FalconPagination: ({ pageNo, setPageNo, perPage, setPerPage, totalItems, perPageOptions, }: FalconPaginationProps) => react_jsx_runtime.JSX.Element;
|
|
1354
|
+
|
|
1355
|
+
interface FalconSelectOption {
|
|
1356
|
+
value: string;
|
|
1357
|
+
label: string;
|
|
1358
|
+
}
|
|
1359
|
+
interface FalconSelectProps {
|
|
1360
|
+
label: string;
|
|
1361
|
+
value: string;
|
|
1362
|
+
onChange: (value: string) => void;
|
|
1363
|
+
options: string[] | FalconSelectOption[];
|
|
1364
|
+
disabled?: boolean;
|
|
1365
|
+
clearable?: boolean;
|
|
1366
|
+
}
|
|
1367
|
+
|
|
1368
|
+
declare const FalconSelect: ({ label, value, onChange, options, disabled, clearable, }: FalconSelectProps) => react_jsx_runtime.JSX.Element;
|
|
1369
|
+
|
|
1370
|
+
interface FalconSingleSwitchProps {
|
|
1371
|
+
color?: 'success' | 'warning' | 'error' | 'info' | 'primary' | 'secondary' | 'default';
|
|
1372
|
+
setStatus?: (status: boolean) => void;
|
|
1373
|
+
value?: boolean;
|
|
1374
|
+
onChange?: (event: React.ChangeEvent<HTMLInputElement>, checked: boolean) => void;
|
|
1375
|
+
}
|
|
1376
|
+
|
|
1377
|
+
declare const FalconSingleSwitch: ({ color, setStatus, value, onChange, }: FalconSingleSwitchProps) => react_jsx_runtime.JSX.Element;
|
|
1378
|
+
|
|
1379
|
+
interface FalconTableProps<T = Record<string, unknown>> {
|
|
1380
|
+
rows: T[];
|
|
1381
|
+
getRowId: (row: T) => string | number;
|
|
1382
|
+
columns: GridColDef[];
|
|
1383
|
+
pageSizeOptions?: number[];
|
|
1384
|
+
initialState?: {
|
|
1385
|
+
pagination?: {
|
|
1386
|
+
paginationModel: {
|
|
1387
|
+
pageSize: number;
|
|
1388
|
+
};
|
|
1389
|
+
};
|
|
1390
|
+
};
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1393
|
+
declare const FalconTable: <T extends Record<string, unknown>>({ rows, getRowId, columns, pageSizeOptions, }: FalconTableProps<T>) => react_jsx_runtime.JSX.Element;
|
|
1394
|
+
|
|
1395
|
+
interface FalconTicketColumsFilterProps {
|
|
1396
|
+
columns?: {
|
|
1397
|
+
id: string;
|
|
1398
|
+
label: string;
|
|
1399
|
+
}[];
|
|
1400
|
+
selected?: string[];
|
|
1401
|
+
onSelectionChange?: (selected: string[]) => void;
|
|
1402
|
+
}
|
|
1403
|
+
|
|
1404
|
+
/** Column filter UI — full implementation can be migrated from apps/docs. */
|
|
1405
|
+
declare const FalconTicketColumsFilter: ({ columns, selected, onSelectionChange, }: FalconTicketColumsFilterProps) => react_jsx_runtime.JSX.Element;
|
|
1406
|
+
|
|
1407
|
+
interface FalconTicketFilterProps {
|
|
1408
|
+
children: ReactNode;
|
|
1409
|
+
label?: string;
|
|
1410
|
+
open?: boolean;
|
|
1411
|
+
onOpenChange?: (open: boolean) => void;
|
|
1412
|
+
}
|
|
1413
|
+
|
|
1414
|
+
declare const FalconTicketFilter: ({ children, label, open: controlledOpen, onOpenChange, }: FalconTicketFilterProps) => react_jsx_runtime.JSX.Element;
|
|
1415
|
+
|
|
1416
|
+
/**
|
|
1417
|
+
* Ready-made **`ChartWidgetInfoPopoverContent`** for **TimePeriodFilter** (D / W / M / Y) when you want
|
|
1418
|
+
* generic help — **not** tied to **QueueTimeBreakdown** or any other specific card.
|
|
1419
|
+
*
|
|
1420
|
+
* **Use this when:** you show the period control next to charts or KPIs on any page and need a short
|
|
1421
|
+
* explanation of what the control does and why it matters, without duplicating copy in your app.
|
|
1422
|
+
*
|
|
1423
|
+
* **What it contains (for authors / Storybook):**
|
|
1424
|
+
* - **`title`:** “Time period” — names the control.
|
|
1425
|
+
* - **`description`:** Explains that switching day / week / month / year changes grouping or how the time axis is labelled.
|
|
1426
|
+
* - **`helpTitle`:** “How does it help?”
|
|
1427
|
+
* - **`helpBullets`:** (1) Align the view with your reporting window; (2) Keep period in sync with other controls on the page.
|
|
1428
|
+
*
|
|
1429
|
+
* Pass as **`infoPopover={TIME_PERIOD_FILTER_INFO_POPOVER}`** on **TimePeriodFilter**, or use your own
|
|
1430
|
+
* **`ChartWidgetInfoPopoverContent`** if you need product-specific wording.
|
|
1431
|
+
*/
|
|
1432
|
+
declare const TIME_PERIOD_FILTER_INFO_POPOVER: ChartWidgetInfoPopoverContent;
|
|
1433
|
+
/**
|
|
1434
|
+
* Info copy aligned with the **QueueTimeBreakdown** composite card (header next to D/W/M/Y).
|
|
1435
|
+
* **QueueTimeBreakdown** uses this when **`infoPopover`** is omitted on the card.
|
|
1436
|
+
* Use **`TIME_PERIOD_FILTER_INFO_POPOVER`** instead when the filter is not on that card.
|
|
1437
|
+
*/
|
|
1438
|
+
declare const TIME_PERIOD_FILTER_INFO_POPOVER_BREAKDOWN: ChartWidgetInfoPopoverContent;
|
|
1439
|
+
/** @deprecated Use {@link TIME_PERIOD_FILTER_INFO_POPOVER}. */
|
|
1440
|
+
declare const CHART_PERIOD_FILTER_INFO_POPOVER: ChartWidgetInfoPopoverContent;
|
|
1441
|
+
/** @deprecated Use {@link TIME_PERIOD_FILTER_INFO_POPOVER_BREAKDOWN}. */
|
|
1442
|
+
declare const QUEUE_TIME_BREAKDOWN_INFO_POPOVER: ChartWidgetInfoPopoverContent;
|
|
1443
|
+
/**
|
|
1444
|
+
* @deprecated Use {@link TIME_PERIOD_FILTER_INFO_POPOVER_BREAKDOWN}.
|
|
1445
|
+
*/
|
|
1446
|
+
declare const DEFAULT_QUEUE_TIME_BREAKDOWN_INFO_POPOVER: ChartWidgetInfoPopoverContent;
|
|
1447
|
+
|
|
1448
|
+
interface HeatMapLegendItem {
|
|
1449
|
+
label: string;
|
|
1450
|
+
color: string;
|
|
1451
|
+
}
|
|
1452
|
+
interface HeatMapChartLegendProps {
|
|
1453
|
+
title: string;
|
|
1454
|
+
items: HeatMapLegendItem[];
|
|
1455
|
+
gradientId: string;
|
|
1456
|
+
gradientStops: {
|
|
1457
|
+
offset: string;
|
|
1458
|
+
color: string;
|
|
1459
|
+
}[];
|
|
1460
|
+
}
|
|
1461
|
+
|
|
1462
|
+
declare const HeatMapChartLegend: ({ title, items, gradientId, gradientStops, }: HeatMapChartLegendProps) => react_jsx_runtime.JSX.Element;
|
|
966
1463
|
|
|
967
1464
|
interface ProgressBarNumberProps {
|
|
968
1465
|
number: number;
|
|
@@ -972,103 +1469,152 @@ interface ProgressBarNumberProps {
|
|
|
972
1469
|
|
|
973
1470
|
declare const ProgressBarNumber: ({ number, progress, numColor, }: ProgressBarNumberProps) => react_jsx_runtime.JSX.Element;
|
|
974
1471
|
|
|
975
|
-
/**
|
|
976
|
-
type
|
|
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 | {
|
|
1472
|
+
/** Shared max-width rules for chart cards (WalkinAnalysis-style). */
|
|
1473
|
+
type ChartCardMaxWidth = number | string | {
|
|
986
1474
|
xs?: number | string;
|
|
987
1475
|
sm?: number | string;
|
|
988
1476
|
md?: number | string;
|
|
989
1477
|
};
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
1478
|
+
|
|
1479
|
+
/** Optional inline styles merged over tooltip defaults (undefined keys keep defaults). */
|
|
1480
|
+
interface FootfallByAgeGroupsTooltipStyles {
|
|
1481
|
+
container?: CSSProperties;
|
|
1482
|
+
/** Each horizontal row in the tooltip */
|
|
1483
|
+
sectionRow?: CSSProperties;
|
|
1484
|
+
/** Prefix text like “Time:”, “Overall:” */
|
|
1485
|
+
metaLabel?: CSSProperties;
|
|
1486
|
+
/** Values next to meta labels (e.g. “11am”, total count) */
|
|
1487
|
+
metaValue?: CSSProperties;
|
|
1488
|
+
/** Colored dot before each series name */
|
|
1489
|
+
seriesDot?: CSSProperties;
|
|
1490
|
+
/** Bold series name in tooltip (short \`label\`, e.g. “Kids:”) */
|
|
1491
|
+
seriesName?: CSSProperties;
|
|
1492
|
+
/** Numeric value after series name */
|
|
1493
|
+
seriesValue?: CSSProperties;
|
|
1494
|
+
}
|
|
1495
|
+
/** Partial Recharts outer margin; omitted sides use built-in defaults. */
|
|
1496
|
+
interface FootfallByAgeGroupsChartMargin {
|
|
1497
|
+
top?: number;
|
|
1498
|
+
right?: number;
|
|
1499
|
+
bottom?: number;
|
|
1500
|
+
left?: number;
|
|
1501
|
+
}
|
|
1502
|
+
/** Optional chart chrome colors (stroke / fills). */
|
|
1503
|
+
interface FootfallByAgeGroupsChartColors {
|
|
1504
|
+
cartesianGridStroke?: string;
|
|
1505
|
+
xAxisLineStroke?: string;
|
|
1506
|
+
axisTickLineStroke?: string;
|
|
1507
|
+
stackTotalLabelFill?: string;
|
|
994
1508
|
}
|
|
1509
|
+
|
|
995
1510
|
/**
|
|
996
|
-
*
|
|
1511
|
+
* Horizontal scrolling of the plot when it is wider than the card.
|
|
1512
|
+
* - \`auto\` (default): only when \`minWidthPerCategory\` is positive **and** there are **2+** data rows.
|
|
1513
|
+
* - \`on\`: allow scroll whenever \`minWidthPerCategory\` is positive (including a single bar).
|
|
1514
|
+
* - \`off\`: never; chart width follows the viewport (\`minWidthPerCategory\` still affects nothing for width).
|
|
997
1515
|
*/
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
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”). */
|
|
1516
|
+
type FootfallByAgeGroupsHorizontalScroll = 'auto' | 'on' | 'off';
|
|
1517
|
+
interface FootfallByAgeGroupsSeries {
|
|
1518
|
+
/** Must match a numeric field on each row (e.g. \`Kids\`, \`Teens\`). */
|
|
1519
|
+
dataKey: string;
|
|
1520
|
+
/** Short name for **tooltip** rows and \`Bar\` \`name\` (e.g. \`Kids\`). */
|
|
1011
1521
|
label: string;
|
|
1012
|
-
count: number;
|
|
1013
|
-
/** Segment fill in the pie and legend swatch color. */
|
|
1014
1522
|
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
1523
|
/**
|
|
1022
|
-
* Optional
|
|
1023
|
-
*
|
|
1524
|
+
* Optional longer text for the **legend** only (e.g. \`Kids (3-12 years old)\`).
|
|
1525
|
+
* Omit to use \`label\` in the legend as well.
|
|
1024
1526
|
*/
|
|
1025
|
-
|
|
1527
|
+
legendLabel?: string;
|
|
1026
1528
|
}
|
|
1027
|
-
|
|
1529
|
+
/**
|
|
1530
|
+
* Each row is one X-axis tick; \`name\` is the label. Other keys match \`series[].dataKey\` with numeric values.
|
|
1531
|
+
*/
|
|
1532
|
+
type FootfallByAgeGroupsRow = {
|
|
1533
|
+
name: string;
|
|
1534
|
+
} & Record<string, string | number>;
|
|
1535
|
+
interface FootfallByAgeGroupsTooltipRenderContext {
|
|
1536
|
+
tooltipProps: TooltipContentProps;
|
|
1537
|
+
rows: FootfallByAgeGroupsRow[];
|
|
1538
|
+
series: FootfallByAgeGroupsSeries[];
|
|
1539
|
+
}
|
|
1540
|
+
interface FootfallByAgeGroupsProps {
|
|
1541
|
+
/** Card heading — **centered**; \`headerActions\` (if any) sit on the right without shifting it. */
|
|
1028
1542
|
title: string;
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
/**
|
|
1033
|
-
|
|
1034
|
-
* `false`: pill track only as wide as the labels.
|
|
1035
|
-
*/
|
|
1036
|
-
segmentedTabsFullWidth?: boolean;
|
|
1543
|
+
data: FootfallByAgeGroupsRow[];
|
|
1544
|
+
/** Stacked series bottom-to-top (first item is bottom of stack). */
|
|
1545
|
+
series: FootfallByAgeGroupsSeries[];
|
|
1546
|
+
/** Plot height in px. Default: 430 */
|
|
1547
|
+
chartHeight?: number;
|
|
1037
1548
|
/**
|
|
1038
|
-
*
|
|
1549
|
+
* Minimum pixels reserved per X-axis category so the chart can grow wider than the card and scroll horizontally.
|
|
1550
|
+
* Set `0` to disable (chart stays `100%` wide only). Default: **56**.
|
|
1551
|
+
* Used only when horizontal scrolling is active — see \`horizontalScroll\`.
|
|
1039
1552
|
*/
|
|
1040
|
-
|
|
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>;
|
|
1553
|
+
minWidthPerCategory?: number;
|
|
1046
1554
|
/**
|
|
1047
|
-
*
|
|
1048
|
-
* Use
|
|
1555
|
+
* When the plot may scroll horizontally. Default \`auto\`: **off** for a single row, **on** for two or more
|
|
1556
|
+
* (if \`minWidthPerCategory\` is positive). Use \`off\` to avoid a scrollbar; \`on\` to always allow it.
|
|
1049
1557
|
*/
|
|
1050
|
-
|
|
1558
|
+
horizontalScroll?: FootfallByAgeGroupsHorizontalScroll;
|
|
1051
1559
|
/**
|
|
1052
|
-
*
|
|
1053
|
-
*
|
|
1054
|
-
*
|
|
1560
|
+
* Recharts \`maxBarSize\`: caps how thick each vertical bar is when the category band is very wide
|
|
1561
|
+
* (e.g. a single region in a wide scroll area). Default: **36** px, and never wider than the category
|
|
1562
|
+
* width cap (\`minWidthPerCategory\` when positive, else **56**).
|
|
1055
1563
|
*/
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1564
|
+
maxBarSize?: number;
|
|
1565
|
+
cardMaxWidth?: ChartCardMaxWidth;
|
|
1566
|
+
/** Outer card; merged after defaults (padding, border, width, etc.). */
|
|
1567
|
+
cardSx?: SxProps$1<Theme$1>;
|
|
1568
|
+
/** Wrapper around the centered title row (relative positioning). */
|
|
1569
|
+
titleRowSx?: SxProps$1<Theme$1>;
|
|
1570
|
+
/** Card heading \`Typography\`; merged after default weight/color. */
|
|
1571
|
+
titleSx?: SxProps$1<Theme$1>;
|
|
1572
|
+
/** Under the title row. */
|
|
1573
|
+
dividerSx?: SxProps$1<Theme$1>;
|
|
1574
|
+
/** Legend flex row (when \`showLegend\`). */
|
|
1575
|
+
legendRowSx?: SxProps$1<Theme$1>;
|
|
1576
|
+
/** Each legend item row (swatch + label). */
|
|
1577
|
+
legendItemSx?: SxProps$1<Theme$1>;
|
|
1578
|
+
/** Color swatch \`Box\` in the legend. */
|
|
1579
|
+
legendSwatchSx?: SxProps$1<Theme$1>;
|
|
1580
|
+
/** Legend text \`Typography\`. */
|
|
1581
|
+
legendLabelSx?: SxProps$1<Theme$1>;
|
|
1582
|
+
/** Scrollable chart viewport. */
|
|
1583
|
+
chartScrollAreaSx?: SxProps$1<Theme$1>;
|
|
1584
|
+
/** Outer vertical \`Stack\` (card body). */
|
|
1585
|
+
stackSx?: SxProps$1<Theme$1>;
|
|
1586
|
+
/** Empty state wrapper when \`data\` is empty. */
|
|
1587
|
+
emptyStateSx?: SxProps$1<Theme$1>;
|
|
1588
|
+
/** “No data” \`Typography\`. */
|
|
1589
|
+
emptyStateTextSx?: SxProps$1<Theme$1>;
|
|
1590
|
+
/** Filters / info control — **absolutely positioned** on the right of the title row. */
|
|
1591
|
+
headerActions?: ReactNode;
|
|
1592
|
+
/** Tooltip label before the category value. Default: \`Time\` */
|
|
1593
|
+
tooltipCategoryLabel?: string;
|
|
1594
|
+
/** Tooltip label before the stacked total. Default: \`Overall\` */
|
|
1595
|
+
tooltipOverallLabel?: string;
|
|
1596
|
+
/** Merge over default tooltip inline styles. */
|
|
1597
|
+
tooltipStyles?: FootfallByAgeGroupsTooltipStyles;
|
|
1059
1598
|
/**
|
|
1060
|
-
*
|
|
1061
|
-
* There is no horizontal plot scroll on this card (pie layout); only animation applies.
|
|
1599
|
+
* Full custom tooltip renderer. When provided, default tooltip layout is skipped.
|
|
1062
1600
|
*/
|
|
1063
|
-
|
|
1064
|
-
|
|
1601
|
+
renderTooltip?: (context: FootfallByAgeGroupsTooltipRenderContext) => ReactNode;
|
|
1602
|
+
/** Color key legend above the plot (from \`series\`). Default: \`true\`. */
|
|
1603
|
+
showLegend?: boolean;
|
|
1604
|
+
/** Recharts \`BarChart\` margin; partial merge with defaults. */
|
|
1605
|
+
chartMargin?: FootfallByAgeGroupsChartMargin;
|
|
1606
|
+
/** Grid / axis / bar-top label colors. */
|
|
1607
|
+
chartColors?: FootfallByAgeGroupsChartColors;
|
|
1608
|
+
emptyStatePlaceholderProps?: ChartEmptyStateProps;
|
|
1609
|
+
/** Opacity for non-hovered stacks while another bar is hovered. Default: \`0.35\` */
|
|
1610
|
+
dimmedStackOpacity?: number;
|
|
1611
|
+
/** Recharts \`stackId\` for stacked \`Bar\`s. Default: \`footfall-by-age-groups\` */
|
|
1612
|
+
barStackId?: string;
|
|
1613
|
+
/** Copy when \`data\` is empty. Default: \`No data\` */
|
|
1614
|
+
emptyStateText?: string;
|
|
1065
1615
|
}
|
|
1066
1616
|
|
|
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;
|
|
1617
|
+
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
1618
|
|
|
1073
1619
|
/** Optional inline styles merged over tooltip defaults (undefined keys keep defaults). */
|
|
1074
1620
|
interface FootfallByGenderTooltipStyles {
|
|
@@ -1112,6 +1658,10 @@ interface FootfallByGenderRow {
|
|
|
1112
1658
|
male: number;
|
|
1113
1659
|
female: number;
|
|
1114
1660
|
}
|
|
1661
|
+
interface FootfallByGenderTooltipRenderContext {
|
|
1662
|
+
tooltipProps: TooltipContentProps;
|
|
1663
|
+
rows: FootfallByGenderRow[];
|
|
1664
|
+
}
|
|
1115
1665
|
interface FootfallByGenderProps {
|
|
1116
1666
|
/** Card heading — **centered**; \`headerActions\` (if any) sit on the right without shifting it. */
|
|
1117
1667
|
title: string;
|
|
@@ -1191,10 +1741,15 @@ interface FootfallByGenderProps {
|
|
|
1191
1741
|
tooltipOverallLabel?: string;
|
|
1192
1742
|
/** Merge over default tooltip inline styles. */
|
|
1193
1743
|
tooltipStyles?: FootfallByGenderTooltipStyles;
|
|
1744
|
+
/**
|
|
1745
|
+
* Full custom tooltip renderer. When provided, default tooltip layout is skipped.
|
|
1746
|
+
*/
|
|
1747
|
+
renderTooltip?: (context: FootfallByGenderTooltipRenderContext) => ReactNode;
|
|
1194
1748
|
/** Recharts \`BarChart\` margin; partial merge after defaults (your values override). */
|
|
1195
1749
|
chartMargin?: FootfallByGenderChartMargin;
|
|
1196
1750
|
/** Grid / axis / bar-top label colors. */
|
|
1197
1751
|
chartColors?: FootfallByGenderChartColors;
|
|
1752
|
+
emptyStatePlaceholderProps?: ChartEmptyStateProps;
|
|
1198
1753
|
/**
|
|
1199
1754
|
* Y-axis tick formatter. Default: compact \`k\` suffix for thousands.
|
|
1200
1755
|
*/
|
|
@@ -1206,7 +1761,7 @@ interface FootfallByGenderProps {
|
|
|
1206
1761
|
/**
|
|
1207
1762
|
* Grouped bar chart: two series (male / female) per category, with hover dimming and a custom tooltip.
|
|
1208
1763
|
*/
|
|
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,
|
|
1764
|
+
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
1765
|
|
|
1211
1766
|
interface PasserbyConversionTooltipStyles {
|
|
1212
1767
|
container?: CSSProperties;
|
|
@@ -1248,6 +1803,11 @@ interface PasserbyConversionRow {
|
|
|
1248
1803
|
*/
|
|
1249
1804
|
conversion: number | null;
|
|
1250
1805
|
}
|
|
1806
|
+
interface PasserbyConversionTooltipRenderContext {
|
|
1807
|
+
tooltipProps: TooltipContentProps;
|
|
1808
|
+
rows: PasserbyConversionRow[];
|
|
1809
|
+
showConversionLine: boolean;
|
|
1810
|
+
}
|
|
1251
1811
|
interface PasserbyConversionProps {
|
|
1252
1812
|
title: string;
|
|
1253
1813
|
data: PasserbyConversionRow[];
|
|
@@ -1318,6 +1878,10 @@ interface PasserbyConversionProps {
|
|
|
1318
1878
|
/** Tick formatter for the right (conversion) Y-axis. */
|
|
1319
1879
|
conversionAxisTickFormatter?: (value: number) => string;
|
|
1320
1880
|
tooltipStyles?: PasserbyConversionTooltipStyles;
|
|
1881
|
+
/**
|
|
1882
|
+
* Full custom tooltip renderer. When provided, default tooltip layout is skipped.
|
|
1883
|
+
*/
|
|
1884
|
+
renderTooltip?: (context: PasserbyConversionTooltipRenderContext) => ReactNode;
|
|
1321
1885
|
showLegend?: boolean;
|
|
1322
1886
|
/**
|
|
1323
1887
|
* When `true` and at least one row has a finite `conversion`, render the line and right axis.
|
|
@@ -1327,6 +1891,7 @@ interface PasserbyConversionProps {
|
|
|
1327
1891
|
showBarValueLabels?: boolean;
|
|
1328
1892
|
chartMargin?: PasserbyConversionChartMargin;
|
|
1329
1893
|
chartColors?: PasserbyConversionChartColors;
|
|
1894
|
+
emptyStatePlaceholderProps?: ChartEmptyStateProps;
|
|
1330
1895
|
emptyStateText?: string;
|
|
1331
1896
|
/**
|
|
1332
1897
|
* When `true`, Recharts animates bars and the conversion line on first draw and when values change.
|
|
@@ -1342,7 +1907,129 @@ interface PasserbyConversionProps {
|
|
|
1342
1907
|
scrollChartToEndOnDataChange?: boolean;
|
|
1343
1908
|
}
|
|
1344
1909
|
|
|
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,
|
|
1910
|
+
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;
|
|
1911
|
+
|
|
1912
|
+
/** Pie diameter: fixed px, or per-breakpoint (`xs` / `sm` / `md` match MUI breakpoints). */
|
|
1913
|
+
type WalkinAnalysisPieSize = number | {
|
|
1914
|
+
xs?: number;
|
|
1915
|
+
sm?: number;
|
|
1916
|
+
md?: number;
|
|
1917
|
+
};
|
|
1918
|
+
/**
|
|
1919
|
+
* Card `max-width`: a number is pixels on all breakpoints; a string is any CSS length;
|
|
1920
|
+
* an object sets `maxWidth` per breakpoint (numbers become px). Omitted keys use `100%` (xs) and `640` (sm).
|
|
1921
|
+
*/
|
|
1922
|
+
type WalkinAnalysisCardMaxWidth = number | string | {
|
|
1923
|
+
xs?: number | string;
|
|
1924
|
+
sm?: number | string;
|
|
1925
|
+
md?: number | string;
|
|
1926
|
+
};
|
|
1927
|
+
/** Same shape as `ChartWidgetSegmentedTab`; rendered with `ChartWidgetSegmentedTabs` inside WalkinAnalysis. */
|
|
1928
|
+
interface WalkinAnalysisTab {
|
|
1929
|
+
id: string;
|
|
1930
|
+
label: string;
|
|
1931
|
+
}
|
|
1932
|
+
/** Optional `sx` for title row layout, title text, legend column layout, and legend typographies. */
|
|
1933
|
+
interface WalkinAnalysisCustomization {
|
|
1934
|
+
/** Merged onto the **title row** `Stack` (title + `headerActions`) after built-in styles. */
|
|
1935
|
+
titleRowStackSx?: SxProps$1<Theme$1>;
|
|
1936
|
+
/** Merged onto the card **title** `Typography` after built-in styles. */
|
|
1937
|
+
titleSx?: SxProps$1<Theme$1>;
|
|
1938
|
+
/** Merged onto the **legend column** `Stack` (list of slice rows) after built-in styles. */
|
|
1939
|
+
legendColumnStackSx?: SxProps$1<Theme$1>;
|
|
1940
|
+
/** Merged onto each legend **label** and **count** `Typography` after built-in styles. */
|
|
1941
|
+
legendTypographySx?: SxProps$1<Theme$1>;
|
|
1942
|
+
}
|
|
1943
|
+
/**
|
|
1944
|
+
* Optional `fontSize` overrides (number → px). Omitted keys keep the built-in defaults.
|
|
1945
|
+
*/
|
|
1946
|
+
interface WalkinAnalysisTypography {
|
|
1947
|
+
title?: number | string;
|
|
1948
|
+
tabs?: number | string;
|
|
1949
|
+
piePercent?: number | string;
|
|
1950
|
+
legendLabel?: number | string;
|
|
1951
|
+
legendValue?: number | string;
|
|
1952
|
+
tooltipTitle?: number | string;
|
|
1953
|
+
tooltipValue?: number | string;
|
|
1954
|
+
emptyState?: number | string;
|
|
1955
|
+
}
|
|
1956
|
+
interface WalkinAnalysisSlice {
|
|
1957
|
+
id: string;
|
|
1958
|
+
/** Legend title and accessible pie summary (e.g. “Individual Walk-ins”). */
|
|
1959
|
+
label: string;
|
|
1960
|
+
count: number;
|
|
1961
|
+
/** Segment fill in the pie and legend swatch color. */
|
|
1962
|
+
color: string;
|
|
1963
|
+
/** Legend title text color (default **`#0f172a`**, lifestyle section title). */
|
|
1964
|
+
legendLabelColor?: string;
|
|
1965
|
+
/** Legend count / percentage line color (default **`#64748B`**). */
|
|
1966
|
+
legendValueColor?: string;
|
|
1967
|
+
/** Fill for the percentage label inside the pie slice (default `#fff`). */
|
|
1968
|
+
segmentPercentColor?: string;
|
|
1969
|
+
/**
|
|
1970
|
+
* Optional control after the legend count line — e.g. **`<ChartWidgetInfoButton popover={…} />`**
|
|
1971
|
+
* from `@bpfdev/oly-ui` so legend info matches the header info pattern.
|
|
1972
|
+
*/
|
|
1973
|
+
legendInfo?: ReactNode;
|
|
1974
|
+
}
|
|
1975
|
+
interface WalkinAnalysisProps {
|
|
1976
|
+
title: string;
|
|
1977
|
+
tabs: WalkinAnalysisTab[];
|
|
1978
|
+
activeTabId: string;
|
|
1979
|
+
onTabChange: (tabId: string) => void;
|
|
1980
|
+
/**
|
|
1981
|
+
* Omit or `true`: scope tabs span the card width (default — forwarded as **ChartWidgetSegmentedTabs** `fullWidth`).
|
|
1982
|
+
* `false`: pill track only as wide as the labels.
|
|
1983
|
+
*/
|
|
1984
|
+
segmentedTabsFullWidth?: boolean;
|
|
1985
|
+
/**
|
|
1986
|
+
* Merged onto **ChartWidgetSegmentedTabs** `rootSx` after `fullWidth` width rules — use for `width`, `maxWidth`, alignment, etc.
|
|
1987
|
+
*/
|
|
1988
|
+
segmentedTabsSx?: SxProps$1<Theme$1>;
|
|
1989
|
+
/** Each item’s `label`, `count`, and `color` drive pie segments and legend; optional colors override legend / in-slice % text. */
|
|
1990
|
+
slices: WalkinAnalysisSlice[];
|
|
1991
|
+
/** Right side of the title row: compose `WidgetHeaderFilter`, `ChartWidgetHeaderSeparator`, `ChartWidgetInfoButton`, or custom nodes. */
|
|
1992
|
+
headerActions?: ReactNode;
|
|
1993
|
+
cardSx?: SxProps$1<Theme$1>;
|
|
1994
|
+
/**
|
|
1995
|
+
* Card maximum width. Defaults to full width on xs and 640px from sm up.
|
|
1996
|
+
* Use `cardSx` for further layout overrides (it merges after this).
|
|
1997
|
+
*/
|
|
1998
|
+
cardMaxWidth?: WalkinAnalysisCardMaxWidth;
|
|
1999
|
+
/**
|
|
2000
|
+
* Pie diameter (px). Use a number for the same size on all screens.
|
|
2001
|
+
* Use an object to set sizes at `xs`, `sm`, and `md` (unset keys use 180, 220, 260).
|
|
2002
|
+
* Omit for built-in responsive sizing across breakpoints.
|
|
2003
|
+
*/
|
|
2004
|
+
pieSize?: WalkinAnalysisPieSize;
|
|
2005
|
+
/** Per-region `fontSize` overrides (numbers are px). */
|
|
2006
|
+
typography?: WalkinAnalysisTypography;
|
|
2007
|
+
/** Targeted `sx` for title row, legend column, and typographies (avoid brittle `cardSx` descendant selectors). */
|
|
2008
|
+
customization?: WalkinAnalysisCustomization;
|
|
2009
|
+
emptyStatePlaceholderProps?: ChartEmptyStateProps;
|
|
2010
|
+
/**
|
|
2011
|
+
* Recharts **`Pie`** animation. Defaults **true** / **400** ms.
|
|
2012
|
+
* There is no horizontal plot scroll on this card (pie layout); only animation applies.
|
|
2013
|
+
*/
|
|
2014
|
+
isChartAnimationActive?: boolean;
|
|
2015
|
+
chartAnimationDuration?: number;
|
|
2016
|
+
/**
|
|
2017
|
+
* Full custom tooltip renderer. When provided, default tooltip layout is skipped.
|
|
2018
|
+
*/
|
|
2019
|
+
renderTooltip?: (context: WalkinAnalysisTooltipRenderContext) => ReactNode;
|
|
2020
|
+
}
|
|
2021
|
+
interface WalkinAnalysisTooltipRenderContext {
|
|
2022
|
+
tooltipProps: TooltipContentProps;
|
|
2023
|
+
slices: WalkinAnalysisSlice[];
|
|
2024
|
+
total: number;
|
|
2025
|
+
activeTabId: string;
|
|
2026
|
+
}
|
|
2027
|
+
|
|
2028
|
+
/**
|
|
2029
|
+
* Walk-in style analysis card: title row (optional `headerActions`), tabs, Recharts pie, legend.
|
|
2030
|
+
* Pie and legend are driven by `slices` (`label`, `count`, `color`, optional legend / segment % colors).
|
|
2031
|
+
*/
|
|
2032
|
+
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
2033
|
|
|
1347
2034
|
interface WalkinTrafficTooltipStyles {
|
|
1348
2035
|
/** Outer flex wrapper (arrow + card). */
|
|
@@ -1388,6 +2075,11 @@ interface WalkinTrafficRow {
|
|
|
1388
2075
|
/** Footfall growth % vs last year for this slot; drives **FF Growth%** row and direction icon. */
|
|
1389
2076
|
ffGrowthPercent?: number | null;
|
|
1390
2077
|
}
|
|
2078
|
+
interface WalkinTrafficTooltipRenderContext {
|
|
2079
|
+
tooltipProps: TooltipContentProps;
|
|
2080
|
+
rows: WalkinTrafficRow[];
|
|
2081
|
+
showTrendLine: boolean;
|
|
2082
|
+
}
|
|
1391
2083
|
interface WalkinTrafficProps {
|
|
1392
2084
|
title: string;
|
|
1393
2085
|
data: WalkinTrafficRow[];
|
|
@@ -1434,6 +2126,10 @@ interface WalkinTrafficProps {
|
|
|
1434
2126
|
/** @deprecated Use **`tooltipTimeLabel`** instead. */
|
|
1435
2127
|
tooltipHourLabel?: string;
|
|
1436
2128
|
tooltipStyles?: WalkinTrafficTooltipStyles;
|
|
2129
|
+
/**
|
|
2130
|
+
* Full custom tooltip renderer. When provided, default tooltip layout is skipped.
|
|
2131
|
+
*/
|
|
2132
|
+
renderTooltip?: (context: WalkinTrafficTooltipRenderContext) => ReactNode;
|
|
1437
2133
|
showLegend?: boolean;
|
|
1438
2134
|
/**
|
|
1439
2135
|
* When `true` and at least one row has a finite `trend`, render the line.
|
|
@@ -1445,6 +2141,7 @@ interface WalkinTrafficProps {
|
|
|
1445
2141
|
showBarValueLabels?: boolean;
|
|
1446
2142
|
chartMargin?: WalkinTrafficChartMargin;
|
|
1447
2143
|
chartColors?: WalkinTrafficChartColors;
|
|
2144
|
+
emptyStatePlaceholderProps?: ChartEmptyStateProps;
|
|
1448
2145
|
yAxisTickFormatter?: (value: number) => string;
|
|
1449
2146
|
emptyStateText?: string;
|
|
1450
2147
|
/**
|
|
@@ -1460,7 +2157,190 @@ interface WalkinTrafficProps {
|
|
|
1460
2157
|
scrollChartToEndOnDataChange?: boolean;
|
|
1461
2158
|
}
|
|
1462
2159
|
|
|
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,
|
|
2160
|
+
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;
|
|
2161
|
+
|
|
2162
|
+
/** Primary line + tooltip fill (violet). */
|
|
2163
|
+
declare const BILLING_COUNTER_LINE_PRIMARY: "#7C3AED";
|
|
2164
|
+
/** Default pill track behind segmented tabs. */
|
|
2165
|
+
declare const BILLING_COUNTER_TABS_TRACK_BG: "#E8E8E8";
|
|
2166
|
+
|
|
2167
|
+
type BillingCounterChartMargin = {
|
|
2168
|
+
top?: number;
|
|
2169
|
+
right?: number;
|
|
2170
|
+
bottom?: number;
|
|
2171
|
+
left?: number;
|
|
2172
|
+
};
|
|
2173
|
+
/**
|
|
2174
|
+
* Simple panel tooltip: thin **grey bar** on top, then white body. Each line uses **muted prefix**
|
|
2175
|
+
* (**Date:** / **Total:**) + **bold dark value** (same pattern as the earlier two-row design).
|
|
2176
|
+
*/
|
|
2177
|
+
type BillingCounterAnalyticsTooltipTheme = {
|
|
2178
|
+
borderColor?: string;
|
|
2179
|
+
borderRadiusPx?: number;
|
|
2180
|
+
boxShadow?: string;
|
|
2181
|
+
/** Grey strip at the top (no text). @default **#E5E7EB** */
|
|
2182
|
+
topBarBackground?: string;
|
|
2183
|
+
/** Height of the grey strip in px. @default **8** */
|
|
2184
|
+
topBarHeightPx?: number;
|
|
2185
|
+
bodyBackground?: string;
|
|
2186
|
+
/** **Date:** / **Total:** label colour. @default **#6B7280** */
|
|
2187
|
+
prefixColor?: string;
|
|
2188
|
+
/** Date string and numeric value colour. @default **#111827** */
|
|
2189
|
+
valueColor?: string;
|
|
2190
|
+
/**
|
|
2191
|
+
* When set without **prefixColor** / **valueColor**, both prefix and value use this single colour
|
|
2192
|
+
* (legacy / compact override).
|
|
2193
|
+
*/
|
|
2194
|
+
textColor?: string;
|
|
2195
|
+
fontSizePx?: number;
|
|
2196
|
+
/** Space between the two text lines in px. @default **6** */
|
|
2197
|
+
lineGapPx?: number;
|
|
2198
|
+
dateLabelPrefix?: string;
|
|
2199
|
+
totalLabelPrefix?: string;
|
|
2200
|
+
/** **Date:** / **Total:** — default **400** */
|
|
2201
|
+
prefixFontWeight?: number;
|
|
2202
|
+
/** Time label and numeric value — default **700** */
|
|
2203
|
+
valueFontWeight?: number;
|
|
2204
|
+
bodyStyle?: CSSProperties;
|
|
2205
|
+
};
|
|
2206
|
+
/**
|
|
2207
|
+
* Optional layout / theme overrides for **BillingCounterAnalytics** and its children.
|
|
2208
|
+
* Pass via **`customization`** on the component or **BillingCounterAnalyticsCustomizationProvider**.
|
|
2209
|
+
*/
|
|
2210
|
+
type BillingCounterAnalyticsCustomization = {
|
|
2211
|
+
rootCard?: {
|
|
2212
|
+
sx?: SxProps$1<Theme$1>;
|
|
2213
|
+
elevation?: number;
|
|
2214
|
+
};
|
|
2215
|
+
header?: {
|
|
2216
|
+
titleSx?: SxProps$1<Theme$1>;
|
|
2217
|
+
};
|
|
2218
|
+
/** Merged into **ChartWidgetSegmentedTabs** alongside billing defaults. */
|
|
2219
|
+
segmentedTabs?: {
|
|
2220
|
+
trackBackgroundColor?: string;
|
|
2221
|
+
activeTabBackground?: string;
|
|
2222
|
+
activeTabColor?: string;
|
|
2223
|
+
inactiveTabColor?: string;
|
|
2224
|
+
activeTabBoxShadow?: string;
|
|
2225
|
+
rootSx?: SxProps$1<Theme$1>;
|
|
2226
|
+
tabFontSize?: number | string;
|
|
2227
|
+
fullWidth?: boolean;
|
|
2228
|
+
/** Segmented tab flex layout; billing defaults to **equalWidth** (tabs fill the track). */
|
|
2229
|
+
tabLayout?: ChartWidgetSegmentedTabLayout;
|
|
2230
|
+
activeTabFontWeight?: number;
|
|
2231
|
+
inactiveTabFontWeight?: number;
|
|
2232
|
+
};
|
|
2233
|
+
lineChart?: {
|
|
2234
|
+
heightPx?: number;
|
|
2235
|
+
lineColor?: string;
|
|
2236
|
+
lineStrokeWidth?: number;
|
|
2237
|
+
gridStroke?: string;
|
|
2238
|
+
gridStrokeDasharray?: string;
|
|
2239
|
+
margin?: BillingCounterChartMargin;
|
|
2240
|
+
xAxisTickFill?: string;
|
|
2241
|
+
yAxisTickFill?: string;
|
|
2242
|
+
yAxisWidth?: number;
|
|
2243
|
+
tooltip?: BillingCounterAnalyticsTooltipTheme;
|
|
2244
|
+
cursorStroke?: string;
|
|
2245
|
+
cursorStrokeDasharray?: string;
|
|
2246
|
+
/**
|
|
2247
|
+
* Line path: **`linear`** = straight segments (sharp corners). **`monotone`** = smooth curve.
|
|
2248
|
+
* @default **`linear`**
|
|
2249
|
+
*/
|
|
2250
|
+
lineType?: 'linear' | 'monotone' | 'step' | 'stepBefore' | 'stepAfter' | 'natural';
|
|
2251
|
+
};
|
|
2252
|
+
};
|
|
2253
|
+
|
|
2254
|
+
declare const DEFAULT_BILLING_COUNTER_ANALYTICS_INFO_POPOVER: ChartWidgetInfoPopoverContent;
|
|
2255
|
+
|
|
2256
|
+
type BillingCounterAnalyticsPoint = {
|
|
2257
|
+
/** X-axis tick (e.g. Jan 12, Today). */
|
|
2258
|
+
label: string;
|
|
2259
|
+
value: number;
|
|
2260
|
+
};
|
|
2261
|
+
type BillingCounterAnalyticsTooltipRenderContext = {
|
|
2262
|
+
tooltipProps: TooltipContentProps;
|
|
2263
|
+
data: BillingCounterAnalyticsPoint[];
|
|
2264
|
+
activeTabId: string;
|
|
2265
|
+
};
|
|
2266
|
+
type BillingCounterAnalyticsProps = {
|
|
2267
|
+
/** Card title (left side of the header row). */
|
|
2268
|
+
title?: string;
|
|
2269
|
+
tabs: ChartWidgetSegmentedTab[];
|
|
2270
|
+
activeTabId: string;
|
|
2271
|
+
onTabChange: (tabId: string) => void;
|
|
2272
|
+
/**
|
|
2273
|
+
* Series for the active tab only. Ignored when **`seriesByTabId`** is set.
|
|
2274
|
+
*/
|
|
2275
|
+
data?: BillingCounterAnalyticsPoint[];
|
|
2276
|
+
/**
|
|
2277
|
+
* All tab series keyed by **`tabs[].id`**. When set, overrides **`data`**.
|
|
2278
|
+
*/
|
|
2279
|
+
seriesByTabId?: Record<string, BillingCounterAnalyticsPoint[]>;
|
|
2280
|
+
/** Y-axis domain. @default `[0, 100]` */
|
|
2281
|
+
yAxisDomain?: [number, number];
|
|
2282
|
+
/** Y-axis tick values. @default `[20, 40, 60, 80, 100]` */
|
|
2283
|
+
yAxisTicks?: number[];
|
|
2284
|
+
/**
|
|
2285
|
+
* Header info popover. Defaults to built-in copy; **`null`** hides separator + info button.
|
|
2286
|
+
*/
|
|
2287
|
+
infoPopover?: ChartWidgetInfoPopoverContent | null;
|
|
2288
|
+
/**
|
|
2289
|
+
* Full custom tooltip renderer. When provided, default tooltip layout is skipped.
|
|
2290
|
+
*/
|
|
2291
|
+
renderTooltip?: (context: BillingCounterAnalyticsTooltipRenderContext) => ReactNode;
|
|
2292
|
+
emptyStatePlaceholderProps?: ChartEmptyStateProps;
|
|
2293
|
+
customization?: BillingCounterAnalyticsCustomization;
|
|
2294
|
+
};
|
|
2295
|
+
|
|
2296
|
+
declare const billingCounterDefaultTabs: ChartWidgetSegmentedTab[];
|
|
2297
|
+
/** Demo datasets aligned with **billingCounterDefaultTabs** ids. */
|
|
2298
|
+
declare const billingCounterMockSeriesByTabId: Record<string, BillingCounterAnalyticsPoint[]>;
|
|
2299
|
+
|
|
2300
|
+
/**
|
|
2301
|
+
* Billing counter analytics card: title row (optional info), pill tabs, Recharts line chart with violet styling.
|
|
2302
|
+
*/
|
|
2303
|
+
declare function BillingCounterAnalytics({ title, tabs, activeTabId, onTabChange, data, seriesByTabId, yAxisDomain, yAxisTicks, infoPopover, renderTooltip, emptyStatePlaceholderProps, customization, }: BillingCounterAnalyticsProps): React$1.ReactElement;
|
|
2304
|
+
|
|
2305
|
+
type BillingCounterAnalyticsCustomizationProviderProps = {
|
|
2306
|
+
value: BillingCounterAnalyticsCustomization;
|
|
2307
|
+
children: React$1.ReactNode;
|
|
2308
|
+
};
|
|
2309
|
+
declare function BillingCounterAnalyticsCustomizationProvider({ value, children, }: BillingCounterAnalyticsCustomizationProviderProps): React$1.ReactElement;
|
|
2310
|
+
declare function useBillingCounterAnalyticsCustomization(): BillingCounterAnalyticsCustomization;
|
|
2311
|
+
|
|
2312
|
+
/**
|
|
2313
|
+
* Shared queue-time visualization palette (stacked bar, donut, area).
|
|
2314
|
+
* Four violet shades, light → dark (segment index order) — pill bar / donut / area.
|
|
2315
|
+
*/
|
|
2316
|
+
declare const QUEUE_CHART_COLORS: readonly ["#E9E5FF", "#C4B5FD", "#8B5CF6", "#6D28D9"];
|
|
2317
|
+
/** Thin horizontal stacked bar height (px); pill radius uses half of this. */
|
|
2318
|
+
declare const QUEUE_STACKED_BAR_THICKNESS_PX = 8;
|
|
2319
|
+
|
|
2320
|
+
type QueueTimeBreakdownCustomizationProviderProps = {
|
|
2321
|
+
value: QueueTimeBreakdownCustomization;
|
|
2322
|
+
children: React$1.ReactNode;
|
|
2323
|
+
};
|
|
2324
|
+
declare function QueueTimeBreakdownCustomizationProvider({ value, children, }: QueueTimeBreakdownCustomizationProviderProps): React$1.ReactElement;
|
|
2325
|
+
declare function useQueueTimeBreakdownCustomization(): QueueTimeBreakdownCustomization;
|
|
2326
|
+
|
|
2327
|
+
declare function mergeCss(a: CSSProperties, b?: CSSProperties): CSSProperties;
|
|
2328
|
+
declare function mergeSx(...parts: Array<SxProps$1<Theme$1> | undefined>): SxProps$1<Theme$1> | undefined;
|
|
2329
|
+
declare function mergeRechartsTooltipStyles(overrides?: QueueTimeRechartsTooltipTheme): {
|
|
2330
|
+
contentStyle: CSSProperties;
|
|
2331
|
+
itemStyle: CSSProperties;
|
|
2332
|
+
labelStyle: CSSProperties;
|
|
2333
|
+
wrapperStyle: CSSProperties;
|
|
2334
|
+
};
|
|
2335
|
+
declare function mergeAreaTooltipStyles(overrides?: QueueTimeAreaTooltipTheme): Required<QueueTimeAreaTooltipTheme>;
|
|
2336
|
+
|
|
2337
|
+
/** Demo data for Storybook / prototyping. */
|
|
2338
|
+
declare function generateMockPerformanceData(): QueueTimeBreakdownBarRow[];
|
|
2339
|
+
|
|
2340
|
+
/**
|
|
2341
|
+
* Queue time breakdown dashboard widget: stacked bars, queue buckets, donut comparison, area chart (Recharts).
|
|
2342
|
+
*/
|
|
2343
|
+
declare function QueueTimeBreakdown({ data, Donut_data, donutYesterdayData, headerImageSrc, headlineTotal, headlineSubtitle, dataComparisonTitle, queueBucketLegend, title, infoPopover, headlineInfoPopover, renderAreaTooltip, renderDonutTooltip, renderStackedBarTooltip, customization, }: QueueTimeBreakdownProps): React$1.ReactElement;
|
|
1464
2344
|
|
|
1465
2345
|
/**
|
|
1466
2346
|
* Treemap data helpers for FootFallHeatMap.
|
|
@@ -1569,10 +2449,38 @@ declare function metricForNode(node: unknown, sortBy: 'walkins' | 'dwell'): numb
|
|
|
1569
2449
|
/** Read optional `zone_kpi_strip` / `zoneKpiStrip` from a hierarchy or flat API node. */
|
|
1570
2450
|
declare function parseZoneKpiStripFromRaw(node: Record<string, unknown>): ZoneKpiStripPayload | undefined;
|
|
1571
2451
|
declare function hashColor(seed: string): string;
|
|
1572
|
-
|
|
2452
|
+
/**
|
|
2453
|
+
* Optional treemap tile fill: **vivid** HSL tuning from **`hashColor(seed)`**, or a full **`tileColorFromSeed`** override.
|
|
2454
|
+
* Pass **`treemap.tileColors`** on **`FootFallHeatMapView`**, or use **`createTreemapTileColorResolver`** inside **`tree.buildNodes`**.
|
|
2455
|
+
*/
|
|
2456
|
+
type FootFallHeatMapTreemapColorCustomization = {
|
|
2457
|
+
/** Replace the built-in vivid / hash pipeline entirely. */
|
|
2458
|
+
tileColorFromSeed?: (seed: string) => string;
|
|
2459
|
+
/** Multiply base saturation after conversion to HSL. @default **1.48** */
|
|
2460
|
+
saturationBoost?: number;
|
|
2461
|
+
/** Added after boost; result is clamped to **1**. @default **0.1** */
|
|
2462
|
+
saturationFloor?: number;
|
|
2463
|
+
/** Clamp lightness lower bound (**0–1**). @default **0.38** */
|
|
2464
|
+
lightnessClampMin?: number;
|
|
2465
|
+
/** Clamp lightness upper bound (**0–1**). @default **0.55** */
|
|
2466
|
+
lightnessClampMax?: number;
|
|
2467
|
+
/** Scale base lightness from hash before clamp. @default **0.96** */
|
|
2468
|
+
lightnessScale?: number;
|
|
2469
|
+
/** Offset after scale. @default **0.02** */
|
|
2470
|
+
lightnessOffset?: number;
|
|
2471
|
+
};
|
|
2472
|
+
/**
|
|
2473
|
+
* - **`undefined` / `null`** → **`hashColor`** only.
|
|
2474
|
+
* - **`{ tileColorFromSeed }`** → use that resolver.
|
|
2475
|
+
* - **Any other object** (including **`{}`**) → vivid HSL pipeline with defaults merged from **`customization`**.
|
|
2476
|
+
*/
|
|
2477
|
+
declare function createTreemapTileColorResolver(customization?: FootFallHeatMapTreemapColorCustomization | null): (seed: string) => string;
|
|
2478
|
+
declare function buildTreemapNodes({ container, sortBy, pathKey, tileColorFromSeed, }: {
|
|
1573
2479
|
container: Record<string, unknown>;
|
|
1574
2480
|
sortBy: 'walkins' | 'dwell';
|
|
1575
2481
|
pathKey: string;
|
|
2482
|
+
/** When set, used for `color`; otherwise **`hashColor(\`${pathKey}/${name}\`)`**. */
|
|
2483
|
+
tileColorFromSeed?: (seed: string) => string;
|
|
1576
2484
|
}): TreemapNode[];
|
|
1577
2485
|
declare function getNestedList(payload: TreemapNode & {
|
|
1578
2486
|
children?: TreemapNode[];
|
|
@@ -1607,6 +2515,20 @@ type FootFallHeatMapIcons = {
|
|
|
1607
2515
|
/** Iconify id for the title-row info button. */
|
|
1608
2516
|
headerInfo?: string;
|
|
1609
2517
|
};
|
|
2518
|
+
/**
|
|
2519
|
+
* Optional `sx` for visitor/dwell **metric chips** inside each treemap `foreignObject` tile
|
|
2520
|
+
* (replaces brittle `& foreignObject > .MuiStack-root …` overrides on a parent wrapper).
|
|
2521
|
+
*/
|
|
2522
|
+
type FootFallHeatMapTileMetricsCustomization = {
|
|
2523
|
+
/** Merged onto the **row** `Stack` that wraps both metric pills (below title / %). */
|
|
2524
|
+
metricsRowStackSx?: SxProps$1<Theme$1>;
|
|
2525
|
+
/** Merged onto each **pill** `Stack` (visitors + dwell) after built-in chip styles. */
|
|
2526
|
+
metricPillStackSx?: SxProps$1<Theme$1>;
|
|
2527
|
+
/** Merged onto the **numeric Typography** inside each pill after built-in styles. */
|
|
2528
|
+
metricPillValueTypographySx?: SxProps$1<Theme$1>;
|
|
2529
|
+
/** Merged onto the **icon circle `Box`** inside each pill after built-in styles. */
|
|
2530
|
+
metricPillIconBoxSx?: SxProps$1<Theme$1>;
|
|
2531
|
+
};
|
|
1610
2532
|
type FootFallHeatMapTreemapLayout = {
|
|
1611
2533
|
/** Pixel height when a breadcrumb strip is visible above the chart. */
|
|
1612
2534
|
heightWithBreadcrumb?: number;
|
|
@@ -1622,6 +2544,13 @@ type FootFallHeatMapTreemapLayout = {
|
|
|
1622
2544
|
fill?: string;
|
|
1623
2545
|
/** MUI `sx` merged onto the blank terminal-details body below the KPI strip. */
|
|
1624
2546
|
leafDetailsBodySx?: SxProps$1<Theme$1>;
|
|
2547
|
+
/** Per-tile visitor/dwell metric chip styling (merged on real `Stack` / `Typography` / `Box` nodes). */
|
|
2548
|
+
tileMetrics?: FootFallHeatMapTileMetricsCustomization;
|
|
2549
|
+
/**
|
|
2550
|
+
* Treemap tile **fill** tuning: vivid HSL pipeline from **`hashColor(seed)`**, or a full **`tileColorFromSeed`** override.
|
|
2551
|
+
* Wired into default **`buildTreemapNodes`** and passed as **`options.tileColorFromSeed`** to **`tree.buildNodes`**.
|
|
2552
|
+
*/
|
|
2553
|
+
tileColors?: FootFallHeatMapTreemapColorCustomization;
|
|
1625
2554
|
};
|
|
1626
2555
|
type FootFallHeatMapTreeOptions = {
|
|
1627
2556
|
/** Starting hierarchy level shown in treemap for hierarchical payloads. */
|
|
@@ -1657,6 +2586,8 @@ type FootFallHeatMapTreeOptions = {
|
|
|
1657
2586
|
*/
|
|
1658
2587
|
buildNodes?: (initialData: ZoneAnalyticsHierarchy | ZoneAnalyticsFlatItem[] | null, options: {
|
|
1659
2588
|
sortBy: 'walkins' | 'dwell';
|
|
2589
|
+
/** From **`treemap.tileColors`** — use for tile `color` fields (same resolver as built-in tree). */
|
|
2590
|
+
tileColorFromSeed?: (seed: string) => string;
|
|
1660
2591
|
}) => TreemapNode[];
|
|
1661
2592
|
};
|
|
1662
2593
|
/** KPI numbers used for the summary row and passed to `summaryCards`. */
|
|
@@ -1676,6 +2607,17 @@ type FootFallHeatMapKpiSummaryCardItem = {
|
|
|
1676
2607
|
/** Per-card icon color; falls back to `statCardIconColor`. */
|
|
1677
2608
|
iconColor?: string;
|
|
1678
2609
|
};
|
|
2610
|
+
type FootFallHeatMapKpiStripSegmentTooltipRenderContext = {
|
|
2611
|
+
segment: {
|
|
2612
|
+
id: string;
|
|
2613
|
+
label: string;
|
|
2614
|
+
value: number;
|
|
2615
|
+
color?: string;
|
|
2616
|
+
};
|
|
2617
|
+
segmentIndex: number;
|
|
2618
|
+
itemLabel: string;
|
|
2619
|
+
itemValue: number;
|
|
2620
|
+
};
|
|
1679
2621
|
/**
|
|
1680
2622
|
* Optional styling for the zone KPI block: summary stat cards, outer panel, segmented bar, and tooltips.
|
|
1681
2623
|
* Segment colors cycle by index when the palette is shorter than the number of segments.
|
|
@@ -1701,6 +2643,11 @@ type FootFallHeatMapKpiStripPresentation = {
|
|
|
1701
2643
|
segmentValueSx?: SxProps$1<Theme$1>;
|
|
1702
2644
|
/** Merged onto the segment tooltip card (popover). */
|
|
1703
2645
|
segmentTooltipCardSx?: SxProps$1<Theme$1>;
|
|
2646
|
+
/**
|
|
2647
|
+
* Full custom renderer for segmented bar tooltips.
|
|
2648
|
+
* When provided, default tooltip card layout is skipped.
|
|
2649
|
+
*/
|
|
2650
|
+
renderSegmentTooltip?: (context: FootFallHeatMapKpiStripSegmentTooltipRenderContext) => ReactNode;
|
|
1704
2651
|
/**
|
|
1705
2652
|
* Build any number of summary KPI cards from live zone metrics. When the returned array is **non-empty**,
|
|
1706
2653
|
* it replaces the default “No. of Stores” / “Overall Visitors” pair. Return `[]` to hide all summary cards.
|
|
@@ -1729,222 +2676,19 @@ type FootFallHeatMapViewProps = {
|
|
|
1729
2676
|
* panel; `statCardSx` / `statCardIconColor`; segment row + tooltip styling.
|
|
1730
2677
|
*/
|
|
1731
2678
|
kpiStrip?: FootFallHeatMapKpiStripPresentation;
|
|
2679
|
+
emptyStatePlaceholderProps?: ChartEmptyStateProps;
|
|
1732
2680
|
};
|
|
1733
2681
|
|
|
1734
2682
|
/**
|
|
1735
2683
|
* In-store zone treemap with drill-down and leaf KPIs. Pass `initialData` from your API or mocks.
|
|
1736
2684
|
*/
|
|
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;
|
|
2685
|
+
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
2686
|
|
|
1739
2687
|
/** Zone KPI grid using MUI layout. */
|
|
1740
2688
|
declare const ZoneWiseKpiCards: ({ metrics }: {
|
|
1741
2689
|
metrics: ZoneAnalyticsMetrics;
|
|
1742
2690
|
}) => react_jsx_runtime.JSX.Element;
|
|
1743
2691
|
|
|
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
2692
|
type PeakBillingHoursChartMargin = {
|
|
1949
2693
|
top?: number;
|
|
1950
2694
|
right?: number;
|
|
@@ -2005,6 +2749,11 @@ type PeakBillingHoursPoint = {
|
|
|
2005
2749
|
/** Bar height; **0** omits the value label and draws a flat bar. */
|
|
2006
2750
|
value: number;
|
|
2007
2751
|
};
|
|
2752
|
+
type PeakBillingHoursTooltipRenderContext = {
|
|
2753
|
+
tooltipProps: TooltipContentProps;
|
|
2754
|
+
data: PeakBillingHoursPoint[];
|
|
2755
|
+
activeTabId: string;
|
|
2756
|
+
};
|
|
2008
2757
|
type PeakBillingHoursProps = {
|
|
2009
2758
|
title?: string;
|
|
2010
2759
|
/** Shown after the title (e.g. **(Last 7 days)**). */
|
|
@@ -2017,6 +2766,11 @@ type PeakBillingHoursProps = {
|
|
|
2017
2766
|
yAxisDomain?: [number, number];
|
|
2018
2767
|
yAxisTicks?: number[];
|
|
2019
2768
|
infoPopover?: ChartWidgetInfoPopoverContent | null;
|
|
2769
|
+
/**
|
|
2770
|
+
* Full custom tooltip renderer. When provided, default tooltip layout is skipped.
|
|
2771
|
+
*/
|
|
2772
|
+
renderTooltip?: (context: PeakBillingHoursTooltipRenderContext) => ReactNode;
|
|
2773
|
+
emptyStatePlaceholderProps?: ChartEmptyStateProps;
|
|
2020
2774
|
customization?: PeakBillingHoursCustomization;
|
|
2021
2775
|
};
|
|
2022
2776
|
|
|
@@ -2029,7 +2783,7 @@ declare const peakBillingHoursMockSeriesByTabId: Record<string, PeakBillingHours
|
|
|
2029
2783
|
* Peak billing hours card: title + subtitle, info control, violet segmented tabs (intrinsic),
|
|
2030
2784
|
* vertical bar chart with square tops, value labels, and panel tooltip.
|
|
2031
2785
|
*/
|
|
2032
|
-
declare function PeakBillingHours({ title, subtitle, tabs, activeTabId, onTabChange, data, seriesByTabId, yAxisDomain, yAxisTicks, infoPopover, customization, }: PeakBillingHoursProps): React$1.ReactElement;
|
|
2786
|
+
declare function PeakBillingHours({ title, subtitle, tabs, activeTabId, onTabChange, data, seriesByTabId, yAxisDomain, yAxisTicks, infoPopover, renderTooltip, emptyStatePlaceholderProps, customization, }: PeakBillingHoursProps): React$1.ReactElement;
|
|
2033
2787
|
|
|
2034
2788
|
type PeakBillingHoursCustomizationProviderProps = {
|
|
2035
2789
|
value: PeakBillingHoursCustomization;
|
|
@@ -2058,4 +2812,4 @@ interface FalconThemeProviderProps {
|
|
|
2058
2812
|
|
|
2059
2813
|
declare const FalconThemeProvider: ({ children, mode: modeProp, settings, }: FalconThemeProviderProps) => react_jsx_runtime.JSX.Element;
|
|
2060
2814
|
|
|
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 };
|
|
2815
|
+
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, FalconAuditTimeline, type FalconAuditTimelineProps, FalconButton, type FalconButtonProps, FalconDIstrictFilter, type FalconDIstrictFilterOption, type FalconDIstrictFilterProps, FalconExportDialog, type FalconExportDialogProps, FalconExportReportDialog, type FalconExportReportDialogProps, 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 FilterOption, 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, type MonthData, 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 };
|