@rovela-ai/sdk 0.1.38 → 0.1.39
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/AdminGuard.d.ts.map +1 -1
- package/dist/admin/components/AdminGuard.js +6 -6
- package/dist/admin/components/AdminGuard.js.map +1 -1
- package/dist/admin/components/AdminLayout.d.ts +4 -18
- package/dist/admin/components/AdminLayout.d.ts.map +1 -1
- package/dist/admin/components/AdminLayout.js +6 -18
- package/dist/admin/components/AdminLayout.js.map +1 -1
- package/dist/admin/components/AdminNav.d.ts.map +1 -1
- package/dist/admin/components/AdminNav.js +22 -2
- package/dist/admin/components/AdminNav.js.map +1 -1
- package/dist/admin/components/AdminUserMenu.d.ts +14 -0
- package/dist/admin/components/AdminUserMenu.d.ts.map +1 -0
- package/dist/admin/components/AdminUserMenu.js +32 -0
- package/dist/admin/components/AdminUserMenu.js.map +1 -0
- package/dist/admin/components/index.d.ts +2 -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/styles/admin-theme.css +45 -12
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminGuard.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminGuard.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE/C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,QAAQ,EACR,UAA2B,EAC3B,YAAoB,EACpB,gBAAgB,GACjB,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"AdminGuard.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminGuard.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE/C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,QAAQ,EACR,UAA2B,EAC3B,YAAoB,EACpB,gBAAgB,GACjB,EAAE,eAAe,kDA+CjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAC5C,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EACjC,OAAO,GAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAM;YAEd,CAAC;;EAYnC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { Fragment as _Fragment, jsx as _jsx
|
|
2
|
+
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
/**
|
|
4
4
|
* @rovela/sdk/admin/components/AdminGuard
|
|
5
5
|
*
|
|
@@ -47,12 +47,12 @@ export function AdminGuard({ children, fallback, redirectTo = '/admin/login', re
|
|
|
47
47
|
window.location.href = '/admin?error=forbidden';
|
|
48
48
|
}
|
|
49
49
|
}, [isAuthenticated, isLoading, isOwner, requireOwner, redirectTo]);
|
|
50
|
-
// Loading state
|
|
50
|
+
// Loading state - return null to let parent layout stay visible
|
|
51
|
+
// Next.js loading.tsx will handle the content area loading state
|
|
51
52
|
if (isLoading) {
|
|
52
|
-
if
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
return (_jsx("div", { className: "admin-page-bg flex min-h-screen items-center justify-center", children: _jsxs("div", { className: "text-center", children: [_jsx("div", { className: "admin-spinner mx-auto h-8 w-8" }), _jsx("p", { className: "mt-4 text-sm admin-text-muted", children: "Loading..." })] }) }));
|
|
53
|
+
// Use custom loading component if provided, otherwise return null
|
|
54
|
+
// Returning null keeps the parent layout (sidebar, user menu) visible
|
|
55
|
+
return loadingComponent ? _jsx(_Fragment, { children: loadingComponent }) : null;
|
|
56
56
|
}
|
|
57
57
|
// Not authenticated
|
|
58
58
|
if (!isAuthenticated) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminGuard.js","sourceRoot":"","sources":["../../../src/admin/components/AdminGuard.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAGpD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,QAAQ,EACR,QAAQ,EACR,UAAU,GAAG,cAAc,EAC3B,YAAY,GAAG,KAAK,EACpB,gBAAgB,GACA;IAChB,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,YAAY,EAAE,CAAA;IAE9D,yCAAyC;IACzC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS;YAAE,OAAM;QAErB,wCAAwC;QACxC,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAA;YACrE,MAAM,WAAW,GAAG,GAAG,UAAU,gBAAgB,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAA;YAClF,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAA;YAClC,OAAM;QACR,CAAC;QAED,+BAA+B;QAC/B,IAAI,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,wBAAwB,CAAA;QACjD,CAAC;IACH,CAAC,EAAE,CAAC,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAA;IAEnE,
|
|
1
|
+
{"version":3,"file":"AdminGuard.js","sourceRoot":"","sources":["../../../src/admin/components/AdminGuard.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAGpD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,QAAQ,EACR,QAAQ,EACR,UAAU,GAAG,cAAc,EAC3B,YAAY,GAAG,KAAK,EACpB,gBAAgB,GACA;IAChB,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,YAAY,EAAE,CAAA;IAE9D,yCAAyC;IACzC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS;YAAE,OAAM;QAErB,wCAAwC;QACxC,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAA;YACrE,MAAM,WAAW,GAAG,GAAG,UAAU,gBAAgB,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAA;YAClF,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAA;YAClC,OAAM;QACR,CAAC;QAED,+BAA+B;QAC/B,IAAI,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,wBAAwB,CAAA;QACjD,CAAC;IACH,CAAC,EAAE,CAAC,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAA;IAEnE,gEAAgE;IAChE,iEAAiE;IACjE,IAAI,SAAS,EAAE,CAAC;QACd,kEAAkE;QAClE,sEAAsE;QACtE,OAAO,gBAAgB,CAAC,CAAC,CAAC,4BAAG,gBAAgB,GAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAC1D,CAAC;IAED,oBAAoB;IACpB,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,4BAAG,QAAQ,GAAI,CAAA;QACxB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,+BAA+B;IAC/B,IAAI,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,4BAAG,QAAQ,GAAI,CAAA;QACxB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,0DAA0D;IAC1D,OAAO,4BAAG,QAAQ,GAAI,CAAA;AACxB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAC3B,SAAiC,EACjC,UAA6C,EAAE;IAE/C,SAAS,gBAAgB,CAAC,KAAQ;QAChC,OAAO,CACL,KAAC,UAAU,OAAK,OAAO,YACrB,KAAC,SAAS,OAAK,KAAK,GAAI,GACb,CACd,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,IAAI,IAAI,WAAW,CAAA;IAC1E,gBAAgB,CAAC,WAAW,GAAG,iBAAiB,WAAW,GAAG,CAAA;IAE9D,OAAO,gBAAgB,CAAA;AACzB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @rovela/sdk/admin/components/AdminLayout
|
|
3
3
|
*
|
|
4
|
-
* Admin dashboard layout with sidebar and
|
|
4
|
+
* Admin dashboard layout with sidebar and floating user menu.
|
|
5
5
|
* Applies the Rovela admin theme for consistent branding.
|
|
6
6
|
*/
|
|
7
7
|
import { type NavItem } from './AdminNav';
|
|
@@ -9,8 +9,6 @@ import type { AdminLayoutProps } from '../types';
|
|
|
9
9
|
import type { ReactNode } from 'react';
|
|
10
10
|
import '../styles/admin-theme.css';
|
|
11
11
|
interface ExtendedAdminLayoutProps extends AdminLayoutProps {
|
|
12
|
-
/** Page title for header */
|
|
13
|
-
title?: string;
|
|
14
12
|
/** Store name for sidebar */
|
|
15
13
|
storeName?: string;
|
|
16
14
|
/** Store URL for "View Store" link */
|
|
@@ -21,32 +19,20 @@ interface ExtendedAdminLayoutProps extends AdminLayoutProps {
|
|
|
21
19
|
logo?: ReactNode;
|
|
22
20
|
}
|
|
23
21
|
/**
|
|
24
|
-
* Admin dashboard layout with sidebar navigation and
|
|
22
|
+
* Admin dashboard layout with sidebar navigation and floating user menu.
|
|
25
23
|
*
|
|
26
24
|
* @example
|
|
27
25
|
* ```tsx
|
|
28
26
|
* // In app/admin/layout.tsx
|
|
29
27
|
* export default function AdminLayout({ children }) {
|
|
30
28
|
* return (
|
|
31
|
-
* <AdminLayout
|
|
32
|
-
* storeName="My Store"
|
|
33
|
-
* activeNav="dashboard"
|
|
34
|
-
* >
|
|
29
|
+
* <AdminLayout storeName="My Store">
|
|
35
30
|
* {children}
|
|
36
31
|
* </AdminLayout>
|
|
37
32
|
* )
|
|
38
33
|
* }
|
|
39
|
-
*
|
|
40
|
-
* // In a specific page
|
|
41
|
-
* <AdminLayout
|
|
42
|
-
* title="Products"
|
|
43
|
-
* activeNav="products"
|
|
44
|
-
* storeName="My Store"
|
|
45
|
-
* >
|
|
46
|
-
* <ProductTable />
|
|
47
|
-
* </AdminLayout>
|
|
48
34
|
* ```
|
|
49
35
|
*/
|
|
50
|
-
export declare function AdminLayout({ children, activeNav,
|
|
36
|
+
export declare function AdminLayout({ children, activeNav, storeName, storeUrl, navItems, logo, className, }: ExtendedAdminLayoutProps): import("react/jsx-runtime").JSX.Element;
|
|
51
37
|
export {};
|
|
52
38
|
//# sourceMappingURL=AdminLayout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminLayout.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminLayout.tsx"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,OAAO,2BAA2B,CAAA;AAMlC,UAAU,wBAAyB,SAAQ,gBAAgB;IACzD,
|
|
1
|
+
{"version":3,"file":"AdminLayout.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminLayout.tsx"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,OAAO,2BAA2B,CAAA;AAMlC,UAAU,wBAAyB,SAAQ,gBAAgB;IACzD,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,+BAA+B;IAC/B,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,SAAS,EACT,SAAmB,EACnB,QAAc,EACd,QAAQ,EACR,IAAI,EACJ,SAAc,GACf,EAAE,wBAAwB,2CA0B1B"}
|
|
@@ -3,44 +3,32 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
/**
|
|
4
4
|
* @rovela/sdk/admin/components/AdminLayout
|
|
5
5
|
*
|
|
6
|
-
* Admin dashboard layout with sidebar and
|
|
6
|
+
* Admin dashboard layout with sidebar and floating user menu.
|
|
7
7
|
* Applies the Rovela admin theme for consistent branding.
|
|
8
8
|
*/
|
|
9
9
|
import { AdminNav } from './AdminNav';
|
|
10
|
-
import {
|
|
10
|
+
import { AdminUserMenu } from './AdminUserMenu';
|
|
11
11
|
// Import Rovela admin theme CSS
|
|
12
12
|
import '../styles/admin-theme.css';
|
|
13
13
|
// =============================================================================
|
|
14
14
|
// Component
|
|
15
15
|
// =============================================================================
|
|
16
16
|
/**
|
|
17
|
-
* Admin dashboard layout with sidebar navigation and
|
|
17
|
+
* Admin dashboard layout with sidebar navigation and floating user menu.
|
|
18
18
|
*
|
|
19
19
|
* @example
|
|
20
20
|
* ```tsx
|
|
21
21
|
* // In app/admin/layout.tsx
|
|
22
22
|
* export default function AdminLayout({ children }) {
|
|
23
23
|
* return (
|
|
24
|
-
* <AdminLayout
|
|
25
|
-
* storeName="My Store"
|
|
26
|
-
* activeNav="dashboard"
|
|
27
|
-
* >
|
|
24
|
+
* <AdminLayout storeName="My Store">
|
|
28
25
|
* {children}
|
|
29
26
|
* </AdminLayout>
|
|
30
27
|
* )
|
|
31
28
|
* }
|
|
32
|
-
*
|
|
33
|
-
* // In a specific page
|
|
34
|
-
* <AdminLayout
|
|
35
|
-
* title="Products"
|
|
36
|
-
* activeNav="products"
|
|
37
|
-
* storeName="My Store"
|
|
38
|
-
* >
|
|
39
|
-
* <ProductTable />
|
|
40
|
-
* </AdminLayout>
|
|
41
29
|
* ```
|
|
42
30
|
*/
|
|
43
|
-
export function AdminLayout({ children, activeNav,
|
|
44
|
-
return (_jsx("div", { className: `rovela-admin-theme ${className}`, children: _jsxs("div", { className: "admin-layout", children: [_jsx(AdminNav, { activeNav: activeNav, items: navItems, storeName: storeName, logo: logo }), _jsxs("div", { className: "admin-layout-main", children: [_jsx(
|
|
31
|
+
export function AdminLayout({ children, activeNav, storeName = 'Admin', storeUrl = '/', navItems, logo, className = '', }) {
|
|
32
|
+
return (_jsx("div", { className: `rovela-admin-theme ${className}`, children: _jsxs("div", { className: "admin-layout", children: [_jsx(AdminNav, { activeNav: activeNav, items: navItems, storeName: storeName, logo: logo, storeUrl: storeUrl }), _jsxs("div", { className: "admin-layout-main", children: [_jsx(AdminUserMenu, {}), _jsx("main", { className: "admin-layout-content", children: children })] })] }) }));
|
|
45
33
|
}
|
|
46
34
|
//# sourceMappingURL=AdminLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminLayout.js","sourceRoot":"","sources":["../../../src/admin/components/AdminLayout.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"AdminLayout.js","sourceRoot":"","sources":["../../../src/admin/components/AdminLayout.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAI/C,gCAAgC;AAChC,OAAO,2BAA2B,CAAA;AAiBlC,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,QAAQ,EACR,SAAS,EACT,SAAS,GAAG,OAAO,EACnB,QAAQ,GAAG,GAAG,EACd,QAAQ,EACR,IAAI,EACJ,SAAS,GAAG,EAAE,GACW;IACzB,OAAO,CACL,cAAK,SAAS,EAAE,sBAAsB,SAAS,EAAE,YAC/C,eAAK,SAAS,EAAC,cAAc,aAE3B,KAAC,QAAQ,IACP,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,GAClB,EAGF,eAAK,SAAS,EAAC,mBAAmB,aAEhC,KAAC,aAAa,KAAG,EAGjB,eAAM,SAAS,EAAC,sBAAsB,YACnC,QAAQ,GACJ,IACH,IACF,GACF,CACP,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminNav.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminNav.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"AdminNav.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminNav.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAS7C,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;AA+FD;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EACvB,SAAS,EACT,KAAK,EACL,SAAS,EAAE,aAAuB,EAClC,IAAI,EACJ,QAAc,EACd,SAAc,GACf,EAAE,aAAa,2CA+If"}
|
|
@@ -10,6 +10,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
10
10
|
* and store name from StoreSettingsProvider (with prop fallback).
|
|
11
11
|
*/
|
|
12
12
|
import React from 'react';
|
|
13
|
+
import { usePathname } from 'next/navigation';
|
|
13
14
|
import { LayoutDashboard, Package, FolderOpen, ClipboardList, Users, Settings, ExternalLink } from 'lucide-react';
|
|
14
15
|
import { useStoreSettingsOptional } from '../../core';
|
|
15
16
|
// =============================================================================
|
|
@@ -75,6 +76,25 @@ function NavItemButton({ item, isActive, }) {
|
|
|
75
76
|
export function AdminNav({ activeNav, items, storeName: storeNameProp = 'Admin', logo, storeUrl = '/', className = '', }) {
|
|
76
77
|
// Get store settings from context (optional - works even outside provider)
|
|
77
78
|
const storeSettings = useStoreSettingsOptional();
|
|
79
|
+
// Auto-detect active nav from pathname when not explicitly provided
|
|
80
|
+
const pathname = usePathname();
|
|
81
|
+
const resolvedActiveNav = activeNav ?? (() => {
|
|
82
|
+
if (!pathname)
|
|
83
|
+
return undefined;
|
|
84
|
+
if (pathname === '/admin' || pathname === '/admin/')
|
|
85
|
+
return 'dashboard';
|
|
86
|
+
if (pathname.startsWith('/admin/products'))
|
|
87
|
+
return 'products';
|
|
88
|
+
if (pathname.startsWith('/admin/categories'))
|
|
89
|
+
return 'categories';
|
|
90
|
+
if (pathname.startsWith('/admin/orders'))
|
|
91
|
+
return 'orders';
|
|
92
|
+
if (pathname.startsWith('/admin/customers'))
|
|
93
|
+
return 'customers';
|
|
94
|
+
if (pathname.startsWith('/admin/settings'))
|
|
95
|
+
return 'settings';
|
|
96
|
+
return undefined;
|
|
97
|
+
})();
|
|
78
98
|
// Resolve store name: prop > context > default
|
|
79
99
|
const storeName = storeNameProp !== 'Admin' ? storeNameProp : (storeSettings?.storeName || storeNameProp);
|
|
80
100
|
// Get logo URL from environment variable (same pattern as storefront Header)
|
|
@@ -87,8 +107,8 @@ export function AdminNav({ activeNav, items, storeName: storeNameProp = 'Admin',
|
|
|
87
107
|
// Fallback: Store initial badge
|
|
88
108
|
_jsxs(_Fragment, { children: [_jsx("div", { className: "admin-sidebar-badge", children: storeName.charAt(0).toUpperCase() }), _jsxs("div", { className: "admin-sidebar-header-text", children: [_jsx("span", { className: "admin-sidebar-store-name", children: storeName }), _jsx("span", { className: "admin-sidebar-subtitle", children: "Admin Panel" })] })] }))) }), _jsx("div", { className: "admin-sidebar-nav", children: useGroups ? (
|
|
89
109
|
// Grouped navigation
|
|
90
|
-
_jsx("div", { className: "admin-sidebar-groups", children: defaultNavGroups.map((group) => (_jsxs("div", { className: "admin-sidebar-section", children: [_jsx("p", { className: "admin-sidebar-section-title", children: group.label }), _jsx("ul", { className: "admin-sidebar-items", children: group.items.map((item) => (_jsx("li", { children: _jsx(NavItemButton, { item: item, isActive:
|
|
110
|
+
_jsx("div", { className: "admin-sidebar-groups", children: defaultNavGroups.map((group) => (_jsxs("div", { className: "admin-sidebar-section", children: [_jsx("p", { className: "admin-sidebar-section-title", children: group.label }), _jsx("ul", { className: "admin-sidebar-items", children: group.items.map((item) => (_jsx("li", { children: _jsx(NavItemButton, { item: item, isActive: resolvedActiveNav === item.id }) }, item.id))) })] }, group.label))) })) : (
|
|
91
111
|
// Flat navigation (custom items)
|
|
92
|
-
_jsx("ul", { className: "admin-sidebar-items", children: items?.map((item) => (_jsx("li", { children: _jsx(NavItemButton, { item: item, isActive:
|
|
112
|
+
_jsx("ul", { className: "admin-sidebar-items", children: items?.map((item) => (_jsx("li", { children: _jsx(NavItemButton, { item: item, isActive: resolvedActiveNav === item.id }) }, item.id))) })) }), _jsx("div", { className: "admin-sidebar-footer", children: _jsxs("div", { className: "admin-sidebar-footer-content", children: [_jsx(NavItemButton, { item: settingsItem, isActive: resolvedActiveNav === 'settings' }), _jsxs("a", { href: storeUrl, target: "_blank", rel: "noopener noreferrer", className: "admin-sidebar-link", children: [_jsx(ExternalLink, { className: "admin-sidebar-item-icon" }), "View Store"] }), _jsxs("a", { href: "https://rovela.ai", target: "_blank", rel: "noopener noreferrer", className: "admin-sidebar-powered-by", children: [_jsx("span", { children: "Powered by" }), _jsx(RovelaLogo, { className: "admin-rovela-logo" }), _jsx("span", { className: "admin-powered-by-name", children: "Rovela" })] })] }) })] }));
|
|
93
113
|
}
|
|
94
114
|
//# sourceMappingURL=AdminNav.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminNav.js","sourceRoot":"","sources":["../../../src/admin/components/AdminNav.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AdminNav.js","sourceRoot":"","sources":["../../../src/admin/components/AdminNav.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface AdminUserMenuProps {
|
|
2
|
+
/** Custom className */
|
|
3
|
+
className?: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Floating user menu with avatar and dropdown actions.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* <AdminUserMenu />
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export declare function AdminUserMenu({ className, }: AdminUserMenuProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=AdminUserMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdminUserMenu.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminUserMenu.tsx"],"names":[],"mappings":"AAiBA,MAAM,WAAW,kBAAkB;IACjC,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,EAC5B,SAAc,GACf,EAAE,kBAAkB,2CAwEpB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* @rovela/sdk/admin/components/AdminUserMenu
|
|
5
|
+
*
|
|
6
|
+
* Floating user menu component for admin dashboard.
|
|
7
|
+
* Positioned in top-right corner, provides user info and actions.
|
|
8
|
+
*/
|
|
9
|
+
import { useState, useCallback } from 'react';
|
|
10
|
+
import { ChevronDown, Settings, LogOut } from 'lucide-react';
|
|
11
|
+
import { useAdminAuth } from '../hooks/useAdminAuth';
|
|
12
|
+
// =============================================================================
|
|
13
|
+
// Component
|
|
14
|
+
// =============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Floating user menu with avatar and dropdown actions.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```tsx
|
|
20
|
+
* <AdminUserMenu />
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export function AdminUserMenu({ className = '', }) {
|
|
24
|
+
const { admin, signOut } = useAdminAuth();
|
|
25
|
+
const [isMenuOpen, setIsMenuOpen] = useState(false);
|
|
26
|
+
const handleSignOut = useCallback(async () => {
|
|
27
|
+
await signOut();
|
|
28
|
+
window.location.href = '/admin/login';
|
|
29
|
+
}, [signOut]);
|
|
30
|
+
return (_jsx("div", { className: `admin-user-menu ${className}`, children: _jsxs("div", { className: "admin-dropdown", children: [_jsxs("button", { onClick: () => setIsMenuOpen(!isMenuOpen), className: "admin-user-menu-btn", children: [_jsx("div", { className: "admin-avatar admin-avatar-sm", children: admin?.name?.charAt(0).toUpperCase() || 'A' }), _jsx("span", { className: "admin-user-menu-name", children: admin?.name || 'Admin' }), _jsx(ChevronDown, { className: `h-4 w-4 admin-text-muted transition-transform ${isMenuOpen ? 'rotate-180' : ''}` })] }), isMenuOpen && (_jsxs(_Fragment, { children: [_jsx("div", { className: "admin-dropdown-backdrop", onClick: () => setIsMenuOpen(false) }), _jsxs("div", { className: "admin-dropdown-content", children: [_jsxs("div", { className: "admin-dropdown-header", children: [_jsx("p", { className: "admin-dropdown-header-name", children: admin?.name }), _jsx("p", { className: "admin-dropdown-header-email", children: admin?.email }), admin?.role === 'owner' && (_jsx("span", { className: "admin-badge admin-badge-primary mt-2", children: "Owner" }))] }), _jsxs("div", { className: "py-1", children: [_jsxs("a", { href: "/admin/settings", className: "admin-dropdown-item", onClick: () => setIsMenuOpen(false), children: [_jsx(Settings, { className: "h-4 w-4", strokeWidth: 1.5 }), "Settings"] }), _jsx("div", { className: "admin-dropdown-divider" }), _jsxs("button", { onClick: handleSignOut, className: "admin-dropdown-item admin-dropdown-item-destructive w-full", children: [_jsx(LogOut, { className: "h-4 w-4", strokeWidth: 1.5 }), "Sign Out"] })] })] })] }))] }) }));
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=AdminUserMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdminUserMenu.js","sourceRoot":"","sources":["../../../src/admin/components/AdminUserMenu.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAWpD,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,SAAS,GAAG,EAAE,GACK;IACnB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,YAAY,EAAE,CAAA;IACzC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEnD,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC3C,MAAM,OAAO,EAAE,CAAA;QACf,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,cAAc,CAAA;IACvC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAEb,OAAO,CACL,cAAK,SAAS,EAAE,mBAAmB,SAAS,EAAE,YAC5C,eAAK,SAAS,EAAC,gBAAgB,aAC7B,kBACE,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,EACzC,SAAS,EAAC,qBAAqB,aAE/B,cAAK,SAAS,EAAC,8BAA8B,YAC1C,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,GAAG,GACxC,EACN,eAAM,SAAS,EAAC,sBAAsB,YAAE,KAAK,EAAE,IAAI,IAAI,OAAO,GAAQ,EACtE,KAAC,WAAW,IACV,SAAS,EAAE,iDAAiD,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,GAC5F,IACK,EAGR,UAAU,IAAI,CACb,8BAEE,cACE,SAAS,EAAC,yBAAyB,EACnC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,GACnC,EAGF,eAAK,SAAS,EAAC,wBAAwB,aACrC,eAAK,SAAS,EAAC,uBAAuB,aACpC,YAAG,SAAS,EAAC,4BAA4B,YAAE,KAAK,EAAE,IAAI,GAAK,EAC3D,YAAG,SAAS,EAAC,6BAA6B,YAAE,KAAK,EAAE,KAAK,GAAK,EAC5D,KAAK,EAAE,IAAI,KAAK,OAAO,IAAI,CAC1B,eAAM,SAAS,EAAC,sCAAsC,sBAE/C,CACR,IACG,EAEN,eAAK,SAAS,EAAC,MAAM,aACnB,aACE,IAAI,EAAC,iBAAiB,EACtB,SAAS,EAAC,qBAAqB,EAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,aAEnC,KAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI,gBAEhD,EAEJ,cAAK,SAAS,EAAC,wBAAwB,GAAG,EAE1C,kBACE,OAAO,EAAE,aAAa,EACtB,SAAS,EAAC,4DAA4D,aAEtE,KAAC,MAAM,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI,gBAEzC,IACL,IACF,IACL,CACJ,IACG,GACF,CACP,CAAA;AACH,CAAC"}
|
|
@@ -9,6 +9,8 @@ export { AdminSetupForm } from './AdminSetupForm';
|
|
|
9
9
|
export type { AdminSetupFormProps } from './AdminSetupForm';
|
|
10
10
|
export { AdminLayout } from './AdminLayout';
|
|
11
11
|
export { AdminNav } from './AdminNav';
|
|
12
|
+
export { AdminUserMenu } from './AdminUserMenu';
|
|
13
|
+
export type { AdminUserMenuProps } from './AdminUserMenu';
|
|
12
14
|
export { AdminHeader } from './AdminHeader';
|
|
13
15
|
export { StatsCards } from './StatsCards';
|
|
14
16
|
export { RecentOrders } from './RecentOrders';
|
|
@@ -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;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,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAMvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAMrE,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;AAM/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,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,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAGzD,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,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAMvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAMrE,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;AAM/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA"}
|
|
@@ -14,6 +14,8 @@ export { AdminSetupForm } from './AdminSetupForm';
|
|
|
14
14
|
// =============================================================================
|
|
15
15
|
export { AdminLayout } from './AdminLayout';
|
|
16
16
|
export { AdminNav } from './AdminNav';
|
|
17
|
+
export { AdminUserMenu } from './AdminUserMenu';
|
|
18
|
+
// Legacy - kept for backwards compatibility
|
|
17
19
|
export { AdminHeader } from './AdminHeader';
|
|
18
20
|
// =============================================================================
|
|
19
21
|
// Dashboard Components
|
|
@@ -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;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;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG7C,gFAAgF;AAChF,2CAA2C;AAC3C,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAG3D,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;AAE/C,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,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,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG/C,4CAA4C;AAC5C,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;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG7C,gFAAgF;AAChF,2CAA2C;AAC3C,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAG3D,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;AAE/C,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA"}
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
--admin-sidebar: 36 20% 97%; /* Very light warm gray - blends with content */
|
|
33
33
|
--admin-sidebar-hover: 36 15% 93%; /* Subtle hover */
|
|
34
34
|
--admin-sidebar-border: 36 15% 88%; /* Very subtle border */
|
|
35
|
-
--admin-sidebar-active: 163
|
|
36
|
-
--admin-sidebar-active-text: 163 86%
|
|
35
|
+
--admin-sidebar-active: 163 86% 95%; /* Light primary bg for active */
|
|
36
|
+
--admin-sidebar-active-text: 163 86% 37%; /* Primary color text */
|
|
37
37
|
|
|
38
38
|
/* Text Colors */
|
|
39
39
|
--admin-foreground: 220 20% 14%; /* Near-black text */
|
|
@@ -234,8 +234,8 @@
|
|
|
234
234
|
--admin-sidebar: 200 10% 12%; /* Slightly lighter than content bg */
|
|
235
235
|
--admin-sidebar-hover: 200 10% 18%; /* Visible hover */
|
|
236
236
|
--admin-sidebar-border: 200 10% 20%; /* Subtle border */
|
|
237
|
-
--admin-sidebar-active: 163
|
|
238
|
-
--admin-sidebar-active-text: 163 86%
|
|
237
|
+
--admin-sidebar-active: 163 86% 15%; /* Dark primary bg for active */
|
|
238
|
+
--admin-sidebar-active-text: 163 86% 45%; /* Primary color text */
|
|
239
239
|
|
|
240
240
|
/* Text Colors - Inverted for dark mode */
|
|
241
241
|
--admin-foreground: 36 36% 95%; /* Cream text */
|
|
@@ -308,8 +308,8 @@
|
|
|
308
308
|
--admin-sidebar: 200 10% 12%; /* Slightly lighter than content bg */
|
|
309
309
|
--admin-sidebar-hover: 200 10% 18%; /* Visible hover */
|
|
310
310
|
--admin-sidebar-border: 200 10% 20%; /* Subtle border */
|
|
311
|
-
--admin-sidebar-active: 163
|
|
312
|
-
--admin-sidebar-active-text: 163 86%
|
|
311
|
+
--admin-sidebar-active: 163 86% 15%; /* Dark primary bg for active */
|
|
312
|
+
--admin-sidebar-active-text: 163 86% 45%; /* Primary color text */
|
|
313
313
|
|
|
314
314
|
/* Text Colors */
|
|
315
315
|
--admin-foreground: 36 36% 95%;
|
|
@@ -381,8 +381,8 @@
|
|
|
381
381
|
--admin-sidebar: 200 10% 12%; /* Slightly lighter than content bg */
|
|
382
382
|
--admin-sidebar-hover: 200 10% 18%; /* Visible hover */
|
|
383
383
|
--admin-sidebar-border: 200 10% 20%; /* Subtle border */
|
|
384
|
-
--admin-sidebar-active: 163
|
|
385
|
-
--admin-sidebar-active-text: 163 86%
|
|
384
|
+
--admin-sidebar-active: 163 86% 15%; /* Dark primary bg for active */
|
|
385
|
+
--admin-sidebar-active-text: 163 86% 45%; /* Primary color text */
|
|
386
386
|
|
|
387
387
|
/* Text Colors */
|
|
388
388
|
--admin-foreground: 36 36% 95%;
|
|
@@ -476,8 +476,9 @@
|
|
|
476
476
|
width: 100%;
|
|
477
477
|
}
|
|
478
478
|
|
|
479
|
-
/* Main content area -
|
|
479
|
+
/* Main content area - relative for floating user menu */
|
|
480
480
|
.rovela-admin-theme .admin-layout-main {
|
|
481
|
+
position: relative;
|
|
481
482
|
display: flex;
|
|
482
483
|
flex: 1;
|
|
483
484
|
flex-direction: column;
|
|
@@ -492,6 +493,38 @@
|
|
|
492
493
|
padding: var(--admin-space-6);
|
|
493
494
|
}
|
|
494
495
|
|
|
496
|
+
/* Floating user menu - top right corner */
|
|
497
|
+
.rovela-admin-theme .admin-user-menu {
|
|
498
|
+
position: absolute;
|
|
499
|
+
top: var(--admin-space-4);
|
|
500
|
+
right: var(--admin-space-6);
|
|
501
|
+
z-index: var(--admin-z-dropdown);
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
.rovela-admin-theme .admin-user-menu-btn {
|
|
505
|
+
display: flex;
|
|
506
|
+
align-items: center;
|
|
507
|
+
gap: var(--admin-space-2);
|
|
508
|
+
padding: var(--admin-space-2) var(--admin-space-3);
|
|
509
|
+
background: hsl(var(--admin-card));
|
|
510
|
+
border: var(--admin-border-width) solid hsl(var(--admin-border));
|
|
511
|
+
border-radius: var(--admin-radius-lg);
|
|
512
|
+
cursor: pointer;
|
|
513
|
+
transition: var(--admin-transition-colors);
|
|
514
|
+
box-shadow: var(--admin-shadow-sm);
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
.rovela-admin-theme .admin-user-menu-btn:hover {
|
|
518
|
+
background: hsl(var(--admin-background-subtle));
|
|
519
|
+
box-shadow: var(--admin-shadow-md);
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
.rovela-admin-theme .admin-user-menu-name {
|
|
523
|
+
font-size: var(--admin-text-sm);
|
|
524
|
+
font-weight: var(--admin-font-medium);
|
|
525
|
+
color: hsl(var(--admin-foreground));
|
|
526
|
+
}
|
|
527
|
+
|
|
495
528
|
/* ═══════════════════════════════════════════════════════════════════════════
|
|
496
529
|
TYPOGRAPHY UTILITIES
|
|
497
530
|
═══════════════════════════════════════════════════════════════════════════ */
|
|
@@ -1235,7 +1268,7 @@
|
|
|
1235
1268
|
}
|
|
1236
1269
|
|
|
1237
1270
|
/* ═══════════════════════════════════════════════════════════════════════════
|
|
1238
|
-
HEADER COMPONENT
|
|
1271
|
+
HEADER COMPONENT (Legacy - kept for backwards compatibility)
|
|
1239
1272
|
═══════════════════════════════════════════════════════════════════════════ */
|
|
1240
1273
|
|
|
1241
1274
|
.rovela-admin-theme .admin-header {
|
|
@@ -2207,10 +2240,10 @@
|
|
|
2207
2240
|
}
|
|
2208
2241
|
|
|
2209
2242
|
/* ═══════════════════════════════════════════════════════════════════════════
|
|
2210
|
-
HEADER EXTENDED COMPONENTS
|
|
2243
|
+
HEADER EXTENDED COMPONENTS (Legacy - kept for backwards compatibility)
|
|
2211
2244
|
═══════════════════════════════════════════════════════════════════════════ */
|
|
2212
2245
|
|
|
2213
|
-
/* User menu button in header */
|
|
2246
|
+
/* User menu button in header (legacy) */
|
|
2214
2247
|
.rovela-admin-theme .admin-header-user-btn {
|
|
2215
2248
|
display: flex;
|
|
2216
2249
|
align-items: center;
|