@trafilea/afrodita-components 4.0.2-beta.8 → 4.0.2-beta.9
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/dts/components/index.d.ts +2 -1
- package/build/dts/components/input/base/BaseInput.d.ts +12 -3
- package/build/dts/components/input/base/BaseInput.stories.d.ts +3 -4
- package/build/dts/components/input/base/Styled.d.ts +2 -1
- package/build/dts/components/input/basePlusButton/BasePlusButton.d.ts +4 -5
- package/build/dts/components/input/basePlusButton/Success.d.ts +4 -3
- package/build/dts/components/input/basePlusIcon/BasePlusIcon.d.ts +2 -2
- package/build/dts/components/input/custom/Custom.d.ts +5 -4
- package/build/dts/components/input/custom/Custom.stories.d.ts +2 -2
- package/build/dts/components/input/index.d.ts +2 -2
- package/build/dts/components/shared/button/Button.d.ts +6 -0
- package/build/index.d.ts +37 -15
- package/build/index.esm.js +75 -39
- package/build/index.esm.js.map +1 -1
- package/build/index.js +75 -38
- package/build/index.js.map +1 -1
- package/package.json +1 -1
package/build/index.js
CHANGED
|
@@ -4447,7 +4447,7 @@ function Disclosure(props) {
|
|
|
4447
4447
|
} // ---
|
|
4448
4448
|
|
|
4449
4449
|
var DEFAULT_BUTTON_TAG$1 = 'button';
|
|
4450
|
-
var Button$
|
|
4450
|
+
var Button$7 = /*#__PURE__*/forwardRefWithAs(function Button(props, ref) {
|
|
4451
4451
|
var _useDisclosureContext = useDisclosureContext([Disclosure.name, Button.name].join('.')),
|
|
4452
4452
|
state = _useDisclosureContext[0],
|
|
4453
4453
|
dispatch = _useDisclosureContext[1];
|
|
@@ -4610,7 +4610,7 @@ var Panel = /*#__PURE__*/forwardRefWithAs(function Panel(props, ref) {
|
|
|
4610
4610
|
}));
|
|
4611
4611
|
}); // ---
|
|
4612
4612
|
|
|
4613
|
-
Disclosure.Button = Button$
|
|
4613
|
+
Disclosure.Button = Button$7;
|
|
4614
4614
|
Disclosure.Panel = Panel;
|
|
4615
4615
|
|
|
4616
4616
|
function disposables() {
|
|
@@ -5006,7 +5006,7 @@ function Listbox(props) {
|
|
|
5006
5006
|
} // ---
|
|
5007
5007
|
|
|
5008
5008
|
var DEFAULT_BUTTON_TAG = 'button';
|
|
5009
|
-
var Button$
|
|
5009
|
+
var Button$6 = /*#__PURE__*/forwardRefWithAs(function Button(props, ref) {
|
|
5010
5010
|
var _state$optionsRef$cur;
|
|
5011
5011
|
|
|
5012
5012
|
var _useListboxContext = useListboxContext([Listbox.name, Button.name].join('.')),
|
|
@@ -5465,7 +5465,7 @@ function Option$2(props) {
|
|
|
5465
5465
|
} // ---
|
|
5466
5466
|
|
|
5467
5467
|
|
|
5468
|
-
Listbox.Button = Button$
|
|
5468
|
+
Listbox.Button = Button$6;
|
|
5469
5469
|
Listbox.Label = Label$4;
|
|
5470
5470
|
Listbox.Options = Options;
|
|
5471
5471
|
Listbox.Option = Option$2;
|
|
@@ -6782,11 +6782,11 @@ var ImageSmallPreview = function (_a) {
|
|
|
6782
6782
|
var templateObject_1$O;
|
|
6783
6783
|
|
|
6784
6784
|
var Container$w = newStyled.div(templateObject_1$N || (templateObject_1$N = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n padding-right: 1.25rem;\n overflow: auto;\n"], ["\n display: flex;\n flex-direction: column;\n padding-right: 1.25rem;\n overflow: auto;\n"])));
|
|
6785
|
-
var Button$
|
|
6785
|
+
var Button$5 = newStyled.button(templateObject_2$v || (templateObject_2$v = __makeTemplateObject(["\n padding: 0;\n border: none;\n text-decoration: none;\n background: transparent;\n"], ["\n padding: 0;\n border: none;\n text-decoration: none;\n background: transparent;\n"])));
|
|
6786
6786
|
var ImagePreviewList = function (_a) {
|
|
6787
6787
|
var images = _a.images, selectedImage = _a.selectedImage, onClick = _a.onClick, dataTestId = _a.dataTestId;
|
|
6788
6788
|
return (jsx(Container$w, __assign({ "data-testid": dataTestId }, { children: images.map(function (item) {
|
|
6789
|
-
return (jsx(Button$
|
|
6789
|
+
return (jsx(Button$5, __assign({ onClick: function () { return onClick(item); } }, { children: jsx(ImageSmallPreview, { css: { marginBottom: '1.25rem' }, imageUrl: item.imageUrl, alt: item.alt, selected: item.key === selectedImage.key }, void 0) }), item.key));
|
|
6790
6790
|
}) }), void 0));
|
|
6791
6791
|
};
|
|
6792
6792
|
var templateObject_1$N, templateObject_2$v;
|
|
@@ -7533,7 +7533,7 @@ var Container$k = newStyled.div(templateObject_1$y || (templateObject_1$y = __ma
|
|
|
7533
7533
|
var color = _a.color;
|
|
7534
7534
|
return color;
|
|
7535
7535
|
});
|
|
7536
|
-
var StyledInput = newStyled.input(templateObject_2$m || (templateObject_2$m = __makeTemplateObject(["\n padding: ", ";\n font-size: ", ";\n border-radius: ", ";\n border: ", ";\n line-height: ", ";\n color: ", ";\n font-weight: ", ";\n
|
|
7536
|
+
var StyledInput = newStyled.input(templateObject_2$m || (templateObject_2$m = __makeTemplateObject(["\n padding: ", ";\n font-size: ", ";\n border-radius: ", ";\n border: ", ";\n line-height: ", ";\n color: ", ";\n font-weight: ", ";\n flex: 1 1 50%;\n height: 100%;\n box-sizing: border-box;\n\n &::placeholder {\n color: ", ";\n }\n\n &:focus {\n outline: none;\n border-color: ", ";\n box-shadow: ", ";\n }\n\n &:disabled {\n background-color: ", ";\n border: 0.063rem solid ", ";\n color: ", ";\n\n &::placeholder {\n color: ", ";\n }\n }\n"], ["\n padding: ", ";\n font-size: ", ";\n border-radius: ", ";\n border: ", ";\n line-height: ", ";\n color: ", ";\n font-weight: ", ";\n flex: 1 1 50%;\n height: 100%;\n box-sizing: border-box;\n\n &::placeholder {\n color: ", ";\n }\n\n &:focus {\n outline: none;\n border-color: ", ";\n box-shadow: ", ";\n }\n\n &:disabled {\n background-color: ", ";\n border: 0.063rem solid ", ";\n color: ", ";\n\n &::placeholder {\n color: ", ";\n }\n }\n"])), function (_a) {
|
|
7537
7537
|
var padding = _a.padding;
|
|
7538
7538
|
return padding;
|
|
7539
7539
|
}, function (_a) {
|
|
@@ -7576,34 +7576,49 @@ var StyledInput = newStyled.input(templateObject_2$m || (templateObject_2$m = __
|
|
|
7576
7576
|
var disabledColor = _a.disabledColor;
|
|
7577
7577
|
return disabledColor;
|
|
7578
7578
|
});
|
|
7579
|
-
var InputWrapper = newStyled.div(templateObject_3$f || (templateObject_3$f = __makeTemplateObject(["\n position: relative;\n display: flex;\n height:
|
|
7579
|
+
var InputWrapper = newStyled.div(templateObject_3$f || (templateObject_3$f = __makeTemplateObject(["\n position: relative;\n display: flex;\n height: ", ";\n"], ["\n position: relative;\n display: flex;\n height: ", ";\n"])), function (_a) {
|
|
7580
|
+
var size = _a.size;
|
|
7581
|
+
return (size === 'small' ? '36px' : '44px');
|
|
7582
|
+
});
|
|
7580
7583
|
var templateObject_1$y, templateObject_2$m, templateObject_3$f;
|
|
7581
7584
|
|
|
7582
7585
|
var BaseInput = function (_a) {
|
|
7583
|
-
var
|
|
7586
|
+
var _b;
|
|
7587
|
+
var value = _a.value, onChange = _a.onChange, _c = _a.defaultValue, defaultValue = _c === void 0 ? '' : _c, label = _a.label, children = _a.children, required = _a.required, onValidation = _a.onValidation, size = _a.size, rest = __rest(_a, ["value", "onChange", "defaultValue", "label", "children", "required", "onValidation", "size"]);
|
|
7584
7588
|
var theme = useTheme();
|
|
7585
|
-
var
|
|
7586
|
-
var
|
|
7589
|
+
var _d = React.useState((_b = value !== null && value !== void 0 ? value : defaultValue) !== null && _b !== void 0 ? _b : ''), internalValue = _d[0], setInternalValue = _d[1];
|
|
7590
|
+
var _e = React.useState(exports.InputValidationType.Empty), status = _e[0], setStatus = _e[1];
|
|
7587
7591
|
var handleChange = function (_a) {
|
|
7588
|
-
var
|
|
7589
|
-
|
|
7590
|
-
|
|
7592
|
+
var target = _a.target;
|
|
7593
|
+
if (onChange) {
|
|
7594
|
+
onChange(target.value);
|
|
7595
|
+
}
|
|
7596
|
+
if (value == null) {
|
|
7597
|
+
setInternalValue(target.value);
|
|
7598
|
+
}
|
|
7591
7599
|
};
|
|
7592
7600
|
var validate = function (_a) {
|
|
7593
7601
|
var value = _a.target.value;
|
|
7594
|
-
var
|
|
7595
|
-
setStatus(newStatus);
|
|
7596
|
-
onValidation && onValidation(newStatus);
|
|
7597
|
-
};
|
|
7598
|
-
var handleValidations = function (value) {
|
|
7602
|
+
var status = exports.InputValidationType.Valid;
|
|
7599
7603
|
if (required && isEmpty(value)) {
|
|
7600
|
-
|
|
7604
|
+
status = exports.InputValidationType.Error;
|
|
7601
7605
|
}
|
|
7602
7606
|
if (!required && isEmpty(value)) {
|
|
7603
|
-
|
|
7607
|
+
status = exports.InputValidationType.Empty;
|
|
7604
7608
|
}
|
|
7605
|
-
|
|
7609
|
+
setStatus(status);
|
|
7606
7610
|
};
|
|
7611
|
+
React.useEffect(function () {
|
|
7612
|
+
if (value == null) {
|
|
7613
|
+
return;
|
|
7614
|
+
}
|
|
7615
|
+
setInternalValue(value);
|
|
7616
|
+
}, [value]);
|
|
7617
|
+
React.useEffect(function () {
|
|
7618
|
+
if (onValidation != null) {
|
|
7619
|
+
onValidation(status);
|
|
7620
|
+
}
|
|
7621
|
+
}, [onValidation, status]);
|
|
7607
7622
|
var styling = {
|
|
7608
7623
|
border: theme.component.input.border,
|
|
7609
7624
|
borderRadius: theme.component.input.borderRadius,
|
|
@@ -7622,39 +7637,57 @@ var BaseInput = function (_a) {
|
|
|
7622
7637
|
? theme.colors.shades['700'].color
|
|
7623
7638
|
: status === exports.InputValidationType.Error
|
|
7624
7639
|
? theme.colors.semantic.urgent.color
|
|
7625
|
-
: '' }, { children: [label && (jsxRuntime.jsx(InputLabel, { label: label, isDisabled: rest.disabled, isRequired: Boolean(required) }, void 0)), jsxRuntime.jsxs(InputWrapper, __assign({ className: "inputWrapper" }, { children: [jsxRuntime.jsx(StyledInput, __assign({ "data-testid": "base-input", type: "text", onChange: handleChange, onBlur: validate, required: Boolean(required), value:
|
|
7640
|
+
: '' }, { children: [label && (jsxRuntime.jsx(InputLabel, { label: label, isDisabled: rest.disabled, isRequired: Boolean(required) }, void 0)), jsxRuntime.jsxs(InputWrapper, __assign({ className: "inputWrapper", size: size }, { children: [jsxRuntime.jsx(StyledInput, __assign({ "data-testid": "base-input", type: "text", onChange: handleChange, onBlur: validate, required: Boolean(required), value: internalValue }, rest, styling), void 0), children] }), void 0), required && status === exports.InputValidationType.Error && jsxRuntime.jsx(Error$1, { error: required }, void 0)] }), void 0));
|
|
7641
|
+
};
|
|
7642
|
+
|
|
7643
|
+
var Button$4 = function (_a) {
|
|
7644
|
+
var variant = _a.variant, props = __rest(_a, ["variant"]);
|
|
7645
|
+
if (variant === 'primary') {
|
|
7646
|
+
return jsxRuntime.jsx(ButtonPrimary, __assign({}, props), void 0);
|
|
7647
|
+
}
|
|
7648
|
+
if (variant === 'secondary') {
|
|
7649
|
+
return jsxRuntime.jsx(ButtonSecondary, __assign({}, props), void 0);
|
|
7650
|
+
}
|
|
7651
|
+
if (variant === 'secondary-outline') {
|
|
7652
|
+
return jsxRuntime.jsx(ButtonSecondary, __assign({}, props), void 0);
|
|
7653
|
+
}
|
|
7654
|
+
throw new Error("Invalid button variant ".concat(variant));
|
|
7626
7655
|
};
|
|
7627
7656
|
|
|
7628
|
-
var Container$j = newStyled.div(templateObject_1$x || (templateObject_1$x = __makeTemplateObject(["\n input {\n border-radius: ", ";\n }\n"], ["\n input {\n border-radius: ", ";\n }\n"])), function (_a) {
|
|
7657
|
+
var Container$j = newStyled.div(templateObject_1$x || (templateObject_1$x = __makeTemplateObject(["\n overflow: hidden;\n\n input {\n border-radius: ", ";\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border-right: none;\n }\n"], ["\n overflow: hidden;\n\n input {\n border-radius: ", ";\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border-right: none;\n }\n"])), function (_a) {
|
|
7629
7658
|
var theme = _a.theme;
|
|
7630
7659
|
return theme.component.inputCustom.input.borderRadius;
|
|
7631
7660
|
});
|
|
7632
|
-
var ButtonContainer$1 = newStyled.div(templateObject_2$l || (templateObject_2$l = __makeTemplateObject(["\n width:
|
|
7661
|
+
var ButtonContainer$1 = newStyled.div(templateObject_2$l || (templateObject_2$l = __makeTemplateObject(["\n max-width: 50%;\n\n button {\n width: 100%;\n height: 100%;\n border-radius: ", ";\n }\n"], ["\n max-width: 50%;\n\n button {\n width: 100%;\n height: 100%;\n border-radius: ", ";\n }\n"])), function (_a) {
|
|
7633
7662
|
var theme = _a.theme;
|
|
7634
7663
|
return theme.component.inputCustom.button.borderRadius;
|
|
7635
7664
|
});
|
|
7636
7665
|
var Custom = function (_a) {
|
|
7637
|
-
var onClick = _a.onClick, text = _a.text,
|
|
7666
|
+
var onClick = _a.onClick, text = _a.text, variant = _a.variant, rest = __rest(_a, ["onClick", "text", "variant"]);
|
|
7638
7667
|
var theme = useTheme();
|
|
7639
|
-
var props = {
|
|
7668
|
+
var props = React.useMemo(function () { return ({
|
|
7669
|
+
variant: variant,
|
|
7640
7670
|
onClick: onClick,
|
|
7641
7671
|
text: text,
|
|
7642
7672
|
disabled: rest.disabled,
|
|
7643
|
-
};
|
|
7644
|
-
return (jsxRuntime.jsx(Container$j, __assign({ theme: theme }, { children: jsxRuntime.jsx(BaseInput, __assign({}, rest, { children: jsxRuntime.jsx(ButtonContainer$1, __assign({ theme: theme }, { children:
|
|
7673
|
+
}); }, [variant, onClick, text, rest.disabled]);
|
|
7674
|
+
return (jsxRuntime.jsx(Container$j, __assign({ theme: theme }, { children: jsxRuntime.jsx(BaseInput, __assign({}, rest, { children: jsxRuntime.jsx(ButtonContainer$1, __assign({ theme: theme }, { children: jsxRuntime.jsx(Button$4, __assign({}, props), void 0) }), void 0) }), void 0) }), void 0));
|
|
7645
7675
|
};
|
|
7646
7676
|
var templateObject_1$x, templateObject_2$l;
|
|
7647
7677
|
|
|
7648
|
-
var SuccessContainer = newStyled.div(templateObject_1$w || (templateObject_1$w = __makeTemplateObject(["\n height:
|
|
7649
|
-
var
|
|
7678
|
+
var SuccessContainer = newStyled.div(templateObject_1$w || (templateObject_1$w = __makeTemplateObject(["\n height: ", ";\n display: flex;\n"], ["\n height: ", ";\n display: flex;\n"])), function (_a) {
|
|
7679
|
+
var size = _a.size;
|
|
7680
|
+
return (size === 'small' ? '36px' : '');
|
|
7681
|
+
});
|
|
7682
|
+
var SuccessMessage = newStyled.div(templateObject_2$k || (templateObject_2$k = __makeTemplateObject(["\n background-color: #dfefe0;\n border: 0.063rem solid #5ead63;\n border-radius: 0.5rem;\n width: 100%;\n flex: 1;\n display: flex;\n align-items: center;\n padding: 0 1rem;\n box-sizing: border-box;\n"], ["\n background-color: #dfefe0;\n border: 0.063rem solid #5ead63;\n border-radius: 0.5rem;\n width: 100%;\n flex: 1;\n display: flex;\n align-items: center;\n padding: 0 1rem;\n box-sizing: border-box;\n"])));
|
|
7650
7683
|
var SuccessText = newStyled.span(templateObject_3$e || (templateObject_3$e = __makeTemplateObject(["\n margin: 0;\n font-size: 1rem;\n line-height: 1.5rem;\n font-weight: 600;\n margin-left: 0.313rem;\n"], ["\n margin: 0;\n font-size: 1rem;\n line-height: 1.5rem;\n font-weight: 600;\n margin-left: 0.313rem;\n"])));
|
|
7651
7684
|
var Success = function (_a) {
|
|
7652
|
-
var children = _a.children, successText = _a.successText;
|
|
7653
|
-
return (jsxRuntime.jsxs(SuccessContainer, { children: [jsxRuntime.jsxs(SuccessMessage, { children: [jsxRuntime.jsx(Icon.Actions.Check, { fill: "#5EAD63", width: 1.375, height: 1.063 }, void 0), jsxRuntime.jsx(SuccessText, { children: successText }, void 0)] }, void 0), children] }, void 0));
|
|
7685
|
+
var children = _a.children, successText = _a.successText, size = _a.size;
|
|
7686
|
+
return (jsxRuntime.jsxs(SuccessContainer, __assign({ size: size }, { children: [jsxRuntime.jsxs(SuccessMessage, { children: [jsxRuntime.jsx(Icon.Actions.Check, { fill: "#5EAD63", width: 1.375, height: 1.063 }, void 0), jsxRuntime.jsx(SuccessText, { children: successText }, void 0)] }, void 0), children] }), void 0));
|
|
7654
7687
|
};
|
|
7655
7688
|
var templateObject_1$w, templateObject_2$k, templateObject_3$e;
|
|
7656
7689
|
|
|
7657
|
-
var ButtonContainer = newStyled.div(templateObject_1$v || (templateObject_1$v = __makeTemplateObject(["\n margin-left: 0.625rem;\n
|
|
7690
|
+
var ButtonContainer = newStyled.div(templateObject_1$v || (templateObject_1$v = __makeTemplateObject(["\n margin-left: 0.625rem;\n\n button {\n width: 100%;\n height: 100%;\n background-color: ", ";\n }\n"], ["\n margin-left: 0.625rem;\n\n button {\n width: 100%;\n height: 100%;\n background-color: ", ";\n }\n"])), function (_a) {
|
|
7658
7691
|
var status = _a.status, type = _a.type, theme = _a.theme;
|
|
7659
7692
|
return status === exports.InputValidationType.Empty &&
|
|
7660
7693
|
type === 'primary' &&
|
|
@@ -7663,15 +7696,18 @@ var ButtonContainer = newStyled.div(templateObject_1$v || (templateObject_1$v =
|
|
|
7663
7696
|
var BasePlusButton = function (_a) {
|
|
7664
7697
|
var onClick = _a.onClick, onClickEdit = _a.onClickEdit, text = _a.text, success = _a.success, editText = _a.editText, successText = _a.successText, rest = __rest(_a, ["onClick", "onClickEdit", "text", "success", "editText", "successText"]);
|
|
7665
7698
|
var _b = React.useState(exports.InputValidationType.Empty), status = _b[0], setStatus = _b[1];
|
|
7699
|
+
var _c = React.useState(''), inputValue = _c[0], setInputValue = _c[1];
|
|
7666
7700
|
var theme = useTheme();
|
|
7667
|
-
var
|
|
7668
|
-
|
|
7669
|
-
|
|
7701
|
+
var onChangeInput = React.useCallback(function (value) { return setInputValue(value); }, []);
|
|
7702
|
+
if (success) {
|
|
7703
|
+
return (jsxRuntime.jsx(Success, __assign({ successText: successText, size: rest.size }, { children: jsxRuntime.jsx(ButtonContainer, __assign({ status: status, type: "secondary", theme: theme }, { children: jsxRuntime.jsx(ButtonSecondaryOutline, { text: editText, onClick: onClickEdit, disabled: rest.disabled }, void 0) }), void 0) }), void 0));
|
|
7704
|
+
}
|
|
7705
|
+
return (jsxRuntime.jsx(BaseInput, __assign({}, rest, { onValidation: setStatus, onChange: onChangeInput }, { children: jsxRuntime.jsx(ButtonContainer, __assign({ status: status, type: "primary", theme: theme }, { children: jsxRuntime.jsx(ButtonSecondary, { text: text, onClick: function () { return onClick(inputValue); }, disabled: rest.disabled || status === exports.InputValidationType.Error }, void 0) }), void 0) }), void 0));
|
|
7670
7706
|
};
|
|
7671
7707
|
var templateObject_1$v;
|
|
7672
7708
|
|
|
7673
7709
|
var Container$i = newStyled.div(templateObject_1$u || (templateObject_1$u = __makeTemplateObject(["\n input {\n padding-right: 2.688rem;\n }\n"], ["\n input {\n padding-right: 2.688rem;\n }\n"])));
|
|
7674
|
-
var IconContainer$3 = newStyled.div(templateObject_2$j || (templateObject_2$j = __makeTemplateObject(["\n position: absolute;\n right: 0.875rem;\n width: 1.125rem;\n height: 100%;\n\n svg path {\n fill: ", ";\n }\n"], ["\n position: absolute;\n right: 0.875rem;\n width: 1.125rem;\n height: 100%;\n\n svg path {\n fill: ", ";\n }\n"])), function (props) { return props.color; });
|
|
7710
|
+
var IconContainer$3 = newStyled.div(templateObject_2$j || (templateObject_2$j = __makeTemplateObject(["\n position: absolute;\n right: 0.875rem;\n width: 1.125rem;\n height: 100%;\n display: flex;\n align-items: center;\n\n svg path {\n fill: ", ";\n }\n"], ["\n position: absolute;\n right: 0.875rem;\n width: 1.125rem;\n height: 100%;\n display: flex;\n align-items: center;\n\n svg path {\n fill: ", ";\n }\n"])), function (props) { return props.color; });
|
|
7675
7711
|
var BasePlusIcon = function (_a) {
|
|
7676
7712
|
var Icon = _a.Icon, rest = __rest(_a, ["Icon"]);
|
|
7677
7713
|
var theme = useTheme();
|
|
@@ -12906,6 +12942,7 @@ exports.ProductGallery = ProductGallery;
|
|
|
12906
12942
|
exports.ProductGalleryMobile = ProductGalleryMobile;
|
|
12907
12943
|
exports.ProgressBar = ProgressBar;
|
|
12908
12944
|
exports.RadioGroupInput = RadioGroupInput;
|
|
12945
|
+
exports.RadioInput = RadioInput;
|
|
12909
12946
|
exports.Rating = Rating;
|
|
12910
12947
|
exports.Review = Review;
|
|
12911
12948
|
exports.ScrollToTop = ScrollToTop;
|