@nextblock-cms/ecom 0.20.3 → 0.21.0

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 (317) hide show
  1. package/_virtual/_rolldown/runtime.cjs.js +1 -0
  2. package/index.cjs.js +1 -1
  3. package/index.es.js +38 -146
  4. package/lib/CurrencyProvider.cjs.js +1 -1
  5. package/lib/CurrencyProvider.d.ts +1 -1
  6. package/lib/CurrencyProvider.es.js +85 -95
  7. package/lib/PaymentReadinessProvider.cjs.js +1 -1
  8. package/lib/PaymentReadinessProvider.d.ts +1 -1
  9. package/lib/PaymentReadinessProvider.es.js +24 -27
  10. package/lib/cart-store.cjs.js +1 -1
  11. package/lib/cart-store.es.js +109 -121
  12. package/lib/components/AccountNavigationMenu.cjs.js +1 -1
  13. package/lib/components/AccountNavigationMenu.d.ts +1 -1
  14. package/lib/components/AccountNavigationMenu.es.js +36 -50
  15. package/lib/components/AddToCartButton.cjs.js +1 -1
  16. package/lib/components/AddToCartButton.d.ts +1 -1
  17. package/lib/components/AddToCartButton.es.js +94 -89
  18. package/lib/components/Cart.cjs.js +1 -1
  19. package/lib/components/Cart.d.ts +1 -1
  20. package/lib/components/Cart.es.js +261 -180
  21. package/lib/components/CartDrawer.cjs.js +1 -1
  22. package/lib/components/CartDrawer.d.ts +1 -1
  23. package/lib/components/CartDrawer.es.js +218 -148
  24. package/lib/components/CartIcon.cjs.js +1 -1
  25. package/lib/components/CartIcon.d.ts +1 -1
  26. package/lib/components/CartIcon.es.js +33 -35
  27. package/lib/components/Checkout.cjs.js +1 -1
  28. package/lib/components/Checkout.d.ts +1 -1
  29. package/lib/components/Checkout.es.js +1092 -1108
  30. package/lib/components/CouponForm.cjs.js +1 -1
  31. package/lib/components/CouponForm.d.ts +1 -1
  32. package/lib/components/CouponForm.es.js +136 -148
  33. package/lib/components/CurrencySwitcher.cjs.js +1 -1
  34. package/lib/components/CurrencySwitcher.d.ts +1 -1
  35. package/lib/components/CurrencySwitcher.es.js +22 -18
  36. package/lib/components/CustomerProfileForm.cjs.js +1 -1
  37. package/lib/components/CustomerProfileForm.es.js +454 -313
  38. package/lib/components/FeaturedProduct.cjs.js +1 -1
  39. package/lib/components/FeaturedProduct.d.ts +1 -1
  40. package/lib/components/FeaturedProduct.es.js +98 -83
  41. package/lib/components/FreemiusLicensePanel.cjs.js +1 -1
  42. package/lib/components/FreemiusLicensePanel.d.ts +1 -1
  43. package/lib/components/FreemiusLicensePanel.es.js +70 -65
  44. package/lib/components/InvoiceDocument.cjs.js +1 -1
  45. package/lib/components/InvoiceDocument.es.js +256 -192
  46. package/lib/components/InvoiceViewerShell.cjs.js +2 -2
  47. package/lib/components/InvoiceViewerShell.d.ts +1 -1
  48. package/lib/components/InvoiceViewerShell.es.js +75 -106
  49. package/lib/components/ProductCard.cjs.js +1 -1
  50. package/lib/components/ProductCard.d.ts +1 -1
  51. package/lib/components/ProductCard.es.js +186 -171
  52. package/lib/components/ProductDetailsLayout.cjs.js +1 -1
  53. package/lib/components/ProductDetailsLayout.es.js +405 -404
  54. package/lib/components/ProductGallery.cjs.js +1 -1
  55. package/lib/components/ProductGallery.d.ts +1 -1
  56. package/lib/components/ProductGallery.es.js +51 -54
  57. package/lib/components/ProductGrid.cjs.js +1 -1
  58. package/lib/components/ProductGrid.d.ts +1 -1
  59. package/lib/components/ProductGrid.es.js +23 -25
  60. package/lib/components/ShippingEstimator.cjs.js +1 -1
  61. package/lib/components/ShippingEstimator.d.ts +1 -1
  62. package/lib/components/ShippingEstimator.es.js +158 -153
  63. package/lib/components/ShortDescription.cjs.js +1 -1
  64. package/lib/components/ShortDescription.es.js +17 -17
  65. package/lib/components/SimpleTiptapRenderer.cjs.js +1 -1
  66. package/lib/components/SimpleTiptapRenderer.es.js +238 -211
  67. package/lib/components/SubscriptionSelector.cjs.js +1 -1
  68. package/lib/components/SubscriptionSelector.es.js +159 -154
  69. package/lib/countries.cjs.js +1 -1
  70. package/lib/countries.es.js +232 -75
  71. package/lib/coupon-server.cjs.js +1 -1
  72. package/lib/coupon-server.es.js +180 -224
  73. package/lib/coupons.cjs.js +1 -1
  74. package/lib/coupons.es.js +12 -14
  75. package/lib/currency-constants.cjs.js +1 -1
  76. package/lib/currency-constants.es.js +4 -4
  77. package/lib/currency-rest-client.cjs.js +1 -1
  78. package/lib/currency-rest-client.es.js +15 -22
  79. package/lib/currency-store.cjs.js +1 -1
  80. package/lib/currency-store.es.js +20 -27
  81. package/lib/currency-sync.cjs.js +1 -1
  82. package/lib/currency-sync.es.js +124 -170
  83. package/lib/currency.cjs.js +1 -1
  84. package/lib/currency.es.js +242 -310
  85. package/lib/customer-addresses.cjs.js +1 -1
  86. package/lib/customer-addresses.es.js +80 -109
  87. package/lib/customer-orders.cjs.js +1 -1
  88. package/lib/customer-orders.es.js +31 -43
  89. package/lib/customer.cjs.js +1 -1
  90. package/lib/customer.es.js +43 -52
  91. package/lib/export-helpers.cjs.js +1 -1
  92. package/lib/export-helpers.es.js +53 -52
  93. package/lib/factory.cjs.js +1 -1
  94. package/lib/factory.es.js +10 -7
  95. package/lib/freemius-coupons.cjs.js +1 -1
  96. package/lib/freemius-coupons.es.js +245 -262
  97. package/lib/freemius-license-claim.cjs.js +1 -1
  98. package/lib/freemius-license-claim.es.js +87 -71
  99. package/lib/freemius-license.cjs.js +1 -1
  100. package/lib/freemius-license.es.js +32 -39
  101. package/lib/freemius-order-sync.cjs.js +1 -1
  102. package/lib/freemius-order-sync.es.js +226 -290
  103. package/lib/freemius-trial-provision.cjs.js +1 -1
  104. package/lib/freemius-trial-provision.es.js +136 -130
  105. package/lib/inventory-settings.cjs.js +1 -1
  106. package/lib/inventory-settings.es.js +69 -77
  107. package/lib/invoice-server.cjs.js +3 -3
  108. package/lib/invoice-server.es.js +94 -141
  109. package/lib/invoice-ui.cjs.js +1 -1
  110. package/lib/invoice-ui.es.js +50 -66
  111. package/lib/invoice.cjs.js +1 -1
  112. package/lib/invoice.es.js +85 -94
  113. package/lib/order-inventory.cjs.js +25 -25
  114. package/lib/order-inventory.es.js +67 -79
  115. package/lib/order-tax-details.cjs.js +1 -1
  116. package/lib/order-tax-details.es.js +142 -153
  117. package/lib/pages/cms/coupons/CouponEditorForm.cjs.js +1 -1
  118. package/lib/pages/cms/coupons/CouponEditorForm.d.ts +1 -1
  119. package/lib/pages/cms/coupons/CouponEditorForm.es.js +227 -185
  120. package/lib/pages/cms/coupons/CouponsPage.cjs.js +2 -2
  121. package/lib/pages/cms/coupons/CouponsPage.d.ts +1 -1
  122. package/lib/pages/cms/coupons/CouponsPage.es.js +235 -166
  123. package/lib/pages/cms/coupons/CreateCouponDialog.cjs.js +1 -1
  124. package/lib/pages/cms/coupons/CreateCouponDialog.d.ts +1 -1
  125. package/lib/pages/cms/coupons/CreateCouponDialog.es.js +35 -34
  126. package/lib/pages/cms/coupons/EditCouponPage.cjs.js +1 -1
  127. package/lib/pages/cms/coupons/EditCouponPage.d.ts +1 -1
  128. package/lib/pages/cms/coupons/EditCouponPage.es.js +47 -47
  129. package/lib/pages/cms/coupons/ProductScopePicker.cjs.js +1 -1
  130. package/lib/pages/cms/coupons/ProductScopePicker.d.ts +1 -1
  131. package/lib/pages/cms/coupons/ProductScopePicker.es.js +128 -117
  132. package/lib/pages/cms/coupons/actions.cjs.js +1 -1
  133. package/lib/pages/cms/coupons/actions.es.js +112 -115
  134. package/lib/pages/cms/coupons/index.cjs.js +1 -0
  135. package/lib/pages/cms/coupons/index.es.js +3 -0
  136. package/lib/pages/cms/coupons/product-options.cjs.js +1 -1
  137. package/lib/pages/cms/coupons/product-options.es.js +21 -23
  138. package/lib/pages/cms/orders/ExportReportsDialog.cjs.js +1 -1
  139. package/lib/pages/cms/orders/ExportReportsDialog.es.js +135 -129
  140. package/lib/pages/cms/orders/MarkPaidButton.d.ts +1 -1
  141. package/lib/pages/cms/orders/OrderDetailPage.cjs.js +1 -1
  142. package/lib/pages/cms/orders/OrderDetailPage.d.ts +1 -1
  143. package/lib/pages/cms/orders/OrderDetailPage.es.js +186 -134
  144. package/lib/pages/cms/orders/OrderPrintButton.cjs.js +1 -1
  145. package/lib/pages/cms/orders/OrderPrintButton.d.ts +1 -1
  146. package/lib/pages/cms/orders/OrderPrintButton.es.js +15 -21
  147. package/lib/pages/cms/orders/OrderStatusForm.cjs.js +1 -1
  148. package/lib/pages/cms/orders/OrderStatusForm.d.ts +1 -1
  149. package/lib/pages/cms/orders/OrderStatusForm.es.js +85 -69
  150. package/lib/pages/cms/orders/OrdersPage.cjs.js +1 -1
  151. package/lib/pages/cms/orders/OrdersPage.d.ts +1 -1
  152. package/lib/pages/cms/orders/OrdersPage.es.js +170 -102
  153. package/lib/pages/cms/orders/actions.cjs.js +3 -3
  154. package/lib/pages/cms/orders/actions.es.js +53 -69
  155. package/lib/pages/cms/orders/export-actions.cjs.js +1 -1
  156. package/lib/pages/cms/orders/export-actions.es.js +23 -26
  157. package/lib/pages/cms/orders/index.cjs.js +1 -0
  158. package/lib/pages/cms/orders/index.es.js +6 -0
  159. package/lib/pages/cms/orders/server-actions.cjs.js +1 -1
  160. package/lib/pages/cms/orders/server-actions.es.js +60 -51
  161. package/lib/pages/cms/payments/PaymentsClient.cjs.js +1 -1
  162. package/lib/pages/cms/payments/PaymentsClient.d.ts +1 -1
  163. package/lib/pages/cms/payments/PaymentsClient.es.js +316 -346
  164. package/lib/pages/cms/payments/PaymentsPage.cjs.js +1 -1
  165. package/lib/pages/cms/payments/PaymentsPage.d.ts +1 -1
  166. package/lib/pages/cms/payments/PaymentsPage.es.js +29 -32
  167. package/lib/pages/cms/payments/actions.cjs.js +1 -1
  168. package/lib/pages/cms/payments/actions.es.js +38 -48
  169. package/lib/pages/cms/payments/index.cjs.js +1 -0
  170. package/lib/pages/cms/payments/index.es.js +3 -0
  171. package/lib/pages/cms/payments/queries.cjs.js +1 -1
  172. package/lib/pages/cms/payments/queries.es.js +38 -48
  173. package/lib/pages/cms/products/ProductsPage.cjs.js +1 -1
  174. package/lib/pages/cms/products/ProductsPage.d.ts +1 -1
  175. package/lib/pages/cms/products/ProductsPage.es.js +63 -66
  176. package/lib/pages/cms/products/[id]/edit/EditProductPage.d.ts +1 -1
  177. package/lib/pages/cms/products/_id_/edit/EditProductPage.cjs.js +1 -1
  178. package/lib/pages/cms/products/_id_/edit/EditProductPage.es.js +138 -155
  179. package/lib/pages/cms/products/actions.cjs.js +4 -4
  180. package/lib/pages/cms/products/actions.es.js +121 -162
  181. package/lib/pages/cms/products/attributes/AttributeManagementPage.cjs.js +1 -1
  182. package/lib/pages/cms/products/attributes/AttributeManagementPage.d.ts +1 -1
  183. package/lib/pages/cms/products/attributes/AttributeManagementPage.es.js +55 -47
  184. package/lib/pages/cms/products/attributes/components/AttributeManager.cjs.js +1 -1
  185. package/lib/pages/cms/products/attributes/components/AttributeManager.d.ts +1 -1
  186. package/lib/pages/cms/products/attributes/components/AttributeManager.es.js +285 -290
  187. package/lib/pages/cms/products/categories/CategoryManagementPage.cjs.js +1 -1
  188. package/lib/pages/cms/products/categories/CategoryManagementPage.d.ts +1 -1
  189. package/lib/pages/cms/products/categories/CategoryManagementPage.es.js +43 -35
  190. package/lib/pages/cms/products/categories/components/CategoryManager.cjs.js +1 -1
  191. package/lib/pages/cms/products/categories/components/CategoryManager.es.js +315 -262
  192. package/lib/pages/cms/products/components/CopyProductFromLanguage.cjs.js +1 -1
  193. package/lib/pages/cms/products/components/CopyProductFromLanguage.es.js +115 -113
  194. package/lib/pages/cms/products/components/CurrencyPriceFields.cjs.js +1 -1
  195. package/lib/pages/cms/products/components/CurrencyPriceFields.d.ts +1 -1
  196. package/lib/pages/cms/products/components/CurrencyPriceFields.es.js +136 -145
  197. package/lib/pages/cms/products/components/DeleteProductButton.cjs.js +1 -1
  198. package/lib/pages/cms/products/components/DeleteProductButton.d.ts +1 -1
  199. package/lib/pages/cms/products/components/DeleteProductButton.es.js +35 -47
  200. package/lib/pages/cms/products/components/FreemiusPricingDashboard.cjs.js +1 -1
  201. package/lib/pages/cms/products/components/FreemiusPricingDashboard.d.ts +1 -1
  202. package/lib/pages/cms/products/components/FreemiusPricingDashboard.es.js +106 -84
  203. package/lib/pages/cms/products/components/ProductCategorySelector.cjs.js +1 -1
  204. package/lib/pages/cms/products/components/ProductCategorySelector.es.js +156 -159
  205. package/lib/pages/cms/products/components/ProductForm.cjs.js +1 -1
  206. package/lib/pages/cms/products/components/ProductForm.es.js +872 -693
  207. package/lib/pages/cms/products/components/ProductMediaManager.cjs.js +1 -1
  208. package/lib/pages/cms/products/components/ProductMediaManager.es.js +106 -103
  209. package/lib/pages/cms/products/components/ProductsBulkTable.cjs.js +1 -1
  210. package/lib/pages/cms/products/components/ProductsBulkTable.d.ts +1 -1
  211. package/lib/pages/cms/products/components/ProductsBulkTable.es.js +303 -294
  212. package/lib/pages/cms/products/components/SaleScheduleFields.cjs.js +1 -1
  213. package/lib/pages/cms/products/components/SaleScheduleFields.d.ts +1 -1
  214. package/lib/pages/cms/products/components/SaleScheduleFields.es.js +111 -134
  215. package/lib/pages/cms/products/components/SyncFreemiusButton.cjs.js +1 -1
  216. package/lib/pages/cms/products/components/SyncFreemiusButton.d.ts +1 -1
  217. package/lib/pages/cms/products/components/SyncFreemiusButton.es.js +29 -35
  218. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.cjs.js +2 -2
  219. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.d.ts +1 -1
  220. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.es.js +36 -48
  221. package/lib/pages/cms/products/components/SyncProductForm.d.ts +1 -1
  222. package/lib/pages/cms/products/components/VariationsEditor.cjs.js +1 -1
  223. package/lib/pages/cms/products/components/VariationsEditor.d.ts +1 -1
  224. package/lib/pages/cms/products/components/VariationsEditor.es.js +396 -405
  225. package/lib/pages/cms/products/index.cjs.js +1 -0
  226. package/lib/pages/cms/products/index.es.js +8 -0
  227. package/lib/pages/cms/products/inventory/InventoryPage.cjs.js +1 -1
  228. package/lib/pages/cms/products/inventory/InventoryPage.d.ts +1 -1
  229. package/lib/pages/cms/products/inventory/InventoryPage.es.js +21 -15
  230. package/lib/pages/cms/products/inventory/InventoryTableClient.cjs.js +2 -2
  231. package/lib/pages/cms/products/inventory/InventoryTableClient.d.ts +1 -1
  232. package/lib/pages/cms/products/inventory/InventoryTableClient.es.js +230 -209
  233. package/lib/pages/cms/products/inventory/actions.cjs.js +3 -3
  234. package/lib/pages/cms/products/inventory/actions.es.js +83 -91
  235. package/lib/pages/cms/products/new/NewProductPage.cjs.js +1 -1
  236. package/lib/pages/cms/products/new/NewProductPage.d.ts +1 -1
  237. package/lib/pages/cms/products/new/NewProductPage.es.js +58 -74
  238. package/lib/pages/cms/products/product-price-sync.cjs.js +1 -1
  239. package/lib/pages/cms/products/product-price-sync.es.js +74 -89
  240. package/lib/pages/cms/products/server-actions.cjs.js +1 -1
  241. package/lib/pages/cms/products/server-actions.es.js +250 -233
  242. package/lib/pages/cms/shipping/ShippingPage.cjs.js +2 -2
  243. package/lib/pages/cms/shipping/ShippingPage.es.js +287 -209
  244. package/lib/pages/cms/shipping/components/RateForm.cjs.js +1 -1
  245. package/lib/pages/cms/shipping/components/RateForm.d.ts +1 -1
  246. package/lib/pages/cms/shipping/components/RateForm.es.js +439 -436
  247. package/lib/pages/cms/shipping/components/ZoneForm.cjs.js +1 -1
  248. package/lib/pages/cms/shipping/components/ZoneForm.es.js +245 -224
  249. package/lib/pages/cms/shipping/index.cjs.js +1 -0
  250. package/lib/pages/cms/shipping/index.es.js +3 -0
  251. package/lib/pages/cms/shipping/server-actions.cjs.js +1 -1
  252. package/lib/pages/cms/shipping/server-actions.es.js +131 -149
  253. package/lib/pages/cms/taxes/TaxesPage.cjs.js +1 -1
  254. package/lib/pages/cms/taxes/TaxesPage.d.ts +1 -1
  255. package/lib/pages/cms/taxes/TaxesPage.es.js +211 -169
  256. package/lib/pages/cms/taxes/actions.cjs.js +1 -1
  257. package/lib/pages/cms/taxes/actions.es.js +41 -53
  258. package/lib/pages/cms/taxes/components/TaxRateForm.cjs.js +1 -1
  259. package/lib/pages/cms/taxes/components/TaxRateForm.d.ts +1 -1
  260. package/lib/pages/cms/taxes/components/TaxRateForm.es.js +112 -99
  261. package/lib/pages/cms/taxes/index.cjs.js +1 -0
  262. package/lib/pages/cms/taxes/index.es.js +3 -0
  263. package/lib/payment-config.cjs.js +1 -1
  264. package/lib/payment-config.es.js +110 -126
  265. package/lib/product-actions.cjs.js +4 -4
  266. package/lib/product-actions.es.js +289 -544
  267. package/lib/product-context.cjs.js +1 -1
  268. package/lib/product-context.es.js +13 -15
  269. package/lib/product-schema.cjs.js +1 -1
  270. package/lib/product-schema.es.js +99 -134
  271. package/lib/providers/freemius.cjs.js +1 -5
  272. package/lib/providers/freemius.es.js +446 -530
  273. package/lib/providers/stripe.cjs.js +1 -1
  274. package/lib/providers/stripe.es.js +417 -477
  275. package/lib/server-actions/coupon-actions.cjs.js +1 -1
  276. package/lib/server-actions/coupon-actions.es.js +22 -22
  277. package/lib/server-actions/customer-actions.cjs.js +1 -1
  278. package/lib/server-actions/customer-actions.es.js +26 -28
  279. package/lib/server-actions/product-actions.cjs.js +1 -1
  280. package/lib/server-actions/product-actions.es.js +9 -15
  281. package/lib/server-actions/shipping-actions.cjs.js +1 -1
  282. package/lib/server-actions/shipping-actions.es.js +27 -24
  283. package/lib/server-actions/tax-actions.cjs.js +1 -1
  284. package/lib/server-actions/tax-actions.es.js +33 -39
  285. package/lib/shared-inventory.cjs.js +2 -2
  286. package/lib/shared-inventory.es.js +111 -160
  287. package/lib/shipping/resolver.cjs.js +2 -2
  288. package/lib/shipping/resolver.es.js +44 -61
  289. package/lib/shipping-rate-currency.cjs.js +1 -1
  290. package/lib/shipping-rate-currency.es.js +52 -67
  291. package/lib/states.cjs.js +1 -1
  292. package/lib/states.es.js +333 -154
  293. package/lib/stripe/checkout.cjs.js +1 -1
  294. package/lib/stripe/checkout.es.js +125 -181
  295. package/lib/stripe/client.cjs.js +1 -1
  296. package/lib/stripe/client.es.js +14 -19
  297. package/lib/stripe/order-sync.cjs.js +1 -1
  298. package/lib/stripe/order-sync.es.js +106 -126
  299. package/lib/stripe/webhooks.cjs.js +1 -1
  300. package/lib/stripe/webhooks.es.js +37 -31
  301. package/lib/tax-calculation.cjs.js +1 -1
  302. package/lib/tax-calculation.es.js +84 -98
  303. package/lib/trials.cjs.js +1 -1
  304. package/lib/trials.es.js +24 -30
  305. package/lib/types.cjs.js +1 -1
  306. package/lib/types.es.js +21 -27
  307. package/lib/use-cart.cjs.js +1 -1
  308. package/lib/use-cart.es.js +38 -40
  309. package/lib/use-price-formatter.cjs.js +1 -1
  310. package/lib/use-price-formatter.es.js +10 -11
  311. package/lib/variation-utils.cjs.js +1 -1
  312. package/lib/variation-utils.es.js +199 -261
  313. package/lib/zod-config.cjs.js +1 -1
  314. package/lib/zod-config.es.js +5 -6
  315. package/package.json +16 -16
  316. package/server.cjs.js +1 -1
  317. package/server.es.js +56 -211
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),i=require("react"),r=require("@nextblock-cms/ui"),C=require("lucide-react"),Z=require("../server-actions.cjs.js"),p=require("@nextblock-cms/utils"),T=require("../../../../currency.cjs.js"),$=require("../../../../shipping-rate-currency.cjs.js");function A(h,m){if(typeof h!="number")return"";const d=p.minorUnitAmountToMajor(h,m);return p.getCurrencyMinorUnitFactor(m)===1?d.toFixed(0):d.toFixed(2)}function te(h){return h.reduce((m,d)=>(m[d.code]=p.getCurrencyMinorUnitFactor(d.code)===1?"0":"0.00",m),{})}function N(h,m){const d=String(h||"").trim();if(!d)return null;const g=Number(d);return!Number.isFinite(g)||g<0?null:p.majorUnitAmountToMinor(g,m)}function J(h){return h.currencies.reduce((m,d)=>(m[d.code]=A(h.amounts[d.code],d.code),m),{})}function re({zoneId:h,zoneName:m,languages:d,currencies:g=[],defaultCurrencyCode:K="USD",mode:Q="create",initialData:l}){const[z,I]=i.useState(!1),S=Q==="edit",U=i.useMemo(()=>d.find(s=>s.is_default)||d[0]||null,[d]),B=i.useMemo(()=>d.filter(s=>!s.is_default),[d]),M=p.normalizeCurrencyCode(K),a=i.useMemo(()=>{const s=T.normalizeCurrencyRecord({code:M,symbol:M,exchange_rate:1,is_default:!0,is_active:!0}),n=(g.length>0?g:[s]).map(t=>T.normalizeCurrencyRecord(t)).filter(t=>t.is_active!==!1).sort((t,c)=>t.is_default!==c.is_default?t.is_default?-1:1:t.code.localeCompare(c.code));return n.length>0?n:[s]},[g,M]),f=i.useMemo(()=>a.find(s=>s.is_default)||a[0],[a]),[F,P]=i.useState(l?.name||""),[V,D]=i.useState(l?.name_translations||{}),[j,G]=i.useState(l?.method_type||"flat_rate"),[u,H]=i.useState($.normalizeShippingRateCurrencyMode(l?.currency_pricing_mode)),[o,O]=i.useState(p.normalizeCurrencyCode(l?.cost_currency||f?.code||M)),[b,_]=i.useState({}),[v,w]=i.useState({}),[E,k]=i.useState(!1),L=i.useMemo(()=>{if(u==="manual")return a.reduce((t,c)=>(t[c.code]=b[c.code]??"",t),{});const s=a.reduce((t,c)=>(t[c.code]=b[c.code]??(c.code===o,""),t),{}),n=N(b[o],o);if(n===null)return s;for(const t of a){if(t.code===o){s[t.code]=b[t.code]??A(n,t.code);continue}s[t.code]=A(T.convertMinorUnitAmount({amount:n,fromCurrencyCode:o,toCurrencyCode:t.code,currencies:a}),t.code)}return s},[a,b,u,o]),q=i.useMemo(()=>{if(u==="manual")return a.reduce((t,c)=>(t[c.code]=v[c.code]??"",t),{});const s=a.reduce((t,c)=>(t[c.code]=v[c.code]??"",t),{}),n=N(v[o],o);if(n===null)return s;for(const t of a){if(t.code===o){s[t.code]=v[t.code]??A(n,t.code);continue}s[t.code]=A(T.convertMinorUnitAmount({amount:n,fromCurrencyCode:o,toCurrencyCode:t.code,currencies:a}),t.code)}return s},[a,v,u,o]);i.useEffect(()=>{f&&(a.some(s=>s.code===o)||O(f.code))},[a,f,o]),i.useEffect(()=>{if(!z||!f)return;const s=$.normalizeShippingRateCurrencyMode(l?.currency_pricing_mode),n=$.sanitizeShippingRateAmountMaps({currencies:a,mode:s,sourceCurrencyCode:l?.cost_currency||f.code,costAmounts:l?.cost_amounts||void 0,minOrderAmounts:l?.min_order_amounts||void 0,fallbackCostAmount:l?.cost_amount,fallbackMinOrderAmount:l?.min_order_amount});P(l?.name||""),D(l?.name_translations||{}),G(l?.method_type||"flat_rate"),H(s),O(n.sourceCurrencyCode),_(J({amounts:n.costAmounts,currencies:a})),w(J({amounts:n.minOrderAmounts,currencies:a}))},[a,f,l,z]);const W=s=>{s!==u&&(s==="manual"&&(_(L),w(q)),H(s))},Y=s=>{const n=p.normalizeCurrencyCode(s);_(t=>({...t,[n]:L[n]??t[n]??""})),w(t=>({...t,[n]:q[n]??t[n]??""})),O(n)},ee=s=>{G(s),s==="free_shipping"&&_(te(a))},se=async s=>{s.preventDefault(),k(!0);const n={},t={};if(u==="manual")for(const R of a){const x=R.code;if(j==="free_shipping")n[x]=0;else{const X=N(b[x],x);if(X===null){k(!1),alert(`Enter a valid shipping cost for ${x}.`);return}n[x]=X}t[x]=N(v[x],x)??0}else{const R=j==="free_shipping"?0:N(b[o],o);if(R===null){k(!1),alert(`Enter a valid shipping cost for ${o}.`);return}n[o]=R,t[o]=N(v[o],o)??0}const c={name:F,nameTranslations:V,type:j,currencyPricingMode:u,sourceCurrencyCode:o,costAmounts:n,minOrderAmounts:t},y=S&&l?.id?await Z.updateShippingRate(l.id,c):await Z.createShippingRate(h,c);k(!1),y.success?I(!1):y.error&&alert(y.error)};return e.jsxs(r.Dialog,{open:z,onOpenChange:I,children:[e.jsx(r.DialogTrigger,{asChild:!0,children:S?e.jsx(r.Button,{variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-primary",children:e.jsx(C.Edit2,{className:"h-3 w-3"})}):e.jsxs(r.Button,{variant:"outline",size:"sm",className:"h-8 gap-1.5 border-dashed hover:border-solid shadow-sm",children:[e.jsx(C.Plus,{className:"h-3.5 w-3.5"}),"Add Rate"]})}),e.jsx(r.DialogContent,{className:"max-h-[85vh] max-w-4xl overflow-y-auto",children:e.jsxs("form",{onSubmit:se,children:[e.jsxs(r.DialogHeader,{children:[e.jsx(r.DialogTitle,{children:S?"Edit Shipping Rate":"Add Shipping Rate"}),e.jsxs(r.DialogDescription,{children:["Configure shipping costs and localized labels for matching orders in ",e.jsx("strong",{children:m}),"."]})]}),e.jsxs("div",{className:"grid gap-5 py-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(r.Label,{htmlFor:"rate-name",children:["Rate Name",U?` (${U.name})`:""]}),e.jsx(r.Input,{id:"rate-name",value:F,onChange:s=>P(s.target.value),placeholder:"e.g. Standard, Express, Free Shipping",required:!0})]}),B.length>0&&e.jsxs("div",{className:"space-y-4 rounded-xl border bg-slate-50/70 p-4 dark:bg-slate-900/40",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(C.Languages,{className:"h-4 w-4 text-slate-500"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"Translations"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Add translated shipping rate labels for the active storefront languages."})]})]}),e.jsx("div",{className:"grid gap-4 md:grid-cols-2",children:B.map(s=>e.jsxs("div",{className:"space-y-2",children:[e.jsx(r.Label,{htmlFor:`rate-name-${s.code}`,children:s.name}),e.jsx(r.Input,{id:`rate-name-${s.code}`,value:V[s.code]||"",onChange:n=>D(t=>({...t,[s.code]:n.target.value})),placeholder:F||"Translated label"})]},s.code))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(r.Label,{htmlFor:"type",children:"Method Type"}),e.jsxs(r.Select,{value:j,onValueChange:ee,children:[e.jsx(r.SelectTrigger,{id:"type",className:"bg-slate-50/50 dark:bg-slate-900/50",children:e.jsx(r.SelectValue,{placeholder:"Select type"})}),e.jsxs(r.SelectContent,{children:[e.jsx(r.SelectItem,{value:"flat_rate",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"p-1 min-w-5 h-5 rounded bg-emerald-100 dark:bg-emerald-900/30 text-emerald-600",children:e.jsx(C.DollarSign,{className:"h-3 w-3"})}),e.jsx("span",{children:"Flat Rate"})]})}),e.jsx(r.SelectItem,{value:"free_shipping",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"p-1 min-w-5 h-5 rounded bg-amber-100 dark:bg-amber-900/30 text-amber-600",children:e.jsx(C.Gift,{className:"h-3 w-3"})}),e.jsx("span",{children:"Free Shipping"})]})})]})]})]}),e.jsxs("div",{className:"space-y-3 rounded-xl border bg-slate-50/70 p-4 dark:bg-slate-900/40",children:[e.jsxs("label",{className:"flex items-start gap-3",children:[e.jsx("input",{type:"checkbox",checked:u==="auto",onChange:s=>W(s.target.checked?"auto":"manual"),className:"mt-1 h-4 w-4 rounded border-slate-300 text-primary focus:ring-primary"}),e.jsxs("span",{className:"space-y-1",children:[e.jsx("span",{className:"block text-sm font-medium text-slate-900 dark:text-slate-100",children:"Auto-sync all currency rates from one source amount"}),e.jsx("span",{className:"block text-xs text-muted-foreground",children:"Turn this off to set exact shipping costs and free-shipping thresholds for every active currency manually."})]})]}),u==="auto"?e.jsxs("div",{className:"space-y-2",children:[e.jsx(r.Label,{htmlFor:"rate-currency",children:"Sync From Currency"}),e.jsxs(r.Select,{value:o,onValueChange:Y,children:[e.jsx(r.SelectTrigger,{id:"rate-currency",className:"bg-background",children:e.jsx(r.SelectValue,{placeholder:"Select currency"})}),e.jsx(r.SelectContent,{children:a.map(s=>e.jsxs(r.SelectItem,{value:s.code,children:[s.code,s.is_default?" (Default)":""]},s.code))})]}),e.jsx("p",{className:"text-[10px] text-slate-500",children:"Enter the source amount once and the other currencies will be derived automatically using the current FX rates."})]}):e.jsx("p",{className:"text-[10px] text-slate-500",children:"Manual mode stores exact values per currency. This is the best choice when shipping should not follow exchange-rate math directly."})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"Currency Rates"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:j==="free_shipping"?"Free-shipping methods keep cost at zero, but you can still control the threshold per currency.":u==="auto"?`Only ${o} is editable. The rest are derived automatically.`:"Set the exact shopper-facing shipping price for each active currency."})]}),e.jsx("div",{className:"grid gap-4 md:grid-cols-2 xl:grid-cols-3",children:a.map(s=>{const n=u==="auto"&&s.code!==o,t=p.getCurrencyMinorUnitFactor(s.code)===1?"1":"0.01";return e.jsxs("div",{className:"space-y-4 rounded-xl border bg-card/70 p-4 shadow-sm",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium",children:s.code}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Rate ",s.exchange_rate]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[s.is_default?e.jsx(r.Badge,{variant:"outline",children:"Default"}):null,u==="auto"&&s.code===o?e.jsx(r.Badge,{children:"Source"}):null,n?e.jsx(r.Badge,{variant:"outline",children:"Derived"}):null]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(r.Label,{htmlFor:`rate-cost-${s.code}`,children:["Cost (",s.code,")"]}),e.jsxs("div",{className:"relative",children:[e.jsx(C.DollarSign,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-slate-400"}),e.jsx(r.Input,{id:`rate-cost-${s.code}`,type:"number",step:t,min:"0",value:L[s.code]??"",onChange:c=>_(y=>({...y,[s.code]:c.target.value})),className:"pl-9 bg-slate-50/50 dark:bg-slate-900/50 disabled:opacity-70",disabled:j==="free_shipping"||n,required:j!=="free_shipping"&&u==="manual"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(r.Label,{htmlFor:`rate-threshold-${s.code}`,children:["Free-Shipping Threshold (",s.code,")"]}),e.jsxs("div",{className:"relative",children:[e.jsx(C.DollarSign,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-slate-400"}),e.jsx(r.Input,{id:`rate-threshold-${s.code}`,type:"number",step:t,min:"0",value:q[s.code]??"",onChange:c=>w(y=>({...y,[s.code]:c.target.value})),className:"pl-9 bg-slate-50/50 dark:bg-slate-900/50 disabled:opacity-70",disabled:n,placeholder:p.getCurrencyMinorUnitFactor(s.code)===1?"0":"0.00"})]})]}),n?e.jsxs("p",{className:"text-[10px] text-muted-foreground",children:["This currency is synced automatically from ",o,"."]}):u==="manual"?e.jsx("p",{className:"text-[10px] text-muted-foreground",children:"Enter the exact amount shoppers should see in this currency."}):null]},s.code)})})]})]}),e.jsxs(r.DialogFooter,{className:"bg-slate-50 dark:bg-slate-900/50 -mx-6 -mb-6 p-4 border-t dark:border-slate-800",children:[e.jsx(r.Button,{type:"button",variant:"ghost",onClick:()=>I(!1),disabled:E,children:"Cancel"}),e.jsx(r.Button,{type:"submit",disabled:E||!F.trim(),children:E?S?"Saving...":"Adding...":S?"Save Changes":"Add Rate"})]})]})})]})}exports.RateForm=re;
1
+ "use client";const e=require("../../../../currency.cjs.js"),t=require("../../../../shipping-rate-currency.cjs.js"),n=require("../server-actions.cjs.js");let r=require("react"),i=require("lucide-react"),a=require("@nextblock-cms/utils"),o=require("react/jsx-runtime"),s=require("@nextblock-cms/ui");function c(e,t){if(typeof e!=`number`)return``;let n=(0,a.minorUnitAmountToMajor)(e,t);return(0,a.getCurrencyMinorUnitFactor)(t)===1?n.toFixed(0):n.toFixed(2)}function l(e){return e.reduce((e,t)=>(e[t.code]=(0,a.getCurrencyMinorUnitFactor)(t.code)===1?`0`:`0.00`,e),{})}function u(e,t){let n=String(e||``).trim();if(!n)return null;let r=Number(n);return!Number.isFinite(r)||r<0?null:(0,a.majorUnitAmountToMinor)(r,t)}function d(e){return e.currencies.reduce((t,n)=>(t[n.code]=c(e.amounts[n.code],n.code),t),{})}function f({zoneId:f,zoneName:p,languages:m,currencies:h=[],defaultCurrencyCode:g=`USD`,mode:_=`create`,initialData:v}){let[y,b]=(0,r.useState)(!1),x=_===`edit`,S=(0,r.useMemo)(()=>m.find(e=>e.is_default)||m[0]||null,[m]),C=(0,r.useMemo)(()=>m.filter(e=>!e.is_default),[m]),w=(0,a.normalizeCurrencyCode)(g),T=(0,r.useMemo)(()=>{let t=e.normalizeCurrencyRecord({code:w,symbol:w,exchange_rate:1,is_default:!0,is_active:!0}),n=(h.length>0?h:[t]).map(t=>e.normalizeCurrencyRecord(t)).filter(e=>e.is_active!==!1).sort((e,t)=>e.is_default===t.is_default?e.code.localeCompare(t.code):e.is_default?-1:1);return n.length>0?n:[t]},[h,w]),E=(0,r.useMemo)(()=>T.find(e=>e.is_default)||T[0],[T]),[D,O]=(0,r.useState)(v?.name||``),[k,A]=(0,r.useState)(v?.name_translations||{}),[j,M]=(0,r.useState)(v?.method_type||`flat_rate`),[N,P]=(0,r.useState)(t.normalizeShippingRateCurrencyMode(v?.currency_pricing_mode)),[F,I]=(0,r.useState)((0,a.normalizeCurrencyCode)(v?.cost_currency||E?.code||w)),[L,R]=(0,r.useState)({}),[z,B]=(0,r.useState)({}),[V,H]=(0,r.useState)(!1),U=(0,r.useMemo)(()=>{if(N===`manual`)return T.reduce((e,t)=>(e[t.code]=L[t.code]??``,e),{});let t=T.reduce((e,t)=>(e[t.code]=L[t.code]??(t.code,``),e),{}),n=u(L[F],F);if(n===null)return t;for(let r of T){if(r.code===F){t[r.code]=L[r.code]??c(n,r.code);continue}t[r.code]=c(e.convertMinorUnitAmount({amount:n,fromCurrencyCode:F,toCurrencyCode:r.code,currencies:T}),r.code)}return t},[T,L,N,F]),W=(0,r.useMemo)(()=>{if(N===`manual`)return T.reduce((e,t)=>(e[t.code]=z[t.code]??``,e),{});let t=T.reduce((e,t)=>(e[t.code]=z[t.code]??``,e),{}),n=u(z[F],F);if(n===null)return t;for(let r of T){if(r.code===F){t[r.code]=z[r.code]??c(n,r.code);continue}t[r.code]=c(e.convertMinorUnitAmount({amount:n,fromCurrencyCode:F,toCurrencyCode:r.code,currencies:T}),r.code)}return t},[T,z,N,F]);(0,r.useEffect)(()=>{E&&(T.some(e=>e.code===F)||I(E.code))},[T,E,F]),(0,r.useEffect)(()=>{if(!y||!E)return;let e=t.normalizeShippingRateCurrencyMode(v?.currency_pricing_mode),n=t.sanitizeShippingRateAmountMaps({currencies:T,mode:e,sourceCurrencyCode:v?.cost_currency||E.code,costAmounts:v?.cost_amounts||void 0,minOrderAmounts:v?.min_order_amounts||void 0,fallbackCostAmount:v?.cost_amount,fallbackMinOrderAmount:v?.min_order_amount});O(v?.name||``),A(v?.name_translations||{}),M(v?.method_type||`flat_rate`),P(e),I(n.sourceCurrencyCode),R(d({amounts:n.costAmounts,currencies:T})),B(d({amounts:n.minOrderAmounts,currencies:T}))},[T,E,v,y]);let G=e=>{e!==N&&(e===`manual`&&(R(U),B(W)),P(e))};return(0,o.jsxs)(s.Dialog,{open:y,onOpenChange:b,children:[(0,o.jsx)(s.DialogTrigger,{asChild:!0,children:x?(0,o.jsx)(s.Button,{variant:`ghost`,size:`icon`,className:`h-7 w-7 text-slate-400 hover:text-primary`,children:(0,o.jsx)(i.Edit2,{className:`h-3 w-3`})}):(0,o.jsxs)(s.Button,{variant:`outline`,size:`sm`,className:`h-8 gap-1.5 border-dashed hover:border-solid shadow-sm`,children:[(0,o.jsx)(i.Plus,{className:`h-3.5 w-3.5`}),`Add Rate`]})}),(0,o.jsx)(s.DialogContent,{className:`max-h-[85vh] max-w-4xl overflow-y-auto`,children:(0,o.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault(),H(!0);let t={},r={};if(N===`manual`)for(let e of T){let n=e.code;if(j===`free_shipping`)t[n]=0;else{let e=u(L[n],n);if(e===null){H(!1),alert(`Enter a valid shipping cost for ${n}.`);return}t[n]=e}r[n]=u(z[n],n)??0}else{let e=j===`free_shipping`?0:u(L[F],F);if(e===null){H(!1),alert(`Enter a valid shipping cost for ${F}.`);return}t[F]=e,r[F]=u(z[F],F)??0}let i={name:D,nameTranslations:k,type:j,currencyPricingMode:N,sourceCurrencyCode:F,costAmounts:t,minOrderAmounts:r},a=x&&v?.id?await n.updateShippingRate(v.id,i):await n.createShippingRate(f,i);H(!1),a.success?b(!1):a.error&&alert(a.error)},children:[(0,o.jsxs)(s.DialogHeader,{children:[(0,o.jsx)(s.DialogTitle,{children:x?`Edit Shipping Rate`:`Add Shipping Rate`}),(0,o.jsxs)(s.DialogDescription,{children:[`Configure shipping costs and localized labels for matching orders in `,(0,o.jsx)(`strong`,{children:p}),`.`]})]}),(0,o.jsxs)(`div`,{className:`grid gap-5 py-6`,children:[(0,o.jsxs)(`div`,{className:`space-y-2`,children:[(0,o.jsxs)(s.Label,{htmlFor:`rate-name`,children:[`Rate Name`,S?` (${S.name})`:``]}),(0,o.jsx)(s.Input,{id:`rate-name`,value:D,onChange:e=>O(e.target.value),placeholder:`e.g. Standard, Express, Free Shipping`,required:!0})]}),C.length>0&&(0,o.jsxs)(`div`,{className:`space-y-4 rounded-xl border bg-slate-50/70 p-4 dark:bg-slate-900/40`,children:[(0,o.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,o.jsx)(i.Languages,{className:`h-4 w-4 text-slate-500`}),(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-sm font-medium`,children:`Translations`}),(0,o.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Add translated shipping rate labels for the active storefront languages.`})]})]}),(0,o.jsx)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:C.map(e=>(0,o.jsxs)(`div`,{className:`space-y-2`,children:[(0,o.jsx)(s.Label,{htmlFor:`rate-name-${e.code}`,children:e.name}),(0,o.jsx)(s.Input,{id:`rate-name-${e.code}`,value:k[e.code]||``,onChange:t=>A(n=>({...n,[e.code]:t.target.value})),placeholder:D||`Translated label`})]},e.code))})]}),(0,o.jsxs)(`div`,{className:`space-y-2`,children:[(0,o.jsx)(s.Label,{htmlFor:`type`,children:`Method Type`}),(0,o.jsxs)(s.Select,{value:j,onValueChange:e=>{M(e),e===`free_shipping`&&R(l(T))},children:[(0,o.jsx)(s.SelectTrigger,{id:`type`,className:`bg-slate-50/50 dark:bg-slate-900/50`,children:(0,o.jsx)(s.SelectValue,{placeholder:`Select type`})}),(0,o.jsxs)(s.SelectContent,{children:[(0,o.jsx)(s.SelectItem,{value:`flat_rate`,children:(0,o.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,o.jsx)(`div`,{className:`p-1 min-w-5 h-5 rounded bg-emerald-100 dark:bg-emerald-900/30 text-emerald-600`,children:(0,o.jsx)(i.DollarSign,{className:`h-3 w-3`})}),(0,o.jsx)(`span`,{children:`Flat Rate`})]})}),(0,o.jsx)(s.SelectItem,{value:`free_shipping`,children:(0,o.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,o.jsx)(`div`,{className:`p-1 min-w-5 h-5 rounded bg-amber-100 dark:bg-amber-900/30 text-amber-600`,children:(0,o.jsx)(i.Gift,{className:`h-3 w-3`})}),(0,o.jsx)(`span`,{children:`Free Shipping`})]})})]})]})]}),(0,o.jsxs)(`div`,{className:`space-y-3 rounded-xl border bg-slate-50/70 p-4 dark:bg-slate-900/40`,children:[(0,o.jsxs)(`label`,{className:`flex items-start gap-3`,children:[(0,o.jsx)(`input`,{type:`checkbox`,checked:N===`auto`,onChange:e=>G(e.target.checked?`auto`:`manual`),className:`mt-1 h-4 w-4 rounded border-slate-300 text-primary focus:ring-primary`}),(0,o.jsxs)(`span`,{className:`space-y-1`,children:[(0,o.jsx)(`span`,{className:`block text-sm font-medium text-slate-900 dark:text-slate-100`,children:`Auto-sync all currency rates from one source amount`}),(0,o.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:`Turn this off to set exact shipping costs and free-shipping thresholds for every active currency manually.`})]})]}),N===`auto`?(0,o.jsxs)(`div`,{className:`space-y-2`,children:[(0,o.jsx)(s.Label,{htmlFor:`rate-currency`,children:`Sync From Currency`}),(0,o.jsxs)(s.Select,{value:F,onValueChange:e=>{let t=(0,a.normalizeCurrencyCode)(e);R(e=>({...e,[t]:U[t]??e[t]??``})),B(e=>({...e,[t]:W[t]??e[t]??``})),I(t)},children:[(0,o.jsx)(s.SelectTrigger,{id:`rate-currency`,className:`bg-background`,children:(0,o.jsx)(s.SelectValue,{placeholder:`Select currency`})}),(0,o.jsx)(s.SelectContent,{children:T.map(e=>(0,o.jsxs)(s.SelectItem,{value:e.code,children:[e.code,e.is_default?` (Default)`:``]},e.code))})]}),(0,o.jsx)(`p`,{className:`text-[10px] text-slate-500`,children:`Enter the source amount once and the other currencies will be derived automatically using the current FX rates.`})]}):(0,o.jsx)(`p`,{className:`text-[10px] text-slate-500`,children:`Manual mode stores exact values per currency. This is the best choice when shipping should not follow exchange-rate math directly.`})]}),(0,o.jsxs)(`div`,{className:`space-y-3`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-sm font-medium`,children:`Currency Rates`}),(0,o.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:j===`free_shipping`?`Free-shipping methods keep cost at zero, but you can still control the threshold per currency.`:N===`auto`?`Only ${F} is editable. The rest are derived automatically.`:`Set the exact shopper-facing shipping price for each active currency.`})]}),(0,o.jsx)(`div`,{className:`grid gap-4 md:grid-cols-2 xl:grid-cols-3`,children:T.map(e=>{let t=N===`auto`&&e.code!==F,n=(0,a.getCurrencyMinorUnitFactor)(e.code)===1?`1`:`0.01`;return(0,o.jsxs)(`div`,{className:`space-y-4 rounded-xl border bg-card/70 p-4 shadow-sm`,children:[(0,o.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`font-medium`,children:e.code}),(0,o.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Rate `,e.exchange_rate]})]}),(0,o.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[e.is_default?(0,o.jsx)(s.Badge,{variant:`outline`,children:`Default`}):null,N===`auto`&&e.code===F?(0,o.jsx)(s.Badge,{children:`Source`}):null,t?(0,o.jsx)(s.Badge,{variant:`outline`,children:`Derived`}):null]})]}),(0,o.jsxs)(`div`,{className:`space-y-2`,children:[(0,o.jsxs)(s.Label,{htmlFor:`rate-cost-${e.code}`,children:[`Cost (`,e.code,`)`]}),(0,o.jsxs)(`div`,{className:`relative`,children:[(0,o.jsx)(i.DollarSign,{className:`absolute left-2.5 top-2.5 h-4 w-4 text-slate-400`}),(0,o.jsx)(s.Input,{id:`rate-cost-${e.code}`,type:`number`,step:n,min:`0`,value:U[e.code]??``,onChange:t=>R(n=>({...n,[e.code]:t.target.value})),className:`pl-9 bg-slate-50/50 dark:bg-slate-900/50 disabled:opacity-70`,disabled:j===`free_shipping`||t,required:j!==`free_shipping`&&N===`manual`})]})]}),(0,o.jsxs)(`div`,{className:`space-y-2`,children:[(0,o.jsxs)(s.Label,{htmlFor:`rate-threshold-${e.code}`,children:[`Free-Shipping Threshold (`,e.code,`)`]}),(0,o.jsxs)(`div`,{className:`relative`,children:[(0,o.jsx)(i.DollarSign,{className:`absolute left-2.5 top-2.5 h-4 w-4 text-slate-400`}),(0,o.jsx)(s.Input,{id:`rate-threshold-${e.code}`,type:`number`,step:n,min:`0`,value:W[e.code]??``,onChange:t=>B(n=>({...n,[e.code]:t.target.value})),className:`pl-9 bg-slate-50/50 dark:bg-slate-900/50 disabled:opacity-70`,disabled:t,placeholder:(0,a.getCurrencyMinorUnitFactor)(e.code)===1?`0`:`0.00`})]})]}),t?(0,o.jsxs)(`p`,{className:`text-[10px] text-muted-foreground`,children:[`This currency is synced automatically from `,F,`.`]}):N===`manual`?(0,o.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Enter the exact amount shoppers should see in this currency.`}):null]},e.code)})})]})]}),(0,o.jsxs)(s.DialogFooter,{className:`bg-slate-50 dark:bg-slate-900/50 -mx-6 -mb-6 p-4 border-t dark:border-slate-800`,children:[(0,o.jsx)(s.Button,{type:`button`,variant:`ghost`,onClick:()=>b(!1),disabled:V,children:`Cancel`}),(0,o.jsx)(s.Button,{type:`submit`,disabled:V||!D.trim(),children:V?x?`Saving...`:`Adding...`:x?`Save Changes`:`Add Rate`})]})]})})]})}exports.RateForm=f;
@@ -22,5 +22,5 @@ interface RateFormProps {
22
22
  min_order_amounts?: Record<string, number> | null;
23
23
  };
24
24
  }
25
- export declare function RateForm({ zoneId, zoneName, languages, currencies, defaultCurrencyCode, mode, initialData, }: RateFormProps): import("react").JSX.Element;
25
+ export declare function RateForm({ zoneId, zoneName, languages, currencies, defaultCurrencyCode, mode, initialData, }: RateFormProps): import('react').JSX.Element;
26
26
  export {};