@nok-integration/storefront-react 0.29.10 → 0.29.11

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/index.mjs CHANGED
@@ -5722,7 +5722,9 @@ function ScreenTitleProvider({ children }) {
5722
5722
  return jsx(ScreenTitleContext.Provider, {
5723
5723
  value: value2,
5724
5724
  children: jsx(ScreenNavProvider, {
5725
- children
5725
+ children: jsx(ScreenBackdropProvider, {
5726
+ children
5727
+ })
5726
5728
  })
5727
5729
  });
5728
5730
  }
@@ -5787,6 +5789,43 @@ function useSetScreenNav(crumbs2, tone) {
5787
5789
  });
5788
5790
  }, [claim, key, tone, suppressed]);
5789
5791
  }
5792
+ const ScreenBackdropContext = createContext({
5793
+ backdrop: "plain",
5794
+ claim: () => () => {
5795
+ }
5796
+ });
5797
+ function ScreenBackdropProvider({ children }) {
5798
+ const [backdrop, setBackdrop] = useState("plain");
5799
+ const held = useRef(0);
5800
+ const claim = useCallback((next) => {
5801
+ held.current += 1;
5802
+ const mine = held.current;
5803
+ setBackdrop(next);
5804
+ return () => {
5805
+ if (held.current !== mine) return;
5806
+ setBackdrop("plain");
5807
+ };
5808
+ }, []);
5809
+ const value2 = useMemo(() => ({
5810
+ backdrop,
5811
+ claim
5812
+ }), [backdrop, claim]);
5813
+ return jsx(ScreenBackdropContext.Provider, {
5814
+ value: value2,
5815
+ children
5816
+ });
5817
+ }
5818
+ function useScreenBackdrop() {
5819
+ return useContext(ScreenBackdropContext).backdrop;
5820
+ }
5821
+ function useSetScreenBackdrop(backdrop) {
5822
+ const { claim } = useContext(ScreenBackdropContext);
5823
+ const suppressed = useContext(SuppressedContext);
5824
+ useEffect(() => {
5825
+ if (suppressed) return;
5826
+ return claim(backdrop);
5827
+ }, [claim, backdrop, suppressed]);
5828
+ }
5790
5829
  const ShopContext = createContext(null);
5791
5830
  const CartCacheContext = createContext(null);
5792
5831
  function DaznShopProvider({ children, ...config }) {
@@ -14713,18 +14752,18 @@ function requireDist() {
14713
14752
  return dist;
14714
14753
  }
14715
14754
  var distExports = requireDist();
14716
- const hero$1 = "_hero_dctyt_1";
14717
- const image$1 = "_image_dctyt_11";
14718
- const foot = "_foot_dctyt_34";
14719
- const text$1 = "_text_dctyt_40";
14720
- const logo$1 = "_logo_dctyt_48";
14721
- const copy$1 = "_copy_dctyt_53";
14722
- const headline = "_headline_dctyt_62";
14723
- const body = "_body_dctyt_70";
14724
- const cta$2 = "_cta_dctyt_79";
14725
- const video = "_video_dctyt_83";
14726
- const desktopOnly = "_desktopOnly_dctyt_87";
14727
- const phoneOnly$1 = "_phoneOnly_dctyt_97";
14755
+ const hero$1 = "_hero_15sq4_1";
14756
+ const image$1 = "_image_15sq4_11";
14757
+ const foot = "_foot_15sq4_34";
14758
+ const text$1 = "_text_15sq4_40";
14759
+ const logo$1 = "_logo_15sq4_48";
14760
+ const copy$1 = "_copy_15sq4_53";
14761
+ const headline = "_headline_15sq4_62";
14762
+ const body = "_body_15sq4_70";
14763
+ const cta$2 = "_cta_15sq4_79";
14764
+ const video = "_video_15sq4_83";
14765
+ const desktopOnly = "_desktopOnly_15sq4_87";
14766
+ const phoneOnly$1 = "_phoneOnly_15sq4_97";
14728
14767
  const hero$2 = {
14729
14768
  hero: hero$1,
14730
14769
  image: image$1,
@@ -14744,6 +14783,7 @@ function VipHero({ hero: hero2, onContinue }) {
14744
14783
  const assetUrl = useAssetUrl();
14745
14784
  const ref = useRef(null);
14746
14785
  useTopOffset(ref, "--vip-hero-top");
14786
+ useSetScreenBackdrop("media");
14747
14787
  const desktopImage = hero2.desktop_image ?? null;
14748
14788
  const desktopVideo = hero2.desktop_video ?? null;
14749
14789
  const wide2 = desktopImage !== null || desktopVideo !== null;
@@ -14821,6 +14861,7 @@ function VipInviteNotice({ title: title2, body: body3 }) {
14821
14861
  const navigate = useNavigate();
14822
14862
  const ref = useRef(null);
14823
14863
  useTopOffset(ref, "--vip-hero-top");
14864
+ useSetScreenBackdrop("media");
14824
14865
  const explore = () => {
14825
14866
  if (navigate) {
14826
14867
  navigate("/");
@@ -16354,7 +16395,9 @@ function CheckoutBar({ title: title2, onClose, closeLabel, className }) {
16354
16395
  })]
16355
16396
  });
16356
16397
  }
16357
- function ShopBar({ onBack, onMenu, title: title2, showCart, floating: floating2 = false, scrolled: scrolled2, backLabel, menuLabel, className }) {
16398
+ function ShopBar({ onBack, onMenu, title: title2, showCart, floating: floatingProp, scrolled: scrolled2, backLabel, menuLabel, className }) {
16399
+ const backdrop = useScreenBackdrop();
16400
+ const floating2 = floatingProp ?? backdrop === "media";
16358
16401
  const t = useT();
16359
16402
  const cartCount = useCartCount();
16360
16403
  const screenTitle = useScreenTitle();
@@ -5722,7 +5722,9 @@ function ScreenTitleProvider({ children }) {
5722
5722
  return jsx(ScreenTitleContext.Provider, {
5723
5723
  value: value2,
5724
5724
  children: jsx(ScreenNavProvider, {
5725
- children
5725
+ children: jsx(ScreenBackdropProvider, {
5726
+ children
5727
+ })
5726
5728
  })
5727
5729
  });
5728
5730
  }
@@ -5787,6 +5789,43 @@ function useSetScreenNav(crumbs2, tone) {
5787
5789
  });
5788
5790
  }, [claim, key, tone, suppressed]);
5789
5791
  }
5792
+ const ScreenBackdropContext = createContext({
5793
+ backdrop: "plain",
5794
+ claim: () => () => {
5795
+ }
5796
+ });
5797
+ function ScreenBackdropProvider({ children }) {
5798
+ const [backdrop, setBackdrop] = useState("plain");
5799
+ const held = useRef(0);
5800
+ const claim = useCallback((next) => {
5801
+ held.current += 1;
5802
+ const mine = held.current;
5803
+ setBackdrop(next);
5804
+ return () => {
5805
+ if (held.current !== mine) return;
5806
+ setBackdrop("plain");
5807
+ };
5808
+ }, []);
5809
+ const value2 = useMemo(() => ({
5810
+ backdrop,
5811
+ claim
5812
+ }), [backdrop, claim]);
5813
+ return jsx(ScreenBackdropContext.Provider, {
5814
+ value: value2,
5815
+ children
5816
+ });
5817
+ }
5818
+ function useScreenBackdrop() {
5819
+ return useContext(ScreenBackdropContext).backdrop;
5820
+ }
5821
+ function useSetScreenBackdrop(backdrop) {
5822
+ const { claim } = useContext(ScreenBackdropContext);
5823
+ const suppressed = useContext(SuppressedContext);
5824
+ useEffect(() => {
5825
+ if (suppressed) return;
5826
+ return claim(backdrop);
5827
+ }, [claim, backdrop, suppressed]);
5828
+ }
5790
5829
  const ShopContext = createContext(null);
5791
5830
  const CartCacheContext = createContext(null);
5792
5831
  function DaznShopProvider({ children, ...config }) {
@@ -14713,18 +14752,18 @@ function requireDist() {
14713
14752
  return dist;
14714
14753
  }
14715
14754
  var distExports = requireDist();
14716
- const hero$1 = "_hero_dctyt_1";
14717
- const image$1 = "_image_dctyt_11";
14718
- const foot = "_foot_dctyt_34";
14719
- const text$1 = "_text_dctyt_40";
14720
- const logo$1 = "_logo_dctyt_48";
14721
- const copy$1 = "_copy_dctyt_53";
14722
- const headline = "_headline_dctyt_62";
14723
- const body = "_body_dctyt_70";
14724
- const cta$2 = "_cta_dctyt_79";
14725
- const video = "_video_dctyt_83";
14726
- const desktopOnly = "_desktopOnly_dctyt_87";
14727
- const phoneOnly$1 = "_phoneOnly_dctyt_97";
14755
+ const hero$1 = "_hero_15sq4_1";
14756
+ const image$1 = "_image_15sq4_11";
14757
+ const foot = "_foot_15sq4_34";
14758
+ const text$1 = "_text_15sq4_40";
14759
+ const logo$1 = "_logo_15sq4_48";
14760
+ const copy$1 = "_copy_15sq4_53";
14761
+ const headline = "_headline_15sq4_62";
14762
+ const body = "_body_15sq4_70";
14763
+ const cta$2 = "_cta_15sq4_79";
14764
+ const video = "_video_15sq4_83";
14765
+ const desktopOnly = "_desktopOnly_15sq4_87";
14766
+ const phoneOnly$1 = "_phoneOnly_15sq4_97";
14728
14767
  const hero$2 = {
14729
14768
  hero: hero$1,
14730
14769
  image: image$1,
@@ -14744,6 +14783,7 @@ function VipHero({ hero: hero2, onContinue }) {
14744
14783
  const assetUrl = useAssetUrl();
14745
14784
  const ref = useRef(null);
14746
14785
  useTopOffset(ref, "--vip-hero-top");
14786
+ useSetScreenBackdrop("media");
14747
14787
  const desktopImage = hero2.desktop_image ?? null;
14748
14788
  const desktopVideo = hero2.desktop_video ?? null;
14749
14789
  const wide2 = desktopImage !== null || desktopVideo !== null;
@@ -14821,6 +14861,7 @@ function VipInviteNotice({ title: title2, body: body3 }) {
14821
14861
  const navigate = useNavigate();
14822
14862
  const ref = useRef(null);
14823
14863
  useTopOffset(ref, "--vip-hero-top");
14864
+ useSetScreenBackdrop("media");
14824
14865
  const explore = () => {
14825
14866
  if (navigate) {
14826
14867
  navigate("/");
@@ -16354,7 +16395,9 @@ function CheckoutBar({ title: title2, onClose, closeLabel, className }) {
16354
16395
  })]
16355
16396
  });
16356
16397
  }
16357
- function ShopBar({ onBack, onMenu, title: title2, showCart, floating: floating2 = false, scrolled: scrolled2, backLabel, menuLabel, className }) {
16398
+ function ShopBar({ onBack, onMenu, title: title2, showCart, floating: floatingProp, scrolled: scrolled2, backLabel, menuLabel, className }) {
16399
+ const backdrop = useScreenBackdrop();
16400
+ const floating2 = floatingProp ?? backdrop === "media";
16358
16401
  const t = useT();
16359
16402
  const cartCount = useCartCount();
16360
16403
  const screenTitle = useScreenTitle();
@@ -4684,20 +4684,20 @@
4684
4684
  display: block;
4685
4685
  }
4686
4686
  }
4687
- ._hero_dctyt_1 {
4687
+ ._hero_15sq4_1 {
4688
4688
  position: relative;
4689
4689
  display: flex;
4690
4690
  flex-direction: column;
4691
4691
  justify-content: flex-end;
4692
- min-height: clamp(480px, calc(100svh - var(--vip-hero-top, 0px)), 812px);
4692
+ min-height: max(480px, calc(100svh - var(--vip-hero-top, 0px)));
4693
4693
  overflow: hidden;
4694
4694
  background: var(--color-surface-default);
4695
4695
  }
4696
- ._image_dctyt_11 {
4696
+ ._image_15sq4_11 {
4697
4697
  position: absolute;
4698
4698
  inset: 0;
4699
4699
  }
4700
- ._image_dctyt_11::after {
4700
+ ._image_15sq4_11::after {
4701
4701
  content: "";
4702
4702
  position: absolute;
4703
4703
  inset: 0;
@@ -4709,27 +4709,27 @@
4709
4709
  rgba(8, 14, 18, 0) 382px);
4710
4710
  pointer-events: none;
4711
4711
  }
4712
- ._image_dctyt_11 img {
4712
+ ._image_15sq4_11 img {
4713
4713
  object-fit: cover;
4714
4714
  object-position: top center;
4715
4715
  }
4716
- ._foot_dctyt_34 {
4716
+ ._foot_15sq4_34 {
4717
4717
  position: relative;
4718
4718
  display: flex;
4719
4719
  flex-direction: column;
4720
4720
  }
4721
- ._text_dctyt_40 {
4721
+ ._text_15sq4_40 {
4722
4722
  display: flex;
4723
4723
  flex-direction: column;
4724
4724
  align-items: center;
4725
4725
  gap: var(--space-16);
4726
4726
  padding: 0 var(--space-16) var(--space-8);
4727
4727
  }
4728
- ._text_dctyt_40 ._logo_dctyt_48 {
4728
+ ._text_15sq4_40 ._logo_15sq4_48 {
4729
4729
  width: 48px;
4730
4730
  height: 48px;
4731
4731
  }
4732
- ._copy_dctyt_53 {
4732
+ ._copy_15sq4_53 {
4733
4733
  display: flex;
4734
4734
  flex-direction: column;
4735
4735
  gap: 6px;
@@ -4737,14 +4737,14 @@
4737
4737
  text-align: center;
4738
4738
  overflow-wrap: break-word;
4739
4739
  }
4740
- ._headline_dctyt_62 {
4740
+ ._headline_15sq4_62 {
4741
4741
  margin: 0;
4742
4742
  font-size: 36px;
4743
4743
  line-height: 1.1;
4744
4744
  font-weight: var(--font-weight-bold);
4745
4745
  color: var(--color-text-default);
4746
4746
  }
4747
- ._body_dctyt_70 {
4747
+ ._body_15sq4_70 {
4748
4748
  margin: 0;
4749
4749
  font-size: var(--type-paragraph-size);
4750
4750
  line-height: var(--type-paragraph-line);
@@ -4752,69 +4752,69 @@
4752
4752
  color: var(--color-text-default);
4753
4753
  white-space: pre-line;
4754
4754
  }
4755
- ._cta_dctyt_79 {
4755
+ ._cta_15sq4_79 {
4756
4756
  padding: var(--space-16) var(--space-16) var(--space-24);
4757
4757
  }
4758
- ._video_dctyt_83 {
4758
+ ._video_15sq4_83 {
4759
4759
  object-fit: cover;
4760
4760
  }
4761
- ._desktopOnly_dctyt_87 {
4761
+ ._desktopOnly_15sq4_87 {
4762
4762
  display: none;
4763
4763
  }
4764
4764
  @media (min-width: 1200px) {
4765
- ._hero_dctyt_1 {
4765
+ ._hero_15sq4_1 {
4766
4766
  justify-content: center;
4767
4767
  min-height: max(480px, calc(100svh - var(--vip-hero-top, 0px)));
4768
4768
  }
4769
- ._phoneOnly_dctyt_97 {
4769
+ ._phoneOnly_15sq4_97 {
4770
4770
  display: none;
4771
4771
  }
4772
- ._desktopOnly_dctyt_87 {
4772
+ ._desktopOnly_15sq4_87 {
4773
4773
  display: block;
4774
4774
  }
4775
- ._image_dctyt_11::after {
4775
+ ._image_15sq4_11::after {
4776
4776
  background:
4777
4777
  linear-gradient(
4778
4778
  to right,
4779
4779
  rgba(8, 14, 18, 0.9) 0,
4780
4780
  rgba(8, 14, 18, 0) 53.33%);
4781
4781
  }
4782
- ._image_dctyt_11 img,
4783
- ._video_dctyt_83 {
4782
+ ._image_15sq4_11 img,
4783
+ ._video_15sq4_83 {
4784
4784
  object-position: center;
4785
4785
  }
4786
- ._foot_dctyt_34 {
4786
+ ._foot_15sq4_34 {
4787
4787
  gap: var(--space-16);
4788
4788
  width: 100%;
4789
4789
  max-width: 624px;
4790
4790
  padding-left: 64px;
4791
4791
  }
4792
- ._text_dctyt_40 {
4792
+ ._text_15sq4_40 {
4793
4793
  align-items: flex-start;
4794
4794
  padding: 0;
4795
4795
  }
4796
- ._text_dctyt_40 ._logo_dctyt_48 {
4796
+ ._text_15sq4_40 ._logo_15sq4_48 {
4797
4797
  display: none;
4798
4798
  }
4799
- ._copy_dctyt_53 {
4799
+ ._copy_15sq4_53 {
4800
4800
  gap: var(--space-16);
4801
4801
  text-align: left;
4802
4802
  }
4803
- ._headline_dctyt_62 {
4803
+ ._headline_15sq4_62 {
4804
4804
  font-size: 64px;
4805
4805
  line-height: 0.9375;
4806
4806
  letter-spacing: -0.64px;
4807
4807
  }
4808
- ._body_dctyt_70 {
4808
+ ._body_15sq4_70 {
4809
4809
  max-width: 520px;
4810
4810
  font-size: 20px;
4811
4811
  line-height: 1.4;
4812
4812
  white-space: normal;
4813
4813
  }
4814
- ._cta_dctyt_79 {
4814
+ ._cta_15sq4_79 {
4815
4815
  padding: var(--space-8) 0 0;
4816
4816
  }
4817
- ._cta_dctyt_79 > * {
4817
+ ._cta_15sq4_79 > * {
4818
4818
  width: auto;
4819
4819
  min-width: 173px;
4820
4820
  }
package/dist/styles.css CHANGED
@@ -4684,20 +4684,20 @@
4684
4684
  display: block;
4685
4685
  }
4686
4686
  }
4687
- ._hero_dctyt_1 {
4687
+ ._hero_15sq4_1 {
4688
4688
  position: relative;
4689
4689
  display: flex;
4690
4690
  flex-direction: column;
4691
4691
  justify-content: flex-end;
4692
- min-height: clamp(480px, calc(100svh - var(--vip-hero-top, 0px)), 812px);
4692
+ min-height: max(480px, calc(100svh - var(--vip-hero-top, 0px)));
4693
4693
  overflow: hidden;
4694
4694
  background: var(--color-surface-default);
4695
4695
  }
4696
- ._image_dctyt_11 {
4696
+ ._image_15sq4_11 {
4697
4697
  position: absolute;
4698
4698
  inset: 0;
4699
4699
  }
4700
- ._image_dctyt_11::after {
4700
+ ._image_15sq4_11::after {
4701
4701
  content: "";
4702
4702
  position: absolute;
4703
4703
  inset: 0;
@@ -4709,27 +4709,27 @@
4709
4709
  rgba(8, 14, 18, 0) 382px);
4710
4710
  pointer-events: none;
4711
4711
  }
4712
- ._image_dctyt_11 img {
4712
+ ._image_15sq4_11 img {
4713
4713
  object-fit: cover;
4714
4714
  object-position: top center;
4715
4715
  }
4716
- ._foot_dctyt_34 {
4716
+ ._foot_15sq4_34 {
4717
4717
  position: relative;
4718
4718
  display: flex;
4719
4719
  flex-direction: column;
4720
4720
  }
4721
- ._text_dctyt_40 {
4721
+ ._text_15sq4_40 {
4722
4722
  display: flex;
4723
4723
  flex-direction: column;
4724
4724
  align-items: center;
4725
4725
  gap: var(--space-16);
4726
4726
  padding: 0 var(--space-16) var(--space-8);
4727
4727
  }
4728
- ._text_dctyt_40 ._logo_dctyt_48 {
4728
+ ._text_15sq4_40 ._logo_15sq4_48 {
4729
4729
  width: 48px;
4730
4730
  height: 48px;
4731
4731
  }
4732
- ._copy_dctyt_53 {
4732
+ ._copy_15sq4_53 {
4733
4733
  display: flex;
4734
4734
  flex-direction: column;
4735
4735
  gap: 6px;
@@ -4737,14 +4737,14 @@
4737
4737
  text-align: center;
4738
4738
  overflow-wrap: break-word;
4739
4739
  }
4740
- ._headline_dctyt_62 {
4740
+ ._headline_15sq4_62 {
4741
4741
  margin: 0;
4742
4742
  font-size: 36px;
4743
4743
  line-height: 1.1;
4744
4744
  font-weight: var(--font-weight-bold);
4745
4745
  color: var(--color-text-default);
4746
4746
  }
4747
- ._body_dctyt_70 {
4747
+ ._body_15sq4_70 {
4748
4748
  margin: 0;
4749
4749
  font-size: var(--type-paragraph-size);
4750
4750
  line-height: var(--type-paragraph-line);
@@ -4752,69 +4752,69 @@
4752
4752
  color: var(--color-text-default);
4753
4753
  white-space: pre-line;
4754
4754
  }
4755
- ._cta_dctyt_79 {
4755
+ ._cta_15sq4_79 {
4756
4756
  padding: var(--space-16) var(--space-16) var(--space-24);
4757
4757
  }
4758
- ._video_dctyt_83 {
4758
+ ._video_15sq4_83 {
4759
4759
  object-fit: cover;
4760
4760
  }
4761
- ._desktopOnly_dctyt_87 {
4761
+ ._desktopOnly_15sq4_87 {
4762
4762
  display: none;
4763
4763
  }
4764
4764
  @media (min-width: 1200px) {
4765
- ._hero_dctyt_1 {
4765
+ ._hero_15sq4_1 {
4766
4766
  justify-content: center;
4767
4767
  min-height: max(480px, calc(100svh - var(--vip-hero-top, 0px)));
4768
4768
  }
4769
- ._phoneOnly_dctyt_97 {
4769
+ ._phoneOnly_15sq4_97 {
4770
4770
  display: none;
4771
4771
  }
4772
- ._desktopOnly_dctyt_87 {
4772
+ ._desktopOnly_15sq4_87 {
4773
4773
  display: block;
4774
4774
  }
4775
- ._image_dctyt_11::after {
4775
+ ._image_15sq4_11::after {
4776
4776
  background:
4777
4777
  linear-gradient(
4778
4778
  to right,
4779
4779
  rgba(8, 14, 18, 0.9) 0,
4780
4780
  rgba(8, 14, 18, 0) 53.33%);
4781
4781
  }
4782
- ._image_dctyt_11 img,
4783
- ._video_dctyt_83 {
4782
+ ._image_15sq4_11 img,
4783
+ ._video_15sq4_83 {
4784
4784
  object-position: center;
4785
4785
  }
4786
- ._foot_dctyt_34 {
4786
+ ._foot_15sq4_34 {
4787
4787
  gap: var(--space-16);
4788
4788
  width: 100%;
4789
4789
  max-width: 624px;
4790
4790
  padding-left: 64px;
4791
4791
  }
4792
- ._text_dctyt_40 {
4792
+ ._text_15sq4_40 {
4793
4793
  align-items: flex-start;
4794
4794
  padding: 0;
4795
4795
  }
4796
- ._text_dctyt_40 ._logo_dctyt_48 {
4796
+ ._text_15sq4_40 ._logo_15sq4_48 {
4797
4797
  display: none;
4798
4798
  }
4799
- ._copy_dctyt_53 {
4799
+ ._copy_15sq4_53 {
4800
4800
  gap: var(--space-16);
4801
4801
  text-align: left;
4802
4802
  }
4803
- ._headline_dctyt_62 {
4803
+ ._headline_15sq4_62 {
4804
4804
  font-size: 64px;
4805
4805
  line-height: 0.9375;
4806
4806
  letter-spacing: -0.64px;
4807
4807
  }
4808
- ._body_dctyt_70 {
4808
+ ._body_15sq4_70 {
4809
4809
  max-width: 520px;
4810
4810
  font-size: 20px;
4811
4811
  line-height: 1.4;
4812
4812
  white-space: normal;
4813
4813
  }
4814
- ._cta_dctyt_79 {
4814
+ ._cta_15sq4_79 {
4815
4815
  padding: var(--space-8) 0 0;
4816
4816
  }
4817
- ._cta_dctyt_79 > * {
4817
+ ._cta_15sq4_79 > * {
4818
4818
  width: auto;
4819
4819
  min-width: 173px;
4820
4820
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nok-integration/storefront-react",
3
- "version": "0.29.10",
3
+ "version": "0.29.11",
4
4
  "description": "Mountable React storefront components: catalogue, product detail and cart, mounted directly into a host DOM tree. No iframe.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",