@tap-payments/os-micro-frontend-shared 0.1.31 → 0.1.32
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/build/components/RadioButton/RadioButton.d.ts +5 -0
- package/build/components/RadioButton/RadioButton.js +19 -0
- package/build/components/RadioButton/index.d.ts +2 -0
- package/build/components/RadioButton/index.js +1 -0
- package/build/components/RadioButton/style.d.ts +27 -0
- package/build/components/RadioButton/style.js +64 -0
- package/build/components/RadioButton/type.d.ts +12 -0
- package/build/components/RadioButton/type.js +1 -0
- package/build/components/RadioGroup/RadioGroup.d.ts +5 -0
- package/build/components/RadioGroup/RadioGroup.js +31 -0
- package/build/components/RadioGroup/index.d.ts +2 -0
- package/build/components/RadioGroup/index.js +1 -0
- package/build/components/RadioGroup/style.d.ts +6 -0
- package/build/components/RadioGroup/style.js +15 -0
- package/build/components/RadioGroup/type.d.ts +33 -0
- package/build/components/RadioGroup/type.js +1 -0
- package/build/components/RightLeftExpandingCenterChip/RightLeftExpandingCenterChip.d.ts +3 -0
- package/build/components/RightLeftExpandingCenterChip/RightLeftExpandingCenterChip.js +43 -0
- package/build/components/RightLeftExpandingCenterChip/index.d.ts +2 -0
- package/build/components/RightLeftExpandingCenterChip/index.js +2 -0
- package/build/components/RightLeftExpandingCenterChip/style.d.ts +3415 -0
- package/build/components/RightLeftExpandingCenterChip/style.js +104 -0
- package/build/components/RightLeftExpandingCenterChip/type.d.ts +10 -0
- package/build/components/RightLeftExpandingCenterChip/type.js +1 -0
- package/build/components/RightLeftExpandingCenterChip/useRightLeftExpandingCenterChip.d.ts +31 -0
- package/build/components/RightLeftExpandingCenterChip/useRightLeftExpandingCenterChip.js +156 -0
- package/build/components/index.d.ts +3 -0
- package/build/components/index.js +3 -0
- package/package.json +2 -2
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { RadioButtonProps } from './type';
|
|
3
|
+
declare function RadioButton({ size, customCheckedIcon, checkedColor, disabledColor, hoverColor, iconSize, showRipple, sx, ...props }: RadioButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare const _default: import("react").MemoExoticComponent<typeof RadioButton>;
|
|
5
|
+
export default _default;
|
|
@@ -0,0 +1,19 @@
|
|
|
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
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import { memo } from 'react';
|
|
14
|
+
import { StyledRadio, StyledRadioCheckedIcon } from './style';
|
|
15
|
+
function RadioButton(_a) {
|
|
16
|
+
var { size = 'small', customCheckedIcon, checkedColor, disabledColor, hoverColor, iconSize, showRipple = false, sx } = _a, props = __rest(_a, ["size", "customCheckedIcon", "checkedColor", "disabledColor", "hoverColor", "iconSize", "showRipple", "sx"]);
|
|
17
|
+
return (_jsx(StyledRadio, Object.assign({ size: size === 'large' ? 'medium' : size, disableRipple: !showRipple, checkedIcon: customCheckedIcon || _jsx(StyledRadioCheckedIcon, {}), iconSize: iconSize, checkedColor: checkedColor, disabledColor: disabledColor, hoverColor: hoverColor, sx: sx }, props)));
|
|
18
|
+
}
|
|
19
|
+
export default memo(RadioButton);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as RadioButton } from './RadioButton';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const DEFAULT_COLORS: {
|
|
3
|
+
readonly color: "#8C9196";
|
|
4
|
+
readonly checkedColor: "#1F88D0";
|
|
5
|
+
readonly disabledColor: "#C7C7CC";
|
|
6
|
+
};
|
|
7
|
+
export declare const SIZE_CONFIG: {
|
|
8
|
+
readonly small: {
|
|
9
|
+
readonly iconSize: 15;
|
|
10
|
+
readonly maxWidth: "24px";
|
|
11
|
+
};
|
|
12
|
+
readonly medium: {
|
|
13
|
+
readonly iconSize: 18;
|
|
14
|
+
readonly maxWidth: "28px";
|
|
15
|
+
};
|
|
16
|
+
readonly large: {
|
|
17
|
+
readonly iconSize: 20;
|
|
18
|
+
readonly maxWidth: "32px";
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export declare const StyledRadioCheckedIcon: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme> & import("react").ClassAttributes<HTMLSpanElement> & import("react").HTMLAttributes<HTMLSpanElement>, {}, {}>;
|
|
22
|
+
export declare const StyledRadio: import("@emotion/styled").StyledComponent<import("@mui/material/Radio").RadioProps & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme> & {
|
|
23
|
+
iconSize?: number | undefined;
|
|
24
|
+
checkedColor?: string | undefined;
|
|
25
|
+
disabledColor?: string | undefined;
|
|
26
|
+
hoverColor?: string | undefined;
|
|
27
|
+
}, {}, {}>;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { styled } from '@mui/material/styles';
|
|
2
|
+
import Radio from '@mui/material/Radio';
|
|
3
|
+
export const DEFAULT_COLORS = {
|
|
4
|
+
color: '#8C9196',
|
|
5
|
+
checkedColor: '#1F88D0',
|
|
6
|
+
disabledColor: '#C7C7CC',
|
|
7
|
+
};
|
|
8
|
+
export const SIZE_CONFIG = {
|
|
9
|
+
small: {
|
|
10
|
+
iconSize: 15,
|
|
11
|
+
maxWidth: '24px',
|
|
12
|
+
},
|
|
13
|
+
medium: {
|
|
14
|
+
iconSize: 18,
|
|
15
|
+
maxWidth: '28px',
|
|
16
|
+
},
|
|
17
|
+
large: {
|
|
18
|
+
iconSize: 20,
|
|
19
|
+
maxWidth: '32px',
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
const StyledRadioIcon = styled('span')(() => ({
|
|
23
|
+
borderRadius: '50%',
|
|
24
|
+
width: '12px',
|
|
25
|
+
height: '12px',
|
|
26
|
+
boxSizing: 'border-box',
|
|
27
|
+
boxShadow: 'inset 0 0 0 1px rgba(16,22,26,.2), inset 0 -1px 0 rgba(16,22,26,.1)',
|
|
28
|
+
}));
|
|
29
|
+
export const StyledRadioCheckedIcon = styled(StyledRadioIcon)({
|
|
30
|
+
backgroundColor: DEFAULT_COLORS.checkedColor,
|
|
31
|
+
'&::before': {
|
|
32
|
+
display: 'block',
|
|
33
|
+
width: '12px',
|
|
34
|
+
height: '12px',
|
|
35
|
+
backgroundColor: DEFAULT_COLORS.checkedColor,
|
|
36
|
+
borderRadius: '50%',
|
|
37
|
+
backgroundImage: 'radial-gradient(#fff,#fff 28%,transparent 32%)',
|
|
38
|
+
content: '""',
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
export const StyledRadio = styled(Radio, {
|
|
42
|
+
shouldForwardProp: (prop) => !['iconSize', 'checkedColor', 'disabledColor', 'hoverColor'].includes(prop),
|
|
43
|
+
})(({ iconSize, checkedColor, disabledColor, hoverColor }) => {
|
|
44
|
+
return {
|
|
45
|
+
'& .MuiSvgIcon-root': {
|
|
46
|
+
fontSize: iconSize || SIZE_CONFIG.small.iconSize,
|
|
47
|
+
},
|
|
48
|
+
maxWidth: SIZE_CONFIG.small.maxWidth,
|
|
49
|
+
cursor: 'pointer',
|
|
50
|
+
color: DEFAULT_COLORS.color,
|
|
51
|
+
'&.Mui-checked': {
|
|
52
|
+
color: checkedColor || DEFAULT_COLORS.checkedColor,
|
|
53
|
+
},
|
|
54
|
+
'&:hover': hoverColor
|
|
55
|
+
? {
|
|
56
|
+
backgroundColor: 'transparent',
|
|
57
|
+
color: hoverColor,
|
|
58
|
+
}
|
|
59
|
+
: undefined,
|
|
60
|
+
'&.Mui-disabled': {
|
|
61
|
+
color: disabledColor || DEFAULT_COLORS.disabledColor,
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { RadioProps, SxProps, Theme } from '@mui/material';
|
|
3
|
+
export interface RadioButtonProps extends Omit<RadioProps, 'checkedIcon' | 'icon' | 'color' | 'size'> {
|
|
4
|
+
size?: 'small' | 'medium' | 'large';
|
|
5
|
+
customCheckedIcon?: React.ReactNode;
|
|
6
|
+
checkedColor?: string;
|
|
7
|
+
disabledColor?: string;
|
|
8
|
+
hoverColor?: string;
|
|
9
|
+
iconSize?: number;
|
|
10
|
+
showRipple?: boolean;
|
|
11
|
+
sx?: SxProps<Theme>;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
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;
|
|
4
|
+
declare const _default: import("react").MemoExoticComponent<typeof RadioGroup>;
|
|
5
|
+
export default _default;
|
|
@@ -0,0 +1,31 @@
|
|
|
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
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import { memo } from 'react';
|
|
14
|
+
import MuiRadioGroup from '@mui/material/RadioGroup';
|
|
15
|
+
import { StyledFormControlLabel } from './style';
|
|
16
|
+
import { RadioButton } from '../RadioButton';
|
|
17
|
+
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
|
+
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
|
+
}
|
|
22
|
+
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"]);
|
|
24
|
+
const handleChange = (event) => {
|
|
25
|
+
const value = event.target.value;
|
|
26
|
+
onOptionChange === null || onOptionChange === void 0 ? void 0 : onOptionChange(value);
|
|
27
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(event, value);
|
|
28
|
+
};
|
|
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))) })));
|
|
30
|
+
}
|
|
31
|
+
export default memo(RadioGroup);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as RadioGroup } from './RadioGroup';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const StyledFormControlLabel: import("@emotion/styled").StyledComponent<import("@mui/material/FormControlLabel").FormControlLabelProps & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme> & {
|
|
3
|
+
size?: "medium" | "small" | "large" | undefined;
|
|
4
|
+
showHoverEffects?: boolean | undefined;
|
|
5
|
+
labelSx?: import("react").CSSProperties | undefined;
|
|
6
|
+
}, {}, {}>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { styled } from '@mui/material/styles';
|
|
2
|
+
import FormControlLabel from '@mui/material/FormControlLabel';
|
|
3
|
+
export const StyledFormControlLabel = styled(FormControlLabel, {
|
|
4
|
+
shouldForwardProp: (prop) => !['size', 'showHoverEffects', 'labelSx'].includes(prop),
|
|
5
|
+
})(({ size = 'small', showHoverEffects = true, labelSx }) => (Object.assign(Object.assign({ margin: '0', width: '100%', cursor: 'pointer', padding: size === 'small' ? '7.5px 16px 7.5px 8px' : size === 'medium' ? '9px 16px 9px 10px' : '11px 16px 11px 12px', maxHeight: size === 'small' ? '35px' : size === 'medium' ? '40px' : '45px' }, (showHoverEffects && {
|
|
6
|
+
'&:hover': {
|
|
7
|
+
boxShadow: '0px 0px 16px 0px #00000021',
|
|
8
|
+
},
|
|
9
|
+
})), { '& .MuiFormControlLabel-label': Object.assign({ fontSize: size === 'small' ? '11px' : size === 'medium' ? '13px' : '15px', fontWeight: '500', color: '#20232B', width: '100%', cursor: 'pointer' }, labelSx), '& .MuiRadio-root': {
|
|
10
|
+
cursor: 'pointer',
|
|
11
|
+
color: '#8C9196',
|
|
12
|
+
'&.Mui-checked': {
|
|
13
|
+
color: '#1F88D0',
|
|
14
|
+
},
|
|
15
|
+
} })));
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { RadioGroupProps } from '@mui/material/RadioGroup';
|
|
3
|
+
import { FormControlLabelProps } from '@mui/material/FormControlLabel';
|
|
4
|
+
import { RadioButtonProps } from '../RadioButton/type';
|
|
5
|
+
export interface RadioOption {
|
|
6
|
+
value: string;
|
|
7
|
+
label: string;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
description?: string;
|
|
10
|
+
icon?: ReactNode;
|
|
11
|
+
customProps?: Partial<RadioButtonProps>;
|
|
12
|
+
}
|
|
13
|
+
export interface CustomRadioGroupProps extends Omit<RadioGroupProps, 'children'> {
|
|
14
|
+
options: RadioOption[];
|
|
15
|
+
onOptionChange?: (value: string) => void;
|
|
16
|
+
size?: 'small' | 'medium' | 'large';
|
|
17
|
+
customLabelRenderer?: (option: RadioOption) => ReactNode;
|
|
18
|
+
layout?: 'vertical' | 'horizontal';
|
|
19
|
+
spacing?: number;
|
|
20
|
+
labelPosition?: 'start' | 'end' | 'top' | 'bottom';
|
|
21
|
+
showHoverEffects?: boolean;
|
|
22
|
+
customRadioProps?: Partial<RadioButtonProps>;
|
|
23
|
+
labelSx?: React.CSSProperties;
|
|
24
|
+
}
|
|
25
|
+
export interface RadioItemProps extends Omit<FormControlLabelProps, 'control' | 'label'> {
|
|
26
|
+
option: RadioOption;
|
|
27
|
+
size?: 'small' | 'medium' | 'large';
|
|
28
|
+
customLabelRenderer?: (option: RadioOption) => ReactNode;
|
|
29
|
+
labelPosition?: 'start' | 'end' | 'top' | 'bottom';
|
|
30
|
+
showHoverEffects?: boolean;
|
|
31
|
+
customRadioProps?: Partial<RadioButtonProps>;
|
|
32
|
+
labelSx?: React.CSSProperties;
|
|
33
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { RightLeftExpandingCenterChipProps } from './type';
|
|
2
|
+
declare function RightLeftExpandingCenterChip({ leftIcons, rightIcons, centerIcon, expandableCenter, expandedZIndex, ...props }: Readonly<RightLeftExpandingCenterChipProps>): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
export default RightLeftExpandingCenterChip;
|
|
@@ -0,0 +1,43 @@
|
|
|
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
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
+
import Box from '@mui/material/Box';
|
|
14
|
+
import { AnimatePresence } from 'framer-motion';
|
|
15
|
+
import { CenterIconWrapper, ExpandedSection, PeekContainer, CenterChip, LeftPeekChip, RightPeekChip, LeftExpandIcon, RightExpandIcon, ExpandChip, CenterShiftWrapper, CenterContent, ExpandableContainer, ExpandableInner, tableCellSx, CHIP_GAP, HoverBridge, } from './style';
|
|
16
|
+
import { useRightLeftExpandingCenterChip, DEFAULT_CHIP_MIN_WIDTH } from './useRightLeftExpandingCenterChip';
|
|
17
|
+
function RightLeftExpandingCenterChip(_a) {
|
|
18
|
+
var { leftIcons = [], rightIcons = [], centerIcon, expandableCenter, expandedZIndex = 1000 } = _a, props = __rest(_a, ["leftIcons", "rightIcons", "centerIcon", "expandableCenter", "expandedZIndex"]);
|
|
19
|
+
const { isHovering, handleMouseEnter, handleMouseLeave, centerWrapRef, centerContentRef, centerChipRef, anchors, leftChipRefs, rightChipRefs, leftOffsets, rightOffsets, expandableInnerRef, expandedMV, shiftX, rightShift, leftHoverWidth, rightHoverWidth, } = useRightLeftExpandingCenterChip({ leftIcons, rightIcons, centerIcon, expandableCenter });
|
|
20
|
+
return (_jsx(Box, Object.assign({}, props, { "data-testid": "RightLeftExpandingCenterChipBox", sx: tableCellSx }, { children: _jsx(CenterShiftWrapper, Object.assign({ "data-testid": "CenterShiftWrapper", initial: false, style: { x: shiftX } }, { children: _jsxs(CenterIconWrapper, Object.assign({ "data-testid": "CenterIconWrapper", ref: centerWrapRef, onMouseLeave: handleMouseLeave }, { children: [_jsxs(PeekContainer, Object.assign({ "data-testid": "PeekContainer" }, { children: [_jsx(AnimatePresence, Object.assign({ initial: false }, { children: leftIcons.length > 0 && (_jsx(LeftPeekChip, { "data-testid": "LeftPeekChip", initial: { opacity: 0, scale: 0.95, x: -4 }, animate: isHovering ? { opacity: 0, scale: 0.9, x: -6 } : { opacity: 1, scale: 1, x: -5 }, exit: { opacity: 0, scale: 0.95, x: -4 }, transition: { duration: 0.18, ease: 'easeOut' } }, "left-peek")) })), _jsxs(CenterChip, Object.assign({ "data-testid": "CenterChip", ref: centerChipRef, layout: true, onMouseEnter: handleMouseEnter }, { children: [_jsx(CenterContent, Object.assign({ "data-testid": "CenterContent", ref: centerContentRef, layout: true }, { children: centerIcon })), _jsx(AnimatePresence, Object.assign({ initial: false }, { children: expandableCenter && (_jsx(ExpandableContainer, Object.assign({ "data-testid": "ExpandableContainer", style: { width: expandedMV }, initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, transition: { duration: 0.2, ease: 'easeOut' } }, { children: _jsx(ExpandableInner, Object.assign({ "data-testid": "ExpandableInner", ref: expandableInnerRef, layout: true }, { children: expandableCenter })) }), "expandable-center")) }))] })), _jsx(AnimatePresence, Object.assign({ initial: false }, { children: rightIcons.length > 0 && (_jsx(RightPeekChip, { "data-testid": "RightPeekChip", initial: { opacity: 0, scale: 0.95, x: 4 }, animate: isHovering ? { opacity: 0, scale: 0.9, x: 6 } : { opacity: 1, scale: 1, x: 5 }, exit: { opacity: 0, scale: 0.95, x: 4 }, transition: { duration: 0.18, ease: 'easeOut' } }, "right-peek")) }))] })), isHovering && leftIcons.length > 0 && (_jsx(HoverBridge, { "data-testid": "LeftHoverBridge", side: "left", style: { width: leftHoverWidth, right: `calc(100% - ${anchors.left}px)`, zIndex: expandedZIndex, pointerEvents: 'auto' } })), isHovering && rightIcons.length > 0 && (_jsx(HoverBridge, { "data-testid": "RightHoverBridge", side: "right", style: { width: rightHoverWidth, left: `${anchors.right}px`, zIndex: expandedZIndex, pointerEvents: 'auto' } })), _jsx(AnimatePresence, Object.assign({ initial: false }, { children: leftIcons.length > 0 && (_jsx(ExpandedSection, Object.assign({ "data-testid": "LeftExpandedSection", side: "left", style: {
|
|
21
|
+
right: `calc(100% - ${anchors.left}px)`,
|
|
22
|
+
top: '50%',
|
|
23
|
+
position: 'absolute',
|
|
24
|
+
pointerEvents: isHovering ? 'auto' : 'none',
|
|
25
|
+
zIndex: expandedZIndex,
|
|
26
|
+
}, initial: { opacity: 0, x: 0, y: '-50%' }, animate: isHovering ? { opacity: 1, x: 0, y: '-50%' } : { opacity: 0, x: 0, y: '-50%' }, exit: { opacity: 0, x: 0, y: '-50%' }, transition: { duration: 0.25, ease: 'easeOut' } }, { children: leftIcons.map((icon, index) => {
|
|
27
|
+
var _a;
|
|
28
|
+
const leftOffset = (_a = leftOffsets[index]) !== null && _a !== void 0 ? _a : (DEFAULT_CHIP_MIN_WIDTH + CHIP_GAP) * (index + 1);
|
|
29
|
+
return (_jsx(LeftExpandIcon, Object.assign({ "data-testid": `LeftExpandIcon-${index}`, initial: { opacity: 0, x: 0 }, animate: isHovering ? { opacity: 1, x: -leftOffset } : { opacity: 0, x: 0 }, exit: { opacity: 0, x: 0 }, transition: { duration: 0.25 + index * 0.04, ease: 'easeOut' }, style: { zIndex: expandedZIndex + (leftIcons.length - index) } }, { children: _jsx(ExpandChip, Object.assign({ "data-testid": `LeftExpandChip-${index}`, ref: (el) => (leftChipRefs.current[index] = el) }, { children: icon })) }), `left-${index}`));
|
|
30
|
+
}) }), "left-expanded")) })), _jsx(AnimatePresence, Object.assign({ initial: false }, { children: rightIcons.length > 0 && (_jsx(ExpandedSection, Object.assign({ "data-testid": "RightExpandedSection", side: "right", style: {
|
|
31
|
+
left: `${anchors.right}px`,
|
|
32
|
+
top: '50%',
|
|
33
|
+
position: 'absolute',
|
|
34
|
+
pointerEvents: isHovering ? 'auto' : 'none',
|
|
35
|
+
zIndex: expandedZIndex,
|
|
36
|
+
}, initial: { opacity: 0, x: 0, y: '-50%' }, animate: isHovering ? { opacity: 1, x: 0, y: '-50%' } : { opacity: 0, x: 0, y: '-50%' }, exit: { opacity: 0, x: 0, y: '-50%' }, transition: { duration: 0.25, ease: 'easeOut' } }, { children: rightIcons.map((icon, index) => {
|
|
37
|
+
var _a;
|
|
38
|
+
const base = (_a = rightOffsets[index]) !== null && _a !== void 0 ? _a : (DEFAULT_CHIP_MIN_WIDTH + CHIP_GAP) * (index + 1);
|
|
39
|
+
const shift = rightShift;
|
|
40
|
+
return (_jsx(RightExpandIcon, Object.assign({ "data-testid": `RightExpandIcon-${index}`, initial: { opacity: 0, x: 0 }, animate: isHovering ? { opacity: 1, x: shift + base } : { opacity: 0, x: 0 }, exit: { opacity: 0, x: 0 }, transition: { duration: 0.25 + index * 0.04, ease: 'easeOut' }, style: { zIndex: expandedZIndex + (rightIcons.length - index) } }, { children: _jsx(ExpandChip, Object.assign({ "data-testid": `RightExpandChip-${index}`, ref: (el) => (rightChipRefs.current[index] = el) }, { children: icon })) }), `right-${index}`));
|
|
41
|
+
}) }), "right-expanded")) }))] })) })) })));
|
|
42
|
+
}
|
|
43
|
+
export default RightLeftExpandingCenterChip;
|