@lockerverse/react 0.2.58 → 0.2.60

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;;;;iBCg9BI,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 E,number as D,object as O,pipe as k,regex as A,safeInteger as j,safeParse as M,strictObject as N,string as P,trim as F,union as I}from"valibot";import{Fragment as L,jsx as R,jsxs as z}from"react/jsx-runtime";import{Select as B}from"@base-ui/react/select";import{LockerverseSdkError as V,createLockerverseCheckoutClient as H}from"@lockerverse/sdk/checkout";const U=m(void 0);function te({children:e,container:t}){return R(U.Provider,{value:t,children:e})}function W(){return R(`svg`,{"aria-hidden":`true`,fill:`none`,viewBox:`0 0 16 16`,children:R(`path`,{d:`m4 6 4 4 4-4`})})}function G(){return R(`svg`,{"aria-hidden":`true`,fill:`none`,viewBox:`0 0 16 16`,children:R(`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=g(U),d=[`lockerverse-payment__select`,r].filter(Boolean).join(` `);return R(`div`,{className:d,children:z(B.Root,{id:i,items:c,name:o,onValueChange:e=>{e!==null&&s(e)},value:l,children:[z(B.Trigger,{"aria-describedby":e,"aria-invalid":a||void 0,"aria-label":t,"aria-labelledby":n,className:`lockerverse-payment__select-trigger`,children:[R(B.Value,{}),R(B.Icon,{"aria-hidden":`true`,className:`lockerverse-payment__select-icon`,children:R(W,{})})]}),R(B.Portal,{container:u,children:R(B.Positioner,{alignItemWithTrigger:!1,className:`lockerverse-payment__select-positioner`,sideOffset:6,children:R(B.Popup,{className:`lockerverse-payment__select-popup`,children:R(B.List,{className:`lockerverse-payment__select-list`,children:c.map(e=>z(B.Item,{className:`lockerverse-payment__select-item`,value:e.value,children:[R(B.ItemText,{children:e.label}),R(B.ItemIndicator,{"aria-hidden":`true`,className:`lockerverse-payment__select-item-indicator`,children:R(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 z(`div`,{className:`lockerverse-payment__tip-box`,children:[R(`p`,{children:`Add a tip to support the Lockerverse platform`}),z(`div`,{"aria-label":`Tip amount`,role:`radiogroup`,children:[q.map(e=>z(`label`,{className:`lockerverse-payment__tip-choice`,children:[R(`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}),z(`span`,{children:[e,`%`]})]},e)),z(`label`,{className:`lockerverse-payment__tip-choice`,children:[R(`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`}),R(`span`,{children:`Other`})]})]}),i.tipPercent===`custom`?z(`label`,{children:[R(`span`,{children:`Custom tip`}),z(`span`,{className:`lockerverse-payment__money-input`,children:[R(`span`,{"aria-hidden":`true`,children:`$`}),R(`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?R(`span`,{className:`lockerverse-payment__field-message`,id:n,children:t}):null]}):R(`input`,{name:`tip`,type:`hidden`,value:i.tipPercent})]})}function ie({checked:e,children:t,name:n,onChange:r}){return z(`label`,{className:`lockerverse-payment__check-row`,children:[R(`input`,{checked:e,name:n,onChange:e=>r(e.currentTarget.checked),type:`checkbox`}),R(`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 z(`div`,{className:`lockerverse-payment__additional-fields`,children:[n.memberId?z(`label`,{children:[R(`span`,{children:`Member ID`}),R(`input`,{name:`memberId`,onChange:e=>u({memberId:e.currentTarget.value}),placeholder:`Optional`,value:l.memberId})]}):null,n.merchSize?z(`div`,{className:`lockerverse-payment__field`,children:[R(`span`,{id:`${r}-merch-size-label`,children:`Size`}),R(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?z(`div`,{className:`lockerverse-payment__field`,children:[R(`span`,{id:`${r}-promo-code-label`,children:`Promo code`}),z(`div`,{className:`lockerverse-payment__promo-control`,children:[R(`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}),R(`button`,{disabled:!l.promoCode.trim()||a,onClick:s,type:`button`,children:a?`Applying…`:`Apply`})]}),c?R(`p`,{className:`lockerverse-payment__field-message`,id:`${r}-promo-code-error`,role:`alert`,children:c}):null]}):null,R(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?z(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=O(r?{email:n,phone:e}:{email:n}),o=M(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 le=k(P(),F(),E()),ue=k(D(),j(),T(1)),de=k(w(I([N({amountCents:ue,productSlug:le}),N({productSlug:le,quantity:ue})])),ee(1)),fe=k(P(),F(),A(/^(?:0|[1-9]\d*)(?:\.\d{1,2})?$/,`Enter a valid tip amount.`));function pe(e){let t=M(fe,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 me(e){let t=M(de,e);return t.success?{success:!0,value:t.output}:{message:`Lockerverse payment configuration is invalid.`,success:!1}}function he(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 ge(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 X(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: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=me(s),f=d.success?JSON.stringify(d.value):`invalid-selection`,p=b(()=>d.success?JSON.parse(f):[],[d.success,f]),[m,h]=x(he,{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`||X(v.current,u,f)||X(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=H(ge(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,X(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`})}}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 V&&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()?pe(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:d,onStateChange:f,quote:p,resumePayment:m,stripe:g}=e,[v,y]=x(je,m,De),[b,w]=C(p.totalCents),[ee,T]=C(),E=S(!1),D=S(0),O=S(0),k=S(v);k.current=v;let A=h((e,t=!1)=>{let n=k.current,r=je(n,e);r!==n&&(k.current=r,y(e),t&&f(ke(r)))},[f]),j=h(e=>A(e,!0),[A]),M=h(()=>{let e=O.current+1;return O.current=e,()=>O.current===e},[]);_(()=>()=>{O.current+=1},[]);let N=t.widget.fields.tipping?Me(p.subtotalCents,o):{cents:0,success:!0},P=N.success?N.cents:null;_(()=>{if(P===null)return;let e=t.widget.fields.serviceFee&&o.includeServiceFee?p.serviceFeeCents||Math.round(p.subtotalCents*t.pricingPolicy.serviceFeeRateBasisPoints/1e4):0,n=p.totalCents-p.serviceFeeCents-p.tipCents+e+P;w(n),n>0&&i?.update({amount:n})},[t.pricingPolicy.serviceFeeRateBasisPoints,t.widget.fields.serviceFee,i,o.includeServiceFee,P,p.serviceFeeCents,p.tipCents,p.totalCents,p.subtotalCents]),_(()=>{if(!(m&&g)||E.current)return;E.current=!0;let e=M();return f(ke(k.current)),we(r,m.paymentReference,g).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,f,m,g,M,j]);let F=h((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:d,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:f}){j({type:`submission_started`});let m=M();try{let h=await Re({addresses:e,catalog:t,checkoutItems:n,client:r,elements:i,email:a,fieldValues:o,isAttemptActive:m,locallyPreviewedTotalCents:b,metadata:s,onPaymentRecoveryChange:l,phone:f,quote:p,stripe:g});if(!m())return;Ue({onPaymentComplete:c,onPaymentRecoveryChange:l,onPaymentUncertain:u,onQuoteChange:d,result:h,setDisplayedTotalCents:w,transitionWorkflow:j})}catch(e){if(!m())return;Z(l,null),j({error:e instanceof Error?e.message:`Payment could not be completed.`,type:`retryable_failure`})}}let z=v.phase===`succeeded`||v.phase===`unresolved`?v.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:b,isRecovering:v.phase===`recovering`,isRefreshingQuote:v.phase===`refreshing_quote`,isSubmitting:Ae(v),parsedTip:N,paymentError:Oe(v),promoError:ee,terminalMessage:z}}}function $(e){return new Intl.NumberFormat(`en-US`,{currency:`USD`,style:`currency`}).format(e/100)}const Ge=[{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 Ke(e,t){return e.trim().startsWith(`+`)?e:`${Ge.find(e=>e.value===t)?.callingCode??`+1`}${e}`}function qe({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 R(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:R(it,{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 Je({label:e}){return z(`div`,{className:`lockerverse-payment__stripe-loader`,role:`status`,children:[R(`p`,{children:e}),z(`div`,{"aria-hidden":`true`,children:[R(`span`,{}),R(`span`,{}),R(`span`,{})]})]})}function Ye({onError:e,onReady:t,ready:n}){return z(`div`,{className:`lockerverse-payment__stripe-element`,"data-ready":n,children:[n?null:R(Je,{label:`Loading payment form...`}),R(`div`,{className:`lockerverse-payment__stripe-mount`,children:R(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 Xe({label:e,mode:t,onChange:n,onError:r,onReady:i,ready:a}){return z(`div`,{className:`lockerverse-payment__address`,children:[R(`h2`,{children:e}),z(`div`,{className:`lockerverse-payment__stripe-element lockerverse-payment__stripe-element--address`,"data-ready":a,children:[a?null:R(Je,{label:`Loading ${e.toLowerCase()}...`}),R(`div`,{className:`lockerverse-payment__stripe-mount`,children:R(c,{onChange:n,onLoadError:({error:t})=>r(t.message??`${e} failed to load.`),onReady:i,options:{autocomplete:{mode:`automatic`},mode:t}})})]})]})}function Ze({message:e}){return e?R(`p`,{className:`lockerverse-payment__field-message`,role:`alert`,children:e}):null}function Qe({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 z(L,{children:[f?R(Ye,{onError:c,onReady:()=>u(!0),ready:i}):null,f||e.widget.fields.shipping?R(Xe,{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?z(`div`,{className:`lockerverse-payment__shipping`,children:[R(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:R(Xe,{label:`Shipping address`,mode:`shipping`,onChange:e=>o(`shipping`,e),onError:c,onReady:()=>d(!0),ready:a})]}):null]})}function $e({displayedBaseCents:e,displayedTipCents:t,displayedTotalCents:n,quote:r}){let i=Math.max(0,e-r.subtotalCents+r.discountCents);return z(`section`,{"aria-label":`Payment summary`,className:`lockerverse-payment__payment-summary`,children:[R(`h2`,{children:`Order summary`}),R(`div`,{className:`lockerverse-payment__payment-summary-items`,children:r.lineItems.map(e=>z(`div`,{className:`lockerverse-payment__payment-summary-row`,children:[z(`span`,{children:[e.productName,e.quantity>1?z(L,{children:[` `,z(`small`,{children:[`× `,e.quantity]})]}):null]}),R(`strong`,{children:$(e.subtotalCents)})]},e.listingId))}),z(`div`,{className:`lockerverse-payment__payment-summary-totals`,children:[i>0?z(`div`,{className:`lockerverse-payment__payment-summary-row lockerverse-payment__payment-summary-detail`,children:[R(`span`,{children:`Service fee`}),R(`strong`,{children:$(i)})]}):null,r.discountCents>0&&r.appliedDiscount?z(`div`,{className:`lockerverse-payment__payment-summary-row lockerverse-payment__payment-summary-discount`,children:[z(`span`,{children:[r.appliedDiscount.source===`email_list`?`Email discount`:`Promo code discount`,` `,`(`,r.appliedDiscount.percentageOff,`% off)`]}),z(`strong`,{children:[`-`,$(r.discountCents)]})]}):null,t>0?z(`div`,{className:`lockerverse-payment__payment-summary-row lockerverse-payment__payment-summary-detail lockerverse-payment__payment-summary-tip`,children:[R(`span`,{children:`Tip`}),R(`strong`,{children:$(t)})]}):null,z(`div`,{className:`lockerverse-payment__payment-summary-row lockerverse-payment__payment-summary-total`,children:[R(`span`,{children:`Total`}),R(`strong`,{children:$(n)})]})]})]})}function et({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 ${$(t)}`;return o&&(d=l?`Completing…`:`Processing…`),z(`div`,{className:`lockerverse-payment__actions`,children:[R(oe,{amountCents:c.serviceFeeCents||Math.round(c.subtotalCents*e.pricingPolicy.serviceFeeRateBasisPoints/1e4),enabled:e.widget.fields.serviceFee,onChange:s,values:n}),R(`button`,{"aria-busy":o,"aria-label":l?`Complete order`:`Process payment for ${$(t)} total`,disabled:o||!u,type:`submit`,children:d})]})}function tt(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 nt({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&&tt(n,`custom:${o}`)}function rt({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 z(`div`,{className:`lockerverse-payment__contact`,children:[R(`label`,{htmlFor:r,children:`Email`}),R(`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?R(`p`,{className:`lockerverse-payment__field-message`,id:n,children:a.email}):null,t===void 0?null:z(`p`,{className:`lockerverse-payment__discount-message`,role:`status`,children:[`Your email qualifies for `,t,`% off.`]}),f?z(L,{children:[R(`label`,{htmlFor:m,children:`Phone`}),z(`div`,{className:`lockerverse-payment__phone-control`,children:[R(K,{ariaLabel:`Phone number country`,className:`lockerverse-payment__select--phone-country`,name:`phoneCountry`,onValueChange:l,options:Ge,value:d}),R(`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?R(`p`,{className:`lockerverse-payment__field-message`,id:p,children:a.phone}):null]}):null]})}function it({catalog:e,checkoutItems:n,client:i,metadata:a,onPaymentComplete:o,onPaymentRecoveryChange:s,onPaymentUncertain:c,onQuoteChange:l,onStateChange:u,quote:p,resumePayment:m}){let[h,g]=C(``),[y,b]=C(``),[x,w]=C(`US`),[ee,T]=C({}),[E,D]=C({}),[O,k]=C(),[A,j]=C(!1),[M,N]=C(!1),[P,F]=C(!1),[I,L]=C({customFields:t(e.widget.customFields),customTip:``,includeServiceFee:e.widget.fields.serviceFee,memberId:``,merchSize:`M`,promoCode:``,shippingMatchesBilling:!0,tipPercent:`10`}),B=S({billing:null,shipping:null}),V=S(null),H=S(null),U=S(null),te=S(p.totalCents>0),W=We({catalog:e,checkoutItems:n,client:i,elements:d(),email:h,fieldValues:I,metadata:a,onPaymentComplete:o,onPaymentRecoveryChange:s,onPaymentUncertain:c,onQuoteChange:l,onStateChange:u,quote:p,resumePayment:m,stripe:f()}),{displayedTotalCents:G,isRecovering:K,isRefreshingQuote:ne,isSubmitting:q,parsedTip:J,paymentError:ie,promoError:oe,terminalMessage:se}=W.state,Y=`lockerverse-${v()}`,le=`${Y}-email`,ue=`${le}-error`,de=`${Y}-phone`,fe=`${de}-error`,pe=`${Y}-tip-error`,me=(J.success?J.cents:null)??0,he=G-me,ge=!e.widget.fields.shipping||I.shippingMatchesBilling||P;_(()=>{q&&U.current?.focus()},[q]),_(()=>{let e=G>0;e&&!te.current&&(j(!1),N(!1)),te.current=e},[G]);function X(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:Ke(y,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(()=>{nt({customFieldErrors:i,emailRef:V,form:e,parsedTipSuccess:J.success,phoneRef:H,validationErrors:n.errors})});return}T({}),D({}),await W.commands.submit({addresses:B.current,phone:Ke(y,x)})}return se?R(`p`,{className:`lockerverse-payment__payment-status`,ref:U,role:`status`,tabIndex:-1,children:se}):K?R(`p`,{className:`lockerverse-payment__payment-status`,role:`status`,children:`Recovering payment…`}):z(`form`,{"aria-busy":q,className:`lockerverse-payment__form`,noValidate:!0,onSubmit:ve,children:[R(`div`,{"data-lockerverse-input-region":``,inert:q?!0:void 0,children:z(`fieldset`,{className:`lockerverse-payment__input-fieldset`,disabled:q,children:[R($e,{displayedBaseCents:he,displayedTipCents:me,displayedTotalCents:G,quote:p}),R(re,{enabled:e.widget.fields.tipping,error:O,errorId:pe,onChange:_e,values:I}),R(rt,{email:h,emailDiscountPercentOff:p.appliedDiscount?.source===`email_list`?p.appliedDiscount.percentageOff:void 0,emailErrorId:ue,emailId:le,emailRef:V,errors:ee,onEmailBlur:()=>W.commands.refreshAuthoritativeTotal(),onEmailChange:e=>{g(e),X(`email`)},onPhoneChange:e=>{b(e),X(`phone`)},onPhoneCountryChange:e=>{w(e),W.commands.fieldChanged()},phone:y,phoneCountry:x,phoneEnabled:e.widget.fields.phone,phoneErrorId:fe,phoneId:de,phoneRef:H}),R(Qe,{catalog:e,displayedTotalCents:G,fieldValues:I,isBillingAddressReady:M,isPaymentReady:A,isShippingAddressReady:P,onAddressChange:(e,t)=>{B.current[e]=t},onFieldValuesChange:_e,onStripeLoadError:W.commands.reportStripeLoadError,setIsBillingAddressReady:N,setIsPaymentReady:j,setIsShippingAddressReady:F}),R(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}),R(et,{catalog:e,displayedTotalCents:G,fieldValues:I,isBillingAddressReady:M,isPaymentReady:A,isRequiredShippingReady:ge,isSubmitting:q,onFieldValuesChange:_e,quote:p})]})}),q?R(`p`,{className:`lockerverse-payment__sr-only`,ref:U,role:`status`,tabIndex:-1,children:G===0?`Completing order…`:`Processing payment…`}):null,R(Ze,{message:ie})]})}function at(){return z(`div`,{className:`lockerverse-payment__skeleton-loader-block`,children:[R(`span`,{className:`lockerverse-payment__skeleton-loader-label`}),z(`div`,{className:`lockerverse-payment__skeleton-loader-content`,children:[R(`span`,{className:`lockerverse-payment__skeleton-loader-full`}),z(`div`,{className:`lockerverse-payment__skeleton-loader-grid`,children:[R(`span`,{className:`lockerverse-payment__skeleton-loader-half`}),R(`span`,{className:`lockerverse-payment__skeleton-loader-half`})]})]})]})}function ot(){return z(`div`,{className:`lockerverse-payment__loading`,children:[R(`span`,{"aria-live":`polite`,className:`lockerverse-payment__sr-only`,role:`status`,children:`Loading payment…`}),z(`div`,{"aria-hidden":`true`,className:`lockerverse-payment__skeleton`,children:[z(`div`,{className:`lockerverse-payment__skeleton-branding`,children:[R(`span`,{className:`lockerverse-payment__skeleton-avatar`}),R(`span`,{className:`lockerverse-payment__skeleton-community`})]}),z(`div`,{className:`lockerverse-payment__skeleton-contact`,children:[z(`div`,{className:`lockerverse-payment__skeleton-field`,children:[R(`span`,{className:`lockerverse-payment__skeleton-label`}),R(`span`,{className:`lockerverse-payment__skeleton-input`})]}),z(`div`,{className:`lockerverse-payment__skeleton-field`,children:[R(`span`,{className:`lockerverse-payment__skeleton-label`}),R(`span`,{className:`lockerverse-payment__skeleton-input`})]})]}),R(at,{}),R(at,{}),z(`div`,{className:`lockerverse-payment__skeleton-actions`,children:[R(`span`,{className:`lockerverse-payment__skeleton-check-line`}),R(`span`,{className:`lockerverse-payment__skeleton-button`})]})]})]})}function st({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 E=S(m).current,D=S(null),[O,k]=C(),[A,j]=C(`idle`),M=S(void 0),{retryCheckout:N,selectionError:P,session:F,updateCheckout:I}=_e({apiBaseUrl:e,communitySlug:r,environment:i,fetch:a,onError:c,paymentState:A,requestTimeoutMs:f,selection:g,sentryDsn:v,widgetSlug:ee}),L=F.phase===`ready`?F.revision:void 0,B=h(e=>{L!==void 0&&(M.current=L),j(e)},[L]);_(()=>{F.phase===`loading`&&k(void 0)},[F.phase]),y(()=>{F.phase===`ready`&&M.current!==F.revision&&j(e=>e===`success`||e===`unresolved`?e:`idle`)},[F.phase,F.revision]);let V=[`lockerverse-payment`,n].filter(Boolean).join(` `),H=t??(F.phase===`ready`?F.catalog.community:null),U=b?.[`--lockerverse-accent`]??H?.accentColor??`#38d77a`,W=s(U),G={...b,...H?.accentColor&&b?.[`--lockerverse-accent`]===void 0?{"--lockerverse-accent":H.accentColor}:{},...W&&b?.[`--lockerverse-accent-contrast`]===void 0?{"--lockerverse-accent-contrast":W}:{}};if(P)return R(`section`,{...T,className:V,"data-lockerverse-theme":w,role:`alert`,style:G,children:P});if(F.phase===`error`)return z(`section`,{...T,className:V,"data-lockerverse-theme":w,style:G,children:[R(`p`,{role:`alert`,children:F.failure}),R(`button`,{onClick:N,type:`button`,children:`Retry`})]});if(F.phase!==`ready`)return R(`section`,{...T,"aria-busy":`true`,"aria-label":`Payment`,className:V,"data-lockerverse-theme":w,style:G,children:R(ot,{})});let{catalog:K,checkoutItems:ne,client:q,preparedCheckout:J}=F;return z(`section`,{...T,"aria-label":`Payment`,className:V,"data-lockerverse-theme":w,"data-payment-state":A,ref:D,style:G,children:[z(`header`,{children:[K.widget.showCommunityBranding&&H?z(`div`,{className:`lockerverse-payment__branding`,children:[H.imageUrl?R(`img`,{alt:H.name,height:`48`,src:H.imageUrl,width:`48`}):null,R(`strong`,{children:H.name})]}):null,R(`h1`,{children:K.widget.title??K.widget.name}),K.widget.description?R(`p`,{children:K.widget.description}):null]}),O?R(`p`,{className:`lockerverse-payment__payment-status`,role:`status`,children:O}):null,R(te,{container:D,children:R(qe,{accentColor:b?.[`--lockerverse-accent`]??H?.accentColor??`#38d77a`,catalog:K,checkoutItems:ne,client:q,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)=>{k(t),I(e)},onStateChange:B,quote:J,resumePayment:E,stripeLoader:x,theme:w,visualStyle:G})})]})}export{st 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