@cedros/pay-react 1.1.30 → 1.1.31
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 +53 -30
- package/dist/{AISettingsSection-C0zqPbd6.js → AISettingsSection-B12x5sV5.js} +2 -2
- package/dist/{AISettingsSection-BMh3hAb5.mjs → AISettingsSection-DXWDF4Cf.mjs} +4 -4
- package/dist/AutosaveIndicator-CJdkhZis.js +1 -0
- package/dist/{AutosaveIndicator-3ctAnz8Y.mjs → AutosaveIndicator-D966vOrP.mjs} +1 -1
- package/dist/CedrosContext-3Dz7_9Ct.js +3 -0
- package/dist/{CedrosContext-5Gjveoba.mjs → CedrosContext-DQc_k5PG.mjs} +430 -314
- package/dist/ChatLogsSection-CH37u0nX.js +1 -0
- package/dist/{ChatLogsSection-BtJixYAp.mjs → ChatLogsSection-DR7mpuQS.mjs} +2 -2
- package/dist/{ComplianceSection-BMnb1p4w.mjs → ComplianceSection-C61_Hf-X.mjs} +3 -3
- package/dist/ComplianceSection-DS4e2IBp.js +1 -0
- package/dist/CryptoButton-BQceZhbn.js +1 -0
- package/dist/{CryptoButton-Cl2kZbOP.mjs → CryptoButton-BuO_RZLj.mjs} +4 -5
- package/dist/CustomersSection-Bzs9Qon3.js +1 -0
- package/dist/{CustomersSection-dmwoBhcf.mjs → CustomersSection-CWWvusxs.mjs} +2 -2
- package/dist/DisputesSection-ClcYIHga.js +1 -0
- package/dist/{DisputesSection-CHyLne76.mjs → DisputesSection-D8rcS5Vs.mjs} +2 -2
- package/dist/{Dropdown-BRSZlhik.mjs → Dropdown-0y3S40Xf.mjs} +1 -1
- package/dist/Dropdown-BuKiVR_L.js +1 -0
- package/dist/{ErrorBanner-lZJhCmDX.mjs → ErrorBanner-DAjYj6Dx.mjs} +1 -1
- package/dist/ErrorBanner-DxrRVqwe.js +1 -0
- package/dist/FAQSection-0UnN2BZs.js +1 -0
- package/dist/{FAQSection-Di2xE9Sm.mjs → FAQSection-Dck0NM-A.mjs} +3 -3
- package/dist/{ImagesSection-D63PEjR6.mjs → ImagesSection-Bn9GrRRa.mjs} +2 -2
- package/dist/ImagesSection-CSwBHvNl.js +1 -0
- package/dist/{InventorySection-Dp5Yu4TA.mjs → InventorySection-Dytfmtn8.mjs} +2 -2
- package/dist/InventorySection-ymxaMcIg.js +1 -0
- package/dist/{MessagingSection-BLCnCpEv.mjs → MessagingSection-CHFbSxJL.mjs} +3 -3
- package/dist/MessagingSection-Dtfv0DvU.js +1 -0
- package/dist/OrdersSection-BuzTs9XG.js +1 -0
- package/dist/{OrdersSection-Bd56F3cj.mjs → OrdersSection-vYNuVF5X.mjs} +2 -2
- package/dist/{PaymentSettingsSection-B5J56VAk.js → PaymentSettingsSection-BOaW8lLv.js} +1 -1
- package/dist/{PaymentSettingsSection-52iw47Su.mjs → PaymentSettingsSection-BqdGrXen.mjs} +3 -3
- package/dist/{ReturnsSection-DUVeKrCd.mjs → ReturnsSection-CRzhXKtI.mjs} +2 -2
- package/dist/ReturnsSection-i5W_3so1.js +1 -0
- package/dist/{SettingsSection-vK9WIwXE.mjs → SettingsSection-6o3d8DrH.mjs} +1 -1
- package/dist/{SettingsSection-DKkHykaC.js → SettingsSection-CIhO51Zj.js} +1 -1
- package/dist/ShippingSection-BUzPW1AG.js +1 -0
- package/dist/{ShippingSection-CZRrXrlh.mjs → ShippingSection-CbNzGyCP.mjs} +2 -2
- package/dist/SingleCategorySettings-BxVUUy8R.js +3 -0
- package/dist/{SingleCategorySettings-C8xJ47_T.mjs → SingleCategorySettings-Qj_ptB_x.mjs} +4 -4
- package/dist/{StatsBar-D4cOKG2e.mjs → StatsBar-CwCBHBn-.mjs} +1 -1
- package/dist/StatsBar-DDUWoizP.js +1 -0
- package/dist/StorefrontSection-CZZj5he9.js +1 -0
- package/dist/{StorefrontSection-uXSVbEAa.mjs → StorefrontSection-DIYDmj59.mjs} +4 -4
- package/dist/SubscriptionsSection-Bof5MElz.js +1 -0
- package/dist/{SubscriptionsSection-Ci_AZrWA.mjs → SubscriptionsSection-lMVHdV5X.mjs} +3 -3
- package/dist/TaxSection-Be-9v60Z.js +1 -0
- package/dist/{TaxSection-BTukS_cU.mjs → TaxSection-dD7PzQvG.mjs} +2 -2
- package/dist/Token22Section-Di5fHsrU.js +1 -0
- package/dist/{Token22Section-DRsPJuTq.mjs → Token22Section-Dos0CYEk.mjs} +2 -2
- package/dist/{WalletManager-D-eoqUDy.mjs → WalletManager-CGR69MiR.mjs} +1 -1
- package/dist/{WalletManager-DXChB9LA.js → WalletManager-ZJbGQHrn.js} +1 -1
- package/dist/{WebhooksSection-A8Y4ZGcj.mjs → WebhooksSection-5gqXzIhq.mjs} +2 -2
- package/dist/WebhooksSection-CiLDyl7c.js +1 -0
- package/dist/admin.js +1 -1
- package/dist/admin.mjs +1 -1
- package/dist/crypto-only.js +1 -1
- package/dist/crypto-only.mjs +102 -105
- package/dist/{index-9QF_UfSN.mjs → index-CU6M10Rs.mjs} +13 -14
- package/dist/{index-Cq9ya93W.js → index-DVxx_62C.js} +10 -10
- package/dist/index.js +1 -1
- package/dist/index.mjs +31 -34
- package/dist/pay-react.css +1 -1
- package/dist/plugin-BIkt3boU.mjs +339 -0
- package/dist/plugin-Dw8_Q8rE.js +1 -0
- package/dist/sections-D1d83mfH.js +1 -0
- package/dist/{sections-more-Ixw6mM6R.mjs → sections-DcUfZQNE.mjs} +263 -270
- package/dist/src/admin/plugin.d.ts.map +1 -1
- package/dist/src/admin/sectionIds.d.ts.map +1 -1
- package/dist/src/admin.d.ts +0 -7
- package/dist/src/admin.d.ts.map +1 -1
- package/dist/src/components/admin/index.d.ts +0 -1
- package/dist/src/components/admin/index.d.ts.map +1 -1
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/stripe-only.js +1 -1
- package/dist/stripe-only.mjs +18 -19
- package/dist/styles-BwaDljnz.js +1 -0
- package/dist/{styles-DGagylUj.mjs → styles-fihm6qVA.mjs} +51 -52
- package/dist/testing/index.js +1 -1
- package/dist/testing/index.mjs +1 -1
- package/package.json +6 -8
- package/dist/AutosaveIndicator-DXRPr4P7.js +0 -1
- package/dist/CedrosContext-CCakH2SZ.js +0 -3
- package/dist/CedrosPayAdminDashboard-DaJ9JoGn.mjs +0 -250
- package/dist/CedrosPayAdminDashboard-Uvyh9p7A.js +0 -1
- package/dist/ChatLogsSection-FC3O536G.js +0 -1
- package/dist/ComplianceSection-BioTKm7k.js +0 -1
- package/dist/CryptoButton-DxFCYDlJ.js +0 -1
- package/dist/CustomersSection-z6ARxuex.js +0 -1
- package/dist/DisputesSection-BjHHQAi7.js +0 -1
- package/dist/Dropdown-j8o0OO5L.js +0 -1
- package/dist/ErrorBanner-CAgPnj62.js +0 -1
- package/dist/FAQSection-b34DMzgV.js +0 -1
- package/dist/ImagesSection-DGBA7iKY.js +0 -1
- package/dist/InventorySection-bVCECzX5.js +0 -1
- package/dist/LazyCedrosPayAdminDashboard-BqJDNrDI.mjs +0 -9
- package/dist/LazyCedrosPayAdminDashboard-CpfTtOBc.js +0 -1
- package/dist/MessagingSection-DU0dYNMy.js +0 -1
- package/dist/OrdersSection-FOFEAgs1.js +0 -1
- package/dist/ReturnsSection-BjpIVFfN.js +0 -1
- package/dist/ShippingSection-B5lk7zpS.js +0 -1
- package/dist/SingleCategorySettings-g7D-9lG1.js +0 -3
- package/dist/StatsBar-CWXw2ZT3.js +0 -1
- package/dist/StorefrontSection-BWnMB9k-.js +0 -1
- package/dist/SubscriptionsSection-DQfXkuDv.js +0 -1
- package/dist/TaxSection-cuPQISxZ.js +0 -1
- package/dist/ThemeContext-CFXyYx7A.js +0 -1
- package/dist/ThemeContext-l0bqcOGW.mjs +0 -126
- package/dist/Token22Section-CCfkDm8W.js +0 -1
- package/dist/WebhooksSection-CnEmaGH1.js +0 -1
- package/dist/icons-C3yDMnKE.mjs +0 -235
- package/dist/icons-Cjgd9YVo.js +0 -1
- package/dist/sectionIds-D46-_-h-.js +0 -1
- package/dist/sectionIds-YktNxmRt.mjs +0 -124
- package/dist/sections-511_XBh4.js +0 -1
- package/dist/sections-CRaMa8ZB.mjs +0 -9
- package/dist/sections-more-Cgw2qJlA.js +0 -1
- package/dist/src/components/admin/CedrosPayAdminDashboard.d.ts +0 -40
- package/dist/src/components/admin/CedrosPayAdminDashboard.d.ts.map +0 -1
- package/dist/src/components/admin/LazyCedrosPayAdminDashboard.d.ts +0 -4
- package/dist/src/components/admin/LazyCedrosPayAdminDashboard.d.ts.map +0 -1
- package/dist/src/standalone-admin.d.ts +0 -8
- package/dist/src/standalone-admin.d.ts.map +0 -1
- package/dist/standalone-admin.d.ts +0 -2
- package/dist/standalone-admin.js +0 -1
- package/dist/standalone-admin.mjs +0 -4
- package/dist/styles--fxb3lCl.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/admin/plugin.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAiD,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/admin/plugin.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAiD,MAAM,SAAS,CAAC;AAwC1F;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,WA8G7B,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sectionIds.d.ts","sourceRoot":"","sources":["../../../src/admin/sectionIds.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gDAAgD;AAChD,MAAM,WAAW,gBAAgB;IAC/B,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,KAAK,EAAE,OAAO,GAAG,eAAe,CAAC;IACjC,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,gBAAgB,
|
|
1
|
+
{"version":3,"file":"sectionIds.d.ts","sourceRoot":"","sources":["../../../src/admin/sectionIds.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gDAAgD;AAChD,MAAM,WAAW,gBAAgB;IAC/B,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,KAAK,EAAE,OAAO,GAAG,eAAe,CAAC;IACjC,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,gBAAgB,EA0BjD,CAAC;AAEX,kFAAkF;AAClF,eAAO,MAAM,sBAAsB,UAA8C,CAAC;AAElF,qBAAqB;AACrB,eAAO,MAAM,iBAAiB;;;;;;;;;;EAGpB,CAAC"}
|
package/dist/src/admin.d.ts
CHANGED
|
@@ -1,9 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plugin-focused admin entrypoint.
|
|
3
|
-
*
|
|
4
|
-
* Use `@cedros/pay-react/admin` for AdminShell composition and the
|
|
5
|
-
* cedros-pay plugin contract. For the standalone dashboard runtime,
|
|
6
|
-
* use `@cedros/pay-react/standalone-admin` or the root package export.
|
|
7
|
-
*/
|
|
8
1
|
export { cedrosPayPlugin, CEDROS_PAY_SECTIONS, CEDROS_PAY_SECTION_IDS, CEDROS_PAY_GROUPS, type AdminHostContext, type AdminHostServiceBag, type SectionReference, type AdminPlugin, type AdminSectionConfig, type AdminGroupConfig, type AdminSectionProps, type HostContext, type PluginContext, type PluginRegistry, type PluginId, type SectionId, type QualifiedSectionId, type PluginPermission, } from './admin/index';
|
|
9
2
|
//# sourceMappingURL=admin.d.ts.map
|
package/dist/src/admin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/admin.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/admin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,oBAAoB,CAAC;AAE5B,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { ComponentType } from 'react';
|
|
2
2
|
import { SectionProps } from './types';
|
|
3
3
|
import { SettingsSectionProps } from './SettingsSection';
|
|
4
|
-
export { CedrosPayAdminDashboard, type CedrosPayAdminDashboardProps, type DashboardSection, } from './LazyCedrosPayAdminDashboard';
|
|
5
4
|
export { ConfigEditor, type ConfigEditorProps } from './ConfigEditor';
|
|
6
5
|
export declare const SettingsSection: ComponentType<SettingsSectionProps>;
|
|
7
6
|
export { type SettingsSectionProps } from './SettingsSection';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/admin/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/admin/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAIL,KAAK,aAAa,EAGnB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAmB9D,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,eAAO,MAAM,eAAe,qCAE3B,CAAC;AACF,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,eAAO,MAAM,oBAAoB,6BAEhC,CAAC;AACF,eAAO,MAAM,iBAAiB,6BAE7B,CAAC;AACF,eAAO,MAAM,UAAU,6BAEtB,CAAC;AAGF,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAChH,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,SAAS,GACf,MAAM,aAAa,CAAC;AAGrB,eAAO,MAAM,eAAe,6BAE3B,CAAC;AACF,eAAO,MAAM,sBAAsB,6BAElC,CAAC;AACF,OAAO,EAAE,qBAAqB,EAAE,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG7G,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,gBAAgB,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
* Main library exports
|
|
5
5
|
*/
|
|
6
6
|
export { CedrosPay } from './components/CedrosPay';
|
|
7
|
-
export { CedrosPayAdminDashboard, type CedrosPayAdminDashboardProps, type DashboardSection, } from './components/admin';
|
|
8
7
|
export { cedrosPayPlugin, CEDROS_PAY_SECTIONS, CEDROS_PAY_SECTION_IDS, CEDROS_PAY_GROUPS, type AdminHostContext, type AdminHostServiceBag, type SectionReference, type AdminPlugin, type AdminSectionConfig, type AdminGroupConfig, type AdminSectionProps, type HostContext, type PluginContext, type PluginRegistry, type PluginId, type SectionId, type QualifiedSectionId, type PluginPermission, } from './admin/index';
|
|
9
8
|
export { StripeButton } from './components/StripeButton';
|
|
10
9
|
export { ComplianceGatePage } from './components/ComplianceGatePage';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/stripe-only.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./styles
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./styles-BwaDljnz.js"),t=require("./CedrosContext-3Dz7_9Ct.js"),r=require("./fetchWithTimeout-CG0EKbhf.js");exports.CEDROS_EVENTS=e.CEDROS_EVENTS;exports.CSP_PRESETS=e.CSP_PRESETS;exports.CedrosPay=e.CedrosPay;exports.CreditsButton=e.CreditsButton;exports.CreditsSubscribeButton=e.CreditsSubscribeButton;exports.PaymentMethodBadge=e.PaymentMethodBadge;exports.PaymentModal=e.PaymentModal;exports.ProductPrice=e.ProductPrice;exports.PurchaseButton=e.PurchaseButton;exports.RPC_PROVIDERS=e.RPC_PROVIDERS;exports.SECURITY_RECOMMENDATIONS=e.SECURITY_RECOMMENDATIONS;exports.StripeButton=e.StripeButton;exports.SubscribeButton=e.SubscribeButton;exports.SubscriptionManagementPanel=e.SubscriptionManagementPanel;exports.calculateDiscountPercentage=e.calculateDiscountPercentage;exports.createTranslator=e.createTranslator;exports.detectLocale=e.detectLocale;exports.emitPaymentError=e.emitPaymentError;exports.emitPaymentProcessing=e.emitPaymentProcessing;exports.emitPaymentStart=e.emitPaymentStart;exports.emitPaymentSuccess=e.emitPaymentSuccess;exports.emitWalletConnect=e.emitWalletConnect;exports.emitWalletConnected=e.emitWalletConnected;exports.emitWalletError=e.emitWalletError;exports.formatCSP=e.formatCSP;exports.formatCouponCodes=e.formatCouponCodes;exports.generateCSP=e.generateCSP;exports.generateCSPDirectives=e.generateCSPDirectives;exports.getAvailableLocales=e.getAvailableLocales;exports.getLocalizedError=e.getLocalizedError;exports.getUserErrorMessage=e.getUserErrorMessage;exports.isRetryableError=e.isRetryableError;exports.loadLocale=e.loadLocale;exports.logSecurityReport=e.logSecurityReport;exports.parseCouponCodes=e.parseCouponCodes;exports.stackCheckoutCoupons=e.stackCheckoutCoupons;exports.useCreditsPayment=e.useCreditsPayment;exports.useCreditsSubscription=e.useCreditsSubscription;exports.useLocalizedError=e.useLocalizedError;exports.usePaymentMode=e.usePaymentMode;exports.useStripeCheckout=e.useStripeCheckout;exports.useSubscription=e.useSubscription;exports.useSubscriptionManagement=e.useSubscriptionManagement;exports.useTranslation=e.useTranslation;exports.validateSecurity=e.validateSecurity;exports.CIRCUIT_BREAKER_PRESETS=t.CIRCUIT_BREAKER_PRESETS;exports.CedrosProvider=t.CedrosProvider;exports.CircuitBreakerOpenError=t.CircuitBreakerOpenError;exports.CircuitState=t.CircuitState;exports.ERROR_CATEGORIES=t.ERROR_CATEGORIES;exports.RATE_LIMITER_PRESETS=t.RATE_LIMITER_PRESETS;exports.RETRY_PRESETS=t.RETRY_PRESETS;exports.createCircuitBreaker=t.createCircuitBreaker;exports.createRateLimiter=t.createRateLimiter;exports.retryWithBackoff=t.retryWithBackoff;exports.useCedrosContext=t.useCedrosContext;exports.useCedrosTheme=t.useCedrosTheme;exports.validateConfig=t.validateConfig;exports.LogLevel=r.LogLevel;exports.Logger=r.Logger;exports.createLogger=r.createLogger;exports.getLogger=r.getLogger;
|
package/dist/stripe-only.mjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { C as s, a as t, b as r, c as o, d as i, P as c, e as n, f as u, g as C, R as E, S, h as
|
|
2
|
-
import { C as H, a as J, b as Q, c as X, E as Z, R as $, e as ee, f as ae, g as se, k as te, u as re,
|
|
3
|
-
import { L as
|
|
4
|
-
import { u as Se } from "./ThemeContext-l0bqcOGW.mjs";
|
|
1
|
+
import { C as s, a as t, b as r, c as o, d as i, P as c, e as n, f as u, g as C, R as E, S, h as l, i as P, j as R, k as m, l as d, m as g, n as p, o as T, p as y, q as L, r as b, s as B, t as f, u as M, v as _, w as I, x as k, y as v, z as O, A as h, B as A, D, E as x, F as N, G as W, H as z, I as U, J as G, K, L as V, M as Y, N as j, O as q, Q as w } from "./styles-fihm6qVA.mjs";
|
|
2
|
+
import { C as H, a as J, b as Q, c as X, E as Z, R as $, e as ee, f as ae, g as se, k as te, u as re, l as oe, v as ie } from "./CedrosContext-DQc_k5PG.mjs";
|
|
3
|
+
import { L as ne, a as ue, c as Ce, g as Ee } from "./fetchWithTimeout-DmMOwL0Q.mjs";
|
|
5
4
|
export {
|
|
6
5
|
s as CEDROS_EVENTS,
|
|
7
6
|
H as CIRCUIT_BREAKER_PRESETS,
|
|
@@ -13,8 +12,8 @@ export {
|
|
|
13
12
|
o as CreditsButton,
|
|
14
13
|
i as CreditsSubscribeButton,
|
|
15
14
|
Z as ERROR_CATEGORIES,
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
ne as LogLevel,
|
|
16
|
+
ue as Logger,
|
|
18
17
|
c as PaymentMethodBadge,
|
|
19
18
|
n as PaymentModal,
|
|
20
19
|
u as ProductPrice,
|
|
@@ -23,12 +22,12 @@ export {
|
|
|
23
22
|
ee as RETRY_PRESETS,
|
|
24
23
|
E as RPC_PROVIDERS,
|
|
25
24
|
S as SECURITY_RECOMMENDATIONS,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
l as StripeButton,
|
|
26
|
+
P as SubscribeButton,
|
|
27
|
+
R as SubscriptionManagementPanel,
|
|
28
|
+
m as calculateDiscountPercentage,
|
|
30
29
|
ae as createCircuitBreaker,
|
|
31
|
-
|
|
30
|
+
Ce as createLogger,
|
|
32
31
|
se as createRateLimiter,
|
|
33
32
|
d as createTranslator,
|
|
34
33
|
g as detectLocale,
|
|
@@ -37,24 +36,24 @@ export {
|
|
|
37
36
|
y as emitPaymentStart,
|
|
38
37
|
L as emitPaymentSuccess,
|
|
39
38
|
b as emitWalletConnect,
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
B as emitWalletConnected,
|
|
40
|
+
f as emitWalletError,
|
|
42
41
|
M as formatCSP,
|
|
43
42
|
_ as formatCouponCodes,
|
|
44
43
|
I as generateCSP,
|
|
45
44
|
k as generateCSPDirectives,
|
|
46
45
|
v as getAvailableLocales,
|
|
47
46
|
O as getLocalizedError,
|
|
48
|
-
|
|
47
|
+
Ee as getLogger,
|
|
49
48
|
h as getUserErrorMessage,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
A as isRetryableError,
|
|
50
|
+
D as loadLocale,
|
|
51
|
+
x as logSecurityReport,
|
|
53
52
|
N as parseCouponCodes,
|
|
54
53
|
te as retryWithBackoff,
|
|
55
54
|
W as stackCheckoutCoupons,
|
|
56
55
|
re as useCedrosContext,
|
|
57
|
-
|
|
56
|
+
oe as useCedrosTheme,
|
|
58
57
|
z as useCreditsPayment,
|
|
59
58
|
U as useCreditsSubscription,
|
|
60
59
|
G as useLocalizedError,
|
|
@@ -63,6 +62,6 @@ export {
|
|
|
63
62
|
Y as useSubscription,
|
|
64
63
|
j as useSubscriptionManagement,
|
|
65
64
|
q as useTranslation,
|
|
66
|
-
|
|
65
|
+
ie as validateConfig,
|
|
67
66
|
w as validateSecurity
|
|
68
67
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var Ae=Object.create;var be=Object.defineProperty;var ze=Object.getOwnPropertyDescriptor;var Ue=Object.getOwnPropertyNames;var Oe=Object.getPrototypeOf,Fe=Object.prototype.hasOwnProperty;var We=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Ue(t))!Fe.call(e,n)&&n!==r&&be(e,n,{get:()=>t[n],enumerable:!(s=ze(t,n))||s.enumerable});return e};var He=(e,t,r)=>(r=e!=null?Ae(Oe(e)):{},We(t||!e||!e.__esModule?be(r,"default",{value:e,enumerable:!0}):r,e));const I=require("./CedrosContext-3Dz7_9Ct.js"),i=require("react/jsx-runtime"),f=require("react"),L=require("./fetchWithTimeout-CG0EKbhf.js");function Ye(e){return!e||!e.coupon_codes?[]:e.coupon_codes.split(",").map(t=>t.trim()).filter(t=>t.length>0)}function Qe(e,t=", "){return e.join(t)}function Ve(e,t){return e<=0?0:(e-t)/e*100}function Ge(e,t){if(!t||t.length===0)return e;let r=e,s=0;for(const n of t)if(n.discountType==="percentage"){const u=1-n.discountValue/100;r=r*u}else n.discountType==="fixed"&&(s+=n.discountValue);return r=r-s,r<0&&(r=0),Math.ceil(r*100)/100}function xe(e){const t=Number(e);if(!Number.isFinite(t)||t<=0)return 1;const r=Math.floor(t);return r>0?r:1}function ae(e){return e.map(t=>({resource:t.resource,quantity:xe(t.quantity),variantId:t.variantId,metadata:t.metadata}))}function te(e){return e.reduce((t,r)=>t+xe(r.quantity),0)}function Ke(e){return!!(e&&e.length>0&&(e.length>1||e.length===1&&(e[0].quantity??1)>1))}const K=new Map,ue=new Map,Y=new Map,ce=1e3,we=200,de=2e3;function Xe(e){const t=Y.get(e);return t?Date.now()<t?!0:(Y.delete(e),!1):!1}function Je(e,t=we){const r=Date.now()+t;if(Y.set(e,r),Y.size>ce){const s=Array.from(Y.keys()).slice(0,Y.size-ce);for(const n of s)Y.delete(n)}}function Ze(e,t=de){const r=K.get(e);if(!r)return!1;const n=Date.now()-r;return n<t?(L.getLogger().debug(`[Deduplication] Duplicate request blocked: ${e} (${n}ms ago)`),!0):!1}function et(e){if(K.set(e,Date.now()),K.size>ce){const t=Array.from(K.keys()).slice(0,K.size-ce);for(const r of t)K.delete(r)}}function tt(e){return ue.get(e)||null}function rt(e,t){ue.set(e,t);const r=()=>{ue.delete(e),et(e)};return t.then(r,r),t}async function st(e,t,r={}){const{windowMs:s=de,throwOnDuplicate:n=!0}=r,u=tt(e);if(u)return L.getLogger().debug(`[Deduplication] Reusing in-flight request: ${e}`),u;if(Ze(e,s)){if(n)throw new Error(`Duplicate request blocked: ${e}`);L.getLogger().warn(`[Deduplication] Duplicate request blocked but not throwing: ${e}`);return}const h=t();return rt(e,h)}function X(e,t,r={}){const{cooldownMs:s=we,deduplicationWindowMs:n=de}=r;return async()=>{if(Xe(e)){L.getLogger().debug(`[Deduplication] Button in cooldown: ${e}`);return}Je(e,s);try{await st(e,async()=>{const u=t();u instanceof Promise&&await u},{windowMs:n,throwOnDuplicate:!1})}catch(u){if(u instanceof Error&&u.message.includes("Duplicate request"))return;throw u}}}function Se(e){return{background:"none",border:"none",fontSize:"1.5rem",cursor:"pointer",color:e,opacity:.6,padding:"0.25rem",lineHeight:1}}const H={PAYMENT_START:"cedros:payment:start",WALLET_CONNECT:"cedros:wallet:connect",WALLET_CONNECTED:"cedros:wallet:connected",WALLET_ERROR:"cedros:wallet:error",PAYMENT_PROCESSING:"cedros:payment:processing",PAYMENT_SUCCESS:"cedros:payment:success",PAYMENT_ERROR:"cedros:payment:error"};function V(e,t){if(typeof window>"u")return;const r=new CustomEvent(e,{detail:t,bubbles:!0,cancelable:!1});window.dispatchEvent(r)}function J(e,t,r){V(H.PAYMENT_START,{timestamp:Date.now(),method:e,resource:t,itemCount:r})}function nt(e){V(H.WALLET_CONNECT,{timestamp:Date.now(),wallet:e})}function ot(e,t){V(H.WALLET_CONNECTED,{timestamp:Date.now(),wallet:e,publicKey:t})}function it(e,t){V(H.WALLET_ERROR,{timestamp:Date.now(),wallet:t,error:e})}function Z(e,t,r){V(H.PAYMENT_PROCESSING,{timestamp:Date.now(),method:e,resource:t,itemCount:r})}function ee(e,t,r,s){V(H.PAYMENT_SUCCESS,{timestamp:Date.now(),method:e,transactionId:t,resource:r,itemCount:s})}function W(e,t,r,s){V(H.PAYMENT_ERROR,{timestamp:Date.now(),method:e,error:t,resource:r,itemCount:s})}function at(e){return e instanceof I.PaymentError&&e.canRetry()}function ct(e){return e instanceof I.PaymentError?e.getUserMessage():e instanceof Error?e.message:String(e)}function lt(e){switch(e){case"mainnet-beta":return"https://api.mainnet-beta.solana.com";case"devnet":return"https://api.devnet.solana.com";case"testnet":return"https://api.testnet.solana.com";default:return"https://api.mainnet-beta.solana.com"}}function ut(e){try{const t=new URL(e);return`${t.protocol}//${t.host}`}catch{return e}}function Pe(e={}){const{solanaCluster:t="mainnet-beta",solanaEndpoint:r,customRpcProviders:s=[],allowUnsafeScripts:n=!1,additionalScriptSrc:u=[],additionalConnectSrc:h=[],additionalFrameSrc:x=[],includeStripe:C=!0,includeSolana:l=!0}=e;n&&console.warn("[CedrosPay] SECURITY WARNING: allowUnsafeScripts is enabled. This adds 'unsafe-inline' and 'unsafe-eval' to script-src, which significantly weakens CSP protection against XSS attacks. Only use this in development or if absolutely required by your framework.");const a=["'self'"];n&&a.push("'unsafe-inline'","'unsafe-eval'"),C&&a.push("https://js.stripe.com"),a.push(...u);const o=["'self'"];if(C&&o.push("https://api.stripe.com","https://*.stripe.com"),l){const p=lt(t);if(o.push(p),r){const c=ut(r);o.includes(c)||o.push(c)}s.forEach(c=>{o.includes(c)||o.push(c)})}o.push(...h);const d=["'self'"];return C&&d.push("https://js.stripe.com","https://checkout.stripe.com"),d.push(...x),{scriptSrc:a,connectSrc:o,frameSrc:d}}function ve(e,t="header"){const{scriptSrc:r,connectSrc:s,frameSrc:n}=e;switch(t){case"header":case"meta":case"nextjs":case"nginx":{const u=[];return r.length>0&&u.push(`script-src ${r.join(" ")}`),s.length>0&&u.push(`connect-src ${s.join(" ")}`),n.length>0&&u.push(`frame-src ${n.join(" ")}`),u.join("; ")}case"helmet":{const u={};return r.length>0&&(u.scriptSrc=r),s.length>0&&(u.connectSrc=s),n.length>0&&(u.frameSrc=n),u}case"directives":return{scriptSrc:r,connectSrc:s,frameSrc:n};default:throw new Error(`Unknown CSP format: ${t}`)}}function dt(e={},t="header"){const r=Pe(e);return ve(r,t)}const pt={HELIUS:"https://*.helius-rpc.com",QUICKNODE:"https://*.quicknode.pro",ALCHEMY:"https://*.alchemy.com",ANKR:"https://rpc.ankr.com",TRITON:"https://*.rpcpool.com"},ft={MAINNET_CUSTOM_RPC:e=>({solanaCluster:"mainnet-beta",solanaEndpoint:e,allowUnsafeScripts:!1}),MAINNET_NEXTJS:e=>({solanaCluster:"mainnet-beta",solanaEndpoint:e,allowUnsafeScripts:!1}),DEVNET:()=>({solanaCluster:"devnet",allowUnsafeScripts:!1}),CRYPTO_ONLY:e=>({solanaCluster:"mainnet-beta",solanaEndpoint:e,includeStripe:!1}),STRIPE_ONLY:()=>({includeStripe:!0,includeSolana:!1})};function pe(){const{stripeManager:e}=I.useCedrosContext(),[t,r]=f.useState({status:"idle",error:null,transactionId:null}),s=f.useRef(!1),n=f.useCallback(async(x,C,l,a,o,d)=>{if(s.current)return{success:!1,error:"Payment already in progress"};s.current=!0,r({status:"loading",error:null,transactionId:null});const p={resource:x,successUrl:C,cancelUrl:l,metadata:a,customerEmail:o,couponCode:d};try{const c=await e.processPayment(p);return r({status:c.success?"success":"error",error:c.success?null:c.error||"Payment failed",transactionId:c.success&&c.transactionId||null}),c}catch(c){const m=c instanceof Error?c.message:"Payment failed";return r({status:"error",error:m,transactionId:null}),{success:!1,error:m}}finally{s.current=!1}},[e]),u=f.useCallback(async(x,C,l,a,o,d,p,c,m,g,y,b,M)=>{if(s.current)return{success:!1,error:"Payment already in progress"};s.current=!0,r({status:"loading",error:null,transactionId:null});const S=ae(x);try{const P=await e.processCartCheckout({items:S,successUrl:C,cancelUrl:l,metadata:a,customerEmail:o,customerName:p,customerPhone:c,shippingAddress:m,billingAddress:g,couponCode:d,tipAmount:y,shippingMethodId:b,paymentMethodId:M});return r({status:P.success?"success":"error",error:P.success?null:P.error||"Cart checkout failed",transactionId:P.success&&P.transactionId||null}),P}catch(P){const _=P instanceof Error?P.message:"Cart checkout failed";return r({status:"error",error:_,transactionId:null}),{success:!1,error:_}}finally{s.current=!1}},[e]),h=f.useCallback(()=>{r({status:"idle",error:null,transactionId:null}),s.current=!1},[]);return{...t,processPayment:n,processCartCheckout:u,reset:h}}function re(e,t){return f.useMemo(()=>{const r=Ke(t),s=e||(t?.length===1?t[0].resource:"");return{isCartMode:r,effectiveResource:s}},[e,t])}const mt=(e,t,r)=>{const s=e[t];return s?typeof s=="function"?s():Promise.resolve(s):new Promise((n,u)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(u.bind(null,new Error("Unknown variable dynamic import: "+t+(t.split("/").length!==r?". Note that variables only represent file names one level deep.":""))))})},le=new Map;let ie=null;async function Ce(e){if(le.has(e))return le.get(e);try{const t=await mt(Object.assign({"./translations/ar.json":()=>Promise.resolve().then(()=>require("./ar-LVoQZTFI.js")),"./translations/bn.json":()=>Promise.resolve().then(()=>require("./bn-BR5Cv1T4.js")),"./translations/de.json":()=>Promise.resolve().then(()=>require("./de-pQxy-oD1.js")),"./translations/en.json":()=>Promise.resolve().then(()=>require("./en-Yikrt96u.js")),"./translations/es.json":()=>Promise.resolve().then(()=>require("./es-D24cg8dD.js")),"./translations/fil.json":()=>Promise.resolve().then(()=>require("./fil-BOBft9G-.js")),"./translations/fr.json":()=>Promise.resolve().then(()=>require("./fr-Ct9ub8Fa.js")),"./translations/he.json":()=>Promise.resolve().then(()=>require("./he-DtQqRKRq.js")),"./translations/id.json":()=>Promise.resolve().then(()=>require("./id-CiM2mL7C.js")),"./translations/in.json":()=>Promise.resolve().then(()=>require("./in-Bzcjmxcc.js")),"./translations/it.json":()=>Promise.resolve().then(()=>require("./it-Blb_pIJl.js")),"./translations/jp.json":()=>Promise.resolve().then(()=>require("./jp-9NHyIuwY.js")),"./translations/kr.json":()=>Promise.resolve().then(()=>require("./kr-DvzJ-0yX.js")),"./translations/ms.json":()=>Promise.resolve().then(()=>require("./ms-BOAu5pUB.js")),"./translations/nl.json":()=>Promise.resolve().then(()=>require("./nl-WHh_DfO8.js")),"./translations/pa.json":()=>Promise.resolve().then(()=>require("./pa-B7kIhZCF.js")),"./translations/pl.json":()=>Promise.resolve().then(()=>require("./pl-H0hBKdvF.js")),"./translations/pt.json":()=>Promise.resolve().then(()=>require("./pt-DwGrViQ3.js")),"./translations/ru.json":()=>Promise.resolve().then(()=>require("./ru-CB2m0UDT.js")),"./translations/ta.json":()=>Promise.resolve().then(()=>require("./ta-CAS197uN.js")),"./translations/th.json":()=>Promise.resolve().then(()=>require("./th-Cpz2cFcg.js")),"./translations/tr.json":()=>Promise.resolve().then(()=>require("./tr-hQrEFk86.js")),"./translations/uk.json":()=>Promise.resolve().then(()=>require("./uk-DrK2Sv8C.js")),"./translations/ur.json":()=>Promise.resolve().then(()=>require("./ur-D5-7mN9a.js")),"./translations/vn.json":()=>Promise.resolve().then(()=>require("./vn-B_iut9YL.js")),"./translations/zh.json":()=>Promise.resolve().then(()=>require("./zh-PR82dCHr.js"))}),`./translations/${e}.json`,3),r=t.default||t;return le.set(e,r),r}catch{return null}}async function gt(){if(ie)return ie;const e=Object.assign({"./translations/ar.json":()=>Promise.resolve().then(()=>require("./ar-LVoQZTFI.js")),"./translations/bn.json":()=>Promise.resolve().then(()=>require("./bn-BR5Cv1T4.js")),"./translations/de.json":()=>Promise.resolve().then(()=>require("./de-pQxy-oD1.js")),"./translations/en.json":()=>Promise.resolve().then(()=>require("./en-Yikrt96u.js")),"./translations/es.json":()=>Promise.resolve().then(()=>require("./es-D24cg8dD.js")),"./translations/fil.json":()=>Promise.resolve().then(()=>require("./fil-BOBft9G-.js")),"./translations/fr.json":()=>Promise.resolve().then(()=>require("./fr-Ct9ub8Fa.js")),"./translations/he.json":()=>Promise.resolve().then(()=>require("./he-DtQqRKRq.js")),"./translations/id.json":()=>Promise.resolve().then(()=>require("./id-CiM2mL7C.js")),"./translations/in.json":()=>Promise.resolve().then(()=>require("./in-Bzcjmxcc.js")),"./translations/it.json":()=>Promise.resolve().then(()=>require("./it-Blb_pIJl.js")),"./translations/jp.json":()=>Promise.resolve().then(()=>require("./jp-9NHyIuwY.js")),"./translations/kr.json":()=>Promise.resolve().then(()=>require("./kr-DvzJ-0yX.js")),"./translations/ms.json":()=>Promise.resolve().then(()=>require("./ms-BOAu5pUB.js")),"./translations/nl.json":()=>Promise.resolve().then(()=>require("./nl-WHh_DfO8.js")),"./translations/pa.json":()=>Promise.resolve().then(()=>require("./pa-B7kIhZCF.js")),"./translations/pl.json":()=>Promise.resolve().then(()=>require("./pl-H0hBKdvF.js")),"./translations/pt.json":()=>Promise.resolve().then(()=>require("./pt-DwGrViQ3.js")),"./translations/ru.json":()=>Promise.resolve().then(()=>require("./ru-CB2m0UDT.js")),"./translations/ta.json":()=>Promise.resolve().then(()=>require("./ta-CAS197uN.js")),"./translations/th.json":()=>Promise.resolve().then(()=>require("./th-Cpz2cFcg.js")),"./translations/tr.json":()=>Promise.resolve().then(()=>require("./tr-hQrEFk86.js")),"./translations/uk.json":()=>Promise.resolve().then(()=>require("./uk-DrK2Sv8C.js")),"./translations/ur.json":()=>Promise.resolve().then(()=>require("./ur-D5-7mN9a.js")),"./translations/vn.json":()=>Promise.resolve().then(()=>require("./vn-B_iut9YL.js")),"./translations/zh.json":()=>Promise.resolve().then(()=>require("./zh-PR82dCHr.js"))}),t=[];for(const r in e){const s=r.match(/\.\/translations\/([a-z]{2,3}(?:-[A-Z]{2})?)\.json$/);s&&t.push(s[1])}return ie=t.length>0?t:["en"],ie}function je(){return typeof navigator>"u"?"en":(navigator.language||navigator.userLanguage||"en").split("-")[0].toLowerCase()}async function ke(e){let t=await Ce(e);if(t||(t=await Ce("en"),t))return t;throw new Error("Critical: No translation files found, not even en.json")}function Ee(e){return(t,r)=>{const s=t.split(".");let n=e;for(const u of s)if(n&&typeof n=="object"&&u in n)n=n[u];else return t;return typeof n!="string"?t:r?Object.entries(r).reduce((u,[h,x])=>u.replace(new RegExp(`\\{${h}\\}`,"g"),x),n):n}}function ht(e,t,r=!0){const s=t.errors[e];if(!s){const n=I.getUserFriendlyError(e);return r&&n.action?`${n.message} ${n.action}`:n.message}return r&&s.action?`${s.message} ${s.action}`:s.message}function G(e){const[t,r]=f.useState(null),[s,n]=f.useState(!0),u=f.useMemo(()=>e||je(),[e]);return f.useEffect(()=>{let x=!1;return(async()=>{n(!0);try{const l=await ke(u);x||(r(l),n(!1))}catch(l){console.error("[CedrosPay] Failed to load translations:",l),x||n(!1)}})(),()=>{x=!0}},[u]),{t:f.useMemo(()=>t?Ee(t):x=>({"ui.purchase":"Purchase","ui.pay_with_card":"Pay with Card","ui.pay_with_crypto":"Pay with USDC","ui.pay_with_usdc":"Pay with USDC","ui.card":"Card","ui.usdc_solana":"USDC (Solana)","ui.crypto":"Crypto","ui.processing":"Processing...","ui.loading":"Loading...","ui.connect_wallet":"Connect Wallet","ui.connecting":"Connecting..."})[x]||x,[t]),locale:u,isLoading:s,translations:t}}function yt(e,t=!0){const{translations:r}=G();if(!r){const n=I.getUserFriendlyError(e);return t&&n.action?`${n.message} ${n.action}`:n.message}const s=r.errors[e];if(!s){const n=I.getUserFriendlyError(e);return t&&n.action?`${n.message} ${n.action}`:n.message}return t&&s.action?`${s.message} ${s.action}`:s.message}function fe({resource:e,items:t,successUrl:r,cancelUrl:s,metadata:n,customerEmail:u,couponCode:h,label:x,disabled:C=!1,onAttempt:l,onSuccess:a,onError:o,className:d=""}){const{status:p,error:c,transactionId:m,processPayment:g,processCartCheckout:y}=pe(),b=I.useCedrosTheme(),{isCartMode:M,effectiveResource:S}=re(e,t),{t:P,translations:_}=G(),$=x||P("ui.pay_with_card"),z=b.unstyled?d:`${b.className} cedros-theme__stripe-button ${d}`.trim(),A=c&&typeof c!="string"?c?.code??null:null,w=c?typeof c=="string"?c:(v=>{if(!v||!_)return"";const E=_.errors[v];return E?E.action?`${E.message} ${E.action}`:E.message:""})(A):null,j=f.useCallback(async()=>{L.getLogger().debug("[StripeButton] executePayment with couponCode:",h);const v=M&&t?te(t):void 0;if(J("stripe",S,v),l&&l("stripe"),!M&&!S){const O="Invalid payment configuration: missing resource or items";L.getLogger().error("[StripeButton]",O),W("stripe",O,S,v),o&&o(O);return}let E;Z("stripe",S,v),M&&t?(L.getLogger().debug("[StripeButton] Processing cart checkout with coupon:",h),E=await y(t,r,s,n,u,h)):S&&(L.getLogger().debug("[StripeButton] Processing single payment with coupon:",h),E=await g(S,r,s,n,u,h)),E&&E.success&&E.transactionId?(ee("stripe",E.transactionId,S,v),a&&a(E.transactionId)):E&&!E.success&&E.error&&(W("stripe",E.error,S,v),o&&o(E.error))},[h,M,S,t,r,s,n,u,y,g,l,a,o]),B=f.useMemo(()=>M&&t?`stripe-cart-${t.map(v=>v.resource).join("-")}`:`stripe-${S||"unknown"}`,[M,t,S]),k=f.useMemo(()=>X(B,j),[B,j]),T=p==="loading",R=C||T;return i.jsxs("div",{className:z,style:b.unstyled?{}:b.style,children:[i.jsx("button",{onClick:k,disabled:R,className:b.unstyled?d:"cedros-theme__button cedros-theme__stripe",type:"button",children:T?P("ui.processing"):$}),w&&i.jsx("div",{className:b.unstyled?"":"cedros-theme__error",children:w}),m&&i.jsx("div",{className:b.unstyled?"":"cedros-theme__success",children:P("ui.payment_successful")})]})}function Me(){const{creditsManager:e}=I.useCedrosContext(),[t,r]=f.useState({status:"idle",error:null,transactionId:null,requirement:null,holdId:null}),s=f.useRef(!1),n=f.useCallback(async(l,a)=>{r(o=>({...o,status:"loading",error:null}));try{const o=await e.requestQuote(l,a);return r(d=>({...d,status:"idle",requirement:o})),o}catch(o){const d=o instanceof Error?o.message:"Failed to fetch credits quote";return r(p=>({...p,status:"error",error:d})),null}},[e]),u=f.useCallback(async(l,a)=>{r(o=>({...o,status:"loading",error:null}));try{const o=ae(l),d=await e.requestCartQuote(o,a);return r(p=>({...p,status:"idle"})),d}catch(o){const d=o instanceof Error?o.message:"Failed to fetch cart credits quote";return r(p=>({...p,status:"error",error:d})),null}},[e]),h=f.useCallback(async(l,a,o,d)=>{if(s.current)return{success:!1,error:"Payment already in progress"};s.current=!0,r({status:"loading",error:null,transactionId:null,requirement:null,holdId:null});try{const p=await e.processPayment(l,a,o,d);return r({status:p.success?"success":"error",error:p.success?null:p.error||"Credits payment failed",transactionId:p.success&&p.transactionId||null,requirement:null,holdId:null}),p}catch(p){const c=p instanceof Error?p.message:"Credits payment failed";return r({status:"error",error:c,transactionId:null,requirement:null,holdId:null}),{success:!1,error:c}}finally{s.current=!1}},[e]),x=f.useCallback(async(l,a,o,d)=>{if(s.current)return{success:!1,error:"Payment already in progress"};s.current=!0,r({status:"loading",error:null,transactionId:null,requirement:null,holdId:null});let p=null;try{const c=ae(l),m=await e.requestCartQuote(c,o);if(!m)return r({status:"error",error:"Credits payment not available for this cart",transactionId:null,requirement:null,holdId:null}),{success:!1,error:"Credits payment not available"};p=(await e.createCartHold({cartId:m.cartId,authToken:a})).holdId,r(b=>({...b,holdId:p}));const y=await e.authorizeCartPayment({cartId:m.cartId,holdId:p,authToken:a,metadata:d});if(!y.success&&p)try{await e.releaseHold(p,a)}catch(b){L.getLogger().warn("[useCreditsPayment] Hold release failed, will expire server-side",{holdId:p,error:b instanceof Error?b.message:String(b)})}return r({status:y.success?"success":"error",error:y.success?null:y.error||"Cart credits payment failed",transactionId:y.success&&y.transactionId||null,requirement:null,holdId:null}),{success:y.success,transactionId:y.transactionId,error:y.error}}catch(c){const m=c instanceof Error?c.message:"Cart credits payment failed";if(p)try{await e.releaseHold(p,a)}catch(g){L.getLogger().warn("[useCreditsPayment] Hold release failed, will expire server-side",{holdId:p,error:g instanceof Error?g.message:String(g)})}return r({status:"error",error:m,transactionId:null,requirement:null,holdId:null}),{success:!1,error:m}}finally{s.current=!1}},[e]),C=f.useCallback(()=>{r({status:"idle",error:null,transactionId:null,requirement:null,holdId:null}),s.current=!1},[]);return{...t,fetchQuote:n,fetchCartQuote:u,processPayment:h,processCartPayment:x,reset:C}}function me({resource:e,items:t,authToken:r,metadata:s,couponCode:n,label:u,disabled:h=!1,onAttempt:x,onSuccess:C,onError:l,className:a=""}){const{status:o,error:d,transactionId:p,processPayment:c,processCartPayment:m}=Me(),g=I.useCedrosTheme(),{isCartMode:y,effectiveResource:b}=re(e,t),{t:M,translations:S}=G(),P=u||M("ui.pay_with_credits")||"Pay with Credits",_=g.unstyled?a:`${g.className} cedros-theme__credits-button ${a}`.trim(),$=d&&typeof d!="string"?d?.code??null:null,A=d?typeof d=="string"?d:(T=>{if(!T||!S)return"";const R=S.errors[T];return R?R.action?`${R.message} ${R.action}`:R.message:""})($):null,q=f.useCallback(async()=>{L.getLogger().debug("[CreditsButton] executePayment");const T=y&&t?te(t):void 0;if(J("credits",b,T),x&&x("credits"),!r){const v="Authentication required: please log in to pay with credits";L.getLogger().error("[CreditsButton]",v),W("credits",v,b,T),l&&l(v);return}if(!y&&!b){const v="Invalid payment configuration: missing resource";L.getLogger().error("[CreditsButton]",v),W("credits",v,b,T),l&&l(v);return}let R;Z("credits",b,T),y&&t?(L.getLogger().debug("[CreditsButton] Processing cart checkout"),R=await m(t,r,n,s)):b&&(L.getLogger().debug("[CreditsButton] Processing single payment"),R=await c(b,r,n,s)),R&&R.success&&R.transactionId?(ee("credits",R.transactionId,b,T),C&&C(R.transactionId)):R&&!R.success&&R.error&&(W("credits",R.error,b,T),l&&l(R.error))},[r,y,b,t,n,s,c,m,x,C,l]),w=f.useMemo(()=>y&&t?`credits-cart-${t.map(T=>T.resource).join("-")}`:`credits-${b||"unknown"}`,[y,t,b]),j=f.useMemo(()=>X(w,q),[w,q]),B=o==="loading",k=h||B;return i.jsxs("div",{className:_,style:g.unstyled?{}:g.style,children:[i.jsx("button",{onClick:j,disabled:k,className:g.unstyled?a:"cedros-theme__button cedros-theme__credits",type:"button",children:B?M("ui.processing"):P}),A&&i.jsx("div",{className:g.unstyled?"":"cedros-theme__error",children:A}),p&&i.jsx("div",{className:g.unstyled?"":"cedros-theme__success",children:M("ui.payment_successful")})]})}const bt=f.lazy(()=>Promise.resolve().then(()=>require("./CryptoButton-BQceZhbn.js")).then(e=>e.CryptoButton$1).then(e=>({default:e.CryptoButton}))),Re=({isOpen:e,onClose:t,resource:r,items:s,cardLabel:n="Card",cryptoLabel:u="USDC (Solana)",creditsLabel:h="Pay with Credits",showCard:x=!0,showCrypto:C=!0,showCredits:l=!1,onPaymentAttempt:a,onPaymentSuccess:o,onPaymentError:d,onStripeSuccess:p,onCryptoSuccess:c,onCreditsSuccess:m,onStripeError:g,onCryptoError:y,onCreditsError:b,customerEmail:M,successUrl:S,cancelUrl:P,metadata:_,couponCode:$,authToken:z,testPageUrl:A,hideMessages:q=!1})=>{const{tokens:w}=I.useCedrosTheme();return f.useEffect(()=>{const j=B=>{B.key==="Escape"&&e&&t()};return window.addEventListener("keydown",j),()=>window.removeEventListener("keydown",j)},[e,t]),f.useEffect(()=>{if(e){const j=window.scrollY;return document.body.style.position="fixed",document.body.style.top=`-${j}px`,document.body.style.width="100%",document.body.style.overflowY="scroll",()=>{const B=document.body.style.top?Math.abs(parseInt(document.body.style.top.replace("px",""),10)):0;document.body.style.position="",document.body.style.top="",document.body.style.width="",document.body.style.overflowY="",window.scrollTo(0,B)}}},[e]),e?i.jsx("div",{className:"cedros-modal-overlay",style:{position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:w.modalOverlay,display:"flex",alignItems:"center",justifyContent:"center",zIndex:9999,padding:"1rem"},onClick:t,children:i.jsxs("div",{className:"cedros-modal-content",style:{backgroundColor:w.modalBackground,borderRadius:"12px",padding:"2rem",maxWidth:"400px",width:"100%",boxShadow:"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)",border:`1px solid ${w.modalBorder}`},onClick:j=>j.stopPropagation(),children:[i.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1.5rem"},children:[i.jsx("h3",{style:{margin:0,fontSize:"1.25rem",fontWeight:600,color:w.surfaceText},children:"Choose Payment Method"}),i.jsx("button",{type:"button",onClick:t,style:Se(w.surfaceText),"aria-label":"Close modal",children:"×"})]}),i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"1rem"},children:[x&&i.jsx(fe,{resource:r,items:s,label:n,onAttempt:a,onSuccess:p||o,onError:g||d,customerEmail:M,successUrl:S,cancelUrl:P,metadata:_,couponCode:$}),C&&i.jsx(f.Suspense,{fallback:null,children:i.jsx(bt,{resource:r,items:s,label:u,onAttempt:a,onSuccess:c||o,onError:y||d,testPageUrl:A,hideMessages:q,metadata:_,couponCode:$})}),l&&i.jsx(me,{resource:r,items:s,label:h,authToken:z,onAttempt:a?()=>a("credits"):void 0,onSuccess:m||o,onError:b||d,metadata:_,couponCode:$})]})]})}):null},Te=({resource:e,items:t,label:r,cardLabel:s,cryptoLabel:n,creditsLabel:u,showCard:h=!0,showCrypto:x=!0,showCredits:C=!1,onPaymentAttempt:l,onPaymentSuccess:a,onPaymentError:o,onStripeSuccess:d,onCryptoSuccess:p,onCreditsSuccess:c,onStripeError:m,onCryptoError:g,onCreditsError:y,customerEmail:b,successUrl:M,cancelUrl:S,metadata:P,couponCode:_,authToken:$,autoDetectWallets:z=!0,testPageUrl:A,hideMessages:q=!1,renderModal:w})=>{const j=I.useCedrosTheme(),[B,k]=f.useState(!1),{status:T,processPayment:R,processCartCheckout:v}=pe(),{isCartMode:E,effectiveResource:O}=re(e,t),{t:N}=G(),F=r||N("ui.purchase"),Ne=s||N("ui.card"),De=n||N("ui.usdc_solana"),Be=u||N("ui.pay_with_credits")||"Pay with Credits",ge=f.useCallback(async()=>{if(z&&h){const{detectSolanaWallets:D}=await Promise.resolve().then(()=>require("./walletDetection-bNmV5ItZ.js"));if(!D()){const ne=E?void 0:O,oe=E&&t?te(t):void 0;J("stripe",ne,oe),l&&l("stripe"),Z("stripe",ne,oe);let U;E&&t?U=await v(t,M,S,P,b,_):O&&(U=await R(O,M,S,P,b,_)),U&&U.success&&U.transactionId?(ee("stripe",U.transactionId,ne,oe),d?d(U.transactionId):a&&a(U.transactionId)):U&&!U.success&&U.error&&(W("stripe",U.error,ne,oe),m?m(U.error):o&&o(U.error));return}}k(!0)},[z,h,E,t,O,v,R,M,S,P,b,_,a,o,d,m,l]),he=f.useMemo(()=>E&&t?`purchase-cart-${t.map(D=>D.resource).join("-")}`:`purchase-${O||"unknown"}`,[E,t,O]),$e=f.useMemo(()=>X(he,ge),[he,ge]),se=T==="loading",ye={isOpen:B,onClose:()=>k(!1),resource:E?void 0:O,items:E?t:void 0,cardLabel:Ne,cryptoLabel:De,creditsLabel:Be,showCard:h,showCrypto:x,showCredits:C,onPaymentAttempt:l,onPaymentSuccess:D=>{k(!1),a?.(D)},onPaymentError:D=>{k(!1),o?.(D)},onStripeSuccess:D=>{k(!1),d?.(D)},onCryptoSuccess:D=>{k(!1),p?.(D)},onCreditsSuccess:D=>{k(!1),c?.(D)},onStripeError:D=>{k(!1),m?.(D)},onCryptoError:D=>{k(!1),g?.(D)},onCreditsError:D=>{k(!1),y?.(D)},customerEmail:b,successUrl:M,cancelUrl:S,metadata:P,couponCode:_,authToken:$,testPageUrl:A,hideMessages:q};return i.jsxs("div",{className:j.unstyled?"":j.className,style:j.unstyled?{}:j.style,children:[i.jsx("button",{onClick:$e,disabled:se,className:j.unstyled?"":"cedros-theme__button cedros-theme__stripe",style:{width:"100%",cursor:se?"not-allowed":"pointer",opacity:se?.6:1},type:"button",children:se?N("ui.processing"):F}),w?w(ye):i.jsx(Re,{...ye})]})},Ct={"mainnet-beta":"https://api.mainnet-beta.solana.com",devnet:"https://api.devnet.solana.com",testnet:"https://api.testnet.solana.com"};function xt(){const[e,t]=f.useState(null);return f.useEffect(()=>{let r=!1;return import("@solana/wallet-adapter-react").then(s=>{r||t(s)}),()=>{r=!0}},[]),e}function wt({endpoint:e,wallets:t,children:r}){const s=xt();if(!s)return i.jsx(i.Fragment,{children:r});const{ConnectionProvider:n,WalletProvider:u}=s;return i.jsx(n,{endpoint:e,children:i.jsx(u,{wallets:t,autoConnect:!1,children:r})})}const St=f.lazy(()=>Promise.resolve().then(()=>require("./CryptoButton-BQceZhbn.js")).then(e=>e.CryptoButton$1).then(e=>({default:e.CryptoButton})));function Pt(e){const{resource:t,items:r,checkout:s={},display:n={},callbacks:u={},advanced:h={}}=e,{config:x,walletPool:C}=I.useCedrosContext(),l=I.useCedrosTheme(),{isCartMode:a}=re(t,r),o=n.showCrypto??!0,d=f.useMemo(()=>({marginTop:"0.5rem",fontSize:"0.875rem",color:l.tokens.surfaceText,opacity:.7,textAlign:"center"}),[l.tokens.surfaceText]),p=f.useMemo(()=>o?h.wallets&&h.wallets.length>0?h.wallets:C.getAdapters():[],[h.wallets,C,o]),c=f.useMemo(()=>r?te(r):0,[r]),{onPaymentSuccess:m,onPaymentError:g,onPaymentAttempt:y}=u,b=f.useCallback(v=>m?.({transactionId:v,method:"stripe"}),[m]),M=f.useCallback(v=>m?.({transactionId:v,method:"crypto"}),[m]),S=f.useCallback(v=>g?.({message:v,method:"stripe"}),[g]),P=f.useCallback(v=>g?.({message:v,method:"crypto"}),[g]),_=f.useCallback(v=>m?.({transactionId:v,method:"credits"}),[m]),$=f.useCallback(v=>g?.({message:v,method:"credits"}),[g]),z=f.useCallback(()=>y?.("credits"),[y]),A=o?x.solanaEndpoint??Ct[x.solanaCluster]:"";if(!t&&(!r||r.length===0))return L.getLogger().error('CedrosPay: Must provide either "resource" or "items" prop'),i.jsx("div",{className:n.className,style:{color:l.tokens.errorText},children:"Configuration error: No resource or items provided"});const q=n.showCard??!0,w=n.showCredits??!1,j=n.showPurchaseButton??!1,B=n.layout??"vertical",k=n.hideMessages??!1,T=h.autoDetectWallets??!0,R=i.jsx("div",{className:l.unstyled?n.className:`cedros-theme__pay ${n.className||""}`,children:i.jsxs("div",{className:l.unstyled?"":`cedros-theme__pay-content cedros-theme__pay-content--${B}`,children:[j?i.jsx(Te,{resource:a?void 0:t||r?.[0]?.resource,items:a?r:void 0,label:n.purchaseLabel,cardLabel:n.cardLabel,cryptoLabel:n.cryptoLabel,showCard:q,showCrypto:o,onPaymentAttempt:u.onPaymentAttempt,onPaymentSuccess:b,onPaymentError:S,onStripeSuccess:b,onCryptoSuccess:M,onStripeError:S,onCryptoError:P,customerEmail:s.customerEmail,successUrl:s.successUrl,cancelUrl:s.cancelUrl,metadata:s.metadata,couponCode:s.couponCode,autoDetectWallets:T,testPageUrl:h.testPageUrl,hideMessages:k,renderModal:n.renderModal}):i.jsxs(i.Fragment,{children:[q&&i.jsx(fe,{resource:a?void 0:t||r?.[0]?.resource,items:a?r:void 0,customerEmail:s.customerEmail,successUrl:s.successUrl,cancelUrl:s.cancelUrl,metadata:s.metadata,couponCode:s.couponCode,label:n.cardLabel,onAttempt:u.onPaymentAttempt,onSuccess:b,onError:S}),o&&i.jsx(f.Suspense,{fallback:null,children:i.jsx(St,{resource:a?void 0:t||r?.[0]?.resource,items:a?r:void 0,metadata:s.metadata,couponCode:s.couponCode,label:n.cryptoLabel,onAttempt:u.onPaymentAttempt,onSuccess:M,onError:P,testPageUrl:h.testPageUrl,hideMessages:k})}),w&&i.jsx(me,{resource:a?void 0:t||r?.[0]?.resource,items:a?r:void 0,authToken:s.authToken,metadata:s.metadata,couponCode:s.couponCode,label:n.creditsLabel,onAttempt:z,onSuccess:_,onError:$})]}),a&&r&&r.length>1&&!k&&i.jsxs("div",{style:d,children:["Checking out ",c," items"]})]})});return i.jsx("div",{className:l.unstyled?n.className:l.className,style:l.unstyled?{}:l.style,children:i.jsx(wt,{endpoint:A||"https://api.devnet.solana.com",wallets:p,children:R})})}function vt({product:e,paymentMethod:t,showOriginalPrice:r=!1,className:s="",style:n={}}){const u=t==="stripe",h=u?e.fiatAmount:e.cryptoAmount,x=u?e.effectiveFiatAmount:e.effectiveCryptoAmount,C=u?e.fiatCurrency.toUpperCase():e.cryptoToken,l=u?e.hasStripeCoupon:e.hasCryptoCoupon,a=u?e.stripeDiscountPercent:e.cryptoDiscountPercent;return i.jsxs("div",{className:s,style:n,children:[r&&l&&i.jsxs("span",{style:{textDecoration:"line-through",opacity:.6,marginRight:"0.5rem",fontSize:"0.875em"},children:[h.toFixed(2)," ",C]}),i.jsxs("span",{style:{fontWeight:600},children:[x.toFixed(2)," ",C]}),l&&a>0&&i.jsxs("span",{style:{marginLeft:"0.5rem",padding:"0.125rem 0.375rem",backgroundColor:"#10b981",color:"white",borderRadius:"0.25rem",fontSize:"0.75em",fontWeight:600},children:[a,"% OFF"]})]})}function jt({product:e,paymentMethod:t,className:r="",style:s={}}){const n=t==="stripe",u=n?e.hasStripeCoupon:e.hasCryptoCoupon,h=n?e.stripeDiscountPercent:e.cryptoDiscountPercent,x=n?e.stripeCouponCode:e.cryptoCouponCode;if(!u||h===0)return null;const C=n?`${h}% off with card!`:`${h}% off with crypto!`;return i.jsxs("div",{className:r,style:{display:"inline-flex",alignItems:"center",padding:"0.5rem 0.75rem",backgroundColor:n?"#6366f1":"#10b981",color:"white",borderRadius:"0.375rem",fontSize:"0.875rem",fontWeight:600,...s},children:[C,x&&i.jsxs("span",{style:{marginLeft:"0.5rem",opacity:.8,fontSize:"0.75em",fontWeight:400},children:["(",x,")"]})]})}function _e(){const{subscriptionManager:e}=I.useCedrosContext(),[t,r]=f.useState({status:"idle",error:null,sessionId:null,subscriptionStatus:null,expiresAt:null}),s=f.useRef(!1),n=f.useCallback(async C=>{if(s.current)return{success:!1,error:"Payment already in progress"};s.current=!0,r(l=>({...l,status:"loading",error:null}));try{const l=await e.processSubscription(C);return r(a=>({...a,status:l.success?"success":"error",error:l.success?null:l.error||"Subscription failed",sessionId:l.success&&l.transactionId||null})),l}catch(l){const a=I.formatError(l,"Subscription failed");return r(o=>({...o,status:"error",error:a})),{success:!1,error:a}}finally{s.current=!1}},[e]),u=f.useCallback(async C=>{r(l=>({...l,status:"checking",error:null}));try{const l=await e.checkSubscriptionStatus(C);return r(a=>({...a,status:l.active?"success":"idle",subscriptionStatus:l.status,expiresAt:l.expiresAt||l.currentPeriodEnd||null})),l}catch(l){const a=l instanceof Error?l.message:"Failed to check subscription status";throw r(o=>({...o,status:"error",error:a})),l}},[e]),h=f.useCallback(async(C,l,a)=>{r(o=>({...o,status:"loading",error:null}));try{const o=await e.requestSubscriptionQuote(C,l,a);return r(d=>({...d,status:"idle"})),o}catch(o){const d=o instanceof Error?o.message:"Failed to get subscription quote";throw r(p=>({...p,status:"error",error:d})),o}},[e]),x=f.useCallback(()=>{r({status:"idle",error:null,sessionId:null,subscriptionStatus:null,expiresAt:null})},[]);return{...t,processSubscription:n,checkStatus:u,requestQuote:h,reset:x}}function kt({resource:e,interval:t,intervalDays:r,trialDays:s,successUrl:n,cancelUrl:u,customerEmail:h,label:x,disabled:C=!1,onAttempt:l,onSuccess:a,onError:o,className:d=""}){const{status:p,error:c,sessionId:m,processSubscription:g}=_e(),y=I.useCedrosTheme(),{t:b,translations:M}=G(),S=x||b("ui.subscribe"),P=y.unstyled?d:`${y.className} cedros-theme__stripe-button ${d}`.trim(),_=c&&typeof c!="string"?c?.code??null:null,z=c?typeof c=="string"?c:(k=>{if(!k||!M)return"";const T=M.errors[k];return T?T.action?`${T.message} ${T.action}`:T.message:""})(_):null,A=f.useCallback(async()=>{L.getLogger().debug("[SubscribeButton] executeSubscription:",{resource:e,interval:t,intervalDays:r,trialDays:s}),J("stripe",e),l&&l("stripe"),Z("stripe",e);const k=await g({resource:e,interval:t,intervalDays:r,trialDays:s,customerEmail:h,successUrl:n,cancelUrl:u});k.success&&k.transactionId?(ee("stripe",k.transactionId,e),a&&a(k.transactionId)):!k.success&&k.error&&(W("stripe",k.error,e),o&&o(k.error))},[e,t,r,s,h,n,u,g,l,a,o]),q=f.useMemo(()=>`subscribe-${e}-${t}`,[e,t]),w=f.useMemo(()=>X(q,A),[q,A]),j=p==="loading",B=C||j;return i.jsxs("div",{className:P,style:y.unstyled?{}:y.style,children:[i.jsx("button",{onClick:w,disabled:B,className:y.unstyled?d:"cedros-theme__button cedros-theme__stripe",type:"button",children:j?b("ui.processing"):S}),z&&i.jsx("div",{className:y.unstyled?"":"cedros-theme__error",children:z}),m&&i.jsx("div",{className:y.unstyled?"":"cedros-theme__success",children:b("ui.redirecting_to_checkout")})]})}function Ie(){const{subscriptionManager:e,creditsManager:t}=I.useCedrosContext(),[r,s]=f.useState({status:"idle",error:null,sessionId:null,subscriptionStatus:null,expiresAt:null,creditsRequirement:null}),n=f.useRef(!1),u=f.useCallback(async(l,a)=>{s(o=>({...o,status:"checking",error:null}));try{const o=await e.checkSubscriptionStatus({resource:l,userId:a});return s(d=>({...d,status:o.active?"success":"idle",subscriptionStatus:o.status,expiresAt:o.expiresAt||o.currentPeriodEnd||null})),o}catch(o){const d=I.formatError(o,"Failed to check subscription status");return s(p=>({...p,status:"error",error:d})),null}},[e]),h=f.useCallback(async(l,a,o)=>{s(d=>({...d,status:"loading",error:null}));try{const d=await t.requestQuote(l,o?.couponCode);return s(p=>({...p,status:"idle",creditsRequirement:d})),d}catch(d){const p=I.formatError(d,"Failed to get subscription quote");return s(c=>({...c,status:"error",error:p})),null}},[t]),x=f.useCallback(async(l,a,o,d)=>{if(n.current)return{success:!1,error:"Payment already in progress"};if(!o){const p="Authentication required for credits payment";return s(c=>({...c,status:"error",error:p})),{success:!1,error:p}}n.current=!0,s(p=>({...p,status:"loading",error:null}));try{const p=await t.processPayment(l,o,d?.couponCode,{interval:a,...d?.intervalDays&&{intervalDays:String(d.intervalDays)}});return p.success?s({status:"success",error:null,sessionId:p.transactionId||null,subscriptionStatus:"active",expiresAt:null,creditsRequirement:null}):s(c=>({...c,status:"error",error:p.error||"Credits subscription payment failed"})),p}catch(p){const c=I.formatError(p,"Credits subscription payment failed");return s(m=>({...m,status:"error",error:c})),{success:!1,error:c}}finally{n.current=!1}},[t]),C=f.useCallback(()=>{s({status:"idle",error:null,sessionId:null,subscriptionStatus:null,expiresAt:null,creditsRequirement:null})},[]);return{...r,checkStatus:u,requestQuote:h,processPayment:x,reset:C}}function Et({resource:e,interval:t,intervalDays:r,authToken:s,userId:n,couponCode:u,label:h,disabled:x=!1,onAttempt:C,onSuccess:l,onError:a,className:o="",hideMessages:d=!1,autoCheckStatus:p=!1}){const{status:c,error:m,subscriptionStatus:g,expiresAt:y,checkStatus:b,processPayment:M}=Ie(),S=I.useCedrosTheme(),{t:P,translations:_}=G(),$=f.useRef(b);f.useEffect(()=>{$.current=b},[b]),f.useEffect(()=>{p&&n&&(L.getLogger().debug("[CreditsSubscribeButton] Auto-checking subscription status",{resource:e,userId:n}),$.current(e,n))},[p,n,e]);const z=h||P("ui.subscribe_with_credits")||"Subscribe with Credits",A=m&&typeof m!="string"?m?.code??null:null,w=m?typeof m=="string"?m:(N=>{if(!N||!_)return"";const F=_.errors[N];return F?F.action?`${F.message} ${F.action}`:F.message:""})(A):null,j=f.useCallback(async()=>{if(L.getLogger().debug("[CreditsSubscribeButton] executeSubscriptionFlow",{resource:e,interval:t,intervalDays:r,hasAuthToken:!!s}),J("credits",e),C&&C("credits"),!s){const F="Authentication required: please log in to subscribe with credits";L.getLogger().error("[CreditsSubscribeButton]",F),W("credits",F,e),a&&a(F);return}Z("credits",e);const N=await M(e,t,s,{couponCode:u,intervalDays:r});N.success&&N.transactionId?(ee("credits",N.transactionId,e),l&&l(N.transactionId)):!N.success&&N.error&&(W("credits",N.error,e),a&&a(N.error))},[e,t,r,s,u,M,C,l,a]),B=f.useMemo(()=>`credits-subscribe-${e}-${t}`,[e,t]),k=f.useMemo(()=>X(B,j,{cooldownMs:200,deduplicationWindowMs:0}),[B,j]),T=c==="loading"||c==="checking",R=g==="active"||g==="trialing",v=x||T||R;let E=z;if(T)E=P("ui.processing");else if(R&&y){const N=new Date(y).toLocaleDateString();E=`${P("ui.subscribed_until")} ${N}`}else R&&(E=P("ui.subscribed"));const O=S.unstyled?o:`${S.className} cedros-theme__credits-button ${o}`.trim();return i.jsxs("div",{className:O,style:S.unstyled?{}:S.style,children:[i.jsx("button",{onClick:k,disabled:v,className:S.unstyled?o:"cedros-theme__button cedros-theme__credits",type:"button",children:E}),!d&&w&&i.jsx("div",{className:S.unstyled?"":"cedros-theme__error",children:w}),!d&&R&&i.jsx("div",{className:S.unstyled?"":"cedros-theme__success",children:P("ui.subscription_active")})]})}function qe(){const{subscriptionChangeManager:e}=I.useCedrosContext(),[t,r]=f.useState({status:"idle",error:null,subscription:null,changePreview:null,userId:null}),s=f.useRef(t);s.current=t;const n=f.useCallback(async(o,d)=>{r(p=>({...p,status:"loading",error:null}));try{const p=await e.getDetails(o,d);return r(c=>({...c,status:"success",subscription:p,userId:d})),p}catch(p){const c=p instanceof Error?p.message:"Failed to load subscription";return r(m=>({...m,status:"error",error:c})),null}},[e]),u=f.useCallback(async(o,d,p,c)=>{r(m=>({...m,status:"loading",error:null}));try{const m={currentResource:o,newResource:d,userId:p,newInterval:c},g=await e.previewChange(m);return r(y=>({...y,status:"idle",changePreview:g})),g}catch(m){const g=m instanceof Error?m.message:"Failed to preview change";return r(y=>({...y,status:"error",error:g})),null}},[e]),h=f.useCallback(async o=>{const{subscription:d,userId:p}=s.current;if(!d||!p)return r(c=>({...c,status:"error",error:"No subscription loaded"})),null;r(c=>({...c,status:"loading",error:null}));try{const c={subscriptionId:d.id,newResource:o.newResource,prorationBehavior:o.prorationBehavior},m=await e.changeSubscription(c);return m.success?r(g=>({...g,status:"success",subscription:g.subscription?{...g.subscription,resource:m.newResource,interval:g.subscription.interval,status:m.status,currentPeriodEnd:m.currentPeriodEnd}:null,changePreview:null})):r(g=>({...g,status:"error",error:m.error||"Failed to change subscription"})),m}catch(c){const m=c instanceof Error?c.message:"Failed to change subscription";return r(g=>({...g,status:"error",error:m})),null}},[e]),x=f.useCallback(async o=>{const{subscription:d,userId:p}=s.current;if(!d||!p)return r(c=>({...c,status:"error",error:"No subscription loaded"})),null;r(c=>({...c,status:"loading",error:null}));try{const c={subscriptionId:d.id,atPeriodEnd:!o},m=await e.cancel(c);if(m.success){const g=m.atPeriodEnd?d.status:"canceled";r(y=>({...y,status:"success",subscription:y.subscription?{...y.subscription,status:g,cancelAtPeriodEnd:m.atPeriodEnd}:null}))}else r(g=>({...g,status:"error",error:m.error||"Failed to cancel subscription"}));return m}catch(c){const m=c instanceof Error?c.message:"Failed to cancel subscription";return r(g=>({...g,status:"error",error:m})),null}},[e]),C=f.useCallback(async(o,d)=>{const p=s.current.subscription?.customerId??(o.startsWith("cus_")?o:null);if(!p)return r(c=>({...c,status:"error",error:"No Stripe customer ID available for billing portal"})),null;r(c=>({...c,status:"loading",error:null}));try{const c=await e.getBillingPortalUrl({customerId:p,returnUrl:d});try{if(new URL(c.url).protocol!=="https:")throw new Error("Billing portal URL must use HTTPS")}catch{throw new Error("Invalid billing portal URL")}return window.location.href=c.url,c}catch(c){const m=c instanceof Error?c.message:"Failed to open billing portal";return r(g=>({...g,status:"error",error:m})),null}},[e]),l=f.useCallback(()=>{r(o=>({...o,changePreview:null}))},[]),a=f.useCallback(()=>{r({status:"idle",error:null,subscription:null,changePreview:null,userId:null})},[]);return{...t,loadSubscription:n,previewChange:u,changeSubscription:h,cancelSubscription:x,openBillingPortal:C,clearPreview:l,reset:a}}const Mt={bg:"#fff",bgMuted:"#f9fafb",bgHighlight:"#eff6ff",text:"#111827",textMuted:"#6b7280",textFaint:"#9ca3af",border:"#e5e7eb",borderLight:"#f3f4f6",primary:"#3b82f6",error:"#ef4444",errorBg:"#fef2f2",errorBorder:"#fecaca",warningBg:"#fef3c7",warningBorder:"#fcd34d",warningText:"#92400e",buttonBg:"#f3f4f6",buttonBorder:"#d1d5db",buttonText:"#374151"},Rt={bg:"#1e293b",bgMuted:"#334155",bgHighlight:"rgba(59, 130, 246, 0.15)",text:"#f1f5f9",textMuted:"#94a3b8",textFaint:"#64748b",border:"#475569",borderLight:"#334155",primary:"#3b82f6",error:"#ef4444",errorBg:"rgba(239, 68, 68, 0.15)",errorBorder:"rgba(239, 68, 68, 0.3)",warningBg:"rgba(245, 158, 11, 0.15)",warningBorder:"rgba(245, 158, 11, 0.3)",warningText:"#fbbf24",buttonBg:"#334155",buttonBorder:"#475569",buttonText:"#e2e8f0"};function Tt(e){const t=e?Rt:Mt;return{container:{padding:"24px",backgroundColor:t.bg,borderRadius:"8px",border:`1px solid ${t.border}`,fontFamily:"system-ui, -apple-system, sans-serif",color:t.text},error:{padding:"12px 16px",backgroundColor:t.errorBg,border:`1px solid ${t.errorBorder}`,borderRadius:"6px",color:t.error,marginBottom:"16px"},loading:{padding:"24px",textAlign:"center",color:t.textMuted},details:{marginBottom:"24px"},title:{margin:"0 0 16px 0",fontSize:"18px",fontWeight:600,color:t.text},detailRow:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"8px 0",borderBottom:`1px solid ${t.borderLight}`},label:{color:t.textMuted,fontSize:"14px"},value:{color:t.text,fontSize:"14px",fontWeight:500},statusBadge:{padding:"4px 8px",borderRadius:"4px",color:"#fff",fontSize:"12px",fontWeight:500,textTransform:"capitalize"},cancelNotice:{marginTop:"12px",padding:"8px 12px",backgroundColor:t.warningBg,border:`1px solid ${t.warningBorder}`,borderRadius:"6px",color:t.warningText,fontSize:"13px"},prorationPreview:{padding:"16px",backgroundColor:t.bgMuted,borderRadius:"8px",marginBottom:"24px"},previewTitle:{margin:"0 0 12px 0",fontSize:"16px",fontWeight:600,color:t.text},previewDetails:{marginBottom:"16px"},previewRow:{display:"flex",justifyContent:"space-between",padding:"6px 0",fontSize:"14px",color:t.textMuted},previewTotal:{borderTop:`1px solid ${t.border}`,marginTop:"8px",paddingTop:"12px",fontWeight:600,color:t.text},previewActions:{display:"flex",gap:"12px",justifyContent:"flex-end"},cancelButton:{padding:"8px 16px",backgroundColor:t.bg,border:`1px solid ${t.buttonBorder}`,borderRadius:"6px",color:t.buttonText,cursor:"pointer",fontSize:"14px"},confirmButton:{padding:"8px 16px",backgroundColor:t.primary,border:"none",borderRadius:"6px",color:"#fff",cursor:"pointer",fontSize:"14px",fontWeight:500},plansSection:{marginBottom:"24px"},plansTitle:{margin:"0 0 12px 0",fontSize:"16px",fontWeight:600,color:t.text},plansList:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:"16px"},planCard:{padding:"16px",backgroundColor:t.bg,border:`1px solid ${t.border}`,borderRadius:"8px",textAlign:"center"},currentPlan:{borderColor:t.primary,backgroundColor:t.bgHighlight},planName:{fontSize:"16px",fontWeight:600,color:t.text,marginBottom:"4px"},planPrice:{fontSize:"14px",color:t.textMuted,marginBottom:"8px"},planDescription:{fontSize:"12px",color:t.textFaint,marginBottom:"12px"},currentBadge:{display:"inline-block",padding:"4px 8px",backgroundColor:t.primary,color:"#fff",borderRadius:"4px",fontSize:"12px",fontWeight:500},changePlanButton:{padding:"8px 16px",backgroundColor:t.buttonBg,border:`1px solid ${t.buttonBorder}`,borderRadius:"6px",color:t.buttonText,cursor:"pointer",fontSize:"14px",width:"100%"},actions:{display:"flex",gap:"12px",justifyContent:"flex-end",paddingTop:"16px",borderTop:`1px solid ${t.border}`},portalButton:{padding:"10px 20px",backgroundColor:t.primary,border:"none",borderRadius:"6px",color:"#fff",cursor:"pointer",fontSize:"14px",fontWeight:500},cancelSubscriptionButton:{padding:"10px 20px",backgroundColor:t.bg,border:`1px solid ${t.error}`,borderRadius:"6px",color:t.error,cursor:"pointer",fontSize:"14px"}}}function Q(e,t){return new Intl.NumberFormat("en-US",{style:"currency",currency:t.toUpperCase()}).format(e/100)}function Le(e){return new Date(e).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}function _t(e){switch(e){case"active":return"#22c55e";case"trialing":return"#3b82f6";case"past_due":return"#f59e0b";case"canceled":case"expired":return"#ef4444";default:return"#6b7280"}}function It({preview:e,onConfirm:t,onCancel:r,isLoading:s,styles:n}){const u=e.immediateAmount<0;return i.jsxs("div",{className:"cedros-proration-preview",style:n.prorationPreview,children:[i.jsx("h4",{style:n.previewTitle,children:"Change Preview"}),i.jsxs("div",{style:n.previewDetails,children:[i.jsxs("div",{style:n.previewRow,children:[i.jsx("span",{children:"Current plan:"}),i.jsxs("span",{children:[Q(e.currentPlanPrice,e.currency),"/period"]})]}),i.jsxs("div",{style:n.previewRow,children:[i.jsx("span",{children:"New plan:"}),i.jsxs("span",{children:[Q(e.newPlanPrice,e.currency),"/period"]})]}),i.jsxs("div",{style:n.previewRow,children:[i.jsx("span",{children:"Days remaining:"}),i.jsxs("span",{children:[e.daysRemaining," days"]})]}),e.prorationDetails&&i.jsxs(i.Fragment,{children:[i.jsxs("div",{style:n.previewRow,children:[i.jsx("span",{children:"Unused credit:"}),i.jsxs("span",{children:["-",Q(e.prorationDetails.unusedCredit,e.currency)]})]}),i.jsxs("div",{style:n.previewRow,children:[i.jsx("span",{children:"New plan cost:"}),i.jsx("span",{children:Q(e.prorationDetails.newPlanCost,e.currency)})]})]}),i.jsxs("div",{style:{...n.previewRow,...n.previewTotal},children:[i.jsx("span",{children:u?"Credit to account:":"Amount due now:"}),i.jsx("span",{style:{color:u?"#22c55e":"#ef4444"},children:Q(Math.abs(e.immediateAmount),e.currency)})]}),i.jsxs("div",{style:n.previewRow,children:[i.jsx("span",{children:"Effective date:"}),i.jsx("span",{children:Le(e.effectiveDate)})]})]}),i.jsxs("div",{style:n.previewActions,children:[i.jsx("button",{onClick:r,style:n.cancelButton,disabled:s,children:"Cancel"}),i.jsx("button",{onClick:t,style:n.confirmButton,disabled:s,children:s?"Processing...":"Confirm Change"})]})]})}function qt({resource:e,userId:t,availablePlans:r=[],onSubscriptionChanged:s,onSubscriptionCanceled:n,billingPortalReturnUrl:u,showBillingPortal:h=!1,className:x,style:C}){const{mode:l}=I.useCedrosTheme(),a=f.useMemo(()=>Tt(l==="dark"),[l]),{subscription:o,changePreview:d,status:p,error:c,loadSubscription:m,previewChange:g,changeSubscription:y,cancelSubscription:b,openBillingPortal:M,clearPreview:S}=qe();f.useEffect(()=>{m(e,t)},[e,t,m]);const P=f.useRef(null),_=f.useCallback(async(w,j)=>{P.current={resource:w,interval:j},await g(e,w,t,j)},[e,t,g]),$=f.useCallback(async()=>{if(!d)return;const w=P.current;(await y({newResource:w?.resource||e,newInterval:w?.interval,immediate:!0}))?.success&&w&&w.interval&&(s?.(w.resource,w.interval),P.current=null)},[d,e,y,s]),z=f.useCallback(async w=>{(await b(w))?.success&&n?.()},[b,n]),A=f.useCallback(()=>{M(t,u)},[t,u,M]),q=p==="loading";return i.jsxs("div",{className:`cedros-subscription-panel ${x||""}`,style:{...a.container,...C},children:[c&&i.jsx("div",{className:"cedros-subscription-error",style:a.error,children:c}),q&&!o&&i.jsx("div",{className:"cedros-subscription-loading",style:a.loading,children:"Loading subscription..."}),o&&i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"cedros-subscription-details",style:a.details,children:[i.jsx("h3",{style:a.title,children:"Current Subscription"}),i.jsxs("div",{style:a.detailRow,children:[i.jsx("span",{style:a.label,children:"Plan:"}),i.jsx("span",{style:a.value,children:o.resource})]}),i.jsxs("div",{style:a.detailRow,children:[i.jsx("span",{style:a.label,children:"Status:"}),i.jsx("span",{style:{...a.statusBadge,backgroundColor:_t(o.status)},children:o.status})]}),i.jsxs("div",{style:a.detailRow,children:[i.jsx("span",{style:a.label,children:"Price:"}),i.jsxs("span",{style:a.value,children:[Q(o.pricePerPeriod,o.currency),"/",o.interval]})]}),i.jsxs("div",{style:a.detailRow,children:[i.jsx("span",{style:a.label,children:"Current period ends:"}),i.jsx("span",{style:a.value,children:Le(o.currentPeriodEnd)})]}),o.cancelAtPeriodEnd&&i.jsx("div",{style:a.cancelNotice,children:"Subscription will cancel at end of current period"})]}),d&&i.jsx(It,{preview:d,onConfirm:$,onCancel:S,isLoading:q,styles:a}),r.length>0&&!d&&i.jsxs("div",{className:"cedros-available-plans",style:a.plansSection,children:[i.jsx("h4",{style:a.plansTitle,children:"Available Plans"}),i.jsx("div",{style:a.plansList,children:r.map(w=>{const j=w.resource===o.resource;return i.jsxs("div",{style:{...a.planCard,...j?a.currentPlan:{}},children:[i.jsx("div",{style:a.planName,children:w.name}),i.jsxs("div",{style:a.planPrice,children:[Q(w.price,w.currency),"/",w.interval]}),w.description&&i.jsx("div",{style:a.planDescription,children:w.description}),j?i.jsx("span",{style:a.currentBadge,children:"Current Plan"}):i.jsx("button",{onClick:()=>_(w.resource,w.interval),style:a.changePlanButton,disabled:q,children:w.price>o.pricePerPeriod?"Upgrade":"Downgrade"})]},w.resource)})})]}),i.jsxs("div",{className:"cedros-subscription-actions",style:a.actions,children:[h&&o.paymentMethod==="stripe"&&i.jsx("button",{onClick:A,style:a.portalButton,disabled:q,children:"Manage Billing"}),o.status==="active"&&!o.cancelAtPeriodEnd&&i.jsx("button",{onClick:()=>z(!1),style:a.cancelSubscriptionButton,disabled:q,children:"Cancel Subscription"})]})]})]})}function Lt(){if(typeof window>"u")return{passed:!0,severity:"info",message:"HTTPS check skipped (SSR environment)"};const e=window.location.protocol==="https:",t=window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1";return e||t?{passed:!0,severity:"info",message:"HTTPS enforced"}:{passed:!1,severity:"error",message:"Page not served over HTTPS",recommendation:"Enable HTTPS for all payment pages. Stripe.js requires HTTPS in production."}}function Nt(){return typeof document>"u"?{passed:!0,severity:"info",message:"CSP check skipped (SSR environment)"}:document.querySelector('meta[http-equiv="Content-Security-Policy"]')?{passed:!0,severity:"info",message:"Content Security Policy detected"}:{passed:!1,severity:"warning",message:"No Content Security Policy detected",recommendation:"Configure CSP headers to protect against XSS and CDN compromise. Use generateCSP() helper from @cedros/pay-react."}}function Dt(){return process.env.NODE_ENV==="development"||typeof window<"u"&&window.location.hostname==="localhost"?{passed:!0,severity:"info",message:"Running in development mode (some security checks relaxed)"}:{passed:!0,severity:"info",message:"Running in production mode"}}function Bt(){return{passed:!0,severity:"info",message:"Stripe.js loaded via @stripe/stripe-js package (CSP recommended, not SRI)",recommendation:"Ensure CSP script-src includes https://js.stripe.com"}}function $t(){return typeof window>"u"?{passed:!0,severity:"info",message:"Mixed content check skipped (SSR environment)"}:window.location.protocol==="https:"?{passed:!0,severity:"info",message:"Mixed content protection active (HTTPS page)"}:{passed:!0,severity:"info",message:"Mixed content check skipped (HTTP page)"}}function At(){const e=[Lt(),Nt(),Dt(),Bt(),$t()],t=e.some(u=>u.severity==="error"&&!u.passed),r=e.some(u=>u.severity==="warning"&&!u.passed);let s,n;return t?(s="vulnerable",n="Security issues detected. Review errors and apply recommendations."):r?(s="warnings",n="Minor security warnings detected. Consider applying recommendations."):(s="secure",n="All security checks passed."),{checks:e,overallStatus:s,summary:n}}function zt(e){process.env.NODE_ENV!=="production"&&(console.group("🔒 Cedros Pay Security Report"),console.log(`Status: ${e.overallStatus.toUpperCase()}`),console.log(`Summary: ${e.summary}`),console.log(""),e.checks.forEach(t=>{const r=t.passed?"✅":t.severity==="error"?"❌":"⚠️";console.log(`${r} ${t.message}`),t.recommendation&&console.log(` → ${t.recommendation}`)}),console.groupEnd())}const Ut={CSP:"Use generateCSP() from @cedros/pay-react to generate Content Security Policy headers",HTTPS:"Always serve payment pages over HTTPS in production",PACKAGE_UPDATES:"Keep @stripe/stripe-js and @cedros/pay-react updated for security patches",AUDIT:"Run npm audit regularly to check for known vulnerabilities",MONITORING:"Monitor Stripe security advisories and apply updates promptly",NO_SRI:"Do NOT use SRI hashes for Stripe.js - use CSP instead"};exports.CEDROS_EVENTS=H;exports.CSP_PRESETS=ft;exports.CedrosPay=Pt;exports.CreditsButton=me;exports.CreditsSubscribeButton=Et;exports.PaymentMethodBadge=jt;exports.PaymentModal=Re;exports.ProductPrice=vt;exports.PurchaseButton=Te;exports.RPC_PROVIDERS=pt;exports.SECURITY_RECOMMENDATIONS=Ut;exports.StripeButton=fe;exports.SubscribeButton=kt;exports.SubscriptionManagementPanel=qt;exports.calculateDiscountPercentage=Ve;exports.createDedupedClickHandler=X;exports.createTranslator=Ee;exports.detectLocale=je;exports.emitPaymentError=W;exports.emitPaymentProcessing=Z;exports.emitPaymentStart=J;exports.emitPaymentSuccess=ee;exports.emitWalletConnect=nt;exports.emitWalletConnected=ot;exports.emitWalletError=it;exports.formatCSP=ve;exports.formatCouponCodes=Qe;exports.generateCSP=dt;exports.generateCSPDirectives=Pe;exports.getAvailableLocales=gt;exports.getCartItemCount=te;exports.getLocalizedError=ht;exports.getModalCloseButtonStyles=Se;exports.getUserErrorMessage=ct;exports.isRetryableError=at;exports.loadLocale=ke;exports.logSecurityReport=zt;exports.normalizeCartItems=ae;exports.parseCouponCodes=Ye;exports.stackCheckoutCoupons=Ge;exports.useCreditsPayment=Me;exports.useCreditsSubscription=Ie;exports.useLocalizedError=yt;exports.usePaymentMode=re;exports.useStripeCheckout=pe;exports.useSubscription=_e;exports.useSubscriptionManagement=qe;exports.useTranslation=G;exports.validateSecurity=At;
|
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
import { P as ke, u as re,
|
|
1
|
+
import { P as ke, u as re, n as be, l as V, m as pe } from "./CedrosContext-DQc_k5PG.mjs";
|
|
2
2
|
import { jsxs as S, jsx as f, Fragment as me } from "react/jsx-runtime";
|
|
3
3
|
import U, { useState as Q, useRef as X, useCallback as R, useMemo as W, useEffect as te } from "react";
|
|
4
4
|
import { g as j } from "./fetchWithTimeout-DmMOwL0Q.mjs";
|
|
5
|
-
|
|
6
|
-
function kt(e) {
|
|
5
|
+
function Et(e) {
|
|
7
6
|
return !e || !e.coupon_codes ? [] : e.coupon_codes.split(",").map((t) => t.trim()).filter((t) => t.length > 0);
|
|
8
7
|
}
|
|
9
|
-
function
|
|
8
|
+
function kt(e, t = ", ") {
|
|
10
9
|
return e.join(t);
|
|
11
10
|
}
|
|
12
|
-
function
|
|
11
|
+
function _t(e, t) {
|
|
13
12
|
return e <= 0 ? 0 : (e - t) / e * 100;
|
|
14
13
|
}
|
|
15
|
-
function
|
|
14
|
+
function Rt(e, t) {
|
|
16
15
|
if (!t || t.length === 0)
|
|
17
16
|
return e;
|
|
18
17
|
let r = e, n = 0;
|
|
@@ -157,20 +156,20 @@ function oe(e, t, r) {
|
|
|
157
156
|
itemCount: r
|
|
158
157
|
});
|
|
159
158
|
}
|
|
160
|
-
function
|
|
159
|
+
function It(e) {
|
|
161
160
|
Z(J.WALLET_CONNECT, {
|
|
162
161
|
timestamp: Date.now(),
|
|
163
162
|
wallet: e
|
|
164
163
|
});
|
|
165
164
|
}
|
|
166
|
-
function
|
|
165
|
+
function Mt(e, t) {
|
|
167
166
|
Z(J.WALLET_CONNECTED, {
|
|
168
167
|
timestamp: Date.now(),
|
|
169
168
|
wallet: e,
|
|
170
169
|
publicKey: t
|
|
171
170
|
});
|
|
172
171
|
}
|
|
173
|
-
function
|
|
172
|
+
function Tt(e, t) {
|
|
174
173
|
Z(J.WALLET_ERROR, {
|
|
175
174
|
timestamp: Date.now(),
|
|
176
175
|
wallet: t,
|
|
@@ -203,10 +202,10 @@ function Y(e, t, r, n) {
|
|
|
203
202
|
itemCount: n
|
|
204
203
|
});
|
|
205
204
|
}
|
|
206
|
-
function
|
|
205
|
+
function Nt(e) {
|
|
207
206
|
return e instanceof ke && e.canRetry();
|
|
208
207
|
}
|
|
209
|
-
function
|
|
208
|
+
function Dt(e) {
|
|
210
209
|
return e instanceof ke ? e.getUserMessage() : e instanceof Error ? e.message : String(e);
|
|
211
210
|
}
|
|
212
211
|
function Ye(e) {
|
|
@@ -285,17 +284,17 @@ function Ge(e, t = "header") {
|
|
|
285
284
|
throw new Error(`Unknown CSP format: ${t}`);
|
|
286
285
|
}
|
|
287
286
|
}
|
|
288
|
-
function
|
|
287
|
+
function jt(e = {}, t = "header") {
|
|
289
288
|
const r = Ve(e);
|
|
290
289
|
return Ge(r, t);
|
|
291
290
|
}
|
|
292
|
-
const
|
|
291
|
+
const Bt = {
|
|
293
292
|
HELIUS: "https://*.helius-rpc.com",
|
|
294
293
|
QUICKNODE: "https://*.quicknode.pro",
|
|
295
294
|
ALCHEMY: "https://*.alchemy.com",
|
|
296
295
|
ANKR: "https://rpc.ankr.com",
|
|
297
296
|
TRITON: "https://*.rpcpool.com"
|
|
298
|
-
},
|
|
297
|
+
}, Lt = {
|
|
299
298
|
/**
|
|
300
299
|
* Mainnet production with custom RPC (recommended)
|
|
301
300
|
*/
|
|
@@ -461,7 +460,7 @@ async function Ee(e) {
|
|
|
461
460
|
return null;
|
|
462
461
|
}
|
|
463
462
|
}
|
|
464
|
-
async function
|
|
463
|
+
async function $t() {
|
|
465
464
|
if (de)
|
|
466
465
|
return de;
|
|
467
466
|
const e = /* @__PURE__ */ Object.assign({ "./translations/ar.json": () => import("./ar-w27mU-4x.mjs"), "./translations/bn.json": () => import("./bn-Ba_k3Kex.mjs"), "./translations/de.json": () => import("./de-CoZiPFN7.mjs"), "./translations/en.json": () => import("./en-BXheDBal.mjs"), "./translations/es.json": () => import("./es-BWGIBp2f.mjs"), "./translations/fil.json": () => import("./fil-Czo27xmj.mjs"), "./translations/fr.json": () => import("./fr-DQ-2ThBv.mjs"), "./translations/he.json": () => import("./he-DpV1WnBQ.mjs"), "./translations/id.json": () => import("./id-BJMqsu19.mjs"), "./translations/in.json": () => import("./in-BxgxKLQH.mjs"), "./translations/it.json": () => import("./it-DZFFPALf.mjs"), "./translations/jp.json": () => import("./jp-ZExTrlHK.mjs"), "./translations/kr.json": () => import("./kr-DHX3i4Ht.mjs"), "./translations/ms.json": () => import("./ms-Cv1fdIi2.mjs"), "./translations/nl.json": () => import("./nl-BmGonsKb.mjs"), "./translations/pa.json": () => import("./pa-BfwcJIar.mjs"), "./translations/pl.json": () => import("./pl-DE5IB9xv.mjs"), "./translations/pt.json": () => import("./pt-CLzkqDzf.mjs"), "./translations/ru.json": () => import("./ru-DM6-oUR0.mjs"), "./translations/ta.json": () => import("./ta-A5HnrGb5.mjs"), "./translations/th.json": () => import("./th-3fbB3Ytp.mjs"), "./translations/tr.json": () => import("./tr-BrgfFFdq.mjs"), "./translations/uk.json": () => import("./uk-0hFun_g_.mjs"), "./translations/ur.json": () => import("./ur-CaOjJXai.mjs"), "./translations/vn.json": () => import("./vn-0nlIZFLP.mjs"), "./translations/zh.json": () => import("./zh-B4Endr1F.mjs") }), t = [];
|
|
@@ -495,7 +494,7 @@ function Ze(e) {
|
|
|
495
494
|
) : s;
|
|
496
495
|
};
|
|
497
496
|
}
|
|
498
|
-
function
|
|
497
|
+
function At(e, t, r = !0) {
|
|
499
498
|
const n = t.errors[e];
|
|
500
499
|
if (!n) {
|
|
501
500
|
const s = be(e);
|
|
@@ -537,7 +536,7 @@ function ne(e) {
|
|
|
537
536
|
translations: t
|
|
538
537
|
};
|
|
539
538
|
}
|
|
540
|
-
function
|
|
539
|
+
function qt(e, t = !0) {
|
|
541
540
|
const { translations: r } = ne();
|
|
542
541
|
if (!r) {
|
|
543
542
|
const s = be(e);
|
|
@@ -860,7 +859,7 @@ function Te({
|
|
|
860
859
|
] });
|
|
861
860
|
}
|
|
862
861
|
const tt = U.lazy(
|
|
863
|
-
() => import("./CryptoButton-
|
|
862
|
+
() => import("./CryptoButton-BuO_RZLj.mjs").then((e) => e.a).then((e) => ({ default: e.CryptoButton }))
|
|
864
863
|
), rt = ({
|
|
865
864
|
isOpen: e,
|
|
866
865
|
onClose: t,
|
|
@@ -1173,9 +1172,9 @@ function at({
|
|
|
1173
1172
|
return /* @__PURE__ */ f(s, { endpoint: e, children: /* @__PURE__ */ f(l, { wallets: t, autoConnect: !1, children: r }) });
|
|
1174
1173
|
}
|
|
1175
1174
|
const it = U.lazy(
|
|
1176
|
-
() => import("./CryptoButton-
|
|
1175
|
+
() => import("./CryptoButton-BuO_RZLj.mjs").then((e) => e.a).then((e) => ({ default: e.CryptoButton }))
|
|
1177
1176
|
);
|
|
1178
|
-
function
|
|
1177
|
+
function zt(e) {
|
|
1179
1178
|
const { resource: t, items: r, checkout: n = {}, display: s = {}, callbacks: l = {}, advanced: g = {} } = e, { config: C, walletPool: b } = re(), c = V(), { isCartMode: a } = he(t, r), o = s.showCrypto ?? !0, u = U.useMemo(() => ({
|
|
1180
1179
|
marginTop: "0.5rem",
|
|
1181
1180
|
fontSize: "0.875rem",
|
|
@@ -1295,7 +1294,7 @@ function Ut(e) {
|
|
|
1295
1294
|
] }) });
|
|
1296
1295
|
return /* @__PURE__ */ f("div", { className: c.unstyled ? s.className : c.className, style: c.unstyled ? {} : c.style, children: /* @__PURE__ */ f(at, { endpoint: q || "https://api.devnet.solana.com", wallets: d, children: M }) });
|
|
1297
1296
|
}
|
|
1298
|
-
function
|
|
1297
|
+
function Ut({
|
|
1299
1298
|
product: e,
|
|
1300
1299
|
paymentMethod: t,
|
|
1301
1300
|
showOriginalPrice: r = !1,
|
|
@@ -1345,7 +1344,7 @@ function Ot({
|
|
|
1345
1344
|
)
|
|
1346
1345
|
] });
|
|
1347
1346
|
}
|
|
1348
|
-
function
|
|
1347
|
+
function Ot({
|
|
1349
1348
|
product: e,
|
|
1350
1349
|
paymentMethod: t,
|
|
1351
1350
|
className: r = "",
|
|
@@ -1497,7 +1496,7 @@ function ct() {
|
|
|
1497
1496
|
reset: C
|
|
1498
1497
|
};
|
|
1499
1498
|
}
|
|
1500
|
-
function
|
|
1499
|
+
function Wt({
|
|
1501
1500
|
resource: e,
|
|
1502
1501
|
interval: t,
|
|
1503
1502
|
intervalDays: r,
|
|
@@ -1693,7 +1692,7 @@ function lt() {
|
|
|
1693
1692
|
reset: b
|
|
1694
1693
|
};
|
|
1695
1694
|
}
|
|
1696
|
-
function
|
|
1695
|
+
function Ft({
|
|
1697
1696
|
resource: e,
|
|
1698
1697
|
interval: t,
|
|
1699
1698
|
intervalDays: r,
|
|
@@ -2283,7 +2282,7 @@ function gt({
|
|
|
2283
2282
|
] })
|
|
2284
2283
|
] });
|
|
2285
2284
|
}
|
|
2286
|
-
function
|
|
2285
|
+
function Ht({
|
|
2287
2286
|
resource: e,
|
|
2288
2287
|
userId: t,
|
|
2289
2288
|
availablePlans: r = [],
|
|
@@ -2495,7 +2494,7 @@ function wt() {
|
|
|
2495
2494
|
message: "Mixed content check skipped (HTTP page)"
|
|
2496
2495
|
};
|
|
2497
2496
|
}
|
|
2498
|
-
function
|
|
2497
|
+
function Yt() {
|
|
2499
2498
|
const e = [
|
|
2500
2499
|
ht(),
|
|
2501
2500
|
yt(),
|
|
@@ -2510,13 +2509,13 @@ function Qt() {
|
|
|
2510
2509
|
summary: s
|
|
2511
2510
|
};
|
|
2512
2511
|
}
|
|
2513
|
-
function
|
|
2512
|
+
function Qt(e) {
|
|
2514
2513
|
process.env.NODE_ENV !== "production" && (console.group("🔒 Cedros Pay Security Report"), console.log(`Status: ${e.overallStatus.toUpperCase()}`), console.log(`Summary: ${e.summary}`), console.log(""), e.checks.forEach((t) => {
|
|
2515
2514
|
const r = t.passed ? "✅" : t.severity === "error" ? "❌" : "⚠️";
|
|
2516
2515
|
console.log(`${r} ${t.message}`), t.recommendation && console.log(` → ${t.recommendation}`);
|
|
2517
2516
|
}), console.groupEnd());
|
|
2518
2517
|
}
|
|
2519
|
-
const
|
|
2518
|
+
const Vt = {
|
|
2520
2519
|
CSP: "Use generateCSP() from @cedros/pay-react to generate Content Security Policy headers",
|
|
2521
2520
|
HTTPS: "Always serve payment pages over HTTPS in production",
|
|
2522
2521
|
PACKAGE_UPDATES: "Keep @stripe/stripe-js and @cedros/pay-react updated for security patches",
|
|
@@ -2525,53 +2524,53 @@ const Gt = {
|
|
|
2525
2524
|
NO_SRI: "Do NOT use SRI hashes for Stripe.js - use CSP instead"
|
|
2526
2525
|
};
|
|
2527
2526
|
export {
|
|
2528
|
-
|
|
2529
|
-
|
|
2527
|
+
Dt as A,
|
|
2528
|
+
Nt as B,
|
|
2530
2529
|
J as C,
|
|
2531
2530
|
Je as D,
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2531
|
+
Qt as E,
|
|
2532
|
+
Et as F,
|
|
2533
|
+
Rt as G,
|
|
2535
2534
|
et as H,
|
|
2536
2535
|
lt as I,
|
|
2537
|
-
|
|
2536
|
+
qt as J,
|
|
2538
2537
|
he as K,
|
|
2539
2538
|
Ie as L,
|
|
2540
2539
|
ct as M,
|
|
2541
2540
|
ut as N,
|
|
2542
2541
|
ne as O,
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
|
|
2542
|
+
Ot as P,
|
|
2543
|
+
Yt as Q,
|
|
2544
|
+
Bt as R,
|
|
2545
|
+
Vt as S,
|
|
2547
2546
|
Ce as T,
|
|
2548
2547
|
ge as U,
|
|
2549
2548
|
se as V,
|
|
2550
2549
|
He as W,
|
|
2551
|
-
|
|
2552
|
-
|
|
2550
|
+
Lt as a,
|
|
2551
|
+
zt as b,
|
|
2553
2552
|
Te as c,
|
|
2554
|
-
|
|
2553
|
+
Ft as d,
|
|
2555
2554
|
rt as e,
|
|
2556
|
-
|
|
2555
|
+
Ut as f,
|
|
2557
2556
|
nt as g,
|
|
2558
2557
|
Me as h,
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2558
|
+
Wt as i,
|
|
2559
|
+
Ht as j,
|
|
2560
|
+
_t as k,
|
|
2562
2561
|
Ze as l,
|
|
2563
2562
|
Xe as m,
|
|
2564
2563
|
Y as n,
|
|
2565
2564
|
ae as o,
|
|
2566
2565
|
oe as p,
|
|
2567
2566
|
ie as q,
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2567
|
+
It as r,
|
|
2568
|
+
Mt as s,
|
|
2569
|
+
Tt as t,
|
|
2571
2570
|
Ge as u,
|
|
2572
|
-
|
|
2573
|
-
|
|
2571
|
+
kt as v,
|
|
2572
|
+
jt as w,
|
|
2574
2573
|
Ve as x,
|
|
2575
|
-
|
|
2576
|
-
|
|
2574
|
+
$t as y,
|
|
2575
|
+
At as z
|
|
2577
2576
|
};
|