@faststore/components 2.0.15-alpha.0 → 2.0.17-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.
Files changed (49) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/assets/Checked.d.ts +3 -0
  3. package/dist/assets/Checked.js +6 -0
  4. package/dist/assets/Checked.js.map +1 -0
  5. package/dist/assets/index.d.ts +1 -0
  6. package/dist/assets/index.js +1 -0
  7. package/dist/assets/index.js.map +1 -1
  8. package/dist/atoms/List/List.d.ts +1 -1
  9. package/dist/atoms/List/List.js.map +1 -1
  10. package/dist/atoms/SROnly/SROnly.d.ts +7 -0
  11. package/dist/atoms/SROnly/SROnly.js +7 -0
  12. package/dist/atoms/SROnly/SROnly.js.map +1 -0
  13. package/dist/atoms/SROnly/index.d.ts +1 -0
  14. package/dist/atoms/SROnly/index.js +2 -0
  15. package/dist/atoms/SROnly/index.js.map +1 -0
  16. package/dist/index.d.ts +7 -0
  17. package/dist/index.js +4 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/molecules/LinkButton/LinkButton.d.ts +5 -0
  20. package/dist/molecules/LinkButton/LinkButton.js +17 -0
  21. package/dist/molecules/LinkButton/LinkButton.js.map +1 -0
  22. package/dist/molecules/LinkButton/index.d.ts +2 -0
  23. package/dist/molecules/LinkButton/index.js +2 -0
  24. package/dist/molecules/LinkButton/index.js.map +1 -0
  25. package/dist/molecules/Toggle/Toggle.d.ts +22 -0
  26. package/dist/molecules/Toggle/Toggle.js +11 -0
  27. package/dist/molecules/Toggle/Toggle.js.map +1 -0
  28. package/dist/molecules/Toggle/index.d.ts +2 -0
  29. package/dist/molecules/Toggle/index.js +2 -0
  30. package/dist/molecules/Toggle/index.js.map +1 -0
  31. package/dist/molecules/ToggleField/ToggleField.d.ts +29 -0
  32. package/dist/molecules/ToggleField/ToggleField.js +9 -0
  33. package/dist/molecules/ToggleField/ToggleField.js.map +1 -0
  34. package/dist/molecules/ToggleField/index.d.ts +2 -0
  35. package/dist/molecules/ToggleField/index.js +2 -0
  36. package/dist/molecules/ToggleField/index.js.map +1 -0
  37. package/package.json +2 -2
  38. package/src/assets/Checked.tsx +25 -0
  39. package/src/assets/index.ts +1 -0
  40. package/src/atoms/List/List.tsx +2 -4
  41. package/src/atoms/SROnly/SROnly.tsx +15 -0
  42. package/src/atoms/SROnly/index.ts +1 -0
  43. package/src/index.ts +7 -0
  44. package/src/molecules/LinkButton/LinkButton.tsx +51 -0
  45. package/src/molecules/LinkButton/index.ts +2 -0
  46. package/src/molecules/Toggle/Toggle.tsx +53 -0
  47. package/src/molecules/Toggle/index.ts +2 -0
  48. package/src/molecules/ToggleField/ToggleField.tsx +59 -0
  49. package/src/molecules/ToggleField/index.ts +2 -0
package/CHANGELOG.md CHANGED
@@ -3,6 +3,24 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [2.0.17-alpha.0](https://github.com/vtex/faststore/compare/v2.0.16-alpha.0...v2.0.17-alpha.0) (2022-12-15)
7
+
8
+
9
+ ### Features
10
+
11
+ * Create `LinkButton` component ([#1558](https://github.com/vtex/faststore/issues/1558)) ([bbbebdb](https://github.com/vtex/faststore/commit/bbbebdb081f9c40315d8b661461e3b09a34b84b6))
12
+
13
+
14
+
15
+ ## [2.0.16-alpha.0](https://github.com/vtex/faststore/compare/v2.0.15-alpha.0...v2.0.16-alpha.0) (2022-12-15)
16
+
17
+
18
+ ### Features
19
+
20
+ * Adds `Toggle` & `ToggleField` & `SROnly` components ([#1555](https://github.com/vtex/faststore/issues/1555)) ([b055c0a](https://github.com/vtex/faststore/commit/b055c0aa67291ad88e865b60e96b8a898a97db14))
21
+
22
+
23
+
6
24
  ## [2.0.15-alpha.0](https://github.com/vtex/faststore/compare/v2.0.14-alpha.0...v2.0.15-alpha.0) (2022-12-14)
7
25
 
8
26
 
@@ -0,0 +1,3 @@
1
+ import type { FC } from 'react';
2
+ declare const Checked: FC;
3
+ export default Checked;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ // Icon from Phosphor Icons
3
+ const Checked = () => (React.createElement("svg", { id: "Checked", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 19 18", strokeWidth: "16", width: 15, height: 15 },
4
+ React.createElement("path", { d: "M15.6875 5.0625L7.8125 12.9375L3.875 9", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })));
5
+ export default Checked;
6
+ //# sourceMappingURL=Checked.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checked.js","sourceRoot":"","sources":["../../src/assets/Checked.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,2BAA2B;AAC3B,MAAM,OAAO,GAAO,GAAG,EAAE,CAAC,CACxB,6BACE,EAAE,EAAC,SAAS,EACZ,KAAK,EAAC,4BAA4B,EAClC,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,WAAW,EACnB,WAAW,EAAC,IAAI,EAChB,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE;IAEV,8BACE,CAAC,EAAC,wCAAwC,EAC1C,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EACjB,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,GACtB,CACE,CACP,CAAA;AAED,eAAe,OAAO,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export { default as CaretDown } from './CaretDown';
2
+ export { default as Checked } from './Checked';
2
3
  export { default as X } from './X';
3
4
  export { default as ShoppingCart } from './ShoppingCart';
4
5
  export { default as XCircle } from './XCircle';
@@ -1,4 +1,5 @@
1
1
  export { default as CaretDown } from './CaretDown';
2
+ export { default as Checked } from './Checked';
2
3
  export { default as X } from './X';
3
4
  export { default as ShoppingCart } from './ShoppingCart';
4
5
  export { default as XCircle } from './XCircle';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,CAAC,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,OAAO,IAAI,CAAC,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA"}
@@ -10,7 +10,7 @@ interface BaseProps {
10
10
  */
11
11
  marker?: boolean;
12
12
  }
13
- export declare type ListProps<T extends ElementType> = PolymorphicComponentPropsWithRef<T, BaseProps>;
13
+ export declare type ListProps<T extends ElementType = 'ul'> = PolymorphicComponentPropsWithRef<T, BaseProps>;
14
14
  declare type ListComponent = <T extends ElementType = 'ul'>(props: ListProps<T>) => ReactElement | null;
15
15
  declare const List: ListComponent;
16
16
  export default List;
@@ -1 +1 @@
1
- {"version":3,"file":"List.js","sourceRoot":"","sources":["../../../src/atoms/List/List.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AA4BzC,MAAM,IAAI,GAAkB,UAAU,CAAC,SAAS,IAAI,CAGlD,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,UAAU,EAAgB,EAC/D,GAAsB;IAEtB,MAAM,SAAS,GAAG,EAAE,IAAI,IAAI,CAAA;IAE5B,OAAO,CACL,oBAAC,SAAS,IACR,GAAG,EAAE,GAAG,uCAEK,MAAM,yBACE,MAAM,KACvB,UAAU,GACd,CACH,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,IAAI,CAAA"}
1
+ {"version":3,"file":"List.js","sourceRoot":"","sources":["../../../src/atoms/List/List.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AA0BzC,MAAM,IAAI,GAAkB,UAAU,CAAC,SAAS,IAAI,CAGlD,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,UAAU,EAAgB,EAC/D,GAAsB;IAEtB,MAAM,SAAS,GAAG,EAAE,IAAI,IAAI,CAAA;IAE5B,OAAO,CACL,oBAAC,SAAS,IACR,GAAG,EAAE,GAAG,uCAEK,MAAM,yBACE,MAAM,KACvB,UAAU,GACd,CACH,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,IAAI,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { ElementType } from 'react';
2
+ interface Props {
3
+ text: string;
4
+ as?: ElementType;
5
+ }
6
+ declare function SROnly({ text, as }: Props): JSX.Element;
7
+ export default SROnly;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ function SROnly({ text, as }) {
3
+ const Component = as ?? 'span';
4
+ return React.createElement(Component, { "data-fs-sr-only": true }, text);
5
+ }
6
+ export default SROnly;
7
+ //# sourceMappingURL=SROnly.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SROnly.js","sourceRoot":"","sources":["../../../src/atoms/SROnly/SROnly.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,SAAS,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAS;IACjC,MAAM,SAAS,GAAG,EAAE,IAAI,MAAM,CAAA;IAE9B,OAAO,oBAAC,SAAS,+BAAkB,IAAI,CAAa,CAAA;AACtD,CAAC;AAED,eAAe,MAAM,CAAA"}
@@ -0,0 +1 @@
1
+ export { default } from './SROnly';
@@ -0,0 +1,2 @@
1
+ export { default } from './SROnly';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/atoms/SROnly/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA"}
package/dist/index.d.ts CHANGED
@@ -23,6 +23,7 @@ export { default as Radio } from './atoms/Radio';
23
23
  export type { RadioProps } from './atoms/Radio';
24
24
  export { default as Select } from './atoms/Select';
25
25
  export type { SelectProps } from './atoms/Select';
26
+ export { default as SROnly } from './atoms/SROnly';
26
27
  export { default as BuyButton } from './molecules/BuyButton';
27
28
  export { default as CheckboxField } from './molecules/CheckboxField';
28
29
  export type { CheckboxFieldProps } from './molecules/CheckboxField';
@@ -32,9 +33,15 @@ export { default as DiscountBadge } from './molecules/DiscountBadge';
32
33
  export type { DiscountBadgeProps } from './molecules/DiscountBadge';
33
34
  export { default as InputField } from './molecules/InputField';
34
35
  export type { InputFieldProps } from './molecules/InputField';
36
+ export { default as LinkButton } from './molecules/LinkButton';
37
+ export type { LinkButtonProps } from './molecules/LinkButton';
35
38
  export { default as RadioField } from './molecules/RadioField';
36
39
  export type { RadioFieldProps } from './molecules/RadioField';
37
40
  export { default as SelectField } from './molecules/SelectField';
38
41
  export type { SelectFieldProps } from './molecules/SelectField';
39
42
  export { default as Tag } from './molecules/Tag';
40
43
  export type { TagProps } from './molecules/Tag';
44
+ export { default as Toggle } from './molecules/Toggle';
45
+ export type { ToggleProps } from './molecules/Toggle';
46
+ export { default as ToggleField } from './molecules/ToggleField';
47
+ export type { ToggleFieldProps } from './molecules/ToggleField';
package/dist/index.js CHANGED
@@ -13,13 +13,17 @@ export { default as Overlay } from './atoms/Overlay';
13
13
  export { default as Price } from './atoms/Price';
14
14
  export { default as Radio } from './atoms/Radio';
15
15
  export { default as Select } from './atoms/Select';
16
+ export { default as SROnly } from './atoms/SROnly';
16
17
  // Molecules
17
18
  export { default as BuyButton } from './molecules/BuyButton';
18
19
  export { default as CheckboxField } from './molecules/CheckboxField';
19
20
  export { default as IconButton } from './molecules/IconButton';
20
21
  export { default as DiscountBadge } from './molecules/DiscountBadge';
21
22
  export { default as InputField } from './molecules/InputField';
23
+ export { default as LinkButton } from './molecules/LinkButton';
22
24
  export { default as RadioField } from './molecules/RadioField';
23
25
  export { default as SelectField } from './molecules/SelectField';
24
26
  export { default as Tag } from './molecules/Tag';
27
+ export { default as Toggle } from './molecules/Toggle';
28
+ export { default as ToggleField } from './molecules/ToggleField';
25
29
  //# sourceMappingURL=index.js.map
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;AAGlD,YAAY;AACZ,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,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAEhE,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,iBAAiB,CAAA"}
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,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,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,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAEhE,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"}
@@ -0,0 +1,5 @@
1
+ import type { AnchorHTMLAttributes } from 'react';
2
+ import type { ButtonProps } from '../..';
3
+ export declare type LinkButtonProps = AnchorHTMLAttributes<HTMLAnchorElement> & ButtonProps;
4
+ declare function LinkButton({ icon, inverse, children, disabled, iconPosition, size, variant, testId, ...otherProps }: LinkButtonProps): JSX.Element;
5
+ export default LinkButton;
@@ -0,0 +1,17 @@
1
+ import React, { useRef } from 'react';
2
+ import { Icon } from '../..';
3
+ function LinkButton({ icon, inverse, children, disabled, iconPosition, size = 'regular', variant = 'primary', testId = 'fs-link-button', ...otherProps }) {
4
+ const linkRef = useRef(null);
5
+ function onFocus(e) {
6
+ e.preventDefault();
7
+ if (disabled) {
8
+ linkRef.current?.blur();
9
+ }
10
+ }
11
+ return (React.createElement("a", { ref: linkRef, onFocus: onFocus, "data-fs-button": true, "data-fs-link-button": true, "data-testid": testId, "data-fs-button-size": size, "data-fs-button-variant": variant, "data-fs-button-inverse": inverse, "data-fs-button-disabled": disabled, ...otherProps },
12
+ iconPosition === 'left' && React.createElement(Icon, { component: icon }),
13
+ children,
14
+ iconPosition === 'right' && React.createElement(Icon, { component: icon })));
15
+ }
16
+ export default LinkButton;
17
+ //# sourceMappingURL=LinkButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinkButton.js","sourceRoot":"","sources":["../../../src/molecules/LinkButton/LinkButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAGrC,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAM5B,SAAS,UAAU,CAAC,EAClB,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,IAAI,GAAG,SAAS,EAChB,OAAO,GAAG,SAAS,EACnB,MAAM,GAAG,gBAAgB,EACzB,GAAG,UAAU,EACG;IAChB,MAAM,OAAO,GAAG,MAAM,CAA2B,IAAI,CAAC,CAAA;IAEtD,SAAS,OAAO,CAAC,CAAa;QAC5B,CAAC,CAAC,cAAc,EAAE,CAAA;QAElB,IAAI,QAAQ,EAAE;YACZ,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAA;SACxB;IACH,CAAC;IAED,OAAO,CACL,2BACE,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,OAAO,sEAGH,MAAM,yBACE,IAAI,4BACD,OAAO,4BACP,OAAO,6BACN,QAAQ,KAC7B,UAAU;QAEb,YAAY,KAAK,MAAM,IAAI,oBAAC,IAAI,IAAC,SAAS,EAAE,IAAI,GAAI;QACpD,QAAQ;QACR,YAAY,KAAK,OAAO,IAAI,oBAAC,IAAI,IAAC,SAAS,EAAE,IAAI,GAAI,CACpD,CACL,CAAA;AACH,CAAC;AAED,eAAe,UAAU,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { default } from './LinkButton';
2
+ export type { LinkButtonProps } from './LinkButton';
@@ -0,0 +1,2 @@
1
+ export { default } from './LinkButton';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/molecules/LinkButton/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import type { InputHTMLAttributes } from 'react';
3
+ export interface ToggleProps extends InputHTMLAttributes<Omit<HTMLInputElement, 'disabled' | 'type'>> {
4
+ /**
5
+ * ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
6
+ */
7
+ testId?: string;
8
+ /**
9
+ * ID to identify input and corresponding label.
10
+ */
11
+ id: string;
12
+ /**
13
+ * Specifies that this input should be disabled.
14
+ */
15
+ disabled?: boolean;
16
+ /**
17
+ * Controls the component's direction.
18
+ */
19
+ variant?: 'horizontal' | 'vertical';
20
+ }
21
+ declare const Toggle: React.ForwardRefExoticComponent<ToggleProps & React.RefAttributes<HTMLInputElement>>;
22
+ export default Toggle;
@@ -0,0 +1,11 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { Input, Icon } from './../../';
3
+ import { Checked } from '../../assets';
4
+ const Toggle = forwardRef(function Toggle({ testId = 'fs-toggle', id, disabled, variant = 'horizontal', ...otherProps }, ref) {
5
+ return (React.createElement("div", { "data-fs-toggle": true, "data-fs-toggle-variant": variant, "data-testid": testId },
6
+ React.createElement(Input, { id: id, ref: ref, role: "switch", type: "checkbox", disabled: disabled, ...otherProps }),
7
+ React.createElement("span", { "data-fs-toggle-knob": true },
8
+ React.createElement(Icon, { component: React.createElement(Checked, null) }))));
9
+ });
10
+ export default Toggle;
11
+ //# sourceMappingURL=Toggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toggle.js","sourceRoot":"","sources":["../../../src/molecules/Toggle/Toggle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAsBtC,MAAM,MAAM,GAAG,UAAU,CAAgC,SAAS,MAAM,CACtE,EACE,MAAM,GAAG,WAAW,EACpB,EAAE,EACF,QAAQ,EACR,OAAO,GAAG,YAAY,EACtB,GAAG,UAAU,EACD,EACd,GAAG;IAEH,OAAO,CACL,+EAA4C,OAAO,iBAAe,MAAM;QACtE,oBAAC,KAAK,IACJ,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,UAAU,EACf,QAAQ,EAAE,QAAQ,KACd,UAAU,GACd;QACF;YACE,oBAAC,IAAI,IAAC,SAAS,EAAE,oBAAC,OAAO,OAAG,GAAI,CAC3B,CACH,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,MAAM,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { default } from './Toggle';
2
+ export type { ToggleProps } from './Toggle';
@@ -0,0 +1,2 @@
1
+ export { default } from './Toggle';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/molecules/Toggle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA"}
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ export declare type ToggleFieldProps = {
3
+ /**
4
+ * ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
5
+ */
6
+ testId?: string;
7
+ /**
8
+ * ID to identify input and corresponding label.
9
+ */
10
+ id: string;
11
+ /**
12
+ * The text displayed to identify the input.
13
+ */
14
+ label: string;
15
+ /**
16
+ * Controls whether the label will be displayed or not.
17
+ */
18
+ displayLabel?: boolean;
19
+ /**
20
+ * Specifies that this input should be disabled.
21
+ */
22
+ disabled?: boolean;
23
+ /**
24
+ * Controls the component's direction.
25
+ */
26
+ variant?: 'horizontal' | 'vertical';
27
+ };
28
+ declare const ToggleField: React.ForwardRefExoticComponent<ToggleFieldProps & React.RefAttributes<HTMLDivElement>>;
29
+ export default ToggleField;
@@ -0,0 +1,9 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { Label, SROnly, Toggle } from './../../';
3
+ const ToggleField = forwardRef(function ToggleField({ testId = 'fs-toggle-field', id, label, disabled, displayLabel = true, variant = 'horizontal', ...otherProps }, ref) {
4
+ return (React.createElement("div", { ref: ref, "data-fs-toggle-field": true, "data-testid": testId },
5
+ React.createElement(Toggle, { id: id, variant: variant, disabled: disabled, ...otherProps }),
6
+ displayLabel ? (React.createElement(Label, { "data-fs-toggle-field-label": true, htmlFor: id }, label)) : (React.createElement(SROnly, { text: label }))));
7
+ });
8
+ export default ToggleField;
9
+ //# sourceMappingURL=ToggleField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToggleField.js","sourceRoot":"","sources":["../../../src/molecules/ToggleField/ToggleField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AA6BhD,MAAM,WAAW,GAAG,UAAU,CAC5B,SAAS,WAAW,CAClB,EACE,MAAM,GAAG,iBAAiB,EAC1B,EAAE,EACF,KAAK,EACL,QAAQ,EACR,YAAY,GAAG,IAAI,EACnB,OAAO,GAAG,YAAY,EACtB,GAAG,UAAU,EACd,EACD,GAAG;IAEH,OAAO,CACL,6BAAK,GAAG,EAAE,GAAG,+CAAoC,MAAM;QACrD,oBAAC,MAAM,IAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,KAAM,UAAU,GAAI;QACvE,YAAY,CAAC,CAAC,CAAC,CACd,oBAAC,KAAK,wCAA4B,OAAO,EAAE,EAAE,IAC1C,KAAK,CACA,CACT,CAAC,CAAC,CAAC,CACF,oBAAC,MAAM,IAAC,IAAI,EAAE,KAAK,GAAI,CACxB,CACG,CACP,CAAA;AACH,CAAC,CACF,CAAA;AAED,eAAe,WAAW,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { default } from './ToggleField';
2
+ export type { ToggleFieldProps } from './ToggleField';
@@ -0,0 +1,2 @@
1
+ export { default } from './ToggleField';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/molecules/ToggleField/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faststore/components",
3
- "version": "2.0.15-alpha.0",
3
+ "version": "2.0.17-alpha.0",
4
4
  "module": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
6
6
  "author": "Emerson Laurentino @emersonlaurentino",
@@ -28,5 +28,5 @@
28
28
  "node": "16.18.0",
29
29
  "yarn": "1.19.1"
30
30
  },
31
- "gitHead": "9b72e9d993f45bf072144751654854a11e099d17"
31
+ "gitHead": "63d93423c77df7aadbbd8ba8b5f9d39302e6fd3e"
32
32
  }
@@ -0,0 +1,25 @@
1
+ import React from 'react'
2
+ import type { FC } from 'react'
3
+
4
+ // Icon from Phosphor Icons
5
+ const Checked: FC = () => (
6
+ <svg
7
+ id="Checked"
8
+ xmlns="http://www.w3.org/2000/svg"
9
+ fill="none"
10
+ viewBox="0 0 19 18"
11
+ strokeWidth="16"
12
+ width={15}
13
+ height={15}
14
+ >
15
+ <path
16
+ d="M15.6875 5.0625L7.8125 12.9375L3.875 9"
17
+ stroke="currentColor"
18
+ strokeWidth="1.5"
19
+ strokeLinecap="round"
20
+ strokeLinejoin="round"
21
+ />
22
+ </svg>
23
+ )
24
+
25
+ export default Checked
@@ -1,4 +1,5 @@
1
1
  export { default as CaretDown } from './CaretDown'
2
+ export { default as Checked } from './Checked'
2
3
  export { default as X } from './X'
3
4
  export { default as ShoppingCart } from './ShoppingCart'
4
5
  export { default as XCircle } from './XCircle'
@@ -17,10 +17,8 @@ interface BaseProps {
17
17
  marker?: boolean
18
18
  }
19
19
 
20
- export type ListProps<T extends ElementType> = PolymorphicComponentPropsWithRef<
21
- T,
22
- BaseProps
23
- >
20
+ export type ListProps<T extends ElementType = 'ul'> =
21
+ PolymorphicComponentPropsWithRef<T, BaseProps>
24
22
 
25
23
  type ListComponent = <T extends ElementType = 'ul'>(
26
24
  props: ListProps<T>
@@ -0,0 +1,15 @@
1
+ import React from 'react'
2
+ import type { ElementType } from 'react'
3
+
4
+ interface Props {
5
+ text: string
6
+ as?: ElementType
7
+ }
8
+
9
+ function SROnly({ text, as }: Props) {
10
+ const Component = as ?? 'span'
11
+
12
+ return <Component data-fs-sr-only>{text}</Component>
13
+ }
14
+
15
+ export default SROnly
@@ -0,0 +1 @@
1
+ export { default } from './SROnly'
package/src/index.ts CHANGED
@@ -26,6 +26,7 @@ export { default as Radio } from './atoms/Radio'
26
26
  export type { RadioProps } from './atoms/Radio'
27
27
  export { default as Select } from './atoms/Select'
28
28
  export type { SelectProps } from './atoms/Select'
29
+ export { default as SROnly } from './atoms/SROnly'
29
30
 
30
31
  // Molecules
31
32
  export { default as BuyButton } from './molecules/BuyButton'
@@ -37,9 +38,15 @@ export { default as DiscountBadge } from './molecules/DiscountBadge'
37
38
  export type { DiscountBadgeProps } from './molecules/DiscountBadge'
38
39
  export { default as InputField } from './molecules/InputField'
39
40
  export type { InputFieldProps } from './molecules/InputField'
41
+ export { default as LinkButton } from './molecules/LinkButton'
42
+ export type { LinkButtonProps } from './molecules/LinkButton'
40
43
  export { default as RadioField } from './molecules/RadioField'
41
44
  export type { RadioFieldProps } from './molecules/RadioField'
42
45
  export { default as SelectField } from './molecules/SelectField'
43
46
  export type { SelectFieldProps } from './molecules/SelectField'
44
47
  export { default as Tag } from './molecules/Tag'
45
48
  export type { TagProps } from './molecules/Tag'
49
+ export { default as Toggle } from './molecules/Toggle'
50
+ export type { ToggleProps } from './molecules/Toggle'
51
+ export { default as ToggleField } from './molecules/ToggleField'
52
+ export type { ToggleFieldProps } from './molecules/ToggleField'
@@ -0,0 +1,51 @@
1
+ import React, { useRef } from 'react'
2
+ import type { FocusEvent, AnchorHTMLAttributes } from 'react'
3
+
4
+ import { Icon } from '../..'
5
+ import type { ButtonProps } from '../..'
6
+
7
+ export type LinkButtonProps = AnchorHTMLAttributes<HTMLAnchorElement> &
8
+ ButtonProps
9
+
10
+ function LinkButton({
11
+ icon,
12
+ inverse,
13
+ children,
14
+ disabled,
15
+ iconPosition,
16
+ size = 'regular',
17
+ variant = 'primary',
18
+ testId = 'fs-link-button',
19
+ ...otherProps
20
+ }: LinkButtonProps) {
21
+ const linkRef = useRef<HTMLAnchorElement | null>(null)
22
+
23
+ function onFocus(e: FocusEvent) {
24
+ e.preventDefault()
25
+
26
+ if (disabled) {
27
+ linkRef.current?.blur()
28
+ }
29
+ }
30
+
31
+ return (
32
+ <a
33
+ ref={linkRef}
34
+ onFocus={onFocus}
35
+ data-fs-button
36
+ data-fs-link-button
37
+ data-testid={testId}
38
+ data-fs-button-size={size}
39
+ data-fs-button-variant={variant}
40
+ data-fs-button-inverse={inverse}
41
+ data-fs-button-disabled={disabled}
42
+ {...otherProps}
43
+ >
44
+ {iconPosition === 'left' && <Icon component={icon} />}
45
+ {children}
46
+ {iconPosition === 'right' && <Icon component={icon} />}
47
+ </a>
48
+ )
49
+ }
50
+
51
+ export default LinkButton
@@ -0,0 +1,2 @@
1
+ export { default } from './LinkButton'
2
+ export type { LinkButtonProps } from './LinkButton'
@@ -0,0 +1,53 @@
1
+ import React, { forwardRef } from 'react'
2
+ import type { InputHTMLAttributes } from 'react'
3
+ import { Input, Icon } from './../../'
4
+ import { Checked } from '../../assets'
5
+
6
+ export interface ToggleProps
7
+ extends InputHTMLAttributes<Omit<HTMLInputElement, 'disabled' | 'type'>> {
8
+ /**
9
+ * ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
10
+ */
11
+ testId?: string
12
+ /**
13
+ * ID to identify input and corresponding label.
14
+ */
15
+ id: string
16
+ /**
17
+ * Specifies that this input should be disabled.
18
+ */
19
+ disabled?: boolean
20
+ /**
21
+ * Controls the component's direction.
22
+ */
23
+ variant?: 'horizontal' | 'vertical'
24
+ }
25
+
26
+ const Toggle = forwardRef<HTMLInputElement, ToggleProps>(function Toggle(
27
+ {
28
+ testId = 'fs-toggle',
29
+ id,
30
+ disabled,
31
+ variant = 'horizontal',
32
+ ...otherProps
33
+ }: ToggleProps,
34
+ ref
35
+ ) {
36
+ return (
37
+ <div data-fs-toggle data-fs-toggle-variant={variant} data-testid={testId}>
38
+ <Input
39
+ id={id}
40
+ ref={ref}
41
+ role="switch"
42
+ type="checkbox"
43
+ disabled={disabled}
44
+ {...otherProps}
45
+ />
46
+ <span data-fs-toggle-knob>
47
+ <Icon component={<Checked />} />
48
+ </span>
49
+ </div>
50
+ )
51
+ })
52
+
53
+ export default Toggle
@@ -0,0 +1,2 @@
1
+ export { default } from './Toggle'
2
+ export type { ToggleProps } from './Toggle'
@@ -0,0 +1,59 @@
1
+ import React, { forwardRef } from 'react'
2
+ import { Label, SROnly, Toggle } from './../../'
3
+
4
+ export type ToggleFieldProps = {
5
+ /**
6
+ * ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
7
+ */
8
+ testId?: string
9
+ /**
10
+ * ID to identify input and corresponding label.
11
+ */
12
+ id: string
13
+ /**
14
+ * The text displayed to identify the input.
15
+ */
16
+ label: string
17
+ /**
18
+ * Controls whether the label will be displayed or not.
19
+ */
20
+ displayLabel?: boolean
21
+ /**
22
+ * Specifies that this input should be disabled.
23
+ */
24
+ disabled?: boolean
25
+ /**
26
+ * Controls the component's direction.
27
+ */
28
+ variant?: 'horizontal' | 'vertical'
29
+ }
30
+
31
+ const ToggleField = forwardRef<HTMLDivElement, ToggleFieldProps>(
32
+ function ToggleField(
33
+ {
34
+ testId = 'fs-toggle-field',
35
+ id,
36
+ label,
37
+ disabled,
38
+ displayLabel = true,
39
+ variant = 'horizontal',
40
+ ...otherProps
41
+ },
42
+ ref
43
+ ) {
44
+ return (
45
+ <div ref={ref} data-fs-toggle-field data-testid={testId}>
46
+ <Toggle id={id} variant={variant} disabled={disabled} {...otherProps} />
47
+ {displayLabel ? (
48
+ <Label data-fs-toggle-field-label htmlFor={id}>
49
+ {label}
50
+ </Label>
51
+ ) : (
52
+ <SROnly text={label} />
53
+ )}
54
+ </div>
55
+ )
56
+ }
57
+ )
58
+
59
+ export default ToggleField
@@ -0,0 +1,2 @@
1
+ export { default } from './ToggleField'
2
+ export type { ToggleFieldProps } from './ToggleField'