@nextblock-cms/ecom 0.21.0 → 0.21.1

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 (359) hide show
  1. package/README.md +43 -0
  2. package/index.cjs +1 -0
  3. package/lib/CurrencyProvider.cjs +1 -0
  4. package/lib/CurrencyProvider.es.js +1 -1
  5. package/lib/PaymentReadinessProvider.cjs +1 -0
  6. package/lib/PaymentReadinessProvider.es.js +1 -1
  7. package/lib/cart-store.cjs +1 -0
  8. package/lib/cart-store.es.js +1 -1
  9. package/lib/components/AccountNavigationMenu.cjs +1 -0
  10. package/lib/components/AccountNavigationMenu.es.js +1 -1
  11. package/lib/components/AddToCartButton.cjs +1 -0
  12. package/lib/components/AddToCartButton.es.js +1 -1
  13. package/lib/components/Cart.cjs +1 -0
  14. package/lib/components/Cart.es.js +1 -1
  15. package/lib/components/CartDrawer.cjs +1 -0
  16. package/lib/components/CartDrawer.es.js +1 -1
  17. package/lib/components/CartIcon.cjs +1 -0
  18. package/lib/components/CartIcon.es.js +1 -1
  19. package/lib/components/Checkout.cjs +1 -0
  20. package/lib/components/Checkout.es.js +1 -1
  21. package/lib/components/CouponForm.cjs +1 -0
  22. package/lib/components/CouponForm.es.js +1 -1
  23. package/lib/components/CurrencySwitcher.cjs +1 -0
  24. package/lib/components/CurrencySwitcher.es.js +1 -1
  25. package/lib/components/CustomerProfileForm.cjs +1 -0
  26. package/lib/components/CustomerProfileForm.es.js +1 -1
  27. package/lib/components/FeaturedProduct.cjs +1 -0
  28. package/lib/components/FeaturedProduct.es.js +1 -1
  29. package/lib/components/FreemiusLicensePanel.cjs +1 -0
  30. package/lib/components/FreemiusLicensePanel.es.js +1 -1
  31. package/lib/components/InvoiceDocument.cjs +1 -0
  32. package/lib/components/InvoiceDocument.es.js +1 -1
  33. package/lib/components/{InvoiceViewerShell.cjs.js → InvoiceViewerShell.cjs} +1 -1
  34. package/lib/components/InvoiceViewerShell.es.js +1 -1
  35. package/lib/components/ProductCard.cjs +1 -0
  36. package/lib/components/ProductCard.es.js +1 -1
  37. package/lib/components/ProductDetailsLayout.cjs +1 -0
  38. package/lib/components/ProductDetailsLayout.es.js +1 -1
  39. package/lib/components/ProductGallery.cjs +1 -0
  40. package/lib/components/ProductGallery.es.js +1 -1
  41. package/lib/components/ProductGrid.cjs +1 -0
  42. package/lib/components/ProductGrid.es.js +1 -1
  43. package/lib/components/ShippingEstimator.cjs +1 -0
  44. package/lib/components/ShippingEstimator.es.js +1 -1
  45. package/lib/components/ShortDescription.cjs +1 -0
  46. package/lib/components/ShortDescription.es.js +1 -1
  47. package/lib/components/SimpleTiptapRenderer.cjs +1 -0
  48. package/lib/components/SimpleTiptapRenderer.es.js +1 -1
  49. package/lib/components/SubscriptionSelector.cjs +1 -0
  50. package/lib/components/SubscriptionSelector.es.js +1 -1
  51. package/lib/countries.es.js +1 -1
  52. package/lib/coupon-server.cjs +1 -0
  53. package/lib/coupon-server.es.js +1 -1
  54. package/lib/coupons.es.js +1 -1
  55. package/lib/currency-constants.es.js +1 -1
  56. package/lib/currency-rest-client.es.js +1 -1
  57. package/lib/currency-store.es.js +1 -1
  58. package/lib/currency-sync.cjs +1 -0
  59. package/lib/currency-sync.es.js +1 -1
  60. package/lib/currency.es.js +1 -1
  61. package/lib/customer-addresses.cjs +1 -0
  62. package/lib/customer-addresses.es.js +1 -1
  63. package/lib/customer-orders.cjs +1 -0
  64. package/lib/customer-orders.es.js +1 -1
  65. package/lib/customer.cjs +1 -0
  66. package/lib/customer.es.js +1 -1
  67. package/lib/export-helpers.cjs +1 -0
  68. package/lib/export-helpers.es.js +1 -1
  69. package/lib/factory.cjs +1 -0
  70. package/lib/factory.es.js +1 -1
  71. package/lib/freemius-coupons.cjs +1 -0
  72. package/lib/freemius-coupons.es.js +1 -1
  73. package/lib/freemius-license-claim.cjs +1 -0
  74. package/lib/freemius-license-claim.es.js +1 -1
  75. package/lib/freemius-license.cjs +1 -0
  76. package/lib/freemius-license.es.js +1 -1
  77. package/lib/freemius-order-sync.cjs +1 -0
  78. package/lib/freemius-order-sync.es.js +1 -1
  79. package/lib/freemius-trial-provision.cjs +1 -0
  80. package/lib/freemius-trial-provision.es.js +1 -1
  81. package/lib/inventory-settings.es.js +1 -1
  82. package/lib/{invoice-server.cjs.js → invoice-server.cjs} +1 -1
  83. package/lib/invoice-server.es.js +1 -1
  84. package/lib/invoice-ui.es.js +1 -1
  85. package/lib/invoice.es.js +1 -1
  86. package/lib/{order-inventory.cjs.js → order-inventory.cjs} +1 -1
  87. package/lib/order-inventory.es.js +1 -1
  88. package/lib/order-tax-details.es.js +1 -1
  89. package/lib/pages/cms/coupons/CouponEditorForm.cjs +1 -0
  90. package/lib/pages/cms/coupons/CouponEditorForm.es.js +1 -1
  91. package/lib/pages/cms/coupons/{CouponsPage.cjs.js → CouponsPage.cjs} +1 -1
  92. package/lib/pages/cms/coupons/CouponsPage.es.js +1 -1
  93. package/lib/pages/cms/coupons/CreateCouponDialog.cjs +1 -0
  94. package/lib/pages/cms/coupons/CreateCouponDialog.es.js +1 -1
  95. package/lib/pages/cms/coupons/EditCouponPage.cjs +1 -0
  96. package/lib/pages/cms/coupons/EditCouponPage.es.js +1 -1
  97. package/lib/pages/cms/coupons/ProductScopePicker.es.js +1 -1
  98. package/lib/pages/cms/coupons/actions.cjs +1 -0
  99. package/lib/pages/cms/coupons/actions.es.js +1 -1
  100. package/lib/pages/cms/coupons/index.cjs +1 -0
  101. package/lib/pages/cms/coupons/product-options.es.js +1 -1
  102. package/lib/pages/cms/orders/ExportReportsDialog.cjs +1 -0
  103. package/lib/pages/cms/orders/ExportReportsDialog.es.js +1 -1
  104. package/lib/pages/cms/orders/OrderDetailPage.cjs +1 -0
  105. package/lib/pages/cms/orders/OrderDetailPage.es.js +1 -1
  106. package/lib/pages/cms/orders/OrderPrintButton.es.js +1 -1
  107. package/lib/pages/cms/orders/OrderStatusForm.cjs +1 -0
  108. package/lib/pages/cms/orders/OrderStatusForm.es.js +1 -1
  109. package/lib/pages/cms/orders/OrdersPage.cjs +1 -0
  110. package/lib/pages/cms/orders/OrdersPage.es.js +1 -1
  111. package/lib/pages/cms/orders/actions.es.js +1 -1
  112. package/lib/pages/cms/orders/export-actions.es.js +1 -1
  113. package/lib/pages/cms/orders/index.cjs +1 -0
  114. package/lib/pages/cms/orders/server-actions.cjs +1 -0
  115. package/lib/pages/cms/orders/server-actions.es.js +1 -1
  116. package/lib/pages/cms/payments/PaymentsClient.es.js +1 -1
  117. package/lib/pages/cms/payments/PaymentsPage.cjs +1 -0
  118. package/lib/pages/cms/payments/PaymentsPage.es.js +1 -1
  119. package/lib/pages/cms/payments/actions.cjs +1 -0
  120. package/lib/pages/cms/payments/actions.es.js +1 -1
  121. package/lib/pages/cms/payments/index.cjs +1 -0
  122. package/lib/pages/cms/payments/queries.cjs +1 -0
  123. package/lib/pages/cms/payments/queries.es.js +1 -1
  124. package/lib/pages/cms/products/ProductsPage.cjs +1 -0
  125. package/lib/pages/cms/products/ProductsPage.es.js +1 -1
  126. package/lib/pages/cms/products/[id]/edit/EditProductPage.cjs +1 -0
  127. package/lib/pages/cms/products/{_id_ → [id]}/edit/EditProductPage.es.js +1 -1
  128. package/lib/pages/cms/products/{actions.cjs.js → actions.cjs} +1 -1
  129. package/lib/pages/cms/products/actions.es.js +1 -1
  130. package/lib/pages/cms/products/attributes/AttributeManagementPage.cjs +1 -0
  131. package/lib/pages/cms/products/attributes/AttributeManagementPage.es.js +1 -1
  132. package/lib/pages/cms/products/attributes/components/AttributeManager.es.js +1 -1
  133. package/lib/pages/cms/products/categories/CategoryManagementPage.cjs +1 -0
  134. package/lib/pages/cms/products/categories/CategoryManagementPage.es.js +1 -1
  135. package/lib/pages/cms/products/categories/components/CategoryManager.cjs +1 -0
  136. package/lib/pages/cms/products/categories/components/CategoryManager.es.js +1 -1
  137. package/lib/pages/cms/products/components/CopyProductFromLanguage.cjs +1 -0
  138. package/lib/pages/cms/products/components/CopyProductFromLanguage.es.js +1 -1
  139. package/lib/pages/cms/products/components/CurrencyPriceFields.cjs +1 -0
  140. package/lib/pages/cms/products/components/CurrencyPriceFields.es.js +1 -1
  141. package/lib/pages/cms/products/components/DeleteProductButton.es.js +1 -1
  142. package/lib/pages/cms/products/components/FreemiusPricingDashboard.cjs +1 -0
  143. package/lib/pages/cms/products/components/FreemiusPricingDashboard.es.js +1 -1
  144. package/lib/pages/cms/products/components/ProductCategorySelector.cjs +1 -0
  145. package/lib/pages/cms/products/components/ProductCategorySelector.es.js +1 -1
  146. package/lib/pages/cms/products/components/ProductForm.cjs +1 -0
  147. package/lib/pages/cms/products/components/ProductForm.es.js +1 -1
  148. package/lib/pages/cms/products/components/ProductMediaManager.cjs +1 -0
  149. package/lib/pages/cms/products/components/ProductMediaManager.es.js +1 -1
  150. package/lib/pages/cms/products/components/ProductsBulkTable.cjs +1 -0
  151. package/lib/pages/cms/products/components/ProductsBulkTable.es.js +1 -1
  152. package/lib/pages/cms/products/components/SaleScheduleFields.es.js +1 -1
  153. package/lib/pages/cms/products/components/SyncFreemiusButton.cjs +1 -0
  154. package/lib/pages/cms/products/components/SyncFreemiusButton.es.js +1 -1
  155. package/lib/pages/cms/products/components/{SyncFreemiusPricingButton.cjs.js → SyncFreemiusPricingButton.cjs} +1 -1
  156. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.es.js +1 -1
  157. package/lib/pages/cms/products/components/VariationsEditor.cjs +1 -0
  158. package/lib/pages/cms/products/components/VariationsEditor.es.js +1 -1
  159. package/lib/pages/cms/products/index.cjs +1 -0
  160. package/lib/pages/cms/products/index.es.js +1 -1
  161. package/lib/pages/cms/products/inventory/InventoryPage.cjs +1 -0
  162. package/lib/pages/cms/products/inventory/InventoryPage.es.js +1 -1
  163. package/lib/pages/cms/products/inventory/{InventoryTableClient.cjs.js → InventoryTableClient.cjs} +1 -1
  164. package/lib/pages/cms/products/inventory/InventoryTableClient.es.js +1 -1
  165. package/lib/pages/cms/products/inventory/{actions.cjs.js → actions.cjs} +1 -1
  166. package/lib/pages/cms/products/inventory/actions.es.js +1 -1
  167. package/lib/pages/cms/products/new/NewProductPage.cjs +1 -0
  168. package/lib/pages/cms/products/new/NewProductPage.es.js +1 -1
  169. package/lib/pages/cms/products/product-price-sync.cjs +1 -0
  170. package/lib/pages/cms/products/product-price-sync.es.js +1 -1
  171. package/lib/pages/cms/products/server-actions.cjs +1 -0
  172. package/lib/pages/cms/products/server-actions.es.js +1 -1
  173. package/lib/pages/cms/shipping/{ShippingPage.cjs.js → ShippingPage.cjs} +1 -1
  174. package/lib/pages/cms/shipping/ShippingPage.es.js +1 -1
  175. package/lib/pages/cms/shipping/components/RateForm.cjs +1 -0
  176. package/lib/pages/cms/shipping/components/RateForm.es.js +1 -1
  177. package/lib/pages/cms/shipping/components/ZoneForm.cjs +1 -0
  178. package/lib/pages/cms/shipping/components/ZoneForm.es.js +1 -1
  179. package/lib/pages/cms/shipping/index.cjs +1 -0
  180. package/lib/pages/cms/shipping/server-actions.cjs +1 -0
  181. package/lib/pages/cms/shipping/server-actions.es.js +1 -1
  182. package/lib/pages/cms/taxes/TaxesPage.cjs +1 -0
  183. package/lib/pages/cms/taxes/TaxesPage.es.js +1 -1
  184. package/lib/pages/cms/taxes/actions.cjs +1 -0
  185. package/lib/pages/cms/taxes/actions.es.js +1 -1
  186. package/lib/pages/cms/taxes/components/TaxRateForm.cjs +1 -0
  187. package/lib/pages/cms/taxes/components/TaxRateForm.es.js +1 -1
  188. package/lib/pages/cms/taxes/index.cjs +1 -0
  189. package/lib/payment-config.es.js +1 -1
  190. package/lib/{product-actions.cjs.js → product-actions.cjs} +1 -1
  191. package/lib/product-actions.es.js +1 -1
  192. package/lib/product-context.cjs +1 -0
  193. package/lib/product-context.es.js +1 -1
  194. package/lib/product-schema.cjs +1 -0
  195. package/lib/product-schema.es.js +1 -1
  196. package/lib/providers/freemius.cjs +1 -0
  197. package/lib/providers/freemius.es.js +1 -1
  198. package/lib/providers/stripe.cjs +1 -0
  199. package/lib/providers/stripe.es.js +1 -1
  200. package/lib/server-actions/coupon-actions.cjs +1 -0
  201. package/lib/server-actions/coupon-actions.es.js +1 -1
  202. package/lib/server-actions/customer-actions.cjs +1 -0
  203. package/lib/server-actions/customer-actions.es.js +1 -1
  204. package/lib/server-actions/product-actions.cjs +1 -0
  205. package/lib/server-actions/product-actions.es.js +1 -1
  206. package/lib/server-actions/shipping-actions.cjs +1 -0
  207. package/lib/server-actions/shipping-actions.es.js +1 -1
  208. package/lib/server-actions/tax-actions.cjs +1 -0
  209. package/lib/server-actions/tax-actions.es.js +1 -1
  210. package/lib/shared-inventory.es.js +1 -1
  211. package/lib/shipping/{resolver.cjs.js → resolver.cjs} +1 -1
  212. package/lib/shipping/resolver.es.js +1 -1
  213. package/lib/shipping-rate-currency.cjs +1 -0
  214. package/lib/shipping-rate-currency.es.js +1 -1
  215. package/lib/states.cjs +1 -0
  216. package/lib/stripe/checkout.cjs +1 -0
  217. package/lib/stripe/checkout.es.js +1 -1
  218. package/lib/stripe/client.cjs +1 -0
  219. package/lib/stripe/client.es.js +1 -1
  220. package/lib/stripe/order-sync.cjs +1 -0
  221. package/lib/stripe/order-sync.es.js +1 -1
  222. package/lib/stripe/webhooks.cjs +1 -0
  223. package/lib/stripe/webhooks.es.js +1 -1
  224. package/lib/tax-calculation.cjs +1 -0
  225. package/lib/tax-calculation.es.js +1 -1
  226. package/lib/trials.es.js +1 -1
  227. package/lib/types.es.js +1 -1
  228. package/lib/use-cart.cjs +1 -0
  229. package/lib/use-cart.es.js +1 -1
  230. package/lib/use-price-formatter.es.js +1 -1
  231. package/lib/variation-utils.cjs +1 -0
  232. package/lib/variation-utils.es.js +1 -1
  233. package/lib/zod-config.es.js +1 -1
  234. package/package.json +10 -9
  235. package/server.cjs +1 -0
  236. package/server.es.js +1 -1
  237. package/index.cjs.js +0 -1
  238. package/lib/CurrencyProvider.cjs.js +0 -1
  239. package/lib/PaymentReadinessProvider.cjs.js +0 -1
  240. package/lib/cart-store.cjs.js +0 -1
  241. package/lib/components/AccountNavigationMenu.cjs.js +0 -1
  242. package/lib/components/AddToCartButton.cjs.js +0 -1
  243. package/lib/components/Cart.cjs.js +0 -1
  244. package/lib/components/CartDrawer.cjs.js +0 -1
  245. package/lib/components/CartIcon.cjs.js +0 -1
  246. package/lib/components/Checkout.cjs.js +0 -1
  247. package/lib/components/CouponForm.cjs.js +0 -1
  248. package/lib/components/CurrencySwitcher.cjs.js +0 -1
  249. package/lib/components/CustomerProfileForm.cjs.js +0 -1
  250. package/lib/components/FeaturedProduct.cjs.js +0 -1
  251. package/lib/components/FreemiusLicensePanel.cjs.js +0 -1
  252. package/lib/components/InvoiceDocument.cjs.js +0 -1
  253. package/lib/components/ProductCard.cjs.js +0 -1
  254. package/lib/components/ProductDetailsLayout.cjs.js +0 -1
  255. package/lib/components/ProductGallery.cjs.js +0 -1
  256. package/lib/components/ProductGrid.cjs.js +0 -1
  257. package/lib/components/ShippingEstimator.cjs.js +0 -1
  258. package/lib/components/ShortDescription.cjs.js +0 -1
  259. package/lib/components/SimpleTiptapRenderer.cjs.js +0 -1
  260. package/lib/components/SubscriptionSelector.cjs.js +0 -1
  261. package/lib/coupon-server.cjs.js +0 -1
  262. package/lib/currency-sync.cjs.js +0 -1
  263. package/lib/customer-addresses.cjs.js +0 -1
  264. package/lib/customer-orders.cjs.js +0 -1
  265. package/lib/customer.cjs.js +0 -1
  266. package/lib/export-helpers.cjs.js +0 -1
  267. package/lib/factory.cjs.js +0 -1
  268. package/lib/freemius-coupons.cjs.js +0 -1
  269. package/lib/freemius-license-claim.cjs.js +0 -1
  270. package/lib/freemius-license.cjs.js +0 -1
  271. package/lib/freemius-order-sync.cjs.js +0 -1
  272. package/lib/freemius-trial-provision.cjs.js +0 -1
  273. package/lib/pages/cms/coupons/CouponEditorForm.cjs.js +0 -1
  274. package/lib/pages/cms/coupons/CreateCouponDialog.cjs.js +0 -1
  275. package/lib/pages/cms/coupons/EditCouponPage.cjs.js +0 -1
  276. package/lib/pages/cms/coupons/actions.cjs.js +0 -1
  277. package/lib/pages/cms/coupons/index.cjs.js +0 -1
  278. package/lib/pages/cms/orders/ExportReportsDialog.cjs.js +0 -1
  279. package/lib/pages/cms/orders/OrderDetailPage.cjs.js +0 -1
  280. package/lib/pages/cms/orders/OrderStatusForm.cjs.js +0 -1
  281. package/lib/pages/cms/orders/OrdersPage.cjs.js +0 -1
  282. package/lib/pages/cms/orders/index.cjs.js +0 -1
  283. package/lib/pages/cms/orders/server-actions.cjs.js +0 -1
  284. package/lib/pages/cms/payments/PaymentsPage.cjs.js +0 -1
  285. package/lib/pages/cms/payments/actions.cjs.js +0 -1
  286. package/lib/pages/cms/payments/index.cjs.js +0 -1
  287. package/lib/pages/cms/payments/queries.cjs.js +0 -1
  288. package/lib/pages/cms/products/ProductsPage.cjs.js +0 -1
  289. package/lib/pages/cms/products/_id_/edit/EditProductPage.cjs.js +0 -1
  290. package/lib/pages/cms/products/attributes/AttributeManagementPage.cjs.js +0 -1
  291. package/lib/pages/cms/products/categories/CategoryManagementPage.cjs.js +0 -1
  292. package/lib/pages/cms/products/categories/components/CategoryManager.cjs.js +0 -1
  293. package/lib/pages/cms/products/components/CopyProductFromLanguage.cjs.js +0 -1
  294. package/lib/pages/cms/products/components/CurrencyPriceFields.cjs.js +0 -1
  295. package/lib/pages/cms/products/components/FreemiusPricingDashboard.cjs.js +0 -1
  296. package/lib/pages/cms/products/components/ProductCategorySelector.cjs.js +0 -1
  297. package/lib/pages/cms/products/components/ProductForm.cjs.js +0 -1
  298. package/lib/pages/cms/products/components/ProductMediaManager.cjs.js +0 -1
  299. package/lib/pages/cms/products/components/ProductsBulkTable.cjs.js +0 -1
  300. package/lib/pages/cms/products/components/SyncFreemiusButton.cjs.js +0 -1
  301. package/lib/pages/cms/products/components/VariationsEditor.cjs.js +0 -1
  302. package/lib/pages/cms/products/index.cjs.js +0 -1
  303. package/lib/pages/cms/products/inventory/InventoryPage.cjs.js +0 -1
  304. package/lib/pages/cms/products/new/NewProductPage.cjs.js +0 -1
  305. package/lib/pages/cms/products/product-price-sync.cjs.js +0 -1
  306. package/lib/pages/cms/products/server-actions.cjs.js +0 -1
  307. package/lib/pages/cms/shipping/components/RateForm.cjs.js +0 -1
  308. package/lib/pages/cms/shipping/components/ZoneForm.cjs.js +0 -1
  309. package/lib/pages/cms/shipping/index.cjs.js +0 -1
  310. package/lib/pages/cms/shipping/server-actions.cjs.js +0 -1
  311. package/lib/pages/cms/taxes/TaxesPage.cjs.js +0 -1
  312. package/lib/pages/cms/taxes/actions.cjs.js +0 -1
  313. package/lib/pages/cms/taxes/components/TaxRateForm.cjs.js +0 -1
  314. package/lib/pages/cms/taxes/index.cjs.js +0 -1
  315. package/lib/product-context.cjs.js +0 -1
  316. package/lib/product-schema.cjs.js +0 -1
  317. package/lib/providers/freemius.cjs.js +0 -1
  318. package/lib/providers/stripe.cjs.js +0 -1
  319. package/lib/server-actions/coupon-actions.cjs.js +0 -1
  320. package/lib/server-actions/customer-actions.cjs.js +0 -1
  321. package/lib/server-actions/product-actions.cjs.js +0 -1
  322. package/lib/server-actions/shipping-actions.cjs.js +0 -1
  323. package/lib/server-actions/tax-actions.cjs.js +0 -1
  324. package/lib/shipping-rate-currency.cjs.js +0 -1
  325. package/lib/states.cjs.js +0 -1
  326. package/lib/stripe/checkout.cjs.js +0 -1
  327. package/lib/stripe/client.cjs.js +0 -1
  328. package/lib/stripe/order-sync.cjs.js +0 -1
  329. package/lib/stripe/webhooks.cjs.js +0 -1
  330. package/lib/tax-calculation.cjs.js +0 -1
  331. package/lib/use-cart.cjs.js +0 -1
  332. package/lib/variation-utils.cjs.js +0 -1
  333. package/server.cjs.js +0 -1
  334. /package/_virtual/_rolldown/{runtime.cjs.js → runtime.cjs} +0 -0
  335. /package/lib/{countries.cjs.js → countries.cjs} +0 -0
  336. /package/lib/{coupons.cjs.js → coupons.cjs} +0 -0
  337. /package/lib/{currency-constants.cjs.js → currency-constants.cjs} +0 -0
  338. /package/lib/{currency-rest-client.cjs.js → currency-rest-client.cjs} +0 -0
  339. /package/lib/{currency-store.cjs.js → currency-store.cjs} +0 -0
  340. /package/lib/{currency.cjs.js → currency.cjs} +0 -0
  341. /package/lib/{inventory-settings.cjs.js → inventory-settings.cjs} +0 -0
  342. /package/lib/{invoice-ui.cjs.js → invoice-ui.cjs} +0 -0
  343. /package/lib/{invoice.cjs.js → invoice.cjs} +0 -0
  344. /package/lib/{order-tax-details.cjs.js → order-tax-details.cjs} +0 -0
  345. /package/lib/pages/cms/coupons/{ProductScopePicker.cjs.js → ProductScopePicker.cjs} +0 -0
  346. /package/lib/pages/cms/coupons/{product-options.cjs.js → product-options.cjs} +0 -0
  347. /package/lib/pages/cms/orders/{OrderPrintButton.cjs.js → OrderPrintButton.cjs} +0 -0
  348. /package/lib/pages/cms/orders/{actions.cjs.js → actions.cjs} +0 -0
  349. /package/lib/pages/cms/orders/{export-actions.cjs.js → export-actions.cjs} +0 -0
  350. /package/lib/pages/cms/payments/{PaymentsClient.cjs.js → PaymentsClient.cjs} +0 -0
  351. /package/lib/pages/cms/products/attributes/components/{AttributeManager.cjs.js → AttributeManager.cjs} +0 -0
  352. /package/lib/pages/cms/products/components/{DeleteProductButton.cjs.js → DeleteProductButton.cjs} +0 -0
  353. /package/lib/pages/cms/products/components/{SaleScheduleFields.cjs.js → SaleScheduleFields.cjs} +0 -0
  354. /package/lib/{payment-config.cjs.js → payment-config.cjs} +0 -0
  355. /package/lib/{shared-inventory.cjs.js → shared-inventory.cjs} +0 -0
  356. /package/lib/{trials.cjs.js → trials.cjs} +0 -0
  357. /package/lib/{types.cjs.js → types.cjs} +0 -0
  358. /package/lib/{use-price-formatter.cjs.js → use-price-formatter.cjs} +0 -0
  359. /package/lib/{zod-config.cjs.js → zod-config.cjs} +0 -0
@@ -0,0 +1 @@
1
+ const e=require("../types.cjs"),t=require("../currency.cjs"),n=require("../coupons.cjs"),r=require("../coupon-server.cjs"),i=require("../countries.cjs"),a=require("../variation-utils.cjs"),o=require("../inventory-settings.cjs"),s=require("../tax-calculation.cjs"),c=require("../customer.cjs"),l=require("../customer-addresses.cjs"),u=require("../order-tax-details.cjs"),d=require("../stripe/client.cjs");let ee=require("@supabase/supabase-js");var te=i.countries.map(e=>e.code),f=new Set(`bg.cs.da.de.el.en.en-GB.es.es-419.et.fi.fil.fr.hr.hu.id.it.ja.ko.lt.lv.ms.mt.nb.nl.pl.pt.pt-BR.ro.ru.sk.sl.sv.th.tr.vi.zh.zh-HK.zh-TW`.split(`.`));function p(e){if(e)return{line1:e.line1||void 0,line2:e.line2||void 0,city:e.city||void 0,state:e.state||void 0,postal_code:e.postal_code||void 0,country:e.country_code||void 0}}function ne(e){let t=e?.trim().replace(`_`,`-`);if(!t)return;let n=[t,t.toLowerCase(),t.split(`-`)[0].toLowerCase()];for(let e of n)if(f.has(e))return e}function re(e,t){return a.resolveTranslatedText(e.name,e.name_translations||null,t)}async function ie(e){if(!e.email)return null;let t=await d.getStripeClient(),n=p(e.shippingAddress),r=e.shippingAddress?.recipient_name||e.billingAddress?.recipient_name||void 0,i={email:e.email,name:e.billingAddress?.recipient_name||e.shippingAddress?.recipient_name||void 0,phone:e.phone||void 0,address:p(e.billingAddress),metadata:e.userId?{userId:e.userId}:void 0,...n&&r?{shipping:{name:r,phone:e.phone||void 0,address:n}}:{}};try{let n=(await t.customers.list({email:e.email,limit:1})).data[0];return n?(await t.customers.update(n.id,i),n.id):(await t.customers.create(i)).id}catch(e){return console.error(`Failed to upsert Stripe customer for checkout prefill:`,e),null}}var m=class{getProviderName(){return`Stripe`}async createCheckoutSession({items:i,customerEmail:a,customerPhone:f,userId:p,billingAddress:m,shippingAddress:h,shippingMethodId:g,currencyCode:ae,locale:_,couponCode:v,couponContextItems:y}){let oe=await d.getStripeClient(),b=process.env.NEXT_PUBLIC_SUPABASE_URL||process.env.SUPABASE_URL,x=process.env.SUPABASE_SERVICE_ROLE_KEY||process.env.SUPABASE_SECRET_KEY;if(!b||!x)return console.error(`Missing Supabase credentials for checkout (Service Key required).`),{error:`Internal Server Error`,url:null};let S=(0,ee.createClient)(b,x),C=process.env.NEXT_PUBLIC_URL||`http://localhost:4200`,se=i.some(t=>!e.isDigitalItem(t));if(!i.length)return{error:`Cart is empty`,url:null};let{data:ce,error:le}=await S.from(`currencies`).select(`code, symbol, exchange_rate, is_default, is_active, auto_sync_product_prices, auto_update_exchange_rate, exchange_rate_source, exchange_rate_updated_at, rounding_mode, rounding_increment, rounding_charm_amount`).eq(`is_active`,!0).order(`code`,{ascending:!0}),w=ce??[];if(le||w.length===0)return console.error(`Error fetching currencies for checkout:`,le),{error:`Failed to resolve store currencies`,url:null};let T=t.getDefaultCurrency(w),E=w.find(e=>e.code===(ae||``).toUpperCase())??T,D=E.code.toLowerCase(),O=await o.getEcommerceInventorySettings(S),ue=i.map(e=>e.product_id),k=i.map(e=>e.variant_id).filter(e=>!!e),{data:A,error:j}=await S.from(`products`).select(`id, title, sku, price, prices, sale_price, sale_prices, sale_start_at, sale_end_at, scheduled_price, scheduled_prices, scheduled_price_at, stock, is_taxable`).in(`id`,ue);if(j||!A)return console.error(`Error fetching products for validation:`,j),{error:`Failed to validate product prices`,url:null};let{data:de,error:M}=k.length?await S.from(`product_variants`).select(`id, product_id, sku, price, prices, sale_price, sale_prices, sale_start_at, sale_end_at, scheduled_price, scheduled_prices, scheduled_price_at, stock_quantity`).in(`id`,k):{data:[],error:null};if(M)return console.error(`Error fetching variants for validation:`,M),{error:`Failed to validate product variants`,url:null};let N=new Map(A.map(e=>[e.id,e])),P=new Map((de||[]).map(e=>[e.id,e])),F=new Set,I=new Map;for(let e of i){let t=N.get(e.product_id);if(!t)continue;let n=(e.variant_id?P.get(e.variant_id):null)?.sku||t.sku;n&&(F.add(n),I.set(n,(I.get(n)??0)+e.quantity))}let{data:fe,error:L}=F.size?await S.from(`inventory_items`).select(`sku, quantity`).in(`sku`,[...F]):{data:[],error:null};if(L)return console.error(`Error fetching SKU inventory for validation:`,L),{error:`Failed to validate SKU inventory`,url:null};let R=new Map((fe||[]).map(e=>[e.sku,Math.max(0,e.quantity??0)])),z=[],B=[],pe=[],V=0,H=0,U=null;if(v){let e=await r.getCouponQuote({client:S,code:v,items:y&&y.length>0?y:i,currencyCode:E.code});if(!e.success)return{error:e.error,errorKey:e.errorKey,errorStatus:400,url:null};U=e.quote}let me=r.getQuoteLineDiscountMap(U),he=e=>{let t=e.unitAmount*e.quantity,n=Math.max(0,t-e.lineDiscount);if(n<=0)return;let r=Math.floor(n/e.quantity),i=n-r*e.quantity,a=(t,n)=>{n<=0||t<=0||z.push({price_data:{currency:e.currency,product_data:{name:e.name,tax_code:s.getStripeTaxCodeForProduct(e.isTaxable),metadata:{productId:e.productId,variantId:e.variantId||``}},tax_behavior:`exclusive`,unit_amount:t},quantity:n})};a(r,e.quantity-i),a(r+1,i)};for(let e of i){let r=N.get(e.product_id);if(!r)return console.warn(`Product ${e.product_id} not found in DB.`),{url:null,...o.createInventoryUnavailableError(e.title)};let i=t.resolveEffectivePriceForCurrency({prices:t.normalizePriceMap(r.prices),salePrices:r.sale_prices||{},fallbackPrice:r.price,fallbackSalePrice:r.sale_price,saleStartAt:r.sale_start_at,saleEndAt:r.sale_end_at,scheduledPrice:r.scheduled_price,scheduledPrices:t.normalizePriceMap(r.scheduled_prices),scheduledPriceAt:r.scheduled_price_at,currencyCode:E.code,currencies:w}),a=i.sale_price??i.price,s=r.title,c=null;if(e.variant_id){let n=P.get(e.variant_id);if(!n||n.product_id!==e.product_id)return{url:null,...o.createInventoryUnavailableError(e.title)};let i=I.get(n.sku)??e.quantity,l=R.has(n.sku)?R.get(n.sku)??0:Math.max(0,n.stock_quantity??0);if(O.trackQuantities&&i>l)return{url:null,...o.createInventoryInsufficientError(e.title,l)};let u=t.resolveEffectivePriceForCurrency({prices:t.normalizePriceMap(n.prices),salePrices:n.sale_prices||{},fallbackPrice:n.price,fallbackSalePrice:n.sale_price,saleStartAt:n.sale_start_at,saleEndAt:n.sale_end_at,scheduledPrice:n.scheduled_price,scheduledPrices:t.normalizePriceMap(n.scheduled_prices),scheduledPriceAt:n.scheduled_price_at,currencyCode:E.code,currencies:w});a=u.sale_price??u.price,c=n.id,s=e.variant_label?`${r.title} - ${e.variant_label}`:`${r.title} - ${n.sku}`}else{let t=I.get(r.sku)??e.quantity,n=R.has(r.sku)?R.get(r.sku)??0:Math.max(0,r.stock??0);if(O.trackQuantities&&t>n)return{url:null,...o.createInventoryInsufficientError(e.title,n)}}let l=r.is_taxable??!0;if(a<0)return{error:`A product variation produced an invalid price.`,url:null};let u=Math.min(a*e.quantity,me.get(n.getCartLineCouponKey(e))??0);he({name:s,currency:D,productId:r.id,variantId:c,isTaxable:l,unitAmount:a,quantity:e.quantity,lineDiscount:u}),V+=a*e.quantity,H+=u,pe.push({product_id:r.id,quantity:e.quantity,price_at_purchase:a,variant_id:c}),B.push({product_id:r.id,quantity:e.quantity,unit_amount:a,discount_amount:u,is_taxable:l})}if(z.length===0&&H>=V)return{error:`This coupon would reduce the Stripe order to zero. Use a smaller discount for Stripe checkout.`,errorKey:`ecommerce.coupon_zero_total_not_supported`,errorStatus:400,url:null};if(z.length===0)return{error:`No valid items in cart`,url:null};let W=0,G=null;if(g){let{data:e,error:n}=await S.from(`shipping_zone_methods`).select(`id, name, name_translations, cost_amount, cost_currency`).eq(`id`,g).single();if(n)return console.error(`Failed to load shipping method:`,n),{error:`Failed to load shipping method`,url:null};W=t.convertMinorUnitAmount({amount:e.cost_amount??0,fromCurrencyCode:e.cost_currency||T.code,toCurrencyCode:E.code,currencies:w}),G=re(e,_)}let K=se?h??m:m,q;try{q=await s.calculateCheckoutTaxes(S,{items:B,destination:{country_code:K?.country_code,state:K?.state}})}catch(e){return console.error(`Failed to calculate checkout taxes:`,e),{error:`Failed to calculate taxes`,url:null}}W>0&&G&&z.push({price_data:{currency:D,product_data:{name:G,tax_code:q.enabled&&q.mode===`automatic`?s.STRIPE_TAX_CODE_SHIPPING:s.STRIPE_TAX_CODE_NONTAXABLE},tax_behavior:`exclusive`,unit_amount:W},quantity:1});let J=q.enabled&&q.mode===`manual`&&!q.isPendingExternalCalculation?q.amount:0;J>0&&z.push({price_data:{currency:D,product_data:{name:`Tax`,tax_code:s.STRIPE_TAX_CODE_NONTAXABLE},tax_behavior:`exclusive`,unit_amount:J},quantity:1});let ge=c.normalizeOrderCustomerDetails({email:a,phone:f,name:m?.recipient_name,billing:m,shipping:h}),Y=E.code,_e=u.buildOrderTaxDetailsFromCalculation({calculation:q,subtotal:V,shippingTotal:W,total:Math.max(0,V-H)+W+J,currency:Y}),ve=Math.max(0,V-H)+W+J,{data:X,error:Z}=await S.from(`orders`).insert({status:`pending`,total:ve,currency:Y,exchange_rate_at_purchase:E.exchange_rate,subtotal:V,shipping_total:W,tax_total:J,tax_details:_e,coupon_id:U?.couponId??null,coupon_code:U?.code??null,discount_total:H,discount_details:U?{code:U.code,discount_type:U.discountType,discount_amount:U.discountAmount,provider:`stripe`,provider_discounts:U.providerDiscounts,line_discounts:U.lineDiscounts}:null,provider:`stripe`,user_id:p,customer_details:ge}).select(`id`).single();if(Z||!X)return console.error(`Failed to create pending order:`,Z),{error:`Failed to initiate order`,url:null};let Q=X.id,{error:ye}=await S.from(`order_items`).insert(pe.map(e=>({order_id:Q,product_id:e.product_id,variant_id:e.variant_id??null,quantity:e.quantity,price_at_purchase:e.price_at_purchase})));if(ye)return console.error(`Failed to insert order items:`,ye),await S.from(`orders`).update({status:`failed`}).eq(`id`,Q),{error:`Failed to record order items`,url:null};if(p)try{await l.upsertDefaultUserAddresses({userId:p,billingAddress:m,shippingAddress:h,client:S}),await l.fillMissingUserProfileCheckoutDetails({userId:p,fullName:m?.recipient_name??h?.recipient_name??null,phone:f,client:S})}catch(e){console.error(`Failed to sync checkout profile defaults before checkout:`,e)}U&&await r.recordCouponRedemption({client:S,quote:U,orderId:Q,provider:`stripe`,discountTotal:H,userId:p,customerEmail:a,metadata:{currency:E.code,subtotal:V,shipping_total:W,tax_total:J}});let $=await ie({email:a,phone:f,userId:p,billingAddress:m,shippingAddress:h});try{let e=await oe.checkout.sessions.create({mode:`payment`,success_url:`${C}/checkout/success?session_id={CHECKOUT_SESSION_ID}`,cancel_url:`${C}/checkout`,locale:ne(_),line_items:z,automatic_tax:q.enabled&&q.mode===`automatic`?{enabled:!0}:void 0,billing_address_collection:`auto`,customer:$||void 0,customer_email:$?void 0:a||void 0,customer_creation:$?void 0:`if_required`,customer_update:$?{name:`auto`,address:`auto`,shipping:`auto`}:void 0,shipping_address_collection:se?{allowed_countries:te}:void 0,metadata:{orderId:Q,taxMode:q.mode,currencyCode:E.code,couponCode:U?.code||``}}),{error:t}=await S.from(`orders`).update({stripe_session_id:e.id}).eq(`id`,Q);return t&&console.error(`Failed to save Stripe session ID on order:`,t),{url:e.url}}catch(e){return console.error(`Stripe session creation failed:`,e),await S.from(`orders`).update({status:`failed`}).eq(`id`,Q),e?.name===`StripeNotConfiguredError`||e?.type===`StripeAuthenticationError`?{error:`This store is not able to take payments right now. Please contact the seller to complete your purchase.`,errorKey:`ecommerce.checkout_payments_unavailable`,errorStatus:503,url:null}:{error:`Something went wrong while preparing your checkout. Please try again.`,errorKey:`ecommerce.checkout_internal_server_error`,url:null}}}};exports.StripeProvider=m;
@@ -11,7 +11,7 @@ import { fillMissingUserProfileCheckoutDetails as ae, upsertDefaultUserAddresses
11
11
  import { buildOrderTaxDetailsFromCalculation as se } from "../order-tax-details.es.js";
12
12
  import { getStripeClient as m } from "../stripe/client.es.js";
13
13
  import { createClient as ce } from "@supabase/supabase-js";
14
- //#region libs/ecommerce/src/lib/providers/stripe.ts
14
+ //#region src/lib/providers/stripe.ts
15
15
  var le = l.map((e) => e.code), h = /* @__PURE__ */ new Set(/* @__PURE__ */ "bg.cs.da.de.el.en.en-GB.es.es-419.et.fi.fil.fr.hr.hu.id.it.ja.ko.lt.lv.ms.mt.nb.nl.pl.pt.pt-BR.ro.ru.sk.sl.sv.th.tr.vi.zh.zh-HK.zh-TW".split("."));
16
16
  function g(e) {
17
17
  if (e) return {
@@ -0,0 +1 @@
1
+ "use server";const e=require("../coupon-server.cjs");let t=require("@nextblock-cms/db/server");async function n(n){try{let r=(0,t.getServiceRoleSupabaseClient)();return await e.getCouponQuote({client:r,code:n.code,items:Array.isArray(n.items)?n.items:[],currencyCode:n.currencyCode})}catch(e){return console.error(`Failed to validate coupon:`,e),{success:!1,error:e.message||`Failed to validate coupon.`,errorKey:`ecommerce.coupon_validation_failed`}}}exports.getCouponQuoteAction=n;
@@ -1,7 +1,7 @@
1
1
  "use server";
2
2
  import { getCouponQuote as e } from "../coupon-server.es.js";
3
3
  import { getServiceRoleSupabaseClient as t } from "@nextblock-cms/db/server";
4
- //#region libs/ecommerce/src/lib/server-actions/coupon-actions.ts
4
+ //#region src/lib/server-actions/coupon-actions.ts
5
5
  async function n(n) {
6
6
  try {
7
7
  let r = t();
@@ -0,0 +1 @@
1
+ "use server";const e=require("../customer.cjs"),t=require("../customer-addresses.cjs");let n=require("@nextblock-cms/db/server"),r=require("next/cache");async function i(i){let a=(0,n.createClient)(),{data:{user:o},error:s}=await a.auth.getUser();if(s||!o)throw Error(`Unauthorized`);let c={full_name:i.full_name||null,avatar_url:i.avatar_url||null,website:i.website||null,phone:i.phone||null,updated_at:new Date().toISOString()},{error:l}=await a.from(`profiles`).update(c).eq(`id`,o.id);if(l)throw console.error(`Error updating profile:`,l),Error(`Failed to update profile`);let u=e.normalizeCustomerAddress(i.billing_address),d=i.use_billing_for_shipping?u:e.normalizeCustomerAddress(i.shipping_address);return await t.upsertDefaultUserAddresses({userId:o.id,billingAddress:u,shippingAddress:d,client:a}),(0,r.revalidatePath)(`/profile`),(0,r.revalidatePath)(`/checkout`),{success:!0}}exports.updateProfile=i;
@@ -3,7 +3,7 @@ import { normalizeCustomerAddress as e } from "../customer.es.js";
3
3
  import { upsertDefaultUserAddresses as t } from "../customer-addresses.es.js";
4
4
  import { createClient as n } from "@nextblock-cms/db/server";
5
5
  import { revalidatePath as r } from "next/cache";
6
- //#region libs/ecommerce/src/lib/server-actions/customer-actions.ts
6
+ //#region src/lib/server-actions/customer-actions.ts
7
7
  async function i(i) {
8
8
  let a = n(), { data: { user: o }, error: s } = await a.auth.getUser();
9
9
  if (s || !o) throw Error("Unauthorized");
@@ -0,0 +1 @@
1
+ "use server";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../product-actions.cjs");let t=require("@nextblock-cms/db/server");async function n(n,r,i=[],a=[]){let o=(0,t.createClient)(),{data:s,error:c}=await e.fetchTranslatedProductsForCartInternal(o,n,r,i,a);return c?(console.error(`[getTranslatedProductsForCart] Error:`,c),[]):s||[]}exports.getTranslatedProductsForCart=n;
@@ -1,7 +1,7 @@
1
1
  "use server";
2
2
  import { fetchTranslatedProductsForCartInternal as e } from "../product-actions.es.js";
3
3
  import { createClient as t } from "@nextblock-cms/db/server";
4
- //#region libs/ecommerce/src/lib/server-actions/product-actions.ts
4
+ //#region src/lib/server-actions/product-actions.ts
5
5
  async function n(n, r, i = [], a = []) {
6
6
  let o = t(), { data: s, error: c } = await e(o, n, r, i, a);
7
7
  return c ? (console.error("[getTranslatedProductsForCart] Error:", c), []) : s || [];
@@ -0,0 +1 @@
1
+ "use server";const e=require("../countries.cjs"),t=require("../shipping/resolver.cjs"),n=require("../states.cjs");async function r(r,i,a,o){try{let s=e.normalizeCountryCode(i.country);return s?{success:!0,methods:await t.resolveShippingOptions(r,{...i,country:s,state:n.normalizeSubdivisionCode(s,i.state)||void 0},a,o)}:{success:!1,error:`Country is required for shipping calculation`,errorKey:`ecommerce.shipping_country_required`}}catch(e){return console.error(`Failed to resolve shipping options:`,e),{success:!1,error:e.message||`Failed to calculate shipping`,errorKey:`ecommerce.shipping_calculation_failed`}}}exports.getShippingEstimates=r;
@@ -2,7 +2,7 @@
2
2
  import { normalizeCountryCode as e } from "../countries.es.js";
3
3
  import { resolveShippingOptions as t } from "../shipping/resolver.es.js";
4
4
  import { normalizeSubdivisionCode as n } from "../states.es.js";
5
- //#region libs/ecommerce/src/lib/server-actions/shipping-actions.ts
5
+ //#region src/lib/server-actions/shipping-actions.ts
6
6
  async function r(r, i, a, o) {
7
7
  try {
8
8
  let s = e(i.country);
@@ -0,0 +1 @@
1
+ "use server";const e=require("../coupon-server.cjs"),t=require("../tax-calculation.cjs");let n=require("@nextblock-cms/db/server");async function r(r,i,a=`USD`,o,s){try{let c=(0,n.createClient)(),l=(0,n.getServiceRoleSupabaseClient)(),{data:u}=await c.from(`currencies`).select(`code, symbol, exchange_rate, is_default, is_active, auto_sync_product_prices, auto_update_exchange_rate, exchange_rate_source, exchange_rate_updated_at, rounding_mode, rounding_increment, rounding_charm_amount`).eq(`is_active`,!0).order(`code`,{ascending:!0}),d=u??[],f;if(o){let t=await e.getCouponQuote({client:l,code:o,items:s&&s.length>0?s:r,currencyCode:a});t.success&&(f=e.getQuoteLineDiscountMap(t.quote))}let p=await t.buildCheckoutTaxableItemsFromCart(c,r,a,d,f);return{success:!0,tax:await t.calculateCheckoutTaxes(c,{items:p,destination:i})}}catch(e){return console.error(`Failed to estimate taxes:`,e),{success:!1,error:e.message||`Failed to calculate taxes`}}}exports.getTaxEstimate=r;
@@ -2,7 +2,7 @@
2
2
  import { getCouponQuote as e, getQuoteLineDiscountMap as t } from "../coupon-server.es.js";
3
3
  import { buildCheckoutTaxableItemsFromCart as n, calculateCheckoutTaxes as r } from "../tax-calculation.es.js";
4
4
  import { createClient as i, getServiceRoleSupabaseClient as a } from "@nextblock-cms/db/server";
5
- //#region libs/ecommerce/src/lib/server-actions/tax-actions.ts
5
+ //#region src/lib/server-actions/tax-actions.ts
6
6
  async function o(o, s, c = "USD", l, u) {
7
7
  try {
8
8
  let d = i(), f = a(), { data: p } = await d.from("currencies").select("code, symbol, exchange_rate, is_default, is_active, auto_sync_product_prices, auto_update_exchange_rate, exchange_rate_source, exchange_rate_updated_at, rounding_mode, rounding_increment, rounding_charm_amount").eq("is_active", !0).order("code", { ascending: !0 }), m = p ?? [], h;
@@ -1,6 +1,6 @@
1
1
  import { getServiceRoleSupabaseClient as e } from "@nextblock-cms/db/server";
2
2
  import "server-only";
3
- //#region libs/ecommerce/src/lib/shared-inventory.ts
3
+ //#region src/lib/shared-inventory.ts
4
4
  function t(t) {
5
5
  return t ?? e();
6
6
  }
@@ -1,4 +1,4 @@
1
- const e=require("../currency.cjs.js"),t=require("../shipping-rate-currency.cjs.js"),n=require("../variation-utils.cjs.js");let r=require("@nextblock-cms/db/server");async function i(i,a,o,s){let c=(0,r.getSsgSupabaseClient)(),{data:l}=await c.from(`currencies`).select(`code, symbol, exchange_rate, is_default, is_active, auto_sync_product_prices, auto_update_exchange_rate, exchange_rate_source, exchange_rate_updated_at, rounding_mode, rounding_increment, rounding_charm_amount`).eq(`is_active`,!0).order(`code`,{ascending:!0}),u=l??[],d=e.getDefaultCurrency(u),f=s||d.code,{data:p,error:m}=await c.from(`shipping_zone_locations`).select(`
1
+ const e=require("../currency.cjs"),t=require("../shipping-rate-currency.cjs"),n=require("../variation-utils.cjs");let r=require("@nextblock-cms/db/server");async function i(i,a,o,s){let c=(0,r.getSsgSupabaseClient)(),{data:l}=await c.from(`currencies`).select(`code, symbol, exchange_rate, is_default, is_active, auto_sync_product_prices, auto_update_exchange_rate, exchange_rate_source, exchange_rate_updated_at, rounding_mode, rounding_increment, rounding_charm_amount`).eq(`is_active`,!0).order(`code`,{ascending:!0}),u=l??[],d=e.getDefaultCurrency(u),f=s||d.code,{data:p,error:m}=await c.from(`shipping_zone_locations`).select(`
2
2
  zone_id,
3
3
  country_code,
4
4
  state_code,
@@ -2,7 +2,7 @@ import { getDefaultCurrency as e } from "../currency.es.js";
2
2
  import { resolveShippingRateAmountForCurrency as t } from "../shipping-rate-currency.es.js";
3
3
  import { resolveTranslatedText as n } from "../variation-utils.es.js";
4
4
  import { getSsgSupabaseClient as r } from "@nextblock-cms/db/server";
5
- //#region libs/ecommerce/src/lib/shipping/resolver.ts
5
+ //#region src/lib/shipping/resolver.ts
6
6
  async function i(i, a, o, s) {
7
7
  let c = r(), { data: l } = await c.from("currencies").select("code, symbol, exchange_rate, is_default, is_active, auto_sync_product_prices, auto_update_exchange_rate, exchange_rate_source, exchange_rate_updated_at, rounding_mode, rounding_increment, rounding_charm_amount").eq("is_active", !0).order("code", { ascending: !0 }), u = l ?? [], d = e(u), f = s || d.code, { data: p, error: m } = await c.from("shipping_zone_locations").select("\n zone_id,\n country_code,\n state_code,\n postal_code,\n shipping_zones!inner(priority_order)\n ").eq("country_code", a.country).order("shipping_zones(priority_order)", { ascending: !0 });
8
8
  if (m || !p || p.length === 0) return [];
@@ -0,0 +1 @@
1
+ const e=require("./currency.cjs");let t=require("@nextblock-cms/utils");var n=[`auto`,`manual`];function r(e){if(typeof e==`string`){let t=e.trim().toLowerCase();if(n.includes(t))return t}return`auto`}function i(e,t=0){return typeof e==`number`&&Number.isFinite(e)&&e>=0?Math.round(e):t}function a(n){let r=(0,t.normalizeCurrencyCode)(n.sourceCurrencyCode),i=e.normalizePriceMap(n.amountMap);if(i[r]!==void 0)return r;let a=Object.keys(i)[0];return a?(0,t.normalizeCurrencyCode)(a):e.getDefaultCurrency(n.currencies).code}function o(t){let n=r(t.mode),o=e.normalizePriceMap(t.costAmounts),s=e.normalizePriceMap(t.minOrderAmounts),c=a({amountMap:Object.keys(o).length>0?o:s,sourceCurrencyCode:t.sourceCurrencyCode,currencies:t.currencies}),l=o[c]??i(t.fallbackCostAmount),u=s[c]??i(t.fallbackMinOrderAmount);if(n===`auto`)return{mode:n,sourceCurrencyCode:c,costAmounts:{[c]:l},minOrderAmounts:{[c]:u}};let d=Object.keys(o).length>0?{...o}:{[c]:l},f=Object.keys(s).length>0?{...s}:{[c]:u};return d[c]===void 0&&(d[c]=l),f[c]===void 0&&(f[c]=u),{mode:n,sourceCurrencyCode:c,costAmounts:d,minOrderAmounts:f}}function s(n){let o=r(n.mode),s=e.normalizePriceMap(n.amountMap),c=(0,t.normalizeCurrencyCode)(n.currencyCode);if(o===`manual`&&s[c]!==void 0)return s[c];let l=a({amountMap:s,sourceCurrencyCode:n.sourceCurrencyCode,currencies:n.currencies}),u=s[l]??i(n.fallbackAmount);return c===l?u:e.convertMinorUnitAmount({amount:u,fromCurrencyCode:l,toCurrencyCode:c,currencies:n.currencies})}exports.SHIPPING_RATE_CURRENCY_MODES=n,exports.normalizeShippingRateCurrencyMode=r,exports.resolveShippingRateAmountForCurrency=s,exports.sanitizeShippingRateAmountMaps=o;
@@ -1,6 +1,6 @@
1
1
  import { convertMinorUnitAmount as e, getDefaultCurrency as t, normalizePriceMap as n } from "./currency.es.js";
2
2
  import { normalizeCurrencyCode as r } from "@nextblock-cms/utils";
3
- //#region libs/ecommerce/src/lib/shipping-rate-currency.ts
3
+ //#region src/lib/shipping-rate-currency.ts
4
4
  var i = ["auto", "manual"];
5
5
  function a(e) {
6
6
  if (typeof e == "string") {
package/lib/states.cjs ADDED
@@ -0,0 +1 @@
1
+ const e=require("./countries.cjs");var t={US:[{code:`AL`,name:`Alabama`},{code:`AK`,name:`Alaska`},{code:`AZ`,name:`Arizona`},{code:`AR`,name:`Arkansas`},{code:`CA`,name:`California`},{code:`CO`,name:`Colorado`},{code:`CT`,name:`Connecticut`},{code:`DE`,name:`Delaware`},{code:`DC`,name:`District of Columbia`},{code:`FL`,name:`Florida`},{code:`GA`,name:`Georgia`},{code:`HI`,name:`Hawaii`},{code:`ID`,name:`Idaho`},{code:`IL`,name:`Illinois`},{code:`IN`,name:`Indiana`},{code:`IA`,name:`Iowa`},{code:`KS`,name:`Kansas`},{code:`KY`,name:`Kentucky`},{code:`LA`,name:`Louisiana`},{code:`ME`,name:`Maine`},{code:`MD`,name:`Maryland`},{code:`MA`,name:`Massachusetts`},{code:`MI`,name:`Michigan`},{code:`MN`,name:`Minnesota`},{code:`MS`,name:`Mississippi`},{code:`MO`,name:`Missouri`},{code:`MT`,name:`Montana`},{code:`NE`,name:`Nebraska`},{code:`NV`,name:`Nevada`},{code:`NH`,name:`New Hampshire`},{code:`NJ`,name:`New Jersey`},{code:`NM`,name:`New Mexico`},{code:`NY`,name:`New York`},{code:`NC`,name:`North Carolina`},{code:`ND`,name:`North Dakota`},{code:`OH`,name:`Ohio`},{code:`OK`,name:`Oklahoma`},{code:`OR`,name:`Oregon`},{code:`PA`,name:`Pennsylvania`},{code:`RI`,name:`Rhode Island`},{code:`SC`,name:`South Carolina`},{code:`SD`,name:`South Dakota`},{code:`TN`,name:`Tennessee`},{code:`TX`,name:`Texas`},{code:`UT`,name:`Utah`},{code:`VT`,name:`Vermont`},{code:`VA`,name:`Virginia`},{code:`WA`,name:`Washington`},{code:`WV`,name:`West Virginia`},{code:`WI`,name:`Wisconsin`},{code:`WY`,name:`Wyoming`}],CA:[{code:`AB`,name:`Alberta`},{code:`BC`,name:`British Columbia`},{code:`MB`,name:`Manitoba`},{code:`NB`,name:`New Brunswick`},{code:`NL`,name:`Newfoundland and Labrador`},{code:`NS`,name:`Nova Scotia`},{code:`NT`,name:`Northwest Territories`},{code:`NU`,name:`Nunavut`},{code:`ON`,name:`Ontario`},{code:`PE`,name:`Prince Edward Island`},{code:`QC`,name:`Quebec`},{code:`SK`,name:`Saskatchewan`},{code:`YT`,name:`Yukon`}]},n={CA:{BC:`Colombie-Britannique`,NB:`Nouveau-Brunswick`,NL:`Terre-Neuve-et-Labrador`,NS:`Nouvelle-Écosse`,NT:`Territoires du Nord-Ouest`,PE:`Île-du-Prince-Édouard`,QC:`Québec`},US:{CA:`Californie`,DC:`District de Columbia`,FL:`Floride`,GA:`Géorgie`,HI:`Hawaï`,LA:`Louisiane`,NC:`Caroline du Nord`,ND:`Dakota du Nord`,NM:`Nouveau-Mexique`,PA:`Pennsylvanie`,SC:`Caroline du Sud`,SD:`Dakota du Sud`,VA:`Virginie`,WV:`Virginie-Occidentale`}};function r(t,r,i){if(!i||!i.toLowerCase().startsWith(`fr`))return r.name;let a=e.normalizeCountryCode(t);return a&&n[a]?.[r.code]||r.name}var i={US:{CALIFORNIA:`CA`,NEWYORK:`NY`,"NEW YORK":`NY`,DISTRICTOFCOLUMBIA:`DC`,"DISTRICT OF COLUMBIA":`DC`},CA:{QUEBEC:`QC`,ONTARIO:`ON`,"BRITISH COLUMBIA":`BC`,BRITISHCOLUMBIA:`BC`,"NEWFOUNDLAND AND LABRADOR":`NL`,NEWFOUNDLANDANDLABRADOR:`NL`,"NORTHWEST TERRITORIES":`NT`,NORTHWESTTERRITORIES:`NT`,"PRINCE EDWARD ISLAND":`PE`,PRINCEEDWARDISLAND:`PE`}};function a(n){let r=e.normalizeCountryCode(n);return r?t[r]??[]:[]}function o(e){return a(e).length>0}function s(n,r){let a=e.normalizeCountryCode(n),o=r?.trim();if(!a||!o)return o||null;let s=t[a];if(!s?.length)return o.toUpperCase();let c=o.toUpperCase(),l=s.find(e=>e.code===c);if(l)return l.code;let u=s.find(e=>e.name.toUpperCase()===c);if(u)return u.code;let d=c.replace(/\s+/g,``);return i[a]?.[c]??i[a]?.[d]??c}function c(n,r){let i=e.normalizeCountryCode(n),a=s(n,r);return!i||!a?r??null:t[i]?.find(e=>e.code===a)?.name??a}exports.STATES_BY_COUNTRY=t,exports.countryUsesStructuredStates=o,exports.getStatesForCountry=a,exports.getSubdivisionLabel=r,exports.normalizeSubdivisionCode=s,exports.resolveSubdivisionName=c;
@@ -0,0 +1 @@
1
+ const e=require("../currency.cjs"),t=require("../shipping/resolver.cjs"),n=require("./client.cjs");let r=require("@nextblock-cms/db/server"),i=require("@supabase/supabase-js");var a=async(a,o,s,c)=>{let l=process.env.NEXT_PUBLIC_SUPABASE_URL||process.env.SUPABASE_URL,u=process.env.SUPABASE_SERVICE_ROLE_KEY||process.env.SUPABASE_SECRET_KEY;if(!l||!u)return console.error(`Missing Supabase credentials for checkout (Service Key required).`),{error:`Internal Server Error`,url:null};let d=(0,i.createClient)(l,u),f=process.env.NEXT_PUBLIC_URL||`http://localhost:4200`;if(!a.length)return{error:`Cart is empty`,url:null};let{data:p}=await d.from(`currencies`).select(`code, symbol, exchange_rate, is_default, is_active, auto_sync_product_prices, auto_update_exchange_rate, exchange_rate_source, exchange_rate_updated_at, rounding_mode, rounding_increment, rounding_charm_amount`).eq(`is_active`,!0).order(`code`,{ascending:!0}),m=p??[],h=e.getDefaultCurrency(m),g=m.find(e=>e.code===(c||``).toUpperCase())??h;if(!await(0,r.verifyPackageOnline)(`ecommerce`))return{error:`E-Commerce Package not active. Please purchase a license to accept payments.`,url:null};let _=a.map(e=>e.product_id),{data:v,error:y}=await d.from(`products`).select(`id, title, price, prices, sale_price, sale_prices, sale_start_at, sale_end_at, scheduled_price, scheduled_prices, scheduled_price_at`).in(`id`,_);if(y||!v)return console.error(`Error fetching products for validation:`,y),{error:`Failed to validate product prices`,url:null};let b=new Map(v.map(e=>[e.id,e])),x=[],S=0,C=[];for(let t of a){let n=b.get(t.product_id);if(!n){console.warn(`Product ${t.product_id} not found in DB, skipping.`);continue}let r=e.resolveEffectivePriceForCurrency({prices:n.prices||{},salePrices:n.sale_prices||{},fallbackPrice:n.price,fallbackSalePrice:n.sale_price,saleStartAt:n.sale_start_at,saleEndAt:n.sale_end_at,scheduledPrice:n.scheduled_price,scheduledPrices:n.scheduled_prices||{},scheduledPriceAt:n.scheduled_price_at,currencyCode:g.code,currencies:m}),i=r.sale_price??r.price;i<=0&&console.warn(`[Checkout Session Warning] Product ${n.title} has zero or negative price!`),x.push({price_data:{currency:g.code.toLowerCase(),product_data:{name:n.title,images:[],metadata:{productId:n.id}},unit_amount:i},quantity:t.quantity}),S+=i*t.quantity,C.push({product_id:n.id,quantity:t.quantity,price_at_purchase:i})}if(x.length===0)return{error:`No valid items in cart`,url:null};let{data:w,error:T}=await d.from(`orders`).insert({total:S,user_id:o,currency:g.code,exchange_rate_at_purchase:g.exchange_rate}).select(`id`).single();if(T||!w)return console.error(`Failed to create pending order:`,T),console.error(`Order Data attempted:`,{status:`pending`,total:S}),{error:`Failed to initiate order: ${T?.message||`Unknown error`}`,url:null};let E=C.map(e=>({order_id:w.id,product_id:e.product_id,quantity:e.quantity,price_at_purchase:e.price_at_purchase})),{error:D}=await d.from(`order_items`).insert(E);D&&console.error(`Failed to insert order items:`,D);let O=[],k=s;if(!k&&o){let{data:e}=await d.from(`user_addresses`).select(`country_code, state_code, postal_code`).eq(`user_id`,o).eq(`address_type`,`shipping`).limit(1).single();e&&(k={country:e.country_code,state:e.state_code,postal_code:e.postal_code})}k&&(O=(await t.resolveShippingOptions(S,k,null,g.code)).map(e=>({shipping_rate_data:{type:`fixed_amount`,fixed_amount:{amount:e.amount,currency:e.currency.toLowerCase()},display_name:e.name}})));try{let e=await(await n.getStripeClient()).checkout.sessions.create({mode:`payment`,success_url:`${f}/checkout/success?session_id={CHECKOUT_SESSION_ID}`,cancel_url:`${f}/`,line_items:x,billing_address_collection:`required`,shipping_address_collection:{allowed_countries:`US.CA.GB.AU.NZ.IE.FR.DE.IT.ES.MX.BR.AR.CL.CO.PE.ZA.NG.KE.IN.JP.KR.CN.SG.MY.PH.TH.VN.ID.AE.SA.EG.MA.DZ.TN.PT.NL.BE.CH.AT.SE.NO.DK.FI.PL.CZ.HU.RO.BG.GR.TR.IL.CY.MT`.split(`.`)},shipping_options:O.length>0?O:void 0,metadata:{orderId:w.id}});return await d.from(`orders`).update({stripe_session_id:e.id}).eq(`id`,w.id),{url:e.url}}catch(e){return console.error(`Stripe session creation failed:`,e),{error:e.message,url:null}}};exports.createCheckoutSession=a;
@@ -3,7 +3,7 @@ import { resolveShippingOptions as n } from "../shipping/resolver.es.js";
3
3
  import { getStripeClient as r } from "./client.es.js";
4
4
  import { verifyPackageOnline as i } from "@nextblock-cms/db/server";
5
5
  import { createClient as a } from "@supabase/supabase-js";
6
- //#region libs/ecommerce/src/lib/stripe/checkout.ts
6
+ //#region src/lib/stripe/checkout.ts
7
7
  var o = async (o, s, c, l) => {
8
8
  let u = process.env.NEXT_PUBLIC_SUPABASE_URL || process.env.SUPABASE_URL, d = process.env.SUPABASE_SERVICE_ROLE_KEY || process.env.SUPABASE_SECRET_KEY;
9
9
  if (!u || !d) return console.error("Missing Supabase credentials for checkout (Service Key required)."), {
@@ -0,0 +1 @@
1
+ const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../payment-config.cjs");let n=require("stripe");n=e.__toESM(n,1);var r=null,i=null,a=class extends Error{constructor(){super(`Stripe is not configured: no secret key found in CMS → Payments or STRIPE_SECRET_KEY.`),this.name=`StripeNotConfiguredError`}};async function o(){let e=await t.resolveStripeSecretKey();if(!e)throw new a;return r&&i===e?r:(r=new n.default(e,{typescript:!0}),i=e,r)}exports.StripeNotConfiguredError=a,exports.getStripeClient=o;
@@ -1,6 +1,6 @@
1
1
  import { resolveStripeSecretKey as e } from "../payment-config.es.js";
2
2
  import t from "stripe";
3
- //#region libs/ecommerce/src/lib/stripe/client.ts
3
+ //#region src/lib/stripe/client.ts
4
4
  var n = null, r = null, i = class extends Error {
5
5
  constructor() {
6
6
  super("Stripe is not configured: no secret key found in CMS → Payments or STRIPE_SECRET_KEY."), this.name = "StripeNotConfiguredError";
@@ -0,0 +1 @@
1
+ const e=require("../customer.cjs"),t=require("../customer-addresses.cjs"),n=require("../order-tax-details.cjs"),r=require("./client.cjs"),i=require("../order-inventory.cjs"),a=require("../invoice-server.cjs");let o=require("@supabase/supabase-js");var s=[`total_details.breakdown`],c=[`data.taxes.rate`];function l(){let e=process.env.NEXT_PUBLIC_SUPABASE_URL||process.env.SUPABASE_URL,t=process.env.SUPABASE_SERVICE_ROLE_KEY||process.env.SUPABASE_SECRET_KEY;if(!e||!t)throw Error(`Missing Supabase Service Role environment variables`);return(0,o.createClient)(e,t,{auth:{autoRefreshToken:!1,persistSession:!1}})}function u(t,n){return t?e.normalizeCustomerAddress({recipient_name:n,line1:t.line1??null,line2:t.line2??null,city:t.city??null,state:t.state??null,postal_code:t.postal_code??null,country_code:t.country??null}):null}function d(t){let n=t??{};return e.normalizeOrderCustomerDetails({email:typeof n.email==`string`?n.email:null,name:typeof n.name==`string`?n.name:null,phone:typeof n.phone==`string`?n.phone:null,billing:n.billing??null,shipping:n.shipping??null})}async function f(o){let f=l(),p=await r.getStripeClient(),m=o;try{m=await p.checkout.sessions.retrieve(o.id,{expand:[...s]})}catch(e){console.error(`[Stripe Sync] Failed to rehydrate session tax details:`,e)}let h=m.metadata?.orderId,g=f.from(`orders`).select(`id, user_id, status, total, currency, subtotal, shipping_total, tax_total, tax_details, customer_details`).eq(`stripe_session_id`,o.id).maybeSingle();h&&(g=f.from(`orders`).select(`id, user_id, status, total, currency, subtotal, shipping_total, tax_total, tax_details, customer_details`).eq(`id`,h).maybeSingle());let{data:_,error:v}=await g;if(v||!_)throw Error(v?.message||`Order lookup failed`);let y=d(_.customer_details),b=n.normalizeOrderTaxDetails(_.tax_details),x=u(m.customer_details?.address,m.customer_details?.name??y.name),S=m.shipping_details,C=m.collected_information?.shipping_details??S??null,w=u(C?.address,C?.name??y.name),T=e.normalizeOrderCustomerDetails({email:m.customer_details?.email??y.email,name:m.customer_details?.name??y.name,phone:m.customer_details?.phone??y.phone,billing:y.billing??x,shipping:y.shipping??w}),E=_.status===`paid`,D=await p.checkout.sessions.listLineItems(m.id,{limit:100,expand:[...c]}),O=n.buildOrderTaxDetailsFromStripeSession({session:m,lineItems:D.data,subtotal:typeof _.subtotal==`number`?_.subtotal:b?.subtotal??0,shippingTotal:typeof _.shipping_total==`number`?_.shipping_total:b?.shipping_total??0,fallbackMode:b?.mode??`automatic`,currency:(m.currency??_.currency??b?.currency??`USD`).toUpperCase()}),k=O.tax_total>0||O.lines.length>0?O:b??O,A=k?.tax_total??(typeof _.tax_total==`number`?_.tax_total:0),j=(m.currency??_.currency??k?.currency??`USD`).toUpperCase(),M={status:`paid`,stripe_session_id:m.id,payment_intent_id:typeof m.payment_intent==`string`?m.payment_intent:null,provider:`stripe`,customer_details:T,total:typeof m.amount_total==`number`?m.amount_total:_.total,currency:j,tax_total:A,tax_details:k},{error:N}=await f.from(`orders`).update(M).eq(`id`,_.id);if(N)throw Error(N.message);if(_.user_id)try{await t.upsertDefaultUserAddresses({userId:_.user_id,billingAddress:T.billing,shippingAddress:T.shipping,client:f})}catch(e){console.error(`[Stripe Sync] Failed to refresh saved customer addresses:`,e)}let P=await a.assignInvoiceMetadata({orderId:_.id,client:f});return await i.applyOrderInventoryDeduction(f,_.id),{orderId:_.id,alreadyPaid:E,customerDetails:T,order:{id:_.id,invoice_number:P.invoiceNumber,paid_at:P.paidAt,total:M.total,currency:j,subtotal:typeof _.subtotal==`number`?_.subtotal:k?.subtotal??0,shipping_total:typeof _.shipping_total==`number`?_.shipping_total:k?.shipping_total??0,tax_total:A,tax_details:k}}}exports.syncStripeOrderFromSession=f;
@@ -5,7 +5,7 @@ import { getStripeClient as a } from "./client.es.js";
5
5
  import { applyOrderInventoryDeduction as o } from "../order-inventory.es.js";
6
6
  import { assignInvoiceMetadata as s } from "../invoice-server.es.js";
7
7
  import { createClient as c } from "@supabase/supabase-js";
8
- //#region libs/ecommerce/src/lib/stripe/order-sync.ts
8
+ //#region src/lib/stripe/order-sync.ts
9
9
  var l = ["total_details.breakdown"], u = ["data.taxes.rate"];
10
10
  function d() {
11
11
  let e = process.env.NEXT_PUBLIC_SUPABASE_URL || process.env.SUPABASE_URL, t = process.env.SUPABASE_SERVICE_ROLE_KEY || process.env.SUPABASE_SECRET_KEY;
@@ -0,0 +1 @@
1
+ const e=require("../payment-config.cjs"),t=require("./client.cjs"),n=require("./order-sync.cjs");var r=async(r,i)=>{let a=await e.resolveStripeWebhookSecret();if(!a)return console.error(`Missing Stripe webhook secret (configure it in CMS or STRIPE_WEBHOOK_SECRET)`),{received:!1,error:`Server configuration error`};let o=await t.getStripeClient(),s;try{s=o.webhooks.constructEvent(i,r,a)}catch(e){return console.error(`Webhook signature verification failed: ${e.message}`),{received:!1,error:`Webhook Error: ${e.message}`}}switch(s.type){case`checkout.session.completed`:{let e=s.data.object;try{await n.syncStripeOrderFromSession(e)}catch(e){return console.error(`[Stripe Webhook Error] Failed to sync completed session:`,e),{received:!1,error:e.message||`Failed to sync Stripe session`}}break}default:console.log(`Unhandled event type ${s.type}`)}return{received:!0}};exports.handleStripeWebhook=r;
@@ -1,7 +1,7 @@
1
1
  import { resolveStripeWebhookSecret as e } from "../payment-config.es.js";
2
2
  import { getStripeClient as t } from "./client.es.js";
3
3
  import { syncStripeOrderFromSession as n } from "./order-sync.es.js";
4
- //#region libs/ecommerce/src/lib/stripe/webhooks.ts
4
+ //#region src/lib/stripe/webhooks.ts
5
5
  var r = async (r, i) => {
6
6
  let a = await e();
7
7
  if (!a) return console.error("Missing Stripe webhook secret (configure it in CMS or STRIPE_WEBHOOK_SECRET)"), {
@@ -0,0 +1 @@
1
+ const e=require("./currency.cjs"),t=require("./coupons.cjs"),n=require("./countries.cjs"),r=require("./states.cjs"),i=require("./inventory-settings.cjs");var a=`txcd_99999999`,o=`txcd_00000000`,s=`txcd_92010001`;function c(e){return e?a:o}async function l(n,r,i,a,o){if(!r.length)return[];let s=[...new Set(r.map(e=>e.product_id))],{data:c,error:l}=await n.from(`products`).select(`id, is_taxable`).in(`id`,s);if(l)throw Error(l.message);let u=new Map((c||[]).map(e=>[e.id,e]));return r.reduce((n,r)=>{let s=u.get(r.product_id);if(!s)return n;let c=e.resolveEffectivePriceForCurrency({prices:r.prices,salePrices:r.sale_prices,fallbackPrice:r.price,fallbackSalePrice:r.sale_price,saleStartAt:r.sale_start_at,saleEndAt:r.sale_end_at,scheduledPrice:r.scheduled_price,scheduledPrices:r.scheduled_prices,scheduledPriceAt:r.scheduled_price_at,currencyCode:i,currencies:a});return n.push({product_id:s.id,quantity:r.quantity,unit_amount:c.sale_price??c.price,discount_amount:o?.get(t.getCartLineCouponKey(r))??0,is_taxable:s.is_taxable??!0}),n},[])}async function u(e,t){let a=await i.getEcommerceInventorySettings(e),o=t.items.reduce((e,t)=>t.is_taxable?e+Math.max(0,t.unit_amount*t.quantity-(t.discount_amount??0)):e,0);if(!a.enableTaxes||o<=0)return{enabled:!1,mode:a.taxCalculationMode,amount:0,taxableSubtotal:o,lines:[]};if(a.taxCalculationMode===`automatic`)return{enabled:!0,mode:`automatic`,amount:0,taxableSubtotal:o,lines:[],isPendingExternalCalculation:!0};let s=n.normalizeCountryCode(t.destination?.country_code),c=r.normalizeSubdivisionCode(s,t.destination?.state)||null;if(!s)return{enabled:!0,mode:`manual`,amount:0,taxableSubtotal:o,lines:[]};let l=e.from(`tax_rates`).select(`id, country_code, state_code, tax_name, tax_rate, created_at, updated_at`).eq(`country_code`,s);l=c?l.or(`state_code.is.null,state_code.eq.${c}`):l.is(`state_code`,null);let{data:u,error:d}=await l;if(d)throw Error(d.message);let f=(u||[]).map(e=>({id:e.id,name:e.tax_name,rate:Number(e.tax_rate),amount:Math.round(o*Number(e.tax_rate)/100),country_code:e.country_code,state_code:e.state_code??null}));return{enabled:!0,mode:`manual`,amount:f.reduce((e,t)=>e+t.amount,0),taxableSubtotal:o,lines:f}}exports.STRIPE_TAX_CODE_NONTAXABLE=o,exports.STRIPE_TAX_CODE_SHIPPING=s,exports.STRIPE_TAX_CODE_TAXABLE_GOODS=a,exports.buildCheckoutTaxableItemsFromCart=l,exports.calculateCheckoutTaxes=u,exports.getStripeTaxCodeForProduct=c;
@@ -3,7 +3,7 @@ import { getCartLineCouponKey as t } from "./coupons.es.js";
3
3
  import { normalizeCountryCode as n } from "./countries.es.js";
4
4
  import { normalizeSubdivisionCode as r } from "./states.es.js";
5
5
  import { getEcommerceInventorySettings as i } from "./inventory-settings.es.js";
6
- //#region libs/ecommerce/src/lib/tax-calculation.ts
6
+ //#region src/lib/tax-calculation.ts
7
7
  var a = "txcd_99999999", o = "txcd_00000000", s = "txcd_92010001";
8
8
  function c(e) {
9
9
  return e ? a : o;
package/lib/trials.es.js CHANGED
@@ -1,4 +1,4 @@
1
- //#region libs/ecommerce/src/lib/trials.ts
1
+ //#region src/lib/trials.ts
2
2
  function e(e) {
3
3
  let t = Number(e?.trial_period_days ?? 0);
4
4
  return !Number.isFinite(t) || t <= 0 ? 0 : Math.round(t);
package/lib/types.es.js CHANGED
@@ -1,4 +1,4 @@
1
- //#region libs/ecommerce/src/lib/types.ts
1
+ //#region src/lib/types.ts
2
2
  var e = {
3
3
  stripe: !1,
4
4
  freemius: !1
@@ -0,0 +1 @@
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./cart-store.cjs");let t=require("react");var n=null;function r(){return e.useCartStore.persist}function i(){return r()?.hasHydrated?.()??!1}function a(){if(typeof window>`u`)return Promise.resolve();let e=r();return!e||e.hasHydrated()?Promise.resolve():(n||=Promise.resolve().then(()=>e.rehydrate()).finally(()=>{n=null}),n)}var o=n=>{let o=e.useCartStore(n),[s,c]=(0,t.useState)(!1);return(0,t.useEffect)(()=>{let e=r();if(i()){c(!0);return}let t=e?.onFinishHydration(()=>c(!0));return a(),()=>{t?.()}},[]),s?o:void 0},s=()=>{let[e,n]=(0,t.useState)(!1);return(0,t.useEffect)(()=>{let e=r()?.onFinishHydration(()=>n(!0));return n(i()),i()||a(),()=>{e?.()}},[]),e};exports.useCart=o,exports.useIsCartHydrated=s;
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { useCartStore as e } from "./cart-store.es.js";
3
3
  import { useEffect as t, useState as n } from "react";
4
- //#region libs/ecommerce/src/lib/use-cart.ts
4
+ //#region src/lib/use-cart.ts
5
5
  var r = null;
6
6
  function i() {
7
7
  return e.persist;
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { formatPrice as e, useTranslations as t } from "@nextblock-cms/utils";
3
- //#region libs/ecommerce/src/lib/use-price-formatter.ts
3
+ //#region src/lib/use-price-formatter.ts
4
4
  function n(e) {
5
5
  return e ? e === "fr" ? "fr-CA" : e === "en" ? "en-US" : e : "en-US";
6
6
  }
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./currency.cjs");function t(e){return!e||typeof e!=`object`||Array.isArray(e)?null:Object.entries(e).reduce((e,[t,n])=>(typeof n==`string`&&n.trim()&&(e[t]=n.trim()),e),{})}function n(e,t,n){return!n||!t?e:t[n]?.trim()||e}function r(e,t){return n(e.name,e.name_translations,t)}function i(e,t){return n(e.value,e.value_translations,t)}function a(e){return e?e.startsWith(`http`)?e:process.env.NEXT_PUBLIC_R2_BASE_URL?`${process.env.NEXT_PUBLIC_R2_BASE_URL}/${e}`:process.env.NEXT_PUBLIC_SUPABASE_URL?`${process.env.NEXT_PUBLIC_SUPABASE_URL}/storage/v1/object/public/media/${e}`:e:null}function o(e){return e.toLowerCase().trim().replace(/\s+/g,`-`).replace(/[^a-z0-9-]/g,``).replace(/-+/g,`-`).replace(/^-|-$/g,``)}function s(e){return[...e].sort().join(`__`)}function c(e){return e.map(e=>e.term_value).join(` / `)}function l(e){return e.length===0?[]:e.reduce((e,t)=>e.flatMap(e=>t.map(t=>[...e,t])),[[]])}function u(t){let{baseSku:n,basePrice:r,basePrices:i={},baseSalePrice:a=null,baseSalePrices:u={},selectedAttributes:d,previousVariants:f=[]}=t;if(d.length===0||d.some(e=>e.terms.length===0))return[];let p=new Map(f.map(e=>[e.combination_key,e]));return l(d.map(e=>e.terms.map(t=>({attribute_id:e.attribute_id,attribute_name:e.attribute_name,term:t})))).map(t=>{let l=t.map(({attribute_id:e,attribute_name:t,term:n})=>({attribute_id:e,attribute_name:t,term_id:n.id,term_value:n.value,term_slug:n.slug})),d=l.map(e=>e.term_id),f=s(d),m=p.get(f),h=l.map(e=>(e.term_slug?e.term_slug:o(e.term_value)).toUpperCase()).filter(Boolean).join(`-`);return{id:m?.id,combination_key:f,sku:m?.sku||[n.trim(),h].filter(Boolean).join(`-`),upc:m?.upc??null,price:m?.price??r,prices:m?.prices??e.normalizePriceMap(i),sale_price:m?.sale_price??a,sale_prices:m?.sale_prices??e.normalizeSalePriceMap(u),sale_start_at:m?.sale_start_at??null,sale_end_at:m?.sale_end_at??null,stock_quantity:m?.stock_quantity??0,main_media_id:m?.main_media_id??null,main_image_url:m?.main_image_url??null,attribute_term_ids:d,selected_options:l,label:c(l)}})}function d(e){let t={};for(let n of e)for(let e of n.selected_options??[]){let n=new Set(t[e.attribute_id]??[]);n.add(e.term_id),t[e.attribute_id]=[...n]}return t}function f(e,t){let n=Object.values(t).filter(Boolean);return n.length===0?null:e.find(e=>e.attribute_term_ids.length===n.length&&n.every(t=>e.attribute_term_ids.includes(t)))??null}function p(e,t,n){let r=new Set;for(let i of e){if(!Object.entries(n).every(([e,n])=>!n||e===t||i.attribute_term_ids.includes(n)))continue;let e=i.selected_options.find(e=>e.attribute_id===t);e&&r.add(e.term_id)}return r}function m(e,t){let n=t.find(e=>e.stock_quantity>0)??t[0]??null;return n?n.selected_options.reduce((e,t)=>(e[t.attribute_id]=t.term_id,e),{}):e.reduce((e,t)=>{let n=t.terms[0];return n&&(e[t.id]=n.id),e},{})}function h(e,t,n,r,i){let a={[r]:i};for(let i of e){if(i.id===r)continue;let e=p(t,i.id,a),o=n[i.id];if(o&&e.has(o)){a[i.id]=o;continue}let s=i.terms.find(t=>e.has(t.id));s&&(a[i.id]=s.id)}return a}function g(e,t,n){let r={...n};for(let n of e){let e=p(t,n.id,r);if(e.size===0){delete r[n.id];continue}let i=r[n.id];if(i&&e.has(i))continue;let a=n.terms.find(t=>e.has(t.id));a&&(r[n.id]=a.id)}return r}function _(r=[],i){let o=new Map,l=r.map(r=>{let l=(r.variant_attribute_mapping||[]).map(e=>{let r=e.product_attribute_terms,a=r?.product_attributes;if(!r||!a)return null;let s=o.get(a.id)||{id:a.id,name:n(a.name,t(a.name_translations),i),slug:a.slug,name_translations:t(a.name_translations),terms:[],_termIds:new Set};return s._termIds.has(r.id)||(s.terms.push({id:r.id,attribute_id:r.attribute_id,value:n(r.value,t(r.value_translations),i),slug:r.slug,sort_order:r.sort_order??null,value_translations:t(r.value_translations)}),s._termIds.add(r.id)),o.set(a.id,s),{attribute_id:a.id,attribute_name:n(a.name,t(a.name_translations),i),term_id:r.id,term_value:n(r.value,t(r.value_translations),i),term_slug:r.slug}}).filter(e=>e!==null).sort((e,t)=>e.attribute_name.localeCompare(t.attribute_name)),u=l.map(e=>e.term_id);return{id:r.id,combination_key:s(u),sku:r.sku,upc:r.upc??null,price:r.price??0,prices:e.normalizePriceMap(r.prices),sale_price:r.sale_price??null,sale_prices:e.normalizeSalePriceMap(r.sale_prices),sale_start_at:r.sale_start_at??null,sale_end_at:r.sale_end_at??null,scheduled_price:r.scheduled_price??null,scheduled_prices:e.normalizePriceMap(r.scheduled_prices),scheduled_price_at:r.scheduled_price_at??null,stock_quantity:r.stock_quantity??0,main_media_id:r.main_media_id??null,image_url:a(r.media?.file_path??r.media?.object_key??null),attribute_term_ids:u,selected_options:l,label:c(l)}});return{attributes:[...o.values()].map(e=>({id:e.id,name:e.name,slug:e.slug,name_translations:e.name_translations,terms:[...e.terms].sort((e,t)=>{let n=e.sort_order??2**53-1,r=t.sort_order??2**53-1;return n===r?e.value.localeCompare(t.value):n-r})})).sort((e,t)=>e.name.localeCompare(t.name)),variants:l}}function v(t,n){if(!t.length)return null;let r=t.map(t=>e.isSaleWindowActive({saleStartAt:t.sale_start_at,saleEndAt:t.sale_end_at,now:n})&&typeof t.sale_price==`number`?t.sale_price:t.price);return{min:Math.min(...r),max:Math.max(...r)}}exports.applyVariantSelection=h,exports.buildCombinationKey=s,exports.buildVariantLabel=c,exports.chooseInitialVariantSelections=m,exports.extractSelectedTermsByAttribute=d,exports.findMatchingVariant=f,exports.generateVariantDrafts=u,exports.getAvailableTermIdsForAttribute=p,exports.getVariantEffectivePriceRange=v,exports.mapRawVariantRelations=_,exports.normalizeSelectionsToAvailableVariants=g,exports.resolveAttributeName=r,exports.resolveTermValue=i,exports.resolveTranslatedText=n;
@@ -1,5 +1,5 @@
1
1
  import { isSaleWindowActive as e, normalizePriceMap as t, normalizeSalePriceMap as n } from "./currency.es.js";
2
- //#region libs/ecommerce/src/lib/variation-utils.ts
2
+ //#region src/lib/variation-utils.ts
3
3
  function r(e) {
4
4
  return !e || typeof e != "object" || Array.isArray(e) ? null : Object.entries(e).reduce((e, [t, n]) => (typeof n == "string" && n.trim() && (e[t] = n.trim()), e), {});
5
5
  }
@@ -1,5 +1,5 @@
1
1
  import { z as e } from "zod";
2
- //#region libs/ecommerce/src/lib/zod-config.ts
2
+ //#region src/lib/zod-config.ts
3
3
  e.config({ jitless: !0 });
4
4
  //#endregion
5
5
  export { e as z };
package/package.json CHANGED
@@ -1,19 +1,20 @@
1
1
  {
2
2
  "name": "@nextblock-cms/ecom",
3
- "version": "0.21.0",
3
+ "version": "0.21.1",
4
4
  "license": "AGPL-3.0-or-later",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
8
8
  "repository": {
9
9
  "type": "git",
10
- "url": "git+https://github.com/nextblock-cms/packages.git"
10
+ "url": "git+https://github.com/nextblock-cms/nextblock.git",
11
+ "directory": "libs/ecommerce"
11
12
  },
12
13
  "type": "module",
13
14
  "dependencies": {
14
- "@nextblock-cms/db": "^0.21.0",
15
- "@nextblock-cms/ui": "^0.21.0",
16
- "@nextblock-cms/utils": "^0.21.0",
15
+ "@nextblock-cms/db": "^0.21.1",
16
+ "@nextblock-cms/ui": "^0.21.1",
17
+ "@nextblock-cms/utils": "^0.21.1",
17
18
  "@freemius/checkout": "^1.5.1",
18
19
  "@freemius/sdk": "^0.5.0",
19
20
  "@hookform/resolvers": "^5.9.1",
@@ -33,25 +34,25 @@
33
34
  "react": "^19.2.5",
34
35
  "react-dom": "^19.2.5"
35
36
  },
36
- "main": "./index.cjs.js",
37
+ "main": "./index.cjs",
37
38
  "module": "./index.es.js",
38
39
  "types": "./index.d.ts",
39
40
  "exports": {
40
41
  ".": {
41
42
  "types": "./index.d.ts",
42
43
  "import": "./index.es.js",
43
- "require": "./index.cjs.js"
44
+ "require": "./index.cjs"
44
45
  },
45
46
  "./server": {
46
47
  "types": "./server.d.ts",
47
48
  "import": "./server.es.js",
48
- "require": "./server.cjs.js"
49
+ "require": "./server.cjs"
49
50
  },
50
51
  "./package.json": "./package.json",
51
52
  "./*": {
52
53
  "types": "./lib/*.d.ts",
53
54
  "import": "./lib/*.es.js",
54
- "require": "./lib/*.cjs.js"
55
+ "require": "./lib/*.cjs"
55
56
  }
56
57
  }
57
58
  }
package/server.cjs ADDED
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./lib/currency.cjs"),t=require("./lib/currency-constants.cjs"),n=require("./lib/coupon-server.cjs"),r=require("./lib/customer.cjs"),i=require("./lib/customer-addresses.cjs"),a=require("./lib/product-actions.cjs"),o=require("./lib/payment-config.cjs"),s=require("./lib/providers/freemius.cjs"),c=require("./lib/pages/cms/products/actions.cjs"),l=require("./lib/invoice.cjs"),u=require("./lib/order-tax-details.cjs"),d=require("./lib/product-schema.cjs"),f=require("./lib/freemius-coupons.cjs"),p=require("./lib/pages/cms/products/server-actions.cjs"),m=require("./lib/stripe/client.cjs"),h=require("./lib/stripe/checkout.cjs"),g=require("./lib/order-inventory.cjs"),_=require("./lib/invoice-server.cjs"),v=require("./lib/stripe/order-sync.cjs"),y=require("./lib/stripe/webhooks.cjs"),b=require("./lib/freemius-license.cjs"),x=require("./lib/customer-orders.cjs"),S=require("./lib/freemius-license-claim.cjs"),C=require("./lib/freemius-trial-provision.cjs"),w=require("./lib/currency-sync.cjs"),T=require("./lib/providers/stripe.cjs"),E=require("./lib/factory.cjs"),D=require("./lib/freemius-order-sync.cjs"),O=require("./lib/pages/cms/payments/queries.cjs"),k=require("./lib/pages/cms/orders/actions.cjs"),A=require("./lib/pages/cms/orders/export-actions.cjs"),j=require("./lib/pages/cms/orders/ExportReportsDialog.cjs"),M=require("./lib/pages/cms/orders/OrdersPage.cjs"),N=require("./lib/pages/cms/orders/OrderDetailPage.cjs");require("./lib/pages/cms/orders/index.cjs");const P=require("./lib/pages/cms/products/ProductsPage.cjs"),F=require("./lib/pages/cms/products/inventory/InventoryPage.cjs"),I=require("./lib/pages/cms/products/attributes/AttributeManagementPage.cjs"),L=require("./lib/pages/cms/products/new/NewProductPage.cjs"),R=require("./lib/pages/cms/products/[id]/edit/EditProductPage.cjs"),z=require("./lib/pages/cms/products/components/CopyProductFromLanguage.cjs"),B=require("./lib/pages/cms/products/categories/CategoryManagementPage.cjs");require("./lib/pages/cms/products/index.cjs");const V=require("./lib/pages/cms/payments/actions.cjs"),H=require("./lib/pages/cms/payments/PaymentsPage.cjs");require("./lib/pages/cms/payments/index.cjs");const U=require("./lib/pages/cms/shipping/server-actions.cjs"),W=require("./lib/pages/cms/shipping/ShippingPage.cjs");require("./lib/pages/cms/shipping/index.cjs");const G=require("./lib/pages/cms/taxes/actions.cjs"),K=require("./lib/pages/cms/taxes/TaxesPage.cjs");require("./lib/pages/cms/taxes/index.cjs");const q=require("./lib/pages/cms/coupons/CouponsPage.cjs"),J=require("./lib/pages/cms/coupons/EditCouponPage.cjs");require("./lib/pages/cms/coupons/index.cjs"),exports.AttributeManagementPage=I.AttributeManagementPage,exports.CURRENCY_COOKIE_NAME=t.CURRENCY_COOKIE_NAME,exports.CURRENCY_ROUNDING_MODES=e.CURRENCY_ROUNDING_MODES,exports.CategoryManagementPage=B.CategoryManagementPage,exports.CopyProductFromLanguage=z.CopyProductFromLanguage,exports.CouponsPage=q.CouponsPage,exports.DEFAULT_INVOICE_SETTINGS=l.DEFAULT_INVOICE_SETTINGS,exports.EditCouponPage=J.EditCouponPage,exports.EditProductPage=R.EditProductPage,exports.ExportReportsDialog=j.ExportReportsDialog,exports.FREEMIUS_LICENSE_CLAIM_MAX_AGE_MINUTES=S.FREEMIUS_LICENSE_CLAIM_MAX_AGE_MINUTES,exports.FREEMIUS_LICENSE_CLAIM_REFUSED_MESSAGE=S.FREEMIUS_LICENSE_CLAIM_REFUSED_MESSAGE,exports.FREEMIUS_TRIAL_ALREADY_USED_MESSAGE=C.FREEMIUS_TRIAL_ALREADY_USED_MESSAGE,exports.FREEMIUS_TRIAL_PROVISION_FAILED_MESSAGE=C.FREEMIUS_TRIAL_PROVISION_FAILED_MESSAGE,exports.FreemiusProvider=s.FreemiusProvider,exports.INVOICE_SETTINGS_KEY=l.INVOICE_SETTINGS_KEY,exports.InventoryPage=F.InventoryPage,exports.NewProductPage=L.NewProductPage,exports.OrderDetailPage=N.OrderDetailPage,exports.OrdersPage=M.OrdersPage,exports.PaymentsPage=H.PaymentsPage,exports.ProductsPage=P.ProductsPage,exports.ShippingPage=W.ShippingPage,exports.StripeNotConfiguredError=m.StripeNotConfiguredError,exports.StripeProvider=T.StripeProvider,exports.TaxesPage=K.TaxesPage,exports.addressesMatch=r.addressesMatch,exports.aggregateOrderTaxLines=u.aggregateOrderTaxLines,exports.applyCurrencyRounding=e.applyCurrencyRounding,exports.applyOrderInventoryDeduction=g.applyOrderInventoryDeduction,exports.assignInvoiceMetadata=_.assignInvoiceMetadata,exports.buildOrderTaxDetailsFromCalculation=u.buildOrderTaxDetailsFromCalculation,exports.buildOrderTaxDetailsFromStripeSession=u.buildOrderTaxDetailsFromStripeSession,exports.claimFreemiusLicenseKey=S.claimFreemiusLicenseKey,exports.clearAutoSyncedCurrencyPriceOverrides=w.clearAutoSyncedCurrencyPriceOverrides,exports.clearPaymentConfigCache=o.clearPaymentConfigCache,exports.computeTrialExpiry=C.computeTrialExpiry,exports.convertMinorUnitAmount=e.convertMinorUnitAmount,exports.copyProductFromLanguage=a.copyProductFromLanguage,exports.createCategoryAction=p.createCategoryAction,exports.createCheckoutSession=h.createCheckoutSession,exports.createProduct=a.createProduct,exports.createProductAction=p.createProductAction,exports.createShippingRate=U.createShippingRate,exports.createShippingZone=U.createShippingZone,exports.deleteCategoryAction=p.deleteCategoryAction,exports.deleteCouponFromFreemius=f.deleteCouponFromFreemius,exports.deleteProduct=a.deleteProduct,exports.deleteProductAction=p.deleteProductAction,exports.deleteShippingRate=U.deleteShippingRate,exports.deleteShippingZone=U.deleteShippingZone,exports.deleteTaxRateAction=G.deleteTaxRateAction,exports.describeCurrencyRoundingRule=e.describeCurrencyRoundingRule,exports.emptyCustomerAddress=r.emptyCustomerAddress,exports.evaluateFreemiusLicenseClaim=S.evaluateFreemiusLicenseClaim,exports.evaluateTrialEligibility=C.evaluateTrialEligibility,exports.extractFreemiusCheckoutMetadata=D.extractFreemiusCheckoutMetadata,exports.fetchOrderReportData=A.fetchOrderReportData,exports.fetchTranslatedProductsForCartInternal=a.fetchTranslatedProductsForCartInternal,exports.fillMissingUserProfileCheckoutDetails=i.fillMissingUserProfileCheckoutDetails,exports.formatFreemiusTimestamp=C.formatFreemiusTimestamp,exports.formatInvoiceCurrency=l.formatInvoiceCurrency,exports.formatInvoiceDate=l.formatInvoiceDate,exports.getCategoriesWithCount=c.getCategoriesWithCount,exports.getCategoryBySlug=c.getCategoryBySlug,exports.getCmsProduct=c.getProduct,exports.getCmsProducts=c.getProducts,exports.getCouponQuote=n.getCouponQuote,exports.getCurrencyLookup=e.getCurrencyLookup,exports.getCurrentCustomerOrder=x.getCurrentCustomerOrder,exports.getCurrentCustomerOrderInvoice=x.getCurrentCustomerOrderInvoice,exports.getCurrentCustomerOrders=x.getCurrentCustomerOrders,exports.getDefaultCurrency=e.getDefaultCurrency,exports.getDefaultUserAddresses=i.getDefaultUserAddresses,exports.getEnabledPaymentProviders=O.getEnabledPaymentProviders,exports.getExchangeRateForCurrency=e.getExchangeRateForCurrency,exports.getFreemiusOrderLicense=b.getFreemiusOrderLicense,exports.getFreemiusWebhookSecretCandidates=D.getFreemiusWebhookSecretCandidates,exports.getGlobalProductAttributes=c.getGlobalProductAttributes,exports.getInvoiceAddressLines=l.getInvoiceAddressLines,exports.getInvoiceBrandingData=_.getInvoiceBrandingData,exports.getInvoiceOrder=_.getInvoiceOrder,exports.getInvoicePresentationData=_.getInvoicePresentationData,exports.getOrderDetails=k.getOrderDetails,exports.getOrderTaxRateJurisdiction=u.getOrderTaxRateJurisdiction,exports.getOrderTaxRateLabel=u.getOrderTaxRateLabel,exports.getOrderTaxRatePercentage=u.getOrderTaxRatePercentage,exports.getOrders=k.getOrders,exports.getPaymentConfigStatus=o.getPaymentConfigStatus,exports.getPaymentCredentialsView=o.getPaymentCredentialsView,exports.getPaymentProvider=E.getPaymentProvider,exports.getPaymentSettings=O.getPaymentSettings,exports.getProduct=a.getProduct,exports.getProductBySlug=a.getProductBySlug,exports.getProductCategories=c.getProductCategories,exports.getProductTranslations=c.getProductTranslations,exports.getProducts=a.getProducts,exports.getProviderReadiness=O.getProviderReadiness,exports.getQuoteLineDiscountMap=n.getQuoteLineDiscountMap,exports.getReadinessForProductType=O.getReadinessForProductType,exports.getStoreConfigStatus=O.getStoreConfigStatus,exports.getStoreReadiness=O.getStoreReadiness,exports.getStripeClient=m.getStripeClient,exports.handleStripeWebhook=y.handleStripeWebhook,exports.hydrateFreemiusEnvFromDb=o.hydrateFreemiusEnvFromDb,exports.inferCurrencyCodeFromLocale=e.inferCurrencyCodeFromLocale,exports.isCustomerAddressComplete=r.isCustomerAddressComplete,exports.isSaleWindowActive=e.isSaleWindowActive,exports.isScheduledPriceDue=e.isScheduledPriceDue,exports.normalizeCurrencyRecord=e.normalizeCurrencyRecord,exports.normalizeCurrencyRoundingMode=e.normalizeCurrencyRoundingMode,exports.normalizeCustomerAddress=r.normalizeCustomerAddress,exports.normalizeInvoiceSettings=l.normalizeInvoiceSettings,exports.normalizeOrderCustomerDetails=r.normalizeOrderCustomerDetails,exports.normalizeOrderTaxDetails=u.normalizeOrderTaxDetails,exports.normalizePriceMap=e.normalizePriceMap,exports.normalizeSalePriceMap=e.normalizeSalePriceMap,exports.parseFreemiusCheckoutCredentialsMap=s.parseFreemiusCheckoutCredentialsMap,exports.parseFreemiusTimestamp=S.parseFreemiusTimestamp,exports.pickTrialPricing=C.pickTrialPricing,exports.productSchema=d.productSchema,exports.provisionFreemiusTrialLicense=C.provisionFreemiusTrialLicense,exports.publishProductAction=p.publishProductAction,exports.readFreemiusEnvValue=s.readFreemiusEnvValue,exports.rebaseStoreCurrencyExchangeRates=w.rebaseStoreCurrencyExchangeRates,exports.recordCouponRedemption=n.recordCouponRedemption,exports.resolveEffectivePriceForCurrency=e.resolveEffectivePriceForCurrency,exports.resolveFreemiusCheckoutCredentials=s.resolveFreemiusCheckoutCredentials,exports.resolveFreemiusStatusFromCheckoutResponse=D.resolveFreemiusStatusFromCheckoutResponse,exports.resolveFreemiusStatusFromWebhookEvent=D.resolveFreemiusStatusFromWebhookEvent,exports.resolvePriceForCurrency=e.resolvePriceForCurrency,exports.resolvePriceRangeForCurrency=e.resolvePriceRangeForCurrency,exports.resolveStripePublishableKey=o.resolveStripePublishableKey,exports.resolveStripeSecretKey=o.resolveStripeSecretKey,exports.resolveStripeWebhookSecret=o.resolveStripeWebhookSecret,exports.savePaymentCredentials=o.savePaymentCredentials,exports.savePaymentProviderCredentials=V.savePaymentProviderCredentials,exports.saveTaxRateAction=G.saveTaxRateAction,exports.serializeInvoiceSettings=l.serializeInvoiceSettings,exports.sortCurrencies=e.sortCurrencies,exports.syncCategoriesForTranslationGroup=a.syncCategoriesForTranslationGroup,exports.syncCouponToFreemius=f.syncCouponToFreemius,exports.syncFreemiusCheckoutOrder=D.syncFreemiusCheckoutOrder,exports.syncFreemiusOrderFromWebhookEvent=D.syncFreemiusOrderFromWebhookEvent,exports.syncFreemiusProductsToSupabase=s.syncFreemiusProductsToSupabase,exports.syncProductCategoriesAction=p.syncProductCategoriesAction,exports.syncProductSaleCouponToFreemius=f.syncProductSaleCouponToFreemius,exports.syncSingleFreemiusProduct=s.syncSingleFreemiusProduct,exports.syncStoreCurrencyRates=w.syncStoreCurrencyRates,exports.syncStripeOrderFromSession=v.syncStripeOrderFromSession,exports.updateCategoryAction=p.updateCategoryAction,exports.updateInventoryTrackingAction=U.updateInventoryTrackingAction,exports.updatePaymentSettings=V.updatePaymentSettings,exports.updateProduct=a.updateProduct,exports.updateProductAction=p.updateProductAction,exports.updateShippingRate=U.updateShippingRate,exports.updateShippingZone=U.updateShippingZone,exports.updateTaxSettingsAction=G.updateTaxSettingsAction,exports.upsertDefaultUserAddresses=i.upsertDefaultUserAddresses,exports.verifyFreemiusWebhookSignature=D.verifyFreemiusWebhookSignature;
package/server.es.js CHANGED
@@ -37,7 +37,7 @@ import { ProductsPage as Ot } from "./lib/pages/cms/products/ProductsPage.es.js"
37
37
  import { InventoryPage as kt } from "./lib/pages/cms/products/inventory/InventoryPage.es.js";
38
38
  import { AttributeManagementPage as At } from "./lib/pages/cms/products/attributes/AttributeManagementPage.es.js";
39
39
  import { NewProductPage as jt } from "./lib/pages/cms/products/new/NewProductPage.es.js";
40
- import { EditProductPage as Mt } from "./lib/pages/cms/products/_id_/edit/EditProductPage.es.js";
40
+ import { EditProductPage as Mt } from "./lib/pages/cms/products/[id]/edit/EditProductPage.es.js";
41
41
  import { CopyProductFromLanguage as Nt } from "./lib/pages/cms/products/components/CopyProductFromLanguage.es.js";
42
42
  import { CategoryManagementPage as Pt } from "./lib/pages/cms/products/categories/CategoryManagementPage.es.js";
43
43
  import "./lib/pages/cms/products/index.es.js";
package/index.cjs.js DELETED
@@ -1 +0,0 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./lib/types.cjs.js"),t=require("./lib/currency.cjs.js"),n=require("./lib/currency-store.cjs.js"),r=require("./lib/CurrencyProvider.cjs.js"),i=require("./lib/cart-store.cjs.js"),a=require("./lib/use-cart.cjs.js"),o=require("./lib/trials.cjs.js"),s=require("./lib/coupons.cjs.js"),c=require("./lib/components/CouponForm.cjs.js"),l=require("./lib/components/CartDrawer.cjs.js"),u=require("./lib/variation-utils.cjs.js"),d=require("./lib/components/Cart.cjs.js"),f=require("./lib/PaymentReadinessProvider.cjs.js"),p=require("./lib/customer.cjs.js"),m=require("./lib/components/Checkout.cjs.js"),h=require("./lib/components/CartIcon.cjs.js"),g=require("./lib/components/CurrencySwitcher.cjs.js"),_=require("./lib/components/AddToCartButton.cjs.js"),v=require("./lib/components/ProductCard.cjs.js"),y=require("./lib/components/ProductGrid.cjs.js"),b=require("./lib/invoice-ui.cjs.js"),x=require("./lib/components/ProductGallery.cjs.js"),S=require("./lib/components/SimpleTiptapRenderer.cjs.js"),C=require("./lib/components/FeaturedProduct.cjs.js"),w=require("./lib/components/AccountNavigationMenu.cjs.js"),T=require("./lib/components/CustomerProfileForm.cjs.js"),E=require("./lib/components/SubscriptionSelector.cjs.js"),D=require("./lib/invoice.cjs.js"),O=require("./lib/order-tax-details.cjs.js"),k=require("./lib/components/InvoiceDocument.cjs.js"),A=require("./lib/components/InvoiceViewerShell.cjs.js"),j=require("./lib/components/FreemiusLicensePanel.cjs.js"),M=require("./lib/product-schema.cjs.js"),N=require("./lib/pages/cms/products/components/ProductCategorySelector.cjs.js"),P=require("./lib/pages/cms/products/components/ProductForm.cjs.js"),F=require("./lib/product-context.cjs.js"),I=require("./lib/components/ProductDetailsLayout.cjs.js");exports.AccountNavigationMenu=w.AccountNavigationMenu,exports.AddToCartButton=_.AddToCartButton,exports.CURRENCY_ROUNDING_MODES=t.CURRENCY_ROUNDING_MODES,exports.Cart=d.Cart,exports.CartDrawer=l.CartDrawer,exports.CartIcon=h.CartIcon,exports.Checkout=m.Checkout,exports.CouponForm=c.CouponForm,exports.CurrencyProvider=r.CurrencyProvider,exports.CurrencySwitcher=g.CurrencySwitcher,exports.CustomerProfileForm=T.CustomerProfileForm,exports.DEFAULT_ENABLED_PAYMENT_PROVIDERS=e.DEFAULT_ENABLED_PAYMENT_PROVIDERS,exports.DEFAULT_INVOICE_SETTINGS=D.DEFAULT_INVOICE_SETTINGS,exports.FeaturedProduct=C.FeaturedProduct,exports.FreemiusLicensePanel=j.FreemiusLicensePanel,exports.INVOICE_SETTINGS_KEY=D.INVOICE_SETTINGS_KEY,exports.InvoiceDocument=k.InvoiceDocument,exports.InvoiceViewerShell=A.InvoiceViewerShell,exports.PaymentReadinessProvider=f.PaymentReadinessProvider,exports.ProductCard=v.ProductCard,exports.ProductCategorySelector=N.ProductCategorySelector,exports.ProductDetailsLayout=I.ProductDetailsLayout,exports.ProductForm=P.ProductForm,exports.ProductGallery=x.ProductGallery,exports.ProductGrid=y.ProductGrid,exports.ProductProvider=F.ProductProvider,exports.SimpleTiptapRenderer=S.SimpleTiptapRenderer,exports.SubscriptionSelector=E.SubscriptionSelector,exports.addressesMatch=p.addressesMatch,exports.aggregateOrderTaxLines=O.aggregateOrderTaxLines,exports.applyCurrencyRounding=t.applyCurrencyRounding,exports.applyVariantSelection=u.applyVariantSelection,exports.buildCombinationKey=u.buildCombinationKey,exports.buildInvoiceDocumentLabels=b.buildInvoiceDocumentLabels,exports.buildOrderTaxDetailsFromCalculation=O.buildOrderTaxDetailsFromCalculation,exports.buildOrderTaxDetailsFromStripeSession=O.buildOrderTaxDetailsFromStripeSession,exports.buildVariantLabel=u.buildVariantLabel,exports.chooseInitialVariantSelections=u.chooseInitialVariantSelections,exports.convertMinorUnitAmount=t.convertMinorUnitAmount,exports.derivePaymentProviderFromProductType=e.derivePaymentProviderFromProductType,exports.describeCurrencyRoundingRule=t.describeCurrencyRoundingRule,exports.emptyCustomerAddress=p.emptyCustomerAddress,exports.emptyProviderDiscounts=s.emptyProviderDiscounts,exports.extractSelectedTermsByAttribute=u.extractSelectedTermsByAttribute,exports.findMatchingVariant=u.findMatchingVariant,exports.formatInvoiceCurrency=D.formatInvoiceCurrency,exports.formatInvoiceDate=D.formatInvoiceDate,exports.generateVariantDrafts=u.generateVariantDrafts,exports.getAvailableTermIdsForAttribute=u.getAvailableTermIdsForAttribute,exports.getCartItemActivePrice=i.getCartItemActivePrice,exports.getCartLineCouponKey=s.getCartLineCouponKey,exports.getCurrencyLookup=t.getCurrencyLookup,exports.getDefaultCurrency=t.getDefaultCurrency,exports.getExchangeRateForCurrency=t.getExchangeRateForCurrency,exports.getInvoiceAddressLines=D.getInvoiceAddressLines,exports.getInvoiceLocale=b.getInvoiceLocale,exports.getOrderTaxRateJurisdiction=O.getOrderTaxRateJurisdiction,exports.getOrderTaxRateLabel=O.getOrderTaxRateLabel,exports.getOrderTaxRatePercentage=O.getOrderTaxRatePercentage,exports.getProductPaymentProvider=e.getProductPaymentProvider,exports.getTrialCheckoutMode=o.getTrialCheckoutMode,exports.getTrialLabel=o.getTrialLabel,exports.getTrialPaymentRequirementLabel=o.getTrialPaymentRequirementLabel,exports.getTrialPeriodDays=o.getTrialPeriodDays,exports.getTrialSummary=o.getTrialSummary,exports.getVariantEffectivePriceRange=u.getVariantEffectivePriceRange,exports.inferCurrencyCodeFromLocale=t.inferCurrencyCodeFromLocale,exports.isCustomerAddressComplete=p.isCustomerAddressComplete,exports.isDigitalItem=e.isDigitalItem,exports.isDigitalProduct=e.isDigitalProduct,exports.isSaleWindowActive=t.isSaleWindowActive,exports.isScheduledPriceDue=t.isScheduledPriceDue,exports.localizeInvoicePresentationData=b.localizeInvoicePresentationData,exports.mapRawVariantRelations=u.mapRawVariantRelations,exports.normalizeCouponCode=s.normalizeCouponCode,exports.normalizeCurrencyRecord=t.normalizeCurrencyRecord,exports.normalizeCurrencyRoundingMode=t.normalizeCurrencyRoundingMode,exports.normalizeCustomerAddress=p.normalizeCustomerAddress,exports.normalizeEnabledPaymentProviders=e.normalizeEnabledPaymentProviders,exports.normalizeInvoiceSettings=D.normalizeInvoiceSettings,exports.normalizeOrderCustomerDetails=p.normalizeOrderCustomerDetails,exports.normalizeOrderTaxDetails=O.normalizeOrderTaxDetails,exports.normalizePriceMap=t.normalizePriceMap,exports.normalizeSalePriceMap=t.normalizeSalePriceMap,exports.normalizeSelectionsToAvailableVariants=u.normalizeSelectionsToAvailableVariants,exports.productSchema=M.productSchema,exports.resolveAttributeName=u.resolveAttributeName,exports.resolveEffectivePriceForCurrency=t.resolveEffectivePriceForCurrency,exports.resolvePriceForCurrency=t.resolvePriceForCurrency,exports.resolvePriceRangeForCurrency=t.resolvePriceRangeForCurrency,exports.resolveTermValue=u.resolveTermValue,exports.resolveTranslatedText=u.resolveTranslatedText,exports.serializeInvoiceSettings=D.serializeInvoiceSettings,exports.sortCurrencies=t.sortCurrencies,exports.toNoCookieEmbedSrc=S.toNoCookieEmbedSrc,exports.translateOrFallback=b.translateOrFallback,exports.translateOrderStatus=b.translateOrderStatus,exports.useCanPurchase=f.useCanPurchase,exports.useCart=a.useCart,exports.useCartStore=i.useCartStore,exports.useCartSubtotal=i.useCartSubtotal,exports.useCartTotalItems=i.useCartTotalItems,exports.useCurrency=r.useCurrency,exports.useCurrencyPreferenceStore=n.useCurrencyPreferenceStore,exports.useIsCartHydrated=a.useIsCartHydrated,exports.usePaymentReadiness=f.usePaymentReadiness,exports.useProduct=F.useProduct;
@@ -1 +0,0 @@
1
- "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./currency.cjs.js"),t=require("./currency-store.cjs.js"),n=require("./currency-constants.cjs.js");let r=require("react"),i=require("@nextblock-cms/utils"),a=require("react/jsx-runtime");var o=(0,r.createContext)(null);function s(t){return e.sortCurrencies(t.filter(e=>e.is_active!==!1))}function c(t){let{currencies:n,storedCurrencyCode:r,hasHydrated:a,initialCurrencyCode:o,locale:s}=t,c=new Set(n.map(e=>(0,i.normalizeCurrencyCode)(e.code))),l=e.getDefaultCurrency(n),u=o?(0,i.normalizeCurrencyCode)(o):null,d=r?(0,i.normalizeCurrencyCode)(r):null;if(a&&d&&c.has(d))return d;if(u&&c.has(u))return u;let f=e.inferCurrencyCodeFromLocale(s,n);return c.has(f)?f:l.code}function l({children:l,initialCurrencies:u,initialCurrencyCode:d,locale:f}){let[p,m]=(0,r.useState)(()=>s(u)),h=t.useCurrencyPreferenceStore(e=>e.activeCurrencyCode),g=t.useCurrencyPreferenceStore(e=>e.hasHydrated),_=t.useCurrencyPreferenceStore(e=>e.setActiveCurrencyCode);(0,r.useEffect)(()=>{t.useCurrencyPreferenceStore.persist.rehydrate()},[]),(0,r.useEffect)(()=>{u.length>0&&m(s(u))},[u]),(0,r.useEffect)(()=>{if(u.length>0)return;async function t(){let{fetchActiveCurrenciesFromRest:t}=await Promise.resolve().then(()=>require("./currency-rest-client.cjs.js")),n=await t();n.length>0&&m(s(n.map(t=>e.normalizeCurrencyRecord(t))))}t()},[u.length]);let v=(0,r.useMemo)(()=>c({currencies:p,storedCurrencyCode:h,hasHydrated:g,initialCurrencyCode:d,locale:f}),[p,h,g,d,f]);(0,r.useEffect)(()=>{g&&v&&h!==v&&_(v)},[g,v,_,h]),(0,r.useEffect)(()=>{v&&typeof document<`u`&&(document.cookie=`${n.CURRENCY_COOKIE_NAME}=${v}; Path=/; Max-Age=31536000; SameSite=Lax`)},[v]);let y=(0,r.useMemo)(()=>e.getDefaultCurrency(p),[p]),b=(0,r.useMemo)(()=>p.find(e=>e.code===v)??y,[p,y,v]),x=(0,r.useMemo)(()=>({currencies:p,defaultCurrency:y,activeCurrency:b,activeCurrencyCode:b.code,isHydrated:g,setActiveCurrencyCode:e=>{let t=(0,i.normalizeCurrencyCode)(e);p.some(e=>e.code===t)&&_(t)}}),[b,p,y,g,_]);return(0,a.jsx)(o.Provider,{value:x,children:l})}function u(){let e=(0,r.useContext)(o);if(!e)throw Error(`useCurrency must be used inside a CurrencyProvider`);return e}exports.CurrencyProvider=l,exports.useCurrency=u;
@@ -1 +0,0 @@
1
- "use client";const e=require("./types.cjs.js");let t=require("react"),n=require("react/jsx-runtime");var r=(0,t.createContext)({stripe:!0,freemius:!0});function i({readiness:e,children:i}){let a=(0,t.useMemo)(()=>({stripe:e?.stripe??!0,freemius:e?.freemius??!0}),[e?.stripe,e?.freemius]);return(0,n.jsx)(r.Provider,{value:a,children:i})}function a(){return(0,t.useContext)(r)}function o(t){return a()[e.getProductPaymentProvider(t)??`stripe`]??!0}exports.PaymentReadinessProvider=i,exports.useCanPurchase=o,exports.usePaymentReadiness=a;
@@ -1 +0,0 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./types.cjs.js"),t=require("./currency.cjs.js"),n=require("./CurrencyProvider.cjs.js");let r=require("zustand"),i=require("zustand/middleware");function a(t,n,r){return t.reduce((t,i)=>e.isDigitalItem(i)||i.sku!==n||r&&i.id===r?t:t+i.quantity,0)}var o=(0,r.create)()((0,i.persist)((t,n)=>({items:[],appliedCoupon:null,isOpen:!1,addItem:r=>{let{items:i}=n(),o=r.quantity??1,s=typeof r.stock==`number`?r.stock:null,c=s===null?0:a(i,r.sku);if(e.isDigitalItem(r))return i.find(t=>t.product_id===r.product_id&&e.isDigitalItem(t))?{success:!1,error:`This software license is already in your cart.`,errorKey:`ecommerce.cart_error_license_in_cart`}:(t({items:[...i,{...r,quantity:1}],isOpen:!0}),{success:!0});let l=i.find(e=>e.id===r.id);return s!==null&&s<=0?{success:!1,error:`This item is out of stock.`,errorKey:`ecommerce.cart_error_out_of_stock`}:s!==null&&c+o>s?{success:!1,error:`Only ${s} available for this SKU.`,errorKey:`ecommerce.cart_error_stock_limit`,errorParams:{count:s}}:(t(l?{items:i.map(e=>e.id===r.id?{...e,...r,quantity:e.quantity+o}:e),isOpen:!0}:{items:[...i,{...r,quantity:o}],isOpen:!0}),{success:!0})},removeItem:e=>{let{items:r}=n();t({items:r.filter(t=>t.id!==e)})},updateQuantity:(r,i)=>{let{items:o}=n(),s=o.find(e=>e.id===r);s&&e.isDigitalItem(s)||(s&&typeof s.stock==`number`&&i+a(o,s.sku,r)>s.stock&&(i=Math.max(s.stock-a(o,s.sku,r),0)),t(i<=0?{items:o.filter(e=>e.id!==r)}:{items:o.map(e=>e.id===r?{...e,quantity:i}:e)}))},setAppliedCoupon:e=>{let r=n().appliedCoupon;(r?.code!==e?.code||r?.couponId!==e?.couponId)&&t({appliedCoupon:e})},removeCoupon:()=>{n().appliedCoupon&&t({appliedCoupon:null})},clearCart:()=>t({items:[],appliedCoupon:null}),toggleCart:()=>t(e=>({isOpen:!e.isOpen})),setIsOpen:e=>t({isOpen:e}),setItems:e=>t({items:e})}),{name:`cart-storage`,storage:(0,i.createJSONStorage)(()=>localStorage),skipHydration:!0,partialize:e=>({items:e.items,appliedCoupon:e.appliedCoupon})})),s=()=>o(e=>e.items).reduce((e,t)=>e+t.quantity,0);function c(e,n){return t.resolveEffectivePriceForCurrency({prices:e.prices,salePrices:e.sale_prices,fallbackPrice:e.price,fallbackSalePrice:e.sale_price,saleStartAt:e.sale_start_at,saleEndAt:e.sale_end_at,scheduledPrice:e.scheduled_price,scheduledPrices:e.scheduled_prices,scheduledPriceAt:e.scheduled_price_at,currencyCode:n.currencyCode,currencies:n.currencies})}var l=()=>{let e=o(e=>e.items),{activeCurrencyCode:t,currencies:r}=n.useCurrency();return e.reduce((e,n)=>{let{price:i,sale_price:a}=c(n,{currencyCode:t,currencies:r});return e+(a??i)*n.quantity},0)};exports.getCartItemActivePrice=c,exports.useCartStore=o,exports.useCartSubtotal=l,exports.useCartTotalItems=s;
@@ -1 +0,0 @@
1
- "use client";const e=require("../../_virtual/_rolldown/runtime.cjs.js");let t=require("next/link");t=e.__toESM(t,1);let n=require("lucide-react"),r=require("@nextblock-cms/utils"),i=require("react/jsx-runtime"),a=require("next/navigation");function o(e,t,n){let r=e(t);return r===t?n:r}function s(e){return e===`password`?n.KeyRound:n.Package2}function c({links:e,title:n,className:c}){let l=(0,a.usePathname)(),{t:u}=(0,r.useTranslations)();return e.length?(0,i.jsxs)(`nav`,{"aria-label":n||o(u,`account_navigation`,`Account`),className:(0,r.cn)(`w-full space-y-3`,c),children:[(0,i.jsx)(`div`,{"aria-hidden":`true`,className:`text-sm font-medium text-muted-foreground uppercase tracking-wider`,children:n||o(u,`account_navigation`,`Account`)}),(0,i.jsx)(`div`,{className:`space-y-2`,children:e.map(e=>{let n=s(e.icon),a=l===e.href||l.startsWith(`${e.href}/`);return(0,i.jsxs)(t.default,{href:e.href,"aria-current":a?`page`:void 0,className:(0,r.cn)(`flex items-center gap-3 rounded-xl border px-3 py-2.5 text-sm font-medium transition-colors`,a?`border-primary bg-primary text-primary-foreground`:`border-border bg-background hover:bg-muted/40`),children:[(0,i.jsx)(n,{className:`h-4 w-4 shrink-0`}),(0,i.jsx)(`span`,{children:o(u,e.labelKey,e.fallbackLabel)})]},e.href)})})]}):null}exports.AccountNavigationMenu=c;
@@ -1 +0,0 @@
1
- "use client";const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../types.cjs.js"),n=require("../CurrencyProvider.cjs.js"),r=require("../use-cart.cjs.js"),i=require("../PaymentReadinessProvider.cjs.js");let a=require("@nextblock-cms/ui/button"),o=require("next/link");o=e.__toESM(o,1);let s=require("lucide-react"),c=require("@nextblock-cms/utils"),l=require("react/jsx-runtime"),u=require("sonner");var d=({product:e,className:d,quantity:f})=>{let p=r.useCart(e=>e),{t:m}=(0,c.useTranslations)(),{activeCurrencyCode:h}=n.useCurrency(),g=i.useCanPurchase(e),_=t.isDigitalProduct(e),v=!!e.has_variants&&!e.variant_id&&!_,y=!_&&typeof e.stock==`number`&&e.stock<=0;if(!g){let t=m(`ecommerce.contact_seller`);return(0,l.jsx)(a.Button,{asChild:!0,variant:`outline`,className:d,children:(0,l.jsxs)(o.default,{href:`/product/${e.slug}#contact-seller`,children:[(0,l.jsx)(s.Mail,{className:`mr-2 h-4 w-4`}),t===`ecommerce.contact_seller`?`Contact the seller`:t]})})}if(v)return(0,l.jsx)(a.Button,{asChild:!0,className:d,children:(0,l.jsx)(o.default,{href:`/product/${e.slug}`,children:m(`ecommerce.select_options`)===`ecommerce.select_options`?`Select options`:m(`ecommerce.select_options`)})});if(y){let e=m(`ecommerce.out_of_stock`);return(0,l.jsxs)(a.Button,{disabled:!0,className:d,children:[(0,l.jsx)(s.ShoppingCart,{className:`mr-2 h-4 w-4`}),e===`ecommerce.out_of_stock`?`Out of stock`:e]})}if(!p)return(0,l.jsxs)(a.Button,{disabled:!0,className:d,children:[(0,l.jsx)(s.ShoppingCart,{className:`mr-2 h-4 w-4`}),m(`ecommerce.add_to_cart`)]});let{addItem:b}=p;return(0,l.jsxs)(a.Button,{onClick:()=>{let n=t.getProductPaymentProvider(e)??`stripe`,{success:r,error:i,errorKey:a,errorParams:o}=b({id:e.variant_id||e.id,product_id:e.id,title:e.title,price:e.price,prices:e.prices,sale_price:e.sale_price,sale_prices:e.sale_prices,sale_start_at:e.sale_start_at,sale_end_at:e.sale_end_at,scheduled_price:e.scheduled_price,scheduled_prices:e.scheduled_prices,scheduled_price_at:e.scheduled_price_at,is_taxable:e.is_taxable,image_url:e.image_url,slug:e.slug,sku:e.sku,stock:e.stock,language_id:e.language_id,translation_group_id:e.translation_group_id,product_type:e.product_type,payment_provider:e.payment_provider??n,provider:n,freemius_product_id:e.freemius_product_id,freemius_plan_id:e.freemius_plan_id,trial_period_days:e.trial_period_days??0,trial_requires_payment_method:e.trial_requires_payment_method??!1,has_variants:e.has_variants,variant_id:e.variant_id,variant_label:e.variant_label,selected_options:e.selected_options,currency_code:h,quantity:f});if(r)u.toast.success(m(`ecommerce.added_to_cart_success`,{item:e.title}));else{let e=a?m(a,o):null;u.toast.error(e&&e!==a?e:i||m(`ecommerce.added_to_cart_error`))}},className:d,children:[(0,l.jsx)(s.ShoppingCart,{className:`mr-2 h-4 w-4`}),m(`ecommerce.add_to_cart`)]})};exports.AddToCartButton=d;
@@ -1 +0,0 @@
1
- "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../types.cjs.js"),n=require("../CurrencyProvider.cjs.js"),r=require("../cart-store.cjs.js"),i=require("../use-cart.cjs.js"),a=require("../use-price-formatter.cjs.js"),o=require("../trials.cjs.js"),s=require("./CouponForm.cjs.js"),c=require("./ShippingEstimator.cjs.js");let l=require("@nextblock-cms/ui/badge"),u=require("@nextblock-cms/ui/button"),d=require("next/link");d=e.__toESM(d,1);let f=require("react"),p=require("lucide-react"),m=require("@nextblock-cms/utils"),h=require("react/jsx-runtime"),g=require("@nextblock-cms/ui/table");var _=()=>{let e=a.usePriceFormatter(),_=i.useCart(e=>e),v=r.useCartSubtotal(),{t:y}=(0,m.useTranslations)(),b=(e,t,n)=>{let r=y(e,n);return r===e?t:r},{activeCurrencyCode:x,currencies:S}=n.useCurrency(),C=_?.items??[],w=(0,f.useMemo)(()=>C.reduce((e,n)=>{if(t.isDigitalItem(n))return e;let i=r.getCartItemActivePrice(n,{currencyCode:x,currencies:S});return e+(i.sale_price??i.price)*n.quantity},0),[x,S,C]);if(!_)return(0,h.jsxs)(`div`,{role:`status`,"aria-busy":`true`,className:`container mx-auto py-12`,children:[(0,h.jsx)(`span`,{className:`sr-only`,children:y(`loading`)===`loading`?`Loading…`:y(`loading`)}),(0,h.jsx)(`div`,{className:`mb-8 h-9 w-56 rounded-md bg-muted`}),(0,h.jsxs)(`div`,{className:`grid gap-12 lg:grid-cols-12 lg:items-start`,children:[(0,h.jsx)(`div`,{className:`h-64 rounded-lg border bg-muted/40 lg:col-span-8`}),(0,h.jsx)(`div`,{className:`h-64 rounded-lg border bg-muted/40 lg:col-span-4`})]})]});let{updateQuantity:T,removeItem:E}=_,D=e=>C.reduce((n,r)=>t.isDigitalItem(r)||r.sku!==e?n:n+r.quantity,0);return C.length===0?(0,h.jsxs)(`div`,{className:`flex flex-col items-center justify-center space-y-4 py-12`,children:[(0,h.jsx)(`h1`,{className:`text-2xl font-bold`,children:y(`ecommerce.cart_empty`)}),(0,h.jsx)(`p`,{className:`text-muted-foreground`,children:y(`ecommerce.cart_empty_description`)}),(0,h.jsx)(u.Button,{asChild:!0,children:(0,h.jsx)(d.default,{href:`/shop`,children:y(`ecommerce.continue_shopping`)})})]}):(0,h.jsxs)(`div`,{className:`container mx-auto py-12`,children:[(0,h.jsx)(`h1`,{className:`mb-8 text-3xl font-bold`,children:y(`ecommerce.shopping_cart`)}),(0,h.jsxs)(`div`,{className:`grid gap-12 lg:grid-cols-12 lg:items-start`,children:[(0,h.jsx)(`div`,{className:`lg:col-span-8`,children:(0,h.jsx)(`div`,{className:`rounded-lg border overflow-hidden`,children:(0,h.jsxs)(g.Table,{children:[(0,h.jsx)(g.TableHeader,{children:(0,h.jsxs)(g.TableRow,{children:[(0,h.jsx)(g.TableHead,{children:y(`ecommerce.product`)}),(0,h.jsx)(g.TableHead,{children:y(`ecommerce.quantity`)}),(0,h.jsx)(g.TableHead,{className:`text-right`,children:y(`ecommerce.price`)}),(0,h.jsx)(g.TableHead,{className:`text-right`,children:y(`ecommerce.total`)}),(0,h.jsx)(g.TableHead,{className:`w-[50px]`,children:(0,h.jsx)(`span`,{className:`sr-only`,children:b(`ecommerce.actions`,`Actions`)})})]})}),(0,h.jsx)(g.TableBody,{children:C.map(n=>{let i=D(n.sku),a=r.getCartItemActivePrice(n,{currencyCode:x,currencies:S}),s=o.getTrialSummary(n,y);return(0,h.jsxs)(g.TableRow,{children:[(0,h.jsx)(g.TableCell,{children:(0,h.jsxs)(`div`,{className:`flex items-center gap-4`,children:[n.image_url?(0,h.jsx)(`div`,{className:`h-16 w-16 overflow-hidden rounded border bg-neutral-100`,children:(0,h.jsx)(`img`,{src:n.image_url,alt:n.title,className:`h-full w-full object-cover`})}):(0,h.jsx)(`div`,{className:`flex h-16 w-16 items-center justify-center rounded bg-secondary`,children:(0,h.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:y(`ecommerce.no_image`)})}),(0,h.jsxs)(`div`,{className:`min-w-0 break-words`,children:[(0,h.jsx)(`div`,{className:`font-medium`,children:n.title}),n.variant_label&&(0,h.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:n.variant_label}),t.isDigitalItem(n)&&n.billing_cycle&&(0,h.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:b(`ecommerce.checkout_billing_cycle_${n.billing_cycle}`,`${n.billing_cycle} subscription`)}),s&&(0,h.jsxs)(`div`,{className:`mt-1 text-xs font-medium text-emerald-700`,children:[s.label,` - `,s.paymentRequirementLabel]})]})]})}),(0,h.jsx)(g.TableCell,{children:t.isDigitalItem(n)?(0,h.jsx)(l.Badge,{variant:`secondary`,className:`font-normal text-xs`,children:b(`ecommerce.license_count_one`,`1 license`,{count:1})}):(0,h.jsxs)(`div`,{role:`group`,"aria-label":`${b(`ecommerce.quantity`,`Quantity`)}: ${n.title}`,className:`flex items-center gap-2`,children:[(0,h.jsx)(u.Button,{variant:`outline`,size:`icon`,className:`h-8 w-8`,"aria-label":b(`ecommerce.decrease_quantity`,`Decrease quantity`),onClick:()=>T(n.id,n.quantity-1),children:(0,h.jsx)(p.Minus,{className:`h-4 w-4`})}),(0,h.jsx)(`span`,{"aria-live":`polite`,"aria-atomic":`true`,className:`w-8 text-center tabular-nums`,children:n.quantity}),(0,h.jsx)(u.Button,{variant:`outline`,size:`icon`,className:`h-8 w-8`,"aria-label":b(`ecommerce.increase_quantity`,`Increase quantity`),onClick:()=>T(n.id,n.quantity+1),disabled:typeof n.stock==`number`&&i>=n.stock,children:(0,h.jsx)(p.Plus,{className:`h-4 w-4`})})]})}),(0,h.jsx)(g.TableCell,{className:`text-right`,children:(0,h.jsxs)(`div`,{className:`flex flex-col items-end tabular-nums`,children:[(0,h.jsxs)(`span`,{className:`font-medium`,children:[a.sale_price&&(0,h.jsxs)(`span`,{className:`sr-only`,children:[b(`ecommerce.sale_price`,`Sale price`),` `]}),e(a.sale_price??a.price,x)]}),a.sale_price&&(0,h.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[(0,h.jsxs)(`span`,{className:`sr-only`,children:[b(`ecommerce.regular_price`,`Regular price`),` `]}),(0,h.jsx)(`s`,{children:e(a.price,x)})]})]})}),(0,h.jsx)(g.TableCell,{className:`text-right font-medium tabular-nums`,children:e((a.sale_price??a.price)*n.quantity,x)}),(0,h.jsx)(g.TableCell,{children:(0,h.jsx)(u.Button,{variant:`ghost`,size:`icon`,onClick:()=>E(n.id),"aria-label":b(`ecommerce.remove_item`,`Remove ${n.title} from cart`,{item:n.title}),className:`text-muted-foreground hover:text-destructive`,children:(0,h.jsx)(p.Trash2,{className:`h-4 w-4`})})})]},n.id)})})]})})}),(0,h.jsx)(`div`,{className:`lg:col-span-4`,children:(0,h.jsxs)(`div`,{className:`rounded-lg border bg-card p-6 shadow-sm`,children:[(0,h.jsx)(`h2`,{className:`mb-4 text-lg font-semibold`,children:y(`ecommerce.order_summary`)}),(0,h.jsxs)(`div`,{className:`flex justify-between border-b pb-4`,children:[(0,h.jsx)(`span`,{children:y(`ecommerce.subtotal`)}),(0,h.jsx)(`span`,{className:`font-medium tabular-nums`,children:e(v,x)})]}),(0,h.jsxs)(`div`,{className:`mt-4 flex flex-col gap-4`,children:[(0,h.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:y(`ecommerce.shipping_taxes_calculated`)}),C.some(e=>!t.isDigitalItem(e))&&(0,h.jsx)(c.ShippingEstimator,{physicalSubtotal:w}),(0,h.jsx)(s.CouponForm,{items:C,currencyCode:x,compact:!0}),(0,h.jsx)(u.Button,{asChild:!0,className:`w-full mt-4`,size:`lg`,children:(0,h.jsx)(d.default,{href:`/checkout`,children:y(`ecommerce.proceed_to_checkout`)})})]})]})})]})]})};exports.Cart=_;
@@ -1 +0,0 @@
1
- "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../types.cjs.js"),n=require("../CurrencyProvider.cjs.js"),r=require("../cart-store.cjs.js"),i=require("../use-cart.cjs.js"),a=require("../use-price-formatter.cjs.js"),o=require("../trials.cjs.js"),s=require("./CouponForm.cjs.js");let c=require("@nextblock-cms/ui/sheet"),l=require("@nextblock-cms/ui/badge"),u=require("@nextblock-cms/ui/button"),d=require("next/link");d=e.__toESM(d,1);let f=require("react"),p=require("lucide-react"),m=require("@nextblock-cms/utils"),h=require("react/jsx-runtime");var g=()=>{let e=a.usePriceFormatter(),g=i.useCart(e=>e),_=r.useCartSubtotal(),{t:v}=(0,m.useTranslations)(),y=(0,f.useRef)(null),b=(e,t,n)=>{let r=v(e,n);return r===e?t:r},{activeCurrencyCode:x,currencies:S}=n.useCurrency();if(!g)return null;let{isOpen:C,setIsOpen:w,items:T,updateQuantity:E,removeItem:D}=g,O=e=>T.reduce((n,r)=>t.isDigitalItem(r)||r.sku!==e?n:n+r.quantity,0);return(0,h.jsx)(c.Sheet,{open:C,onOpenChange:w,children:(0,h.jsxs)(c.SheetContent,{className:`flex w-full flex-col pr-0 sm:max-w-lg`,onOpenAutoFocus:()=>{y.current=document.activeElement},onCloseAutoFocus:e=>{e.preventDefault(),y.current?.focus()},children:[(0,h.jsxs)(c.SheetHeader,{className:`px-1 text-left`,children:[(0,h.jsxs)(c.SheetTitle,{children:[v(`ecommerce.shopping_cart`),` (`,T.length,`)`]}),(0,h.jsx)(c.SheetDescription,{className:`sr-only`,children:v(`ecommerce.shopping_cart`)})]}),T.length>0?(0,h.jsx)(`div`,{className:`flex flex-1 flex-col gap-5 overflow-y-auto overscroll-contain p-1 pr-6 pt-4`,children:T.map(n=>{let i=O(n.sku);return(0,h.jsx)(`div`,{className:`flex gap-4`,children:(()=>{let a=r.getCartItemActivePrice(n,{currencyCode:x,currencies:S}),s=o.getTrialSummary(n,v);return(0,h.jsxs)(h.Fragment,{children:[n.image_url?(0,h.jsx)(`div`,{className:`relative aspect-square h-20 w-20 min-w-fit overflow-hidden rounded border bg-neutral-100`,children:(0,h.jsx)(`img`,{src:n.image_url,alt:``,width:80,height:80,loading:`lazy`,decoding:`async`,className:`h-full w-full object-cover`})}):(0,h.jsx)(`div`,{className:`flex h-20 w-20 items-center justify-center rounded bg-secondary`,children:(0,h.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:v(`ecommerce.no_image`)})}),(0,h.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col justify-between`,children:[(0,h.jsxs)(`div`,{className:`flex justify-between gap-2`,children:[(0,h.jsxs)(`div`,{className:`min-w-0`,children:[(0,h.jsx)(`span`,{className:`line-clamp-2 text-sm font-medium leading-tight`,children:n.title}),n.variant_label&&(0,h.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:n.variant_label}),s&&(0,h.jsxs)(`div`,{className:`mt-1 text-xs font-medium text-emerald-700`,children:[s.label,` - `,s.paymentRequirementLabel]})]}),(0,h.jsxs)(`span`,{className:`text-sm font-semibold tabular-nums`,children:[a.sale_price&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`span`,{className:`sr-only`,children:[b(`ecommerce.regular_price`,`Regular price`),` `]}),(0,h.jsx)(`s`,{className:`mr-1.5 text-xs font-normal text-muted-foreground`,children:e(a.price,x)}),(0,h.jsxs)(`span`,{className:`sr-only`,children:[b(`ecommerce.sale_price`,`Sale price`),` `]})]}),e(a.sale_price??a.price,x)]})]}),(0,h.jsxs)(`div`,{className:`flex items-center justify-between text-sm`,children:[t.isDigitalItem(n)?(0,h.jsx)(l.Badge,{variant:`secondary`,className:`font-normal text-xs`,children:b(`ecommerce.license_count_one`,`1 license`,{count:1})}):(0,h.jsxs)(`div`,{role:`group`,"aria-label":`${b(`ecommerce.quantity`,`Quantity`)}: ${n.title}`,className:`flex items-center rounded-md border text-xs`,children:[(0,h.jsx)(`button`,{onClick:()=>E(n.id,n.quantity-1),className:`flex h-7 w-7 items-center justify-center rounded-l-md border-r focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring`,type:`button`,"aria-label":b(`ecommerce.decrease_quantity`,`Decrease quantity`),children:(0,h.jsx)(p.Minus,{className:`h-3 w-3`})}),(0,h.jsx)(`span`,{"aria-live":`polite`,"aria-atomic":`true`,className:`flex h-7 w-8 items-center justify-center tabular-nums`,children:n.quantity}),(0,h.jsx)(`button`,{onClick:()=>E(n.id,n.quantity+1),className:`flex h-7 w-7 items-center justify-center rounded-r-md border-l focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring`,type:`button`,"aria-label":b(`ecommerce.increase_quantity`,`Increase quantity`),disabled:typeof n.stock==`number`&&i>=n.stock,children:(0,h.jsx)(p.Plus,{className:`h-3 w-3`})})]}),(0,h.jsx)(`button`,{onClick:()=>D(n.id),className:`inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:text-destructive focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring`,type:`button`,"aria-label":b(`ecommerce.remove_item`,`Remove ${n.title} from cart`,{item:n.title}),children:(0,h.jsx)(p.Trash2,{className:`h-4 w-4`})})]})]})]})})()},n.id)})}):(0,h.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center space-y-2`,children:[(0,h.jsx)(`span`,{className:`text-muted-foreground`,children:v(`ecommerce.cart_empty`)}),(0,h.jsx)(u.Button,{variant:`outline`,onClick:()=>w(!1),children:v(`ecommerce.continue_shopping`)})]}),T.length>0&&(0,h.jsxs)(`div`,{className:`border-t pr-6 pt-4`,children:[(0,h.jsxs)(`div`,{className:`flex items-center justify-between text-base font-medium`,children:[(0,h.jsx)(`span`,{children:v(`ecommerce.subtotal`)}),(0,h.jsx)(`span`,{children:e(_,x)})]}),(0,h.jsx)(`p`,{className:`mb-4 mt-1 text-xs text-muted-foreground`,children:v(`ecommerce.shipping_taxes_calculated`)}),(0,h.jsx)(`div`,{className:`mb-4`,children:(0,h.jsx)(s.CouponForm,{items:T,currencyCode:x,compact:!0})}),(0,h.jsx)(u.Button,{asChild:!0,variant:`outline`,className:`w-full mb-3`,children:(0,h.jsx)(d.default,{href:`/cart`,onClick:()=>w(!1),children:v(`ecommerce.view_full_cart`)})}),(0,h.jsx)(u.Button,{asChild:!0,className:`w-full`,children:(0,h.jsx)(d.default,{href:`/checkout`,onClick:()=>w(!1),children:v(`ecommerce.ready_to_checkout`)})})]})]})})};exports.CartDrawer=g;
@@ -1 +0,0 @@
1
- "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../cart-store.cjs.js"),t=require("../use-cart.cjs.js");let n=require("@nextblock-cms/ui/badge"),r=require("@nextblock-cms/ui/button"),i=require("lucide-react"),a=require("@nextblock-cms/utils"),o=require("react/jsx-runtime");var s=()=>{let s=e.useCartStore(e=>e.toggleCart),c=e.useCartTotalItems(),l=t.useCart(e=>e.isOpen)!==void 0,{t:u}=(0,a.useTranslations)(),d=u(`ecommerce.open_cart_count`,{count:c}),f=d===`ecommerce.open_cart_count`?`Open cart (${c} items)`:d;return l?(0,o.jsxs)(r.Button,{variant:`ghost`,size:`icon`,className:`relative`,onClick:s,"aria-label":f,"aria-haspopup":`dialog`,children:[(0,o.jsx)(i.ShoppingBag,{className:`h-5 w-5`}),c>0&&(0,o.jsx)(n.Badge,{variant:`destructive`,className:`absolute -right-1 -top-1 h-4 w-4 items-center justify-center p-0 text-[10px]`,children:c})]}):(0,o.jsx)(r.Button,{variant:`ghost`,size:`icon`,className:`relative`,"aria-label":f,"aria-haspopup":`dialog`,children:(0,o.jsx)(i.ShoppingBag,{className:`h-5 w-5`})})};exports.CartIcon=s;