@tap-payments/os-micro-frontend-shared 0.0.298 → 0.0.299

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.
@@ -1,2 +1,2 @@
1
1
  import { IconWithBadgeProps } from './type';
2
- export default function IconWithBadge({ mainIcon, overlayIcon, mainIconAlt, mainIconSize, containerSize, overlayPosition, borderColor, label, }: IconWithBadgeProps): import("react/jsx-runtime").JSX.Element;
2
+ export default function IconWithBadge({ mainIcon, overlayIcon, mainIconAlt, mainIconSize, containerSize, overlayPosition, borderColor, label, sx, onError, }: IconWithBadgeProps): import("react/jsx-runtime").JSX.Element;
@@ -1,17 +1,21 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import Skeleton from '@mui/material/Skeleton';
2
4
  import Box from '@mui/material/Box';
3
- import { Container, BadgeBox } from './style';
4
5
  import { brandPlaceholderIcon } from '../../constants/index.js';
6
+ import { Container, BadgeBox } from './style';
5
7
  import Tooltip from '../Tooltip';
6
- export default function IconWithBadge({ mainIcon, overlayIcon, mainIconAlt = 'main icon', mainIconSize = 20, containerSize = 24, overlayPosition = { top: 10, left: 17 }, borderColor = '#F2F2F2', label = '', }) {
8
+ export default function IconWithBadge({ mainIcon, overlayIcon, mainIconAlt = 'main icon', mainIconSize = 20, containerSize = 24, overlayPosition = { top: 10, left: 17 }, borderColor = '#F2F2F2', label = '', sx, onError, }) {
9
+ const [isLoading, setIsLoading] = useState(true);
7
10
  return (_jsx(Tooltip, Object.assign({ title: label }, { children: _jsx(Box, Object.assign({ display: "flex", alignItems: "center", gap: 1, sx: { position: 'relative' } }, { children: _jsxs(Container, Object.assign({ style: {
8
11
  borderColor,
9
12
  width: containerSize,
10
13
  height: containerSize,
11
- } }, { children: [overlayIcon && _jsx(BadgeBox, Object.assign({ sx: overlayPosition }, { children: overlayIcon })), _jsx(Box, { width: mainIconSize, height: mainIconSize, component: "img", src: mainIcon || brandPlaceholderIcon, alt: mainIconAlt, sx: {
12
- borderRadius: '50%',
13
- objectFit: 'scale-down',
14
- }, onError: (e) => {
15
- e.currentTarget.src = brandPlaceholderIcon;
16
- } })] })) })) })));
14
+ } }, { children: [mainIconSize && isLoading && (_jsx(Box, Object.assign({ width: mainIconSize, height: mainIconSize }, { children: isLoading && _jsx(Skeleton, { variant: "circular", width: `${mainIconSize}px`, height: `${mainIconSize}px` }) }))), _jsxs(_Fragment, { children: [overlayIcon && _jsx(BadgeBox, Object.assign({ sx: overlayPosition }, { children: overlayIcon })), _jsx(Box, { width: mainIconSize, height: mainIconSize, component: "img", src: mainIcon || brandPlaceholderIcon, alt: mainIconAlt, sx: Object.assign({ borderRadius: '50%', objectFit: 'scale-down', opacity: isLoading ? 0 : 1 }, sx), onError: (e) => {
15
+ setIsLoading(false);
16
+ e.currentTarget.src = brandPlaceholderIcon;
17
+ onError === null || onError === void 0 ? void 0 : onError(e);
18
+ }, onLoad: () => {
19
+ setIsLoading(false);
20
+ } })] })] })) })) })));
17
21
  }
@@ -1,4 +1,5 @@
1
1
  /// <reference types="react" />
2
+ import { SxProps } from '@mui/material';
2
3
  export interface IconWithBadgeProps {
3
4
  mainIcon: string;
4
5
  overlayIcon?: React.ReactNode;
@@ -13,4 +14,6 @@ export interface IconWithBadgeProps {
13
14
  };
14
15
  borderColor?: string;
15
16
  label?: string;
17
+ sx?: SxProps;
18
+ onError?: (e: React.SyntheticEvent<HTMLImageElement, Event>) => void;
16
19
  }
@@ -1,2 +1,2 @@
1
- import { ApplicationStatusCellProps } from './type';
1
+ import type { ApplicationStatusCellProps } from './type';
2
2
  export default function ApplicationStatusCell({ acceptance, payout, hideAcceptance, hidePayout, ...props }: ApplicationStatusCellProps): import("react/jsx-runtime").JSX.Element;
@@ -9,14 +9,48 @@ var __rest = (this && this.__rest) || function (s, e) {
9
9
  }
10
10
  return t;
11
11
  };
12
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
- import { acceptanceDisabledRoundedIcon, payoutDisabledRoundedIcon, acceptanceEnabledIcon, payoutGreenIcon } from '../../../../constants/index.js';
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import { useMemo, useState } from 'react';
14
+ import { useTheme } from '@mui/material/styles';
14
15
  import Tooltip from '../../../Tooltip';
15
- import TableCell from '../../TableCell';
16
- import { AppsWrapper, IconWrapper } from './style';
16
+ import { ImageWrapper } from '../../../index.js';
17
+ import { TableCell } from '../../../TableCells';
18
+ import { AppsStatusContainer, StyledAppsCell, appStatusAnimation } from './style';
19
+ import IconWithBadge from '../../../IconWithBadge';
20
+ import { acceptanceBlueIcon, acceptanceWindowIcon, payoutsGreenIcon, payoutWindowIcon } from '../../../../constants/index.js';
17
21
  export default function ApplicationStatusCell(_a) {
18
22
  var { acceptance, payout, hideAcceptance, hidePayout } = _a, props = __rest(_a, ["acceptance", "payout", "hideAcceptance", "hidePayout"]);
19
23
  const isAcceptanceEnabled = (acceptance === null || acceptance === void 0 ? void 0 : acceptance.toLowerCase()) === 'enabled';
20
24
  const isPayoutEnabled = (payout === null || payout === void 0 ? void 0 : payout.toLowerCase()) === 'enabled';
21
- return (_jsx(TableCell, Object.assign({}, props, { children: _jsxs(AppsWrapper, { children: [!hideAcceptance && (_jsx(Tooltip, Object.assign({ title: 'Acceptance' }, { children: _jsxs(IconWrapper, { children: [_jsx("img", { src: isAcceptanceEnabled ? acceptanceEnabledIcon : acceptanceDisabledRoundedIcon, alt: acceptance }), ' '] }) }), acceptance)), !hidePayout && (_jsx(Tooltip, Object.assign({ title: 'Payouts' }, { children: _jsx(IconWrapper, { children: _jsx("img", { src: isPayoutEnabled ? payoutGreenIcon : payoutDisabledRoundedIcon, alt: payout }) }) }), payout))] }) })));
25
+ const [isTooltipOpen, setIsTooltipOpen] = useState(false);
26
+ const theme = useTheme();
27
+ const apps = useMemo(() => [
28
+ {
29
+ icon: isAcceptanceEnabled ? acceptanceBlueIcon : acceptanceWindowIcon,
30
+ tooltip: 'Acceptance',
31
+ enabled: isAcceptanceEnabled,
32
+ shown: !hideAcceptance,
33
+ order: 0,
34
+ },
35
+ { icon: isPayoutEnabled ? payoutsGreenIcon : payoutWindowIcon, tooltip: 'Payout', enabled: isPayoutEnabled, shown: !hidePayout, order: 1 },
36
+ ]
37
+ .filter((app) => app.shown)
38
+ .sort((a, b) => (a.enabled !== b.enabled ? -1 : a.order - b.order)), [isAcceptanceEnabled, isPayoutEnabled, hideAcceptance, hidePayout]);
39
+ const appsStatus = useMemo(() => apps.map((app, index) => {
40
+ const sourceTooltip = app.tooltip;
41
+ return (_jsx(Tooltip, Object.assign({ onOpen: () => {
42
+ setIsTooltipOpen(true);
43
+ }, onClose: () => {
44
+ setIsTooltipOpen(false);
45
+ }, title: sourceTooltip }, { children: _jsx(ImageWrapper, Object.assign({ order: index, variants: appStatusAnimation(index, theme.shadows[4], 40), sx: {
46
+ width: '36px',
47
+ } }, { children: _jsx(IconWithBadge, { mainIcon: app.icon, mainIconSize: 16, containerSize: 16, sx: { borderRadius: '40px' }, onError: (e) => {
48
+ e.currentTarget.src = app.icon;
49
+ e.currentTarget.style.borderRadius = '0px';
50
+ }, borderColor: "transparent" }) })) }), `${app}-${index}`));
51
+ }), [apps, theme]);
52
+ const appsCount = (apps === null || apps === void 0 ? void 0 : apps.length) || 0;
53
+ return (_jsx(TableCell, Object.assign({}, props, { children: _jsx(StyledAppsCell, { children: appsCount > 0 ? (_jsx(AppsStatusContainer, Object.assign({ layout: true, className: "reference-sources-container", whileHover: "animate", animate: isTooltipOpen ? 'animate' : 'start', sourcesCount: appsCount, variants: { animate: { width: appsCount * (6 + 32) } }, style: {
54
+ zIndex: 29,
55
+ } }, { children: appsStatus }))) : null }) })));
22
56
  }
@@ -1,5 +1,287 @@
1
1
  /// <reference types="react" />
2
- export declare const AppsWrapper: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
3
- export declare const IconWrapper: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<import("@mui/material").Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
4
- ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
5
- }, keyof import("@mui/system").BoxOwnProps<import("@mui/material").Theme>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
2
+ export declare const StyledAppsCell: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
3
+ export declare const AppsStatusContainer: import("@emotion/styled").StyledComponent<{
4
+ hidden?: boolean | undefined;
5
+ id?: string | undefined;
6
+ slot?: string | undefined;
7
+ title?: string | undefined;
8
+ color?: string | undefined;
9
+ className?: string | undefined;
10
+ defaultChecked?: boolean | undefined;
11
+ defaultValue?: string | number | readonly string[] | undefined;
12
+ suppressContentEditableWarning?: boolean | undefined;
13
+ suppressHydrationWarning?: boolean | undefined;
14
+ accessKey?: string | undefined;
15
+ autoCapitalize?: (string & {}) | "none" | "off" | "on" | "sentences" | "words" | "characters" | undefined;
16
+ autoFocus?: boolean | undefined;
17
+ contentEditable?: "inherit" | (boolean | "false" | "true") | "plaintext-only" | undefined;
18
+ contextMenu?: string | undefined;
19
+ dir?: string | undefined;
20
+ draggable?: (boolean | "false" | "true") | undefined;
21
+ enterKeyHint?: "search" | "done" | "next" | "enter" | "go" | "previous" | "send" | undefined;
22
+ lang?: string | undefined;
23
+ nonce?: string | undefined;
24
+ spellCheck?: (boolean | "false" | "true") | undefined;
25
+ tabIndex?: number | undefined;
26
+ translate?: "yes" | "no" | undefined;
27
+ radioGroup?: string | undefined;
28
+ role?: import("react").AriaRole | undefined;
29
+ about?: string | undefined;
30
+ content?: string | undefined;
31
+ datatype?: string | undefined;
32
+ inlist?: any;
33
+ prefix?: string | undefined;
34
+ property?: string | undefined;
35
+ rel?: string | undefined;
36
+ resource?: string | undefined;
37
+ rev?: string | undefined;
38
+ typeof?: string | undefined;
39
+ vocab?: string | undefined;
40
+ autoCorrect?: string | undefined;
41
+ autoSave?: string | undefined;
42
+ itemProp?: string | undefined;
43
+ itemScope?: boolean | undefined;
44
+ itemType?: string | undefined;
45
+ itemID?: string | undefined;
46
+ itemRef?: string | undefined;
47
+ results?: number | undefined;
48
+ security?: string | undefined;
49
+ unselectable?: "off" | "on" | undefined;
50
+ inputMode?: "none" | "email" | "search" | "numeric" | "url" | "text" | "tel" | "decimal" | undefined;
51
+ is?: string | undefined;
52
+ exportparts?: string | undefined;
53
+ part?: string | undefined;
54
+ "aria-activedescendant"?: string | undefined;
55
+ "aria-atomic"?: (boolean | "false" | "true") | undefined;
56
+ "aria-autocomplete"?: "none" | "list" | "both" | "inline" | undefined;
57
+ "aria-braillelabel"?: string | undefined;
58
+ "aria-brailleroledescription"?: string | undefined;
59
+ "aria-busy"?: (boolean | "false" | "true") | undefined;
60
+ "aria-checked"?: boolean | "false" | "true" | "mixed" | undefined;
61
+ "aria-colcount"?: number | undefined;
62
+ "aria-colindex"?: number | undefined;
63
+ "aria-colindextext"?: string | undefined;
64
+ "aria-colspan"?: number | undefined;
65
+ "aria-controls"?: string | undefined;
66
+ "aria-current"?: boolean | "date" | "false" | "true" | "time" | "page" | "step" | "location" | undefined;
67
+ "aria-describedby"?: string | undefined;
68
+ "aria-description"?: string | undefined;
69
+ "aria-details"?: string | undefined;
70
+ "aria-disabled"?: (boolean | "false" | "true") | undefined;
71
+ "aria-dropeffect"?: "none" | "copy" | "link" | "move" | "execute" | "popup" | undefined;
72
+ "aria-errormessage"?: string | undefined;
73
+ "aria-expanded"?: (boolean | "false" | "true") | undefined;
74
+ "aria-flowto"?: string | undefined;
75
+ "aria-grabbed"?: (boolean | "false" | "true") | undefined;
76
+ "aria-haspopup"?: boolean | "false" | "true" | "dialog" | "menu" | "grid" | "listbox" | "tree" | undefined;
77
+ "aria-hidden"?: (boolean | "false" | "true") | undefined;
78
+ "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined;
79
+ "aria-keyshortcuts"?: string | undefined;
80
+ "aria-label"?: string | undefined;
81
+ "aria-labelledby"?: string | undefined;
82
+ "aria-level"?: number | undefined;
83
+ "aria-live"?: "off" | "assertive" | "polite" | undefined;
84
+ "aria-modal"?: (boolean | "false" | "true") | undefined;
85
+ "aria-multiline"?: (boolean | "false" | "true") | undefined;
86
+ "aria-multiselectable"?: (boolean | "false" | "true") | undefined;
87
+ "aria-orientation"?: "horizontal" | "vertical" | undefined;
88
+ "aria-owns"?: string | undefined;
89
+ "aria-placeholder"?: string | undefined;
90
+ "aria-posinset"?: number | undefined;
91
+ "aria-pressed"?: boolean | "false" | "true" | "mixed" | undefined;
92
+ "aria-readonly"?: (boolean | "false" | "true") | undefined;
93
+ "aria-relevant"?: "all" | "text" | "additions" | "additions removals" | "additions text" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | undefined;
94
+ "aria-required"?: (boolean | "false" | "true") | undefined;
95
+ "aria-roledescription"?: string | undefined;
96
+ "aria-rowcount"?: number | undefined;
97
+ "aria-rowindex"?: number | undefined;
98
+ "aria-rowindextext"?: string | undefined;
99
+ "aria-rowspan"?: number | undefined;
100
+ "aria-selected"?: (boolean | "false" | "true") | undefined;
101
+ "aria-setsize"?: number | undefined;
102
+ "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
103
+ "aria-valuemax"?: number | undefined;
104
+ "aria-valuemin"?: number | undefined;
105
+ "aria-valuenow"?: number | undefined;
106
+ "aria-valuetext"?: string | undefined;
107
+ dangerouslySetInnerHTML?: {
108
+ __html: string | TrustedHTML;
109
+ } | undefined;
110
+ onCopy?: import("react").ClipboardEventHandler<HTMLSpanElement> | undefined;
111
+ onCopyCapture?: import("react").ClipboardEventHandler<HTMLSpanElement> | undefined;
112
+ onCut?: import("react").ClipboardEventHandler<HTMLSpanElement> | undefined;
113
+ onCutCapture?: import("react").ClipboardEventHandler<HTMLSpanElement> | undefined;
114
+ onPaste?: import("react").ClipboardEventHandler<HTMLSpanElement> | undefined;
115
+ onPasteCapture?: import("react").ClipboardEventHandler<HTMLSpanElement> | undefined;
116
+ onCompositionEnd?: import("react").CompositionEventHandler<HTMLSpanElement> | undefined;
117
+ onCompositionEndCapture?: import("react").CompositionEventHandler<HTMLSpanElement> | undefined;
118
+ onCompositionStart?: import("react").CompositionEventHandler<HTMLSpanElement> | undefined;
119
+ onCompositionStartCapture?: import("react").CompositionEventHandler<HTMLSpanElement> | undefined;
120
+ onCompositionUpdate?: import("react").CompositionEventHandler<HTMLSpanElement> | undefined;
121
+ onCompositionUpdateCapture?: import("react").CompositionEventHandler<HTMLSpanElement> | undefined;
122
+ onFocus?: import("react").FocusEventHandler<HTMLSpanElement> | undefined;
123
+ onFocusCapture?: import("react").FocusEventHandler<HTMLSpanElement> | undefined;
124
+ onBlur?: import("react").FocusEventHandler<HTMLSpanElement> | undefined;
125
+ onBlurCapture?: import("react").FocusEventHandler<HTMLSpanElement> | undefined;
126
+ onChange?: import("react").FormEventHandler<HTMLSpanElement> | undefined;
127
+ onChangeCapture?: import("react").FormEventHandler<HTMLSpanElement> | undefined;
128
+ onBeforeInput?: import("react").InputEventHandler<HTMLSpanElement> | undefined;
129
+ onBeforeInputCapture?: import("react").FormEventHandler<HTMLSpanElement> | undefined;
130
+ onInput?: import("react").FormEventHandler<HTMLSpanElement> | undefined;
131
+ onInputCapture?: import("react").FormEventHandler<HTMLSpanElement> | undefined;
132
+ onReset?: import("react").FormEventHandler<HTMLSpanElement> | undefined;
133
+ onResetCapture?: import("react").FormEventHandler<HTMLSpanElement> | undefined;
134
+ onSubmit?: import("react").FormEventHandler<HTMLSpanElement> | undefined;
135
+ onSubmitCapture?: import("react").FormEventHandler<HTMLSpanElement> | undefined;
136
+ onInvalid?: import("react").FormEventHandler<HTMLSpanElement> | undefined;
137
+ onInvalidCapture?: import("react").FormEventHandler<HTMLSpanElement> | undefined;
138
+ onLoad?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
139
+ onLoadCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
140
+ onError?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
141
+ onErrorCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
142
+ onKeyDown?: import("react").KeyboardEventHandler<HTMLSpanElement> | undefined;
143
+ onKeyDownCapture?: import("react").KeyboardEventHandler<HTMLSpanElement> | undefined;
144
+ onKeyPress?: import("react").KeyboardEventHandler<HTMLSpanElement> | undefined;
145
+ onKeyPressCapture?: import("react").KeyboardEventHandler<HTMLSpanElement> | undefined;
146
+ onKeyUp?: import("react").KeyboardEventHandler<HTMLSpanElement> | undefined;
147
+ onKeyUpCapture?: import("react").KeyboardEventHandler<HTMLSpanElement> | undefined;
148
+ onAbort?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
149
+ onAbortCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
150
+ onCanPlay?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
151
+ onCanPlayCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
152
+ onCanPlayThrough?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
153
+ onCanPlayThroughCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
154
+ onDurationChange?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
155
+ onDurationChangeCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
156
+ onEmptied?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
157
+ onEmptiedCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
158
+ onEncrypted?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
159
+ onEncryptedCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
160
+ onEnded?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
161
+ onEndedCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
162
+ onLoadedData?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
163
+ onLoadedDataCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
164
+ onLoadedMetadata?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
165
+ onLoadedMetadataCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
166
+ onLoadStart?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
167
+ onLoadStartCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
168
+ onPause?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
169
+ onPauseCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
170
+ onPlay?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
171
+ onPlayCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
172
+ onPlaying?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
173
+ onPlayingCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
174
+ onProgress?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
175
+ onProgressCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
176
+ onRateChange?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
177
+ onRateChangeCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
178
+ onSeeked?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
179
+ onSeekedCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
180
+ onSeeking?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
181
+ onSeekingCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
182
+ onStalled?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
183
+ onStalledCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
184
+ onSuspend?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
185
+ onSuspendCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
186
+ onTimeUpdate?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
187
+ onTimeUpdateCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
188
+ onVolumeChange?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
189
+ onVolumeChangeCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
190
+ onWaiting?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
191
+ onWaitingCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
192
+ onAuxClick?: import("react").MouseEventHandler<HTMLSpanElement> | undefined;
193
+ onAuxClickCapture?: import("react").MouseEventHandler<HTMLSpanElement> | undefined;
194
+ onClick?: import("react").MouseEventHandler<HTMLSpanElement> | undefined;
195
+ onClickCapture?: import("react").MouseEventHandler<HTMLSpanElement> | undefined;
196
+ onContextMenu?: import("react").MouseEventHandler<HTMLSpanElement> | undefined;
197
+ onContextMenuCapture?: import("react").MouseEventHandler<HTMLSpanElement> | undefined;
198
+ onDoubleClick?: import("react").MouseEventHandler<HTMLSpanElement> | undefined;
199
+ onDoubleClickCapture?: import("react").MouseEventHandler<HTMLSpanElement> | undefined;
200
+ onDragCapture?: import("react").DragEventHandler<HTMLSpanElement> | undefined;
201
+ onDragEndCapture?: import("react").DragEventHandler<HTMLSpanElement> | undefined;
202
+ onDragEnter?: import("react").DragEventHandler<HTMLSpanElement> | undefined;
203
+ onDragEnterCapture?: import("react").DragEventHandler<HTMLSpanElement> | undefined;
204
+ onDragExit?: import("react").DragEventHandler<HTMLSpanElement> | undefined;
205
+ onDragExitCapture?: import("react").DragEventHandler<HTMLSpanElement> | undefined;
206
+ onDragLeave?: import("react").DragEventHandler<HTMLSpanElement> | undefined;
207
+ onDragLeaveCapture?: import("react").DragEventHandler<HTMLSpanElement> | undefined;
208
+ onDragOver?: import("react").DragEventHandler<HTMLSpanElement> | undefined;
209
+ onDragOverCapture?: import("react").DragEventHandler<HTMLSpanElement> | undefined;
210
+ onDragStartCapture?: import("react").DragEventHandler<HTMLSpanElement> | undefined;
211
+ onDrop?: import("react").DragEventHandler<HTMLSpanElement> | undefined;
212
+ onDropCapture?: import("react").DragEventHandler<HTMLSpanElement> | undefined;
213
+ onMouseDown?: import("react").MouseEventHandler<HTMLSpanElement> | undefined;
214
+ onMouseDownCapture?: import("react").MouseEventHandler<HTMLSpanElement> | undefined;
215
+ onMouseEnter?: import("react").MouseEventHandler<HTMLSpanElement> | undefined;
216
+ onMouseLeave?: import("react").MouseEventHandler<HTMLSpanElement> | undefined;
217
+ onMouseMove?: import("react").MouseEventHandler<HTMLSpanElement> | undefined;
218
+ onMouseMoveCapture?: import("react").MouseEventHandler<HTMLSpanElement> | undefined;
219
+ onMouseOut?: import("react").MouseEventHandler<HTMLSpanElement> | undefined;
220
+ onMouseOutCapture?: import("react").MouseEventHandler<HTMLSpanElement> | undefined;
221
+ onMouseOver?: import("react").MouseEventHandler<HTMLSpanElement> | undefined;
222
+ onMouseOverCapture?: import("react").MouseEventHandler<HTMLSpanElement> | undefined;
223
+ onMouseUp?: import("react").MouseEventHandler<HTMLSpanElement> | undefined;
224
+ onMouseUpCapture?: import("react").MouseEventHandler<HTMLSpanElement> | undefined;
225
+ onSelect?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
226
+ onSelectCapture?: import("react").ReactEventHandler<HTMLSpanElement> | undefined;
227
+ onTouchCancel?: import("react").TouchEventHandler<HTMLSpanElement> | undefined;
228
+ onTouchCancelCapture?: import("react").TouchEventHandler<HTMLSpanElement> | undefined;
229
+ onTouchEnd?: import("react").TouchEventHandler<HTMLSpanElement> | undefined;
230
+ onTouchEndCapture?: import("react").TouchEventHandler<HTMLSpanElement> | undefined;
231
+ onTouchMove?: import("react").TouchEventHandler<HTMLSpanElement> | undefined;
232
+ onTouchMoveCapture?: import("react").TouchEventHandler<HTMLSpanElement> | undefined;
233
+ onTouchStart?: import("react").TouchEventHandler<HTMLSpanElement> | undefined;
234
+ onTouchStartCapture?: import("react").TouchEventHandler<HTMLSpanElement> | undefined;
235
+ onPointerDown?: import("react").PointerEventHandler<HTMLSpanElement> | undefined;
236
+ onPointerDownCapture?: import("react").PointerEventHandler<HTMLSpanElement> | undefined;
237
+ onPointerMove?: import("react").PointerEventHandler<HTMLSpanElement> | undefined;
238
+ onPointerMoveCapture?: import("react").PointerEventHandler<HTMLSpanElement> | undefined;
239
+ onPointerUp?: import("react").PointerEventHandler<HTMLSpanElement> | undefined;
240
+ onPointerUpCapture?: import("react").PointerEventHandler<HTMLSpanElement> | undefined;
241
+ onPointerCancel?: import("react").PointerEventHandler<HTMLSpanElement> | undefined;
242
+ onPointerCancelCapture?: import("react").PointerEventHandler<HTMLSpanElement> | undefined;
243
+ onPointerEnter?: import("react").PointerEventHandler<HTMLSpanElement> | undefined;
244
+ onPointerLeave?: import("react").PointerEventHandler<HTMLSpanElement> | undefined;
245
+ onPointerOver?: import("react").PointerEventHandler<HTMLSpanElement> | undefined;
246
+ onPointerOverCapture?: import("react").PointerEventHandler<HTMLSpanElement> | undefined;
247
+ onPointerOut?: import("react").PointerEventHandler<HTMLSpanElement> | undefined;
248
+ onPointerOutCapture?: import("react").PointerEventHandler<HTMLSpanElement> | undefined;
249
+ onGotPointerCapture?: import("react").PointerEventHandler<HTMLSpanElement> | undefined;
250
+ onGotPointerCaptureCapture?: import("react").PointerEventHandler<HTMLSpanElement> | undefined;
251
+ onLostPointerCapture?: import("react").PointerEventHandler<HTMLSpanElement> | undefined;
252
+ onLostPointerCaptureCapture?: import("react").PointerEventHandler<HTMLSpanElement> | undefined;
253
+ onScroll?: import("react").UIEventHandler<HTMLSpanElement> | undefined;
254
+ onScrollCapture?: import("react").UIEventHandler<HTMLSpanElement> | undefined;
255
+ onWheel?: import("react").WheelEventHandler<HTMLSpanElement> | undefined;
256
+ onWheelCapture?: import("react").WheelEventHandler<HTMLSpanElement> | undefined;
257
+ onAnimationStartCapture?: import("react").AnimationEventHandler<HTMLSpanElement> | undefined;
258
+ onAnimationEnd?: import("react").AnimationEventHandler<HTMLSpanElement> | undefined;
259
+ onAnimationEndCapture?: import("react").AnimationEventHandler<HTMLSpanElement> | undefined;
260
+ onAnimationIteration?: import("react").AnimationEventHandler<HTMLSpanElement> | undefined;
261
+ onAnimationIterationCapture?: import("react").AnimationEventHandler<HTMLSpanElement> | undefined;
262
+ onTransitionEnd?: import("react").TransitionEventHandler<HTMLSpanElement> | undefined;
263
+ onTransitionEndCapture?: import("react").TransitionEventHandler<HTMLSpanElement> | undefined;
264
+ } & import("framer-motion").MotionProps & import("react").RefAttributes<HTMLSpanElement> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme> & {
265
+ sourcesCount: number;
266
+ }, {}, {}>;
267
+ export declare const AppTextLabel: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
268
+ export declare const AppTextWrapper: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
269
+ export declare const appStatusAnimation: (index: number, shadow: string, xDelta?: number) => {
270
+ start: {
271
+ x: number;
272
+ transition: {
273
+ duration: number;
274
+ type: string;
275
+ ease: string;
276
+ };
277
+ };
278
+ animate: {
279
+ x: number;
280
+ transition: {
281
+ duration: number;
282
+ type: string;
283
+ ease: string;
284
+ };
285
+ boxShadow: string;
286
+ };
287
+ };
@@ -1,22 +1,51 @@
1
- import { Box, styled } from '@mui/material';
2
- export const AppsWrapper = styled('div')(({ theme }) => ({
1
+ import { styled } from '@mui/material';
2
+ import { motion } from 'framer-motion';
3
+ export const StyledAppsCell = styled('span')(({ theme }) => ({
3
4
  display: 'flex',
4
5
  alignItems: 'center',
6
+ justifyContent: 'flex-start',
5
7
  gap: theme.spacing(1),
6
- borderRadius: '44px',
7
- lineHeight: '120%',
8
8
  }));
9
- export const IconWrapper = styled(Box)(({ theme }) => ({
9
+ export const AppsStatusContainer = styled(motion.span)(({ theme, sourcesCount }) => ({
10
+ display: 'flex',
11
+ alignItems: 'center',
12
+ justifyContent: 'flex-start',
13
+ position: 'absolute',
14
+ minWidth: `${sourcesCount * 6 + 36}px `,
15
+ minHeight: '24px',
16
+ cursor: 'default',
17
+ backgroundColor: theme.palette.background.paper,
18
+ borderRadius: '16px',
19
+ }));
20
+ export const AppTextLabel = styled('span')(() => ({
21
+ fontSize: '11px',
22
+ overflow: 'hidden',
23
+ textOverflow: 'ellipsis',
24
+ whiteSpace: 'nowrap',
25
+ padding: '2px 0',
26
+ }));
27
+ export const AppTextWrapper = styled('div')(() => ({
10
28
  display: 'flex',
11
29
  alignItems: 'center',
12
30
  justifyContent: 'center',
13
- width: '23px',
14
- height: '23px',
15
- borderRadius: '50%',
16
- border: `1px solid ${theme.palette.divider}`,
17
- img: {
18
- width: '18.5px',
19
- height: '18.5px',
20
- borderRadius: '50%',
21
- },
31
+ paddingInline: '4px',
22
32
  }));
33
+ export const appStatusAnimation = (index, shadow, xDelta) => ({
34
+ start: {
35
+ x: index * 6,
36
+ transition: {
37
+ duration: 0.3,
38
+ type: 'tween',
39
+ ease: 'easeIn',
40
+ },
41
+ },
42
+ animate: {
43
+ x: xDelta ? index * xDelta : index * 40,
44
+ transition: {
45
+ duration: 0.3,
46
+ type: 'tween',
47
+ ease: 'easeOut',
48
+ },
49
+ boxShadow: shadow,
50
+ },
51
+ });
@@ -24,5 +24,5 @@ export default function BrandsCell(_a) {
24
24
  overlayIcon: icon ? _jsx(VerificationIcon, { src: icon }) : null,
25
25
  label: brand.name,
26
26
  };
27
- return (_jsx(TableCell, Object.assign({}, props, { children: _jsx(BrandsWrapper, { children: _jsx(Tooltip, Object.assign({ title: brand.name }, { children: _jsxs(Box, Object.assign({ display: "flex", alignItems: "center", gap: '5px', sx: { overflow: 'hidden' } }, { children: [_jsx(IconWithBadge, { mainIcon: item.icon, overlayIcon: item.overlayIcon }, item.label), _jsx(Label, { children: brand.name })] })) })) }) })));
27
+ return (_jsx(TableCell, Object.assign({}, props, { children: _jsx(BrandsWrapper, { children: _jsx(Tooltip, Object.assign({ title: brand.name }, { children: _jsxs(Box, Object.assign({ display: "flex", alignItems: "center", gap: '5px', sx: { overflow: 'hidden' } }, { children: [_jsx(IconWithBadge, { mainIcon: item.icon, overlayIcon: item.overlayIcon, mainIconSize: 16, containerSize: 16, borderColor: "transparent" }, item.label), _jsx(Label, { children: brand.name })] })) })) }) })));
28
28
  }
@@ -3,9 +3,10 @@ export const BrandsWrapper = styled('div')(({ theme }) => ({
3
3
  display: 'flex',
4
4
  alignItems: 'center',
5
5
  gap: theme.spacing(1),
6
+ border: '1px solid #F2F2F2',
6
7
  borderRadius: '44px',
8
+ padding: '4px 8px',
7
9
  lineHeight: '120%',
8
- cursor: 'pointer',
9
10
  }));
10
11
  export const BrandName = styled('div')(({ theme }) => ({
11
12
  fontSize: '14px',
@@ -17,7 +17,8 @@ import Tooltip from '../../../Tooltip';
17
17
  import { ImageWrapper } from '../../../index.js';
18
18
  import { TableCell } from '../../../TableCells';
19
19
  import { segmentsIcons } from './constant';
20
- import { ReferenceTextLabel, ReferenceTextWrapper, ReferenceSourcesContainer, StyledSourceCell, StyledSourceImage, referenceSourceAnimation, } from './style';
20
+ import { ReferenceTextLabel, ReferenceTextWrapper, ReferenceSourcesContainer, StyledSourceCell, referenceSourceAnimation } from './style';
21
+ import IconWithBadge from '../../../IconWithBadge';
21
22
  function SegmentsCell(_a) {
22
23
  var { isTextShown } = _a, props = __rest(_a, ["isTextShown"]);
23
24
  const [isTooltipOpen, setIsTooltipOpen] = useState(false);
@@ -32,11 +33,11 @@ function SegmentsCell(_a) {
32
33
  }, onClose: () => {
33
34
  setIsTooltipOpen(false);
34
35
  }, title: sourceTooltip }, { children: _jsx(ImageWrapper, Object.assign({ order: index, variants: referenceSourceAnimation(index, theme.shadows[4], isTextShown ? 83 : 0), sx: {
35
- width: isTextShown ? '79px' : '24px',
36
- } }, { children: isTextShown ? (_jsx(ReferenceTextWrapper, { children: _jsx(ReferenceTextLabel, { children: startCase(segment) }) })) : (_jsx(StyledSourceImage, { src: (segmentData === null || segmentData === void 0 ? void 0 : segmentData.icon) || segmentsIcons[segment], alt: segment, sx: Object.assign(Object.assign({}, (segment === 'order' && { width: '11.82px' })), ((segmentData === null || segmentData === void 0 ? void 0 : segmentData.icon) && { borderRadius: '40px' })), onError: (e) => {
36
+ width: isTextShown ? '79px' : '36px',
37
+ } }, { children: isTextShown ? (_jsx(ReferenceTextWrapper, { children: _jsx(ReferenceTextLabel, { children: startCase(segment) }) })) : (_jsx(IconWithBadge, { mainIcon: (segmentData === null || segmentData === void 0 ? void 0 : segmentData.icon) || segmentsIcons[segment], mainIconSize: segment === 'order' ? 11.82 : 16, containerSize: segment === 'order' ? 11.82 : 16, sx: Object.assign({}, ((segmentData === null || segmentData === void 0 ? void 0 : segmentData.icon) && { borderRadius: '40px' })), onError: (e) => {
37
38
  e.currentTarget.src = segmentsIcons[segment];
38
39
  e.currentTarget.style.borderRadius = '0px';
39
- } })) })) }), `${segment}-${index}`));
40
+ }, borderColor: "transparent" })) })) }), `${segment}-${index}`));
40
41
  }), [props, segments, isTextShown, theme]);
41
42
  const referenceSourcesCount = (ReferenceSources === null || ReferenceSources === void 0 ? void 0 : ReferenceSources.length) || 0;
42
43
  return (_jsx(TableCell, Object.assign({}, props, { children: _jsx(StyledSourceCell, { children: referenceSourcesCount > 0 ? (_jsx(ReferenceSourcesContainer, Object.assign({ layout: true, className: "reference-sources-container", whileHover: "animate", animate: isTooltipOpen ? 'animate' : 'start', sourcesCount: referenceSourcesCount, variants: { animate: { width: referenceSourcesCount * (6 + 32) } }, style: {
@@ -1,6 +1,5 @@
1
1
  /// <reference types="react" />
2
2
  export declare const StyledSourceCell: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
3
- export declare const StyledSourceImage: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, import("react").DetailedHTMLProps<import("react").ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, {}>;
4
3
  export declare const ReferenceSourcesContainer: import("@emotion/styled").StyledComponent<{
5
4
  hidden?: boolean | undefined;
6
5
  id?: string | undefined;
@@ -6,10 +6,6 @@ export const StyledSourceCell = styled('span')(({ theme }) => ({
6
6
  justifyContent: 'flex-start',
7
7
  gap: theme.spacing(1),
8
8
  }));
9
- export const StyledSourceImage = styled('img')(() => ({
10
- maxWidth: '12px',
11
- maxHeight: '12px',
12
- }));
13
9
  export const ReferenceSourcesContainer = styled(motion.span)(({ theme, sourcesCount }) => ({
14
10
  display: 'flex',
15
11
  alignItems: 'center',
@@ -44,7 +40,7 @@ export const referenceSourceAnimation = (index, shadow, xDelta) => ({
44
40
  },
45
41
  },
46
42
  animate: {
47
- x: xDelta ? index * xDelta : index * 28,
43
+ x: xDelta ? index * xDelta : index * 40,
48
44
  transition: {
49
45
  duration: 0.3,
50
46
  type: 'tween',
@@ -4,5 +4,5 @@ interface InputsI {
4
4
  onCloseDropdown: (e: MouseEvent<HTMLElement>) => void;
5
5
  filter: IColumnFilter & IColumnFilterInputs;
6
6
  }
7
- declare function Inputs({ onCloseDropdown, filter: { options, onConfirm, data, isOnlyOneFilter, onColumnFilterClearClick, wrapperSx } }: InputsI): import("react/jsx-runtime").JSX.Element;
7
+ declare function Inputs({ onCloseDropdown, filter: { options, onConfirm, data, isOnlyOneFilter, onClearFilterFields, wrapperSx } }: InputsI): import("react/jsx-runtime").JSX.Element;
8
8
  export default Inputs;
@@ -7,7 +7,7 @@ import { useTranslation } from 'react-i18next';
7
7
  import { grayCloseIcon, searchIcon } from '../../../../../constants/index.js';
8
8
  import { Wrapper, Text, InputStyled, InputsWrapper, ClearButton, ClearWrapper } from './style';
9
9
  import { CancelButton, Footer, OkayButton } from '../style';
10
- function Inputs({ onCloseDropdown, filter: { options = [], onConfirm, data, isOnlyOneFilter, onColumnFilterClearClick, wrapperSx } }) {
10
+ function Inputs({ onCloseDropdown, filter: { options = [], onConfirm, data, isOnlyOneFilter, onClearFilterFields, wrapperSx } }) {
11
11
  const [values, setValues] = useState({});
12
12
  useEffect(() => {
13
13
  setValues((options || []).reduce((acc, { apiKey }) => { var _a; return (Object.assign(Object.assign({}, acc), { [apiKey]: (_a = data === null || data === void 0 ? void 0 : data[apiKey]) !== null && _a !== void 0 ? _a : '' })); }, {}));
@@ -21,7 +21,7 @@ function Inputs({ onCloseDropdown, filter: { options = [], onConfirm, data, isOn
21
21
  onCloseDropdown(e);
22
22
  };
23
23
  const onClickClear = () => {
24
- onColumnFilterClearClick === null || onColumnFilterClearClick === void 0 ? void 0 : onColumnFilterClearClick();
24
+ onClearFilterFields === null || onClearFilterFields === void 0 ? void 0 : onClearFilterFields();
25
25
  setValues(options.reduce((acc, { apiKey }) => (Object.assign(Object.assign({}, acc), { [apiKey]: '' })), {}));
26
26
  };
27
27
  const isInputHasValue = (key) => values[key] !== undefined && values[key].length > 0;
@@ -133,6 +133,8 @@ export declare const receiptBillIcon: string;
133
133
  export declare const newReceiptIcon: string;
134
134
  export declare const acceptanceAppIcon: string;
135
135
  export declare const acceptanceEnabledIcon: string;
136
+ export declare const acceptanceBlueIcon: string;
137
+ export declare const payoutsGreenIcon: string;
136
138
  export declare const acceptanceAppDisabledIcon: string;
137
139
  export declare const payoutAppDisabledIcon: string;
138
140
  export declare const payoutEnabledIcon: string;
@@ -134,6 +134,8 @@ export const receiptBillIcon = `${appBaseUrl}/receiptBill.svg`;
134
134
  export const newReceiptIcon = `${lightUrl}/newReceiptIcon.svg`;
135
135
  export const acceptanceAppIcon = `${appBaseUrl}/acceptance.svg`;
136
136
  export const acceptanceEnabledIcon = `${lightUrl}/acceptanceEnabled.svg`;
137
+ export const acceptanceBlueIcon = `${lightUrl}/acceptanceBlue.svg`;
138
+ export const payoutsGreenIcon = `${lightUrl}/payoutsGreen.svg`;
137
139
  export const acceptanceAppDisabledIcon = `${appBaseUrl}/acceptanceAppIconDisabled.svg`;
138
140
  export const payoutAppDisabledIcon = `${appBaseUrl}/payoutsAppIconDisabled.svg`;
139
141
  export const payoutEnabledIcon = `${lightUrl}/payoutEnabled.svg`;
@@ -20,9 +20,9 @@ export declare const terminalsTableCellWidth: {
20
20
  readonly sheet: "80px";
21
21
  };
22
22
  readonly platform: {
23
- readonly default: "80px";
24
- readonly text: "80px";
25
- readonly sheet: "80px";
23
+ readonly default: "60px";
24
+ readonly text: "60px";
25
+ readonly sheet: "60px";
26
26
  };
27
27
  readonly branding: {
28
28
  readonly default: "80px";
@@ -20,9 +20,9 @@ export const terminalsTableCellWidth = {
20
20
  sheet: '80px',
21
21
  },
22
22
  platform: {
23
- default: '80px',
24
- text: '80px',
25
- sheet: '80px',
23
+ default: '60px',
24
+ text: '60px',
25
+ sheet: '60px',
26
26
  },
27
27
  branding: {
28
28
  default: '80px',
@@ -136,7 +136,7 @@ export type ColumnFilterValues = Record<string, string | string[] | Record<strin
136
136
  export type IColumnFilter = ({
137
137
  onConfirm?: (filterValues: ColumnFilterValues) => void;
138
138
  onClear: (apiKeys: string[]) => void;
139
- onColumnFilterClearClick?: () => void;
139
+ onClearFilterFields?: () => void;
140
140
  data?: ColumnFilterValues;
141
141
  isOnlyOneFilter?: boolean;
142
142
  wrapperSx?: SxProps;
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.0.298",
5
- "testVersion": 0,
4
+ "version": "0.0.299",
5
+ "testVersion": 9,
6
6
  "type": "module",
7
7
  "main": "build/index.js",
8
8
  "module": "build/index.js",