@rovela-ai/sdk 0.1.17 → 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.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 +35 -34
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminHeader.js","sourceRoot":"","sources":["../../../src/admin/components/AdminHeader.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AdminHeader.js","sourceRoot":"","sources":["../../../src/admin/components/AdminHeader.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
'use client';
|
|
3
|
-
|
|
4
|
-
exports.AdminLayout = AdminLayout;
|
|
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/admin/components/AdminLayout
|
|
8
5
|
*
|
|
9
6
|
* Admin dashboard layout with sidebar and header.
|
|
10
7
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
import { AdminNav } from './AdminNav';
|
|
9
|
+
import { AdminHeader } from './AdminHeader';
|
|
13
10
|
// =============================================================================
|
|
14
11
|
// Component
|
|
15
12
|
// =============================================================================
|
|
@@ -40,7 +37,7 @@ const AdminHeader_1 = require("./AdminHeader");
|
|
|
40
37
|
* </AdminLayout>
|
|
41
38
|
* ```
|
|
42
39
|
*/
|
|
43
|
-
function AdminLayout({ children, activeNav, title, storeName = 'Admin', storeUrl = '/', navItems, logo, className = '', }) {
|
|
44
|
-
return ((
|
|
40
|
+
export function AdminLayout({ children, activeNav, title, storeName = 'Admin', storeUrl = '/', navItems, logo, className = '', }) {
|
|
41
|
+
return (_jsxs("div", { className: `flex h-screen bg-background ${className}`, children: [_jsx(AdminNav, { activeNav: activeNav, items: navItems, storeName: storeName, logo: logo }), _jsxs("div", { className: "flex flex-1 flex-col overflow-hidden", children: [_jsx(AdminHeader, { title: title, storeUrl: storeUrl }), _jsx("main", { className: "flex-1 overflow-y-auto bg-background p-6", children: children })] })] }));
|
|
45
42
|
}
|
|
46
43
|
//# sourceMappingURL=AdminLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminLayout.js","sourceRoot":"","sources":["../../../src/admin/components/AdminLayout.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AdminLayout.js","sourceRoot":"","sources":["../../../src/admin/components/AdminLayout.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAqB3C,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,QAAQ,EACR,SAAS,EACT,KAAK,EACL,SAAS,GAAG,OAAO,EACnB,QAAQ,GAAG,GAAG,EACd,QAAQ,EACR,IAAI,EACJ,SAAS,GAAG,EAAE,GACW;IACzB,OAAO,CACL,eAAK,SAAS,EAAE,+BAA+B,SAAS,EAAE,aAExD,KAAC,QAAQ,IACP,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,GACV,EAGF,eAAK,SAAS,EAAC,sCAAsC,aAEnD,KAAC,WAAW,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAI,EAGjD,eAAM,SAAS,EAAC,0CAA0C,YACvD,QAAQ,GACJ,IACH,IACF,CACP,CAAA;AACH,CAAC"}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
'use client';
|
|
3
|
-
|
|
4
|
-
exports.AdminLoginForm = AdminLoginForm;
|
|
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/admin/components/AdminLoginForm
|
|
8
5
|
*
|
|
9
6
|
* Admin sign in form component.
|
|
10
7
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
import { useState, useCallback } from 'react';
|
|
9
|
+
import { useAdminAuth } from '../hooks/useAdminAuth';
|
|
13
10
|
/**
|
|
14
11
|
* Admin login form.
|
|
15
12
|
*
|
|
@@ -25,13 +22,13 @@ const useAdminAuth_1 = require("../hooks/useAdminAuth");
|
|
|
25
22
|
* />
|
|
26
23
|
* ```
|
|
27
24
|
*/
|
|
28
|
-
function AdminLoginForm({ redirectTo = '/admin', onSuccess, className = '', }) {
|
|
29
|
-
const { signIn, isLoading: authLoading } =
|
|
30
|
-
const [email, setEmail] =
|
|
31
|
-
const [password, setPassword] =
|
|
32
|
-
const [error, setError] =
|
|
33
|
-
const [isSubmitting, setIsSubmitting] =
|
|
34
|
-
const handleSubmit =
|
|
25
|
+
export function AdminLoginForm({ redirectTo = '/admin', onSuccess, className = '', }) {
|
|
26
|
+
const { signIn, isLoading: authLoading } = useAdminAuth();
|
|
27
|
+
const [email, setEmail] = useState('');
|
|
28
|
+
const [password, setPassword] = useState('');
|
|
29
|
+
const [error, setError] = useState(null);
|
|
30
|
+
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
31
|
+
const handleSubmit = useCallback(async (e) => {
|
|
35
32
|
e.preventDefault();
|
|
36
33
|
setError(null);
|
|
37
34
|
setIsSubmitting(true);
|
|
@@ -53,6 +50,6 @@ function AdminLoginForm({ redirectTo = '/admin', onSuccess, className = '', }) {
|
|
|
53
50
|
}
|
|
54
51
|
}, [email, password, redirectTo, signIn, onSuccess]);
|
|
55
52
|
const isLoading = isSubmitting || authLoading;
|
|
56
|
-
return ((
|
|
53
|
+
return (_jsxs("div", { className: `w-full max-w-sm ${className}`, children: [_jsxs("div", { className: "mb-8 text-center", children: [_jsx("h1", { className: "text-2xl font-semibold text-foreground", children: "Admin Sign In" }), _jsx("p", { className: "mt-2 text-sm text-muted-foreground", children: "Enter your credentials to access the admin panel" })] }), _jsxs("form", { onSubmit: handleSubmit, className: "space-y-4", children: [error && (_jsx("div", { className: "rounded-md bg-destructive/10 px-4 py-3 text-sm text-destructive", children: error })), _jsxs("div", { children: [_jsx("label", { htmlFor: "email", className: "block text-sm font-medium text-foreground", children: "Email" }), _jsx("input", { id: "email", type: "email", value: email, onChange: (e) => setEmail(e.target.value), required: true, autoComplete: "email", disabled: isLoading, className: "mt-1 block w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50", placeholder: "admin@example.com" })] }), _jsxs("div", { children: [_jsx("label", { htmlFor: "password", className: "block text-sm font-medium text-foreground", children: "Password" }), _jsx("input", { id: "password", type: "password", value: password, onChange: (e) => setPassword(e.target.value), required: true, autoComplete: "current-password", disabled: isLoading, className: "mt-1 block w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50", placeholder: "Enter your password" })] }), _jsx("button", { type: "submit", disabled: isLoading, className: "w-full rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", children: isLoading ? (_jsxs("span", { className: "flex items-center justify-center gap-2", children: [_jsx("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent" }), "Signing in..."] })) : ('Sign In') })] })] }));
|
|
57
54
|
}
|
|
58
55
|
//# sourceMappingURL=AdminLoginForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminLoginForm.js","sourceRoot":"","sources":["../../../src/admin/components/AdminLoginForm.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AdminLoginForm.js","sourceRoot":"","sources":["../../../src/admin/components/AdminLoginForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
'use client';
|
|
3
|
-
|
|
4
|
-
exports.AdminNav = AdminNav;
|
|
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
|
// Default Navigation Items
|
|
8
5
|
// =============================================================================
|
|
@@ -17,19 +14,19 @@ const defaultNavItems = [
|
|
|
17
14
|
// Icons (inline SVG to avoid dependencies)
|
|
18
15
|
// =============================================================================
|
|
19
16
|
function DashboardIcon() {
|
|
20
|
-
return ((
|
|
17
|
+
return (_jsx("svg", { className: "h-5 w-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zM14 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zM14 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z" }) }));
|
|
21
18
|
}
|
|
22
19
|
function ProductsIcon() {
|
|
23
|
-
return ((
|
|
20
|
+
return (_jsx("svg", { className: "h-5 w-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4" }) }));
|
|
24
21
|
}
|
|
25
22
|
function OrdersIcon() {
|
|
26
|
-
return ((
|
|
23
|
+
return (_jsx("svg", { className: "h-5 w-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" }) }));
|
|
27
24
|
}
|
|
28
25
|
function CustomersIcon() {
|
|
29
|
-
return ((
|
|
26
|
+
return (_jsx("svg", { className: "h-5 w-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z" }) }));
|
|
30
27
|
}
|
|
31
28
|
function SettingsIcon() {
|
|
32
|
-
return ((
|
|
29
|
+
return (_jsxs("svg", { className: "h-5 w-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: [_jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z" }), _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z" })] }));
|
|
33
30
|
}
|
|
34
31
|
const iconMap = {
|
|
35
32
|
dashboard: DashboardIcon,
|
|
@@ -49,13 +46,13 @@ const iconMap = {
|
|
|
49
46
|
* <AdminNav activeNav="dashboard" storeName="My Store" />
|
|
50
47
|
* ```
|
|
51
48
|
*/
|
|
52
|
-
function AdminNav({ activeNav, items = defaultNavItems, storeName = 'Admin', logo, className = '', }) {
|
|
53
|
-
return ((
|
|
49
|
+
export function AdminNav({ activeNav, items = defaultNavItems, storeName = 'Admin', logo, className = '', }) {
|
|
50
|
+
return (_jsxs("nav", { className: `flex h-full w-64 flex-col border-r border-border bg-card ${className}`, children: [_jsx("div", { className: "flex h-16 items-center border-b border-border px-6", children: logo || (_jsx("span", { className: "text-lg font-semibold text-foreground", children: storeName })) }), _jsx("div", { className: "flex-1 overflow-y-auto py-4", children: _jsx("ul", { className: "space-y-1 px-3", children: items.map((item) => {
|
|
54
51
|
const isActive = activeNav === item.id;
|
|
55
52
|
const Icon = item.icon || iconMap[item.id];
|
|
56
|
-
return ((
|
|
53
|
+
return (_jsx("li", { children: _jsxs("a", { href: item.href, className: `flex items-center gap-3 rounded-md px-3 py-2 text-sm font-medium transition-colors ${isActive
|
|
57
54
|
? 'bg-primary text-primary-foreground'
|
|
58
|
-
: 'text-muted-foreground hover:bg-accent hover:text-accent-foreground'}`, children: [typeof Icon === 'function' ? (
|
|
59
|
-
}) }) }), (
|
|
55
|
+
: 'text-muted-foreground hover:bg-accent hover:text-accent-foreground'}`, children: [typeof Icon === 'function' ? _jsx(Icon, {}) : Icon, item.label] }) }, item.id));
|
|
56
|
+
}) }) }), _jsx("div", { className: "border-t border-border p-4", children: _jsx("p", { className: "text-xs text-muted-foreground", children: "Powered by Rovela" }) })] }));
|
|
60
57
|
}
|
|
61
58
|
//# sourceMappingURL=AdminNav.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminNav.js","sourceRoot":"","sources":["../../../src/admin/components/AdminNav.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AdminNav.js","sourceRoot":"","sources":["../../../src/admin/components/AdminNav.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
'use client';
|
|
3
|
-
|
|
4
|
-
exports.AdminSetupForm = AdminSetupForm;
|
|
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/admin/components/AdminSetupForm
|
|
8
5
|
*
|
|
9
6
|
* First-time admin account setup form.
|
|
10
7
|
* Used when no admin exists for the store.
|
|
11
8
|
*/
|
|
12
|
-
|
|
9
|
+
import { useState, useCallback } from 'react';
|
|
13
10
|
/**
|
|
14
11
|
* Admin setup form for first-time account creation.
|
|
15
12
|
*
|
|
@@ -25,14 +22,14 @@ const react_1 = require("react");
|
|
|
25
22
|
* />
|
|
26
23
|
* ```
|
|
27
24
|
*/
|
|
28
|
-
function AdminSetupForm({ defaultEmail = '', onSuccess, className = '', }) {
|
|
29
|
-
const [email, setEmail] =
|
|
30
|
-
const [name, setName] =
|
|
31
|
-
const [password, setPassword] =
|
|
32
|
-
const [confirmPassword, setConfirmPassword] =
|
|
33
|
-
const [error, setError] =
|
|
34
|
-
const [isSubmitting, setIsSubmitting] =
|
|
35
|
-
const handleSubmit =
|
|
25
|
+
export function AdminSetupForm({ defaultEmail = '', onSuccess, className = '', }) {
|
|
26
|
+
const [email, setEmail] = useState(defaultEmail);
|
|
27
|
+
const [name, setName] = useState('');
|
|
28
|
+
const [password, setPassword] = useState('');
|
|
29
|
+
const [confirmPassword, setConfirmPassword] = useState('');
|
|
30
|
+
const [error, setError] = useState(null);
|
|
31
|
+
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
32
|
+
const handleSubmit = useCallback(async (e) => {
|
|
36
33
|
e.preventDefault();
|
|
37
34
|
setError(null);
|
|
38
35
|
// Validate passwords match
|
|
@@ -78,6 +75,6 @@ function AdminSetupForm({ defaultEmail = '', onSuccess, className = '', }) {
|
|
|
78
75
|
setIsSubmitting(false);
|
|
79
76
|
}
|
|
80
77
|
}, [email, name, password, confirmPassword, onSuccess]);
|
|
81
|
-
return ((
|
|
78
|
+
return (_jsxs("div", { className: `w-full max-w-sm ${className}`, children: [_jsxs("div", { className: "mb-8 text-center", children: [_jsx("h1", { className: "text-2xl font-semibold text-foreground", children: "Set Up Admin Account" }), _jsx("p", { className: "mt-2 text-sm text-muted-foreground", children: "Create your admin account to manage your store" })] }), _jsxs("form", { onSubmit: handleSubmit, className: "space-y-4", children: [error && (_jsx("div", { className: "rounded-md bg-destructive/10 px-4 py-3 text-sm text-destructive", children: error })), _jsxs("div", { children: [_jsx("label", { htmlFor: "setup-email", className: "block text-sm font-medium text-foreground", children: "Email" }), _jsx("input", { id: "setup-email", type: "email", value: email, onChange: (e) => setEmail(e.target.value), required: true, autoComplete: "email", disabled: isSubmitting, className: "mt-1 block w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50", placeholder: "admin@example.com" }), defaultEmail && email === defaultEmail && (_jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: "Pre-filled with store owner email" }))] }), _jsxs("div", { children: [_jsx("label", { htmlFor: "setup-name", className: "block text-sm font-medium text-foreground", children: "Name" }), _jsx("input", { id: "setup-name", type: "text", value: name, onChange: (e) => setName(e.target.value), required: true, autoComplete: "name", disabled: isSubmitting, className: "mt-1 block w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50", placeholder: "Your name" })] }), _jsxs("div", { children: [_jsx("label", { htmlFor: "setup-password", className: "block text-sm font-medium text-foreground", children: "Password" }), _jsx("input", { id: "setup-password", type: "password", value: password, onChange: (e) => setPassword(e.target.value), required: true, autoComplete: "new-password", disabled: isSubmitting, className: "mt-1 block w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50", placeholder: "At least 8 characters" })] }), _jsxs("div", { children: [_jsx("label", { htmlFor: "setup-confirm-password", className: "block text-sm font-medium text-foreground", children: "Confirm Password" }), _jsx("input", { id: "setup-confirm-password", type: "password", value: confirmPassword, onChange: (e) => setConfirmPassword(e.target.value), required: true, autoComplete: "new-password", disabled: isSubmitting, className: "mt-1 block w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50", placeholder: "Confirm your password" })] }), _jsx("button", { type: "submit", disabled: isSubmitting, className: "w-full rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", children: isSubmitting ? (_jsxs("span", { className: "flex items-center justify-center gap-2", children: [_jsx("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent" }), "Creating account..."] })) : ('Create Admin Account') })] })] }));
|
|
82
79
|
}
|
|
83
80
|
//# sourceMappingURL=AdminSetupForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminSetupForm.js","sourceRoot":"","sources":["../../../src/admin/components/AdminSetupForm.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AdminSetupForm.js","sourceRoot":"","sources":["../../../src/admin/components/AdminSetupForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
'use client';
|
|
3
|
-
|
|
4
|
-
exports.InventoryEditor = InventoryEditor;
|
|
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/admin/components/InventoryEditor
|
|
8
5
|
*
|
|
9
6
|
* Inline inventory editing for product variants.
|
|
10
7
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
import { useState, useCallback } from 'react';
|
|
9
|
+
import { useAdminProducts } from '../hooks/useAdminProducts';
|
|
13
10
|
// =============================================================================
|
|
14
11
|
// Component
|
|
15
12
|
// =============================================================================
|
|
@@ -25,20 +22,20 @@ const useAdminProducts_1 = require("../hooks/useAdminProducts");
|
|
|
25
22
|
* />
|
|
26
23
|
* ```
|
|
27
24
|
*/
|
|
28
|
-
function InventoryEditor({ productId, variants, onUpdate, className = '', }) {
|
|
29
|
-
const { updateVariant } =
|
|
30
|
-
const [editingId, setEditingId] =
|
|
31
|
-
const [editValue, setEditValue] =
|
|
32
|
-
const [isUpdating, setIsUpdating] =
|
|
33
|
-
const handleStartEdit =
|
|
25
|
+
export function InventoryEditor({ productId, variants, onUpdate, className = '', }) {
|
|
26
|
+
const { updateVariant } = useAdminProducts();
|
|
27
|
+
const [editingId, setEditingId] = useState(null);
|
|
28
|
+
const [editValue, setEditValue] = useState(0);
|
|
29
|
+
const [isUpdating, setIsUpdating] = useState(false);
|
|
30
|
+
const handleStartEdit = useCallback((variantId, currentValue) => {
|
|
34
31
|
setEditingId(variantId);
|
|
35
32
|
setEditValue(currentValue);
|
|
36
33
|
}, []);
|
|
37
|
-
const handleCancelEdit =
|
|
34
|
+
const handleCancelEdit = useCallback(() => {
|
|
38
35
|
setEditingId(null);
|
|
39
36
|
setEditValue(0);
|
|
40
37
|
}, []);
|
|
41
|
-
const handleSave =
|
|
38
|
+
const handleSave = useCallback(async (variantId) => {
|
|
42
39
|
setIsUpdating(true);
|
|
43
40
|
try {
|
|
44
41
|
const result = await updateVariant(productId, variantId, {
|
|
@@ -53,7 +50,7 @@ function InventoryEditor({ productId, variants, onUpdate, className = '', }) {
|
|
|
53
50
|
setIsUpdating(false);
|
|
54
51
|
}
|
|
55
52
|
}, [productId, editValue, updateVariant, onUpdate]);
|
|
56
|
-
const handleKeyDown =
|
|
53
|
+
const handleKeyDown = useCallback((e, variantId) => {
|
|
57
54
|
if (e.key === 'Enter') {
|
|
58
55
|
handleSave(variantId);
|
|
59
56
|
}
|
|
@@ -62,18 +59,18 @@ function InventoryEditor({ productId, variants, onUpdate, className = '', }) {
|
|
|
62
59
|
}
|
|
63
60
|
}, [handleSave, handleCancelEdit]);
|
|
64
61
|
if (!variants || variants.length === 0) {
|
|
65
|
-
return ((
|
|
62
|
+
return (_jsx("div", { className: `rounded-lg border border-border bg-card p-6 ${className}`, children: _jsx("p", { className: "text-center text-muted-foreground", children: "No variants to manage inventory for." }) }));
|
|
66
63
|
}
|
|
67
|
-
return ((
|
|
64
|
+
return (_jsxs("div", { className: `rounded-lg border border-border bg-card overflow-hidden ${className}`, children: [_jsxs("div", { className: "border-b border-border px-6 py-4", children: [_jsx("h3", { className: "text-lg font-medium text-foreground", children: "Inventory Management" }), _jsx("p", { className: "mt-1 text-sm text-muted-foreground", children: "Click on inventory count to edit" })] }), _jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border bg-muted/50 text-left text-xs font-medium uppercase text-muted-foreground", children: [_jsx("th", { className: "px-6 py-3", children: "Variant" }), _jsx("th", { className: "px-6 py-3", children: "SKU" }), _jsx("th", { className: "px-6 py-3", children: "Price" }), _jsx("th", { className: "px-6 py-3", children: "Inventory" }), _jsx("th", { className: "px-6 py-3", children: "Status" })] }) }), _jsx("tbody", { className: "divide-y divide-border", children: variants.map((variant) => {
|
|
68
65
|
const isEditing = editingId === variant.id;
|
|
69
66
|
const isLowStock = variant.inventory !== undefined && variant.inventory <= 10;
|
|
70
67
|
const isOutOfStock = variant.inventory === 0;
|
|
71
|
-
return ((
|
|
68
|
+
return (_jsxs("tr", { className: "hover:bg-muted/50", children: [_jsxs("td", { className: "px-6 py-4", children: [_jsx("div", { className: "font-medium text-foreground", children: variant.name }), variant.attributes && Object.keys(variant.attributes).length > 0 && (_jsx("div", { className: "mt-1 flex flex-wrap gap-1", children: Object.entries(variant.attributes).map(([key, value]) => (_jsxs("span", { className: "rounded bg-muted px-1.5 py-0.5 text-xs text-muted-foreground", children: [key, ": ", value] }, key))) }))] }), _jsx("td", { className: "px-6 py-4 text-sm text-muted-foreground", children: variant.sku || '—' }), _jsx("td", { className: "px-6 py-4 text-sm text-foreground", children: variant.price
|
|
72
69
|
? new Intl.NumberFormat('en-US', {
|
|
73
70
|
style: 'currency',
|
|
74
71
|
currency: 'USD',
|
|
75
72
|
}).format(parseFloat(variant.price))
|
|
76
|
-
: '—' }), (
|
|
73
|
+
: '—' }), _jsx("td", { className: "px-6 py-4", children: isEditing ? (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("input", { type: "number", min: "0", value: editValue, onChange: (e) => setEditValue(parseInt(e.target.value) || 0), onKeyDown: (e) => handleKeyDown(e, variant.id), autoFocus: true, disabled: isUpdating, className: "w-20 rounded-md border border-input bg-background px-2 py-1 text-sm focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary disabled:opacity-50" }), _jsx("button", { onClick: () => handleSave(variant.id), disabled: isUpdating, className: "rounded-md bg-primary px-2 py-1 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50", children: isUpdating ? '...' : 'Save' }), _jsx("button", { onClick: handleCancelEdit, disabled: isUpdating, className: "rounded-md border border-border px-2 py-1 text-xs text-foreground hover:bg-accent disabled:opacity-50", children: "Cancel" })] })) : (_jsx("button", { onClick: () => handleStartEdit(variant.id, variant.inventory ?? 0), className: "rounded-md border border-transparent px-2 py-1 text-sm font-medium text-foreground hover:border-border hover:bg-muted", children: variant.inventory ?? 0 })) }), _jsx("td", { className: "px-6 py-4", children: _jsx("span", { className: `inline-flex rounded-full px-2 py-1 text-xs font-medium ${isOutOfStock
|
|
77
74
|
? 'bg-red-100 text-red-800'
|
|
78
75
|
: isLowStock
|
|
79
76
|
? 'bg-amber-100 text-amber-800'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InventoryEditor.js","sourceRoot":"","sources":["../../../src/admin/components/InventoryEditor.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"InventoryEditor.js","sourceRoot":"","sources":["../../../src/admin/components/InventoryEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
'use client';
|
|
3
|
-
|
|
4
|
-
exports.LowStockAlert = LowStockAlert;
|
|
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/admin/components/LowStockAlert
|
|
8
5
|
*
|
|
9
6
|
* Low stock inventory warning widget.
|
|
10
7
|
*/
|
|
11
|
-
|
|
8
|
+
import { useAdminStats } from '../hooks/useAdminStats';
|
|
12
9
|
// =============================================================================
|
|
13
10
|
// Component
|
|
14
11
|
// =============================================================================
|
|
@@ -20,16 +17,16 @@ const useAdminStats_1 = require("../hooks/useAdminStats");
|
|
|
20
17
|
* <LowStockAlert threshold={10} viewAllHref="/admin/products?filter=low-stock" />
|
|
21
18
|
* ```
|
|
22
19
|
*/
|
|
23
|
-
function LowStockAlert({ threshold = 10, viewAllHref = '/admin/products', className = '', }) {
|
|
24
|
-
const { lowStock, isLoading } =
|
|
20
|
+
export function LowStockAlert({ threshold = 10, viewAllHref = '/admin/products', className = '', }) {
|
|
21
|
+
const { lowStock, isLoading } = useAdminStats({
|
|
25
22
|
lowStockThreshold: threshold,
|
|
26
23
|
});
|
|
27
24
|
// Don't show if no low stock items
|
|
28
25
|
if (!isLoading && lowStock.length === 0) {
|
|
29
26
|
return null;
|
|
30
27
|
}
|
|
31
|
-
return ((
|
|
28
|
+
return (_jsxs("div", { className: `rounded-lg border border-border bg-card ${className}`, children: [_jsxs("div", { className: "flex items-center justify-between border-b border-border px-6 py-4", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("svg", { className: "h-5 w-5 text-amber-500", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" }) }), _jsx("h3", { className: "text-lg font-medium text-foreground", children: "Low Stock Alert" }), !isLoading && (_jsxs("span", { className: "rounded-full bg-amber-100 px-2 py-0.5 text-xs font-medium text-amber-800", children: [lowStock.length, " item", lowStock.length !== 1 ? 's' : ''] }))] }), _jsx("a", { href: viewAllHref, className: "text-sm text-primary hover:underline", children: "View all" })] }), _jsx("div", { className: "divide-y divide-border", children: isLoading ? (_jsx("div", { className: "p-6", children: _jsx("div", { className: "space-y-4", children: [...Array(3)].map((_, i) => (_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "space-y-2", children: [_jsx("div", { className: "h-4 w-32 animate-pulse rounded bg-muted" }), _jsx("div", { className: "h-3 w-20 animate-pulse rounded bg-muted" })] }), _jsx("div", { className: "h-6 w-16 animate-pulse rounded bg-muted" })] }, i))) }) })) : (lowStock.slice(0, 5).map((item) => (_jsxs("div", { className: "flex items-center justify-between px-6 py-4 hover:bg-muted/50", children: [_jsxs("div", { children: [_jsx("a", { href: `/admin/products/${item.productId}`, className: "font-medium text-foreground hover:text-primary", children: item.productName }), _jsx("p", { className: "text-sm text-muted-foreground", children: item.variantName })] }), _jsx("div", { className: "flex items-center gap-2", children: _jsx("span", { className: `rounded-full px-2 py-1 text-xs font-medium ${item.inventory === 0
|
|
32
29
|
? 'bg-red-100 text-red-800'
|
|
33
|
-
: 'bg-amber-100 text-amber-800'}`, children: item.inventory === 0 ? 'Out of stock' : `${item.inventory} left` }) })] }, item.variantId)))) }), !isLoading && lowStock.length > 5 && ((
|
|
30
|
+
: 'bg-amber-100 text-amber-800'}`, children: item.inventory === 0 ? 'Out of stock' : `${item.inventory} left` }) })] }, item.variantId)))) }), !isLoading && lowStock.length > 5 && (_jsx("div", { className: "border-t border-border px-6 py-3 text-center", children: _jsxs("a", { href: viewAllHref, className: "text-sm text-primary hover:underline", children: ["+", lowStock.length - 5, " more items"] }) }))] }));
|
|
34
31
|
}
|
|
35
32
|
//# sourceMappingURL=LowStockAlert.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LowStockAlert.js","sourceRoot":"","sources":["../../../src/admin/components/LowStockAlert.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LowStockAlert.js","sourceRoot":"","sources":["../../../src/admin/components/LowStockAlert.tsx"],"names":[],"mappings":"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"}
|