@rovela-ai/sdk 0.1.18 → 0.1.19
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/dist/admin/api/auth.js +5 -11
- package/dist/admin/api/auth.js.map +1 -1
- package/dist/admin/api/categories.js +43 -50
- package/dist/admin/api/categories.js.map +1 -1
- package/dist/admin/api/check.js +6 -9
- package/dist/admin/api/check.js.map +1 -1
- package/dist/admin/api/customers.js +17 -21
- package/dist/admin/api/customers.js.map +1 -1
- package/dist/admin/api/index.js +10 -38
- package/dist/admin/api/index.js.map +1 -1
- package/dist/admin/api/orders.js +30 -35
- package/dist/admin/api/orders.js.map +1 -1
- package/dist/admin/api/products.js +56 -66
- package/dist/admin/api/products.js.map +1 -1
- package/dist/admin/api/refund.js +26 -29
- package/dist/admin/api/refund.js.map +1 -1
- package/dist/admin/api/settings.js +17 -21
- package/dist/admin/api/settings.js.map +1 -1
- package/dist/admin/api/setup.js +17 -20
- package/dist/admin/api/setup.js.map +1 -1
- package/dist/admin/api/stats.js +14 -17
- package/dist/admin/api/stats.js.map +1 -1
- package/dist/admin/components/AdminGuard.js +13 -17
- package/dist/admin/components/AdminGuard.js.map +1 -1
- package/dist/admin/components/AdminHeader.js +8 -11
- package/dist/admin/components/AdminHeader.js.map +1 -1
- package/dist/admin/components/AdminLayout.js +5 -8
- package/dist/admin/components/AdminLayout.js.map +1 -1
- package/dist/admin/components/AdminLoginForm.js +11 -14
- package/dist/admin/components/AdminLoginForm.js.map +1 -1
- package/dist/admin/components/AdminNav.js +11 -14
- package/dist/admin/components/AdminNav.js.map +1 -1
- package/dist/admin/components/AdminSetupForm.js +11 -14
- package/dist/admin/components/AdminSetupForm.js.map +1 -1
- package/dist/admin/components/InventoryEditor.js +16 -19
- package/dist/admin/components/InventoryEditor.js.map +1 -1
- package/dist/admin/components/LowStockAlert.js +6 -9
- package/dist/admin/components/LowStockAlert.js.map +1 -1
- package/dist/admin/components/OrderDetails.js +15 -18
- package/dist/admin/components/OrderDetails.js.map +1 -1
- package/dist/admin/components/OrderTable.js +13 -16
- package/dist/admin/components/OrderTable.js.map +1 -1
- package/dist/admin/components/ProductForm.js +17 -20
- package/dist/admin/components/ProductForm.js.map +1 -1
- package/dist/admin/components/ProductTable.js +15 -18
- package/dist/admin/components/ProductTable.js.map +1 -1
- package/dist/admin/components/RecentOrders.js +6 -9
- package/dist/admin/components/RecentOrders.js.map +1 -1
- package/dist/admin/components/RefundDialog.js +12 -15
- package/dist/admin/components/RefundDialog.js.map +1 -1
- package/dist/admin/components/StatsCards.js +7 -10
- package/dist/admin/components/StatsCards.js.map +1 -1
- package/dist/admin/components/StoreSettings.js +10 -13
- package/dist/admin/components/StoreSettings.js.map +1 -1
- package/dist/admin/components/index.js +16 -35
- package/dist/admin/components/index.js.map +1 -1
- package/dist/admin/config.js +12 -54
- package/dist/admin/config.js.map +1 -1
- package/dist/admin/hooks/index.js +4 -11
- package/dist/admin/hooks/index.js.map +1 -1
- package/dist/admin/hooks/useAdminAuth.js +9 -12
- package/dist/admin/hooks/useAdminAuth.js.map +1 -1
- package/dist/admin/hooks/useAdminOrders.js +11 -14
- package/dist/admin/hooks/useAdminOrders.js.map +1 -1
- package/dist/admin/hooks/useAdminProducts.js +13 -16
- package/dist/admin/hooks/useAdminProducts.js.map +1 -1
- package/dist/admin/hooks/useAdminStats.js +11 -14
- package/dist/admin/hooks/useAdminStats.js.map +1 -1
- package/dist/admin/index.js +13 -66
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/server/admin-service.js +39 -83
- package/dist/admin/server/admin-service.js.map +1 -1
- package/dist/admin/server/index.js +3 -13
- package/dist/admin/server/index.js.map +1 -1
- package/dist/admin/types.js +1 -2
- package/dist/admin/types.js.map +1 -1
- package/dist/auth/api/auth.js +6 -14
- package/dist/auth/api/auth.js.map +1 -1
- package/dist/auth/api/forgot-password.js +8 -11
- package/dist/auth/api/forgot-password.js.map +1 -1
- package/dist/auth/api/index.js +6 -18
- package/dist/auth/api/index.js.map +1 -1
- package/dist/auth/api/register.js +17 -20
- package/dist/auth/api/register.js.map +1 -1
- package/dist/auth/api/resend-verification.js +9 -12
- package/dist/auth/api/resend-verification.js.map +1 -1
- package/dist/auth/api/reset-password.js +18 -22
- package/dist/auth/api/reset-password.js.map +1 -1
- package/dist/auth/api/verify-email.js +14 -18
- package/dist/auth/api/verify-email.js.map +1 -1
- package/dist/auth/components/AuthGuard.js +13 -17
- package/dist/auth/components/AuthGuard.js.map +1 -1
- package/dist/auth/components/ForgotPasswordForm.js +11 -14
- package/dist/auth/components/ForgotPasswordForm.js.map +1 -1
- package/dist/auth/components/ResetPasswordForm.js +18 -21
- package/dist/auth/components/ResetPasswordForm.js.map +1 -1
- package/dist/auth/components/SignInForm.js +13 -16
- package/dist/auth/components/SignInForm.js.map +1 -1
- package/dist/auth/components/SignUpForm.js +15 -18
- package/dist/auth/components/SignUpForm.js.map +1 -1
- package/dist/auth/components/UserMenu.js +13 -16
- package/dist/auth/components/UserMenu.js.map +1 -1
- package/dist/auth/components/VerifyEmailNotice.js +10 -13
- package/dist/auth/components/VerifyEmailNotice.js.map +1 -1
- package/dist/auth/components/index.js +7 -18
- package/dist/auth/components/index.js.map +1 -1
- package/dist/auth/config.js +9 -49
- package/dist/auth/config.js.map +1 -1
- package/dist/auth/hooks/index.js +1 -5
- package/dist/auth/hooks/index.js.map +1 -1
- package/dist/auth/hooks/useAuth.js +14 -17
- package/dist/auth/hooks/useAuth.js.map +1 -1
- package/dist/auth/index.js +15 -37
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/server/customer-service.js +39 -83
- package/dist/auth/server/customer-service.js.map +1 -1
- package/dist/auth/server/email-sender.js +11 -17
- package/dist/auth/server/email-sender.js.map +1 -1
- package/dist/auth/server/index.js +5 -36
- package/dist/auth/server/index.js.map +1 -1
- package/dist/auth/server/password-reset-service.js +30 -70
- package/dist/auth/server/password-reset-service.js.map +1 -1
- package/dist/auth/server/password.js +9 -18
- package/dist/auth/server/password.js.map +1 -1
- package/dist/auth/server/verification-service.js +35 -76
- package/dist/auth/server/verification-service.js.map +1 -1
- package/dist/auth/types.js +1 -2
- package/dist/auth/types.js.map +1 -1
- package/dist/cart/CartProvider.js +13 -17
- package/dist/cart/CartProvider.js.map +1 -1
- package/dist/cart/components/AddToCartButton.js +16 -19
- package/dist/cart/components/AddToCartButton.js.map +1 -1
- package/dist/cart/components/CartDrawer.js +17 -23
- package/dist/cart/components/CartDrawer.js.map +1 -1
- package/dist/cart/components/CartIcon.js +9 -12
- package/dist/cart/components/CartIcon.js.map +1 -1
- package/dist/cart/components/CartItem.js +7 -13
- package/dist/cart/components/CartItem.js.map +1 -1
- package/dist/cart/components/CartSummary.js +12 -15
- package/dist/cart/components/CartSummary.js.map +1 -1
- package/dist/cart/components/QuantitySelector.js +9 -12
- package/dist/cart/components/QuantitySelector.js.map +1 -1
- package/dist/cart/components/index.js +6 -15
- package/dist/cart/components/index.js.map +1 -1
- package/dist/cart/index.js +3 -17
- package/dist/cart/index.js.map +1 -1
- package/dist/cart/store.js +8 -13
- package/dist/cart/store.js.map +1 -1
- package/dist/checkout/api/checkout.js +12 -15
- package/dist/checkout/api/checkout.js.map +1 -1
- package/dist/checkout/api/index.js +2 -7
- package/dist/checkout/api/index.js.map +1 -1
- package/dist/checkout/api/webhook.js +8 -11
- package/dist/checkout/api/webhook.js.map +1 -1
- package/dist/checkout/components/CheckoutButton.js +8 -11
- package/dist/checkout/components/CheckoutButton.js.map +1 -1
- package/dist/checkout/components/CheckoutSuccess.js +11 -14
- package/dist/checkout/components/CheckoutSuccess.js.map +1 -1
- package/dist/checkout/components/OrderSummary.js +8 -11
- package/dist/checkout/components/OrderSummary.js.map +1 -1
- package/dist/checkout/components/ShippingForm.js +14 -17
- package/dist/checkout/components/ShippingForm.js.map +1 -1
- package/dist/checkout/components/index.js +4 -11
- package/dist/checkout/components/index.js.map +1 -1
- package/dist/checkout/hooks/index.js +1 -6
- package/dist/checkout/hooks/index.js.map +1 -1
- package/dist/checkout/hooks/useCheckout.js +10 -19
- package/dist/checkout/hooks/useCheckout.js.map +1 -1
- package/dist/checkout/index.js +7 -28
- package/dist/checkout/index.js.map +1 -1
- package/dist/checkout/server/create-checkout-session.js +11 -16
- package/dist/checkout/server/create-checkout-session.js.map +1 -1
- package/dist/checkout/server/handle-webhook.js +21 -24
- package/dist/checkout/server/handle-webhook.js.map +1 -1
- package/dist/checkout/server/index.js +3 -13
- package/dist/checkout/server/index.js.map +1 -1
- package/dist/checkout/server/order-service.js +11 -16
- package/dist/checkout/server/order-service.js.map +1 -1
- package/dist/checkout/stripe/client.js +13 -29
- package/dist/checkout/stripe/client.js.map +1 -1
- package/dist/checkout/stripe/index.js +1 -15
- package/dist/checkout/stripe/index.js.map +1 -1
- package/dist/checkout/types.js +1 -2
- package/dist/checkout/types.js.map +1 -1
- package/dist/core/config.js +12 -57
- package/dist/core/config.js.map +1 -1
- package/dist/core/db/client.js +16 -62
- package/dist/core/db/client.js.map +1 -1
- package/dist/core/db/index.js +14 -93
- package/dist/core/db/index.js.map +1 -1
- package/dist/core/db/queries.d.ts +6 -6
- package/dist/core/db/queries.js +207 -284
- package/dist/core/db/queries.js.map +1 -1
- package/dist/core/db/schema.js +179 -182
- package/dist/core/db/schema.js.map +1 -1
- package/dist/core/index.js +12 -42
- package/dist/core/index.js.map +1 -1
- package/dist/core/server/index.js +16 -68
- package/dist/core/server/index.js.map +1 -1
- package/dist/core/types.js +1 -2
- package/dist/core/types.js.map +1 -1
- package/dist/core/utils.js +26 -51
- package/dist/core/utils.js.map +1 -1
- package/dist/emails/config.js +13 -21
- package/dist/emails/config.js.map +1 -1
- package/dist/emails/index.js +10 -72
- package/dist/emails/index.js.map +1 -1
- package/dist/emails/send/auth.js +26 -34
- package/dist/emails/send/auth.js.map +1 -1
- package/dist/emails/send/index.js +2 -21
- package/dist/emails/send/index.js.map +1 -1
- package/dist/emails/send/orders.js +38 -50
- package/dist/emails/send/orders.js.map +1 -1
- package/dist/emails/sender.js +7 -12
- package/dist/emails/sender.js.map +1 -1
- package/dist/emails/templates/base.js +37 -53
- package/dist/emails/templates/base.js.map +1 -1
- package/dist/emails/templates/email-verification.js +12 -16
- package/dist/emails/templates/email-verification.js.map +1 -1
- package/dist/emails/templates/index.js +9 -43
- package/dist/emails/templates/index.js.map +1 -1
- package/dist/emails/templates/order-cancelled.js +18 -22
- package/dist/emails/templates/order-cancelled.js.map +1 -1
- package/dist/emails/templates/order-confirmation.js +30 -34
- package/dist/emails/templates/order-confirmation.js.map +1 -1
- package/dist/emails/templates/order-delivered.js +20 -24
- package/dist/emails/templates/order-delivered.js.map +1 -1
- package/dist/emails/templates/order-shipped.js +19 -23
- package/dist/emails/templates/order-shipped.js.map +1 -1
- package/dist/emails/templates/password-reset.js +12 -16
- package/dist/emails/templates/password-reset.js.map +1 -1
- package/dist/emails/templates/refund-processed.js +17 -21
- package/dist/emails/templates/refund-processed.js.map +1 -1
- package/dist/emails/templates/welcome.js +11 -15
- package/dist/emails/templates/welcome.js.map +1 -1
- package/dist/emails/types.js +1 -2
- package/dist/emails/types.js.map +1 -1
- package/dist/emails/utils.js +9 -20
- package/dist/emails/utils.js.map +1 -1
- package/dist/index.js +24 -176
- package/dist/index.js.map +1 -1
- package/dist/products/api/categories.js +7 -10
- package/dist/products/api/categories.js.map +1 -1
- package/dist/products/api/index.js +3 -9
- package/dist/products/api/index.js.map +1 -1
- package/dist/products/api/product.js +10 -13
- package/dist/products/api/product.js.map +1 -1
- package/dist/products/api/products.js +8 -11
- package/dist/products/api/products.js.map +1 -1
- package/dist/products/components/CategoryNav.js +20 -26
- package/dist/products/components/CategoryNav.js.map +1 -1
- package/dist/products/components/ProductBreadcrumb.js +7 -13
- package/dist/products/components/ProductBreadcrumb.js.map +1 -1
- package/dist/products/components/ProductCard.js +6 -12
- package/dist/products/components/ProductCard.js.map +1 -1
- package/dist/products/components/ProductDetails.js +14 -17
- package/dist/products/components/ProductDetails.js.map +1 -1
- package/dist/products/components/ProductFilters.js +15 -18
- package/dist/products/components/ProductFilters.js.map +1 -1
- package/dist/products/components/ProductGallery.js +17 -23
- package/dist/products/components/ProductGallery.js.map +1 -1
- package/dist/products/components/ProductGrid.js +10 -13
- package/dist/products/components/ProductGrid.js.map +1 -1
- package/dist/products/components/ProductSearch.js +14 -17
- package/dist/products/components/ProductSearch.js.map +1 -1
- package/dist/products/components/ProductSort.js +8 -11
- package/dist/products/components/ProductSort.js.map +1 -1
- package/dist/products/components/VariantSelector.js +16 -19
- package/dist/products/components/VariantSelector.js.map +1 -1
- package/dist/products/components/index.js +10 -23
- package/dist/products/components/index.js.map +1 -1
- package/dist/products/hooks/index.js +4 -11
- package/dist/products/hooks/index.js.map +1 -1
- package/dist/products/hooks/useCategories.js +12 -15
- package/dist/products/hooks/useCategories.js.map +1 -1
- package/dist/products/hooks/useProduct.js +9 -12
- package/dist/products/hooks/useProduct.js.map +1 -1
- package/dist/products/hooks/useProductAttributes.js +10 -13
- package/dist/products/hooks/useProductAttributes.js.map +1 -1
- package/dist/products/hooks/useProducts.js +15 -18
- package/dist/products/hooks/useProducts.js.map +1 -1
- package/dist/products/index.js +6 -23
- package/dist/products/index.js.map +1 -1
- package/dist/theme/ThemeProvider.js +12 -14
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/colors.js +3 -8
- package/dist/theme/colors.js.map +1 -1
- package/dist/theme/defaults.js +27 -30
- package/dist/theme/defaults.js.map +1 -1
- package/dist/theme/fonts.js +12 -18
- package/dist/theme/fonts.js.map +1 -1
- package/dist/theme/generator.js +63 -69
- package/dist/theme/generator.js.map +1 -1
- package/dist/theme/hooks.js +11 -16
- package/dist/theme/hooks.js.map +1 -1
- package/dist/theme/index.js +6 -42
- package/dist/theme/index.js.map +1 -1
- package/package.json +31 -30
|
@@ -1,20 +1,14 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
'use client';
|
|
3
|
-
|
|
4
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
-
};
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.CartItem = CartItem;
|
|
8
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
3
|
/**
|
|
10
4
|
* @rovela/sdk/cart/components/CartItem
|
|
11
5
|
*
|
|
12
6
|
* Individual cart item component with quantity controls and remove button.
|
|
13
7
|
*/
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
8
|
+
import Image from 'next/image';
|
|
9
|
+
import Link from 'next/link';
|
|
10
|
+
import { cn, formatPrice } from '../../core/utils';
|
|
11
|
+
import { QuantitySelector } from './QuantitySelector';
|
|
18
12
|
// =============================================================================
|
|
19
13
|
// Component
|
|
20
14
|
// =============================================================================
|
|
@@ -43,13 +37,13 @@ const QuantitySelector_1 = require("./QuantitySelector");
|
|
|
43
37
|
* }
|
|
44
38
|
* ```
|
|
45
39
|
*/
|
|
46
|
-
function CartItem({ item, onUpdateQuantity, onRemove, currency = 'USD', locale = 'en-US', showRemove = true, showQuantity = true, maxQuantity = 99, productHref, className, compact = false, }) {
|
|
40
|
+
export function CartItem({ item, onUpdateQuantity, onRemove, currency = 'USD', locale = 'en-US', showRemove = true, showQuantity = true, maxQuantity = 99, productHref, className, compact = false, }) {
|
|
47
41
|
const lineTotal = item.price * item.quantity;
|
|
48
42
|
const href = productHref || `/products/${item.productId}`;
|
|
49
43
|
// Format variant attributes for display
|
|
50
44
|
const attributeText = item.attributes
|
|
51
45
|
? Object.values(item.attributes).join(' / ')
|
|
52
46
|
: null;
|
|
53
|
-
return ((
|
|
47
|
+
return (_jsxs("div", { className: cn('flex gap-4', compact ? 'py-3' : 'py-4', className), children: [_jsx(Link, { href: href, className: cn('relative flex-shrink-0 overflow-hidden rounded-md bg-muted', compact ? 'h-16 w-16' : 'h-20 w-20'), children: item.image ? (_jsx(Image, { src: item.image, alt: item.name, fill: true, sizes: compact ? '64px' : '80px', className: "object-cover" })) : (_jsx("div", { className: "flex h-full w-full items-center justify-center text-muted-foreground", children: _jsx("svg", { className: cn(compact ? 'h-6 w-6' : 'h-8 w-8'), fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1, d: "M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z" }) }) })) }), _jsxs("div", { className: "flex flex-1 flex-col justify-between", children: [_jsxs("div", { children: [_jsx(Link, { href: href, className: cn('font-medium text-foreground hover:text-primary transition-colors', compact ? 'text-sm line-clamp-1' : 'text-sm line-clamp-2'), children: item.name }), attributeText && (_jsx("p", { className: "mt-0.5 text-xs text-muted-foreground", children: attributeText })), _jsxs("p", { className: cn('text-muted-foreground', compact ? 'mt-0.5 text-xs' : 'mt-1 text-sm'), children: [formatPrice(item.price, { currency, locale }), item.quantity > 1 && ' each'] })] }), _jsxs("div", { className: cn('flex items-center justify-between', compact ? 'mt-2' : 'mt-3'), children: [showQuantity && onUpdateQuantity ? (_jsx(QuantitySelector, { value: item.quantity, onChange: onUpdateQuantity, min: 1, max: maxQuantity, size: compact ? 'sm' : 'md' })) : (_jsxs("span", { className: "text-sm text-muted-foreground", children: ["Qty: ", item.quantity] })), showRemove && onRemove && (_jsx("button", { type: "button", onClick: onRemove, className: cn('text-muted-foreground hover:text-destructive transition-colors', compact ? 'text-xs' : 'text-sm'), "aria-label": `Remove ${item.name} from cart`, children: "Remove" }))] })] }), _jsx("div", { className: cn('flex-shrink-0 text-right', compact ? 'w-16' : 'w-20'), children: _jsx("span", { className: cn('font-medium text-foreground', compact ? 'text-sm' : 'text-base'), children: formatPrice(lineTotal, { currency, locale }) }) })] }));
|
|
54
48
|
}
|
|
55
49
|
//# sourceMappingURL=CartItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CartItem.js","sourceRoot":"","sources":["../../../src/cart/components/CartItem.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CartItem.js","sourceRoot":"","sources":["../../../src/cart/components/CartItem.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
'use client';
|
|
3
|
-
|
|
4
|
-
exports.CartSummary = CartSummary;
|
|
5
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
6
3
|
/**
|
|
7
4
|
* @rovela/sdk/cart/components/CartSummary
|
|
8
5
|
*
|
|
9
6
|
* Cart summary component showing subtotal and optional estimates.
|
|
10
7
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
import { cn, formatPrice } from '../../core/utils';
|
|
9
|
+
import { useCart } from '../store';
|
|
13
10
|
// =============================================================================
|
|
14
11
|
// Component
|
|
15
12
|
// =============================================================================
|
|
@@ -34,8 +31,8 @@ const store_1 = require("../store");
|
|
|
34
31
|
* }
|
|
35
32
|
* ```
|
|
36
33
|
*/
|
|
37
|
-
function CartSummary({ showShipping = true, shippingCost = null, showTax = false, taxAmount = null, showTotal = true, currency = 'USD', locale = 'en-US', className, compact = false, }) {
|
|
38
|
-
const subtotal =
|
|
34
|
+
export function CartSummary({ showShipping = true, shippingCost = null, showTax = false, taxAmount = null, showTotal = true, currency = 'USD', locale = 'en-US', className, compact = false, }) {
|
|
35
|
+
const subtotal = useCart((state) => {
|
|
39
36
|
// Calculate subtotal from items
|
|
40
37
|
return state.items.reduce((sum, item) => sum + item.price * item.quantity, 0);
|
|
41
38
|
});
|
|
@@ -45,14 +42,14 @@ function CartSummary({ showShipping = true, shippingCost = null, showTax = false
|
|
|
45
42
|
? subtotal + (shippingCost || 0) + (taxAmount || 0)
|
|
46
43
|
: null;
|
|
47
44
|
const formatOptions = { currency, locale };
|
|
48
|
-
return ((
|
|
45
|
+
return (_jsxs("div", { className: cn('space-y-2', className), children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: cn('text-muted-foreground', compact ? 'text-sm' : 'text-base'), children: "Subtotal" }), _jsx("span", { className: cn('font-medium text-foreground', compact ? 'text-sm' : 'text-base'), children: formatPrice(subtotal, formatOptions) })] }), showShipping && (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: cn('text-muted-foreground', compact ? 'text-sm' : 'text-base'), children: "Shipping" }), _jsx("span", { className: cn('text-muted-foreground', compact ? 'text-sm' : 'text-base'), children: shippingCost !== null
|
|
49
46
|
? shippingCost === 0
|
|
50
47
|
? 'Free'
|
|
51
|
-
:
|
|
52
|
-
: 'Calculated at checkout' })] })), showTax && ((
|
|
53
|
-
?
|
|
54
|
-
: 'Calculated at checkout' })] })), showTotal && ((
|
|
55
|
-
?
|
|
56
|
-
:
|
|
48
|
+
: formatPrice(shippingCost, formatOptions)
|
|
49
|
+
: 'Calculated at checkout' })] })), showTax && (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: cn('text-muted-foreground', compact ? 'text-sm' : 'text-base'), children: "Tax" }), _jsx("span", { className: cn('text-muted-foreground', compact ? 'text-sm' : 'text-base'), children: taxAmount !== null
|
|
50
|
+
? formatPrice(taxAmount, formatOptions)
|
|
51
|
+
: 'Calculated at checkout' })] })), showTotal && (_jsxs(_Fragment, { children: [_jsx("div", { className: "my-3 border-t border-border" }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: cn('font-medium text-foreground', compact ? 'text-base' : 'text-lg'), children: hasAllValues ? 'Total' : 'Estimated Total' }), _jsx("span", { className: cn('font-semibold text-foreground', compact ? 'text-base' : 'text-lg'), children: total !== null
|
|
52
|
+
? formatPrice(total, formatOptions)
|
|
53
|
+
: formatPrice(subtotal, formatOptions) })] }), !hasAllValues && (_jsx("p", { className: "text-xs text-muted-foreground text-right", children: "Shipping and taxes calculated at checkout" }))] }))] }));
|
|
57
54
|
}
|
|
58
55
|
//# sourceMappingURL=CartSummary.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CartSummary.js","sourceRoot":"","sources":["../../../src/cart/components/CartSummary.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CartSummary.js","sourceRoot":"","sources":["../../../src/cart/components/CartSummary.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
'use client';
|
|
3
|
-
|
|
4
|
-
exports.QuantitySelector = QuantitySelector;
|
|
5
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
3
|
/**
|
|
7
4
|
* @rovela/sdk/cart/components/QuantitySelector
|
|
8
5
|
*
|
|
9
6
|
* Quantity selector component with +/- buttons.
|
|
10
7
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
import { useCallback } from 'react';
|
|
9
|
+
import { cn } from '../../core/utils';
|
|
13
10
|
// =============================================================================
|
|
14
11
|
// Component
|
|
15
12
|
// =============================================================================
|
|
@@ -32,24 +29,24 @@ const utils_1 = require("../../core/utils");
|
|
|
32
29
|
* }
|
|
33
30
|
* ```
|
|
34
31
|
*/
|
|
35
|
-
function QuantitySelector({ value, onChange, min = 1, max = 99, disabled = false, size = 'md', className, ariaLabel = 'Quantity', }) {
|
|
36
|
-
const handleDecrement =
|
|
32
|
+
export function QuantitySelector({ value, onChange, min = 1, max = 99, disabled = false, size = 'md', className, ariaLabel = 'Quantity', }) {
|
|
33
|
+
const handleDecrement = useCallback(() => {
|
|
37
34
|
if (value > min && !disabled) {
|
|
38
35
|
onChange(value - 1);
|
|
39
36
|
}
|
|
40
37
|
}, [value, min, disabled, onChange]);
|
|
41
|
-
const handleIncrement =
|
|
38
|
+
const handleIncrement = useCallback(() => {
|
|
42
39
|
if (value < max && !disabled) {
|
|
43
40
|
onChange(value + 1);
|
|
44
41
|
}
|
|
45
42
|
}, [value, max, disabled, onChange]);
|
|
46
|
-
const handleInputChange =
|
|
43
|
+
const handleInputChange = useCallback((e) => {
|
|
47
44
|
const newValue = parseInt(e.target.value, 10);
|
|
48
45
|
if (!isNaN(newValue)) {
|
|
49
46
|
onChange(Math.max(min, Math.min(max, newValue)));
|
|
50
47
|
}
|
|
51
48
|
}, [min, max, onChange]);
|
|
52
|
-
const handleKeyDown =
|
|
49
|
+
const handleKeyDown = useCallback((e) => {
|
|
53
50
|
if (e.key === 'ArrowUp') {
|
|
54
51
|
e.preventDefault();
|
|
55
52
|
handleIncrement();
|
|
@@ -82,6 +79,6 @@ function QuantitySelector({ value, onChange, min = 1, max = 99, disabled = false
|
|
|
82
79
|
const classes = sizeClasses[size];
|
|
83
80
|
const isAtMin = value <= min;
|
|
84
81
|
const isAtMax = value >= max;
|
|
85
|
-
return ((
|
|
82
|
+
return (_jsxs("div", { className: cn('inline-flex items-center rounded-md border border-border', disabled && 'opacity-50', className), role: "group", "aria-label": ariaLabel, children: [_jsx("button", { type: "button", onClick: handleDecrement, disabled: disabled || isAtMin, className: cn('flex items-center justify-center text-muted-foreground transition-colors', 'hover:text-foreground hover:bg-muted', 'disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent', 'focus:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-inset', 'rounded-l-md', classes.button), "aria-label": "Decrease quantity", children: _jsx("svg", { className: classes.icon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M20 12H4" }) }) }), _jsx("input", { type: "number", value: value, onChange: handleInputChange, onKeyDown: handleKeyDown, disabled: disabled, min: min, max: max, className: cn('border-x border-border bg-transparent text-center focus:outline-none', 'disabled:cursor-not-allowed', '[appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none', classes.container, classes.input), "aria-label": ariaLabel }), _jsx("button", { type: "button", onClick: handleIncrement, disabled: disabled || isAtMax, className: cn('flex items-center justify-center text-muted-foreground transition-colors', 'hover:text-foreground hover:bg-muted', 'disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent', 'focus:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-inset', 'rounded-r-md', classes.button), "aria-label": "Increase quantity", children: _jsx("svg", { className: classes.icon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 4v16m8-8H4" }) }) })] }));
|
|
86
83
|
}
|
|
87
84
|
//# sourceMappingURL=QuantitySelector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuantitySelector.js","sourceRoot":"","sources":["../../../src/cart/components/QuantitySelector.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"QuantitySelector.js","sourceRoot":"","sources":["../../../src/cart/components/QuantitySelector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/cart/components
|
|
4
3
|
*
|
|
5
4
|
* Cart UI components
|
|
6
5
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var CartSummary_1 = require("./CartSummary");
|
|
14
|
-
Object.defineProperty(exports, "CartSummary", { enumerable: true, get: function () { return CartSummary_1.CartSummary; } });
|
|
15
|
-
var CartIcon_1 = require("./CartIcon");
|
|
16
|
-
Object.defineProperty(exports, "CartIcon", { enumerable: true, get: function () { return CartIcon_1.CartIcon; } });
|
|
17
|
-
var AddToCartButton_1 = require("./AddToCartButton");
|
|
18
|
-
Object.defineProperty(exports, "AddToCartButton", { enumerable: true, get: function () { return AddToCartButton_1.AddToCartButton; } });
|
|
19
|
-
var QuantitySelector_1 = require("./QuantitySelector");
|
|
20
|
-
Object.defineProperty(exports, "QuantitySelector", { enumerable: true, get: function () { return QuantitySelector_1.QuantitySelector; } });
|
|
6
|
+
export { CartDrawer } from './CartDrawer';
|
|
7
|
+
export { CartItem } from './CartItem';
|
|
8
|
+
export { CartSummary } from './CartSummary';
|
|
9
|
+
export { CartIcon } from './CartIcon';
|
|
10
|
+
export { AddToCartButton } from './AddToCartButton';
|
|
11
|
+
export { QuantitySelector } from './QuantitySelector';
|
|
21
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cart/components/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cart/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGrC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAG3C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGrC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAGnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA"}
|
package/dist/cart/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/cart
|
|
4
3
|
*
|
|
@@ -101,29 +100,16 @@
|
|
|
101
100
|
* }
|
|
102
101
|
* ```
|
|
103
102
|
*/
|
|
104
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
105
|
-
exports.QuantitySelector = exports.AddToCartButton = exports.CartIcon = exports.CartSummary = exports.CartItem = exports.CartDrawer = exports.useCartHydrated = exports.CartProvider = exports.isCartHydrated = exports.hydrateCart = exports.useCart = void 0;
|
|
106
103
|
// =============================================================================
|
|
107
104
|
// Store
|
|
108
105
|
// =============================================================================
|
|
109
|
-
|
|
110
|
-
Object.defineProperty(exports, "useCart", { enumerable: true, get: function () { return store_1.useCart; } });
|
|
111
|
-
Object.defineProperty(exports, "hydrateCart", { enumerable: true, get: function () { return store_1.hydrateCart; } });
|
|
112
|
-
Object.defineProperty(exports, "isCartHydrated", { enumerable: true, get: function () { return store_1.isCartHydrated; } });
|
|
106
|
+
export { useCart, hydrateCart, isCartHydrated } from './store';
|
|
113
107
|
// =============================================================================
|
|
114
108
|
// Provider
|
|
115
109
|
// =============================================================================
|
|
116
|
-
|
|
117
|
-
Object.defineProperty(exports, "CartProvider", { enumerable: true, get: function () { return CartProvider_1.CartProvider; } });
|
|
118
|
-
Object.defineProperty(exports, "useCartHydrated", { enumerable: true, get: function () { return CartProvider_1.useCartHydrated; } });
|
|
110
|
+
export { CartProvider, useCartHydrated } from './CartProvider';
|
|
119
111
|
// =============================================================================
|
|
120
112
|
// Components
|
|
121
113
|
// =============================================================================
|
|
122
|
-
|
|
123
|
-
Object.defineProperty(exports, "CartDrawer", { enumerable: true, get: function () { return components_1.CartDrawer; } });
|
|
124
|
-
Object.defineProperty(exports, "CartItem", { enumerable: true, get: function () { return components_1.CartItem; } });
|
|
125
|
-
Object.defineProperty(exports, "CartSummary", { enumerable: true, get: function () { return components_1.CartSummary; } });
|
|
126
|
-
Object.defineProperty(exports, "CartIcon", { enumerable: true, get: function () { return components_1.CartIcon; } });
|
|
127
|
-
Object.defineProperty(exports, "AddToCartButton", { enumerable: true, get: function () { return components_1.AddToCartButton; } });
|
|
128
|
-
Object.defineProperty(exports, "QuantitySelector", { enumerable: true, get: function () { return components_1.QuantitySelector; } });
|
|
114
|
+
export { CartDrawer, CartItem, CartSummary, CartIcon, AddToCartButton, QuantitySelector, } from './components';
|
|
129
115
|
//# sourceMappingURL=index.js.map
|
package/dist/cart/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cart/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cart/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqGG;AAEH,gFAAgF;AAChF,QAAQ;AACR,gFAAgF;AAEhF,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAG9D,gFAAgF;AAChF,WAAW;AACX,gFAAgF;AAEhF,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAG9D,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF,OAAO,EACL,UAAU,EACV,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,eAAe,EACf,gBAAgB,GACjB,MAAM,cAAc,CAAA"}
|
package/dist/cart/store.js
CHANGED
|
@@ -1,16 +1,11 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/cart/store
|
|
4
3
|
*
|
|
5
4
|
* Zustand cart store with localStorage persistence.
|
|
6
5
|
* Client-side only - no database, no API calls.
|
|
7
6
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
exports.hydrateCart = hydrateCart;
|
|
11
|
-
exports.isCartHydrated = isCartHydrated;
|
|
12
|
-
const zustand_1 = require("zustand");
|
|
13
|
-
const middleware_1 = require("zustand/middleware");
|
|
7
|
+
import { create } from 'zustand';
|
|
8
|
+
import { persist, createJSONStorage } from 'zustand/middleware';
|
|
14
9
|
// =============================================================================
|
|
15
10
|
// Constants
|
|
16
11
|
// =============================================================================
|
|
@@ -87,7 +82,7 @@ function extractPrice(product, variant) {
|
|
|
87
82
|
* }
|
|
88
83
|
* ```
|
|
89
84
|
*/
|
|
90
|
-
|
|
85
|
+
export const useCart = create()(persist((set, get) => ({
|
|
91
86
|
// =======================================================================
|
|
92
87
|
// State
|
|
93
88
|
// =======================================================================
|
|
@@ -170,7 +165,7 @@ exports.useCart = (0, zustand_1.create)()((0, middleware_1.persist)((set, get) =
|
|
|
170
165
|
}), {
|
|
171
166
|
name: STORAGE_KEY,
|
|
172
167
|
version: STORAGE_VERSION,
|
|
173
|
-
storage:
|
|
168
|
+
storage: createJSONStorage(() => {
|
|
174
169
|
// SSR-safe: check if window is available
|
|
175
170
|
if (typeof window === 'undefined') {
|
|
176
171
|
return {
|
|
@@ -195,13 +190,13 @@ exports.useCart = (0, zustand_1.create)()((0, middleware_1.persist)((set, get) =
|
|
|
195
190
|
* Manually trigger hydration from localStorage.
|
|
196
191
|
* Call this in CartProvider's useEffect.
|
|
197
192
|
*/
|
|
198
|
-
function hydrateCart() {
|
|
199
|
-
|
|
193
|
+
export function hydrateCart() {
|
|
194
|
+
useCart.persist.rehydrate();
|
|
200
195
|
}
|
|
201
196
|
/**
|
|
202
197
|
* Check if the cart has been hydrated.
|
|
203
198
|
*/
|
|
204
|
-
function isCartHydrated() {
|
|
205
|
-
return
|
|
199
|
+
export function isCartHydrated() {
|
|
200
|
+
return useCart.persist.hasHydrated();
|
|
206
201
|
}
|
|
207
202
|
//# sourceMappingURL=store.js.map
|
package/dist/cart/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/cart/store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/cart/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/checkout/api/checkout
|
|
4
3
|
*
|
|
@@ -10,10 +9,8 @@
|
|
|
10
9
|
* export { POST } from '@rovela/sdk/checkout/api'
|
|
11
10
|
* ```
|
|
12
11
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const server_1 = require("next/server");
|
|
16
|
-
const create_checkout_session_1 = require("../server/create-checkout-session");
|
|
12
|
+
import { NextResponse } from 'next/server';
|
|
13
|
+
import { createCheckoutSession } from '../server/create-checkout-session';
|
|
17
14
|
// =============================================================================
|
|
18
15
|
// Handler
|
|
19
16
|
// =============================================================================
|
|
@@ -33,23 +30,23 @@ const create_checkout_session_1 = require("../server/create-checkout-session");
|
|
|
33
30
|
* - sessionId: Stripe Checkout session ID
|
|
34
31
|
* - url: URL to redirect customer to
|
|
35
32
|
*/
|
|
36
|
-
async function POST(request) {
|
|
33
|
+
export async function POST(request) {
|
|
37
34
|
try {
|
|
38
35
|
const body = (await request.json());
|
|
39
36
|
// Validate items
|
|
40
37
|
if (!body.items || !Array.isArray(body.items) || body.items.length === 0) {
|
|
41
|
-
return
|
|
38
|
+
return NextResponse.json({ error: 'No items provided', code: 'EMPTY_CART' }, { status: 400 });
|
|
42
39
|
}
|
|
43
40
|
// Validate each item has required fields
|
|
44
41
|
for (const item of body.items) {
|
|
45
42
|
if (!item.name || typeof item.price !== 'number' || item.price <= 0) {
|
|
46
|
-
return
|
|
43
|
+
return NextResponse.json({
|
|
47
44
|
error: 'Invalid item: each item must have name and positive price',
|
|
48
45
|
code: 'INVALID_REQUEST',
|
|
49
46
|
}, { status: 400 });
|
|
50
47
|
}
|
|
51
48
|
if (!item.quantity || item.quantity < 1) {
|
|
52
|
-
return
|
|
49
|
+
return NextResponse.json({
|
|
53
50
|
error: 'Invalid item: quantity must be at least 1',
|
|
54
51
|
code: 'INVALID_REQUEST',
|
|
55
52
|
}, { status: 400 });
|
|
@@ -67,8 +64,8 @@ async function POST(request) {
|
|
|
67
64
|
metadata: body.metadata,
|
|
68
65
|
};
|
|
69
66
|
// Create checkout session
|
|
70
|
-
const session = await
|
|
71
|
-
return
|
|
67
|
+
const session = await createCheckoutSession(checkoutRequest);
|
|
68
|
+
return NextResponse.json(session);
|
|
72
69
|
}
|
|
73
70
|
catch (error) {
|
|
74
71
|
console.error('[Checkout API] Error:', error);
|
|
@@ -76,25 +73,25 @@ async function POST(request) {
|
|
|
76
73
|
if (error instanceof Error) {
|
|
77
74
|
// Stripe not configured
|
|
78
75
|
if (error.message.includes('STRIPE_SECRET_KEY')) {
|
|
79
|
-
return
|
|
76
|
+
return NextResponse.json({
|
|
80
77
|
error: 'Payment system not configured. Please contact the store owner.',
|
|
81
78
|
code: 'STRIPE_NOT_CONFIGURED',
|
|
82
79
|
}, { status: 500 });
|
|
83
80
|
}
|
|
84
81
|
// Connected account not set up
|
|
85
82
|
if (error.message.includes('STRIPE_CONNECTED_ACCOUNT_ID')) {
|
|
86
|
-
return
|
|
83
|
+
return NextResponse.json({
|
|
87
84
|
error: 'Store payments not set up. The store owner must complete Stripe onboarding.',
|
|
88
85
|
code: 'ACCOUNT_NOT_CONNECTED',
|
|
89
86
|
}, { status: 500 });
|
|
90
87
|
}
|
|
91
88
|
// Generic Stripe error
|
|
92
89
|
if (error.message.includes('Stripe')) {
|
|
93
|
-
return
|
|
90
|
+
return NextResponse.json({ error: 'Payment provider error. Please try again.', code: 'CHECKOUT_ERROR' }, { status: 500 });
|
|
94
91
|
}
|
|
95
92
|
}
|
|
96
93
|
// Unknown error
|
|
97
|
-
return
|
|
94
|
+
return NextResponse.json({
|
|
98
95
|
error: 'Failed to create checkout session. Please try again.',
|
|
99
96
|
code: 'CHECKOUT_ERROR',
|
|
100
97
|
}, { status: 500 });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../../src/checkout/api/checkout.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../../src/checkout/api/checkout.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/checkout/api
|
|
4
3
|
*
|
|
5
4
|
* API route handlers for checkout
|
|
6
5
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var checkout_1 = require("./checkout");
|
|
10
|
-
Object.defineProperty(exports, "POST", { enumerable: true, get: function () { return checkout_1.POST; } });
|
|
11
|
-
var webhook_1 = require("./webhook");
|
|
12
|
-
Object.defineProperty(exports, "WebhookPOST", { enumerable: true, get: function () { return webhook_1.POST; } });
|
|
6
|
+
export { POST } from './checkout';
|
|
7
|
+
export { POST as WebhookPOST } from './webhook';
|
|
13
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/checkout/api/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/checkout/api/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/checkout/api/webhook
|
|
4
3
|
*
|
|
@@ -10,10 +9,8 @@
|
|
|
10
9
|
* export { POST } from '@rovela/sdk/checkout/api'
|
|
11
10
|
* ```
|
|
12
11
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const server_1 = require("next/server");
|
|
16
|
-
const handle_webhook_1 = require("../server/handle-webhook");
|
|
12
|
+
import { NextResponse } from 'next/server';
|
|
13
|
+
import { handleStripeWebhook } from '../server/handle-webhook';
|
|
17
14
|
// =============================================================================
|
|
18
15
|
// Handler
|
|
19
16
|
// =============================================================================
|
|
@@ -32,27 +29,27 @@ const handle_webhook_1 = require("../server/handle-webhook");
|
|
|
32
29
|
* - orderId: The order ID (if created)
|
|
33
30
|
* - error: Error message (if failed)
|
|
34
31
|
*/
|
|
35
|
-
async function POST(request) {
|
|
32
|
+
export async function POST(request) {
|
|
36
33
|
// Get raw body for signature verification
|
|
37
34
|
const payload = await request.text();
|
|
38
35
|
// Get signature header
|
|
39
36
|
const signature = request.headers.get('stripe-signature');
|
|
40
37
|
if (!signature) {
|
|
41
38
|
console.error('[Webhook] Missing stripe-signature header');
|
|
42
|
-
return
|
|
39
|
+
return NextResponse.json({ received: false, error: 'Missing stripe-signature header' }, { status: 400 });
|
|
43
40
|
}
|
|
44
41
|
// Process the webhook
|
|
45
|
-
const result = await
|
|
42
|
+
const result = await handleStripeWebhook(payload, signature);
|
|
46
43
|
// Return appropriate status based on result
|
|
47
44
|
if (!result.received) {
|
|
48
|
-
return
|
|
45
|
+
return NextResponse.json(result, { status: 400 });
|
|
49
46
|
}
|
|
50
47
|
if (result.error) {
|
|
51
48
|
// Event received but processing failed - return 200 to prevent retries
|
|
52
49
|
// for non-recoverable errors (Stripe will retry on 5xx)
|
|
53
50
|
console.warn('[Webhook] Processing error:', result.error);
|
|
54
|
-
return
|
|
51
|
+
return NextResponse.json(result, { status: 200 });
|
|
55
52
|
}
|
|
56
|
-
return
|
|
53
|
+
return NextResponse.json(result, { status: 200 });
|
|
57
54
|
}
|
|
58
55
|
//# sourceMappingURL=webhook.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../src/checkout/api/webhook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../src/checkout/api/webhook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAe,YAAY,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAG9D,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,OAAoB;IAEpB,0CAA0C;IAC1C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;IAEpC,uBAAuB;IACvB,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;IAEzD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAC1D,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,iCAAiC,EAAE,EAC7D,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;IACH,CAAC;IAED,sBAAsB;IACtB,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAE5D,4CAA4C;IAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,uEAAuE;QACvE,wDAAwD;QACxD,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QACzD,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;AACnD,CAAC"}
|