@nextblock-cms/ecom 0.20.3 → 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 (446) hide show
  1. package/README.md +43 -0
  2. package/_virtual/_rolldown/runtime.cjs +1 -0
  3. package/index.cjs +1 -0
  4. package/index.es.js +38 -146
  5. package/lib/CurrencyProvider.cjs +1 -0
  6. package/lib/CurrencyProvider.d.ts +1 -1
  7. package/lib/CurrencyProvider.es.js +85 -95
  8. package/lib/PaymentReadinessProvider.cjs +1 -0
  9. package/lib/PaymentReadinessProvider.d.ts +1 -1
  10. package/lib/PaymentReadinessProvider.es.js +24 -27
  11. package/lib/cart-store.cjs +1 -0
  12. package/lib/cart-store.es.js +109 -121
  13. package/lib/components/AccountNavigationMenu.cjs +1 -0
  14. package/lib/components/AccountNavigationMenu.d.ts +1 -1
  15. package/lib/components/AccountNavigationMenu.es.js +36 -50
  16. package/lib/components/AddToCartButton.cjs +1 -0
  17. package/lib/components/AddToCartButton.d.ts +1 -1
  18. package/lib/components/AddToCartButton.es.js +94 -89
  19. package/lib/components/Cart.cjs +1 -0
  20. package/lib/components/Cart.d.ts +1 -1
  21. package/lib/components/Cart.es.js +261 -180
  22. package/lib/components/CartDrawer.cjs +1 -0
  23. package/lib/components/CartDrawer.d.ts +1 -1
  24. package/lib/components/CartDrawer.es.js +218 -148
  25. package/lib/components/CartIcon.cjs +1 -0
  26. package/lib/components/CartIcon.d.ts +1 -1
  27. package/lib/components/CartIcon.es.js +33 -35
  28. package/lib/components/Checkout.cjs +1 -0
  29. package/lib/components/Checkout.d.ts +1 -1
  30. package/lib/components/Checkout.es.js +1092 -1108
  31. package/lib/components/CouponForm.cjs +1 -0
  32. package/lib/components/CouponForm.d.ts +1 -1
  33. package/lib/components/CouponForm.es.js +136 -148
  34. package/lib/components/CurrencySwitcher.cjs +1 -0
  35. package/lib/components/CurrencySwitcher.d.ts +1 -1
  36. package/lib/components/CurrencySwitcher.es.js +22 -18
  37. package/lib/components/CustomerProfileForm.cjs +1 -0
  38. package/lib/components/CustomerProfileForm.es.js +454 -313
  39. package/lib/components/FeaturedProduct.cjs +1 -0
  40. package/lib/components/FeaturedProduct.d.ts +1 -1
  41. package/lib/components/FeaturedProduct.es.js +98 -83
  42. package/lib/components/FreemiusLicensePanel.cjs +1 -0
  43. package/lib/components/FreemiusLicensePanel.d.ts +1 -1
  44. package/lib/components/FreemiusLicensePanel.es.js +70 -65
  45. package/lib/components/InvoiceDocument.cjs +1 -0
  46. package/lib/components/InvoiceDocument.es.js +256 -192
  47. package/lib/components/InvoiceViewerShell.cjs +29 -0
  48. package/lib/components/InvoiceViewerShell.d.ts +1 -1
  49. package/lib/components/InvoiceViewerShell.es.js +75 -106
  50. package/lib/components/ProductCard.cjs +1 -0
  51. package/lib/components/ProductCard.d.ts +1 -1
  52. package/lib/components/ProductCard.es.js +186 -171
  53. package/lib/components/ProductDetailsLayout.cjs +1 -0
  54. package/lib/components/ProductDetailsLayout.es.js +405 -404
  55. package/lib/components/ProductGallery.cjs +1 -0
  56. package/lib/components/ProductGallery.d.ts +1 -1
  57. package/lib/components/ProductGallery.es.js +51 -54
  58. package/lib/components/ProductGrid.cjs +1 -0
  59. package/lib/components/ProductGrid.d.ts +1 -1
  60. package/lib/components/ProductGrid.es.js +23 -25
  61. package/lib/components/ShippingEstimator.cjs +1 -0
  62. package/lib/components/ShippingEstimator.d.ts +1 -1
  63. package/lib/components/ShippingEstimator.es.js +158 -153
  64. package/lib/components/ShortDescription.cjs +1 -0
  65. package/lib/components/ShortDescription.es.js +17 -17
  66. package/lib/components/SimpleTiptapRenderer.cjs +1 -0
  67. package/lib/components/SimpleTiptapRenderer.es.js +238 -211
  68. package/lib/components/SubscriptionSelector.cjs +1 -0
  69. package/lib/components/SubscriptionSelector.es.js +159 -154
  70. package/lib/countries.cjs +1 -0
  71. package/lib/countries.es.js +232 -75
  72. package/lib/coupon-server.cjs +1 -0
  73. package/lib/coupon-server.es.js +180 -224
  74. package/lib/coupons.cjs +1 -0
  75. package/lib/coupons.es.js +12 -14
  76. package/lib/currency-constants.cjs +1 -0
  77. package/lib/currency-constants.es.js +4 -4
  78. package/lib/currency-rest-client.cjs +1 -0
  79. package/lib/currency-rest-client.es.js +15 -22
  80. package/lib/currency-store.cjs +1 -0
  81. package/lib/currency-store.es.js +20 -27
  82. package/lib/currency-sync.cjs +1 -0
  83. package/lib/currency-sync.es.js +124 -170
  84. package/lib/currency.cjs +1 -0
  85. package/lib/currency.es.js +242 -310
  86. package/lib/customer-addresses.cjs +1 -0
  87. package/lib/customer-addresses.es.js +80 -109
  88. package/lib/customer-orders.cjs +1 -0
  89. package/lib/customer-orders.es.js +31 -43
  90. package/lib/customer.cjs +1 -0
  91. package/lib/customer.es.js +43 -52
  92. package/lib/export-helpers.cjs +1 -0
  93. package/lib/export-helpers.es.js +53 -52
  94. package/lib/factory.cjs +1 -0
  95. package/lib/factory.es.js +10 -7
  96. package/lib/freemius-coupons.cjs +1 -0
  97. package/lib/freemius-coupons.es.js +245 -262
  98. package/lib/freemius-license-claim.cjs +1 -0
  99. package/lib/freemius-license-claim.es.js +87 -71
  100. package/lib/freemius-license.cjs +1 -0
  101. package/lib/freemius-license.es.js +32 -39
  102. package/lib/freemius-order-sync.cjs +1 -0
  103. package/lib/freemius-order-sync.es.js +226 -290
  104. package/lib/freemius-trial-provision.cjs +1 -0
  105. package/lib/freemius-trial-provision.es.js +136 -130
  106. package/lib/inventory-settings.cjs +1 -0
  107. package/lib/inventory-settings.es.js +69 -77
  108. package/lib/invoice-server.cjs +33 -0
  109. package/lib/invoice-server.es.js +94 -141
  110. package/lib/invoice-ui.cjs +1 -0
  111. package/lib/invoice-ui.es.js +50 -66
  112. package/lib/invoice.cjs +1 -0
  113. package/lib/invoice.es.js +85 -94
  114. package/lib/order-inventory.cjs +61 -0
  115. package/lib/order-inventory.es.js +67 -79
  116. package/lib/order-tax-details.cjs +1 -0
  117. package/lib/order-tax-details.es.js +142 -153
  118. package/lib/pages/cms/coupons/CouponEditorForm.cjs +1 -0
  119. package/lib/pages/cms/coupons/CouponEditorForm.d.ts +1 -1
  120. package/lib/pages/cms/coupons/CouponEditorForm.es.js +227 -185
  121. package/lib/pages/cms/coupons/CouponsPage.cjs +5 -0
  122. package/lib/pages/cms/coupons/CouponsPage.d.ts +1 -1
  123. package/lib/pages/cms/coupons/CouponsPage.es.js +235 -166
  124. package/lib/pages/cms/coupons/CreateCouponDialog.cjs +1 -0
  125. package/lib/pages/cms/coupons/CreateCouponDialog.d.ts +1 -1
  126. package/lib/pages/cms/coupons/CreateCouponDialog.es.js +35 -34
  127. package/lib/pages/cms/coupons/EditCouponPage.cjs +1 -0
  128. package/lib/pages/cms/coupons/EditCouponPage.d.ts +1 -1
  129. package/lib/pages/cms/coupons/EditCouponPage.es.js +47 -47
  130. package/lib/pages/cms/coupons/ProductScopePicker.cjs +1 -0
  131. package/lib/pages/cms/coupons/ProductScopePicker.d.ts +1 -1
  132. package/lib/pages/cms/coupons/ProductScopePicker.es.js +128 -117
  133. package/lib/pages/cms/coupons/actions.cjs +1 -0
  134. package/lib/pages/cms/coupons/actions.es.js +112 -115
  135. package/lib/pages/cms/coupons/index.cjs +1 -0
  136. package/lib/pages/cms/coupons/index.es.js +3 -0
  137. package/lib/pages/cms/coupons/product-options.cjs +1 -0
  138. package/lib/pages/cms/coupons/product-options.es.js +21 -23
  139. package/lib/pages/cms/orders/ExportReportsDialog.cjs +1 -0
  140. package/lib/pages/cms/orders/ExportReportsDialog.es.js +135 -129
  141. package/lib/pages/cms/orders/MarkPaidButton.d.ts +1 -1
  142. package/lib/pages/cms/orders/OrderDetailPage.cjs +1 -0
  143. package/lib/pages/cms/orders/OrderDetailPage.d.ts +1 -1
  144. package/lib/pages/cms/orders/OrderDetailPage.es.js +186 -134
  145. package/lib/pages/cms/orders/OrderPrintButton.cjs +1 -0
  146. package/lib/pages/cms/orders/OrderPrintButton.d.ts +1 -1
  147. package/lib/pages/cms/orders/OrderPrintButton.es.js +15 -21
  148. package/lib/pages/cms/orders/OrderStatusForm.cjs +1 -0
  149. package/lib/pages/cms/orders/OrderStatusForm.d.ts +1 -1
  150. package/lib/pages/cms/orders/OrderStatusForm.es.js +85 -69
  151. package/lib/pages/cms/orders/OrdersPage.cjs +1 -0
  152. package/lib/pages/cms/orders/OrdersPage.d.ts +1 -1
  153. package/lib/pages/cms/orders/OrdersPage.es.js +170 -102
  154. package/lib/pages/cms/orders/actions.cjs +7 -0
  155. package/lib/pages/cms/orders/actions.es.js +53 -69
  156. package/lib/pages/cms/orders/export-actions.cjs +1 -0
  157. package/lib/pages/cms/orders/export-actions.es.js +23 -26
  158. package/lib/pages/cms/orders/index.cjs +1 -0
  159. package/lib/pages/cms/orders/index.es.js +6 -0
  160. package/lib/pages/cms/orders/server-actions.cjs +1 -0
  161. package/lib/pages/cms/orders/server-actions.es.js +60 -51
  162. package/lib/pages/cms/payments/PaymentsClient.cjs +1 -0
  163. package/lib/pages/cms/payments/PaymentsClient.d.ts +1 -1
  164. package/lib/pages/cms/payments/PaymentsClient.es.js +316 -346
  165. package/lib/pages/cms/payments/PaymentsPage.cjs +1 -0
  166. package/lib/pages/cms/payments/PaymentsPage.d.ts +1 -1
  167. package/lib/pages/cms/payments/PaymentsPage.es.js +29 -32
  168. package/lib/pages/cms/payments/actions.cjs +1 -0
  169. package/lib/pages/cms/payments/actions.es.js +38 -48
  170. package/lib/pages/cms/payments/index.cjs +1 -0
  171. package/lib/pages/cms/payments/index.es.js +3 -0
  172. package/lib/pages/cms/payments/queries.cjs +1 -0
  173. package/lib/pages/cms/payments/queries.es.js +38 -48
  174. package/lib/pages/cms/products/ProductsPage.cjs +1 -0
  175. package/lib/pages/cms/products/ProductsPage.d.ts +1 -1
  176. package/lib/pages/cms/products/ProductsPage.es.js +63 -66
  177. package/lib/pages/cms/products/[id]/edit/EditProductPage.cjs +1 -0
  178. package/lib/pages/cms/products/[id]/edit/EditProductPage.d.ts +1 -1
  179. package/lib/pages/cms/products/[id]/edit/EditProductPage.es.js +139 -0
  180. package/lib/pages/cms/products/actions.cjs +44 -0
  181. package/lib/pages/cms/products/actions.es.js +121 -162
  182. package/lib/pages/cms/products/attributes/AttributeManagementPage.cjs +1 -0
  183. package/lib/pages/cms/products/attributes/AttributeManagementPage.d.ts +1 -1
  184. package/lib/pages/cms/products/attributes/AttributeManagementPage.es.js +55 -47
  185. package/lib/pages/cms/products/attributes/components/AttributeManager.cjs +1 -0
  186. package/lib/pages/cms/products/attributes/components/AttributeManager.d.ts +1 -1
  187. package/lib/pages/cms/products/attributes/components/AttributeManager.es.js +285 -290
  188. package/lib/pages/cms/products/categories/CategoryManagementPage.cjs +1 -0
  189. package/lib/pages/cms/products/categories/CategoryManagementPage.d.ts +1 -1
  190. package/lib/pages/cms/products/categories/CategoryManagementPage.es.js +43 -35
  191. package/lib/pages/cms/products/categories/components/CategoryManager.cjs +1 -0
  192. package/lib/pages/cms/products/categories/components/CategoryManager.es.js +315 -262
  193. package/lib/pages/cms/products/components/CopyProductFromLanguage.cjs +1 -0
  194. package/lib/pages/cms/products/components/CopyProductFromLanguage.es.js +115 -113
  195. package/lib/pages/cms/products/components/CurrencyPriceFields.cjs +1 -0
  196. package/lib/pages/cms/products/components/CurrencyPriceFields.d.ts +1 -1
  197. package/lib/pages/cms/products/components/CurrencyPriceFields.es.js +136 -145
  198. package/lib/pages/cms/products/components/DeleteProductButton.cjs +1 -0
  199. package/lib/pages/cms/products/components/DeleteProductButton.d.ts +1 -1
  200. package/lib/pages/cms/products/components/DeleteProductButton.es.js +35 -47
  201. package/lib/pages/cms/products/components/FreemiusPricingDashboard.cjs +1 -0
  202. package/lib/pages/cms/products/components/FreemiusPricingDashboard.d.ts +1 -1
  203. package/lib/pages/cms/products/components/FreemiusPricingDashboard.es.js +106 -84
  204. package/lib/pages/cms/products/components/ProductCategorySelector.cjs +1 -0
  205. package/lib/pages/cms/products/components/ProductCategorySelector.es.js +156 -159
  206. package/lib/pages/cms/products/components/ProductForm.cjs +1 -0
  207. package/lib/pages/cms/products/components/ProductForm.es.js +872 -693
  208. package/lib/pages/cms/products/components/ProductMediaManager.cjs +1 -0
  209. package/lib/pages/cms/products/components/ProductMediaManager.es.js +106 -103
  210. package/lib/pages/cms/products/components/ProductsBulkTable.cjs +1 -0
  211. package/lib/pages/cms/products/components/ProductsBulkTable.d.ts +1 -1
  212. package/lib/pages/cms/products/components/ProductsBulkTable.es.js +303 -294
  213. package/lib/pages/cms/products/components/SaleScheduleFields.cjs +1 -0
  214. package/lib/pages/cms/products/components/SaleScheduleFields.d.ts +1 -1
  215. package/lib/pages/cms/products/components/SaleScheduleFields.es.js +111 -134
  216. package/lib/pages/cms/products/components/SyncFreemiusButton.cjs +1 -0
  217. package/lib/pages/cms/products/components/SyncFreemiusButton.d.ts +1 -1
  218. package/lib/pages/cms/products/components/SyncFreemiusButton.es.js +29 -35
  219. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.cjs +5 -0
  220. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.d.ts +1 -1
  221. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.es.js +36 -48
  222. package/lib/pages/cms/products/components/SyncProductForm.d.ts +1 -1
  223. package/lib/pages/cms/products/components/VariationsEditor.cjs +1 -0
  224. package/lib/pages/cms/products/components/VariationsEditor.d.ts +1 -1
  225. package/lib/pages/cms/products/components/VariationsEditor.es.js +396 -405
  226. package/lib/pages/cms/products/index.cjs +1 -0
  227. package/lib/pages/cms/products/index.es.js +8 -0
  228. package/lib/pages/cms/products/inventory/InventoryPage.cjs +1 -0
  229. package/lib/pages/cms/products/inventory/InventoryPage.d.ts +1 -1
  230. package/lib/pages/cms/products/inventory/InventoryPage.es.js +21 -15
  231. package/lib/pages/cms/products/inventory/InventoryTableClient.cjs +2 -0
  232. package/lib/pages/cms/products/inventory/InventoryTableClient.d.ts +1 -1
  233. package/lib/pages/cms/products/inventory/InventoryTableClient.es.js +230 -209
  234. package/lib/pages/cms/products/inventory/actions.cjs +3 -0
  235. package/lib/pages/cms/products/inventory/actions.es.js +83 -91
  236. package/lib/pages/cms/products/new/NewProductPage.cjs +1 -0
  237. package/lib/pages/cms/products/new/NewProductPage.d.ts +1 -1
  238. package/lib/pages/cms/products/new/NewProductPage.es.js +58 -74
  239. package/lib/pages/cms/products/product-price-sync.cjs +1 -0
  240. package/lib/pages/cms/products/product-price-sync.es.js +74 -89
  241. package/lib/pages/cms/products/server-actions.cjs +1 -0
  242. package/lib/pages/cms/products/server-actions.es.js +250 -233
  243. package/lib/pages/cms/shipping/ShippingPage.cjs +5 -0
  244. package/lib/pages/cms/shipping/ShippingPage.es.js +287 -209
  245. package/lib/pages/cms/shipping/components/RateForm.cjs +1 -0
  246. package/lib/pages/cms/shipping/components/RateForm.d.ts +1 -1
  247. package/lib/pages/cms/shipping/components/RateForm.es.js +439 -436
  248. package/lib/pages/cms/shipping/components/ZoneForm.cjs +1 -0
  249. package/lib/pages/cms/shipping/components/ZoneForm.es.js +245 -224
  250. package/lib/pages/cms/shipping/index.cjs +1 -0
  251. package/lib/pages/cms/shipping/index.es.js +3 -0
  252. package/lib/pages/cms/shipping/server-actions.cjs +1 -0
  253. package/lib/pages/cms/shipping/server-actions.es.js +131 -149
  254. package/lib/pages/cms/taxes/TaxesPage.cjs +1 -0
  255. package/lib/pages/cms/taxes/TaxesPage.d.ts +1 -1
  256. package/lib/pages/cms/taxes/TaxesPage.es.js +211 -169
  257. package/lib/pages/cms/taxes/actions.cjs +1 -0
  258. package/lib/pages/cms/taxes/actions.es.js +41 -53
  259. package/lib/pages/cms/taxes/components/TaxRateForm.cjs +1 -0
  260. package/lib/pages/cms/taxes/components/TaxRateForm.d.ts +1 -1
  261. package/lib/pages/cms/taxes/components/TaxRateForm.es.js +112 -99
  262. package/lib/pages/cms/taxes/index.cjs +1 -0
  263. package/lib/pages/cms/taxes/index.es.js +3 -0
  264. package/lib/payment-config.cjs +1 -0
  265. package/lib/payment-config.es.js +110 -126
  266. package/lib/product-actions.cjs +238 -0
  267. package/lib/product-actions.es.js +289 -544
  268. package/lib/product-context.cjs +1 -0
  269. package/lib/product-context.es.js +13 -15
  270. package/lib/product-schema.cjs +1 -0
  271. package/lib/product-schema.es.js +99 -134
  272. package/lib/providers/freemius.cjs +1 -0
  273. package/lib/providers/freemius.es.js +446 -530
  274. package/lib/providers/stripe.cjs +1 -0
  275. package/lib/providers/stripe.es.js +417 -477
  276. package/lib/server-actions/coupon-actions.cjs +1 -0
  277. package/lib/server-actions/coupon-actions.es.js +22 -22
  278. package/lib/server-actions/customer-actions.cjs +1 -0
  279. package/lib/server-actions/customer-actions.es.js +26 -28
  280. package/lib/server-actions/product-actions.cjs +1 -0
  281. package/lib/server-actions/product-actions.es.js +9 -15
  282. package/lib/server-actions/shipping-actions.cjs +1 -0
  283. package/lib/server-actions/shipping-actions.es.js +27 -24
  284. package/lib/server-actions/tax-actions.cjs +1 -0
  285. package/lib/server-actions/tax-actions.es.js +33 -39
  286. package/lib/shared-inventory.cjs +15 -0
  287. package/lib/shared-inventory.es.js +111 -160
  288. package/lib/shipping/resolver.cjs +7 -0
  289. package/lib/shipping/resolver.es.js +44 -61
  290. package/lib/shipping-rate-currency.cjs +1 -0
  291. package/lib/shipping-rate-currency.es.js +52 -67
  292. package/lib/states.cjs +1 -0
  293. package/lib/states.es.js +333 -154
  294. package/lib/stripe/checkout.cjs +1 -0
  295. package/lib/stripe/checkout.es.js +125 -181
  296. package/lib/stripe/client.cjs +1 -0
  297. package/lib/stripe/client.es.js +14 -19
  298. package/lib/stripe/order-sync.cjs +1 -0
  299. package/lib/stripe/order-sync.es.js +106 -126
  300. package/lib/stripe/webhooks.cjs +1 -0
  301. package/lib/stripe/webhooks.es.js +37 -31
  302. package/lib/tax-calculation.cjs +1 -0
  303. package/lib/tax-calculation.es.js +84 -98
  304. package/lib/trials.cjs +1 -0
  305. package/lib/trials.es.js +24 -30
  306. package/lib/types.cjs +1 -0
  307. package/lib/types.es.js +21 -27
  308. package/lib/use-cart.cjs +1 -0
  309. package/lib/use-cart.es.js +38 -40
  310. package/lib/use-price-formatter.cjs +1 -0
  311. package/lib/use-price-formatter.es.js +10 -11
  312. package/lib/variation-utils.cjs +1 -0
  313. package/lib/variation-utils.es.js +199 -261
  314. package/lib/zod-config.cjs +1 -0
  315. package/lib/zod-config.es.js +5 -6
  316. package/package.json +22 -21
  317. package/server.cjs +1 -0
  318. package/server.es.js +56 -211
  319. package/index.cjs.js +0 -1
  320. package/lib/CurrencyProvider.cjs.js +0 -1
  321. package/lib/PaymentReadinessProvider.cjs.js +0 -1
  322. package/lib/cart-store.cjs.js +0 -1
  323. package/lib/components/AccountNavigationMenu.cjs.js +0 -1
  324. package/lib/components/AddToCartButton.cjs.js +0 -1
  325. package/lib/components/Cart.cjs.js +0 -1
  326. package/lib/components/CartDrawer.cjs.js +0 -1
  327. package/lib/components/CartIcon.cjs.js +0 -1
  328. package/lib/components/Checkout.cjs.js +0 -1
  329. package/lib/components/CouponForm.cjs.js +0 -1
  330. package/lib/components/CurrencySwitcher.cjs.js +0 -1
  331. package/lib/components/CustomerProfileForm.cjs.js +0 -1
  332. package/lib/components/FeaturedProduct.cjs.js +0 -1
  333. package/lib/components/FreemiusLicensePanel.cjs.js +0 -1
  334. package/lib/components/InvoiceDocument.cjs.js +0 -1
  335. package/lib/components/InvoiceViewerShell.cjs.js +0 -29
  336. package/lib/components/ProductCard.cjs.js +0 -1
  337. package/lib/components/ProductDetailsLayout.cjs.js +0 -1
  338. package/lib/components/ProductGallery.cjs.js +0 -1
  339. package/lib/components/ProductGrid.cjs.js +0 -1
  340. package/lib/components/ShippingEstimator.cjs.js +0 -1
  341. package/lib/components/ShortDescription.cjs.js +0 -1
  342. package/lib/components/SimpleTiptapRenderer.cjs.js +0 -1
  343. package/lib/components/SubscriptionSelector.cjs.js +0 -1
  344. package/lib/countries.cjs.js +0 -1
  345. package/lib/coupon-server.cjs.js +0 -1
  346. package/lib/coupons.cjs.js +0 -1
  347. package/lib/currency-constants.cjs.js +0 -1
  348. package/lib/currency-rest-client.cjs.js +0 -1
  349. package/lib/currency-store.cjs.js +0 -1
  350. package/lib/currency-sync.cjs.js +0 -1
  351. package/lib/currency.cjs.js +0 -1
  352. package/lib/customer-addresses.cjs.js +0 -1
  353. package/lib/customer-orders.cjs.js +0 -1
  354. package/lib/customer.cjs.js +0 -1
  355. package/lib/export-helpers.cjs.js +0 -1
  356. package/lib/factory.cjs.js +0 -1
  357. package/lib/freemius-coupons.cjs.js +0 -1
  358. package/lib/freemius-license-claim.cjs.js +0 -1
  359. package/lib/freemius-license.cjs.js +0 -1
  360. package/lib/freemius-order-sync.cjs.js +0 -1
  361. package/lib/freemius-trial-provision.cjs.js +0 -1
  362. package/lib/inventory-settings.cjs.js +0 -1
  363. package/lib/invoice-server.cjs.js +0 -33
  364. package/lib/invoice-ui.cjs.js +0 -1
  365. package/lib/invoice.cjs.js +0 -1
  366. package/lib/order-inventory.cjs.js +0 -61
  367. package/lib/order-tax-details.cjs.js +0 -1
  368. package/lib/pages/cms/coupons/CouponEditorForm.cjs.js +0 -1
  369. package/lib/pages/cms/coupons/CouponsPage.cjs.js +0 -5
  370. package/lib/pages/cms/coupons/CreateCouponDialog.cjs.js +0 -1
  371. package/lib/pages/cms/coupons/EditCouponPage.cjs.js +0 -1
  372. package/lib/pages/cms/coupons/ProductScopePicker.cjs.js +0 -1
  373. package/lib/pages/cms/coupons/actions.cjs.js +0 -1
  374. package/lib/pages/cms/coupons/product-options.cjs.js +0 -1
  375. package/lib/pages/cms/orders/ExportReportsDialog.cjs.js +0 -1
  376. package/lib/pages/cms/orders/OrderDetailPage.cjs.js +0 -1
  377. package/lib/pages/cms/orders/OrderPrintButton.cjs.js +0 -1
  378. package/lib/pages/cms/orders/OrderStatusForm.cjs.js +0 -1
  379. package/lib/pages/cms/orders/OrdersPage.cjs.js +0 -1
  380. package/lib/pages/cms/orders/actions.cjs.js +0 -7
  381. package/lib/pages/cms/orders/export-actions.cjs.js +0 -1
  382. package/lib/pages/cms/orders/server-actions.cjs.js +0 -1
  383. package/lib/pages/cms/payments/PaymentsClient.cjs.js +0 -1
  384. package/lib/pages/cms/payments/PaymentsPage.cjs.js +0 -1
  385. package/lib/pages/cms/payments/actions.cjs.js +0 -1
  386. package/lib/pages/cms/payments/queries.cjs.js +0 -1
  387. package/lib/pages/cms/products/ProductsPage.cjs.js +0 -1
  388. package/lib/pages/cms/products/_id_/edit/EditProductPage.cjs.js +0 -1
  389. package/lib/pages/cms/products/_id_/edit/EditProductPage.es.js +0 -156
  390. package/lib/pages/cms/products/actions.cjs.js +0 -44
  391. package/lib/pages/cms/products/attributes/AttributeManagementPage.cjs.js +0 -1
  392. package/lib/pages/cms/products/attributes/components/AttributeManager.cjs.js +0 -1
  393. package/lib/pages/cms/products/categories/CategoryManagementPage.cjs.js +0 -1
  394. package/lib/pages/cms/products/categories/components/CategoryManager.cjs.js +0 -1
  395. package/lib/pages/cms/products/components/CopyProductFromLanguage.cjs.js +0 -1
  396. package/lib/pages/cms/products/components/CurrencyPriceFields.cjs.js +0 -1
  397. package/lib/pages/cms/products/components/DeleteProductButton.cjs.js +0 -1
  398. package/lib/pages/cms/products/components/FreemiusPricingDashboard.cjs.js +0 -1
  399. package/lib/pages/cms/products/components/ProductCategorySelector.cjs.js +0 -1
  400. package/lib/pages/cms/products/components/ProductForm.cjs.js +0 -1
  401. package/lib/pages/cms/products/components/ProductMediaManager.cjs.js +0 -1
  402. package/lib/pages/cms/products/components/ProductsBulkTable.cjs.js +0 -1
  403. package/lib/pages/cms/products/components/SaleScheduleFields.cjs.js +0 -1
  404. package/lib/pages/cms/products/components/SyncFreemiusButton.cjs.js +0 -1
  405. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.cjs.js +0 -5
  406. package/lib/pages/cms/products/components/VariationsEditor.cjs.js +0 -1
  407. package/lib/pages/cms/products/inventory/InventoryPage.cjs.js +0 -1
  408. package/lib/pages/cms/products/inventory/InventoryTableClient.cjs.js +0 -2
  409. package/lib/pages/cms/products/inventory/actions.cjs.js +0 -3
  410. package/lib/pages/cms/products/new/NewProductPage.cjs.js +0 -1
  411. package/lib/pages/cms/products/product-price-sync.cjs.js +0 -1
  412. package/lib/pages/cms/products/server-actions.cjs.js +0 -1
  413. package/lib/pages/cms/shipping/ShippingPage.cjs.js +0 -5
  414. package/lib/pages/cms/shipping/components/RateForm.cjs.js +0 -1
  415. package/lib/pages/cms/shipping/components/ZoneForm.cjs.js +0 -1
  416. package/lib/pages/cms/shipping/server-actions.cjs.js +0 -1
  417. package/lib/pages/cms/taxes/TaxesPage.cjs.js +0 -1
  418. package/lib/pages/cms/taxes/actions.cjs.js +0 -1
  419. package/lib/pages/cms/taxes/components/TaxRateForm.cjs.js +0 -1
  420. package/lib/payment-config.cjs.js +0 -1
  421. package/lib/product-actions.cjs.js +0 -238
  422. package/lib/product-context.cjs.js +0 -1
  423. package/lib/product-schema.cjs.js +0 -1
  424. package/lib/providers/freemius.cjs.js +0 -5
  425. package/lib/providers/stripe.cjs.js +0 -1
  426. package/lib/server-actions/coupon-actions.cjs.js +0 -1
  427. package/lib/server-actions/customer-actions.cjs.js +0 -1
  428. package/lib/server-actions/product-actions.cjs.js +0 -1
  429. package/lib/server-actions/shipping-actions.cjs.js +0 -1
  430. package/lib/server-actions/tax-actions.cjs.js +0 -1
  431. package/lib/shared-inventory.cjs.js +0 -15
  432. package/lib/shipping/resolver.cjs.js +0 -7
  433. package/lib/shipping-rate-currency.cjs.js +0 -1
  434. package/lib/states.cjs.js +0 -1
  435. package/lib/stripe/checkout.cjs.js +0 -1
  436. package/lib/stripe/client.cjs.js +0 -1
  437. package/lib/stripe/order-sync.cjs.js +0 -1
  438. package/lib/stripe/webhooks.cjs.js +0 -1
  439. package/lib/tax-calculation.cjs.js +0 -1
  440. package/lib/trials.cjs.js +0 -1
  441. package/lib/types.cjs.js +0 -1
  442. package/lib/use-cart.cjs.js +0 -1
  443. package/lib/use-price-formatter.cjs.js +0 -1
  444. package/lib/variation-utils.cjs.js +0 -1
  445. package/lib/zod-config.cjs.js +0 -1
  446. package/server.cjs.js +0 -1
@@ -1,172 +1,214 @@
1
- import { jsxs as a, jsx as e, Fragment as b } from "react/jsx-runtime";
2
- import { createClient as S, getServiceRoleSupabaseClient as w } from "@nextblock-cms/db/server";
3
- import { Button as l, Badge as u, Card as n, CardHeader as s, CardTitle as d, CardDescription as c, CardContent as o } from "@nextblock-cms/ui";
4
- import { ArrowLeft as T, Settings2 as C, ShieldCheck as _, Trash2 as k } from "lucide-react";
5
- import f from "next/link";
6
- import { getEcommerceInventorySettings as M } from "../../../inventory-settings.es.js";
7
- import { resolveSubdivisionName as A } from "../../../states.es.js";
8
- import { getEnabledPaymentProviders as R } from "../payments/queries.es.js";
9
- import { updateTaxSettingsAction as P, deleteTaxRateAction as j } from "./actions.es.js";
10
- import { TaxRateForm as g } from "./components/TaxRateForm.es.js";
11
- function E(t) {
12
- return `${t.toFixed(4).replace(/\.?0+$/, "")}%`;
1
+ import { resolveSubdivisionName as e } from "../../../states.es.js";
2
+ import { getEcommerceInventorySettings as t } from "../../../inventory-settings.es.js";
3
+ import { getEnabledPaymentProviders as n } from "../payments/queries.es.js";
4
+ import { deleteTaxRateAction as r, updateTaxSettingsAction as i } from "./actions.es.js";
5
+ import { TaxRateForm as a } from "./components/TaxRateForm.es.js";
6
+ import o from "next/link";
7
+ import { ArrowLeft as s, Settings2 as c, ShieldCheck as l, Trash2 as u } from "lucide-react";
8
+ import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
9
+ import { createClient as m, getServiceRoleSupabaseClient as h } from "@nextblock-cms/db/server";
10
+ import { Badge as g, Button as _, Card as v, CardContent as y, CardDescription as b, CardHeader as x, CardTitle as S } from "@nextblock-cms/ui";
11
+ //#region src/lib/pages/cms/taxes/TaxesPage.tsx
12
+ function C(e) {
13
+ return `${e.toFixed(4).replace(/\.?0+$/, "")}%`;
13
14
  }
14
- function F(t) {
15
- return t.state_code ? `${t.country_code} - ${A(t.country_code, t.state_code)}` : `${t.country_code} - Country-wide`;
15
+ function w(t) {
16
+ return t.state_code ? `${t.country_code} - ${e(t.country_code, t.state_code)}` : `${t.country_code} - Country-wide`;
16
17
  }
17
- async function U({
18
- searchParams: t
19
- }) {
20
- const y = S(), v = w(), [i, N, h] = await Promise.all([
21
- M(y),
22
- R(),
23
- v.from("tax_rates").select("id, country_code, state_code, tax_name, tax_rate, created_at, updated_at").order("country_code").order("state_code").order("tax_name")
24
- ]), p = h.data || [], x = h.error, m = N.stripe;
25
- return /* @__PURE__ */ a("div", { className: "mx-auto w-full max-w-6xl space-y-6 px-6 py-8", children: [
26
- t?.success ? /* @__PURE__ */ e("div", { className: "rounded-lg border border-emerald-200 bg-emerald-50 px-4 py-3 text-sm text-emerald-700", children: t.success }) : null,
27
- /* @__PURE__ */ a("div", { className: "flex items-center justify-between gap-4", children: [
28
- /* @__PURE__ */ a("div", { className: "flex items-center gap-3", children: [
29
- /* @__PURE__ */ e(l, { asChild: !0, variant: "outline", size: "icon", "aria-label": "Back to shipping", children: /* @__PURE__ */ e(f, { href: "/cms/shipping", children: /* @__PURE__ */ e(T, { className: "h-4 w-4" }) }) }),
30
- /* @__PURE__ */ a("div", { children: [
31
- /* @__PURE__ */ e("h1", { className: "text-2xl font-bold", children: "Tax Settings" }),
32
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: "Configure Stripe tax behavior globally and maintain manual country or state/province tax rates for physical goods." })
33
- ] })
34
- ] }),
35
- /* @__PURE__ */ a("div", { className: "flex items-center gap-2", children: [
36
- /* @__PURE__ */ a(u, { variant: m ? "default" : "outline", className: "uppercase", children: [
37
- "Stripe ",
38
- m ? "Enabled" : "Disabled"
39
- ] }),
40
- /* @__PURE__ */ e("div", { className: "rounded-full border bg-muted/30 p-3 text-muted-foreground", children: /* @__PURE__ */ e(C, { className: "h-5 w-5" }) })
41
- ] })
42
- ] }),
43
- m ? /* @__PURE__ */ a(b, { children: [
44
- /* @__PURE__ */ a(n, { children: [
45
- /* @__PURE__ */ a(s, { children: [
46
- /* @__PURE__ */ e(d, { children: "Global Tax Controls" }),
47
- /* @__PURE__ */ e(c, { children: "Manual mode uses the tax rates below. Automatic mode uses Stripe Tax during Stripe Checkout instead of a free third-party tax API." })
48
- ] }),
49
- /* @__PURE__ */ e(o, { children: /* @__PURE__ */ a("form", { action: P, className: "space-y-6", children: [
50
- /* @__PURE__ */ a("div", { className: "rounded-lg border bg-muted/20 p-4", children: [
51
- /* @__PURE__ */ e("input", { type: "hidden", name: "enableTaxes", value: "false" }),
52
- /* @__PURE__ */ a("label", { htmlFor: "enable-taxes", className: "flex cursor-pointer items-start gap-3", children: [
53
- /* @__PURE__ */ e(
54
- "input",
55
- {
56
- id: "enable-taxes",
57
- name: "enableTaxes",
58
- type: "checkbox",
59
- value: "true",
60
- defaultChecked: i.enableTaxes,
61
- className: "mt-1 h-4 w-4 rounded border-slate-300 text-primary focus:ring-primary"
62
- }
63
- ),
64
- /* @__PURE__ */ a("span", { className: "space-y-1", children: [
65
- /* @__PURE__ */ e("span", { className: "block font-medium", children: "Enable taxes" }),
66
- /* @__PURE__ */ e("span", { className: "block text-sm text-muted-foreground", children: "When disabled, tax totals resolve to zero even if product or jurisdiction records exist." })
67
- ] })
68
- ] })
69
- ] }),
70
- /* @__PURE__ */ a("div", { className: "grid gap-4 md:grid-cols-[minmax(0,1fr)_auto] md:items-end", children: [
71
- /* @__PURE__ */ a("div", { className: "space-y-2", children: [
72
- /* @__PURE__ */ e(
73
- "label",
74
- {
75
- htmlFor: "tax-calculation-mode",
76
- className: "text-sm font-medium text-foreground",
77
- children: "Tax calculation mode"
78
- }
79
- ),
80
- /* @__PURE__ */ a(
81
- "select",
82
- {
83
- id: "tax-calculation-mode",
84
- name: "taxCalculationMode",
85
- defaultValue: i.taxCalculationMode,
86
- className: "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm",
87
- children: [
88
- /* @__PURE__ */ e("option", { value: "manual", children: "Manual tax rates" }),
89
- /* @__PURE__ */ e("option", { value: "automatic", children: "Automatic via Stripe Tax" })
90
- ]
91
- }
92
- ),
93
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: "Automatic mode depends on your Stripe Tax setup. Manual rates stay saved and can be used again if you switch back later." })
94
- ] }),
95
- /* @__PURE__ */ e("div", { className: "flex justify-end", children: /* @__PURE__ */ e(l, { type: "submit", children: "Save Tax Settings" }) })
96
- ] })
97
- ] }) })
98
- ] }),
99
- /* @__PURE__ */ a(n, { children: [
100
- /* @__PURE__ */ e(s, { children: /* @__PURE__ */ a("div", { className: "flex items-center justify-between gap-4", children: [
101
- /* @__PURE__ */ a("div", { children: [
102
- /* @__PURE__ */ e(d, { children: "Manual Tax Rates" }),
103
- /* @__PURE__ */ e(c, { children: "Add combined taxes as separate rows. For example, create both GST and PST for the same province if they should stack." })
104
- ] }),
105
- /* @__PURE__ */ e(u, { variant: i.taxCalculationMode === "manual" ? "default" : "outline", children: i.taxCalculationMode === "manual" ? "Active Mode" : "Stored for Manual Mode" })
106
- ] }) }),
107
- /* @__PURE__ */ a(o, { className: "space-y-6", children: [
108
- x ? /* @__PURE__ */ e("div", { className: "rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-800", children: "Tax rates couldn't be loaded yet. This usually means the new tax migration hasn't been applied to the current database." }) : null,
109
- x ? null : /* @__PURE__ */ a(b, { children: [
110
- /* @__PURE__ */ a("div", { className: "rounded-xl border bg-card p-4", children: [
111
- /* @__PURE__ */ a("div", { className: "mb-4 flex items-center gap-2", children: [
112
- /* @__PURE__ */ e(_, { className: "h-4 w-4 text-primary" }),
113
- /* @__PURE__ */ e("h2", { className: "font-semibold", children: "Create a Tax Rate" })
114
- ] }),
115
- /* @__PURE__ */ e(g, {})
116
- ] }),
117
- /* @__PURE__ */ e("div", { className: "space-y-4", children: p.length === 0 ? /* @__PURE__ */ a("div", { className: "rounded-xl border border-dashed bg-muted/10 px-4 py-8 text-center", children: [
118
- /* @__PURE__ */ e("p", { className: "font-medium", children: "No manual tax rates yet" }),
119
- /* @__PURE__ */ e("p", { className: "mt-1 text-sm text-muted-foreground", children: "Add country-wide or state/province-specific rows to start calculating manual taxes." })
120
- ] }) : p.map((r) => /* @__PURE__ */ a(n, { className: "border-muted", children: [
121
- /* @__PURE__ */ e(s, { className: "pb-4", children: /* @__PURE__ */ a("div", { className: "flex items-start justify-between gap-4", children: [
122
- /* @__PURE__ */ a("div", { className: "space-y-1", children: [
123
- /* @__PURE__ */ e(d, { className: "text-base", children: r.tax_name }),
124
- /* @__PURE__ */ e(c, { children: F(r) })
125
- ] }),
126
- /* @__PURE__ */ a("div", { className: "flex items-center gap-2", children: [
127
- /* @__PURE__ */ e(u, { variant: "outline", children: E(Number(r.tax_rate)) }),
128
- /* @__PURE__ */ e(
129
- "form",
130
- {
131
- action: async () => {
132
- "use server";
133
- await j(r.id);
134
- },
135
- children: /* @__PURE__ */ e(
136
- l,
137
- {
138
- type: "submit",
139
- variant: "ghost",
140
- size: "icon",
141
- "aria-label": "Delete tax rate",
142
- children: /* @__PURE__ */ e(k, { className: "h-4 w-4" })
143
- }
144
- )
145
- }
146
- )
147
- ] })
148
- ] }) }),
149
- /* @__PURE__ */ e(o, { children: /* @__PURE__ */ e(
150
- g,
151
- {
152
- initialData: r,
153
- submitLabel: "Update tax rate",
154
- compact: !0
155
- }
156
- ) })
157
- ] }, r.id)) })
158
- ] })
159
- ] })
160
- ] })
161
- ] }) : /* @__PURE__ */ a(n, { className: "border-dashed", children: [
162
- /* @__PURE__ */ a(s, { children: [
163
- /* @__PURE__ */ e(d, { children: "Enable Stripe to configure physical-product taxes" }),
164
- /* @__PURE__ */ e(c, { children: "Stripe tax settings apply whenever Stripe is enabled for physical products. Freemius still handles taxes on its own digital checkout flow." })
165
- ] }),
166
- /* @__PURE__ */ e(o, { children: /* @__PURE__ */ e(l, { asChild: !0, variant: "outline", children: /* @__PURE__ */ e(f, { href: "/cms/payments", children: "Open Payment Settings" }) }) })
167
- ] })
168
- ] });
18
+ async function T({ searchParams: e }) {
19
+ let T = m(), E = h(), [D, O, k] = await Promise.all([
20
+ t(T),
21
+ n(),
22
+ E.from("tax_rates").select("id, country_code, state_code, tax_name, tax_rate, created_at, updated_at").order("country_code").order("state_code").order("tax_name")
23
+ ]), A = k.data || [], j = k.error, M = O.stripe;
24
+ return /* @__PURE__ */ p("div", {
25
+ className: "mx-auto w-full max-w-6xl space-y-6 px-6 py-8",
26
+ children: [
27
+ e?.success ? /* @__PURE__ */ f("div", {
28
+ className: "rounded-lg border border-emerald-200 bg-emerald-50 px-4 py-3 text-sm text-emerald-700",
29
+ children: e.success
30
+ }) : null,
31
+ /* @__PURE__ */ p("div", {
32
+ className: "flex items-center justify-between gap-4",
33
+ children: [/* @__PURE__ */ p("div", {
34
+ className: "flex items-center gap-3",
35
+ children: [/* @__PURE__ */ f(_, {
36
+ asChild: !0,
37
+ variant: "outline",
38
+ size: "icon",
39
+ "aria-label": "Back to shipping",
40
+ children: /* @__PURE__ */ f(o, {
41
+ href: "/cms/shipping",
42
+ children: /* @__PURE__ */ f(s, { className: "h-4 w-4" })
43
+ })
44
+ }), /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("h1", {
45
+ className: "text-2xl font-bold",
46
+ children: "Tax Settings"
47
+ }), /* @__PURE__ */ f("p", {
48
+ className: "text-sm text-muted-foreground",
49
+ children: "Configure Stripe tax behavior globally and maintain manual country or state/province tax rates for physical goods."
50
+ })] })]
51
+ }), /* @__PURE__ */ p("div", {
52
+ className: "flex items-center gap-2",
53
+ children: [/* @__PURE__ */ p(g, {
54
+ variant: M ? "default" : "outline",
55
+ className: "uppercase",
56
+ children: ["Stripe ", M ? "Enabled" : "Disabled"]
57
+ }), /* @__PURE__ */ f("div", {
58
+ className: "rounded-full border bg-muted/30 p-3 text-muted-foreground",
59
+ children: /* @__PURE__ */ f(c, { className: "h-5 w-5" })
60
+ })]
61
+ })]
62
+ }),
63
+ M ? /* @__PURE__ */ p(d, { children: [/* @__PURE__ */ p(v, { children: [/* @__PURE__ */ p(x, { children: [/* @__PURE__ */ f(S, { children: "Global Tax Controls" }), /* @__PURE__ */ f(b, { children: "Manual mode uses the tax rates below. Automatic mode uses Stripe Tax during Stripe Checkout instead of a free third-party tax API." })] }), /* @__PURE__ */ f(y, { children: /* @__PURE__ */ p("form", {
64
+ action: i,
65
+ className: "space-y-6",
66
+ children: [/* @__PURE__ */ p("div", {
67
+ className: "rounded-lg border bg-muted/20 p-4",
68
+ children: [/* @__PURE__ */ f("input", {
69
+ type: "hidden",
70
+ name: "enableTaxes",
71
+ value: "false"
72
+ }), /* @__PURE__ */ p("label", {
73
+ htmlFor: "enable-taxes",
74
+ className: "flex cursor-pointer items-start gap-3",
75
+ children: [/* @__PURE__ */ f("input", {
76
+ id: "enable-taxes",
77
+ name: "enableTaxes",
78
+ type: "checkbox",
79
+ value: "true",
80
+ defaultChecked: D.enableTaxes,
81
+ className: "mt-1 h-4 w-4 rounded border-slate-300 text-primary focus:ring-primary"
82
+ }), /* @__PURE__ */ p("span", {
83
+ className: "space-y-1",
84
+ children: [/* @__PURE__ */ f("span", {
85
+ className: "block font-medium",
86
+ children: "Enable taxes"
87
+ }), /* @__PURE__ */ f("span", {
88
+ className: "block text-sm text-muted-foreground",
89
+ children: "When disabled, tax totals resolve to zero even if product or jurisdiction records exist."
90
+ })]
91
+ })]
92
+ })]
93
+ }), /* @__PURE__ */ p("div", {
94
+ className: "grid gap-4 md:grid-cols-[minmax(0,1fr)_auto] md:items-end",
95
+ children: [/* @__PURE__ */ p("div", {
96
+ className: "space-y-2",
97
+ children: [
98
+ /* @__PURE__ */ f("label", {
99
+ htmlFor: "tax-calculation-mode",
100
+ className: "text-sm font-medium text-foreground",
101
+ children: "Tax calculation mode"
102
+ }),
103
+ /* @__PURE__ */ p("select", {
104
+ id: "tax-calculation-mode",
105
+ name: "taxCalculationMode",
106
+ defaultValue: D.taxCalculationMode,
107
+ className: "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm",
108
+ children: [/* @__PURE__ */ f("option", {
109
+ value: "manual",
110
+ children: "Manual tax rates"
111
+ }), /* @__PURE__ */ f("option", {
112
+ value: "automatic",
113
+ children: "Automatic via Stripe Tax"
114
+ })]
115
+ }),
116
+ /* @__PURE__ */ f("p", {
117
+ className: "text-sm text-muted-foreground",
118
+ children: "Automatic mode depends on your Stripe Tax setup. Manual rates stay saved and can be used again if you switch back later."
119
+ })
120
+ ]
121
+ }), /* @__PURE__ */ f("div", {
122
+ className: "flex justify-end",
123
+ children: /* @__PURE__ */ f(_, {
124
+ type: "submit",
125
+ children: "Save Tax Settings"
126
+ })
127
+ })]
128
+ })]
129
+ }) })] }), /* @__PURE__ */ p(v, { children: [/* @__PURE__ */ f(x, { children: /* @__PURE__ */ p("div", {
130
+ className: "flex items-center justify-between gap-4",
131
+ children: [/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f(S, { children: "Manual Tax Rates" }), /* @__PURE__ */ f(b, { children: "Add combined taxes as separate rows. For example, create both GST and PST for the same province if they should stack." })] }), /* @__PURE__ */ f(g, {
132
+ variant: D.taxCalculationMode === "manual" ? "default" : "outline",
133
+ children: D.taxCalculationMode === "manual" ? "Active Mode" : "Stored for Manual Mode"
134
+ })]
135
+ }) }), /* @__PURE__ */ p(y, {
136
+ className: "space-y-6",
137
+ children: [j ? /* @__PURE__ */ f("div", {
138
+ className: "rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-800",
139
+ children: "Tax rates couldn't be loaded yet. This usually means the new tax migration hasn't been applied to the current database."
140
+ }) : null, j ? null : /* @__PURE__ */ p(d, { children: [/* @__PURE__ */ p("div", {
141
+ className: "rounded-xl border bg-card p-4",
142
+ children: [/* @__PURE__ */ p("div", {
143
+ className: "mb-4 flex items-center gap-2",
144
+ children: [/* @__PURE__ */ f(l, { className: "h-4 w-4 text-primary" }), /* @__PURE__ */ f("h2", {
145
+ className: "font-semibold",
146
+ children: "Create a Tax Rate"
147
+ })]
148
+ }), /* @__PURE__ */ f(a, {})]
149
+ }), /* @__PURE__ */ f("div", {
150
+ className: "space-y-4",
151
+ children: A.length === 0 ? /* @__PURE__ */ p("div", {
152
+ className: "rounded-xl border border-dashed bg-muted/10 px-4 py-8 text-center",
153
+ children: [/* @__PURE__ */ f("p", {
154
+ className: "font-medium",
155
+ children: "No manual tax rates yet"
156
+ }), /* @__PURE__ */ f("p", {
157
+ className: "mt-1 text-sm text-muted-foreground",
158
+ children: "Add country-wide or state/province-specific rows to start calculating manual taxes."
159
+ })]
160
+ }) : A.map((e) => /* @__PURE__ */ p(v, {
161
+ className: "border-muted",
162
+ children: [/* @__PURE__ */ f(x, {
163
+ className: "pb-4",
164
+ children: /* @__PURE__ */ p("div", {
165
+ className: "flex items-start justify-between gap-4",
166
+ children: [/* @__PURE__ */ p("div", {
167
+ className: "space-y-1",
168
+ children: [/* @__PURE__ */ f(S, {
169
+ className: "text-base",
170
+ children: e.tax_name
171
+ }), /* @__PURE__ */ f(b, { children: w(e) })]
172
+ }), /* @__PURE__ */ p("div", {
173
+ className: "flex items-center gap-2",
174
+ children: [/* @__PURE__ */ f(g, {
175
+ variant: "outline",
176
+ children: C(Number(e.tax_rate))
177
+ }), /* @__PURE__ */ f("form", {
178
+ action: async () => {
179
+ "use server";
180
+ await r(e.id);
181
+ },
182
+ children: /* @__PURE__ */ f(_, {
183
+ type: "submit",
184
+ variant: "ghost",
185
+ size: "icon",
186
+ "aria-label": "Delete tax rate",
187
+ children: /* @__PURE__ */ f(u, { className: "h-4 w-4" })
188
+ })
189
+ })]
190
+ })]
191
+ })
192
+ }), /* @__PURE__ */ f(y, { children: /* @__PURE__ */ f(a, {
193
+ initialData: e,
194
+ submitLabel: "Update tax rate",
195
+ compact: !0
196
+ }) })]
197
+ }, e.id))
198
+ })] })]
199
+ })] })] }) : /* @__PURE__ */ p(v, {
200
+ className: "border-dashed",
201
+ children: [/* @__PURE__ */ p(x, { children: [/* @__PURE__ */ f(S, { children: "Enable Stripe to configure physical-product taxes" }), /* @__PURE__ */ f(b, { children: "Stripe tax settings apply whenever Stripe is enabled for physical products. Freemius still handles taxes on its own digital checkout flow." })] }), /* @__PURE__ */ f(y, { children: /* @__PURE__ */ f(_, {
202
+ asChild: !0,
203
+ variant: "outline",
204
+ children: /* @__PURE__ */ f(o, {
205
+ href: "/cms/payments",
206
+ children: "Open Payment Settings"
207
+ })
208
+ }) })]
209
+ })
210
+ ]
211
+ });
169
212
  }
170
- export {
171
- U as TaxesPage
172
- };
213
+ //#endregion
214
+ export { T as TaxesPage };
@@ -0,0 +1 @@
1
+ "use server";const e=require("../../../countries.cjs"),t=require("../../../states.cjs"),n=require("../../../inventory-settings.cjs");let r=require("@nextblock-cms/db/server"),i=require("next/navigation"),a=require("next/cache");async function o(){let e=(0,r.createClient)(),{data:{user:t}}=await e.auth.getUser();if(!t)throw Error(`Unauthorized`);let{data:n}=await e.from(`profiles`).select(`role`).eq(`id`,t.id).single();if(!n||n.role!==`ADMIN`)throw Error(`Forbidden`);return e}async function s(e){let t=await o(),r=await n.getEcommerceInventorySettings(t),s=e.getAll(`enableTaxes`).includes(`true`),c=e.get(`taxCalculationMode`)===`automatic`?`automatic`:`manual`,{error:l}=await n.upsertEcommerceInventorySettings(t,{trackQuantities:r.trackQuantities,enableTaxes:s,taxCalculationMode:c});if(l)throw Error(l.message);(0,a.revalidatePath)(`/cms/shipping`),(0,a.revalidatePath)(`/cms/settings/taxes`),(0,i.redirect)(`/cms/settings/taxes?success=Tax settings updated`)}async function c(n){let r=await o(),i=String(n.get(`id`)||``).trim(),s=e.normalizeCountryCode(String(n.get(`country_code`)||``).trim()),c=String(n.get(`state_code`)||``).trim(),l=String(n.get(`tax_name`)||``).trim(),u=Number(n.get(`tax_rate`));if(!s)throw Error(`Country code is required.`);if(!l)throw Error(`Tax name is required.`);if(!Number.isFinite(u)||u<0||u>100)throw Error(`Tax rate must be between 0 and 100.`);let d={country_code:s,state_code:t.normalizeSubdivisionCode(s,c)||null,tax_name:l,tax_rate:u},{error:f}=await(i?r.from(`tax_rates`).update(d).eq(`id`,i):r.from(`tax_rates`).insert(d));if(f)throw Error(f.message);(0,a.revalidatePath)(`/cms/settings/taxes`)}async function l(e){let{error:t}=await(await o()).from(`tax_rates`).delete().eq(`id`,e);if(t)throw Error(t.message);(0,a.revalidatePath)(`/cms/settings/taxes`)}exports.deleteTaxRateAction=l,exports.saveTaxRateAction=c,exports.updateTaxSettingsAction=s;
@@ -1,57 +1,45 @@
1
- 'use server';
2
- import { createClient as g } from "@nextblock-cms/db/server";
3
- import { revalidatePath as s } from "next/cache";
4
- import { redirect as w } from "next/navigation";
5
- import { normalizeCountryCode as l } from "../../../countries.es.js";
6
- import { getEcommerceInventorySettings as x, upsertEcommerceInventorySettings as p } from "../../../inventory-settings.es.js";
7
- import { normalizeSubdivisionCode as f } from "../../../states.es.js";
8
- async function c() {
9
- const t = g(), {
10
- data: { user: e }
11
- } = await t.auth.getUser();
12
- if (!e)
13
- throw new Error("Unauthorized");
14
- const { data: r } = await t.from("profiles").select("role").eq("id", e.id).single();
15
- if (!r || r.role !== "ADMIN")
16
- throw new Error("Forbidden");
17
- return t;
1
+ "use server";
2
+ import { normalizeCountryCode as e } from "../../../countries.es.js";
3
+ import { normalizeSubdivisionCode as t } from "../../../states.es.js";
4
+ import { getEcommerceInventorySettings as n, upsertEcommerceInventorySettings as r } from "../../../inventory-settings.es.js";
5
+ import { createClient as i } from "@nextblock-cms/db/server";
6
+ import { redirect as a } from "next/navigation";
7
+ import { revalidatePath as o } from "next/cache";
8
+ //#region src/lib/pages/cms/taxes/actions.ts
9
+ async function s() {
10
+ let e = i(), { data: { user: t } } = await e.auth.getUser();
11
+ if (!t) throw Error("Unauthorized");
12
+ let { data: n } = await e.from("profiles").select("role").eq("id", t.id).single();
13
+ if (!n || n.role !== "ADMIN") throw Error("Forbidden");
14
+ return e;
18
15
  }
19
- async function C(t) {
20
- const e = await c(), r = await x(e), a = t.getAll("enableTaxes").includes("true"), i = t.get("taxCalculationMode") === "automatic" ? "automatic" : "manual", { error: n } = await p(e, {
21
- trackQuantities: r.trackQuantities,
22
- enableTaxes: a,
23
- taxCalculationMode: i
24
- });
25
- if (n)
26
- throw new Error(n.message);
27
- s("/cms/shipping"), s("/cms/settings/taxes"), w("/cms/settings/taxes?success=Tax settings updated");
16
+ async function c(e) {
17
+ let t = await s(), i = await n(t), c = e.getAll("enableTaxes").includes("true"), l = e.get("taxCalculationMode") === "automatic" ? "automatic" : "manual", { error: u } = await r(t, {
18
+ trackQuantities: i.trackQuantities,
19
+ enableTaxes: c,
20
+ taxCalculationMode: l
21
+ });
22
+ if (u) throw Error(u.message);
23
+ o("/cms/shipping"), o("/cms/settings/taxes"), a("/cms/settings/taxes?success=Tax settings updated");
28
24
  }
29
- async function T(t) {
30
- const e = await c(), r = String(t.get("id") || "").trim(), a = l(String(t.get("country_code") || "").trim()), i = String(t.get("state_code") || "").trim(), n = String(t.get("tax_name") || "").trim(), o = Number(t.get("tax_rate"));
31
- if (!a)
32
- throw new Error("Country code is required.");
33
- if (!n)
34
- throw new Error("Tax name is required.");
35
- if (!Number.isFinite(o) || o < 0 || o > 100)
36
- throw new Error("Tax rate must be between 0 and 100.");
37
- const m = {
38
- country_code: a,
39
- state_code: f(a, i) || null,
40
- tax_name: n,
41
- tax_rate: o
42
- }, d = r ? e.from("tax_rates").update(m).eq("id", r) : e.from("tax_rates").insert(m), { error: u } = await d;
43
- if (u)
44
- throw new Error(u.message);
45
- s("/cms/settings/taxes");
25
+ async function l(n) {
26
+ let r = await s(), i = String(n.get("id") || "").trim(), a = e(String(n.get("country_code") || "").trim()), c = String(n.get("state_code") || "").trim(), l = String(n.get("tax_name") || "").trim(), u = Number(n.get("tax_rate"));
27
+ if (!a) throw Error("Country code is required.");
28
+ if (!l) throw Error("Tax name is required.");
29
+ if (!Number.isFinite(u) || u < 0 || u > 100) throw Error("Tax rate must be between 0 and 100.");
30
+ let d = {
31
+ country_code: a,
32
+ state_code: t(a, c) || null,
33
+ tax_name: l,
34
+ tax_rate: u
35
+ }, { error: f } = await (i ? r.from("tax_rates").update(d).eq("id", i) : r.from("tax_rates").insert(d));
36
+ if (f) throw Error(f.message);
37
+ o("/cms/settings/taxes");
46
38
  }
47
- async function q(t) {
48
- const e = await c(), { error: r } = await e.from("tax_rates").delete().eq("id", t);
49
- if (r)
50
- throw new Error(r.message);
51
- s("/cms/settings/taxes");
39
+ async function u(e) {
40
+ let { error: t } = await (await s()).from("tax_rates").delete().eq("id", e);
41
+ if (t) throw Error(t.message);
42
+ o("/cms/settings/taxes");
52
43
  }
53
- export {
54
- q as deleteTaxRateAction,
55
- T as saveTaxRateAction,
56
- C as updateTaxSettingsAction
57
- };
44
+ //#endregion
45
+ export { u as deleteTaxRateAction, l as saveTaxRateAction, c as updateTaxSettingsAction };
@@ -0,0 +1 @@
1
+ "use client";const e=require("../../../../countries.cjs"),t=require("../../../../states.cjs"),n=require("../actions.cjs");let r=require("react"),i=require("react/jsx-runtime"),a=require("@nextblock-cms/ui");function o({initialData:o,submitLabel:s=`Save tax rate`,compact:c=!1}){let l=e.normalizeCountryCode(o?.country_code)||`US`,[u,d]=(0,r.useState)(l),[f,p]=(0,r.useState)(t.normalizeSubdivisionCode(l,o?.state_code)||o?.state_code||``),m=(0,r.useMemo)(()=>t.getStatesForCountry(u),[u]),h=t.countryUsesStructuredStates(u);return(0,i.jsxs)(`form`,{action:n.saveTaxRateAction,className:`space-y-4`,children:[o?.id?(0,i.jsx)(`input`,{type:`hidden`,name:`id`,value:o.id}):null,(0,i.jsxs)(`div`,{className:c?`grid gap-4 md:grid-cols-4`:`grid gap-4 md:grid-cols-2 xl:grid-cols-4`,children:[(0,i.jsxs)(`div`,{className:`space-y-2`,children:[(0,i.jsx)(a.Label,{htmlFor:o?.id?`country-${o.id}`:`tax-rate-country`,children:`Country`}),(0,i.jsx)(`select`,{id:o?.id?`country-${o.id}`:`tax-rate-country`,name:`country_code`,value:u,onChange:e=>{let n=e.target.value,r=t.getStatesForCountry(n);d(n),p(r.some(e=>e.code===f)?f:``)},className:`flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm`,children:e.countries.map(e=>(0,i.jsx)(`option`,{value:e.code,children:e.name},e.code))})]}),(0,i.jsxs)(`div`,{className:`space-y-2`,children:[(0,i.jsx)(a.Label,{htmlFor:o?.id?`state-${o.id}`:`tax-rate-state`,children:`State / Province`}),h?(0,i.jsxs)(`select`,{id:o?.id?`state-${o.id}`:`tax-rate-state`,name:`state_code`,value:f,onChange:e=>p(e.target.value),className:`flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm`,children:[(0,i.jsx)(`option`,{value:``,children:`Country-wide / federal`}),m.map(e=>(0,i.jsx)(`option`,{value:e.code,children:e.name},e.code))]}):(0,i.jsx)(a.Input,{id:o?.id?`state-${o.id}`:`tax-rate-state`,name:`state_code`,value:f,onChange:e=>p(e.target.value),placeholder:`Optional`})]}),(0,i.jsxs)(`div`,{className:`space-y-2`,children:[(0,i.jsx)(a.Label,{htmlFor:o?.id?`name-${o.id}`:`tax-rate-name`,children:`Tax name`}),(0,i.jsx)(a.Input,{id:o?.id?`name-${o.id}`:`tax-rate-name`,name:`tax_name`,defaultValue:o?.tax_name||``,placeholder:`GST, PST, State Sales Tax`,required:!0})]}),(0,i.jsxs)(`div`,{className:`space-y-2`,children:[(0,i.jsx)(a.Label,{htmlFor:o?.id?`rate-${o.id}`:`tax-rate-rate`,children:`Rate (%)`}),(0,i.jsx)(a.Input,{id:o?.id?`rate-${o.id}`:`tax-rate-rate`,name:`tax_rate`,type:`number`,min:`0`,max:`100`,step:`0.0001`,defaultValue:typeof o?.tax_rate==`number`?o.tax_rate.toString():``,placeholder:`5.0000`,required:!0})]})]}),(0,i.jsx)(`div`,{className:`flex justify-end`,children:(0,i.jsx)(a.Button,{type:`submit`,size:c?`sm`:`default`,children:s})})]})}exports.TaxRateForm=o;
@@ -4,5 +4,5 @@ interface TaxRateFormProps {
4
4
  submitLabel?: string;
5
5
  compact?: boolean;
6
6
  }
7
- export declare function TaxRateForm({ initialData, submitLabel, compact, }: TaxRateFormProps): import("react").JSX.Element;
7
+ export declare function TaxRateForm({ initialData, submitLabel, compact, }: TaxRateFormProps): import('react').JSX.Element;
8
8
  export {};