@shopify/hydrogen-react 0.0.0-next-59d697b → 0.0.0-next-4695e32

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.
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const react = require("react");
4
+ const CartProvider = require("./CartProvider.js");
5
+ const BaseButton = require("./BaseButton.js");
6
+ const jsxRuntime = require("react/jsx-runtime");
7
+ function BuyNowButton(props) {
8
+ const {
9
+ cartCreate,
10
+ checkoutUrl
11
+ } = CartProvider.useCart();
12
+ const [loading, setLoading] = react.useState(false);
13
+ const {
14
+ quantity,
15
+ variantId,
16
+ onClick,
17
+ attributes,
18
+ children,
19
+ ...passthroughProps
20
+ } = props;
21
+ react.useEffect(() => {
22
+ if (checkoutUrl) {
23
+ window.location.href = checkoutUrl;
24
+ }
25
+ }, [checkoutUrl]);
26
+ const handleBuyNow = react.useCallback(() => {
27
+ setLoading(true);
28
+ cartCreate({
29
+ lines: [{
30
+ quantity: quantity != null ? quantity : 1,
31
+ merchandiseId: variantId,
32
+ attributes
33
+ }]
34
+ });
35
+ }, [cartCreate, quantity, variantId, attributes]);
36
+ return /* @__PURE__ */ jsxRuntime.jsx(BaseButton.BaseButton, {
37
+ disabled: loading != null ? loading : passthroughProps.disabled,
38
+ ...passthroughProps,
39
+ onClick,
40
+ defaultOnClick: handleBuyNow,
41
+ children
42
+ });
43
+ }
44
+ exports.BuyNowButton = BuyNowButton;
45
+ //# sourceMappingURL=BuyNowButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuyNowButton.js","sources":["../../src/BuyNowButton.tsx"],"sourcesContent":["import {useEffect, useState, useCallback} from 'react';\nimport {useCart} from './CartProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ninterface BuyNowButtonProps {\n /** The item quantity. Defaults to 1. */\n quantity?: number;\n /** The ID of the variant. */\n variantId: string;\n /** An array of cart line attributes that belong to the item being added to the cart. */\n attributes?: {\n key: string;\n value: string;\n }[];\n}\n\n/** The `BuyNowButton` component renders a button that adds an item to the cart and redirects the customer to checkout. */\nexport function BuyNowButton<AsType extends React.ElementType = 'button'>(\n props: BuyNowButtonProps & BaseButtonProps<AsType>\n) {\n const {cartCreate, checkoutUrl} = useCart();\n const [loading, setLoading] = useState<boolean>(false);\n\n const {\n quantity,\n variantId,\n onClick,\n attributes,\n children,\n ...passthroughProps\n } = props;\n\n useEffect(() => {\n if (checkoutUrl) {\n window.location.href = checkoutUrl;\n }\n }, [checkoutUrl]);\n\n const handleBuyNow = useCallback(() => {\n setLoading(true);\n cartCreate({\n lines: [\n {\n quantity: quantity ?? 1,\n merchandiseId: variantId,\n attributes,\n },\n ],\n });\n }, [cartCreate, quantity, variantId, attributes]);\n\n return (\n <BaseButton\n disabled={loading ?? passthroughProps.disabled}\n {...passthroughProps}\n onClick={onClick}\n defaultOnClick={handleBuyNow}\n >\n {children}\n </BaseButton>\n );\n}\n"],"names":["BuyNowButton","props","cartCreate","checkoutUrl","useCart","loading","setLoading","useState","quantity","variantId","onClick","attributes","children","passthroughProps","useEffect","window","location","href","handleBuyNow","useCallback","lines","merchandiseId","BaseButton","disabled"],"mappings":";;;;;;AAiBO,SAASA,aACdC,OACA;AACM,QAAA;AAAA,IAACC;AAAAA,IAAYC;AAAAA,MAAeC,aAAlC,QAAA;AACA,QAAM,CAACC,SAASC,UAAV,IAAwBC,eAAkB,KAAV;AAEhC,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,OACGC;AAAAA,EACDZ,IAAAA;AAEJa,QAAAA,UAAU,MAAM;AACd,QAAIX,aAAa;AACfY,aAAOC,SAASC,OAAOd;AAAAA,IACxB;AAAA,EAAA,GACA,CAACA,WAAD,CAJM;AAMHe,QAAAA,eAAeC,MAAAA,YAAY,MAAM;AACrCb,eAAW,IAAD;AACC,eAAA;AAAA,MACTc,OAAO,CACL;AAAA,QACEZ,UAAUA,8BAAY;AAAA,QACtBa,eAAeZ;AAAAA,QACfE;AAAAA,MAAAA,CAJG;AAAA,IAAA,CADC;AAAA,KAST,CAACT,YAAYM,UAAUC,WAAWE,UAAlC,CAX6B;AAahC,wCACGW,WAAAA,YAAD;AAAA,IACE,UAAUjB,4BAAWQ,iBAAiBU;AAAAA,IADxC,GAEMV;AAAAA,IACJ;AAAA,IACA,gBAAgBK;AAAAA,IAJlB;AAAA,EAAA,CADF;AAUD;;"}
@@ -0,0 +1,45 @@
1
+ import { useState, useEffect, useCallback } from "react";
2
+ import { useCart } from "./CartProvider.mjs";
3
+ import { BaseButton } from "./BaseButton.mjs";
4
+ import { jsx } from "react/jsx-runtime";
5
+ function BuyNowButton(props) {
6
+ const {
7
+ cartCreate,
8
+ checkoutUrl
9
+ } = useCart();
10
+ const [loading, setLoading] = useState(false);
11
+ const {
12
+ quantity,
13
+ variantId,
14
+ onClick,
15
+ attributes,
16
+ children,
17
+ ...passthroughProps
18
+ } = props;
19
+ useEffect(() => {
20
+ if (checkoutUrl) {
21
+ window.location.href = checkoutUrl;
22
+ }
23
+ }, [checkoutUrl]);
24
+ const handleBuyNow = useCallback(() => {
25
+ setLoading(true);
26
+ cartCreate({
27
+ lines: [{
28
+ quantity: quantity != null ? quantity : 1,
29
+ merchandiseId: variantId,
30
+ attributes
31
+ }]
32
+ });
33
+ }, [cartCreate, quantity, variantId, attributes]);
34
+ return /* @__PURE__ */ jsx(BaseButton, {
35
+ disabled: loading != null ? loading : passthroughProps.disabled,
36
+ ...passthroughProps,
37
+ onClick,
38
+ defaultOnClick: handleBuyNow,
39
+ children
40
+ });
41
+ }
42
+ export {
43
+ BuyNowButton
44
+ };
45
+ //# sourceMappingURL=BuyNowButton.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuyNowButton.mjs","sources":["../../src/BuyNowButton.tsx"],"sourcesContent":["import {useEffect, useState, useCallback} from 'react';\nimport {useCart} from './CartProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ninterface BuyNowButtonProps {\n /** The item quantity. Defaults to 1. */\n quantity?: number;\n /** The ID of the variant. */\n variantId: string;\n /** An array of cart line attributes that belong to the item being added to the cart. */\n attributes?: {\n key: string;\n value: string;\n }[];\n}\n\n/** The `BuyNowButton` component renders a button that adds an item to the cart and redirects the customer to checkout. */\nexport function BuyNowButton<AsType extends React.ElementType = 'button'>(\n props: BuyNowButtonProps & BaseButtonProps<AsType>\n) {\n const {cartCreate, checkoutUrl} = useCart();\n const [loading, setLoading] = useState<boolean>(false);\n\n const {\n quantity,\n variantId,\n onClick,\n attributes,\n children,\n ...passthroughProps\n } = props;\n\n useEffect(() => {\n if (checkoutUrl) {\n window.location.href = checkoutUrl;\n }\n }, [checkoutUrl]);\n\n const handleBuyNow = useCallback(() => {\n setLoading(true);\n cartCreate({\n lines: [\n {\n quantity: quantity ?? 1,\n merchandiseId: variantId,\n attributes,\n },\n ],\n });\n }, [cartCreate, quantity, variantId, attributes]);\n\n return (\n <BaseButton\n disabled={loading ?? passthroughProps.disabled}\n {...passthroughProps}\n onClick={onClick}\n defaultOnClick={handleBuyNow}\n >\n {children}\n </BaseButton>\n );\n}\n"],"names":["BuyNowButton","props","cartCreate","checkoutUrl","useCart","loading","setLoading","useState","quantity","variantId","onClick","attributes","children","passthroughProps","useEffect","window","location","href","handleBuyNow","useCallback","lines","merchandiseId","disabled"],"mappings":";;;;AAiBO,SAASA,aACdC,OACA;AACM,QAAA;AAAA,IAACC;AAAAA,IAAYC;AAAAA,MAAeC,QAAlC;AACA,QAAM,CAACC,SAASC,UAAV,IAAwBC,SAAkB,KAAV;AAEhC,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,OACGC;AAAAA,EACDZ,IAAAA;AAEJa,YAAU,MAAM;AACd,QAAIX,aAAa;AACfY,aAAOC,SAASC,OAAOd;AAAAA,IACxB;AAAA,EAAA,GACA,CAACA,WAAD,CAJM;AAMHe,QAAAA,eAAeC,YAAY,MAAM;AACrCb,eAAW,IAAD;AACC,eAAA;AAAA,MACTc,OAAO,CACL;AAAA,QACEZ,UAAUA,8BAAY;AAAA,QACtBa,eAAeZ;AAAAA,QACfE;AAAAA,MAAAA,CAJG;AAAA,IAAA,CADC;AAAA,KAST,CAACT,YAAYM,UAAUC,WAAWE,UAAlC,CAX6B;AAahC,6BACG,YAAD;AAAA,IACE,UAAUN,4BAAWQ,iBAAiBS;AAAAA,IADxC,GAEMT;AAAAA,IACJ;AAAA,IACA,gBAAgBK;AAAAA,IAJlB;AAAA,EAAA,CADF;AAUD;"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const react = require("react");
4
4
  const CartProvider = require("./CartProvider.js");
5
+ const BaseButton = require("./BaseButton.js");
5
6
  const jsxRuntime = require("react/jsx-runtime");
6
7
  function CartCheckoutButton(props) {
7
8
  const [requestedCheckout, setRequestedCheckout] = react.useState(false);
@@ -18,7 +19,7 @@ function CartCheckoutButton(props) {
18
19
  window.location.href = checkoutUrl;
19
20
  }
20
21
  }, [requestedCheckout, status, checkoutUrl]);
21
- return /* @__PURE__ */ jsxRuntime.jsx("button", {
22
+ return /* @__PURE__ */ jsxRuntime.jsx(BaseButton.BaseButton, {
22
23
  ...passthroughProps,
23
24
  disabled: requestedCheckout || passthroughProps.disabled,
24
25
  onClick: () => setRequestedCheckout(true),
@@ -1 +1 @@
1
- {"version":3,"file":"CartCheckoutButton.js","sources":["../../src/CartCheckoutButton.tsx"],"sourcesContent":["import {ReactNode, useEffect, useState} from 'react';\nimport {useCart} from './CartProvider.js';\n\ntype PropsWeControl = 'onClick';\n\n/**\n * The `CartCheckoutButton` component renders a button that redirects to the checkout URL for the cart.\n * It must be a descendent of a `CartProvider` component.\n */\nexport function CartCheckoutButton(\n props: Omit<JSX.IntrinsicElements['button'], PropsWeControl> & {\n /** A `ReactNode` element. */\n children: ReactNode;\n }\n) {\n const [requestedCheckout, setRequestedCheckout] = useState(false);\n const {status, checkoutUrl} = useCart();\n const {children, ...passthroughProps} = props;\n\n useEffect(() => {\n if (requestedCheckout && checkoutUrl && status === 'idle') {\n window.location.href = checkoutUrl;\n }\n }, [requestedCheckout, status, checkoutUrl]);\n\n return (\n <button\n {...passthroughProps}\n disabled={requestedCheckout || passthroughProps.disabled}\n onClick={() => setRequestedCheckout(true)}\n >\n {children}\n </button>\n );\n}\n"],"names":["CartCheckoutButton","props","requestedCheckout","setRequestedCheckout","useState","status","checkoutUrl","useCart","children","passthroughProps","useEffect","window","location","href","disabled"],"mappings":";;;;;AASO,SAASA,mBACdC,OAIA;AACA,QAAM,CAACC,mBAAmBC,oBAApB,IAA4CC,eAAS,KAAD;AACpD,QAAA;AAAA,IAACC;AAAAA,IAAQC;AAAAA,MAAeC,aAA9B,QAAA;AACM,QAAA;AAAA,IAACC;AAAAA,OAAaC;AAAAA,EAAoBR,IAAAA;AAExCS,QAAAA,UAAU,MAAM;AACVR,QAAAA,qBAAqBI,eAAeD,WAAW,QAAQ;AACzDM,aAAOC,SAASC,OAAOP;AAAAA,IACxB;AAAA,EACA,GAAA,CAACJ,mBAAmBG,QAAQC,WAA5B,CAJM;AAMT;OAEQG;AAAAA,IACJ,UAAUP,qBAAqBO,iBAAiBK;AAAAA,IAChD,SAAS,MAAMX,qBAAqB,IAAD;AAAA,IAHrC;AAAA,EAAA,CADF;AASD;;"}
1
+ {"version":3,"file":"CartCheckoutButton.js","sources":["../../src/CartCheckoutButton.tsx"],"sourcesContent":["import {ReactNode, useEffect, useState} from 'react';\nimport {useCart} from './CartProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ntype PropsWeControl = 'onClick';\n\n/**\n * The `CartCheckoutButton` component renders a button that redirects to the checkout URL for the cart.\n * It must be a descendent of a `CartProvider` component.\n */\nexport function CartCheckoutButton(\n props: Omit<BaseButtonProps<'button'>, PropsWeControl> & {\n /** A `ReactNode` element. */\n children: ReactNode;\n }\n) {\n const [requestedCheckout, setRequestedCheckout] = useState(false);\n const {status, checkoutUrl} = useCart();\n const {children, ...passthroughProps} = props;\n\n useEffect(() => {\n if (requestedCheckout && checkoutUrl && status === 'idle') {\n window.location.href = checkoutUrl;\n }\n }, [requestedCheckout, status, checkoutUrl]);\n\n return (\n <BaseButton\n {...passthroughProps}\n disabled={requestedCheckout || passthroughProps.disabled}\n onClick={() => setRequestedCheckout(true)}\n >\n {children}\n </BaseButton>\n );\n}\n"],"names":["CartCheckoutButton","props","requestedCheckout","setRequestedCheckout","useState","status","checkoutUrl","useCart","children","passthroughProps","useEffect","window","location","href","BaseButton","disabled"],"mappings":";;;;;;AAUO,SAASA,mBACdC,OAIA;AACA,QAAM,CAACC,mBAAmBC,oBAApB,IAA4CC,eAAS,KAAD;AACpD,QAAA;AAAA,IAACC;AAAAA,IAAQC;AAAAA,MAAeC,aAA9B,QAAA;AACM,QAAA;AAAA,IAACC;AAAAA,OAAaC;AAAAA,EAAoBR,IAAAA;AAExCS,QAAAA,UAAU,MAAM;AACVR,QAAAA,qBAAqBI,eAAeD,WAAW,QAAQ;AACzDM,aAAOC,SAASC,OAAOP;AAAAA,IACxB;AAAA,EACA,GAAA,CAACJ,mBAAmBG,QAAQC,WAA5B,CAJM;AAMT,wCACGQ,WAAAA,YAAD;AAAA,IAAA,GACML;AAAAA,IACJ,UAAUP,qBAAqBO,iBAAiBM;AAAAA,IAChD,SAAS,MAAMZ,qBAAqB,IAAD;AAAA,IAHrC;AAAA,EAAA,CADF;AASD;;"}
@@ -1,5 +1,6 @@
1
1
  import { useState, useEffect } from "react";
2
2
  import { useCart } from "./CartProvider.mjs";
3
+ import { BaseButton } from "./BaseButton.mjs";
3
4
  import { jsx } from "react/jsx-runtime";
4
5
  function CartCheckoutButton(props) {
5
6
  const [requestedCheckout, setRequestedCheckout] = useState(false);
@@ -16,7 +17,7 @@ function CartCheckoutButton(props) {
16
17
  window.location.href = checkoutUrl;
17
18
  }
18
19
  }, [requestedCheckout, status, checkoutUrl]);
19
- return /* @__PURE__ */ jsx("button", {
20
+ return /* @__PURE__ */ jsx(BaseButton, {
20
21
  ...passthroughProps,
21
22
  disabled: requestedCheckout || passthroughProps.disabled,
22
23
  onClick: () => setRequestedCheckout(true),
@@ -1 +1 @@
1
- {"version":3,"file":"CartCheckoutButton.mjs","sources":["../../src/CartCheckoutButton.tsx"],"sourcesContent":["import {ReactNode, useEffect, useState} from 'react';\nimport {useCart} from './CartProvider.js';\n\ntype PropsWeControl = 'onClick';\n\n/**\n * The `CartCheckoutButton` component renders a button that redirects to the checkout URL for the cart.\n * It must be a descendent of a `CartProvider` component.\n */\nexport function CartCheckoutButton(\n props: Omit<JSX.IntrinsicElements['button'], PropsWeControl> & {\n /** A `ReactNode` element. */\n children: ReactNode;\n }\n) {\n const [requestedCheckout, setRequestedCheckout] = useState(false);\n const {status, checkoutUrl} = useCart();\n const {children, ...passthroughProps} = props;\n\n useEffect(() => {\n if (requestedCheckout && checkoutUrl && status === 'idle') {\n window.location.href = checkoutUrl;\n }\n }, [requestedCheckout, status, checkoutUrl]);\n\n return (\n <button\n {...passthroughProps}\n disabled={requestedCheckout || passthroughProps.disabled}\n onClick={() => setRequestedCheckout(true)}\n >\n {children}\n </button>\n );\n}\n"],"names":["CartCheckoutButton","props","requestedCheckout","setRequestedCheckout","useState","status","checkoutUrl","useCart","children","passthroughProps","useEffect","window","location","href","disabled"],"mappings":";;;AASO,SAASA,mBACdC,OAIA;AACA,QAAM,CAACC,mBAAmBC,oBAApB,IAA4CC,SAAS,KAAD;AACpD,QAAA;AAAA,IAACC;AAAAA,IAAQC;AAAAA,MAAeC,QAA9B;AACM,QAAA;AAAA,IAACC;AAAAA,OAAaC;AAAAA,EAAoBR,IAAAA;AAExCS,YAAU,MAAM;AACVR,QAAAA,qBAAqBI,eAAeD,WAAW,QAAQ;AACzDM,aAAOC,SAASC,OAAOP;AAAAA,IACxB;AAAA,EACA,GAAA,CAACJ,mBAAmBG,QAAQC,WAA5B,CAJM;AAMT;OAEQG;AAAAA,IACJ,UAAUP,qBAAqBO,iBAAiBK;AAAAA,IAChD,SAAS,MAAMX,qBAAqB,IAAD;AAAA,IAHrC;AAAA,EAAA,CADF;AASD;"}
1
+ {"version":3,"file":"CartCheckoutButton.mjs","sources":["../../src/CartCheckoutButton.tsx"],"sourcesContent":["import {ReactNode, useEffect, useState} from 'react';\nimport {useCart} from './CartProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ntype PropsWeControl = 'onClick';\n\n/**\n * The `CartCheckoutButton` component renders a button that redirects to the checkout URL for the cart.\n * It must be a descendent of a `CartProvider` component.\n */\nexport function CartCheckoutButton(\n props: Omit<BaseButtonProps<'button'>, PropsWeControl> & {\n /** A `ReactNode` element. */\n children: ReactNode;\n }\n) {\n const [requestedCheckout, setRequestedCheckout] = useState(false);\n const {status, checkoutUrl} = useCart();\n const {children, ...passthroughProps} = props;\n\n useEffect(() => {\n if (requestedCheckout && checkoutUrl && status === 'idle') {\n window.location.href = checkoutUrl;\n }\n }, [requestedCheckout, status, checkoutUrl]);\n\n return (\n <BaseButton\n {...passthroughProps}\n disabled={requestedCheckout || passthroughProps.disabled}\n onClick={() => setRequestedCheckout(true)}\n >\n {children}\n </BaseButton>\n );\n}\n"],"names":["CartCheckoutButton","props","requestedCheckout","setRequestedCheckout","useState","status","checkoutUrl","useCart","children","passthroughProps","useEffect","window","location","href","disabled"],"mappings":";;;;AAUO,SAASA,mBACdC,OAIA;AACA,QAAM,CAACC,mBAAmBC,oBAApB,IAA4CC,SAAS,KAAD;AACpD,QAAA;AAAA,IAACC;AAAAA,IAAQC;AAAAA,MAAeC,QAA9B;AACM,QAAA;AAAA,IAACC;AAAAA,OAAaC;AAAAA,EAAoBR,IAAAA;AAExCS,YAAU,MAAM;AACVR,QAAAA,qBAAqBI,eAAeD,WAAW,QAAQ;AACzDM,aAAOC,SAASC,OAAOP;AAAAA,IACxB;AAAA,EACA,GAAA,CAACJ,mBAAmBG,QAAQC,WAA5B,CAJM;AAMT,6BACG,YAAD;AAAA,IAAA,GACMG;AAAAA,IACJ,UAAUP,qBAAqBO,iBAAiBK;AAAAA,IAChD,SAAS,MAAMX,qBAAqB,IAAD;AAAA,IAHrC;AAAA,EAAA,CADF;AASD;"}
package/dist/dev/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const AddToCartButton = require("./AddToCartButton.js");
4
+ const BuyNowButton = require("./BuyNowButton.js");
4
5
  const CartCheckoutButton = require("./CartCheckoutButton.js");
5
6
  const CartProvider = require("./CartProvider.js");
6
7
  const ExternalVideo = require("./ExternalVideo.js");
@@ -19,6 +20,7 @@ const storefrontClient = require("./storefront-client.js");
19
20
  const useMoney = require("./useMoney.js");
20
21
  const Video = require("./Video.js");
21
22
  exports.AddToCartButton = AddToCartButton.AddToCartButton;
23
+ exports.BuyNowButton = BuyNowButton.BuyNowButton;
22
24
  exports.CartCheckoutButton = CartCheckoutButton.CartCheckoutButton;
23
25
  exports.CartProvider = CartProvider.CartProvider;
24
26
  exports.useCart = CartProvider.useCart;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,5 @@
1
1
  import { AddToCartButton } from "./AddToCartButton.mjs";
2
+ import { BuyNowButton } from "./BuyNowButton.mjs";
2
3
  import { CartCheckoutButton } from "./CartCheckoutButton.mjs";
3
4
  import { CartProvider, useCart } from "./CartProvider.mjs";
4
5
  import { ExternalVideo } from "./ExternalVideo.mjs";
@@ -18,6 +19,7 @@ import { useMoney } from "./useMoney.mjs";
18
19
  import { Video } from "./Video.mjs";
19
20
  export {
20
21
  AddToCartButton,
22
+ BuyNowButton,
21
23
  CartCheckoutButton,
22
24
  CartProvider,
23
25
  ExternalVideo,
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const react = require("react");
4
+ const CartProvider = require("./CartProvider.js");
5
+ const BaseButton = require("./BaseButton.js");
6
+ const jsxRuntime = require("react/jsx-runtime");
7
+ function BuyNowButton(props) {
8
+ const {
9
+ cartCreate,
10
+ checkoutUrl
11
+ } = CartProvider.useCart();
12
+ const [loading, setLoading] = react.useState(false);
13
+ const {
14
+ quantity,
15
+ variantId,
16
+ onClick,
17
+ attributes,
18
+ children,
19
+ ...passthroughProps
20
+ } = props;
21
+ react.useEffect(() => {
22
+ if (checkoutUrl) {
23
+ window.location.href = checkoutUrl;
24
+ }
25
+ }, [checkoutUrl]);
26
+ const handleBuyNow = react.useCallback(() => {
27
+ setLoading(true);
28
+ cartCreate({
29
+ lines: [{
30
+ quantity: quantity != null ? quantity : 1,
31
+ merchandiseId: variantId,
32
+ attributes
33
+ }]
34
+ });
35
+ }, [cartCreate, quantity, variantId, attributes]);
36
+ return /* @__PURE__ */ jsxRuntime.jsx(BaseButton.BaseButton, {
37
+ disabled: loading != null ? loading : passthroughProps.disabled,
38
+ ...passthroughProps,
39
+ onClick,
40
+ defaultOnClick: handleBuyNow,
41
+ children
42
+ });
43
+ }
44
+ exports.BuyNowButton = BuyNowButton;
45
+ //# sourceMappingURL=BuyNowButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuyNowButton.js","sources":["../../src/BuyNowButton.tsx"],"sourcesContent":["import {useEffect, useState, useCallback} from 'react';\nimport {useCart} from './CartProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ninterface BuyNowButtonProps {\n /** The item quantity. Defaults to 1. */\n quantity?: number;\n /** The ID of the variant. */\n variantId: string;\n /** An array of cart line attributes that belong to the item being added to the cart. */\n attributes?: {\n key: string;\n value: string;\n }[];\n}\n\n/** The `BuyNowButton` component renders a button that adds an item to the cart and redirects the customer to checkout. */\nexport function BuyNowButton<AsType extends React.ElementType = 'button'>(\n props: BuyNowButtonProps & BaseButtonProps<AsType>\n) {\n const {cartCreate, checkoutUrl} = useCart();\n const [loading, setLoading] = useState<boolean>(false);\n\n const {\n quantity,\n variantId,\n onClick,\n attributes,\n children,\n ...passthroughProps\n } = props;\n\n useEffect(() => {\n if (checkoutUrl) {\n window.location.href = checkoutUrl;\n }\n }, [checkoutUrl]);\n\n const handleBuyNow = useCallback(() => {\n setLoading(true);\n cartCreate({\n lines: [\n {\n quantity: quantity ?? 1,\n merchandiseId: variantId,\n attributes,\n },\n ],\n });\n }, [cartCreate, quantity, variantId, attributes]);\n\n return (\n <BaseButton\n disabled={loading ?? passthroughProps.disabled}\n {...passthroughProps}\n onClick={onClick}\n defaultOnClick={handleBuyNow}\n >\n {children}\n </BaseButton>\n );\n}\n"],"names":["BuyNowButton","props","cartCreate","checkoutUrl","useCart","loading","setLoading","useState","quantity","variantId","onClick","attributes","children","passthroughProps","useEffect","window","location","href","handleBuyNow","useCallback","lines","merchandiseId","BaseButton","disabled"],"mappings":";;;;;;AAiBO,SAASA,aACdC,OACA;AACM,QAAA;AAAA,IAACC;AAAAA,IAAYC;AAAAA,MAAeC,aAAlC,QAAA;AACA,QAAM,CAACC,SAASC,UAAV,IAAwBC,eAAkB,KAAV;AAEhC,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,OACGC;AAAAA,EACDZ,IAAAA;AAEJa,QAAAA,UAAU,MAAM;AACd,QAAIX,aAAa;AACfY,aAAOC,SAASC,OAAOd;AAAAA,IACxB;AAAA,EAAA,GACA,CAACA,WAAD,CAJM;AAMHe,QAAAA,eAAeC,MAAAA,YAAY,MAAM;AACrCb,eAAW,IAAD;AACC,eAAA;AAAA,MACTc,OAAO,CACL;AAAA,QACEZ,UAAUA,8BAAY;AAAA,QACtBa,eAAeZ;AAAAA,QACfE;AAAAA,MAAAA,CAJG;AAAA,IAAA,CADC;AAAA,KAST,CAACT,YAAYM,UAAUC,WAAWE,UAAlC,CAX6B;AAahC,wCACGW,WAAAA,YAAD;AAAA,IACE,UAAUjB,4BAAWQ,iBAAiBU;AAAAA,IADxC,GAEMV;AAAAA,IACJ;AAAA,IACA,gBAAgBK;AAAAA,IAJlB;AAAA,EAAA,CADF;AAUD;;"}
@@ -0,0 +1,45 @@
1
+ import { useState, useEffect, useCallback } from "react";
2
+ import { useCart } from "./CartProvider.mjs";
3
+ import { BaseButton } from "./BaseButton.mjs";
4
+ import { jsx } from "react/jsx-runtime";
5
+ function BuyNowButton(props) {
6
+ const {
7
+ cartCreate,
8
+ checkoutUrl
9
+ } = useCart();
10
+ const [loading, setLoading] = useState(false);
11
+ const {
12
+ quantity,
13
+ variantId,
14
+ onClick,
15
+ attributes,
16
+ children,
17
+ ...passthroughProps
18
+ } = props;
19
+ useEffect(() => {
20
+ if (checkoutUrl) {
21
+ window.location.href = checkoutUrl;
22
+ }
23
+ }, [checkoutUrl]);
24
+ const handleBuyNow = useCallback(() => {
25
+ setLoading(true);
26
+ cartCreate({
27
+ lines: [{
28
+ quantity: quantity != null ? quantity : 1,
29
+ merchandiseId: variantId,
30
+ attributes
31
+ }]
32
+ });
33
+ }, [cartCreate, quantity, variantId, attributes]);
34
+ return /* @__PURE__ */ jsx(BaseButton, {
35
+ disabled: loading != null ? loading : passthroughProps.disabled,
36
+ ...passthroughProps,
37
+ onClick,
38
+ defaultOnClick: handleBuyNow,
39
+ children
40
+ });
41
+ }
42
+ export {
43
+ BuyNowButton
44
+ };
45
+ //# sourceMappingURL=BuyNowButton.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuyNowButton.mjs","sources":["../../src/BuyNowButton.tsx"],"sourcesContent":["import {useEffect, useState, useCallback} from 'react';\nimport {useCart} from './CartProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ninterface BuyNowButtonProps {\n /** The item quantity. Defaults to 1. */\n quantity?: number;\n /** The ID of the variant. */\n variantId: string;\n /** An array of cart line attributes that belong to the item being added to the cart. */\n attributes?: {\n key: string;\n value: string;\n }[];\n}\n\n/** The `BuyNowButton` component renders a button that adds an item to the cart and redirects the customer to checkout. */\nexport function BuyNowButton<AsType extends React.ElementType = 'button'>(\n props: BuyNowButtonProps & BaseButtonProps<AsType>\n) {\n const {cartCreate, checkoutUrl} = useCart();\n const [loading, setLoading] = useState<boolean>(false);\n\n const {\n quantity,\n variantId,\n onClick,\n attributes,\n children,\n ...passthroughProps\n } = props;\n\n useEffect(() => {\n if (checkoutUrl) {\n window.location.href = checkoutUrl;\n }\n }, [checkoutUrl]);\n\n const handleBuyNow = useCallback(() => {\n setLoading(true);\n cartCreate({\n lines: [\n {\n quantity: quantity ?? 1,\n merchandiseId: variantId,\n attributes,\n },\n ],\n });\n }, [cartCreate, quantity, variantId, attributes]);\n\n return (\n <BaseButton\n disabled={loading ?? passthroughProps.disabled}\n {...passthroughProps}\n onClick={onClick}\n defaultOnClick={handleBuyNow}\n >\n {children}\n </BaseButton>\n );\n}\n"],"names":["BuyNowButton","props","cartCreate","checkoutUrl","useCart","loading","setLoading","useState","quantity","variantId","onClick","attributes","children","passthroughProps","useEffect","window","location","href","handleBuyNow","useCallback","lines","merchandiseId","disabled"],"mappings":";;;;AAiBO,SAASA,aACdC,OACA;AACM,QAAA;AAAA,IAACC;AAAAA,IAAYC;AAAAA,MAAeC,QAAlC;AACA,QAAM,CAACC,SAASC,UAAV,IAAwBC,SAAkB,KAAV;AAEhC,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,OACGC;AAAAA,EACDZ,IAAAA;AAEJa,YAAU,MAAM;AACd,QAAIX,aAAa;AACfY,aAAOC,SAASC,OAAOd;AAAAA,IACxB;AAAA,EAAA,GACA,CAACA,WAAD,CAJM;AAMHe,QAAAA,eAAeC,YAAY,MAAM;AACrCb,eAAW,IAAD;AACC,eAAA;AAAA,MACTc,OAAO,CACL;AAAA,QACEZ,UAAUA,8BAAY;AAAA,QACtBa,eAAeZ;AAAAA,QACfE;AAAAA,MAAAA,CAJG;AAAA,IAAA,CADC;AAAA,KAST,CAACT,YAAYM,UAAUC,WAAWE,UAAlC,CAX6B;AAahC,6BACG,YAAD;AAAA,IACE,UAAUN,4BAAWQ,iBAAiBS;AAAAA,IADxC,GAEMT;AAAAA,IACJ;AAAA,IACA,gBAAgBK;AAAAA,IAJlB;AAAA,EAAA,CADF;AAUD;"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const react = require("react");
4
4
  const CartProvider = require("./CartProvider.js");
5
+ const BaseButton = require("./BaseButton.js");
5
6
  const jsxRuntime = require("react/jsx-runtime");
6
7
  function CartCheckoutButton(props) {
7
8
  const [requestedCheckout, setRequestedCheckout] = react.useState(false);
@@ -18,7 +19,7 @@ function CartCheckoutButton(props) {
18
19
  window.location.href = checkoutUrl;
19
20
  }
20
21
  }, [requestedCheckout, status, checkoutUrl]);
21
- return /* @__PURE__ */ jsxRuntime.jsx("button", {
22
+ return /* @__PURE__ */ jsxRuntime.jsx(BaseButton.BaseButton, {
22
23
  ...passthroughProps,
23
24
  disabled: requestedCheckout || passthroughProps.disabled,
24
25
  onClick: () => setRequestedCheckout(true),
@@ -1 +1 @@
1
- {"version":3,"file":"CartCheckoutButton.js","sources":["../../src/CartCheckoutButton.tsx"],"sourcesContent":["import {ReactNode, useEffect, useState} from 'react';\nimport {useCart} from './CartProvider.js';\n\ntype PropsWeControl = 'onClick';\n\n/**\n * The `CartCheckoutButton` component renders a button that redirects to the checkout URL for the cart.\n * It must be a descendent of a `CartProvider` component.\n */\nexport function CartCheckoutButton(\n props: Omit<JSX.IntrinsicElements['button'], PropsWeControl> & {\n /** A `ReactNode` element. */\n children: ReactNode;\n }\n) {\n const [requestedCheckout, setRequestedCheckout] = useState(false);\n const {status, checkoutUrl} = useCart();\n const {children, ...passthroughProps} = props;\n\n useEffect(() => {\n if (requestedCheckout && checkoutUrl && status === 'idle') {\n window.location.href = checkoutUrl;\n }\n }, [requestedCheckout, status, checkoutUrl]);\n\n return (\n <button\n {...passthroughProps}\n disabled={requestedCheckout || passthroughProps.disabled}\n onClick={() => setRequestedCheckout(true)}\n >\n {children}\n </button>\n );\n}\n"],"names":["CartCheckoutButton","props","requestedCheckout","setRequestedCheckout","useState","status","checkoutUrl","useCart","children","passthroughProps","useEffect","window","location","href","disabled"],"mappings":";;;;;AASO,SAASA,mBACdC,OAIA;AACA,QAAM,CAACC,mBAAmBC,oBAApB,IAA4CC,eAAS,KAAD;AACpD,QAAA;AAAA,IAACC;AAAAA,IAAQC;AAAAA,MAAeC,aAA9B,QAAA;AACM,QAAA;AAAA,IAACC;AAAAA,OAAaC;AAAAA,EAAoBR,IAAAA;AAExCS,QAAAA,UAAU,MAAM;AACVR,QAAAA,qBAAqBI,eAAeD,WAAW,QAAQ;AACzDM,aAAOC,SAASC,OAAOP;AAAAA,IACxB;AAAA,EACA,GAAA,CAACJ,mBAAmBG,QAAQC,WAA5B,CAJM;AAMT;OAEQG;AAAAA,IACJ,UAAUP,qBAAqBO,iBAAiBK;AAAAA,IAChD,SAAS,MAAMX,qBAAqB,IAAD;AAAA,IAHrC;AAAA,EAAA,CADF;AASD;;"}
1
+ {"version":3,"file":"CartCheckoutButton.js","sources":["../../src/CartCheckoutButton.tsx"],"sourcesContent":["import {ReactNode, useEffect, useState} from 'react';\nimport {useCart} from './CartProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ntype PropsWeControl = 'onClick';\n\n/**\n * The `CartCheckoutButton` component renders a button that redirects to the checkout URL for the cart.\n * It must be a descendent of a `CartProvider` component.\n */\nexport function CartCheckoutButton(\n props: Omit<BaseButtonProps<'button'>, PropsWeControl> & {\n /** A `ReactNode` element. */\n children: ReactNode;\n }\n) {\n const [requestedCheckout, setRequestedCheckout] = useState(false);\n const {status, checkoutUrl} = useCart();\n const {children, ...passthroughProps} = props;\n\n useEffect(() => {\n if (requestedCheckout && checkoutUrl && status === 'idle') {\n window.location.href = checkoutUrl;\n }\n }, [requestedCheckout, status, checkoutUrl]);\n\n return (\n <BaseButton\n {...passthroughProps}\n disabled={requestedCheckout || passthroughProps.disabled}\n onClick={() => setRequestedCheckout(true)}\n >\n {children}\n </BaseButton>\n );\n}\n"],"names":["CartCheckoutButton","props","requestedCheckout","setRequestedCheckout","useState","status","checkoutUrl","useCart","children","passthroughProps","useEffect","window","location","href","BaseButton","disabled"],"mappings":";;;;;;AAUO,SAASA,mBACdC,OAIA;AACA,QAAM,CAACC,mBAAmBC,oBAApB,IAA4CC,eAAS,KAAD;AACpD,QAAA;AAAA,IAACC;AAAAA,IAAQC;AAAAA,MAAeC,aAA9B,QAAA;AACM,QAAA;AAAA,IAACC;AAAAA,OAAaC;AAAAA,EAAoBR,IAAAA;AAExCS,QAAAA,UAAU,MAAM;AACVR,QAAAA,qBAAqBI,eAAeD,WAAW,QAAQ;AACzDM,aAAOC,SAASC,OAAOP;AAAAA,IACxB;AAAA,EACA,GAAA,CAACJ,mBAAmBG,QAAQC,WAA5B,CAJM;AAMT,wCACGQ,WAAAA,YAAD;AAAA,IAAA,GACML;AAAAA,IACJ,UAAUP,qBAAqBO,iBAAiBM;AAAAA,IAChD,SAAS,MAAMZ,qBAAqB,IAAD;AAAA,IAHrC;AAAA,EAAA,CADF;AASD;;"}
@@ -1,5 +1,6 @@
1
1
  import { useState, useEffect } from "react";
2
2
  import { useCart } from "./CartProvider.mjs";
3
+ import { BaseButton } from "./BaseButton.mjs";
3
4
  import { jsx } from "react/jsx-runtime";
4
5
  function CartCheckoutButton(props) {
5
6
  const [requestedCheckout, setRequestedCheckout] = useState(false);
@@ -16,7 +17,7 @@ function CartCheckoutButton(props) {
16
17
  window.location.href = checkoutUrl;
17
18
  }
18
19
  }, [requestedCheckout, status, checkoutUrl]);
19
- return /* @__PURE__ */ jsx("button", {
20
+ return /* @__PURE__ */ jsx(BaseButton, {
20
21
  ...passthroughProps,
21
22
  disabled: requestedCheckout || passthroughProps.disabled,
22
23
  onClick: () => setRequestedCheckout(true),
@@ -1 +1 @@
1
- {"version":3,"file":"CartCheckoutButton.mjs","sources":["../../src/CartCheckoutButton.tsx"],"sourcesContent":["import {ReactNode, useEffect, useState} from 'react';\nimport {useCart} from './CartProvider.js';\n\ntype PropsWeControl = 'onClick';\n\n/**\n * The `CartCheckoutButton` component renders a button that redirects to the checkout URL for the cart.\n * It must be a descendent of a `CartProvider` component.\n */\nexport function CartCheckoutButton(\n props: Omit<JSX.IntrinsicElements['button'], PropsWeControl> & {\n /** A `ReactNode` element. */\n children: ReactNode;\n }\n) {\n const [requestedCheckout, setRequestedCheckout] = useState(false);\n const {status, checkoutUrl} = useCart();\n const {children, ...passthroughProps} = props;\n\n useEffect(() => {\n if (requestedCheckout && checkoutUrl && status === 'idle') {\n window.location.href = checkoutUrl;\n }\n }, [requestedCheckout, status, checkoutUrl]);\n\n return (\n <button\n {...passthroughProps}\n disabled={requestedCheckout || passthroughProps.disabled}\n onClick={() => setRequestedCheckout(true)}\n >\n {children}\n </button>\n );\n}\n"],"names":["CartCheckoutButton","props","requestedCheckout","setRequestedCheckout","useState","status","checkoutUrl","useCart","children","passthroughProps","useEffect","window","location","href","disabled"],"mappings":";;;AASO,SAASA,mBACdC,OAIA;AACA,QAAM,CAACC,mBAAmBC,oBAApB,IAA4CC,SAAS,KAAD;AACpD,QAAA;AAAA,IAACC;AAAAA,IAAQC;AAAAA,MAAeC,QAA9B;AACM,QAAA;AAAA,IAACC;AAAAA,OAAaC;AAAAA,EAAoBR,IAAAA;AAExCS,YAAU,MAAM;AACVR,QAAAA,qBAAqBI,eAAeD,WAAW,QAAQ;AACzDM,aAAOC,SAASC,OAAOP;AAAAA,IACxB;AAAA,EACA,GAAA,CAACJ,mBAAmBG,QAAQC,WAA5B,CAJM;AAMT;OAEQG;AAAAA,IACJ,UAAUP,qBAAqBO,iBAAiBK;AAAAA,IAChD,SAAS,MAAMX,qBAAqB,IAAD;AAAA,IAHrC;AAAA,EAAA,CADF;AASD;"}
1
+ {"version":3,"file":"CartCheckoutButton.mjs","sources":["../../src/CartCheckoutButton.tsx"],"sourcesContent":["import {ReactNode, useEffect, useState} from 'react';\nimport {useCart} from './CartProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ntype PropsWeControl = 'onClick';\n\n/**\n * The `CartCheckoutButton` component renders a button that redirects to the checkout URL for the cart.\n * It must be a descendent of a `CartProvider` component.\n */\nexport function CartCheckoutButton(\n props: Omit<BaseButtonProps<'button'>, PropsWeControl> & {\n /** A `ReactNode` element. */\n children: ReactNode;\n }\n) {\n const [requestedCheckout, setRequestedCheckout] = useState(false);\n const {status, checkoutUrl} = useCart();\n const {children, ...passthroughProps} = props;\n\n useEffect(() => {\n if (requestedCheckout && checkoutUrl && status === 'idle') {\n window.location.href = checkoutUrl;\n }\n }, [requestedCheckout, status, checkoutUrl]);\n\n return (\n <BaseButton\n {...passthroughProps}\n disabled={requestedCheckout || passthroughProps.disabled}\n onClick={() => setRequestedCheckout(true)}\n >\n {children}\n </BaseButton>\n );\n}\n"],"names":["CartCheckoutButton","props","requestedCheckout","setRequestedCheckout","useState","status","checkoutUrl","useCart","children","passthroughProps","useEffect","window","location","href","disabled"],"mappings":";;;;AAUO,SAASA,mBACdC,OAIA;AACA,QAAM,CAACC,mBAAmBC,oBAApB,IAA4CC,SAAS,KAAD;AACpD,QAAA;AAAA,IAACC;AAAAA,IAAQC;AAAAA,MAAeC,QAA9B;AACM,QAAA;AAAA,IAACC;AAAAA,OAAaC;AAAAA,EAAoBR,IAAAA;AAExCS,YAAU,MAAM;AACVR,QAAAA,qBAAqBI,eAAeD,WAAW,QAAQ;AACzDM,aAAOC,SAASC,OAAOP;AAAAA,IACxB;AAAA,EACA,GAAA,CAACJ,mBAAmBG,QAAQC,WAA5B,CAJM;AAMT,6BACG,YAAD;AAAA,IAAA,GACMG;AAAAA,IACJ,UAAUP,qBAAqBO,iBAAiBK;AAAAA,IAChD,SAAS,MAAMX,qBAAqB,IAAD;AAAA,IAHrC;AAAA,EAAA,CADF;AASD;"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const AddToCartButton = require("./AddToCartButton.js");
4
+ const BuyNowButton = require("./BuyNowButton.js");
4
5
  const CartCheckoutButton = require("./CartCheckoutButton.js");
5
6
  const CartProvider = require("./CartProvider.js");
6
7
  const ExternalVideo = require("./ExternalVideo.js");
@@ -19,6 +20,7 @@ const storefrontClient = require("./storefront-client.js");
19
20
  const useMoney = require("./useMoney.js");
20
21
  const Video = require("./Video.js");
21
22
  exports.AddToCartButton = AddToCartButton.AddToCartButton;
23
+ exports.BuyNowButton = BuyNowButton.BuyNowButton;
22
24
  exports.CartCheckoutButton = CartCheckoutButton.CartCheckoutButton;
23
25
  exports.CartProvider = CartProvider.CartProvider;
24
26
  exports.useCart = CartProvider.useCart;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,5 @@
1
1
  import { AddToCartButton } from "./AddToCartButton.mjs";
2
+ import { BuyNowButton } from "./BuyNowButton.mjs";
2
3
  import { CartCheckoutButton } from "./CartCheckoutButton.mjs";
3
4
  import { CartProvider, useCart } from "./CartProvider.mjs";
4
5
  import { ExternalVideo } from "./ExternalVideo.mjs";
@@ -18,6 +19,7 @@ import { useMoney } from "./useMoney.mjs";
18
19
  import { Video } from "./Video.mjs";
19
20
  export {
20
21
  AddToCartButton,
22
+ BuyNowButton,
21
23
  CartCheckoutButton,
22
24
  CartProvider,
23
25
  ExternalVideo,
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,15 @@
1
+ import { BaseButtonProps } from './BaseButton.js';
2
+ interface BuyNowButtonProps {
3
+ /** The item quantity. Defaults to 1. */
4
+ quantity?: number;
5
+ /** The ID of the variant. */
6
+ variantId: string;
7
+ /** An array of cart line attributes that belong to the item being added to the cart. */
8
+ attributes?: {
9
+ key: string;
10
+ value: string;
11
+ }[];
12
+ }
13
+ /** The `BuyNowButton` component renders a button that adds an item to the cart and redirects the customer to checkout. */
14
+ export declare function BuyNowButton<AsType extends React.ElementType = 'button'>(props: BuyNowButtonProps & BaseButtonProps<AsType>): JSX.Element;
15
+ export {};
@@ -1,10 +1,11 @@
1
1
  import { ReactNode } from 'react';
2
+ import { BaseButtonProps } from './BaseButton.js';
2
3
  declare type PropsWeControl = 'onClick';
3
4
  /**
4
5
  * The `CartCheckoutButton` component renders a button that redirects to the checkout URL for the cart.
5
6
  * It must be a descendent of a `CartProvider` component.
6
7
  */
7
- export declare function CartCheckoutButton(props: Omit<JSX.IntrinsicElements['button'], PropsWeControl> & {
8
+ export declare function CartCheckoutButton(props: Omit<BaseButtonProps<'button'>, PropsWeControl> & {
8
9
  /** A `ReactNode` element. */
9
10
  children: ReactNode;
10
11
  }): JSX.Element;
@@ -1,4 +1,5 @@
1
1
  export { AddToCartButton } from './AddToCartButton.js';
2
+ export { BuyNowButton } from './BuyNowButton.js';
2
3
  export type { CartState, CartStatus, Cart, CartWithActions, CartAction, } from './cart-types.js';
3
4
  export { CartCheckoutButton } from './CartCheckoutButton.js';
4
5
  export { CartProvider, useCart } from './CartProvider.js';
@@ -1,4 +1,5 @@
1
1
  export { AddToCartButton } from './AddToCartButton.js';
2
+ export { BuyNowButton } from './BuyNowButton.js';
2
3
  export type { CartState, CartStatus, Cart, CartWithActions, CartAction, } from './cart-types.js';
3
4
  export { CartCheckoutButton } from './CartCheckoutButton.js';
4
5
  export { CartProvider, useCart } from './CartProvider.js';
@@ -766,7 +766,7 @@ query CartQuery($id: ID!, $numCartLines: Int = 250, $country: CountryCode = ZZ)
766
766
  ${cartFragment}
767
767
  `;
768
768
  const SFAPI_VERSION = "2022-10";
769
- var _jsxFileName$e = "/home/runner/work/hydrogen-ui/hydrogen-ui/packages/react/src/ShopifyProvider.tsx";
769
+ var _jsxFileName$f = "/home/runner/work/hydrogen-ui/hydrogen-ui/packages/react/src/ShopifyProvider.tsx";
770
770
  const ShopifyContext = React.createContext({
771
771
  storeDomain: "test.myshopify.com",
772
772
  storefrontToken: "abc123",
@@ -797,7 +797,7 @@ ${cartFragment}
797
797
  value: finalConfig,
798
798
  __self: this,
799
799
  __source: {
800
- fileName: _jsxFileName$e,
800
+ fileName: _jsxFileName$f,
801
801
  lineNumber: 49,
802
802
  columnNumber: 5
803
803
  }
@@ -1312,7 +1312,7 @@ ${cartFragment}
1312
1312
  function isCartFetchResultEvent(event) {
1313
1313
  return event.type === "RESOLVE" || event.type === "ERROR" || event.type === "CART_COMPLETED";
1314
1314
  }
1315
- var _jsxFileName$d = "/home/runner/work/hydrogen-ui/hydrogen-ui/packages/react/src/CartProvider.tsx";
1315
+ var _jsxFileName$e = "/home/runner/work/hydrogen-ui/hydrogen-ui/packages/react/src/CartProvider.tsx";
1316
1316
  const CartContext = React.createContext(null);
1317
1317
  function useCart() {
1318
1318
  const context = React.useContext(CartContext);
@@ -1625,7 +1625,7 @@ ${cartFragment}
1625
1625
  value: cartContextValue,
1626
1626
  __self: this,
1627
1627
  __source: {
1628
- fileName: _jsxFileName$d,
1628
+ fileName: _jsxFileName$e,
1629
1629
  lineNumber: 425,
1630
1630
  columnNumber: 5
1631
1631
  }
@@ -1791,7 +1791,7 @@ fragment ImageFragment on Image {
1791
1791
  height
1792
1792
  }
1793
1793
  `;
1794
- var _jsxFileName$c = "/home/runner/work/hydrogen-ui/hydrogen-ui/packages/react/src/ProductProvider.tsx";
1794
+ var _jsxFileName$d = "/home/runner/work/hydrogen-ui/hydrogen-ui/packages/react/src/ProductProvider.tsx";
1795
1795
  const ProductOptionsContext = React.createContext(null);
1796
1796
  function ProductProvider({
1797
1797
  children,
@@ -1877,7 +1877,7 @@ fragment ImageFragment on Image {
1877
1877
  value,
1878
1878
  __self: this,
1879
1879
  __source: {
1880
- fileName: _jsxFileName$c,
1880
+ fileName: _jsxFileName$d,
1881
1881
  lineNumber: 201,
1882
1882
  columnNumber: 5
1883
1883
  }
@@ -1950,7 +1950,7 @@ fragment ImageFragment on Image {
1950
1950
  }
1951
1951
  return true;
1952
1952
  }
1953
- var _jsxFileName$b = "/home/runner/work/hydrogen-ui/hydrogen-ui/packages/react/src/BaseButton.tsx";
1953
+ var _jsxFileName$c = "/home/runner/work/hydrogen-ui/hydrogen-ui/packages/react/src/BaseButton.tsx";
1954
1954
  function BaseButton(props) {
1955
1955
  const {
1956
1956
  as,
@@ -1975,13 +1975,13 @@ fragment ImageFragment on Image {
1975
1975
  ...passthroughProps,
1976
1976
  __self: this,
1977
1977
  __source: {
1978
- fileName: _jsxFileName$b,
1978
+ fileName: _jsxFileName$c,
1979
1979
  lineNumber: 59,
1980
1980
  columnNumber: 5
1981
1981
  }
1982
1982
  }, children);
1983
1983
  }
1984
- var _jsxFileName$a = "/home/runner/work/hydrogen-ui/hydrogen-ui/packages/react/src/AddToCartButton.tsx";
1984
+ var _jsxFileName$b = "/home/runner/work/hydrogen-ui/hydrogen-ui/packages/react/src/AddToCartButton.tsx";
1985
1985
  function AddToCartButton(props) {
1986
1986
  var _a;
1987
1987
  const [addingItem, setAddingItem] = React.useState(false);
@@ -2025,7 +2025,7 @@ fragment ImageFragment on Image {
2025
2025
  defaultOnClick: handleAddItem,
2026
2026
  __self: this,
2027
2027
  __source: {
2028
- fileName: _jsxFileName$a,
2028
+ fileName: _jsxFileName$b,
2029
2029
  lineNumber: 71,
2030
2030
  columnNumber: 7
2031
2031
  }
@@ -2045,12 +2045,55 @@ fragment ImageFragment on Image {
2045
2045
  "aria-live": "assertive",
2046
2046
  __self: this,
2047
2047
  __source: {
2048
- fileName: _jsxFileName$a,
2048
+ fileName: _jsxFileName$b,
2049
2049
  lineNumber: 80,
2050
2050
  columnNumber: 9
2051
2051
  }
2052
2052
  }, addingItem ? accessibleAddingToCartLabel : null) : null);
2053
2053
  }
2054
+ var _jsxFileName$a = "/home/runner/work/hydrogen-ui/hydrogen-ui/packages/react/src/BuyNowButton.tsx";
2055
+ function BuyNowButton(props) {
2056
+ const {
2057
+ cartCreate,
2058
+ checkoutUrl
2059
+ } = useCart();
2060
+ const [loading, setLoading] = React.useState(false);
2061
+ const {
2062
+ quantity,
2063
+ variantId,
2064
+ onClick,
2065
+ attributes,
2066
+ children,
2067
+ ...passthroughProps
2068
+ } = props;
2069
+ React.useEffect(() => {
2070
+ if (checkoutUrl) {
2071
+ window.location.href = checkoutUrl;
2072
+ }
2073
+ }, [checkoutUrl]);
2074
+ const handleBuyNow = React.useCallback(() => {
2075
+ setLoading(true);
2076
+ cartCreate({
2077
+ lines: [{
2078
+ quantity: quantity != null ? quantity : 1,
2079
+ merchandiseId: variantId,
2080
+ attributes
2081
+ }]
2082
+ });
2083
+ }, [cartCreate, quantity, variantId, attributes]);
2084
+ return /* @__PURE__ */ React__default.default.createElement(BaseButton, {
2085
+ disabled: loading != null ? loading : passthroughProps.disabled,
2086
+ ...passthroughProps,
2087
+ onClick,
2088
+ defaultOnClick: handleBuyNow,
2089
+ __self: this,
2090
+ __source: {
2091
+ fileName: _jsxFileName$a,
2092
+ lineNumber: 53,
2093
+ columnNumber: 5
2094
+ }
2095
+ }, children);
2096
+ }
2054
2097
  var _jsxFileName$9 = "/home/runner/work/hydrogen-ui/hydrogen-ui/packages/react/src/CartCheckoutButton.tsx";
2055
2098
  function CartCheckoutButton(props) {
2056
2099
  const [requestedCheckout, setRequestedCheckout] = React.useState(false);
@@ -2067,14 +2110,14 @@ fragment ImageFragment on Image {
2067
2110
  window.location.href = checkoutUrl;
2068
2111
  }
2069
2112
  }, [requestedCheckout, status, checkoutUrl]);
2070
- return /* @__PURE__ */ React__default.default.createElement("button", {
2113
+ return /* @__PURE__ */ React__default.default.createElement(BaseButton, {
2071
2114
  ...passthroughProps,
2072
2115
  disabled: requestedCheckout || passthroughProps.disabled,
2073
2116
  onClick: () => setRequestedCheckout(true),
2074
2117
  __self: this,
2075
2118
  __source: {
2076
2119
  fileName: _jsxFileName$9,
2077
- lineNumber: 27,
2120
+ lineNumber: 28,
2078
2121
  columnNumber: 5
2079
2122
  }
2080
2123
  }, children);
@@ -3386,6 +3429,7 @@ fragment ImageFragment on Image {
3386
3429
  };
3387
3430
  }
3388
3431
  exports2.AddToCartButton = AddToCartButton;
3432
+ exports2.BuyNowButton = BuyNowButton;
3389
3433
  exports2.CartCheckoutButton = CartCheckoutButton;
3390
3434
  exports2.CartProvider = CartProvider;
3391
3435
  exports2.ExternalVideo = ExternalVideo;