@rovela-ai/sdk 0.1.20 → 0.1.21
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/components/AdminNav.d.ts +10 -3
- package/dist/admin/components/AdminNav.d.ts.map +1 -1
- package/dist/admin/components/AdminNav.js +78 -31
- package/dist/admin/components/AdminNav.js.map +1 -1
- package/dist/admin/components/LowStockAlert.d.ts +2 -2
- package/dist/admin/components/LowStockAlert.d.ts.map +1 -1
- package/dist/admin/components/LowStockAlert.js +16 -9
- package/dist/admin/components/LowStockAlert.js.map +1 -1
- package/dist/admin/components/OrderStatusChart.d.ts +21 -0
- package/dist/admin/components/OrderStatusChart.d.ts.map +1 -0
- package/dist/admin/components/OrderStatusChart.js +54 -0
- package/dist/admin/components/OrderStatusChart.js.map +1 -0
- package/dist/admin/components/RecentOrders.d.ts +1 -1
- package/dist/admin/components/RecentOrders.d.ts.map +1 -1
- package/dist/admin/components/RecentOrders.js +11 -10
- package/dist/admin/components/RecentOrders.js.map +1 -1
- package/dist/admin/components/RevenueChart.d.ts +23 -0
- package/dist/admin/components/RevenueChart.d.ts.map +1 -0
- package/dist/admin/components/RevenueChart.js +70 -0
- package/dist/admin/components/RevenueChart.js.map +1 -0
- package/dist/admin/components/StatsCards.d.ts +2 -2
- package/dist/admin/components/StatsCards.d.ts.map +1 -1
- package/dist/admin/components/StatsCards.js +18 -20
- package/dist/admin/components/StatsCards.js.map +1 -1
- package/dist/admin/components/index.d.ts +4 -0
- package/dist/admin/components/index.d.ts.map +1 -1
- package/dist/admin/components/index.js +2 -0
- package/dist/admin/components/index.js.map +1 -1
- package/dist/admin/index.d.ts +2 -2
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/core/db/queries.d.ts +6 -6
- package/package.json +2 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @rovela/sdk/admin/components/AdminNav
|
|
3
3
|
*
|
|
4
|
-
* Admin sidebar navigation component
|
|
4
|
+
* Admin sidebar navigation component with grouped navigation,
|
|
5
|
+
* elegant styling, and Rovela branding.
|
|
5
6
|
*/
|
|
6
7
|
import { type ReactNode } from 'react';
|
|
7
8
|
export interface NavItem {
|
|
@@ -10,6 +11,10 @@ export interface NavItem {
|
|
|
10
11
|
href: string;
|
|
11
12
|
icon?: ReactNode;
|
|
12
13
|
}
|
|
14
|
+
export interface NavGroup {
|
|
15
|
+
label: string;
|
|
16
|
+
items: NavItem[];
|
|
17
|
+
}
|
|
13
18
|
export interface AdminNavProps {
|
|
14
19
|
/** Currently active nav item ID */
|
|
15
20
|
activeNav?: string;
|
|
@@ -19,16 +24,18 @@ export interface AdminNavProps {
|
|
|
19
24
|
storeName?: string;
|
|
20
25
|
/** Logo element */
|
|
21
26
|
logo?: ReactNode;
|
|
27
|
+
/** Store URL for "View Store" link */
|
|
28
|
+
storeUrl?: string;
|
|
22
29
|
/** Custom className */
|
|
23
30
|
className?: string;
|
|
24
31
|
}
|
|
25
32
|
/**
|
|
26
|
-
* Admin sidebar navigation.
|
|
33
|
+
* Admin sidebar navigation with grouped sections and elegant styling.
|
|
27
34
|
*
|
|
28
35
|
* @example
|
|
29
36
|
* ```tsx
|
|
30
37
|
* <AdminNav activeNav="dashboard" storeName="My Store" />
|
|
31
38
|
* ```
|
|
32
39
|
*/
|
|
33
|
-
export declare function AdminNav({ activeNav, items, storeName, logo, className, }: AdminNavProps): import("react/jsx-runtime").JSX.Element;
|
|
40
|
+
export declare function AdminNav({ activeNav, items, storeName, logo, storeUrl, className, }: AdminNavProps): import("react/jsx-runtime").JSX.Element;
|
|
34
41
|
//# sourceMappingURL=AdminNav.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminNav.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminNav.tsx"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"AdminNav.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminNav.tsx"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAM7C,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,OAAO,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wDAAwD;IACxD,KAAK,CAAC,EAAE,OAAO,EAAE,CAAA;IACjB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mBAAmB;IACnB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AA0KD;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EACvB,SAAS,EACT,KAAK,EACL,SAAmB,EACnB,IAAI,EACJ,QAAc,EACd,SAAc,GACf,EAAE,aAAa,2CAgGf"}
|
|
@@ -1,36 +1,60 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
// =============================================================================
|
|
4
|
-
// Default Navigation
|
|
4
|
+
// Default Navigation Groups
|
|
5
5
|
// =============================================================================
|
|
6
|
-
const
|
|
7
|
-
{
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
const defaultNavGroups = [
|
|
7
|
+
{
|
|
8
|
+
label: 'Main',
|
|
9
|
+
items: [
|
|
10
|
+
{ id: 'dashboard', label: 'Dashboard', href: '/admin' },
|
|
11
|
+
],
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
label: 'Catalog',
|
|
15
|
+
items: [
|
|
16
|
+
{ id: 'products', label: 'Products', href: '/admin/products' },
|
|
17
|
+
{ id: 'categories', label: 'Categories', href: '/admin/categories' },
|
|
18
|
+
],
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
label: 'Sales',
|
|
22
|
+
items: [
|
|
23
|
+
{ id: 'orders', label: 'Orders', href: '/admin/orders' },
|
|
24
|
+
{ id: 'customers', label: 'Customers', href: '/admin/customers' },
|
|
25
|
+
],
|
|
26
|
+
},
|
|
13
27
|
];
|
|
28
|
+
const settingsItem = { id: 'settings', label: 'Settings', href: '/admin/settings' };
|
|
14
29
|
// =============================================================================
|
|
15
|
-
// Icons (
|
|
30
|
+
// Icons (refined SVG icons)
|
|
16
31
|
// =============================================================================
|
|
17
|
-
function DashboardIcon() {
|
|
18
|
-
return (_jsx("svg", { className:
|
|
32
|
+
function DashboardIcon({ className = 'h-5 w-5' }) {
|
|
33
|
+
return (_jsx("svg", { className: className, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1.5, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M3.75 6A2.25 2.25 0 016 3.75h2.25A2.25 2.25 0 0110.5 6v2.25a2.25 2.25 0 01-2.25 2.25H6a2.25 2.25 0 01-2.25-2.25V6zM3.75 15.75A2.25 2.25 0 016 13.5h2.25a2.25 2.25 0 012.25 2.25V18a2.25 2.25 0 01-2.25 2.25H6A2.25 2.25 0 013.75 18v-2.25zM13.5 6a2.25 2.25 0 012.25-2.25H18A2.25 2.25 0 0120.25 6v2.25A2.25 2.25 0 0118 10.5h-2.25a2.25 2.25 0 01-2.25-2.25V6zM13.5 15.75a2.25 2.25 0 012.25-2.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-2.25A2.25 2.25 0 0113.5 18v-2.25z" }) }));
|
|
19
34
|
}
|
|
20
|
-
function ProductsIcon() {
|
|
21
|
-
return (_jsx("svg", { className:
|
|
35
|
+
function ProductsIcon({ className = 'h-5 w-5' }) {
|
|
36
|
+
return (_jsx("svg", { className: className, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1.5, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M20.25 7.5l-.625 10.632a2.25 2.25 0 01-2.247 2.118H6.622a2.25 2.25 0 01-2.247-2.118L3.75 7.5M10 11.25h4M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125z" }) }));
|
|
22
37
|
}
|
|
23
|
-
function CategoriesIcon() {
|
|
24
|
-
return (_jsx("svg", { className:
|
|
38
|
+
function CategoriesIcon({ className = 'h-5 w-5' }) {
|
|
39
|
+
return (_jsx("svg", { className: className, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1.5, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M2.25 12.75V12A2.25 2.25 0 014.5 9.75h15A2.25 2.25 0 0121.75 12v.75m-8.69-6.44l-2.12-2.12a1.5 1.5 0 00-1.061-.44H4.5A2.25 2.25 0 002.25 6v12a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18V9a2.25 2.25 0 00-2.25-2.25h-5.379a1.5 1.5 0 01-1.06-.44z" }) }));
|
|
25
40
|
}
|
|
26
|
-
function OrdersIcon() {
|
|
27
|
-
return (_jsx("svg", { className:
|
|
41
|
+
function OrdersIcon({ className = 'h-5 w-5' }) {
|
|
42
|
+
return (_jsx("svg", { className: className, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1.5, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 002.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 00-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75 2.25 2.25 0 00-.1-.664m-5.8 0A2.251 2.251 0 0113.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25zM6.75 12h.008v.008H6.75V12zm0 3h.008v.008H6.75V15zm0 3h.008v.008H6.75V18z" }) }));
|
|
28
43
|
}
|
|
29
|
-
function CustomersIcon() {
|
|
30
|
-
return (_jsx("svg", { className:
|
|
44
|
+
function CustomersIcon({ className = 'h-5 w-5' }) {
|
|
45
|
+
return (_jsx("svg", { className: className, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1.5, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15 19.128a9.38 9.38 0 002.625.372 9.337 9.337 0 004.121-.952 4.125 4.125 0 00-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 018.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0111.964-3.07M12 6.375a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zm8.25 2.25a2.625 2.625 0 11-5.25 0 2.625 2.625 0 015.25 0z" }) }));
|
|
31
46
|
}
|
|
32
|
-
function SettingsIcon() {
|
|
33
|
-
return (_jsxs("svg", { className:
|
|
47
|
+
function SettingsIcon({ className = 'h-5 w-5' }) {
|
|
48
|
+
return (_jsxs("svg", { className: className, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1.5, children: [_jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 011.37.49l1.296 2.247a1.125 1.125 0 01-.26 1.431l-1.003.827c-.293.24-.438.613-.431.992a6.759 6.759 0 010 .255c-.007.378.138.75.43.99l1.005.828c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 01-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.57 6.57 0 01-.22.128c-.331.183-.581.495-.644.869l-.213 1.28c-.09.543-.56.941-1.11.941h-2.594c-.55 0-1.02-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 01-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 01-1.369-.49l-1.297-2.247a1.125 1.125 0 01.26-1.431l1.004-.827c.292-.24.437-.613.43-.992a6.932 6.932 0 010-.255c.007-.378-.138-.75-.43-.99l-1.004-.828a1.125 1.125 0 01-.26-1.43l1.297-2.247a1.125 1.125 0 011.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.087.22-.128.332-.183.582-.495.644-.869l.214-1.281z" }), _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z" })] }));
|
|
49
|
+
}
|
|
50
|
+
function ExternalLinkIcon({ className = 'h-4 w-4' }) {
|
|
51
|
+
return (_jsx("svg", { className: className, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1.5, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M13.5 6H5.25A2.25 2.25 0 003 8.25v10.5A2.25 2.25 0 005.25 21h10.5A2.25 2.25 0 0018 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25" }) }));
|
|
52
|
+
}
|
|
53
|
+
// Rovela Logo Image
|
|
54
|
+
function RovelaLogo({ className = 'h-4 w-4' }) {
|
|
55
|
+
return (
|
|
56
|
+
// eslint-disable-next-line @next/next/no-img-element
|
|
57
|
+
_jsx("img", { src: "/rovela-logo.png", alt: "Rovela", className: className }));
|
|
34
58
|
}
|
|
35
59
|
const iconMap = {
|
|
36
60
|
dashboard: DashboardIcon,
|
|
@@ -41,23 +65,46 @@ const iconMap = {
|
|
|
41
65
|
settings: SettingsIcon,
|
|
42
66
|
};
|
|
43
67
|
// =============================================================================
|
|
68
|
+
// Nav Item Component
|
|
69
|
+
// =============================================================================
|
|
70
|
+
function NavItemButton({ item, isActive, }) {
|
|
71
|
+
const Icon = item.icon || iconMap[item.id];
|
|
72
|
+
return (_jsxs("a", { href: item.href, className: `
|
|
73
|
+
group flex items-center gap-3 rounded-lg px-3 py-2.5 text-sm font-medium
|
|
74
|
+
transition-all duration-200 ease-out
|
|
75
|
+
${isActive
|
|
76
|
+
? 'bg-primary/10 text-primary'
|
|
77
|
+
: 'text-muted-foreground hover:bg-accent hover:text-foreground'}
|
|
78
|
+
`, children: [_jsx("span", { className: `
|
|
79
|
+
absolute left-0 h-8 w-1 rounded-r-full bg-primary
|
|
80
|
+
transition-all duration-200
|
|
81
|
+
${isActive ? 'opacity-100' : 'opacity-0'}
|
|
82
|
+
` }), _jsx("span", { className: `
|
|
83
|
+
transition-transform duration-200
|
|
84
|
+
${!isActive ? 'group-hover:translate-x-0.5' : ''}
|
|
85
|
+
`, children: typeof Icon === 'function' ? _jsx(Icon, { className: "h-5 w-5" }) : Icon }), _jsx("span", { className: `
|
|
86
|
+
transition-transform duration-200
|
|
87
|
+
${!isActive ? 'group-hover:translate-x-0.5' : ''}
|
|
88
|
+
`, children: item.label })] }));
|
|
89
|
+
}
|
|
90
|
+
// =============================================================================
|
|
44
91
|
// Component
|
|
45
92
|
// =============================================================================
|
|
46
93
|
/**
|
|
47
|
-
* Admin sidebar navigation.
|
|
94
|
+
* Admin sidebar navigation with grouped sections and elegant styling.
|
|
48
95
|
*
|
|
49
96
|
* @example
|
|
50
97
|
* ```tsx
|
|
51
98
|
* <AdminNav activeNav="dashboard" storeName="My Store" />
|
|
52
99
|
* ```
|
|
53
100
|
*/
|
|
54
|
-
export function AdminNav({ activeNav, items
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
101
|
+
export function AdminNav({ activeNav, items, storeName = 'Admin', logo, storeUrl = '/', className = '', }) {
|
|
102
|
+
// If custom items provided, use flat list; otherwise use groups
|
|
103
|
+
const useGroups = !items;
|
|
104
|
+
return (_jsxs("nav", { className: `flex h-full w-64 flex-col bg-card ${className}`, children: [_jsx("div", { className: "flex h-16 items-center gap-3 border-b border-border px-5", children: logo || (_jsxs(_Fragment, { children: [_jsx("div", { className: "flex h-9 w-9 items-center justify-center rounded-lg bg-primary/10 text-primary font-semibold", children: storeName.charAt(0).toUpperCase() }), _jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "text-sm font-semibold text-foreground leading-tight", children: storeName }), _jsx("span", { className: "text-xs text-muted-foreground", children: "Admin Panel" })] })] })) }), _jsx("div", { className: "flex-1 overflow-y-auto px-3 py-4", children: useGroups ? (
|
|
105
|
+
// Grouped navigation
|
|
106
|
+
_jsx("div", { className: "space-y-6", children: defaultNavGroups.map((group) => (_jsxs("div", { children: [_jsx("p", { className: "mb-2 px-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground/70", children: group.label }), _jsx("ul", { className: "space-y-1", children: group.items.map((item) => (_jsx("li", { className: "relative", children: _jsx(NavItemButton, { item: item, isActive: activeNav === item.id }) }, item.id))) })] }, group.label))) })) : (
|
|
107
|
+
// Flat navigation (custom items)
|
|
108
|
+
_jsx("ul", { className: "space-y-1", children: items?.map((item) => (_jsx("li", { className: "relative", children: _jsx(NavItemButton, { item: item, isActive: activeNav === item.id }) }, item.id))) })) }), _jsx("div", { className: "border-t border-border px-3 py-3", children: _jsx("div", { className: "relative", children: _jsx(NavItemButton, { item: settingsItem, isActive: activeNav === 'settings' }) }) }), _jsxs("div", { className: "border-t border-border px-4 py-4 space-y-3", children: [_jsxs("a", { href: storeUrl, target: "_blank", rel: "noopener noreferrer", className: "flex items-center justify-center gap-2 rounded-lg border border-border px-3 py-2 text-sm font-medium text-muted-foreground transition-colors hover:bg-accent hover:text-foreground", children: [_jsx(ExternalLinkIcon, { className: "h-4 w-4" }), "View Store"] }), _jsxs("div", { className: "flex items-center justify-center gap-1.5 text-xs text-muted-foreground/60", children: [_jsx("span", { children: "Powered by" }), _jsx(RovelaLogo, { className: "h-4 w-4" }), _jsx("span", { className: "font-medium", children: "Rovela" })] })] })] }));
|
|
62
109
|
}
|
|
63
110
|
//# sourceMappingURL=AdminNav.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminNav.js","sourceRoot":"","sources":["../../../src/admin/components/AdminNav.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;
|
|
1
|
+
{"version":3,"file":"AdminNav.js","sourceRoot":"","sources":["../../../src/admin/components/AdminNav.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { LowStockAlertProps } from '../types';
|
|
2
2
|
/**
|
|
3
|
-
* Low stock alert widget for dashboard.
|
|
3
|
+
* Low stock alert widget for dashboard with success state.
|
|
4
4
|
*
|
|
5
5
|
* @example
|
|
6
6
|
* ```tsx
|
|
7
7
|
* <LowStockAlert threshold={10} viewAllHref="/admin/products?filter=low-stock" />
|
|
8
8
|
* ```
|
|
9
9
|
*/
|
|
10
|
-
export declare function LowStockAlert({ threshold, viewAllHref, className, }: LowStockAlertProps): import("react/jsx-runtime").JSX.Element
|
|
10
|
+
export declare function LowStockAlert({ threshold, viewAllHref, className, }: LowStockAlertProps): import("react/jsx-runtime").JSX.Element;
|
|
11
11
|
//# sourceMappingURL=LowStockAlert.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LowStockAlert.d.ts","sourceRoot":"","sources":["../../../src/admin/components/LowStockAlert.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"LowStockAlert.d.ts","sourceRoot":"","sources":["../../../src/admin/components/LowStockAlert.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AA0BlD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,EAC5B,SAAc,EACd,WAA+B,EAC/B,SAAc,GACf,EAAE,kBAAkB,2CAoHpB"}
|
|
@@ -3,14 +3,23 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
/**
|
|
4
4
|
* @rovela/sdk/admin/components/LowStockAlert
|
|
5
5
|
*
|
|
6
|
-
* Low stock inventory warning widget.
|
|
6
|
+
* Low stock inventory warning widget with theme-aware styling.
|
|
7
7
|
*/
|
|
8
8
|
import { useAdminStats } from '../hooks/useAdminStats';
|
|
9
9
|
// =============================================================================
|
|
10
|
+
// Icons
|
|
11
|
+
// =============================================================================
|
|
12
|
+
function AlertIcon({ className = 'h-5 w-5' }) {
|
|
13
|
+
return (_jsx("svg", { className: className, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1.5, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" }) }));
|
|
14
|
+
}
|
|
15
|
+
function CheckIcon({ className = 'h-5 w-5' }) {
|
|
16
|
+
return (_jsx("svg", { className: className, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1.5, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }));
|
|
17
|
+
}
|
|
18
|
+
// =============================================================================
|
|
10
19
|
// Component
|
|
11
20
|
// =============================================================================
|
|
12
21
|
/**
|
|
13
|
-
* Low stock alert widget for dashboard.
|
|
22
|
+
* Low stock alert widget for dashboard with success state.
|
|
14
23
|
*
|
|
15
24
|
* @example
|
|
16
25
|
* ```tsx
|
|
@@ -21,12 +30,10 @@ export function LowStockAlert({ threshold = 10, viewAllHref = '/admin/products',
|
|
|
21
30
|
const { lowStock, isLoading } = useAdminStats({
|
|
22
31
|
lowStockThreshold: threshold,
|
|
23
32
|
});
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
? 'bg-red-100 text-red-800'
|
|
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"] }) }))] }));
|
|
33
|
+
return (_jsxs("div", { className: `rounded-xl 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-3", children: [!isLoading && lowStock.length === 0 ? (_jsx("div", { className: "rounded-full bg-emerald-500/10 p-2", children: _jsx(CheckIcon, { className: "h-5 w-5 text-emerald-600 dark:text-emerald-400" }) })) : (_jsx("div", { className: "rounded-full bg-amber-500/10 p-2", children: _jsx(AlertIcon, { className: "h-5 w-5 text-amber-600 dark:text-amber-400" }) })), _jsxs("div", { children: [_jsx("h3", { className: "text-lg font-semibold text-foreground", children: !isLoading && lowStock.length === 0 ? 'Inventory Healthy' : 'Low Stock Alert' }), _jsx("p", { className: "text-sm text-muted-foreground", children: !isLoading && lowStock.length === 0
|
|
34
|
+
? 'All products are well stocked'
|
|
35
|
+
: `${lowStock.length} item${lowStock.length !== 1 ? 's' : ''} need attention` })] })] }), lowStock.length > 0 && (_jsxs("a", { href: viewAllHref, className: "inline-flex items-center gap-1 text-sm font-medium text-primary transition-colors hover:text-primary/80", children: ["View all", _jsx("svg", { className: "h-4 w-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) })] }))] }), _jsxs("div", { 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.length === 0 ? (_jsxs("div", { className: "flex flex-col items-center justify-center py-12 text-center", children: [_jsx("div", { className: "rounded-full bg-emerald-500/10 p-4", children: _jsx(CheckIcon, { className: "h-8 w-8 text-emerald-600 dark:text-emerald-400" }) }), _jsx("p", { className: "mt-4 text-sm font-medium text-foreground", children: "All stocked up!" }), _jsxs("p", { className: "text-xs text-muted-foreground", children: ["No products below ", threshold, " units in stock"] })] })) : (_jsx("div", { className: "divide-y divide-border", children: lowStock.slice(0, 5).map((item) => (_jsxs("div", { className: "flex items-center justify-between px-6 py-4 transition-colors hover:bg-muted/50", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("a", { href: `/admin/products/${item.productId}`, className: "block truncate font-medium text-foreground transition-colors hover:text-primary", children: item.productName }), _jsx("p", { className: "truncate text-sm text-muted-foreground", children: item.variantName })] }), _jsx("div", { className: "ml-4 flex-shrink-0", children: _jsx("span", { className: `inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium ${item.inventory === 0
|
|
36
|
+
? 'bg-red-500/10 text-red-600 dark:text-red-400'
|
|
37
|
+
: 'bg-amber-500/10 text-amber-600 dark:text-amber-400'}`, 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 font-medium text-primary transition-colors hover:text-primary/80", children: ["+", lowStock.length - 5, " more items"] }) }))] })] }));
|
|
31
38
|
}
|
|
32
39
|
//# sourceMappingURL=LowStockAlert.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LowStockAlert.js","sourceRoot":"","sources":["../../../src/admin/components/LowStockAlert.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAGtD,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,SAAS,GAAG,EAAE,EACd,WAAW,GAAG,iBAAiB,EAC/B,SAAS,GAAG,EAAE,GACK;IACnB,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC;QAC5C,iBAAiB,EAAE,SAAS;KAC7B,CAAC,CAAA;IAEF,
|
|
1
|
+
{"version":3,"file":"LowStockAlert.js","sourceRoot":"","sources":["../../../src/admin/components/LowStockAlert.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface OrderStatusChartProps {
|
|
2
|
+
/** Order counts by status */
|
|
3
|
+
data: {
|
|
4
|
+
status: string;
|
|
5
|
+
count: number;
|
|
6
|
+
}[];
|
|
7
|
+
/** Loading state */
|
|
8
|
+
isLoading?: boolean;
|
|
9
|
+
/** Custom className */
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Order status donut chart showing breakdown by status.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```tsx
|
|
17
|
+
* <OrderStatusChart data={ordersByStatus} isLoading={isLoading} />
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare function OrderStatusChart({ data, isLoading, className, }: OrderStatusChartProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
//# sourceMappingURL=OrderStatusChart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OrderStatusChart.d.ts","sourceRoot":"","sources":["../../../src/admin/components/OrderStatusChart.tsx"],"names":[],"mappings":"AAcA,MAAM,WAAW,qBAAqB;IACpC,6BAA6B;IAC7B,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACzC,oBAAoB;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAkDD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,SAAiB,EACjB,SAAc,GACf,EAAE,qBAAqB,2CAqGvB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* @rovela/sdk/admin/components/OrderStatusChart
|
|
5
|
+
*
|
|
6
|
+
* Order status breakdown donut chart for dashboard.
|
|
7
|
+
*/
|
|
8
|
+
import { Cell, Pie, PieChart, ResponsiveContainer, Tooltip } from 'recharts';
|
|
9
|
+
// =============================================================================
|
|
10
|
+
// Status Configuration
|
|
11
|
+
// =============================================================================
|
|
12
|
+
const statusConfig = {
|
|
13
|
+
pending: { label: 'Pending', color: 'hsl(45 93% 47%)' }, // Amber
|
|
14
|
+
paid: { label: 'Paid', color: 'hsl(142 76% 36%)' }, // Green
|
|
15
|
+
shipped: { label: 'Shipped', color: 'hsl(217 91% 60%)' }, // Blue
|
|
16
|
+
delivered: { label: 'Delivered', color: 'hsl(142 71% 45%)' }, // Emerald
|
|
17
|
+
cancelled: { label: 'Cancelled', color: 'hsl(0 84% 60%)' }, // Red
|
|
18
|
+
refunded: { label: 'Refunded', color: 'hsl(220 9% 46%)' }, // Gray
|
|
19
|
+
};
|
|
20
|
+
function CustomTooltip({ active, payload }) {
|
|
21
|
+
if (!active || !payload || !payload.length)
|
|
22
|
+
return null;
|
|
23
|
+
const data = payload[0].payload;
|
|
24
|
+
const config = statusConfig[data.status] || { label: data.status, color: 'hsl(220 9% 46%)' };
|
|
25
|
+
return (_jsxs("div", { className: "rounded-lg border border-border bg-card px-3 py-2 shadow-lg", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "h-3 w-3 rounded-full", style: { backgroundColor: config.color } }), _jsx("span", { className: "text-sm font-medium text-foreground", children: config.label })] }), _jsxs("p", { className: "mt-1 text-lg font-semibold text-foreground", children: [data.count.toLocaleString(), " orders"] })] }));
|
|
26
|
+
}
|
|
27
|
+
// =============================================================================
|
|
28
|
+
// Component
|
|
29
|
+
// =============================================================================
|
|
30
|
+
/**
|
|
31
|
+
* Order status donut chart showing breakdown by status.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```tsx
|
|
35
|
+
* <OrderStatusChart data={ordersByStatus} isLoading={isLoading} />
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export function OrderStatusChart({ data, isLoading = false, className = '', }) {
|
|
39
|
+
// Process data with colors
|
|
40
|
+
const chartData = data.map((item) => ({
|
|
41
|
+
...item,
|
|
42
|
+
color: statusConfig[item.status]?.color || 'hsl(220 9% 46%)',
|
|
43
|
+
label: statusConfig[item.status]?.label || item.status,
|
|
44
|
+
}));
|
|
45
|
+
// Calculate total
|
|
46
|
+
const totalOrders = data.reduce((sum, item) => sum + item.count, 0);
|
|
47
|
+
return (_jsxs("div", { className: `rounded-xl border border-border bg-card ${className}`, children: [_jsxs("div", { className: "border-b border-border px-6 py-4", children: [_jsx("h3", { className: "text-lg font-semibold text-foreground", children: "Order Status" }), _jsx("p", { className: "text-sm text-muted-foreground", children: "Distribution by status" })] }), _jsx("div", { className: "p-6", children: isLoading ? (_jsx("div", { className: "flex h-64 items-center justify-center", children: _jsx("div", { className: "h-8 w-8 animate-spin rounded-full border-2 border-primary border-t-transparent" }) })) : totalOrders === 0 ? (_jsxs("div", { className: "flex h-64 flex-col items-center justify-center text-center", children: [_jsx("svg", { className: "h-12 w-12 text-muted-foreground/30", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15.75 10.5V6a3.75 3.75 0 10-7.5 0v4.5m11.356-1.993l1.263 12c.07.665-.45 1.243-1.119 1.243H4.25a1.125 1.125 0 01-1.12-1.243l1.264-12A1.125 1.125 0 015.513 7.5h12.974c.576 0 1.059.435 1.119 1.007zM8.625 10.5a.375.375 0 11-.75 0 .375.375 0 01.75 0zm7.5 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z" }) }), _jsx("p", { className: "mt-4 text-sm text-muted-foreground", children: "No orders yet" }), _jsx("p", { className: "text-xs text-muted-foreground/70", children: "Order breakdown will appear here" })] })) : (_jsxs("div", { className: "flex items-center gap-6", children: [_jsxs("div", { className: "relative flex-shrink-0", children: [_jsx(ResponsiveContainer, { width: 180, height: 180, children: _jsxs(PieChart, { children: [_jsx(Pie, { data: chartData, cx: "50%", cy: "50%", innerRadius: 55, outerRadius: 80, paddingAngle: 2, dataKey: "count", children: chartData.map((entry, index) => (_jsx(Cell, { fill: entry.color }, `cell-${index}`))) }), _jsx(Tooltip, { content: _jsx(CustomTooltip, {}) })] }) }), _jsxs("div", { className: "absolute inset-0 flex flex-col items-center justify-center", children: [_jsx("p", { className: "text-2xl font-bold text-foreground", children: totalOrders }), _jsx("p", { className: "text-xs text-muted-foreground", children: "Total" })] })] }), _jsx("div", { className: "flex-1 space-y-2", children: chartData.map((item) => {
|
|
48
|
+
const percentage = totalOrders > 0
|
|
49
|
+
? Math.round((item.count / totalOrders) * 100)
|
|
50
|
+
: 0;
|
|
51
|
+
return (_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "h-3 w-3 rounded-full", style: { backgroundColor: item.color } }), _jsx("span", { className: "text-sm text-foreground", children: item.label })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm font-medium text-foreground", children: item.count }), _jsxs("span", { className: "text-xs text-muted-foreground", children: ["(", percentage, "%)"] })] })] }, item.status));
|
|
52
|
+
}) })] })) })] }));
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=OrderStatusChart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OrderStatusChart.js","sourceRoot":"","sources":["../../../src/admin/components/OrderStatusChart.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecentOrders.d.ts","sourceRoot":"","sources":["../../../src/admin/components/RecentOrders.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"RecentOrders.d.ts","sourceRoot":"","sources":["../../../src/admin/components/RecentOrders.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAgCjD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAS,EACT,WAA6B,EAC7B,SAAc,GACf,EAAE,iBAAiB,2CAgHnB"}
|
|
@@ -3,28 +3,29 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
/**
|
|
4
4
|
* @rovela/sdk/admin/components/RecentOrders
|
|
5
5
|
*
|
|
6
|
-
* Recent orders table for dashboard.
|
|
6
|
+
* Recent orders table for dashboard with theme-aware styling.
|
|
7
7
|
*/
|
|
8
8
|
import { useAdminStats } from '../hooks/useAdminStats';
|
|
9
9
|
// =============================================================================
|
|
10
10
|
// Status Badge
|
|
11
11
|
// =============================================================================
|
|
12
12
|
function StatusBadge({ status }) {
|
|
13
|
+
// Theme-aware status styles using CSS variables
|
|
13
14
|
const statusStyles = {
|
|
14
|
-
pending: 'bg-
|
|
15
|
-
paid: 'bg-
|
|
16
|
-
shipped: 'bg-blue-
|
|
17
|
-
delivered: 'bg-
|
|
18
|
-
cancelled: 'bg-red-
|
|
19
|
-
refunded: 'bg-
|
|
15
|
+
pending: 'bg-amber-500/10 text-amber-600 dark:text-amber-400',
|
|
16
|
+
paid: 'bg-emerald-500/10 text-emerald-600 dark:text-emerald-400',
|
|
17
|
+
shipped: 'bg-blue-500/10 text-blue-600 dark:text-blue-400',
|
|
18
|
+
delivered: 'bg-emerald-500/10 text-emerald-600 dark:text-emerald-400',
|
|
19
|
+
cancelled: 'bg-red-500/10 text-red-600 dark:text-red-400',
|
|
20
|
+
refunded: 'bg-muted text-muted-foreground',
|
|
20
21
|
};
|
|
21
|
-
return (_jsx("span", { className: `inline-flex rounded-full px-2 py-
|
|
22
|
+
return (_jsx("span", { className: `inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium ${statusStyles[status] || 'bg-muted text-muted-foreground'}`, children: status.charAt(0).toUpperCase() + status.slice(1) }));
|
|
22
23
|
}
|
|
23
24
|
// =============================================================================
|
|
24
25
|
// Component
|
|
25
26
|
// =============================================================================
|
|
26
27
|
/**
|
|
27
|
-
* Recent orders widget for dashboard.
|
|
28
|
+
* Recent orders widget for dashboard with elegant styling.
|
|
28
29
|
*
|
|
29
30
|
* @example
|
|
30
31
|
* ```tsx
|
|
@@ -50,6 +51,6 @@ export function RecentOrders({ limit = 5, viewAllHref = '/admin/orders', classNa
|
|
|
50
51
|
currency: 'USD',
|
|
51
52
|
}).format(parseFloat(value));
|
|
52
53
|
};
|
|
53
|
-
return (_jsxs("div", { className: `rounded-
|
|
54
|
+
return (_jsxs("div", { className: `rounded-xl 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", { children: [_jsx("h3", { className: "text-lg font-semibold text-foreground", children: "Recent Orders" }), _jsx("p", { className: "text-sm text-muted-foreground", children: "Latest customer orders" })] }), _jsxs("a", { href: viewAllHref, className: "inline-flex items-center gap-1 text-sm font-medium text-primary transition-colors hover:text-primary/80", children: ["View all", _jsx("svg", { className: "h-4 w-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) })] })] }), _jsx("div", { className: "overflow-x-auto", children: isLoading ? (_jsx("div", { className: "p-6", children: _jsx("div", { className: "space-y-4", children: [...Array(limit)].map((_, i) => (_jsxs("div", { className: "flex items-center gap-4", children: [_jsx("div", { className: "h-4 w-24 animate-pulse rounded bg-muted" }), _jsx("div", { className: "h-4 w-32 animate-pulse rounded bg-muted" }), _jsx("div", { className: "h-4 w-16 animate-pulse rounded bg-muted" }), _jsx("div", { className: "h-4 w-20 animate-pulse rounded bg-muted" })] }, i))) }) })) : recentOrders.length === 0 ? (_jsxs("div", { className: "flex flex-col items-center justify-center py-12 text-center", children: [_jsx("svg", { className: "h-12 w-12 text-muted-foreground/30", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15.75 10.5V6a3.75 3.75 0 10-7.5 0v4.5m11.356-1.993l1.263 12c.07.665-.45 1.243-1.119 1.243H4.25a1.125 1.125 0 01-1.12-1.243l1.264-12A1.125 1.125 0 015.513 7.5h12.974c.576 0 1.059.435 1.119 1.007zM8.625 10.5a.375.375 0 11-.75 0 .375.375 0 01.75 0zm7.5 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z" }) }), _jsx("p", { className: "mt-4 text-sm text-muted-foreground", children: "No orders yet" }), _jsx("p", { className: "text-xs text-muted-foreground/70", children: "Orders will appear here as they come in" })] })) : (_jsxs("table", { className: "w-full", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border text-left text-xs font-medium uppercase tracking-wider text-muted-foreground", children: [_jsx("th", { className: "px-6 py-3", children: "Order" }), _jsx("th", { className: "px-6 py-3", children: "Customer" }), _jsx("th", { className: "px-6 py-3", children: "Status" }), _jsx("th", { className: "px-6 py-3 text-right", children: "Total" }), _jsx("th", { className: "px-6 py-3 text-right", children: "Date" })] }) }), _jsx("tbody", { className: "divide-y divide-border", children: recentOrders.map((order) => (_jsxs("tr", { className: "group transition-colors hover:bg-muted/50", children: [_jsx("td", { className: "whitespace-nowrap px-6 py-4", children: _jsxs("a", { href: `/admin/orders/${order.id}`, className: "font-medium text-primary transition-colors hover:text-primary/80", children: ["#", order.id.slice(-8).toUpperCase()] }) }), _jsx("td", { className: "whitespace-nowrap px-6 py-4 text-sm text-foreground", children: order.email }), _jsx("td", { className: "whitespace-nowrap px-6 py-4", children: _jsx(StatusBadge, { status: order.status }) }), _jsx("td", { className: "whitespace-nowrap px-6 py-4 text-right text-sm font-medium text-foreground", children: formatCurrency(order.total) }), _jsx("td", { className: "whitespace-nowrap px-6 py-4 text-right text-sm text-muted-foreground", children: formatDate(order.createdAt) })] }, order.id))) })] })) })] }));
|
|
54
55
|
}
|
|
55
56
|
//# sourceMappingURL=RecentOrders.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecentOrders.js","sourceRoot":"","sources":["../../../src/admin/components/RecentOrders.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAGtD,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF,SAAS,WAAW,CAAC,EAAE,MAAM,EAAsB;IACjD,MAAM,YAAY,GAA2B;QAC3C,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"RecentOrders.js","sourceRoot":"","sources":["../../../src/admin/components/RecentOrders.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface RevenueChartProps {
|
|
2
|
+
/** Revenue data by day */
|
|
3
|
+
data: {
|
|
4
|
+
date: string;
|
|
5
|
+
revenue: number;
|
|
6
|
+
}[];
|
|
7
|
+
/** Loading state */
|
|
8
|
+
isLoading?: boolean;
|
|
9
|
+
/** Currency code for formatting */
|
|
10
|
+
currency?: string;
|
|
11
|
+
/** Custom className */
|
|
12
|
+
className?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Revenue chart showing last 30 days of revenue data.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```tsx
|
|
19
|
+
* <RevenueChart data={revenueByDay} isLoading={isLoading} />
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare function RevenueChart({ data, isLoading, currency, className, }: RevenueChartProps): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
//# sourceMappingURL=RevenueChart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RevenueChart.d.ts","sourceRoot":"","sources":["../../../src/admin/components/RevenueChart.tsx"],"names":[],"mappings":"AAsBA,MAAM,WAAW,iBAAiB;IAChC,0BAA0B;IAC1B,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACzC,oBAAoB;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AA+CD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,SAAiB,EACjB,QAAgB,EAChB,SAAc,GACf,EAAE,iBAAiB,2CAiHnB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* @rovela/sdk/admin/components/RevenueChart
|
|
5
|
+
*
|
|
6
|
+
* 30-day revenue line chart for dashboard.
|
|
7
|
+
*/
|
|
8
|
+
import { Area, AreaChart, CartesianGrid, ResponsiveContainer, Tooltip, XAxis, YAxis, } from 'recharts';
|
|
9
|
+
function CustomTooltip({ active, payload, label, currency }) {
|
|
10
|
+
if (!active || !payload || !payload.length)
|
|
11
|
+
return null;
|
|
12
|
+
const formatCurrency = (value) => {
|
|
13
|
+
return new Intl.NumberFormat('en-US', {
|
|
14
|
+
style: 'currency',
|
|
15
|
+
currency,
|
|
16
|
+
minimumFractionDigits: 0,
|
|
17
|
+
maximumFractionDigits: 0,
|
|
18
|
+
}).format(value);
|
|
19
|
+
};
|
|
20
|
+
const formatDate = (dateStr) => {
|
|
21
|
+
const date = new Date(dateStr);
|
|
22
|
+
return date.toLocaleDateString('en-US', {
|
|
23
|
+
month: 'short',
|
|
24
|
+
day: 'numeric',
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
return (_jsxs("div", { className: "rounded-lg border border-border bg-card px-3 py-2 shadow-lg", children: [_jsx("p", { className: "text-xs text-muted-foreground", children: label ? formatDate(label) : '' }), _jsx("p", { className: "text-sm font-semibold text-foreground", children: formatCurrency(payload[0].value) })] }));
|
|
28
|
+
}
|
|
29
|
+
// =============================================================================
|
|
30
|
+
// Component
|
|
31
|
+
// =============================================================================
|
|
32
|
+
/**
|
|
33
|
+
* Revenue chart showing last 30 days of revenue data.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```tsx
|
|
37
|
+
* <RevenueChart data={revenueByDay} isLoading={isLoading} />
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export function RevenueChart({ data, isLoading = false, currency = 'USD', className = '', }) {
|
|
41
|
+
const formatCurrency = (value) => {
|
|
42
|
+
return new Intl.NumberFormat('en-US', {
|
|
43
|
+
style: 'currency',
|
|
44
|
+
currency,
|
|
45
|
+
notation: 'compact',
|
|
46
|
+
minimumFractionDigits: 0,
|
|
47
|
+
maximumFractionDigits: 1,
|
|
48
|
+
}).format(value);
|
|
49
|
+
};
|
|
50
|
+
const formatXAxis = (dateStr) => {
|
|
51
|
+
const date = new Date(dateStr);
|
|
52
|
+
return date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });
|
|
53
|
+
};
|
|
54
|
+
// Calculate total revenue
|
|
55
|
+
const totalRevenue = data.reduce((sum, item) => sum + item.revenue, 0);
|
|
56
|
+
// Show only every 5th label on x-axis to avoid crowding
|
|
57
|
+
const tickFormatter = (value, index) => {
|
|
58
|
+
if (index % 5 === 0 || index === data.length - 1) {
|
|
59
|
+
return formatXAxis(value);
|
|
60
|
+
}
|
|
61
|
+
return '';
|
|
62
|
+
};
|
|
63
|
+
return (_jsxs("div", { className: `rounded-xl 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", { children: [_jsx("h3", { className: "text-lg font-semibold text-foreground", children: "Revenue" }), _jsx("p", { className: "text-sm text-muted-foreground", children: "Last 30 days" })] }), !isLoading && (_jsxs("div", { className: "text-right", children: [_jsx("p", { className: "text-2xl font-bold text-foreground", children: new Intl.NumberFormat('en-US', {
|
|
64
|
+
style: 'currency',
|
|
65
|
+
currency,
|
|
66
|
+
minimumFractionDigits: 0,
|
|
67
|
+
maximumFractionDigits: 0,
|
|
68
|
+
}).format(totalRevenue) }), _jsx("p", { className: "text-xs text-muted-foreground", children: "Total" })] }))] }), _jsx("div", { className: "p-6", children: isLoading ? (_jsx("div", { className: "flex h-64 items-center justify-center", children: _jsx("div", { className: "h-8 w-8 animate-spin rounded-full border-2 border-primary border-t-transparent" }) })) : data.length === 0 ? (_jsxs("div", { className: "flex h-64 flex-col items-center justify-center text-center", children: [_jsx("svg", { className: "h-12 w-12 text-muted-foreground/30", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 013 19.875v-6.75zM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V8.625zM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V4.125z" }) }), _jsx("p", { className: "mt-4 text-sm text-muted-foreground", children: "No revenue data yet" }), _jsx("p", { className: "text-xs text-muted-foreground/70", children: "Revenue will appear here after your first sale" })] })) : (_jsx(ResponsiveContainer, { width: "100%", height: 256, children: _jsxs(AreaChart, { data: data, margin: { top: 10, right: 10, left: 0, bottom: 0 }, children: [_jsx("defs", { children: _jsxs("linearGradient", { id: "revenueGradient", x1: "0", y1: "0", x2: "0", y2: "1", children: [_jsx("stop", { offset: "0%", stopColor: "hsl(var(--primary))", stopOpacity: 0.3 }), _jsx("stop", { offset: "100%", stopColor: "hsl(var(--primary))", stopOpacity: 0 })] }) }), _jsx(CartesianGrid, { strokeDasharray: "3 3", vertical: false, stroke: "hsl(var(--border))" }), _jsx(XAxis, { dataKey: "date", tickFormatter: tickFormatter, axisLine: false, tickLine: false, tick: { fill: 'hsl(var(--muted-foreground))', fontSize: 12 }, dy: 10 }), _jsx(YAxis, { tickFormatter: formatCurrency, axisLine: false, tickLine: false, tick: { fill: 'hsl(var(--muted-foreground))', fontSize: 12 }, width: 60 }), _jsx(Tooltip, { content: _jsx(CustomTooltip, { currency: currency }) }), _jsx(Area, { type: "monotone", dataKey: "revenue", stroke: "hsl(var(--primary))", strokeWidth: 2, fill: "url(#revenueGradient)" })] }) })) })] }));
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=RevenueChart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RevenueChart.js","sourceRoot":"","sources":["../../../src/admin/components/RevenueChart.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @rovela/sdk/admin/components/StatsCards
|
|
3
3
|
*
|
|
4
|
-
* Dashboard statistics cards.
|
|
4
|
+
* Dashboard statistics cards with elegant design and theme-aware colors.
|
|
5
5
|
*/
|
|
6
6
|
import type { StatsCardsProps } from '../types';
|
|
7
7
|
/**
|
|
8
|
-
* Dashboard statistics cards showing key metrics.
|
|
8
|
+
* Dashboard statistics cards showing key metrics with elegant design.
|
|
9
9
|
*
|
|
10
10
|
* @example
|
|
11
11
|
* ```tsx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatsCards.d.ts","sourceRoot":"","sources":["../../../src/admin/components/StatsCards.tsx"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AA0C/C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,SAAiB,EACjB,QAAgB,EAChB,SAAc,GACf,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"StatsCards.d.ts","sourceRoot":"","sources":["../../../src/admin/components/StatsCards.tsx"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AA0C/C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,SAAiB,EACjB,QAAgB,EAChB,SAAc,GACf,EAAE,eAAe,2CA2FjB"}
|
|
@@ -3,23 +3,23 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
// =============================================================================
|
|
4
4
|
// Icons
|
|
5
5
|
// =============================================================================
|
|
6
|
-
function RevenueIcon() {
|
|
7
|
-
return (_jsx("svg", { className:
|
|
6
|
+
function RevenueIcon({ className = 'h-6 w-6' }) {
|
|
7
|
+
return (_jsx("svg", { className: className, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1.5, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M2.25 18.75a60.07 60.07 0 0115.797 2.101c.727.198 1.453-.342 1.453-1.096V18.75M3.75 4.5v.75A.75.75 0 013 6h-.75m0 0v-.375c0-.621.504-1.125 1.125-1.125H20.25M2.25 6v9m18-10.5v.75c0 .414.336.75.75.75h.75m-1.5-1.5h.375c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-.375m1.5-1.5H21a.75.75 0 00-.75.75v.75m0 0H3.75m0 0h-.375a1.125 1.125 0 01-1.125-1.125V15m1.5 1.5v-.75A.75.75 0 003 15h-.75M15 10.5a3 3 0 11-6 0 3 3 0 016 0zm3 0h.008v.008H18V10.5zm-12 0h.008v.008H6V10.5z" }) }));
|
|
8
8
|
}
|
|
9
|
-
function OrdersIcon() {
|
|
10
|
-
return (_jsx("svg", { className:
|
|
9
|
+
function OrdersIcon({ className = 'h-6 w-6' }) {
|
|
10
|
+
return (_jsx("svg", { className: className, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1.5, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15.75 10.5V6a3.75 3.75 0 10-7.5 0v4.5m11.356-1.993l1.263 12c.07.665-.45 1.243-1.119 1.243H4.25a1.125 1.125 0 01-1.12-1.243l1.264-12A1.125 1.125 0 015.513 7.5h12.974c.576 0 1.059.435 1.119 1.007zM8.625 10.5a.375.375 0 11-.75 0 .375.375 0 01.75 0zm7.5 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z" }) }));
|
|
11
11
|
}
|
|
12
|
-
function CustomersIcon() {
|
|
13
|
-
return (_jsx("svg", { className:
|
|
12
|
+
function CustomersIcon({ className = 'h-6 w-6' }) {
|
|
13
|
+
return (_jsx("svg", { className: className, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1.5, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15 19.128a9.38 9.38 0 002.625.372 9.337 9.337 0 004.121-.952 4.125 4.125 0 00-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 018.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0111.964-3.07M12 6.375a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zm8.25 2.25a2.625 2.625 0 11-5.25 0 2.625 2.625 0 015.25 0z" }) }));
|
|
14
14
|
}
|
|
15
|
-
function ProductsIcon() {
|
|
16
|
-
return (_jsx("svg", { className:
|
|
15
|
+
function ProductsIcon({ className = 'h-6 w-6' }) {
|
|
16
|
+
return (_jsx("svg", { className: className, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1.5, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M20.25 7.5l-.625 10.632a2.25 2.25 0 01-2.247 2.118H6.622a2.25 2.25 0 01-2.247-2.118L3.75 7.5M10 11.25h4M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125z" }) }));
|
|
17
17
|
}
|
|
18
18
|
// =============================================================================
|
|
19
19
|
// Component
|
|
20
20
|
// =============================================================================
|
|
21
21
|
/**
|
|
22
|
-
* Dashboard statistics cards showing key metrics.
|
|
22
|
+
* Dashboard statistics cards showing key metrics with elegant design.
|
|
23
23
|
*
|
|
24
24
|
* @example
|
|
25
25
|
* ```tsx
|
|
@@ -38,42 +38,40 @@ export function StatsCards({ stats, isLoading = false, currency = 'USD', classNa
|
|
|
38
38
|
return new Intl.NumberFormat('en-US', {
|
|
39
39
|
style: 'currency',
|
|
40
40
|
currency,
|
|
41
|
+
minimumFractionDigits: 0,
|
|
42
|
+
maximumFractionDigits: 0,
|
|
41
43
|
}).format(value);
|
|
42
44
|
};
|
|
43
45
|
const cards = [
|
|
44
46
|
{
|
|
45
|
-
label: 'Revenue',
|
|
47
|
+
label: 'Total Revenue',
|
|
46
48
|
value: stats?.revenue ?? 0,
|
|
47
49
|
format: formatCurrency,
|
|
48
50
|
icon: RevenueIcon,
|
|
49
|
-
|
|
50
|
-
bgColor: 'bg-green-100',
|
|
51
|
+
href: '/admin/orders',
|
|
51
52
|
},
|
|
52
53
|
{
|
|
53
|
-
label: 'Orders',
|
|
54
|
+
label: 'Total Orders',
|
|
54
55
|
value: stats?.orders ?? 0,
|
|
55
56
|
format: (v) => v.toLocaleString(),
|
|
56
57
|
icon: OrdersIcon,
|
|
57
|
-
|
|
58
|
-
bgColor: 'bg-blue-100',
|
|
58
|
+
href: '/admin/orders',
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
label: 'Customers',
|
|
62
62
|
value: stats?.customers ?? 0,
|
|
63
63
|
format: (v) => v.toLocaleString(),
|
|
64
64
|
icon: CustomersIcon,
|
|
65
|
-
|
|
66
|
-
bgColor: 'bg-purple-100',
|
|
65
|
+
href: '/admin/customers',
|
|
67
66
|
},
|
|
68
67
|
{
|
|
69
68
|
label: 'Products',
|
|
70
69
|
value: stats?.products ?? 0,
|
|
71
70
|
format: (v) => v.toLocaleString(),
|
|
72
71
|
icon: ProductsIcon,
|
|
73
|
-
|
|
74
|
-
bgColor: 'bg-orange-100',
|
|
72
|
+
href: '/admin/products',
|
|
75
73
|
},
|
|
76
74
|
];
|
|
77
|
-
return (_jsx("div", { className: `grid gap-4 sm:grid-cols-2 lg:grid-cols-4 ${className}`, children: cards.map((card) => (
|
|
75
|
+
return (_jsx("div", { className: `grid gap-4 sm:grid-cols-2 lg:grid-cols-4 ${className}`, children: cards.map((card) => (_jsxs("a", { href: card.href, className: "group relative overflow-hidden rounded-xl border border-border bg-card p-6 transition-all duration-200 hover:shadow-lg hover:shadow-primary/5 hover:-translate-y-0.5", children: [_jsx("div", { className: "absolute inset-0 bg-gradient-to-br from-primary/5 via-transparent to-transparent opacity-0 transition-opacity duration-200 group-hover:opacity-100" }), _jsxs("div", { className: "relative flex items-start justify-between", children: [_jsxs("div", { className: "space-y-2", children: [_jsx("p", { className: "text-sm font-medium text-muted-foreground", children: card.label }), isLoading ? (_jsx("div", { className: "h-9 w-28 animate-pulse rounded-md bg-muted" })) : (_jsx("p", { className: "text-3xl font-bold tracking-tight text-foreground", children: card.format(card.value) }))] }), _jsx("div", { className: "rounded-xl bg-primary/10 p-3 text-primary transition-colors group-hover:bg-primary/15", children: _jsx(card.icon, { className: "h-6 w-6" }) })] }), _jsxs("div", { className: "relative mt-4 flex items-center text-xs font-medium text-muted-foreground transition-colors group-hover:text-primary", children: [_jsx("span", { children: "View details" }), _jsx("svg", { className: "ml-1 h-3 w-3 transition-transform group-hover:translate-x-0.5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) })] })] }, card.label))) }));
|
|
78
76
|
}
|
|
79
77
|
//# sourceMappingURL=StatsCards.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatsCards.js","sourceRoot":"","sources":["../../../src/admin/components/StatsCards.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAUZ,gFAAgF;AAChF,QAAQ;AACR,gFAAgF;AAEhF,SAAS,WAAW;
|
|
1
|
+
{"version":3,"file":"StatsCards.js","sourceRoot":"","sources":["../../../src/admin/components/StatsCards.tsx"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,10 @@ export { AdminHeader } from './AdminHeader';
|
|
|
13
13
|
export { StatsCards } from './StatsCards';
|
|
14
14
|
export { RecentOrders } from './RecentOrders';
|
|
15
15
|
export { LowStockAlert } from './LowStockAlert';
|
|
16
|
+
export { RevenueChart } from './RevenueChart';
|
|
17
|
+
export type { RevenueChartProps } from './RevenueChart';
|
|
18
|
+
export { OrderStatusChart } from './OrderStatusChart';
|
|
19
|
+
export type { OrderStatusChartProps } from './OrderStatusChart';
|
|
16
20
|
export { ProductTable } from './ProductTable';
|
|
17
21
|
export { ProductForm } from './ProductForm';
|
|
18
22
|
export { InventoryEditor } from './InventoryEditor';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/admin/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAM3D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAM3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/admin/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAM3D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAM3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAM/D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAMnD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAM7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAMjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAM7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -21,6 +21,8 @@ export { AdminHeader } from './AdminHeader';
|
|
|
21
21
|
export { StatsCards } from './StatsCards';
|
|
22
22
|
export { RecentOrders } from './RecentOrders';
|
|
23
23
|
export { LowStockAlert } from './LowStockAlert';
|
|
24
|
+
export { RevenueChart } from './RevenueChart';
|
|
25
|
+
export { OrderStatusChart } from './OrderStatusChart';
|
|
24
26
|
// =============================================================================
|
|
25
27
|
// Product Components
|
|
26
28
|
// =============================================================================
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/admin/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGjD,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/admin/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGjD,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,gFAAgF;AAChF,2CAA2C;AAC3C,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA"}
|
package/dist/admin/index.d.ts
CHANGED
|
@@ -60,6 +60,6 @@ export { authenticateAdmin, createAdmin, updateAdminPassword, findAdminForSessio
|
|
|
60
60
|
export { createAdminAuthHandlers, getProducts, createProduct, getProduct, updateProduct, deleteProduct, addVariant, updateVariantHandler, deleteVariantHandler, getOrders, getOrder, updateOrder, processRefund, getStats, getCategories, createCategory, getCategory, updateCategory, deleteCategory, getCustomers, getCustomer, setupAdmin, checkAdminExists, } from './api';
|
|
61
61
|
export { useAdminAuth, useAdminStats, useAdminProducts, useAdminOrders, useAdminCategories, } from './hooks';
|
|
62
62
|
export type { CategoryTreeItem } from './hooks/useAdminCategories';
|
|
63
|
-
export { AdminGuard, AdminLoginForm, AdminSetupForm, AdminLayout, AdminNav, AdminHeader, StatsCards, RecentOrders, LowStockAlert, ProductTable, ProductForm, InventoryEditor, CategorySelect, CategoryForm, SEOPreview, TagInput, VariantManager, OrderTable, OrderDetails, RefundDialog, StoreSettings, } from './components';
|
|
64
|
-
export type { AdminSetupFormProps } from './components';
|
|
63
|
+
export { AdminGuard, AdminLoginForm, AdminSetupForm, AdminLayout, AdminNav, AdminHeader, StatsCards, RecentOrders, LowStockAlert, RevenueChart, OrderStatusChart, ProductTable, ProductForm, InventoryEditor, CategorySelect, CategoryForm, SEOPreview, TagInput, VariantManager, OrderTable, OrderDetails, RefundDialog, StoreSettings, } from './components';
|
|
64
|
+
export type { AdminSetupFormProps, RevenueChartProps, OrderStatusChartProps, } from './components';
|
|
65
65
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAMH,YAAY,EAEV,WAAW,EACX,aAAa,EACb,SAAS,EACT,KAAK,EACL,SAAS,EACT,OAAO,EACP,cAAc,EACd,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,QAAQ,EACR,OAAO,EAGP,aAAa,EAGb,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,iBAAiB,EAGjB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EAGrB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAGlB,sBAAsB,EAGtB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,SAAS,CAAA;AAMhB,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,UAAU,CAAA;AAMjB,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,WAAW,GACZ,MAAM,UAAU,CAAA;AAOjB,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,UAAU,EACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACT,QAAQ,EACR,WAAW,EACX,aAAa,EACb,QAAQ,EACR,aAAa,EACb,cAAc,EACd,WAAW,EACX,cAAc,EACd,cAAc,EACd,YAAY,EACZ,WAAW,EAEX,UAAU,EAEV,gBAAgB,GACjB,MAAM,OAAO,CAAA;AAMd,OAAO,EACL,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,kBAAkB,GACnB,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAMlE,OAAO,EAEL,UAAU,EACV,cAAc,EACd,cAAc,EAEd,WAAW,EACX,QAAQ,EACR,WAAW,EAEX,UAAU,EACV,YAAY,EACZ,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAMH,YAAY,EAEV,WAAW,EACX,aAAa,EACb,SAAS,EACT,KAAK,EACL,SAAS,EACT,OAAO,EACP,cAAc,EACd,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,QAAQ,EACR,OAAO,EAGP,aAAa,EAGb,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,iBAAiB,EAGjB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EAGrB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAGlB,sBAAsB,EAGtB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,SAAS,CAAA;AAMhB,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,UAAU,CAAA;AAMjB,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,WAAW,GACZ,MAAM,UAAU,CAAA;AAOjB,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,UAAU,EACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACT,QAAQ,EACR,WAAW,EACX,aAAa,EACb,QAAQ,EACR,aAAa,EACb,cAAc,EACd,WAAW,EACX,cAAc,EACd,cAAc,EACd,YAAY,EACZ,WAAW,EAEX,UAAU,EAEV,gBAAgB,GACjB,MAAM,OAAO,CAAA;AAMd,OAAO,EACL,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,kBAAkB,GACnB,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAMlE,OAAO,EAEL,UAAU,EACV,cAAc,EACd,cAAc,EAEd,WAAW,EACX,QAAQ,EACR,WAAW,EAEX,UAAU,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,gBAAgB,EAEhB,YAAY,EACZ,WAAW,EACX,eAAe,EAEf,cAAc,EACd,YAAY,EAEZ,UAAU,EACV,QAAQ,EACR,cAAc,EAEd,UAAU,EACV,YAAY,EACZ,YAAY,EAEZ,aAAa,GACd,MAAM,cAAc,CAAA;AAGrB,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,cAAc,CAAA"}
|
package/dist/admin/index.js
CHANGED
|
@@ -84,7 +84,7 @@ AdminGuard, AdminLoginForm, AdminSetupForm,
|
|
|
84
84
|
// Layout
|
|
85
85
|
AdminLayout, AdminNav, AdminHeader,
|
|
86
86
|
// Dashboard
|
|
87
|
-
StatsCards, RecentOrders, LowStockAlert,
|
|
87
|
+
StatsCards, RecentOrders, LowStockAlert, RevenueChart, OrderStatusChart,
|
|
88
88
|
// Products
|
|
89
89
|
ProductTable, ProductForm, InventoryEditor,
|
|
90
90
|
// Categories
|
package/dist/admin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAqFH,gFAAgF;AAChF,2BAA2B;AAC3B,gFAAgF;AAEhF,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,UAAU,CAAA;AAEjB,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,WAAW,GACZ,MAAM,UAAU,CAAA;AAEjB,gFAAgF;AAChF,mDAAmD;AACnD,0EAA0E;AAC1E,gFAAgF;AAEhF,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,UAAU,EACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACT,QAAQ,EACR,WAAW,EACX,aAAa,EACb,QAAQ,EACR,aAAa,EACb,cAAc,EACd,WAAW,EACX,cAAc,EACd,cAAc,EACd,YAAY,EACZ,WAAW;AACX,oCAAoC;AACpC,UAAU;AACV,gCAAgC;AAChC,gBAAgB,GACjB,MAAM,OAAO,CAAA;AAEd,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF,OAAO,EACL,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,kBAAkB,GACnB,MAAM,SAAS,CAAA;AAIhB,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,OAAO;AACL,OAAO;AACP,UAAU,EACV,cAAc,EACd,cAAc;AACd,SAAS;AACT,WAAW,EACX,QAAQ,EACR,WAAW;AACX,YAAY;AACZ,UAAU,EACV,YAAY,EACZ,aAAa;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAqFH,gFAAgF;AAChF,2BAA2B;AAC3B,gFAAgF;AAEhF,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,UAAU,CAAA;AAEjB,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,WAAW,GACZ,MAAM,UAAU,CAAA;AAEjB,gFAAgF;AAChF,mDAAmD;AACnD,0EAA0E;AAC1E,gFAAgF;AAEhF,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,UAAU,EACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACT,QAAQ,EACR,WAAW,EACX,aAAa,EACb,QAAQ,EACR,aAAa,EACb,cAAc,EACd,WAAW,EACX,cAAc,EACd,cAAc,EACd,YAAY,EACZ,WAAW;AACX,oCAAoC;AACpC,UAAU;AACV,gCAAgC;AAChC,gBAAgB,GACjB,MAAM,OAAO,CAAA;AAEd,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF,OAAO,EACL,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,kBAAkB,GACnB,MAAM,SAAS,CAAA;AAIhB,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,OAAO;AACL,OAAO;AACP,UAAU,EACV,cAAc,EACd,cAAc;AACd,SAAS;AACT,WAAW,EACX,QAAQ,EACR,WAAW;AACX,YAAY;AACZ,UAAU,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,gBAAgB;AAChB,WAAW;AACX,YAAY,EACZ,WAAW,EACX,eAAe;AACf,aAAa;AACb,cAAc,EACd,YAAY;AACZ,gCAAgC;AAChC,UAAU,EACV,QAAQ,EACR,cAAc;AACd,SAAS;AACT,UAAU,EACV,YAAY,EACZ,YAAY;AACZ,WAAW;AACX,aAAa,GACd,MAAM,cAAc,CAAA"}
|
|
@@ -371,17 +371,17 @@ export declare function getRecentOrders(limit?: number): Promise<{
|
|
|
371
371
|
* Create a new order
|
|
372
372
|
*/
|
|
373
373
|
export declare function createOrder(data: Omit<schema.NewOrder, 'tenantId'>): Promise<{
|
|
374
|
+
status: "pending" | "paid" | "shipped" | "delivered" | "cancelled" | "refunded";
|
|
375
|
+
email: string;
|
|
374
376
|
id: string;
|
|
377
|
+
total: string;
|
|
375
378
|
tenantId: string;
|
|
376
|
-
status: "pending" | "paid" | "shipped" | "delivered" | "cancelled" | "refunded";
|
|
377
379
|
createdAt: Date;
|
|
378
380
|
updatedAt: Date;
|
|
379
381
|
customerId: string | null;
|
|
380
|
-
email: string;
|
|
381
382
|
subtotal: string;
|
|
382
383
|
tax: string;
|
|
383
384
|
shipping: string;
|
|
384
|
-
total: string;
|
|
385
385
|
shippingAddress: {
|
|
386
386
|
firstName: string;
|
|
387
387
|
lastName: string;
|
|
@@ -410,15 +410,15 @@ export declare function createOrder(data: Omit<schema.NewOrder, 'tenantId'>): Pr
|
|
|
410
410
|
* Create order items for an order
|
|
411
411
|
*/
|
|
412
412
|
export declare function createOrderItems(items: schema.NewOrderItem[]): Promise<{
|
|
413
|
-
id: string;
|
|
414
413
|
name: string;
|
|
414
|
+
id: string;
|
|
415
|
+
attributes: Record<string, string> | null;
|
|
416
|
+
quantity: number;
|
|
415
417
|
price: string;
|
|
416
418
|
createdAt: Date;
|
|
417
419
|
productId: string;
|
|
418
|
-
attributes: Record<string, string> | null;
|
|
419
420
|
orderId: string;
|
|
420
421
|
variantId: string | null;
|
|
421
|
-
quantity: number;
|
|
422
422
|
}[]>;
|
|
423
423
|
/**
|
|
424
424
|
* Update order status
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rovela-ai/sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.21",
|
|
4
4
|
"description": "Rovela SDK - Pre-built e-commerce components for AI-powered store generation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -166,6 +166,7 @@
|
|
|
166
166
|
"drizzle-orm": "^0.44.3",
|
|
167
167
|
"nanoid": "^5.0.9",
|
|
168
168
|
"next-auth": "^4.24.11",
|
|
169
|
+
"recharts": "^3.5.1",
|
|
169
170
|
"resend": "^6.0.0",
|
|
170
171
|
"stripe": "^20.0.0",
|
|
171
172
|
"tailwind-merge": "^3.3.1",
|