@lockerverse/react 0.2.57 → 0.2.59

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/README.md CHANGED
@@ -41,6 +41,49 @@ export function Checkout() {
41
41
 
42
42
  The original `@lockerverse/react` and `@lockerverse/react/styles.css` payment imports remain supported.
43
43
 
44
+ For a monthly or annual Product, omit quantity. The component shows the
45
+ cadence and configures Stripe Elements for a subscription:
46
+
47
+ ```tsx
48
+ <LockerversePayment
49
+ communitySlug="auburn"
50
+ selection={[{ productSlug: "monthly-supporter" }]}
51
+ widgetSlug="supporter-tiers"
52
+ />
53
+ ```
54
+
55
+ Recurring checkout accepts one fixed Product. It does not accept quantities,
56
+ custom amounts, or multiple Products.
57
+
58
+ ## Donate launcher
59
+
60
+ `LockerverseDonateLauncher` turns an existing payment widget into a native
61
+ React dialog. It reads the widget's products, descriptions, fixed prices, and
62
+ custom-amount rules. Recurring Products open the same payment form in
63
+ subscription mode. It then passes the visitor's selection to the same
64
+ `LockerversePayment` checkout.
65
+
66
+ ```tsx
67
+ import { LockerverseDonateLauncher } from "@lockerverse/react/donate-launcher";
68
+ import "@lockerverse/react/payment.css";
69
+
70
+ export function Donate() {
71
+ return (
72
+ <LockerverseDonateLauncher
73
+ buttonLabel="Donate"
74
+ communitySlug="auburn"
75
+ position="bottom-right"
76
+ widgetSlug="general-donations"
77
+ />
78
+ );
79
+ }
80
+ ```
81
+
82
+ Use `position="inline"` to place the launcher in the normal page layout. Use
83
+ `bottom-left` or `bottom-right` for a fixed launcher. Payment callbacks,
84
+ branding, themes, metadata, recovery properties, and development API options
85
+ are the same as `LockerversePayment`.
86
+
44
87
  ## Signup
45
88
 
46
89
  The signup entry does not import payment or Stripe code.
@@ -95,7 +138,7 @@ Use `theme="dark"` or `theme="light"`. Lockerverse applies the community brandin
95
138
  />
96
139
  ```
97
140
 
98
- The package keeps React, React DOM, and Stripe's React libraries as peer dependencies so it does not ship duplicate framework code. It does not render product selectors or depend on Lockerverse's Next.js application components.
141
+ The package keeps React, React DOM, and Stripe's React libraries as peer dependencies so it does not ship duplicate framework code. `LockerversePayment` leaves product selection to its host. `LockerverseDonateLauncher` provides selection from the existing widget catalog. Neither component depends on Lockerverse's Next.js application components.
99
142
 
100
143
  ## Payment outcomes
101
144
 
@@ -0,0 +1,3 @@
1
+ import { n as LockerverseDonateLauncherProps, t as LockerverseDonateLauncherPosition } from "./types.js";
2
+ import { t as LockerverseDonateLauncher } from "./lockerverse-donate-launcher.js";
3
+ export { LockerverseDonateLauncher, type LockerverseDonateLauncherPosition, type LockerverseDonateLauncherProps };
@@ -0,0 +1 @@
1
+ import{t as e}from"./lockerverse-donate-launcher.js";export{e as LockerverseDonateLauncher};
package/dist/index.d.ts CHANGED
@@ -1,2 +1,4 @@
1
- import { a as LockerversePaymentSelectionItem, c as LockerversePaymentUncertain, i as LockerversePaymentRecovery, l as LockerverseStripeLoader, n as LockerversePaymentBranding, o as LockerversePaymentStyle, r as LockerversePaymentProps, s as LockerversePaymentTheme, t as LockerversePayment } from "./lockerverse-payment.js";
2
- export { LockerversePayment, type LockerversePaymentBranding, type LockerversePaymentProps, type LockerversePaymentRecovery, type LockerversePaymentSelectionItem, type LockerversePaymentStyle, type LockerversePaymentTheme, type LockerversePaymentUncertain, type LockerverseStripeLoader };
1
+ import { a as LockerversePaymentRecovery, c as LockerversePaymentTheme, i as LockerversePaymentProps, l as LockerversePaymentUncertain, n as LockerverseDonateLauncherProps, o as LockerversePaymentSelectionItem, r as LockerversePaymentBranding, s as LockerversePaymentStyle, t as LockerverseDonateLauncherPosition, u as LockerverseStripeLoader } from "./types.js";
2
+ import { t as LockerverseDonateLauncher } from "./lockerverse-donate-launcher.js";
3
+ import { t as LockerversePayment } from "./lockerverse-payment.js";
4
+ export { LockerverseDonateLauncher, type LockerverseDonateLauncherPosition, type LockerverseDonateLauncherProps, LockerversePayment, type LockerversePaymentBranding, type LockerversePaymentProps, type LockerversePaymentRecovery, type LockerversePaymentSelectionItem, type LockerversePaymentStyle, type LockerversePaymentTheme, type LockerversePaymentUncertain, type LockerverseStripeLoader };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{t as e}from"./lockerverse-payment.js";export{e as LockerversePayment};
1
+ import{t as e}from"./lockerverse-payment.js";import{t}from"./lockerverse-donate-launcher.js";export{t as LockerverseDonateLauncher,e as LockerversePayment};
@@ -0,0 +1,6 @@
1
+ import { n as LockerverseDonateLauncherProps } from "./types.js";
2
+ //#region src/lockerverse-donate-launcher.d.ts
3
+ declare function LockerverseDonateLauncher({ buttonLabel, position, ...paymentProps }: LockerverseDonateLauncherProps): import("react").JSX.Element;
4
+ //#endregion
5
+ export { LockerverseDonateLauncher as t };
6
+ //# sourceMappingURL=lockerverse-donate-launcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lockerverse-donate-launcher.d.ts","names":[],"sources":["../src/lockerverse-donate-launcher.tsx"],"mappings":";;iBAkBgB,4BACd,aACA,aACG,gBACF,iDAA8B,IAAA"}
@@ -0,0 +1,2 @@
1
+ import{t as e}from"./lockerverse-payment.js";import{Dialog as t}from"@base-ui/react/dialog";import{createLockerverseCheckoutClient as n}from"@lockerverse/sdk/checkout";import{useEffect as r,useId as i,useState as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";const c=new Intl.NumberFormat(`en-US`,{currency:`USD`,style:`currency`});function l({buttonLabel:l=`Donate`,position:u=`inline`,...d}){let f=i(),[p,m]=a(!1),[h,g]=a(null),[_,v]=a(null),[y,b]=a(null),[x,S]=a(``),[C,w]=a(!1),[T,E]=a(0),{apiBaseUrl:D,communitySlug:O,environment:k,fetch:A,onError:j,requestTimeoutMs:M,sentryDsn:N,widgetSlug:P}=d;r(()=>{if(!(p&&h===null))return;let e=!0;return n(d).load().then(t=>{e&&(g(t),w(!1))}).catch(()=>{e&&w(!0)}),()=>{e=!1}},[D,h,O,k,A,T,j,p,M,N,P]);let F=o(`p`,{role:`status`,children:`Loading donation options...`});return C&&(F=s(`div`,{role:`alert`,children:[o(`p`,{children:`Unable to load donation options.`}),o(`button`,{onClick:()=>{w(!1),E(e=>e+1)},type:`button`,children:`Retry`})]})),h&&(F=o(`div`,{className:`lockerverse-launcher__products`,children:h.products.map(e=>s(`button`,{className:`lockerverse-launcher__product`,onClick:()=>{if(e.pricingMode===`custom`){b(e);return}if(e.paymentOption!==`one-time`){v([{productSlug:e.slug}]);return}v([{productSlug:e.slug,quantity:e.minimumQuantity??1}])},type:`button`,children:[s(`span`,{className:`lockerverse-launcher__product-copy`,children:[o(`span`,{children:e.name}),e.description?o(`small`,{children:e.description}):null]}),e.amountCents===null?null:o(`strong`,{children:c.format(e.amountCents/100)})]},e.id))})),y&&(F=s(`form`,{className:`lockerverse-launcher__amount-form`,onSubmit:e=>{e.preventDefault(),v([{amountCents:Math.round(Number(x)*100),productSlug:y.slug}])},children:[o(`label`,{htmlFor:f,children:`Donation amount`}),o(`input`,{id:f,min:(y.minimumAmountCents??1)/100,name:`amount`,onChange:e=>S(e.target.value),required:!0,step:`0.01`,type:`number`,value:x}),o(`button`,{type:`submit`,children:`Continue`})]})),_&&(F=s(`div`,{className:`lockerverse-launcher__checkout`,children:[o(`button`,{className:`lockerverse-launcher__back`,onClick:()=>v(null),type:`button`,children:`Back`}),o(e,{...d,selection:_})]})),s(t.Root,{onOpenChange:m,open:p,children:[o(t.Trigger,{className:`lockerverse-launcher lockerverse-launcher--${u}`,"data-lockerverse-theme":d.theme??`dark`,style:d.style,children:l}),s(t.Portal,{children:[o(t.Backdrop,{className:`lockerverse-launcher__backdrop`}),o(t.Viewport,{className:`lockerverse-launcher__viewport`,children:s(t.Popup,{className:`lockerverse-launcher__dialog`,"data-lockerverse-theme":d.theme??`dark`,style:d.style,children:[o(t.Title,{className:`lockerverse-launcher__title`,children:h?.widget.title??h?.widget.name??`Donate`}),h?.widget.description?o(t.Description,{className:`lockerverse-launcher__description`,children:h.widget.description}):null,o(t.Close,{"aria-label":`Close donation dialog`,className:`lockerverse-launcher__close`,children:`Close`}),F]})})]})]})}export{l as t};
2
+ //# sourceMappingURL=lockerverse-donate-launcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lockerverse-donate-launcher.js","names":[],"sources":["../src/lockerverse-donate-launcher.tsx"],"sourcesContent":["import { Dialog } from \"@base-ui/react/dialog\";\nimport {\n createLockerverseCheckoutClient,\n type LockerverseCatalog,\n} from \"@lockerverse/sdk/checkout\";\nimport { type ReactNode, useEffect, useId, useState } from \"react\";\n\nimport { LockerversePayment } from \"./lockerverse-payment.tsx\";\nimport type {\n LockerverseDonateLauncherProps,\n LockerversePaymentSelectionItem,\n} from \"./types.ts\";\n\nconst usd = new Intl.NumberFormat(\"en-US\", {\n currency: \"USD\",\n style: \"currency\",\n});\n\nexport function LockerverseDonateLauncher({\n buttonLabel = \"Donate\",\n position = \"inline\",\n ...paymentProps\n}: LockerverseDonateLauncherProps) {\n const amountInputId = useId();\n const [open, setOpen] = useState(false);\n const [catalog, setCatalog] = useState<LockerverseCatalog | null>(null);\n const [selection, setSelection] = useState<\n LockerversePaymentSelectionItem[] | null\n >(null);\n const [customProduct, setCustomProduct] = useState<\n LockerverseCatalog[\"products\"][number] | null\n >(null);\n const [customAmount, setCustomAmount] = useState(\"\");\n const [loadError, setLoadError] = useState(false);\n const [loadRevision, setLoadRevision] = useState(0);\n const {\n apiBaseUrl,\n communitySlug,\n environment,\n fetch,\n onError,\n requestTimeoutMs,\n sentryDsn,\n widgetSlug,\n } = paymentProps;\n\n useEffect(() => {\n if (!(open && catalog === null)) {\n return;\n }\n let active = true;\n const client = createLockerverseCheckoutClient(paymentProps);\n client\n .load()\n .then((nextCatalog) => {\n if (active) {\n setCatalog(nextCatalog);\n setLoadError(false);\n }\n })\n .catch(() => {\n if (active) {\n setLoadError(true);\n }\n });\n return () => {\n active = false;\n };\n }, [\n apiBaseUrl,\n catalog,\n communitySlug,\n environment,\n fetch,\n loadRevision,\n onError,\n open,\n requestTimeoutMs,\n sentryDsn,\n widgetSlug,\n ]);\n\n let content: ReactNode = <p role=\"status\">Loading donation options...</p>;\n if (loadError) {\n content = (\n <div role=\"alert\">\n <p>Unable to load donation options.</p>\n <button\n onClick={() => {\n setLoadError(false);\n setLoadRevision((revision) => revision + 1);\n }}\n type=\"button\"\n >\n Retry\n </button>\n </div>\n );\n }\n if (catalog) {\n content = (\n <div className=\"lockerverse-launcher__products\">\n {catalog.products.map((product) => (\n <button\n className=\"lockerverse-launcher__product\"\n key={product.id}\n onClick={() => {\n if (product.pricingMode === \"custom\") {\n setCustomProduct(product);\n return;\n }\n if (product.paymentOption !== \"one-time\") {\n setSelection([{ productSlug: product.slug }]);\n return;\n }\n setSelection([\n {\n productSlug: product.slug,\n quantity: product.minimumQuantity ?? 1,\n },\n ]);\n }}\n type=\"button\"\n >\n <span className=\"lockerverse-launcher__product-copy\">\n <span>{product.name}</span>\n {product.description ? (\n <small>{product.description}</small>\n ) : null}\n </span>\n {product.amountCents === null ? null : (\n <strong>{usd.format(product.amountCents / 100)}</strong>\n )}\n </button>\n ))}\n </div>\n );\n }\n if (customProduct) {\n content = (\n <form\n className=\"lockerverse-launcher__amount-form\"\n onSubmit={(event) => {\n event.preventDefault();\n setSelection([\n {\n amountCents: Math.round(Number(customAmount) * 100),\n productSlug: customProduct.slug,\n },\n ]);\n }}\n >\n <label htmlFor={amountInputId}>Donation amount</label>\n <input\n id={amountInputId}\n min={(customProduct.minimumAmountCents ?? 1) / 100}\n name=\"amount\"\n onChange={(event) => setCustomAmount(event.target.value)}\n required\n step=\"0.01\"\n type=\"number\"\n value={customAmount}\n />\n <button type=\"submit\">Continue</button>\n </form>\n );\n }\n if (selection) {\n content = (\n <div className=\"lockerverse-launcher__checkout\">\n <button\n className=\"lockerverse-launcher__back\"\n onClick={() => setSelection(null)}\n type=\"button\"\n >\n Back\n </button>\n <LockerversePayment {...paymentProps} selection={selection} />\n </div>\n );\n }\n\n return (\n <Dialog.Root onOpenChange={setOpen} open={open}>\n <Dialog.Trigger\n className={`lockerverse-launcher lockerverse-launcher--${position}`}\n data-lockerverse-theme={paymentProps.theme ?? \"dark\"}\n style={paymentProps.style}\n >\n {buttonLabel}\n </Dialog.Trigger>\n <Dialog.Portal>\n <Dialog.Backdrop className=\"lockerverse-launcher__backdrop\" />\n <Dialog.Viewport className=\"lockerverse-launcher__viewport\">\n <Dialog.Popup\n className=\"lockerverse-launcher__dialog\"\n data-lockerverse-theme={paymentProps.theme ?? \"dark\"}\n style={paymentProps.style}\n >\n <Dialog.Title className=\"lockerverse-launcher__title\">\n {catalog?.widget.title ?? catalog?.widget.name ?? \"Donate\"}\n </Dialog.Title>\n {catalog?.widget.description ? (\n <Dialog.Description className=\"lockerverse-launcher__description\">\n {catalog.widget.description}\n </Dialog.Description>\n ) : null}\n <Dialog.Close\n aria-label=\"Close donation dialog\"\n className=\"lockerverse-launcher__close\"\n >\n Close\n </Dialog.Close>\n {content}\n </Dialog.Popup>\n </Dialog.Viewport>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n"],"mappings":"qRAaA,MAAM,EAAM,IAAI,KAAK,aAAa,QAAS,CACzC,SAAU,MACV,MAAO,UACT,CAAC,EAED,SAAgB,EAA0B,CACxC,cAAc,SACd,WAAW,SACX,GAAG,GAC8B,CACjC,IAAM,EAAgB,EAAM,EACtB,CAAC,EAAM,GAAW,EAAS,EAAK,EAChC,CAAC,EAAS,GAAc,EAAoC,IAAI,EAChE,CAAC,EAAW,GAAgB,EAEhC,IAAI,EACA,CAAC,EAAe,GAAoB,EAExC,IAAI,EACA,CAAC,EAAc,GAAmB,EAAS,EAAE,EAC7C,CAAC,EAAW,GAAgB,EAAS,EAAK,EAC1C,CAAC,EAAc,GAAmB,EAAS,CAAC,EAC5C,CACJ,aACA,gBACA,cACA,QACA,UACA,mBACA,YACA,cACE,EAEJ,MAAgB,CACd,GAAI,EAAE,GAAQ,IAAY,MACxB,OAEF,IAAI,EAAS,GAeb,OAbA,EAD+C,CAC1C,CAAC,CACH,KAAK,CAAC,CACN,KAAM,GAAgB,CACjB,IACF,EAAW,CAAW,EACtB,EAAa,EAAK,EAEtB,CAAC,CAAC,CACD,UAAY,CACP,GACF,EAAa,EAAI,CAErB,CAAC,MACU,CACX,EAAS,EACX,CACF,EAAG,CACD,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACF,CAAC,EAED,IAAI,EAAqB,EAAC,IAAD,CAAG,KAAK,SAAS,SAAA,6BAA8B,CAAA,EAoGxE,OAnGI,IACF,EACE,EAAC,MAAD,CAAK,KAAK,QAAV,SAAA,CACE,EAAC,IAAD,CAAA,SAAG,kCAAmC,CAAA,EACtC,EAAC,SAAD,CACE,YAAe,CACb,EAAa,EAAK,EAClB,EAAiB,GAAa,EAAW,CAAC,CAC5C,EACA,KAAK,SACN,SAAA,OAEO,CAAA,CACL,KAGL,IACF,EACE,EAAC,MAAD,CAAK,UAAU,iCACZ,SAAA,EAAQ,SAAS,IAAK,GACrB,EAAC,SAAD,CACE,UAAU,gCAEV,YAAe,CACb,GAAI,EAAQ,cAAgB,SAAU,CACpC,EAAiB,CAAO,EACxB,MACF,CACA,GAAI,EAAQ,gBAAkB,WAAY,CACxC,EAAa,CAAC,CAAE,YAAa,EAAQ,IAAK,CAAC,CAAC,EAC5C,MACF,CACA,EAAa,CACX,CACE,YAAa,EAAQ,KACrB,SAAU,EAAQ,iBAAmB,CACvC,CACF,CAAC,CACH,EACA,KAAK,SAnBP,SAAA,CAqBE,EAAC,OAAD,CAAM,UAAU,qCAAhB,SAAA,CACE,EAAC,OAAD,CAAA,SAAO,EAAQ,IAAW,CAAA,EACzB,EAAQ,YACP,EAAC,QAAD,CAAA,SAAQ,EAAQ,WAAmB,CAAA,EACjC,IACA,CACL,CAAA,EAAA,EAAQ,cAAgB,KAAO,KAC9B,EAAC,SAAD,CAAA,SAAS,EAAI,OAAO,EAAQ,YAAc,GAAG,CAAU,CAAA,CAEnD,CA5BD,EAAA,EAAQ,EA4BP,CACT,CACE,CAAA,GAGL,IACF,EACE,EAAC,OAAD,CACE,UAAU,oCACV,SAAW,GAAU,CACnB,EAAM,eAAe,EACrB,EAAa,CACX,CACE,YAAa,KAAK,MAAM,OAAO,CAAY,EAAI,GAAG,EAClD,YAAa,EAAc,IAC7B,CACF,CAAC,CACH,EAVF,SAAA,CAYE,EAAC,QAAD,CAAO,QAAS,EAAe,SAAA,iBAAsB,CAAA,EACrD,EAAC,QAAD,CACE,GAAI,EACJ,KAAM,EAAc,oBAAsB,GAAK,IAC/C,KAAK,SACL,SAAW,GAAU,EAAgB,EAAM,OAAO,KAAK,EACvD,SAAA,GACA,KAAK,OACL,KAAK,SACL,MAAO,CACR,CAAA,EACD,EAAC,SAAD,CAAQ,KAAK,SAAS,SAAA,UAAgB,CAAA,CAClC,KAGN,IACF,EACE,EAAC,MAAD,CAAK,UAAU,iCAAf,SAAA,CACE,EAAC,SAAD,CACE,UAAU,6BACV,YAAe,EAAa,IAAI,EAChC,KAAK,SACN,SAAA,MAEO,CAAA,EACR,EAAC,EAAD,CAAoB,GAAI,EAAyB,WAAY,CAAA,CAC1D,KAKP,EAAC,EAAO,KAAR,CAAa,aAAc,EAAe,OAA1C,SAAA,CACE,EAAC,EAAO,QAAR,CACE,UAAW,8CAA8C,IACzD,yBAAwB,EAAa,OAAS,OAC9C,MAAO,EAAa,MAEnB,SAAA,CACa,CAAA,EAChB,EAAC,EAAO,OAAR,CAAA,SAAA,CACE,EAAC,EAAO,SAAR,CAAiB,UAAU,gCAAkC,CAAA,EAC7D,EAAC,EAAO,SAAR,CAAiB,UAAU,iCACzB,SAAA,EAAC,EAAO,MAAR,CACE,UAAU,+BACV,yBAAwB,EAAa,OAAS,OAC9C,MAAO,EAAa,MAHtB,SAAA,CAKE,EAAC,EAAO,MAAR,CAAc,UAAU,8BACrB,SAAA,GAAS,OAAO,OAAS,GAAS,OAAO,MAAQ,QACtC,CAAA,EACb,GAAS,OAAO,YACf,EAAC,EAAO,YAAR,CAAoB,UAAU,oCAC3B,SAAA,EAAQ,OAAO,WACE,CAAA,EAClB,KACJ,EAAC,EAAO,MAAR,CACE,aAAW,wBACX,UAAU,8BACX,SAAA,OAEa,CAAA,EACb,CACW,GACC,CAAA,CACJ,CAAA,CAAA,CACJ,GAEjB"}
@@ -1,59 +1,6 @@
1
- import { loadStripe } from "@stripe/stripe-js";
2
- import { CSSProperties, ComponentPropsWithoutRef } from "react";
3
- import { CreateLockerverseWidgetOptions, LockerversePaymentResult } from "@lockerverse/sdk/checkout";
4
- //#region src/types.d.ts
5
- type LockerversePaymentSelectionItem = {
6
- amountCents: number;
7
- productSlug: string;
8
- } | {
9
- productSlug: string;
10
- quantity: number;
11
- };
12
- type LockerversePaymentTheme = "dark" | "light";
13
- type LockerversePaymentBranding = {
14
- accentColor?: string;
15
- imageUrl?: string | null;
16
- name: string;
17
- };
18
- type LockerversePaymentStyle = CSSProperties & {
19
- "--lockerverse-accent"?: string;
20
- "--lockerverse-accent-contrast"?: string;
21
- "--lockerverse-bg"?: string;
22
- "--lockerverse-border"?: string;
23
- "--lockerverse-control"?: string;
24
- "--lockerverse-danger"?: string;
25
- "--lockerverse-danger-border"?: string;
26
- "--lockerverse-font-family"?: string;
27
- "--lockerverse-muted"?: string;
28
- "--lockerverse-placeholder"?: string;
29
- "--lockerverse-radius"?: string;
30
- "--lockerverse-subtle"?: string;
31
- "--lockerverse-text"?: string;
32
- };
33
- type LockerversePaymentUncertain = {
34
- paymentReference: string;
35
- reason: "action_required" | "pending" | "recovery_failed";
36
- };
37
- type LockerversePaymentRecovery = {
38
- connectedAccountId: string | null;
39
- paymentReference: string;
40
- };
41
- type LockerverseStripeLoader = (...args: Parameters<typeof loadStripe>) => ReturnType<typeof loadStripe>;
42
- type LockerversePaymentProps = CreateLockerverseWidgetOptions & Omit<ComponentPropsWithoutRef<"section">, "children" | "onError"> & {
43
- branding?: LockerversePaymentBranding;
44
- metadata?: Record<string, string>;
45
- onPaymentComplete?: (payment: LockerversePaymentResult) => void;
46
- onPaymentRecoveryChange?: (recovery: LockerversePaymentRecovery | null) => void;
47
- onPaymentUncertain?: (payment: LockerversePaymentUncertain) => void;
48
- resumePayment?: LockerversePaymentRecovery | null;
49
- selection: LockerversePaymentSelectionItem[];
50
- stripeLoader?: LockerverseStripeLoader;
51
- style?: LockerversePaymentStyle;
52
- theme?: LockerversePaymentTheme;
53
- };
54
- //#endregion
1
+ import { i as LockerversePaymentProps } from "./types.js";
55
2
  //#region src/lockerverse-payment.d.ts
56
3
  declare function LockerversePayment({ apiBaseUrl, branding, className, communitySlug, environment, fetch, metadata, onError, onPaymentComplete, onPaymentRecoveryChange, onPaymentUncertain, requestTimeoutMs, resumePayment, selection, sentryDsn, style, stripeLoader, theme, widgetSlug, ...sectionProps }: LockerversePaymentProps): import("react").JSX.Element;
57
4
  //#endregion
58
- export { LockerversePaymentSelectionItem as a, LockerversePaymentUncertain as c, LockerversePaymentRecovery as i, LockerverseStripeLoader as l, LockerversePaymentBranding as n, LockerversePaymentStyle as o, LockerversePaymentProps as r, LockerversePaymentTheme as s, LockerversePayment as t };
5
+ export { LockerversePayment as t };
59
6
  //# sourceMappingURL=lockerverse-payment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lockerverse-payment.d.ts","names":[],"sources":["../src/types.ts","../src/lockerverse-payment.tsx"],"mappings":";;;;KAOY;EACN;EAAqB;;EACrB;EAAqB;;KAEf;KAEA;EACV;EACA;EACA;;KAGU,0BAA0B;EACpC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;KAGU;EACV;EACA;;KAGU;EACV;EACA;;KAGU,8BACP,MAAM,kBAAkB,gBACxB,kBAAkB;KAEX,0BAA0B,iCACpC,KAAK;EACH,WAAW;EACX,WAAW;EACX,qBAAqB,SAAS;EAC9B,2BACE,UAAU;EAEZ,sBAAsB,SAAS;EAC/B,gBAAgB;EAChB,WAAW;EACX,eAAe;EACf,QAAQ;EACR,QAAQ;;;;iBCspDI,qBACd,YACA,UACA,WACA,eACA,aACA,OACA,UACA,SACA,mBACA,yBACA,oBACA,kBACA,eACA,WACA,WACA,OACA,cACA,OACA,eACG,gBACF,0CAAuB,IAAA"}
1
+ {"version":3,"file":"lockerverse-payment.d.ts","names":[],"sources":["../src/lockerverse-payment.tsx"],"mappings":";;iBAuiCgB,qBACd,YACA,UACA,WACA,eACA,aACA,OACA,UACA,SACA,mBACA,yBACA,oBACA,kBACA,eACA,WACA,WACA,OACA,cACA,OACA,eACG,gBACF,0CAAuB,IAAA"}
@@ -1,2 +1,2 @@
1
- import{a as e,c as t,i as n,l as r,o as i,s as a,t as o,u as s}from"./contact-validation.js";import{AddressElement as c,Elements as l,PaymentElement as u,useElements as d,useStripe as f}from"@stripe/react-stripe-js";import{loadStripe as p}from"@stripe/stripe-js";import{createContext as m,useCallback as h,useContext as g,useEffect as _,useId as v,useLayoutEffect as y,useMemo as b,useReducer as x,useRef as S,useState as C}from"react";import{array as w,minLength as ee,minValue as T,nonEmpty as te,number as E,object as ne,pipe as D,regex as re,safeInteger as ie,safeParse as O,strictObject as k,string as A,trim as j,union as ae}from"valibot";import{Fragment as M,jsx as N,jsxs as P}from"react/jsx-runtime";import{Select as F}from"@base-ui/react/select";import{LockerverseSdkError as I,createLockerverseCheckoutClient as L}from"@lockerverse/sdk/checkout";const oe=m(void 0);function R({children:e,container:t}){return N(oe.Provider,{value:t,children:e})}function se(){return N(`svg`,{"aria-hidden":`true`,fill:`none`,viewBox:`0 0 16 16`,children:N(`path`,{d:`m4 6 4 4 4-4`})})}function z(){return N(`svg`,{"aria-hidden":`true`,fill:`none`,viewBox:`0 0 16 16`,children:N(`path`,{d:`m3 8 3 3 7-7`})})}function B({ariaDescribedBy:e,ariaLabel:t,ariaLabelledBy:n,className:r,id:i,invalid:a=!1,name:o,onValueChange:s,options:c,value:l}){let u=g(oe),d=[`lockerverse-payment__select`,r].filter(Boolean).join(` `);return N(`div`,{className:d,children:P(F.Root,{id:i,items:c,name:o,onValueChange:e=>{e!==null&&s(e)},value:l,children:[P(F.Trigger,{"aria-describedby":e,"aria-invalid":a||void 0,"aria-label":t,"aria-labelledby":n,className:`lockerverse-payment__select-trigger`,children:[N(F.Value,{}),N(F.Icon,{"aria-hidden":`true`,className:`lockerverse-payment__select-icon`,children:N(se,{})})]}),N(F.Portal,{container:u,children:N(F.Positioner,{alignItemWithTrigger:!1,className:`lockerverse-payment__select-positioner`,sideOffset:6,children:N(F.Popup,{className:`lockerverse-payment__select-popup`,children:N(F.List,{className:`lockerverse-payment__select-list`,children:c.map(e=>P(F.Item,{className:`lockerverse-payment__select-item`,value:e.value,children:[N(F.ItemText,{children:e.label}),N(F.ItemIndicator,{"aria-hidden":`true`,className:`lockerverse-payment__select-item-indicator`,children:N(z,{})})]},e.value))})})})})]})})}const ce=[`XS`,`S`,`M`,`L`,`XL`,`XXL`,`XXXL`],le=[`15`,`12`,`10`,`5`],V=[...le,`custom`];function ue({enabled:e,error:t,errorId:n,onChange:r,values:i}){if(!e)return null;let a=e=>r({...i,...e}),o=(e,t)=>{let n=V.indexOf(t),r;switch(e.key){case`ArrowDown`:case`ArrowRight`:r=(n+1)%V.length;break;case`ArrowLeft`:case`ArrowUp`:r=(n-1+V.length)%V.length;break;case`Home`:r=0;break;case`End`:r=V.length-1;break;default:return}e.preventDefault();let i=V[r];i&&((e.currentTarget.closest(`[role="radiogroup"]`)?.querySelectorAll(`input[type="radio"]`))?.[r]?.focus(),a({tipPercent:i}))};return P(`div`,{className:`lockerverse-payment__tip-box`,children:[N(`p`,{children:`Add a tip to support the Lockerverse platform`}),P(`div`,{"aria-label":`Tip amount`,role:`radiogroup`,children:[le.map(e=>P(`label`,{className:`lockerverse-payment__tip-choice`,children:[N(`input`,{checked:i.tipPercent===e,name:`tipPercent`,onChange:()=>a({tipPercent:e}),onKeyDown:t=>o(t,e),tabIndex:i.tipPercent===e?0:-1,type:`radio`,value:e}),P(`span`,{children:[e,`%`]})]},e)),P(`label`,{className:`lockerverse-payment__tip-choice`,children:[N(`input`,{checked:i.tipPercent===`custom`,name:`tipPercent`,onChange:()=>a({tipPercent:`custom`}),onKeyDown:e=>o(e,`custom`),tabIndex:i.tipPercent===`custom`?0:-1,type:`radio`,value:`custom`}),N(`span`,{children:`Other`})]})]}),i.tipPercent===`custom`?P(`label`,{children:[N(`span`,{children:`Custom tip`}),P(`span`,{className:`lockerverse-payment__money-input`,children:[N(`span`,{"aria-hidden":`true`,children:`$`}),N(`input`,{"aria-describedby":t?n:void 0,"aria-invalid":t?`true`:void 0,inputMode:`decimal`,name:`tip`,onChange:e=>a({customTip:e.currentTarget.value}),placeholder:`0.00`,value:i.customTip})]}),t?N(`span`,{className:`lockerverse-payment__field-message`,id:n,children:t}):null]}):N(`input`,{name:`tip`,type:`hidden`,value:i.tipPercent})]})}function de({checked:e,children:t,name:n,onChange:r}){return P(`label`,{className:`lockerverse-payment__check-row`,children:[N(`input`,{checked:e,name:n,onChange:e=>r(e.currentTarget.checked),type:`checkbox`}),N(`span`,{children:t})]})}function fe({customFields:e,errors:t,fields:n,idPrefix:r,isPromoApplying:a,onChange:o,onApplyPromo:s,promoError:c,values:l}){let u=e=>o({...l,...e});return P(`div`,{className:`lockerverse-payment__additional-fields`,children:[n.memberId?P(`label`,{children:[N(`span`,{children:`Member ID`}),N(`input`,{name:`memberId`,onChange:e=>u({memberId:e.currentTarget.value}),placeholder:`Optional`,value:l.memberId})]}):null,n.merchSize?P(`div`,{className:`lockerverse-payment__field`,children:[N(`span`,{id:`${r}-merch-size-label`,children:`Size`}),N(B,{ariaLabelledBy:`${r}-merch-size-label`,name:`merchSize`,onValueChange:e=>u({merchSize:e}),options:ce.map(e=>({label:e,value:e})),value:l.merchSize})]}):null,n.promoCode?P(`div`,{className:`lockerverse-payment__field`,children:[N(`span`,{id:`${r}-promo-code-label`,children:`Promo code`}),P(`div`,{className:`lockerverse-payment__promo-control`,children:[N(`input`,{"aria-describedby":c?`${r}-promo-code-error`:void 0,"aria-invalid":c?`true`:void 0,"aria-labelledby":`${r}-promo-code-label`,name:`promoCode`,onChange:e=>u({promoCode:e.currentTarget.value}),placeholder:`Optional`,value:l.promoCode}),N(`button`,{disabled:!l.promoCode.trim()||a,onClick:s,type:`button`,children:a?`Applying…`:`Apply`})]}),c?N(`p`,{className:`lockerverse-payment__field-message`,id:`${r}-promo-code-error`,role:`alert`,children:c}):null]}):null,N(i,{choiceClassName:`lockerverse-payment__check-row`,errorClassName:`lockerverse-payment__field-message`,errors:t,fields:e,idPrefix:r,onChange:e=>u({customFields:e}),values:l.customFields})]})}function pe({amountCents:e,enabled:t,onChange:n,values:r}){return t?P(de,{checked:r.includeServiceFee,name:`includeServiceFee`,onChange:e=>n({...r,includeServiceFee:e}),children:[`Add `,me(e),` to help cover processing fees`]}):null}function me(e){return new Intl.NumberFormat(`en-US`,{currency:`USD`,style:`currency`}).format(e/100)}const he=[`amountCents`,`discountableSubtotalCents`,`discountCents`,`serviceFeeCents`,`subtotalCents`,`tipCents`,`totalCents`],H=[`discountableSubtotalCents`,`discountCents`,`subtotalCents`];function ge(e,t,n){return(n===t.totalCents?H:he).some(n=>e[n]!==t[n])||e.payment.connectedAccountId!==t.payment.connectedAccountId||e.payment.currency!==t.payment.currency||JSON.stringify(e.appliedDiscount)!==JSON.stringify(t.appliedDiscount)||JSON.stringify(e.lineItems)!==JSON.stringify(t.lineItems)}function _e(e){return e.checkoutStatus===`success`?{kind:`success`,payment:e}:e.checkoutStatus===`failed`?{kind:`failed`,payment:e}:{kind:`unresolved`,paymentReference:e.paymentReference,reason:e.checkoutStatus===`action_required`?`action_required`:`pending`}}async function U(e,t,n){if(t.checkoutStatus!==`action_required`)return _e(t);if(!n)return{kind:`unresolved`,paymentReference:t.paymentReference,reason:`action_required`};if(t.clientSecret)try{await n.handleNextAction({clientSecret:t.clientSecret})}catch{}try{return _e(await e.getPaymentStatus(t.paymentReference))}catch{return{kind:`unresolved`,paymentReference:t.paymentReference,reason:`action_required`}}}async function W(e,t,n){let r;try{r=await e.submitPayment(t)}catch(n){if(!(n instanceof I&&n.recoveryRecommended))throw n;try{r=await e.getPaymentStatus(t.checkout.paymentReference)}catch{return{kind:`unresolved`,paymentReference:t.checkout.paymentReference,reason:`recovery_failed`}}}return U(e,r,n)}async function ve(e,t,n){try{return U(e,await e.getPaymentStatus(t),n)}catch{return{kind:`unresolved`,paymentReference:t,reason:`recovery_failed`}}}const ye=D(A(),j(),te()),be=D(E(),ie(),T(1)),xe=D(w(ae([k({amountCents:be,productSlug:ye}),k({productSlug:ye,quantity:be})])),ee(1)),Se=D(A(),j(),re(/^(?:0|[1-9]\d*)(?:\.\d{1,2})?$/,`Enter a valid tip amount.`));function Ce(e){let t=O(Se,e);if(!t.success)return{message:t.issues[0]?.message??`Enter a valid tip amount.`,success:!1};let[n=`0`,r=``]=t.output.split(`.`),i=BigInt(n)*100n+BigInt(r.padEnd(2,`0`));return i>BigInt(2**53-1)?{message:`Enter a valid tip amount.`,success:!1}:{cents:Number(i),success:!0}}function we(e){let t=O(xe,e);return t.success?{success:!0,value:t.output}:{message:`Lockerverse payment configuration is invalid.`,success:!1}}function Te(e){return o(e)}function Ee(t,r){let i=r?{...t,phone:Te(t.phone)}:t,a=ne(r?{email:n,phone:e}:{email:n}),o=O(a,i);if(o.success)return{errors:{},value:o.output};let s={};for(let e of o.issues){let t=e.path?.[0]?.key;(t===`email`||t===`phone`)&&!s[t]&&(s[t]=e.message)}return{errors:s,value:null}}function G(e){throw Error(`Unexpected payment workflow value: ${String(e)}`)}function K(e,t){return t===void 0?{phase:e}:{error:t,phase:e}}function De(e){return e?{phase:`recovering`}:{phase:`editing`}}function Oe(e){return e.phase===`editing`||e.phase===`invalid`?e.error:e.phase===`refreshing_quote`?e.previousError:void 0}function ke(e){return e.phase===`succeeded`?`success`:e.phase===`unresolved`?`unresolved`:e.phase===`submitting`||e.phase===`recovering`?`submitting`:e.phase===`invalid`?`invalid`:Oe(e)?`error`:`idle`}function Ae(e){return e.phase===`submitting`}function je(e,t){if(e.phase===`succeeded`||e.phase===`unresolved`)return e;switch(t.type){case`field_changed`:return e.phase===`invalid`?K(`editing`,e.error):e;case`validation_failed`:return e.phase===`submitting`||e.phase===`recovering`?e:K(`invalid`,Oe(e));case`quote_refresh_started`:{if(e.phase===`submitting`||e.phase===`recovering`)return e;let n=Oe(e);return{...n===void 0?{}:{previousError:n},phase:`refreshing_quote`,validatePromo:t.validatePromo}}case`quote_refresh_succeeded`:return e.phase===`refreshing_quote`?{phase:`editing`}:e;case`quote_refresh_failed`:return e.phase===`refreshing_quote`?K(`editing`,t.error??e.previousError):e;case`submission_started`:return e.phase===`recovering`?e:{phase:`submitting`};case`quote_changed`:return e.phase===`submitting`?{phase:`editing`}:e;case`retryable_failure`:return K(`editing`,t.error);case`recovery_failed`:return e.phase===`recovering`?K(`editing`,t.error):e;case`succeeded`:return e.phase===`submitting`||e.phase===`recovering`?{message:t.message,phase:`succeeded`}:e;case`unresolved`:return e.phase===`submitting`||e.phase===`recovering`?{message:t.message,paymentReference:t.paymentReference,phase:`unresolved`,reason:t.reason}:e;default:return G(t)}}function Me(e,t){switch(t.type){case`loading`:return{configuration:t.configuration,phase:`loading`,revision:e.revision,selectionKey:t.selectionKey};case`ready`:return{catalog:t.catalog,checkoutItems:t.checkoutItems,client:t.client,configuration:t.configuration,phase:`ready`,preparedCheckout:t.preparedCheckout,revision:e.revision+1,selectionKey:t.selectionKey};case`error`:return{configuration:t.configuration,failure:t.failure,phase:`error`,revision:e.revision,selectionKey:t.selectionKey};case`checkout`:return e.phase===`ready`?{...e,preparedCheckout:t.preparedCheckout}:e;case`retry`:return{phase:`idle`,revision:e.revision+1};default:return e}}function q(e,t){let{apiBaseUrl:n,communitySlug:r,environment:i,fetch:a,requestTimeoutMs:o,sentryDsn:s,widgetSlug:c}=e,l={communitySlug:r,widgetSlug:c,...a?{fetch:a}:{},...t?{onError:t}:{},...o===void 0?{}:{requestTimeoutMs:o},...s===void 0?{}:{sentryDsn:s}};if(n===void 0){if(i===`development`)throw TypeError(`Lockerverse development checkout requires an API base URL.`);return{...l,...i===`production`?{environment:i}:{}}}return{...l,apiBaseUrl:n,...i===void 0?{}:{environment:i}}}function J(e,t,n){return e?.configuration===t&&e.selectionKey===n}function Ne({apiBaseUrl:e,communitySlug:t,environment:n,fetch:r,onError:i,paymentState:a,requestTimeoutMs:o,selection:s,sentryDsn:c,widgetSlug:l}){let u=b(()=>({apiBaseUrl:e,communitySlug:t,environment:n,fetch:r,requestTimeoutMs:o,sentryDsn:c,widgetSlug:l}),[e,t,n,r,o,c,l]),d=we(s),f=d.success?JSON.stringify(d.value):`invalid-selection`,p=b(()=>d.success?JSON.parse(f):[],[d.success,f]),[m,h]=x(Me,{phase:`idle`,revision:0}),g=S(void 0),v=S(void 0),y=S(i);return y.current=i,_(()=>{if(!d.success||a===`submitting`||a===`success`||a===`unresolved`||J(v.current,u,f)||J(g.current,u,f))return;let e=!0,t={configuration:u,selectionKey:f};g.current=t,h({configuration:u,selectionKey:f,type:`loading`});async function n(){try{let n=L(q(u,e=>y.current?.(e))),{catalog:r,checkout:i}=await n.bootstrapCheckout({items:p}),a=[...i.items];e&&(g.current=void 0,v.current=t,h({catalog:r,checkoutItems:a,client:n,configuration:u,preparedCheckout:i,selectionKey:f,type:`ready`}))}catch(n){e&&(g.current=void 0,v.current=t,h({configuration:u,failure:n instanceof Error?n.message:`Lockerverse payment could not load.`,selectionKey:f,type:`error`}))}}return n(),()=>{e=!1,J(g.current,u,f)&&(g.current=void 0)}},[u,d.success,a,f,m.revision,p]),{retryCheckout:()=>{g.current=void 0,v.current=void 0,h({type:`retry`})},selectionError:d.success?void 0:d.message,session:m,updateCheckout:e=>h({preparedCheckout:e,type:`checkout`})}}function Y(e){return new Intl.NumberFormat(`en-US`,{currency:`USD`,style:`currency`}).format(e/100)}function Pe(e,t){return t.tipPercent===`custom`?t.customTip.trim()?Ce(t.customTip):{cents:0,success:!0}:{cents:Math.round(e*Number(t.tipPercent)/100),success:!0}}const Fe=[{callingCode:`+1`,label:`🇺🇸 +1`,value:`US`},{callingCode:`+52`,label:`🇲🇽 +52`,value:`MX`},{callingCode:`+380`,label:`🇺🇦 +380`,value:`UA`},{callingCode:`+48`,label:`🇵🇱 +48`,value:`PL`},{callingCode:`+1`,label:`🇨🇦 +1`,value:`CA`},{callingCode:`+49`,label:`🇩🇪 +49`,value:`DE`},{callingCode:`+44`,label:`🇬🇧 +44`,value:`GB`},{callingCode:`+46`,label:`🇸🇪 +46`,value:`SE`},{callingCode:`+358`,label:`🇫🇮 +358`,value:`FI`},{callingCode:`+1`,label:`🇵🇷 +1`,value:`PR`}];function Ie(e,t){return e.trim().startsWith(`+`)?e:`${Fe.find(e=>e.value===t)?.callingCode??`+1`}${e}`}function Le(e,t,n,r){return{...n?{email:n}:{},...e.widget.fields.serviceFee?{includeServiceFee:t.includeServiceFee}:{},...e.widget.fields.promoCode&&t.promoCode.trim()?{promoCode:t.promoCode.trim()}:{},...e.widget.fields.tipping?{tipCents:r}:{}}}function X(e,t){if(!e?.complete)throw Error(`${t} address is required.`);return e.value}function Z(e,t,n,r){if(e.widget.fields.shipping)return t.shippingMatchesBilling?n:X(r.shipping,`Shipping`)}function Re({billingAddress:e,catalog:t,email:n,phone:r,shippingAddress:i}){return{payment_method_data:{billing_details:{address:e.address,email:n,name:e.name,...t.widget.fields.phone?{phone:r}:{}}},...i?{shipping:{address:i.address,name:i.name,phone:t.widget.fields.phone?r:i.phone??null}}:{}}}function ze({catalog:e,confirmationToken:t,email:n,fieldValues:r,metadata:i,phone:o,shippingAddress:s}){return{...t?{confirmationToken:t}:{},customFieldAnswers:a(e.widget.customFields,r.customFields),email:n,...i?{metadata:i}:{},...e.widget.fields.memberId&&r.memberId.trim()?{memberId:r.memberId.trim()}:{},...e.widget.fields.merchSize?{merchSize:r.merchSize}:{},...e.widget.fields.phone?{phone:o}:{},...s?{shipping:{address:{city:s.address.city??``,country:s.address.country,line1:s.address.line1??``,...s.address.line2?{line2:s.address.line2}:{},postal_code:s.address.postal_code??``,state:s.address.state??``},name:s.name}}:{}}}function Q(e){if(!e())throw Error(`Payment component is no longer active.`)}async function Be({addresses:e,catalog:t,checkoutItems:n,client:r,elements:i,email:a,fieldValues:o,isAttemptActive:s,locallyPreviewedTotalCents:c,metadata:l,onPaymentRecoveryChange:u,phone:d,quote:f,stripe:p}){let m=a.trim().toLowerCase(),h=Te(d),g=Pe(f.subtotalCents,o);if(!g.success)throw Error(g.message);let _=Le(t,o,m,g.cents),v=await r.calculateTotal({..._,items:n});if(Q(s),v.totalCents>0&&ge(f,v,c))return{kind:`quote_changed`,quote:v};if(v.totalCents===0){let n;t.widget.fields.shipping&&(n=Z(t,o,X(e.billing,`Billing`),e)),Q(s),$(u,{connectedAccountId:v.payment.connectedAccountId,paymentReference:v.paymentReference});let i=await W(r,{checkout:v,submission:ze({catalog:t,email:m,fieldValues:o,metadata:l,phone:h,...n?{shippingAddress:n}:{}})},p);return Q(s),i.kind===`failed`?{kind:`payment_failed`,message:`Order could not be completed. Review the details and try again.`}:i.kind===`unresolved`?{kind:`payment_unresolved`,paymentReference:i.paymentReference,reason:i.reason}:{kind:`payment`,payment:i.payment,quote:v}}if(!(i&&p))throw Error(`Payment form is still loading.`);await i.update({amount:v.totalCents}),Q(s);let y=await i.submit();if(Q(s),y.error)throw Error(y.error.message);let b=X(e.billing,`Billing`),x=Z(t,o,b,e),S=await p.createConfirmationToken({elements:i,params:Re({billingAddress:b,catalog:t,email:m,phone:h,shippingAddress:x})});if(Q(s),S.error)throw Error(S.error.message);$(u,{connectedAccountId:v.payment.connectedAccountId,paymentReference:v.paymentReference});let C=await W(r,{checkout:v,submission:ze({catalog:t,confirmationToken:S.confirmationToken.id,email:m,fieldValues:o,metadata:l,phone:h,...x?{shippingAddress:x}:{}})},p);return Q(s),C.kind===`failed`?{kind:`payment_failed`,message:`Payment was declined. Check your payment details and try again.`}:C.kind===`unresolved`?{kind:`payment_unresolved`,paymentReference:C.paymentReference,reason:C.reason}:{kind:`payment`,payment:C.payment,quote:v}}function Ve({accentColor:e,catalog:t,checkoutItems:n,client:r,fontFamily:i,metadata:a,onPaymentComplete:o,onPaymentRecoveryChange:s,onPaymentUncertain:c,onQuoteChange:u,quote:d,resumePayment:f,onStateChange:p,stripeLoader:m,theme:h,visualStyle:g}){let _=f?f.connectedAccountId:d.payment.connectedAccountId,v=b(()=>m(t.payment.publishableKey,_?{stripeAccount:_}:void 0).catch(()=>null),[t.payment.publishableKey,_,m]);return N(l,{options:{amount:Math.max(d.totalCents,100),appearance:{rules:{".Input:focus":{borderColor:e,boxShadow:`0 0 0 1px ${e}`,outline:`none`}},theme:h===`light`?`stripe`:`night`,variables:{borderRadius:g?.[`--lockerverse-radius`]??`10px`,colorBackground:g?.[`--lockerverse-control`]??(h===`light`?`#f5f6f7`:`#121212`),colorDanger:g?.[`--lockerverse-danger`]??(h===`light`?`#c52b3e`:`#f08a98`),colorPrimary:e,colorText:g?.[`--lockerverse-text`]??(h===`light`?`#121416`:`#ffffff`),colorTextPlaceholder:g?.[`--lockerverse-placeholder`]??(h===`light`?`#72767d`:`#6b6b6b`),colorTextSecondary:g?.[`--lockerverse-muted`]??(h===`light`?`#62666d`:`#a1a1aa`),focusBoxShadow:`none`,focusOutline:`none`,fontFamily:i,fontSizeBase:`16px`}},currency:d.payment.currency,excludedPaymentMethodTypes:[`us_bank_account`],mode:`payment`,syncAddressCheckbox:`none`},stripe:v,children:N($e,{catalog:t,checkoutItems:n,client:r,metadata:a,onPaymentComplete:o,onPaymentRecoveryChange:s,onPaymentUncertain:c,onQuoteChange:u,onStateChange:p,quote:d,resumePayment:f})},`${t.payment.publishableKey}:${_??`platform`}`)}function He({label:e}){return P(`div`,{className:`lockerverse-payment__stripe-loader`,role:`status`,children:[N(`p`,{children:e}),P(`div`,{"aria-hidden":`true`,children:[N(`span`,{}),N(`span`,{}),N(`span`,{})]})]})}function Ue({onError:e,onReady:t,ready:n}){return P(`div`,{className:`lockerverse-payment__stripe-element`,"data-ready":n,children:[n?null:N(He,{label:`Loading payment form...`}),N(`div`,{className:`lockerverse-payment__stripe-mount`,children:N(u,{onLoadError:({error:t})=>e(t.message??`Payment form failed to load.`),onReady:t,options:{business:{name:`Lockerverse`},fields:{billingDetails:{address:`never`,email:`never`,name:`never`,phone:`never`}},layout:`tabs`,terms:{applePay:`auto`,auBecsDebit:`never`,bancontact:`never`,card:`always`,cashapp:`never`,googlePay:`never`,ideal:`never`,paypal:`auto`,sepaDebit:`never`,sofort:`never`,usBankAccount:`never`},wallets:{applePay:`auto`,googlePay:`never`}}})})]})}function We({label:e,mode:t,onChange:n,onError:r,onReady:i,ready:a}){return P(`div`,{className:`lockerverse-payment__address`,children:[N(`h2`,{children:e}),P(`div`,{className:`lockerverse-payment__stripe-element lockerverse-payment__stripe-element--address`,"data-ready":a,children:[a?null:N(He,{label:`Loading ${e.toLowerCase()}...`}),N(`div`,{className:`lockerverse-payment__stripe-mount`,children:N(c,{onChange:n,onLoadError:({error:t})=>r(t.message??`${e} failed to load.`),onReady:i,options:{autocomplete:{mode:`automatic`},mode:t}})})]})]})}function Ge({message:e}){return e?N(`p`,{className:`lockerverse-payment__field-message`,role:`alert`,children:e}):null}function Ke({catalog:e,displayedTotalCents:t,fieldValues:n,isBillingAddressReady:r,isPaymentReady:i,isShippingAddressReady:a,onAddressChange:o,onFieldValuesChange:s,onStripeLoadError:c,setIsBillingAddressReady:l,setIsPaymentReady:u,setIsShippingAddressReady:d}){let f=t>0;return P(M,{children:[f?N(Ue,{onError:c,onReady:()=>u(!0),ready:i}):null,f||e.widget.fields.shipping?N(We,{label:f?`Billing address`:`Shipping address`,mode:`billing`,onChange:e=>o(`billing`,e),onError:c,onReady:()=>l(!0),ready:r}):null,e.widget.fields.shipping?P(`div`,{className:`lockerverse-payment__shipping`,children:[N(de,{checked:n.shippingMatchesBilling,name:`shippingMatchesBilling`,onChange:e=>{s({...n,shippingMatchesBilling:e}),e?o(`shipping`,null):d(!1)},children:`Shipping is same as billing information`}),n.shippingMatchesBilling?null:N(We,{label:`Shipping address`,mode:`shipping`,onChange:e=>o(`shipping`,e),onError:c,onReady:()=>d(!0),ready:a})]}):null]})}function qe({displayedBaseCents:e,displayedTipCents:t,displayedTotalCents:n,quote:r}){let i=Math.max(0,e-r.subtotalCents+r.discountCents);return P(`section`,{"aria-label":`Payment summary`,className:`lockerverse-payment__payment-summary`,children:[N(`h2`,{children:`Order summary`}),N(`div`,{className:`lockerverse-payment__payment-summary-items`,children:r.lineItems.map(e=>P(`div`,{className:`lockerverse-payment__payment-summary-row`,children:[P(`span`,{children:[e.productName,e.quantity>1?P(M,{children:[` `,P(`small`,{children:[`× `,e.quantity]})]}):null]}),N(`strong`,{children:Y(e.subtotalCents)})]},e.listingId))}),P(`div`,{className:`lockerverse-payment__payment-summary-totals`,children:[i>0?P(`div`,{className:`lockerverse-payment__payment-summary-row lockerverse-payment__payment-summary-detail`,children:[N(`span`,{children:`Service fee`}),N(`strong`,{children:Y(i)})]}):null,r.discountCents>0&&r.appliedDiscount?P(`div`,{className:`lockerverse-payment__payment-summary-row lockerverse-payment__payment-summary-discount`,children:[P(`span`,{children:[r.appliedDiscount.source===`email_list`?`Email discount`:`Promo code discount`,` `,`(`,r.appliedDiscount.percentageOff,`% off)`]}),P(`strong`,{children:[`-`,Y(r.discountCents)]})]}):null,t>0?P(`div`,{className:`lockerverse-payment__payment-summary-row lockerverse-payment__payment-summary-detail lockerverse-payment__payment-summary-tip`,children:[N(`span`,{children:`Tip`}),N(`strong`,{children:Y(t)})]}):null,P(`div`,{className:`lockerverse-payment__payment-summary-row lockerverse-payment__payment-summary-total`,children:[N(`span`,{children:`Total`}),N(`strong`,{children:Y(n)})]})]})]})}function Je({catalog:e,displayedTotalCents:t,fieldValues:n,isBillingAddressReady:r,isPaymentReady:i,isRequiredShippingReady:a,isSubmitting:o,onFieldValuesChange:s,quote:c}){let l=t===0,u=l?!e.widget.fields.shipping||r&&a:i&&r&&a,d=l?`Complete order`:`Pay ${Y(t)}`;return o&&(d=l?`Completing…`:`Processing…`),P(`div`,{className:`lockerverse-payment__actions`,children:[N(pe,{amountCents:c.serviceFeeCents||Math.round(c.subtotalCents*e.pricingPolicy.serviceFeeRateBasisPoints/1e4),enabled:e.widget.fields.serviceFee,onChange:s,values:n}),N(`button`,{"aria-busy":o,"aria-label":l?`Complete order`:`Process payment for ${Y(t)} total`,disabled:o||!u,type:`submit`,children:d})]})}function $(e,t){try{e?.(t)}catch{}}function Ye(e,t){let n=e.elements.namedItem(t);if(n instanceof HTMLElement){n.focus();return}n instanceof RadioNodeList&&Array.from(n).find(e=>e instanceof HTMLElement)?.focus()}function Xe({customFieldErrors:e,emailRef:t,form:n,parsedTipSuccess:r,phoneRef:i,validationErrors:a}){if(a.email){t.current?.focus();return}if(a.phone){i.current?.focus();return}if(!r){n.querySelector(`[name="tip"]`)?.focus();return}let[o]=Object.keys(e);o&&Ye(n,`custom:${o}`)}function Ze({onPaymentComplete:e,onPaymentRecoveryChange:t,onPaymentUncertain:n,onQuoteChange:r,result:i,setDisplayedTotalCents:a,transitionWorkflow:o}){if(i.kind===`quote_changed`){let e=`The total changed to ${Y(i.quote.totalCents)}. Review it and pay again.`;r(i.quote,e),a(i.quote.totalCents),o({type:`quote_changed`});return}if(i.kind===`payment_failed`){$(t,null),o({error:i.message,type:`retryable_failure`});return}if(i.kind===`payment_unresolved`){o({message:`Payment is still processing. Do not submit it again.`,paymentReference:i.paymentReference,reason:i.reason,type:`unresolved`});try{n?.({paymentReference:i.paymentReference,reason:i.reason})}catch{}return}r(i.quote),$(t,null),o({message:i.payment.paymentRequired?`Payment completed successfully.`:`Order confirmed. No payment was required.`,type:`succeeded`});try{e?.(i.payment)}catch{}}function Qe({email:e,emailDiscountPercentOff:t,emailErrorId:n,emailId:r,emailRef:i,errors:a,onEmailBlur:o,onEmailChange:s,onPhoneChange:c,onPhoneCountryChange:l,phone:u,phoneCountry:d,phoneEnabled:f,phoneErrorId:p,phoneId:m,phoneRef:h}){return P(`div`,{className:`lockerverse-payment__contact`,children:[N(`label`,{htmlFor:r,children:`Email`}),N(`input`,{"aria-describedby":a.email?n:void 0,"aria-invalid":a.email?`true`:void 0,autoComplete:`email`,id:r,name:`email`,onBlur:o,onChange:e=>s(e.currentTarget.value),placeholder:`name@example.com`,ref:i,type:`email`,value:e}),a.email?N(`p`,{className:`lockerverse-payment__field-message`,id:n,children:a.email}):null,t===void 0?null:P(`p`,{className:`lockerverse-payment__discount-message`,role:`status`,children:[`Your email qualifies for `,t,`% off.`]}),f?P(M,{children:[N(`label`,{htmlFor:m,children:`Phone`}),P(`div`,{className:`lockerverse-payment__phone-control`,children:[N(B,{ariaLabel:`Phone number country`,className:`lockerverse-payment__select--phone-country`,name:`phoneCountry`,onValueChange:l,options:Fe,value:d}),N(`input`,{"aria-describedby":a.phone?p:void 0,"aria-invalid":a.phone?`true`:void 0,autoComplete:`tel`,id:m,inputMode:`tel`,name:`phone`,onChange:e=>c(e.currentTarget.value),placeholder:`(201) 555-0123`,ref:h,type:`tel`,value:u})]}),a.phone?N(`p`,{className:`lockerverse-payment__field-message`,id:p,children:a.phone}):null]}):null]})}function $e({catalog:e,checkoutItems:n,client:i,metadata:a,onPaymentComplete:o,onPaymentRecoveryChange:s,onPaymentUncertain:c,onQuoteChange:l,onStateChange:u,quote:p,resumePayment:m}){let[g,y]=C(``),[b,w]=C(``),[ee,T]=C(`US`),[te,E]=C({}),[ne,D]=C({}),[re,ie]=C(),[O,k]=C(),[A,j]=x(je,m,De),[ae,M]=C(!1),[F,I]=C(!1),[L,oe]=C(!1),[R,se]=C({customFields:t(e.widget.customFields),customTip:``,includeServiceFee:e.widget.fields.serviceFee,memberId:``,merchSize:`M`,promoCode:``,shippingMatchesBilling:!0,tipPercent:`10`}),[z,B]=C(p.totalCents),ce=S({billing:null,shipping:null}),le=S(null),V=S(null),de=S(null),pe=S(!1),me=S(0),he=S(p.totalCents>0),H=S(0),ge=S(A);ge.current=A;let _e=d(),U=f(),W=`lockerverse-${v()}`,ye=`${W}-email`,be=`${ye}-error`,xe=`${W}-phone`,Se=`${xe}-error`,Ce=`${W}-tip-error`,we=Oe(A),Te=A.phase===`succeeded`||A.phase===`unresolved`?A.message:void 0,G=Ae(A),K=A.phase===`refreshing_quote`,Me=A.phase===`recovering`,q=e.widget.fields.tipping?Pe(p.subtotalCents,R):{cents:0,success:!0},J=q.success?q.cents:null,Ne=J??0,Y=z-Ne,Fe=!e.widget.fields.shipping||R.shippingMatchesBilling||L,X=h((e,t=!1)=>{let n=ge.current,r=je(n,e);r!==n&&(ge.current=r,j(e),t&&u(ke(r)))},[u]),Z=h(e=>{X(e,!0)},[X]),Re=h(()=>{let e=H.current+1;return H.current=e,()=>H.current===e},[]);_(()=>()=>{H.current+=1},[]),_(()=>{if(J===null)return;let t=e.widget.fields.serviceFee&&R.includeServiceFee?p.serviceFeeCents||Math.round(p.subtotalCents*e.pricingPolicy.serviceFeeRateBasisPoints/1e4):0,n=p.totalCents-p.serviceFeeCents-p.tipCents+t+J;B(n),n>0&&_e?.update({amount:n})},[e.widget.fields.serviceFee,e.widget.fields.tipping,_e,R.includeServiceFee,R.tipPercent,R.customTip,J,p.serviceFeeCents,p.tipCents,p.totalCents]),_(()=>{G&&de.current?.focus()},[G]),_(()=>{let e=z>0;e&&!he.current&&(M(!1),I(!1)),he.current=e},[z]),_(()=>{if(!(m&&U)||pe.current)return;pe.current=!0;let e=Re();return u(ke(ge.current)),ve(i,m.paymentReference,U).then(t=>{if(e()){if(t.kind===`failed`){$(s,null),Z({error:`The previous payment failed. Check your details and try again.`,type:`recovery_failed`});return}if(t.kind===`unresolved`){Z({message:`Payment is still processing. Do not submit it again.`,paymentReference:t.paymentReference,reason:t.reason,type:`unresolved`});try{c?.({paymentReference:t.paymentReference,reason:t.reason})}catch{}return}$(s,null),Z({message:t.payment.paymentRequired?`Payment completed successfully.`:`Order confirmed. No payment was required.`,type:`succeeded`});try{o?.(t.payment)}catch{}}}),()=>{e()&&(H.current+=1),pe.current=!1}},[i,o,s,c,u,m,U,Re,Z]);function ze(e){X({type:`field_changed`}),E(t=>{let n={...t};return delete n[e],n})}function Q(e){e.promoCode!==R.promoCode&&k(void 0),se(e),D({}),ie(void 0),X({type:`field_changed`})}function Ve(e){Z({error:e,type:`retryable_failure`})}function He(e){k(e.appliedDiscount?.source===`promo_code`?void 0:`This promo code is invalid or cannot be applied.`)}function Ue(e,t){if(t){k(`This promo code is invalid or cannot be applied.`);return}return e instanceof Error?e.message:`The order total could not be updated.`}async function We(t=!1,r=!1){let a=Ee({email:g.trim().toLowerCase(),phone:``},!1);if(!(q.success&&(a.value||t)))return;me.current+=1;let o=me.current;X({type:`quote_refresh_started`,validatePromo:r});try{let t=await i.calculateTotal({...Le(e,R,a.value?.email??``,q.cents),items:n});if(o!==me.current)return;X({type:`quote_refresh_succeeded`}),B(t.totalCents),l(t),r&&He(t)}catch(e){if(o===me.current){let t=Ue(e,r);X(t===void 0?{type:`quote_refresh_failed`}:{error:t,type:`quote_refresh_failed`})}}}async function Ye(){k(void 0),await We(!0,!0)}async function $e(t){t.preventDefault();let u=Ee({email:g,phone:Ie(b,ee)},e.widget.fields.phone),d=r(e.widget.customFields,R.customFields);if(!(u.value&&q.success)||Object.keys(d).length>0){E(u.errors),D(d),ie(q.success?void 0:q.message),Z({type:`validation_failed`});let e=t.currentTarget;queueMicrotask(()=>{Xe({customFieldErrors:d,emailRef:le,form:e,parsedTipSuccess:q.success,phoneRef:V,validationErrors:u.errors})});return}E({}),D({}),Z({type:`submission_started`});let f=Re();try{let t=await Be({addresses:ce.current,catalog:e,checkoutItems:n,client:i,elements:_e,email:g,fieldValues:R,isAttemptActive:f,locallyPreviewedTotalCents:z,metadata:a,onPaymentRecoveryChange:s,phone:Ie(b,ee),quote:p,stripe:U});if(!f())return;Ze({onPaymentComplete:o,onPaymentRecoveryChange:s,onPaymentUncertain:c,onQuoteChange:l,result:t,setDisplayedTotalCents:B,transitionWorkflow:Z})}catch(e){if(!f())return;$(s,null),Z({error:e instanceof Error?e.message:`Payment could not be completed.`,type:`retryable_failure`})}}return Te?N(`p`,{className:`lockerverse-payment__payment-status`,ref:de,role:`status`,tabIndex:-1,children:Te}):Me?N(`p`,{className:`lockerverse-payment__payment-status`,role:`status`,children:`Recovering payment…`}):P(`form`,{"aria-busy":G,className:`lockerverse-payment__form`,noValidate:!0,onSubmit:$e,children:[N(`div`,{"data-lockerverse-input-region":``,inert:G?!0:void 0,children:P(`fieldset`,{className:`lockerverse-payment__input-fieldset`,disabled:G,children:[N(qe,{displayedBaseCents:Y,displayedTipCents:Ne,displayedTotalCents:z,quote:p}),N(ue,{enabled:e.widget.fields.tipping,error:re,errorId:Ce,onChange:Q,values:R}),N(Qe,{email:g,emailDiscountPercentOff:p.appliedDiscount?.source===`email_list`?p.appliedDiscount.percentageOff:void 0,emailErrorId:be,emailId:ye,emailRef:le,errors:te,onEmailBlur:()=>We(),onEmailChange:e=>{y(e),ze(`email`)},onPhoneChange:e=>{w(e),ze(`phone`)},onPhoneCountryChange:e=>{T(e),X({type:`field_changed`})},phone:b,phoneCountry:ee,phoneEnabled:e.widget.fields.phone,phoneErrorId:Se,phoneId:xe,phoneRef:V}),N(Ke,{catalog:e,displayedTotalCents:z,fieldValues:R,isBillingAddressReady:F,isPaymentReady:ae,isShippingAddressReady:L,onAddressChange:(e,t)=>{ce.current[e]=t},onFieldValuesChange:Q,onStripeLoadError:Ve,setIsBillingAddressReady:I,setIsPaymentReady:M,setIsShippingAddressReady:oe}),N(fe,{customFields:e.widget.customFields,errors:ne,fields:e.widget.fields,idPrefix:W,isPromoApplying:K,onApplyPromo:Ye,onChange:Q,promoError:O,values:R}),N(Je,{catalog:e,displayedTotalCents:z,fieldValues:R,isBillingAddressReady:F,isPaymentReady:ae,isRequiredShippingReady:Fe,isSubmitting:G,onFieldValuesChange:Q,quote:p})]})}),G?N(`p`,{className:`lockerverse-payment__sr-only`,ref:de,role:`status`,tabIndex:-1,children:z===0?`Completing order…`:`Processing payment…`}):null,N(Ge,{message:we})]})}function et(){return P(`div`,{className:`lockerverse-payment__skeleton-loader-block`,children:[N(`span`,{className:`lockerverse-payment__skeleton-loader-label`}),P(`div`,{className:`lockerverse-payment__skeleton-loader-content`,children:[N(`span`,{className:`lockerverse-payment__skeleton-loader-full`}),P(`div`,{className:`lockerverse-payment__skeleton-loader-grid`,children:[N(`span`,{className:`lockerverse-payment__skeleton-loader-half`}),N(`span`,{className:`lockerverse-payment__skeleton-loader-half`})]})]})]})}function tt(){return P(`div`,{className:`lockerverse-payment__loading`,children:[N(`span`,{"aria-live":`polite`,className:`lockerverse-payment__sr-only`,role:`status`,children:`Loading payment…`}),P(`div`,{"aria-hidden":`true`,className:`lockerverse-payment__skeleton`,children:[P(`div`,{className:`lockerverse-payment__skeleton-branding`,children:[N(`span`,{className:`lockerverse-payment__skeleton-avatar`}),N(`span`,{className:`lockerverse-payment__skeleton-community`})]}),P(`div`,{className:`lockerverse-payment__skeleton-contact`,children:[P(`div`,{className:`lockerverse-payment__skeleton-field`,children:[N(`span`,{className:`lockerverse-payment__skeleton-label`}),N(`span`,{className:`lockerverse-payment__skeleton-input`})]}),P(`div`,{className:`lockerverse-payment__skeleton-field`,children:[N(`span`,{className:`lockerverse-payment__skeleton-label`}),N(`span`,{className:`lockerverse-payment__skeleton-input`})]})]}),N(et,{}),N(et,{}),P(`div`,{className:`lockerverse-payment__skeleton-actions`,children:[N(`span`,{className:`lockerverse-payment__skeleton-check-line`}),N(`span`,{className:`lockerverse-payment__skeleton-button`})]})]})]})}function nt({apiBaseUrl:e,branding:t,className:n,communitySlug:r,environment:i,fetch:a,metadata:o,onError:c,onPaymentComplete:l,onPaymentRecoveryChange:u,onPaymentUncertain:d,requestTimeoutMs:f,resumePayment:m,selection:g,sentryDsn:v,style:b,stripeLoader:x=p,theme:w=`dark`,widgetSlug:ee,...T}){let te=S(m).current,E=S(null),[ne,D]=C(),[re,ie]=C(`idle`),O=S(void 0),{retryCheckout:k,selectionError:A,session:j,updateCheckout:ae}=Ne({apiBaseUrl:e,communitySlug:r,environment:i,fetch:a,onError:c,paymentState:re,requestTimeoutMs:f,selection:g,sentryDsn:v,widgetSlug:ee}),M=j.phase===`ready`?j.revision:void 0,F=h(e=>{M!==void 0&&(O.current=M),ie(e)},[M]);_(()=>{j.phase===`loading`&&D(void 0)},[j.phase]),y(()=>{j.phase===`ready`&&O.current!==j.revision&&ie(e=>e===`success`||e===`unresolved`?e:`idle`)},[j.phase,j.revision]);let I=[`lockerverse-payment`,n].filter(Boolean).join(` `),L=t??(j.phase===`ready`?j.catalog.community:null),oe=b?.[`--lockerverse-accent`]??L?.accentColor??`#38d77a`,se=s(oe),z={...b,...L?.accentColor&&b?.[`--lockerverse-accent`]===void 0?{"--lockerverse-accent":L.accentColor}:{},...se&&b?.[`--lockerverse-accent-contrast`]===void 0?{"--lockerverse-accent-contrast":se}:{}};if(A)return N(`section`,{...T,className:I,"data-lockerverse-theme":w,role:`alert`,style:z,children:A});if(j.phase===`error`)return P(`section`,{...T,className:I,"data-lockerverse-theme":w,style:z,children:[N(`p`,{role:`alert`,children:j.failure}),N(`button`,{onClick:k,type:`button`,children:`Retry`})]});if(j.phase!==`ready`)return N(`section`,{...T,"aria-busy":`true`,"aria-label":`Payment`,className:I,"data-lockerverse-theme":w,style:z,children:N(tt,{})});let{catalog:B,checkoutItems:ce,client:le,preparedCheckout:V}=j;return P(`section`,{...T,"aria-label":`Payment`,className:I,"data-lockerverse-theme":w,"data-payment-state":re,ref:E,style:z,children:[P(`header`,{children:[B.widget.showCommunityBranding&&L?P(`div`,{className:`lockerverse-payment__branding`,children:[L.imageUrl?N(`img`,{alt:L.name,height:`48`,src:L.imageUrl,width:`48`}):null,N(`strong`,{children:L.name})]}):null,N(`h1`,{children:B.widget.title??B.widget.name}),B.widget.description?N(`p`,{children:B.widget.description}):null]}),ne?N(`p`,{className:`lockerverse-payment__payment-status`,role:`status`,children:ne}):null,N(R,{container:E,children:N(Ve,{accentColor:b?.[`--lockerverse-accent`]??L?.accentColor??`#38d77a`,catalog:B,checkoutItems:ce,client:le,fontFamily:b?.[`--lockerverse-font-family`]??`ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif`,metadata:o,onPaymentComplete:l,onPaymentRecoveryChange:u,onPaymentUncertain:d,onQuoteChange:(e,t)=>{D(t),ae(e)},onStateChange:F,quote:V,resumePayment:te,stripeLoader:x,theme:w,visualStyle:z})})]})}export{nt as t};
1
+ import{a as e,c as t,i as n,l as r,o as i,s as a,t as o,u as s}from"./contact-validation.js";import{LockerverseSdkError as c,createLockerverseCheckoutClient as l}from"@lockerverse/sdk/checkout";import{createContext as u,useCallback as d,useContext as f,useEffect as p,useId as m,useLayoutEffect as h,useMemo as g,useReducer as _,useRef as v,useState as y}from"react";import{AddressElement as b,Elements as x,PaymentElement as S,useElements as C,useStripe as w}from"@stripe/react-stripe-js";import{loadStripe as ee}from"@stripe/stripe-js";import{array as T,minLength as E,minValue as D,nonEmpty as O,number as k,object as A,pipe as j,regex as M,safeInteger as N,safeParse as P,strictObject as F,string as I,trim as L,union as R}from"valibot";import{Fragment as z,jsx as B,jsxs as V}from"react/jsx-runtime";import{Select as H}from"@base-ui/react/select";const U=u(void 0);function te({children:e,container:t}){return B(U.Provider,{value:t,children:e})}function W(){return B(`svg`,{"aria-hidden":`true`,fill:`none`,viewBox:`0 0 16 16`,children:B(`path`,{d:`m4 6 4 4 4-4`})})}function G(){return B(`svg`,{"aria-hidden":`true`,fill:`none`,viewBox:`0 0 16 16`,children:B(`path`,{d:`m3 8 3 3 7-7`})})}function K({ariaDescribedBy:e,ariaLabel:t,ariaLabelledBy:n,className:r,id:i,invalid:a=!1,name:o,onValueChange:s,options:c,value:l}){let u=f(U),d=[`lockerverse-payment__select`,r].filter(Boolean).join(` `);return B(`div`,{className:d,children:V(H.Root,{id:i,items:c,name:o,onValueChange:e=>{e!==null&&s(e)},value:l,children:[V(H.Trigger,{"aria-describedby":e,"aria-invalid":a||void 0,"aria-label":t,"aria-labelledby":n,className:`lockerverse-payment__select-trigger`,children:[B(H.Value,{}),B(H.Icon,{"aria-hidden":`true`,className:`lockerverse-payment__select-icon`,children:B(W,{})})]}),B(H.Portal,{container:u,children:B(H.Positioner,{alignItemWithTrigger:!1,className:`lockerverse-payment__select-positioner`,sideOffset:6,children:B(H.Popup,{className:`lockerverse-payment__select-popup`,children:B(H.List,{className:`lockerverse-payment__select-list`,children:c.map(e=>V(H.Item,{className:`lockerverse-payment__select-item`,value:e.value,children:[B(H.ItemText,{children:e.label}),B(H.ItemIndicator,{"aria-hidden":`true`,className:`lockerverse-payment__select-item-indicator`,children:B(G,{})})]},e.value))})})})})]})})}const ne=[`XS`,`S`,`M`,`L`,`XL`,`XXL`,`XXXL`],q=[`15`,`12`,`10`,`5`],J=[...q,`custom`];function re({enabled:e,error:t,errorId:n,onChange:r,values:i}){if(!e)return null;let a=e=>r({...i,...e}),o=(e,t)=>{let n=J.indexOf(t),r;switch(e.key){case`ArrowDown`:case`ArrowRight`:r=(n+1)%J.length;break;case`ArrowLeft`:case`ArrowUp`:r=(n-1+J.length)%J.length;break;case`Home`:r=0;break;case`End`:r=J.length-1;break;default:return}e.preventDefault();let i=J[r];i&&((e.currentTarget.closest(`[role="radiogroup"]`)?.querySelectorAll(`input[type="radio"]`))?.[r]?.focus(),a({tipPercent:i}))};return V(`div`,{className:`lockerverse-payment__tip-box`,children:[B(`p`,{children:`Add a tip to support the Lockerverse platform`}),V(`div`,{"aria-label":`Tip amount`,role:`radiogroup`,children:[q.map(e=>V(`label`,{className:`lockerverse-payment__tip-choice`,children:[B(`input`,{checked:i.tipPercent===e,name:`tipPercent`,onChange:()=>a({tipPercent:e}),onKeyDown:t=>o(t,e),tabIndex:i.tipPercent===e?0:-1,type:`radio`,value:e}),V(`span`,{children:[e,`%`]})]},e)),V(`label`,{className:`lockerverse-payment__tip-choice`,children:[B(`input`,{checked:i.tipPercent===`custom`,name:`tipPercent`,onChange:()=>a({tipPercent:`custom`}),onKeyDown:e=>o(e,`custom`),tabIndex:i.tipPercent===`custom`?0:-1,type:`radio`,value:`custom`}),B(`span`,{children:`Other`})]})]}),i.tipPercent===`custom`?V(`label`,{children:[B(`span`,{children:`Custom tip`}),V(`span`,{className:`lockerverse-payment__money-input`,children:[B(`span`,{"aria-hidden":`true`,children:`$`}),B(`input`,{"aria-describedby":t?n:void 0,"aria-invalid":t?`true`:void 0,inputMode:`decimal`,name:`tip`,onChange:e=>a({customTip:e.currentTarget.value}),placeholder:`0.00`,value:i.customTip})]}),t?B(`span`,{className:`lockerverse-payment__field-message`,id:n,children:t}):null]}):B(`input`,{name:`tip`,type:`hidden`,value:i.tipPercent})]})}function ie({checked:e,children:t,name:n,onChange:r}){return V(`label`,{className:`lockerverse-payment__check-row`,children:[B(`input`,{checked:e,name:n,onChange:e=>r(e.currentTarget.checked),type:`checkbox`}),B(`span`,{children:t})]})}function ae({customFields:e,errors:t,fields:n,idPrefix:r,isPromoApplying:a,onChange:o,onApplyPromo:s,promoError:c,values:l}){let u=e=>o({...l,...e});return V(`div`,{className:`lockerverse-payment__additional-fields`,children:[n.memberId?V(`label`,{children:[B(`span`,{children:`Member ID`}),B(`input`,{name:`memberId`,onChange:e=>u({memberId:e.currentTarget.value}),placeholder:`Optional`,value:l.memberId})]}):null,n.merchSize?V(`div`,{className:`lockerverse-payment__field`,children:[B(`span`,{id:`${r}-merch-size-label`,children:`Size`}),B(K,{ariaLabelledBy:`${r}-merch-size-label`,name:`merchSize`,onValueChange:e=>u({merchSize:e}),options:ne.map(e=>({label:e,value:e})),value:l.merchSize})]}):null,n.promoCode?V(`div`,{className:`lockerverse-payment__field`,children:[B(`span`,{id:`${r}-promo-code-label`,children:`Promo code`}),V(`div`,{className:`lockerverse-payment__promo-control`,children:[B(`input`,{"aria-describedby":c?`${r}-promo-code-error`:void 0,"aria-invalid":c?`true`:void 0,"aria-labelledby":`${r}-promo-code-label`,name:`promoCode`,onChange:e=>u({promoCode:e.currentTarget.value}),placeholder:`Optional`,value:l.promoCode}),B(`button`,{disabled:!l.promoCode.trim()||a,onClick:s,type:`button`,children:a?`Applying…`:`Apply`})]}),c?B(`p`,{className:`lockerverse-payment__field-message`,id:`${r}-promo-code-error`,role:`alert`,children:c}):null]}):null,B(i,{choiceClassName:`lockerverse-payment__check-row`,errorClassName:`lockerverse-payment__field-message`,errors:t,fields:e,idPrefix:r,onChange:e=>u({customFields:e}),values:l.customFields})]})}function oe({amountCents:e,enabled:t,onChange:n,values:r}){return t?V(ie,{checked:r.includeServiceFee,name:`includeServiceFee`,onChange:e=>n({...r,includeServiceFee:e}),children:[`Add `,se(e),` to help cover processing fees`]}):null}function se(e){return new Intl.NumberFormat(`en-US`,{currency:`USD`,style:`currency`}).format(e/100)}function Y(e){return o(e)}function ce(t,r){let i=r?{...t,phone:Y(t.phone)}:t,a=A(r?{email:n,phone:e}:{email:n}),o=P(a,i);if(o.success)return{errors:{},value:o.output};let s={};for(let e of o.issues){let t=e.path?.[0]?.key;(t===`email`||t===`phone`)&&!s[t]&&(s[t]=e.message)}return{errors:s,value:null}}const X=j(I(),L(),O()),le=j(k(),N(),D(1)),ue=j(T(R([F({amountCents:le,productSlug:X}),F({productSlug:X,quantity:le}),F({productSlug:X})])),E(1)),de=j(I(),L(),M(/^(?:0|[1-9]\d*)(?:\.\d{1,2})?$/,`Enter a valid tip amount.`));function fe(e){let t=P(de,e);if(!t.success)return{message:t.issues[0]?.message??`Enter a valid tip amount.`,success:!1};let[n=`0`,r=``]=t.output.split(`.`),i=BigInt(n)*100n+BigInt(r.padEnd(2,`0`));return i>BigInt(2**53-1)?{message:`Enter a valid tip amount.`,success:!1}:{cents:Number(i),success:!0}}function pe(e){let t=P(ue,e);return t.success?{success:!0,value:t.output}:{message:`Lockerverse payment configuration is invalid.`,success:!1}}function me(e,t){switch(t.type){case`loading`:return{configuration:t.configuration,phase:`loading`,revision:e.revision,selectionKey:t.selectionKey};case`ready`:return{catalog:t.catalog,checkoutItems:t.checkoutItems,client:t.client,configuration:t.configuration,phase:`ready`,preparedCheckout:t.preparedCheckout,revision:e.revision+1,selectionKey:t.selectionKey};case`error`:return{configuration:t.configuration,failure:t.failure,phase:`error`,revision:e.revision,selectionKey:t.selectionKey};case`checkout`:return e.phase===`ready`?{...e,preparedCheckout:t.preparedCheckout}:e;case`retry`:return{phase:`idle`,revision:e.revision+1};default:return e}}function he(e,t){let{apiBaseUrl:n,communitySlug:r,environment:i,fetch:a,requestTimeoutMs:o,sentryDsn:s,widgetSlug:c}=e,l={communitySlug:r,widgetSlug:c,...a?{fetch:a}:{},...t?{onError:t}:{},...o===void 0?{}:{requestTimeoutMs:o},...s===void 0?{}:{sentryDsn:s}};if(n===void 0){if(i===`development`)throw TypeError(`Lockerverse development checkout requires an API base URL.`);return{...l,...i===`production`?{environment:i}:{}}}return{...l,apiBaseUrl:n,...i===void 0?{}:{environment:i}}}function ge(e,t,n){return e?.configuration===t&&e.selectionKey===n}function _e({apiBaseUrl:e,communitySlug:t,environment:n,fetch:r,onError:i,paymentState:a,requestTimeoutMs:o,selection:s,sentryDsn:c,widgetSlug:u}){let d=g(()=>({apiBaseUrl:e,communitySlug:t,environment:n,fetch:r,requestTimeoutMs:o,sentryDsn:c,widgetSlug:u}),[e,t,n,r,o,c,u]),f=pe(s),m=f.success?JSON.stringify(f.value):`invalid-selection`,h=g(()=>f.success?JSON.parse(m):[],[f.success,m]),[y,b]=_(me,{phase:`idle`,revision:0}),x=v(void 0),S=v(void 0),C=v(i);return C.current=i,p(()=>{if(!f.success||a===`submitting`||a===`success`||a===`unresolved`||ge(S.current,d,m)||ge(x.current,d,m))return;let e=!0,t={configuration:d,selectionKey:m};x.current=t,b({configuration:d,selectionKey:m,type:`loading`});async function n(){try{let n=l(he(d,e=>C.current?.(e))),{catalog:r,checkout:i}=await n.bootstrapCheckout({items:h}),a=[...i.items];e&&(x.current=void 0,S.current=t,b({catalog:r,checkoutItems:a,client:n,configuration:d,preparedCheckout:i,selectionKey:m,type:`ready`}))}catch(n){e&&(x.current=void 0,S.current=t,b({configuration:d,failure:n instanceof Error?n.message:`Lockerverse payment could not load.`,selectionKey:m,type:`error`}))}}return n(),()=>{e=!1,ge(x.current,d,m)&&(x.current=void 0)}},[d,f.success,a,m,y.revision,h]),{retryCheckout:()=>{x.current=void 0,S.current=void 0,b({type:`retry`})},selectionError:f.success?void 0:f.message,session:y,updateCheckout:e=>b({preparedCheckout:e,type:`checkout`})}}const ve=[`amountCents`,`discountableSubtotalCents`,`discountCents`,`serviceFeeCents`,`subtotalCents`,`tipCents`,`totalCents`],ye=[`discountableSubtotalCents`,`discountCents`,`subtotalCents`];function be(e,t,n){return(n===t.totalCents?ye:ve).some(n=>e[n]!==t[n])||e.payment.connectedAccountId!==t.payment.connectedAccountId||e.payment.currency!==t.payment.currency||JSON.stringify(e.appliedDiscount)!==JSON.stringify(t.appliedDiscount)||JSON.stringify(e.lineItems)!==JSON.stringify(t.lineItems)}function xe(e){return e.checkoutStatus===`success`?{kind:`success`,payment:e}:e.checkoutStatus===`failed`?{kind:`failed`,payment:e}:{kind:`unresolved`,paymentReference:e.paymentReference,reason:e.checkoutStatus===`action_required`?`action_required`:`pending`}}async function Se(e,t,n){if(t.checkoutStatus!==`action_required`)return xe(t);if(!n)return{kind:`unresolved`,paymentReference:t.paymentReference,reason:`action_required`};if(t.clientSecret)try{await n.handleNextAction({clientSecret:t.clientSecret})}catch{}try{return xe(await e.getPaymentStatus(t.paymentReference))}catch{return{kind:`unresolved`,paymentReference:t.paymentReference,reason:`action_required`}}}async function Ce(e,t,n){let r;try{r=await e.submitPayment(t)}catch(n){if(!(n instanceof c&&n.recoveryRecommended))throw n;try{r=await e.getPaymentStatus(t.checkout.paymentReference)}catch{return{kind:`unresolved`,paymentReference:t.checkout.paymentReference,reason:`recovery_failed`}}}return Se(e,r,n)}async function we(e,t,n){try{return Se(e,await e.getPaymentStatus(t),n)}catch{return{kind:`unresolved`,paymentReference:t,reason:`recovery_failed`}}}function Te(e){throw Error(`Unexpected payment workflow value: ${String(e)}`)}function Ee(e,t){return t===void 0?{phase:e}:{error:t,phase:e}}function De(e){return e?{phase:`recovering`}:{phase:`editing`}}function Oe(e){return e.phase===`editing`||e.phase===`invalid`?e.error:e.phase===`refreshing_quote`?e.previousError:void 0}function ke(e){return e.phase===`succeeded`?`success`:e.phase===`unresolved`?`unresolved`:e.phase===`submitting`||e.phase===`recovering`?`submitting`:e.phase===`invalid`?`invalid`:Oe(e)?`error`:`idle`}function Ae(e){return e.phase===`submitting`}function je(e,t){if(e.phase===`succeeded`||e.phase===`unresolved`)return e;switch(t.type){case`field_changed`:return e.phase===`invalid`?Ee(`editing`,e.error):e;case`validation_failed`:return e.phase===`submitting`||e.phase===`recovering`?e:Ee(`invalid`,Oe(e));case`quote_refresh_started`:{if(e.phase===`submitting`||e.phase===`recovering`)return e;let n=Oe(e);return{...n===void 0?{}:{previousError:n},phase:`refreshing_quote`,validatePromo:t.validatePromo}}case`quote_refresh_succeeded`:return e.phase===`refreshing_quote`?{phase:`editing`}:e;case`quote_refresh_failed`:return e.phase===`refreshing_quote`?Ee(`editing`,t.error??e.previousError):e;case`submission_started`:return e.phase===`recovering`?e:{phase:`submitting`};case`quote_changed`:return e.phase===`submitting`?{phase:`editing`}:e;case`retryable_failure`:return Ee(`editing`,t.error);case`recovery_failed`:return e.phase===`recovering`?Ee(`editing`,t.error):e;case`succeeded`:return e.phase===`submitting`||e.phase===`recovering`?{message:t.message,phase:`succeeded`}:e;case`unresolved`:return e.phase===`submitting`||e.phase===`recovering`?{message:t.message,paymentReference:t.paymentReference,phase:`unresolved`,reason:t.reason}:e;default:return Te(t)}}function Me(e,t){return t.tipPercent===`custom`?t.customTip.trim()?fe(t.customTip):{cents:0,success:!0}:{cents:Math.round(e*Number(t.tipPercent)/100),success:!0}}function Ne(e,t,n,r){return{...n?{email:n}:{},...e.widget.fields.serviceFee?{includeServiceFee:t.includeServiceFee}:{},...e.widget.fields.promoCode&&t.promoCode.trim()?{promoCode:t.promoCode.trim()}:{},...e.widget.fields.tipping?{tipCents:r}:{}}}function Pe(e,t){if(!e?.complete)throw Error(`${t} address is required.`);return e.value}function Fe(e,t,n,r){if(e.widget.fields.shipping)return t.shippingMatchesBilling?n:Pe(r.shipping,`Shipping`)}function Ie({billingAddress:e,catalog:t,email:n,phone:r,shippingAddress:i}){return{payment_method_data:{billing_details:{address:e.address,email:n,name:e.name,...t.widget.fields.phone?{phone:r}:{}}},...i?{shipping:{address:i.address,name:i.name,phone:t.widget.fields.phone?r:i.phone??null}}:{}}}function Le({catalog:e,confirmationToken:t,email:n,fieldValues:r,metadata:i,phone:o,shippingAddress:s}){return{...t?{confirmationToken:t}:{},customFieldAnswers:a(e.widget.customFields,r.customFields),email:n,...i?{metadata:i}:{},...e.widget.fields.memberId&&r.memberId.trim()?{memberId:r.memberId.trim()}:{},...e.widget.fields.merchSize?{merchSize:r.merchSize}:{},...e.widget.fields.phone?{phone:o}:{},...s?{shipping:{address:{city:s.address.city??``,country:s.address.country,line1:s.address.line1??``,...s.address.line2?{line2:s.address.line2}:{},postal_code:s.address.postal_code??``,state:s.address.state??``},name:s.name}}:{}}}function Z(e,t){try{e?.(t)}catch{}}function Q(e){if(!e())throw Error(`Payment component is no longer active.`)}async function Re({addresses:e,catalog:t,checkoutItems:n,client:r,elements:i,email:a,fieldValues:o,isAttemptActive:s,locallyPreviewedTotalCents:c,metadata:l,onPaymentRecoveryChange:u,phone:d,quote:f,stripe:p}){let m=a.trim().toLowerCase(),h=Y(d),g=Me(f.subtotalCents,o);if(!g.success)throw Error(g.message);let _=Ne(t,o,m,g.cents),v=await r.calculateTotal({..._,items:n});if(Q(s),v.totalCents>0&&be(f,v,c))return{kind:`quote_changed`,quote:v};if(v.totalCents===0){let n;t.widget.fields.shipping&&(n=Fe(t,o,Pe(e.billing,`Billing`),e)),Q(s),Z(u,{connectedAccountId:v.payment.connectedAccountId,paymentReference:v.paymentReference});let i=await Ce(r,{checkout:v,submission:Le({catalog:t,email:m,fieldValues:o,metadata:l,phone:h,...n?{shippingAddress:n}:{}})},p);return Q(s),i.kind===`failed`?{kind:`payment_failed`,message:`Order could not be completed. Review the details and try again.`}:i.kind===`unresolved`?{kind:`payment_unresolved`,paymentReference:i.paymentReference,reason:i.reason}:{kind:`payment`,payment:i.payment,quote:v}}if(!(i&&p))throw Error(`Payment form is still loading.`);await i.update({amount:v.totalCents}),Q(s);let y=await i.submit();if(Q(s),y.error)throw Error(y.error.message);let b=Pe(e.billing,`Billing`),x=Fe(t,o,b,e),S=await p.createConfirmationToken({elements:i,params:Ie({billingAddress:b,catalog:t,email:m,phone:h,shippingAddress:x})});if(Q(s),S.error)throw Error(S.error.message);Z(u,{connectedAccountId:v.payment.connectedAccountId,paymentReference:v.paymentReference});let C=await Ce(r,{checkout:v,submission:Le({catalog:t,confirmationToken:S.confirmationToken.id,email:m,fieldValues:o,metadata:l,phone:h,...x?{shippingAddress:x}:{}})},p);return Q(s),C.kind===`failed`?{kind:`payment_failed`,message:`Payment was declined. Check your payment details and try again.`}:C.kind===`unresolved`?{kind:`payment_unresolved`,paymentReference:C.paymentReference,reason:C.reason}:{kind:`payment`,payment:C.payment,quote:v}}function ze(e){return new Intl.NumberFormat(`en-US`,{currency:`USD`,style:`currency`}).format(e/100)}function Be(e,t){if(!t)return e instanceof Error?e.message:`The order total could not be updated.`}function Ve({nextQuote:e,onQuoteChange:t,setDisplayedTotalCents:n,setPromoError:r,updateWorkflow:i,validatePromo:a}){i({type:`quote_refresh_succeeded`}),n(e.totalCents),t(e),a&&r(e.appliedDiscount?.source===`promo_code`?void 0:`This promo code is invalid or cannot be applied.`)}function He({error:e,setPromoError:t,updateWorkflow:n,validatePromo:r}){r&&t(`This promo code is invalid or cannot be applied.`);let i=Be(e,r);n(i===void 0?{type:`quote_refresh_failed`}:{error:i,type:`quote_refresh_failed`})}function Ue({onPaymentComplete:e,onPaymentRecoveryChange:t,onPaymentUncertain:n,onQuoteChange:r,result:i,setDisplayedTotalCents:a,transitionWorkflow:o}){if(i.kind===`quote_changed`){let e=`The total changed to ${ze(i.quote.totalCents)}. Review it and pay again.`;r(i.quote,e),a(i.quote.totalCents),o({type:`quote_changed`});return}if(i.kind===`payment_failed`){Z(t,null),o({error:i.message,type:`retryable_failure`});return}if(i.kind===`payment_unresolved`){o({message:`Payment is still processing. Do not submit it again.`,paymentReference:i.paymentReference,reason:i.reason,type:`unresolved`});try{n?.({paymentReference:i.paymentReference,reason:i.reason})}catch{}return}r(i.quote),Z(t,null),o({message:i.payment.paymentRequired?`Payment completed successfully.`:`Order confirmed. No payment was required.`,type:`succeeded`});try{e?.(i.payment)}catch{}}function We(e){let{catalog:t,checkoutItems:n,client:r,elements:i,email:a,fieldValues:o,metadata:s,onPaymentComplete:c,onPaymentRecoveryChange:l,onPaymentUncertain:u,onQuoteChange:f,onStateChange:m,quote:h,resumePayment:g,stripe:b}=e,[x,S]=_(je,g,De),[C,w]=y(h.totalCents),[ee,T]=y(),E=v(!1),D=v(0),O=v(0),k=v(x);k.current=x;let A=d((e,t=!1)=>{let n=k.current,r=je(n,e);r!==n&&(k.current=r,S(e),t&&m(ke(r)))},[m]),j=d(e=>A(e,!0),[A]),M=d(()=>{let e=O.current+1;return O.current=e,()=>O.current===e},[]);p(()=>()=>{O.current+=1},[]);let N=t.widget.fields.tipping?Me(h.subtotalCents,o):{cents:0,success:!0},P=N.success?N.cents:null;p(()=>{if(P===null)return;let e=t.widget.fields.serviceFee&&o.includeServiceFee?h.serviceFeeCents||Math.round(h.subtotalCents*t.pricingPolicy.serviceFeeRateBasisPoints/1e4):0,n=h.totalCents-h.serviceFeeCents-h.tipCents+e+P;w(n),n>0&&i?.update({amount:n})},[t.pricingPolicy.serviceFeeRateBasisPoints,t.widget.fields.serviceFee,i,o.includeServiceFee,P,h.serviceFeeCents,h.tipCents,h.totalCents,h.subtotalCents]),p(()=>{if(!(g&&b)||E.current)return;E.current=!0;let e=M();return m(ke(k.current)),we(r,g.paymentReference,b).then(t=>{if(e()){if(t.kind===`failed`){Z(l,null),j({error:`The previous payment failed. Check your details and try again.`,type:`recovery_failed`});return}if(t.kind===`unresolved`){j({message:`Payment is still processing. Do not submit it again.`,paymentReference:t.paymentReference,reason:t.reason,type:`unresolved`});try{u?.({paymentReference:t.paymentReference,reason:t.reason})}catch{}return}Z(l,null),j({message:t.payment.paymentRequired?`Payment completed successfully.`:`Order confirmed. No payment was required.`,type:`succeeded`});try{c?.(t.payment)}catch{}}}),()=>{e()&&(O.current+=1),E.current=!1}},[r,c,l,u,m,g,b,M,j]);let F=d((e=!1)=>{e&&T(void 0),A({type:`field_changed`})},[A]);async function I(e=!1,i=!1){let s=ce({email:a.trim().toLowerCase(),phone:``},!1);if(!(N.success&&(s.value||e)))return;D.current+=1;let c=D.current;A({type:`quote_refresh_started`,validatePromo:i});try{let e=await r.calculateTotal({...Ne(t,o,s.value?.email??``,N.cents),items:n});if(c!==D.current)return;Ve({nextQuote:e,onQuoteChange:f,setDisplayedTotalCents:w,setPromoError:T,updateWorkflow:A,validatePromo:i})}catch(e){if(c!==D.current)return;He({error:e,setPromoError:T,updateWorkflow:A,validatePromo:i})}}async function L(){T(void 0),await I(!0,!0)}async function R({addresses:e,phone:d}){j({type:`submission_started`});let p=M();try{let m=await Re({addresses:e,catalog:t,checkoutItems:n,client:r,elements:i,email:a,fieldValues:o,isAttemptActive:p,locallyPreviewedTotalCents:C,metadata:s,onPaymentRecoveryChange:l,phone:d,quote:h,stripe:b});if(!p())return;Ue({onPaymentComplete:c,onPaymentRecoveryChange:l,onPaymentUncertain:u,onQuoteChange:f,result:m,setDisplayedTotalCents:w,transitionWorkflow:j})}catch(e){if(!p())return;Z(l,null),j({error:e instanceof Error?e.message:`Payment could not be completed.`,type:`retryable_failure`})}}let z=x.phase===`succeeded`||x.phase===`unresolved`?x.message:void 0;return{commands:{applyPromo:L,fieldChanged:F,refreshAuthoritativeTotal:I,reportStripeLoadError:e=>j({error:e,type:`retryable_failure`}),reportValidationFailure:()=>j({type:`validation_failed`}),submit:R},state:{displayedTotalCents:C,isRecovering:x.phase===`recovering`,isRefreshingQuote:x.phase===`refreshing_quote`,isSubmitting:Ae(x),parsedTip:N,paymentError:Oe(x),promoError:ee,terminalMessage:z}}}function $(e){return new Intl.NumberFormat(`en-US`,{currency:`USD`,style:`currency`}).format(e/100)}function Ge(e){return e===`monthly`?{interval:`month`,label:`Monthly`}:e===`annually`?{interval:`year`,label:`Annual`}:null}const Ke=[{callingCode:`+1`,label:`🇺🇸 +1`,value:`US`},{callingCode:`+52`,label:`🇲🇽 +52`,value:`MX`},{callingCode:`+380`,label:`🇺🇦 +380`,value:`UA`},{callingCode:`+48`,label:`🇵🇱 +48`,value:`PL`},{callingCode:`+1`,label:`🇨🇦 +1`,value:`CA`},{callingCode:`+49`,label:`🇩🇪 +49`,value:`DE`},{callingCode:`+44`,label:`🇬🇧 +44`,value:`GB`},{callingCode:`+46`,label:`🇸🇪 +46`,value:`SE`},{callingCode:`+358`,label:`🇫🇮 +358`,value:`FI`},{callingCode:`+1`,label:`🇵🇷 +1`,value:`PR`}];function qe(e,t){return e.trim().startsWith(`+`)?e:`${Ke.find(e=>e.value===t)?.callingCode??`+1`}${e}`}function Je({accentColor:e,catalog:t,checkoutItems:n,client:r,fontFamily:i,metadata:a,onPaymentComplete:o,onPaymentRecoveryChange:s,onPaymentUncertain:c,onQuoteChange:l,quote:u,resumePayment:d,onStateChange:f,stripeLoader:p,theme:m,visualStyle:h}){let _=d?d.connectedAccountId:u.payment.connectedAccountId,v=g(()=>p(t.payment.publishableKey,_?{stripeAccount:_}:void 0).catch(()=>null),[t.payment.publishableKey,_,p]);return B(x,{options:{amount:Math.max(u.totalCents,100),appearance:{rules:{".Input:focus":{borderColor:e,boxShadow:`0 0 0 1px ${e}`,outline:`none`}},theme:m===`light`?`stripe`:`night`,variables:{borderRadius:h?.[`--lockerverse-radius`]??`10px`,colorBackground:h?.[`--lockerverse-control`]??(m===`light`?`#f5f6f7`:`#121212`),colorDanger:h?.[`--lockerverse-danger`]??(m===`light`?`#c52b3e`:`#f08a98`),colorPrimary:e,colorText:h?.[`--lockerverse-text`]??(m===`light`?`#121416`:`#ffffff`),colorTextPlaceholder:h?.[`--lockerverse-placeholder`]??(m===`light`?`#72767d`:`#6b6b6b`),colorTextSecondary:h?.[`--lockerverse-muted`]??(m===`light`?`#62666d`:`#a1a1aa`),focusBoxShadow:`none`,focusOutline:`none`,fontFamily:i,fontSizeBase:`16px`}},currency:u.payment.currency,excludedPaymentMethodTypes:[`us_bank_account`],mode:u.paymentOption===`one-time`?`payment`:`subscription`,syncAddressCheckbox:`none`},stripe:v,children:B(at,{catalog:t,checkoutItems:n,client:r,metadata:a,onPaymentComplete:o,onPaymentRecoveryChange:s,onPaymentUncertain:c,onQuoteChange:l,onStateChange:f,quote:u,resumePayment:d})},`${t.payment.publishableKey}:${_??`platform`}:${u.paymentOption}`)}function Ye({label:e}){return V(`div`,{className:`lockerverse-payment__stripe-loader`,role:`status`,children:[B(`p`,{children:e}),V(`div`,{"aria-hidden":`true`,children:[B(`span`,{}),B(`span`,{}),B(`span`,{})]})]})}function Xe({onError:e,onReady:t,ready:n}){return V(`div`,{className:`lockerverse-payment__stripe-element`,"data-ready":n,children:[n?null:B(Ye,{label:`Loading payment form...`}),B(`div`,{className:`lockerverse-payment__stripe-mount`,children:B(S,{onLoadError:({error:t})=>e(t.message??`Payment form failed to load.`),onReady:t,options:{business:{name:`Lockerverse`},fields:{billingDetails:{address:`never`,email:`never`,name:`never`,phone:`never`}},layout:`tabs`,terms:{applePay:`auto`,auBecsDebit:`never`,bancontact:`never`,card:`always`,cashapp:`never`,googlePay:`never`,ideal:`never`,paypal:`auto`,sepaDebit:`never`,sofort:`never`,usBankAccount:`never`},wallets:{applePay:`auto`,googlePay:`never`}}})})]})}function Ze({label:e,mode:t,onChange:n,onError:r,onReady:i,ready:a}){return V(`div`,{className:`lockerverse-payment__address`,children:[B(`h2`,{children:e}),V(`div`,{className:`lockerverse-payment__stripe-element lockerverse-payment__stripe-element--address`,"data-ready":a,children:[a?null:B(Ye,{label:`Loading ${e.toLowerCase()}...`}),B(`div`,{className:`lockerverse-payment__stripe-mount`,children:B(b,{onChange:n,onLoadError:({error:t})=>r(t.message??`${e} failed to load.`),onReady:i,options:{autocomplete:{mode:`automatic`},mode:t}})})]})]})}function Qe({message:e}){return e?B(`p`,{className:`lockerverse-payment__field-message`,role:`alert`,children:e}):null}function $e({catalog:e,displayedTotalCents:t,fieldValues:n,isBillingAddressReady:r,isPaymentReady:i,isShippingAddressReady:a,onAddressChange:o,onFieldValuesChange:s,onStripeLoadError:c,setIsBillingAddressReady:l,setIsPaymentReady:u,setIsShippingAddressReady:d}){let f=t>0;return V(z,{children:[f?B(Xe,{onError:c,onReady:()=>u(!0),ready:i}):null,f||e.widget.fields.shipping?B(Ze,{label:f?`Billing address`:`Shipping address`,mode:`billing`,onChange:e=>o(`billing`,e),onError:c,onReady:()=>l(!0),ready:r}):null,e.widget.fields.shipping?V(`div`,{className:`lockerverse-payment__shipping`,children:[B(ie,{checked:n.shippingMatchesBilling,name:`shippingMatchesBilling`,onChange:e=>{s({...n,shippingMatchesBilling:e}),e?o(`shipping`,null):d(!1)},children:`Shipping is same as billing information`}),n.shippingMatchesBilling?null:B(Ze,{label:`Shipping address`,mode:`shipping`,onChange:e=>o(`shipping`,e),onError:c,onReady:()=>d(!0),ready:a})]}):null]})}function et({displayedBaseCents:e,displayedTipCents:t,displayedTotalCents:n,quote:r}){let i=Ge(r.paymentOption),a=Math.max(0,e-r.subtotalCents+r.discountCents);return V(`section`,{"aria-label":`Payment summary`,className:`lockerverse-payment__payment-summary`,children:[B(`h2`,{children:`Order summary`}),B(`div`,{className:`lockerverse-payment__payment-summary-items`,children:r.lineItems.map(e=>V(`div`,{className:`lockerverse-payment__payment-summary-row`,children:[V(`span`,{children:[e.productName,e.quantity>1?V(z,{children:[` `,V(`small`,{children:[`× `,e.quantity]})]}):null,e.paymentOption===`monthly`?B(`small`,{children:` · Monthly`}):null,e.paymentOption===`annually`?B(`small`,{children:` · Annual`}):null]}),B(`strong`,{children:$(e.subtotalCents)})]},e.listingId))}),V(`div`,{className:`lockerverse-payment__payment-summary-totals`,children:[a>0?V(`div`,{className:`lockerverse-payment__payment-summary-row lockerverse-payment__payment-summary-detail`,children:[B(`span`,{children:`Service fee`}),B(`strong`,{children:$(a)})]}):null,r.discountCents>0&&r.appliedDiscount?V(`div`,{className:`lockerverse-payment__payment-summary-row lockerverse-payment__payment-summary-discount`,children:[V(`span`,{children:[r.appliedDiscount.source===`email_list`?`Email discount`:`Promo code discount`,` `,`(`,r.appliedDiscount.percentageOff,`% off)`]}),V(`strong`,{children:[`-`,$(r.discountCents)]})]}):null,t>0?V(`div`,{className:`lockerverse-payment__payment-summary-row lockerverse-payment__payment-summary-detail lockerverse-payment__payment-summary-tip`,children:[B(`span`,{children:`Tip`}),B(`strong`,{children:$(t)})]}):null,V(`div`,{className:`lockerverse-payment__payment-summary-row lockerverse-payment__payment-summary-total`,children:[B(`span`,{children:i?`${i.label} total`:`Total`}),B(`strong`,{children:$(n)})]})]})]})}function tt({catalog:e,displayedTotalCents:t,fieldValues:n,isBillingAddressReady:r,isPaymentReady:i,isRequiredShippingReady:a,isSubmitting:o,onFieldValuesChange:s,quote:c}){let l=t===0,u=l?!e.widget.fields.shipping||r&&a:i&&r&&a,d=Ge(c.paymentOption),f=l?`Complete order`:`Pay ${$(t)}`;!l&&d&&(f=`Subscribe for ${$(t)}/${d.interval}`),o&&(f=l?`Completing…`:`Processing…`);let p=`Process payment for ${$(t)} total`;return l?p=`Complete order`:d&&(p=`Start ${d.label.toLowerCase()} subscription for ${$(t)}`),V(`div`,{className:`lockerverse-payment__actions`,children:[B(oe,{amountCents:c.serviceFeeCents||Math.round(c.subtotalCents*e.pricingPolicy.serviceFeeRateBasisPoints/1e4),enabled:e.widget.fields.serviceFee,onChange:s,values:n}),B(`button`,{"aria-busy":o,"aria-label":p,disabled:o||!u,type:`submit`,children:f})]})}function nt(e,t){let n=e.elements.namedItem(t);if(n instanceof HTMLElement){n.focus();return}n instanceof RadioNodeList&&Array.from(n).find(e=>e instanceof HTMLElement)?.focus()}function rt({customFieldErrors:e,emailRef:t,form:n,parsedTipSuccess:r,phoneRef:i,validationErrors:a}){if(a.email){t.current?.focus();return}if(a.phone){i.current?.focus();return}if(!r){n.querySelector(`[name="tip"]`)?.focus();return}let[o]=Object.keys(e);o&&nt(n,`custom:${o}`)}function it({email:e,emailDiscountPercentOff:t,emailErrorId:n,emailId:r,emailRef:i,errors:a,onEmailBlur:o,onEmailChange:s,onPhoneChange:c,onPhoneCountryChange:l,phone:u,phoneCountry:d,phoneEnabled:f,phoneErrorId:p,phoneId:m,phoneRef:h}){return V(`div`,{className:`lockerverse-payment__contact`,children:[B(`label`,{htmlFor:r,children:`Email`}),B(`input`,{"aria-describedby":a.email?n:void 0,"aria-invalid":a.email?`true`:void 0,autoComplete:`email`,id:r,name:`email`,onBlur:o,onChange:e=>s(e.currentTarget.value),placeholder:`name@example.com`,ref:i,type:`email`,value:e}),a.email?B(`p`,{className:`lockerverse-payment__field-message`,id:n,children:a.email}):null,t===void 0?null:V(`p`,{className:`lockerverse-payment__discount-message`,role:`status`,children:[`Your email qualifies for `,t,`% off.`]}),f?V(z,{children:[B(`label`,{htmlFor:m,children:`Phone`}),V(`div`,{className:`lockerverse-payment__phone-control`,children:[B(K,{ariaLabel:`Phone number country`,className:`lockerverse-payment__select--phone-country`,name:`phoneCountry`,onValueChange:l,options:Ke,value:d}),B(`input`,{"aria-describedby":a.phone?p:void 0,"aria-invalid":a.phone?`true`:void 0,autoComplete:`tel`,id:m,inputMode:`tel`,name:`phone`,onChange:e=>c(e.currentTarget.value),placeholder:`(201) 555-0123`,ref:h,type:`tel`,value:u})]}),a.phone?B(`p`,{className:`lockerverse-payment__field-message`,id:p,children:a.phone}):null]}):null]})}function at({catalog:e,checkoutItems:n,client:i,metadata:a,onPaymentComplete:o,onPaymentRecoveryChange:s,onPaymentUncertain:c,onQuoteChange:l,onStateChange:u,quote:d,resumePayment:f}){let[h,g]=y(``),[_,b]=y(``),[x,S]=y(`US`),[ee,T]=y({}),[E,D]=y({}),[O,k]=y(),[A,j]=y(!1),[M,N]=y(!1),[P,F]=y(!1),[I,L]=y({customFields:t(e.widget.customFields),customTip:``,includeServiceFee:e.widget.fields.serviceFee,memberId:``,merchSize:`M`,promoCode:``,shippingMatchesBilling:!0,tipPercent:`10`}),R=v({billing:null,shipping:null}),z=v(null),H=v(null),U=v(null),te=v(d.totalCents>0),W=We({catalog:e,checkoutItems:n,client:i,elements:C(),email:h,fieldValues:I,metadata:a,onPaymentComplete:o,onPaymentRecoveryChange:s,onPaymentUncertain:c,onQuoteChange:l,onStateChange:u,quote:d,resumePayment:f,stripe:w()}),{displayedTotalCents:G,isRecovering:K,isRefreshingQuote:ne,isSubmitting:q,parsedTip:J,paymentError:ie,promoError:oe,terminalMessage:se}=W.state,Y=`lockerverse-${m()}`,X=`${Y}-email`,le=`${X}-error`,ue=`${Y}-phone`,de=`${ue}-error`,fe=`${Y}-tip-error`,pe=(J.success?J.cents:null)??0,me=G-pe,he=!e.widget.fields.shipping||I.shippingMatchesBilling||P;p(()=>{q&&U.current?.focus()},[q]),p(()=>{let e=G>0;e&&!te.current&&(j(!1),N(!1)),te.current=e},[G]);function ge(e){W.commands.fieldChanged(),T(t=>{let n={...t};return delete n[e],n})}function _e(e){W.commands.fieldChanged(e.promoCode!==I.promoCode),L(e),D({}),k(void 0)}async function ve(t){t.preventDefault();let n=ce({email:h,phone:qe(_,x)},e.widget.fields.phone),i=r(e.widget.customFields,I.customFields);if(!(n.value&&J.success)||Object.keys(i).length>0){T(n.errors),D(i),k(J.success?void 0:J.message),W.commands.reportValidationFailure();let e=t.currentTarget;queueMicrotask(()=>{rt({customFieldErrors:i,emailRef:z,form:e,parsedTipSuccess:J.success,phoneRef:H,validationErrors:n.errors})});return}T({}),D({}),await W.commands.submit({addresses:R.current,phone:qe(_,x)})}return se?B(`p`,{className:`lockerverse-payment__payment-status`,ref:U,role:`status`,tabIndex:-1,children:se}):K?B(`p`,{className:`lockerverse-payment__payment-status`,role:`status`,children:`Recovering payment…`}):V(`form`,{"aria-busy":q,className:`lockerverse-payment__form`,noValidate:!0,onSubmit:ve,children:[B(`div`,{"data-lockerverse-input-region":``,inert:q?!0:void 0,children:V(`fieldset`,{className:`lockerverse-payment__input-fieldset`,disabled:q,children:[B(et,{displayedBaseCents:me,displayedTipCents:pe,displayedTotalCents:G,quote:d}),B(re,{enabled:e.widget.fields.tipping,error:O,errorId:fe,onChange:_e,values:I}),B(it,{email:h,emailDiscountPercentOff:d.appliedDiscount?.source===`email_list`?d.appliedDiscount.percentageOff:void 0,emailErrorId:le,emailId:X,emailRef:z,errors:ee,onEmailBlur:()=>W.commands.refreshAuthoritativeTotal(),onEmailChange:e=>{g(e),ge(`email`)},onPhoneChange:e=>{b(e),ge(`phone`)},onPhoneCountryChange:e=>{S(e),W.commands.fieldChanged()},phone:_,phoneCountry:x,phoneEnabled:e.widget.fields.phone,phoneErrorId:de,phoneId:ue,phoneRef:H}),B($e,{catalog:e,displayedTotalCents:G,fieldValues:I,isBillingAddressReady:M,isPaymentReady:A,isShippingAddressReady:P,onAddressChange:(e,t)=>{R.current[e]=t},onFieldValuesChange:_e,onStripeLoadError:W.commands.reportStripeLoadError,setIsBillingAddressReady:N,setIsPaymentReady:j,setIsShippingAddressReady:F}),B(ae,{customFields:e.widget.customFields,errors:E,fields:e.widget.fields,idPrefix:Y,isPromoApplying:ne,onApplyPromo:W.commands.applyPromo,onChange:_e,promoError:oe,values:I}),B(tt,{catalog:e,displayedTotalCents:G,fieldValues:I,isBillingAddressReady:M,isPaymentReady:A,isRequiredShippingReady:he,isSubmitting:q,onFieldValuesChange:_e,quote:d})]})}),q?B(`p`,{className:`lockerverse-payment__sr-only`,ref:U,role:`status`,tabIndex:-1,children:G===0?`Completing order…`:`Processing payment…`}):null,B(Qe,{message:ie})]})}function ot(){return V(`div`,{className:`lockerverse-payment__skeleton-loader-block`,children:[B(`span`,{className:`lockerverse-payment__skeleton-loader-label`}),V(`div`,{className:`lockerverse-payment__skeleton-loader-content`,children:[B(`span`,{className:`lockerverse-payment__skeleton-loader-full`}),V(`div`,{className:`lockerverse-payment__skeleton-loader-grid`,children:[B(`span`,{className:`lockerverse-payment__skeleton-loader-half`}),B(`span`,{className:`lockerverse-payment__skeleton-loader-half`})]})]})]})}function st(){return V(`div`,{className:`lockerverse-payment__loading`,children:[B(`span`,{"aria-live":`polite`,className:`lockerverse-payment__sr-only`,role:`status`,children:`Loading payment…`}),V(`div`,{"aria-hidden":`true`,className:`lockerverse-payment__skeleton`,children:[V(`div`,{className:`lockerverse-payment__skeleton-branding`,children:[B(`span`,{className:`lockerverse-payment__skeleton-avatar`}),B(`span`,{className:`lockerverse-payment__skeleton-community`})]}),V(`div`,{className:`lockerverse-payment__skeleton-contact`,children:[V(`div`,{className:`lockerverse-payment__skeleton-field`,children:[B(`span`,{className:`lockerverse-payment__skeleton-label`}),B(`span`,{className:`lockerverse-payment__skeleton-input`})]}),V(`div`,{className:`lockerverse-payment__skeleton-field`,children:[B(`span`,{className:`lockerverse-payment__skeleton-label`}),B(`span`,{className:`lockerverse-payment__skeleton-input`})]})]}),B(ot,{}),B(ot,{}),V(`div`,{className:`lockerverse-payment__skeleton-actions`,children:[B(`span`,{className:`lockerverse-payment__skeleton-check-line`}),B(`span`,{className:`lockerverse-payment__skeleton-button`})]})]})]})}function ct({apiBaseUrl:e,branding:t,className:n,communitySlug:r,environment:i,fetch:a,metadata:o,onError:c,onPaymentComplete:l,onPaymentRecoveryChange:u,onPaymentUncertain:f,requestTimeoutMs:m,resumePayment:g,selection:_,sentryDsn:b,style:x,stripeLoader:S=ee,theme:C=`dark`,widgetSlug:w,...T}){let E=v(g).current,D=v(null),[O,k]=y(),[A,j]=y(`idle`),M=v(void 0),{retryCheckout:N,selectionError:P,session:F,updateCheckout:I}=_e({apiBaseUrl:e,communitySlug:r,environment:i,fetch:a,onError:c,paymentState:A,requestTimeoutMs:m,selection:_,sentryDsn:b,widgetSlug:w}),L=F.phase===`ready`?F.revision:void 0,R=d(e=>{L!==void 0&&(M.current=L),j(e)},[L]);p(()=>{F.phase===`loading`&&k(void 0)},[F.phase]),h(()=>{F.phase===`ready`&&M.current!==F.revision&&j(e=>e===`success`||e===`unresolved`?e:`idle`)},[F.phase,F.revision]);let z=[`lockerverse-payment`,n].filter(Boolean).join(` `),H=t??(F.phase===`ready`?F.catalog.community:null),U=x?.[`--lockerverse-accent`]??H?.accentColor??`#38d77a`,W=s(U),G={...x,...H?.accentColor&&x?.[`--lockerverse-accent`]===void 0?{"--lockerverse-accent":H.accentColor}:{},...W&&x?.[`--lockerverse-accent-contrast`]===void 0?{"--lockerverse-accent-contrast":W}:{}};if(P)return B(`section`,{...T,className:z,"data-lockerverse-theme":C,role:`alert`,style:G,children:P});if(F.phase===`error`)return V(`section`,{...T,className:z,"data-lockerverse-theme":C,style:G,children:[B(`p`,{role:`alert`,children:F.failure}),B(`button`,{onClick:N,type:`button`,children:`Retry`})]});if(F.phase!==`ready`)return B(`section`,{...T,"aria-busy":`true`,"aria-label":`Payment`,className:z,"data-lockerverse-theme":C,style:G,children:B(st,{})});let{catalog:K,checkoutItems:ne,client:q,preparedCheckout:J}=F;return V(`section`,{...T,"aria-label":`Payment`,className:z,"data-lockerverse-theme":C,"data-payment-state":A,ref:D,style:G,children:[V(`header`,{children:[K.widget.showCommunityBranding&&H?V(`div`,{className:`lockerverse-payment__branding`,children:[H.imageUrl?B(`img`,{alt:H.name,height:`48`,src:H.imageUrl,width:`48`}):null,B(`strong`,{children:H.name})]}):null,B(`h1`,{children:K.widget.title??K.widget.name}),K.widget.description?B(`p`,{children:K.widget.description}):null]}),O?B(`p`,{className:`lockerverse-payment__payment-status`,role:`status`,children:O}):null,B(te,{container:D,children:B(Je,{accentColor:x?.[`--lockerverse-accent`]??H?.accentColor??`#38d77a`,catalog:K,checkoutItems:ne,client:q,fontFamily:x?.[`--lockerverse-font-family`]??`ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif`,metadata:o,onPaymentComplete:l,onPaymentRecoveryChange:u,onPaymentUncertain:f,onQuoteChange:(e,t)=>{k(t),I(e)},onStateChange:R,quote:J,resumePayment:E,stripeLoader:S,theme:C,visualStyle:G})})]})}export{ct as t};
2
2
  //# sourceMappingURL=lockerverse-payment.js.map