@rovela-ai/sdk 0.1.1 → 0.1.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/dist/admin/hooks/useAdminAuth.d.ts.map +1 -1
- package/dist/admin/hooks/useAdminAuth.js +4 -1
- package/dist/admin/hooks/useAdminAuth.js.map +1 -1
- package/dist/auth/hooks/useAuth.d.ts.map +1 -1
- package/dist/auth/hooks/useAuth.js +8 -2
- package/dist/auth/hooks/useAuth.js.map +1 -1
- package/package.json +1 -1
- package/dist/admin/api/auth.d.ts +0 -32
- package/dist/admin/api/auth.d.ts.map +0 -1
- package/dist/admin/api/auth.js +0 -43
- package/dist/admin/api/auth.js.map +0 -1
- package/dist/admin/api/categories.d.ts +0 -68
- package/dist/admin/api/categories.d.ts.map +0 -1
- package/dist/admin/api/categories.js +0 -247
- package/dist/admin/api/categories.js.map +0 -1
- package/dist/admin/api/customers.d.ts +0 -41
- package/dist/admin/api/customers.d.ts.map +0 -1
- package/dist/admin/api/customers.js +0 -113
- package/dist/admin/api/customers.js.map +0 -1
- package/dist/admin/api/index.d.ts +0 -56
- package/dist/admin/api/index.d.ts.map +0 -1
- package/dist/admin/api/index.js +0 -87
- package/dist/admin/api/index.js.map +0 -1
- package/dist/admin/api/orders.d.ts +0 -59
- package/dist/admin/api/orders.d.ts.map +0 -1
- package/dist/admin/api/orders.js +0 -209
- package/dist/admin/api/orders.js.map +0 -1
- package/dist/admin/api/products.d.ts +0 -103
- package/dist/admin/api/products.d.ts.map +0 -1
- package/dist/admin/api/products.js +0 -329
- package/dist/admin/api/products.js.map +0 -1
- package/dist/admin/api/refund.d.ts +0 -29
- package/dist/admin/api/refund.d.ts.map +0 -1
- package/dist/admin/api/refund.js +0 -136
- package/dist/admin/api/refund.js.map +0 -1
- package/dist/admin/api/stats.d.ts +0 -40
- package/dist/admin/api/stats.d.ts.map +0 -1
- package/dist/admin/api/stats.js +0 -74
- package/dist/admin/api/stats.js.map +0 -1
- package/dist/admin/components/AdminGuard.d.ts +0 -40
- package/dist/admin/components/AdminGuard.d.ts.map +0 -1
- package/dist/admin/components/AdminGuard.js +0 -97
- package/dist/admin/components/AdminGuard.js.map +0 -1
- package/dist/admin/components/AdminHeader.d.ts +0 -18
- package/dist/admin/components/AdminHeader.d.ts.map +0 -1
- package/dist/admin/components/AdminHeader.js +0 -33
- package/dist/admin/components/AdminHeader.js.map +0 -1
- package/dist/admin/components/AdminLayout.d.ts +0 -50
- package/dist/admin/components/AdminLayout.d.ts.map +0 -1
- package/dist/admin/components/AdminLayout.js +0 -46
- package/dist/admin/components/AdminLayout.js.map +0 -1
- package/dist/admin/components/AdminLoginForm.d.ts +0 -18
- package/dist/admin/components/AdminLoginForm.d.ts.map +0 -1
- package/dist/admin/components/AdminLoginForm.js +0 -58
- package/dist/admin/components/AdminLoginForm.js.map +0 -1
- package/dist/admin/components/AdminNav.d.ts +0 -34
- package/dist/admin/components/AdminNav.d.ts.map +0 -1
- package/dist/admin/components/AdminNav.js +0 -61
- package/dist/admin/components/AdminNav.js.map +0 -1
- package/dist/admin/components/InventoryEditor.d.ts +0 -15
- package/dist/admin/components/InventoryEditor.d.ts.map +0 -1
- package/dist/admin/components/InventoryEditor.js +0 -83
- package/dist/admin/components/InventoryEditor.js.map +0 -1
- package/dist/admin/components/LowStockAlert.d.ts +0 -11
- package/dist/admin/components/LowStockAlert.d.ts.map +0 -1
- package/dist/admin/components/LowStockAlert.js +0 -35
- package/dist/admin/components/LowStockAlert.js.map +0 -1
- package/dist/admin/components/OrderDetails.d.ts +0 -14
- package/dist/admin/components/OrderDetails.d.ts.map +0 -1
- package/dist/admin/components/OrderDetails.js +0 -94
- package/dist/admin/components/OrderDetails.js.map +0 -1
- package/dist/admin/components/OrderTable.d.ts +0 -13
- package/dist/admin/components/OrderTable.d.ts.map +0 -1
- package/dist/admin/components/OrderTable.js +0 -89
- package/dist/admin/components/OrderTable.js.map +0 -1
- package/dist/admin/components/ProductForm.d.ts +0 -18
- package/dist/admin/components/ProductForm.d.ts.map +0 -1
- package/dist/admin/components/ProductForm.js +0 -127
- package/dist/admin/components/ProductForm.js.map +0 -1
- package/dist/admin/components/ProductTable.d.ts +0 -13
- package/dist/admin/components/ProductTable.d.ts.map +0 -1
- package/dist/admin/components/ProductTable.js +0 -81
- package/dist/admin/components/ProductTable.js.map +0 -1
- package/dist/admin/components/RecentOrders.d.ts +0 -11
- package/dist/admin/components/RecentOrders.d.ts.map +0 -1
- package/dist/admin/components/RecentOrders.js +0 -58
- package/dist/admin/components/RecentOrders.js.map +0 -1
- package/dist/admin/components/RefundDialog.d.ts +0 -17
- package/dist/admin/components/RefundDialog.d.ts.map +0 -1
- package/dist/admin/components/RefundDialog.js +0 -86
- package/dist/admin/components/RefundDialog.js.map +0 -1
- package/dist/admin/components/StatsCards.d.ts +0 -23
- package/dist/admin/components/StatsCards.d.ts.map +0 -1
- package/dist/admin/components/StatsCards.js +0 -82
- package/dist/admin/components/StatsCards.js.map +0 -1
- package/dist/admin/components/StoreSettings.d.ts +0 -14
- package/dist/admin/components/StoreSettings.d.ts.map +0 -1
- package/dist/admin/components/StoreSettings.js +0 -88
- package/dist/admin/components/StoreSettings.js.map +0 -1
- package/dist/admin/components/index.d.ts +0 -21
- package/dist/admin/components/index.d.ts.map +0 -1
- package/dist/admin/components/index.js +0 -57
- package/dist/admin/components/index.js.map +0 -1
- package/dist/admin/config.d.ts +0 -74
- package/dist/admin/config.d.ts.map +0 -1
- package/dist/admin/config.js +0 -229
- package/dist/admin/config.js.map +0 -1
- package/dist/admin/hooks/index.d.ts +0 -10
- package/dist/admin/hooks/index.d.ts.map +0 -1
- package/dist/admin/hooks/index.js +0 -17
- package/dist/admin/hooks/index.js.map +0 -1
- package/dist/admin/hooks/useAdminOrders.d.ts +0 -41
- package/dist/admin/hooks/useAdminOrders.d.ts.map +0 -1
- package/dist/admin/hooks/useAdminOrders.js +0 -191
- package/dist/admin/hooks/useAdminOrders.js.map +0 -1
- package/dist/admin/hooks/useAdminProducts.d.ts +0 -39
- package/dist/admin/hooks/useAdminProducts.d.ts.map +0 -1
- package/dist/admin/hooks/useAdminProducts.js +0 -235
- package/dist/admin/hooks/useAdminProducts.js.map +0 -1
- package/dist/admin/hooks/useAdminStats.d.ts +0 -50
- package/dist/admin/hooks/useAdminStats.d.ts.map +0 -1
- package/dist/admin/hooks/useAdminStats.js +0 -111
- package/dist/admin/hooks/useAdminStats.js.map +0 -1
- package/dist/admin/index.d.ts +0 -63
- package/dist/admin/index.d.ts.map +0 -1
- package/dist/admin/index.js +0 -148
- package/dist/admin/index.js.map +0 -1
- package/dist/admin/server/admin-service.d.ts +0 -130
- package/dist/admin/server/admin-service.d.ts.map +0 -1
- package/dist/admin/server/admin-service.js +0 -298
- package/dist/admin/server/admin-service.js.map +0 -1
- package/dist/admin/server/index.d.ts +0 -8
- package/dist/admin/server/index.d.ts.map +0 -1
- package/dist/admin/server/index.js +0 -25
- package/dist/admin/server/index.js.map +0 -1
- package/dist/admin/types.d.ts +0 -549
- package/dist/admin/types.d.ts.map +0 -1
- package/dist/admin/types.js +0 -11
- package/dist/admin/types.js.map +0 -1
- package/dist/auth/api/auth.d.ts +0 -54
- package/dist/auth/api/auth.d.ts.map +0 -1
- package/dist/auth/api/auth.js +0 -67
- package/dist/auth/api/auth.js.map +0 -1
- package/dist/auth/api/forgot-password.d.ts +0 -41
- package/dist/auth/api/forgot-password.d.ts.map +0 -1
- package/dist/auth/api/forgot-password.js +0 -68
- package/dist/auth/api/forgot-password.js.map +0 -1
- package/dist/auth/api/index.d.ts +0 -34
- package/dist/auth/api/index.d.ts.map +0 -1
- package/dist/auth/api/index.js +0 -52
- package/dist/auth/api/index.js.map +0 -1
- package/dist/auth/api/register.d.ts +0 -41
- package/dist/auth/api/register.d.ts.map +0 -1
- package/dist/auth/api/register.js +0 -93
- package/dist/auth/api/register.js.map +0 -1
- package/dist/auth/api/resend-verification.d.ts +0 -41
- package/dist/auth/api/resend-verification.d.ts.map +0 -1
- package/dist/auth/api/resend-verification.js +0 -71
- package/dist/auth/api/resend-verification.js.map +0 -1
- package/dist/auth/api/reset-password.d.ts +0 -67
- package/dist/auth/api/reset-password.d.ts.map +0 -1
- package/dist/auth/api/reset-password.js +0 -110
- package/dist/auth/api/reset-password.js.map +0 -1
- package/dist/auth/api/verify-email.d.ts +0 -47
- package/dist/auth/api/verify-email.d.ts.map +0 -1
- package/dist/auth/api/verify-email.js +0 -94
- package/dist/auth/api/verify-email.js.map +0 -1
- package/dist/auth/components/AuthGuard.d.ts +0 -52
- package/dist/auth/components/AuthGuard.d.ts.map +0 -1
- package/dist/auth/components/AuthGuard.js +0 -113
- package/dist/auth/components/AuthGuard.js.map +0 -1
- package/dist/auth/components/ForgotPasswordForm.d.ts +0 -15
- package/dist/auth/components/ForgotPasswordForm.d.ts.map +0 -1
- package/dist/auth/components/ForgotPasswordForm.js +0 -44
- package/dist/auth/components/ForgotPasswordForm.js.map +0 -1
- package/dist/auth/components/ResetPasswordForm.d.ts +0 -18
- package/dist/auth/components/ResetPasswordForm.d.ts.map +0 -1
- package/dist/auth/components/ResetPasswordForm.js +0 -88
- package/dist/auth/components/ResetPasswordForm.js.map +0 -1
- package/dist/auth/components/SignInForm.d.ts +0 -21
- package/dist/auth/components/SignInForm.d.ts.map +0 -1
- package/dist/auth/components/SignInForm.js +0 -63
- package/dist/auth/components/SignInForm.js.map +0 -1
- package/dist/auth/components/SignUpForm.d.ts +0 -18
- package/dist/auth/components/SignUpForm.d.ts.map +0 -1
- package/dist/auth/components/SignUpForm.js +0 -79
- package/dist/auth/components/SignUpForm.js.map +0 -1
- package/dist/auth/components/UserMenu.d.ts +0 -18
- package/dist/auth/components/UserMenu.d.ts.map +0 -1
- package/dist/auth/components/UserMenu.js +0 -75
- package/dist/auth/components/UserMenu.js.map +0 -1
- package/dist/auth/components/VerifyEmailNotice.d.ts +0 -20
- package/dist/auth/components/VerifyEmailNotice.d.ts.map +0 -1
- package/dist/auth/components/VerifyEmailNotice.js +0 -59
- package/dist/auth/components/VerifyEmailNotice.js.map +0 -1
- package/dist/auth/components/index.d.ts +0 -13
- package/dist/auth/components/index.d.ts.map +0 -1
- package/dist/auth/components/index.js +0 -24
- package/dist/auth/components/index.js.map +0 -1
- package/dist/auth/config.d.ts +0 -42
- package/dist/auth/config.d.ts.map +0 -1
- package/dist/auth/config.js +0 -174
- package/dist/auth/config.js.map +0 -1
- package/dist/auth/hooks/index.d.ts +0 -7
- package/dist/auth/hooks/index.d.ts.map +0 -1
- package/dist/auth/hooks/index.js +0 -11
- package/dist/auth/hooks/index.js.map +0 -1
- package/dist/auth/index.d.ts +0 -54
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/auth/index.js +0 -88
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/server/customer-service.d.ts +0 -138
- package/dist/auth/server/customer-service.d.ts.map +0 -1
- package/dist/auth/server/customer-service.js +0 -309
- package/dist/auth/server/customer-service.js.map +0 -1
- package/dist/auth/server/email-sender.d.ts +0 -64
- package/dist/auth/server/email-sender.d.ts.map +0 -1
- package/dist/auth/server/email-sender.js +0 -112
- package/dist/auth/server/email-sender.js.map +0 -1
- package/dist/auth/server/index.d.ts +0 -13
- package/dist/auth/server/index.d.ts.map +0 -1
- package/dist/auth/server/index.js +0 -48
- package/dist/auth/server/index.js.map +0 -1
- package/dist/auth/server/password-reset-service.d.ts +0 -86
- package/dist/auth/server/password-reset-service.d.ts.map +0 -1
- package/dist/auth/server/password-reset-service.js +0 -236
- package/dist/auth/server/password-reset-service.js.map +0 -1
- package/dist/auth/server/password.d.ts +0 -58
- package/dist/auth/server/password.d.ts.map +0 -1
- package/dist/auth/server/password.js +0 -94
- package/dist/auth/server/password.js.map +0 -1
- package/dist/auth/server/verification-service.d.ts +0 -87
- package/dist/auth/server/verification-service.d.ts.map +0 -1
- package/dist/auth/server/verification-service.js +0 -268
- package/dist/auth/server/verification-service.js.map +0 -1
- package/dist/auth/types.d.ts +0 -305
- package/dist/auth/types.d.ts.map +0 -1
- package/dist/auth/types.js +0 -8
- package/dist/auth/types.js.map +0 -1
- package/dist/cart/CartProvider.d.ts +0 -65
- package/dist/cart/CartProvider.d.ts.map +0 -1
- package/dist/cart/CartProvider.js +0 -101
- package/dist/cart/CartProvider.js.map +0 -1
- package/dist/cart/components/AddToCartButton.d.ts +0 -77
- package/dist/cart/components/AddToCartButton.d.ts.map +0 -1
- package/dist/cart/components/AddToCartButton.js +0 -124
- package/dist/cart/components/AddToCartButton.js.map +0 -1
- package/dist/cart/components/CartDrawer.d.ts +0 -71
- package/dist/cart/components/CartDrawer.d.ts.map +0 -1
- package/dist/cart/components/CartDrawer.js +0 -108
- package/dist/cart/components/CartDrawer.js.map +0 -1
- package/dist/cart/components/CartIcon.d.ts +0 -36
- package/dist/cart/components/CartIcon.d.ts.map +0 -1
- package/dist/cart/components/CartIcon.js +0 -70
- package/dist/cart/components/CartIcon.js.map +0 -1
- package/dist/cart/components/CartItem.d.ts +0 -52
- package/dist/cart/components/CartItem.d.ts.map +0 -1
- package/dist/cart/components/CartItem.js +0 -55
- package/dist/cart/components/CartItem.js.map +0 -1
- package/dist/cart/components/CartSummary.d.ts +0 -43
- package/dist/cart/components/CartSummary.d.ts.map +0 -1
- package/dist/cart/components/CartSummary.js +0 -58
- package/dist/cart/components/CartSummary.js.map +0 -1
- package/dist/cart/components/QuantitySelector.d.ts +0 -39
- package/dist/cart/components/QuantitySelector.d.ts.map +0 -1
- package/dist/cart/components/QuantitySelector.js +0 -87
- package/dist/cart/components/QuantitySelector.js.map +0 -1
- package/dist/cart/components/index.d.ts +0 -18
- package/dist/cart/components/index.d.ts.map +0 -1
- package/dist/cart/components/index.js +0 -21
- package/dist/cart/components/index.js.map +0 -1
- package/dist/cart/index.d.ts +0 -109
- package/dist/cart/index.d.ts.map +0 -1
- package/dist/cart/index.js +0 -129
- package/dist/cart/index.js.map +0 -1
- package/dist/cart/store.d.ts +0 -101
- package/dist/cart/store.d.ts.map +0 -1
- package/dist/cart/store.js +0 -207
- package/dist/cart/store.js.map +0 -1
- package/dist/checkout/api/checkout.d.ts +0 -31
- package/dist/checkout/api/checkout.d.ts.map +0 -1
- package/dist/checkout/api/checkout.js +0 -103
- package/dist/checkout/api/checkout.js.map +0 -1
- package/dist/checkout/api/index.d.ts +0 -8
- package/dist/checkout/api/index.d.ts.map +0 -1
- package/dist/checkout/api/index.js +0 -13
- package/dist/checkout/api/index.js.map +0 -1
- package/dist/checkout/api/webhook.d.ts +0 -30
- package/dist/checkout/api/webhook.d.ts.map +0 -1
- package/dist/checkout/api/webhook.js +0 -58
- package/dist/checkout/api/webhook.js.map +0 -1
- package/dist/checkout/components/CheckoutButton.d.ts +0 -44
- package/dist/checkout/components/CheckoutButton.d.ts.map +0 -1
- package/dist/checkout/components/CheckoutButton.js +0 -97
- package/dist/checkout/components/CheckoutButton.js.map +0 -1
- package/dist/checkout/components/CheckoutSuccess.d.ts +0 -29
- package/dist/checkout/components/CheckoutSuccess.d.ts.map +0 -1
- package/dist/checkout/components/CheckoutSuccess.js +0 -60
- package/dist/checkout/components/CheckoutSuccess.js.map +0 -1
- package/dist/checkout/components/OrderSummary.d.ts +0 -37
- package/dist/checkout/components/OrderSummary.d.ts.map +0 -1
- package/dist/checkout/components/OrderSummary.js +0 -70
- package/dist/checkout/components/OrderSummary.js.map +0 -1
- package/dist/checkout/components/ShippingForm.d.ts +0 -30
- package/dist/checkout/components/ShippingForm.d.ts.map +0 -1
- package/dist/checkout/components/ShippingForm.js +0 -125
- package/dist/checkout/components/ShippingForm.js.map +0 -1
- package/dist/checkout/components/index.d.ts +0 -10
- package/dist/checkout/components/index.d.ts.map +0 -1
- package/dist/checkout/components/index.js +0 -17
- package/dist/checkout/components/index.js.map +0 -1
- package/dist/checkout/hooks/index.d.ts +0 -7
- package/dist/checkout/hooks/index.d.ts.map +0 -1
- package/dist/checkout/hooks/index.js +0 -12
- package/dist/checkout/hooks/index.js.map +0 -1
- package/dist/checkout/hooks/useCheckout.d.ts +0 -61
- package/dist/checkout/hooks/useCheckout.d.ts.map +0 -1
- package/dist/checkout/hooks/useCheckout.js +0 -174
- package/dist/checkout/hooks/useCheckout.js.map +0 -1
- package/dist/checkout/index.d.ts +0 -111
- package/dist/checkout/index.d.ts.map +0 -1
- package/dist/checkout/index.js +0 -148
- package/dist/checkout/index.js.map +0 -1
- package/dist/checkout/server/create-checkout-session.d.ts +0 -69
- package/dist/checkout/server/create-checkout-session.d.ts.map +0 -1
- package/dist/checkout/server/create-checkout-session.js +0 -190
- package/dist/checkout/server/create-checkout-session.js.map +0 -1
- package/dist/checkout/server/handle-webhook.d.ts +0 -35
- package/dist/checkout/server/handle-webhook.d.ts.map +0 -1
- package/dist/checkout/server/handle-webhook.js +0 -279
- package/dist/checkout/server/handle-webhook.js.map +0 -1
- package/dist/checkout/server/index.d.ts +0 -10
- package/dist/checkout/server/index.d.ts.map +0 -1
- package/dist/checkout/server/index.js +0 -19
- package/dist/checkout/server/index.js.map +0 -1
- package/dist/checkout/server/order-service.d.ts +0 -43
- package/dist/checkout/server/order-service.d.ts.map +0 -1
- package/dist/checkout/server/order-service.js +0 -196
- package/dist/checkout/server/order-service.js.map +0 -1
- package/dist/checkout/stripe/client.d.ts +0 -72
- package/dist/checkout/stripe/client.d.ts.map +0 -1
- package/dist/checkout/stripe/client.js +0 -189
- package/dist/checkout/stripe/client.js.map +0 -1
- package/dist/checkout/stripe/index.d.ts +0 -7
- package/dist/checkout/stripe/index.d.ts.map +0 -1
- package/dist/checkout/stripe/index.js +0 -21
- package/dist/checkout/stripe/index.js.map +0 -1
- package/dist/checkout/types.d.ts +0 -263
- package/dist/checkout/types.d.ts.map +0 -1
- package/dist/checkout/types.js +0 -9
- package/dist/checkout/types.js.map +0 -1
- package/dist/core/config.d.ts +0 -296
- package/dist/core/config.d.ts.map +0 -1
- package/dist/core/config.js +0 -162
- package/dist/core/config.js.map +0 -1
- package/dist/core/db/client.d.ts +0 -69
- package/dist/core/db/client.d.ts.map +0 -1
- package/dist/core/db/client.js +0 -202
- package/dist/core/db/client.js.map +0 -1
- package/dist/core/db/index.d.ts +0 -11
- package/dist/core/db/index.d.ts.map +0 -1
- package/dist/core/db/index.js +0 -87
- package/dist/core/db/index.js.map +0 -1
- package/dist/core/db/queries.d.ts +0 -658
- package/dist/core/db/queries.d.ts.map +0 -1
- package/dist/core/db/queries.js +0 -735
- package/dist/core/db/queries.js.map +0 -1
- package/dist/core/db/schema.d.ts +0 -1628
- package/dist/core/db/schema.d.ts.map +0 -1
- package/dist/core/db/schema.js +0 -262
- package/dist/core/db/schema.js.map +0 -1
- package/dist/core/index.d.ts +0 -20
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -71
- package/dist/core/index.js.map +0 -1
- package/dist/core/server/index.d.ts +0 -17
- package/dist/core/server/index.d.ts.map +0 -1
- package/dist/core/server/index.js +0 -68
- package/dist/core/server/index.js.map +0 -1
- package/dist/core/types.d.ts +0 -230
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js +0 -9
- package/dist/core/types.js.map +0 -1
- package/dist/core/utils.d.ts +0 -153
- package/dist/core/utils.d.ts.map +0 -1
- package/dist/core/utils.js +0 -356
- package/dist/core/utils.js.map +0 -1
- package/dist/emails/config.d.ts +0 -42
- package/dist/emails/config.d.ts.map +0 -1
- package/dist/emails/config.js +0 -89
- package/dist/emails/config.js.map +0 -1
- package/dist/emails/index.d.ts +0 -85
- package/dist/emails/index.d.ts.map +0 -1
- package/dist/emails/index.js +0 -170
- package/dist/emails/index.js.map +0 -1
- package/dist/emails/send/auth.d.ts +0 -91
- package/dist/emails/send/auth.d.ts.map +0 -1
- package/dist/emails/send/auth.js +0 -132
- package/dist/emails/send/auth.js.map +0 -1
- package/dist/emails/send/index.d.ts +0 -10
- package/dist/emails/send/index.d.ts.map +0 -1
- package/dist/emails/send/index.js +0 -33
- package/dist/emails/send/index.js.map +0 -1
- package/dist/emails/send/orders.d.ts +0 -180
- package/dist/emails/send/orders.d.ts.map +0 -1
- package/dist/emails/send/orders.js +0 -259
- package/dist/emails/send/orders.js.map +0 -1
- package/dist/emails/sender.d.ts +0 -72
- package/dist/emails/sender.d.ts.map +0 -1
- package/dist/emails/sender.js +0 -118
- package/dist/emails/sender.js.map +0 -1
- package/dist/emails/templates/base.d.ts +0 -105
- package/dist/emails/templates/base.d.ts.map +0 -1
- package/dist/emails/templates/base.js +0 -291
- package/dist/emails/templates/base.js.map +0 -1
- package/dist/emails/templates/email-verification.d.ts +0 -28
- package/dist/emails/templates/email-verification.d.ts.map +0 -1
- package/dist/emails/templates/email-verification.js +0 -56
- package/dist/emails/templates/email-verification.js.map +0 -1
- package/dist/emails/templates/index.d.ts +0 -15
- package/dist/emails/templates/index.d.ts.map +0 -1
- package/dist/emails/templates/index.js +0 -58
- package/dist/emails/templates/index.js.map +0 -1
- package/dist/emails/templates/order-cancelled.d.ts +0 -30
- package/dist/emails/templates/order-cancelled.d.ts.map +0 -1
- package/dist/emails/templates/order-cancelled.js +0 -87
- package/dist/emails/templates/order-cancelled.js.map +0 -1
- package/dist/emails/templates/order-confirmation.d.ts +0 -36
- package/dist/emails/templates/order-confirmation.d.ts.map +0 -1
- package/dist/emails/templates/order-confirmation.js +0 -161
- package/dist/emails/templates/order-confirmation.js.map +0 -1
- package/dist/emails/templates/order-delivered.d.ts +0 -31
- package/dist/emails/templates/order-delivered.d.ts.map +0 -1
- package/dist/emails/templates/order-delivered.js +0 -95
- package/dist/emails/templates/order-delivered.js.map +0 -1
- package/dist/emails/templates/order-shipped.d.ts +0 -32
- package/dist/emails/templates/order-shipped.d.ts.map +0 -1
- package/dist/emails/templates/order-shipped.js +0 -87
- package/dist/emails/templates/order-shipped.js.map +0 -1
- package/dist/emails/templates/password-reset.d.ts +0 -27
- package/dist/emails/templates/password-reset.d.ts.map +0 -1
- package/dist/emails/templates/password-reset.js +0 -55
- package/dist/emails/templates/password-reset.js.map +0 -1
- package/dist/emails/templates/refund-processed.d.ts +0 -32
- package/dist/emails/templates/refund-processed.d.ts.map +0 -1
- package/dist/emails/templates/refund-processed.js +0 -96
- package/dist/emails/templates/refund-processed.js.map +0 -1
- package/dist/emails/templates/welcome.d.ts +0 -27
- package/dist/emails/templates/welcome.d.ts.map +0 -1
- package/dist/emails/templates/welcome.js +0 -56
- package/dist/emails/templates/welcome.js.map +0 -1
- package/dist/emails/types.d.ts +0 -202
- package/dist/emails/types.d.ts.map +0 -1
- package/dist/emails/types.js +0 -8
- package/dist/emails/types.js.map +0 -1
- package/dist/emails/utils.d.ts +0 -94
- package/dist/emails/utils.d.ts.map +0 -1
- package/dist/emails/utils.js +0 -229
- package/dist/emails/utils.js.map +0 -1
- package/dist/index.d.ts +0 -40
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -225
- package/dist/index.js.map +0 -1
- package/dist/products/api/categories.d.ts +0 -29
- package/dist/products/api/categories.d.ts.map +0 -1
- package/dist/products/api/categories.js +0 -49
- package/dist/products/api/categories.js.map +0 -1
- package/dist/products/api/index.d.ts +0 -24
- package/dist/products/api/index.d.ts.map +0 -1
- package/dist/products/api/index.js +0 -30
- package/dist/products/api/index.js.map +0 -1
- package/dist/products/api/product.d.ts +0 -36
- package/dist/products/api/product.d.ts.map +0 -1
- package/dist/products/api/product.js +0 -70
- package/dist/products/api/product.js.map +0 -1
- package/dist/products/api/products.d.ts +0 -41
- package/dist/products/api/products.d.ts.map +0 -1
- package/dist/products/api/products.js +0 -102
- package/dist/products/api/products.js.map +0 -1
- package/dist/products/components/CategoryNav.d.ts +0 -51
- package/dist/products/components/CategoryNav.d.ts.map +0 -1
- package/dist/products/components/CategoryNav.js +0 -115
- package/dist/products/components/CategoryNav.js.map +0 -1
- package/dist/products/components/ProductBreadcrumb.d.ts +0 -52
- package/dist/products/components/ProductBreadcrumb.d.ts.map +0 -1
- package/dist/products/components/ProductBreadcrumb.js +0 -78
- package/dist/products/components/ProductBreadcrumb.js.map +0 -1
- package/dist/products/components/ProductCard.d.ts +0 -54
- package/dist/products/components/ProductCard.d.ts.map +0 -1
- package/dist/products/components/ProductCard.js +0 -65
- package/dist/products/components/ProductCard.js.map +0 -1
- package/dist/products/components/ProductDetails.d.ts +0 -63
- package/dist/products/components/ProductDetails.d.ts.map +0 -1
- package/dist/products/components/ProductDetails.js +0 -105
- package/dist/products/components/ProductDetails.js.map +0 -1
- package/dist/products/components/ProductFilters.d.ts +0 -70
- package/dist/products/components/ProductFilters.d.ts.map +0 -1
- package/dist/products/components/ProductFilters.js +0 -127
- package/dist/products/components/ProductFilters.js.map +0 -1
- package/dist/products/components/ProductGallery.d.ts +0 -37
- package/dist/products/components/ProductGallery.d.ts.map +0 -1
- package/dist/products/components/ProductGallery.js +0 -80
- package/dist/products/components/ProductGallery.js.map +0 -1
- package/dist/products/components/ProductGrid.d.ts +0 -50
- package/dist/products/components/ProductGrid.d.ts.map +0 -1
- package/dist/products/components/ProductGrid.js +0 -83
- package/dist/products/components/ProductGrid.js.map +0 -1
- package/dist/products/components/ProductSearch.d.ts +0 -43
- package/dist/products/components/ProductSearch.d.ts.map +0 -1
- package/dist/products/components/ProductSearch.js +0 -99
- package/dist/products/components/ProductSearch.js.map +0 -1
- package/dist/products/components/ProductSort.d.ts +0 -43
- package/dist/products/components/ProductSort.d.ts.map +0 -1
- package/dist/products/components/ProductSort.js +0 -61
- package/dist/products/components/ProductSort.js.map +0 -1
- package/dist/products/components/VariantSelector.d.ts +0 -43
- package/dist/products/components/VariantSelector.d.ts.map +0 -1
- package/dist/products/components/VariantSelector.js +0 -147
- package/dist/products/components/VariantSelector.js.map +0 -1
- package/dist/products/components/index.d.ts +0 -26
- package/dist/products/components/index.d.ts.map +0 -1
- package/dist/products/components/index.js +0 -32
- package/dist/products/components/index.js.map +0 -1
- package/dist/products/hooks/index.d.ts +0 -14
- package/dist/products/hooks/index.d.ts.map +0 -1
- package/dist/products/hooks/index.js +0 -17
- package/dist/products/hooks/index.js.map +0 -1
- package/dist/products/hooks/useCategories.d.ts +0 -56
- package/dist/products/hooks/useCategories.d.ts.map +0 -1
- package/dist/products/hooks/useCategories.js +0 -126
- package/dist/products/hooks/useCategories.js.map +0 -1
- package/dist/products/hooks/useProduct.d.ts +0 -44
- package/dist/products/hooks/useProduct.d.ts.map +0 -1
- package/dist/products/hooks/useProduct.js +0 -86
- package/dist/products/hooks/useProduct.js.map +0 -1
- package/dist/products/hooks/useProductAttributes.d.ts +0 -59
- package/dist/products/hooks/useProductAttributes.d.ts.map +0 -1
- package/dist/products/hooks/useProductAttributes.js +0 -148
- package/dist/products/hooks/useProductAttributes.js.map +0 -1
- package/dist/products/hooks/useProducts.d.ts +0 -67
- package/dist/products/hooks/useProducts.d.ts.map +0 -1
- package/dist/products/hooks/useProducts.js +0 -132
- package/dist/products/hooks/useProducts.js.map +0 -1
- package/dist/products/index.d.ts +0 -94
- package/dist/products/index.d.ts.map +0 -1
- package/dist/products/index.js +0 -123
- package/dist/products/index.js.map +0 -1
- package/dist/theme/ThemeProvider.d.ts +0 -70
- package/dist/theme/ThemeProvider.d.ts.map +0 -1
- package/dist/theme/ThemeProvider.js +0 -77
- package/dist/theme/ThemeProvider.js.map +0 -1
- package/dist/theme/colors.d.ts +0 -148
- package/dist/theme/colors.d.ts.map +0 -1
- package/dist/theme/colors.js +0 -219
- package/dist/theme/colors.js.map +0 -1
- package/dist/theme/defaults.d.ts +0 -212
- package/dist/theme/defaults.d.ts.map +0 -1
- package/dist/theme/defaults.js +0 -278
- package/dist/theme/defaults.js.map +0 -1
- package/dist/theme/fonts.d.ts +0 -59
- package/dist/theme/fonts.d.ts.map +0 -1
- package/dist/theme/fonts.js +0 -202
- package/dist/theme/fonts.js.map +0 -1
- package/dist/theme/generator.d.ts +0 -50
- package/dist/theme/generator.d.ts.map +0 -1
- package/dist/theme/generator.js +0 -322
- package/dist/theme/generator.js.map +0 -1
- package/dist/theme/hooks.d.ts +0 -110
- package/dist/theme/hooks.d.ts.map +0 -1
- package/dist/theme/hooks.js +0 -106
- package/dist/theme/hooks.js.map +0 -1
- package/dist/theme/index.d.ts +0 -37
- package/dist/theme/index.d.ts.map +0 -1
- package/dist/theme/index.js +0 -85
- package/dist/theme/index.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProductDetails.d.ts","sourceRoot":"","sources":["../../../src/products/components/ProductDetails.tsx"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEzD,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAQ/D,MAAM,WAAW,mBAAmB;IAClC,mBAAmB;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAA;IAC3B,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0BAA0B;IAC1B,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1F,sBAAsB;IACtB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACvF,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,SAAS,CAAA;IAC5B,oCAAoC;IACpC,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,6BAA6B;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,wBAAwB;IACxB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtC,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAChC,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,QAAa,EACb,SAAS,EACT,QAAgB,EAChB,MAAgB,EAChB,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,UAAkB,EAClB,YAAmB,EACnB,WAAgB,EAChB,SAAiB,EACjB,aAAa,EACb,eAAwB,EACxB,QAAQ,GACT,EAAE,mBAAmB,2CA0OrB"}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
'use client';
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.ProductDetails = ProductDetails;
|
|
5
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
-
/**
|
|
7
|
-
* @rovela/sdk/products/components/ProductDetails
|
|
8
|
-
*
|
|
9
|
-
* Full product details component for product pages.
|
|
10
|
-
*/
|
|
11
|
-
const react_1 = require("react");
|
|
12
|
-
const utils_1 = require("../../core/utils");
|
|
13
|
-
const VariantSelector_1 = require("./VariantSelector");
|
|
14
|
-
const ProductGallery_1 = require("./ProductGallery");
|
|
15
|
-
// =============================================================================
|
|
16
|
-
// Component
|
|
17
|
-
// =============================================================================
|
|
18
|
-
/**
|
|
19
|
-
* ProductDetails component for product pages.
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* ```tsx
|
|
23
|
-
* import { ProductDetails } from '@rovela/sdk/products'
|
|
24
|
-
*
|
|
25
|
-
* function ProductPage({ product, variants }) {
|
|
26
|
-
* return (
|
|
27
|
-
* <ProductDetails
|
|
28
|
-
* product={product}
|
|
29
|
-
* variants={variants}
|
|
30
|
-
* onAddToCart={handleAddToCart}
|
|
31
|
-
* showBuyNow
|
|
32
|
-
* showStock
|
|
33
|
-
* />
|
|
34
|
-
* )
|
|
35
|
-
* }
|
|
36
|
-
* ```
|
|
37
|
-
*/
|
|
38
|
-
function ProductDetails({ product, variants = [], className, currency = 'USD', locale = 'en-US', onAddToCart, onBuyNow, addToCartContent, buyNowContent, showBuyNow = false, showQuantity = true, maxQuantity = 99, showStock = false, variantLabels, galleryPosition = 'left', children, }) {
|
|
39
|
-
const [selectedVariant, setSelectedVariant] = (0, react_1.useState)(null);
|
|
40
|
-
const [quantity, setQuantity] = (0, react_1.useState)(1);
|
|
41
|
-
// Calculate current price
|
|
42
|
-
const currentPrice = (0, react_1.useMemo)(() => {
|
|
43
|
-
if (selectedVariant?.price) {
|
|
44
|
-
return typeof selectedVariant.price === 'string'
|
|
45
|
-
? parseFloat(selectedVariant.price)
|
|
46
|
-
: selectedVariant.price;
|
|
47
|
-
}
|
|
48
|
-
return typeof product.price === 'string'
|
|
49
|
-
? parseFloat(product.price)
|
|
50
|
-
: product.price;
|
|
51
|
-
}, [product.price, selectedVariant]);
|
|
52
|
-
const comparePrice = product.comparePrice
|
|
53
|
-
? typeof product.comparePrice === 'string'
|
|
54
|
-
? parseFloat(product.comparePrice)
|
|
55
|
-
: product.comparePrice
|
|
56
|
-
: null;
|
|
57
|
-
// Calculate discount
|
|
58
|
-
const discountPercent = comparePrice && comparePrice > currentPrice
|
|
59
|
-
? Math.round(((comparePrice - currentPrice) / comparePrice) * 100)
|
|
60
|
-
: null;
|
|
61
|
-
// Calculate stock
|
|
62
|
-
const currentStock = (0, react_1.useMemo)(() => {
|
|
63
|
-
if (selectedVariant) {
|
|
64
|
-
return selectedVariant.inventory;
|
|
65
|
-
}
|
|
66
|
-
// Sum all variant inventory or return -1 if no variants (unlimited)
|
|
67
|
-
if (variants.length > 0) {
|
|
68
|
-
return variants.reduce((sum, v) => sum + v.inventory, 0);
|
|
69
|
-
}
|
|
70
|
-
return -1; // No variants, no inventory tracking
|
|
71
|
-
}, [selectedVariant, variants]);
|
|
72
|
-
const isOutOfStock = currentStock === 0;
|
|
73
|
-
const isLowStock = currentStock > 0 && currentStock <= 5;
|
|
74
|
-
// Check if variant selection is required
|
|
75
|
-
const requiresVariant = product.hasVariants && variants.length > 0;
|
|
76
|
-
const canAddToCart = !requiresVariant || selectedVariant !== null;
|
|
77
|
-
// Handlers
|
|
78
|
-
const handleAddToCart = () => {
|
|
79
|
-
if (canAddToCart) {
|
|
80
|
-
onAddToCart?.(product, selectedVariant, quantity);
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
const handleBuyNow = () => {
|
|
84
|
-
if (canAddToCart) {
|
|
85
|
-
onBuyNow?.(product, selectedVariant, quantity);
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
const handleQuantityChange = (newQuantity) => {
|
|
89
|
-
const max = currentStock > 0 ? Math.min(currentStock, maxQuantity) : maxQuantity;
|
|
90
|
-
setQuantity(Math.max(1, Math.min(newQuantity, max)));
|
|
91
|
-
};
|
|
92
|
-
const containerClasses = (0, utils_1.cn)('grid gap-8', galleryPosition === 'left'
|
|
93
|
-
? 'lg:grid-cols-2'
|
|
94
|
-
: 'grid-cols-1', className);
|
|
95
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: containerClasses, children: [(0, jsx_runtime_1.jsx)("div", { className: galleryPosition === 'top' ? 'order-first' : '', children: (0, jsx_runtime_1.jsx)(ProductGallery_1.ProductGallery, { images: product.images, alt: product.name }) }), (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col", children: [(0, jsx_runtime_1.jsx)("h1", { className: "text-2xl font-bold tracking-tight text-foreground sm:text-3xl", children: product.name }), (0, jsx_runtime_1.jsxs)("div", { className: "mt-3 flex items-baseline gap-3", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-2xl font-semibold text-foreground", children: (0, utils_1.formatPrice)(currentPrice, { currency, locale }) }), comparePrice && comparePrice > currentPrice && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("span", { className: "text-lg text-muted-foreground line-through", children: (0, utils_1.formatPrice)(comparePrice, { currency, locale }) }), discountPercent && ((0, jsx_runtime_1.jsxs)("span", { className: "rounded-full bg-destructive px-2 py-0.5 text-sm font-medium text-destructive-foreground", children: ["Save ", discountPercent, "%"] }))] }))] }), showStock && currentStock >= 0 && ((0, jsx_runtime_1.jsx)("div", { className: "mt-3", children: isOutOfStock ? ((0, jsx_runtime_1.jsx)("span", { className: "text-sm font-medium text-destructive", children: "Out of Stock" })) : isLowStock ? ((0, jsx_runtime_1.jsxs)("span", { className: "text-sm font-medium text-warning", children: ["Only ", currentStock, " left in stock"] })) : ((0, jsx_runtime_1.jsxs)("span", { className: "text-sm text-muted-foreground", children: ["In Stock (", currentStock, " available)"] })) })), (0, jsx_runtime_1.jsxs)("div", { className: "mt-6", children: [(0, jsx_runtime_1.jsx)("h2", { className: "sr-only", children: "Description" }), (0, jsx_runtime_1.jsx)("p", { className: "text-base text-muted-foreground", children: product.description })] }), children, requiresVariant && ((0, jsx_runtime_1.jsx)("div", { className: "mt-6", children: (0, jsx_runtime_1.jsx)(VariantSelector_1.VariantSelector, { variants: variants, selected: selectedVariant, onSelect: setSelectedVariant, labels: variantLabels, disableOutOfStock: true }) })), showQuantity && ((0, jsx_runtime_1.jsxs)("div", { className: "mt-6", children: [(0, jsx_runtime_1.jsx)("label", { className: "mb-2 block text-sm font-medium text-foreground", children: "Quantity" }), (0, jsx_runtime_1.jsxs)("div", { className: "flex w-32 items-center rounded-md border border-border", children: [(0, jsx_runtime_1.jsx)("button", { type: "button", onClick: () => handleQuantityChange(quantity - 1), disabled: quantity <= 1, className: "flex h-10 w-10 items-center justify-center text-muted-foreground transition-colors hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50", children: (0, jsx_runtime_1.jsx)("svg", { className: "h-4 w-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M20 12H4" }) }) }), (0, jsx_runtime_1.jsx)("input", { type: "number", value: quantity, onChange: (e) => handleQuantityChange(parseInt(e.target.value) || 1), className: "h-10 w-full border-0 bg-transparent text-center text-sm focus:outline-none [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none", min: 1, max: currentStock > 0 ? Math.min(currentStock, maxQuantity) : maxQuantity }), (0, jsx_runtime_1.jsx)("button", { type: "button", onClick: () => handleQuantityChange(quantity + 1), disabled: currentStock > 0 ? quantity >= currentStock : quantity >= maxQuantity, className: "flex h-10 w-10 items-center justify-center text-muted-foreground transition-colors hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50", children: (0, jsx_runtime_1.jsx)("svg", { className: "h-4 w-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 4v16m8-8H4" }) }) })] })] })), (0, jsx_runtime_1.jsxs)("div", { className: "mt-8 flex flex-col gap-3 sm:flex-row", children: [(0, jsx_runtime_1.jsx)("button", { type: "button", onClick: handleAddToCart, disabled: !canAddToCart || isOutOfStock, className: (0, utils_1.cn)('flex-1 rounded-md px-6 py-3 text-base font-medium transition-colors', canAddToCart && !isOutOfStock
|
|
96
|
-
? 'bg-primary text-primary-foreground hover:bg-primary/90'
|
|
97
|
-
: 'cursor-not-allowed bg-muted text-muted-foreground'), children: isOutOfStock
|
|
98
|
-
? 'Out of Stock'
|
|
99
|
-
: !canAddToCart
|
|
100
|
-
? 'Select Options'
|
|
101
|
-
: addToCartContent || 'Add to Cart' }), showBuyNow && ((0, jsx_runtime_1.jsx)("button", { type: "button", onClick: handleBuyNow, disabled: !canAddToCart || isOutOfStock, className: (0, utils_1.cn)('flex-1 rounded-md border px-6 py-3 text-base font-medium transition-colors', canAddToCart && !isOutOfStock
|
|
102
|
-
? 'border-primary text-primary hover:bg-primary hover:text-primary-foreground'
|
|
103
|
-
: 'cursor-not-allowed border-muted text-muted-foreground'), children: buyNowContent || 'Buy Now' }))] }), requiresVariant && !selectedVariant && ((0, jsx_runtime_1.jsx)("p", { className: "mt-3 text-sm text-muted-foreground", children: "Please select all options to add to cart" }))] })] }));
|
|
104
|
-
}
|
|
105
|
-
//# sourceMappingURL=ProductDetails.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProductDetails.js","sourceRoot":"","sources":["../../../src/products/components/ProductDetails.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import type { ProductAttribute, PriceRange } from '../hooks/useProductAttributes';
|
|
2
|
-
import type { Category } from '../../core/types';
|
|
3
|
-
export interface ProductFilterValues {
|
|
4
|
-
categories: string[];
|
|
5
|
-
attributes: Record<string, string[]>;
|
|
6
|
-
priceRange: {
|
|
7
|
-
min?: number;
|
|
8
|
-
max?: number;
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
export interface ProductFilterPanelProps {
|
|
12
|
-
/** Available attributes for filtering */
|
|
13
|
-
attributes?: ProductAttribute[];
|
|
14
|
-
/** Price range for price filter */
|
|
15
|
-
priceRange?: PriceRange | null;
|
|
16
|
-
/** Categories for category filter */
|
|
17
|
-
categories?: Category[];
|
|
18
|
-
/** Current filter values */
|
|
19
|
-
values: ProductFilterValues;
|
|
20
|
-
/** Callback when filters change */
|
|
21
|
-
onChange: (values: ProductFilterValues) => void;
|
|
22
|
-
/** Custom className */
|
|
23
|
-
className?: string;
|
|
24
|
-
/** Currency for price display */
|
|
25
|
-
currency?: string;
|
|
26
|
-
/** Locale for price formatting */
|
|
27
|
-
locale?: string;
|
|
28
|
-
/** Show category filter */
|
|
29
|
-
showCategories?: boolean;
|
|
30
|
-
/** Show price filter */
|
|
31
|
-
showPriceFilter?: boolean;
|
|
32
|
-
/** Collapsible sections */
|
|
33
|
-
collapsible?: boolean;
|
|
34
|
-
/** Initially expanded sections */
|
|
35
|
-
defaultExpanded?: string[];
|
|
36
|
-
/** Show clear all button */
|
|
37
|
-
showClearAll?: boolean;
|
|
38
|
-
/** Layout direction */
|
|
39
|
-
layout?: 'vertical' | 'horizontal';
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* ProductFilterPanel component for filtering product listings.
|
|
43
|
-
*
|
|
44
|
-
* @example
|
|
45
|
-
* ```tsx
|
|
46
|
-
* import { ProductFilters, useProductAttributes } from '@rovela/sdk/products'
|
|
47
|
-
*
|
|
48
|
-
* function Sidebar() {
|
|
49
|
-
* const { attributes, priceRange } = useProductAttributes()
|
|
50
|
-
* const [filters, setFilters] = useState({
|
|
51
|
-
* categories: [],
|
|
52
|
-
* attributes: {},
|
|
53
|
-
* priceRange: {},
|
|
54
|
-
* })
|
|
55
|
-
*
|
|
56
|
-
* return (
|
|
57
|
-
* <ProductFilters
|
|
58
|
-
* attributes={attributes}
|
|
59
|
-
* priceRange={priceRange}
|
|
60
|
-
* values={filters}
|
|
61
|
-
* onChange={setFilters}
|
|
62
|
-
* collapsible
|
|
63
|
-
* showClearAll
|
|
64
|
-
* />
|
|
65
|
-
* )
|
|
66
|
-
* }
|
|
67
|
-
* ```
|
|
68
|
-
*/
|
|
69
|
-
export declare function ProductFilterPanel({ attributes, priceRange, categories, values, onChange, className, currency, locale, showCategories, showPriceFilter, collapsible, defaultExpanded, showClearAll, layout, }: ProductFilterPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
70
|
-
//# sourceMappingURL=ProductFilters.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProductFilters.d.ts","sourceRoot":"","sources":["../../../src/products/components/ProductFilters.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAMhD,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IACpC,UAAU,EAAE;QACV,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,GAAG,CAAC,EAAE,MAAM,CAAA;KACb,CAAA;CACF;AAED,MAAM,WAAW,uBAAuB;IACtC,yCAAyC;IACzC,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC/B,mCAAmC;IACnC,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IAC9B,qCAAqC;IACrC,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAA;IACvB,4BAA4B;IAC5B,MAAM,EAAE,mBAAmB,CAAA;IAC3B,mCAAmC;IACnC,QAAQ,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAA;IAC/C,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2BAA2B;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,wBAAwB;IACxB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,2BAA2B;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,kCAAkC;IAClC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,4BAA4B;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,uBAAuB;IACvB,MAAM,CAAC,EAAE,UAAU,GAAG,YAAY,CAAA;CACnC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,UAAe,EACf,UAAU,EACV,UAAe,EACf,MAAM,EACN,QAAQ,EACR,SAAS,EACT,QAAgB,EAChB,MAAgB,EAChB,cAAqB,EACrB,eAAsB,EACtB,WAAkB,EAClB,eAAyC,EACzC,YAAmB,EACnB,MAAmB,GACpB,EAAE,uBAAuB,2CAqNzB"}
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
'use client';
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.ProductFilterPanel = ProductFilterPanel;
|
|
5
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
-
/**
|
|
7
|
-
* @rovela/sdk/products/components/ProductFilters
|
|
8
|
-
*
|
|
9
|
-
* Comprehensive filter panel for product listings.
|
|
10
|
-
*/
|
|
11
|
-
const react_1 = require("react");
|
|
12
|
-
const utils_1 = require("../../core/utils");
|
|
13
|
-
// =============================================================================
|
|
14
|
-
// Component
|
|
15
|
-
// =============================================================================
|
|
16
|
-
/**
|
|
17
|
-
* ProductFilterPanel component for filtering product listings.
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```tsx
|
|
21
|
-
* import { ProductFilters, useProductAttributes } from '@rovela/sdk/products'
|
|
22
|
-
*
|
|
23
|
-
* function Sidebar() {
|
|
24
|
-
* const { attributes, priceRange } = useProductAttributes()
|
|
25
|
-
* const [filters, setFilters] = useState({
|
|
26
|
-
* categories: [],
|
|
27
|
-
* attributes: {},
|
|
28
|
-
* priceRange: {},
|
|
29
|
-
* })
|
|
30
|
-
*
|
|
31
|
-
* return (
|
|
32
|
-
* <ProductFilters
|
|
33
|
-
* attributes={attributes}
|
|
34
|
-
* priceRange={priceRange}
|
|
35
|
-
* values={filters}
|
|
36
|
-
* onChange={setFilters}
|
|
37
|
-
* collapsible
|
|
38
|
-
* showClearAll
|
|
39
|
-
* />
|
|
40
|
-
* )
|
|
41
|
-
* }
|
|
42
|
-
* ```
|
|
43
|
-
*/
|
|
44
|
-
function ProductFilterPanel({ attributes = [], priceRange, categories = [], values, onChange, className, currency = 'USD', locale = 'en-US', showCategories = true, showPriceFilter = true, collapsible = true, defaultExpanded = ['price', 'categories'], showClearAll = true, layout = 'vertical', }) {
|
|
45
|
-
const [expandedSections, setExpandedSections] = (0, react_1.useState)(new Set(defaultExpanded));
|
|
46
|
-
// Check if any filters are active
|
|
47
|
-
const hasActiveFilters = (0, react_1.useMemo)(() => {
|
|
48
|
-
return (values.categories.length > 0 ||
|
|
49
|
-
Object.values(values.attributes).some((v) => v.length > 0) ||
|
|
50
|
-
values.priceRange.min !== undefined ||
|
|
51
|
-
values.priceRange.max !== undefined);
|
|
52
|
-
}, [values]);
|
|
53
|
-
// Toggle section expansion
|
|
54
|
-
const toggleSection = (0, react_1.useCallback)((section) => {
|
|
55
|
-
setExpandedSections((prev) => {
|
|
56
|
-
const next = new Set(prev);
|
|
57
|
-
if (next.has(section)) {
|
|
58
|
-
next.delete(section);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
next.add(section);
|
|
62
|
-
}
|
|
63
|
-
return next;
|
|
64
|
-
});
|
|
65
|
-
}, []);
|
|
66
|
-
// Handle category toggle
|
|
67
|
-
const handleCategoryToggle = (0, react_1.useCallback)((categoryId) => {
|
|
68
|
-
const newCategories = values.categories.includes(categoryId)
|
|
69
|
-
? values.categories.filter((id) => id !== categoryId)
|
|
70
|
-
: [...values.categories, categoryId];
|
|
71
|
-
onChange({ ...values, categories: newCategories });
|
|
72
|
-
}, [values, onChange]);
|
|
73
|
-
// Handle attribute toggle
|
|
74
|
-
const handleAttributeToggle = (0, react_1.useCallback)((attributeName, attributeValue) => {
|
|
75
|
-
const currentValues = values.attributes[attributeName] || [];
|
|
76
|
-
const newValues = currentValues.includes(attributeValue)
|
|
77
|
-
? currentValues.filter((v) => v !== attributeValue)
|
|
78
|
-
: [...currentValues, attributeValue];
|
|
79
|
-
onChange({
|
|
80
|
-
...values,
|
|
81
|
-
attributes: {
|
|
82
|
-
...values.attributes,
|
|
83
|
-
[attributeName]: newValues,
|
|
84
|
-
},
|
|
85
|
-
});
|
|
86
|
-
}, [values, onChange]);
|
|
87
|
-
// Handle price range change
|
|
88
|
-
const handlePriceChange = (0, react_1.useCallback)((type, value) => {
|
|
89
|
-
onChange({
|
|
90
|
-
...values,
|
|
91
|
-
priceRange: {
|
|
92
|
-
...values.priceRange,
|
|
93
|
-
[type]: value,
|
|
94
|
-
},
|
|
95
|
-
});
|
|
96
|
-
}, [values, onChange]);
|
|
97
|
-
// Clear all filters
|
|
98
|
-
const handleClearAll = (0, react_1.useCallback)(() => {
|
|
99
|
-
onChange({
|
|
100
|
-
categories: [],
|
|
101
|
-
attributes: {},
|
|
102
|
-
priceRange: {},
|
|
103
|
-
});
|
|
104
|
-
}, [onChange]);
|
|
105
|
-
const containerClasses = (0, utils_1.cn)(layout === 'vertical' ? 'space-y-4' : 'flex flex-wrap gap-4', className);
|
|
106
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: containerClasses, children: [showClearAll && hasActiveFilters && ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-sm font-medium text-foreground", children: "Filters" }), (0, jsx_runtime_1.jsx)("button", { onClick: handleClearAll, className: "text-sm text-primary hover:underline", children: "Clear all" })] })), showCategories && categories.length > 0 && ((0, jsx_runtime_1.jsx)(FilterSection, { title: "Category", sectionId: "categories", isExpanded: expandedSections.has('categories'), onToggle: collapsible ? () => toggleSection('categories') : undefined, layout: layout, children: (0, jsx_runtime_1.jsx)("div", { className: "space-y-2", children: categories.map((category) => ((0, jsx_runtime_1.jsxs)("label", { className: "flex cursor-pointer items-center gap-2", children: [(0, jsx_runtime_1.jsx)("input", { type: "checkbox", checked: values.categories.includes(category.id), onChange: () => handleCategoryToggle(category.id), className: "h-4 w-4 rounded border-border text-primary focus:ring-primary" }), (0, jsx_runtime_1.jsx)("span", { className: "text-sm text-foreground", children: category.name })] }, category.id))) }) })), showPriceFilter && priceRange && ((0, jsx_runtime_1.jsx)(FilterSection, { title: "Price", sectionId: "price", isExpanded: expandedSections.has('price'), onToggle: collapsible ? () => toggleSection('price') : undefined, layout: layout, children: (0, jsx_runtime_1.jsxs)("div", { className: "space-y-3", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex-1", children: [(0, jsx_runtime_1.jsx)("label", { className: "sr-only", children: "Min price" }), (0, jsx_runtime_1.jsx)("input", { type: "number", placeholder: (0, utils_1.formatPrice)(priceRange.min, { currency, locale }), value: values.priceRange.min ?? '', onChange: (e) => handlePriceChange('min', e.target.value ? parseFloat(e.target.value) : undefined), min: 0, className: "w-full rounded-md border border-border bg-background px-3 py-1.5 text-sm focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary" })] }), (0, jsx_runtime_1.jsx)("span", { className: "text-muted-foreground", children: "to" }), (0, jsx_runtime_1.jsxs)("div", { className: "flex-1", children: [(0, jsx_runtime_1.jsx)("label", { className: "sr-only", children: "Max price" }), (0, jsx_runtime_1.jsx)("input", { type: "number", placeholder: (0, utils_1.formatPrice)(priceRange.max, { currency, locale }), value: values.priceRange.max ?? '', onChange: (e) => handlePriceChange('max', e.target.value ? parseFloat(e.target.value) : undefined), min: 0, className: "w-full rounded-md border border-border bg-background px-3 py-1.5 text-sm focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary" })] })] }), (0, jsx_runtime_1.jsxs)("p", { className: "text-xs text-muted-foreground", children: ["Range: ", (0, utils_1.formatPrice)(priceRange.min, { currency, locale }), " -", ' ', (0, utils_1.formatPrice)(priceRange.max, { currency, locale })] })] }) })), attributes.map((attribute) => ((0, jsx_runtime_1.jsx)(FilterSection, { title: formatAttributeName(attribute.name), sectionId: attribute.name, isExpanded: expandedSections.has(attribute.name), onToggle: collapsible ? () => toggleSection(attribute.name) : undefined, layout: layout, children: (0, jsx_runtime_1.jsx)("div", { className: "space-y-2", children: attribute.values.map((value) => ((0, jsx_runtime_1.jsxs)("label", { className: "flex cursor-pointer items-center gap-2", children: [(0, jsx_runtime_1.jsx)("input", { type: "checkbox", checked: (values.attributes[attribute.name] || []).includes(value), onChange: () => handleAttributeToggle(attribute.name, value), className: "h-4 w-4 rounded border-border text-primary focus:ring-primary" }), (0, jsx_runtime_1.jsx)("span", { className: "text-sm text-foreground", children: value })] }, value))) }) }, attribute.name)))] }));
|
|
107
|
-
}
|
|
108
|
-
function FilterSection({ title, sectionId, isExpanded, onToggle, children, layout = 'vertical', }) {
|
|
109
|
-
const isCollapsible = !!onToggle;
|
|
110
|
-
if (layout === 'horizontal') {
|
|
111
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: "rounded-md border border-border p-3", children: [(0, jsx_runtime_1.jsx)("span", { className: "mb-2 block text-sm font-medium text-foreground", children: title }), children] }));
|
|
112
|
-
}
|
|
113
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: "border-b border-border pb-4", children: [isCollapsible ? ((0, jsx_runtime_1.jsxs)("button", { onClick: onToggle, className: "flex w-full items-center justify-between py-2 text-sm font-medium text-foreground", "aria-expanded": isExpanded, "aria-controls": `filter-section-${sectionId}`, children: [(0, jsx_runtime_1.jsx)("span", { children: title }), (0, jsx_runtime_1.jsx)("svg", { className: (0, utils_1.cn)('h-4 w-4 text-muted-foreground transition-transform', isExpanded && 'rotate-180'), fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) })] })) : ((0, jsx_runtime_1.jsx)("span", { className: "block py-2 text-sm font-medium text-foreground", children: title })), (!isCollapsible || isExpanded) && ((0, jsx_runtime_1.jsx)("div", { id: `filter-section-${sectionId}`, children: children }))] }));
|
|
114
|
-
}
|
|
115
|
-
// =============================================================================
|
|
116
|
-
// Helpers
|
|
117
|
-
// =============================================================================
|
|
118
|
-
function formatAttributeName(name) {
|
|
119
|
-
return name
|
|
120
|
-
.replace(/_/g, ' ')
|
|
121
|
-
.replace(/([A-Z])/g, ' $1')
|
|
122
|
-
.trim()
|
|
123
|
-
.split(' ')
|
|
124
|
-
.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
125
|
-
.join(' ');
|
|
126
|
-
}
|
|
127
|
-
//# sourceMappingURL=ProductFilters.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProductFilters.js","sourceRoot":"","sources":["../../../src/products/components/ProductFilters.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
export interface ProductGalleryProps {
|
|
2
|
-
/** Array of image URLs */
|
|
3
|
-
images: string[];
|
|
4
|
-
/** Alt text for images */
|
|
5
|
-
alt: string;
|
|
6
|
-
/** Custom className */
|
|
7
|
-
className?: string;
|
|
8
|
-
/** Thumbnail position */
|
|
9
|
-
thumbnailPosition?: 'bottom' | 'left';
|
|
10
|
-
/** Main image aspect ratio */
|
|
11
|
-
aspectRatio?: 'square' | 'portrait' | 'landscape';
|
|
12
|
-
/** Enable zoom on click */
|
|
13
|
-
enableZoom?: boolean;
|
|
14
|
-
/** Show navigation arrows */
|
|
15
|
-
showArrows?: boolean;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* ProductGallery component for displaying product images.
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```tsx
|
|
22
|
-
* import { ProductGallery } from '@rovela/sdk/products'
|
|
23
|
-
*
|
|
24
|
-
* function ProductPage({ product }) {
|
|
25
|
-
* return (
|
|
26
|
-
* <ProductGallery
|
|
27
|
-
* images={product.images}
|
|
28
|
-
* alt={product.name}
|
|
29
|
-
* thumbnailPosition="left"
|
|
30
|
-
* aspectRatio="square"
|
|
31
|
-
* />
|
|
32
|
-
* )
|
|
33
|
-
* }
|
|
34
|
-
* ```
|
|
35
|
-
*/
|
|
36
|
-
export declare function ProductGallery({ images, alt, className, thumbnailPosition, aspectRatio, enableZoom, showArrows, }: ProductGalleryProps): import("react/jsx-runtime").JSX.Element;
|
|
37
|
-
//# sourceMappingURL=ProductGallery.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProductGallery.d.ts","sourceRoot":"","sources":["../../../src/products/components/ProductGallery.tsx"],"names":[],"mappings":"AAgBA,MAAM,WAAW,mBAAmB;IAClC,0BAA0B;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yBAAyB;IACzB,iBAAiB,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;IACrC,8BAA8B;IAC9B,WAAW,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAA;IACjD,2BAA2B;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,GAAG,EACH,SAAS,EACT,iBAA4B,EAC5B,WAAsB,EACtB,UAAkB,EAClB,UAAiB,GAClB,EAAE,mBAAmB,2CA+NrB"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
'use client';
|
|
3
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
-
};
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.ProductGallery = ProductGallery;
|
|
8
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
9
|
-
/**
|
|
10
|
-
* @rovela/sdk/products/components/ProductGallery
|
|
11
|
-
*
|
|
12
|
-
* Image gallery component for product pages.
|
|
13
|
-
*/
|
|
14
|
-
const react_1 = require("react");
|
|
15
|
-
const image_1 = __importDefault(require("next/image"));
|
|
16
|
-
const utils_1 = require("../../core/utils");
|
|
17
|
-
// =============================================================================
|
|
18
|
-
// Component
|
|
19
|
-
// =============================================================================
|
|
20
|
-
/**
|
|
21
|
-
* ProductGallery component for displaying product images.
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* ```tsx
|
|
25
|
-
* import { ProductGallery } from '@rovela/sdk/products'
|
|
26
|
-
*
|
|
27
|
-
* function ProductPage({ product }) {
|
|
28
|
-
* return (
|
|
29
|
-
* <ProductGallery
|
|
30
|
-
* images={product.images}
|
|
31
|
-
* alt={product.name}
|
|
32
|
-
* thumbnailPosition="left"
|
|
33
|
-
* aspectRatio="square"
|
|
34
|
-
* />
|
|
35
|
-
* )
|
|
36
|
-
* }
|
|
37
|
-
* ```
|
|
38
|
-
*/
|
|
39
|
-
function ProductGallery({ images, alt, className, thumbnailPosition = 'bottom', aspectRatio = 'square', enableZoom = false, showArrows = true, }) {
|
|
40
|
-
const [activeIndex, setActiveIndex] = (0, react_1.useState)(0);
|
|
41
|
-
const [isZoomed, setIsZoomed] = (0, react_1.useState)(false);
|
|
42
|
-
const aspectClasses = {
|
|
43
|
-
square: 'aspect-square',
|
|
44
|
-
portrait: 'aspect-[3/4]',
|
|
45
|
-
landscape: 'aspect-[4/3]',
|
|
46
|
-
};
|
|
47
|
-
// Handle keyboard navigation
|
|
48
|
-
const handleKeyDown = (0, react_1.useCallback)((e) => {
|
|
49
|
-
if (e.key === 'ArrowLeft') {
|
|
50
|
-
setActiveIndex((prev) => (prev > 0 ? prev - 1 : images.length - 1));
|
|
51
|
-
}
|
|
52
|
-
else if (e.key === 'ArrowRight') {
|
|
53
|
-
setActiveIndex((prev) => (prev < images.length - 1 ? prev + 1 : 0));
|
|
54
|
-
}
|
|
55
|
-
}, [images.length]);
|
|
56
|
-
const goToPrevious = (0, react_1.useCallback)(() => {
|
|
57
|
-
setActiveIndex((prev) => (prev > 0 ? prev - 1 : images.length - 1));
|
|
58
|
-
}, [images.length]);
|
|
59
|
-
const goToNext = (0, react_1.useCallback)(() => {
|
|
60
|
-
setActiveIndex((prev) => (prev < images.length - 1 ? prev + 1 : 0));
|
|
61
|
-
}, [images.length]);
|
|
62
|
-
const handleThumbnailClick = (0, react_1.useCallback)((index) => {
|
|
63
|
-
setActiveIndex(index);
|
|
64
|
-
}, []);
|
|
65
|
-
const handleMainImageClick = (0, react_1.useCallback)(() => {
|
|
66
|
-
if (enableZoom) {
|
|
67
|
-
setIsZoomed(!isZoomed);
|
|
68
|
-
}
|
|
69
|
-
}, [enableZoom, isZoomed]);
|
|
70
|
-
// Empty state
|
|
71
|
-
if (!images || images.length === 0) {
|
|
72
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.cn)('relative overflow-hidden rounded-lg bg-muted', aspectClasses[aspectRatio], className), children: (0, jsx_runtime_1.jsx)("div", { className: "absolute inset-0 flex items-center justify-center text-muted-foreground", children: (0, jsx_runtime_1.jsx)("svg", { className: "h-16 w-16", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.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" }) }) }) }));
|
|
73
|
-
}
|
|
74
|
-
const containerClasses = (0, utils_1.cn)('flex gap-4', thumbnailPosition === 'left' ? 'flex-row' : 'flex-col', className);
|
|
75
|
-
const thumbnailContainerClasses = (0, utils_1.cn)('flex gap-2', thumbnailPosition === 'left' ? 'flex-col' : 'flex-row', thumbnailPosition === 'left' ? 'order-first w-20' : 'order-last');
|
|
76
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: containerClasses, onKeyDown: handleKeyDown, tabIndex: 0, children: [(0, jsx_runtime_1.jsxs)("div", { className: "relative flex-1", children: [(0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.cn)('relative overflow-hidden rounded-lg bg-muted', aspectClasses[aspectRatio], enableZoom && 'cursor-zoom-in'), onClick: handleMainImageClick, children: (0, jsx_runtime_1.jsx)(image_1.default, { src: images[activeIndex], alt: `${alt} - Image ${activeIndex + 1}`, fill: true, sizes: "(max-width: 768px) 100vw, 50vw", className: (0, utils_1.cn)('object-cover transition-transform duration-300', isZoomed && 'scale-150 cursor-zoom-out'), priority: activeIndex === 0 }) }), showArrows && images.length > 1 && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("button", { type: "button", onClick: goToPrevious, className: "absolute left-2 top-1/2 -translate-y-1/2 rounded-full bg-background/80 p-2 shadow-sm transition-colors hover:bg-background", "aria-label": "Previous image", children: (0, jsx_runtime_1.jsx)("svg", { className: "h-5 w-5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" }) }) }), (0, jsx_runtime_1.jsx)("button", { type: "button", onClick: goToNext, className: "absolute right-2 top-1/2 -translate-y-1/2 rounded-full bg-background/80 p-2 shadow-sm transition-colors hover:bg-background", "aria-label": "Next image", children: (0, jsx_runtime_1.jsx)("svg", { className: "h-5 w-5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) }) })] })), images.length > 1 && ((0, jsx_runtime_1.jsxs)("div", { className: "absolute bottom-2 right-2 rounded-full bg-background/80 px-2 py-1 text-xs font-medium", children: [activeIndex + 1, " / ", images.length] }))] }), images.length > 1 && ((0, jsx_runtime_1.jsx)("div", { className: thumbnailContainerClasses, children: images.map((image, index) => ((0, jsx_runtime_1.jsx)("button", { type: "button", onClick: () => handleThumbnailClick(index), className: (0, utils_1.cn)('relative aspect-square overflow-hidden rounded-md transition-all', thumbnailPosition === 'left' ? 'w-full' : 'w-16 sm:w-20', activeIndex === index
|
|
77
|
-
? 'ring-2 ring-primary ring-offset-2'
|
|
78
|
-
: 'opacity-70 hover:opacity-100'), "aria-label": `View image ${index + 1}`, "aria-current": activeIndex === index ? 'true' : 'false', children: (0, jsx_runtime_1.jsx)(image_1.default, { src: image, alt: `${alt} thumbnail ${index + 1}`, fill: true, sizes: "80px", className: "object-cover" }) }, index))) })), isZoomed && enableZoom && ((0, jsx_runtime_1.jsxs)("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-black/80", onClick: () => setIsZoomed(false), children: [(0, jsx_runtime_1.jsx)("button", { className: "absolute right-4 top-4 rounded-full bg-white/10 p-2 text-white transition-colors hover:bg-white/20", onClick: () => setIsZoomed(false), "aria-label": "Close zoom", children: (0, jsx_runtime_1.jsx)("svg", { className: "h-6 w-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) }), (0, jsx_runtime_1.jsx)("div", { className: "relative h-[90vh] w-[90vw]", children: (0, jsx_runtime_1.jsx)(image_1.default, { src: images[activeIndex], alt: `${alt} - Zoomed`, fill: true, sizes: "90vw", className: "object-contain" }) })] }))] }));
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=ProductGallery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProductGallery.js","sourceRoot":"","sources":["../../../src/products/components/ProductGallery.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { type ProductCardProps } from './ProductCard';
|
|
2
|
-
import type { Product } from '../../core/types';
|
|
3
|
-
export interface ProductGridProps {
|
|
4
|
-
/** Products to display */
|
|
5
|
-
products: Product[];
|
|
6
|
-
/** Number of columns on different screen sizes */
|
|
7
|
-
columns?: {
|
|
8
|
-
sm?: 1 | 2;
|
|
9
|
-
md?: 2 | 3 | 4;
|
|
10
|
-
lg?: 3 | 4 | 5 | 6;
|
|
11
|
-
};
|
|
12
|
-
/** Gap between items */
|
|
13
|
-
gap?: 'sm' | 'md' | 'lg';
|
|
14
|
-
/** Custom className */
|
|
15
|
-
className?: string;
|
|
16
|
-
/** Props to pass to each ProductCard */
|
|
17
|
-
cardProps?: Omit<ProductCardProps, 'product'>;
|
|
18
|
-
/** Empty state content */
|
|
19
|
-
emptyState?: React.ReactNode;
|
|
20
|
-
/** Loading state */
|
|
21
|
-
isLoading?: boolean;
|
|
22
|
-
/** Number of skeleton cards to show while loading */
|
|
23
|
-
skeletonCount?: number;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* ProductGrid component for displaying products in a responsive grid.
|
|
27
|
-
*
|
|
28
|
-
* @example
|
|
29
|
-
* ```tsx
|
|
30
|
-
* import { ProductGrid } from '@rovela/sdk/products'
|
|
31
|
-
*
|
|
32
|
-
* function ProductListing() {
|
|
33
|
-
* const { products, isLoading } = useProducts()
|
|
34
|
-
*
|
|
35
|
-
* return (
|
|
36
|
-
* <ProductGrid
|
|
37
|
-
* products={products}
|
|
38
|
-
* isLoading={isLoading}
|
|
39
|
-
* columns={{ sm: 2, md: 3, lg: 4 }}
|
|
40
|
-
* cardProps={{
|
|
41
|
-
* showQuickAdd: true,
|
|
42
|
-
* onQuickAdd: handleQuickAdd,
|
|
43
|
-
* }}
|
|
44
|
-
* />
|
|
45
|
-
* )
|
|
46
|
-
* }
|
|
47
|
-
* ```
|
|
48
|
-
*/
|
|
49
|
-
export declare function ProductGrid({ products, columns, gap, className, cardProps, emptyState, isLoading, skeletonCount, }: ProductGridProps): import("react/jsx-runtime").JSX.Element;
|
|
50
|
-
//# sourceMappingURL=ProductGrid.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProductGrid.d.ts","sourceRoot":"","sources":["../../../src/products/components/ProductGrid.tsx"],"names":[],"mappings":"AASA,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAM/C,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,kDAAkD;IAClD,OAAO,CAAC,EAAE;QACR,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;QACV,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACd,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;KACnB,CAAA;IACD,wBAAwB;IACxB,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IACxB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wCAAwC;IACxC,SAAS,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAA;IAC7C,0BAA0B;IAC1B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC5B,oBAAoB;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,OAAiC,EACjC,GAAU,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAiB,EACjB,aAAiB,GAClB,EAAE,gBAAgB,2CAiFlB"}
|