@nextblock-cms/ecom 0.21.0 → 0.21.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -0
- package/index.cjs +1 -0
- package/lib/CurrencyProvider.cjs +1 -0
- package/lib/CurrencyProvider.es.js +1 -1
- package/lib/PaymentReadinessProvider.cjs +1 -0
- package/lib/PaymentReadinessProvider.es.js +1 -1
- package/lib/cart-store.cjs +1 -0
- package/lib/cart-store.es.js +1 -1
- package/lib/components/AccountNavigationMenu.cjs +1 -0
- package/lib/components/AccountNavigationMenu.es.js +1 -1
- package/lib/components/AddToCartButton.cjs +1 -0
- package/lib/components/AddToCartButton.es.js +1 -1
- package/lib/components/Cart.cjs +1 -0
- package/lib/components/Cart.es.js +1 -1
- package/lib/components/CartDrawer.cjs +1 -0
- package/lib/components/CartDrawer.es.js +1 -1
- package/lib/components/CartIcon.cjs +1 -0
- package/lib/components/CartIcon.es.js +1 -1
- package/lib/components/Checkout.cjs +1 -0
- package/lib/components/Checkout.es.js +1 -1
- package/lib/components/CouponForm.cjs +1 -0
- package/lib/components/CouponForm.es.js +1 -1
- package/lib/components/CurrencySwitcher.cjs +1 -0
- package/lib/components/CurrencySwitcher.es.js +1 -1
- package/lib/components/CustomerProfileForm.cjs +1 -0
- package/lib/components/CustomerProfileForm.es.js +1 -1
- package/lib/components/FeaturedProduct.cjs +1 -0
- package/lib/components/FeaturedProduct.es.js +1 -1
- package/lib/components/FreemiusLicensePanel.cjs +1 -0
- package/lib/components/FreemiusLicensePanel.es.js +1 -1
- package/lib/components/InvoiceDocument.cjs +1 -0
- package/lib/components/InvoiceDocument.es.js +1 -1
- package/lib/components/{InvoiceViewerShell.cjs.js → InvoiceViewerShell.cjs} +1 -1
- package/lib/components/InvoiceViewerShell.es.js +1 -1
- package/lib/components/ProductCard.cjs +1 -0
- package/lib/components/ProductCard.es.js +1 -1
- package/lib/components/ProductDetailsLayout.cjs +1 -0
- package/lib/components/ProductDetailsLayout.es.js +1 -1
- package/lib/components/ProductGallery.cjs +1 -0
- package/lib/components/ProductGallery.es.js +1 -1
- package/lib/components/ProductGrid.cjs +1 -0
- package/lib/components/ProductGrid.es.js +1 -1
- package/lib/components/ShippingEstimator.cjs +1 -0
- package/lib/components/ShippingEstimator.es.js +1 -1
- package/lib/components/ShortDescription.cjs +1 -0
- package/lib/components/ShortDescription.es.js +1 -1
- package/lib/components/SimpleTiptapRenderer.cjs +1 -0
- package/lib/components/SimpleTiptapRenderer.es.js +1 -1
- package/lib/components/SubscriptionSelector.cjs +1 -0
- package/lib/components/SubscriptionSelector.es.js +1 -1
- package/lib/countries.es.js +1 -1
- package/lib/coupon-server.cjs +1 -0
- package/lib/coupon-server.es.js +1 -1
- package/lib/coupons.es.js +1 -1
- package/lib/currency-constants.es.js +1 -1
- package/lib/currency-rest-client.es.js +1 -1
- package/lib/currency-store.es.js +1 -1
- package/lib/currency-sync.cjs +1 -0
- package/lib/currency-sync.es.js +1 -1
- package/lib/currency.es.js +1 -1
- package/lib/customer-addresses.cjs +1 -0
- package/lib/customer-addresses.es.js +1 -1
- package/lib/customer-orders.cjs +1 -0
- package/lib/customer-orders.es.js +1 -1
- package/lib/customer.cjs +1 -0
- package/lib/customer.es.js +1 -1
- package/lib/export-helpers.cjs +1 -0
- package/lib/export-helpers.es.js +1 -1
- package/lib/factory.cjs +1 -0
- package/lib/factory.es.js +1 -1
- package/lib/freemius-coupons.cjs +1 -0
- package/lib/freemius-coupons.es.js +1 -1
- package/lib/freemius-license-claim.cjs +1 -0
- package/lib/freemius-license-claim.es.js +1 -1
- package/lib/freemius-license.cjs +1 -0
- package/lib/freemius-license.es.js +1 -1
- package/lib/freemius-order-sync.cjs +1 -0
- package/lib/freemius-order-sync.es.js +1 -1
- package/lib/freemius-trial-provision.cjs +1 -0
- package/lib/freemius-trial-provision.es.js +1 -1
- package/lib/inventory-settings.es.js +1 -1
- package/lib/{invoice-server.cjs.js → invoice-server.cjs} +1 -1
- package/lib/invoice-server.es.js +1 -1
- package/lib/invoice-ui.es.js +1 -1
- package/lib/invoice.es.js +1 -1
- package/lib/{order-inventory.cjs.js → order-inventory.cjs} +1 -1
- package/lib/order-inventory.es.js +1 -1
- package/lib/order-tax-details.es.js +1 -1
- package/lib/pages/cms/coupons/CouponEditorForm.cjs +1 -0
- package/lib/pages/cms/coupons/CouponEditorForm.es.js +1 -1
- package/lib/pages/cms/coupons/{CouponsPage.cjs.js → CouponsPage.cjs} +1 -1
- package/lib/pages/cms/coupons/CouponsPage.es.js +1 -1
- package/lib/pages/cms/coupons/CreateCouponDialog.cjs +1 -0
- package/lib/pages/cms/coupons/CreateCouponDialog.es.js +1 -1
- package/lib/pages/cms/coupons/EditCouponPage.cjs +1 -0
- package/lib/pages/cms/coupons/EditCouponPage.es.js +1 -1
- package/lib/pages/cms/coupons/ProductScopePicker.es.js +1 -1
- package/lib/pages/cms/coupons/actions.cjs +1 -0
- package/lib/pages/cms/coupons/actions.es.js +1 -1
- package/lib/pages/cms/coupons/index.cjs +1 -0
- package/lib/pages/cms/coupons/product-options.es.js +1 -1
- package/lib/pages/cms/orders/ExportReportsDialog.cjs +1 -0
- package/lib/pages/cms/orders/ExportReportsDialog.es.js +1 -1
- package/lib/pages/cms/orders/OrderDetailPage.cjs +1 -0
- package/lib/pages/cms/orders/OrderDetailPage.es.js +1 -1
- package/lib/pages/cms/orders/OrderPrintButton.es.js +1 -1
- package/lib/pages/cms/orders/OrderStatusForm.cjs +1 -0
- package/lib/pages/cms/orders/OrderStatusForm.es.js +1 -1
- package/lib/pages/cms/orders/OrdersPage.cjs +1 -0
- package/lib/pages/cms/orders/OrdersPage.es.js +1 -1
- package/lib/pages/cms/orders/actions.es.js +1 -1
- package/lib/pages/cms/orders/export-actions.es.js +1 -1
- package/lib/pages/cms/orders/index.cjs +1 -0
- package/lib/pages/cms/orders/server-actions.cjs +1 -0
- package/lib/pages/cms/orders/server-actions.es.js +1 -1
- package/lib/pages/cms/payments/PaymentsClient.es.js +1 -1
- package/lib/pages/cms/payments/PaymentsPage.cjs +1 -0
- package/lib/pages/cms/payments/PaymentsPage.es.js +1 -1
- package/lib/pages/cms/payments/actions.cjs +1 -0
- package/lib/pages/cms/payments/actions.es.js +1 -1
- package/lib/pages/cms/payments/index.cjs +1 -0
- package/lib/pages/cms/payments/queries.cjs +1 -0
- package/lib/pages/cms/payments/queries.es.js +1 -1
- package/lib/pages/cms/products/ProductsPage.cjs +1 -0
- package/lib/pages/cms/products/ProductsPage.es.js +1 -1
- package/lib/pages/cms/products/[id]/edit/EditProductPage.cjs +1 -0
- package/lib/pages/cms/products/{_id_ → [id]}/edit/EditProductPage.es.js +1 -1
- package/lib/pages/cms/products/{actions.cjs.js → actions.cjs} +1 -1
- package/lib/pages/cms/products/actions.es.js +1 -1
- package/lib/pages/cms/products/attributes/AttributeManagementPage.cjs +1 -0
- package/lib/pages/cms/products/attributes/AttributeManagementPage.es.js +1 -1
- package/lib/pages/cms/products/attributes/components/AttributeManager.es.js +1 -1
- package/lib/pages/cms/products/categories/CategoryManagementPage.cjs +1 -0
- package/lib/pages/cms/products/categories/CategoryManagementPage.es.js +1 -1
- package/lib/pages/cms/products/categories/components/CategoryManager.cjs +1 -0
- package/lib/pages/cms/products/categories/components/CategoryManager.es.js +1 -1
- package/lib/pages/cms/products/components/CopyProductFromLanguage.cjs +1 -0
- package/lib/pages/cms/products/components/CopyProductFromLanguage.es.js +1 -1
- package/lib/pages/cms/products/components/CurrencyPriceFields.cjs +1 -0
- package/lib/pages/cms/products/components/CurrencyPriceFields.es.js +1 -1
- package/lib/pages/cms/products/components/DeleteProductButton.es.js +1 -1
- package/lib/pages/cms/products/components/FreemiusPricingDashboard.cjs +1 -0
- package/lib/pages/cms/products/components/FreemiusPricingDashboard.es.js +1 -1
- package/lib/pages/cms/products/components/ProductCategorySelector.cjs +1 -0
- package/lib/pages/cms/products/components/ProductCategorySelector.es.js +1 -1
- package/lib/pages/cms/products/components/ProductForm.cjs +1 -0
- package/lib/pages/cms/products/components/ProductForm.es.js +1 -1
- package/lib/pages/cms/products/components/ProductMediaManager.cjs +1 -0
- package/lib/pages/cms/products/components/ProductMediaManager.es.js +1 -1
- package/lib/pages/cms/products/components/ProductsBulkTable.cjs +1 -0
- package/lib/pages/cms/products/components/ProductsBulkTable.es.js +1 -1
- package/lib/pages/cms/products/components/SaleScheduleFields.es.js +1 -1
- package/lib/pages/cms/products/components/SyncFreemiusButton.cjs +1 -0
- package/lib/pages/cms/products/components/SyncFreemiusButton.es.js +1 -1
- package/lib/pages/cms/products/components/{SyncFreemiusPricingButton.cjs.js → SyncFreemiusPricingButton.cjs} +1 -1
- package/lib/pages/cms/products/components/SyncFreemiusPricingButton.es.js +1 -1
- package/lib/pages/cms/products/components/VariationsEditor.cjs +1 -0
- package/lib/pages/cms/products/components/VariationsEditor.es.js +1 -1
- package/lib/pages/cms/products/index.cjs +1 -0
- package/lib/pages/cms/products/index.es.js +1 -1
- package/lib/pages/cms/products/inventory/InventoryPage.cjs +1 -0
- package/lib/pages/cms/products/inventory/InventoryPage.es.js +1 -1
- package/lib/pages/cms/products/inventory/{InventoryTableClient.cjs.js → InventoryTableClient.cjs} +1 -1
- package/lib/pages/cms/products/inventory/InventoryTableClient.es.js +1 -1
- package/lib/pages/cms/products/inventory/{actions.cjs.js → actions.cjs} +1 -1
- package/lib/pages/cms/products/inventory/actions.es.js +1 -1
- package/lib/pages/cms/products/new/NewProductPage.cjs +1 -0
- package/lib/pages/cms/products/new/NewProductPage.es.js +1 -1
- package/lib/pages/cms/products/product-price-sync.cjs +1 -0
- package/lib/pages/cms/products/product-price-sync.es.js +1 -1
- package/lib/pages/cms/products/server-actions.cjs +1 -0
- package/lib/pages/cms/products/server-actions.es.js +1 -1
- package/lib/pages/cms/shipping/{ShippingPage.cjs.js → ShippingPage.cjs} +1 -1
- package/lib/pages/cms/shipping/ShippingPage.es.js +1 -1
- package/lib/pages/cms/shipping/components/RateForm.cjs +1 -0
- package/lib/pages/cms/shipping/components/RateForm.es.js +1 -1
- package/lib/pages/cms/shipping/components/ZoneForm.cjs +1 -0
- package/lib/pages/cms/shipping/components/ZoneForm.es.js +1 -1
- package/lib/pages/cms/shipping/index.cjs +1 -0
- package/lib/pages/cms/shipping/server-actions.cjs +1 -0
- package/lib/pages/cms/shipping/server-actions.es.js +1 -1
- package/lib/pages/cms/taxes/TaxesPage.cjs +1 -0
- package/lib/pages/cms/taxes/TaxesPage.es.js +1 -1
- package/lib/pages/cms/taxes/actions.cjs +1 -0
- package/lib/pages/cms/taxes/actions.es.js +1 -1
- package/lib/pages/cms/taxes/components/TaxRateForm.cjs +1 -0
- package/lib/pages/cms/taxes/components/TaxRateForm.es.js +1 -1
- package/lib/pages/cms/taxes/index.cjs +1 -0
- package/lib/payment-config.es.js +1 -1
- package/lib/{product-actions.cjs.js → product-actions.cjs} +1 -1
- package/lib/product-actions.es.js +1 -1
- package/lib/product-context.cjs +1 -0
- package/lib/product-context.es.js +1 -1
- package/lib/product-schema.cjs +1 -0
- package/lib/product-schema.es.js +1 -1
- package/lib/providers/freemius.cjs +1 -0
- package/lib/providers/freemius.es.js +1 -1
- package/lib/providers/stripe.cjs +1 -0
- package/lib/providers/stripe.es.js +1 -1
- package/lib/server-actions/coupon-actions.cjs +1 -0
- package/lib/server-actions/coupon-actions.es.js +1 -1
- package/lib/server-actions/customer-actions.cjs +1 -0
- package/lib/server-actions/customer-actions.es.js +1 -1
- package/lib/server-actions/product-actions.cjs +1 -0
- package/lib/server-actions/product-actions.es.js +1 -1
- package/lib/server-actions/shipping-actions.cjs +1 -0
- package/lib/server-actions/shipping-actions.es.js +1 -1
- package/lib/server-actions/tax-actions.cjs +1 -0
- package/lib/server-actions/tax-actions.es.js +1 -1
- package/lib/shared-inventory.es.js +1 -1
- package/lib/shipping/{resolver.cjs.js → resolver.cjs} +1 -1
- package/lib/shipping/resolver.es.js +1 -1
- package/lib/shipping-rate-currency.cjs +1 -0
- package/lib/shipping-rate-currency.es.js +1 -1
- package/lib/states.cjs +1 -0
- package/lib/stripe/checkout.cjs +1 -0
- package/lib/stripe/checkout.es.js +1 -1
- package/lib/stripe/client.cjs +1 -0
- package/lib/stripe/client.es.js +1 -1
- package/lib/stripe/order-sync.cjs +1 -0
- package/lib/stripe/order-sync.es.js +1 -1
- package/lib/stripe/webhooks.cjs +1 -0
- package/lib/stripe/webhooks.es.js +1 -1
- package/lib/tax-calculation.cjs +1 -0
- package/lib/tax-calculation.es.js +1 -1
- package/lib/trials.es.js +1 -1
- package/lib/types.es.js +1 -1
- package/lib/use-cart.cjs +1 -0
- package/lib/use-cart.es.js +1 -1
- package/lib/use-price-formatter.es.js +1 -1
- package/lib/variation-utils.cjs +1 -0
- package/lib/variation-utils.es.js +1 -1
- package/lib/zod-config.es.js +1 -1
- package/package.json +10 -9
- package/server.cjs +1 -0
- package/server.es.js +1 -1
- package/index.cjs.js +0 -1
- package/lib/CurrencyProvider.cjs.js +0 -1
- package/lib/PaymentReadinessProvider.cjs.js +0 -1
- package/lib/cart-store.cjs.js +0 -1
- package/lib/components/AccountNavigationMenu.cjs.js +0 -1
- package/lib/components/AddToCartButton.cjs.js +0 -1
- package/lib/components/Cart.cjs.js +0 -1
- package/lib/components/CartDrawer.cjs.js +0 -1
- package/lib/components/CartIcon.cjs.js +0 -1
- package/lib/components/Checkout.cjs.js +0 -1
- package/lib/components/CouponForm.cjs.js +0 -1
- package/lib/components/CurrencySwitcher.cjs.js +0 -1
- package/lib/components/CustomerProfileForm.cjs.js +0 -1
- package/lib/components/FeaturedProduct.cjs.js +0 -1
- package/lib/components/FreemiusLicensePanel.cjs.js +0 -1
- package/lib/components/InvoiceDocument.cjs.js +0 -1
- package/lib/components/ProductCard.cjs.js +0 -1
- package/lib/components/ProductDetailsLayout.cjs.js +0 -1
- package/lib/components/ProductGallery.cjs.js +0 -1
- package/lib/components/ProductGrid.cjs.js +0 -1
- package/lib/components/ShippingEstimator.cjs.js +0 -1
- package/lib/components/ShortDescription.cjs.js +0 -1
- package/lib/components/SimpleTiptapRenderer.cjs.js +0 -1
- package/lib/components/SubscriptionSelector.cjs.js +0 -1
- package/lib/coupon-server.cjs.js +0 -1
- package/lib/currency-sync.cjs.js +0 -1
- package/lib/customer-addresses.cjs.js +0 -1
- package/lib/customer-orders.cjs.js +0 -1
- package/lib/customer.cjs.js +0 -1
- package/lib/export-helpers.cjs.js +0 -1
- package/lib/factory.cjs.js +0 -1
- package/lib/freemius-coupons.cjs.js +0 -1
- package/lib/freemius-license-claim.cjs.js +0 -1
- package/lib/freemius-license.cjs.js +0 -1
- package/lib/freemius-order-sync.cjs.js +0 -1
- package/lib/freemius-trial-provision.cjs.js +0 -1
- package/lib/pages/cms/coupons/CouponEditorForm.cjs.js +0 -1
- package/lib/pages/cms/coupons/CreateCouponDialog.cjs.js +0 -1
- package/lib/pages/cms/coupons/EditCouponPage.cjs.js +0 -1
- package/lib/pages/cms/coupons/actions.cjs.js +0 -1
- package/lib/pages/cms/coupons/index.cjs.js +0 -1
- package/lib/pages/cms/orders/ExportReportsDialog.cjs.js +0 -1
- package/lib/pages/cms/orders/OrderDetailPage.cjs.js +0 -1
- package/lib/pages/cms/orders/OrderStatusForm.cjs.js +0 -1
- package/lib/pages/cms/orders/OrdersPage.cjs.js +0 -1
- package/lib/pages/cms/orders/index.cjs.js +0 -1
- package/lib/pages/cms/orders/server-actions.cjs.js +0 -1
- package/lib/pages/cms/payments/PaymentsPage.cjs.js +0 -1
- package/lib/pages/cms/payments/actions.cjs.js +0 -1
- package/lib/pages/cms/payments/index.cjs.js +0 -1
- package/lib/pages/cms/payments/queries.cjs.js +0 -1
- package/lib/pages/cms/products/ProductsPage.cjs.js +0 -1
- package/lib/pages/cms/products/_id_/edit/EditProductPage.cjs.js +0 -1
- package/lib/pages/cms/products/attributes/AttributeManagementPage.cjs.js +0 -1
- package/lib/pages/cms/products/categories/CategoryManagementPage.cjs.js +0 -1
- package/lib/pages/cms/products/categories/components/CategoryManager.cjs.js +0 -1
- package/lib/pages/cms/products/components/CopyProductFromLanguage.cjs.js +0 -1
- package/lib/pages/cms/products/components/CurrencyPriceFields.cjs.js +0 -1
- package/lib/pages/cms/products/components/FreemiusPricingDashboard.cjs.js +0 -1
- package/lib/pages/cms/products/components/ProductCategorySelector.cjs.js +0 -1
- package/lib/pages/cms/products/components/ProductForm.cjs.js +0 -1
- package/lib/pages/cms/products/components/ProductMediaManager.cjs.js +0 -1
- package/lib/pages/cms/products/components/ProductsBulkTable.cjs.js +0 -1
- package/lib/pages/cms/products/components/SyncFreemiusButton.cjs.js +0 -1
- package/lib/pages/cms/products/components/VariationsEditor.cjs.js +0 -1
- package/lib/pages/cms/products/index.cjs.js +0 -1
- package/lib/pages/cms/products/inventory/InventoryPage.cjs.js +0 -1
- package/lib/pages/cms/products/new/NewProductPage.cjs.js +0 -1
- package/lib/pages/cms/products/product-price-sync.cjs.js +0 -1
- package/lib/pages/cms/products/server-actions.cjs.js +0 -1
- package/lib/pages/cms/shipping/components/RateForm.cjs.js +0 -1
- package/lib/pages/cms/shipping/components/ZoneForm.cjs.js +0 -1
- package/lib/pages/cms/shipping/index.cjs.js +0 -1
- package/lib/pages/cms/shipping/server-actions.cjs.js +0 -1
- package/lib/pages/cms/taxes/TaxesPage.cjs.js +0 -1
- package/lib/pages/cms/taxes/actions.cjs.js +0 -1
- package/lib/pages/cms/taxes/components/TaxRateForm.cjs.js +0 -1
- package/lib/pages/cms/taxes/index.cjs.js +0 -1
- package/lib/product-context.cjs.js +0 -1
- package/lib/product-schema.cjs.js +0 -1
- package/lib/providers/freemius.cjs.js +0 -1
- package/lib/providers/stripe.cjs.js +0 -1
- package/lib/server-actions/coupon-actions.cjs.js +0 -1
- package/lib/server-actions/customer-actions.cjs.js +0 -1
- package/lib/server-actions/product-actions.cjs.js +0 -1
- package/lib/server-actions/shipping-actions.cjs.js +0 -1
- package/lib/server-actions/tax-actions.cjs.js +0 -1
- package/lib/shipping-rate-currency.cjs.js +0 -1
- package/lib/states.cjs.js +0 -1
- package/lib/stripe/checkout.cjs.js +0 -1
- package/lib/stripe/client.cjs.js +0 -1
- package/lib/stripe/order-sync.cjs.js +0 -1
- package/lib/stripe/webhooks.cjs.js +0 -1
- package/lib/tax-calculation.cjs.js +0 -1
- package/lib/use-cart.cjs.js +0 -1
- package/lib/variation-utils.cjs.js +0 -1
- package/server.cjs.js +0 -1
- /package/_virtual/_rolldown/{runtime.cjs.js → runtime.cjs} +0 -0
- /package/lib/{countries.cjs.js → countries.cjs} +0 -0
- /package/lib/{coupons.cjs.js → coupons.cjs} +0 -0
- /package/lib/{currency-constants.cjs.js → currency-constants.cjs} +0 -0
- /package/lib/{currency-rest-client.cjs.js → currency-rest-client.cjs} +0 -0
- /package/lib/{currency-store.cjs.js → currency-store.cjs} +0 -0
- /package/lib/{currency.cjs.js → currency.cjs} +0 -0
- /package/lib/{inventory-settings.cjs.js → inventory-settings.cjs} +0 -0
- /package/lib/{invoice-ui.cjs.js → invoice-ui.cjs} +0 -0
- /package/lib/{invoice.cjs.js → invoice.cjs} +0 -0
- /package/lib/{order-tax-details.cjs.js → order-tax-details.cjs} +0 -0
- /package/lib/pages/cms/coupons/{ProductScopePicker.cjs.js → ProductScopePicker.cjs} +0 -0
- /package/lib/pages/cms/coupons/{product-options.cjs.js → product-options.cjs} +0 -0
- /package/lib/pages/cms/orders/{OrderPrintButton.cjs.js → OrderPrintButton.cjs} +0 -0
- /package/lib/pages/cms/orders/{actions.cjs.js → actions.cjs} +0 -0
- /package/lib/pages/cms/orders/{export-actions.cjs.js → export-actions.cjs} +0 -0
- /package/lib/pages/cms/payments/{PaymentsClient.cjs.js → PaymentsClient.cjs} +0 -0
- /package/lib/pages/cms/products/attributes/components/{AttributeManager.cjs.js → AttributeManager.cjs} +0 -0
- /package/lib/pages/cms/products/components/{DeleteProductButton.cjs.js → DeleteProductButton.cjs} +0 -0
- /package/lib/pages/cms/products/components/{SaleScheduleFields.cjs.js → SaleScheduleFields.cjs} +0 -0
- /package/lib/{payment-config.cjs.js → payment-config.cjs} +0 -0
- /package/lib/{shared-inventory.cjs.js → shared-inventory.cjs} +0 -0
- /package/lib/{trials.cjs.js → trials.cjs} +0 -0
- /package/lib/{types.cjs.js → types.cjs} +0 -0
- /package/lib/{use-price-formatter.cjs.js → use-price-formatter.cjs} +0 -0
- /package/lib/{zod-config.cjs.js → zod-config.cjs} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../types.cjs.js"),t=require("../CurrencyProvider.cjs.js"),n=require("../cart-store.cjs.js"),r=require("../use-cart.cjs.js"),i=require("../use-price-formatter.cjs.js"),a=require("../trials.cjs.js"),o=require("./CouponForm.cjs.js"),s=require("../countries.cjs.js"),c=require("../states.cjs.js"),ee=require("../server-actions/shipping-actions.cjs.js"),te=require("../PaymentReadinessProvider.cjs.js"),ne=require("../server-actions/tax-actions.cjs.js"),l=require("../customer.cjs.js");let re=require("@nextblock-cms/ui/badge"),ie=require("@nextblock-cms/ui/button"),u=require("react"),d=require("lucide-react"),ae=require("@nextblock-cms/utils"),f=require("react/jsx-runtime"),p=require("@nextblock-cms/ui/input"),m=require("@nextblock-cms/ui/label"),h=require("@nextblock-cms/ui/card"),oe=require("@nextblock-cms/ui/checkbox"),se=require("@nextblock-cms/ui/separator"),g=require("@nextblock-cms/ui/radio-group"),ce=require("@freemius/checkout");var le=process.env.NEXT_PUBLIC_IS_SANDBOX===`true`,_=`nextblock-checkout-draft-v1`;function v(e,t){return{...l.emptyCustomerAddress(),company_name:e?.company_name||``,recipient_name:e?.recipient_name||t||``,line1:e?.line1||``,line2:e?.line2||``,city:e?.city||``,state:e?.state||``,postal_code:e?.postal_code||``,country_code:s.normalizeCountryCode(e?.country_code)||`CA`}}function ue(e){let t=l.normalizeCustomerAddress(e);return!(!t?.country_code||!t.postal_code||c.countryUsesStructuredStates(t.country_code)&&!t.state)}function de(e,t,r){return e.reduce((e,i)=>{let{price:a,sale_price:o}=n.getCartItemActivePrice(i,{currencyCode:t,currencies:r});return e+(o??a)*i.quantity},0)}function fe({idPrefix:e,title:t,description:n,value:r,onChange:i}){let{t:a,lang:o}=(0,ae.useTranslations)(),ee=(0,u.useMemo)(()=>{try{return new Intl.DisplayNames([o],{type:`region`})}catch{return null}},[o]),te=a(`company_name`)===`company_name`?`Company name`:a(`company_name`),ne=a(`select_an_option`)===`select_an_option`?`Select an option`:a(`select_an_option`),l=a(`state_province`)===`state_province`?`State / Province`:a(`state_province`),re=c.getStatesForCountry(r.country_code),ie=c.countryUsesStructuredStates(r.country_code);return(0,f.jsxs)(h.Card,{children:[(0,f.jsxs)(h.CardHeader,{children:[(0,f.jsxs)(h.CardTitle,{role:`heading`,"aria-level":2,className:`flex items-center gap-2`,children:[(0,f.jsx)(d.MapPin,{className:`w-5 h-5`}),t]}),(0,f.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:n})]}),(0,f.jsxs)(h.CardContent,{className:`space-y-4`,children:[(0,f.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-3`,children:[(0,f.jsxs)(`div`,{className:`space-y-2`,children:[(0,f.jsx)(m.Label,{htmlFor:`${e}-company`,children:te}),(0,f.jsx)(p.Input,{id:`${e}-company`,name:`${e}-company`,autoComplete:`${e} organization`,value:r.company_name,onChange:e=>i({...r,company_name:e.target.value})})]}),(0,f.jsxs)(`div`,{className:`space-y-2`,children:[(0,f.jsx)(m.Label,{htmlFor:`${e}-name`,children:a(`full_name`)}),(0,f.jsx)(p.Input,{id:`${e}-name`,name:`${e}-name`,autoComplete:`${e} name`,required:!0,value:r.recipient_name,onChange:e=>i({...r,recipient_name:e.target.value})})]}),(0,f.jsxs)(`div`,{className:`space-y-2`,children:[(0,f.jsx)(m.Label,{htmlFor:`${e}-country`,children:a(`country`)}),(0,f.jsx)(`select`,{id:`${e}-country`,name:`${e}-country`,autoComplete:`${e} country`,required:!0,className:`flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,value:r.country_code,onChange:e=>{let t=e.target.value,n=c.getStatesForCountry(t);i({...r,country_code:t,state:n.some(e=>e.code===r.state)?r.state:``})},children:s.countries.map(e=>(0,f.jsx)(`option`,{value:e.code,children:ee?.of(e.code)??e.name},e.code))})]})]}),(0,f.jsxs)(`div`,{className:`space-y-2`,children:[(0,f.jsx)(m.Label,{htmlFor:`${e}-line1`,children:a(`address_line_1`)}),(0,f.jsx)(p.Input,{id:`${e}-line1`,name:`${e}-line1`,autoComplete:`${e} address-line1`,required:!0,value:r.line1,onChange:e=>i({...r,line1:e.target.value})})]}),(0,f.jsxs)(`div`,{className:`space-y-2`,children:[(0,f.jsx)(m.Label,{htmlFor:`${e}-line2`,children:a(`address_line_2`)}),(0,f.jsx)(p.Input,{id:`${e}-line2`,name:`${e}-line2`,autoComplete:`${e} address-line2`,value:r.line2,onChange:e=>i({...r,line2:e.target.value})})]}),(0,f.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-3`,children:[(0,f.jsxs)(`div`,{className:`space-y-2`,children:[(0,f.jsx)(m.Label,{htmlFor:`${e}-city`,children:a(`city`)}),(0,f.jsx)(p.Input,{id:`${e}-city`,name:`${e}-city`,autoComplete:`${e} address-level2`,required:!0,value:r.city,onChange:e=>i({...r,city:e.target.value})})]}),(0,f.jsxs)(`div`,{className:`space-y-2`,children:[(0,f.jsx)(m.Label,{htmlFor:`${e}-state`,children:a(`state_province`)}),ie?(0,f.jsxs)(`select`,{id:`${e}-state`,name:`${e}-state`,autoComplete:`${e} address-level1`,required:!0,className:`flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,value:r.state,onChange:e=>i({...r,state:e.target.value}),children:[(0,f.jsx)(`option`,{value:``,children:`${ne}: ${l}`}),re.map(e=>(0,f.jsx)(`option`,{value:e.code,children:c.getSubdivisionLabel(r.country_code,e,o)},e.code))]}):(0,f.jsx)(p.Input,{id:`${e}-state`,name:`${e}-state`,autoComplete:`${e} address-level1`,value:r.state,onChange:e=>i({...r,state:e.target.value})})]}),(0,f.jsxs)(`div`,{className:`space-y-2`,children:[(0,f.jsx)(m.Label,{htmlFor:`${e}-postal`,children:a(`postal_zip_code`)}),(0,f.jsx)(p.Input,{id:`${e}-postal`,name:`${e}-postal`,autoComplete:`${e} postal-code`,required:!0,value:r.postal_code,onChange:e=>i({...r,postal_code:e.target.value})})]})]})]})]})}function pe({title:e,description:t,badgeLabel:n,children:r}){return(0,f.jsxs)(h.Card,{children:[(0,f.jsx)(h.CardHeader,{children:(0,f.jsxs)(`div`,{className:`flex items-center justify-between gap-3 flex-wrap`,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(h.CardTitle,{role:`heading`,"aria-level":2,children:e}),(0,f.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:t})]}),n?(0,f.jsx)(re.Badge,{variant:`secondary`,children:n}):null]})}),(0,f.jsx)(h.CardContent,{className:`space-y-4`,children:r})]})}var y=({initialCustomer:s})=>{let y=i.usePriceFormatter(),[me,he]=(0,u.useState)({}),[b,x]=(0,u.useState)(null),[S,C]=(0,u.useState)({}),[w,ge]=(0,u.useState)(s?.email||``),[T,_e]=(0,u.useState)(``),[E,ve]=(0,u.useState)(s?.phone||``),[ye,be]=(0,u.useState)(!1),[xe,Se]=(0,u.useState)(null),[Ce,D]=(0,u.useState)(!1),[we,Te]=(0,u.useState)(!1),[Ee,O]=(0,u.useState)(!1),[k,A]=(0,u.useState)([]),[j,M]=(0,u.useState)(null),[N,P]=(0,u.useState)(null),[F,De]=(0,u.useState)(null),[I,Oe]=(0,u.useState)(()=>v(s?.billingAddress,s?.fullName)),[L,ke]=(0,u.useState)(()=>v(s?.shippingAddress??s?.billingAddress,s?.fullName)),[R,Ae]=(0,u.useState)(!s?.shippingAddress||l.addressesMatch(s?.billingAddress,s?.shippingAddress)),z=r.useCart(e=>e),{t:B,lang:je}=(0,ae.useTranslations)(),{activeCurrencyCode:V,currencies:H}=t.useCurrency(),Me=te.usePaymentReadiness(),U=z?.items??[],W=(0,u.useMemo)(()=>U.filter(t=>!e.isDigitalItem(t)),[U]),G=(0,u.useMemo)(()=>U.filter(t=>e.isDigitalItem(t)),[U]),K=s?.isAuthenticated??!1,q=(e,t,n)=>{let r=B(e,n);if(r!==e)return r;if(!n)return t;let i=t;return Object.entries(n).forEach(([e,t])=>{i=i.replace(RegExp(`\\{${e}\\}`,`g`),String(t))}),i},J=W.length>0,Ne=(0,u.useMemo)(()=>de(U,V,H),[V,H,U]),Pe=(0,u.useMemo)(()=>de(W,V,H),[V,H,W]),Fe=(0,u.useMemo)(()=>de(G,V,H),[V,H,G]),Ie=F?.providerDiscounts.stripe??0,Le=F?.providerDiscounts.freemius??0,Y=Math.max(0,Pe-Ie),Re=Math.max(0,Fe-Le),X=(0,u.useMemo)(()=>R?I:L,[I,L,R]),Z=(0,u.useMemo)(()=>J?X:I,[I,J,X]),Q=!J||ue(X),$=(0,u.useMemo)(()=>k.find(e=>e.id===j),[k,j]),ze=(0,u.useMemo)(()=>Y+($?.amount??0)+(N&&!N.isPendingExternalCalculation?N.amount:0),[Y,$,N]),Be=ze+Re;if((0,u.useEffect)(()=>{if(!(K||typeof window>`u`))try{let e=window.localStorage.getItem(_);if(!e)return;let t=JSON.parse(e);t.email&&ge(t.email),t.phone&&ve(t.phone),t.billingAddress&&Oe(v(t.billingAddress)),t.shippingAddress&&ke(v(t.shippingAddress)),typeof t.useBillingForShipping==`boolean`&&Ae(t.useBillingForShipping),(typeof t.selectedMethodId==`string`||t.selectedMethodId===null)&&M(t.selectedMethodId)}catch(e){console.error(`[Checkout] Failed to restore checkout draft:`,e)}},[K]),(0,u.useEffect)(()=>{if(typeof window<`u`)try{if(K){window.localStorage.removeItem(_);return}window.localStorage.setItem(_,JSON.stringify({email:w,phone:E,billingAddress:I,shippingAddress:L,useBillingForShipping:R,selectedMethodId:j}))}catch{}},[I,w,K,E,j,L,R]),(0,u.useEffect)(()=>{if(!J){A([]),M(null),D(!1);return}if(!Q){A([]),M(null),D(!1);return}let e=!1,t=setTimeout(async()=>{if(X.country_code){D(!0),Te(!1);try{let t=await ee.getShippingEstimates(Y,{country:X.country_code,state:X.state,postal_code:X.postal_code},je,V);if(e)return;if(t.success&&t.methods){let e=t.methods;A(e),M(t=>t&&e.some(e=>e.id===t)?t:e[0]?.id??null)}else A([]),M(null)}catch(t){if(e)return;console.error(`[Checkout] Failed to load shipping rates:`,t),A([]),M(null),Te(!0)}finally{e||D(!1)}}},400);return()=>{e=!0,clearTimeout(t)}},[V,J,Q,je,X.country_code,X.postal_code,X.state,Y]),(0,u.useEffect)(()=>{let e=!1,t=setTimeout(async()=>{if(!J||!Z.country_code){O(!1),P(null);return}if(c.countryUsesStructuredStates(Z.country_code)&&!Z.state){O(!1),P(null);return}O(!0);try{let t=await ne.getTaxEstimate(W,{country_code:Z.country_code,state:Z.state},V,F?.code??null,U);if(e)return;P(t.success&&t.tax?t.tax:null)}catch(t){if(e)return;console.error(`[Checkout] Failed to load the tax estimate:`,t),P(null)}finally{e||O(!1)}},300);return()=>{e=!0,clearTimeout(t)}},[V,J,W,Z.country_code,Z.state,F?.code,U]),(0,u.useEffect)(()=>{let e=e=>{e.persisted&&x(null)};return window.addEventListener(`pageshow`,e),()=>window.removeEventListener(`pageshow`,e)},[]),!z)return(0,f.jsxs)(`div`,{role:`status`,"aria-busy":`true`,className:`container mx-auto px-4 py-12 md:px-6`,children:[(0,f.jsx)(`span`,{className:`sr-only`,children:B(`loading`)===`loading`?`Loading…`:B(`loading`)}),(0,f.jsxs)(`div`,{className:`mx-auto max-w-6xl`,children:[(0,f.jsx)(`div`,{className:`mb-8 h-9 w-48 rounded-md bg-muted`}),(0,f.jsxs)(`div`,{className:`grid gap-8 lg:grid-cols-12 lg:items-start`,children:[(0,f.jsxs)(`div`,{className:`space-y-6 lg:col-span-8`,children:[(0,f.jsx)(`div`,{className:`h-56 rounded-xl border bg-muted/40`}),(0,f.jsx)(`div`,{className:`h-96 rounded-xl border bg-muted/40`})]}),(0,f.jsx)(`div`,{className:`lg:col-span-4`,children:(0,f.jsx)(`div`,{className:`h-72 rounded-xl border bg-muted/40`})})]})]})]});let Ve=()=>{be(!1),Se(null)},He=ye?(0,f.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center overscroll-contain bg-black/60 backdrop-blur-sm`,onClick:Ve,onKeyDown:e=>{e.key===`Escape`&&Ve()},children:(0,f.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-labelledby":`sandbox-checkout-title`,className:`relative bg-background border rounded-xl shadow-2xl p-8 max-w-md mx-4`,onClick:e=>e.stopPropagation(),children:[(0,f.jsx)(`button`,{type:`button`,autoFocus:!0,onClick:Ve,"aria-label":q(`close`,`Close`),className:`absolute top-4 right-4 inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground hover:text-foreground transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring`,children:(0,f.jsx)(d.X,{className:`w-5 h-5`})}),(0,f.jsxs)(`div`,{className:`flex items-center gap-3 mb-4`,children:[(0,f.jsx)(`div`,{className:`p-2 rounded-full bg-amber-100 dark:bg-amber-900/20`,children:(0,f.jsx)(d.FlaskConical,{className:`h-6 w-6 text-amber-600 dark:text-amber-400`})}),(0,f.jsx)(`h2`,{id:`sandbox-checkout-title`,className:`text-xl font-semibold`,children:B(`ecommerce.checkout_successful`)})]}),(0,f.jsx)(`p`,{className:`text-muted-foreground mb-2`,children:B(`ecommerce.sandbox_notice`)}),(0,f.jsx)(`p`,{className:`text-muted-foreground mb-2`,children:xe===`stripe`?q(`ecommerce.sandbox_checkout_stripe_description`,`This simulated step represents the Stripe checkout for physical products.`):q(`ecommerce.sandbox_checkout_freemius_description`,`This simulated step represents the Freemius checkout for digital products.`)}),(0,f.jsx)(`p`,{className:`text-muted-foreground mb-6`,children:B(`ecommerce.license_notice`)}),(0,f.jsx)(`a`,{href:`https://nextblock.dev`,target:`_blank`,rel:`noopener noreferrer`,className:`block w-full text-center py-3 px-4 rounded-lg bg-primary text-primary-foreground font-semibold hover:opacity-90 transition-opacity`,children:B(`ecommerce.purchase_at`)})]})}):null,Ue=(e,t,n)=>(C(n=>({...n,[e]:t})),n&&document.getElementById(n)?.focus(),null),We=(e,t)=>t.recipient_name.trim()?t.line1.trim()?t.city.trim()?c.countryUsesStructuredStates(t.country_code)&&!t.state?`${e}-state`:t.postal_code.trim()?`${e}-line1`:`${e}-postal`:`${e}-city`:`${e}-line1`:`${e}-name`,Ge=e=>{if(!K&&(!w||!/^\S+@\S+\.\S+$/.test(w)))return _e(B(`ecommerce.invalid_email`)),Ue(e,B(`ecommerce.invalid_email`),`checkout-email`);let t=l.normalizeCustomerAddress(I);if(!l.isCustomerAddressComplete(t))return Ue(e,B(`checkout_complete_billing_address`),We(`billing`,I));let n=J?l.normalizeCustomerAddress(R?I:L):null;if(e===`stripe`){if(!l.isCustomerAddressComplete(n))return Ue(e,B(`checkout_complete_shipping_address`),R?We(`billing`,I):We(`shipping`,L));if(!j)return Ue(e,q(`ecommerce.shipping_method_required`,`Please select a shipping method before continuing.`))}return _e(``),{normalizedBillingAddress:t,normalizedShippingAddress:n}},Ke=async(e,t,n)=>{C(t=>({...t,[e]:``}));let r=Ge(e);if(r){if(le){let n=new Set(t.map(e=>e.id)),r=U.filter(e=>!n.has(e.id));if(z.setItems(r),r.length===0&&z.removeCoupon(),Se(e),be(!0),typeof window<`u`&&r.length===0)try{window.localStorage.removeItem(_)}catch{}return}x(n);try{let n=await fetch(`/api/checkout`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({items:t,customerEmail:K?void 0:w,customerPhone:E||null,billingAddress:r.normalizedBillingAddress,shippingAddress:e===`stripe`?r.normalizedShippingAddress:null,shippingMethodId:e===`stripe`?j:null,locale:je,currencyCode:V,couponCode:F?.code??z.appliedCoupon?.code??null,couponContextItems:U})}),i=await n.json();if(!n.ok){let t=i?.errorKey&&typeof i.errorKey==`string`?q(i.errorKey,i?.error||q(`ecommerce.generic_error`,`Something went wrong.`),i.errorParams):i?.error||B(`ecommerce.generic_error`);C(n=>({...n,[e]:t})),x(null);return}if(i.customProps&&i.customProps.provider===`freemius`){let t=i.customProps,n=null,r=()=>{window.location.href=`/checkout/success?session_id=${t.order_id}`},a=e=>(n||=fetch(`/api/checkout/freemius/sync`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({orderId:t.order_id,checkoutResponse:e})}).then(async e=>{if(!e.ok){let t=await e.json().catch(()=>null);console.error(`Freemius checkout sync failed:`,t)}}),n),o={product_id:t.plugin_id,public_key:t.public_key,sandbox:t.sandbox},s={name:B(`ecommerce.checkout_overlay_title`),plan_id:t.plan_id,...t.billing_cycle?{billing_cycle:t.billing_cycle}:{},...t.trial?{trial:t.trial}:{},...t.coupon?{coupon:t.coupon}:{},user_email:t.user_email,user_firstname:t.user_firstname,user_lastname:t.user_lastname,sandbox:t.sandbox,purchaseCompleted:function(e){a(e)},success:function(e){(async()=>{try{await a(e)}finally{r()}})()}};try{new ce.Checkout(o).open(s),x(null)}catch(t){console.error(`[Checkout] Freemius overlay failed to open:`,t),C(t=>({...t,[e]:B(`ecommerce.checkout_popup_blocked`)})),i.url&&(window.location.href=i.url),x(null)}}else i.url?window.location.href=i.url:(C(t=>({...t,[e]:B(`ecommerce.checkout_failed`)+(i.error||q(`ecommerce.unknown_error`,`Unknown error`))})),x(null))}catch(t){console.error(t),C(t=>({...t,[e]:B(`ecommerce.generic_error`)})),x(null)}}};if(U.length===0)return(0,f.jsxs)(f.Fragment,{children:[He,(0,f.jsxs)(`div`,{className:`container mx-auto flex min-h-[50vh] flex-col items-center justify-center p-8 text-center`,children:[(0,f.jsx)(`h1`,{className:`mb-4 text-2xl font-bold`,children:B(`ecommerce.cart_empty`)}),(0,f.jsx)(`p`,{className:`mb-8 text-muted-foreground`,children:B(`ecommerce.cart_empty_description`)}),(0,f.jsx)(ie.Button,{asChild:!0,children:(0,f.jsx)(`a`,{href:`/shop`,children:B(`ecommerce.go_to_shop`)})})]})]});let qe=q(`ecommerce.checkout_payments_unavailable`,`This store is not able to take payments right now. Please contact the seller to complete your purchase.`),Je=Me.stripe?null:qe,Ye=Me.freemius?null:qe,Xe=Je||(J?Q?Ce?q(`ecommerce.calculating_shipping`,`Calculating shipping...`):j?null:k.length>0?B(`ecommerce.select_rate`):B(`ecommerce.no_rates_for_region`):q(`ecommerce.waiting_on_address_info`,`Complete your shipping address to view available shipping options.`):null),Ze=b!==null||Xe!==null,Qe=W.length===1?q(`ecommerce.item_count_one`,`{count} item`,{count:W.length}):q(`ecommerce.item_count_other`,`{count} items`,{count:W.length}),$e=G.length===1?q(`ecommerce.license_count_one`,`{count} license`,{count:G.length}):q(`ecommerce.license_count_other`,`{count} licenses`,{count:G.length}),et=t=>e.isDigitalItem(t)?q(`ecommerce.digital_label`,`Digital`):q(`ecommerce.physical_label`,`Physical`),tt=e=>e===`monthly`?q(`ecommerce.checkout_billing_cycle_monthly`,`Monthly subscription`):e===`annual`?q(`ecommerce.checkout_billing_cycle_annual`,`Annual subscription`):e===`lifetime`?q(`ecommerce.checkout_billing_cycle_lifetime`,`Lifetime subscription`):null;return(0,f.jsxs)(`div`,{className:`container mx-auto px-4 py-12 md:px-6`,children:[He,(0,f.jsxs)(`div`,{className:`mx-auto max-w-6xl`,children:[(0,f.jsx)(`h1`,{className:`mb-8 text-3xl font-bold`,children:B(`ecommerce.checkout`)}),(0,f.jsxs)(`div`,{className:`grid gap-8 lg:grid-cols-12 lg:items-start`,children:[(0,f.jsxs)(`div`,{className:`lg:col-span-8 space-y-6`,children:[(0,f.jsxs)(h.Card,{children:[(0,f.jsx)(h.CardHeader,{children:(0,f.jsxs)(h.CardTitle,{role:`heading`,"aria-level":2,className:`flex items-center gap-2`,children:[(0,f.jsx)(d.CreditCard,{className:`w-5 h-5`}),B(`ecommerce.contact_information`)]})}),(0,f.jsxs)(h.CardContent,{className:`space-y-4`,children:[K?(0,f.jsx)(`div`,{className:`rounded-xl border bg-muted/20 p-4 text-sm text-muted-foreground`,children:B(`checkout_prefill_notice`,{email:s?.email||``})}):(0,f.jsxs)(`div`,{className:`space-y-2`,children:[(0,f.jsxs)(m.Label,{htmlFor:`checkout-email`,children:[B(`ecommerce.email_address`),` `,(0,f.jsx)(`span`,{className:`text-destructive`,children:`*`})]}),(0,f.jsx)(p.Input,{id:`checkout-email`,name:`email`,type:`email`,autoComplete:`email`,spellCheck:!1,"aria-invalid":T?!0:void 0,"aria-describedby":T?`checkout-email-error`:void 0,placeholder:B(`ecommerce.email_placeholder`),value:w,onChange:e=>{ge(e.target.value),T&&_e(``)},required:!0}),T?(0,f.jsx)(`p`,{id:`checkout-email-error`,role:`alert`,className:`text-xs text-destructive mt-1`,children:T}):null]}),(0,f.jsxs)(`div`,{className:`space-y-2`,children:[(0,f.jsx)(m.Label,{htmlFor:`checkout-phone`,children:B(`phone_number`)}),(0,f.jsx)(p.Input,{id:`checkout-phone`,name:`phone`,type:`tel`,inputMode:`tel`,autoComplete:`tel`,placeholder:B(`optional`),value:E,onChange:e=>ve(e.target.value)})]})]})]}),(0,f.jsx)(fe,{idPrefix:`billing`,title:B(`billing_address`),description:B(`checkout_billing_address_help`),value:I,onChange:Oe}),J?(0,f.jsxs)(`div`,{className:`flex items-center space-x-3 rounded-xl border bg-muted/20 p-4`,children:[(0,f.jsx)(oe.Checkbox,{id:`use-billing-for-shipping`,checked:R,onCheckedChange:e=>Ae(!!e)}),(0,f.jsxs)(`div`,{className:`space-y-1`,children:[(0,f.jsx)(m.Label,{htmlFor:`use-billing-for-shipping`,className:`cursor-pointer`,children:B(`use_billing_for_shipping`)}),(0,f.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:B(`checkout_use_billing_for_shipping_help`)})]})]}):null,J&&!R?(0,f.jsx)(fe,{idPrefix:`shipping`,title:B(`shipping_address`),description:B(`checkout_shipping_address_help`),value:L,onChange:ke}):null,J?(0,f.jsxs)(h.Card,{children:[(0,f.jsx)(h.CardHeader,{children:(0,f.jsxs)(h.CardTitle,{role:`heading`,"aria-level":2,className:`flex items-center gap-2`,children:[(0,f.jsx)(d.ChevronRight,{className:`w-5 h-5 text-primary`}),B(`ecommerce.shipping_method`)]})}),(0,f.jsx)(h.CardContent,{children:Ce?(0,f.jsxs)(`div`,{role:`status`,className:`flex items-center justify-center py-6`,children:[(0,f.jsx)(d.Loader2,{className:`w-6 h-6 animate-spin text-muted-foreground`}),(0,f.jsx)(`span`,{className:`sr-only`,children:q(`ecommerce.calculating_shipping`,`Calculating shipping…`)})]}):we?(0,f.jsx)(`div`,{role:`alert`,className:`rounded-lg bg-destructive/10 px-4 py-3 text-center text-sm text-destructive`,children:q(`ecommerce.shipping_calculation_failed`,`We couldn't calculate shipping right now. Please try again.`)}):k.length>0?(0,f.jsx)(g.RadioGroup,{value:j??``,onValueChange:M,"aria-label":B(`ecommerce.shipping_method`),className:`space-y-3`,children:k.map(e=>(0,f.jsxs)(m.Label,{htmlFor:`shipping-method-${e.id}`,className:`flex items-center justify-between gap-3 p-4 rounded-lg border-2 cursor-pointer transition-colors ${j===e.id?`border-primary bg-primary/5`:`border-border hover:border-muted-foreground/40`}`,children:[(0,f.jsxs)(`span`,{className:`flex min-w-0 items-center gap-3`,children:[(0,f.jsx)(g.RadioGroupItem,{id:`shipping-method-${e.id}`,value:e.id}),(0,f.jsx)(`span`,{className:`font-medium break-words`,children:e.name})]}),(0,f.jsx)(`span`,{className:`font-bold tabular-nums`,children:y(e.amount,V)})]},e.id))}):(0,f.jsx)(`div`,{className:`py-4 text-center text-muted-foreground bg-muted/30 rounded-lg italic`,children:Q?B(`ecommerce.no_rates_for_region`):q(`ecommerce.waiting_on_address_info`,`Complete your shipping address to view available shipping options.`)})})]}):null]}),(0,f.jsxs)(`div`,{className:`lg:col-span-4 space-y-6`,children:[(0,f.jsxs)(h.Card,{className:`top-6`,children:[(0,f.jsx)(h.CardHeader,{children:(0,f.jsx)(h.CardTitle,{role:`heading`,"aria-level":2,children:B(`ecommerce.order_summary`)})}),(0,f.jsxs)(h.CardContent,{className:`space-y-4`,children:[(0,f.jsx)(`div`,{className:`space-y-3 max-h-[260px] overflow-y-auto pr-2`,children:U.map(e=>{let t=n.getCartItemActivePrice(e,{currencyCode:V,currencies:H}),r=a.getTrialSummary(e,B);return(0,f.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,f.jsxs)(`div`,{className:`flex gap-3`,children:[e.image_url?(0,f.jsx)(`div`,{className:`h-10 w-10 shrink-0 overflow-hidden rounded border bg-neutral-100`,children:(0,f.jsx)(`img`,{src:e.image_url,alt:e.title,className:`h-full w-full object-cover`})}):null,(0,f.jsxs)(`div`,{className:`grid gap-0.5`,children:[(0,f.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,f.jsx)(`span`,{className:`font-medium text-xs line-clamp-1`,children:e.title}),(0,f.jsx)(re.Badge,{variant:`outline`,className:`text-[9px] uppercase`,children:et(e)})]}),e.variant_label?(0,f.jsx)(`span`,{className:`text-[10px] text-muted-foreground line-clamp-1`,children:e.variant_label}):null,(0,f.jsxs)(`span`,{className:`text-[10px] text-muted-foreground`,children:[B(`ecommerce.qty`),`: `,e.quantity]}),r?(0,f.jsxs)(`span`,{className:`text-[10px] font-medium text-emerald-700`,children:[r.label,` - `,r.paymentRequirementLabel]}):null]})]}),(0,f.jsxs)(`div`,{className:`flex flex-col items-end gap-0.5 shrink-0`,children:[(0,f.jsx)(`span`,{className:`font-medium text-xs`,children:y((t.sale_price??t.price)*e.quantity,V)}),t.sale_price?(0,f.jsx)(`span`,{className:`text-[9px] text-muted-foreground line-through`,children:y(t.price*e.quantity,V)}):null]})]},`${e.id}-${e.variant_id||`base`}`)})}),(0,f.jsx)(se.Separator,{}),(0,f.jsx)(o.CouponForm,{items:U,currencyCode:V,onQuoteChange:De}),(0,f.jsxs)(`div`,{className:`space-y-2 text-sm`,children:[(0,f.jsxs)(`div`,{className:`flex justify-between`,children:[(0,f.jsx)(`span`,{children:B(`ecommerce.subtotal`)}),(0,f.jsx)(`span`,{children:y(Ne,V)})]}),W.length>0?(0,f.jsxs)(`div`,{className:`flex justify-between text-muted-foreground`,children:[(0,f.jsx)(`span`,{children:q(`ecommerce.physical_products`,`Physical products`)}),(0,f.jsx)(`span`,{children:y(Pe,V)})]}):null,G.length>0?(0,f.jsxs)(`div`,{className:`flex justify-between text-muted-foreground`,children:[(0,f.jsx)(`span`,{children:q(`ecommerce.digital_products`,`Digital products`)}),(0,f.jsx)(`span`,{children:y(Fe,V)})]}):null,F?(0,f.jsxs)(`div`,{className:`flex justify-between text-emerald-600`,children:[(0,f.jsxs)(`span`,{children:[q(`ecommerce.discount`,`Discount`),` (`,F.code,`)`]}),(0,f.jsxs)(`span`,{children:[`-`,y(F.discountTotal,V)]})]}):null,(W.length>0||G.length>0)&&(0,f.jsxs)(`div`,{className:`flex justify-between font-bold text-lg pt-2 border-t mt-2`,children:[(0,f.jsx)(`span`,{children:q(`ecommerce.estimated_total`,`Estimated total`)}),(0,f.jsx)(`span`,{className:`text-primary`,children:y(Be,V)})]})]})]})]}),W.length>0?(0,f.jsxs)(pe,{title:q(`ecommerce.stripe_checkout_title`,`Stripe Checkout`),description:q(`ecommerce.stripe_checkout_description`,`Pay for physical products in one Stripe checkout session.`),badgeLabel:Qe,children:[(0,f.jsxs)(`div`,{className:`space-y-2 text-sm`,children:[(0,f.jsxs)(`div`,{className:`flex justify-between`,children:[(0,f.jsx)(`span`,{children:q(`ecommerce.physical_subtotal`,`Physical subtotal`)}),(0,f.jsx)(`span`,{children:y(Pe,V)})]}),Ie>0?(0,f.jsxs)(`div`,{className:`flex justify-between text-emerald-600`,children:[(0,f.jsx)(`span`,{children:q(`ecommerce.discount`,`Discount`)}),(0,f.jsxs)(`span`,{children:[`-`,y(Ie,V)]})]}):null,(0,f.jsxs)(`div`,{className:`flex justify-between`,children:[(0,f.jsx)(`span`,{children:B(`ecommerce.shipping`)}),(0,f.jsx)(`span`,{children:$?y($.amount,V):`-`})]}),(0,f.jsxs)(`div`,{className:`flex justify-between`,children:[(0,f.jsx)(`span`,{children:q(`ecommerce.tax`,`Tax`)}),(0,f.jsx)(`span`,{children:Ee?`...`:N?.isPendingExternalCalculation?q(`ecommerce.tax_calculated_on_stripe`,`Calculated on Stripe`):N?y(N.amount,V):`-`})]}),N&&N.lines.length>0?(0,f.jsx)(`div`,{className:`rounded-lg bg-muted/20 px-3 py-2 text-xs text-muted-foreground`,children:N.lines.map(e=>(0,f.jsxs)(`div`,{className:`flex justify-between gap-3`,children:[(0,f.jsxs)(`span`,{children:[e.name,` (`,e.rate.toFixed(4),`%)`]}),(0,f.jsx)(`span`,{children:y(e.amount,V)})]},e.id||`${e.name}-${e.rate}`))}):null,(0,f.jsxs)(`div`,{className:`flex justify-between font-semibold pt-2 border-t`,children:[(0,f.jsx)(`span`,{children:q(`ecommerce.total_on_stripe`,`Total on Stripe`)}),(0,f.jsx)(`span`,{children:y(ze,V)})]})]}),(0,f.jsxs)(ie.Button,{className:`w-full`,size:`lg`,onClick:()=>Ke(`stripe`,W,`stripe`),disabled:Ze,children:[b===`stripe`?(0,f.jsx)(d.Loader2,{className:`mr-2 h-4 w-4 animate-spin`}):(0,f.jsx)(d.Package,{className:`mr-2 h-4 w-4`}),b===`stripe`?B(`ecommerce.processing`):q(`ecommerce.checkout_physical_products`,`Checkout Physical Products`)]}),Xe&&b===null?(0,f.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:Xe}):null,S.stripe?(0,f.jsx)(`div`,{role:`alert`,className:`rounded-lg border border-destructive/20 bg-destructive/10 px-3 py-2 text-xs text-destructive`,children:S.stripe}):null,(0,f.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:N?.isPendingExternalCalculation?q(`checkout_stripe_tax_finalized_notice`,`Tax will be finalized by Stripe Tax on the payment step.`):q(`ecommerce.shipping_taxes_collected_on_stripe`,`Shipping and taxes are only collected during the Stripe step for physical products.`)})]}):null,G.length>0?(0,f.jsxs)(pe,{title:q(`ecommerce.freemius_checkout_title`,`Freemius Checkout`),description:q(`ecommerce.freemius_checkout_description`,`Digital products use the Freemius checkout flow.`),badgeLabel:$e,children:[(0,f.jsx)(`div`,{className:`space-y-3`,children:G.map(e=>{let t=n.getCartItemActivePrice(e,{currencyCode:V,currencies:H}),r=a.getTrialSummary(e,B),i=`freemius:${e.id}`,o=r?me[i]||`paid`:void 0;return(0,f.jsxs)(`div`,{className:`rounded-lg border p-3 space-y-3`,children:[(0,f.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`p`,{className:`font-medium`,children:e.title}),e.billing_cycle?(0,f.jsx)(`p`,{className:`text-xs text-muted-foreground capitalize`,children:tt(e.billing_cycle)}):null,r?(0,f.jsxs)(`p`,{className:`text-xs font-medium text-emerald-700`,children:[r.label,` - `,r.paymentRequirementLabel]}):null]}),(0,f.jsx)(`span`,{className:`font-medium`,children:y(t.sale_price??t.price,V)})]}),r&&!e.trial_requires_payment_method&&(0,f.jsxs)(`div`,{className:`bg-muted/30 p-3 rounded-md border text-sm mt-2 mb-3`,children:[(0,f.jsx)(`p`,{className:`font-medium mb-3`,children:q(`ecommerce.freemius_trial_preference_title`,`How would you like to start your trial?`)}),(0,f.jsxs)(g.RadioGroup,{value:me[i]||`paid`,onValueChange:e=>he(t=>({...t,[i]:e})),className:`gap-3`,children:[(0,f.jsxs)(`div`,{className:`flex items-start space-x-3`,children:[(0,f.jsx)(g.RadioGroupItem,{value:`paid`,id:`${i}-paid`,className:`mt-1`}),(0,f.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,f.jsx)(m.Label,{htmlFor:`${i}-paid`,className:`font-medium leading-none cursor-pointer`,children:q(`ecommerce.freemius_trial_with_card`,`Enter Payment Details Now (Still get full trial length free)`)}),(0,f.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:q(`ecommerce.freemius_trial_with_card_help`,`You will not be billed until the trial ends. Cancel anytime.`)})]})]}),(0,f.jsxs)(`div`,{className:`flex items-start space-x-3`,children:[(0,f.jsx)(g.RadioGroupItem,{value:`free`,id:`${i}-free`,className:`mt-1`}),(0,f.jsx)(`div`,{className:`grid gap-1.5`,children:(0,f.jsx)(m.Label,{htmlFor:`${i}-free`,className:`font-medium leading-none cursor-pointer`,children:q(`ecommerce.freemius_trial_no_card`,`Start Free Trial (No card required)`)})})]})]})]}),(0,f.jsxs)(ie.Button,{className:`w-full h-auto min-h-[2.75rem] py-2`,onClick:()=>Ke(`freemius`,[{...e,...o?{trial_preference:o}:{}}],i),disabled:b!==null||Ye!==null,children:[b===i?(0,f.jsx)(d.Loader2,{className:`mr-2 h-4 w-4 shrink-0 animate-spin`}):(0,f.jsx)(d.Download,{className:`mr-2 h-4 w-4 shrink-0`}),(0,f.jsx)(`span`,{className:`whitespace-normal text-left`,children:b===i?B(`ecommerce.processing`):G.length>1?q(`ecommerce.checkout_product`,`Checkout {title}`,{title:e.title}):q(`ecommerce.checkout_digital_product`,`Checkout Digital Product`)})]})]},i)})}),(0,f.jsxs)(`div`,{className:`flex justify-between text-sm font-semibold border-t pt-3`,children:[(0,f.jsx)(`span`,{children:q(`ecommerce.digital_subtotal`,`Digital subtotal`)}),(0,f.jsx)(`span`,{children:y(Fe,V)})]}),Le>0?(0,f.jsxs)(`div`,{className:`flex justify-between text-sm font-semibold text-emerald-600`,children:[(0,f.jsx)(`span`,{children:q(`ecommerce.discount`,`Discount`)}),(0,f.jsxs)(`span`,{children:[`-`,y(Le,V)]})]}):null,Ye?(0,f.jsx)(`div`,{className:`rounded-lg border border-amber-500/40 bg-amber-500/10 px-3 py-2 text-xs`,children:Ye}):null,S.freemius?(0,f.jsx)(`div`,{role:`alert`,className:`rounded-lg border border-destructive/20 bg-destructive/10 px-3 py-2 text-xs text-destructive`,children:S.freemius}):null,(0,f.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:G.length>1?q(`ecommerce.freemius_multi_checkout_notice`,`Freemius licenses are completed one at a time, so each digital product gets its own checkout action.`):q(`ecommerce.freemius_tax_notice`,`Taxes and compliance for digital products are handled inside the Freemius checkout.`)})]}):null]})]})]})]})};exports.Checkout=y;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";const e=require("../use-cart.cjs.js"),t=require("../use-price-formatter.cjs.js"),n=require("../coupons.cjs.js"),r=require("../server-actions/coupon-actions.cjs.js");let i=require("@nextblock-cms/ui/badge"),a=require("@nextblock-cms/ui/button"),o=require("react"),s=require("lucide-react"),c=require("@nextblock-cms/utils"),l=require("react/jsx-runtime"),u=require("@nextblock-cms/ui/input"),d=require("@nextblock-cms/ui/label");function f({items:f,currencyCode:p,onQuoteChange:m,compact:h=!1}){let g=e.useCart(e=>e.appliedCoupon),_=e.useCart(e=>e.setAppliedCoupon),v=e.useCart(e=>e.removeCoupon),{t:y}=(0,c.useTranslations)(),b=t.usePriceFormatter(),[x,S]=(0,o.useState)(``),[C,w]=(0,o.useState)(null),[T,E]=(0,o.useState)(``),[D,O]=(0,o.useState)(!1),k=(0,o.useRef)(null),A=(0,o.useMemo)(()=>f.map(e=>`${e.product_id}:${e.variant_id||`base`}:${e.quantity}`).sort().join(`|`),[f]),j=(0,o.useCallback)((e,t)=>{let n=y(e);return n===e?t:n},[y]),M=(0,o.useCallback)(e=>`${n.normalizeCouponCode(e)}:${p}:${A}`,[A,p]),N=(0,o.useCallback)(async(e,t)=>{let i=n.normalizeCouponCode(e);if(!i){E(j(`ecommerce.coupon_code_required`,`Enter a coupon code.`));return}O(!0),E(``);try{let e=await r.getCouponQuoteAction({code:i,items:f,currencyCode:p});if(!e.success){w(null),m?.(null),v?.(),E(e.errorKey?j(e.errorKey,e.error):e.error);return}k.current=M(e.quote.code),w(e.quote),m?.(e.quote),t?.silent||(_?.({code:e.quote.code,couponId:e.quote.couponId}),S(``)),t?.silent||E(``)}catch(e){console.error(`Failed to validate coupon:`,e),k.current=null,w(null),m?.(null),E(j(`ecommerce.coupon_validation_failed`,`Failed to validate coupon.`))}finally{O(!1)}},[v,p,M,f,m,_,j]);return(0,o.useEffect)(()=>{if(!_||!v)return;if(!g||f.length===0){k.current=null,w(null),m?.(null);return}let e=M(g.code);k.current!==e&&(k.current=e,N(g.code,{silent:!0}))},[g?.code,N,v,M,f.length,m,_]),!_||!v?null:(0,l.jsxs)(`div`,{className:h?`space-y-2`:`rounded-lg border bg-muted/10 p-4 space-y-3`,children:[(0,l.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,l.jsxs)(d.Label,{htmlFor:h?`coupon-code-compact`:`coupon-code`,className:`flex items-center gap-2 text-sm font-medium`,children:[(0,l.jsx)(s.Tag,{className:`h-4 w-4`}),j(`ecommerce.coupon`,`Coupon`)]}),C?(0,l.jsxs)(i.Badge,{variant:`secondary`,className:`gap-1`,children:[C.code,(0,l.jsx)(`button`,{type:`button`,onClick:()=>{v(),w(null),m?.(null),E(``)},"aria-label":j(`ecommerce.remove_coupon`,`Remove coupon {code}`).replace(`{code}`,C.code),className:`-mr-1 inline-flex h-6 w-6 items-center justify-center rounded-full focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring`,children:(0,l.jsx)(s.X,{className:`h-3 w-3`})})]}):null]}),C?(0,l.jsxs)(`div`,{className:`flex items-center justify-between gap-3 text-sm`,children:[(0,l.jsx)(`span`,{className:`min-w-0 truncate text-muted-foreground`,children:C.name}),(0,l.jsx)(`span`,{className:`shrink-0 font-medium tabular-nums text-emerald-600 dark:text-emerald-400`,children:b(-C.discountTotal,p)})]}):(0,l.jsxs)(`div`,{className:`flex gap-2`,children:[(0,l.jsx)(u.Input,{id:h?`coupon-code-compact`:`coupon-code`,name:`coupon`,autoComplete:`off`,autoCapitalize:`characters`,spellCheck:!1,"aria-invalid":T?!0:void 0,"aria-describedby":T?h?`coupon-error-compact`:`coupon-error`:void 0,value:x,onChange:e=>S(e.target.value),placeholder:j(`ecommerce.coupon_placeholder`,`SAVE10…`),className:`uppercase`,onKeyDown:e=>{e.key===`Enter`&&!D&&(e.preventDefault(),N(x))}}),(0,l.jsx)(a.Button,{type:`button`,variant:`outline`,disabled:D||f.length===0,onClick:()=>void N(x),children:D?j(`ecommerce.applying`,`Applying…`):j(`ecommerce.apply`,`Apply`)})]}),T?(0,l.jsx)(`p`,{id:h?`coupon-error-compact`:`coupon-error`,role:`alert`,className:`text-xs text-destructive`,children:T}):null]})}exports.CouponForm=f;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../CurrencyProvider.cjs.js");let t=require("@nextblock-cms/utils"),n=require("react/jsx-runtime"),r=require("@nextblock-cms/ui/select");function i(){let{activeCurrencyCode:i,currencies:a,setActiveCurrencyCode:o}=e.useCurrency(),{t:s}=(0,t.useTranslations)(),c=s(`ecommerce.currency`)===`ecommerce.currency`?`Currency`:s(`ecommerce.currency`);return a.length<=1?null:(0,n.jsxs)(r.Select,{value:i,onValueChange:o,children:[(0,n.jsx)(r.SelectTrigger,{"aria-label":c,className:`h-9 w-[88px] text-xs font-semibold`,children:(0,n.jsx)(r.SelectValue,{placeholder:i})}),(0,n.jsx)(r.SelectContent,{children:a.map(e=>(0,n.jsx)(r.SelectItem,{value:e.code,children:e.code},e.code))})]})}exports.CurrencySwitcher=i;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../countries.cjs.js"),n=require("../customer.cjs.js"),r=require("./AccountNavigationMenu.cjs.js"),i=require("../server-actions/customer-actions.cjs.js");let a=require("@nextblock-cms/ui/button"),o=require("react");o=e.__toESM(o,1);let s=require("lucide-react"),c=require("@nextblock-cms/utils"),l=require("react/jsx-runtime"),u=require("@nextblock-cms/ui/input"),d=require("@nextblock-cms/ui/label"),f=require("@nextblock-cms/ui/card"),p=require("@nextblock-cms/ui/checkbox"),m=require("@nextblock-cms/ui/separator"),h=require("@nextblock-cms/ui/select"),g=require("react-hook-form"),_=require("@nextblock-cms/ui/avatar"),v=require("@nextblock-cms/db");function y(e){return e?e.startsWith(`http`)?e:process.env.NEXT_PUBLIC_R2_BASE_URL?`${process.env.NEXT_PUBLIC_R2_BASE_URL}/${e}`:process.env.NEXT_PUBLIC_SUPABASE_URL?`${process.env.NEXT_PUBLIC_SUPABASE_URL}/storage/v1/object/public/media/${e}`:e:null}function b(e){return{company_name:e?.company_name||``,recipient_name:e?.recipient_name||``,line1:e?.line1||``,line2:e?.line2||``,city:e?.city||``,state:e?.state||``,postal_code:e?.postal_code||``,country_code:t.normalizeCountryCode(e?.country_code)||`CA`}}function x({prefix:e,title:n,register:r}){let{t:i}=(0,c.useTranslations)(),a=i(`company_name`)===`company_name`?`Company name`:i(`company_name`);return(0,l.jsxs)(`div`,{className:`space-y-4 rounded-xl border p-4`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`h3`,{className:`text-lg font-medium`,children:n}),(0,l.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:i(`profile_address_defaults_help`)})]}),(0,l.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-3`,children:[(0,l.jsxs)(`div`,{className:`space-y-2`,children:[(0,l.jsx)(d.Label,{htmlFor:`${e}-company_name`,children:a}),(0,l.jsx)(u.Input,{id:`${e}-company_name`,...r(`${e}.company_name`)})]}),(0,l.jsxs)(`div`,{className:`space-y-2`,children:[(0,l.jsx)(d.Label,{htmlFor:`${e}-recipient_name`,children:i(`full_name`)}),(0,l.jsx)(u.Input,{id:`${e}-recipient_name`,...r(`${e}.recipient_name`)})]}),(0,l.jsxs)(`div`,{className:`space-y-2`,children:[(0,l.jsx)(d.Label,{htmlFor:`${e}-country_code`,children:i(`country`)}),(0,l.jsx)(`select`,{id:`${e}-country_code`,className:`flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm`,...r(`${e}.country_code`),children:t.countries.map(e=>(0,l.jsx)(`option`,{value:e.code,children:e.name},e.code))})]})]}),(0,l.jsxs)(`div`,{className:`space-y-2`,children:[(0,l.jsx)(d.Label,{htmlFor:`${e}-line1`,children:i(`address_line_1`)}),(0,l.jsx)(u.Input,{id:`${e}-line1`,...r(`${e}.line1`)})]}),(0,l.jsxs)(`div`,{className:`space-y-2`,children:[(0,l.jsx)(d.Label,{htmlFor:`${e}-line2`,children:i(`address_line_2`)}),(0,l.jsx)(u.Input,{id:`${e}-line2`,...r(`${e}.line2`)})]}),(0,l.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-3`,children:[(0,l.jsxs)(`div`,{className:`space-y-2`,children:[(0,l.jsx)(d.Label,{htmlFor:`${e}-city`,children:i(`city`)}),(0,l.jsx)(u.Input,{id:`${e}-city`,...r(`${e}.city`)})]}),(0,l.jsxs)(`div`,{className:`space-y-2`,children:[(0,l.jsx)(d.Label,{htmlFor:`${e}-state`,children:i(`state_province`)}),(0,l.jsx)(u.Input,{id:`${e}-state`,...r(`${e}.state`)})]}),(0,l.jsxs)(`div`,{className:`space-y-2`,children:[(0,l.jsx)(d.Label,{htmlFor:`${e}-postal_code`,children:i(`postal_zip_code`)}),(0,l.jsx)(u.Input,{id:`${e}-postal_code`,...r(`${e}.postal_code`)})]})]})]})}function S({initialData:e,MediaPickerComponent:t,isAdmin:S,email:C,accountLinks:w,onAction:T,initialSuccessMessage:E,lockRole:D,lockRoleReason:O}){let{t:k}=(0,c.useTranslations)(),[A,j]=(0,o.useState)(!1),[M,N]=(0,o.useState)(E?{type:`success`,text:E}:null),P=e?.use_billing_for_shipping??(!e?.shipping_address||n.addressesMatch(e?.billing_address,e?.shipping_address)),{register:F,handleSubmit:I,setValue:L,getValues:R,watch:z,reset:B}=(0,g.useForm)({defaultValues:{full_name:e?.full_name||``,avatar_url:e?.avatar_url||``,website:e?.website||``,phone:e?.phone||``,role:e?.role,use_billing_for_shipping:P,billing_address:b(e?.billing_address),shipping_address:b(e?.shipping_address)}});o.default.useEffect(()=>{e&&B({full_name:e.full_name||``,avatar_url:e.avatar_url||``,website:e.website||``,phone:e.phone||``,role:e.role,use_billing_for_shipping:e.use_billing_for_shipping??(!e.shipping_address||n.addressesMatch(e.billing_address,e.shipping_address)),billing_address:b(e.billing_address),shipping_address:b(e.shipping_address)})},[e,B]),o.default.useEffect(()=>{E&&N({type:`success`,text:E})},[E]),o.default.useEffect(()=>{let e=(0,v.createClient)();(async()=>{let{data:{user:t}}=await e.auth.getUser();t&&!R(`full_name`)&&t.user_metadata?.full_name&&L(`full_name`,t.user_metadata.full_name)})()},[R,L]);let V=e=>{let t=y(e?.object_key??e?.file_path);t&&L(`avatar_url`,t)},H=async e=>{j(!0),N(null);let t=n.normalizeCustomerAddress(e.billing_address)??n.emptyCustomerAddress(),r=e.use_billing_for_shipping?t:n.normalizeCustomerAddress(e.shipping_address);try{let n={...e,billing_address:t,shipping_address:r};if(T){let e=await T(n);if(e?.error)throw Error(e.error)}else await i.updateProfile(n);N({type:`success`,text:k(`profile_updated_success`)})}catch(e){if(e.message===`NEXT_REDIRECT`||e.message?.includes(`NEXT_REDIRECT`))return;console.error(e),N({type:`error`,text:k(`profile_update_failed`)})}finally{j(!1)}},U=z(`use_billing_for_shipping`);return(0,l.jsxs)(`div`,{className:`grid gap-6 md:grid-cols-12 max-w-5xl mx-auto`,children:[(0,l.jsxs)(f.Card,{className:`md:col-span-4 h-fit`,children:[(0,l.jsx)(f.CardHeader,{children:(0,l.jsx)(f.CardTitle,{className:`text-xl`,children:k(`public_profile`)})}),(0,l.jsxs)(f.CardContent,{className:`flex flex-col items-center text-center space-y-4`,children:[(0,l.jsxs)(`div`,{className:`relative group`,children:[(0,l.jsxs)(_.Avatar,{className:`h-32 w-32 border-4 border-muted`,children:[(0,l.jsx)(_.AvatarImage,{src:z(`avatar_url`)||void 0,alt:z(`full_name`)||``,className:`object-cover`}),(0,l.jsx)(_.AvatarFallback,{className:`text-4xl bg-secondary`,children:z(`full_name`)?.charAt(0)?.toUpperCase()||(0,l.jsx)(s.User,{className:`h-12 w-12`})})]}),t&&(0,l.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 [@media(hover:none)]:opacity-100 transition-opacity bg-black/40 rounded-full cursor-pointer`,children:(0,l.jsx)(t,{triggerLabel:(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Upload,{className:`h-6 w-6 text-white`}),(0,l.jsx)(`span`,{className:`sr-only`,children:k(`profile_change_avatar`)===`profile_change_avatar`?`Change profile picture`:k(`profile_change_avatar`)})]}),triggerVariant:`ghost`,title:k(`customer_profile`),onSelect:V,accept:e=>e.file_type.startsWith(`image/`),hideTrigger:!1})})]}),!t&&(0,l.jsxs)(`div`,{className:`w-full`,children:[(0,l.jsx)(d.Label,{htmlFor:`avatar_url`,className:`sr-only`,children:k(`avatar_url`)}),(0,l.jsx)(u.Input,{id:`avatar_url`,type:`url`,autoComplete:`off`,...F(`avatar_url`),placeholder:`https://…`,className:`mt-2`})]}),(0,l.jsxs)(`div`,{className:`w-full space-y-1 text-left mt-4`,children:[(0,l.jsx)(`div`,{className:`text-sm font-medium text-muted-foreground uppercase tracking-wider`,children:k(`identity`)}),(0,l.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,l.jsx)(`span`,{className:`font-semibold text-lg`,children:z(`full_name`)||k(`full_name`)})})]}),w?.length?(0,l.jsx)(r.AccountNavigationMenu,{links:w,className:`mt-2 text-left`}):null]})]}),(0,l.jsx)(f.Card,{className:`md:col-span-8`,children:(0,l.jsxs)(`form`,{onSubmit:I(H),children:[(0,l.jsx)(f.CardHeader,{children:(0,l.jsx)(f.CardTitle,{children:k(`details`)})}),(0,l.jsxs)(f.CardContent,{className:`space-y-6`,children:[C&&(0,l.jsxs)(`div`,{className:`space-y-2`,children:[(0,l.jsxs)(d.Label,{htmlFor:`email`,children:[k(`email`)===`email`?`Email`:k(`email`),` (`,k(`read_only`)===`read_only`?`read-only`:k(`read_only`),`)`]}),(0,l.jsx)(u.Input,{id:`email`,value:C,readOnly:!0,disabled:!0,className:`bg-muted/50`})]}),(0,l.jsx)(`div`,{className:`rounded-xl border bg-muted/20 p-4 text-sm text-muted-foreground`,children:k(`profile_basic_info_help`)}),(0,l.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,l.jsxs)(`div`,{className:`space-y-2`,children:[(0,l.jsxs)(d.Label,{htmlFor:`full_name`,className:`flex items-center gap-2`,children:[(0,l.jsx)(s.User,{className:`h-4 w-4`}),` `,k(`full_name`)]}),(0,l.jsx)(u.Input,{id:`full_name`,autoComplete:`name`,...F(`full_name`)})]}),(0,l.jsxs)(`div`,{className:`space-y-2`,children:[(0,l.jsxs)(d.Label,{htmlFor:`phone`,className:`flex items-center gap-2`,children:[(0,l.jsx)(s.Phone,{className:`h-4 w-4`}),` `,k(`phone_number`)]}),(0,l.jsx)(u.Input,{id:`phone`,type:`tel`,inputMode:`tel`,autoComplete:`tel`,...F(`phone`)})]})]}),(0,l.jsxs)(`div`,{className:`space-y-2`,children:[(0,l.jsxs)(d.Label,{htmlFor:`website`,className:`flex items-center gap-2`,children:[(0,l.jsx)(s.Globe,{className:`h-4 w-4`}),` `,k(`website`)]}),(0,l.jsx)(u.Input,{id:`website`,type:`url`,autoComplete:`url`,...F(`website`),placeholder:`https://example.com`})]}),(0,l.jsx)(m.Separator,{className:`my-2`}),(0,l.jsx)(x,{prefix:`billing_address`,title:k(`billing_address`),register:F}),(0,l.jsxs)(`div`,{className:`flex items-center space-x-3 rounded-lg border p-4`,children:[(0,l.jsx)(p.Checkbox,{id:`use_billing_for_shipping`,checked:!!U,onCheckedChange:e=>L(`use_billing_for_shipping`,!!e,{shouldDirty:!0})}),(0,l.jsxs)(`div`,{className:`space-y-1`,children:[(0,l.jsx)(d.Label,{htmlFor:`use_billing_for_shipping`,className:`cursor-pointer`,children:k(`use_billing_for_shipping`)}),(0,l.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:k(`profile_use_billing_for_shipping_help`)})]})]}),!U&&(0,l.jsx)(x,{prefix:`shipping_address`,title:k(`shipping_address`),register:F}),M&&(0,l.jsx)(`div`,{role:M.type===`error`?`alert`:`status`,className:`mt-4 rounded-xl border p-4 text-sm ${M.type===`success`?`border-emerald-200 bg-emerald-50 text-emerald-700`:`border-red-200 bg-red-50 text-red-700`}`,children:M.text}),S&&(0,l.jsxs)(`div`,{className:`border-t pt-4 mt-4`,children:[(0,l.jsx)(`h3`,{className:`text-sm font-medium mb-3`,children:`Admin Settings`}),(0,l.jsxs)(`div`,{className:`grid gap-2`,children:[(0,l.jsx)(d.Label,{htmlFor:`role`,children:`Role`}),(0,l.jsxs)(h.Select,{value:z(`role`)||`USER`,onValueChange:e=>L(`role`,e),disabled:D,children:[(0,l.jsx)(h.SelectTrigger,{children:(0,l.jsx)(h.SelectValue,{placeholder:`Select role`})}),(0,l.jsxs)(h.SelectContent,{children:[(0,l.jsx)(h.SelectItem,{value:`USER`,children:`User`}),(0,l.jsx)(h.SelectItem,{value:`WRITER`,children:`Writer`}),(0,l.jsx)(h.SelectItem,{value:`ADMIN`,children:`Admin`})]})]}),D&&(0,l.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:O||`This is the only Admin account, so its role can't be changed. Promote another user to Admin first.`})]})]})]}),(0,l.jsx)(f.CardFooter,{className:`flex justify-end`,children:(0,l.jsx)(a.Button,{type:`submit`,disabled:A,size:`lg`,children:k(A?`saving`:`save_changes`)})})]})})]})}exports.CustomerProfileForm=S;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../currency.cjs.js"),n=require("../CurrencyProvider.cjs.js"),r=require("../use-price-formatter.cjs.js"),i=require("../trials.cjs.js"),a=require("./AddToCartButton.cjs.js"),o=require("./ShortDescription.cjs.js");let s=require("next/link");s=e.__toESM(s,1);let c=require("@nextblock-cms/utils"),l=require("react/jsx-runtime");var u=({product:e,className:u,imagePosition:d=`left`})=>{let f=r.usePriceFormatter(),{t:p}=(0,c.useTranslations)(),{activeCurrencyCode:m,currencies:h}=n.useCurrency(),g=t.resolvePriceRangeForCurrency({entries:e.variants?.length?e.variants:e.product_variants?.length?e.product_variants:[],currencyCode:m,currencies:h}),_=!!(e.has_variants&&g),v=t.resolveEffectivePriceForCurrency({prices:e.prices,salePrices:e.sale_prices,fallbackPrice:e.price,fallbackSalePrice:e.sale_price,saleStartAt:e.sale_start_at,saleEndAt:e.sale_end_at,scheduledPrice:e.scheduled_price,scheduledPrices:e.scheduled_prices,scheduledPriceAt:e.scheduled_price_at,currencyCode:m,currencies:h}),y=_&&g?g.min===g.max?f(g.min,m):`${f(g.min,m)} - ${f(g.max,m)}`:f(v.sale_price??v.price,m),b=i.getTrialSummary(e,p);return(0,l.jsx)(`div`,{className:(0,c.cn)(`overflow-hidden rounded-xl border bg-card shadow-sm`,u),children:(0,l.jsxs)(`div`,{className:(0,c.cn)(`flex flex-col gap-8 md:flex-row`,d===`right`&&`md:flex-row-reverse`),children:[(0,l.jsx)(`div`,{className:`relative aspect-square w-full md:w-1/2`,children:e.image_url?(0,l.jsx)(`img`,{src:e.image_url,alt:e.title,width:800,height:800,loading:`lazy`,decoding:`async`,className:`h-full w-full object-cover`}):(0,l.jsx)(`div`,{className:`flex h-full w-full items-center justify-center bg-secondary text-muted-foreground`,children:p(`ecommerce.no_image`)})}),(0,l.jsxs)(`div`,{className:`flex flex-1 flex-col justify-center p-6 md:p-12`,children:[(0,l.jsx)(s.default,{href:`/product/${e.slug}`,children:(0,l.jsx)(`h2`,{className:`mb-4 text-3xl font-bold tracking-tight hover:underline md:text-4xl`,children:e.title})}),(0,l.jsxs)(`div`,{className:`mb-6 flex items-baseline gap-3`,children:[(0,l.jsx)(`span`,{className:`text-3xl font-bold text-primary`,children:y}),!_&&v.sale_price&&(0,l.jsx)(`span`,{className:`text-lg text-muted-foreground line-through`,children:f(v.price,m)})]}),b&&(0,l.jsxs)(`div`,{className:`mb-6 inline-flex w-fit flex-col rounded-md border border-emerald-200 bg-emerald-50 px-3 py-2 text-sm text-emerald-900`,children:[(0,l.jsx)(`span`,{className:`font-semibold`,children:b.label}),(0,l.jsx)(`span`,{className:`text-emerald-700`,children:b.paymentRequirementLabel})]}),(0,l.jsx)(o.ShortDescription,{value:e.short_description,className:`mb-8 text-lg text-muted-foreground`}),(0,l.jsxs)(`div`,{className:`flex flex-col gap-4 sm:flex-row`,children:[(0,l.jsx)(a.AddToCartButton,{product:e,className:`h-12 w-full px-8 text-lg sm:w-auto`}),(0,l.jsx)(s.default,{href:`/product/${e.slug}`,className:`inline-flex h-12 items-center justify-center rounded-md border border-input bg-background px-8 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground`,children:p(`ecommerce.view_details`)})]})]})]})})};exports.FeaturedProduct=u;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";const e=require("../invoice-ui.cjs.js"),t=require("../invoice.cjs.js");let n=require("@nextblock-cms/ui/button"),r=require("react"),i=require("lucide-react"),a=require("@nextblock-cms/utils"),o=require("react/jsx-runtime");function s({license:s}){let{t:c,lang:l}=(0,a.useTranslations)(),[u,d]=(0,r.useState)(!1);if(!s)return null;let f=e.getInvoiceLocale(l),p=s.expiration??s.trialEndsAt,m=p?t.formatInvoiceDate(p,f):null;return(0,o.jsxs)(`div`,{className:`mb-6 rounded-2xl border border-primary/30 bg-primary/5 p-5 print:hidden`,children:[(0,o.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,o.jsx)(i.KeyRound,{className:`h-5 w-5 text-primary`}),(0,o.jsx)(`h2`,{className:`text-lg font-semibold`,children:e.translateOrFallback(c,`ecommerce.license_panel_title`,`Your license`)})]}),s.licenseKey?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:e.translateOrFallback(c,`ecommerce.license_panel_help`,`Activate this key in your NextBlock install under Settings → Packages.`)}),(0,o.jsxs)(`div`,{className:`mt-3 flex flex-col gap-2 sm:flex-row sm:items-center`,children:[(0,o.jsx)(`code`,{translate:`no`,className:`flex-1 select-all overflow-x-auto rounded-lg border bg-background px-3 py-2 font-mono text-sm`,children:s.licenseKey}),(0,o.jsxs)(n.Button,{type:`button`,variant:`default`,onClick:async()=>{if(s.licenseKey&&typeof navigator<`u`&&navigator.clipboard)try{await navigator.clipboard.writeText(s.licenseKey),d(!0),window.setTimeout(()=>d(!1),2e3)}catch{}},className:`shrink-0`,children:[u?(0,o.jsx)(i.Check,{className:`mr-2 h-4 w-4`}):(0,o.jsx)(i.Copy,{className:`mr-2 h-4 w-4`}),u?e.translateOrFallback(c,`ecommerce.license_copied`,`Copied`):e.translateOrFallback(c,`ecommerce.license_copy`,`Copy key`)]})]})]}):(0,o.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:e.translateOrFallback(c,`ecommerce.license_panel_email_fallback`,`Your license key was sent to your email. It will also appear here once your purchase is confirmed.`)}),(0,o.jsxs)(`dl`,{className:`mt-4 grid gap-x-6 gap-y-1 text-xs text-muted-foreground sm:grid-cols-2`,children:[(0,o.jsxs)(`div`,{className:`flex justify-between gap-3 sm:block`,children:[(0,o.jsx)(`dt`,{className:`font-medium`,children:e.translateOrFallback(c,`ecommerce.license_number`,`License #`)}),(0,o.jsx)(`dd`,{className:`font-mono`,children:s.licenseId})]}),m?(0,o.jsxs)(`div`,{className:`flex justify-between gap-3 sm:block`,children:[(0,o.jsx)(`dt`,{className:`font-medium`,children:s.isCancelled?e.translateOrFallback(c,`ecommerce.license_expires`,`Expires`):s.trialEndsAt?e.translateOrFallback(c,`ecommerce.license_trial_ends`,`Trial ends`):e.translateOrFallback(c,`ecommerce.license_renews`,`Renews / expires`)}),(0,o.jsx)(`dd`,{children:m})]}):null]})]})}exports.FreemiusLicensePanel=s;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../invoice.cjs.js"),n=require("../order-tax-details.cjs.js");let r=require("react");r=e.__toESM(r,1);let i=require("react/jsx-runtime"),a=require("next/image");a=e.__toESM(a,1);function o({data:e,labels:r,locale:o=`en-US`,className:u=``}){let d=t.getInvoiceAddressLines(e.settings.address),f=t.getInvoiceAddressLines(e.order.customer_details?.billing),p=t.getInvoiceAddressLines(e.order.customer_details?.shipping);return(0,i.jsxs)(`section`,{className:`rounded-2xl border bg-white text-slate-900 shadow-sm print:rounded-none print:border-0 print:text-[10px] print:shadow-none ${u}`,children:[(0,i.jsx)(`div`,{className:`border-b px-6 py-6 print:px-0`,children:(0,i.jsxs)(`div`,{className:`grid gap-6 md:grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] md:items-start print:grid-cols-[minmax(0,1fr)_72px_280px] print:items-start print:gap-4`,children:[(0,i.jsxs)(`div`,{className:`order-2 max-w-md space-y-4 print:order-none print:max-w-none print:space-y-2 md:order-none`,children:[(0,i.jsxs)(`div`,{className:`space-y-1 text-sm print:text-[10px]`,children:[(0,i.jsx)(`p`,{className:`text-xs font-semibold uppercase tracking-[0.2em] text-slate-500`,children:r.from}),e.settings.businessName?(0,i.jsx)(`p`,{className:`text-base font-semibold`,children:e.settings.businessName}):null,d.map((e,t)=>(0,i.jsx)(`p`,{children:e},`seller-${t}-${e}`)),e.settings.email?(0,i.jsx)(`p`,{children:e.settings.email}):null,e.settings.phone?(0,i.jsx)(`p`,{children:e.settings.phone}):null]}),e.settings.taxRegistrations.length>0?(0,i.jsxs)(`div`,{className:`rounded-xl border bg-slate-50 px-4 py-3 text-sm print:px-3 print:py-2 print:text-[10px]`,children:[(0,i.jsx)(`p`,{className:`mb-2 font-semibold`,children:r.taxRegistrations}),(0,i.jsx)(`div`,{className:`space-y-1`,children:e.settings.taxRegistrations.map((e,t)=>(0,i.jsxs)(`p`,{children:[(0,i.jsx)(`span`,{className:`font-medium`,children:e.label}),e.label&&e.value?`: `:``,e.value]},`${e.label}-${e.value}-${t}`))})]}):null]}),(0,i.jsx)(`div`,{className:`order-1 flex justify-center md:order-none md:pt-2 print:order-none print:pt-1`,children:e.logo?.url?(0,i.jsx)(a.default,{src:e.logo.url,alt:e.logo.name||e.settings.businessName||`Logo`,className:`mx-auto h-24 w-auto object-contain print:h-14`,width:e.logo.width||320,height:e.logo.height||120}):null}),(0,i.jsx)(`div`,{className:`order-3 flex justify-start md:order-none md:justify-end print:order-none`,children:(0,i.jsxs)(`div`,{className:`w-full max-w-[380px] rounded-2xl bg-slate-950 px-5 py-5 text-white print:max-w-none print:border print:border-slate-300 print:bg-white print:px-3 print:py-3 print:text-[10px] print:text-slate-950`,children:[(0,i.jsx)(`p`,{className:`text-xs uppercase tracking-[0.2em] text-white/70 print:text-slate-500`,children:r.invoice}),(0,i.jsxs)(`div`,{className:`mt-4 space-y-3 text-sm print:mt-3 print:space-y-2 print:text-[10px]`,children:[(0,i.jsx)(c,{label:r.invoiceNumber,value:e.order.invoice_number||`--`}),(0,i.jsx)(c,{label:r.orderNumber,value:e.order.id}),(0,i.jsx)(c,{label:r.paidOn,value:t.formatInvoiceDate(e.order.paid_at||e.order.created_at,o)||`--`}),(0,i.jsx)(c,{label:r.status,value:e.order.status})]})]})})]})}),(0,i.jsxs)(`div`,{className:`grid gap-4 border-b px-6 py-6 md:grid-cols-2 print:grid-cols-2 print:gap-3 print:px-0 print:py-3`,children:[(0,i.jsx)(s,{title:r.billTo,lines:f}),(0,i.jsx)(s,{title:r.shipTo,lines:p})]}),(0,i.jsxs)(`div`,{className:`px-6 py-6 print:px-0 print:py-3`,children:[(0,i.jsx)(`div`,{className:`overflow-x-auto rounded-2xl border print:overflow-visible`,children:(0,i.jsxs)(`table`,{className:`w-full border-collapse text-sm tabular-nums print:table-fixed print:text-[9px]`,children:[(0,i.jsx)(`thead`,{className:`bg-slate-50`,children:(0,i.jsxs)(`tr`,{children:[(0,i.jsx)(`th`,{className:`px-4 py-3 text-left font-semibold print:w-[22%] print:px-2 print:py-1.5`,children:r.item}),(0,i.jsx)(`th`,{className:`px-4 py-3 text-left font-semibold print:w-[38%] print:px-2 print:py-1.5`,children:r.details}),(0,i.jsx)(`th`,{className:`px-4 py-3 text-right font-semibold print:w-[10%] print:px-2 print:py-1.5`,children:r.quantity}),(0,i.jsx)(`th`,{className:`px-4 py-3 text-right font-semibold print:w-[15%] print:px-2 print:py-1.5`,children:r.price}),(0,i.jsx)(`th`,{className:`px-4 py-3 text-right font-semibold print:w-[15%] print:px-2 print:py-1.5`,children:r.amount})]})}),(0,i.jsx)(`tbody`,{children:e.order.items.map(n=>(0,i.jsxs)(`tr`,{className:`border-t`,children:[(0,i.jsx)(`td`,{className:`px-4 py-4 font-medium print:px-2 print:py-1.5`,children:n.title}),(0,i.jsx)(`td`,{className:`px-4 py-4 text-slate-600 print:px-2 print:py-1.5`,children:n.description||`--`}),(0,i.jsx)(`td`,{className:`px-4 py-4 text-right print:px-2 print:py-1.5`,children:n.quantity}),(0,i.jsx)(`td`,{className:`px-4 py-4 text-right print:px-2 print:py-1.5`,children:t.formatInvoiceCurrency(n.unit_amount,e.order.currency,o)}),(0,i.jsx)(`td`,{className:`px-4 py-4 text-right font-medium print:px-2 print:py-1.5`,children:t.formatInvoiceCurrency(n.total_amount,e.order.currency,o)})]},n.id))})]})}),(0,i.jsxs)(`div`,{className:`mt-6 grid gap-6 md:grid-cols-[minmax(0,1fr)_320px] print:mt-4 print:grid-cols-[minmax(0,1fr)_220px] print:items-start print:gap-4`,children:[(0,i.jsx)(`div`,{children:e.order.tax_details?.lines?.length?(0,i.jsxs)(`div`,{className:`rounded-xl border bg-slate-50 px-5 py-4 print:break-inside-avoid print:px-3 print:py-2.5 print:text-[10px]`,children:[(0,i.jsx)(`p`,{className:`mb-3 font-semibold`,children:r.taxBreakdown}),(0,i.jsx)(`div`,{className:`space-y-3 text-sm print:space-y-2 print:text-[10px]`,children:e.order.tax_details.lines.map((r,a)=>{let s=n.getOrderTaxRatePercentage(r.rate);return(0,i.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,i.jsxs)(`div`,{children:[(0,i.jsxs)(`p`,{className:`font-medium`,children:[n.getOrderTaxRateLabel(r.rate),typeof s==`number`?` - ${s.toFixed(4)}%`:``]}),n.getOrderTaxRateJurisdiction(r.rate)?(0,i.jsx)(`p`,{className:`text-xs text-slate-500 print:text-[9px]`,children:n.getOrderTaxRateJurisdiction(r.rate)}):null]}),(0,i.jsx)(`span`,{children:t.formatInvoiceCurrency(r.amount,e.order.currency,o)})]},`${r.rate.display_name}-${r.description||`tax`}-${a}`)})})]}):null}),(0,i.jsxs)(`div`,{className:`rounded-xl border bg-slate-950 px-5 py-5 text-sm text-white print:break-inside-avoid print:border-slate-300 print:bg-white print:px-3 print:py-3 print:text-[10px] print:text-slate-950`,children:[(0,i.jsxs)(`div`,{className:`space-y-3 print:space-y-2`,children:[(0,i.jsx)(l,{label:r.subtotal,value:t.formatInvoiceCurrency(e.order.subtotal,e.order.currency,o)}),e.order.discount_total>0?(0,i.jsx)(l,{label:e.order.coupon_code?`${r.discount} (${e.order.coupon_code})`:r.discount,value:`-${t.formatInvoiceCurrency(e.order.discount_total,e.order.currency,o)}`}):null,(0,i.jsx)(l,{label:r.shipping,value:t.formatInvoiceCurrency(e.order.shipping_total,e.order.currency,o)}),(0,i.jsx)(l,{label:r.tax,value:t.formatInvoiceCurrency(e.order.tax_total,e.order.currency,o)})]}),(0,i.jsx)(`div`,{className:`mt-4 border-t border-white/15 pt-4 print:mt-3 print:border-slate-300 print:pt-3`,children:(0,i.jsx)(l,{label:r.total,value:t.formatInvoiceCurrency(e.order.total,e.order.currency,o),strong:!0})})]})]})]})]})}function s({title:e,lines:t}){return(0,i.jsxs)(`div`,{className:`rounded-xl border bg-slate-50 px-5 py-4 print:break-inside-avoid print:px-3 print:py-2.5 print:text-[10px]`,children:[(0,i.jsx)(`p`,{className:`mb-3 text-xs font-semibold uppercase tracking-[0.2em] text-slate-500`,children:e}),t.length?(0,i.jsx)(`div`,{className:`space-y-1 text-sm print:text-[10px]`,children:t.map((t,n)=>(0,i.jsx)(`p`,{children:t},`${e}-${n}-${t}`))}):(0,i.jsx)(`p`,{className:`text-sm text-slate-500`,children:`--`})]})}function c({label:e,value:t}){return(0,i.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,i.jsx)(`span`,{className:`text-white/70 print:text-[9px] print:text-slate-500`,children:e}),(0,i.jsx)(`span`,{className:`text-right font-medium`,children:t})]})}function l({label:e,value:t,strong:n=!1}){return(0,i.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,i.jsx)(`span`,{className:n?`text-base font-semibold print:text-sm`:`text-white/75 print:text-[9px] print:text-slate-500`,children:e}),(0,i.jsx)(`span`,{className:n?`text-lg font-semibold print:text-base`:`font-medium`,children:t})]})}exports.InvoiceDocument=o;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../currency.cjs.js"),n=require("../CurrencyProvider.cjs.js"),r=require("../use-price-formatter.cjs.js"),i=require("../trials.cjs.js"),a=require("../variation-utils.cjs.js"),o=require("./AddToCartButton.cjs.js");let s=require("next/link");s=e.__toESM(s,1);let c=require("@nextblock-cms/utils"),l=require("react/jsx-runtime");var u=({product:e,className:u,priority:d=!1})=>{let f=r.usePriceFormatter(),{activeCurrencyCode:p,currencies:m}=n.useCurrency(),h=t.resolvePriceRangeForCurrency({entries:e.variants?.length?e.variants:e.product_variants?.length?e.product_variants:[],currencyCode:p,currencies:m}),g=!!(e.has_variants&&h),_=t.resolveEffectivePriceForCurrency({prices:e.prices,salePrices:e.sale_prices,fallbackPrice:e.price,fallbackSalePrice:e.sale_price,saleStartAt:e.sale_start_at,saleEndAt:e.sale_end_at,scheduledPrice:e.scheduled_price,scheduledPrices:e.scheduled_prices,scheduledPriceAt:e.scheduled_price_at,currencyCode:p,currencies:m}),v=g&&h?h.min===h.max?f(h.min,p):`${f(h.min,p)} - ${f(h.max,p)}`:f(_.sale_price??_.price,p),y=e.variants?.length?e.variants:e.product_variants?.length?e.product_variants:[],b=g?y.some(e=>t.resolveEffectivePriceForCurrency({prices:e.prices,salePrices:e.sale_prices,fallbackPrice:e.price,fallbackSalePrice:e.sale_price,saleStartAt:e.sale_start_at,saleEndAt:e.sale_end_at,scheduledPrice:e.scheduled_price,scheduledPrices:e.scheduled_prices,scheduledPriceAt:e.scheduled_price_at,currencyCode:p,currencies:m}).sale_price!=null):_.sale_price!=null,{t:x,lang:S}=(0,c.useTranslations)(),C=x(`ecommerce.on_sale`),w=C===`ecommerce.on_sale`?`On Sale`:C,T=i.getTrialSummary(e,x),E=(e.freemius_plans?.[0])?.freemius_pricing?.[0],D=m.find(e=>e.is_default)?.code||`USD`,O=E?.override_monthly_price??E?.api_monthly_price,k=E?.override_annual_price??E?.api_annual_price,A=typeof O==`number`?t.resolvePriceForCurrency({prices:{[D]:(0,c.majorUnitAmountToMinor)(O,D)},currencyCode:p,currencies:m}):null,j=typeof k==`number`?t.resolvePriceForCurrency({prices:{[D]:(0,c.majorUnitAmountToMinor)(k,D)},currencyCode:p,currencies:m}):null;return(0,l.jsxs)(`div`,{className:(0,c.cn)(`group relative flex flex-col overflow-hidden rounded-lg border bg-card text-card-foreground shadow-sm transition-shadow hover:shadow-md`,u),children:[(0,l.jsxs)(s.default,{href:`/product/${e.slug}`,tabIndex:-1,"aria-hidden":`true`,className:`relative aspect-square overflow-hidden bg-muted`,children:[b&&(0,l.jsx)(`span`,{className:`absolute left-3 top-3 z-10 rounded-full bg-destructive px-2.5 py-1 text-[10px] font-bold uppercase tracking-wider text-destructive-foreground shadow-sm`,children:w}),e.image_url?(0,l.jsx)(`img`,{src:e.image_url,alt:``,width:600,height:600,loading:d?`eager`:`lazy`,decoding:`async`,className:`h-full w-full object-cover object-center transition-transform duration-300 group-hover:scale-105`}):(0,l.jsx)(`div`,{className:`flex h-full items-center justify-center text-muted-foreground`,children:x(`ecommerce.no_image`)===`ecommerce.no_image`?`No image`:x(`ecommerce.no_image`)})]}),(0,l.jsxs)(`div`,{className:`flex flex-1 flex-col p-4`,children:[e.categories&&e.categories.length>0&&(0,l.jsx)(`div`,{className:`text-[10px] font-bold uppercase tracking-widest text-amber-600 dark:text-amber-400 mb-1`,children:e.categories.map(e=>a.resolveTranslatedText(e.name,e.name_translations,S)).join(` • `)}),(0,l.jsx)(s.default,{href:`/product/${e.slug}`,className:`mb-2`,children:(0,l.jsx)(`h3`,{className:`line-clamp-1 text-lg font-medium text-foreground group-hover:underline`,children:e.title})}),(0,l.jsx)(`div`,{className:`flex items-center gap-1 mb-2 mt-0.5 text-xs text-muted-foreground min-h-[1.25rem] select-none`,children:e.total_reviews&&e.total_reviews>0?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`div`,{role:`img`,"aria-label":x(`ecommerce.rating_out_of_5`,{rating:Number(e.average_rating??0).toFixed(1)})===`ecommerce.rating_out_of_5`?`Rated ${Number(e.average_rating??0).toFixed(1)} out of 5`:x(`ecommerce.rating_out_of_5`,{rating:Number(e.average_rating??0).toFixed(1)}),className:`flex items-center text-amber-500 mr-1`,children:Array.from({length:5}).map((t,n)=>{let r=e.average_rating??0;return(0,l.jsx)(`svg`,{className:(0,c.cn)(`h-3.5 w-3.5 fill-current`,n<Math.round(r)?`text-amber-500`:`text-slate-200 dark:text-slate-800`),viewBox:`0 0 20 20`,fill:`currentColor`,"aria-hidden":`true`,children:(0,l.jsx)(`path`,{d:`M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z`})},n)})}),(0,l.jsx)(`span`,{className:`font-semibold text-slate-700 dark:text-slate-300`,children:Number(e.average_rating).toFixed(1)}),(0,l.jsxs)(`span`,{className:`ml-0.5`,children:[`(`,e.total_reviews,`)`]})]}):(0,l.jsx)(`span`,{className:`text-slate-400 dark:text-slate-600`,children:x(`reviews.no_reviews`)})}),(0,l.jsx)(`div`,{className:`mb-4`,children:e.product_type===`digital`&&(A||j)?(0,l.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-3 gap-y-1`,children:[A&&(0,l.jsxs)(`div`,{className:`flex items-baseline gap-0.5`,children:[(0,l.jsx)(`span`,{className:`text-xl font-bold text-primary`,children:f(A.price,p)}),(0,l.jsxs)(`span`,{className:`text-xs font-medium text-muted-foreground lowercase`,children:[`/ `,x(`ecommerce.month`)]})]}),j&&(0,l.jsxs)(`div`,{className:`flex items-baseline gap-0.5`,children:[(0,l.jsx)(`span`,{className:(0,c.cn)(`font-bold text-primary`,A?`text-lg`:`text-xl`),children:f(j.price,p)}),(0,l.jsxs)(`span`,{className:`text-xs font-medium text-muted-foreground lowercase`,children:[`/ `,x(`ecommerce.year`)]})]})]}):(0,l.jsxs)(`div`,{className:`flex items-baseline gap-2`,children:[(0,l.jsx)(`span`,{className:`text-xl font-bold text-primary`,children:v}),!g&&_.sale_price&&(0,l.jsxs)(`span`,{className:`text-sm text-muted-foreground tabular-nums`,children:[(0,l.jsxs)(`span`,{className:`sr-only`,children:[x(`ecommerce.regular_price`)===`ecommerce.regular_price`?`Regular price`:x(`ecommerce.regular_price`),` `]}),(0,l.jsx)(`s`,{children:f(_.price,p)})]})]})}),T&&(0,l.jsxs)(`div`,{className:`mb-4 rounded-md border border-emerald-200 bg-emerald-50 px-3 py-2 text-xs text-emerald-900`,children:[(0,l.jsx)(`div`,{className:`font-semibold`,children:T.label}),(0,l.jsx)(`div`,{className:`text-emerald-700`,children:T.paymentRequirementLabel})]}),(0,l.jsx)(`div`,{className:`mt-auto`,children:(0,l.jsx)(o.AddToCartButton,{product:{...e,price:e.price,prices:e.prices,sale_price:e.sale_price,sale_prices:e.sale_prices},className:`w-full`})})]})]})};exports.ProductCard=u;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../types.cjs.js"),n=require("../currency.cjs.js"),r=require("../CurrencyProvider.cjs.js"),i=require("../use-price-formatter.cjs.js"),a=require("../trials.cjs.js"),o=require("../variation-utils.cjs.js"),s=require("./AddToCartButton.cjs.js"),c=require("./ProductGallery.cjs.js"),l=require("./SimpleTiptapRenderer.cjs.js"),u=require("./ShortDescription.cjs.js"),d=require("./SubscriptionSelector.cjs.js"),f=require("../product-context.cjs.js");let p=require("@nextblock-cms/ui/badge"),m=require("@nextblock-cms/ui/button"),h=require("react");h=e.__toESM(h,1);let g=require("lucide-react"),_=require("@nextblock-cms/utils"),v=require("react/jsx-runtime"),y=require("@nextblock-cms/ui/label"),b=require("@nextblock-cms/ui/separator");function x(e,t,n,r){let i={kind:`product-field`,field:t,input:n,label:r},a=typeof window<`u`?window.location.origin:process.env.NEXT_PUBLIC_URL||process.env.TARGET_URL||(process.env.VERCEL_URL?`https://${process.env.VERCEL_URL}`:``)||`http://localhost:3000`,o=(typeof window<`u`?window.location.origin:process.env.NEXT_PUBLIC_URL||process.env.TARGET_URL||(process.env.VERCEL_URL?`https://${process.env.VERCEL_URL}`:``)||`http://localhost:3000`).replace(/\/+$/,``);try{(o.startsWith(`http://`)||o.startsWith(`https://`))&&(o=new URL(o).hostname)}catch{}let s=process.env.NEXTBLOCK_VERCEL_PROJECT_ID||process.env.VERCEL_PROJECT_ID,c=process.env.NEXTBLOCK_VERCEL_WORKSPACE_ID||process.env.VERCEL_ORG_ID,l={origin:o,editUrl:`${a}/cms/products/${e.id}/edit`,data:{parentType:`product`,parentId:e.id,slug:e.slug,languageId:e.language_id,draftId:null,target:i}};return s&&(l.projectId=s),c&&(l.workspaceId=c),{"data-vercel-edit-info":JSON.stringify(l),"data-vercel-edit-target":JSON.stringify(i),"data-nextblock-visual-edit":`product:${t}`}}var S=({visualEditingEnabled:e=!1,descriptionNode:S,reviewsNode:C,canPurchase:w=!0,purchaseFallbackNode:T})=>{let E=f.useProduct(),{t:D,lang:O}=(0,_.useTranslations)(),k=i.usePriceFormatter(),{activeCurrencyCode:A,currencies:j}=r.useCurrency(),M=e?x(E,`title`,`plain-text`,`Product title`):void 0,ee=e?x(E,`short_description`,`plain-text`,`Short description`):void 0,te=e?x(E,`description_json`,`tiptap`,`Product description`):void 0,N=(e,t,n)=>{let r=D(e,n);return r===e?t:r},P=E.images&&E.images.length>0?E.images:E.image_url?[{url:E.image_url,alt:E.title}]:[],F=E.custom_props?.provider===`freemius`||t.isDigitalProduct(E),I=a.getTrialSummary(E,D),L=!F&&!!(E.has_variants&&E.attributes?.length&&E.variants?.length),R=E.attributes||[],z=E.variants||[],[B,V]=(0,h.useState)(()=>o.chooseInitialVariantSelections(R,z)),[H,U]=(0,h.useState)(1);(0,h.useEffect)(()=>{U(1)},[E.id]),(0,h.useEffect)(()=>{L&&V(o.chooseInitialVariantSelections(R,z))},[R,L,E.id,z]);let W=(0,h.useMemo)(()=>L?o.normalizeSelectionsToAvailableVariants(R,z,B):B,[R,L,B,z]);(0,h.useEffect)(()=>{JSON.stringify(W)!==JSON.stringify(B)&&V(W)},[W,B]);let G=(0,h.useMemo)(()=>L?o.findMatchingVariant(z,W):null,[L,W,z]),K=n.resolveEffectivePriceForCurrency({prices:E.prices,salePrices:E.sale_prices,fallbackPrice:E.price,fallbackSalePrice:E.sale_price,saleStartAt:E.sale_start_at,saleEndAt:E.sale_end_at,scheduledPrice:E.scheduled_price,scheduledPrices:E.scheduled_prices,scheduledPriceAt:E.scheduled_price_at,currencyCode:A,currencies:j}),q=L&&G?n.resolveEffectivePriceForCurrency({prices:G.prices,salePrices:G.sale_prices,fallbackPrice:G.price,fallbackSalePrice:G.sale_price,saleStartAt:G.sale_start_at,saleEndAt:G.sale_end_at,scheduledPrice:G.scheduled_price,scheduledPrices:G.scheduled_prices,scheduledPriceAt:G.scheduled_price_at,currencyCode:A,currencies:j}):null,J=q?.price??K.price,Y=q?.sale_price??K.sale_price,X=L?G?.stock_quantity??0:E.stock??null,Z=X===null||X>0,Q=X===null?H:Math.max(1,Math.min(H,Math.max(X,1))),ne=(0,h.useMemo)(()=>G?.image_url?[{url:G.image_url,alt:`${E.title} ${G.label}`},...P.filter(e=>e.url!==G.image_url)]:P,[P,E.title,G]),re=typeof Y==`number`&&J>0?Math.round((J-Y)/J*100):0,ie=L&&G?{...E,sku:G.sku,price:G.price,prices:G.prices,sale_price:typeof G.sale_price==`number`?G.sale_price:null,sale_prices:G.sale_prices,sale_start_at:G.sale_start_at,sale_end_at:G.sale_end_at,scheduled_price:G.scheduled_price,scheduled_prices:G.scheduled_prices,scheduled_price_at:G.scheduled_price_at,image_url:G.image_url||E.image_url,stock:G.stock_quantity,variant_id:G.id,variant_label:G.label,selected_options:G.selected_options,currency_code:A}:{...E,currency_code:A},ae=(e,t)=>{V(n=>o.applyVariantSelection(R,z,n,e,t))},oe=X===null?N(`ecommerce.in_stock_untracked`,`In stock`):N(`ecommerce.in_stock`,`${X} in stock`,{count:String(X)}),$=N(`ecommerce.out_of_stock`,`Out of stock`),se=N(`ecommerce.select_options`,`Select Options`),ce=N(`ecommerce.variant_selection_required`,`Select one term from every dropdown to resolve a variation.`);return(0,v.jsxs)(`div`,{className:`w-full animate-in fade-in slide-in-from-bottom-4 duration-700 ease-out`,children:[(0,v.jsx)(`div`,{className:`container mx-auto px-4 md:px-6 py-12`,children:(0,v.jsxs)(`div`,{className:`grid gap-12 lg:grid-cols-[2fr_3fr] items-start`,children:[(0,v.jsx)(`div`,{className:`w-full max-w-2xl mx-auto lg:max-w-none`,children:(0,v.jsx)(c.ProductGallery,{images:ne,className:`w-full`})}),(0,v.jsxs)(`div`,{className:`flex flex-col gap-4 pb-2 max-w-xl mx-auto lg:mx-0 lg:max-w-none`,children:[(0,v.jsx)(`div`,{className:`space-y-6`,children:(0,v.jsxs)(`div`,{className:`space-y-4`,children:[(0,v.jsx)(`h1`,{className:`text-3xl sm:text-4xl lg:text-5xl font-extrabold tracking-tight text-foreground leading-[1.1] lg:mt-0`,...M,children:E.title}),(0,v.jsx)(`div`,{className:`flex items-center gap-2 mt-2`,children:(0,v.jsxs)(`a`,{href:`#reviews-section`,className:`flex items-center gap-1.5 group hover:opacity-85 transition-opacity`,children:[(0,v.jsx)(`div`,{className:`flex items-center text-amber-500`,children:Array.from({length:5}).map((e,t)=>(0,v.jsx)(`svg`,{className:(0,_.cn)(`h-4 w-4 fill-current`,t<Math.round(E.average_rating||0)?`text-amber-500`:`text-slate-300 dark:text-slate-700`),viewBox:`0 0 20 20`,fill:`currentColor`,children:(0,v.jsx)(`path`,{d:`M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z`})},t))}),E.total_reviews&&E.total_reviews>0?(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(`span`,{className:`text-sm font-semibold text-slate-700 dark:text-slate-300`,children:E.average_rating?.toFixed(1)}),(0,v.jsxs)(`span`,{className:`text-sm text-muted-foreground underline decoration-dotted group-hover:text-primary`,children:[`(`,E.total_reviews===1?D(`reviews.review_count_one`,{count:E.total_reviews}):D(`reviews.review_count_other`,{count:E.total_reviews}),`)`]})]}):(0,v.jsx)(`span`,{className:`text-xs text-muted-foreground group-hover:text-primary underline decoration-dotted`,children:D(`reviews.be_the_first`)})]})}),E.categories&&E.categories.length>0&&(0,v.jsx)(`div`,{className:`flex flex-wrap items-center gap-1.5 text-xs font-bold uppercase tracking-widest text-amber-600 dark:text-amber-400`,children:E.categories.map((e,t)=>{let n=o.resolveTranslatedText(e.name,e.name_translations,O);return(0,v.jsxs)(h.default.Fragment,{children:[t>0&&(0,v.jsx)(`span`,{className:`text-muted-foreground/30`,children:`•`}),(0,v.jsx)(`span`,{children:n})]},e.id)})}),(0,v.jsx)(`div`,{className:`prose prose-neutral dark:prose-invert max-w-none text-muted-foreground leading-relaxed text-left`,...ee,children:E.short_description?(0,v.jsx)(u.ShortDescription,{value:E.short_description,className:`text-lg mb-4 leading-relaxed`}):e?(0,v.jsx)(`p`,{className:`text-lg mb-4 italic text-muted-foreground`,children:`Add a short product description.`}):null}),(0,v.jsxs)(`div`,{className:`flex items-center gap-3`,children:[typeof Y==`number`&&(0,v.jsx)(p.Badge,{variant:`destructive`,className:`px-2.5 py-1 text-xs font-bold uppercase tracking-wide animate-pulse shadow-sm`,children:D(`ecommerce.sale_badge`,{percent:String(re)})}),!F&&X!==null&&X>0&&X<10&&(0,v.jsx)(p.Badge,{variant:`outline`,className:`text-amber-600 border-amber-200 bg-amber-50`,children:D(`ecommerce.low_stock`,{count:String(X)})}),I&&(0,v.jsx)(p.Badge,{variant:`secondary`,className:`border border-emerald-200 bg-emerald-50 text-emerald-800`,children:I.label})]})]})}),(0,v.jsxs)(`div`,{className:`p-5 rounded-2xl bg-card border border-border/80 shadow-md space-y-4`,children:[w?F?(0,v.jsx)(d.SubscriptionSelector,{product:E}):(0,v.jsxs)(`div`,{className:`space-y-3.5`,children:[(0,v.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,v.jsxs)(`div`,{className:`space-y-1`,children:[(0,v.jsx)(`span`,{className:`text-[10px] font-bold text-muted-foreground uppercase tracking-widest`,children:N(`ecommerce.price`,`Price`)}),(0,v.jsxs)(`div`,{className:`flex items-baseline gap-2.5`,children:[(0,v.jsx)(`span`,{className:`text-3xl font-extrabold text-foreground`,children:k(Y??J,A)}),typeof Y==`number`&&(0,v.jsx)(`span`,{className:`text-lg text-muted-foreground line-through decoration-destructive/20 decoration-1`,children:k(J,A)})]})]}),!F&&(G||!L)&&(0,v.jsxs)(`div`,{className:`text-right space-y-1`,children:[(0,v.jsxs)(`span`,{className:`text-[10px] font-bold text-muted-foreground uppercase tracking-widest block`,children:[!L&&E.sku&&(0,v.jsxs)(`span`,{className:`mr-2 font-normal lowercase normal-case text-muted-foreground/70`,children:[N(`ecommerce.sku`,`SKU`),`: `,E.sku]}),N(`ecommerce.status`,`Status`)]}),(0,v.jsx)(`div`,{className:Z?`text-emerald-600 dark:text-emerald-400 font-semibold text-sm`:`text-destructive font-semibold text-sm`,children:Z?oe:$})]})]}),L&&(0,v.jsx)(`div`,{className:`space-y-3`,children:(0,v.jsx)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:R.map((e,t)=>{let n=o.getAvailableTermIdsForAttribute(z,e.id,{});return(0,v.jsxs)(`div`,{className:`space-y-1`,children:[(0,v.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,v.jsx)(y.Label,{htmlFor:`attribute-${e.id}`,className:`text-[11px] font-semibold text-muted-foreground uppercase tracking-wider`,children:e.name}),t===0&&G?.sku&&(0,v.jsx)(`span`,{className:`text-[10px] text-muted-foreground font-mono`,children:G.sku})]}),(0,v.jsx)(`select`,{id:`attribute-${e.id}`,className:`flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring`,value:W[e.id]||``,onChange:t=>ae(e.id,t.target.value),children:e.terms.map(e=>(0,v.jsx)(`option`,{value:e.id,disabled:!n.has(e.id),children:e.value},e.id))})]},e.id)})})}),L&&!G&&(0,v.jsx)(`p`,{className:`text-xs text-muted-foreground italic pt-1`,children:ce}),(0,v.jsxs)(`div`,{className:`flex items-center gap-3 pt-1`,children:[!F&&Z&&(0,v.jsxs)(`div`,{role:`group`,"aria-label":N(`ecommerce.quantity`,`Quantity`),className:`flex items-center border rounded-lg h-12 bg-background border-input select-none`,children:[(0,v.jsx)(`button`,{type:`button`,onClick:()=>U(Math.max(1,Q-1)),"aria-label":N(`ecommerce.decrease_quantity`,`Decrease quantity`),className:`px-3 h-full flex items-center justify-center rounded-l-lg text-muted-foreground hover:text-foreground active:scale-95 transition-colors text-lg font-medium focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring`,disabled:Q<=1,children:(0,v.jsx)(`span`,{"aria-hidden":`true`,children:`-`})}),(0,v.jsx)(`span`,{"aria-live":`polite`,"aria-atomic":`true`,className:`w-8 text-center text-sm font-semibold tabular-nums`,children:Q}),(0,v.jsx)(`button`,{type:`button`,onClick:()=>U(X!==null&&Q>=X?Q:Q+1),"aria-label":N(`ecommerce.increase_quantity`,`Increase quantity`),className:`px-3 h-full flex items-center justify-center rounded-r-lg text-muted-foreground hover:text-foreground active:scale-95 transition-colors text-lg font-medium focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring`,disabled:X!==null&&Q>=X,children:(0,v.jsx)(`span`,{"aria-hidden":`true`,children:`+`})})]}),L&&(!G||!Z)?(0,v.jsx)(m.Button,{disabled:!0,className:`flex-1 h-12 text-md font-bold shadow-md`,children:G?$:se}):(0,v.jsx)(s.AddToCartButton,{product:ie,quantity:Q,className:`flex-1 h-12 text-base font-bold shadow-md transition-shadow hover:shadow-lg active:scale-[0.98]`})]})]}):T,(0,v.jsx)(b.Separator,{className:`opacity-60 my-0.5`}),(0,v.jsxs)(`div`,{className:`grid grid-cols-2 gap-4 text-center text-[11px] font-medium text-muted-foreground pt-1`,children:[(0,v.jsx)(`div`,{className:`flex items-center justify-center gap-2`,children:F?(0,v.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,v.jsx)(g.Download,{className:`h-3.5 w-3.5`}),D(`ecommerce.instant_digital_delivery`)]}):(0,v.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,v.jsx)(g.Package,{className:`h-3.5 w-3.5`}),D(`ecommerce.free_shipping`)]})}),(0,v.jsx)(`div`,{className:`flex items-center justify-center gap-2`,children:(0,v.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,v.jsx)(g.ShieldCheck,{className:`h-3.5 w-3.5`}),D(`ecommerce.secure_checkout`)]})})]})]})]})]})}),(0,v.jsx)(`div`,{className:`min-w-0 w-full`,...S?void 0:te,children:S||(E.description_json?(0,v.jsx)(`div`,{className:`container mx-auto px-4 md:px-6 pb-12 prose prose-neutral dark:prose-invert max-w-none leading-relaxed`,children:(0,v.jsx)(l.SimpleTiptapRenderer,{content:E.description_json})}):(0,v.jsx)(`div`,{className:`container mx-auto px-4 md:px-6 pb-12`,children:(0,v.jsx)(`p`,{className:`italic text-sm text-muted-foreground`,children:D(`ecommerce.no_description`)})}))}),C&&(0,v.jsx)(`div`,{id:`reviews-section`,className:`border-t border-border mt-12 pt-12`,children:C})]})};exports.ProductDetailsLayout=S;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";const e=require("../invoice-ui.cjs.js");let t=require("react"),n=require("@nextblock-cms/utils"),r=require("react/jsx-runtime");var i=({images:i=[],className:a})=>{let{t:o}=(0,n.useTranslations)(),[s,c]=(0,t.useState)(0);if(!i.length)return(0,r.jsx)(`div`,{className:(0,n.cn)(`relative aspect-square w-full overflow-hidden rounded-lg bg-secondary`,a),children:(0,r.jsx)(`div`,{className:`flex h-full items-center justify-center text-muted-foreground`,children:e.translateOrFallback(o,`ecommerce.no_image`,`No image`)})});let l=s<i.length?s:0,u=i[l];return(0,r.jsxs)(`div`,{className:(0,n.cn)(`flex flex-col gap-4`,a),children:[(0,r.jsx)(`div`,{className:`relative aspect-square w-full overflow-hidden rounded-lg border bg-white`,children:(0,r.jsx)(`img`,{src:u.url,alt:u.alt??``,width:u.width??1e3,height:u.height??1e3,fetchPriority:`high`,decoding:`async`,className:`h-full w-full object-cover object-center`})}),i.length>1&&(0,r.jsx)(`div`,{className:`flex gap-4 overflow-x-auto p-1 pb-2`,children:i.map((t,a)=>(0,r.jsx)(`button`,{type:`button`,onClick:()=>c(a),"aria-current":l===a?`true`:void 0,"aria-label":e.translateOrFallback(o,`ecommerce.gallery_show_image`,`Show image {index} of {total}`).replace(`{index}`,String(a+1)).replace(`{total}`,String(i.length)),className:(0,n.cn)(`relative aspect-square w-20 flex-shrink-0 overflow-hidden rounded-md border focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring`,l===a?`ring-2 ring-primary`:`ring-1 ring-transparent hover:ring-primary/50`),children:(0,r.jsx)(`img`,{src:t.url,alt:``,width:80,height:80,loading:`lazy`,decoding:`async`,className:`h-full w-full object-cover object-center`})},a))})]})};exports.ProductGallery=i;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./ProductCard.cjs.js");let t=require("@nextblock-cms/utils"),n=require("react/jsx-runtime");var r=({products:r,columns:i=3,className:a})=>{let{t:o}=(0,t.useTranslations)();if(!r.length){let e=o(`ecommerce.no_products_found`);return(0,n.jsx)(`div`,{className:`py-12 text-center text-muted-foreground`,children:e===`ecommerce.no_products_found`?`No products found.`:e})}return(0,n.jsx)(`div`,{className:(0,t.cn)(`grid gap-6 sm:grid-cols-2`,i===3&&`lg:grid-cols-3`,i===4&&`lg:grid-cols-4`,a),children:r.map((t,r)=>(0,n.jsx)(e.ProductCard,{product:t,priority:r<i},t.id))})};exports.ProductGrid=r;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";const e=require("../CurrencyProvider.cjs.js"),t=require("../use-price-formatter.cjs.js"),n=require("../countries.cjs.js"),r=require("../states.cjs.js"),i=require("../server-actions/shipping-actions.cjs.js");let a=require("@nextblock-cms/ui/button"),o=require("react"),s=require("lucide-react"),c=require("@nextblock-cms/utils"),l=require("react/jsx-runtime"),u=require("@nextblock-cms/ui/input"),d=require("@nextblock-cms/ui/label");var f=({physicalSubtotal:f})=>{let p=t.usePriceFormatter(),[m,h]=(0,o.useState)(`CA`),[g,_]=(0,o.useState)(``),[v,y]=(0,o.useState)(``),[b,x]=(0,o.useState)(!1),[S,C]=(0,o.useState)(null),[w,T]=(0,o.useState)(null),{t:E,lang:D}=(0,c.useTranslations)(),{activeCurrencyCode:O}=e.useCurrency(),k=(e,t)=>{let n=E(e);return n===e?t:n},A=r.getStatesForCountry(m),j=r.countryUsesStructuredStates(m),M=(0,o.useMemo)(()=>{try{return new Intl.DisplayNames([D],{type:`region`})}catch{return null}},[D]),N=k(`select_an_option`,`Select an option`),P=k(`state_province`,`State / Province`),F=async()=>{x(!0),T(null),C(null);try{let e=await i.getShippingEstimates(f,{country:m,state:g||void 0,postal_code:v},D,O);e.success&&e.methods?C(e.methods):T(e.errorKey?k(e.errorKey,e.error||E(`ecommerce.no_rates_found`)):e.error||E(`ecommerce.no_rates_found`))}catch(e){console.error(`[ShippingEstimator] Failed to load rates:`,e),T(k(`ecommerce.shipping_calculation_failed`,`We couldn't calculate shipping right now. Please try again.`))}finally{x(!1)}};return(0,l.jsxs)(`div`,{className:`space-y-4 rounded-lg border bg-muted/30 p-4 mt-6`,children:[(0,l.jsxs)(`div`,{className:`flex items-center gap-2 font-semibold text-sm`,children:[(0,l.jsx)(s.Truck,{className:`h-4 w-4`}),(0,l.jsx)(`span`,{children:E(`ecommerce.estimate_shipping`)})]}),(0,l.jsxs)(`div`,{className:`grid gap-3`,children:[(0,l.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,l.jsx)(d.Label,{htmlFor:`estimate-country`,className:`text-xs uppercase tracking-wider text-muted-foreground`,children:E(`ecommerce.country`)}),(0,l.jsx)(`select`,{id:`estimate-country`,name:`estimate-country`,autoComplete:`shipping country`,value:m,onChange:e=>{let t=e.target.value,n=r.getStatesForCountry(t);h(t),_(n.some(e=>e.code===g)?g:``)},className:`flex h-9 w-full rounded-md border border-input bg-background px-3 py-2 text-sm`,children:n.countries.map(e=>(0,l.jsx)(`option`,{value:e.code,children:M?.of(e.code)??e.name},e.code))})]}),j&&(0,l.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,l.jsx)(d.Label,{htmlFor:`estimate-state`,className:`text-xs uppercase tracking-wider text-muted-foreground`,children:E(`state_province`)}),(0,l.jsxs)(`select`,{id:`estimate-state`,name:`estimate-state`,autoComplete:`shipping address-level1`,value:g,onChange:e=>_(e.target.value),className:`flex h-9 w-full rounded-md border border-input bg-background px-3 py-2 text-sm`,children:[(0,l.jsx)(`option`,{value:``,children:`${N}: ${P}`}),A.map(e=>(0,l.jsx)(`option`,{value:e.code,children:r.getSubdivisionLabel(m,e,D)},e.code))]})]}),(0,l.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,l.jsx)(d.Label,{htmlFor:`estimate-postal`,className:`text-xs uppercase tracking-wider text-muted-foreground`,children:E(`ecommerce.postal_code`)}),(0,l.jsxs)(`div`,{className:`flex gap-2`,children:[(0,l.jsx)(u.Input,{id:`estimate-postal`,name:`estimate-postal`,autoComplete:`shipping postal-code`,placeholder:m===`CA`?`A1A 1A1`:void 0,value:v,onChange:e=>y(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!b&&(e.preventDefault(),F())},className:`h-9 text-sm bg-background`}),(0,l.jsxs)(a.Button,{size:`sm`,variant:`secondary`,onClick:F,disabled:b,className:`shrink-0`,children:[b?(0,l.jsx)(s.Loader2,{className:`h-4 w-4 mr-1.5 animate-spin`}):(0,l.jsx)(s.Calculator,{className:`h-4 w-4 mr-1.5`}),E(`ecommerce.calculate`)]})]})]})]}),w&&(0,l.jsx)(`p`,{role:`alert`,className:`text-xs text-destructive mt-2`,children:w}),(0,l.jsxs)(`div`,{"aria-live":`polite`,children:[S&&S.length>0&&(0,l.jsxs)(`div`,{className:`mt-4 space-y-2 border-t pt-3`,children:[(0,l.jsxs)(`p`,{className:`text-xs font-medium text-muted-foreground uppercase`,children:[E(`ecommerce.available_rates`),`:`]}),S.map(e=>(0,l.jsxs)(`div`,{className:`flex justify-between items-center p-3 border rounded-lg bg-muted/30`,children:[(0,l.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,l.jsx)(s.Truck,{className:`h-4 w-4 text-muted-foreground`}),(0,l.jsx)(`span`,{className:`text-sm font-medium`,children:e.name})]}),(0,l.jsx)(`span`,{className:`text-sm font-bold tabular-nums`,children:e.amount===0?E(`ecommerce.free`):p(e.amount,O)})]},e.id))]}),S&&S.length===0&&!w&&(0,l.jsx)(`p`,{className:`text-xs text-muted-foreground mt-2 italic`,children:E(`ecommerce.no_rates_found`)})]})]})};exports.ShippingEstimator=f;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("./SimpleTiptapRenderer.cjs.js");let n=require("react");n=e.__toESM(n,1);let r=require("@nextblock-cms/utils"),i=require("react/jsx-runtime");var a=/<\/?[a-z][^>]*>/i,o=e=>a.test(e);function s({value:e,className:n}){let a=e?.trim();return a?o(a)?(0,i.jsx)(`div`,{className:n,dangerouslySetInnerHTML:{__html:t.toNoCookieEmbedSrc(a)??a}}):(0,i.jsx)(`p`,{className:(0,r.cn)(`whitespace-pre-line`,n),children:a}):null}exports.ShortDescription=s,exports.isHtmlShortDescription=o;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs.js");let t=require("react");t=e.__toESM(t,1);let n=require("react/jsx-runtime");var r=(e,t)=>t.reduce((e,t)=>{switch(t.type){case`bold`:return(0,n.jsx)(`strong`,{children:e});case`italic`:return(0,n.jsx)(`em`,{children:e});case`underline`:case`u`:return(0,n.jsx)(`u`,{children:e});case`strike`:return(0,n.jsx)(`s`,{children:e});case`code`:return(0,n.jsx)(`code`,{className:`bg-muted px-1.5 py-0.5 rounded text-[0.875em] font-mono`,children:e});case`link`:{let r=t.attrs?.href||`#`,i=t.attrs?.target||`_blank`;return(0,n.jsx)(`a`,{href:r,target:i,rel:`noopener noreferrer`,className:`underline text-primary hover:text-primary/80`,children:e})}case`highlight`:{let r=t.attrs?.color;return(0,n.jsx)(`mark`,{style:r?{backgroundColor:r}:{},className:r?void 0:`bg-yellow-200 dark:bg-yellow-800/50`,children:e})}case`subscript`:return(0,n.jsx)(`sub`,{children:e});case`superscript`:return(0,n.jsx)(`sup`,{children:e});case`textStyle`:{let r={};return t.attrs?.color&&(r.color=t.attrs.color),t.attrs?.fontSize&&(r.fontSize=t.attrs.fontSize),t.attrs?.fontFamily&&(r.fontFamily=t.attrs.fontFamily),Object.keys(r).length>0?(0,n.jsx)(`span`,{style:r,children:e}):(0,n.jsx)(n.Fragment,{children:e})}default:return e}},e),i=[`h1`,`h2`,`h3`,`h4`,`h5`,`h6`],a=(e,n,r,a)=>{let o=i[Math.max(1,Math.min(6,e))-1],s=a?.id;return t.default.createElement(o,{key:r,className:`font-bold my-4`,id:s},n)},o=e=>{let t={},n={},r=e?.colspan,i=e?.rowspan,a=e?.colwidth;return r&&r>1&&(t.colSpan=r),i&&i>1&&(t.rowSpan=i),a&&Array.isArray(a)&&a[0]&&(n.minWidth=a[0]),Object.keys(n).length>0&&(t.style=n),t},s=(e,i)=>{if(e.type===`text`){let a=e.text??``;return(0,n.jsx)(t.default.Fragment,{children:e.marks?.length?r(a,e.marks):a},i)}let l=e.content?.map((e,t)=>s(e,t))??null;switch(e.type){case`doc`:return(0,n.jsx)(`div`,{children:l},i);case`paragraph`:{if(!e.content?.length||e.content.every(e=>e.type===`text`&&(!e.text||!e.text.trim())))return null;let t=e.attrs?.textAlign,r=t?{textAlign:t}:{};return(0,n.jsx)(`p`,{className:`mb-4`,style:Object.keys(r).length?r:void 0,children:l},i)}case`heading`:return a(e.attrs?.level||1,l,i,e.attrs??void 0);case`bulletList`:return(0,n.jsx)(`ul`,{className:`list-disc pl-5 mb-4`,children:l},i);case`orderedList`:{let t=e.attrs?.start??1;return(0,n.jsx)(`ol`,{className:`list-decimal pl-5 mb-4`,start:t===1?void 0:t,children:l},i)}case`listItem`:return(0,n.jsx)(`li`,{children:l},i);case`taskList`:return(0,n.jsx)(`ul`,{className:`list-none pl-0 mb-4 space-y-1`,children:l},i);case`taskItem`:{let t=!!e.attrs?.checked;return(0,n.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,n.jsx)(`input`,{type:`checkbox`,checked:t,readOnly:!0,className:`mt-1.5 rounded`}),(0,n.jsx)(`div`,{className:t?`line-through text-muted-foreground`:``,children:l})]},i)}case`blockquote`:return(0,n.jsx)(`blockquote`,{className:`border-l-4 border-border pl-4 italic my-4`,children:l},i);case`codeBlock`:{let t=e.attrs?.language;return(0,n.jsx)(`pre`,{className:`bg-muted rounded-lg p-4 mb-4 overflow-x-auto`,"data-language":t||void 0,children:(0,n.jsx)(`code`,{className:`text-sm font-mono`,children:l})},i)}case`horizontalRule`:return(0,n.jsx)(`hr`,{className:`my-6 border-border`},i);case`hardBreak`:return(0,n.jsx)(`br`,{},i);case`image`:{let t=e.attrs?.src,r=e.attrs?.alt||``,a=e.attrs?.title,o=e.attrs?.width,s=e.attrs?.height,c={};return o&&(c.width=typeof o==`number`?`${o}px`:o),s&&(c.height=typeof s==`number`?`${s}px`:s),(0,n.jsx)(`img`,{src:t,alt:r??``,title:a,width:typeof o==`number`?o:void 0,height:typeof s==`number`?s:void 0,loading:`lazy`,decoding:`async`,style:Object.keys(c).length?c:void 0,className:`max-w-full h-auto rounded my-4`},i)}case`table`:return(0,n.jsx)(`div`,{className:`overflow-x-auto my-4`,children:(0,n.jsx)(`table`,{className:`w-full border-collapse border border-gray-300 dark:border-gray-700`,style:{minWidth:500},children:(0,n.jsx)(`tbody`,{children:l})})},i);case`tableRow`:return(0,n.jsx)(`tr`,{className:`border-b border-gray-300 dark:border-gray-700`,children:l},i);case`tableHeader`:return(0,n.jsx)(`th`,{...o(e.attrs??void 0),className:`bg-gray-100 dark:bg-gray-800 font-bold p-3 text-left border border-gray-300 dark:border-gray-700`,children:l},i);case`tableCell`:return(0,n.jsx)(`td`,{...o(e.attrs??void 0),className:`p-3 border border-gray-300 dark:border-gray-700`,children:l},i);case`details`:return(0,n.jsx)(`details`,{className:`my-4 border rounded-lg overflow-hidden`,children:l},i);case`detailsSummary`:return(0,n.jsx)(`summary`,{className:`cursor-pointer p-3 font-semibold bg-muted/30 hover:bg-muted/50`,children:l},i);case`detailsContent`:return(0,n.jsx)(`div`,{className:`p-3 border-t`,children:l},i);case`youtube`:{let t=c(e.attrs?.src),r=e.attrs?.width||640,a=e.attrs?.height||480;return(0,n.jsx)(`div`,{className:`relative my-4 overflow-hidden rounded-lg`,style:{aspectRatio:`${r}/${a}`,maxWidth:r},children:(0,n.jsx)(`iframe`,{src:t,title:e.attrs?.title||`Embedded video`,allow:`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture`,allowFullScreen:!0,loading:`lazy`,className:`absolute inset-0 w-full h-full`})},i)}case`iframe`:{let t=c(e.attrs?.src);return(0,n.jsx)(`div`,{className:`my-4 overflow-hidden rounded-lg`,style:{aspectRatio:`16/9`},children:(0,n.jsx)(`iframe`,{src:t,title:e.attrs?.title||`Embedded content`,allowFullScreen:!0,loading:`lazy`,className:`w-full h-full border-0`})},i)}case`mention`:{let t=e.attrs?.label||e.attrs?.id||``;return(0,n.jsxs)(`span`,{className:`text-primary font-medium`,children:[`@`,t]},i)}default:return(0,n.jsx)(`div`,{children:l},i)}},c=e=>e?.replace(/(?:https?:)?\/\/(?:www\.|m\.|music\.)?youtube\.com\/embed\//gi,`https://www.youtube-nocookie.com/embed/`),l=({content:e,className:t})=>{if(!e)return null;if(typeof e==`string`){if(e.trim().startsWith(`{`)||e.trim().startsWith(`[`))try{let r=JSON.parse(e);return(0,n.jsx)(l,{content:r,className:t})}catch{}return(0,n.jsx)(`div`,{className:t,dangerouslySetInnerHTML:{__html:c(e)??e}})}let r=e;return!r.content||!Array.isArray(r.content)?null:(0,n.jsx)(`div`,{className:t,children:r.content.map((e,t)=>s(e,t))})};exports.SimpleTiptapRenderer=l,exports.toNoCookieEmbedSrc=c;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../currency.cjs.js"),n=require("../CurrencyProvider.cjs.js"),r=require("../use-cart.cjs.js"),i=require("../use-price-formatter.cjs.js"),a=require("../trials.cjs.js"),o=require("../pages/cms/products/actions.cjs.js");let s=require("@nextblock-cms/ui/button"),c=require("react");c=e.__toESM(c,1);let l=require("lucide-react"),u=require("@nextblock-cms/utils"),d=require("react/jsx-runtime"),f=require("sonner"),p=require("@nextblock-cms/ui/Skeleton");var m=({product:e})=>{let m=i.usePriceFormatter(),h=r.useCart(e=>e),{t:g}=(0,u.useTranslations)(),{activeCurrencyCode:_,currencies:v,defaultCurrency:y}=n.useCurrency(),[b,x]=(0,c.useState)([]),[S,C]=(0,c.useState)(!0),[w,T]=(0,c.useState)(`annual`);if((0,c.useEffect)(()=>{async function t(){try{if(!e.id)return;let t=await o.getPublicFreemiusPricing(e.id);x(t)}catch(e){console.error(`Failed to load pricing:`,e)}finally{C(!1)}}t()},[e.id]),!h)return(0,d.jsx)(p.Skeleton,{className:`h-14 w-full`});let{addItem:E}=h,D=b[0],O=D?.pricing?.[0],k=()=>{let n=e.price,r=e.freemius_plan_id;O&&(w===`monthly`&&O.monthly_price!=null&&(n=(0,u.majorUnitAmountToMinor)(O.monthly_price,y.code)),w===`annual`&&O.annual_price!=null&&(n=(0,u.majorUnitAmountToMinor)(O.annual_price,y.code)),w===`lifetime`&&O.lifetime_price!=null&&(n=(0,u.majorUnitAmountToMinor)(O.lifetime_price,y.code)));let i=v.reduce((e,r)=>(e[r.code]=t.convertMinorUnitAmount({amount:n,fromCurrencyCode:y.code,toCurrencyCode:r.code,currencies:v,applyRounding:!0}),e),{}),a=i[_]??n;D&&D.id&&(r=D.id);let{success:o,error:s}=E({id:e.id,product_id:e.id,title:e.title,price:a,prices:i,image_url:e.image_url,slug:e.slug,sku:e.sku,language_id:e.language_id,translation_group_id:e.translation_group_id,product_type:`digital`,payment_provider:`freemius`,provider:`freemius`,billing_cycle:w,freemius_product_id:e.freemius_product_id,freemius_plan_id:r,trial_period_days:e.trial_period_days??0,trial_requires_payment_method:e.trial_requires_payment_method??!1,is_taxable:e.is_taxable,currency_code:_});o?f.toast.success(g(`ecommerce.added_to_cart_success`,{item:e.title})):f.toast.error(s||g(`ecommerce.added_to_cart_error`))};if(S)return(0,d.jsx)(p.Skeleton,{className:`h-32 w-full`});if(!D||!O)return(0,d.jsx)(`div`,{className:`p-4 border border-dashed rounded-lg text-center text-muted-foreground`,children:g(`ecommerce.pricing_unavailable`)});let A=O.monthly_price!=null,j=O.annual_price!=null,M=O.lifetime_price!=null;w===`annual`&&!j&&(A?T(`monthly`):M&&T(`lifetime`));let N=a.getTrialSummary(e,g),P=e.price;return w===`monthly`&&O.monthly_price!=null&&(P=t.convertMinorUnitAmount({amount:(0,u.majorUnitAmountToMinor)(O.monthly_price,y.code),fromCurrencyCode:y.code,toCurrencyCode:_,currencies:v,applyRounding:!0})),w===`annual`&&O.annual_price!=null&&(P=t.convertMinorUnitAmount({amount:(0,u.majorUnitAmountToMinor)(O.annual_price,y.code),fromCurrencyCode:y.code,toCurrencyCode:_,currencies:v,applyRounding:!0})),w===`lifetime`&&O.lifetime_price!=null&&(P=t.convertMinorUnitAmount({amount:(0,u.majorUnitAmountToMinor)(O.lifetime_price,y.code),fromCurrencyCode:y.code,toCurrencyCode:_,currencies:v,applyRounding:!0})),(0,d.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,d.jsxs)(`div`,{role:`group`,"aria-label":g(`ecommerce.billing_cycle`)===`ecommerce.billing_cycle`?`Billing cycle`:g(`ecommerce.billing_cycle`),className:`flex bg-secondary/35 p-1 rounded-lg w-full max-w-sm mx-auto shadow-inner`,children:[A&&(0,d.jsx)(`button`,{type:`button`,"aria-pressed":w===`monthly`,onClick:()=>T(`monthly`),className:`flex-1 py-1.5 text-xs font-semibold rounded-md transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring ${w===`monthly`?`bg-background shadow-sm text-foreground`:`text-muted-foreground hover:text-foreground`}`,children:g(`ecommerce.monthly`)}),j&&(0,d.jsx)(`button`,{type:`button`,"aria-pressed":w===`annual`,onClick:()=>T(`annual`),className:`flex-1 py-1.5 text-xs font-semibold rounded-md transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring ${w===`annual`?`bg-background shadow-sm text-foreground`:`text-muted-foreground hover:text-foreground`}`,children:g(`ecommerce.annual`)}),M&&(0,d.jsx)(`button`,{type:`button`,"aria-pressed":w===`lifetime`,onClick:()=>T(`lifetime`),className:`flex-1 py-1.5 text-xs font-semibold rounded-md transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring ${w===`lifetime`?`bg-background shadow-sm text-foreground`:`text-muted-foreground hover:text-foreground`}`,children:g(`ecommerce.lifetime`)})]}),(0,d.jsxs)(`div`,{className:`text-center`,children:[(0,d.jsx)(`span`,{className:`text-3xl font-extrabold text-foreground tabular-nums`,children:m(P,_)}),w!==`lifetime`&&(0,d.jsxs)(`span`,{className:`text-muted-foreground text-sm ml-1.5`,children:[`/ `,g(w===`annual`?`ecommerce.year`:`ecommerce.month`)]}),N&&(0,d.jsxs)(`div`,{className:`mt-1 text-xs font-medium text-emerald-600 dark:text-emerald-400`,children:[N.label,(0,d.jsx)(`span`,{className:`mx-2 text-muted-foreground/50`,children:`|`}),(0,d.jsx)(`span`,{className:`text-muted-foreground`,children:N.paymentRequirementLabel})]})]}),(0,d.jsxs)(s.Button,{onClick:k,className:`w-full h-12 text-base font-bold shadow-md transition-shadow hover:shadow-lg active:scale-[0.98]`,children:[(0,d.jsx)(l.ShoppingCart,{className:`mr-2 h-4 w-4`}),N?.label?g(`ecommerce.start_trial`,{trial:N.label})===`ecommerce.start_trial`?`Start ${N.label}`:g(`ecommerce.start_trial`,{trial:N.label}):g(`ecommerce.get_license`)]})]})};exports.SubscriptionSelector=m;
|
package/lib/coupon-server.cjs.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./currency.cjs.js"),t=require("./coupons.cjs.js");function n(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t}function r(e,t){return e===`all`||e===t}function i(e){return e===`stripe`||e===`freemius`?e:null}async function a(t){let{data:n,error:r}=await t.from(`currencies`).select(`code, symbol, exchange_rate, is_default, is_active, auto_sync_product_prices, auto_update_exchange_rate, exchange_rate_source, exchange_rate_updated_at, rounding_mode, rounding_increment, rounding_charm_amount`).eq(`is_active`,!0).order(`code`,{ascending:!0});if(r)throw Error(r.message);return(n||[]).map(t=>e.normalizeCurrencyRecord(t))}async function o(n){let{client:r,items:o}=n,s=await a(r);if(s.length===0)throw Error(`No active currencies are configured.`);let c=s.find(e=>e.code===(n.currencyCode||``).toUpperCase())??e.getDefaultCurrency(s),l=[...new Set(o.map(e=>e.product_id).filter(Boolean))],u=[...new Set(o.map(e=>e.variant_id).filter(e=>!!e))];if(l.length===0)return{lines:[],currencies:s,selectedCurrency:c};let[{data:d,error:f},p]=await Promise.all([r.from(`products`).select(`id, title, price, prices, sale_price, sale_prices, sale_start_at, sale_end_at, scheduled_price, scheduled_prices, scheduled_price_at, product_type, payment_provider, freemius_product_id, freemius_plan_id`).in(`id`,l),u.length?r.from(`product_variants`).select(`id, product_id, price, prices, sale_price, sale_prices, sale_start_at, sale_end_at, scheduled_price, scheduled_prices, scheduled_price_at`).in(`id`,u):Promise.resolve({data:[],error:null})]);if(f)throw Error(f.message);if(p.error)throw Error(p.error.message);let m=d||[],h=p.data||[],g=new Map(m.map(e=>[e.id,e])),_=new Map(h.map(e=>[e.id,e])),v=[];for(let n of o){let r=g.get(n.product_id);if(!r)continue;let a=i(r.payment_provider)??(r.product_type===`digital`?`freemius`:`stripe`),o=n.variant_id?_.get(n.variant_id):null,l=o&&o.product_id===r.id?o:r,u=e.resolveEffectivePriceForCurrency({prices:e.normalizePriceMap(l.prices),salePrices:e.normalizeSalePriceMap(l.sale_prices),fallbackPrice:l.price,fallbackSalePrice:l.sale_price,saleStartAt:l.sale_start_at,saleEndAt:l.sale_end_at,scheduledPrice:l.scheduled_price,scheduledPrices:e.normalizePriceMap(l.scheduled_prices),scheduledPriceAt:l.scheduled_price_at,currencyCode:c.code,currencies:s}),d=a===`freemius`?1:Math.max(1,Number(n.quantity)||1),f=Math.max(0,u.sale_price??u.price);v.push({key:t.getCartLineCouponKey(n),product_id:r.id,variant_id:o?.id??null,title:r.title,quantity:d,provider:a,subtotal:f*d,freemius_product_id:r.freemius_product_id??null,freemius_plan_id:r.freemius_plan_id??null})}return{lines:v,currencies:s,selectedCurrency:c}}async function s(e,t){let{data:n,error:r}=await e.from(`coupon_products`).select(`product_id`).eq(`coupon_id`,t);if(r)throw Error(r.message);return new Set((n||[]).map(e=>e.product_id))}function c(e,t){let n=e.reduce((e,t)=>e+t.subtotal,0),r=Math.min(t,n);if(n<=0||r<=0)return new Map;let i=new Map,a=0;return e.forEach((t,o)=>{let s=o===e.length-1?r-a:Math.min(t.subtotal,Math.floor(r*t.subtotal/n));a+=s,i.set(t.key,s)}),i}async function l(e){let i=t.normalizeCouponCode(e.code);if(!i)return{success:!1,error:`Enter a coupon code.`,errorKey:`ecommerce.coupon_code_required`};if(!e.items.length)return{success:!1,error:`Add an item to your cart before applying a coupon.`,errorKey:`ecommerce.coupon_cart_empty`};let{data:a,error:l}=await e.client.from(`coupons`).select(`id, code, name, provider_scope, discount_type, discount_amount, is_active, starts_at, ends_at, redemption_limit, redemptions_count`).ilike(`code`,i).maybeSingle();if(l)throw Error(l.message);if(!a)return{success:!1,error:`Coupon code not found.`,errorKey:`ecommerce.coupon_not_found`};let u=a,d=new Date,f=n(u.starts_at),p=n(u.ends_at);if(!u.is_active)return{success:!1,error:`This coupon is not active.`,errorKey:`ecommerce.coupon_inactive`};if(f&&f>d)return{success:!1,error:`This coupon is not active yet.`,errorKey:`ecommerce.coupon_not_started`};if(p&&p<=d)return{success:!1,error:`This coupon has expired.`,errorKey:`ecommerce.coupon_expired`};if(u.redemption_limit!==null&&(u.redemptions_count??0)>=u.redemption_limit)return{success:!1,error:`This coupon has reached its redemption limit.`,errorKey:`ecommerce.coupon_limit_reached`};let[{lines:m},h]=await Promise.all([o({client:e.client,items:e.items,currencyCode:e.currencyCode}),s(e.client,u.id)]),g=h.size>0,_=m.filter(e=>e.subtotal>0&&r(u.provider_scope,e.provider)&&(!g||h.has(e.product_id)));if(_.length===0)return{success:!1,error:`This coupon does not apply to the items in your cart.`,errorKey:`ecommerce.coupon_not_applicable`};let v=u.discount_type===`fixed`?c(_,u.discount_amount):null,y=t.emptyProviderDiscounts(),b=_.map(e=>{let t=u.discount_type===`percent`?Math.min(e.subtotal,Math.round(e.subtotal*u.discount_amount/100)):v?.get(e.key)??0;return y[e.provider]+=t,{key:e.key,product_id:e.product_id,variant_id:e.variant_id,provider:e.provider,title:e.title,quantity:e.quantity,subtotal:e.subtotal,discount:t}});return{success:!0,quote:{couponId:u.id,code:u.code,name:u.name,discountType:u.discount_type,discountAmount:u.discount_amount,providerScope:u.provider_scope,eligibleSubtotal:_.reduce((e,t)=>e+t.subtotal,0),discountTotal:y.stripe+y.freemius,providerDiscounts:y,lineDiscounts:b}}}function u(e){let t=new Map;for(let n of e?.lineDiscounts??[])t.set(n.key,n.discount);return t}async function d(e){let{error:t}=await e.client.from(`coupon_redemptions`).insert({coupon_id:e.quote.couponId,order_id:e.orderId,coupon_code:e.quote.code,provider:e.provider,discount_total:Math.max(0,e.discountTotal),user_id:e.userId||null,customer_email:e.customerEmail||null,metadata:e.metadata||{}});if(t){console.error(`Failed to record coupon redemption:`,t);return}let{data:n}=await e.client.from(`coupons`).select(`redemptions_count`).eq(`id`,e.quote.couponId).single();await e.client.from(`coupons`).update({redemptions_count:(n?.redemptions_count??0)+1,updated_at:new Date().toISOString()}).eq(`id`,e.quote.couponId)}exports.getCouponQuote=l,exports.getQuoteLineDiscountMap=u,exports.recordCouponRedemption=d;
|
package/lib/currency-sync.cjs.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./currency.cjs.js");let t=require("@nextblock-cms/utils"),n=require("@nextblock-cms/db/server");require("server-only");var r=`https://api.frankfurter.dev`,i=`id, code, symbol, exchange_rate, is_default, is_active, auto_update_exchange_rate, auto_sync_product_prices, exchange_rate_source, exchange_rate_updated_at, updated_at, rounding_mode, rounding_increment, rounding_charm_amount`;function a(e){if(!e.id)throw Error(`Currency ${(0,t.normalizeCurrencyCode)(e.code)} is missing its ID.`);return e.id}function o(){return process.env.FX_API_BASE_URL?.trim().replace(/\/+$/,``)||r}function s(e){try{let t=new URL(e),n=t.pathname.replace(/\/+$/,``);return`${t.host}${n&&n!==`/`?n:``}`}catch{return e}}function c(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.base==`string`&&typeof t.date==`string`&&typeof t.quote==`string`&&typeof t.rate==`number`&&Number.isFinite(t.rate)&&t.rate>0}function l(e){return Array.isArray(e)&&e.every(c)}async function u(){let e=(0,n.getServiceRoleSupabaseClient)(),{data:t,error:r}=await e.from(`currencies`).select(i).order(`code`,{ascending:!0});if(r)throw Error(r.message);return{supabase:e,currencies:t||[]}}async function d(e){let n=(0,t.normalizeCurrencyCode)(e.newDefaultCurrencyCode),r=Number(e.previousBaseRate);if(!Number.isFinite(r)||r<=0)throw Error(`Cannot rebase exchange rates without a valid previous base rate.`);let{supabase:i,currencies:o}=await u();if(!o.find(e=>(0,t.normalizeCurrencyCode)(e.code)===n))throw Error(`Currency ${n} was not found for rebasing.`);let s=new Date().toISOString(),c=[],l=o.map(e=>{let i=a(e),o=(0,t.normalizeCurrencyCode)(e.code),l=o===n?1:Number((e.exchange_rate/r).toFixed(10));return c.push(o),{...e,id:i,exchange_rate:l,auto_update_exchange_rate:o!==n&&e.auto_update_exchange_rate,exchange_rate_source:o===n?`store-default`:e.exchange_rate_source||`rebased-default`,exchange_rate_updated_at:s,updated_at:s}}),{error:d}=await i.from(`currencies`).upsert(l,{onConflict:`id`});if(d)throw Error(d.message);return{rebasedAt:s,newDefaultCurrencyCode:n,updatedCurrencies:c}}async function f(){let{supabase:n,currencies:r}=await u();if(!r.length)throw Error(`No currencies are configured yet.`);let i=r.map(t=>e.normalizeCurrencyRecord(t)),c=e.getDefaultCurrency(i),d=(0,t.normalizeCurrencyCode)(c.code),f=r.find(e=>(0,t.normalizeCurrencyCode)(e.code)===d);if(!f)throw Error(`Default currency ${d} could not be found for syncing.`);let p=r.filter(e=>(0,t.normalizeCurrencyCode)(e.code)!==d&&e.auto_update_exchange_rate!==!1),m=o(),h=s(m),g=new Date().toISOString(),{error:_}=await n.from(`currencies`).upsert({...f,id:a(f),exchange_rate:1,auto_update_exchange_rate:!1,exchange_rate_source:`store-default`,exchange_rate_updated_at:g,updated_at:g},{onConflict:`id`});if(_)throw Error(_.message);if(!p.length)return{baseCurrencyCode:d,fetchedAt:g,provider:h,providerUrl:m,skippedCurrencies:[],updatedCurrencies:[]};let v=new URL(`${m}/v2/rates`);v.searchParams.set(`base`,d),v.searchParams.set(`quotes`,[...new Set(p.map(e=>(0,t.normalizeCurrencyCode)(e.code)))].join(`,`));let y=await fetch(v.toString(),{cache:`no-store`,headers:{Accept:`application/json`}});if(!y.ok){let e=await y.text();throw Error(`FX provider request failed (${y.status}): ${e||`Unexpected response body.`}`)}let b=await y.json();if(!l(b))throw Error(`FX provider returned an unexpected response payload.`);let x=new Map;for(let e of b)x.set((0,t.normalizeCurrencyCode)(e.quote),e.rate);let S=[],C=[],w=[];for(let e of p){let n=(0,t.normalizeCurrencyCode)(e.code),r=x.get(n);if(!r||!Number.isFinite(r)||r<=0){C.push(n);continue}w.push({...e,id:a(e),exchange_rate:Number(r.toFixed(10)),exchange_rate_source:h,exchange_rate_updated_at:g,updated_at:g}),S.push(n)}if(w.length){let{error:e}=await n.from(`currencies`).upsert(w,{onConflict:`id`});if(e)throw Error(e.message)}return{baseCurrencyCode:d,fetchedAt:g,provider:h,providerUrl:m,skippedCurrencies:C,updatedCurrencies:S}}async function p(e){let r=(0,t.normalizeCurrencyCode)(e),{error:i}=await(0,n.getServiceRoleSupabaseClient)().rpc(`clear_currency_price_overrides`,{target_currency:r});if(i)throw Error(i.message);return{currencyCode:r}}exports.clearAutoSyncedCurrencyPriceOverrides=p,exports.rebaseStoreCurrencyExchangeRates=d,exports.syncStoreCurrencyRates=f;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./customer.cjs.js");let t=require("@nextblock-cms/db/server");function n(e){return e?.trim()||null}function r(t){return t?e.normalizeCustomerAddress({company_name:t.company_name,recipient_name:t.recipient_name,line1:t.line1,line2:t.line2,city:t.city,state:t.state,postal_code:t.postal_code,country_code:t.country_code}):null}function i(e,t){return e?.find(e=>e.address_type===t&&e.is_default)??e?.find(e=>e.address_type===t)??null}async function a(t,n,r,i){let a=e.normalizeCustomerAddress(i),{data:o,error:s}=await t.from(`user_addresses`).select(`*`).eq(`user_id`,n).eq(`address_type`,r).order(`is_default`,{ascending:!1}).order(`updated_at`,{ascending:!1});if(s)throw Error(s.message);let c=o?.[0]??null,l=(o??[]).slice(1).map(e=>e.id);if(!a){if(o?.length){let e=o.map(e=>e.id),{error:n}=await t.from(`user_addresses`).delete().in(`id`,e);if(n)throw Error(n.message)}return}let u={user_id:n,address_type:r,is_default:!0,company_name:a.company_name??null,recipient_name:a.recipient_name??null,line1:a.line1??null,line2:a.line2??null,city:a.city??null,state:a.state??null,postal_code:a.postal_code??null,country_code:a.country_code??null,updated_at:new Date().toISOString()};if(c){let{error:e}=await t.from(`user_addresses`).update(u).eq(`id`,c.id);if(e)throw Error(e.message)}else{let{error:e}=await t.from(`user_addresses`).insert(u);if(e)throw Error(e.message)}if(l.length){let{error:e}=await t.from(`user_addresses`).delete().in(`id`,l);if(e)throw Error(e.message)}}async function o(e,n){let{data:a,error:o}=await(n??(0,t.createClient)()).from(`user_addresses`).select(`*`).eq(`user_id`,e).in(`address_type`,[`billing`,`shipping`]).order(`is_default`,{ascending:!1}).order(`updated_at`,{ascending:!1});if(o)throw Error(o.message);return{billingAddress:r(i(a??[],`billing`)),shippingAddress:r(i(a??[],`shipping`))}}async function s(e){let n=e.client??(0,t.createClient)();await a(n,e.userId,`billing`,e.billingAddress??null),await a(n,e.userId,`shipping`,e.shippingAddress??null)}async function c(e){let r=e.client??(0,t.createClient)(),i=n(e.fullName),a=n(e.phone);if(!i&&!a)return;let{data:o,error:s}=await r.from(`profiles`).select(`full_name, phone`).eq(`id`,e.userId).maybeSingle();if(s)throw Error(s.message);if(!o)return;let c=n(o.full_name)||i,l=n(o.phone)||a;if(n(o.full_name)===c&&n(o.phone)===l)return;let{error:u}=await r.from(`profiles`).update({full_name:c,phone:l,updated_at:new Date().toISOString()}).eq(`id`,e.userId);if(u)throw Error(u.message)}exports.fillMissingUserProfileCheckoutDetails=c,exports.getDefaultUserAddresses=o,exports.upsertDefaultUserAddresses=s;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./invoice-server.cjs.js"),t=require("./freemius-license.cjs.js");let n=require("@nextblock-cms/db/server");var r=[`pending`];function i(e){return e??(0,n.createClient)()}async function a(e){let{data:{user:t},error:n}=await e.auth.getUser();if(n||!t)throw Error(`Unauthorized`);return t}async function o(e){let t=i(e),n=await a(t),{data:o,error:s}=await t.from(`orders`).select(`id, invoice_number, paid_at, created_at, currency, status, provider, subtotal, shipping_total, tax_total, total`).eq(`user_id`,n.id).not(`status`,`in`,`(${r.join(`,`)})`).order(`created_at`,{ascending:!1});if(s)throw Error(s.message);return o??[]}async function s(e,t){let n=i(t),o=await a(n),{data:s,error:c}=await n.from(`orders`).select(`id, invoice_number, paid_at, created_at, currency, status, provider, subtotal, shipping_total, tax_total, total`).eq(`id`,e).eq(`user_id`,o.id).not(`status`,`in`,`(${r.join(`,`)})`).maybeSingle();if(c)throw Error(c.message);return s??null}async function c(n,r){let a=i(r),o=await s(n,a);return o?{order:o,invoice:o.invoice_number?await e.getInvoicePresentationData(n,a):null,license:o.provider===`freemius`?await t.getFreemiusOrderLicense({orderId:n,client:a}):null}:null}exports.getCurrentCustomerOrder=s,exports.getCurrentCustomerOrderInvoice=c,exports.getCurrentCustomerOrders=o;
|
package/lib/customer.cjs.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./countries.cjs.js"),t=require("./states.cjs.js");var n=()=>({company_name:``,recipient_name:``,line1:``,line2:``,city:``,state:``,postal_code:``,country_code:`CA`});function r(e){return e?.trim()||null}function i(n){if(!n)return null;let i={company_name:r(n.company_name),recipient_name:r(n.recipient_name),line1:r(n.line1),line2:r(n.line2),city:r(n.city),postal_code:r(n.postal_code),country_code:e.normalizeCountryCode(n.country_code)};return i.state=t.normalizeSubdivisionCode(i.country_code,r(n.state)),Object.values(i).some(Boolean)?i:null}function a(e){let n=i(e);return n?!!(n.recipient_name&&n.line1&&n.city&&n.postal_code&&n.country_code&&(!t.countryUsesStructuredStates(n.country_code)||n.state)):!1}function o(e){let t=i(e.billing),n=i(e.shipping),a=r(e.email)?.toLowerCase()??null,o=r(e.phone);return{email:a,name:r(e.name)??t?.recipient_name??n?.recipient_name??null,phone:o,billing:t,shipping:n}}function s(e,t){let n=i(e),r=i(t);return JSON.stringify(n)===JSON.stringify(r)}exports.addressesMatch=s,exports.emptyCustomerAddress=n,exports.isCustomerAddressComplete=a,exports.normalizeCustomerAddress=i,exports.normalizeOrderCustomerDetails=o;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("../_virtual/_rolldown/runtime.cjs.js");let t=require("papaparse");t=e.__toESM(t,1);function n(e,n){let r=t.default.unparse(e),i=new Blob([r],{type:`text/csv;charset=utf-8;`}),a=document.createElement(`a`);if(a.download!==void 0){let e=URL.createObjectURL(i);a.setAttribute(`href`,e),a.setAttribute(`download`,n),a.style.visibility=`hidden`,document.body.appendChild(a),a.click(),document.body.removeChild(a)}}function r(e){return e.map(e=>({"Order ID":e.id,Date:new Date(e.created_at).toLocaleDateString(),"Customer Name":e.customer?.full_name||e.customer_details?.name||`Guest`,"Customer Email":e.customer?.email||e.customer_details?.email||`N/A`,Subtotal:(e.subtotal/100).toFixed(2),"Tax Amount":(e.tax_total/100).toFixed(2),"Shipping Amount":(e.shipping_total/100).toFixed(2),Total:(e.total/100).toFixed(2),Currency:e.currency.toUpperCase(),"Payment Status":e.status,"Fulfillment Status":e.status===`shipped`?`Shipped`:e.status===`paid`?`Paid`:e.status===`trial`?`Trial`:`Pending`,"Payment Gateway":e.provider===`freemius`?`Freemius`:`Stripe`}))}function i(e){return e.filter(e=>e.status===`paid`).map(e=>{let t=e.customer_details?.shipping||e.customer_details?.billing,n=t?.country_code||`N/A`,r=t?.state||`N/A`,i=e.tax_details?.lines?.[0]?.rate?.display_name||`N/A`,a=e.tax_details?.lines?.[0]?.rate?.percentage||0;return{Date:e.paid_at?new Date(e.paid_at).toLocaleDateString():new Date(e.created_at).toLocaleDateString(),"Order ID":e.id,Destination:`${r}, ${n}`,"Tax Rate Applied":`${a}% (${i})`,"Total Taxable Amount":(e.subtotal/100).toFixed(2),"Tax Collected":(e.tax_total/100).toFixed(2),Currency:e.currency.toUpperCase()}})}function a(e){let t={};return e.filter(e=>e.status===`paid`).forEach(e=>{let n=e.currency.toUpperCase();t[n]||(t[n]={volume:0,subtotal:0,tax:0}),t[n].volume+=e.total,t[n].subtotal+=e.subtotal,t[n].tax+=e.tax_total}),Object.entries(t).map(([e,t])=>({Currency:e,"Total Transaction Volume":(t.volume/100).toFixed(2),"Total Subtotal":(t.subtotal/100).toFixed(2),"Total Tax Collected":(t.tax/100).toFixed(2)}))}exports.generateCSV=n,exports.mapGeneralSalesLedger=r,exports.mapMultiCurrencyRevenue=a,exports.mapTaxLiabilitySummary=i;
|
package/lib/factory.cjs.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./providers/freemius.cjs.js"),t=require("./providers/stripe.cjs.js");function n(n){switch(n){case`freemius`:return new e.FreemiusProvider;default:return new t.StripeProvider}}exports.getPaymentProvider=n;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./payment-config.cjs.js"),t=require("./providers/freemius.cjs.js");let n=require("@nextblock-cms/utils");function r(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toISOString().replace(`T`,` `).replace(/\.\d{3}Z$/,``)}function i(e){return e===`percent`?`percentage`:`dollar`}function a(e){return t.resolveFreemiusCheckoutCredentials(e).apiKey||t.readFreemiusEnvValue(`FREEMIUS_API_KEY`)}async function o(t){await e.hydrateFreemiusEnvFromDb();let n=a(t.productId);if(!n)throw Error(`Missing Freemius API bearer token for product ${t.productId}. Set FREEMIUS_API_KEY or FREEMIUS_CHECKOUT_PRODUCTS_JSON[${t.productId}].apiKey.`);let r=t.couponId?`/${t.couponId}`:``,i=await fetch(`https://api.freemius.com/v1/products/${t.productId}/coupons${r}.json`,{method:t.method,headers:{Authorization:`Bearer ${n}`,"Content-Type":`application/json`,Accept:`application/json`},body:t.method===`DELETE`?void 0:JSON.stringify(t.body||{})}),o=await i.text(),s=o?JSON.parse(o):null;if(!i.ok)throw Error(s?.message||s?.error?.message||`Freemius coupon request failed with ${i.status}`);return s}function s(e,t){return{code:e.code,discount:e.discount_type===`fixed`?(0,n.minorUnitAmountToMajor)(e.discount_amount,`USD`):e.discount_amount,discount_type:i(e.discount_type),plans:t.planIds.length>0?t.planIds.join(`,`):null,licenses:null,billing_cycles:null,start_date:r(e.starts_at),end_date:r(e.ends_at),redemptions_limit:e.redemption_limit??null,has_renewals_discount:!1,has_addons_discount:!1,is_one_per_user:!1,is_active:e.is_active,user_type:`all`}}async function c(e,t){if(t.provider_scope===`stripe`)return[];let{data:n,error:r}=await e.from(`coupon_products`).select(`product_id`).eq(`coupon_id`,t.id);if(r)throw Error(r.message);let i=(n||[]).map(e=>e.product_id),a=e.from(`products`).select(`id, freemius_product_id, freemius_plan_id`).eq(`payment_provider`,`freemius`).not(`freemius_product_id`,`is`,null);i.length>0&&(a=a.in(`id`,i));let{data:o,error:s}=await a;if(s)throw Error(s.message);let c=new Map;for(let e of o||[]){let t=String(e.freemius_product_id||``).trim();if(!t)continue;let n=c.get(t)??{freemiusProductId:t,productId:e.id,planIds:[]};i.length>0&&e.freemius_plan_id&&n.planIds.push(String(e.freemius_plan_id)),c.set(t,n)}return[...c.values()].map(e=>({...e,planIds:[...new Set(e.planIds)]}))}async function l(e,t){let{data:n}=await e.from(`coupon_freemius_mappings`).select(`sync_status, sync_error`).eq(`coupon_id`,t),r=n||[];if(r.length===0){await e.from(`coupons`).update({freemius_sync_status:`not_required`,freemius_sync_error:null}).eq(`id`,t);return}let i=r.find(e=>e.sync_status===`failed`);await e.from(`coupons`).update({freemius_sync_status:i?`failed`:`synced`,freemius_sync_error:i?.sync_error??null}).eq(`id`,t)}async function u(e){let{data:t,error:n}=await e.client.from(`coupons`).select(`id, code, name, internal_note, provider_scope, discount_type, discount_amount, is_active, starts_at, ends_at, redemption_limit`).eq(`id`,e.couponId).single();if(n||!t)return{success:!1,error:n?.message||`Coupon not found`};let r=t,i=await c(e.client,r);await e.client.from(`coupons`).update({freemius_sync_status:i.length>0?`pending`:`not_required`,freemius_sync_error:null}).eq(`id`,r.id);for(let t of i){let{data:n}=await e.client.from(`coupon_freemius_mappings`).select(`id, freemius_coupon_id`).eq(`coupon_id`,r.id).eq(`freemius_product_id`,t.freemiusProductId).maybeSingle(),i=s(r,t);try{let a=await o({productId:t.freemiusProductId,method:n?.freemius_coupon_id?`PUT`:`POST`,couponId:n?.freemius_coupon_id??null,body:i}),s=a?.coupon??a;await e.client.from(`coupon_freemius_mappings`).upsert({id:n?.id,coupon_id:r.id,product_id:t.productId,freemius_product_id:t.freemiusProductId,freemius_coupon_id:s?.id?String(s.id):n?.freemius_coupon_id??null,freemius_coupon_code:r.code,sync_status:`synced`,sync_error:null,remote_payload:a,last_synced_at:new Date().toISOString()},{onConflict:`coupon_id,freemius_product_id`})}catch(i){await e.client.from(`coupon_freemius_mappings`).upsert({id:n?.id,coupon_id:r.id,product_id:t.productId,freemius_product_id:t.freemiusProductId,freemius_coupon_id:n?.freemius_coupon_id??null,freemius_coupon_code:r.code,sync_status:`failed`,sync_error:i.message||`Freemius sync failed`,last_synced_at:new Date().toISOString()},{onConflict:`coupon_id,freemius_product_id`})}}return await l(e.client,r.id),{success:!0,targetCount:i.length}}function d(e){let t=(e.sku||``).toUpperCase().replace(/[^A-Z0-9]/g,``);return t?`SALE${t}`.slice(0,32):`SALE${e.productId.replace(/[^A-Za-z0-9]/g,``).toUpperCase()}`.slice(0,32)}function f(e,t){if(typeof e!=`number`||e<=0||typeof t!=`number`||t<0||t>=e)return null;let n=Math.round((1-t/e)*100);return n<=0||n>100?null:n}async function p(e){let{data:t,error:n}=await e.client.from(`products`).select(`id, sku, price, sale_price, sale_start_at, sale_end_at, payment_provider, freemius_product_id, freemius_plan_id`).eq(`id`,e.productId).maybeSingle();if(n||!t)return{success:!1,error:n?.message||`Product not found`};let r=t,i=String(r.freemius_product_id||``).trim();if(r.payment_provider!==`freemius`||!i)return{success:!0,skipped:!0,reason:`not_a_freemius_product`};let a=f(r.price,r.sale_price),c=a!==null,{data:l}=await e.client.from(`product_freemius_sale_coupons`).select(`id, freemius_coupon_id, freemius_coupon_code, discount_percent, is_active`).eq(`product_id`,r.id).maybeSingle();if(!c&&!l?.freemius_coupon_id)return l?.id&&await e.client.from(`product_freemius_sale_coupons`).update({is_active:!1,updated_at:new Date().toISOString()}).eq(`id`,l.id),{success:!0,active:!1};let u=l?.freemius_coupon_code||d({sku:r.sku,productId:r.id}),p=r.freemius_plan_id?[String(r.freemius_plan_id)]:[],m=a??l?.discount_percent??1,h=s({id:r.id,code:u,name:`Scheduled sale ${r.sku||r.id}`,provider_scope:`freemius`,discount_type:`percent`,discount_amount:m,is_active:c,starts_at:r.sale_start_at,ends_at:r.sale_end_at,redemption_limit:null},{freemiusProductId:i,productId:r.id,planIds:p});try{let t=await o({productId:i,method:l?.freemius_coupon_id?`PUT`:`POST`,couponId:l?.freemius_coupon_id??null,body:h}),n=t?.coupon??t;return await e.client.from(`product_freemius_sale_coupons`).upsert({id:l?.id,product_id:r.id,freemius_product_id:i,freemius_plan_id:r.freemius_plan_id?String(r.freemius_plan_id):null,freemius_coupon_id:n?.id?String(n.id):l?.freemius_coupon_id??null,freemius_coupon_code:u,discount_percent:a,starts_at:r.sale_start_at,ends_at:r.sale_end_at,is_active:c,sync_status:`synced`,sync_error:null,remote_payload:t,last_synced_at:new Date().toISOString()},{onConflict:`product_id`}),{success:!0,active:c,code:u}}catch(t){return await e.client.from(`product_freemius_sale_coupons`).upsert({id:l?.id,product_id:r.id,freemius_product_id:i,freemius_plan_id:r.freemius_plan_id?String(r.freemius_plan_id):null,freemius_coupon_id:l?.freemius_coupon_id??null,freemius_coupon_code:u,discount_percent:a,starts_at:r.sale_start_at,ends_at:r.sale_end_at,is_active:c,sync_status:`failed`,sync_error:t.message||`Freemius sale coupon sync failed`,last_synced_at:new Date().toISOString()},{onConflict:`product_id`}),{success:!1,error:t.message||`Freemius sale coupon sync failed`}}}async function m(e){let{data:t}=await e.client.from(`coupon_freemius_mappings`).select(`id, freemius_product_id, freemius_coupon_id`).eq(`coupon_id`,e.couponId).not(`freemius_coupon_id`,`is`,null);for(let n of t||[])try{await o({productId:n.freemius_product_id,couponId:n.freemius_coupon_id,method:`DELETE`}),await e.client.from(`coupon_freemius_mappings`).update({sync_status:`deleted`,sync_error:null,updated_at:new Date().toISOString()}).eq(`id`,n.id)}catch(t){await e.client.from(`coupon_freemius_mappings`).update({sync_status:`failed`,sync_error:t.message||`Freemius delete failed`,updated_at:new Date().toISOString()}).eq(`id`,n.id)}}exports.deleteCouponFromFreemius=m,exports.syncCouponToFreemius=u,exports.syncProductSaleCouponToFreemius=p;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./payment-config.cjs.js"),t=require("./providers/freemius.cjs.js");let n=require("@freemius/sdk");var r=20,i=`This license cannot be claimed automatically. Use the key from your purchase email.`;function a(e){if(!e||typeof e!=`string`)return null;let t=e.trim(),n=/(?:z|[+-]\d{2}:?\d{2})$/i.test(t)?t:`${t.replace(` `,`T`)}Z`,r=Date.parse(n);return Number.isFinite(r)?r:null}function o(e,t){return e==null||t==null?!1:String(e).trim()===String(t).trim()}function s(e){return(e??``).trim().toLowerCase()}function c(e){let{license:t,request:n,user:r}=e,i=e.maxAgeMinutes??20,c=(e.now??new Date).getTime();if(!t||!o(t.id,n.licenseId))return{ok:!1,reason:`license_not_found`};let l=a(t.created);return l===null||c-l>i*6e4||l-c>3e5?{ok:!1,reason:`too_old`}:o(t.plugin_id,n.productId)?t.is_cancelled?{ok:!1,reason:`cancelled`}:!n.userId?.trim()||!o(t.user_id,n.userId)?{ok:!1,reason:`user_mismatch`}:!r||!s(n.email)||s(r.email)!==s(n.email)?{ok:!1,reason:`email_mismatch`}:typeof t.activated==`number`&&t.activated>0?{ok:!1,reason:`already_activated`}:t.secret_key?{ok:!0}:{ok:!1,reason:`no_key`}:{ok:!1,reason:`product_mismatch`}}async function l(r,a){await e.hydrateFreemiusEnvFromDb();let o=t.resolveFreemiusCheckoutCredentials(r.productId);if(!o.apiKey||!o.secretKey||!o.publicKey)return{error:`The license service is not configured for this product.`,ok:!1,reason:`not_configured`,status:503};let s=new n.Freemius({apiKey:o.apiKey,productId:Number(r.productId),publicKey:o.publicKey,secretKey:o.secretKey}),l=null,u=null;try{l=await s.api.license.retrieve(r.licenseId),l?.user_id!==null&&l?.user_id!==void 0&&(u=await s.api.user.retrieve(String(l.user_id)))}catch(e){return console.error(`[Freemius License Claim] Freemius lookup failed:`,e),{error:`Freemius could not be reached to verify the license.`,ok:!1,reason:`upstream_error`,status:502}}let d=c({license:l,maxAgeMinutes:a?.maxAgeMinutes,now:a?.now,request:r,user:u});return d.ok?{expiration:l?.expiration??null,licenseKey:String(l?.secret_key),ok:!0,planId:l?.plan_id!==null&&l?.plan_id!==void 0?String(l.plan_id):null}:{error:i,ok:!1,reason:d.reason,status:403}}exports.FREEMIUS_LICENSE_CLAIM_MAX_AGE_MINUTES=r,exports.FREEMIUS_LICENSE_CLAIM_REFUSED_MESSAGE=i,exports.claimFreemiusLicenseKey=l,exports.evaluateFreemiusLicenseClaim=c,exports.parseFreemiusTimestamp=a;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./payment-config.cjs.js"),t=require("./providers/freemius.cjs.js");let n=require("@freemius/sdk");async function r(e,r){if(!e)return null;let i=t.resolveFreemiusCheckoutCredentials(e);return!i.apiKey||!i.secretKey||!i.publicKey?null:new n.Freemius({productId:Number(e),apiKey:i.apiKey,secretKey:i.secretKey,publicKey:i.publicKey}).api.license.retrieve(r)}async function i(t){let{data:n,error:i}=await t.client.from(`orders`).select(`id, provider, freemius_product_id, freemius_license_id, freemius_trial_ends_at`).eq(`id`,t.orderId).maybeSingle();if(i||!n||n.provider!==`freemius`||!n.freemius_license_id)return null;let a=null;try{await e.hydrateFreemiusEnvFromDb(),a=await r(n.freemius_product_id,String(n.freemius_license_id))}catch(e){console.error(`[Freemius License] Failed to retrieve license key:`,e)}return{licenseId:String(n.freemius_license_id),licenseKey:a?.secret_key??null,planId:a?.plan_id==null?null:String(a.plan_id),expiration:a?.expiration??null,trialEndsAt:n.freemius_trial_ends_at??null,isCancelled:!!a?.is_cancelled}}exports.getFreemiusOrderLicense=i;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("./providers/freemius.cjs.js"),n=require("./order-inventory.cjs.js"),r=require("./invoice-server.cjs.js");let i=require("@supabase/supabase-js"),a=require("crypto");a=e.__toESM(a,1);let o=require("@freemius/sdk");function s(e){return e==null||e===``?null:String(e)}function c(e){let t=s(e);if(!t)return null;let n=t.includes(`T`)?t:t.replace(` `,`T`)+`Z`,r=new Date(n);return Number.isNaN(r.getTime())?t:r.toISOString()}function l(e){if(e==null||e===``)return null;let t=Number(e);return Number.isFinite(t)?t:null}function u(...e){return e.some(e=>{let t=l(e);return t!==null&&t>0})}function d(e){return e===`pending`||e===`trial`}function f(e){return[`license.cancelled`,`license.deleted`,`license.expired`,`subscription.cancelled`,`subscription.renewal.failed.last`,`trial.cancelled`,`trial.expired`].includes(e||``)}function p(e,t){return e===`license.extended`&&(t?.is_renewal===!0||t?.is_renewal===1||t?.is_renewal===`1`||t?.is_renewal===`true`)}function m(e){let t=e.objects?.payment??e.data?.payment??e.data;return e.type===`payment.created`&&u(t?.gross,t?.total_gross,t?.amount,t?.initial_amount)}function h(e){let t=e?.purchase??null,n=e?.trial??null;return{freemius_product_id:s(t?.plugin_id)??s(t?.product_id)??s(t?.productId)??s(n?.plugin_id)??s(n?.product_id)??s(n?.productId),freemius_plan_id:s(t?.plan_id)??s(t?.planId),freemius_license_id:s(t?.license_id)??s(t?.licenseId)??s(n?.license_id)??s(n?.licenseId),freemius_subscription_id:s(t?.subscription_id)??s(t?.subscriptionId)??s(n?.subscription_id)??s(n?.subscriptionId),freemius_trial_id:s(n?.id),freemius_user_id:s(t?.user_id)??s(t?.userId)??s(n?.user_id)??s(n?.userId)??s(e?.user?.id),freemius_trial_ends_at:c(n?.trial_ends_at)??c(n?.trialEndsAt)??c(t?.trial_ends)??c(t?.trialEnds)}}function g(e,t=`pending`){let n=e?.purchase??null,r=e?.trial??null;return t===`paid`?`paid`:r&&(r.canceled_at||r.canceledAt)&&d(t)?`cancelled`:r?`trial`:n?(n.canceled_at||n.canceledAt)&&d(t)?`cancelled`:u(n.initial_amount,n.initialAmount,n.gross,n.total_gross,n.totalGross)?`paid`:n.trial_ends||n.trialEnds||n.subscription_id||n.subscriptionId?`trial`:t:t}function _(e){let{event:t,currentStatus:n,purchaseData:r}=e;return n===`paid`&&f(t.type)?`paid`:f(t.type)?d(n)?`cancelled`:n:m(t)||p(t.type,t.data)||r&&u(r.initialAmount,r.initial_amount,r.gross,r.totalGross,r.total_gross)?`paid`:r?.canceled===!0&&d(n)?`cancelled`:n===`pending`&&(r?.trialEndsAt||r?.trial_ends_at||r?.trialEnds||r?.trial_ends)||(r?.subscriptionId||r?.subscription_id||t.type===`subscription.created`||t.type===`license.created`)&&n===`pending`?`trial`:n}function v(e,...t){let n=t.filter(e=>!!e);return e===`paid`||n.includes(`paid`)?`paid`:n.includes(`cancelled`)?`cancelled`:n.includes(`trial`)?`trial`:n.includes(`shipped`)?`shipped`:n.includes(`refunded`)?`refunded`:e}function y(e,t){let n={freemius_last_event_type:t,freemius_last_synced_at:new Date().toISOString()};for(let[t,r]of Object.entries(e))r!=null&&r!==``&&(n[t]=r);return n}function b(){let e=process.env.NEXT_PUBLIC_SUPABASE_URL||process.env.SUPABASE_URL,t=process.env.SUPABASE_SERVICE_ROLE_KEY||process.env.SUPABASE_SECRET_KEY;if(!e||!t)throw Error(`Missing Supabase Service Role environment variables`);return(0,i.createClient)(e,t,{auth:{autoRefreshToken:!1,persistSession:!1}})}async function x(e,t){let{data:n,error:r}=await e.from(`orders`).select(`id, status, provider, freemius_product_id, freemius_plan_id, freemius_license_id, freemius_subscription_id, freemius_trial_id, freemius_user_id, freemius_trial_ends_at`).eq(`id`,t).single();if(r||!n)throw Error(r?.message||`Order not found`);return n}async function S(e,t){let{data:n,error:r}=await e.from(`orders`).select(`id, status, provider, freemius_product_id, freemius_plan_id, freemius_license_id, freemius_subscription_id, freemius_trial_id, freemius_user_id, freemius_trial_ends_at`).eq(`freemius_license_id`,t).order(`created_at`,{ascending:!1}).limit(1).maybeSingle();if(r)throw Error(r.message);return n??null}async function C(e){let t=y(e.metadata,e.eventType),i=e.order.status,a=i===`paid`&&e.nextStatus!==`paid`?`paid`:e.nextStatus;a!==i&&(t.status=a);let{error:o}=await e.client.from(`orders`).update(t).eq(`id`,e.order.id);if(o)throw Error(o.message);return a===`paid`&&i!==`paid`&&(await r.assignInvoiceMetadata({orderId:e.order.id,client:e.client}),await n.applyOrderInventoryDeduction(e.client,e.order.id)),a}async function w(e){let t=e.client??b(),n=await x(t,e.orderId);if(n.provider!==`freemius`)return{success:!1,error:`Only Freemius orders can be synced from Freemius checkout`};let r=h(e.checkoutResponse),i=null;if(r.freemius_license_id)try{i=await D(r.freemius_product_id??n.freemius_product_id,r.freemius_license_id)}catch(e){console.error(`[Freemius Checkout Sync] Failed to retrieve purchase data:`,e)}let a={type:`checkout.purchaseCompleted`,data:{license_id:r.freemius_license_id},objects:{}},o={...r,...E(a,i)},s=g(e.checkoutResponse,n.status),c=i?_({event:a,currentStatus:n.status,purchaseData:i}):null,l=s===`paid`?n.status:s,u=await C({client:t,order:n,nextStatus:v(n.status,l,c),metadata:o,eventType:`checkout.purchaseCompleted`});return{success:!0,orderId:n.id,status:u,metadata:o}}function T(e){return s(e.data?.license_id)??s(e.objects?.license?.id)??s(e.objects?.subscription?.license_id)??s(e.objects?.payment?.license_id)??s(e.data?.payment?.license_id)}function E(e,t){let n=e.objects?.license,r=e.objects?.subscription,i=e.objects?.trial,a=e.objects?.payment??e.data?.payment;return{freemius_product_id:s(t?.productId)??s(t?.product_id)??s(n?.plugin_id)??s(r?.plugin_id)??s(a?.plugin_id),freemius_plan_id:s(t?.planId)??s(t?.plan_id)??s(n?.plan_id),freemius_license_id:s(t?.licenseId)??s(t?.license_id)??T(e),freemius_subscription_id:s(t?.subscriptionId)??s(t?.subscription_id)??s(r?.id)??s(e.data?.subscription_id),freemius_trial_id:s(i?.id)??s(e.data?.trial_id),freemius_user_id:s(t?.userId)??s(t?.user_id)??s(e.objects?.user?.id),freemius_trial_ends_at:c(i?.trial_ends_at)??c(i?.trial_ends)??c(n?.trial_ends)??c(t?.trialEndsAt)??c(t?.trial_ends_at)}}async function D(e,n){if(!e)return null;let r=t.resolveFreemiusCheckoutCredentials(e);return!r.apiKey||!r.secretKey||!r.publicKey?null:new o.Freemius({productId:Number(e),apiKey:r.apiKey,secretKey:r.secretKey,publicKey:r.publicKey}).purchase.retrievePurchaseData(n)}async function O(e){let t=e.client??b(),n=T(e.event);if(!n)return{success:!0,ignored:!0,reason:`missing_license_id`,type:e.event.type};let r=await S(t,n);if(!r)return{success:!0,ignored:!0,reason:`unknown_license_id`,licenseId:n,type:e.event.type};let i=null;try{i=await D(r.freemius_product_id??e.event.objects?.license?.plugin_id,n)}catch(e){console.error(`[Freemius Sync] Failed to retrieve purchase data:`,e)}let a=E(e.event,i),o=await C({client:t,order:r,nextStatus:_({event:e.event,currentStatus:r.status,purchaseData:i}),metadata:a,eventType:e.event.type??null});return{success:!0,orderId:r.id,status:o,type:e.event.type}}function k(){let e=[t.readFreemiusEnvValue(`FREEMIUS_SECRET_KEY`),t.readFreemiusEnvValue(`FREEMIUS_ECOMMERCE_SANDBOX_SECRET_KEY`),...Object.values(t.parseFreemiusCheckoutCredentialsMap()??{}).map(e=>e.secretKey??null)];return Array.from(new Set(e.filter(e=>!!e)))}function A(e,t){return t?k().some(n=>{let r=a.default.createHmac(`sha256`,n).update(e).digest(`hex`);try{return a.default.timingSafeEqual(Buffer.from(r,`hex`),Buffer.from(t,`hex`))}catch{return!1}}):!1}exports.extractFreemiusCheckoutMetadata=h,exports.getFreemiusWebhookSecretCandidates=k,exports.resolveFreemiusStatusFromCheckoutResponse=g,exports.resolveFreemiusStatusFromWebhookEvent=_,exports.syncFreemiusCheckoutOrder=w,exports.syncFreemiusOrderFromWebhookEvent=O,exports.verifyFreemiusWebhookSignature=A;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./payment-config.cjs.js"),t=require("./providers/freemius.cjs.js");let n=require("@freemius/sdk");var r=`A NextBlock license or trial already exists for this email. Activate that key from CMS Settings → Packages, or purchase a license at nextblock.dev.`,i=`The trial could not be provisioned automatically. Start it from CMS Settings → Packages instead.`;function a(e){return e.toISOString().slice(0,19).replace(`T`,` `)}function o(e,t){let n=Number.isFinite(t)&&t>0?Math.floor(t):30;return new Date(e.getTime()+n*24*60*60*1e3)}function s(e){let t=e.filter(e=>e.id!==null&&e.id!==void 0);if(t.length===0)return null;let n=t.filter(e=>!e.is_hidden);return[...n.length>0?n:t].sort((e,t)=>(e.licenses===null||e.licenses===void 0?1/0:e.licenses)-(t.licenses===null||t.licenses===void 0?1/0:t.licenses))[0]}function c(e){return e.existingLicenses.some(t=>t.plugin_id===null||t.plugin_id===void 0||String(t.plugin_id).trim()===String(e.productId).trim())?{ok:!1,reason:`already_licensed`}:{ok:!0}}function l(e){return e.trim().toLowerCase()}async function u(u,d){await e.hydrateFreemiusEnvFromDb();let f=t.resolveFreemiusCheckoutCredentials(u.productId);if(!f.apiKey||!f.secretKey||!f.publicKey)return{error:`The license service is not configured for this product.`,ok:!1,reason:`not_configured`,status:503};let p=new n.Freemius({apiKey:f.apiKey,productId:Number(u.productId),publicKey:f.publicKey,secretKey:f.secretKey}),m=l(u.email),h=p.api.__unstable_ApiClient,g={product_id:u.productId},_=[];try{let e=await p.api.user.retrieveByEmail(m);e?.id!==null&&e?.id!==void 0&&(_=await p.api.user.retrieveLicenses(e.id))}catch(e){return console.error(`[Freemius trial] user lookup failed:`,e),{error:`Freemius could not be reached to verify eligibility.`,ok:!1,reason:`upstream_error`,status:502}}if(!c({existingLicenses:_,productId:u.productId}).ok)return{error:r,ok:!1,reason:`already_licensed`,status:409};let v=null;try{let{data:e,error:t}=await h.GET(`/products/{product_id}/plans/{plan_id}/pricing.json`,{params:{path:{...g,plan_id:u.planId}}});if(t)throw Error(JSON.stringify(t));let n=s(e?.pricing??[]);v=n?.id!==null&&n?.id!==void 0?String(n.id):null}catch(e){return console.error(`[Freemius trial] pricing lookup failed:`,e),{error:`Freemius could not be reached to resolve the plan pricing.`,ok:!1,reason:`upstream_error`,status:502}}if(!v)return{error:i,ok:!1,reason:`no_pricing`,status:502};let y=a(o(d?.now??new Date,u.trialDays)),b=null,x=null;try{let{data:e,error:t}=await h.POST(`/products/{product_id}/plans/{plan_id}/pricing/{pricing_id}/licenses.json`,{body:{expires_at:y,is_block_features:!0,send_email:!1},params:{path:{...g,plan_id:u.planId,pricing_id:v}}});if(t)throw Error(JSON.stringify(t));let n=e?.license;b=n?.secret_key?.trim()||null,x=n?.id!==null&&n?.id!==void 0?String(n.id):null}catch(e){return console.error(`[Freemius trial] license creation failed:`,e),{error:`Freemius could not create the trial license.`,ok:!1,reason:`upstream_error`,status:502}}if(!b)return{error:i,ok:!1,reason:`no_key`,status:502};let S=!1;try{let{error:e}=await h.PUT(`/products/{product_id}/licenses.json`,{body:{email:m,license_key:b,name:u.name.trim()},params:{path:g}});S=!e,e&&console.warn(`[Freemius trial] license assignment refused:`,JSON.stringify(e))}catch(e){console.warn(`[Freemius trial] license assignment failed:`,e)}return{assigned:S,expiresAt:y,licenseId:x,licenseKey:b,ok:!0,planId:u.planId,pricingId:v}}exports.FREEMIUS_TRIAL_ALREADY_USED_MESSAGE=r,exports.FREEMIUS_TRIAL_PROVISION_FAILED_MESSAGE=i,exports.computeTrialExpiry=o,exports.evaluateTrialEligibility=c,exports.formatFreemiusTimestamp=a,exports.pickTrialPricing=s,exports.provisionFreemiusTrialLicense=u;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./ProductScopePicker.cjs.js");let t=require("@nextblock-cms/utils"),n=require("react/jsx-runtime"),r=require("@nextblock-cms/ui");function i(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?``:t.toISOString().slice(0,16)}function a(e,n){let r=(0,t.getCurrencyMinorUnitFactor)(n)===1?0:2;return e.toFixed(r)}function o(e,n){return e?.discount_amount?e.discount_type===`fixed`?a((0,t.minorUnitAmountToMajor)(e.discount_amount,n),n):e.discount_amount:10}function s({action:t,products:a,coupon:s,selectedProductIds:c=[],submitLabel:l,currencyCode:u=`USD`}){return(0,n.jsxs)(`form`,{action:t,children:[(0,n.jsx)(`input`,{type:`hidden`,name:`currency_code`,value:u}),(0,n.jsxs)(r.Card,{children:[(0,n.jsx)(r.CardHeader,{children:(0,n.jsx)(r.CardTitle,{children:s?.id?`Edit Coupon`:`Create Coupon`})}),(0,n.jsxs)(r.CardContent,{className:`space-y-6`,children:[(0,n.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,n.jsxs)(`div`,{className:`space-y-2`,children:[(0,n.jsx)(r.Label,{htmlFor:`coupon-code`,children:`Code`}),(0,n.jsx)(r.Input,{id:`coupon-code`,name:`code`,defaultValue:s?.code||``,className:`uppercase`,required:!0})]}),(0,n.jsxs)(`div`,{className:`space-y-2`,children:[(0,n.jsx)(r.Label,{htmlFor:`coupon-name`,children:`Name`}),(0,n.jsx)(r.Input,{id:`coupon-name`,name:`name`,defaultValue:s?.name||``,required:!0})]})]}),(0,n.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-3`,children:[(0,n.jsxs)(`div`,{className:`space-y-2`,children:[(0,n.jsx)(r.Label,{htmlFor:`provider-scope`,children:`Provider scope`}),(0,n.jsxs)(`select`,{id:`provider-scope`,name:`provider_scope`,defaultValue:s?.provider_scope||`all`,className:`flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm`,children:[(0,n.jsx)(`option`,{value:`all`,children:`Stripe + Freemius`}),(0,n.jsx)(`option`,{value:`stripe`,children:`Stripe only`}),(0,n.jsx)(`option`,{value:`freemius`,children:`Freemius only`})]})]}),(0,n.jsxs)(`div`,{className:`space-y-2`,children:[(0,n.jsx)(r.Label,{htmlFor:`discount-type`,children:`Discount type`}),(0,n.jsxs)(`select`,{id:`discount-type`,name:`discount_type`,defaultValue:s?.discount_type||`percent`,className:`flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm`,children:[(0,n.jsx)(`option`,{value:`percent`,children:`Percent`}),(0,n.jsx)(`option`,{value:`fixed`,children:`Fixed amount`})]})]}),(0,n.jsxs)(`div`,{className:`space-y-2`,children:[(0,n.jsx)(r.Label,{htmlFor:`discount-amount`,children:`Amount`}),(0,n.jsx)(r.Input,{id:`discount-amount`,name:`discount_amount`,type:`number`,min:`0.01`,step:`0.01`,defaultValue:o(s,u),required:!0}),(0,n.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Percent coupons use 1-100. Fixed coupons use regular amounts, for example $10.00.`})]})]}),(0,n.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-3`,children:[(0,n.jsxs)(`div`,{className:`space-y-2`,children:[(0,n.jsx)(r.Label,{htmlFor:`starts-at`,children:`Starts at`}),(0,n.jsx)(r.Input,{id:`starts-at`,name:`starts_at`,type:`datetime-local`,defaultValue:i(s?.starts_at)})]}),(0,n.jsxs)(`div`,{className:`space-y-2`,children:[(0,n.jsx)(r.Label,{htmlFor:`ends-at`,children:`Ends at`}),(0,n.jsx)(r.Input,{id:`ends-at`,name:`ends_at`,type:`datetime-local`,defaultValue:i(s?.ends_at)})]}),(0,n.jsxs)(`div`,{className:`space-y-2`,children:[(0,n.jsx)(r.Label,{htmlFor:`redemption-limit`,children:`Redemption limit`}),(0,n.jsx)(r.Input,{id:`redemption-limit`,name:`redemption_limit`,type:`number`,min:`1`,defaultValue:s?.redemption_limit||``})]})]}),(0,n.jsxs)(`div`,{className:`space-y-2`,children:[(0,n.jsx)(r.Label,{htmlFor:`internal-note`,children:`Internal note`}),(0,n.jsx)(r.Textarea,{id:`internal-note`,name:`internal_note`,defaultValue:s?.internal_note||``,rows:3})]}),(0,n.jsxs)(`div`,{className:`rounded-lg border bg-muted/20 p-4`,children:[(0,n.jsx)(`input`,{type:`hidden`,name:`is_active`,value:`false`}),(0,n.jsxs)(`label`,{htmlFor:`coupon-active`,className:`flex cursor-pointer items-start gap-3`,children:[(0,n.jsx)(`input`,{id:`coupon-active`,name:`is_active`,type:`checkbox`,value:`true`,defaultChecked:s?.is_active??!0,className:`mt-0.5 h-4 w-4 rounded border-slate-300 text-primary focus:ring-primary`}),(0,n.jsxs)(`span`,{children:[(0,n.jsx)(`span`,{className:`block text-sm font-medium`,children:`Active`}),(0,n.jsx)(`span`,{className:`block text-sm text-muted-foreground`,children:`Active coupons can be applied by shoppers during cart and checkout.`})]})]})]}),(0,n.jsxs)(`div`,{className:`space-y-3`,children:[(0,n.jsxs)(`div`,{children:[(0,n.jsx)(`h3`,{className:`font-semibold`,children:`Product scope`}),(0,n.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Leave every product unchecked to apply this coupon to all products in the selected provider scope.`})]}),(0,n.jsx)(e.ProductScopePicker,{products:a,selectedProductIds:c})]}),(0,n.jsx)(`div`,{className:`flex justify-end`,children:(0,n.jsx)(r.Button,{type:`submit`,children:l})})]})]})]})}exports.CouponEditorForm=s;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";const e=require("./CouponEditorForm.cjs.js");let t=require("@nextblock-cms/ui/button"),n=require("react"),r=require("lucide-react"),i=require("react/jsx-runtime"),a=require("@nextblock-cms/ui/dialog");function o({action:o,products:s,currencyCode:c}){let[l,u]=(0,n.useState)(!1);return(0,i.jsxs)(a.Dialog,{open:l,onOpenChange:u,children:[(0,i.jsx)(a.DialogTrigger,{asChild:!0,children:(0,i.jsxs)(t.Button,{type:`button`,className:`gap-2`,children:[(0,i.jsx)(r.Plus,{className:`h-4 w-4`}),`Create Coupon`]})}),(0,i.jsxs)(a.DialogContent,{className:`max-h-[90vh] overflow-y-auto sm:max-w-[92vw] lg:max-w-5xl xl:max-w-6xl`,children:[(0,i.jsx)(a.DialogHeader,{children:(0,i.jsx)(a.DialogTitle,{className:`sr-only`,children:`Create Coupon`})}),(0,i.jsx)(e.CouponEditorForm,{action:o,products:s,submitLabel:`Create Coupon`,currencyCode:c})]})]})}exports.CreateCouponDialog=o;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("../../../../_virtual/_rolldown/runtime.cjs.js"),t=require("./actions.cjs.js"),n=require("./CouponEditorForm.cjs.js"),r=require("./product-options.cjs.js");let i=require("next/link");i=e.__toESM(i,1);let a=require("react/jsx-runtime"),o=require("@nextblock-cms/db/server"),s=require("next/navigation"),c=require("@nextblock-cms/ui");async function l({params:e}){let{id:l}=await e,u=(0,o.getServiceRoleSupabaseClient)(),[{data:d},{data:f},{data:p},{data:m}]=await Promise.all([u.from(`coupons`).select(`*`).eq(`id`,l).single(),u.from(`products`).select(`id, title, sku, payment_provider, freemius_product_id, language:languages(code, name), product_media(sort_order, media(file_path, object_key))`).order(`title`,{ascending:!0}),u.from(`coupon_products`).select(`product_id`).eq(`coupon_id`,l),u.from(`currencies`).select(`code, is_default`).eq(`is_active`,!0)]);d||(0,s.notFound)();let h=(p||[]).map(e=>e.product_id),g=m?.find(e=>e.is_default)?.code||m?.[0]?.code||`USD`;return(0,a.jsxs)(`div`,{className:`mx-auto w-full max-w-5xl space-y-6 px-6 py-8`,children:[(0,a.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,a.jsxs)(`div`,{children:[(0,a.jsx)(`h1`,{className:`text-3xl font-bold tracking-tight`,children:`Edit Coupon`}),(0,a.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Changes are resynced to Freemius after saving.`})]}),(0,a.jsx)(c.Button,{asChild:!0,variant:`outline`,children:(0,a.jsx)(i.default,{href:`/cms/coupons`,children:`Back to coupons`})})]}),(0,a.jsx)(n.CouponEditorForm,{action:t.updateCouponAction.bind(null,l),products:r.normalizeCouponProductOptions(f),coupon:d,selectedProductIds:h,submitLabel:`Save Coupon`,currencyCode:g})]})}exports.EditCouponPage=l;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use server";const e=require("../../../coupons.cjs.js"),t=require("../../../freemius-coupons.cjs.js");let n=require("@nextblock-cms/utils"),r=require("@nextblock-cms/db/server"),i=require("next/navigation"),a=require("next/cache");async function o(){let e=(0,r.createClient)(),{data:{user:t}}=await e.auth.getUser();if(!t)throw Error(`Unauthorized`);let{data:n}=await e.from(`profiles`).select(`role`).eq(`id`,t.id).single();if(n?.role!==`ADMIN`)throw Error(`Forbidden`);return(0,r.getServiceRoleSupabaseClient)()}function s(e){return(typeof e==`string`?e.trim():``)||null}function c(e){let t=s(e);if(!t)return null;let n=new Date(t);return Number.isNaN(n.getTime())?null:n.toISOString()}function l(e){let t=s(e.value),r=t?Number.parseFloat(t):NaN;if(!Number.isFinite(r)||r<=0)throw Error(`Discount amount must be greater than zero.`);return e.discountType===`fixed`?(0,n.majorUnitAmountToMinor)(r,e.currencyCode):Math.round(r)}function u(e,t){return e.getAll(t).some(e=>e===`true`)}function d(t){let r=e.normalizeCouponCode(s(t.get(`code`))),i=s(t.get(`name`)),a=s(t.get(`provider_scope`))||`all`,o=s(t.get(`discount_type`))||`percent`,d=(0,n.normalizeCurrencyCode)(s(t.get(`currency_code`))),f=l({value:t.get(`discount_amount`),discountType:o,currencyCode:d}),p=s(t.get(`redemption_limit`));if(!r)throw Error(`Coupon code is required.`);if(!i)throw Error(`Coupon name is required.`);if(o===`percent`&&f>100)throw Error(`Percent discounts cannot exceed 100.`);return{coupon:{code:r,name:i,internal_note:s(t.get(`internal_note`)),provider_scope:a,discount_type:o,discount_amount:f,is_active:u(t,`is_active`),starts_at:c(t.get(`starts_at`)),ends_at:c(t.get(`ends_at`)),redemption_limit:p?Number.parseInt(p,10):null,freemius_sync_status:a===`stripe`?`not_required`:`pending`,freemius_sync_error:null},productIds:t.getAll(`product_ids`).map(e=>typeof e==`string`?e.trim():``).filter(Boolean)}}async function f(e){if(await e.client.from(`coupon_products`).delete().eq(`coupon_id`,e.couponId),e.productIds.length===0)return;let{error:t}=await e.client.from(`coupon_products`).insert(e.productIds.map(t=>({coupon_id:e.couponId,product_id:t})));if(t)throw Error(t.message)}async function p(e){let n=await o(),r=d(e),{data:s,error:c}=await n.from(`coupons`).insert(r.coupon).select(`id`).single();if(c||!s)throw Error(c?.message||`Failed to create coupon.`);await f({client:n,couponId:s.id,productIds:r.productIds}),await t.syncCouponToFreemius({couponId:s.id,client:n}),(0,a.revalidatePath)(`/cms/coupons`),(0,i.redirect)(`/cms/coupons`)}async function m(e,n){let r=await o(),s=d(n),{error:c}=await r.from(`coupons`).update(s.coupon).eq(`id`,e);if(c)throw Error(c.message);await f({client:r,couponId:e,productIds:s.productIds}),s.coupon.provider_scope===`stripe`?await t.deleteCouponFromFreemius({couponId:e,client:r}):await t.syncCouponToFreemius({couponId:e,client:r}),(0,a.revalidatePath)(`/cms/coupons`),(0,a.revalidatePath)(`/cms/coupons/${e}/edit`),(0,i.redirect)(`/cms/coupons`)}async function h(e,n){let r=await o(),{error:i}=await r.from(`coupons`).update({is_active:n,freemius_sync_status:`pending`,updated_at:new Date().toISOString()}).eq(`id`,e);if(i)throw Error(i.message);await t.syncCouponToFreemius({couponId:e,client:r}),(0,a.revalidatePath)(`/cms/coupons`)}async function g(e){let n=await o();await t.syncCouponToFreemius({couponId:e,client:n}),(0,a.revalidatePath)(`/cms/coupons`),(0,a.revalidatePath)(`/cms/coupons/${e}/edit`)}async function _(e){let n=await o();await t.deleteCouponFromFreemius({couponId:e,client:n});let{error:r}=await n.from(`coupons`).delete().eq(`id`,e);if(r)throw Error(r.message);(0,a.revalidatePath)(`/cms/coupons`)}exports.createCouponAction=p,exports.deleteCouponAction=_,exports.syncCouponAction=g,exports.toggleCouponActiveAction=h,exports.updateCouponAction=m;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./CouponsPage.cjs.js"),t=require("./EditCouponPage.cjs.js");exports.CouponsPage=e.CouponsPage,exports.EditCouponPage=t.EditCouponPage;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";const e=require("../../../../_virtual/_rolldown/runtime.cjs.js"),t=require("./export-actions.cjs.js"),n=require("../../../export-helpers.cjs.js");let r=require("react");r=e.__toESM(r,1);let i=require("lucide-react"),a=require("react/jsx-runtime"),o=require("sonner"),s=require("@nextblock-cms/ui");function c(){let[e,c]=(0,r.useState)(!1),[l,u]=(0,r.useState)(!1),[d,f]=(0,r.useState)(``),[p,m]=(0,r.useState)(``),[h,g]=(0,r.useState)(`general_ledger`);return(0,a.jsxs)(s.Dialog,{open:e,onOpenChange:c,children:[(0,a.jsx)(s.DialogTrigger,{asChild:!0,children:(0,a.jsxs)(s.Button,{variant:`outline`,className:`flex items-center gap-2`,children:[(0,a.jsx)(i.Download,{className:`h-4 w-4`}),`Export Reports`]})}),(0,a.jsxs)(s.DialogContent,{className:`sm:max-w-[425px]`,children:[(0,a.jsxs)(s.DialogHeader,{children:[(0,a.jsxs)(s.DialogTitle,{className:`flex items-center gap-2`,children:[(0,a.jsx)(i.FileDown,{className:`h-5 w-5 text-blue-600`}),`Accounting Reports`]}),(0,a.jsx)(s.DialogDescription,{children:`Generate and download accountant-friendly order reports.`})]}),(0,a.jsxs)(`div`,{className:`grid gap-6 py-4`,children:[(0,a.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[(0,a.jsxs)(`div`,{className:`grid gap-2`,children:[(0,a.jsx)(s.Label,{htmlFor:`start-date`,className:`text-xs font-semibold uppercase text-gray-500 tracking-wider`,children:`Start Date`}),(0,a.jsxs)(`div`,{className:`relative`,children:[(0,a.jsx)(s.Input,{id:`start-date`,type:`date`,value:d,onChange:e=>f(e.target.value),className:`pl-8`}),(0,a.jsx)(i.Calendar,{className:`absolute left-2.5 top-2.5 h-4 w-4 text-gray-400`})]})]}),(0,a.jsxs)(`div`,{className:`grid gap-2`,children:[(0,a.jsx)(s.Label,{htmlFor:`end-date`,className:`text-xs font-semibold uppercase text-gray-500 tracking-wider`,children:`End Date`}),(0,a.jsxs)(`div`,{className:`relative`,children:[(0,a.jsx)(s.Input,{id:`end-date`,type:`date`,value:p,onChange:e=>m(e.target.value),className:`pl-8`}),(0,a.jsx)(i.Calendar,{className:`absolute left-2.5 top-2.5 h-4 w-4 text-gray-400`})]})]})]}),(0,a.jsxs)(`div`,{className:`grid gap-2`,children:[(0,a.jsx)(s.Label,{htmlFor:`report-type`,className:`text-xs font-semibold uppercase text-gray-500 tracking-wider`,children:`Report Type`}),(0,a.jsxs)(s.Select,{value:h,onValueChange:e=>g(e),children:[(0,a.jsx)(s.SelectTrigger,{id:`report-type`,className:`w-full`,children:(0,a.jsx)(s.SelectValue,{placeholder:`Select report type`})}),(0,a.jsxs)(s.SelectContent,{children:[(0,a.jsx)(s.SelectItem,{value:`general_ledger`,children:`General Sales Ledger`}),(0,a.jsx)(s.SelectItem,{value:`tax_liability`,children:`Tax Liability Summary`}),(0,a.jsx)(s.SelectItem,{value:`currency_summary`,children:`Multi-Currency Revenue Summary`})]})]})]})]}),(0,a.jsx)(s.DialogFooter,{children:(0,a.jsx)(s.Button,{onClick:async()=>{if(!d||!p){o.toast.error(`Please select both start and end dates`);return}u(!0);try{o.toast.info(`Generating report...`);let e=await t.fetchOrderReportData(d,p);if(!e||e.length===0){o.toast.error(`No orders found for the selected date range`),u(!1);return}let r=[],i=`report_${h}_${d}_to_${p}`;switch(h){case`general_ledger`:r=n.mapGeneralSalesLedger(e);break;case`tax_liability`:r=n.mapTaxLiabilitySummary(e);break;case`currency_summary`:r=n.mapMultiCurrencyRevenue(e)}n.generateCSV(r,`${i}.csv`),o.toast.success(`Download complete!`),c(!1)}catch(e){console.error(`Export error:`,e),o.toast.error(`Failed to generate report`)}finally{u(!1)}},disabled:l,className:`w-full bg-blue-600 hover:bg-blue-700 text-white`,children:l?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(i.Loader2,{className:`mr-2 h-4 w-4 animate-spin`}),`Generating...`]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(i.Download,{className:`mr-2 h-4 w-4`}),`Download Report`]})})})]})]})}exports.ExportReportsDialog=c;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("../../../../_virtual/_rolldown/runtime.cjs.js"),t=require("../../../invoice-ui.cjs.js"),n=require("../../../components/InvoiceViewerShell.cjs.js"),r=require("../../../invoice-server.cjs.js"),i=require("./actions.cjs.js"),a=require("./OrderPrintButton.cjs.js"),o=require("./OrderStatusForm.cjs.js");let s=require("next/link");s=e.__toESM(s,1);let c=require("react/jsx-runtime"),l=require("next/navigation");var u=(e,t=`usd`)=>new Intl.NumberFormat(`en-US`,{style:`currency`,currency:t}).format(e/100);async function d({params:e}){let{id:d}=await e,[m,h]=await Promise.all([i.getOrderDetails(d),r.getInvoicePresentationData(d).catch(()=>null)]);m||(0,l.notFound)();let g=h?.order.customer_details??m.customer_details,_=t.buildInvoiceDocumentLabels(e=>e);return(0,c.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl px-4 py-10 md:px-6`,children:[(0,c.jsxs)(`div`,{className:`flex flex-col gap-4 border-b pb-6 md:flex-row md:items-start md:justify-between`,children:[(0,c.jsxs)(`div`,{children:[(0,c.jsxs)(`div`,{className:`mb-2 flex items-center gap-2 text-sm text-gray-500`,children:[(0,c.jsx)(s.default,{href:`/cms/orders`,className:`hover:underline`,children:`Orders`}),(0,c.jsx)(`span`,{children:`/`}),(0,c.jsx)(`span`,{className:`font-mono`,children:m.id})]}),(0,c.jsxs)(`h1`,{className:`flex flex-wrap items-center gap-3 text-3xl font-bold tracking-tight`,children:[`Order`,(0,c.jsx)(p,{status:m.status,size:`lg`})]}),(0,c.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:`Review the finalized invoice, customer details, and payment metadata in one place.`})]}),(0,c.jsx)(`div`,{className:`w-full max-w-md`,children:(0,c.jsx)(o.OrderStatusForm,{orderId:d,currentStatus:m.status})})]}),(0,c.jsxs)(`div`,{className:`mt-6 grid gap-4 md:grid-cols-2`,children:[(0,c.jsxs)(`div`,{className:`rounded-lg border bg-white p-4 dark:border-slate-800 dark:bg-slate-900`,children:[(0,c.jsx)(`h3`,{className:`mb-3 text-[11px] font-semibold uppercase tracking-[0.18em] text-slate-500`,children:`Customer`}),(0,c.jsxs)(`div`,{className:`space-y-2 text-sm`,children:[g?.name?(0,c.jsx)(`p`,{className:`font-semibold text-gray-900 dark:text-white`,children:g.name}):null,g?.email?(0,c.jsx)(`p`,{className:`text-gray-600 dark:text-gray-400`,children:g.email}):null,g?.phone?(0,c.jsx)(`p`,{className:`text-gray-600 dark:text-gray-400`,children:g.phone}):null,!g?.name&&!g?.email&&!g?.phone?(0,c.jsx)(`p`,{className:`italic text-gray-400`,children:`No contact info captured.`}):null,m.user_id?(0,c.jsxs)(`p`,{className:`pt-1 font-mono text-[10px] uppercase tracking-wider text-gray-400`,children:[`User ID: `,m.user_id.slice(0,13),`...`]}):null]})]}),(0,c.jsxs)(`div`,{className:`rounded-lg border bg-white p-4 dark:border-slate-800 dark:bg-slate-900`,children:[(0,c.jsx)(`h3`,{className:`mb-3 text-[11px] font-semibold uppercase tracking-[0.18em] text-slate-500`,children:`Payment Details`}),(0,c.jsxs)(`div`,{className:`space-y-2 text-sm`,children:[(0,c.jsx)(f,{label:`Provider`,value:m.provider||`stripe`,capitalize:!0}),(0,c.jsx)(f,{label:`Currency`,value:(m.currency||`usd`).toUpperCase()}),(0,c.jsx)(f,{label:`Created`,value:new Date(m.created_at||``).toLocaleDateString()}),(0,c.jsx)(f,{label:`Invoice #`,value:h?.order.invoice_number||`Pending assignment`}),(0,c.jsx)(f,{label:`Paid on`,value:h?.order.paid_at?new Date(h.order.paid_at).toLocaleString():`Pending payment`}),(0,c.jsx)(f,{label:`Total`,value:typeof m.total==`number`?u(m.total,m.currency||`usd`):`--`}),m.discount_total?(0,c.jsx)(f,{label:`Discount`,value:`${m.coupon_code?`${m.coupon_code} `:``}-${u(m.discount_total,m.currency||`usd`)}`}):null,m.stripe_session_id?(0,c.jsxs)(`div`,{className:`mt-3 border-t pt-3 dark:border-slate-800`,children:[(0,c.jsx)(`p`,{className:`mb-1 text-xs text-gray-500`,children:`Session ID`}),(0,c.jsx)(`p`,{className:`break-all rounded bg-gray-50 p-1 font-mono text-xs dark:bg-slate-800`,children:m.stripe_session_id})]}):null]})]})]}),(0,c.jsx)(`div`,{className:`mt-6 flex justify-end print:hidden`,children:(0,c.jsx)(a.OrderPrintButton,{disabled:!h})}),(0,c.jsx)(n.InvoiceViewerShell,{invoice:h,labels:_,locale:`en-US`,title:h?.order.invoice_number||`Order invoice`,description:`Open the printable invoice below and update the order status whenever you need to.`,printLabel:`Print / Save as PDF`,action:{href:`/cms/orders`,label:`Back to orders`,variant:`outline`},emptyMessage:`The printable invoice will appear here after the order payment metadata is synced.`,className:`max-w-none px-0 py-6 md:px-0`,showHeader:!1})]})}function f({label:e,value:t,capitalize:n=!1}){return(0,c.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,c.jsx)(`span`,{className:`text-gray-500`,children:e}),(0,c.jsx)(`span`,{className:n?`capitalize font-medium`:`font-medium`,children:t})]})}function p({status:e,size:t=`md`}){let n=`bg-gray-100 text-gray-700 dark:bg-slate-800 dark:text-gray-300`;return e===`paid`&&(n=`bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400`),e===`trial`&&(n=`bg-cyan-100 text-cyan-700 dark:bg-cyan-900/30 dark:text-cyan-300`),e===`pending`&&(n=`bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400`),e===`shipped`&&(n=`bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400`),e===`cancelled`&&(n=`bg-slate-200 text-slate-700 dark:bg-slate-800 dark:text-slate-300`),e===`refunded`&&(n=`bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-300`),e===`failed`&&(n=`bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400`),(0,c.jsx)(`span`,{className:`${t===`lg`?`px-3 py-1 text-sm`:`px-2 py-0.5 text-xs`} rounded-full font-medium capitalize ${n}`,children:e})}exports.OrderDetailPage=d;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";const e=require("./server-actions.cjs.js");let t=require("react"),n=require("react/jsx-runtime"),r=require("next/navigation"),i=require("@nextblock-cms/ui");var a=[{value:`pending`,label:`Pending`},{value:`trial`,label:`Trial`},{value:`paid`,label:`Paid`},{value:`shipped`,label:`Shipped`},{value:`cancelled`,label:`Cancelled`},{value:`refunded`,label:`Refunded`}];function o({orderId:o,currentStatus:s}){let c=(0,r.useRouter)(),[l,u]=(0,t.useState)(a.some(e=>e.value===s)?s:`pending`),[d,f]=(0,t.useState)(null),[p,m]=(0,t.useTransition)(),h=(0,t.useMemo)(()=>l!==s,[s,l]);return(0,n.jsxs)(`div`,{className:`rounded-lg border bg-white p-4 dark:border-slate-800 dark:bg-slate-900`,children:[(0,n.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-end`,children:[(0,n.jsxs)(`div`,{className:`min-w-[220px] flex-1 space-y-2`,children:[(0,n.jsx)(`p`,{className:`text-[11px] font-semibold uppercase tracking-[0.18em] text-slate-500`,children:`Order Status`}),(0,n.jsxs)(i.Select,{value:l,onValueChange:e=>{u(e),f(null)},children:[(0,n.jsx)(i.SelectTrigger,{children:(0,n.jsx)(i.SelectValue,{placeholder:`Select status`})}),(0,n.jsx)(i.SelectContent,{children:a.map(e=>(0,n.jsx)(i.SelectItem,{value:e.value,children:e.label},e.value))})]})]}),(0,n.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,n.jsx)(i.Button,{type:`button`,onClick:()=>{h&&(f(null),m(async()=>{try{let t=await e.updateOrderStatus(o,l);if(!t.success){f(t.error||`Failed to update order status.`);return}c.refresh()}catch(e){console.error(e),f(`Unexpected error while saving the order status.`)}}))},disabled:p||!h,children:p?`Saving...`:`Save`})})]}),d?(0,n.jsx)(`p`,{className:`mt-2 text-xs text-red-600 dark:text-red-400`,children:d}):h?null:(0,n.jsx)(`p`,{className:`mt-2 text-xs text-slate-500`,children:`Status is already up to date.`})]})}exports.OrderStatusForm=o;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("../../../../_virtual/_rolldown/runtime.cjs.js"),t=require("./actions.cjs.js"),n=require("./ExportReportsDialog.cjs.js");let r=require("next/link");r=e.__toESM(r,1);let i=require("react/jsx-runtime");var a=(e,t=`usd`)=>new Intl.NumberFormat(`en-US`,{style:`currency`,currency:t}).format(e/100);async function o({searchParams:e}){let o=await e,c=Number(o.page)||1,l=o.status||`all`,{data:u,totalPages:d}=await t.getOrders(c,l);return(0,i.jsxs)(`div`,{className:`p-6 space-y-6`,children:[(0,i.jsxs)(`div`,{className:`flex justify-between items-center`,children:[(0,i.jsx)(`h1`,{className:`text-2xl font-bold tracking-tight`,children:`Orders`}),(0,i.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,i.jsx)(n.ExportReportsDialog,{}),(0,i.jsx)(r.default,{href:`/cms/orders?page=${c}&status=${l}`,className:`px-3 py-2 text-sm font-medium border rounded hover:bg-gray-50 dark:hover:bg-slate-800`,children:`Refresh`})]})]}),(0,i.jsx)(`div`,{className:`flex gap-2 border-b pb-4`,children:[`all`,`paid`,`trial`,`pending`,`failed`].map(e=>(0,i.jsx)(r.default,{href:`/cms/orders?page=1&status=${e}`,className:`px-3 py-1 rounded-full text-sm font-medium capitalize ${l===e?`bg-black text-white dark:bg-white dark:text-black`:`bg-gray-100 text-gray-600 hover:bg-gray-200 dark:bg-slate-800 dark:text-gray-300 dark:hover:bg-slate-700`}`,children:e},e))}),(0,i.jsx)(`div`,{className:`border rounded-lg overflow-hidden dark:border-slate-800`,children:(0,i.jsxs)(`table`,{className:`w-full text-sm text-left align-middle`,children:[(0,i.jsx)(`thead`,{className:`bg-gray-50 text-gray-500 font-medium border-b dark:bg-slate-900 dark:text-slate-400 dark:border-slate-800`,children:(0,i.jsxs)(`tr`,{children:[(0,i.jsx)(`th`,{className:`px-4 py-3`,children:`ID`}),(0,i.jsx)(`th`,{className:`px-4 py-3`,children:`Customer`}),(0,i.jsx)(`th`,{className:`px-4 py-3`,children:`Status`}),(0,i.jsx)(`th`,{className:`px-4 py-3`,children:`Provider`}),(0,i.jsx)(`th`,{className:`px-4 py-3 text-right`,children:`Amount`}),(0,i.jsx)(`th`,{className:`px-4 py-3 text-right`,children:`Date`}),(0,i.jsx)(`th`,{className:`px-4 py-3 text-right`,children:`Actions`})]})}),(0,i.jsx)(`tbody`,{className:`divide-y dark:divide-slate-800`,children:u.length===0?(0,i.jsx)(`tr`,{children:(0,i.jsx)(`td`,{colSpan:7,className:`px-4 py-8 text-center text-gray-500`,children:`No orders found.`})}):u.map(e=>{let t=e.customer_details,n=t?.name||t?.email||e.customer?.full_name||`Guest Customer`;return(0,i.jsxs)(`tr`,{className:`hover:bg-gray-50 dark:hover:bg-slate-800/50`,children:[(0,i.jsxs)(`td`,{className:`px-4 py-3 font-mono text-gray-500`,children:[e.id.slice(0,8),`...`]}),(0,i.jsx)(`td`,{className:`px-4 py-3 font-medium`,children:n}),(0,i.jsx)(`td`,{className:`px-4 py-3`,children:(0,i.jsx)(s,{status:e.status})}),(0,i.jsx)(`td`,{className:`px-4 py-3 capitalize text-gray-600 dark:text-gray-400`,children:e.provider===`freemius`?`Freemius`:`Stripe`}),(0,i.jsx)(`td`,{className:`px-4 py-3 text-right`,children:(0,i.jsxs)(`div`,{className:`flex flex-col items-end`,children:[(0,i.jsx)(`span`,{children:a(e.total,e.currency||`usd`)}),e.discount_total?(0,i.jsxs)(`span`,{className:`text-[10px] text-emerald-600`,children:[e.coupon_code,` -`,a(e.discount_total,e.currency||`usd`)]}):null]})}),(0,i.jsx)(`td`,{className:`px-4 py-3 text-right text-gray-500 whitespace-nowrap`,children:new Date(e.created_at||``).toLocaleDateString()}),(0,i.jsx)(`td`,{className:`px-4 py-3 text-right`,children:(0,i.jsx)(r.default,{href:`/cms/orders/${e.id}`,className:`text-blue-600 hover:underline dark:text-blue-400`,children:`View`})})]},e.id)})})]})}),(0,i.jsxs)(`div`,{className:`flex justify-between items-center pt-4`,children:[(0,i.jsxs)(`div`,{className:`text-sm text-gray-500`,children:[`Page `,c,` of `,d]}),(0,i.jsxs)(`div`,{className:`flex gap-2`,children:[(0,i.jsx)(r.default,{href:`/cms/orders?page=${Math.max(1,c-1)}&status=${l}`,className:`px-3 py-1 border rounded text-sm ${c<=1?`pointer-events-none opacity-50`:`hover:bg-gray-50 dark:hover:bg-slate-800`}`,children:`Previous`}),(0,i.jsx)(r.default,{href:`/cms/orders?page=${Math.min(d,c+1)}&status=${l}`,className:`px-3 py-1 border rounded text-sm ${c>=d?`pointer-events-none opacity-50`:`hover:bg-gray-50 dark:hover:bg-slate-800`}`,children:`Next`})]})]})]})}function s({status:e}){let t=`bg-gray-100 text-gray-700 dark:bg-slate-800 dark:text-gray-300`;return e===`paid`&&(t=`bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400`),e===`trial`&&(t=`bg-cyan-100 text-cyan-700 dark:bg-cyan-900/30 dark:text-cyan-300`),e===`pending`&&(t=`bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400`),e===`failed`&&(t=`bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400`),(0,i.jsx)(`span`,{className:`px-2 py-0.5 rounded-full text-xs font-medium capitalize ${t}`,children:e})}exports.OrdersPage=o;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./actions.cjs.js"),t=require("./export-actions.cjs.js"),n=require("./ExportReportsDialog.cjs.js"),r=require("./OrdersPage.cjs.js"),i=require("./OrderDetailPage.cjs.js");exports.ExportReportsDialog=n.ExportReportsDialog,exports.OrderDetailPage=i.OrderDetailPage,exports.OrdersPage=r.OrdersPage,exports.fetchOrderReportData=t.fetchOrderReportData,exports.getOrderDetails=e.getOrderDetails,exports.getOrders=e.getOrders;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use server";const e=require("../../../order-inventory.cjs.js"),t=require("../../../invoice-server.cjs.js");let n=require("@nextblock-cms/db/server"),r=require("@supabase/supabase-js");var i=[`pending`,`trial`,`paid`,`shipped`,`cancelled`,`refunded`];async function a(){let e=(0,n.createClient)(),{data:{user:t},error:r}=await e.auth.getUser();if(r||!t)return{error:`Unauthorized`};let{data:i,error:a}=await e.from(`profiles`).select(`role`).eq(`id`,t.id).single();return a||!i||![`ADMIN`,`WRITER`].includes(i.role)?{error:`Forbidden`}:{supabase:e,user:t}}function o(){let e=process.env.SUPABASE_SERVICE_ROLE_KEY||process.env.SUPABASE_SECRET_KEY,t=process.env.NEXT_PUBLIC_SUPABASE_URL||process.env.SUPABASE_URL;if(!e||!t)throw Error(`Server configuration error`);return(0,r.createClient)(t,e,{auth:{autoRefreshToken:!1,persistSession:!1}})}async function s(n,r){let s=await a();if(`error`in s)return{success:!1,error:s.error};if(!i.includes(r))return{success:!1,error:`Invalid order status`};let c;try{c=o()}catch(e){return{success:!1,error:e instanceof Error?e.message:`Server configuration error`}}let{data:l,error:u}=await c.from(`orders`).update({status:r}).eq(`id`,n).select();return u?(console.error(`Order status update error:`,u),{success:!1,error:u.message}):!l||l.length===0?{success:!1,error:`Order not found or update failed.`}:(r===`paid`&&(await t.assignInvoiceMetadata({orderId:n,client:c}),await e.applyOrderInventoryDeduction(c,n)),{success:!0})}exports.updateOrderStatus=s;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("../../../payment-config.cjs.js"),t=require("./queries.cjs.js"),n=require("./actions.cjs.js"),r=require("./PaymentsClient.cjs.js");let i=require("react/jsx-runtime");async function a(){let[a,o,s]=await Promise.all([t.getEnabledPaymentProviders(),t.getStoreConfigStatus(),e.getPaymentCredentialsView()]);async function c(e){"use server";let t={stripe:e.get(`stripe_enabled`)===`true`&&o.stripe.hasKeys,freemius:e.get(`freemius_enabled`)===`true`&&o.freemius.hasKeys};await n.updatePaymentSettings(t)}return(0,i.jsx)(r.PaymentsClient,{initialEnabledProviders:a,configStatus:o,credentials:s,saveAction:c,saveCredentialsAction:n.savePaymentProviderCredentials})}exports.PaymentsPage=a;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use server";const e=require("../../../payment-config.cjs.js");let t=require("@nextblock-cms/db/server"),n=require("next/cache");async function r(){let e=await(0,t.createClient)(),{data:{user:n}}=await e.auth.getUser();if(!n)throw Error(`Unauthorized`);let{data:r}=await e.from(`profiles`).select(`role`).eq(`id`,n.id).single();if(!r||r.role!==`ADMIN`)throw Error(`Forbidden`)}async function i(t){await r(),await e.savePaymentCredentials({stripe:{publishableKey:String(t.get(`stripe_publishableKey`)??``),secretKey:String(t.get(`stripe_secretKey`)??``),webhookSecret:String(t.get(`stripe_webhookSecret`)??``)},freemius:{developerId:String(t.get(`freemius_developerId`)??``),publicKey:String(t.get(`freemius_publicKey`)??``),productId:String(t.get(`freemius_productId`)??``),secretKey:String(t.get(`freemius_secretKey`)??``),apiKey:String(t.get(`freemius_apiKey`)??``)}}),(0,n.revalidatePath)(`/cms/payments`),(0,n.revalidatePath)(`/cms/dashboard`),(0,n.revalidatePath)(`/`,`layout`)}async function a(e){let r=await(0,t.createClient)(),{data:{user:i}}=await r.auth.getUser();if(!i)throw Error(`Unauthorized`);let{data:a}=await r.from(`profiles`).select(`role`).eq(`id`,i.id).single();if(!a||a.role!==`ADMIN`)throw Error(`Forbidden`);let{error:o}=await r.from(`site_settings`).upsert({key:`enabled_payment_providers`,value:e});if(o)throw console.error(`Error updating payment providers:`,o),Error(`Failed to update settings`);return(0,n.revalidatePath)(`/cms/payments`),(0,n.revalidatePath)(`/cms/taxes`),(0,n.revalidatePath)(`/`,`layout`),{success:!0}}exports.savePaymentProviderCredentials=i,exports.updatePaymentSettings=a;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./actions.cjs.js"),t=require("./PaymentsPage.cjs.js");exports.PaymentsPage=t.PaymentsPage,exports.savePaymentProviderCredentials=e.savePaymentProviderCredentials,exports.updatePaymentSettings=e.updatePaymentSettings;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("../../../types.cjs.js"),t=require("../../../payment-config.cjs.js");let n=require("react"),r=require("@nextblock-cms/db/server");async function i(){return t.getPaymentConfigStatus()}async function a(){let{data:t,error:n}=await(0,r.createClient)().from(`site_settings`).select(`value`).eq(`key`,`enabled_payment_providers`).maybeSingle();return n||!t?{...e.DEFAULT_ENABLED_PAYMENT_PROVIDERS}:e.normalizeEnabledPaymentProviders(t.value)}async function o(){let e=await a();return e.stripe?`stripe`:e.freemius?`freemius`:`stripe`}var s={stripe:`Stripe`,freemius:`Freemius`};function c(e,t,n){let r=t[e],{hasKeys:i,missing:a}=n[e];return{provider:e,label:s[e],enabled:r,hasKeys:i,ready:r&&i,missing:i&&!r?[`Not enabled in CMS → Payments`]:a}}var l=(0,n.cache)(async()=>{let[e,t]=await Promise.all([a(),i()]);return{stripe:c(`stripe`,e,t),freemius:c(`freemius`,e,t)}});async function u(e){return(await l())[e]}async function d(t){return u(e.derivePaymentProviderFromProductType(t))}exports.getEnabledPaymentProviders=a,exports.getPaymentSettings=o,exports.getProviderReadiness=u,exports.getReadinessForProductType=d,exports.getStoreConfigStatus=i,exports.getStoreReadiness=l;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("../../../../_virtual/_rolldown/runtime.cjs.js"),t=require("./actions.cjs.js"),n=require("./server-actions.cjs.js"),r=require("./components/ProductsBulkTable.cjs.js"),i=require("./components/SyncFreemiusButton.cjs.js");let a=require("next/link");a=e.__toESM(a,1);let o=require("react/jsx-runtime"),s=require("@nextblock-cms/db/server"),c=require("@nextblock-cms/ui"),l=require("@nextblock-cms/utils/seo");async function u({searchParams:e,languageFilterNode:u,transferControlsNode:d}){let f=(0,s.getServiceRoleSupabaseClient)(),[p,{data:m}]=await Promise.all([(0,s.getActiveLanguagesServerSide)(),f.from(`currencies`).select(`code, is_default`).eq(`is_active`,!0).order(`is_default`,{ascending:!1}).order(`code`,{ascending:!0})]),h=e?.lang?parseInt(e.lang,10):void 0,{data:g}=await t.getProducts({languageId:h}),_=g||[],v=_.map(e=>e.id),{data:y}=v.length>0?await f.from(`blocks`).select(`id, product_id, block_type, content, order`).in(`product_id`,v).order(`order`,{ascending:!0}):{data:[]},b=new Map;for(let e of y||[]){if(!e.product_id)continue;let t=b.get(e.product_id)||[];t.push(e),b.set(e.product_id,t)}let x=_.map(e=>{let t=b.get(e.id)||[],n=(0,l.buildPageSeoDocument)(t,{documentTitle:e.title,documentType:`product`}),r=(0,l.auditSeo)({document:n,metaTitle:e.meta_title??void 0,metaDescription:e.meta_description??void 0,scope:`page`});return{...e,seo_score:r.score}}),S=Object.fromEntries(p.map(e=>[String(e.id),e.code.toUpperCase()])),C=m?.find(e=>e.is_default)?.code||m?.[0]?.code||`USD`;return(0,o.jsxs)(`div`,{className:`p-8 space-y-6`,children:[(0,o.jsxs)(`div`,{className:`flex justify-between items-center`,children:[(0,o.jsx)(`h1`,{className:`text-3xl font-bold`,children:`Products`}),(0,o.jsxs)(`div`,{className:`flex flex-wrap items-center gap-4`,children:[(0,o.jsx)(`div`,{className:`h-10 w-[1px] bg-slate-200 dark:bg-slate-800 mx-2 hidden sm:block`}),d,u,(0,o.jsx)(i.SyncFreemiusButton,{title:`Sync Full Store`}),(0,o.jsx)(a.default,{href:`/cms/products/new`,children:(0,o.jsx)(c.Button,{children:`New Product`})})]})]}),(0,o.jsx)(r.ProductsBulkTable,{products:x,languageLabels:S,defaultCurrencyCode:C,deleteProductAction:n.deleteProductAction,bulkDeleteProductsAction:n.bulkDeleteProductsAction,bulkDraftProductsAction:n.bulkDraftProductsAction})]})}exports.ProductsPage=u;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("../../../../../../_virtual/_rolldown/runtime.cjs.js"),t=require("../../../../../currency.cjs.js"),n=require("../../../../../variation-utils.cjs.js"),r=require("../../actions.cjs.js"),i=require("../../server-actions.cjs.js"),a=require("../../components/ProductForm.cjs.js"),o=require("../../../payments/queries.cjs.js"),s=require("../../components/DeleteProductButton.cjs.js"),c=require("../../components/FreemiusPricingDashboard.cjs.js");let l=require("next/link");l=e.__toESM(l,1);let u=require("lucide-react"),d=require("@nextblock-cms/utils"),f=require("react/jsx-runtime"),p=require("@nextblock-cms/db/server"),m=require("next/navigation"),h=require("@nextblock-cms/ui");async function g({params:e,mediaPickerNode:g,availableLanguagesProp:_,languageSwitcherNode:v,copyContentNode:y,translationCtaNode:b}){let{id:x}=await e,S=await r.getProduct(x);S||(0,m.notFound)();let C=S.product_type===`digital`||S.payment_provider===`freemius`,[w,T,E,D,O]=await Promise.all([o.getEnabledPaymentProviders(),o.getStoreConfigStatus(),C&&S.freemius_product_id?r.getFreemiusPricingByProductId(S.id):Promise.resolve(null),r.getGlobalProductAttributes(),(0,p.getServiceRoleSupabaseClient)().from(`currencies`).select(`code, symbol, exchange_rate, is_default, is_active, auto_sync_product_prices, auto_update_exchange_rate, exchange_rate_source, exchange_rate_updated_at, rounding_mode, rounding_increment, rounding_charm_amount`).eq(`is_active`,!0).order(`code`,{ascending:!0}).then(e=>e.data||[])]),k=(O||[]).map(e=>t.normalizeCurrencyRecord(e)),A=_.find(e=>e.id===S.language_id)?.code,{attributes:j,variants:M}=n.mapRawVariantRelations(S.product_variants||[],A),N=(D||[]).map(e=>({id:e.id,name:e.name,name_translations:e.name_translations||{},slug:e.slug,terms:(e.product_attribute_terms||[]).map(e=>({...e,value_translations:e.value_translations||{}}))})),P=s.DeleteProductButton,F=c.FreemiusPricingDashboard;return(0,f.jsxs)(`div`,{className:`space-y-8 w-full max-w-[1400px] mx-auto px-6 py-8`,children:[(0,f.jsxs)(`div`,{className:`flex justify-between items-center flex-wrap gap-4 w-full`,children:[(0,f.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,f.jsx)(h.Button,{variant:`outline`,size:`icon`,"aria-label":`Back to products`,asChild:!0,children:(0,f.jsx)(l.default,{href:`/cms/products`,children:(0,f.jsx)(u.ArrowLeft,{className:`h-4 w-4`})})}),(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`h1`,{className:`text-2xl font-bold`,children:`Edit Product`}),(0,f.jsx)(`p`,{className:`text-sm text-muted-foreground truncate max-w-md`,title:S.title,children:S.title})]})]}),(0,f.jsxs)(`div`,{className:`flex items-center gap-3 flex-wrap`,children:[v,y,b,P?(0,f.jsx)(P,{productName:S.title,redirectTo:`/cms/products`,className:`border-red-200 hover:bg-red-50 hover:text-red-700`,deleteAction:i.deleteProductAction.bind(null,S.id)}):null,S.slug&&S.status===`active`&&(0,f.jsx)(h.Button,{variant:`outline`,asChild:!0,children:(0,f.jsxs)(l.default,{href:`/product/${S.slug}`,target:`_blank`,children:[(0,f.jsx)(u.ExternalLink,{className:`w-4 h-4 mr-2`}),`View`]})})]})]}),(0,f.jsx)(a.ProductForm,{initialData:{id:S.id,title:S.title,slug:S.slug,sku:S.sku,upc:S.upc??void 0,stock:S.stock||0,price:S.price||0,prices:Object.entries(S.prices||{}).reduce((e,[t,n])=>(e[t]=(0,d.minorUnitAmountToMajor)(n,t),e),{}),is_taxable:typeof S.is_taxable!=`boolean`||S.is_taxable,product_type:S.product_type,payment_provider:S.payment_provider,status:S.status,short_description:S.short_description??void 0,description_json:S.description_json,sale_price:typeof S.sale_price==`number`?S.sale_price:void 0,sale_prices:Object.entries(S.sale_prices||{}).reduce((e,[t,n])=>(e[t]=typeof n==`number`?(0,d.minorUnitAmountToMajor)(n,t):null,e),{}),freemius_plan_id:S.freemius_plan_id??void 0,freemius_product_id:S.freemius_product_id??void 0,trial_period_days:S.trial_period_days??0,trial_requires_payment_method:S.trial_requires_payment_method??!1,language_id:S.language_id,translation_group_id:S.translation_group_id,product_media:S.product_media,variation_attributes:j.map(e=>({attribute_id:e.id,term_ids:e.terms.map(e=>e.id)})),variants:M.map(e=>({...e,upc:e.upc??null,price:e.price/100,prices:Object.entries(e.prices||{}).reduce((e,[t,n])=>(e[t]=(0,d.minorUnitAmountToMajor)(n,t),e),{}),sale_price:typeof e.sale_price==`number`?e.sale_price/100:null,sale_prices:Object.entries(e.sale_prices||{}).reduce((e,[t,n])=>(e[t]=typeof n==`number`?(0,d.minorUnitAmountToMajor)(n,t):null,e),{}),main_media_id:e.main_media_id??null,main_image_url:e.image_url??null}))},isEdit:!0,mediaPickerNode:g,availableLanguagesProp:_,globalAttributesProp:N,currenciesProp:k,enabledProviders:w,configStatus:T,updateAction:i.updateProductAction.bind(null,S.id),freemiusDashboardNode:C&&S.freemius_product_id&&E&&F?(0,f.jsx)(F,{productId:S.id,freemiusProductId:S.freemius_product_id,plans:E}):void 0})]})}exports.EditProductPage=g;
|