@faststore/components 2.0.52-alpha.0 → 2.0.53-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/atoms/Button/Button.d.ts +9 -1
- package/dist/atoms/Button/Button.js +7 -4
- package/dist/atoms/Button/Button.js.map +1 -1
- package/dist/atoms/Loader/Loader.d.ts +13 -0
- package/dist/atoms/Loader/Loader.js +9 -0
- package/dist/atoms/Loader/Loader.js.map +1 -0
- package/dist/atoms/Loader/index.d.ts +2 -0
- package/dist/atoms/Loader/index.js +2 -0
- package/dist/atoms/Loader/index.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/molecules/BuyButton/BuyButton.js +2 -4
- package/dist/molecules/BuyButton/BuyButton.js.map +1 -1
- package/package.json +2 -2
- package/src/atoms/Button/Button.tsx +21 -3
- package/src/atoms/Loader/Loader.tsx +33 -0
- package/src/atoms/Loader/index.ts +2 -0
- package/src/index.ts +2 -0
- package/src/molecules/BuyButton/BuyButton.tsx +8 -3
|
@@ -21,13 +21,21 @@ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
|
21
21
|
*/
|
|
22
22
|
inverse?: boolean;
|
|
23
23
|
/**
|
|
24
|
-
* Specifies that this button should be disabled
|
|
24
|
+
* Specifies that this button should be disabled.
|
|
25
25
|
*/
|
|
26
26
|
disabled?: boolean;
|
|
27
27
|
/**
|
|
28
28
|
* A React component that will be rendered as an icon.
|
|
29
29
|
*/
|
|
30
30
|
icon?: ReactNode;
|
|
31
|
+
/**
|
|
32
|
+
* Boolean that represents a loading state.
|
|
33
|
+
*/
|
|
34
|
+
loading?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Specifies a label for loading state.
|
|
37
|
+
*/
|
|
38
|
+
loadingLabel?: string;
|
|
31
39
|
/**
|
|
32
40
|
* Specifies where the icon should be positioned
|
|
33
41
|
*/
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import React, { forwardRef } from 'react';
|
|
2
|
-
import { Icon } from '../../index';
|
|
3
|
-
const Button = forwardRef(function Button({ children, variant, inverse, size = 'regular', testId = 'fs-button', icon, iconPosition = 'left', disabled, ...otherProps }, ref) {
|
|
4
|
-
return (React.createElement("button", { ref: ref, "data-fs-button": true, "data-fs-button-inverse": inverse, "data-fs-button-size": size, "data-fs-button-variant": variant, disabled: disabled, "data-testid": testId, ...otherProps },
|
|
2
|
+
import { Icon, Loader } from '../../index';
|
|
3
|
+
const Button = forwardRef(function Button({ children, variant, inverse, size = 'regular', testId = 'fs-button', loading, loadingLabel, icon, iconPosition = 'left', disabled, ...otherProps }, ref) {
|
|
4
|
+
return (React.createElement("button", { ref: ref, "data-fs-button": true, "data-fs-button-inverse": inverse, "data-fs-button-size": size, "data-fs-button-loading": loading, "data-fs-button-variant": variant, disabled: disabled, "data-testid": testId, ...otherProps },
|
|
5
|
+
loading && (React.createElement("p", { "data-fs-button-loading-label": true },
|
|
6
|
+
loadingLabel,
|
|
7
|
+
React.createElement(Loader, { variant: variant === 'primary' && !inverse ? 'light' : 'dark' }))),
|
|
5
8
|
icon && iconPosition === 'left' && React.createElement(Icon, { component: icon }),
|
|
6
|
-
children,
|
|
9
|
+
React.createElement("span", null, children),
|
|
7
10
|
icon && iconPosition === 'right' && React.createElement(Icon, { component: icon })));
|
|
8
11
|
});
|
|
9
12
|
export default Button;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/atoms/Button/Button.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/atoms/Button/Button.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AA6C1C,MAAM,MAAM,GAAG,UAAU,CAAiC,SAAS,MAAM,CACvE,EACE,QAAQ,EACR,OAAO,EACP,OAAO,EACP,IAAI,GAAG,SAAS,EAChB,MAAM,GAAG,WAAW,EACpB,OAAO,EACP,YAAY,EACZ,IAAI,EACJ,YAAY,GAAG,MAAM,EACrB,QAAQ,EACR,GAAG,UAAU,EACd,EACD,GAAG;IAGH,OAAO,CACL,gCACE,GAAG,EAAE,GAAG,oDAEgB,OAAO,yBACV,IAAI,4BACD,OAAO,4BACP,OAAO,EAC/B,QAAQ,EAAE,QAAQ,iBACL,MAAM,KACf,UAAU;QAEb,OAAO,IAAI,CACV;YACG,YAAY;YACb,oBAAC,MAAM,IAAC,OAAO,EAAE,OAAO,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,GAAI,CACvE,CACL;QACA,IAAI,IAAI,YAAY,KAAK,MAAM,IAAI,oBAAC,IAAI,IAAC,SAAS,EAAE,IAAI,GAAI;QAC7D,kCAAO,QAAQ,CAAQ;QACtB,IAAI,IAAI,YAAY,KAAK,OAAO,IAAI,oBAAC,IAAI,IAAC,SAAS,EAAE,IAAI,GAAI,CACvD,CACV,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type LoaderProps = {
|
|
3
|
+
/**
|
|
4
|
+
* Specifies the component color variant.
|
|
5
|
+
*/
|
|
6
|
+
variant?: 'light' | 'dark';
|
|
7
|
+
/**
|
|
8
|
+
* ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
|
|
9
|
+
*/
|
|
10
|
+
testId?: string;
|
|
11
|
+
};
|
|
12
|
+
declare const Loader: React.ForwardRefExoticComponent<LoaderProps & React.RefAttributes<HTMLDivElement>>;
|
|
13
|
+
export default Loader;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
const Loader = forwardRef(function Loader({ variant = 'dark', testId = 'fs-loader', ...otherProps }, ref) {
|
|
3
|
+
return (React.createElement("div", { ref: ref, "data-fs-loader": true, "data-fs-loader-variant": variant, "data-testid": testId, ...otherProps },
|
|
4
|
+
React.createElement("span", { "data-fs-loader-item": true }),
|
|
5
|
+
React.createElement("span", { "data-fs-loader-item": true }),
|
|
6
|
+
React.createElement("span", { "data-fs-loader-item": true })));
|
|
7
|
+
});
|
|
8
|
+
export default Loader;
|
|
9
|
+
//# sourceMappingURL=Loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Loader.js","sourceRoot":"","sources":["../../../src/atoms/Loader/Loader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAazC,MAAM,MAAM,GAAG,UAAU,CAA8B,SAAS,MAAM,CACpE,EAAE,OAAO,GAAG,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,UAAU,EAAe,EACtE,GAAG;IAEH,OAAO,CACL,6BACE,GAAG,EAAE,GAAG,oDAEgB,OAAO,iBAClB,MAAM,KACf,UAAU;QAEd,4DAAiC;QACjC,4DAAiC;QACjC,4DAAiC,CAC7B,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/atoms/Loader/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export { default as Label } from './atoms/Label';
|
|
|
13
13
|
export type { LabelProps } from './atoms/Label';
|
|
14
14
|
export { default as Link } from './atoms/Link';
|
|
15
15
|
export type { LinkProps, LinkElementType } from './atoms/Link';
|
|
16
|
+
export { default as Loader } from './atoms/Loader';
|
|
17
|
+
export type { LoaderProps } from './atoms/Loader';
|
|
16
18
|
export { default as List } from './atoms/List';
|
|
17
19
|
export type { ListProps } from './atoms/List';
|
|
18
20
|
export { default as Overlay } from './atoms/Overlay';
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@ export { default as Icon } from './atoms/Icon';
|
|
|
8
8
|
export { default as Input } from './atoms/Input';
|
|
9
9
|
export { default as Label } from './atoms/Label';
|
|
10
10
|
export { default as Link } from './atoms/Link';
|
|
11
|
+
export { default as Loader } from './atoms/Loader';
|
|
11
12
|
export { default as List } from './atoms/List';
|
|
12
13
|
export { default as Overlay } from './atoms/Overlay';
|
|
13
14
|
export { default as Price } from './atoms/Price';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,cAAc,UAAU,CAAA;AAExB,QAAQ;AACR,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAElD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAEpD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAElD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAElD,YAAY;AACZ,OAAO,EACL,OAAO,IAAI,SAAS,EACpB,aAAa,EACb,eAAe,EACf,cAAc,GACf,MAAM,uBAAuB,CAAA;AAO9B,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAEpE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAEpE,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,cAAc,EACd,YAAY,EACZ,YAAY,GACb,MAAM,sBAAsB,CAAA;AAO7B,OAAO,EACL,OAAO,IAAI,IAAI,EACf,WAAW,EACX,SAAS,GACV,MAAM,kBAAkB,CAAA;AAMzB,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EACL,OAAO,IAAI,UAAU,EACrB,WAAW,GACZ,MAAM,wBAAwB,CAAA;AAK/B,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEtD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAEhE,OAAO,EACL,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,GACT,MAAM,mBAAmB,CAAA;AAS1B,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEtD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAEhE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAG1E,YAAY;AACZ,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { Button
|
|
2
|
+
import { Button } from '../../index';
|
|
3
3
|
import { ShoppingCart } from '../../assets';
|
|
4
4
|
function BuyButton({ testId = 'fs-buy-button', icon, children, ...otherProps }) {
|
|
5
|
-
return (React.createElement(Button, { "data-fs-buy-button": true, "data-testid": testId, ...otherProps },
|
|
6
|
-
React.createElement(Icon, { component: React.createElement(ShoppingCart, null) }),
|
|
7
|
-
children));
|
|
5
|
+
return (React.createElement(Button, { "data-fs-buy-button": true, icon: React.createElement(ShoppingCart, null), iconPosition: "left", "data-testid": testId, ...otherProps }, children));
|
|
8
6
|
}
|
|
9
7
|
export default BuyButton;
|
|
10
8
|
//# sourceMappingURL=BuyButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuyButton.js","sourceRoot":"","sources":["../../../src/molecules/BuyButton/BuyButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"BuyButton.js","sourceRoot":"","sources":["../../../src/molecules/BuyButton/BuyButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAI3C,SAAS,SAAS,CAAC,EACjB,MAAM,GAAG,eAAe,EACxB,IAAI,EACJ,QAAQ,EACR,GAAG,UAAU,EACE;IACf,OAAO,CACL,oBAAC,MAAM,gCAEL,IAAI,EAAE,oBAAC,YAAY,OAAG,EACtB,YAAY,EAAC,MAAM,iBACN,MAAM,KACf,UAAU,IAEb,QAAQ,CACF,CACV,CAAA;AACH,CAAC;AAED,eAAe,SAAS,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@faststore/components",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.53-alpha.0",
|
|
4
4
|
"module": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
6
6
|
"author": "Emerson Laurentino @emersonlaurentino",
|
|
@@ -30,5 +30,5 @@
|
|
|
30
30
|
"node": "16.18.0",
|
|
31
31
|
"yarn": "1.19.1"
|
|
32
32
|
},
|
|
33
|
-
"gitHead": "
|
|
33
|
+
"gitHead": "a9a211450d2173e08fd8b8dcf4a6da4d78590a71"
|
|
34
34
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ReactNode, ButtonHTMLAttributes } from 'react'
|
|
2
2
|
import React, { forwardRef } from 'react'
|
|
3
|
-
import { Icon } from '../../index'
|
|
3
|
+
import { Icon, Loader } from '../../index'
|
|
4
4
|
|
|
5
5
|
export type Variant = 'primary' | 'secondary' | 'tertiary'
|
|
6
6
|
export type Size = 'small' | 'regular'
|
|
@@ -24,13 +24,21 @@ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
|
24
24
|
*/
|
|
25
25
|
inverse?: boolean
|
|
26
26
|
/**
|
|
27
|
-
* Specifies that this button should be disabled
|
|
27
|
+
* Specifies that this button should be disabled.
|
|
28
28
|
*/
|
|
29
29
|
disabled?: boolean
|
|
30
30
|
/**
|
|
31
31
|
* A React component that will be rendered as an icon.
|
|
32
32
|
*/
|
|
33
33
|
icon?: ReactNode
|
|
34
|
+
/**
|
|
35
|
+
* Boolean that represents a loading state.
|
|
36
|
+
*/
|
|
37
|
+
loading?: boolean
|
|
38
|
+
/**
|
|
39
|
+
* Specifies a label for loading state.
|
|
40
|
+
*/
|
|
41
|
+
loadingLabel?: string
|
|
34
42
|
/**
|
|
35
43
|
* Specifies where the icon should be positioned
|
|
36
44
|
*/
|
|
@@ -44,6 +52,8 @@ const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(
|
|
|
44
52
|
inverse,
|
|
45
53
|
size = 'regular',
|
|
46
54
|
testId = 'fs-button',
|
|
55
|
+
loading,
|
|
56
|
+
loadingLabel,
|
|
47
57
|
icon,
|
|
48
58
|
iconPosition = 'left',
|
|
49
59
|
disabled,
|
|
@@ -51,19 +61,27 @@ const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(
|
|
|
51
61
|
},
|
|
52
62
|
ref
|
|
53
63
|
) {
|
|
64
|
+
|
|
54
65
|
return (
|
|
55
66
|
<button
|
|
56
67
|
ref={ref}
|
|
57
68
|
data-fs-button
|
|
58
69
|
data-fs-button-inverse={inverse}
|
|
59
70
|
data-fs-button-size={size}
|
|
71
|
+
data-fs-button-loading={loading}
|
|
60
72
|
data-fs-button-variant={variant}
|
|
61
73
|
disabled={disabled}
|
|
62
74
|
data-testid={testId}
|
|
63
75
|
{...otherProps}
|
|
64
76
|
>
|
|
77
|
+
{loading && (
|
|
78
|
+
<p data-fs-button-loading-label>
|
|
79
|
+
{loadingLabel}
|
|
80
|
+
<Loader variant={variant === 'primary' && !inverse ? 'light' : 'dark'} />
|
|
81
|
+
</p>
|
|
82
|
+
)}
|
|
65
83
|
{icon && iconPosition === 'left' && <Icon component={icon} />}
|
|
66
|
-
{children}
|
|
84
|
+
<span>{children}</span>
|
|
67
85
|
{icon && iconPosition === 'right' && <Icon component={icon} />}
|
|
68
86
|
</button>
|
|
69
87
|
)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react'
|
|
2
|
+
|
|
3
|
+
export type LoaderProps = {
|
|
4
|
+
/**
|
|
5
|
+
* Specifies the component color variant.
|
|
6
|
+
*/
|
|
7
|
+
variant?: 'light' | 'dark'
|
|
8
|
+
/**
|
|
9
|
+
* ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
|
|
10
|
+
*/
|
|
11
|
+
testId?: string
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const Loader = forwardRef<HTMLDivElement, LoaderProps>(function Loader(
|
|
15
|
+
{ variant = 'dark', testId = 'fs-loader', ...otherProps }: LoaderProps,
|
|
16
|
+
ref
|
|
17
|
+
) {
|
|
18
|
+
return (
|
|
19
|
+
<div
|
|
20
|
+
ref={ref}
|
|
21
|
+
data-fs-loader
|
|
22
|
+
data-fs-loader-variant={variant}
|
|
23
|
+
data-testid={testId}
|
|
24
|
+
{...otherProps}
|
|
25
|
+
>
|
|
26
|
+
<span data-fs-loader-item></span>
|
|
27
|
+
<span data-fs-loader-item></span>
|
|
28
|
+
<span data-fs-loader-item></span>
|
|
29
|
+
</div>
|
|
30
|
+
)
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
export default Loader
|
package/src/index.ts
CHANGED
|
@@ -16,6 +16,8 @@ export { default as Label } from './atoms/Label'
|
|
|
16
16
|
export type { LabelProps } from './atoms/Label'
|
|
17
17
|
export { default as Link } from './atoms/Link'
|
|
18
18
|
export type { LinkProps, LinkElementType } from './atoms/Link'
|
|
19
|
+
export { default as Loader } from './atoms/Loader'
|
|
20
|
+
export type { LoaderProps } from './atoms/Loader'
|
|
19
21
|
export { default as List } from './atoms/List'
|
|
20
22
|
export type { ListProps } from './atoms/List'
|
|
21
23
|
export { default as Overlay } from './atoms/Overlay'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
|
|
3
|
-
import { Button
|
|
3
|
+
import { Button } from '../../index'
|
|
4
4
|
import type { ButtonProps } from '../../index'
|
|
5
5
|
import { ShoppingCart } from '../../assets'
|
|
6
6
|
|
|
@@ -13,8 +13,13 @@ function BuyButton({
|
|
|
13
13
|
...otherProps
|
|
14
14
|
}: BuyButtonProps) {
|
|
15
15
|
return (
|
|
16
|
-
<Button
|
|
17
|
-
|
|
16
|
+
<Button
|
|
17
|
+
data-fs-buy-button
|
|
18
|
+
icon={<ShoppingCart />}
|
|
19
|
+
iconPosition="left"
|
|
20
|
+
data-testid={testId}
|
|
21
|
+
{...otherProps}
|
|
22
|
+
>
|
|
18
23
|
{children}
|
|
19
24
|
</Button>
|
|
20
25
|
)
|