@faststore/components 2.0.114-alpha.0 → 2.0.122-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 (92) hide show
  1. package/dist/hooks/index.d.ts +1 -0
  2. package/dist/hooks/index.js +1 -0
  3. package/dist/hooks/index.js.map +1 -1
  4. package/dist/hooks/useScrollDirection.d.ts +1 -0
  5. package/dist/hooks/useScrollDirection.js +22 -0
  6. package/dist/hooks/useScrollDirection.js.map +1 -0
  7. package/dist/hooks/useSearch.js +2 -2
  8. package/dist/hooks/useSearch.js.map +1 -1
  9. package/dist/index.d.ts +6 -0
  10. package/dist/index.js +3 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/molecules/Modal/Modal.d.ts +6 -1
  13. package/dist/molecules/Modal/Modal.js +2 -2
  14. package/dist/molecules/Modal/Modal.js.map +1 -1
  15. package/dist/molecules/NavbarLinks/NavbarLinks.d.ts +10 -0
  16. package/dist/molecules/NavbarLinks/NavbarLinks.js +6 -0
  17. package/dist/molecules/NavbarLinks/NavbarLinks.js.map +1 -0
  18. package/dist/molecules/NavbarLinks/NavbarLinksList.d.ts +10 -0
  19. package/dist/molecules/NavbarLinks/NavbarLinksList.js +7 -0
  20. package/dist/molecules/NavbarLinks/NavbarLinksList.js.map +1 -0
  21. package/dist/molecules/NavbarLinks/NavbarLinksListItem.d.ts +10 -0
  22. package/dist/molecules/NavbarLinks/NavbarLinksListItem.js +6 -0
  23. package/dist/molecules/NavbarLinks/NavbarLinksListItem.js.map +1 -0
  24. package/dist/molecules/NavbarLinks/index.d.ts +6 -0
  25. package/dist/molecules/NavbarLinks/index.js +4 -0
  26. package/dist/molecules/NavbarLinks/index.js.map +1 -0
  27. package/dist/organisms/CartSidebar/CartSidebar.d.ts +8 -3
  28. package/dist/organisms/CartSidebar/CartSidebar.js +2 -2
  29. package/dist/organisms/CartSidebar/CartSidebar.js.map +1 -1
  30. package/dist/organisms/Filter/FilterSlider.d.ts +8 -4
  31. package/dist/organisms/Filter/FilterSlider.js +2 -2
  32. package/dist/organisms/Filter/FilterSlider.js.map +1 -1
  33. package/dist/organisms/Navbar/Navbar.d.ts +14 -0
  34. package/dist/organisms/Navbar/Navbar.js +6 -0
  35. package/dist/organisms/Navbar/Navbar.js.map +1 -0
  36. package/dist/organisms/Navbar/NavbarButtons.d.ts +14 -0
  37. package/dist/organisms/Navbar/NavbarButtons.js +6 -0
  38. package/dist/organisms/Navbar/NavbarButtons.js.map +1 -0
  39. package/dist/organisms/Navbar/NavbarHeader.d.ts +10 -0
  40. package/dist/organisms/Navbar/NavbarHeader.js +6 -0
  41. package/dist/organisms/Navbar/NavbarHeader.js.map +1 -0
  42. package/dist/organisms/Navbar/NavbarRow.d.ts +10 -0
  43. package/dist/organisms/Navbar/NavbarRow.js +6 -0
  44. package/dist/organisms/Navbar/NavbarRow.js.map +1 -0
  45. package/dist/organisms/Navbar/index.d.ts +8 -0
  46. package/dist/organisms/Navbar/index.js +5 -0
  47. package/dist/organisms/Navbar/index.js.map +1 -0
  48. package/dist/organisms/NavbarSlider/NavbarSlider.d.ts +19 -0
  49. package/dist/organisms/NavbarSlider/NavbarSlider.js +7 -0
  50. package/dist/organisms/NavbarSlider/NavbarSlider.js.map +1 -0
  51. package/dist/organisms/NavbarSlider/NavbarSliderContent.d.ts +10 -0
  52. package/dist/organisms/NavbarSlider/NavbarSliderContent.js +6 -0
  53. package/dist/organisms/NavbarSlider/NavbarSliderContent.js.map +1 -0
  54. package/dist/organisms/NavbarSlider/NavbarSliderFooter.d.ts +10 -0
  55. package/dist/organisms/NavbarSlider/NavbarSliderFooter.js +6 -0
  56. package/dist/organisms/NavbarSlider/NavbarSliderFooter.js.map +1 -0
  57. package/dist/organisms/NavbarSlider/NavbarSliderHeader.d.ts +10 -0
  58. package/dist/organisms/NavbarSlider/NavbarSliderHeader.js +7 -0
  59. package/dist/organisms/NavbarSlider/NavbarSliderHeader.js.map +1 -0
  60. package/dist/organisms/NavbarSlider/index.d.ts +8 -0
  61. package/dist/organisms/NavbarSlider/index.js +5 -0
  62. package/dist/organisms/NavbarSlider/index.js.map +1 -0
  63. package/dist/organisms/RegionModal/RegionModal.d.ts +6 -2
  64. package/dist/organisms/RegionModal/RegionModal.js +3 -3
  65. package/dist/organisms/RegionModal/RegionModal.js.map +1 -1
  66. package/dist/organisms/SlideOver/SlideOver.d.ts +6 -2
  67. package/dist/organisms/SlideOver/SlideOver.js +2 -2
  68. package/dist/organisms/SlideOver/SlideOver.js.map +1 -1
  69. package/package.json +2 -2
  70. package/src/hooks/index.ts +1 -0
  71. package/src/hooks/useScrollDirection.ts +31 -0
  72. package/src/hooks/useSearch.ts +9 -8
  73. package/src/index.ts +36 -0
  74. package/src/molecules/Modal/Modal.tsx +7 -1
  75. package/src/molecules/NavbarLinks/NavbarLinks.tsx +24 -0
  76. package/src/molecules/NavbarLinks/NavbarLinksList.tsx +31 -0
  77. package/src/molecules/NavbarLinks/NavbarLinksListItem.tsx +30 -0
  78. package/src/molecules/NavbarLinks/index.ts +8 -0
  79. package/src/organisms/CartSidebar/CartSidebar.tsx +11 -2
  80. package/src/organisms/Filter/FilterSlider.tsx +12 -2
  81. package/src/organisms/Navbar/Navbar.tsx +32 -0
  82. package/src/organisms/Navbar/NavbarButtons.tsx +34 -0
  83. package/src/organisms/Navbar/NavbarHeader.tsx +29 -0
  84. package/src/organisms/Navbar/NavbarRow.tsx +22 -0
  85. package/src/organisms/Navbar/index.ts +11 -0
  86. package/src/organisms/NavbarSlider/NavbarSlider.tsx +46 -0
  87. package/src/organisms/NavbarSlider/NavbarSliderContent.tsx +31 -0
  88. package/src/organisms/NavbarSlider/NavbarSliderFooter.tsx +30 -0
  89. package/src/organisms/NavbarSlider/NavbarSliderHeader.tsx +29 -0
  90. package/src/organisms/NavbarSlider/index.ts +11 -0
  91. package/src/organisms/RegionModal/RegionModal.tsx +18 -3
  92. package/src/organisms/SlideOver/SlideOver.tsx +8 -2
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ import type { SlideOverHeaderProps } from '../..';
3
+ export interface NavbarSliderHeaderProps extends SlideOverHeaderProps {
4
+ /**
5
+ * ID to find this component in testing tools (e.g.: Cypress, Testing Library, and Jest).
6
+ */
7
+ testId?: string;
8
+ }
9
+ declare function NavbarSliderHeader({ children, testId, ...otherProps }: NavbarSliderHeaderProps): JSX.Element;
10
+ export default NavbarSliderHeader;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { SlideOverHeader } from '../..';
3
+ function NavbarSliderHeader({ children, testId = 'fs-navbar-slider-header', ...otherProps }) {
4
+ return (React.createElement(SlideOverHeader, { "data-fs-navbar-slider-header": true, "data-testid": testId, ...otherProps }, children));
5
+ }
6
+ export default NavbarSliderHeader;
7
+ //# sourceMappingURL=NavbarSliderHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavbarSliderHeader.js","sourceRoot":"","sources":["../../../src/organisms/NavbarSlider/NavbarSliderHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAUvC,SAAS,kBAAkB,CAAC,EAC1B,QAAQ,EACR,MAAM,GAAG,yBAAyB,EAClC,GAAG,UAAU,EACW;IACxB,OAAO,CACL,oBAAC,eAAe,yDAED,MAAM,KACf,UAAU,IAEb,QAAQ,CACO,CACnB,CAAA;AACH,CAAC;AAED,eAAe,kBAAkB,CAAA"}
@@ -0,0 +1,8 @@
1
+ export { default } from './NavbarSlider';
2
+ export type { NavbarSliderProps } from './NavbarSlider';
3
+ export { default as NavbarSliderHeader } from './NavbarSliderHeader';
4
+ export type { NavbarSliderHeaderProps } from './NavbarSliderHeader';
5
+ export { default as NavbarSliderContent } from './NavbarSliderContent';
6
+ export type { NavbarSliderContentProps } from './NavbarSliderContent';
7
+ export { default as NavbarSliderFooter } from './NavbarSliderFooter';
8
+ export type { NavbarSliderFooterProps } from './NavbarSliderFooter';
@@ -0,0 +1,5 @@
1
+ export { default } from './NavbarSlider';
2
+ export { default as NavbarSliderHeader } from './NavbarSliderHeader';
3
+ export { default as NavbarSliderContent } from './NavbarSliderContent';
4
+ export { default as NavbarSliderFooter } from './NavbarSliderFooter';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/organisms/NavbarSlider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAGxC,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAGpE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAGtE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { MutableRefObject } from 'react';
3
- import type { ModalProps, LinkProps, LinkElementType } from '../../';
3
+ import type { LinkElementType, LinkProps, ModalProps, OverlayProps } from '../../';
4
4
  export interface RegionModalProps extends Omit<ModalProps, 'children'> {
5
5
  /**
6
6
  * ID to find this component in testing tools (e.g.: cypress,
@@ -39,6 +39,10 @@ export interface RegionModalProps extends Omit<ModalProps, 'children'> {
39
39
  * Enables fadeOut effect on modal after onSubmit function
40
40
  */
41
41
  fadeOutOnSubmit?: boolean;
42
+ /**
43
+ * Props forwarded to the `Overlay` component.
44
+ */
45
+ overlayProps?: OverlayProps;
42
46
  /**
43
47
  * Function called when Close button is clicked.
44
48
  */
@@ -56,5 +60,5 @@ export interface RegionModalProps extends Omit<ModalProps, 'children'> {
56
60
  */
57
61
  onClear?: () => void;
58
62
  }
59
- declare function RegionModal({ testId, title, description, idkPostalCodeLinkProps, errorMessage, inputRef, inputValue, fadeOutOnSubmit, onClose, onInput, onSubmit, onClear, ...otherProps }: RegionModalProps): JSX.Element;
63
+ declare function RegionModal({ testId, title, description, idkPostalCodeLinkProps, errorMessage, inputRef, inputValue, fadeOutOnSubmit, overlayProps, onClose, onInput, onSubmit, onClear, ...otherProps }: RegionModalProps): JSX.Element;
60
64
  export default RegionModal;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
- import { Icon, InputField, Link, Modal, ModalHeader, ModalBody } from '../..';
3
- function RegionModal({ testId = 'fs-region-modal', title = 'Set your location', description = 'Prices, offers and availability may vary according to your location.', idkPostalCodeLinkProps, errorMessage, inputRef, inputValue, fadeOutOnSubmit, onClose, onInput, onSubmit, onClear, ...otherProps }) {
4
- return (React.createElement(Modal, { "data-fs-region-modal": true, testId: testId, ...otherProps }, ({ fadeOut }) => (React.createElement(React.Fragment, null,
2
+ import { Icon, InputField, Link, Modal, ModalBody, ModalHeader } from '../..';
3
+ function RegionModal({ testId = 'fs-region-modal', title = 'Set your location', description = 'Prices, offers and availability may vary according to your location.', idkPostalCodeLinkProps, errorMessage, inputRef, inputValue, fadeOutOnSubmit, overlayProps, onClose, onInput, onSubmit, onClear, ...otherProps }) {
4
+ return (React.createElement(Modal, { "data-fs-region-modal": true, testId: testId, overlayProps: overlayProps, ...otherProps }, ({ fadeOut }) => (React.createElement(React.Fragment, null,
5
5
  React.createElement(ModalHeader, { onClose: () => {
6
6
  fadeOut();
7
7
  onClose?.();
@@ -1 +1 @@
1
- {"version":3,"file":"RegionModal.js","sourceRoot":"","sources":["../../../src/organisms/RegionModal/RegionModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AA0D7E,SAAS,WAAW,CAAC,EACnB,MAAM,GAAG,iBAAiB,EAC1B,KAAK,GAAG,mBAAmB,EAC3B,WAAW,GAAG,sEAAsE,EACpF,sBAAsB,EACtB,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,eAAe,EACf,OAAO,EACP,OAAO,EACP,QAAQ,EACR,OAAO,EACP,GAAG,UAAU,EACI;IACjB,OAAO,CACL,oBAAC,KAAK,kCAAsB,MAAM,EAAE,MAAM,KAAM,UAAU,IACvD,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAChB;QACE,oBAAC,WAAW,IACV,OAAO,EAAE,GAAG,EAAE;gBACZ,OAAO,EAAE,CAAA;gBACT,OAAO,EAAE,EAAE,CAAA;YACb,CAAC,EACD,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE;gBACb,YAAY,EAAE,oBAAoB;aACnC,GACD;QACF,oBAAC,SAAS;YACR,oBAAC,UAAU,wCAET,EAAE,EAAE,GAAG,MAAM,cAAc,EAC3B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAC,aAAa,EACnB,UAAU,QACV,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EACpC,QAAQ,EAAE,GAAG,EAAE;oBACb,QAAQ,EAAE,EAAE,CAAA;oBACZ,eAAe,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;gBACpC,CAAC,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAC1B,KAAK,EAAE,YAAY,GACnB;YAEF,oBAAC,IAAI,0CAA+B,sBAAsB,IACvD,sBAAsB,EAAE,QAAQ,IAAI,CACnC;gBACG,6BAA6B;gBAC9B,oBAAC,IAAI,IAAC,IAAI,EAAC,gBAAgB,EAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,CACpD,CACJ,CACI,CACG,CACX,CACJ,CACK,CACT,CAAA;AACH,CAAC;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"RegionModal.js","sourceRoot":"","sources":["../../../src/organisms/RegionModal/RegionModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAoE7E,SAAS,WAAW,CAAC,EACnB,MAAM,GAAG,iBAAiB,EAC1B,KAAK,GAAG,mBAAmB,EAC3B,WAAW,GAAG,sEAAsE,EACpF,sBAAsB,EACtB,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,eAAe,EACf,YAAY,EACZ,OAAO,EACP,OAAO,EACP,QAAQ,EACR,OAAO,EACP,GAAG,UAAU,EACI;IACjB,OAAO,CACL,oBAAC,KAAK,kCAEJ,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,KACtB,UAAU,IAEb,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAChB;QACE,oBAAC,WAAW,IACV,OAAO,EAAE,GAAG,EAAE;gBACZ,OAAO,EAAE,CAAA;gBACT,OAAO,EAAE,EAAE,CAAA;YACb,CAAC,EACD,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE;gBACb,YAAY,EAAE,oBAAoB;aACnC,GACD;QACF,oBAAC,SAAS;YACR,oBAAC,UAAU,wCAET,EAAE,EAAE,GAAG,MAAM,cAAc,EAC3B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAC,aAAa,EACnB,UAAU,QACV,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EACpC,QAAQ,EAAE,GAAG,EAAE;oBACb,QAAQ,EAAE,EAAE,CAAA;oBACZ,eAAe,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;gBACpC,CAAC,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAC1B,KAAK,EAAE,YAAY,GACnB;YAEF,oBAAC,IAAI,0CAA+B,sBAAsB,IACvD,sBAAsB,EAAE,QAAQ,IAAI,CACnC;gBACG,6BAA6B;gBAC9B,oBAAC,IAAI,IAAC,IAAI,EAAC,gBAAgB,EAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,CACpD,CACJ,CACI,CACG,CACX,CACJ,CACK,CACT,CAAA;AACH,CAAC;AAED,eAAe,WAAW,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from 'react';
2
- import type { ModalProps } from '../../';
2
+ import type { ModalProps, OverlayProps } from '../../';
3
3
  export type Direction = 'leftSide' | 'rightSide';
4
4
  export type WidthSize = 'full' | 'partial';
5
5
  export interface SlideOverProps extends Omit<ModalProps, 'title'> {
@@ -24,11 +24,15 @@ export interface SlideOverProps extends Omit<ModalProps, 'title'> {
24
24
  */
25
25
  fade: 'in' | 'out';
26
26
  children: ReactNode;
27
+ /**
28
+ * Props forwarded to the `Overlay` component.
29
+ */
30
+ overlayProps?: OverlayProps;
27
31
  /**
28
32
  * This function is called whenever the user clicks outside.
29
33
  * the modal content
30
34
  */
31
35
  onDismiss?: () => void;
32
36
  }
33
- declare function SlideOver({ isOpen, direction, size, fade, children, onDismiss, testId, ...otherProps }: SlideOverProps): JSX.Element;
37
+ declare function SlideOver({ testId, isOpen, direction, size, fade, children, overlayProps, onDismiss, ...otherProps }: SlideOverProps): JSX.Element;
34
38
  export default SlideOver;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { Modal } from '../../';
3
- function SlideOver({ isOpen, direction = 'leftSide', size = 'full', fade = 'out', children, onDismiss, testId = 'fs-slide-over', ...otherProps }) {
4
- return (React.createElement(Modal, { "data-fs-modal": null, "data-fs-slide-over": true, "data-fs-slide-over-direction": direction, "data-fs-slide-over-size": size, "data-fs-slide-over-state": fade, isOpen: isOpen, onDismiss: onDismiss, testId: testId, ...otherProps }, children));
3
+ function SlideOver({ testId = 'fs-slide-over', isOpen, direction = 'leftSide', size = 'full', fade = 'out', children, overlayProps, onDismiss, ...otherProps }) {
4
+ return (React.createElement(Modal, { "data-fs-modal": null, "data-fs-slide-over": true, "data-fs-slide-over-direction": direction, "data-fs-slide-over-size": size, "data-fs-slide-over-state": fade, isOpen: isOpen, onDismiss: onDismiss, testId: testId, overlayProps: overlayProps, ...otherProps }, children));
5
5
  }
6
6
  export default SlideOver;
7
7
  //# sourceMappingURL=SlideOver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SlideOver.js","sourceRoot":"","sources":["../../../src/organisms/SlideOver/SlideOver.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAkC9B,SAAS,SAAS,CAAC,EACjB,MAAM,EACN,SAAS,GAAG,UAAU,EACtB,IAAI,GAAG,MAAM,EACb,IAAI,GAAG,KAAK,EACZ,QAAQ,EACR,SAAS,EACT,MAAM,GAAG,eAAe,EACxB,GAAG,UAAU,EACE;IACf,OAAO,CACL,oBAAC,KAAK,qBACW,IAAI,8DAEW,SAAS,6BACd,IAAI,8BACH,IAAI,EAC9B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,KACV,UAAU,IAEb,QAAQ,CACH,CACT,CAAA;AACH,CAAC;AAED,eAAe,SAAS,CAAA"}
1
+ {"version":3,"file":"SlideOver.js","sourceRoot":"","sources":["../../../src/organisms/SlideOver/SlideOver.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAsC9B,SAAS,SAAS,CAAC,EACjB,MAAM,GAAG,eAAe,EACxB,MAAM,EACN,SAAS,GAAG,UAAU,EACtB,IAAI,GAAG,MAAM,EACb,IAAI,GAAG,KAAK,EACZ,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,GAAG,UAAU,EACE;IACf,OAAO,CACL,oBAAC,KAAK,qBACW,IAAI,8DAEW,SAAS,6BACd,IAAI,8BACH,IAAI,EAC9B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,KACtB,UAAU,IAEb,QAAQ,CACH,CACT,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.114-alpha.0",
3
+ "version": "2.0.122-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": "3d49923a96682db78955fcf81e6f134161de0d40"
33
+ "gitHead": "253c09ebb08354e8c7fead371d64e97cdf0b204b"
34
34
  }
@@ -2,3 +2,4 @@ export { default as UIProvider, Toast as ToastProps, useUI } from './UIProvider'
2
2
  export { useFadeEffect } from './useFadeEffect'
3
3
  export { useTrapFocus } from './useTrapFocus'
4
4
  export { useSearch } from './useSearch'
5
+ export { useScrollDirection } from './useScrollDirection'
@@ -0,0 +1,31 @@
1
+ import { useEffect, useState, useTransition } from 'react'
2
+
3
+ export const useScrollDirection = () => {
4
+ const [scrollDirection, setScrollDirection] = useState<string>('')
5
+ const [isPending, startTransition] = useTransition()
6
+
7
+ useEffect(() => {
8
+ let lastScrollY = window.scrollY
9
+
10
+ const updateScrollDirection = () => {
11
+ const { scrollY } = window
12
+ const direction = scrollY > lastScrollY ? 'down' : 'up'
13
+
14
+ if (
15
+ !isPending &&
16
+ direction !== scrollDirection &&
17
+ (scrollY - lastScrollY > 10 || scrollY - lastScrollY < -10)
18
+ ) {
19
+ startTransition(() => setScrollDirection(direction))
20
+ }
21
+
22
+ lastScrollY = scrollY > 0 ? scrollY : 0
23
+ }
24
+
25
+ window.addEventListener('scroll', updateScrollDirection)
26
+
27
+ return () => window.removeEventListener('scroll', updateScrollDirection)
28
+ }, [isPending, scrollDirection])
29
+
30
+ return scrollDirection
31
+ }
@@ -1,12 +1,13 @@
1
- import { SearchContext } from "../molecules/SearchProvider/SearchProvider"
2
- import { useContext } from "react"
1
+ import { useContext } from 'react'
2
+
3
+ import { SearchContext } from '../molecules/SearchProvider/SearchProvider'
3
4
 
4
5
  export const useSearch = () => {
5
- const context = useContext(SearchContext)
6
+ const context = useContext(SearchContext)
6
7
 
7
- if (!context) {
8
- return { inContext: false as const }
9
- }
8
+ if (!context) {
9
+ return { inContext: false as const }
10
+ }
10
11
 
11
- return { inContext: true as const, values: context }
12
- }
12
+ return { inContext: true as const, values: context }
13
+ }
package/src/index.ts CHANGED
@@ -95,6 +95,16 @@ export { default as LinkButton } from './molecules/LinkButton'
95
95
  export type { LinkButtonProps } from './molecules/LinkButton'
96
96
  export { default as Modal, ModalHeader, ModalBody } from './molecules/Modal'
97
97
  export type { ModalProps, ModalHeaderProps } from './molecules/Modal'
98
+ export {
99
+ default as NavbarLinks,
100
+ NavbarLinksList,
101
+ NavbarLinksListItem,
102
+ } from './molecules/NavbarLinks'
103
+ export type {
104
+ NavbarLinksProps,
105
+ NavbarLinksListProps,
106
+ NavbarLinksListItemProps,
107
+ } from './molecules/NavbarLinks'
98
108
  export { default as OrderSummary } from './molecules/OrderSummary'
99
109
  export type { OrderSummaryProps } from './molecules/OrderSummary'
100
110
  export {
@@ -236,6 +246,32 @@ export type {
236
246
  ImageZoomProps,
237
247
  } from './organisms/ImageGallery'
238
248
 
249
+ export {
250
+ default as Navbar,
251
+ NavbarHeader,
252
+ NavbarRow,
253
+ NavbarButtons,
254
+ } from './organisms/Navbar'
255
+ export type {
256
+ NavbarProps,
257
+ NavbarHeaderProps,
258
+ NavbarRowProps,
259
+ NavbarButtonsProps,
260
+ } from './organisms/Navbar'
261
+
262
+ export {
263
+ default as NavbarSlider,
264
+ NavbarSliderHeader,
265
+ NavbarSliderContent,
266
+ NavbarSliderFooter,
267
+ } from './organisms/NavbarSlider'
268
+ export type {
269
+ NavbarSliderProps,
270
+ NavbarSliderHeaderProps,
271
+ NavbarSliderContentProps,
272
+ NavbarSliderFooterProps,
273
+ } from './organisms/NavbarSlider'
274
+
239
275
  export { default as OutOfStock } from './organisms/OutOfStock'
240
276
  export type { OutOfStockProps } from './organisms/OutOfStock'
241
277
 
@@ -7,7 +7,7 @@ import type {
7
7
  import React from 'react'
8
8
  import { createPortal } from 'react-dom'
9
9
 
10
- import { Overlay } from '../..'
10
+ import { Overlay, OverlayProps } from '../..'
11
11
  import { useFadeEffect, useUI } from '../../hooks'
12
12
  import type { ModalContentProps } from './ModalContent'
13
13
  import ModalContent from './ModalContent'
@@ -38,6 +38,10 @@ export interface ModalProps extends Omit<ModalContentProps, 'children'> {
38
38
  * Event emitted when the modal is closed
39
39
  */
40
40
  onDismiss?: () => void
41
+ /**
42
+ * Props forwarded to the `Overlay` component
43
+ */
44
+ overlayProps?: OverlayProps
41
45
  /**
42
46
  * Children or function as a children
43
47
  */
@@ -55,6 +59,7 @@ const Modal = ({
55
59
  testId = 'fs-modal',
56
60
  isOpen = true,
57
61
  onDismiss,
62
+ overlayProps,
58
63
  ...otherProps
59
64
  }: ModalProps) => {
60
65
  const { closeModal } = useUI()
@@ -85,6 +90,7 @@ const Modal = ({
85
90
  <Overlay
86
91
  onClick={handleBackdropClick}
87
92
  onKeyDown={handleBackdropKeyDown}
93
+ {...overlayProps}
88
94
  >
89
95
  <ModalContent
90
96
  onTransitionEnd={() => fade === 'out' && closeModal()}
@@ -0,0 +1,24 @@
1
+ import React, { forwardRef } from 'react'
2
+ import type { HTMLAttributes } from 'react'
3
+
4
+ export interface NavbarLinksProps extends HTMLAttributes<HTMLDivElement> {
5
+ /**
6
+ * ID to find this component in testing tools (e.g.: Cypress, Testing Library, and Jest).
7
+ */
8
+ testId?: string
9
+ }
10
+
11
+ const NavbarLinks = forwardRef<HTMLDivElement, NavbarLinksProps>(
12
+ function NavbarLinks(
13
+ { children, testId = 'fs-navbar-links', ...otherProps },
14
+ ref
15
+ ) {
16
+ return (
17
+ <nav data-fs-navbar-links ref={ref} data-testid={testId} {...otherProps}>
18
+ {children}
19
+ </nav>
20
+ )
21
+ }
22
+ )
23
+
24
+ export default NavbarLinks
@@ -0,0 +1,31 @@
1
+ import React, { forwardRef } from 'react'
2
+
3
+ import { List } from '../..'
4
+ import type { ListProps } from '../..'
5
+
6
+ export interface NavbarLinksListProps extends ListProps {
7
+ /**
8
+ * ID to find this component in testing tools (e.g.: Cypress, Testing Library, and Jest).
9
+ */
10
+ testId?: string
11
+ }
12
+
13
+ const NavbarLinksList = forwardRef<HTMLUListElement, NavbarLinksListProps>(
14
+ function NavbarLinksList(
15
+ { children, testId = 'fs-navbar-links-list', ...otherProps },
16
+ ref
17
+ ) {
18
+ return (
19
+ <List
20
+ data-fs-navbar-links-list
21
+ ref={ref}
22
+ data-testid={testId}
23
+ {...otherProps}
24
+ >
25
+ {children}
26
+ </List>
27
+ )
28
+ }
29
+ )
30
+
31
+ export default NavbarLinksList
@@ -0,0 +1,30 @@
1
+ import React, { forwardRef } from 'react'
2
+ import type { HTMLAttributes } from 'react'
3
+
4
+ export interface NavbarLinksListItemProps
5
+ extends HTMLAttributes<HTMLLIElement> {
6
+ /**
7
+ * ID to find this component in testing tools (e.g.: Cypress, Testing Library, and Jest).
8
+ */
9
+ testId?: string
10
+ }
11
+
12
+ const NavbarLinksListItem = forwardRef<HTMLLIElement, NavbarLinksListItemProps>(
13
+ function NavbarLinksListItem(
14
+ { children, testId = 'fs-navbar-links-list-item', ...otherProps },
15
+ ref
16
+ ) {
17
+ return (
18
+ <li
19
+ data-fs-navbar-links-list-item
20
+ ref={ref}
21
+ data-testid={testId}
22
+ {...otherProps}
23
+ >
24
+ {children}
25
+ </li>
26
+ )
27
+ }
28
+ )
29
+
30
+ export default NavbarLinksListItem
@@ -0,0 +1,8 @@
1
+ export { default } from './NavbarLinks'
2
+ export type { NavbarLinksProps } from './NavbarLinks'
3
+
4
+ export { default as NavbarLinksList } from './NavbarLinksList'
5
+ export type { NavbarLinksListProps } from './NavbarLinksList'
6
+
7
+ export { default as NavbarLinksListItem } from './NavbarLinksListItem'
8
+ export type { NavbarLinksListItemProps } from './NavbarLinksListItem'
@@ -1,9 +1,10 @@
1
+ import type { HTMLAttributes, PropsWithChildren, ReactNode } from 'react'
1
2
  import React from 'react'
2
- import type { PropsWithChildren, ReactNode } from 'react'
3
3
 
4
4
  import {
5
5
  Alert,
6
6
  Badge,
7
+ OverlayProps,
7
8
  SlideOver,
8
9
  SlideOverHeader,
9
10
  useFadeEffect,
@@ -12,7 +13,7 @@ import {
12
13
 
13
14
  import { SlideOverDirection, SlideOverWidthSize } from '../SlideOver'
14
15
 
15
- export interface CartSidebarProps {
16
+ export interface CartSidebarProps extends HTMLAttributes<HTMLDivElement> {
16
17
  /**
17
18
  * ID to find this component in testing tools (e.g.: cypress,
18
19
  * testing-library, and jest).
@@ -42,6 +43,10 @@ export interface CartSidebarProps {
42
43
  * The content for Alert component.
43
44
  */
44
45
  alertText?: string
46
+ /**
47
+ * Props forwarded to the `Overlay` component.
48
+ */
49
+ overlayProps?: OverlayProps
45
50
  /**
46
51
  * Function called when Close Button is clicked.
47
52
  */
@@ -57,7 +62,9 @@ function CartSidebar({
57
62
  children,
58
63
  alertIcon,
59
64
  alertText,
65
+ overlayProps,
60
66
  onClose,
67
+ ...otherProps
61
68
  }: PropsWithChildren<CartSidebarProps>) {
62
69
  const { fade, fadeOut } = useFadeEffect()
63
70
  const { closeCart } = useUI()
@@ -72,6 +79,8 @@ function CartSidebar({
72
79
  direction={direction}
73
80
  onTransitionEnd={() => fade === 'out' && closeCart()}
74
81
  testId={testId}
82
+ overlayProps={overlayProps}
83
+ {...otherProps}
75
84
  >
76
85
  <SlideOverHeader
77
86
  closeBtnProps={{ testId: 'fs-cart-sidebar-button-close' }}
@@ -1,8 +1,10 @@
1
- import React, { PropsWithChildren } from 'react'
1
+ import type { HTMLAttributes, PropsWithChildren } from 'react'
2
+ import React from 'react'
2
3
 
3
4
  import {
4
5
  Button,
5
6
  ButtonProps,
7
+ OverlayProps,
6
8
  SlideOver,
7
9
  SlideOverHeader,
8
10
  useFadeEffect,
@@ -11,7 +13,7 @@ import {
11
13
 
12
14
  import { SlideOverDirection, SlideOverWidthSize } from '../SlideOver'
13
15
 
14
- export interface FilterSliderProps {
16
+ export interface FilterSliderProps extends HTMLAttributes<HTMLDivElement> {
15
17
  /**
16
18
  * Title for the FilterSlider component.
17
19
  */
@@ -32,6 +34,10 @@ export interface FilterSliderProps {
32
34
  * Props for the Clear Button from FilterSlider component.
33
35
  */
34
36
  clearBtnProps?: Partial<ButtonProps>
37
+ /**
38
+ * Props forwarded to the `Overlay` component.
39
+ */
40
+ overlayProps?: OverlayProps
35
41
  /**
36
42
  * Function called when Close Button is clicked.
37
43
  */
@@ -45,7 +51,9 @@ function FilterSlider({
45
51
  children,
46
52
  applyBtnProps,
47
53
  clearBtnProps,
54
+ overlayProps,
48
55
  onClose,
56
+ ...otherProps
49
57
  }: PropsWithChildren<FilterSliderProps>) {
50
58
  const { fade, fadeOut } = useFadeEffect()
51
59
  const { closeFilter } = useUI()
@@ -59,6 +67,8 @@ function FilterSlider({
59
67
  size={size}
60
68
  direction={direction}
61
69
  onTransitionEnd={() => fade === 'out' && closeFilter()}
70
+ overlayProps={overlayProps}
71
+ {...otherProps}
62
72
  >
63
73
  <div data-fs-filter-slider-content>
64
74
  <SlideOverHeader
@@ -0,0 +1,32 @@
1
+ import type { HTMLAttributes } from 'react'
2
+ import React, { forwardRef } from 'react'
3
+
4
+ export interface NavbarProps extends HTMLAttributes<HTMLDivElement> {
5
+ /**
6
+ * ID to find this component in testing tools (e.g.: Cypress, Testing Library, and Jest).
7
+ */
8
+ testId?: string
9
+ /**
10
+ * Specifies the scroll direction. This value can be achieved using the `useScrollDirection` hook.
11
+ */
12
+ scrollDirection: string
13
+ }
14
+
15
+ const Navbar = forwardRef<HTMLDivElement, NavbarProps>(function Navbar(
16
+ { children, scrollDirection, testId = 'fs-navbar', ...otherProps },
17
+ ref
18
+ ) {
19
+ return (
20
+ <section
21
+ data-fs-navbar
22
+ ref={ref}
23
+ data-testid={testId}
24
+ data-fs-navbar-scroll={scrollDirection}
25
+ {...otherProps}
26
+ >
27
+ {children}
28
+ </section>
29
+ )
30
+ })
31
+
32
+ export default Navbar
@@ -0,0 +1,34 @@
1
+ import React, { forwardRef } from 'react'
2
+ import type { HTMLAttributes } from 'react'
3
+
4
+ export interface NavbarButtonsProps extends HTMLAttributes<HTMLDivElement> {
5
+ /**
6
+ * ID to find this component in testing tools (e.g.: Cypress, Testing Library, and Jest).
7
+ */
8
+ testId?: string
9
+ /**
10
+ * Specifies whether the Search Input is expanded or not.
11
+ */
12
+ searchExpanded: boolean
13
+ }
14
+
15
+ const NavbarButtons = forwardRef<HTMLDivElement, NavbarButtonsProps>(
16
+ function NavbarButtons(
17
+ { children, searchExpanded, testId = 'fs-navbar-buttons', ...otherProps },
18
+ ref
19
+ ) {
20
+ return (
21
+ <div
22
+ data-fs-navbar-buttons
23
+ ref={ref}
24
+ data-testid={testId}
25
+ data-fs-navbar-search-expanded={searchExpanded}
26
+ {...otherProps}
27
+ >
28
+ {children}
29
+ </div>
30
+ )
31
+ }
32
+ )
33
+
34
+ export default NavbarButtons
@@ -0,0 +1,29 @@
1
+ import React, { forwardRef } from 'react'
2
+ import type { HTMLAttributes } from 'react'
3
+
4
+ export interface NavbarHeaderProps extends HTMLAttributes<HTMLDivElement> {
5
+ /**
6
+ * ID to find this component in testing tools (e.g.: Cypress, Testing Library, and Jest).
7
+ */
8
+ testId?: string
9
+ }
10
+
11
+ const NavbarHeader = forwardRef<HTMLDivElement, NavbarHeaderProps>(
12
+ function NavbarHeader(
13
+ { children, testId = 'fs-navbar-header', ...otherProps },
14
+ ref
15
+ ) {
16
+ return (
17
+ <section
18
+ data-fs-navbar-header
19
+ ref={ref}
20
+ data-testid={testId}
21
+ {...otherProps}
22
+ >
23
+ {children}
24
+ </section>
25
+ )
26
+ }
27
+ )
28
+
29
+ export default NavbarHeader
@@ -0,0 +1,22 @@
1
+ import React, { forwardRef } from 'react'
2
+ import type { HTMLAttributes } from 'react'
3
+
4
+ export interface NavbarRowProps extends HTMLAttributes<HTMLDivElement> {
5
+ /**
6
+ * ID to find this component in testing tools (e.g.: Cypress, Testing Library, and Jest).
7
+ */
8
+ testId?: string
9
+ }
10
+
11
+ const NavbarRow = forwardRef<HTMLDivElement, NavbarRowProps>(function NavbarRow(
12
+ { children, testId = 'fs-navbar-row', ...otherProps },
13
+ ref
14
+ ) {
15
+ return (
16
+ <div data-fs-navbar-row ref={ref} data-testid={testId} {...otherProps}>
17
+ {children}
18
+ </div>
19
+ )
20
+ })
21
+
22
+ export default NavbarRow
@@ -0,0 +1,11 @@
1
+ export { default } from './Navbar'
2
+ export type { NavbarProps } from './Navbar'
3
+
4
+ export { default as NavbarHeader } from './NavbarHeader'
5
+ export type { NavbarHeaderProps } from './NavbarHeader'
6
+
7
+ export { default as NavbarRow } from './NavbarRow'
8
+ export type { NavbarRowProps } from './NavbarRow'
9
+
10
+ export { default as NavbarButtons } from './NavbarButtons'
11
+ export type { NavbarButtonsProps } from './NavbarButtons'