@tap-payments/os-micro-frontend-shared 0.1.391-test.6 → 0.1.392-test.1-test.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/build/components/FilterDropdown/FilterDropdown.d.ts +4 -11
  2. package/build/components/FilterDropdown/FilterDropdown.js +4 -18
  3. package/build/components/FilterDropdown/style.js +1 -1
  4. package/build/components/RadioGroup/RadioGroup.d.ts +1 -1
  5. package/build/components/RadioGroup/RadioGroup.js +13 -6
  6. package/build/components/RadioGroup/type.d.ts +4 -2
  7. package/build/components/RangeCalender/RangeCalender.js +2 -4
  8. package/build/components/StatusBar/StatusBar.js +3 -3
  9. package/build/components/StatusButton/StatusButton.js +16 -4
  10. package/build/components/StatusButton/style.d.ts +5 -0
  11. package/build/components/StatusButton/style.js +11 -0
  12. package/build/components/Widget/List.js +1 -1
  13. package/build/components/index.d.ts +0 -1
  14. package/build/components/index.js +0 -1
  15. package/build/constants/assets.d.ts +3 -3
  16. package/build/constants/assets.js +3 -3
  17. package/build/types/index.d.ts +0 -1
  18. package/build/types/index.js +0 -1
  19. package/build/utils/date.d.ts +0 -4
  20. package/build/utils/date.js +0 -37
  21. package/package.json +2 -2
  22. package/build/components/MultiDatakeyDonut/MultiDatakeyDonut.d.ts +0 -12
  23. package/build/components/MultiDatakeyDonut/MultiDatakeyDonut.js +0 -19
  24. package/build/components/MultiDatakeyDonut/index.d.ts +0 -1
  25. package/build/components/MultiDatakeyDonut/index.js +0 -1
  26. package/build/components/MultiDatakeyDonut/style.d.ts +0 -10
  27. package/build/components/MultiDatakeyDonut/style.js +0 -23
  28. package/build/types/toggleOptions.d.ts +0 -2
  29. package/build/types/toggleOptions.js +0 -1
@@ -1,17 +1,10 @@
1
- import { ReactNode } from 'react';
2
- import { BoxProps } from '@mui/material/Box';
3
- import { SxProps } from '@mui/material';
4
- interface FilterDropdownProps extends BoxProps {
1
+ /// <reference types="react" />
2
+ interface FilterDropdownProps {
3
+ children?: React.ReactNode;
5
4
  onConfirm: () => void;
6
5
  onCancel: () => void;
7
6
  isOkayButDisabled?: boolean;
8
7
  isDisabled?: boolean;
9
- icon?: string;
10
- title?: string;
11
- menuStyle?: SxProps;
12
- hideTitle?: boolean;
13
- renderButton?: ReactNode;
14
- onOpenChange?: (isOpen: boolean) => void;
15
8
  }
16
- export default function FilterDropdown({ onConfirm, onCancel, isOkayButDisabled, children, isDisabled, icon, title, menuStyle, hideTitle, renderButton, onOpenChange, ...props }: Readonly<FilterDropdownProps>): import("react/jsx-runtime").JSX.Element;
9
+ export default function FilterDropdown({ onConfirm, onCancel, isOkayButDisabled, children, isDisabled }: Readonly<FilterDropdownProps>): import("react/jsx-runtime").JSX.Element;
17
10
  export {};
@@ -1,24 +1,12 @@
1
- var __rest = (this && this.__rest) || function (s, e) {
2
- var t = {};
3
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
- t[p] = s[p];
5
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
- t[p[i]] = s[p[i]];
9
- }
10
- return t;
11
- };
12
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
- import { useState, useEffect } from 'react';
14
2
  import Box from '@mui/material/Box';
15
- import ClickAwayListener from '@mui/material/ClickAwayListener';
16
3
  import { useTranslation } from 'react-i18next';
4
+ import { useState, useEffect } from 'react';
5
+ import { ClickAwayListener } from '@mui/material';
17
6
  import { darkFilterIcon } from '../../constants/index.js';
18
7
  import { Menu, CustomBackdrop } from '../index.js';
19
8
  import { CancelButton, FilterButton, Footer, OkayButton, TitleStyled } from './style';
20
- export default function FilterDropdown(_a) {
21
- var { onConfirm, onCancel, isOkayButDisabled, children, isDisabled, icon, title, menuStyle, hideTitle = false, renderButton, onOpenChange } = _a, props = __rest(_a, ["onConfirm", "onCancel", "isOkayButDisabled", "children", "isDisabled", "icon", "title", "menuStyle", "hideTitle", "renderButton", "onOpenChange"]);
9
+ export default function FilterDropdown({ onConfirm, onCancel, isOkayButDisabled, children, isDisabled }) {
22
10
  const [anchorEl, setAnchorEl] = useState(null);
23
11
  const open = Boolean(anchorEl);
24
12
  const { t } = useTranslation();
@@ -44,14 +32,12 @@ export default function FilterDropdown(_a) {
44
32
  return;
45
33
  if (!open) {
46
34
  setAnchorEl(e.currentTarget);
47
- onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(true);
48
35
  return;
49
36
  }
50
37
  onClose();
51
38
  };
52
39
  const onClose = () => {
53
40
  setAnchorEl(null);
54
- onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(false);
55
41
  onCancel();
56
42
  };
57
43
  const handleCancel = () => {
@@ -64,5 +50,5 @@ export default function FilterDropdown(_a) {
64
50
  onConfirm();
65
51
  onClose();
66
52
  };
67
- return (_jsx(ClickAwayListener, Object.assign({ onClickAway: handleCancel }, { children: _jsxs(Box, Object.assign({}, props, { children: [_jsx(FilterButton, Object.assign({ className: "filter-button", isActive: open, onClick: onOpen, sx: Object.assign({}, (isDisabled && Object.assign({ pointerEvents: 'none', opacity: 0.5 }, props.sx))) }, { children: renderButton !== null && renderButton !== void 0 ? renderButton : _jsx(Box, { component: "img", src: icon !== null && icon !== void 0 ? icon : darkFilterIcon, alt: "filter" }) })), _jsxs(Menu, Object.assign({ anchorEl: anchorEl, open: open, sx: Object.assign({ marginTop: '8px', marginBottom: '8px', width: 193 }, menuStyle), placement: "bottom-end" }, { children: [!hideTitle && _jsx(TitleStyled, Object.assign({ component: "span" }, { children: title !== null && title !== void 0 ? title : t('filterBy') })), children, _jsxs(Footer, { children: [_jsx(CancelButton, Object.assign({ onClick: handleCancel }, { children: t('cancel') })), _jsx(OkayButton, Object.assign({ disabled: isOkayButDisabled, onClick: handleConfirm }, { children: t('okay') }))] })] })), open && _jsx(CustomBackdrop, { onClick: onClose })] })) })));
53
+ return (_jsx(ClickAwayListener, Object.assign({ onClickAway: handleCancel }, { children: _jsxs(Box, { children: [_jsx(FilterButton, Object.assign({ isActive: open, onClick: onOpen, sx: Object.assign({}, (isDisabled && { pointerEvents: 'none', opacity: 0.5 })) }, { children: _jsx(Box, { component: "img", src: darkFilterIcon, alt: "filter" }) })), _jsxs(Menu, Object.assign({ anchorEl: anchorEl, open: open, sx: { marginTop: '8px', marginBottom: '8px', width: 193 }, placement: "bottom-end" }, { children: [_jsx(TitleStyled, Object.assign({ component: "span" }, { children: t('filterBy') })), children, _jsxs(Footer, { children: [_jsx(CancelButton, Object.assign({ onClick: handleCancel }, { children: t('cancel') })), _jsx(OkayButton, Object.assign({ disabled: isOkayButDisabled, onClick: handleConfirm }, { children: t('okay') }))] })] })), open && _jsx(CustomBackdrop, { onClick: onClose })] }) })));
68
54
  }
@@ -2,7 +2,7 @@ import Box from '@mui/material/Box';
2
2
  import { styled } from '@mui/material/styles';
3
3
  import Button from '@mui/material/Button';
4
4
  import { Text } from '../index.js';
5
- export const FilterButton = styled(Box, { shouldForwardProp: (props) => props !== 'isActive' })(({ theme, isActive }) => (Object.assign({ borderRadius: '4px', border: `1px solid ${theme.palette.divider}`, minHeight: 32, minWidth: 30, display: 'flex', alignItems: 'center', justifyContent: 'center', cursor: 'pointer', backgroundColor: theme.palette.common.white, ':hover': {
5
+ export const FilterButton = styled(Box, { shouldForwardProp: (props) => props !== 'isActive' })(({ theme, isActive }) => (Object.assign({ borderRadius: '4px', border: `1px solid ${theme.palette.divider}`, height: 32, width: 30, display: 'flex', alignItems: 'center', justifyContent: 'center', cursor: 'pointer', backgroundColor: theme.palette.common.white, ':hover': {
6
6
  opacity: 0.7,
7
7
  } }, (isActive && {
8
8
  boxShadow: `0px 0px 4px 0px ${theme.palette.info.dark}80`,
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
2
  import { CustomRadioGroupProps } from './type';
3
- declare function RadioGroup({ options, onOptionChange, size, customLabelRenderer, layout, spacing, labelPosition, showHoverEffects, customRadioProps, labelSx, onChange, sx, ...props }: CustomRadioGroupProps): import("react/jsx-runtime").JSX.Element;
3
+ declare function RadioGroup({ options, onOptionChange, size, customLabelRenderer, layout, spacing, labelPosition, showHoverEffects, customRadioProps, labelSx, onChange, title, sx, ...props }: CustomRadioGroupProps): import("react/jsx-runtime").JSX.Element;
4
4
  declare const _default: import("react").MemoExoticComponent<typeof RadioGroup>;
5
5
  export default _default;
@@ -9,23 +9,30 @@ var __rest = (this && this.__rest) || function (s, e) {
9
9
  }
10
10
  return t;
11
11
  };
12
- import { jsx as _jsx } from "react/jsx-runtime";
13
- import { memo } from 'react';
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { memo, useMemo } from 'react';
14
14
  import MuiRadioGroup from '@mui/material/RadioGroup';
15
15
  import { StyledFormControlLabel } from './style';
16
16
  import { RadioButton } from '../RadioButton';
17
+ import { FormControl, FormLabel, Stack } from '@mui/material';
17
18
  function RadioItem(_a) {
18
- var { option, size = 'small', customLabelRenderer, labelPosition = 'end', showHoverEffects = true, customRadioProps, labelSx } = _a, props = __rest(_a, ["option", "size", "customLabelRenderer", "labelPosition", "showHoverEffects", "customRadioProps", "labelSx"]);
19
+ var { option, size = 'small', customLabelRenderer, labelPosition = 'end', showHoverEffects = true, customRadioProps, labelSx, icon } = _a, props = __rest(_a, ["option", "size", "customLabelRenderer", "labelPosition", "showHoverEffects", "customRadioProps", "labelSx", "icon"]);
19
20
  const label = customLabelRenderer ? customLabelRenderer(option) : option.label;
20
- return (_jsx(StyledFormControlLabel, Object.assign({ value: option.value, control: _jsx(RadioButton, Object.assign({ size: size }, customRadioProps, option.customProps)), label: label, disabled: option.disabled, size: size, labelPlacement: labelPosition, showHoverEffects: showHoverEffects, labelSx: labelSx }, props)));
21
+ const labelContent = useMemo(() => {
22
+ if (icon) {
23
+ return (_jsxs(Stack, Object.assign({ direction: "row", alignItems: "center", justifyContent: "space-between" }, { children: [label, _jsx("img", Object.assign({ alt: "icon" }, icon))] })));
24
+ }
25
+ return label;
26
+ }, [icon, label]);
27
+ return (_jsx(StyledFormControlLabel, Object.assign({ value: option.value, control: _jsx(RadioButton, Object.assign({ size: size }, customRadioProps, option.customProps)), label: labelContent, disabled: option.disabled, size: size, labelPlacement: labelPosition, showHoverEffects: showHoverEffects, labelSx: labelSx }, props)));
21
28
  }
22
29
  function RadioGroup(_a) {
23
- var { options, onOptionChange, size = 'small', customLabelRenderer, layout = 'vertical', spacing = 0, labelPosition = 'end', showHoverEffects = true, customRadioProps, labelSx, onChange, sx } = _a, props = __rest(_a, ["options", "onOptionChange", "size", "customLabelRenderer", "layout", "spacing", "labelPosition", "showHoverEffects", "customRadioProps", "labelSx", "onChange", "sx"]);
30
+ var { options, onOptionChange, size = 'small', customLabelRenderer, layout = 'vertical', spacing = 0, labelPosition = 'end', showHoverEffects = true, customRadioProps, labelSx, onChange, title, sx } = _a, props = __rest(_a, ["options", "onOptionChange", "size", "customLabelRenderer", "layout", "spacing", "labelPosition", "showHoverEffects", "customRadioProps", "labelSx", "onChange", "title", "sx"]);
24
31
  const handleChange = (event) => {
25
32
  const value = event.target.value;
26
33
  onOptionChange === null || onOptionChange === void 0 ? void 0 : onOptionChange(value);
27
34
  onChange === null || onChange === void 0 ? void 0 : onChange(event, value);
28
35
  };
29
- return (_jsx(MuiRadioGroup, Object.assign({ onChange: handleChange, sx: Object.assign({ display: 'flex', flexDirection: layout === 'horizontal' ? 'row' : 'column', gap: spacing }, sx) }, props, { children: options.map((option) => (_jsx(RadioItem, { option: option, size: size, customLabelRenderer: customLabelRenderer, labelPosition: labelPosition, showHoverEffects: showHoverEffects, customRadioProps: customRadioProps, labelSx: labelSx }, option.value))) })));
36
+ return (_jsxs(FormControl, { children: [typeof title === 'string' ? _jsx(FormLabel, { children: title }) : title, _jsx(MuiRadioGroup, Object.assign({ onChange: handleChange, sx: Object.assign({ display: 'flex', flexDirection: layout === 'horizontal' ? 'row' : 'column', gap: spacing }, sx) }, props, { children: options.map((option) => (_jsx(RadioItem, { icon: option.icon, option: option, size: size, customLabelRenderer: customLabelRenderer, labelPosition: labelPosition, showHoverEffects: showHoverEffects, customRadioProps: customRadioProps, labelSx: labelSx }, option.value))) }))] }));
30
37
  }
31
38
  export default memo(RadioGroup);
@@ -7,10 +7,10 @@ export interface RadioOption {
7
7
  label: string;
8
8
  disabled?: boolean;
9
9
  description?: string;
10
- icon?: ReactNode;
10
+ icon?: React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>;
11
11
  customProps?: Partial<RadioButtonProps>;
12
12
  }
13
- export interface CustomRadioGroupProps extends Omit<RadioGroupProps, 'children'> {
13
+ export interface CustomRadioGroupProps extends Omit<RadioGroupProps, 'children' | 'title'> {
14
14
  options: RadioOption[];
15
15
  onOptionChange?: (value: string) => void;
16
16
  size?: 'small' | 'medium' | 'large';
@@ -21,6 +21,7 @@ export interface CustomRadioGroupProps extends Omit<RadioGroupProps, 'children'>
21
21
  showHoverEffects?: boolean;
22
22
  customRadioProps?: Partial<RadioButtonProps>;
23
23
  labelSx?: React.CSSProperties;
24
+ title?: React.ReactNode;
24
25
  }
25
26
  export interface RadioItemProps extends Omit<FormControlLabelProps, 'control' | 'label'> {
26
27
  option: RadioOption;
@@ -30,4 +31,5 @@ export interface RadioItemProps extends Omit<FormControlLabelProps, 'control' |
30
31
  showHoverEffects?: boolean;
31
32
  customRadioProps?: Partial<RadioButtonProps>;
32
33
  labelSx?: React.CSSProperties;
34
+ icon?: React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>;
33
35
  }
@@ -58,10 +58,8 @@ function RangeCalender({ defaultDate, onDateChange, mode = 'gregorian', onCalend
58
58
  onChangeTimezone === null || onChangeTimezone === void 0 ? void 0 : onChangeTimezone(selectedTimezone);
59
59
  };
60
60
  const getSelectedDate = () => {
61
- const nowYear = dayjs().year();
62
- const formatDate = (date) => (date.year === nowYear ? date.format('MMM D') : date.format('MMM D YYYY'));
63
- const startSelectedTime = formatDate(dates[0]);
64
- const endSelectedTime = dates[1] ? formatDate(dates[1]) : formatDate(dates[0]);
61
+ const startSelectedTime = dates[0].format('MMM D');
62
+ const endSelectedTime = dates[1] ? dates[1].format('MMM D') : dates[0].format('MMM D');
65
63
  return startSelectedTime === endSelectedTime && !noTimezone ? startSelectedTime : `${startSelectedTime} - ${endSelectedTime}`;
66
64
  };
67
65
  const onChange = (newDate) => {
@@ -23,7 +23,7 @@ function StatusBar({ isFilteredIdsShown, availableStatuses, status, onStatusChan
23
23
  onStatusChange === null || onStatusChange === void 0 ? void 0 : onStatusChange(selected);
24
24
  }, [onStatusChange]);
25
25
  return (_jsx(_Fragment, { children: availableStatuses === null || availableStatuses === void 0 ? void 0 : availableStatuses.map((_a, index) => {
26
- var _b, _c;
26
+ var _b;
27
27
  var { render } = _a, s = __rest(_a, ["render"]);
28
28
  if (render) {
29
29
  return (_jsx(Fragment, { children: render({ status: status, onChange: handleStatusChange }, Object.assign(Object.assign({}, s), { index })) }, `custom-status-slot-${index}`));
@@ -42,13 +42,13 @@ function StatusBar({ isFilteredIdsShown, availableStatuses, status, onStatusChan
42
42
  []);
43
43
  const hasMatchingDropdownStatus = !!status && formattedStatuses.some((item) => (item === null || item === void 0 ? void 0 : item.value) === status);
44
44
  const variant = hasMatchingDropdownStatus ? 'active' : 'inActive';
45
- const selectedStatus = hasMatchingDropdownStatus ? status : (_b = formattedStatuses[0]) === null || _b === void 0 ? void 0 : _b.value;
45
+ const selectedStatus = hasMatchingDropdownStatus ? status : undefined;
46
46
  return (_jsx("div", { children: _jsx(StatusButton, Object.assign({}, s, { selectedStatus: selectedStatus, variant: variant, onButtonBodyClick: (buttonStatus) => handleStatusChange(buttonStatus), dropdownOptions: formattedStatuses.map((stat) => ({
47
47
  label: t((stat === null || stat === void 0 ? void 0 : stat.value) || ''),
48
48
  status: stat === null || stat === void 0 ? void 0 : stat.value,
49
49
  icon: stat.icon,
50
50
  onClick: () => handleStatusChange(stat.value),
51
- })), buttonSx: buttonSx })) }, (_c = formattedStatuses[0]) === null || _c === void 0 ? void 0 : _c.value));
51
+ })), buttonSx: buttonSx })) }, (_b = formattedStatuses[0]) === null || _b === void 0 ? void 0 : _b.value));
52
52
  }) }));
53
53
  }
54
54
  export default memo(StatusBar);
@@ -15,7 +15,7 @@ import { useTranslation } from 'react-i18next';
15
15
  import StyledBadge, { BadgeVariants } from '../CountBadge';
16
16
  import { convertToNumber, formatNumber } from '../../utils/index.js';
17
17
  import { ChevronIcon } from './ChevronIcon';
18
- import { ChevronContainer, Label, LabelWrapper, StyledStatusIcon, StyledDropdown, statusButtonVariants } from './style';
18
+ import { ChevronContainer, Label, LabelWrapper, StyledStatusIcon, StyledDropdown, statusButtonVariants, IconWrapper } from './style';
19
19
  import { statusButtonIcons } from './constant';
20
20
  const StatusButton = memo((props) => {
21
21
  var _a;
@@ -25,14 +25,26 @@ const StatusButton = memo((props) => {
25
25
  const buttonRef = useRef(null);
26
26
  const [anchorEl, setAnchorEl] = useState(null);
27
27
  const [selectedStatus, setSelectedStatus] = useState(initialStatus !== null && initialStatus !== void 0 ? initialStatus : (_a = dropdownOptions === null || dropdownOptions === void 0 ? void 0 : dropdownOptions[0]) === null || _a === void 0 ? void 0 : _a.status);
28
- // Memoized computed values
28
+ useEffect(() => {
29
+ if (initialStatus !== undefined) {
30
+ setSelectedStatus(initialStatus);
31
+ }
32
+ }, [initialStatus]);
29
33
  const hasDropdown = useMemo(() => Boolean(dropdownOptions === null || dropdownOptions === void 0 ? void 0 : dropdownOptions.length), [dropdownOptions]);
30
34
  // only open if button is clicked more than once
31
35
  const isDropdownOpen = Boolean(anchorEl) && buttonClicks > 1;
32
36
  const isActiveVariant = variant === 'active';
33
37
  const badgeVariant = useMemo(() => (isActiveVariant ? BadgeVariants.ACTIVE : BadgeVariants.INACTIVE), [isActiveVariant]);
34
- // Memoized UI elements
35
- const statusIcon = useMemo(() => (icon ? _jsx(StyledStatusIcon, { icon: icon, variant: variant, src: iconMapper[icon], alt: `${icon}-icon` }) : null), [icon, iconMapper, variant]);
38
+ const statusIcon = useMemo(() => {
39
+ const selectedOption = selectedStatus ? dropdownOptions === null || dropdownOptions === void 0 ? void 0 : dropdownOptions.find((option) => option.status === selectedStatus) : null;
40
+ if (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.icon) {
41
+ return _jsx(IconWrapper, Object.assign({ variant: variant }, { children: selectedOption.icon }));
42
+ }
43
+ const iconKey = selectedStatus && iconMapper[selectedStatus] ? selectedStatus : icon;
44
+ if (iconKey && iconMapper[iconKey]) {
45
+ return _jsx(StyledStatusIcon, { icon: iconKey, variant: variant, src: iconMapper[iconKey], alt: `${iconKey}-icon` });
46
+ }
47
+ }, [selectedStatus, dropdownOptions, iconMapper, icon, variant]);
36
48
  const statusBadge = useMemo(() => {
37
49
  if (!badgeCount || Number.isNaN(convertToNumber(badgeCount)))
38
50
  return null;
@@ -38,3 +38,8 @@ export declare const StyledStatusIcon: import("@emotion/styled").StyledComponent
38
38
  variant: StatusButtonVariant;
39
39
  icon?: StatusButtonProps['icon'];
40
40
  }, React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, {}>;
41
+ export declare const IconWrapper: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
42
+ ref?: ((instance: HTMLDivElement | null) => void) | React.RefObject<HTMLDivElement> | null | undefined;
43
+ }, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme> & {
44
+ variant: StatusButtonVariant;
45
+ }, {}, {}>;
@@ -79,3 +79,14 @@ export const StyledStatusIcon = styled('img')(({ theme, variant, icon }) => {
79
79
  filter: variant === 'active' ? 'brightness(0) invert(1)' : 'brightness(0) invert(0)',
80
80
  })), { maxWidth: '14px', maxHeight: '14px' }));
81
81
  });
82
+ export const IconWrapper = styled(Box)(({ variant }) => ({
83
+ width: '14px',
84
+ height: '14px',
85
+ display: 'flex',
86
+ alignItems: 'center',
87
+ '& img': {
88
+ width: '14px',
89
+ height: '14px',
90
+ filter: variant === 'active' ? 'brightness(0) invert(1)' : 'brightness(0) invert(0)',
91
+ },
92
+ }));
@@ -18,6 +18,6 @@ import { useScrollWithShadow } from './useScrollWithShadow';
18
18
  function List(_a) {
19
19
  var { allowShadow = true, children } = _a, props = __rest(_a, ["allowShadow", "children"]);
20
20
  const { onScrollHandler, showShadow } = useScrollWithShadow();
21
- return (_jsxs(ListStyled, Object.assign({ component: "ul", "data-testid": "Widget_List", onScroll: onScrollHandler }, props, { children: [children, showShadow && allowShadow && (_jsx(Box, { component: "img", src: listShadowBg, sx: { width: '100%', position: 'fixed', bottom: 0, pointerEvents: 'none', right: 0, left: 0 } }))] })));
21
+ return (_jsxs(ListStyled, Object.assign({ component: "ul", "data-testid": "Widget_List", onScroll: onScrollHandler }, props, { children: [children, showShadow && allowShadow && (_jsx(Box, { component: "img", src: listShadowBg, sx: { width: '100%', position: 'fixed', bottom: 0, pointerEvents: 'none' } }))] })));
22
22
  }
23
23
  export default memo(List);
@@ -153,4 +153,3 @@ export * from './SalesChannelFilter';
153
153
  export * from './ReferenceTypeFilter';
154
154
  export * from './ListColumnFilter';
155
155
  export * from './VerificationIcon';
156
- export * from './MultiDatakeyDonut';
@@ -153,4 +153,3 @@ export * from './SalesChannelFilter';
153
153
  export * from './ReferenceTypeFilter';
154
154
  export * from './ListColumnFilter';
155
155
  export * from './VerificationIcon';
156
- export * from './MultiDatakeyDonut';
@@ -46,7 +46,6 @@ export declare const storedValueWalletIcon: string;
46
46
  export declare const buyNowPayLaterIcon: string;
47
47
  export declare const openBankingIcon: string;
48
48
  export declare const visaIcon: string;
49
- export declare const redArrowDownIcon: string;
50
49
  export declare const completedIcon: string;
51
50
  export declare const chargeBackRequestedIcon: string;
52
51
  export declare const chargeBackIcon: string;
@@ -79,16 +78,17 @@ export declare const minimizeIcon: string;
79
78
  export declare const closeIcon: string;
80
79
  export declare const dashedCheckIcon: string;
81
80
  export declare const outstandingIcon: string;
81
+ export declare const cancelledNoBgIcon: string;
82
+ export declare const expiredNoBgIcon: string;
83
+ export declare const paidNoBgIcon: string;
82
84
  export declare const deactivatedIcon: string;
83
85
  export declare const topUpIcon: string;
84
- export declare const AIOverviewIcon: string;
85
86
  export declare const deMaximizeIcon: string;
86
87
  export declare const pendingFlag: string;
87
88
  export declare const ibanIcon: string;
88
89
  export declare const payoutIcon: string;
89
90
  export declare const releasedFlag: string;
90
91
  export declare const acceptedFlag: string;
91
- export declare const clearIcon: string;
92
92
  export declare const unCapturedIcon: string;
93
93
  export declare const newWindowIcon: string;
94
94
  export declare const viewAllIcon: string;
@@ -51,7 +51,6 @@ export const storedValueWalletIcon = `${lightUrl}/storedValueWallet.svg`;
51
51
  export const buyNowPayLaterIcon = `${lightUrl}/buyNowPayLater.svg`;
52
52
  export const openBankingIcon = `${lightUrl}/openBanking.svg`;
53
53
  export const visaIcon = `${lightUrl}/visa.svg`;
54
- export const redArrowDownIcon = `${lightUrl}/redArrowDownIcon.svg`;
55
54
  export const completedIcon = `${lightUrl}/completed.svg`;
56
55
  export const chargeBackRequestedIcon = `${lightUrl}/chargebackRequested.svg`;
57
56
  export const chargeBackIcon = `${lightUrl}/chargeback.svg`;
@@ -84,16 +83,17 @@ export const minimizeIcon = `${lightUrl}/minimize.svg`;
84
83
  export const closeIcon = `${lightUrl}/close.svg`;
85
84
  export const dashedCheckIcon = `${lightUrl}/dashedCheckIcon.svg`;
86
85
  export const outstandingIcon = `${lightUrl}/outstandingIcon.svg`;
86
+ export const cancelledNoBgIcon = `${lightUrl}/cancelledStatusIcon.svg`;
87
+ export const expiredNoBgIcon = `${lightUrl}/expiredStatusIcon.svg`;
88
+ export const paidNoBgIcon = `${lightUrl}/paidStatusIcon.svg`;
87
89
  export const deactivatedIcon = `${lightUrl}/deactivatedIcon.svg`;
88
90
  export const topUpIcon = `${lightUrl}/topup.svg`;
89
- export const AIOverviewIcon = `${lightUrl}/AIOverviewIcon.svg`;
90
91
  export const deMaximizeIcon = `${appBaseUrl}/demaximize.svg`;
91
92
  export const pendingFlag = `${lightUrl}/pendingFlag.svg`;
92
93
  export const ibanIcon = `${lightUrl}/ibanIcon.svg`;
93
94
  export const payoutIcon = `${lightUrl}/payoutIcon.svg`;
94
95
  export const releasedFlag = `${lightUrl}/releasedFlag.svg`;
95
96
  export const acceptedFlag = `${lightUrl}/acceptedFlag.svg`;
96
- export const clearIcon = `${lightUrl}/clearIcon.svg`;
97
97
  export const unCapturedIcon = `${lightUrl}/status/unCaptured.svg`;
98
98
  export const newWindowIcon = `${appBaseUrl}/newWindow.svg`;
99
99
  export const viewAllIcon = `${appBaseUrl}/viewAll.svg`;
@@ -32,6 +32,5 @@ export * from './filter';
32
32
  export * from './utilities';
33
33
  export * from './reports';
34
34
  export * from './document';
35
- export * from './toggleOptions';
36
35
  export * from './toast';
37
36
  export * from './flag';
@@ -32,6 +32,5 @@ export * from './filter';
32
32
  export * from './utilities';
33
33
  export * from './reports';
34
34
  export * from './document';
35
- export * from './toggleOptions';
36
35
  export * from './toast';
37
36
  export * from './flag';
@@ -43,9 +43,5 @@ export declare function isWithinTimeAgo(timestampMs: number, amount: number, uni
43
43
  export declare const formatRelativeTimeWithinHour: (timestampMs: number) => string;
44
44
  export declare const isTodayDate: (date: string | Date) => boolean;
45
45
  export declare const isYesterdayDate: (date: string | Date) => boolean;
46
- export declare const getDateLabel: (from: Date, to: Date) => {
47
- label: string;
48
- isCustom: boolean;
49
- };
50
46
  export declare const isValidDate: (date?: Date | string | number) => boolean;
51
47
  export {};
@@ -245,43 +245,6 @@ export const formatRelativeTimeWithinHour = (timestampMs) => {
245
245
  };
246
246
  export const isTodayDate = (date) => dayjs(date).isToday();
247
247
  export const isYesterdayDate = (date) => dayjs(date).isYesterday();
248
- export const getDateLabel = (from, to) => {
249
- const start = dayjs(from).startOf('day');
250
- const end = dayjs(to).endOf('day');
251
- const today = dayjs().startOf('day');
252
- const currentYear = today.year();
253
- const diffDays = end.diff(start, 'day') + 1;
254
- // Today / Yesterday
255
- if (start.isToday() && end.isToday())
256
- return { label: 'Today', isCustom: false };
257
- if (start.isYesterday() && end.isYesterday())
258
- return { label: 'Yesterday', isCustom: false };
259
- // Last 7 days
260
- if (diffDays === 7 && end.isSame(today, 'day'))
261
- return { label: 'Last 7 days', isCustom: false };
262
- // Last 30 days (inclusive)
263
- if (diffDays === 31 && end.isSame(today, 'day'))
264
- return { label: 'Last 30 days', isCustom: false };
265
- // Full month
266
- if (start.date() === 1 && end.date() === end.daysInMonth() && start.month() === end.month()) {
267
- const monthLabel = start.year() === currentYear ? start.format('MMMM') : start.format('MMMM YYYY');
268
- return { label: monthLabel, isCustom: false };
269
- }
270
- // Same day: show Month + Day
271
- if (start.isSame(end, 'day')) {
272
- const label = start.format(start.year() === currentYear ? 'MMM D' : 'MMM D YYYY');
273
- return { label, isCustom: false };
274
- }
275
- // Custom range
276
- const showStartYear = start.year() !== currentYear;
277
- const showEndYear = end.year() !== currentYear;
278
- const startLabel = start.format(`MMM D${showStartYear ? ' YYYY' : ''}`);
279
- const endLabel = end.format(`MMM D${showEndYear ? ' YYYY' : ''}`);
280
- return {
281
- label: `${startLabel} – ${endLabel}`,
282
- isCustom: true,
283
- };
284
- };
285
248
  export const isValidDate = (date) => {
286
249
  return dayjs(date).isValid();
287
250
  };
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@tap-payments/os-micro-frontend-shared",
3
3
  "description": "Shared components and utilities for Tap Payments micro frontends",
4
- "version": "0.1.391-test.6",
5
- "testVersion": 6,
4
+ "version": "0.1.392-test.1-test.2",
5
+ "testVersion": 2,
6
6
  "type": "module",
7
7
  "main": "build/index.js",
8
8
  "module": "build/index.js",
@@ -1,12 +0,0 @@
1
- import { ReactNode } from 'react';
2
- interface DonutProps {
3
- size?: number;
4
- chartData: Array<{
5
- name: string;
6
- value: number;
7
- color: string;
8
- }>;
9
- chartInfo?: ReactNode;
10
- }
11
- export declare const MultiDatakeyDonut: ({ chartData, size, chartInfo }: DonutProps) => import("react/jsx-runtime").JSX.Element;
12
- export {};
@@ -1,19 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useMemo } from 'react';
3
- import { ResponsiveContainer, PieChart, Pie, Cell } from 'recharts';
4
- import { DonutWrapper, CenterOverlay, Empty } from './style';
5
- export const MultiDatakeyDonut = ({ chartData, size = 170, chartInfo }) => {
6
- const pieSegments = useMemo(() => {
7
- const total = chartData.reduce((sum, d) => sum + d.value, 0) || 1;
8
- let cumulative = 0;
9
- return chartData.map((d) => {
10
- const start = (cumulative / total) * 360;
11
- const end = ((cumulative + d.value) / total) * 360;
12
- cumulative += d.value;
13
- return Object.assign(Object.assign({}, d), { startAngle: start, endAngle: end });
14
- });
15
- }, [chartData]);
16
- const isEmpty = chartData.every((d) => d.value === 0);
17
- return (_jsxs(DonutWrapper, Object.assign({ sx: { width: size, height: size } }, { children: [_jsx(ResponsiveContainer, { children: _jsxs(PieChart, { children: [_jsx(Pie, { data: [{ value: 100 }], dataKey: "value", cx: "50%", cy: "50%", innerRadius: "70%", outerRadius: "100%", fill: "#E5E7EB", stroke: "none", isAnimationActive: false }), !isEmpty &&
18
- pieSegments.map((segment) => (_jsx(Pie, Object.assign({ data: [segment], dataKey: "value", cx: "50%", cy: "50%", innerRadius: "70%", outerRadius: "100%", startAngle: 90 - segment.startAngle, endAngle: 90 - segment.endAngle, cornerRadius: 0, stroke: "none", isAnimationActive: true, animationDuration: 800, style: { outline: 'none' } }, { children: _jsx(Cell, { fill: segment.color, tabIndex: -1 }, segment.name) }), segment.name)))] }) }), _jsx(CenterOverlay, { children: !chartInfo ? _jsx(Empty, { children: "----" }) : chartInfo })] })));
19
- };
@@ -1 +0,0 @@
1
- export * from './MultiDatakeyDonut';
@@ -1 +0,0 @@
1
- export * from './MultiDatakeyDonut';
@@ -1,10 +0,0 @@
1
- /// <reference types="react" />
2
- export declare const DonutWrapper: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<import("@mui/material").Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
3
- ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
4
- }, keyof import("@mui/system").BoxOwnProps<import("@mui/material").Theme>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
5
- export declare const CenterOverlay: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<import("@mui/material").Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
6
- ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
7
- }, keyof import("@mui/system").BoxOwnProps<import("@mui/material").Theme>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
8
- export declare const Empty: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<import("@mui/material").Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
9
- ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
10
- }, keyof import("@mui/system").BoxOwnProps<import("@mui/material").Theme>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
@@ -1,23 +0,0 @@
1
- import { Box } from '@mui/material';
2
- import { styled } from '@mui/material/styles';
3
- export const DonutWrapper = styled(Box)(() => ({
4
- width: '100%',
5
- maxWidth: 500,
6
- aspectRatio: '1',
7
- position: 'relative',
8
- }));
9
- export const CenterOverlay = styled(Box)(({ theme }) => ({
10
- position: 'absolute',
11
- inset: 0,
12
- display: 'flex',
13
- flexDirection: 'column',
14
- justifyContent: 'center',
15
- alignItems: 'center',
16
- pointerEvents: 'none',
17
- gap: theme.spacing(1),
18
- }));
19
- export const Empty = styled(Box)(({ theme }) => ({
20
- fontSize: 17,
21
- fontWeight: 700,
22
- color: '#CFD0D2',
23
- }));
@@ -1,2 +0,0 @@
1
- import { DATA_KEY } from '../constants/index.js';
2
- export type DataKey = (typeof DATA_KEY)[keyof typeof DATA_KEY];
@@ -1 +0,0 @@
1
- export {};