@cedros/pay-react 1.0.5 → 1.1.2

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.
Files changed (372) hide show
  1. package/README.md +190 -38
  2. package/dist/{CedrosContext-CFEXGwQg.mjs → CedrosContext-DUT3cLZg.mjs} +683 -372
  3. package/dist/CedrosContext-efFL4kQz.js +11 -0
  4. package/dist/admin/index.d.ts +9 -0
  5. package/dist/admin/index.d.ts.map +1 -0
  6. package/dist/admin/plugin.d.ts +9 -0
  7. package/dist/admin/plugin.d.ts.map +1 -0
  8. package/dist/admin/types.d.ts +115 -0
  9. package/dist/admin/types.d.ts.map +1 -0
  10. package/dist/components/CedrosPay.d.ts.map +1 -1
  11. package/dist/components/CreditsButton.d.ts +42 -0
  12. package/dist/components/CreditsButton.d.ts.map +1 -0
  13. package/dist/components/CreditsSubscribeButton.d.ts +55 -0
  14. package/dist/components/CreditsSubscribeButton.d.ts.map +1 -0
  15. package/dist/components/CryptoButton.d.ts.map +1 -1
  16. package/dist/components/CryptoSubscribeButton.d.ts.map +1 -1
  17. package/dist/components/PaymentModal.d.ts +8 -2
  18. package/dist/components/PaymentModal.d.ts.map +1 -1
  19. package/dist/components/PurchaseButton.d.ts +14 -3
  20. package/dist/components/PurchaseButton.d.ts.map +1 -1
  21. package/dist/components/SubscriptionManagementPanel.d.ts.map +1 -1
  22. package/dist/components/admin/AISettingsSection.d.ts +3 -0
  23. package/dist/components/admin/AISettingsSection.d.ts.map +1 -0
  24. package/dist/components/admin/AdminAuthManager.d.ts +95 -0
  25. package/dist/components/admin/AdminAuthManager.d.ts.map +1 -0
  26. package/dist/components/admin/CedrosPayAdminDashboard.d.ts +40 -0
  27. package/dist/components/admin/CedrosPayAdminDashboard.d.ts.map +1 -0
  28. package/dist/components/admin/ConfigEditor.d.ts +13 -0
  29. package/dist/components/admin/ConfigEditor.d.ts.map +1 -0
  30. package/dist/components/admin/CouponsSection.d.ts +3 -0
  31. package/dist/components/admin/CouponsSection.d.ts.map +1 -0
  32. package/dist/components/admin/Dropdown.d.ts +29 -0
  33. package/dist/components/admin/Dropdown.d.ts.map +1 -0
  34. package/dist/components/admin/FAQSection.d.ts +3 -0
  35. package/dist/components/admin/FAQSection.d.ts.map +1 -0
  36. package/dist/components/admin/MessagingSection.d.ts +10 -0
  37. package/dist/components/admin/MessagingSection.d.ts.map +1 -0
  38. package/dist/components/admin/OverviewSection.d.ts +3 -0
  39. package/dist/components/admin/OverviewSection.d.ts.map +1 -0
  40. package/dist/components/admin/PaymentSettingsSection.d.ts +3 -0
  41. package/dist/components/admin/PaymentSettingsSection.d.ts.map +1 -0
  42. package/dist/components/admin/ProductVariationsEditor.d.ts +14 -0
  43. package/dist/components/admin/ProductVariationsEditor.d.ts.map +1 -0
  44. package/dist/components/admin/ProductsSection.d.ts +3 -0
  45. package/dist/components/admin/ProductsSection.d.ts.map +1 -0
  46. package/dist/components/admin/RefundsSection.d.ts +3 -0
  47. package/dist/components/admin/RefundsSection.d.ts.map +1 -0
  48. package/dist/components/admin/SettingsSection.d.ts +10 -0
  49. package/dist/components/admin/SettingsSection.d.ts.map +1 -0
  50. package/dist/components/admin/SingleCategorySettings.d.ts +21 -0
  51. package/dist/components/admin/SingleCategorySettings.d.ts.map +1 -0
  52. package/dist/components/admin/StatsBar.d.ts +19 -0
  53. package/dist/components/admin/StatsBar.d.ts.map +1 -0
  54. package/dist/components/admin/StorefrontSection.d.ts +3 -0
  55. package/dist/components/admin/StorefrontSection.d.ts.map +1 -0
  56. package/dist/components/admin/SubscriptionsSection.d.ts +3 -0
  57. package/dist/components/admin/SubscriptionsSection.d.ts.map +1 -0
  58. package/dist/components/admin/TransactionsSection.d.ts +3 -0
  59. package/dist/components/admin/TransactionsSection.d.ts.map +1 -0
  60. package/dist/components/admin/VariantInventoryGrid.d.ts +19 -0
  61. package/dist/components/admin/VariantInventoryGrid.d.ts.map +1 -0
  62. package/dist/components/admin/VariationTypeEditor.d.ts +15 -0
  63. package/dist/components/admin/VariationTypeEditor.d.ts.map +1 -0
  64. package/dist/components/admin/configApi.d.ts +104 -0
  65. package/dist/components/admin/configApi.d.ts.map +1 -0
  66. package/dist/components/admin/icons.d.ts +50 -0
  67. package/dist/components/admin/icons.d.ts.map +1 -0
  68. package/dist/components/admin/index.d.ts +16 -0
  69. package/dist/components/admin/index.d.ts.map +1 -0
  70. package/dist/components/admin/sections-more.d.ts +12 -0
  71. package/dist/components/admin/sections-more.d.ts.map +1 -0
  72. package/dist/components/admin/sections.d.ts +12 -0
  73. package/dist/components/admin/sections.d.ts.map +1 -0
  74. package/dist/components/admin/types.d.ts +324 -0
  75. package/dist/components/admin/types.d.ts.map +1 -0
  76. package/dist/components/admin/useAdminAuth.d.ts +50 -0
  77. package/dist/components/admin/useAdminAuth.d.ts.map +1 -0
  78. package/dist/components/admin/useAutosave.d.ts +56 -0
  79. package/dist/components/admin/useAutosave.d.ts.map +1 -0
  80. package/dist/components/admin/useProductVariations.d.ts +56 -0
  81. package/dist/components/admin/useProductVariations.d.ts.map +1 -0
  82. package/dist/components/subscriptionPanelStyles.d.ts +2 -3
  83. package/dist/components/subscriptionPanelStyles.d.ts.map +1 -1
  84. package/dist/context/CedrosContext.d.ts +2 -0
  85. package/dist/context/CedrosContext.d.ts.map +1 -1
  86. package/dist/context/ThemeContext.d.ts +6 -0
  87. package/dist/context/ThemeContext.d.ts.map +1 -1
  88. package/dist/crypto-only.d.ts +1 -1
  89. package/dist/crypto-only.d.ts.map +1 -1
  90. package/dist/crypto-only.js +1 -1
  91. package/dist/crypto-only.mjs +16 -17
  92. package/dist/ecommerce/__tests__/cartCheckoutRequirements.test.d.ts +2 -0
  93. package/dist/ecommerce/__tests__/cartCheckoutRequirements.test.d.ts.map +1 -0
  94. package/dist/ecommerce/__tests__/cartProviderPersistence.test.d.ts +2 -0
  95. package/dist/ecommerce/__tests__/cartProviderPersistence.test.d.ts.map +1 -0
  96. package/dist/ecommerce/__tests__/cartReducer.test.d.ts +2 -0
  97. package/dist/ecommerce/__tests__/cartReducer.test.d.ts.map +1 -0
  98. package/dist/ecommerce/__tests__/cartServerMerge.test.d.ts +2 -0
  99. package/dist/ecommerce/__tests__/cartServerMerge.test.d.ts.map +1 -0
  100. package/dist/ecommerce/__tests__/checkoutPaymentMethods.test.d.ts +2 -0
  101. package/dist/ecommerce/__tests__/checkoutPaymentMethods.test.d.ts.map +1 -0
  102. package/dist/ecommerce/__tests__/checkoutReturn.test.d.ts +2 -0
  103. package/dist/ecommerce/__tests__/checkoutReturn.test.d.ts.map +1 -0
  104. package/dist/ecommerce/__tests__/checkoutSchema.test.d.ts +2 -0
  105. package/dist/ecommerce/__tests__/checkoutSchema.test.d.ts.map +1 -0
  106. package/dist/ecommerce/__tests__/mockAdapter.test.d.ts +2 -0
  107. package/dist/ecommerce/__tests__/mockAdapter.test.d.ts.map +1 -0
  108. package/dist/ecommerce/adapters/CommerceAdapter.d.ts +235 -0
  109. package/dist/ecommerce/adapters/CommerceAdapter.d.ts.map +1 -0
  110. package/dist/ecommerce/adapters/mock/mockAdapter.d.ts +3 -0
  111. package/dist/ecommerce/adapters/mock/mockAdapter.d.ts.map +1 -0
  112. package/dist/ecommerce/adapters/paywall/paywallAdapter.d.ts +6 -0
  113. package/dist/ecommerce/adapters/paywall/paywallAdapter.d.ts.map +1 -0
  114. package/dist/ecommerce/components/cart/CartLineItem.d.ts +12 -0
  115. package/dist/ecommerce/components/cart/CartLineItem.d.ts.map +1 -0
  116. package/dist/ecommerce/components/cart/CartPageContent.d.ts +6 -0
  117. package/dist/ecommerce/components/cart/CartPageContent.d.ts.map +1 -0
  118. package/dist/ecommerce/components/cart/CartPanel.d.ts +5 -0
  119. package/dist/ecommerce/components/cart/CartPanel.d.ts.map +1 -0
  120. package/dist/ecommerce/components/cart/CartSidebar.d.ts +11 -0
  121. package/dist/ecommerce/components/cart/CartSidebar.d.ts.map +1 -0
  122. package/dist/ecommerce/components/cart/CartSummary.d.ts +13 -0
  123. package/dist/ecommerce/components/cart/CartSummary.d.ts.map +1 -0
  124. package/dist/ecommerce/components/cart/PromoCodeInput.d.ts +6 -0
  125. package/dist/ecommerce/components/cart/PromoCodeInput.d.ts.map +1 -0
  126. package/dist/ecommerce/components/catalog/Breadcrumbs.d.ts +9 -0
  127. package/dist/ecommerce/components/catalog/Breadcrumbs.d.ts.map +1 -0
  128. package/dist/ecommerce/components/catalog/CategoryNav.d.ts +8 -0
  129. package/dist/ecommerce/components/catalog/CategoryNav.d.ts.map +1 -0
  130. package/dist/ecommerce/components/catalog/FilterPanel.d.ts +29 -0
  131. package/dist/ecommerce/components/catalog/FilterPanel.d.ts.map +1 -0
  132. package/dist/ecommerce/components/catalog/Price.d.ts +9 -0
  133. package/dist/ecommerce/components/catalog/Price.d.ts.map +1 -0
  134. package/dist/ecommerce/components/catalog/ProductCard.d.ts +14 -0
  135. package/dist/ecommerce/components/catalog/ProductCard.d.ts.map +1 -0
  136. package/dist/ecommerce/components/catalog/ProductGallery.d.ts +6 -0
  137. package/dist/ecommerce/components/catalog/ProductGallery.d.ts.map +1 -0
  138. package/dist/ecommerce/components/catalog/ProductGrid.d.ts +20 -0
  139. package/dist/ecommerce/components/catalog/ProductGrid.d.ts.map +1 -0
  140. package/dist/ecommerce/components/catalog/QuantitySelector.d.ts +8 -0
  141. package/dist/ecommerce/components/catalog/QuantitySelector.d.ts.map +1 -0
  142. package/dist/ecommerce/components/catalog/QuickViewDialog.d.ts +10 -0
  143. package/dist/ecommerce/components/catalog/QuickViewDialog.d.ts.map +1 -0
  144. package/dist/ecommerce/components/catalog/SearchInput.d.ts +7 -0
  145. package/dist/ecommerce/components/catalog/SearchInput.d.ts.map +1 -0
  146. package/dist/ecommerce/components/catalog/VariantSelector.d.ts +19 -0
  147. package/dist/ecommerce/components/catalog/VariantSelector.d.ts.map +1 -0
  148. package/dist/ecommerce/components/chat/ShopChatPanel.d.ts +4 -0
  149. package/dist/ecommerce/components/chat/ShopChatPanel.d.ts.map +1 -0
  150. package/dist/ecommerce/components/checkout/AddressForm.d.ts +9 -0
  151. package/dist/ecommerce/components/checkout/AddressForm.d.ts.map +1 -0
  152. package/dist/ecommerce/components/checkout/CheckoutCancelPage.d.ts +24 -0
  153. package/dist/ecommerce/components/checkout/CheckoutCancelPage.d.ts.map +1 -0
  154. package/dist/ecommerce/components/checkout/CheckoutForm.d.ts +4 -0
  155. package/dist/ecommerce/components/checkout/CheckoutForm.d.ts.map +1 -0
  156. package/dist/ecommerce/components/checkout/CheckoutLayout.d.ts +6 -0
  157. package/dist/ecommerce/components/checkout/CheckoutLayout.d.ts.map +1 -0
  158. package/dist/ecommerce/components/checkout/CheckoutReceipt.d.ts +8 -0
  159. package/dist/ecommerce/components/checkout/CheckoutReceipt.d.ts.map +1 -0
  160. package/dist/ecommerce/components/checkout/CheckoutSuccessPage.d.ts +29 -0
  161. package/dist/ecommerce/components/checkout/CheckoutSuccessPage.d.ts.map +1 -0
  162. package/dist/ecommerce/components/checkout/InventoryVerificationDialog.d.ts +19 -0
  163. package/dist/ecommerce/components/checkout/InventoryVerificationDialog.d.ts.map +1 -0
  164. package/dist/ecommerce/components/checkout/OrderReview.d.ts +4 -0
  165. package/dist/ecommerce/components/checkout/OrderReview.d.ts.map +1 -0
  166. package/dist/ecommerce/components/checkout/PaymentStep.d.ts +15 -0
  167. package/dist/ecommerce/components/checkout/PaymentStep.d.ts.map +1 -0
  168. package/dist/ecommerce/components/checkout/ShippingMethodSelector.d.ts +9 -0
  169. package/dist/ecommerce/components/checkout/ShippingMethodSelector.d.ts.map +1 -0
  170. package/dist/ecommerce/components/faq/FAQItem.d.ts +29 -0
  171. package/dist/ecommerce/components/faq/FAQItem.d.ts.map +1 -0
  172. package/dist/ecommerce/components/faq/FAQItem.test.d.ts +7 -0
  173. package/dist/ecommerce/components/faq/FAQItem.test.d.ts.map +1 -0
  174. package/dist/ecommerce/components/faq/FAQList.d.ts +15 -0
  175. package/dist/ecommerce/components/faq/FAQList.d.ts.map +1 -0
  176. package/dist/ecommerce/components/faq/index.d.ts +3 -0
  177. package/dist/ecommerce/components/faq/index.d.ts.map +1 -0
  178. package/dist/ecommerce/components/general/EmptyState.d.ts +8 -0
  179. package/dist/ecommerce/components/general/EmptyState.d.ts.map +1 -0
  180. package/dist/ecommerce/components/general/ErrorBoundary.d.ts +16 -0
  181. package/dist/ecommerce/components/general/ErrorBoundary.d.ts.map +1 -0
  182. package/dist/ecommerce/components/general/ErrorState.d.ts +7 -0
  183. package/dist/ecommerce/components/general/ErrorState.d.ts.map +1 -0
  184. package/dist/ecommerce/components/general/toast.d.ts +19 -0
  185. package/dist/ecommerce/components/general/toast.d.ts.map +1 -0
  186. package/dist/ecommerce/components/orders/OrderCard.d.ts +7 -0
  187. package/dist/ecommerce/components/orders/OrderCard.d.ts.map +1 -0
  188. package/dist/ecommerce/components/orders/OrderDetails.d.ts +7 -0
  189. package/dist/ecommerce/components/orders/OrderDetails.d.ts.map +1 -0
  190. package/dist/ecommerce/components/orders/OrderList.d.ts +7 -0
  191. package/dist/ecommerce/components/orders/OrderList.d.ts.map +1 -0
  192. package/dist/ecommerce/components/ui/accordion.d.ts +7 -0
  193. package/dist/ecommerce/components/ui/accordion.d.ts.map +1 -0
  194. package/dist/ecommerce/components/ui/badge.d.ts +10 -0
  195. package/dist/ecommerce/components/ui/badge.d.ts.map +1 -0
  196. package/dist/ecommerce/components/ui/button.d.ts +12 -0
  197. package/dist/ecommerce/components/ui/button.d.ts.map +1 -0
  198. package/dist/ecommerce/components/ui/card.d.ts +8 -0
  199. package/dist/ecommerce/components/ui/card.d.ts.map +1 -0
  200. package/dist/ecommerce/components/ui/dialog.d.ts +13 -0
  201. package/dist/ecommerce/components/ui/dialog.d.ts.map +1 -0
  202. package/dist/ecommerce/components/ui/input.d.ts +5 -0
  203. package/dist/ecommerce/components/ui/input.d.ts.map +1 -0
  204. package/dist/ecommerce/components/ui/label.d.ts +3 -0
  205. package/dist/ecommerce/components/ui/label.d.ts.map +1 -0
  206. package/dist/ecommerce/components/ui/select.d.ts +9 -0
  207. package/dist/ecommerce/components/ui/select.d.ts.map +1 -0
  208. package/dist/ecommerce/components/ui/separator.d.ts +4 -0
  209. package/dist/ecommerce/components/ui/separator.d.ts.map +1 -0
  210. package/dist/ecommerce/components/ui/sheet.d.ts +21 -0
  211. package/dist/ecommerce/components/ui/sheet.d.ts.map +1 -0
  212. package/dist/ecommerce/components/ui/skeleton.d.ts +3 -0
  213. package/dist/ecommerce/components/ui/skeleton.d.ts.map +1 -0
  214. package/dist/ecommerce/components/ui/tabs.d.ts +7 -0
  215. package/dist/ecommerce/components/ui/tabs.d.ts.map +1 -0
  216. package/dist/ecommerce/components/ui/textarea.d.ts +5 -0
  217. package/dist/ecommerce/components/ui/textarea.d.ts.map +1 -0
  218. package/dist/ecommerce/config/context.d.ts +13 -0
  219. package/dist/ecommerce/config/context.d.ts.map +1 -0
  220. package/dist/ecommerce/config/types.d.ts +48 -0
  221. package/dist/ecommerce/config/types.d.ts.map +1 -0
  222. package/dist/ecommerce/hooks/checkoutReturn.d.ts +3 -0
  223. package/dist/ecommerce/hooks/checkoutReturn.d.ts.map +1 -0
  224. package/dist/ecommerce/hooks/useAIRelatedProducts.d.ts +33 -0
  225. package/dist/ecommerce/hooks/useAIRelatedProducts.d.ts.map +1 -0
  226. package/dist/ecommerce/hooks/useCartInventory.d.ts +42 -0
  227. package/dist/ecommerce/hooks/useCartInventory.d.ts.map +1 -0
  228. package/dist/ecommerce/hooks/useCatalogUrlState.d.ts +15 -0
  229. package/dist/ecommerce/hooks/useCatalogUrlState.d.ts.map +1 -0
  230. package/dist/ecommerce/hooks/useCategories.d.ts +7 -0
  231. package/dist/ecommerce/hooks/useCategories.d.ts.map +1 -0
  232. package/dist/ecommerce/hooks/useCheckoutResultFromUrl.d.ts +4 -0
  233. package/dist/ecommerce/hooks/useCheckoutResultFromUrl.d.ts.map +1 -0
  234. package/dist/ecommerce/hooks/useHoldExpiry.d.ts +34 -0
  235. package/dist/ecommerce/hooks/useHoldExpiry.d.ts.map +1 -0
  236. package/dist/ecommerce/hooks/useInventoryVerification.d.ts +41 -0
  237. package/dist/ecommerce/hooks/useInventoryVerification.d.ts.map +1 -0
  238. package/dist/ecommerce/hooks/useOrders.d.ts +7 -0
  239. package/dist/ecommerce/hooks/useOrders.d.ts.map +1 -0
  240. package/dist/ecommerce/hooks/usePaymentMethodsConfig.d.ts +6 -0
  241. package/dist/ecommerce/hooks/usePaymentMethodsConfig.d.ts.map +1 -0
  242. package/dist/ecommerce/hooks/useProduct.d.ts +7 -0
  243. package/dist/ecommerce/hooks/useProduct.d.ts.map +1 -0
  244. package/dist/ecommerce/hooks/useProducts.d.ts +8 -0
  245. package/dist/ecommerce/hooks/useProducts.d.ts.map +1 -0
  246. package/dist/ecommerce/hooks/useShippingMethods.d.ts +10 -0
  247. package/dist/ecommerce/hooks/useShippingMethods.d.ts.map +1 -0
  248. package/dist/ecommerce/hooks/useStorefrontSettings.d.ts +32 -0
  249. package/dist/ecommerce/hooks/useStorefrontSettings.d.ts.map +1 -0
  250. package/dist/ecommerce/hooks/useSubscriptionData.d.ts +8 -0
  251. package/dist/ecommerce/hooks/useSubscriptionData.d.ts.map +1 -0
  252. package/dist/ecommerce/index.d.ts +98 -0
  253. package/dist/ecommerce/index.d.ts.map +1 -0
  254. package/dist/ecommerce/integrations/cedros-pay/useCedrosPayCheckoutAdapter.d.ts +10 -0
  255. package/dist/ecommerce/integrations/cedros-pay/useCedrosPayCheckoutAdapter.d.ts.map +1 -0
  256. package/dist/ecommerce/state/cart/CartProvider.d.ts +27 -0
  257. package/dist/ecommerce/state/cart/CartProvider.d.ts.map +1 -0
  258. package/dist/ecommerce/state/cart/cartReducer.d.ts +35 -0
  259. package/dist/ecommerce/state/cart/cartReducer.d.ts.map +1 -0
  260. package/dist/ecommerce/state/checkout/checkoutSchema.d.ts +21 -0
  261. package/dist/ecommerce/state/checkout/checkoutSchema.d.ts.map +1 -0
  262. package/dist/ecommerce/state/checkout/useCheckout.d.ts +34 -0
  263. package/dist/ecommerce/state/checkout/useCheckout.d.ts.map +1 -0
  264. package/dist/ecommerce/templates/CartTemplate.d.ts +5 -0
  265. package/dist/ecommerce/templates/CartTemplate.d.ts.map +1 -0
  266. package/dist/ecommerce/templates/CategoryTemplate.d.ts +11 -0
  267. package/dist/ecommerce/templates/CategoryTemplate.d.ts.map +1 -0
  268. package/dist/ecommerce/templates/CheckoutTemplate.d.ts +9 -0
  269. package/dist/ecommerce/templates/CheckoutTemplate.d.ts.map +1 -0
  270. package/dist/ecommerce/templates/ProductTemplate.d.ts +11 -0
  271. package/dist/ecommerce/templates/ProductTemplate.d.ts.map +1 -0
  272. package/dist/ecommerce/templates/PurchaseHistoryTemplate.d.ts +6 -0
  273. package/dist/ecommerce/templates/PurchaseHistoryTemplate.d.ts.map +1 -0
  274. package/dist/ecommerce/templates/ReceiptTemplate.d.ts +19 -0
  275. package/dist/ecommerce/templates/ReceiptTemplate.d.ts.map +1 -0
  276. package/dist/ecommerce/templates/ShopTemplate.d.ts +15 -0
  277. package/dist/ecommerce/templates/ShopTemplate.d.ts.map +1 -0
  278. package/dist/ecommerce/templates/SubscriptionTemplate.d.ts +15 -0
  279. package/dist/ecommerce/templates/SubscriptionTemplate.d.ts.map +1 -0
  280. package/dist/ecommerce/testing/adapterContract.d.ts +11 -0
  281. package/dist/ecommerce/testing/adapterContract.d.ts.map +1 -0
  282. package/dist/ecommerce/types.d.ts +164 -0
  283. package/dist/ecommerce/types.d.ts.map +1 -0
  284. package/dist/ecommerce/utils/cartCheckoutRequirements.d.ts +18 -0
  285. package/dist/ecommerce/utils/cartCheckoutRequirements.d.ts.map +1 -0
  286. package/dist/ecommerce/utils/cartItemMetadata.d.ts +3 -0
  287. package/dist/ecommerce/utils/cartItemMetadata.d.ts.map +1 -0
  288. package/dist/ecommerce/utils/cn.d.ts +3 -0
  289. package/dist/ecommerce/utils/cn.d.ts.map +1 -0
  290. package/dist/ecommerce/utils/money.d.ts +6 -0
  291. package/dist/ecommerce/utils/money.d.ts.map +1 -0
  292. package/dist/ecommerce/utils/storage.d.ts +5 -0
  293. package/dist/ecommerce/utils/storage.d.ts.map +1 -0
  294. package/dist/en-BXheDBal.mjs +19 -0
  295. package/dist/en-Yikrt96u.js +1 -0
  296. package/dist/hooks/useCreditsPayment.d.ts +64 -0
  297. package/dist/hooks/useCreditsPayment.d.ts.map +1 -0
  298. package/dist/hooks/useCreditsSubscription.d.ts +42 -0
  299. package/dist/hooks/useCreditsSubscription.d.ts.map +1 -0
  300. package/dist/hooks/usePaymentMode.d.ts.map +1 -1
  301. package/dist/hooks/useStripeCheckout.d.ts +1 -0
  302. package/dist/hooks/useStripeCheckout.d.ts.map +1 -1
  303. package/dist/hooks/useSubscriptionManagement.d.ts +4 -0
  304. package/dist/hooks/useSubscriptionManagement.d.ts.map +1 -1
  305. package/dist/hooks/useX402Payment.d.ts +1 -0
  306. package/dist/hooks/useX402Payment.d.ts.map +1 -1
  307. package/dist/index-DPl2S6i0.js +136 -0
  308. package/dist/index-SV9PXby1.mjs +26838 -0
  309. package/dist/index.d.ts +10 -2
  310. package/dist/index.d.ts.map +1 -1
  311. package/dist/index.js +1 -1
  312. package/dist/index.mjs +79 -1922
  313. package/dist/magic-string.es-B81Zo59j.js +10 -0
  314. package/dist/magic-string.es-uPKorP4O.mjs +663 -0
  315. package/dist/managers/CreditsManager.d.ts +151 -0
  316. package/dist/managers/CreditsManager.d.ts.map +1 -0
  317. package/dist/managers/ManagerCache.d.ts +2 -0
  318. package/dist/managers/ManagerCache.d.ts.map +1 -1
  319. package/dist/managers/RouteDiscoveryManager.d.ts.map +1 -1
  320. package/dist/managers/StripeManager.d.ts.map +1 -1
  321. package/dist/managers/X402Manager.d.ts.map +1 -1
  322. package/dist/pay-react.css +1 -1
  323. package/dist/sections-BsFQxfHN.mjs +10 -0
  324. package/dist/sections-CTqBNAKW.js +1 -0
  325. package/dist/stripe-only.d.ts +1 -1
  326. package/dist/stripe-only.d.ts.map +1 -1
  327. package/dist/stripe-only.js +1 -1
  328. package/dist/stripe-only.mjs +12 -13
  329. package/dist/styles-C4-_hbgr.js +1 -0
  330. package/dist/styles-QcAsIVWl.mjs +1909 -0
  331. package/dist/telemetry.js +1 -1
  332. package/dist/telemetry.mjs +1 -1
  333. package/dist/testing/index.js +147 -1
  334. package/dist/testing/index.mjs +10555 -103
  335. package/dist/types/componentOptions.d.ts +14 -4
  336. package/dist/types/componentOptions.d.ts.map +1 -1
  337. package/dist/types/errors.d.ts +26 -4
  338. package/dist/types/errors.d.ts.map +1 -1
  339. package/dist/types/index.d.ts +115 -0
  340. package/dist/types/index.d.ts.map +1 -1
  341. package/dist/utils/cartHelpers.d.ts +3 -0
  342. package/dist/utils/cartHelpers.d.ts.map +1 -1
  343. package/dist/utils/cspHelper.d.ts +7 -1
  344. package/dist/utils/cspHelper.d.ts.map +1 -1
  345. package/dist/utils/csvHelpers.d.ts +62 -0
  346. package/dist/utils/csvHelpers.d.ts.map +1 -0
  347. package/dist/utils/csvHelpers.test.d.ts +2 -0
  348. package/dist/utils/csvHelpers.test.d.ts.map +1 -0
  349. package/dist/utils/dateHelpers.d.ts +24 -0
  350. package/dist/utils/dateHelpers.d.ts.map +1 -0
  351. package/dist/utils/eventEmitter.d.ts +1 -1
  352. package/dist/utils/eventEmitter.d.ts.map +1 -1
  353. package/dist/utils/fetchWithTimeout.d.ts +3 -3
  354. package/dist/utils/index.d.ts +2 -1
  355. package/dist/utils/index.d.ts.map +1 -1
  356. package/dist/utils/tokenMintValidator.d.ts +10 -6
  357. package/dist/utils/tokenMintValidator.d.ts.map +1 -1
  358. package/dist/utils/uuid.d.ts.map +1 -1
  359. package/dist/uuid-C5B8o31X.js +1 -0
  360. package/dist/uuid-_z3jSatJ.mjs +17 -0
  361. package/package.json +25 -9
  362. package/dist/CedrosContext-DbndTsTA.js +0 -11
  363. package/dist/en-C739WV_-.mjs +0 -19
  364. package/dist/en-Cz4OpvN-.js +0 -1
  365. package/dist/styles-DFcRS8Uu.mjs +0 -1626
  366. package/dist/styles-Dup9uK6S.js +0 -1
  367. package/dist/utils/uuid-shim.d.ts +0 -9
  368. package/dist/utils/uuid-shim.d.ts.map +0 -1
  369. package/dist/uuid-C0iMjdcc.js +0 -1
  370. package/dist/uuid-UlzrVY8Y.mjs +0 -17
  371. package/dist/walletDetection-JZR3UCOa.mjs +0 -27
  372. package/dist/walletDetection-bNmV5ItZ.js +0 -1
@@ -0,0 +1,151 @@
1
+ import { CreditsRequirement, CreditsPaymentResult, CreditsHoldResponse, CartCreditsQuote, PaymentResult } from '../types';
2
+ import { RouteDiscoveryManager } from './RouteDiscoveryManager';
3
+ import { NormalizedCartItem } from '../utils/cartHelpers';
4
+ /**
5
+ * Options for creating a credits hold
6
+ */
7
+ export interface CreateCreditsHoldOptions {
8
+ resource: string;
9
+ couponCode?: string;
10
+ /** JWT token from cedros-login for user authentication */
11
+ authToken: string;
12
+ }
13
+ /**
14
+ * Options for processing a credits payment
15
+ */
16
+ export interface ProcessCreditsPaymentOptions {
17
+ resource: string;
18
+ holdId: string;
19
+ couponCode?: string;
20
+ /** JWT token from cedros-login for user authentication */
21
+ authToken: string;
22
+ metadata?: Record<string, string>;
23
+ }
24
+ /**
25
+ * Options for creating a cart credits hold
26
+ */
27
+ export interface CreateCartCreditsHoldOptions {
28
+ cartId: string;
29
+ /** JWT token from cedros-login for user authentication */
30
+ authToken: string;
31
+ }
32
+ /**
33
+ * Options for processing a credits cart payment
34
+ */
35
+ export interface ProcessCreditsCartPaymentOptions {
36
+ cartId: string;
37
+ holdId: string;
38
+ /** JWT token from cedros-login for user authentication */
39
+ authToken: string;
40
+ metadata?: Record<string, string>;
41
+ }
42
+ /**
43
+ * Public interface for Credits payment management.
44
+ *
45
+ * Use this interface for type annotations instead of the concrete CreditsManager class.
46
+ * This allows internal implementation changes without breaking your code.
47
+ *
48
+ * @example
49
+ * ```tsx
50
+ * function MyComponent() {
51
+ * const { creditsManager } = useCedrosContext();
52
+ * // creditsManager is typed as ICreditsManager
53
+ * const quote = await creditsManager.requestQuote('item-1');
54
+ * }
55
+ * ```
56
+ */
57
+ export interface ICreditsManager {
58
+ /**
59
+ * Request a credits quote for a single resource
60
+ * @param resource - Resource ID to get quote for
61
+ * @param couponCode - Optional coupon code for discount
62
+ * @returns Credits requirement with amount and details
63
+ */
64
+ requestQuote(resource: string, couponCode?: string): Promise<CreditsRequirement | null>;
65
+ /**
66
+ * Request a credits quote for a cart
67
+ * @param items - Cart items to get quote for
68
+ * @param couponCode - Optional coupon code for discount
69
+ * @returns Cart credits quote with total amount
70
+ */
71
+ requestCartQuote(items: NormalizedCartItem[], couponCode?: string): Promise<{
72
+ cartId: string;
73
+ credits: CartCreditsQuote;
74
+ } | null>;
75
+ /**
76
+ * Create a hold on user's credits
77
+ * Requires user authentication via cedros-login JWT token
78
+ * @param options - Hold creation options including resource and auth token
79
+ */
80
+ createHold(options: CreateCreditsHoldOptions): Promise<CreditsHoldResponse>;
81
+ /**
82
+ * Create a hold on user's credits for a cart
83
+ * Requires user authentication via cedros-login JWT token
84
+ * @param options - Cart hold creation options
85
+ */
86
+ createCartHold(options: CreateCartCreditsHoldOptions): Promise<CreditsHoldResponse>;
87
+ /**
88
+ * Authorize a credits payment using a hold
89
+ * @param options - Payment options including hold ID
90
+ */
91
+ authorizePayment(options: ProcessCreditsPaymentOptions): Promise<CreditsPaymentResult>;
92
+ /**
93
+ * Authorize a credits cart payment using a hold
94
+ * @param options - Cart payment options including hold ID
95
+ */
96
+ authorizeCartPayment(options: ProcessCreditsCartPaymentOptions): Promise<CreditsPaymentResult>;
97
+ /**
98
+ * Complete credits payment flow: create hold and authorize
99
+ * Convenience method that combines createHold + authorizePayment
100
+ * @param resource - Resource being purchased
101
+ * @param authToken - JWT token from cedros-login
102
+ * @param couponCode - Optional coupon code
103
+ * @param metadata - Optional metadata
104
+ */
105
+ processPayment(resource: string, authToken: string, couponCode?: string, metadata?: Record<string, string>): Promise<PaymentResult>;
106
+ }
107
+ /**
108
+ * Internal implementation of Credits payment management.
109
+ *
110
+ * @internal
111
+ * **DO NOT USE THIS CLASS DIRECTLY**
112
+ *
113
+ * This concrete class is not part of the stable API and may change without notice.
114
+ * Use the ICreditsManager interface via useCedrosContext() instead.
115
+ *
116
+ * @see {@link ICreditsManager} for the stable interface
117
+ */
118
+ export declare class CreditsManager implements ICreditsManager {
119
+ private readonly routeDiscovery;
120
+ private readonly rateLimiter;
121
+ private readonly circuitBreaker;
122
+ constructor(routeDiscovery: RouteDiscoveryManager);
123
+ requestQuote(resource: string, couponCode?: string): Promise<CreditsRequirement | null>;
124
+ requestCartQuote(items: NormalizedCartItem[], couponCode?: string): Promise<{
125
+ cartId: string;
126
+ credits: CartCreditsQuote;
127
+ } | null>;
128
+ /**
129
+ * Create a hold on user's credits
130
+ * Requires Authorization header with cedros-login JWT token
131
+ */
132
+ createHold(options: CreateCreditsHoldOptions): Promise<CreditsHoldResponse>;
133
+ /**
134
+ * Create a hold on user's credits for a cart
135
+ * Requires Authorization header with cedros-login JWT token
136
+ */
137
+ createCartHold(options: CreateCartCreditsHoldOptions): Promise<CreditsHoldResponse>;
138
+ authorizePayment(options: ProcessCreditsPaymentOptions): Promise<CreditsPaymentResult>;
139
+ authorizeCartPayment(options: ProcessCreditsCartPaymentOptions): Promise<CreditsPaymentResult>;
140
+ /**
141
+ * Process a complete credits payment (convenience method)
142
+ * Combines createHold + authorizePayment in one call
143
+ *
144
+ * @param resource - Resource being purchased
145
+ * @param authToken - JWT token from cedros-login
146
+ * @param couponCode - Optional coupon code
147
+ * @param metadata - Optional metadata
148
+ */
149
+ processPayment(resource: string, authToken: string, couponCode?: string, metadata?: Record<string, string>): Promise<PaymentResult>;
150
+ }
151
+ //# sourceMappingURL=CreditsManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreditsManager.d.ts","sourceRoot":"","sources":["../../src/managers/CreditsManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAKhE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK/D;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gCAAgC;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAExF;;;;;OAKG;IACH,gBAAgB,CACd,KAAK,EAAE,kBAAkB,EAAE,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,gBAAgB,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAEjE;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAE5E;;;;OAIG;IACH,cAAc,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEpF;;;OAGG;IACH,gBAAgB,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEvF;;;OAGG;IACH,oBAAoB,CAAC,OAAO,EAAE,gCAAgC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAE/F;;;;;;;OAOG;IACH,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC,aAAa,CAAC,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,cAAe,YAAW,eAAe;IACpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmD;IAC/E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAI5B;gBAES,cAAc,EAAE,qBAAqB;IAI3C,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IA6CvF,gBAAgB,CACpB,KAAK,EAAE,kBAAkB,EAAE,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,gBAAgB,CAAA;KAAE,GAAG,IAAI,CAAC;IA4ChE;;;OAGG;IACG,UAAU,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA0CjF;;;OAGG;IACG,cAAc,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA0CnF,gBAAgB,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAoEtF,oBAAoB,CAAC,OAAO,EAAE,gCAAgC,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAyEpG;;;;;;;;OAQG;IACG,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC,aAAa,CAAC;CA0B1B"}
@@ -3,6 +3,7 @@ import { IX402Manager } from './X402Manager';
3
3
  import { IWalletManager } from './WalletManager';
4
4
  import { ISubscriptionManager } from './SubscriptionManager';
5
5
  import { ISubscriptionChangeManager } from './SubscriptionChangeManager';
6
+ import { ICreditsManager } from './CreditsManager';
6
7
  import { RouteDiscoveryManager } from './RouteDiscoveryManager';
7
8
  import { SolanaCluster } from '../types';
8
9
  /**
@@ -19,6 +20,7 @@ export declare function getOrCreateManagers(stripePublicKey: string, serverUrl:
19
20
  walletManager: IWalletManager;
20
21
  subscriptionManager: ISubscriptionManager;
21
22
  subscriptionChangeManager: ISubscriptionChangeManager;
23
+ creditsManager: ICreditsManager;
22
24
  routeDiscovery: RouteDiscoveryManager;
23
25
  };
24
26
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ManagerCache.d.ts","sourceRoot":"","sources":["../../src/managers/ManagerCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAA6B,KAAK,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzG,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAkD9C;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,aAAa,EAC5B,cAAc,CAAC,EAAE,MAAM,EACvB,2BAA2B,CAAC,EAAE,OAAO,GACpC;IACD,aAAa,EAAE,cAAc,CAAC;IAC9B,WAAW,EAAE,YAAY,CAAC;IAC1B,aAAa,EAAE,cAAc,CAAC;IAC9B,mBAAmB,EAAE,oBAAoB,CAAC;IAC1C,yBAAyB,EAAE,0BAA0B,CAAC;IACtD,cAAc,EAAE,qBAAqB,CAAC;CACvC,CAqDA;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,aAAa,EAC5B,cAAc,CAAC,EAAE,MAAM,EACvB,2BAA2B,CAAC,EAAE,OAAO,GACpC,IAAI,CA4BN;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB;;;;;;EAQnC"}
1
+ {"version":3,"file":"ManagerCache.d.ts","sourceRoot":"","sources":["../../src/managers/ManagerCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAA6B,KAAK,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzG,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAmD9C;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,aAAa,EAC5B,cAAc,CAAC,EAAE,MAAM,EACvB,2BAA2B,CAAC,EAAE,OAAO,GACpC;IACD,aAAa,EAAE,cAAc,CAAC;IAC9B,WAAW,EAAE,YAAY,CAAC;IAC1B,aAAa,EAAE,cAAc,CAAC;IAC9B,mBAAmB,EAAE,oBAAoB,CAAC;IAC1C,yBAAyB,EAAE,0BAA0B,CAAC;IACtD,cAAc,EAAE,eAAe,CAAC;IAChC,cAAc,EAAE,qBAAqB,CAAC;CACvC,CAuDA;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,aAAa,EAC5B,cAAc,CAAC,EAAE,MAAM,EACvB,2BAA2B,CAAC,EAAE,OAAO,GACpC,IAAI,CA4BN;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB;;;;;;EAQnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"RouteDiscoveryManager.d.ts","sourceRoot":"","sources":["../../src/managers/RouteDiscoveryManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAElC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAExC;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;CACf;AAKD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,qBAAsB,YAAW,sBAAsB;IAClE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;gBAEhC,SAAS,EAAE,MAAM;IAI7B;;;;;;OAMG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAiFvC;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO7C;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}
1
+ {"version":3,"file":"RouteDiscoveryManager.d.ts","sourceRoot":"","sources":["../../src/managers/RouteDiscoveryManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAElC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAExC;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;CACf;AAKD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,qBAAsB,YAAW,sBAAsB;IAClE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;gBAEhC,SAAS,EAAE,MAAM;IAI7B;;;;;;OAMG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAmFvC;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO7C;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}
@@ -1 +1 @@
1
- {"version":3,"file":"StripeManager.d.ts","sourceRoot":"","sources":["../../src/managers/StripeManager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAIhE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK/D;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAE7E;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAE9D;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAEtE;;OAEG;IACH,mBAAmB,CACjB,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,aAAa,CAAC,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmD;IAC/E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAI5B;gBAES,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,qBAAqB;IAKpE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA8ClF;;OAEG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAyBnE;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC;IAY3E;;OAEG;IACG,mBAAmB,CACvB,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,aAAa,CAAC;CA4D1B"}
1
+ {"version":3,"file":"StripeManager.d.ts","sourceRoot":"","sources":["../../src/managers/StripeManager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAIhE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK/D;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAE7E;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAE9D;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAEtE;;OAEG;IACH,mBAAmB,CACjB,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,aAAa,CAAC,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmD;IAC/E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAI5B;gBAES,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,qBAAqB;IAKpE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA8ClF;;OAEG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAyBnE;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC;IAY3E;;OAEG;IACG,mBAAmB,CACvB,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,aAAa,CAAC;CA+D1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"X402Manager.d.ts","sourceRoot":"","sources":["../../src/managers/X402Manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"X402Manager.d.ts","sourceRoot":"","sources":["../../src/managers/X402Manager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- .cedros-theme-root{--cedros-surface-bg: transparent;--cedros-surface-text: #111827;--cedros-surface-border: transparent;--cedros-stripe-bg: linear-gradient(135deg, #635bff 0%, #4f46e5 100%);--cedros-stripe-text: #ffffff;--cedros-stripe-shadow: rgba(79, 70, 229, .25);--cedros-crypto-bg: linear-gradient(135deg, #14f195 0%, #9945ff 100%);--cedros-crypto-text: #ffffff;--cedros-crypto-shadow: rgba(99, 102, 241, .25);--cedros-error-bg: #fee2e2;--cedros-error-border: #fca5a5;--cedros-error-text: #b91c1c;--cedros-success-bg: #dcfce7;--cedros-success-border: #86efac;--cedros-success-text: #166534;--cedros-modal-overlay: rgba(0, 0, 0, .5);--cedros-modal-bg: #ffffff;--cedros-modal-border: rgba(15, 23, 42, .08);--cedros-button-radius: 8px;--cedros-button-padding: .75rem 1.5rem;--cedros-button-font-size: 1rem;--cedros-button-font-weight: 600}.cedros-theme.cedros-theme--dark{--cedros-surface-bg: transparent;--cedros-surface-text: #f9fafb;--cedros-surface-border: transparent;--cedros-stripe-bg: linear-gradient(135deg, #4f46e5 0%, #3730a3 100%);--cedros-stripe-text: #f5f3ff;--cedros-stripe-shadow: rgba(99, 102, 241, .35);--cedros-crypto-bg: linear-gradient(135deg, #1dd4a6 0%, #6d28d9 100%);--cedros-crypto-text: #ecfeff;--cedros-crypto-shadow: rgba(75, 85, 99, .35);--cedros-error-bg: #7f1d1d;--cedros-error-border: #fca5a5;--cedros-error-text: #fecaca;--cedros-success-bg: #14532d;--cedros-success-border: #4ade80;--cedros-success-text: #bbf7d0;--cedros-modal-overlay: rgba(0, 0, 0, .75);--cedros-modal-bg: #1f2937;--cedros-modal-border: rgba(148, 163, 184, .25)}.cedros-theme__pay{display:flex;flex-direction:column;gap:1rem;max-width:400px;background:var(--cedros-surface-bg);color:var(--cedros-surface-text);border:none;box-sizing:border-box}.cedros-theme__pay-content{display:flex;flex-direction:column;gap:.75rem}.cedros-theme__pay-content--horizontal{flex-direction:row;gap:.75rem}.cedros-theme__pay-content--horizontal .cedros-theme__button{flex:1;min-width:0}.cedros-theme__pay-content--vertical{flex-direction:column}.cedros-theme__button{padding:var(--cedros-button-padding);font-size:var(--cedros-button-font-size);font-weight:var(--cedros-button-font-weight);border:none;border-radius:var(--cedros-button-radius);cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,opacity .2s ease;width:100%;text-align:center}.cedros-theme__button:hover:not(:disabled){transform:translateY(-1px)}.cedros-theme__button:disabled{opacity:.6;cursor:not-allowed}.cedros-theme__stripe{background:var(--cedros-stripe-bg);color:var(--cedros-stripe-text);box-shadow:0 4px 12px var(--cedros-stripe-shadow)}.cedros-theme__stripe:hover:not(:disabled){box-shadow:0 8px 18px var(--cedros-stripe-shadow)}.cedros-theme__crypto{background:var(--cedros-crypto-bg);color:var(--cedros-crypto-text);box-shadow:0 4px 12px var(--cedros-crypto-shadow)}.cedros-theme__crypto:hover:not(:disabled){box-shadow:0 8px 18px var(--cedros-crypto-shadow)}.cedros-theme__error{padding:.75rem;background-color:var(--cedros-error-bg);border:1px solid var(--cedros-error-border);border-radius:8px;color:var(--cedros-error-text);font-size:.875rem;margin-top:.5rem}.cedros-theme__success{padding:.75rem;background-color:var(--cedros-success-bg);border:1px solid var(--cedros-success-border);border-radius:8px;color:var(--cedros-success-text);font-size:.875rem;margin-top:.5rem}.cedros-theme__notice{padding:.75rem;background-color:#0e74901f;border:1px solid rgba(14,116,144,.3);border-radius:8px;color:#0f172a;font-size:.875rem;margin-bottom:.75rem}@media(max-width:640px){.cedros-theme__pay{max-width:100%}.cedros-theme__button{font-size:.875rem;padding:.625rem 1.25rem}.cedros-theme__pay-content--horizontal{flex-direction:column}}
1
+ .cedros-theme-root{--cedros-surface-bg: transparent;--cedros-surface-text: #111827;--cedros-surface-border: transparent;--cedros-stripe-bg: #635bff;--cedros-stripe-text: #ffffff;--cedros-stripe-shadow: rgba(79, 70, 229, .25);--cedros-crypto-bg: #9945ff;--cedros-crypto-text: #ffffff;--cedros-crypto-shadow: rgba(153, 69, 255, .25);--cedros-credits-bg: #059669;--cedros-credits-text: #ffffff;--cedros-credits-shadow: rgba(5, 150, 105, .25);--cedros-error-bg: #fee2e2;--cedros-error-border: #fca5a5;--cedros-error-text: #b91c1c;--cedros-success-bg: #dcfce7;--cedros-success-border: #86efac;--cedros-success-text: #166534;--cedros-modal-overlay: rgba(0, 0, 0, .5);--cedros-modal-bg: #ffffff;--cedros-modal-border: rgba(15, 23, 42, .08);--cedros-button-radius: 8px;--cedros-button-padding: .75rem 1.5rem;--cedros-button-font-size: 1rem;--cedros-button-font-weight: 600}.cedros-theme.cedros-theme--dark{--cedros-surface-bg: transparent;--cedros-surface-text: #f9fafb;--cedros-surface-border: transparent;--cedros-stripe-bg: #4f46e5;--cedros-stripe-text: #f5f3ff;--cedros-stripe-shadow: rgba(99, 102, 241, .35);--cedros-crypto-bg: #7c3aed;--cedros-crypto-text: #ecfeff;--cedros-crypto-shadow: rgba(124, 58, 237, .35);--cedros-credits-bg: #047857;--cedros-credits-text: #ecfdf5;--cedros-credits-shadow: rgba(4, 120, 87, .35);--cedros-error-bg: #7f1d1d;--cedros-error-border: #fca5a5;--cedros-error-text: #fecaca;--cedros-success-bg: #14532d;--cedros-success-border: #4ade80;--cedros-success-text: #bbf7d0;--cedros-modal-overlay: rgba(0, 0, 0, .75);--cedros-modal-bg: #1f2937;--cedros-modal-border: rgba(148, 163, 184, .25)}.cedros-theme__pay{display:flex;flex-direction:column;gap:1rem;max-width:400px;background:var(--cedros-surface-bg);color:var(--cedros-surface-text);border:none;box-sizing:border-box}.cedros-theme__pay-content{display:flex;flex-direction:column;gap:.75rem}.cedros-theme__pay-content--horizontal{flex-direction:row;gap:.75rem}.cedros-theme__pay-content--horizontal .cedros-theme__button{flex:1;min-width:0}.cedros-theme__pay-content--vertical{flex-direction:column}.cedros-theme__button{padding:var(--cedros-button-padding);font-size:var(--cedros-button-font-size);font-weight:var(--cedros-button-font-weight);border:none;border-radius:var(--cedros-button-radius);cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,opacity .2s ease;width:100%;text-align:center}.cedros-theme__button:hover:not(:disabled){transform:translateY(-1px)}.cedros-theme__button:disabled{opacity:.6;cursor:not-allowed}.cedros-theme__stripe{background:var(--cedros-stripe-bg);color:var(--cedros-stripe-text);box-shadow:0 4px 12px var(--cedros-stripe-shadow)}.cedros-theme__stripe:hover:not(:disabled){box-shadow:0 8px 18px var(--cedros-stripe-shadow)}.cedros-theme__crypto{background:var(--cedros-crypto-bg);color:var(--cedros-crypto-text);box-shadow:0 4px 12px var(--cedros-crypto-shadow)}.cedros-theme__crypto:hover:not(:disabled){box-shadow:0 8px 18px var(--cedros-crypto-shadow)}.cedros-theme__credits{background:var(--cedros-credits-bg);color:var(--cedros-credits-text);box-shadow:0 4px 12px var(--cedros-credits-shadow)}.cedros-theme__credits:hover:not(:disabled){box-shadow:0 8px 18px var(--cedros-credits-shadow)}.cedros-theme__error{padding:.75rem;background-color:var(--cedros-error-bg);border:1px solid var(--cedros-error-border);border-radius:8px;color:var(--cedros-error-text);font-size:.875rem;margin-top:.5rem}.cedros-theme__success{padding:.75rem;background-color:var(--cedros-success-bg);border:1px solid var(--cedros-success-border);border-radius:8px;color:var(--cedros-success-text);font-size:.875rem;margin-top:.5rem}.cedros-theme__notice{padding:.75rem;background-color:#0e74901f;border:1px solid rgba(14,116,144,.3);border-radius:8px;color:var(--cedros-surface-text);font-size:.875rem;margin-bottom:.75rem}.cedros-theme--dark .cedros-theme__notice{background-color:#0e749033;border-color:#0e749066}@media(max-width:640px){.cedros-theme__pay{max-width:100%}.cedros-theme__button{font-size:.875rem;padding:.625rem 1.25rem}.cedros-theme__pay-content--horizontal{flex-direction:column}}.cedros-admin{--admin-bg: hsl(0, 0%, 100%);--admin-fg: hsl(222.2, 84%, 4.9%);--admin-muted: hsl(215.4, 16.3%, 46.9%);--admin-muted-bg: hsl(210, 40%, 96.1%);--admin-accent: hsl(210, 40%, 96.1%);--admin-accent-fg: hsl(222.2, 47.4%, 11.2%);--admin-border: hsl(214.3, 31.8%, 91.4%);--admin-input: hsl(214.3, 31.8%, 91.4%);--admin-ring: hsl(222.2, 84%, 4.9%);--admin-primary: hsl(222.2, 47.4%, 11.2%);--admin-primary-fg: hsl(210, 40%, 98%);--admin-primary-light: hsl(210, 40%, 96.1%);--admin-success: hsl(142, 71%, 45%);--admin-success-light: hsl(142, 76%, 94%);--admin-warning: hsl(38, 92%, 50%);--admin-warning-light: hsl(48, 96%, 89%);--admin-error: hsl(0, 84.2%, 60.2%);--admin-error-light: hsl(0, 86%, 97%);--admin-info: hsl(221.2, 83.2%, 53.3%);--admin-info-light: hsl(214, 100%, 95%);--admin-sidebar-bg: hsl(0, 0%, 100%);--admin-card-bg: hsl(0, 0%, 100%);--admin-radius: .5rem;--admin-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--admin-shadow: 0 2px 4px 0 rgb(0 0 0 / .1);--admin-shadow-card: 0 1px 2px 0 rgb(0 0 0 / .04), 0 1px 1px -1px rgb(0 0 0 / .08);--admin-table-head: hsl(210, 40%, 98%);--admin-table-row: hsl(0, 0%, 100%);--admin-table-row-hover: hsl(210, 40%, 96.1%);--admin-font: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--admin-font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace}.cedros-admin.cedros-admin--dark{--admin-bg: hsl(222.2, 84%, 4.9%);--admin-fg: hsl(210, 40%, 98%);--admin-muted: hsl(215, 20.2%, 65.1%);--admin-muted-bg: hsl(217.2, 32.6%, 17.5%);--admin-accent: hsl(217.2, 32.6%, 17.5%);--admin-accent-fg: hsl(210, 40%, 98%);--admin-border: hsl(217.2, 32.6%, 17.5%);--admin-input: hsl(217.2, 32.6%, 17.5%);--admin-ring: hsl(212.7, 26.8%, 83.9%);--admin-primary: hsl(210, 40%, 98%);--admin-primary-fg: hsl(222.2, 47.4%, 11.2%);--admin-primary-light: hsl(217.2, 32.6%, 17.5%);--admin-success: hsl(142, 71%, 45%);--admin-success-light: hsl(142, 40%, 15%);--admin-warning: hsl(38, 92%, 50%);--admin-warning-light: hsl(38, 40%, 20%);--admin-error: hsl(0, 62.8%, 30.6%);--admin-error-light: hsl(0, 62.8%, 15%);--admin-info: hsl(217.2, 91.2%, 59.8%);--admin-info-light: hsl(217.2, 32.6%, 17.5%);--admin-sidebar-bg: hsl(222.2, 84%, 4.9%);--admin-card-bg: hsl(222.2, 84%, 4.9%);--admin-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .3);--admin-shadow: 0 2px 4px 0 rgb(0 0 0 / .4);--admin-shadow-card: 0 1px 2px 0 rgb(0 0 0 / .3);--admin-table-head: hsl(217.2, 32.6%, 17.5%);--admin-table-row: hsl(222.2, 84%, 4.9%);--admin-table-row-hover: hsl(217.2, 32.6%, 17.5%)}.cedros-admin__notice-banner{padding:.75rem 1.5rem;margin-bottom:1.5rem;background:#dbeafe;border:1px solid #bfdbfe;border-radius:.5rem;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:.875rem;line-height:1.5}.cedros-admin__notice-banner.cedros-admin--dark{background:#3b82f626;border-color:#3b82f64d}.cedros-admin__notice-banner .cedros-admin__notice{max-width:none;margin:0;background:transparent;border:none;padding:0}.cedros-admin__notice-banner .cedros-admin__notice--info{color:#1e40af}.cedros-admin__notice-banner.cedros-admin--dark .cedros-admin__notice--info{color:#93c5fd}.cedros-admin{display:grid;grid-template-columns:220px 1fr;grid-template-rows:1fr;height:100%;min-height:400px;background:var(--admin-bg);color:var(--admin-fg);font-family:var(--admin-font);font-size:.875rem;line-height:1.5;border:1px solid var(--admin-border);border-radius:var(--admin-radius);overflow:hidden}.cedros-admin--loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;min-height:400px}.cedros-admin__loading-text{font-size:.875rem;color:var(--admin-muted)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.cedros-admin__spinner{animation:spin 1s linear infinite}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.cedros-admin__skeleton{display:inline-block;background:linear-gradient(90deg,var(--admin-muted-bg) 25%,var(--admin-border) 50%,var(--admin-muted-bg) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:.25rem}.cedros-admin__skeleton--text{height:1em;width:4rem}.cedros-admin__skeleton--value{height:1.5rem;width:5rem}.cedros-admin__skeleton--lg{height:2rem;width:6rem}.cedros-admin__sidebar{background:var(--admin-sidebar-bg);border-right:1px solid var(--admin-border);display:flex;flex-direction:column;min-height:0}.cedros-admin__sidebar-header{padding:1rem .75rem;border-bottom:1px solid var(--admin-border)}.cedros-admin__logo{display:flex;align-items:center;gap:.5rem;color:var(--admin-fg)}.cedros-admin__logo svg{flex-shrink:0}.cedros-admin__logo-text{font-size:.875rem;font-weight:600;letter-spacing:-.01em}.cedros-admin__nav{flex:1;padding:.5rem;overflow-y:auto}.cedros-admin__nav-group{display:flex;flex-direction:column;gap:.125rem}.cedros-admin__nav-group+.cedros-admin__nav-group{margin-top:1rem;padding-top:.5rem;border-top:1px solid var(--admin-border)}.cedros-admin__nav-label{padding:.5rem .75rem .375rem;font-size:.6875rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--admin-muted)}.cedros-admin__nav-label--collapsible{display:flex;align-items:center;justify-content:space-between;width:100%;background:none;border:none;cursor:pointer;transition:color .15s ease}.cedros-admin__nav-label--collapsible:hover{color:var(--admin-text)}.cedros-admin__nav-label-icon{display:flex;align-items:center;justify-content:center;width:1rem;height:1rem;transition:transform .15s ease}.cedros-admin__nav-label-icon svg{width:.625rem;height:.625rem;opacity:.6}.cedros-admin__nav-label-icon--expanded{transform:rotate(90deg)}.cedros-admin__nav-item{display:flex;align-items:center;gap:.625rem;width:100%;padding:.5rem .75rem;border-radius:calc(var(--admin-radius) - 2px);border:none;background:transparent;color:var(--admin-muted);cursor:pointer;font-size:.8125rem;font-weight:500;font-family:inherit;text-align:left;transition:all .15s ease}.cedros-admin__nav-item:hover,.cedros-admin__nav-item--active{background:var(--admin-accent);color:var(--admin-fg)}.cedros-admin__nav-item--active:hover{background:var(--admin-accent)}.cedros-admin__nav-icon{display:flex;align-items:center;justify-content:center;width:1rem;height:1rem;flex-shrink:0;opacity:.7}.cedros-admin__nav-item:hover .cedros-admin__nav-icon,.cedros-admin__nav-item--active .cedros-admin__nav-icon{opacity:1}.cedros-admin__nav-text{white-space:nowrap}.cedros-admin__sidebar-footer{padding:.75rem;border-top:1px solid var(--admin-border);display:flex;flex-direction:column;gap:.75rem;margin-top:auto}.cedros-admin__auth-status{display:flex;align-items:center;gap:.625rem;padding:.5rem;border-radius:calc(var(--admin-radius) - 2px);background:var(--admin-accent)}.cedros-admin__auth-avatar{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:calc(var(--admin-radius) - 2px);background:var(--admin-primary);color:var(--admin-primary-fg);flex-shrink:0}.cedros-admin__auth-avatar--connected{background:var(--admin-primary);color:var(--admin-primary-fg)}.cedros-admin__auth-info{display:flex;flex-direction:column;gap:.125rem;min-width:0}.cedros-admin__auth-label{font-size:.8125rem;font-weight:500;color:var(--admin-fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cedros-admin__auth-badge{display:inline-flex;align-items:center;gap:.25rem;font-size:.6875rem;color:var(--admin-muted)}.cedros-admin__auth-badge--connected{color:var(--admin-success)}.cedros-admin__auth-badge svg{width:.75rem;height:.75rem}.cedros-admin__server-info{display:flex;flex-direction:column;gap:.125rem}.cedros-admin__server-label{font-size:.6875rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--admin-muted)}.cedros-admin__server-url{font-size:.75rem;font-family:var(--admin-font-mono);color:var(--admin-fg);word-break:break-all}.cedros-admin__main{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden;background:var(--admin-bg)}.cedros-admin__header{padding:1rem 1.5rem;border-bottom:1px solid var(--admin-border);background:var(--admin-card-bg)}.cedros-admin__breadcrumb{display:flex;align-items:center;gap:.25rem;font-size:.875rem}.cedros-admin__breadcrumb-root{color:var(--admin-muted)}.cedros-admin__breadcrumb-sep{color:var(--admin-muted);opacity:.5}.cedros-admin__breadcrumb-current{color:var(--admin-fg);font-weight:500}.cedros-admin__content{flex:1;padding:1.5rem;overflow-y:auto;min-height:0}.cedros-admin__page{display:flex;flex-direction:column;gap:1rem}.cedros-admin__overview{display:flex;flex-direction:column;gap:1.5rem}.cedros-admin__stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem}.cedros-admin__stat-card{display:flex;flex-direction:column;gap:.25rem;padding:1.125rem 1.25rem;background:var(--admin-bg);border-radius:var(--admin-radius);border:1px solid var(--admin-border);box-shadow:var(--admin-shadow-card)}.cedros-admin__stat-label{font-size:.8125rem;font-weight:500;color:var(--admin-muted)}.cedros-admin__stat-value{font-size:1.5rem;font-weight:700;color:var(--admin-fg);line-height:1}.cedros-admin__stat-value--success{color:var(--admin-success)}.cedros-admin__stat-value--warning{color:var(--admin-warning)}.cedros-admin__stat-value--error{color:var(--admin-error)}.cedros-admin__stat-desc{font-size:.75rem;color:var(--admin-muted)}.cedros-admin__stat-card--revenue,.cedros-admin__stat-card--transactions,.cedros-admin__stat-card--active,.cedros-admin__stat-card--pending{border-color:var(--admin-border)}.cedros-admin__stats-bar{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem;padding:.875rem 1rem;background:var(--admin-bg);border:1px solid var(--admin-border);border-radius:var(--admin-radius);box-shadow:var(--admin-shadow-card)}.cedros-admin__stats-bar-grid{display:flex;flex:1;gap:1.5rem}.cedros-admin__stats-bar-item{display:flex;flex-direction:column;gap:.125rem;padding-right:1.5rem;border-right:1px solid var(--admin-border)}.cedros-admin__stats-bar-item:last-child{border-right:none;padding-right:0}.cedros-admin__stats-bar-label{font-size:.6875rem;font-weight:500;color:var(--admin-muted);text-transform:uppercase;letter-spacing:.06em}.cedros-admin__stats-bar-value{font-size:1.125rem;font-weight:700;color:var(--admin-fg);line-height:1.2}.cedros-admin__stats-bar-value--success{color:var(--admin-success)}.cedros-admin__stats-bar-value--warning{color:var(--admin-warning)}.cedros-admin__stats-bar-value--muted{color:var(--admin-muted)}.cedros-admin__stats-bar-desc{font-size:.6875rem;color:var(--admin-muted)}.cedros-admin__stats-bar-refresh{display:flex;align-items:center;justify-content:center;width:2.125rem;height:2.125rem;padding:0;background:var(--admin-bg);border:1px solid var(--admin-input);border-radius:var(--admin-radius);color:var(--admin-muted);cursor:pointer;transition:background .15s,color .15s}.cedros-admin__stats-bar-refresh:hover:not(:disabled){background:var(--admin-accent);color:var(--admin-fg)}.cedros-admin__stats-bar-refresh:disabled{opacity:.5;cursor:not-allowed}.cedros-admin__cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem}.cedros-admin__card{background:var(--admin-card-bg);border:1px solid var(--admin-border);border-radius:var(--admin-radius);padding:1.25rem}.cedros-admin__card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.cedros-admin__card-title{font-size:.8125rem;font-weight:500;color:var(--admin-muted)}.cedros-admin__card-value{font-size:1.75rem;font-weight:700;color:var(--admin-fg);line-height:1}.cedros-admin__card-value--warning{color:var(--admin-warning)}.cedros-admin__card-desc{margin:0;font-size:.75rem;color:var(--admin-muted)}.cedros-admin__method-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem}.cedros-admin__method-card{background:var(--admin-card-bg);border:1px solid var(--admin-border);border-radius:var(--admin-radius);padding:1.25rem;display:flex;flex-direction:column;gap:.375rem;transition:border-color .15s}.cedros-admin__method-card--stripe,.cedros-admin__method-card--crypto,.cedros-admin__method-card--credits{border-color:var(--admin-border)}.cedros-admin__method-label{font-size:.8125rem;font-weight:500;color:var(--admin-muted)}.cedros-admin__method-value{font-size:1.75rem;font-weight:700;color:var(--admin-fg);line-height:1}.cedros-admin__method-count{font-size:.75rem;color:var(--admin-muted)}.cedros-admin__section{background:var(--admin-card-bg);border:1px solid var(--admin-border);border-radius:var(--admin-radius);padding:1.25rem;box-shadow:var(--admin-shadow-card)}.cedros-admin__section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.cedros-admin__section-header-left{display:flex;align-items:center;gap:.75rem}.cedros-admin__section-header-right{display:flex;align-items:center;gap:.5rem}.cedros-admin__section-title{margin:0;font-size:.9375rem;font-weight:600;color:var(--admin-fg)}.cedros-admin__section-badge{display:inline-flex;align-items:center;padding:.25rem .625rem;font-size:.6875rem;font-weight:500;border-radius:var(--admin-radius);text-transform:uppercase;letter-spacing:.025em;background:var(--admin-accent);color:var(--admin-muted)}.cedros-admin__section-badge--success{background:var(--admin-success-light);color:var(--admin-success)}.cedros-admin__refresh-btn{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border:1px solid var(--admin-border);border-radius:var(--admin-radius);background:transparent;color:var(--admin-muted);cursor:pointer;transition:background .15s,color .15s,border-color .15s,box-shadow .15s}.cedros-admin__refresh-btn:hover:not(:disabled){background:var(--admin-accent);color:var(--admin-fg)}.cedros-admin__refresh-btn:disabled{opacity:.5;cursor:not-allowed}.cedros-admin__refresh-btn svg{width:1rem;height:1rem}.cedros-admin__notice{padding:.75rem 1rem;border-radius:var(--admin-radius);font-size:.875rem;margin-bottom:1rem;display:flex;align-items:flex-start;gap:.5rem}.cedros-admin__notice--warning{background:var(--admin-warning-light);border:1px solid var(--admin-warning);color:var(--admin-warning)}.cedros-admin__notice--info{background:var(--admin-info-light);border:1px solid var(--admin-info);color:var(--admin-info)}.cedros-admin__notice--success{background:var(--admin-success-light);border:1px solid var(--admin-success);color:var(--admin-success)}.cedros-admin__notice--error{background:var(--admin-error-light);border:1px solid var(--admin-error);color:var(--admin-error)}.cedros-admin__loading{display:flex;align-items:center;gap:.5rem;padding:2rem;color:var(--admin-muted);justify-content:center}.cedros-admin__empty{padding:2rem;text-align:center;color:var(--admin-muted)}.cedros-admin__tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--admin-border);margin-bottom:1rem}.cedros-admin__tab{padding:.75rem 1rem;font-size:.875rem;font-weight:500;color:var(--admin-muted);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color .15s,border-color .15s;margin-bottom:-1px}.cedros-admin__tab:hover{color:var(--admin-fg)}.cedros-admin__tab--active{color:var(--admin-fg);border-bottom-color:var(--admin-fg)}.cedros-admin__tabs--line{gap:0;background:transparent}.cedros-admin__tabs--line .cedros-admin__tab{padding:.625rem 1rem;margin-bottom:-1px}.cedros-admin__tab-content{padding-top:1rem}.cedros-admin__page-header{margin-bottom:1.5rem}.cedros-admin__page-title{margin:0 0 .25rem;font-size:1.25rem;font-weight:600;color:var(--admin-fg)}.cedros-admin__page-description{margin:0;font-size:.875rem;color:var(--admin-muted)}.cedros-admin__table-container{overflow-x:auto;border:1px solid var(--admin-border);border-radius:calc(var(--admin-radius) - 2px);background:var(--admin-table-row)}.cedros-admin__table{width:100%;border-collapse:collapse;font-size:.8125rem;background:var(--admin-table-row)}.cedros-admin__table th{padding:.6875rem .75rem;text-align:left;font-weight:500;color:var(--admin-muted);background:var(--admin-table-head);border-bottom:1px solid var(--admin-border);white-space:nowrap;text-transform:uppercase;letter-spacing:.05em;font-size:.6875rem}.cedros-admin__table td{padding:.75rem;border-bottom:1px solid var(--admin-border);vertical-align:middle}.cedros-admin__table tbody tr{transition:background .15s}.cedros-admin__table tbody tr:hover{background:var(--admin-table-row-hover)}.cedros-admin__table tr:last-child td{border-bottom:none}.cedros-admin__table code{font-family:var(--admin-font-mono);font-size:.75rem;background:var(--admin-muted-bg);padding:.125rem .375rem;border-radius:.25rem}.cedros-admin__table-sort{display:inline-flex;align-items:center;gap:.375rem;padding:0;border:none;background:transparent;font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer}.cedros-admin__table-sort:hover{color:var(--admin-fg)}.cedros-admin__sort-icon{display:inline-flex;align-items:center;opacity:.7}.cedros-admin__sort-icon svg{width:.875rem;height:.875rem}.cedros-admin__sort-icon--idle{opacity:.35}.cedros-admin__badge{display:inline-flex;align-items:center;padding:.125rem .5rem;font-size:.6875rem;font-weight:500;border-radius:9999px;text-transform:uppercase;letter-spacing:.025em}.cedros-admin__badge--success,.cedros-admin__badge--completed{background:var(--admin-success-light);color:var(--admin-success)}.cedros-admin__badge--muted{background:var(--admin-muted-bg);color:var(--admin-muted)}.cedros-admin__badge--pending,.cedros-admin__badge--processing{background:var(--admin-warning-light);color:var(--admin-warning)}.cedros-admin__badge--failed{background:var(--admin-error-light);color:var(--admin-error)}.cedros-admin__badge--stripe{background:#6366f11f;color:#818cf8}.cedros-admin__badge--x402{background:#8b5cf61f;color:#a78bfa}.cedros-admin__badge--credits{background:#10b9811f;color:#34d399}.cedros-admin__button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;height:2.25rem;padding:0 .875rem;font-size:.875rem;font-weight:500;font-family:inherit;border-radius:var(--admin-radius);border:1px solid transparent;cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease,box-shadow .15s ease,transform .15s ease,opacity .15s ease;white-space:nowrap;outline:none;will-change:transform}.cedros-admin__button:focus-visible{outline:2px solid var(--admin-ring);outline-offset:2px}.cedros-admin__button:active:not(:disabled){transform:scale(.98)}.cedros-admin__button:disabled{pointer-events:none;opacity:.5}.cedros-admin__button--primary{background-color:var(--admin-primary);color:var(--admin-primary-fg);box-shadow:var(--admin-shadow-sm);border-color:var(--admin-primary)}.cedros-admin__button--primary:hover:not(:disabled){background-color:color-mix(in srgb,var(--admin-primary) 85%,white);box-shadow:var(--admin-shadow)}.cedros-admin__button--ghost{background:transparent;color:var(--admin-fg);border-color:transparent}.cedros-admin__button--ghost:hover:not(:disabled){background:var(--admin-accent);color:var(--admin-accent-fg)}.cedros-admin__button--outline{background:transparent;color:var(--admin-fg);border-color:var(--admin-input)}.cedros-admin__button--outline:hover:not(:disabled){background:var(--admin-accent);color:var(--admin-accent-fg)}.cedros-admin__button--destructive{background:var(--admin-error);color:var(--admin-primary-fg);border-color:var(--admin-error)}.cedros-admin__button--destructive:hover:not(:disabled){background:color-mix(in srgb,var(--admin-error) 85%,white);border-color:var(--admin-error)}.cedros-admin__button--secondary{background:var(--admin-accent);color:var(--admin-accent-fg);border-color:var(--admin-border)}.cedros-admin__button--secondary:hover:not(:disabled){background:color-mix(in srgb,var(--admin-accent) 80%,white)}.cedros-admin__button--danger{color:var(--admin-error)}.cedros-admin__button--action{padding:0 1rem;font-weight:600;letter-spacing:.01em}.cedros-admin__button--action svg{width:.875rem;height:.875rem}.cedros-admin__button--icon{width:2.25rem;padding:0}.cedros-admin__dropdown{position:relative;display:inline-block}.cedros-admin__dropdown-trigger{display:inline-flex;align-items:center;justify-content:space-between;gap:.5rem;min-width:120px;height:2.25rem;padding:0 .75rem;font-size:.875rem;font-family:inherit;font-weight:500;border:1px solid var(--admin-border);border-radius:var(--admin-radius);background-color:var(--admin-bg);color:var(--admin-fg);cursor:pointer;transition:border-color .15s ease,background-color .15s ease}.cedros-admin__dropdown-trigger:hover{border-color:var(--admin-ring);background-color:var(--admin-bg)}.cedros-admin__dropdown-trigger:focus{outline:none;border-color:var(--admin-ring);box-shadow:0 0 0 3px color-mix(in srgb,var(--admin-ring) 15%,transparent)}.cedros-admin__dropdown-chevron{display:flex;align-items:center;transition:transform .15s ease}.cedros-admin__dropdown-chevron svg{width:.875rem;height:.875rem;opacity:.6}.cedros-admin__dropdown-chevron--open{transform:rotate(180deg)}.cedros-admin__dropdown-menu{position:absolute;top:calc(100% + 4px);right:0;min-width:100%;padding:.25rem;background:var(--admin-bg);border:1px solid var(--admin-border);border-radius:var(--admin-radius);box-shadow:0 4px 12px #0000001a;z-index:50;animation:cedros-dropdown-enter .15s ease}@keyframes cedros-dropdown-enter{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.cedros-admin__dropdown-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.5rem .75rem;font-size:.875rem;font-family:inherit;color:var(--admin-fg);background:transparent;border:none;border-radius:calc(var(--admin-radius) - 2px);cursor:pointer;text-align:left;transition:background-color .1s ease}.cedros-admin__dropdown-item:hover{background:var(--admin-muted-bg)}.cedros-admin__dropdown-item--selected{font-weight:500}.cedros-admin__dropdown-check{display:flex;align-items:center;color:var(--admin-primary)}.cedros-admin__dropdown-check svg{width:1rem;height:1rem}.cedros-admin__dropdown--form{display:block;width:100%}.cedros-admin__dropdown-trigger--form{width:100%;min-width:0;background-color:var(--admin-bg);border-color:var(--admin-input);font-weight:400}.cedros-admin__dropdown-trigger--form:hover{background-color:var(--admin-bg)}.cedros-admin__dropdown-menu--form{left:0;right:auto;width:100%}.cedros-admin__dropdown-trigger:disabled,.cedros-admin__dropdown-item:disabled{opacity:.5;cursor:not-allowed}.cedros-admin__select{min-width:160px;height:2.25rem;padding:0 2.25rem 0 .75rem;font-size:.875rem;font-family:inherit;border:1px solid var(--admin-border);border-radius:var(--admin-radius);background-color:var(--admin-muted-bg);color:var(--admin-fg);cursor:pointer;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;background-size:1rem;transition:border-color .15s ease,box-shadow .15s ease}.cedros-admin__select:focus{outline:none;border-color:var(--admin-ring);background-color:var(--admin-bg);box-shadow:0 0 0 3px color-mix(in srgb,var(--admin-ring) 15%,transparent)}.cedros-admin__select:hover{border-color:var(--admin-ring);background-color:var(--admin-bg)}.cedros-admin__select:disabled{opacity:.5;cursor:not-allowed}.cedros-admin--dark .cedros-admin__select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")}.cedros-admin__settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;margin-top:1rem}.cedros-admin__settings-card{background:var(--admin-card-bg);border:1px solid var(--admin-border);border-radius:var(--admin-radius);padding:1rem}.cedros-admin__settings-card h4{margin:0 0 .75rem;font-size:.875rem;font-weight:600}.cedros-admin__settings-card p{margin:.25rem 0;font-size:.8125rem;color:var(--admin-muted)}.cedros-admin__settings-card code{font-family:var(--admin-font-mono);font-size:.75rem;background:var(--admin-bg);padding:.125rem .375rem;border-radius:.25rem}.cedros-admin__checkbox{display:flex;align-items:center;gap:.5rem;margin:.5rem 0;font-size:.8125rem;cursor:pointer}.cedros-admin__checkbox input{width:1rem;height:1rem;accent-color:var(--admin-primary)}.cedros-admin__toggle{display:inline-flex;align-items:center;gap:.75rem;cursor:pointer;position:relative}.cedros-admin__toggle-input{position:absolute;opacity:0;width:1px;height:1px}.cedros-admin__toggle-track{position:relative;width:38px;height:22px;background:var(--admin-muted-bg);border:1px solid var(--admin-border);border-radius:999px;transition:background .15s ease,border-color .15s ease}.cedros-admin__toggle-thumb{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--admin-bg);box-shadow:0 1px 2px #0003;transition:transform .15s ease}.cedros-admin__toggle-input:checked+.cedros-admin__toggle-track{background:var(--admin-primary);border-color:var(--admin-primary)}.cedros-admin__toggle-input:checked+.cedros-admin__toggle-track .cedros-admin__toggle-thumb{transform:translate(16px)}.cedros-admin__toggle-label{font-size:.875rem;color:var(--admin-fg);font-weight:500}.cedros-admin__toggle-input:focus-visible+.cedros-admin__toggle-track{box-shadow:0 0 0 3px color-mix(in srgb,var(--admin-ring) 15%,transparent)}.cedros-admin__autosave-indicator{display:inline-flex;align-items:center;gap:.5rem;font-size:.8125rem;color:var(--admin-muted)}.cedros-admin__autosave-indicator--saved{color:var(--admin-success)}.cedros-admin__autosave-indicator--error{color:var(--admin-error)}.cedros-admin__settings-actions{margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--admin-border)}.cedros-admin__text-muted{color:var(--admin-muted);font-size:.875rem;margin:0 0 1rem}@media(max-width:768px){.cedros-admin{grid-template-columns:1fr;grid-template-rows:auto 1fr}.cedros-admin__sidebar{border-right:none;border-bottom:1px solid var(--admin-border)}.cedros-admin__sidebar-header{display:none}.cedros-admin__nav{display:flex;overflow-x:auto;padding:.5rem}.cedros-admin__nav-group{flex-direction:row;gap:.25rem}.cedros-admin__nav-label{display:none}.cedros-admin__nav-item{flex-shrink:0;padding:.5rem .625rem}.cedros-admin__nav-text{display:none}.cedros-admin__nav-icon{width:1.25rem;height:1.25rem}.cedros-admin__sidebar-footer{display:none}.cedros-admin__cards,.cedros-admin__method-grid{grid-template-columns:1fr}.cedros-admin__content{padding:1rem}}.cedros-admin__settings{display:flex;flex-direction:column;gap:1rem}.cedros-admin__settings-sections{display:flex;flex-direction:column;gap:1.5rem}.cedros-admin__settings-section{background:var(--admin-card-bg);border:1px solid var(--admin-border);border-radius:var(--admin-radius);padding:1.25rem}.cedros-admin__settings-section-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.75rem}.cedros-admin__settings-section-title-wrap{display:flex;gap:.75rem}.cedros-admin__settings-section-icon{font-size:1.5rem;line-height:1}.cedros-admin__settings-section-title{margin:0 0 .25rem;font-size:1rem;font-weight:600;color:var(--admin-fg)}.cedros-admin__settings-section-description{margin:0;font-size:.8125rem;color:var(--admin-muted);line-height:1.5}.cedros-admin__settings-section-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.cedros-admin__settings-section-meta{display:flex;flex-wrap:wrap;gap:.75rem;font-size:.75rem;color:var(--admin-muted);margin-bottom:1rem}.cedros-admin__settings-meta-item{display:inline-flex;align-items:center;gap:.25rem}.cedros-admin__settings-editor-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--admin-border)}.cedros-admin__settings-editor-header h3{margin:0;font-size:1rem}.cedros-admin__settings-history-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.cedros-admin__settings-history-header h3{margin:0;font-size:1rem}.cedros-admin__settings-timeline{display:flex;flex-direction:column;gap:0}.cedros-admin__settings-timeline-item{display:flex;gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--admin-border)}.cedros-admin__settings-timeline-item:last-child{border-bottom:none}.cedros-admin__settings-timeline-dot{width:8px;height:8px;background:var(--admin-primary);border-radius:50%;margin-top:.375rem;flex-shrink:0}.cedros-admin__settings-timeline-content{flex:1}.cedros-admin__settings-timeline-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem}.cedros-admin__settings-timeline-meta{font-size:.75rem;color:var(--admin-muted)}.cedros-admin__config-editor,.cedros-admin__config-fields{display:flex;flex-direction:column;gap:1rem}.cedros-admin__config-field{display:flex;flex-direction:column}.cedros-admin__config-actions{display:flex;justify-content:flex-end;gap:.5rem;padding-top:1rem;border-top:1px solid var(--admin-border)}.cedros-admin__field{display:flex;flex-direction:column;gap:.375rem}.cedros-admin__field-label{font-size:.8125rem;font-weight:500;color:var(--admin-fg)}.cedros-admin__field-secret{font-size:.6875rem;color:var(--admin-muted);font-weight:400}.cedros-admin__input{height:2.25rem;padding:.5rem .75rem;font-size:.875rem;font-family:inherit;border:1px solid var(--admin-input);border-radius:var(--admin-radius);background:var(--admin-bg);color:var(--admin-fg);transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease;box-shadow:none}.cedros-admin__input::-moz-placeholder{color:var(--admin-muted)}.cedros-admin__input::placeholder{color:var(--admin-muted)}.cedros-admin__input:focus{outline:none;border-color:var(--admin-ring);box-shadow:0 0 0 3px color-mix(in srgb,var(--admin-ring) 15%,transparent)}.cedros-admin__input:focus-visible{outline:none;border-color:var(--admin-ring);box-shadow:0 0 0 3px color-mix(in srgb,var(--admin-ring) 15%,transparent)}.cedros-admin__input:disabled{opacity:.5;cursor:not-allowed}.cedros-admin__input-group{display:flex;gap:.5rem}.cedros-admin__input-group .cedros-admin__input{flex:1}.cedros-admin__field-unit{color:var(--admin-muted);font-weight:400;font-size:.75rem}.cedros-admin__textarea{padding:.5rem .75rem;font-size:.875rem;font-family:inherit;border:1px solid var(--admin-input);border-radius:var(--admin-radius);background:var(--admin-bg);color:var(--admin-fg);resize:vertical;min-height:60px;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease;box-shadow:none}.cedros-admin__textarea::-moz-placeholder{color:var(--admin-muted)}.cedros-admin__textarea::placeholder{color:var(--admin-muted)}.cedros-admin__textarea--mono{font-family:var(--admin-font-mono);font-size:.75rem}.cedros-admin__textarea:focus{outline:none;border-color:var(--admin-ring);box-shadow:0 0 0 3px color-mix(in srgb,var(--admin-ring) 15%,transparent)}.cedros-admin__textarea:focus-visible{outline:none;border-color:var(--admin-ring);box-shadow:0 0 0 3px color-mix(in srgb,var(--admin-ring) 15%,transparent)}.cedros-admin__validation{padding:.75rem;border-radius:var(--admin-radius);font-size:.8125rem}.cedros-admin__validation--success{background:var(--admin-success-light);border:1px solid var(--admin-success);color:var(--admin-success)}.cedros-admin__validation--error{background:var(--admin-error-light);border:1px solid var(--admin-error);color:var(--admin-error)}.cedros-admin__validation ul{margin:.25rem 0 0;padding-left:1.25rem}.cedros-admin__validation-warnings{margin-top:.5rem;color:var(--admin-warning)}.cedros-admin__button--sm{height:2rem;padding:0 .75rem;font-size:.75rem;border-radius:calc(var(--admin-radius) - 2px)}.cedros-admin__badge--create{background:var(--admin-success-light);color:var(--admin-success)}.cedros-admin__badge--update{background:var(--admin-info-light);color:var(--admin-info)}.cedros-admin__badge--delete{background:var(--admin-error-light);color:var(--admin-error)}.cedros-admin__add-form{padding:1rem;margin-bottom:1rem;background:var(--admin-bg);border-radius:var(--admin-radius);border:1px dashed var(--admin-border)}.cedros-admin__form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1rem}.cedros-admin__form-row:last-child{margin-bottom:0}.cedros-admin__form-actions{display:flex;justify-content:flex-end;gap:.5rem;padding-top:.5rem}@media(max-width:768px){.cedros-admin__settings-section-header{flex-direction:column;align-items:flex-start}.cedros-admin__settings-section-actions{width:100%;justify-content:flex-start}}.cedros-admin__modal-overlay{position:fixed;inset:0;z-index:1000;background:#00000080;display:flex;align-items:center;justify-content:center;padding:1rem;animation:fadeIn .15s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.cedros-admin__modal{background:var(--admin-card-bg);border:1px solid var(--admin-border);border-radius:var(--admin-radius);box-shadow:0 25px 50px -12px #00000040;max-width:28rem;width:100%;max-height:90vh;overflow:auto;animation:slideUp .2s ease-out}.cedros-admin__modal--lg{max-width:48rem}.cedros-admin__modal--sm{max-width:20rem}@keyframes slideUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.cedros-admin__modal-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--admin-border)}.cedros-admin__modal-title{font-size:1rem;font-weight:600;color:var(--admin-fg);margin:0}.cedros-admin__modal-close{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:none;background:transparent;color:var(--admin-muted);border-radius:var(--admin-radius);cursor:pointer;transition:background .15s,color .15s}.cedros-admin__modal-close:hover{background:var(--admin-muted-bg);color:var(--admin-fg)}.cedros-admin__modal-body{padding:1.25rem}.cedros-admin__modal-footer{display:flex;justify-content:flex-end;gap:.5rem;padding:1rem 1.25rem;border-top:1px solid var(--admin-border)}.cedros-admin__faq-list{display:flex;flex-direction:column;gap:.75rem}.cedros-admin__faq-item{position:relative;display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1rem;background:var(--admin-card-bg);border:1px solid var(--admin-border);border-radius:var(--admin-radius);transition:border-color .15s,box-shadow .15s}.cedros-admin__faq-item:hover{border-color:var(--admin-primary);box-shadow:var(--admin-shadow-sm)}.cedros-admin__faq-item--inactive{opacity:.6}.cedros-admin__faq-content{flex:1;min-width:0}.cedros-admin__faq-question{display:flex;align-items:center;gap:.5rem;font-weight:600;font-size:.9375rem;color:var(--admin-fg);margin-bottom:.375rem}.cedros-admin__faq-answer{font-size:.875rem;color:var(--admin-muted);line-height:1.5;white-space:pre-wrap;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.cedros-admin__faq-meta{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.625rem;margin-top:.625rem}.cedros-admin__faq-keywords,.cedros-admin__faq-visibility{display:flex;flex-wrap:wrap;gap:.375rem}.cedros-admin__badge--chat,.cedros-admin__badge--page{display:inline-flex;align-items:center;gap:.25rem;padding:.125rem .5rem;font-size:.6875rem;font-weight:500;border-radius:9999px}.cedros-admin__badge--chat{background:#6366f11f;color:#818cf8}.cedros-admin__badge--page{background:#10b9811f;color:#34d399}.cedros-admin__badge--chat svg,.cedros-admin__badge--page svg{width:12px;height:12px}.cedros-admin__checkbox-group{display:flex;flex-wrap:wrap;gap:1rem}.cedros-admin__tag{display:inline-flex;align-items:center;padding:.125rem .5rem;font-size:.75rem;font-weight:500;color:var(--admin-muted);background:var(--admin-muted-bg);border-radius:9999px}.cedros-admin__faq-actions{display:flex;align-items:center;gap:.25rem;flex-shrink:0}.cedros-admin__status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.cedros-admin__status-dot--active{background:var(--admin-success)}.cedros-admin__status-dot--inactive{background:var(--admin-muted)}.cedros-admin__confirm-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#fffffff2;border-radius:var(--admin-radius);z-index:10}.cedros-admin--dark .cedros-admin__confirm-overlay{background:#000000e6}.cedros-admin__confirm-dialog{text-align:center}.cedros-admin__confirm-dialog p{margin-bottom:.75rem;font-weight:500}.cedros-admin__confirm-actions{display:flex;gap:.5rem;justify-content:center}
@@ -0,0 +1,10 @@
1
+ import "react/jsx-runtime";
2
+ import "react";
3
+ import { C as i, P as e, R as a, S as c, T as S } from "./index-SV9PXby1.mjs";
4
+ export {
5
+ i as CouponsSection,
6
+ e as ProductsSection,
7
+ a as RefundsSection,
8
+ c as SettingsSection,
9
+ S as TransactionsSection
10
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("react/jsx-runtime");require("react");const e=require("./index-DPl2S6i0.js");exports.CouponsSection=e.CouponsSection;exports.ProductsSection=e.ProductsSection;exports.RefundsSection=e.RefundsSection;exports.SettingsSection=e.SettingsSection;exports.TransactionsSection=e.TransactionsSection;
@@ -27,5 +27,5 @@ export type { IRouteDiscoveryManager } from './managers/RouteDiscoveryManager';
27
27
  export { validateConfig, parseCouponCodes, formatCouponCodes, calculateDiscountPercentage, createRateLimiter, RATE_LIMITER_PRESETS, type RateLimiter, type RateLimiterConfig, } from './utils';
28
28
  export { LogLevel, Logger, getLogger, createLogger, type LoggerConfig, } from './utils/logger';
29
29
  export { CEDROS_EVENTS, emitPaymentStart, emitPaymentProcessing, emitPaymentSuccess, emitPaymentError, type PaymentStartDetail, type PaymentProcessingDetail, type PaymentSuccessDetail, type PaymentErrorDetail, } from './utils';
30
- export { parseStructuredErrorResponse, isRetryableError, getUserErrorMessage, } from './utils';
30
+ export { isRetryableError, getUserErrorMessage, } from './utils';
31
31
  //# sourceMappingURL=stripe-only.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stripe-only.d.ts","sourceRoot":"","sources":["../src/stripe-only.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAGtG,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC7E,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,YAAY,EACV,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,OAAO,EACP,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGlD,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAG/E,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,iBAAiB,GACvB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,QAAQ,EACR,MAAM,EACN,SAAS,EACT,YAAY,EACZ,KAAK,YAAY,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,GACxB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,4BAA4B,EAC5B,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,cAAc,CAAC"}
1
+ {"version":3,"file":"stripe-only.d.ts","sourceRoot":"","sources":["../src/stripe-only.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAGtG,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC7E,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,YAAY,EACV,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,OAAO,EACP,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGlD,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAG/E,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,iBAAiB,GACvB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,QAAQ,EACR,MAAM,EACN,SAAS,EACT,YAAY,EACZ,KAAK,YAAY,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,GACxB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,cAAc,CAAC"}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./CedrosContext-DbndTsTA.js"),e=require("./styles-Dup9uK6S.js");require("@solana/wallet-adapter-wallets");exports.CedrosProvider=r.CedrosProvider;exports.LogLevel=r.LogLevel;exports.Logger=r.Logger;exports.RATE_LIMITER_PRESETS=r.RATE_LIMITER_PRESETS;exports.createLogger=r.createLogger;exports.createRateLimiter=r.createRateLimiter;exports.getLogger=r.getLogger;exports.useCedrosContext=r.useCedrosContext;exports.useCedrosTheme=r.useCedrosTheme;exports.validateConfig=r.validateConfig;exports.CEDROS_EVENTS=e.CEDROS_EVENTS;exports.ERROR_CATEGORIES=e.ERROR_CATEGORIES;exports.PaymentMethodBadge=e.PaymentMethodBadge;exports.PaymentModal=e.PaymentModal;exports.ProductPrice=e.ProductPrice;exports.StripeButton=e.StripeButton;exports.calculateDiscountPercentage=e.calculateDiscountPercentage;exports.emitPaymentError=e.emitPaymentError;exports.emitPaymentProcessing=e.emitPaymentProcessing;exports.emitPaymentStart=e.emitPaymentStart;exports.emitPaymentSuccess=e.emitPaymentSuccess;exports.formatCouponCodes=e.formatCouponCodes;exports.getUserErrorMessage=e.getUserErrorMessage;exports.isRetryableError=e.isRetryableError;exports.parseCouponCodes=e.parseCouponCodes;exports.parseStructuredErrorResponse=e.parseErrorResponse;exports.usePaymentMode=e.usePaymentMode;exports.useStripeCheckout=e.useStripeCheckout;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./CedrosContext-efFL4kQz.js"),e=require("./styles-C4-_hbgr.js");require("@solana/wallet-adapter-wallets");exports.CedrosProvider=t.CedrosProvider;exports.LogLevel=t.LogLevel;exports.Logger=t.Logger;exports.RATE_LIMITER_PRESETS=t.RATE_LIMITER_PRESETS;exports.createLogger=t.createLogger;exports.createRateLimiter=t.createRateLimiter;exports.getLogger=t.getLogger;exports.useCedrosContext=t.useCedrosContext;exports.useCedrosTheme=t.useCedrosTheme;exports.validateConfig=t.validateConfig;exports.CEDROS_EVENTS=e.CEDROS_EVENTS;exports.ERROR_CATEGORIES=e.ERROR_CATEGORIES;exports.PaymentMethodBadge=e.PaymentMethodBadge;exports.PaymentModal=e.PaymentModal;exports.ProductPrice=e.ProductPrice;exports.StripeButton=e.StripeButton;exports.calculateDiscountPercentage=e.calculateDiscountPercentage;exports.emitPaymentError=e.emitPaymentError;exports.emitPaymentProcessing=e.emitPaymentProcessing;exports.emitPaymentStart=e.emitPaymentStart;exports.emitPaymentSuccess=e.emitPaymentSuccess;exports.formatCouponCodes=e.formatCouponCodes;exports.getUserErrorMessage=e.getUserErrorMessage;exports.isRetryableError=e.isRetryableError;exports.parseCouponCodes=e.parseCouponCodes;exports.usePaymentMode=e.usePaymentMode;exports.useStripeCheckout=e.useStripeCheckout;
@@ -1,15 +1,15 @@
1
- import { C as r, L as t, b as o, R as i, d as m, c as g, g as n, u, a as c, v as d } from "./CedrosContext-CFEXGwQg.mjs";
2
- import { C, E as P, b as R, P as p, a as S, S as y, d as L, i as l, g as T, e as f, h as M, f as h, l as v, k as _, p as b, j as x, c as I, u as O } from "./styles-DFcRS8Uu.mjs";
1
+ import { C as t, L as r, b as o, R as i, d as m, c as g, g as n, u as c, a as d, v as u } from "./CedrosContext-DUT3cLZg.mjs";
2
+ import { C as E, E as P, b as R, P as S, a as p, S as y, d as L, i as l, g as T, e as f, h as M, f as h, k as v, j as _, p as b, c as x, u as I } from "./styles-QcAsIVWl.mjs";
3
3
  import "@solana/wallet-adapter-wallets";
4
4
  export {
5
- C as CEDROS_EVENTS,
6
- r as CedrosProvider,
5
+ E as CEDROS_EVENTS,
6
+ t as CedrosProvider,
7
7
  P as ERROR_CATEGORIES,
8
- t as LogLevel,
8
+ r as LogLevel,
9
9
  o as Logger,
10
10
  R as PaymentMethodBadge,
11
- p as PaymentModal,
12
- S as ProductPrice,
11
+ S as PaymentModal,
12
+ p as ProductPrice,
13
13
  i as RATE_LIMITER_PRESETS,
14
14
  y as StripeButton,
15
15
  L as calculateDiscountPercentage,
@@ -24,10 +24,9 @@ export {
24
24
  v as getUserErrorMessage,
25
25
  _ as isRetryableError,
26
26
  b as parseCouponCodes,
27
- x as parseStructuredErrorResponse,
28
- u as useCedrosContext,
29
- c as useCedrosTheme,
30
- I as usePaymentMode,
31
- O as useStripeCheckout,
32
- d as validateConfig
27
+ c as useCedrosContext,
28
+ d as useCedrosTheme,
29
+ x as usePaymentMode,
30
+ I as useStripeCheckout,
31
+ u as validateConfig
33
32
  };
@@ -0,0 +1 @@
1
+ "use strict";const p=require("react/jsx-runtime"),c=require("react"),u=require("./CedrosContext-efFL4kQz.js"),qe=require("@solana/wallet-adapter-react"),xe=require("@solana/wallet-adapter-base"),Xe=require("@solana/wallet-adapter-react-ui");require("@solana/wallet-adapter-wallets");function Ke(t){return!t||!t.coupon_codes?[]:t.coupon_codes.split(",").map(e=>e.trim()).filter(e=>e.length>0)}function Ve(t,e=", "){return t.join(e)}function Ze(t,e){return t<=0?0:(t-e)/t*100}function Je(t,e){if(!e||e.length===0)return t;let n=t,r=0;for(const o of e)if(o.discountType==="percentage"){const s=1-o.discountValue/100;n=n*s}else o.discountType==="fixed"&&(r+=o.discountValue);return n=n-r,n<0&&(n=0),Math.ceil(n*100)/100}function Se(t){const e=Number(t);if(!Number.isFinite(e)||e<=0)return 1;const n=Math.floor(e);return n>0?n:1}function re(t){return t.map(e=>({resource:e.resource,quantity:Se(e.quantity),variantId:e.variantId,metadata:e.metadata}))}function F(t){return t.reduce((e,n)=>e+Se(n.quantity),0)}function et(t){return!!(t&&t.length>0&&(t.length>1||t.length===1&&(t[0].quantity??1)>1))}const tt={invalid_payment_proof:{message:"Payment verification failed",action:"Please try your payment again. If this continues, contact support.",technicalHint:"Invalid payment proof format"},invalid_signature:{message:"Transaction signature is invalid",action:"Please approve the transaction in your wallet and try again.",technicalHint:"Transaction signature verification failed"},invalid_transaction:{message:"Transaction format is invalid",action:"Please try your payment again. If this continues, try updating your wallet app.",technicalHint:"Malformed transaction structure"},transaction_not_found:{message:"Transaction not found on the blockchain",action:"Your transaction may still be processing. Please wait a moment and check your wallet, or try again.",technicalHint:"Transaction signature not found on-chain"},transaction_not_confirmed:{message:"Transaction is still processing",action:"Please wait a moment for the blockchain to confirm your transaction, then try again.",technicalHint:"Transaction not yet confirmed"},transaction_failed:{message:"Transaction failed on the blockchain",action:"Check your wallet for details. You may need to adjust your transaction settings or add more SOL for fees.",technicalHint:"On-chain transaction failure"},transaction_expired:{message:"Transaction took too long to process",action:"Please try your payment again. Consider increasing transaction priority if your wallet supports it.",technicalHint:"Transaction blockhash expired"},invalid_recipient:{message:"Payment was sent to the wrong address",action:"Please try again and ensure you approve the correct transaction in your wallet.",technicalHint:"Recipient address mismatch"},invalid_sender:{message:"Payment sender wallet is invalid",action:"Please reconnect your wallet and try again.",technicalHint:"Sender address validation failed"},unauthorized_refund_issuer:{message:"You are not authorized to issue refunds",action:"Only authorized accounts can process refunds. Please contact support if you believe this is an error.",technicalHint:"Refund issuer not in authorized list"},amount_below_minimum:{message:"Payment amount is too low",action:"Please check the required amount and try again.",technicalHint:"Amount below minimum threshold"},amount_mismatch:{message:"Payment amount does not match the quote",action:"The price may have changed. Please refresh and try your payment again.",technicalHint:"Amount does not match quote"},insufficient_funds_sol:{message:"Not enough SOL for transaction fees",action:"Add at least 0.001 SOL to your wallet to cover network fees, then try again.",technicalHint:"Insufficient SOL balance for fees"},insufficient_funds_token:{message:"Insufficient balance in your wallet",action:"Add more funds to your wallet and try again.",technicalHint:"Insufficient token balance"},invalid_token_mint:{message:"Incorrect payment token",action:"Please pay with the correct token as shown in the payment details.",technicalHint:"Token mint address mismatch"},not_spl_transfer:{message:"Transaction is not a valid token transfer",action:"Please ensure you are sending the correct token type from your wallet.",technicalHint:"Transaction is not an SPL token transfer"},missing_token_account:{message:"Token account not found",action:"Your wallet may need to create a token account first. Try again or use a different wallet.",technicalHint:"Associated token account does not exist"},invalid_token_program:{message:"Invalid token program",action:"Please try your payment again. If this continues, try using a different wallet.",technicalHint:"Token program ID mismatch"},missing_memo:{message:"Payment memo is required but was not included",action:"Please try your payment again and ensure transaction details are approved in your wallet.",technicalHint:"Required memo instruction missing"},invalid_memo:{message:"Payment memo format is invalid",action:"Please try your payment again.",technicalHint:"Memo does not match expected format"},payment_already_used:{message:"This payment has already been processed",action:"Check your transaction history. If you need to make another payment, please start a new transaction.",technicalHint:"Payment signature already recorded"},signature_reused:{message:"Transaction signature has already been used",action:"Please create a new payment transaction.",technicalHint:"Duplicate signature detected"},quote_expired:{message:"Payment quote has expired",action:"Prices are updated frequently. Please refresh and try your payment again.",technicalHint:"Quote timestamp expired"},missing_field:{message:"Required information is missing",action:"Please check all required fields and try again.",technicalHint:"Required field not provided"},invalid_field:{message:"Some information is invalid",action:"Please check your input and try again.",technicalHint:"Field validation failed"},invalid_amount:{message:"Payment amount is invalid",action:"Please check the amount and try again.",technicalHint:"Amount validation failed"},invalid_wallet:{message:"Wallet address is invalid",action:"Please reconnect your wallet and try again.",technicalHint:"Wallet address validation failed"},invalid_resource:{message:"Invalid item selection",action:"Please refresh the page and try again.",technicalHint:"Resource ID validation failed"},invalid_coupon:{message:"Invalid coupon code",action:"Please check the coupon code and try again.",technicalHint:"Coupon code format invalid"},invalid_cart_item:{message:"One or more cart items are invalid",action:"Please review your cart and try again.",technicalHint:"Cart item validation failed"},empty_cart:{message:"Your cart is empty",action:"Please add items to your cart before checking out.",technicalHint:"Cart contains no items"},resource_not_found:{message:"Item not found",action:"This item may no longer be available. Please refresh and try again.",technicalHint:"Resource not found in database"},cart_not_found:{message:"Shopping cart not found",action:"Your cart may have expired. Please start a new order.",technicalHint:"Cart ID not found"},refund_not_found:{message:"Refund not found",action:"Please check your refund reference number or contact support.",technicalHint:"Refund ID not found"},product_not_found:{message:"Product not available",action:"This product may no longer be available. Please browse our current selection.",technicalHint:"Product ID not found"},coupon_not_found:{message:"Coupon code not found",action:"Please check the coupon code or remove it to continue.",technicalHint:"Coupon code not in database"},session_not_found:{message:"Payment session expired",action:"Please start a new payment.",technicalHint:"Session ID not found or expired"},cart_already_paid:{message:"This order has already been paid",action:"Check your order history. If you need to make another purchase, please start a new order.",technicalHint:"Cart marked as paid"},refund_already_processed:{message:"This refund has already been processed",action:"Check your transaction history or contact support for details.",technicalHint:"Refund already completed"},coupon_expired:{message:"Coupon has expired",action:"Please remove the coupon code or use a different code.",technicalHint:"Coupon expiration date passed"},coupon_usage_limit_reached:{message:"Coupon usage limit reached",action:"This coupon has been fully redeemed. Please try a different code.",technicalHint:"Coupon max uses exceeded"},coupon_not_applicable:{message:"Coupon cannot be applied to this purchase",action:"Please check the coupon terms or remove it to continue.",technicalHint:"Coupon conditions not met"},coupon_wrong_payment_method:{message:"Coupon not valid for this payment method",action:"Try a different payment method or remove the coupon code.",technicalHint:"Coupon restricted to specific payment methods"},stripe_error:{message:"Card payment service temporarily unavailable",action:"Please try again in a moment, or use cryptocurrency payment instead.",technicalHint:"Stripe API error"},rpc_error:{message:"Blockchain network temporarily unavailable",action:"Please try again in a moment, or use card payment instead.",technicalHint:"Solana RPC error"},network_error:{message:"Network connection issue",action:"Please check your internet connection and try again.",technicalHint:"Network request failed"},internal_error:{message:"Something went wrong on our end",action:"Please try again. If this continues, contact support.",technicalHint:"Internal server error"},database_error:{message:"Service temporarily unavailable",action:"Please try again in a moment.",technicalHint:"Database operation failed"},config_error:{message:"Service configuration error",action:"Please contact support for assistance.",technicalHint:"Server misconfiguration"}};function oe(t){return tt[t]||{message:"An unexpected error occurred",action:"Please try again or contact support if this continues.",technicalHint:`Unknown error code: ${t}`}}const Ee=new Map,de=new Map,me=new Map,je=200,ge=2e3;function nt(t){const e=me.get(t);return e?Date.now()<e?!0:(me.delete(t),!1):!1}function rt(t,e=je){const n=Date.now()+e;me.set(t,n)}function ot(t,e=ge){const n=Ee.get(t);if(!n)return!1;const o=Date.now()-n;return o<e?(u.getLogger().debug(`[Deduplication] Duplicate request blocked: ${t} (${o}ms ago)`),!0):!1}function st(t){Ee.set(t,Date.now())}function at(t){return de.get(t)||null}function it(t,e){de.set(t,e);const n=()=>{de.delete(t),st(t)};return e.then(n,n),e}async function ct(t,e,n={}){const{windowMs:r=ge,throwOnDuplicate:o=!0}=n,s=at(t);if(s)return u.getLogger().debug(`[Deduplication] Reusing in-flight request: ${t}`),s;if(ot(t,r)){if(o)throw new Error(`Duplicate request blocked: ${t}`);return u.getLogger().warn(`[Deduplication] Duplicate request blocked but not throwing: ${t}`),Promise.reject(new Error("Duplicate request"))}const P=e();return it(t,P)}function se(t,e,n={}){const{cooldownMs:r=je,deduplicationWindowMs:o=ge}=n;return async()=>{if(nt(t)){u.getLogger().debug(`[Deduplication] Button in cooldown: ${t}`);return}rt(t,r);try{await ct(t,async()=>{const s=e();s instanceof Promise&&await s},{windowMs:o,throwOnDuplicate:!1})}catch(s){if(s instanceof Error&&s.message.includes("Duplicate request"))return;throw s}}}function ye(t){return{background:"none",border:"none",fontSize:"1.5rem",cursor:"pointer",color:t,opacity:.6,padding:"0.25rem",lineHeight:1}}const O={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 Y(t,e){if(typeof window>"u")return;const n=new CustomEvent(t,{detail:e,bubbles:!0,cancelable:!1});window.dispatchEvent(n)}function ae(t,e,n){Y(O.PAYMENT_START,{timestamp:Date.now(),method:t,resource:e,itemCount:n})}function fe(t){Y(O.WALLET_CONNECT,{timestamp:Date.now(),wallet:t})}function Re(t,e){Y(O.WALLET_CONNECTED,{timestamp:Date.now(),wallet:t,publicKey:e})}function ne(t,e){Y(O.WALLET_ERROR,{timestamp:Date.now(),wallet:e,error:t})}function V(t,e,n){Y(O.PAYMENT_PROCESSING,{timestamp:Date.now(),method:t,resource:e,itemCount:n})}function ie(t,e,n,r){Y(O.PAYMENT_SUCCESS,{timestamp:Date.now(),method:t,transactionId:e,resource:n,itemCount:r})}function A(t,e,n,r){Y(O.PAYMENT_ERROR,{timestamp:Date.now(),method:t,error:e,resource:n,itemCount:r})}class $ extends Error{code;retryable;details;httpStatus;constructor(e,n,r=!1,o,s){super(n),this.name="PaymentError",this.code=e,this.retryable=r,this.details=o,this.httpStatus=s,Object.setPrototypeOf(this,$.prototype)}canRetry(){return this.retryable}is(e){return this.code===e}isInCategory(e){return e.includes(this.code)}getUserMessage(){const e=this.getErrorInfo();return e.action?`${e.message} ${e.action}`:e.message}getShortMessage(){return this.getErrorInfo().message}getAction(){return this.getErrorInfo().action}getErrorInfo(){return oe(this.code)}static fromErrorResponse(e,n){const r=e.error.retryable??Te.RETRYABLE.includes(e.error.code);return new $(e.error.code,e.error.message,r,e.error.details,n)}static fromUnknown(e){return e instanceof $?e:e instanceof Error?new $("internal_error",e.message,!1):new $("internal_error",String(e),!1)}}const Te={INSUFFICIENT_FUNDS:["insufficient_funds_sol","insufficient_funds_token"],TRANSACTION_PENDING:["transaction_not_confirmed","transaction_not_found"],VALIDATION:["missing_field","invalid_field","invalid_amount","invalid_wallet","invalid_resource","invalid_cart_item","empty_cart"],COUPON:["invalid_coupon","coupon_not_found","coupon_expired","coupon_usage_limit_reached","coupon_not_applicable","coupon_wrong_payment_method"],RETRYABLE:["transaction_not_confirmed","rpc_error","network_error","stripe_error"],NOT_FOUND:["resource_not_found","cart_not_found","refund_not_found","product_not_found","coupon_not_found","session_not_found","credits_hold_not_found"],CREDITS:["insufficient_credits","credits_hold_expired","credits_hold_not_found"],SECURITY:["invalid_redirect_url","rate_limit_exceeded","nonce_already_used"]};function lt(t){return t instanceof $&&t.canRetry()}function ut(t){return t instanceof $?t.getUserMessage():t instanceof Error?t.message:String(t)}function Le(){const{stripeManager:t}=u.useCedrosContext(),[e,n]=c.useState({status:"idle",error:null,transactionId:null}),r=c.useRef(!1),o=c.useCallback(async(w,q,g,y,l,m)=>{if(r.current)return{success:!1,error:"Payment already in progress"};r.current=!0,n({status:"loading",error:null,transactionId:null});const C={resource:w,successUrl:q,cancelUrl:g,metadata:y,customerEmail:l,couponCode:m};try{const d=await t.processPayment(C);return n({status:d.success?"success":"error",error:d.success?null:d.error||"Payment failed",transactionId:d.success&&d.transactionId||null}),d}catch(d){const T=d instanceof Error?d.message:"Payment failed";return n({status:"error",error:T,transactionId:null}),{success:!1,error:T}}finally{r.current=!1}},[t]),s=c.useCallback(async(w,q,g,y,l,m)=>{if(r.current)return{success:!1,error:"Payment already in progress"};r.current=!0,n({status:"loading",error:null,transactionId:null});const C=re(w);try{const d=await t.processCartCheckout({items:C,successUrl:q,cancelUrl:g,metadata:y,customerEmail:l,couponCode:m});return n({status:d.success?"success":"error",error:d.success?null:d.error||"Cart checkout failed",transactionId:d.success&&d.transactionId||null}),d}catch(d){const T=d instanceof Error?d.message:"Cart checkout failed";return n({status:"error",error:T,transactionId:null}),{success:!1,error:T}}finally{r.current=!1}},[t]),P=c.useCallback(()=>{n({status:"idle",error:null,transactionId:null}),r.current=!1},[]);return{...e,processPayment:o,processCartCheckout:s,reset:P}}function ce(t,e){return c.useMemo(()=>{const n=et(e),r=t||(e?.length===1?e[0].resource:"");return{isCartMode:n,effectiveResource:r}},[t,e])}const dt=(t,e,n)=>{const r=t[e];return r?typeof r=="function"?r():Promise.resolve(r):new Promise((o,s)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(s.bind(null,new Error("Unknown variable dynamic import: "+e+(e.split("/").length!==n?". Note that variables only represent file names one level deep.":""))))})},ue=new Map;let te=null;async function Ie(t){if(ue.has(t))return ue.get(t);try{const e=await dt(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/${t}.json`,3),n=e.default||e;return ue.set(t,n),n}catch{return null}}async function mt(){if(te)return te;const t=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"))}),e=[];for(const n in t){const r=n.match(/\.\/translations\/([a-z]{2,3}(?:-[A-Z]{2})?)\.json$/);r&&e.push(r[1])}return te=e.length>0?e:["en"],te}function De(){return typeof navigator>"u"?"en":(navigator.language||navigator.userLanguage||"en").split("-")[0].toLowerCase()}async function Me(t){let e=await Ie(t);if(e||(e=await Ie("en"),e))return e;throw new Error("Critical: No translation files found, not even en.json")}function Be(t){return(e,n)=>{const r=e.split(".");let o=t;for(const s of r)if(o&&typeof o=="object"&&s in o)o=o[s];else return e;return typeof o!="string"?e:n?Object.entries(n).reduce((s,[P,w])=>s.replace(new RegExp(`\\{${P}\\}`,"g"),w),o):o}}function ft(t,e,n=!0){const r=e.errors[t];if(!r){const o=oe(t);return n&&o.action?`${o.message} ${o.action}`:o.message}return n&&r.action?`${r.message} ${r.action}`:r.message}function Z(t){const[e,n]=c.useState(null),[r,o]=c.useState(!0),s=c.useMemo(()=>t||De(),[t]);return c.useEffect(()=>{let w=!1;return(async()=>{o(!0);try{const g=await Me(s);w||(n(g),o(!1))}catch(g){console.error("[CedrosPay] Failed to load translations:",g),w||o(!1)}})(),()=>{w=!0}},[s]),{t:c.useMemo(()=>e?Be(e):w=>({"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..."})[w]||w,[e]),locale:s,isLoading:r,translations:e}}function gt(t,e=!0){const{translations:n}=Z();if(!n){const o=oe(t);return e&&o.action?`${o.message} ${o.action}`:o.message}const r=n.errors[t];if(!r){const o=oe(t);return e&&o.action?`${o.message} ${o.action}`:o.message}return e&&r.action?`${r.message} ${r.action}`:r.message}function Ne({resource:t,items:e,successUrl:n,cancelUrl:r,metadata:o,customerEmail:s,couponCode:P,label:w,disabled:q=!1,onAttempt:g,onSuccess:y,onError:l,className:m=""}){const{status:C,error:d,transactionId:T,processPayment:E,processCartCheckout:f}=Le(),a=u.useCedrosTheme(),{isCartMode:b,effectiveResource:_}=ce(t,e),{t:v,translations:k}=Z(),M=w||v("ui.pay_with_card"),B=a.unstyled?m:`${a.className} cedros-theme__stripe-button ${m}`.trim(),h=d&&typeof d!="string"?d?.code??null:null,x=d?typeof d=="string"?d:(D=>{if(!D||!k)return"";const R=k.errors[D];return R?R.action?`${R.message} ${R.action}`:R.message:""})(h):null,I=c.useCallback(async()=>{u.getLogger().debug("[StripeButton] executePayment with couponCode:",P);const D=b&&e?F(e):void 0;if(ae("stripe",_,D),g&&g("stripe"),!b&&!_){const Q="Invalid payment configuration: missing resource or items";u.getLogger().error("[StripeButton]",Q),A("stripe",Q,_,D),l&&l(Q);return}let R;V("stripe",_,D),b&&e?(u.getLogger().debug("[StripeButton] Processing cart checkout with coupon:",P),R=await f(e,n,r,o,s,P)):_&&(u.getLogger().debug("[StripeButton] Processing single payment with coupon:",P),R=await E(_,n,r,o,s,P)),R&&R.success&&R.transactionId?(ie("stripe",R.transactionId,_,D),y&&y(R.transactionId)):R&&!R.success&&R.error&&(A("stripe",R.error,_,D),l&&l(R.error))},[P,b,_,e,n,r,o,s,f,E,g,y,l]),H=c.useMemo(()=>b&&e?`stripe-cart-${e.map(D=>D.resource).join("-")}`:`stripe-${_||"unknown"}`,[b,e,_]),U=c.useMemo(()=>se(H,I),[H,I]),N=C==="loading",j=q||N;return p.jsxs("div",{className:B,style:a.unstyled?{}:a.style,children:[p.jsx("button",{onClick:U,disabled:j,className:a.unstyled?m:"cedros-theme__button cedros-theme__stripe",type:"button",children:N?v("ui.processing"):M}),x&&p.jsx("div",{className:a.unstyled?"":"cedros-theme__error",children:x}),T&&p.jsx("div",{className:a.unstyled?"":"cedros-theme__success",children:v("ui.payment_successful")})]})}function He(){const{x402Manager:t,walletManager:e}=u.useCedrosContext(),{publicKey:n,signTransaction:r}=qe.useWallet(),[o,s]=c.useState({status:"idle",error:null,transactionId:null}),[P,w]=c.useState(null),[q,g]=c.useState(null),y=c.useRef(!1),l=c.useCallback(()=>{if(!n){const f="Wallet not connected";return s({status:"error",error:f,transactionId:null}),{valid:!1,error:f}}if(!r){const f="Wallet does not support signing";return s({status:"error",error:f,transactionId:null}),{valid:!1,error:f}}return{valid:!0}},[n,r]),m=c.useCallback(async f=>{try{s(b=>({...b,status:"loading"}));const a=await t.requestQuote({resource:f});if(!t.validateRequirement(a))throw new Error("Invalid requirement received from server");return w(a),s(b=>({...b,status:"idle"})),a}catch(a){const b=u.formatError(a,"Failed to fetch requirement");throw s({status:"error",error:b,transactionId:null}),a}},[t]),C=c.useCallback(async(f,a,b,_,v="regular")=>{if(!!f.extra?.feePayer){console.log("⚡ [useX402Payment] GASLESS FLOW - Backend pays fees"),console.log("🔨 [useX402Payment] Requesting backend to build gasless transaction");const{transaction:M,blockhash:B}=await t.buildGaslessTransaction({resourceId:a,userWallet:n.toString(),feePayer:f.extra.feePayer,couponCode:b});console.log("📦 [useX402Payment] Deserializing transaction from backend");const h=e.deserializeTransaction(M);console.log("✍️ [useX402Payment] Requesting wallet to partially sign (transfer authority only)");const L=await e.partiallySignTransaction({transaction:h,signTransaction:r,blockhash:B});console.log("📤 [useX402Payment] Submitting partially-signed transaction to backend");const x=await t.submitGaslessTransaction({resource:a,partialTx:L,couponCode:b,metadata:_,resourceType:v,requirement:f});return x.success&&x.settlement&&g(x.settlement),x}else{const M=await e.buildTransaction({requirement:f,payerPublicKey:n}),B=await e.signTransaction({transaction:M,signTransaction:r}),h=e.buildPaymentPayload({requirement:f,signedTx:B,payerPublicKey:n}),L=await t.submitPayment({resource:a,payload:h,couponCode:b,metadata:_,resourceType:v});return L.success&&L.settlement&&g(L.settlement),L}},[n,r,t,e]),d=c.useCallback(async(f,a,b)=>{if(y.current)return{success:!1,error:"Payment already in progress"};const _=l();if(!_.valid)return{success:!1,error:_.error};y.current=!0,s({status:"loading",error:null,transactionId:null});try{console.log("🔍 [useX402Payment] Fetching fresh quote for resource:",f);const v=await t.requestQuote({resource:f,couponCode:a});console.log("✅ [useX402Payment] Got quote:",{payTo:v.payTo,amount:v.maxAmountRequired}),w(v),console.log("⚙️ [useX402Payment] Executing payment flow with fresh requirement");const k=await C(v,f,a,b,"regular");return k.success?s({status:"success",error:null,transactionId:k.transactionId||"payment-success"}):s({status:"error",error:k.error||"Payment failed",transactionId:null}),k}catch(v){const k=u.formatError(v,"Payment failed");return s({status:"error",error:k,transactionId:null}),{success:!1,error:k}}finally{y.current=!1}},[l,t,C]),T=c.useCallback(async(f,a,b)=>{if(y.current)return{success:!1,error:"Payment already in progress"};const _=l();if(!_.valid)return{success:!1,error:_.error};y.current=!0,s({status:"loading",error:null,transactionId:null});try{const v=re(f),k=await t.requestCartQuote({items:v,metadata:a,couponCode:b}),M=k.cartId,B=k.quote;if(!t.validateRequirement(B))throw new Error("Invalid cart quote received from server");w(B);const h=await C(B,M,b,a,"cart");return h.success?s({status:"success",error:null,transactionId:h.transactionId||"cart-payment-success"}):s({status:"error",error:h.error||"Cart payment failed",transactionId:null}),h}catch(v){const k=u.formatError(v,"Cart payment failed");return s({status:"error",error:k,transactionId:null}),{success:!1,error:k}}finally{y.current=!1}},[l,t,C]),E=c.useCallback(()=>{s({status:"idle",error:null,transactionId:null}),w(null),g(null),y.current=!1},[]);return{...o,requirement:P,settlement:q,fetchQuote:m,processPayment:d,processCartPayment:T,reset:E}}function We({resource:t,items:e,label:n,disabled:r=!1,onAttempt:o,onSuccess:s,onError:P,className:w="",testPageUrl:q,hideMessages:g=!1,metadata:y,couponCode:l}){const{connected:m,connecting:C,connect:d,disconnect:T,select:E,wallets:f,wallet:a,publicKey:b}=qe.useWallet(),{status:_,error:v,transactionId:k,processPayment:M,processCartPayment:B}=He(),h=u.useCedrosTheme(),{solanaError:L}=u.useCedrosContext(),{isCartMode:x,effectiveResource:I}=ce(t,e),{t:H,translations:U}=Z(),N=n||H("ui.pay_with_crypto"),j=v&&typeof v!="string"?v?.code??null:null,D=L&&typeof L!="string"?L?.code??null:null,R=i=>{if(!i||!U)return"";const S=U.errors[i];return S?S.action?`${S.message} ${S.action}`:S.message:""},Q=v?typeof v=="string"?v:R(j):null,pe=L?typeof L=="string"?L:R(D):null,he=c.useRef(M),we=c.useRef(B);c.useEffect(()=>{he.current=M,we.current=B},[M,B]);const Oe=c.useMemo(()=>f.map(i=>`${i.adapter.name}-${i.readyState}`).join(","),[f]),J=c.useMemo(()=>f.filter(({readyState:i})=>i===xe.WalletReadyState.Installed||i===xe.WalletReadyState.Loadable),[Oe]);c.useEffect(()=>{if(_==="success"&&k){const i=x&&e?F(e):void 0;ie("crypto",k,I,i),s&&s(k)}},[_,k,s,x,e,I]),c.useEffect(()=>{if(_==="error"&&v){const i=x&&e?F(e):void 0;A("crypto",v,I,i),P&&P(v)}},[_,v,P,x,e,I]);const Ce=typeof window<"u"&&window.top!==window.self,[Pe,G]=c.useState(!1),[be,le]=c.useState(!1),[X,z]=c.useState(null),K=L;c.useEffect(()=>{let i=!1;return i||(async()=>{if(be&&a&&!m&&!C){u.getLogger().debug("[CryptoButton] Wallet detected, attempting auto-connect:",a.adapter.name),le(!1),fe(a.adapter.name);try{await d(),i||u.getLogger().debug("[CryptoButton] Auto-connect successful")}catch(W){if(!i){u.getLogger().error("[CryptoButton] Auto-connect failed:",W);const ee=W instanceof Error?W.message:"Failed to connect wallet";ne(ee,a.adapter.name),z(null)}}}})(),()=>{i=!0}},[a,be,m,C,d]),c.useEffect(()=>{if(u.getLogger().debug("[CryptoButton] Payment useEffect triggered",{connected:m,hasPendingPayment:!!X,hasPublicKey:!!b,pendingPaymentType:X?.type}),m&&X&&b&&a){Re(a.adapter.name,b.toString()),u.getLogger().debug("[CryptoButton] All conditions met! Processing pending payment:",X);const i=X;z(null),G(!1);const S=i.type==="cart"&&i.items?F(i.items):void 0;V("crypto",i.resource,S),i.type==="cart"&&i.items?(u.getLogger().debug("[CryptoButton] Auto-processing cart payment"),we.current(i.items,i.metadata,i.couponCode)):i.type==="single"&&i.resource&&(u.getLogger().debug("[CryptoButton] Auto-processing single payment"),he.current(i.resource,i.couponCode,i.metadata))}},[m,X,b,a]);const ve=c.useCallback(async()=>{u.getLogger().debug("[CryptoButton] executePaymentFlow called",{connected:m,wallet:a?.adapter.name,couponCode:l,isCartMode:x,hasItems:!!e,effectiveResource:I});const i=x&&e?F(e):void 0;if(ae("crypto",I,i),o&&o("crypto"),K){u.getLogger().error("[CryptoButton] Solana dependencies missing:",K),A("crypto",K,I,i),P&&P(K);return}if(Ce){const S=q||window.location.href;try{if(new URL(S,window.location.origin).origin!==window.location.origin)throw u.getLogger().error("[CryptoButton] Blocked attempt to open external URL:",S),new Error("Cannot open external URLs from embedded context");window.open(S,"_blank","noopener,noreferrer")}catch(W){throw u.getLogger().error("[CryptoButton] URL validation failed:",W),W}return}if(m)V("crypto",I,i),x&&e?(u.getLogger().debug("[CryptoButton] Processing cart payment with coupon:",l),await B(e,y,l)):I&&(u.getLogger().debug("[CryptoButton] Processing single payment with coupon:",l),await M(I,l,y));else{let S=!1;if(x&&e?(u.getLogger().debug("[CryptoButton] Setting pending cart payment with coupon:",l),z({type:"cart",items:e,metadata:y,couponCode:l}),S=!0):I&&(u.getLogger().debug("[CryptoButton] Setting pending single payment with coupon:",l),z({type:"single",resource:I,metadata:y,couponCode:l}),S=!0),!S){u.getLogger().error("[CryptoButton] No valid payment to process");return}try{if(a)u.getLogger().debug("[CryptoButton] Wallet already selected, connecting:",a.adapter.name),fe(a.adapter.name),await d();else{if(u.getLogger().debug("[CryptoButton] No wallet selected, showing selector. Available wallets:",J.map(W=>W.adapter.name)),J.length===0){z(null);const W="No wallets available";throw ne(W),new Error(W)}G(!0)}}catch(W){z(null);const ee=W instanceof Error?W.message:"Failed to connect wallet";u.getLogger().error("[CryptoButton] Connection error:",ee),ne(ee,a?.adapter.name)}}},[m,a,l,x,e,I,Ce,q,J,d,y,B,M,K,o,P]),_e=c.useMemo(()=>x&&e?`crypto-cart-${e.map(i=>i.resource).join("-")}`:`crypto-${I||"unknown"}`,[x,e,I]),ze=c.useMemo(()=>se(_e,ve,{cooldownMs:200,deduplicationWindowMs:0}),[_e,ve]),ke=_==="loading",Fe=r||ke||C||!!K,Ye=ke?H("ui.processing"):N,Ue=c.useCallback(async()=>{try{le(!1),m&&await T(),E(null),G(!0)}catch(i){u.getLogger().error("Failed to change wallet:",i)}},[m,T,E]),Qe=c.useCallback(i=>{u.getLogger().debug("[CryptoButton] Wallet clicked:",i),G(!1),E(i),le(!0),u.getLogger().debug("[CryptoButton] Wallet selected, useEffect will auto-connect")},[E]),Ge=c.useCallback(async()=>{try{if(await T(),z(null),typeof window<"u"&&window.localStorage)try{window.localStorage.removeItem("walletName")}catch(i){i instanceof Error&&i.name==="QuotaExceededError"?u.getLogger().warn("localStorage quota exceeded when removing wallet preference"):u.getLogger().error("Failed to clear wallet preference from localStorage:",i)}}catch(i){u.getLogger().error("Failed to disconnect wallet:",i)}},[T]);return p.jsxs("div",{className:h.unstyled?w:`${h.className} cedros-theme__crypto-button ${w||""}`,style:h.unstyled?{}:h.style,children:[p.jsx("button",{onClick:ze,disabled:Fe,className:h.unstyled?w:"cedros-theme__button cedros-theme__crypto",type:"button",children:Ye}),Pe&&!g&&p.jsx("div",{className:"cedros-modal-overlay",style:{position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:h.tokens.modalOverlay,display:"flex",alignItems:"center",justifyContent:"center",zIndex:9999,padding:"1rem"},onClick:()=>G(!1),children:p.jsxs("div",{className:"cedros-modal-content",style:{backgroundColor:h.tokens.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 ${h.tokens.modalBorder}`},onClick:i=>i.stopPropagation(),children:[p.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1.5rem"},children:[p.jsx("h3",{style:{margin:0,fontSize:"1.25rem",fontWeight:600,color:h.tokens.surfaceText},children:H("wallet.select_wallet")}),p.jsx("button",{onClick:()=>G(!1),style:ye(h.tokens.surfaceText),"aria-label":"Close modal",type:"button",children:"×"})]}),p.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:J.map(i=>p.jsxs("button",{onClick:()=>Qe(i.adapter.name),style:{width:"100%",padding:"1rem",backgroundColor:h.tokens.surfaceBackground,border:`1px solid ${h.tokens.surfaceBorder}`,borderRadius:"0.5rem",cursor:"pointer",fontSize:"1rem",textAlign:"left",color:h.tokens.surfaceText,display:"flex",alignItems:"center",gap:"1rem",transition:"all 0.2s ease"},onMouseEnter:S=>{S.currentTarget.style.backgroundColor=h.tokens.modalBackground,S.currentTarget.style.borderColor=h.tokens.surfaceText,S.currentTarget.style.transform="translateY(-2px)"},onMouseLeave:S=>{S.currentTarget.style.backgroundColor=h.tokens.surfaceBackground,S.currentTarget.style.borderColor=h.tokens.surfaceBorder,S.currentTarget.style.transform="translateY(0)"},type:"button",children:[p.jsx(Xe.WalletIcon,{wallet:i,style:{width:"24px",height:"24px"}}),p.jsx("span",{style:{fontWeight:500},children:i.adapter.name})]},i.adapter.name))})]})}),m&&!g&&!Pe&&p.jsxs("div",{style:{display:"flex",justifyContent:"space-between",marginTop:"0.5rem",fontSize:"0.75rem",color:h.tokens.surfaceText,opacity:.7},children:[p.jsx("button",{onClick:Ue,style:{background:"none",border:"none",padding:0,color:"inherit",textDecoration:"none",cursor:"pointer",fontSize:"inherit"},type:"button",children:"Change Wallet"}),p.jsx("button",{onClick:Ge,style:{background:"none",border:"none",padding:0,color:"inherit",textDecoration:"none",cursor:"pointer",fontSize:"inherit"},type:"button",children:H("ui.disconnect")})]}),!g&&pe&&p.jsx("div",{className:h.unstyled?"":"cedros-theme__error",children:pe}),!g&&Q&&p.jsx("div",{className:h.unstyled?"":"cedros-theme__error",children:Q}),!g&&k&&p.jsx("div",{className:h.unstyled?"":"cedros-theme__success",children:H("ui.payment_successful")})]})}function $e(){const{creditsManager:t}=u.useCedrosContext(),[e,n]=c.useState({status:"idle",error:null,transactionId:null,requirement:null,holdId:null}),r=c.useRef(!1),o=c.useCallback(async(g,y)=>{n(l=>({...l,status:"loading",error:null}));try{const l=await t.requestQuote(g,y);return n(m=>({...m,status:"idle",requirement:l})),l}catch(l){const m=l instanceof Error?l.message:"Failed to fetch credits quote";return n(C=>({...C,status:"error",error:m})),null}},[t]),s=c.useCallback(async(g,y)=>{n(l=>({...l,status:"loading",error:null}));try{const l=re(g),m=await t.requestCartQuote(l,y);return n(C=>({...C,status:"idle"})),m}catch(l){const m=l instanceof Error?l.message:"Failed to fetch cart credits quote";return n(C=>({...C,status:"error",error:m})),null}},[t]),P=c.useCallback(async(g,y,l,m)=>{if(r.current)return{success:!1,error:"Payment already in progress"};r.current=!0,n({status:"loading",error:null,transactionId:null,requirement:null,holdId:null});try{const C=await t.processPayment(g,y,l,m);return n({status:C.success?"success":"error",error:C.success?null:C.error||"Credits payment failed",transactionId:C.success&&C.transactionId||null,requirement:null,holdId:null}),C}finally{r.current=!1}},[t]),w=c.useCallback(async(g,y,l,m)=>{if(r.current)return{success:!1,error:"Payment already in progress"};r.current=!0,n({status:"loading",error:null,transactionId:null,requirement:null,holdId:null});try{const C=re(g),d=await t.requestCartQuote(C,l);if(!d)return n({status:"error",error:"Credits payment not available for this cart",transactionId:null,requirement:null,holdId:null}),{success:!1,error:"Credits payment not available"};const E=(await t.createCartHold({cartId:d.cartId,authToken:y})).holdId;n(a=>({...a,holdId:E}));const f=await t.authorizeCartPayment({cartId:d.cartId,holdId:E,authToken:y,metadata:m});return n({status:f.success?"success":"error",error:f.success?null:f.error||"Cart credits payment failed",transactionId:f.success&&f.transactionId||null,requirement:null,holdId:null}),{success:f.success,transactionId:f.transactionId,error:f.error}}catch(C){const d=C instanceof Error?C.message:"Cart credits payment failed";return n({status:"error",error:d,transactionId:null,requirement:null,holdId:null}),{success:!1,error:d}}finally{r.current=!1}},[t]),q=c.useCallback(()=>{n({status:"idle",error:null,transactionId:null,requirement:null,holdId:null}),r.current=!1},[]);return{...e,fetchQuote:o,fetchCartQuote:s,processPayment:P,processCartPayment:w,reset:q}}function Ae({resource:t,items:e,authToken:n,metadata:r,couponCode:o,label:s,disabled:P=!1,onAttempt:w,onSuccess:q,onError:g,className:y=""}){const{status:l,error:m,transactionId:C,processPayment:d,processCartPayment:T}=$e(),E=u.useCedrosTheme(),{isCartMode:f,effectiveResource:a}=ce(t,e),{t:b,translations:_}=Z(),v=s||b("ui.pay_with_credits")||"Pay with Credits",k=E.unstyled?y:`${E.className} cedros-theme__credits-button ${y}`.trim(),M=m&&typeof m!="string"?m?.code??null:null,h=m?typeof m=="string"?m:(N=>{if(!N||!_)return"";const j=_.errors[N];return j?j.action?`${j.message} ${j.action}`:j.message:""})(M):null,L=c.useCallback(async()=>{u.getLogger().debug("[CreditsButton] executePayment");const N=f&&e?F(e):void 0;if(ae("credits",a,N),w&&w("credits"),!n){const D="Authentication required: please log in to pay with credits";u.getLogger().error("[CreditsButton]",D),A("credits",D,a,N),g&&g(D);return}if(!f&&!a){const D="Invalid payment configuration: missing resource";u.getLogger().error("[CreditsButton]",D),A("credits",D,a,N),g&&g(D);return}let j;V("credits",a,N),f&&e?(u.getLogger().debug("[CreditsButton] Processing cart checkout"),j=await T(e,n,o,r)):a&&(u.getLogger().debug("[CreditsButton] Processing single payment"),j=await d(a,n,o,r)),j&&j.success&&j.transactionId?(ie("credits",j.transactionId,a,N),q&&q(j.transactionId)):j&&!j.success&&j.error&&(A("credits",j.error,a,N),g&&g(j.error))},[n,f,a,e,o,r,d,T,w,q,g]),x=c.useMemo(()=>f&&e?`credits-cart-${e.map(N=>N.resource).join("-")}`:`credits-${a||"unknown"}`,[f,e,a]),I=c.useMemo(()=>se(x,L),[x,L]),H=l==="loading",U=P||H;return p.jsxs("div",{className:k,style:E.unstyled?{}:E.style,children:[p.jsx("button",{onClick:I,disabled:U,className:E.unstyled?y:"cedros-theme__button cedros-theme__credits",type:"button",children:H?b("ui.processing"):v}),h&&p.jsx("div",{className:E.unstyled?"":"cedros-theme__error",children:h}),C&&p.jsx("div",{className:E.unstyled?"":"cedros-theme__success",children:b("ui.payment_successful")})]})}const yt=({isOpen:t,onClose:e,resource:n,items:r,cardLabel:o="Card",cryptoLabel:s="USDC (Solana)",creditsLabel:P="Pay with Credits",showCard:w=!0,showCrypto:q=!0,showCredits:g=!1,onPaymentAttempt:y,onPaymentSuccess:l,onPaymentError:m,onStripeSuccess:C,onCryptoSuccess:d,onCreditsSuccess:T,onStripeError:E,onCryptoError:f,onCreditsError:a,customerEmail:b,successUrl:_,cancelUrl:v,metadata:k,couponCode:M,authToken:B,testPageUrl:h,hideMessages:L=!1})=>{const{tokens:x}=u.useCedrosTheme();return c.useEffect(()=>{const I=H=>{H.key==="Escape"&&t&&e()};return window.addEventListener("keydown",I),()=>window.removeEventListener("keydown",I)},[t,e]),c.useEffect(()=>{if(t){const I=window.scrollY;return document.body.style.position="fixed",document.body.style.top=`-${I}px`,document.body.style.width="100%",document.body.style.overflowY="scroll",()=>{const H=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,H)}}},[t]),t?p.jsx("div",{className:"cedros-modal-overlay",style:{position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:x.modalOverlay,display:"flex",alignItems:"center",justifyContent:"center",zIndex:9999,padding:"1rem"},onClick:e,children:p.jsxs("div",{className:"cedros-modal-content",style:{backgroundColor:x.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 ${x.modalBorder}`},onClick:I=>I.stopPropagation(),children:[p.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1.5rem"},children:[p.jsx("h3",{style:{margin:0,fontSize:"1.25rem",fontWeight:600,color:x.surfaceText},children:"Choose Payment Method"}),p.jsx("button",{onClick:e,style:ye(x.surfaceText),"aria-label":"Close modal",children:"×"})]}),p.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"1rem"},children:[w&&p.jsx(Ne,{resource:n,items:r,label:o,onAttempt:y,onSuccess:C||l,onError:E||m,customerEmail:b,successUrl:_,cancelUrl:v,metadata:k,couponCode:M}),q&&p.jsx(We,{resource:n,items:r,label:s,onAttempt:y,onSuccess:d||l,onError:f||m,testPageUrl:h,hideMessages:L,metadata:k,couponCode:M}),g&&p.jsx(Ae,{resource:n,items:r,label:P,authToken:B,onAttempt:y?()=>y("credits"):void 0,onSuccess:T||l,onError:a||m,metadata:k,couponCode:M})]})]})}):null};function pt({product:t,paymentMethod:e,showOriginalPrice:n=!1,className:r="",style:o={}}){const s=e==="stripe",P=s?t.fiatAmount:t.cryptoAmount,w=s?t.effectiveFiatAmount:t.effectiveCryptoAmount,q=s?t.fiatCurrency.toUpperCase():t.cryptoToken,g=s?t.hasStripeCoupon:t.hasCryptoCoupon,y=s?t.stripeDiscountPercent:t.cryptoDiscountPercent;return p.jsxs("div",{className:r,style:o,children:[n&&g&&p.jsxs("span",{style:{textDecoration:"line-through",opacity:.6,marginRight:"0.5rem",fontSize:"0.875em"},children:[P.toFixed(2)," ",q]}),p.jsxs("span",{style:{fontWeight:600},children:[w.toFixed(2)," ",q]}),g&&y>0&&p.jsxs("span",{style:{marginLeft:"0.5rem",padding:"0.125rem 0.375rem",backgroundColor:"#10b981",color:"white",borderRadius:"0.25rem",fontSize:"0.75em",fontWeight:600},children:[y,"% OFF"]})]})}function ht({product:t,paymentMethod:e,className:n="",style:r={}}){const o=e==="stripe",s=o?t.hasStripeCoupon:t.hasCryptoCoupon,P=o?t.stripeDiscountPercent:t.cryptoDiscountPercent,w=o?t.stripeCouponCode:t.cryptoCouponCode;if(!s||P===0)return null;const q=o?`${P}% off with card!`:`${P}% off with crypto!`;return p.jsxs("div",{className:n,style:{display:"inline-flex",alignItems:"center",padding:"0.5rem 0.75rem",backgroundColor:o?"#6366f1":"#10b981",color:"white",borderRadius:"0.375rem",fontSize:"0.875rem",fontWeight:600,...r},children:[q,w&&p.jsxs("span",{style:{marginLeft:"0.5rem",opacity:.8,fontSize:"0.75em",fontWeight:400},children:["(",w,")"]})]})}exports.CEDROS_EVENTS=O;exports.CreditsButton=Ae;exports.CryptoButton=We;exports.ERROR_CATEGORIES=Te;exports.PaymentMethodBadge=ht;exports.PaymentModal=yt;exports.ProductPrice=pt;exports.StripeButton=Ne;exports.calculateDiscountPercentage=Ze;exports.createDedupedClickHandler=se;exports.createTranslator=Be;exports.detectLocale=De;exports.emitPaymentError=A;exports.emitPaymentProcessing=V;exports.emitPaymentStart=ae;exports.emitPaymentSuccess=ie;exports.emitWalletConnect=fe;exports.emitWalletConnected=Re;exports.emitWalletError=ne;exports.formatCouponCodes=Ve;exports.getAvailableLocales=mt;exports.getCartItemCount=F;exports.getLocalizedError=ft;exports.getModalCloseButtonStyles=ye;exports.getUserErrorMessage=ut;exports.isRetryableError=lt;exports.loadLocale=Me;exports.parseCouponCodes=Ke;exports.stackCheckoutCoupons=Je;exports.useCreditsPayment=$e;exports.useLocalizedError=gt;exports.usePaymentMode=ce;exports.useStripeCheckout=Le;exports.useTranslation=Z;exports.useX402Payment=He;