@actuate-media/cms-admin 0.14.0 → 0.15.0
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/actuate-admin.css +1 -1
- package/dist/components/NotificationBell.d.ts.map +1 -1
- package/dist/components/NotificationBell.js +32 -11
- package/dist/components/NotificationBell.js.map +1 -1
- package/dist/layout/Header.d.ts +14 -1
- package/dist/layout/Header.d.ts.map +1 -1
- package/dist/layout/Header.js +10 -3
- package/dist/layout/Header.js.map +1 -1
- package/dist/layout/Layout.d.ts.map +1 -1
- package/dist/layout/Layout.js +50 -2
- package/dist/layout/Layout.js.map +1 -1
- package/dist/layout/Sidebar.d.ts +7 -0
- package/dist/layout/Sidebar.d.ts.map +1 -1
- package/dist/layout/Sidebar.js +121 -46
- package/dist/layout/Sidebar.js.map +1 -1
- package/dist/views/Dashboard.d.ts.map +1 -1
- package/dist/views/Dashboard.js +136 -62
- package/dist/views/Dashboard.js.map +1 -1
- package/package.json +2 -2
- package/src/components/NotificationBell.tsx +31 -11
- package/src/layout/Header.tsx +90 -43
- package/src/layout/Layout.tsx +110 -1
- package/src/layout/Sidebar.tsx +218 -98
- package/src/views/Dashboard.tsx +258 -131
package/dist/layout/Header.js
CHANGED
|
@@ -1,18 +1,25 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import { useState } from 'react';
|
|
4
|
-
import { Search,
|
|
4
|
+
import { Search, User, ChevronDown, Menu, Sun, Moon } from 'lucide-react';
|
|
5
5
|
import * as DropdownMenu from '@radix-ui/react-dropdown-menu';
|
|
6
6
|
import { CommandPalette } from '../components/CommandPalette.js';
|
|
7
|
+
import { NotificationBell } from '../components/NotificationBell.js';
|
|
7
8
|
import { useTheme } from '../components/ThemeProvider.js';
|
|
8
9
|
import { LocaleSwitcher } from '../components/LocaleSwitcher.js';
|
|
9
|
-
export function Header({ onToggleSidebar, session, onNavigate }) {
|
|
10
|
+
export function Header({ onToggleSidebar, session, onNavigate, pageActions }) {
|
|
10
11
|
const [showCommandPalette, setShowCommandPalette] = useState(false);
|
|
11
12
|
const [searchQuery, setSearchQuery] = useState('');
|
|
12
13
|
const { resolvedTheme, setTheme } = useTheme();
|
|
13
14
|
const toggleTheme = () => {
|
|
14
15
|
setTheme(resolvedTheme === 'dark' ? 'light' : 'dark');
|
|
15
16
|
};
|
|
16
|
-
|
|
17
|
+
const initial = session?.user?.name?.charAt(0)?.toUpperCase() ??
|
|
18
|
+
session?.user?.email?.charAt(0)?.toUpperCase() ??
|
|
19
|
+
'A';
|
|
20
|
+
return (_jsxs(_Fragment, { children: [_jsxs("header", { className: "border-border bg-background flex h-14 items-center gap-3 border-b px-4", children: [_jsx("button", { onClick: onToggleSidebar, className: "hover:bg-accent rounded-lg p-2 transition-colors md:hidden", "aria-label": "Toggle sidebar", children: _jsx(Menu, { className: "text-foreground h-5 w-5", strokeWidth: 2 }) }), _jsxs("div", { className: "relative hidden flex-1 md:block", children: [_jsx(Search, { className: "text-muted-foreground pointer-events-none absolute top-1/2 left-3 h-4 w-4 -translate-y-1/2", "aria-hidden": true }), _jsx("input", { type: "text", placeholder: "Search...", "aria-label": "Search content", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), onFocus: () => setShowCommandPalette(true), onKeyDown: (e) => {
|
|
21
|
+
if (e.key === 'Escape')
|
|
22
|
+
e.target.blur();
|
|
23
|
+
}, className: "border-border bg-input-background text-foreground placeholder:text-muted-foreground focus:ring-ring h-9 w-full max-w-md rounded-lg border py-1.5 pr-14 pl-9 text-sm focus:border-transparent focus:ring-2 focus:outline-none" }), _jsx("span", { className: "border-border bg-background text-muted-foreground pointer-events-none absolute top-1/2 right-2 hidden -translate-y-1/2 rounded border px-1.5 py-0.5 font-mono text-[10px] sm:inline-flex", "aria-hidden": true, children: "\u2318K" })] }), _jsx("button", { onClick: () => setShowCommandPalette(true), className: "hover:bg-accent rounded-lg p-2 transition-colors md:hidden", "aria-label": "Search", children: _jsx(Search, { className: "text-muted-foreground h-5 w-5" }) }), _jsxs("div", { className: "ml-auto flex items-center gap-1.5", children: [_jsx(LocaleSwitcher, {}), _jsx("button", { onClick: toggleTheme, className: "hover:bg-accent rounded-lg p-2 transition-colors", "aria-label": resolvedTheme === 'dark' ? 'Switch to light mode' : 'Switch to dark mode', children: resolvedTheme === 'dark' ? (_jsx(Sun, { className: "text-muted-foreground h-5 w-5" })) : (_jsx(Moon, { className: "text-muted-foreground h-5 w-5" })) }), _jsx(NotificationBell, {}), _jsxs(DropdownMenu.Root, { children: [_jsx(DropdownMenu.Trigger, { asChild: true, children: _jsxs("button", { className: "hover:bg-accent flex items-center gap-1.5 rounded-lg p-1 transition-colors", "aria-label": "Account menu", children: [_jsx("div", { className: "flex h-8 w-8 items-center justify-center rounded-full bg-linear-to-br from-blue-500 to-purple-600", children: _jsx("span", { className: "text-sm font-medium text-white", children: initial }) }), _jsx(ChevronDown, { className: "text-muted-foreground hidden h-4 w-4 sm:block", "aria-hidden": true })] }) }), _jsx(DropdownMenu.Portal, { children: _jsxs(DropdownMenu.Content, { className: "bg-popover text-popover-foreground border-border z-50 min-w-[200px] rounded-lg border p-1 shadow-lg", align: "end", sideOffset: 5, children: [_jsxs("div", { className: "border-border border-b px-3 py-2", children: [_jsx("p", { className: "text-sm font-medium", children: session?.user?.name ?? 'Admin User' }), _jsx("p", { className: "text-muted-foreground text-xs", children: session?.user?.email ?? 'admin@example.com' })] }), _jsxs(DropdownMenu.Item, { className: "hover:bg-accent flex cursor-pointer items-center gap-2 rounded px-3 py-2 text-sm outline-none", onSelect: () => onNavigate('/profile'), children: [_jsx(User, { className: "h-4 w-4" }), "Profile"] }), _jsx(DropdownMenu.Item, { className: "hover:bg-accent flex cursor-pointer items-center gap-2 rounded px-3 py-2 text-sm outline-none", onSelect: () => onNavigate('/settings'), children: "Settings" }), _jsx(DropdownMenu.Separator, { className: "bg-border my-1 h-px" }), _jsx(DropdownMenu.Item, { className: "text-destructive hover:bg-accent flex cursor-pointer items-center gap-2 rounded px-3 py-2 text-sm outline-none", onSelect: () => onNavigate('/logout'), children: "Logout" })] }) })] }), pageActions && (_jsx("div", { className: "border-border ml-2 hidden items-center gap-2 border-l pl-3 md:flex", children: pageActions }))] })] }), _jsx(CommandPalette, { open: showCommandPalette, onOpenChange: setShowCommandPalette, onNavigate: onNavigate })] }));
|
|
17
24
|
}
|
|
18
25
|
//# sourceMappingURL=Header.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/layout/Header.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/layout/Header.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Layout.d.ts","sourceRoot":"","sources":["../../src/layout/Layout.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"Layout.d.ts","sourceRoot":"","sources":["../../src/layout/Layout.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAQpE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,GAAG,CAAA;IACX,OAAO,EAAE,GAAG,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,WAAW,2CA0CzF"}
|
package/dist/layout/Layout.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useState, useEffect } from 'react';
|
|
3
|
+
import { useMemo, useState, useEffect } from 'react';
|
|
4
|
+
import { ExternalLink, Plus } from 'lucide-react';
|
|
4
5
|
import { Sidebar } from './Sidebar.js';
|
|
5
6
|
import { Header } from './Header.js';
|
|
6
7
|
import { Breadcrumbs } from '../components/Breadcrumbs.js';
|
|
@@ -26,6 +27,53 @@ export function Layout({ config, session, currentPath, onNavigate, children }) {
|
|
|
26
27
|
useEffect(() => {
|
|
27
28
|
setMobileSidebarOpen(false);
|
|
28
29
|
}, [currentPath]);
|
|
29
|
-
|
|
30
|
+
const pageActions = useMemo(() => computePageActions({ currentPath, config, onNavigate }), [currentPath, config, onNavigate]);
|
|
31
|
+
return (_jsxs(_Fragment, { children: [_jsx(Toaster, { position: "bottom-right" }), _jsx(AdminShell, { mobileSidebarOpen: mobileSidebarOpen, onMobileSidebarClose: () => setMobileSidebarOpen(false), sidebar: _jsx(Sidebar, { collapsed: sidebarCollapsed, onToggleCollapse: () => setSidebarCollapsed(!sidebarCollapsed), currentPath: currentPath, onNavigate: onNavigate, config: config }), header: _jsx(Header, { onToggleSidebar: () => setMobileSidebarOpen(!mobileSidebarOpen), session: session, onNavigate: onNavigate, pageActions: pageActions }), breadcrumbs: _jsx(Breadcrumbs, { currentPath: currentPath, onNavigate: onNavigate }), children: _jsx("div", { className: "h-full", children: children }) })] }));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Per-route primary actions that render on the right of the top bar.
|
|
35
|
+
*
|
|
36
|
+
* Centralised here so the top bar's actions row stays consistent
|
|
37
|
+
* across view changes — no flicker on navigation, no per-view header
|
|
38
|
+
* reimplementation. Views that need view-local actions (e.g. a
|
|
39
|
+
* "Save draft" button on the post editor) continue to render them
|
|
40
|
+
* inside their own hero; this slot is for the highest-level
|
|
41
|
+
* primary/secondary pair that mirrors the reference dashboard.
|
|
42
|
+
*
|
|
43
|
+
* Resolution rules:
|
|
44
|
+
* - Dashboard / home → "+ New Post" + "View Site"
|
|
45
|
+
* - List views → just "+ New <Type>"
|
|
46
|
+
* - Editor views → no top-bar action (editor renders its own toolbar)
|
|
47
|
+
*/
|
|
48
|
+
function computePageActions({ currentPath, config, onNavigate, }) {
|
|
49
|
+
// Resolve the "primary" content collection (used for both the dashboard
|
|
50
|
+
// and any explicit /posts route). Prefer a real `posts` or `post`-type
|
|
51
|
+
// collection over the hard-coded slug so admin-managed CMS configs work.
|
|
52
|
+
const collections = collectionList(config);
|
|
53
|
+
const postsCol = collections.find((c) => c.slug === 'posts' || c.type === 'post') ??
|
|
54
|
+
collections.find((c) => c.type === 'post');
|
|
55
|
+
const postsSlug = postsCol?.slug ?? 'posts';
|
|
56
|
+
const postsLabel = postsCol?.labels?.singular ?? 'Post';
|
|
57
|
+
const siteUrl = config?.site?.url ?? config?.seo?.siteUrl ?? null;
|
|
58
|
+
const isDashboard = currentPath === '/' || currentPath === '/dashboard';
|
|
59
|
+
if (isDashboard) {
|
|
60
|
+
return (_jsxs(_Fragment, { children: [_jsxs("button", { type: "button", onClick: () => onNavigate(`/${postsSlug}/new`), className: "bg-primary text-primary-foreground hover:bg-primary/90 focus-visible:ring-ring inline-flex items-center gap-1.5 rounded-lg px-3.5 py-1.5 text-sm font-medium shadow-sm transition-colors focus:outline-none focus-visible:ring-2", children: [_jsx(Plus, { className: "h-3.5 w-3.5", "aria-hidden": true }), "New ", postsLabel] }), siteUrl ? (_jsxs("a", { href: siteUrl, target: "_blank", rel: "noopener noreferrer", className: "border-border bg-background text-foreground hover:bg-accent inline-flex items-center gap-1.5 rounded-lg border px-3 py-1.5 text-sm font-medium transition-colors", children: [_jsx(ExternalLink, { className: "h-3.5 w-3.5", "aria-hidden": true }), "View Site"] })) : null] }));
|
|
61
|
+
}
|
|
62
|
+
// List views — surface "+ New X" so authors can keep creating without
|
|
63
|
+
// hunting for a per-list button. Skip on editor views; those have their
|
|
64
|
+
// own toolbar.
|
|
65
|
+
for (const c of collections) {
|
|
66
|
+
if (currentPath === `/${c.slug}`) {
|
|
67
|
+
return (_jsxs("button", { type: "button", onClick: () => onNavigate(`/${c.slug}/new`), className: "bg-primary text-primary-foreground hover:bg-primary/90 focus-visible:ring-ring inline-flex items-center gap-1.5 rounded-lg px-3.5 py-1.5 text-sm font-medium shadow-sm transition-colors focus:outline-none focus-visible:ring-2", children: [_jsx(Plus, { className: "h-3.5 w-3.5", "aria-hidden": true }), "New ", c.labels?.singular ?? c.slug] }));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
function collectionList(config) {
|
|
73
|
+
if (!config?.collections)
|
|
74
|
+
return [];
|
|
75
|
+
const raw = config.collections;
|
|
76
|
+
const list = Array.isArray(raw) ? raw : Object.values(raw);
|
|
77
|
+
return list.filter((c) => !c?.admin?.hidden);
|
|
30
78
|
}
|
|
31
79
|
//# sourceMappingURL=Layout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../src/layout/Layout.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAkB,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../src/layout/Layout.tsx"],"names":[],"mappings":"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"}
|
package/dist/layout/Sidebar.d.ts
CHANGED
|
@@ -11,6 +11,13 @@ export interface NavItem {
|
|
|
11
11
|
path: string;
|
|
12
12
|
label: string;
|
|
13
13
|
icon: LucideIcon;
|
|
14
|
+
/**
|
|
15
|
+
* Section header. Items sharing the same `group` are grouped together
|
|
16
|
+
* under a header rendered on first encounter. Items without a `group`
|
|
17
|
+
* render at the top of the nav in document order.
|
|
18
|
+
*/
|
|
14
19
|
group?: string;
|
|
20
|
+
/** Indented children rendered immediately after this item. */
|
|
21
|
+
children?: NavItem[];
|
|
15
22
|
}
|
|
16
23
|
//# sourceMappingURL=Sidebar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../src/layout/Sidebar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../src/layout/Sidebar.tsx"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AA6G9C,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAA;IAClB,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,MAAM,CAAC,EAAE,GAAG,CAAA;CACb;AAED,wBAAgB,OAAO,CAAC,EACtB,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,MAAM,GACP,EAAE,YAAY,2CA+Cd;AAkGD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,UAAU,CAAA;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;CACrB"}
|
package/dist/layout/Sidebar.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { LayoutDashboard, FileText, File, Image, Settings,
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { LayoutDashboard, FileText, File, Image, Settings, ClipboardList, Users, Search as SearchIcon, Briefcase, FolderOpen, BookOpen, HelpCircle, Newspaper, PanelTop, PanelBottom, Layers, Code2, Library, KeyRound, PanelLeftClose, PanelLeftOpen, } from 'lucide-react';
|
|
4
4
|
import { ActuateBrandLogo } from '../assets/actuate-logo.js';
|
|
5
5
|
/**
|
|
6
6
|
* Compact mark used in the collapsed sidebar — just the "C" symbol from the
|
|
@@ -9,11 +9,6 @@ import { ActuateBrandLogo } from '../assets/actuate-logo.js';
|
|
|
9
9
|
function ActuateMark({ className }) {
|
|
10
10
|
return (_jsxs("svg", { viewBox: "0 0 40 44", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: className, "aria-hidden": "true", children: [_jsx("polygon", { points: "20,2 6,18 12,18 20,8 28,18 34,18", fill: "#F05E65" }), _jsx("rect", { x: "11", y: "20", width: "4", height: "22", rx: "1", fill: "#F05E65" }), _jsx("rect", { x: "18", y: "20", width: "4", height: "22", rx: "1", fill: "#F05E65" }), _jsx("rect", { x: "25", y: "20", width: "4", height: "22", rx: "1", fill: "#F05E65" })] }));
|
|
11
11
|
}
|
|
12
|
-
/**
|
|
13
|
-
* Full Actuate Media lockup. Inline SVG with a transparent background so it
|
|
14
|
-
* sits naturally on whatever surface the sidebar uses (light or dark theme,
|
|
15
|
-
* custom branding background, etc.).
|
|
16
|
-
*/
|
|
17
12
|
function ActuateWordmark({ className }) {
|
|
18
13
|
return _jsx(ActuateBrandLogo, { className: className });
|
|
19
14
|
}
|
|
@@ -40,80 +35,160 @@ function BrandLogo({ config, collapsed }) {
|
|
|
40
35
|
return _jsx(ActuateMark, { className: "h-8 w-8" });
|
|
41
36
|
}
|
|
42
37
|
if (customLogo) {
|
|
43
|
-
return (_jsxs("div", { className: "flex min-w-0 items-center gap-2.5", children: [_jsx("img", { src: customLogo, alt: brandName ?? 'Admin', className: "h-8 w-auto shrink-0 object-contain" }), brandName && (_jsx("span", { className: "text-sidebar-foreground truncate text-sm font-
|
|
38
|
+
return (_jsxs("div", { className: "flex min-w-0 items-center gap-2.5", children: [_jsx("img", { src: customLogo, alt: brandName ?? 'Admin', className: "h-8 w-auto shrink-0 object-contain" }), brandName && (_jsx("span", { className: "text-sidebar-foreground truncate text-sm font-medium", children: brandName }))] }));
|
|
44
39
|
}
|
|
45
40
|
if (brandName) {
|
|
46
|
-
return (_jsxs("div", { className: "flex min-w-0 items-center gap-2.5", children: [_jsx(ActuateMark, { className: "h-7 w-7 shrink-0" }), _jsx("span", { className: "text-sidebar-foreground truncate text-sm font-
|
|
41
|
+
return (_jsxs("div", { className: "flex min-w-0 items-center gap-2.5", children: [_jsx(ActuateMark, { className: "h-7 w-7 shrink-0" }), _jsx("span", { className: "text-sidebar-foreground truncate text-sm font-medium", children: brandName })] }));
|
|
47
42
|
}
|
|
48
43
|
return _jsx(ActuateWordmark, { className: "h-9" });
|
|
49
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Nav tree for the default (config-less) install. Mirrors the reference
|
|
47
|
+
* dashboard exactly: Dashboard / Posts / Pages (with Saved Sections +
|
|
48
|
+
* Templates as nested children), then a CONTENT group (Media / Forms /
|
|
49
|
+
* SEO / Script Tags), then a SETTINGS group (Users / API Keys /
|
|
50
|
+
* Settings). The group ordering is meaningful — the renderer emits a
|
|
51
|
+
* section header the first time it sees a new group.
|
|
52
|
+
*/
|
|
50
53
|
const defaultNavItems = [
|
|
51
54
|
{ path: '/', label: 'Dashboard', icon: LayoutDashboard },
|
|
52
|
-
{ path: '/pages', label: 'Pages', icon: File },
|
|
53
55
|
{ path: '/posts', label: 'Posts', icon: FileText },
|
|
54
|
-
{
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
56
|
+
{
|
|
57
|
+
path: '/pages',
|
|
58
|
+
label: 'Pages',
|
|
59
|
+
icon: File,
|
|
60
|
+
children: [
|
|
61
|
+
{ path: '/saved-sections', label: 'Saved Sections', icon: Library },
|
|
62
|
+
{ path: '/page-templates', label: 'Templates', icon: Layers },
|
|
63
|
+
],
|
|
64
|
+
},
|
|
65
|
+
{ path: '/media', label: 'Media', icon: Image, group: 'Content' },
|
|
66
|
+
{ path: '/forms', label: 'Forms', icon: ClipboardList, group: 'Content' },
|
|
67
|
+
{ path: '/seo', label: 'SEO', icon: SearchIcon, group: 'Content' },
|
|
68
|
+
{ path: '/script-tags', label: 'Script Tags', icon: Code2, group: 'Content' },
|
|
69
|
+
{ path: '/users', label: 'Users', icon: Users, group: 'Settings' },
|
|
70
|
+
{ path: '/api-keys', label: 'API Keys', icon: KeyRound, group: 'Settings' },
|
|
71
|
+
{ path: '/settings', label: 'Settings', icon: Settings, group: 'Settings' },
|
|
60
72
|
];
|
|
61
73
|
export function Sidebar({ collapsed, onToggleCollapse, currentPath, onNavigate, config, }) {
|
|
62
74
|
const navItems = buildNavItems(config);
|
|
63
|
-
return (_jsxs("aside", { className: `bg-sidebar border-sidebar-border h-full border-r transition-all duration-200 ${collapsed ? 'w-20' : 'w-64'}`, children: [
|
|
64
|
-
const Icon = item.icon;
|
|
65
|
-
const isActive = currentPath === item.path || (item.path !== '/' && currentPath.startsWith(item.path));
|
|
66
|
-
const prevGroup = idx > 0 ? navItems[idx - 1]?.group : undefined;
|
|
67
|
-
const showGroupLabel = item.group && item.group !== prevGroup;
|
|
68
|
-
return (_jsxs("div", { children: [showGroupLabel && !collapsed && (_jsx("div", { className: "px-3 pt-3 pb-1", children: _jsx("span", { className: "text-sidebar-foreground/50 text-[10px] font-semibold tracking-wider uppercase", children: item.group }) })), showGroupLabel && collapsed && (_jsx("div", { className: "flex justify-center pt-2 pb-1", children: _jsx("span", { className: "border-sidebar-foreground/20 w-4 border-t" }) })), _jsxs("button", { onClick: () => onNavigate(item.path), className: `flex w-full items-center gap-3 rounded-lg px-3 py-2.5 text-left transition-colors ${isActive
|
|
69
|
-
? 'bg-sidebar-accent text-sidebar-primary'
|
|
70
|
-
: 'text-sidebar-foreground hover:bg-sidebar-accent'} ${collapsed ? 'justify-center' : ''}`, title: collapsed ? item.label : '', children: [_jsx(Icon, { className: "h-5 w-5 shrink-0" }), !collapsed && _jsx("span", { className: "text-sm font-medium", children: item.label })] })] }, item.path));
|
|
71
|
-
}) })] }));
|
|
75
|
+
return (_jsxs("aside", { className: `bg-sidebar border-sidebar-border flex h-full flex-col border-r transition-all duration-200 ${collapsed ? 'w-20' : 'w-64'}`, children: [_jsx("div", { className: `border-sidebar-border flex h-14 shrink-0 items-center border-b px-4 ${collapsed ? 'justify-center' : ''}`, children: _jsx(BrandLogo, { config: config, collapsed: collapsed }) }), _jsx("nav", { className: "flex-1 space-y-1 overflow-y-auto p-3", "aria-label": "Primary", children: renderNavTree(navItems, { collapsed, currentPath, onNavigate }) }), _jsx("div", { className: "border-sidebar-border hidden shrink-0 border-t p-3 md:block", children: _jsx("button", { onClick: onToggleCollapse, className: `text-sidebar-foreground/80 hover:bg-sidebar-accent hover:text-sidebar-foreground flex w-full items-center gap-2.5 rounded-lg px-3 py-2 text-sm transition-colors ${collapsed ? 'justify-center' : ''}`, "aria-label": collapsed ? 'Expand sidebar' : 'Collapse sidebar', title: collapsed ? 'Expand sidebar' : 'Collapse sidebar', children: collapsed ? (_jsx(PanelLeftOpen, { className: "h-4 w-4 shrink-0", "aria-hidden": true })) : (_jsxs(_Fragment, { children: [_jsx(PanelLeftClose, { className: "h-4 w-4 shrink-0", "aria-hidden": true }), _jsx("span", { className: "font-medium", children: "Collapse sidebar" })] })) }) })] }));
|
|
72
76
|
}
|
|
77
|
+
function isPathActive(currentPath, itemPath) {
|
|
78
|
+
if (itemPath === '/')
|
|
79
|
+
return currentPath === '/';
|
|
80
|
+
// Use boundary match so /pages doesn't match /pages-something. Exact, or
|
|
81
|
+
// followed by a `/` separator.
|
|
82
|
+
return currentPath === itemPath || currentPath.startsWith(itemPath + '/');
|
|
83
|
+
}
|
|
84
|
+
function renderNavTree(items, ctx) {
|
|
85
|
+
const nodes = [];
|
|
86
|
+
let lastGroup = undefined;
|
|
87
|
+
for (const item of items) {
|
|
88
|
+
if (item.group && item.group !== lastGroup) {
|
|
89
|
+
nodes.push(ctx.collapsed ? (_jsx("div", { className: "flex justify-center pt-3 pb-1", children: _jsx("span", { className: "border-sidebar-foreground/20 w-4 border-t", "aria-hidden": true }) }, `g-${item.group}`)) : (_jsx("div", { className: "px-3 pt-4 pb-1", children: _jsx("span", { className: "text-sidebar-foreground/55 text-[10px] font-semibold tracking-wider uppercase", children: item.group }) }, `g-${item.group}`)));
|
|
90
|
+
lastGroup = item.group;
|
|
91
|
+
}
|
|
92
|
+
else if (!item.group) {
|
|
93
|
+
lastGroup = undefined;
|
|
94
|
+
}
|
|
95
|
+
nodes.push(_jsx(NavLink, { item: item, ctx: ctx }, item.path));
|
|
96
|
+
if (item.children && item.children.length > 0 && !ctx.collapsed) {
|
|
97
|
+
for (const child of item.children) {
|
|
98
|
+
nodes.push(_jsx(NavLink, { item: child, ctx: ctx, nested: true }, child.path));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return nodes;
|
|
103
|
+
}
|
|
104
|
+
function NavLink({ item, ctx, nested = false, }) {
|
|
105
|
+
const Icon = item.icon;
|
|
106
|
+
const isActive = isPathActive(ctx.currentPath, item.path);
|
|
107
|
+
return (_jsxs("button", { onClick: () => ctx.onNavigate(item.path), className: `flex w-full items-center gap-3 rounded-lg text-left transition-colors ${nested ? 'py-1.5 pr-3 pl-9' : 'px-3 py-2.5'} ${isActive
|
|
108
|
+
? 'bg-sidebar-accent text-sidebar-primary'
|
|
109
|
+
: 'text-sidebar-foreground hover:bg-sidebar-accent'} ${ctx.collapsed ? 'justify-center px-3' : ''}`, title: ctx.collapsed ? item.label : '', "aria-current": isActive ? 'page' : undefined, children: [!nested && _jsx(Icon, { className: "h-5 w-5 shrink-0", "aria-hidden": true }), nested && !ctx.collapsed && (_jsx(Icon, { className: "text-sidebar-foreground/60 h-4 w-4 shrink-0", "aria-hidden": true })), !ctx.collapsed && (_jsx("span", { className: `truncate font-medium ${nested ? 'text-[13px]' : 'text-sm'}`, children: item.label }))] }));
|
|
110
|
+
}
|
|
111
|
+
// ─── Config-driven nav builder ──────────────────────────────────────────────
|
|
73
112
|
function resolveIcon(collection) {
|
|
74
113
|
const mapped = collection.admin?.icon ? ICON_MAP[collection.admin.icon] : undefined;
|
|
75
114
|
if (mapped)
|
|
76
115
|
return mapped;
|
|
77
116
|
return collection.type === 'page' ? File : FileText;
|
|
78
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Build the sidebar nav tree from the CMS config. If no collections are
|
|
120
|
+
* configured, returns the curated `defaultNavItems` tree. When
|
|
121
|
+
* collections ARE configured, page-type collections inherit the
|
|
122
|
+
* Pages / Saved Sections / Templates child block, and every static
|
|
123
|
+
* destination (Media, Forms, SEO, Script Tags, Users, API Keys,
|
|
124
|
+
* Settings) is anchored under the right Content / Settings group.
|
|
125
|
+
*/
|
|
79
126
|
function buildNavItems(config) {
|
|
80
127
|
if (!config?.collections)
|
|
81
128
|
return defaultNavItems;
|
|
82
129
|
const raw = config.collections;
|
|
83
130
|
const collectionsList = Array.isArray(raw) ? raw : Object.values(raw);
|
|
84
131
|
const visible = collectionsList.filter((c) => !c.admin?.hidden);
|
|
85
|
-
const
|
|
132
|
+
const pages = visible.filter((c) => c.type === 'page' && !c.admin?.group);
|
|
133
|
+
const posts = visible.filter((c) => c.type === 'post' && !c.admin?.group);
|
|
134
|
+
const otherUngrouped = visible.filter((c) => c.type !== 'page' && c.type !== 'post' && !c.admin?.group);
|
|
86
135
|
const grouped = visible.filter((c) => c.admin?.group);
|
|
87
|
-
const pages = ungrouped.filter((c) => c.type === 'page');
|
|
88
|
-
const posts = ungrouped.filter((c) => c.type === 'post');
|
|
89
|
-
const other = ungrouped.filter((c) => c.type !== 'page' && c.type !== 'post');
|
|
90
|
-
const sortedUngrouped = [...pages, ...posts, ...other];
|
|
91
136
|
const items = [{ path: '/', label: 'Dashboard', icon: LayoutDashboard }];
|
|
92
|
-
|
|
137
|
+
// Posts-style collections come first (mirrors the reference layout).
|
|
138
|
+
for (const collection of posts) {
|
|
93
139
|
items.push({
|
|
94
140
|
label: collection.labels?.plural ?? collection.slug,
|
|
95
141
|
path: `/${collection.slug}`,
|
|
96
142
|
icon: resolveIcon(collection),
|
|
97
143
|
});
|
|
98
144
|
}
|
|
99
|
-
|
|
145
|
+
// Pages-style collections get the nested Saved Sections + Templates
|
|
146
|
+
// tree. We attach the children to the *first* page-type collection
|
|
147
|
+
// so we don't end up with three "Saved Sections" links if a project
|
|
148
|
+
// configures multiple page collections — admins editing custom
|
|
149
|
+
// page-style content still navigate to those secondary surfaces via
|
|
150
|
+
// the primary Pages parent.
|
|
151
|
+
pages.forEach((collection, idx) => {
|
|
152
|
+
const item = {
|
|
153
|
+
label: collection.labels?.plural ?? collection.slug,
|
|
154
|
+
path: `/${collection.slug}`,
|
|
155
|
+
icon: resolveIcon(collection),
|
|
156
|
+
};
|
|
157
|
+
if (idx === 0) {
|
|
158
|
+
item.children = [
|
|
159
|
+
{ path: '/saved-sections', label: 'Saved Sections', icon: Library },
|
|
160
|
+
{ path: '/page-templates', label: 'Templates', icon: Layers },
|
|
161
|
+
];
|
|
162
|
+
}
|
|
163
|
+
items.push(item);
|
|
164
|
+
});
|
|
165
|
+
for (const collection of otherUngrouped) {
|
|
166
|
+
items.push({
|
|
167
|
+
label: collection.labels?.plural ?? collection.slug,
|
|
168
|
+
path: `/${collection.slug}`,
|
|
169
|
+
icon: resolveIcon(collection),
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
// Config-supplied groups land before our standard Content/Settings
|
|
173
|
+
// groups so admin-defined sections take precedence.
|
|
174
|
+
const groupBuckets = new Map();
|
|
100
175
|
for (const col of grouped) {
|
|
101
176
|
const group = col.admin.group;
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
path: `/${collection.slug}`,
|
|
111
|
-
icon: resolveIcon(collection),
|
|
112
|
-
group: groupName,
|
|
113
|
-
});
|
|
114
|
-
}
|
|
177
|
+
const bucket = groupBuckets.get(group) ?? [];
|
|
178
|
+
bucket.push({
|
|
179
|
+
label: col.labels?.plural ?? col.slug,
|
|
180
|
+
path: `/${col.slug}`,
|
|
181
|
+
icon: resolveIcon(col),
|
|
182
|
+
group,
|
|
183
|
+
});
|
|
184
|
+
groupBuckets.set(group, bucket);
|
|
115
185
|
}
|
|
116
|
-
|
|
186
|
+
for (const bucket of groupBuckets.values())
|
|
187
|
+
items.push(...bucket);
|
|
188
|
+
// Standard Content + Settings destinations. These are always
|
|
189
|
+
// present, regardless of which collections the admin configures,
|
|
190
|
+
// because they map to CMS features (not collections).
|
|
191
|
+
items.push({ path: '/media', label: 'Media', icon: Image, group: 'Content' }, { path: '/forms', label: 'Forms', icon: ClipboardList, group: 'Content' }, { path: '/seo', label: 'SEO', icon: SearchIcon, group: 'Content' }, { path: '/script-tags', label: 'Script Tags', icon: Code2, group: 'Content' }, { path: '/users', label: 'Users', icon: Users, group: 'Settings' }, { path: '/api-keys', label: 'API Keys', icon: KeyRound, group: 'Settings' }, { path: '/settings', label: 'Settings', icon: Settings, group: 'Settings' });
|
|
117
192
|
return items;
|
|
118
193
|
}
|
|
119
194
|
//# sourceMappingURL=Sidebar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../src/layout/Sidebar.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../src/layout/Sidebar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dashboard.d.ts","sourceRoot":"","sources":["../../src/views/Dashboard.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Dashboard.d.ts","sourceRoot":"","sources":["../../src/views/Dashboard.tsx"],"names":[],"mappings":"AAkGA,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,GAAG,CAAA;IACZ,OAAO,CAAC,EAAE,GAAG,CAAA;IACb,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACpC;AA+ID,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,cAAc,2CAolBxE"}
|