@nextblock-cms/ecom 0.20.1 → 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
@@ -5,5 +5,5 @@ interface DeleteProductButtonProps {
5
5
  redirectTo?: string;
6
6
  deleteAction: () => Promise<void>;
7
7
  }
8
- export declare function DeleteProductButton({ productName, isIcon, className, redirectTo, deleteAction, }: DeleteProductButtonProps): import("react").JSX.Element;
8
+ export declare function DeleteProductButton({ productName, isIcon, className, redirectTo, deleteAction, }: DeleteProductButtonProps): import('react').JSX.Element;
9
9
  export {};
@@ -1,48 +1,36 @@
1
- 'use client';
2
- import { jsx as t } from "react/jsx-runtime";
3
- import { Button as s } from "@nextblock-cms/ui";
4
- import { useTransition as p } from "react";
5
- import { Trash2 as h } from "lucide-react";
6
- import { useRouter as m } from "next/navigation";
7
- function b({
8
- productName: l,
9
- isIcon: c = !1,
10
- className: r,
11
- redirectTo: o,
12
- deleteAction: d
13
- }) {
14
- const [e, u] = p(), n = m(), i = async (a) => {
15
- a.preventDefault(), a.stopPropagation(), window.confirm(`Are you sure you want to delete "${l}"? This action cannot be undone.`) && u(async () => {
16
- try {
17
- await d(), o ? n.push(o) : n.refresh();
18
- } catch (f) {
19
- console.error("Failed to delete product:", f), alert("Failed to delete product. Please try again.");
20
- }
21
- });
22
- };
23
- return c ? /* @__PURE__ */ t(
24
- s,
25
- {
26
- variant: "ghost",
27
- size: "icon",
28
- onClick: i,
29
- disabled: e,
30
- className: `text-red-500 hover:text-red-600 hover:bg-red-50 ${r}`,
31
- title: "Delete Product",
32
- children: /* @__PURE__ */ t(h, { className: "h-4 w-4" })
33
- }
34
- ) : /* @__PURE__ */ t(
35
- s,
36
- {
37
- variant: "destructive",
38
- onClick: i,
39
- disabled: e,
40
- className: r,
41
- type: "button",
42
- children: e ? "Deleting..." : "Delete Product"
43
- }
44
- );
1
+ "use client";
2
+ import { useTransition as e } from "react";
3
+ import { Trash2 as t } from "lucide-react";
4
+ import { jsx as n } from "react/jsx-runtime";
5
+ import { useRouter as r } from "next/navigation";
6
+ import { Button as i } from "@nextblock-cms/ui";
7
+ //#region libs/ecommerce/src/lib/pages/cms/products/components/DeleteProductButton.tsx
8
+ function a({ productName: a, isIcon: o = !1, className: s, redirectTo: c, deleteAction: l }) {
9
+ let [u, d] = e(), f = r(), p = async (e) => {
10
+ e.preventDefault(), e.stopPropagation(), window.confirm(`Are you sure you want to delete "${a}"? This action cannot be undone.`) && d(async () => {
11
+ try {
12
+ await l(), c ? f.push(c) : f.refresh();
13
+ } catch (e) {
14
+ console.error("Failed to delete product:", e), alert("Failed to delete product. Please try again.");
15
+ }
16
+ });
17
+ };
18
+ return o ? /* @__PURE__ */ n(i, {
19
+ variant: "ghost",
20
+ size: "icon",
21
+ onClick: p,
22
+ disabled: u,
23
+ className: `text-red-500 hover:text-red-600 hover:bg-red-50 ${s}`,
24
+ title: "Delete Product",
25
+ children: /* @__PURE__ */ n(t, { className: "h-4 w-4" })
26
+ }) : /* @__PURE__ */ n(i, {
27
+ variant: "destructive",
28
+ onClick: p,
29
+ disabled: u,
30
+ className: s,
31
+ type: "button",
32
+ children: u ? "Deleting..." : "Delete Product"
33
+ });
45
34
  }
46
- export {
47
- b as DeleteProductButton
48
- };
35
+ //#endregion
36
+ export { a as DeleteProductButton };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),h=require("react"),r=require("@nextblock-cms/ui"),o=require("sonner"),m=require("../actions.cjs.js");function b({plans:l}){return e.jsx("div",{className:"w-full",children:l&&l.length>0?e.jsx("div",{className:"space-y-8",children:l.map(a=>e.jsxs("div",{className:"w-full",children:[l.length>1&&e.jsx("h3",{className:"font-semibold text-lg text-slate-700 dark:text-slate-300 border-b pb-2 mb-4 mt-6",children:a.title||a.name}),e.jsx("div",{className:`${l.length>1?"rounded-lg border":"rounded-b-lg border-x border-b"} overflow-x-auto dark:border-slate-700 bg-card`,children:e.jsxs(r.Table,{children:[e.jsx(r.TableHeader,{children:e.jsxs(r.TableRow,{children:[e.jsx(r.TableHead,{children:"Licenses"}),e.jsx(r.TableHead,{children:"API Monthly"}),e.jsx(r.TableHead,{children:"Override Monthly"}),e.jsx(r.TableHead,{children:"API Annual"}),e.jsx(r.TableHead,{children:"Override Annual"}),e.jsx(r.TableHead,{children:"API Lifetime"}),e.jsx(r.TableHead,{children:"Override Lifetime"})]})}),e.jsx(r.TableBody,{children:a.freemius_pricing&&a.freemius_pricing.length>0?a.freemius_pricing.map(s=>e.jsx(x,{pricing:s},s.id)):e.jsx(r.TableRow,{children:e.jsx(r.TableCell,{colSpan:7,className:"text-center text-slate-500 py-4",children:"No pricing configurations found for this plan."})})})]})})]},a.id))}):e.jsxs("div",{className:"text-center py-10 bg-slate-50 dark:bg-slate-800/50 rounded border border-dashed border-slate-300 dark:border-slate-700",children:[e.jsx("p",{className:"text-slate-500",children:"No Freemius plans synchronized yet."}),e.jsx("p",{className:"text-xs mt-2 text-slate-400",children:"Click the full synchronization button to import from Freemius."})]})})}function x({pricing:l}){const[a,s]=h.useTransition(),i=(t,d)=>{const n=d===""?null:parseFloat(d);d!==""&&Number.isNaN(n)||s(async()=>{const{success:c,error:u}=await m.updateFreemiusOverride(l.id,{[t]:n});c?o.toast.success("Pricing override saved"):o.toast.error(u||"Failed to update pricing")})};return e.jsxs(r.TableRow,{children:[e.jsx(r.TableCell,{className:"font-medium",children:l.license_quota||"Unlimited"}),e.jsx(r.TableCell,{className:"text-slate-500",children:l.api_monthly_price?`$${l.api_monthly_price}`:"-"}),e.jsx(r.TableCell,{children:e.jsx(r.Input,{type:"number",step:"0.01",placeholder:"Override...",defaultValue:l.override_monthly_price||"",onBlur:t=>{t.target.value!==(l.override_monthly_price?.toString()||"")&&i("override_monthly_price",t.target.value)},className:"w-24 h-8",disabled:a})}),e.jsx(r.TableCell,{className:"text-slate-500",children:l.api_annual_price?`$${l.api_annual_price}`:"-"}),e.jsx(r.TableCell,{children:e.jsx(r.Input,{type:"number",step:"0.01",placeholder:"Override...",defaultValue:l.override_annual_price||"",onBlur:t=>{t.target.value!==(l.override_annual_price?.toString()||"")&&i("override_annual_price",t.target.value)},className:"w-24 h-8",disabled:a})}),e.jsx(r.TableCell,{className:"text-slate-500",children:l.api_lifetime_price?`$${l.api_lifetime_price}`:"-"}),e.jsx(r.TableCell,{children:e.jsx(r.Input,{type:"number",step:"0.01",placeholder:"Override...",defaultValue:l.override_lifetime_price||"",onBlur:t=>{t.target.value!==(l.override_lifetime_price?.toString()||"")&&i("override_lifetime_price",t.target.value)},className:"w-24 h-8",disabled:a})})]})}exports.FreemiusPricingDashboard=b;
1
+ "use client";const e=require("../actions.cjs.js");let t=require("react"),n=require("react/jsx-runtime"),r=require("sonner"),i=require("@nextblock-cms/ui");function a({plans:e}){return(0,n.jsx)(`div`,{className:`w-full`,children:e&&e.length>0?(0,n.jsx)(`div`,{className:`space-y-8`,children:e.map(t=>(0,n.jsxs)(`div`,{className:`w-full`,children:[e.length>1&&(0,n.jsx)(`h3`,{className:`font-semibold text-lg text-slate-700 dark:text-slate-300 border-b pb-2 mb-4 mt-6`,children:t.title||t.name}),(0,n.jsx)(`div`,{className:`${e.length>1?`rounded-lg border`:`rounded-b-lg border-x border-b`} overflow-x-auto dark:border-slate-700 bg-card`,children:(0,n.jsxs)(i.Table,{children:[(0,n.jsx)(i.TableHeader,{children:(0,n.jsxs)(i.TableRow,{children:[(0,n.jsx)(i.TableHead,{children:`Licenses`}),(0,n.jsx)(i.TableHead,{children:`API Monthly`}),(0,n.jsx)(i.TableHead,{children:`Override Monthly`}),(0,n.jsx)(i.TableHead,{children:`API Annual`}),(0,n.jsx)(i.TableHead,{children:`Override Annual`}),(0,n.jsx)(i.TableHead,{children:`API Lifetime`}),(0,n.jsx)(i.TableHead,{children:`Override Lifetime`})]})}),(0,n.jsx)(i.TableBody,{children:t.freemius_pricing&&t.freemius_pricing.length>0?t.freemius_pricing.map(e=>(0,n.jsx)(o,{pricing:e},e.id)):(0,n.jsx)(i.TableRow,{children:(0,n.jsx)(i.TableCell,{colSpan:7,className:`text-center text-slate-500 py-4`,children:`No pricing configurations found for this plan.`})})})]})})]},t.id))}):(0,n.jsxs)(`div`,{className:`text-center py-10 bg-slate-50 dark:bg-slate-800/50 rounded border border-dashed border-slate-300 dark:border-slate-700`,children:[(0,n.jsx)(`p`,{className:`text-slate-500`,children:`No Freemius plans synchronized yet.`}),(0,n.jsx)(`p`,{className:`text-xs mt-2 text-slate-400`,children:`Click the full synchronization button to import from Freemius.`})]})})}function o({pricing:a}){let[o,s]=(0,t.useTransition)(),c=(t,n)=>{let i=n===``?null:parseFloat(n);n!==``&&Number.isNaN(i)||s(async()=>{let{success:n,error:o}=await e.updateFreemiusOverride(a.id,{[t]:i});n?r.toast.success(`Pricing override saved`):r.toast.error(o||`Failed to update pricing`)})};return(0,n.jsxs)(i.TableRow,{children:[(0,n.jsx)(i.TableCell,{className:`font-medium`,children:a.license_quota||`Unlimited`}),(0,n.jsx)(i.TableCell,{className:`text-slate-500`,children:a.api_monthly_price?`$${a.api_monthly_price}`:`-`}),(0,n.jsx)(i.TableCell,{children:(0,n.jsx)(i.Input,{type:`number`,step:`0.01`,placeholder:`Override...`,defaultValue:a.override_monthly_price||``,onBlur:e=>{e.target.value!==(a.override_monthly_price?.toString()||``)&&c(`override_monthly_price`,e.target.value)},className:`w-24 h-8`,disabled:o})}),(0,n.jsx)(i.TableCell,{className:`text-slate-500`,children:a.api_annual_price?`$${a.api_annual_price}`:`-`}),(0,n.jsx)(i.TableCell,{children:(0,n.jsx)(i.Input,{type:`number`,step:`0.01`,placeholder:`Override...`,defaultValue:a.override_annual_price||``,onBlur:e=>{e.target.value!==(a.override_annual_price?.toString()||``)&&c(`override_annual_price`,e.target.value)},className:`w-24 h-8`,disabled:o})}),(0,n.jsx)(i.TableCell,{className:`text-slate-500`,children:a.api_lifetime_price?`$${a.api_lifetime_price}`:`-`}),(0,n.jsx)(i.TableCell,{children:(0,n.jsx)(i.Input,{type:`number`,step:`0.01`,placeholder:`Override...`,defaultValue:a.override_lifetime_price||``,onBlur:e=>{e.target.value!==(a.override_lifetime_price?.toString()||``)&&c(`override_lifetime_price`,e.target.value)},className:`w-24 h-8`,disabled:o})})]})}exports.FreemiusPricingDashboard=a;
@@ -20,5 +20,5 @@ interface FreemiusPricingDashboardProps {
20
20
  freemiusProductId: string;
21
21
  plans: FreemiusPlanData[];
22
22
  }
23
- export declare function FreemiusPricingDashboard({ plans }: FreemiusPricingDashboardProps): import("react").JSX.Element;
23
+ export declare function FreemiusPricingDashboard({ plans }: FreemiusPricingDashboardProps): import('react').JSX.Element;
24
24
  export {};
@@ -1,86 +1,108 @@
1
- 'use client';
2
- import { jsx as e, jsxs as d } from "react/jsx-runtime";
3
- import { useTransition as _ } from "react";
4
- import { Table as b, TableHeader as v, TableRow as m, TableHead as a, TableBody as N, TableCell as l, Input as c } from "@nextblock-cms/ui";
5
- import { toast as h } from "sonner";
6
- import { updateFreemiusOverride as x } from "../actions.es.js";
7
- function $({ plans: r }) {
8
- return /* @__PURE__ */ e("div", { className: "w-full", children: r && r.length > 0 ? /* @__PURE__ */ e("div", { className: "space-y-8", children: r.map((t) => /* @__PURE__ */ d("div", { className: "w-full", children: [
9
- r.length > 1 && /* @__PURE__ */ e("h3", { className: "font-semibold text-lg text-slate-700 dark:text-slate-300 border-b pb-2 mb-4 mt-6", children: t.title || t.name }),
10
- /* @__PURE__ */ e("div", { className: `${r.length > 1 ? "rounded-lg border" : "rounded-b-lg border-x border-b"} overflow-x-auto dark:border-slate-700 bg-card`, children: /* @__PURE__ */ d(b, { children: [
11
- /* @__PURE__ */ e(v, { children: /* @__PURE__ */ d(m, { children: [
12
- /* @__PURE__ */ e(a, { children: "Licenses" }),
13
- /* @__PURE__ */ e(a, { children: "API Monthly" }),
14
- /* @__PURE__ */ e(a, { children: "Override Monthly" }),
15
- /* @__PURE__ */ e(a, { children: "API Annual" }),
16
- /* @__PURE__ */ e(a, { children: "Override Annual" }),
17
- /* @__PURE__ */ e(a, { children: "API Lifetime" }),
18
- /* @__PURE__ */ e(a, { children: "Override Lifetime" })
19
- ] }) }),
20
- /* @__PURE__ */ e(N, { children: t.freemius_pricing && t.freemius_pricing.length > 0 ? t.freemius_pricing.map((n) => /* @__PURE__ */ e(y, { pricing: n }, n.id)) : /* @__PURE__ */ e(m, { children: /* @__PURE__ */ e(l, { colSpan: 7, className: "text-center text-slate-500 py-4", children: "No pricing configurations found for this plan." }) }) })
21
- ] }) })
22
- ] }, t.id)) }) : /* @__PURE__ */ d("div", { className: "text-center py-10 bg-slate-50 dark:bg-slate-800/50 rounded border border-dashed border-slate-300 dark:border-slate-700", children: [
23
- /* @__PURE__ */ e("p", { className: "text-slate-500", children: "No Freemius plans synchronized yet." }),
24
- /* @__PURE__ */ e("p", { className: "text-xs mt-2 text-slate-400", children: "Click the full synchronization button to import from Freemius." })
25
- ] }) });
1
+ "use client";
2
+ import { updateFreemiusOverride as e } from "../actions.es.js";
3
+ import { useTransition as t } from "react";
4
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
5
+ import { toast as i } from "sonner";
6
+ import { Input as a, Table as o, TableBody as s, TableCell as c, TableHead as l, TableHeader as u, TableRow as d } from "@nextblock-cms/ui";
7
+ //#region libs/ecommerce/src/lib/pages/cms/products/components/FreemiusPricingDashboard.tsx
8
+ function f({ plans: e }) {
9
+ return /* @__PURE__ */ n("div", {
10
+ className: "w-full",
11
+ children: e && e.length > 0 ? /* @__PURE__ */ n("div", {
12
+ className: "space-y-8",
13
+ children: e.map((t) => /* @__PURE__ */ r("div", {
14
+ className: "w-full",
15
+ children: [e.length > 1 && /* @__PURE__ */ n("h3", {
16
+ className: "font-semibold text-lg text-slate-700 dark:text-slate-300 border-b pb-2 mb-4 mt-6",
17
+ children: t.title || t.name
18
+ }), /* @__PURE__ */ n("div", {
19
+ className: `${e.length > 1 ? "rounded-lg border" : "rounded-b-lg border-x border-b"} overflow-x-auto dark:border-slate-700 bg-card`,
20
+ children: /* @__PURE__ */ r(o, { children: [/* @__PURE__ */ n(u, { children: /* @__PURE__ */ r(d, { children: [
21
+ /* @__PURE__ */ n(l, { children: "Licenses" }),
22
+ /* @__PURE__ */ n(l, { children: "API Monthly" }),
23
+ /* @__PURE__ */ n(l, { children: "Override Monthly" }),
24
+ /* @__PURE__ */ n(l, { children: "API Annual" }),
25
+ /* @__PURE__ */ n(l, { children: "Override Annual" }),
26
+ /* @__PURE__ */ n(l, { children: "API Lifetime" }),
27
+ /* @__PURE__ */ n(l, { children: "Override Lifetime" })
28
+ ] }) }), /* @__PURE__ */ n(s, { children: t.freemius_pricing && t.freemius_pricing.length > 0 ? t.freemius_pricing.map((e) => /* @__PURE__ */ n(p, { pricing: e }, e.id)) : /* @__PURE__ */ n(d, { children: /* @__PURE__ */ n(c, {
29
+ colSpan: 7,
30
+ className: "text-center text-slate-500 py-4",
31
+ children: "No pricing configurations found for this plan."
32
+ }) }) })] })
33
+ })]
34
+ }, t.id))
35
+ }) : /* @__PURE__ */ r("div", {
36
+ className: "text-center py-10 bg-slate-50 dark:bg-slate-800/50 rounded border border-dashed border-slate-300 dark:border-slate-700",
37
+ children: [/* @__PURE__ */ n("p", {
38
+ className: "text-slate-500",
39
+ children: "No Freemius plans synchronized yet."
40
+ }), /* @__PURE__ */ n("p", {
41
+ className: "text-xs mt-2 text-slate-400",
42
+ children: "Click the full synchronization button to import from Freemius."
43
+ })]
44
+ })
45
+ });
26
46
  }
27
- function y({ pricing: r }) {
28
- const [t, n] = _(), s = (i, o) => {
29
- const u = o === "" ? null : parseFloat(o);
30
- o !== "" && Number.isNaN(u) || n(async () => {
31
- const { success: f, error: p } = await x(r.id, { [i]: u });
32
- f ? h.success("Pricing override saved") : h.error(p || "Failed to update pricing");
33
- });
34
- };
35
- return /* @__PURE__ */ d(m, { children: [
36
- /* @__PURE__ */ e(l, { className: "font-medium", children: r.license_quota || "Unlimited" }),
37
- /* @__PURE__ */ e(l, { className: "text-slate-500", children: r.api_monthly_price ? `$${r.api_monthly_price}` : "-" }),
38
- /* @__PURE__ */ e(l, { children: /* @__PURE__ */ e(
39
- c,
40
- {
41
- type: "number",
42
- step: "0.01",
43
- placeholder: "Override...",
44
- defaultValue: r.override_monthly_price || "",
45
- onBlur: (i) => {
46
- i.target.value !== (r.override_monthly_price?.toString() || "") && s("override_monthly_price", i.target.value);
47
- },
48
- className: "w-24 h-8",
49
- disabled: t
50
- }
51
- ) }),
52
- /* @__PURE__ */ e(l, { className: "text-slate-500", children: r.api_annual_price ? `$${r.api_annual_price}` : "-" }),
53
- /* @__PURE__ */ e(l, { children: /* @__PURE__ */ e(
54
- c,
55
- {
56
- type: "number",
57
- step: "0.01",
58
- placeholder: "Override...",
59
- defaultValue: r.override_annual_price || "",
60
- onBlur: (i) => {
61
- i.target.value !== (r.override_annual_price?.toString() || "") && s("override_annual_price", i.target.value);
62
- },
63
- className: "w-24 h-8",
64
- disabled: t
65
- }
66
- ) }),
67
- /* @__PURE__ */ e(l, { className: "text-slate-500", children: r.api_lifetime_price ? `$${r.api_lifetime_price}` : "-" }),
68
- /* @__PURE__ */ e(l, { children: /* @__PURE__ */ e(
69
- c,
70
- {
71
- type: "number",
72
- step: "0.01",
73
- placeholder: "Override...",
74
- defaultValue: r.override_lifetime_price || "",
75
- onBlur: (i) => {
76
- i.target.value !== (r.override_lifetime_price?.toString() || "") && s("override_lifetime_price", i.target.value);
77
- },
78
- className: "w-24 h-8",
79
- disabled: t
80
- }
81
- ) })
82
- ] });
47
+ function p({ pricing: o }) {
48
+ let [s, l] = t(), u = (t, n) => {
49
+ let r = n === "" ? null : parseFloat(n);
50
+ n !== "" && Number.isNaN(r) || l(async () => {
51
+ let { success: n, error: a } = await e(o.id, { [t]: r });
52
+ n ? i.success("Pricing override saved") : i.error(a || "Failed to update pricing");
53
+ });
54
+ };
55
+ return /* @__PURE__ */ r(d, { children: [
56
+ /* @__PURE__ */ n(c, {
57
+ className: "font-medium",
58
+ children: o.license_quota || "Unlimited"
59
+ }),
60
+ /* @__PURE__ */ n(c, {
61
+ className: "text-slate-500",
62
+ children: o.api_monthly_price ? `$${o.api_monthly_price}` : "-"
63
+ }),
64
+ /* @__PURE__ */ n(c, { children: /* @__PURE__ */ n(a, {
65
+ type: "number",
66
+ step: "0.01",
67
+ placeholder: "Override...",
68
+ defaultValue: o.override_monthly_price || "",
69
+ onBlur: (e) => {
70
+ e.target.value !== (o.override_monthly_price?.toString() || "") && u("override_monthly_price", e.target.value);
71
+ },
72
+ className: "w-24 h-8",
73
+ disabled: s
74
+ }) }),
75
+ /* @__PURE__ */ n(c, {
76
+ className: "text-slate-500",
77
+ children: o.api_annual_price ? `$${o.api_annual_price}` : "-"
78
+ }),
79
+ /* @__PURE__ */ n(c, { children: /* @__PURE__ */ n(a, {
80
+ type: "number",
81
+ step: "0.01",
82
+ placeholder: "Override...",
83
+ defaultValue: o.override_annual_price || "",
84
+ onBlur: (e) => {
85
+ e.target.value !== (o.override_annual_price?.toString() || "") && u("override_annual_price", e.target.value);
86
+ },
87
+ className: "w-24 h-8",
88
+ disabled: s
89
+ }) }),
90
+ /* @__PURE__ */ n(c, {
91
+ className: "text-slate-500",
92
+ children: o.api_lifetime_price ? `$${o.api_lifetime_price}` : "-"
93
+ }),
94
+ /* @__PURE__ */ n(c, { children: /* @__PURE__ */ n(a, {
95
+ type: "number",
96
+ step: "0.01",
97
+ placeholder: "Override...",
98
+ defaultValue: o.override_lifetime_price || "",
99
+ onBlur: (e) => {
100
+ e.target.value !== (o.override_lifetime_price?.toString() || "") && u("override_lifetime_price", e.target.value);
101
+ },
102
+ className: "w-24 h-8",
103
+ disabled: s
104
+ }) })
105
+ ] });
83
106
  }
84
- export {
85
- $ as FreemiusPricingDashboard
86
- };
107
+ //#endregion
108
+ export { f as FreemiusPricingDashboard };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),n=require("react"),u=require("lucide-react"),q=require("@nextblock-cms/utils"),a=require("@nextblock-cms/ui"),L=require("../server-actions.cjs.js"),x=require("sonner");function P({categories:d=[],selectedIds:s=[],onChange:m,placeholder:v="Select categories..."}){const[h,w]=n.useState(!1),[l,g]=n.useState(""),[o,f]=n.useState(d),[p,b]=n.useState(!1);n.useEffect(()=>{f(d)},[d]);const y=n.useMemo(()=>o.filter(e=>s.includes(e.id)),[o,s]),j=n.useMemo(()=>{if(!l)return o;const e=l.toLowerCase();return o.filter(t=>t.name.toLowerCase().includes(e)||t.slug.toLowerCase().includes(e))},[o,l]),i=l.trim(),C=n.useMemo(()=>{if(!i)return!1;const e=i.toLowerCase();return!o.some(t=>t.name.toLowerCase()===e)},[o,i]),N=async()=>{if(i){b(!0);try{const e=await L.createCategoryAction({name:i});if(e.success&&e.category){const t={id:e.category.id,name:e.category.name,slug:e.category.slug};f(c=>[...c,t]),m([...s,t.id]),g(""),x.toast.success(`Category "${t.name}" created successfully.`)}else x.toast.error(e.error||"Failed to create category.")}catch(e){x.toast.error(e.message||"An error occurred while creating category.")}finally{b(!1)}}},k=e=>{const t=s.includes(e)?s.filter(c=>c!==e):[...s,e];m(t)},S=(e,t)=>{t.stopPropagation(),m(s.filter(c=>c!==e))};return r.jsxs("div",{className:"space-y-2",children:[r.jsx("div",{className:"flex flex-wrap gap-1.5 min-h-[32px] p-1 border rounded-md bg-background focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2",children:y.length===0?r.jsx("span",{className:"text-xs text-muted-foreground self-center px-2 py-1 select-none",children:"No categories selected."}):y.map(e=>r.jsxs(a.Badge,{variant:"secondary",className:"pl-2 pr-1.5 py-0.5 text-xs flex items-center gap-1 bg-amber-500/10 text-amber-800 dark:text-amber-300 border border-amber-500/20 rounded-full",children:[e.name,r.jsx("button",{type:"button",onClick:t=>S(e.id,t),className:"rounded-full p-0.5 text-muted-foreground hover:bg-amber-500/20 hover:text-amber-950 dark:hover:text-amber-50 transition-colors cursor-pointer","aria-label":`Remove ${e.name}`,children:r.jsx(u.X,{className:"h-3 w-3"})})]},e.id))}),r.jsxs(a.Popover,{open:h,onOpenChange:w,children:[r.jsx(a.PopoverTrigger,{asChild:!0,children:r.jsxs(a.Button,{variant:"outline",role:"combobox","aria-expanded":h,className:"w-full justify-between h-8 text-xs font-normal",children:[r.jsx("span",{className:"truncate",children:s.length>0?`${s.length} categor${s.length===1?"y":"ies"} selected`:v}),r.jsx(u.ChevronsUpDown,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),r.jsxs(a.PopoverContent,{className:"w-(--radix-popover-trigger-width) p-0",align:"start",children:[r.jsxs("div",{className:"flex items-center border-b px-3",children:[r.jsx(u.Search,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),r.jsx(a.Input,{className:"flex h-9 w-full rounded-md bg-transparent py-2 text-xs outline-none border-0 focus-visible:ring-0 focus-visible:ring-offset-0",placeholder:"Search categories...",value:l,onChange:e=>g(e.target.value)})]}),C&&r.jsx("div",{className:"border-b border-border/50 p-1",children:r.jsxs(a.Button,{type:"button",variant:"ghost",size:"sm",className:"w-full justify-start text-xs h-8 text-amber-600 dark:text-amber-400 hover:text-amber-700 hover:bg-amber-500/10 cursor-pointer",onClick:N,disabled:p,children:[p?r.jsx(u.Loader2,{className:"mr-2 h-3 w-3 animate-spin"}):r.jsx("span",{className:"font-bold mr-1.5",children:"+"}),'Create category "',i,'"']})}),r.jsx("div",{className:"max-h-60 overflow-y-auto p-1",children:j.length===0?r.jsx("p",{className:"py-4 text-center text-xs text-muted-foreground",children:"No categories found."}):r.jsx("div",{className:"flex flex-col gap-0.5",children:j.map(e=>{const t=s.includes(e.id);return r.jsxs("div",{onClick:()=>k(e.id),className:q.cn("relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-xs outline-none hover:bg-accent hover:text-accent-foreground text-left transition-colors",t&&"bg-accent/40 font-medium"),children:[r.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center pointer-events-none",children:r.jsx(a.Checkbox,{checked:t,tabIndex:-1,"aria-label":`Toggle ${e.name}`,className:"h-3.5 w-3.5"})}),r.jsxs("span",{className:"flex flex-col",children:[r.jsx("span",{children:e.name}),r.jsxs("span",{className:"font-mono text-[9px] text-muted-foreground leading-none",children:["/",e.slug]})]}),t&&r.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:r.jsx(u.Check,{className:"h-3.5 w-3.5 text-primary"})})]},e.id)})})})]})]})]})}exports.ProductCategorySelector=P;
1
+ "use client";const e=require("../../../../../_virtual/_rolldown/runtime.cjs.js"),t=require("../server-actions.cjs.js");let n=require("react");n=e.__toESM(n,1);let r=require("lucide-react"),i=require("@nextblock-cms/utils"),a=require("react/jsx-runtime"),o=require("sonner"),s=require("@nextblock-cms/ui");function c({categories:e=[],selectedIds:c=[],onChange:l,placeholder:u=`Select categories...`}){let[d,f]=(0,n.useState)(!1),[p,m]=(0,n.useState)(``),[h,g]=(0,n.useState)(e),[_,v]=(0,n.useState)(!1);(0,n.useEffect)(()=>{g(e)},[e]);let y=(0,n.useMemo)(()=>h.filter(e=>c.includes(e.id)),[h,c]),b=(0,n.useMemo)(()=>{if(!p)return h;let e=p.toLowerCase();return h.filter(t=>t.name.toLowerCase().includes(e)||t.slug.toLowerCase().includes(e))},[h,p]),x=p.trim(),S=(0,n.useMemo)(()=>{if(!x)return!1;let e=x.toLowerCase();return!h.some(t=>t.name.toLowerCase()===e)},[h,x]),C=async()=>{if(x){v(!0);try{let e=await t.createCategoryAction({name:x});if(e.success&&e.category){let t={id:e.category.id,name:e.category.name,slug:e.category.slug};g(e=>[...e,t]),l([...c,t.id]),m(``),o.toast.success(`Category "${t.name}" created successfully.`)}else o.toast.error(e.error||`Failed to create category.`)}catch(e){o.toast.error(e.message||`An error occurred while creating category.`)}finally{v(!1)}}},w=e=>{l(c.includes(e)?c.filter(t=>t!==e):[...c,e])},T=(e,t)=>{t.stopPropagation(),l(c.filter(t=>t!==e))};return(0,a.jsxs)(`div`,{className:`space-y-2`,children:[(0,a.jsx)(`div`,{className:`flex flex-wrap gap-1.5 min-h-[32px] p-1 border rounded-md bg-background focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2`,children:y.length===0?(0,a.jsx)(`span`,{className:`text-xs text-muted-foreground self-center px-2 py-1 select-none`,children:`No categories selected.`}):y.map(e=>(0,a.jsxs)(s.Badge,{variant:`secondary`,className:`pl-2 pr-1.5 py-0.5 text-xs flex items-center gap-1 bg-amber-500/10 text-amber-800 dark:text-amber-300 border border-amber-500/20 rounded-full`,children:[e.name,(0,a.jsx)(`button`,{type:`button`,onClick:t=>T(e.id,t),className:`rounded-full p-0.5 text-muted-foreground hover:bg-amber-500/20 hover:text-amber-950 dark:hover:text-amber-50 transition-colors cursor-pointer`,"aria-label":`Remove ${e.name}`,children:(0,a.jsx)(r.X,{className:`h-3 w-3`})})]},e.id))}),(0,a.jsxs)(s.Popover,{open:d,onOpenChange:f,children:[(0,a.jsx)(s.PopoverTrigger,{asChild:!0,children:(0,a.jsxs)(s.Button,{variant:`outline`,role:`combobox`,"aria-expanded":d,className:`w-full justify-between h-8 text-xs font-normal`,children:[(0,a.jsx)(`span`,{className:`truncate`,children:c.length>0?`${c.length} categor${c.length===1?`y`:`ies`} selected`:u}),(0,a.jsx)(r.ChevronsUpDown,{className:`ml-2 h-4 w-4 shrink-0 opacity-50`})]})}),(0,a.jsxs)(s.PopoverContent,{className:`w-(--radix-popover-trigger-width) p-0`,align:`start`,children:[(0,a.jsxs)(`div`,{className:`flex items-center border-b px-3`,children:[(0,a.jsx)(r.Search,{className:`mr-2 h-4 w-4 shrink-0 opacity-50`}),(0,a.jsx)(s.Input,{className:`flex h-9 w-full rounded-md bg-transparent py-2 text-xs outline-none border-0 focus-visible:ring-0 focus-visible:ring-offset-0`,placeholder:`Search categories...`,value:p,onChange:e=>m(e.target.value)})]}),S&&(0,a.jsx)(`div`,{className:`border-b border-border/50 p-1`,children:(0,a.jsxs)(s.Button,{type:`button`,variant:`ghost`,size:`sm`,className:`w-full justify-start text-xs h-8 text-amber-600 dark:text-amber-400 hover:text-amber-700 hover:bg-amber-500/10 cursor-pointer`,onClick:C,disabled:_,children:[_?(0,a.jsx)(r.Loader2,{className:`mr-2 h-3 w-3 animate-spin`}):(0,a.jsx)(`span`,{className:`font-bold mr-1.5`,children:`+`}),`Create category "`,x,`"`]})}),(0,a.jsx)(`div`,{className:`max-h-60 overflow-y-auto p-1`,children:b.length===0?(0,a.jsx)(`p`,{className:`py-4 text-center text-xs text-muted-foreground`,children:`No categories found.`}):(0,a.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:b.map(e=>{let t=c.includes(e.id);return(0,a.jsxs)(`div`,{onClick:()=>w(e.id),className:(0,i.cn)(`relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-xs outline-none hover:bg-accent hover:text-accent-foreground text-left transition-colors`,t&&`bg-accent/40 font-medium`),children:[(0,a.jsx)(`span`,{className:`absolute left-2 flex h-3.5 w-3.5 items-center justify-center pointer-events-none`,children:(0,a.jsx)(s.Checkbox,{checked:t,tabIndex:-1,"aria-label":`Toggle ${e.name}`,className:`h-3.5 w-3.5`})}),(0,a.jsxs)(`span`,{className:`flex flex-col`,children:[(0,a.jsx)(`span`,{children:e.name}),(0,a.jsxs)(`span`,{className:`font-mono text-[9px] text-muted-foreground leading-none`,children:[`/`,e.slug]})]}),t&&(0,a.jsx)(`span`,{className:`absolute right-2 flex h-3.5 w-3.5 items-center justify-center`,children:(0,a.jsx)(r.Check,{className:`h-3.5 w-3.5 text-primary`})})]},e.id)})})})]})]})]})}exports.ProductCategorySelector=c;