@actuate-media/cms-admin 0.2.1 → 0.3.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/AdminRoot.js +1 -1
- package/dist/AdminRoot.js.map +1 -1
- package/dist/actuate-admin.css +1 -1
- package/dist/components/ContentOverviewChart.d.ts +8 -0
- package/dist/components/ContentOverviewChart.d.ts.map +1 -0
- package/dist/components/ContentOverviewChart.js +20 -0
- package/dist/components/ContentOverviewChart.js.map +1 -0
- package/dist/components/SEOPerformance.d.ts +5 -0
- package/dist/components/SEOPerformance.d.ts.map +1 -0
- package/dist/components/SEOPerformance.js +24 -0
- package/dist/components/SEOPerformance.js.map +1 -0
- package/dist/views/Dashboard.d.ts +2 -1
- package/dist/views/Dashboard.d.ts.map +1 -1
- package/dist/views/Dashboard.js +81 -32
- package/dist/views/Dashboard.js.map +1 -1
- package/dist/views/Pages.d.ts.map +1 -1
- package/dist/views/Pages.js +57 -2
- package/dist/views/Pages.js.map +1 -1
- package/package.json +3 -2
- package/src/AdminRoot.tsx +1 -1
- package/src/components/ContentOverviewChart.tsx +70 -0
- package/src/components/SEOPerformance.tsx +134 -0
- package/src/views/Dashboard.tsx +175 -192
- package/src/views/Pages.tsx +132 -58
package/dist/views/Dashboard.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
3
|
-
import { FileText, File,
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { FileText, File, Image, ClipboardList, Search, Loader2, AlertTriangle, Database, ChevronLeft, ChevronRight, } from 'lucide-react';
|
|
4
|
+
import { useState } from 'react';
|
|
4
5
|
import { useApiData } from '../lib/useApiData.js';
|
|
6
|
+
import { ContentOverviewChart } from '../components/ContentOverviewChart.js';
|
|
7
|
+
import { SEOPerformance } from '../components/SEOPerformance.js';
|
|
5
8
|
function resolveCollections(config) {
|
|
6
9
|
if (!config?.collections)
|
|
7
10
|
return [];
|
|
@@ -9,54 +12,100 @@ function resolveCollections(config) {
|
|
|
9
12
|
const list = Array.isArray(raw) ? raw : Object.values(raw);
|
|
10
13
|
return list
|
|
11
14
|
.filter((c) => !c.admin?.hidden)
|
|
12
|
-
.map((c) => ({
|
|
13
|
-
slug: c.slug,
|
|
14
|
-
type: c.type,
|
|
15
|
-
labels: c.labels,
|
|
16
|
-
}));
|
|
15
|
+
.map((c) => ({ slug: c.slug, type: c.type, labels: c.labels }));
|
|
17
16
|
}
|
|
18
17
|
function collectionLabel(col, plural = true) {
|
|
19
18
|
if (plural)
|
|
20
19
|
return col.labels?.plural ?? col.slug.charAt(0).toUpperCase() + col.slug.slice(1);
|
|
21
20
|
return col.labels?.singular ?? col.slug.charAt(0).toUpperCase() + col.slug.slice(1);
|
|
22
21
|
}
|
|
22
|
+
function relativeTime(dateStr) {
|
|
23
|
+
const now = Date.now();
|
|
24
|
+
const then = new Date(dateStr).getTime();
|
|
25
|
+
const diff = now - then;
|
|
26
|
+
const mins = Math.floor(diff / 60000);
|
|
27
|
+
if (mins < 1)
|
|
28
|
+
return 'just now';
|
|
29
|
+
if (mins < 60)
|
|
30
|
+
return `${mins} min ago`;
|
|
31
|
+
const hours = Math.floor(mins / 60);
|
|
32
|
+
if (hours < 24)
|
|
33
|
+
return `${hours} hour${hours !== 1 ? 's' : ''} ago`;
|
|
34
|
+
const days = Math.floor(hours / 24);
|
|
35
|
+
if (days < 30)
|
|
36
|
+
return `${days} day${days !== 1 ? 's' : ''} ago`;
|
|
37
|
+
return new Date(dateStr).toLocaleDateString();
|
|
38
|
+
}
|
|
39
|
+
function statusColor(status) {
|
|
40
|
+
switch (status) {
|
|
41
|
+
case 'PUBLISHED': return 'bg-green-100 text-green-800';
|
|
42
|
+
case 'DRAFT': return 'bg-gray-100 text-gray-700';
|
|
43
|
+
case 'SCHEDULED': return 'bg-purple-100 text-purple-800';
|
|
44
|
+
case 'IN_REVIEW': return 'bg-blue-100 text-blue-800';
|
|
45
|
+
default: return 'bg-gray-100 text-gray-700';
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function statusLabel(status) {
|
|
49
|
+
switch (status) {
|
|
50
|
+
case 'PUBLISHED': return 'Published';
|
|
51
|
+
case 'DRAFT': return 'Draft';
|
|
52
|
+
case 'SCHEDULED': return 'Scheduled';
|
|
53
|
+
case 'IN_REVIEW': return 'In Review';
|
|
54
|
+
default: return status;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
23
57
|
const STAT_COLORS = [
|
|
24
|
-
{ bg: 'bg-blue-100', text: 'text-blue-600' },
|
|
25
|
-
{ bg: 'bg-purple-100', text: 'text-purple-600' },
|
|
26
|
-
{ bg: 'bg-
|
|
27
|
-
{ bg: 'bg-
|
|
58
|
+
{ bg: 'bg-blue-50', icon: 'bg-blue-100', text: 'text-blue-600' },
|
|
59
|
+
{ bg: 'bg-purple-50', icon: 'bg-purple-100', text: 'text-purple-600' },
|
|
60
|
+
{ bg: 'bg-teal-50', icon: 'bg-teal-100', text: 'text-teal-600' },
|
|
61
|
+
{ bg: 'bg-green-50', icon: 'bg-green-100', text: 'text-green-600' },
|
|
62
|
+
{ bg: 'bg-amber-50', icon: 'bg-amber-100', text: 'text-amber-600' },
|
|
28
63
|
];
|
|
29
|
-
function
|
|
30
|
-
if (col.type === 'page')
|
|
31
|
-
return File;
|
|
32
|
-
return FileText;
|
|
33
|
-
}
|
|
34
|
-
export function Dashboard({ config, onNavigate }) {
|
|
64
|
+
export function Dashboard({ config, session, onNavigate }) {
|
|
35
65
|
const nav = (path) => onNavigate?.(path);
|
|
36
66
|
const { data, loading, error, exhausted, refetch } = useApiData('/stats');
|
|
37
67
|
const { data: health } = useApiData('/health');
|
|
68
|
+
const [activityPage, setActivityPage] = useState(0);
|
|
38
69
|
const collections = resolveCollections(config);
|
|
39
|
-
const
|
|
40
|
-
const totalMedia = data?.totalMedia ?? 0;
|
|
41
|
-
const totalUsers = data?.totalUsers ?? 0;
|
|
70
|
+
const userName = session?.name ?? session?.email?.split('@')[0] ?? 'Admin';
|
|
42
71
|
const collectionCounts = data?.collectionCounts ?? {};
|
|
72
|
+
const statusCounts = data?.statusCounts ?? {};
|
|
43
73
|
const recentDocs = data?.recentDocuments ?? [];
|
|
44
|
-
const
|
|
74
|
+
const perPage = 5;
|
|
75
|
+
const totalActivityPages = Math.max(1, Math.ceil(recentDocs.length / perPage));
|
|
76
|
+
const visibleDocs = recentDocs.slice(activityPage * perPage, (activityPage + 1) * perPage);
|
|
77
|
+
const statCards = [];
|
|
78
|
+
if (collections.length > 0) {
|
|
79
|
+
for (const col of collections.slice(0, 2)) {
|
|
80
|
+
statCards.push({
|
|
81
|
+
label: collectionLabel(col),
|
|
82
|
+
value: collectionCounts[col.slug] ?? 0,
|
|
83
|
+
icon: col.type === 'page' ? File : FileText,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
statCards.push({ label: 'Pages', value: collectionCounts['pages'] ?? 0, icon: File });
|
|
89
|
+
statCards.push({ label: 'Posts', value: collectionCounts['posts'] ?? 0, icon: FileText });
|
|
90
|
+
}
|
|
91
|
+
statCards.push({ label: 'Forms', value: data?.formCount ?? 0, icon: ClipboardList });
|
|
92
|
+
statCards.push({ label: 'Media', value: data?.totalMedia ?? 0, icon: Image });
|
|
93
|
+
statCards.push({ label: 'Avg. SEO Rating', value: data?.avgSeoScore ?? 0, icon: Search });
|
|
45
94
|
if (loading) {
|
|
46
|
-
return (_jsx("div", { className: "p-
|
|
95
|
+
return (_jsx("div", { className: "p-4 sm:p-6 flex items-center justify-center h-64", children: _jsx(Loader2, { className: "w-6 h-6 animate-spin text-blue-600" }) }));
|
|
47
96
|
}
|
|
48
|
-
return (_jsxs("div", { className: "p-
|
|
97
|
+
return (_jsxs("div", { className: "p-4 sm:p-6 space-y-6", children: [health && health.status === 'degraded' && (_jsxs("div", { className: "flex items-center gap-3 rounded-lg border border-blue-200 bg-blue-50 p-3", children: [_jsx(Database, { className: "w-5 h-5 text-blue-600 shrink-0" }), _jsxs("div", { className: "flex-1", children: [_jsx("span", { className: "text-sm font-medium text-blue-900", children: "Database Setup Required" }), _jsx("p", { className: "text-xs text-blue-700 mt-0.5", children: !health.databaseConnected
|
|
49
98
|
? 'Cannot connect to the database. Check your DATABASE_URL environment variable.'
|
|
50
99
|
: !health.secretConfigured
|
|
51
100
|
? 'CMS secret not configured. Set CMS_SECRET or CMS_SESSION_SECRET (min 32 characters).'
|
|
52
|
-
: `Some CMS models are missing: ${Object.entries(health.models).filter(([, v]) => !v).map(([k]) => k).join(', ')}. Run your database migrations
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
101
|
+
: `Some CMS models are missing: ${Object.entries(health.models).filter(([, v]) => !v).map(([k]) => k).join(', ')}. Run your database migrations.` })] })] })), error && exhausted && (_jsxs("div", { className: "flex items-center gap-3 rounded-lg border border-amber-200 bg-amber-50 p-3", children: [_jsx(AlertTriangle, { className: "w-5 h-5 text-amber-600 shrink-0" }), _jsx("span", { className: "text-sm text-amber-800 flex-1", children: "Some dashboard data may be unavailable." }), _jsx("button", { onClick: refetch, className: "px-3 py-1 text-sm text-amber-700 border border-amber-300 rounded-lg hover:bg-amber-100 transition-colors", children: "Retry" })] })), _jsxs("div", { children: [_jsxs("h1", { className: "text-xl sm:text-2xl font-semibold text-gray-900", children: ["Welcome back, ", userName] }), _jsx("p", { className: "text-sm text-gray-500 mt-0.5", children: "Here's what's happening with your content today" })] }), _jsx("div", { className: "grid grid-cols-2 md:grid-cols-3 xl:grid-cols-5 gap-4", children: statCards.map((card, i) => {
|
|
102
|
+
const colors = STAT_COLORS[i % STAT_COLORS.length];
|
|
103
|
+
const Icon = card.icon;
|
|
104
|
+
return (_jsxs("div", { className: "bg-white rounded-xl border border-gray-200 p-4", children: [_jsx("div", { className: "flex items-center justify-between mb-3", children: _jsx("div", { className: `w-9 h-9 rounded-lg flex items-center justify-center ${colors.icon}`, children: _jsx(Icon, { className: `w-4.5 h-4.5 ${colors.text}` }) }) }), _jsx("p", { className: "text-2xl font-semibold text-gray-900", children: card.value.toLocaleString() }), _jsx("p", { className: "text-xs text-gray-500 mt-0.5", children: card.label })] }, card.label));
|
|
105
|
+
}) }), _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-12 gap-4", children: [_jsxs("div", { className: "lg:col-span-8 bg-white rounded-xl border border-gray-200", children: [_jsx("div", { className: "p-4 border-b border-gray-200", children: _jsx("h2", { className: "text-sm font-semibold text-gray-900", children: "Recent Activity" }) }), _jsx("div", { className: "divide-y divide-gray-100", children: visibleDocs.length === 0 ? (_jsx("div", { className: "p-8 text-center", children: _jsx("p", { className: "text-sm text-gray-400", children: "No content yet" }) })) : visibleDocs.map((doc) => {
|
|
106
|
+
const colMeta = collections.find((c) => c.slug === doc.collection);
|
|
107
|
+
const typeLabel = colMeta ? collectionLabel(colMeta, false) : doc.collection;
|
|
108
|
+
return (_jsx("div", { className: "px-4 py-3 hover:bg-gray-50 transition-colors", children: _jsxs("div", { className: "flex items-center justify-between gap-3", children: [_jsxs("div", { className: "flex-1 min-w-0", children: [_jsx("div", { className: "flex items-center gap-2 mb-0.5", children: _jsx("h3", { className: "text-sm font-medium text-gray-900 truncate", children: doc.title ?? 'Untitled' }) }), _jsxs("div", { className: "flex items-center gap-2 text-xs text-gray-500", children: [_jsx("span", { className: "capitalize", children: typeLabel }), _jsx("span", { children: "\u00B7" }), _jsx("span", { children: doc.author }), _jsx("span", { children: "\u00B7" }), _jsx("span", { children: relativeTime(doc.updatedAt) })] })] }), _jsx("span", { className: `px-2.5 py-0.5 rounded-full text-xs font-medium whitespace-nowrap ${statusColor(doc.status)}`, children: statusLabel(doc.status) })] }) }, doc.id));
|
|
109
|
+
}) }), recentDocs.length > perPage && (_jsxs("div", { className: "px-4 py-3 border-t border-gray-100 flex items-center justify-between text-xs text-gray-500", children: [_jsxs("span", { children: ["Showing ", activityPage * perPage + 1, "-", Math.min((activityPage + 1) * perPage, recentDocs.length), " of ", recentDocs.length] }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("button", { onClick: () => setActivityPage(Math.max(0, activityPage - 1)), disabled: activityPage === 0, className: "p-1 rounded hover:bg-gray-100 disabled:opacity-30", children: _jsx(ChevronLeft, { className: "w-3.5 h-3.5" }) }), _jsxs("span", { children: ["Page ", activityPage + 1, " of ", totalActivityPages] }), _jsx("button", { onClick: () => setActivityPage(Math.min(totalActivityPages - 1, activityPage + 1)), disabled: activityPage >= totalActivityPages - 1, className: "p-1 rounded hover:bg-gray-100 disabled:opacity-30", children: _jsx(ChevronRight, { className: "w-3.5 h-3.5" }) })] })] }))] }), _jsxs("div", { className: "lg:col-span-4 bg-white rounded-xl border border-gray-200", children: [_jsx("div", { className: "p-4 border-b border-gray-200", children: _jsx("h2", { className: "text-sm font-semibold text-gray-900", children: "Content Overview" }) }), _jsx("div", { className: "p-4 flex items-center justify-center min-h-[220px]", children: _jsx(ContentOverviewChart, { published: statusCounts['PUBLISHED'] ?? 0, drafts: statusCounts['DRAFT'] ?? 0, scheduled: statusCounts['SCHEDULED'] ?? 0 }) })] })] }), _jsx(SEOPerformance, { onNavigate: nav })] }));
|
|
61
110
|
}
|
|
62
111
|
//# sourceMappingURL=Dashboard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dashboard.js","sourceRoot":"","sources":["../../src/views/Dashboard.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,
|
|
1
|
+
{"version":3,"file":"Dashboard.js","sourceRoot":"","sources":["../../src/views/Dashboard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pages.d.ts","sourceRoot":"","sources":["../../src/views/Pages.tsx"],"names":[],"mappings":"AAYA,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;
|
|
1
|
+
{"version":3,"file":"Pages.d.ts","sourceRoot":"","sources":["../../src/views/Pages.tsx"],"names":[],"mappings":"AAYA,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAqED,wBAAgB,KAAK,CAAC,EAAE,UAAU,EAAE,EAAE,UAAU,2CAwV/C"}
|
package/dist/views/Pages.js
CHANGED
|
@@ -7,6 +7,52 @@ import { sortByRelevance, toggleSort } from '../lib/search.js';
|
|
|
7
7
|
import { useApiData } from '../lib/useApiData.js';
|
|
8
8
|
import { cmsApi } from '../lib/api.js';
|
|
9
9
|
import { FolderTree } from '../components/FolderTree.js';
|
|
10
|
+
const COLOR_PALETTE = [
|
|
11
|
+
{ bg: 'bg-blue-100', text: 'text-blue-700' },
|
|
12
|
+
{ bg: 'bg-green-100', text: 'text-green-700' },
|
|
13
|
+
{ bg: 'bg-purple-100', text: 'text-purple-700' },
|
|
14
|
+
{ bg: 'bg-orange-100', text: 'text-orange-700' },
|
|
15
|
+
{ bg: 'bg-pink-100', text: 'text-pink-700' },
|
|
16
|
+
{ bg: 'bg-teal-100', text: 'text-teal-700' },
|
|
17
|
+
{ bg: 'bg-indigo-100', text: 'text-indigo-700' },
|
|
18
|
+
{ bg: 'bg-rose-100', text: 'text-rose-700' },
|
|
19
|
+
];
|
|
20
|
+
function hashString(s) {
|
|
21
|
+
let hash = 0;
|
|
22
|
+
for (let i = 0; i < s.length; i++) {
|
|
23
|
+
hash = ((hash << 5) - hash + s.charCodeAt(i)) | 0;
|
|
24
|
+
}
|
|
25
|
+
return Math.abs(hash);
|
|
26
|
+
}
|
|
27
|
+
const folderColorCache = {};
|
|
28
|
+
function getFolderColor(name) {
|
|
29
|
+
if (!folderColorCache[name]) {
|
|
30
|
+
folderColorCache[name] = COLOR_PALETTE[hashString(name) % COLOR_PALETTE.length];
|
|
31
|
+
}
|
|
32
|
+
return folderColorCache[name];
|
|
33
|
+
}
|
|
34
|
+
function computeSeoScore(data) {
|
|
35
|
+
if (!data)
|
|
36
|
+
return 0;
|
|
37
|
+
let score = 0;
|
|
38
|
+
if (data.metaTitle || data.seoTitle)
|
|
39
|
+
score += 25;
|
|
40
|
+
if (data.metaDescription || data.seoDescription)
|
|
41
|
+
score += 25;
|
|
42
|
+
if (data.canonical)
|
|
43
|
+
score += 25;
|
|
44
|
+
if (data.schemaType)
|
|
45
|
+
score += 25;
|
|
46
|
+
return score;
|
|
47
|
+
}
|
|
48
|
+
function SeoScoreBadge({ score }) {
|
|
49
|
+
const color = score >= 80 ? 'bg-green-500' : score >= 60 ? 'bg-amber-500' : 'bg-red-500';
|
|
50
|
+
return (_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx("span", { className: `w-2.5 h-2.5 rounded-full ${color}` }), _jsx("span", { className: "text-xs text-gray-600", children: score })] }));
|
|
51
|
+
}
|
|
52
|
+
function FolderBadge({ name }) {
|
|
53
|
+
const colors = getFolderColor(name);
|
|
54
|
+
return (_jsx("span", { className: `inline-flex px-2 py-0.5 rounded text-xs font-medium ${colors.bg} ${colors.text}`, children: name }));
|
|
55
|
+
}
|
|
10
56
|
function buildApiUrl(folderSel) {
|
|
11
57
|
const base = '/collections/pages?pageSize=100';
|
|
12
58
|
if (folderSel.type === 'smart') {
|
|
@@ -31,6 +77,7 @@ export function Pages({ onNavigate }) {
|
|
|
31
77
|
const [selectedPages, setSelectedPages] = useState([]);
|
|
32
78
|
const [sortConfig, setSortConfig] = useState(null);
|
|
33
79
|
const pages = data?.docs ?? [];
|
|
80
|
+
const totalCount = data?.total ?? pages.length;
|
|
34
81
|
const filteredAndSorted = useMemo(() => {
|
|
35
82
|
let results = pages.filter((page) => {
|
|
36
83
|
const matchesSearch = (page.title ?? '').toLowerCase().includes(searchQuery.toLowerCase()) ||
|
|
@@ -118,10 +165,18 @@ export function Pages({ onNavigate }) {
|
|
|
118
165
|
if (loading) {
|
|
119
166
|
return (_jsx("div", { className: "p-3 pr-6 sm:p-4 sm:pr-8 flex items-center justify-center h-64", children: _jsx(Loader2, { className: "w-6 h-6 animate-spin text-blue-600" }) }));
|
|
120
167
|
}
|
|
121
|
-
return (_jsxs("div", { className: "p-3 pr-6 sm:p-4 sm:pr-8 h-full flex flex-col", children: [error && (_jsxs("div", { className: "mb-4 flex items-center gap-3 rounded-lg border border-red-200 bg-red-50 p-3", children: [_jsx(AlertTriangle, { className: "w-5 h-5 text-red-600 shrink-0" }), _jsx("span", { className: "text-sm text-red-800 flex-1", children: error }), _jsx("button", { onClick: refetch, className: "px-3 py-1 text-sm text-red-700 border border-red-300 rounded-lg hover:bg-red-100 transition-colors", children: "Retry" })] })), _jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between mb-4 gap-3", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("button", { type: "button", onClick: () => setSidebarOpen(prev => !prev), className: "p-1.5 rounded-lg hover:bg-gray-100 transition-colors", title: sidebarOpen ? 'Hide folders' : 'Show folders', children: _jsx(FolderInput, { className: "w-5 h-5 text-gray-600" }) }), _jsxs("div", { children: [_jsx("h1", { className: "text-xl sm:text-2xl font-semibold text-gray-900
|
|
168
|
+
return (_jsxs("div", { className: "p-3 pr-6 sm:p-4 sm:pr-8 h-full flex flex-col", children: [error && (_jsxs("div", { className: "mb-4 flex items-center gap-3 rounded-lg border border-red-200 bg-red-50 p-3", children: [_jsx(AlertTriangle, { className: "w-5 h-5 text-red-600 shrink-0" }), _jsx("span", { className: "text-sm text-red-800 flex-1", children: error }), _jsx("button", { onClick: refetch, className: "px-3 py-1 text-sm text-red-700 border border-red-300 rounded-lg hover:bg-red-100 transition-colors", children: "Retry" })] })), _jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between mb-4 gap-3", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("button", { type: "button", onClick: () => setSidebarOpen(prev => !prev), className: "p-1.5 rounded-lg hover:bg-gray-100 transition-colors", title: sidebarOpen ? 'Hide folders' : 'Show folders', children: _jsx(FolderInput, { className: "w-5 h-5 text-gray-600" }) }), _jsxs("div", { children: [_jsx("h1", { className: "text-xl sm:text-2xl font-semibold text-gray-900", children: "Pages" }), _jsxs("p", { className: "text-sm text-gray-500", children: [totalCount, " page", totalCount !== 1 ? 's' : ''] })] })] }), _jsxs("button", { onClick: () => onNavigate?.('/pages/new'), className: "flex items-center justify-center gap-2 px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors text-sm", children: [_jsx(Plus, { className: "w-4 h-4" }), _jsx("span", { className: "hidden sm:inline", children: "New Page" }), _jsx("span", { className: "sm:hidden", children: "New" })] })] }), _jsxs("div", { className: "flex gap-4 flex-1 min-h-0 overflow-hidden", children: [sidebarOpen && (_jsx("div", { className: "w-56 shrink-0 bg-white rounded-lg border border-gray-200 overflow-hidden flex flex-col", children: _jsx(FolderTree, { scope: "pages", selected: folderSel, onSelect: (sel) => { setFolderSel(sel); setSelectedPages([]); }, totalCount: allData.data?.total, uncategorizedCount: uncatData.data?.total, onDropItem: handleDropItem }) })), _jsxs("div", { className: "flex-1 flex flex-col min-w-0", children: [_jsx("div", { className: "bg-white rounded-lg border border-gray-200 mb-4", children: _jsxs("div", { className: "p-3 flex flex-col gap-3", children: [_jsxs("div", { className: "relative", children: [_jsx(Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400" }), _jsx("input", { type: "text", placeholder: "Search pages...", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), className: "w-full pl-9 pr-3 py-2 text-sm border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" })] }), _jsxs("div", { className: "flex flex-col sm:flex-row gap-2", children: [_jsxs("select", { value: filterStatus, onChange: (e) => setFilterStatus(e.target.value), className: "flex-1 px-3 py-2 text-sm border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500", children: [_jsx("option", { value: "all", children: "All Status" }), _jsx("option", { value: "published", children: "Published" }), _jsx("option", { value: "draft", children: "Draft" })] }), _jsxs("select", { value: filterTemplate, onChange: (e) => setFilterTemplate(e.target.value), className: "flex-1 px-3 py-2 text-sm border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500", children: [_jsx("option", { value: "all", children: "All Templates" }), _jsx("option", { value: "landing", children: "Landing" }), _jsx("option", { value: "standard", children: "Standard" }), _jsx("option", { value: "marketing", children: "Marketing" }), _jsx("option", { value: "blog", children: "Blog" })] }), _jsxs("button", { type: "button", className: "flex items-center justify-center gap-2 px-3 py-2 text-sm border border-gray-300 rounded-lg hover:bg-gray-50 transition-colors", children: [_jsx(SlidersHorizontal, { className: "w-4 h-4" }), _jsx("span", { className: "hidden sm:inline", children: "More Filters" })] })] })] }) }), selectedPages.length > 0 && (_jsx("div", { className: "bg-blue-50 border border-blue-200 rounded-lg p-3 mb-4", children: _jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between gap-2", children: [_jsxs("span", { className: "text-sm text-blue-900", children: [selectedPages.length, " page", selectedPages.length !== 1 ? 's' : '', " selected"] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("button", { type: "button", onClick: handleBulkPublish, className: "flex-1 sm:flex-none px-3 py-1.5 text-sm bg-green-600 text-white rounded-lg hover:bg-green-700 transition-colors", children: "Publish" }), _jsx("button", { type: "button", onClick: handleBulkUnpublish, className: "flex-1 sm:flex-none px-3 py-1.5 text-sm bg-yellow-600 text-white rounded-lg hover:bg-yellow-700 transition-colors", children: "Unpublish" }), _jsx("button", { type: "button", onClick: handleBulkDelete, className: "flex-1 sm:flex-none px-3 py-1.5 text-sm bg-red-600 text-white rounded-lg hover:bg-red-700 transition-colors", children: "Delete" }), _jsx("button", { type: "button", onClick: () => setSelectedPages([]), className: "flex-1 sm:flex-none px-3 py-1.5 text-sm border border-gray-300 bg-white rounded-lg hover:bg-gray-50 transition-colors", children: "Cancel" })] })] }) })), filteredAndSorted.length === 0 && !error ? (_jsxs("div", { className: "bg-white rounded-lg border border-gray-200 p-8 text-center flex-1 flex flex-col items-center justify-center", children: [_jsx("p", { className: "text-sm text-gray-500 mb-2", children: folderSel.type === 'smart' && folderSel.smart === 'uncategorized'
|
|
122
169
|
? 'No uncategorized pages'
|
|
123
170
|
: folderSel.type === 'folder'
|
|
124
171
|
? 'No pages in this folder'
|
|
125
|
-
: 'No pages yet' }), _jsx("button", { onClick: () => onNavigate?.('/pages/new'), className: "px-4 py-2 text-sm bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors", children: "Create your first page" })] })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "hidden md:block bg-white rounded-lg border border-gray-200 flex-1 overflow-hidden", children: _jsx("div", { className: "overflow-x-auto h-full", children: _jsxs("table", { className: "w-full", children: [_jsx("thead", { className: "bg-gray-50 border-b border-gray-200 sticky top-0", children: _jsxs("tr", { children: [_jsx("th", { className: "w-8 px-3 py-2 text-left", children: _jsx("input", { type: "checkbox", checked: selectedPages.length === filteredAndSorted.length && filteredAndSorted.length > 0, onChange: (e) => handleSelectAll(e.target.checked), className: "rounded border-gray-300" }) }), _jsx("th", { className: "w-6 px-1 py-2" }), _jsx("th", { className: "px-3 py-2 text-left", children: _jsx(SortHeader, { label: "Title", sortKey: "title" }) }), _jsx("th", { className: "px-3 py-2 text-left
|
|
172
|
+
: 'No pages yet' }), _jsx("button", { onClick: () => onNavigate?.('/pages/new'), className: "px-4 py-2 text-sm bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors", children: "Create your first page" })] })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "hidden md:block bg-white rounded-lg border border-gray-200 flex-1 overflow-hidden", children: _jsx("div", { className: "overflow-x-auto h-full", children: _jsxs("table", { className: "w-full", children: [_jsx("thead", { className: "bg-gray-50 border-b border-gray-200 sticky top-0", children: _jsxs("tr", { children: [_jsx("th", { className: "w-8 px-3 py-2 text-left", children: _jsx("input", { type: "checkbox", checked: selectedPages.length === filteredAndSorted.length && filteredAndSorted.length > 0, onChange: (e) => handleSelectAll(e.target.checked), className: "rounded border-gray-300" }) }), _jsx("th", { className: "w-6 px-1 py-2" }), _jsx("th", { className: "px-3 py-2 text-left", children: _jsx(SortHeader, { label: "Title", sortKey: "title" }) }), _jsx("th", { className: "px-3 py-2 text-left text-xs font-medium text-gray-700", children: "Folder" }), _jsx("th", { className: "px-3 py-2 text-left", children: _jsx(SortHeader, { label: "Author", sortKey: "author" }) }), _jsx("th", { className: "px-3 py-2 text-left text-xs font-medium text-gray-700", children: "SEO" }), _jsx("th", { className: "px-3 py-2 text-left", children: _jsx(SortHeader, { label: "Status", sortKey: "status" }) }), _jsx("th", { className: "px-3 py-2 text-left", children: _jsx(SortHeader, { label: "Date", sortKey: "date" }) }), _jsx("th", { className: "px-3 py-2 text-left text-xs font-medium text-gray-700", children: "Actions" })] }) }), _jsx("tbody", { className: "divide-y divide-gray-200", children: filteredAndSorted.map((page) => {
|
|
173
|
+
const seoScore = computeSeoScore(page.data);
|
|
174
|
+
const folderName = page.folder?.name ?? page.folderName;
|
|
175
|
+
return (_jsxs("tr", { className: "hover:bg-gray-50 transition-colors", draggable: true, onDragStart: (e) => handleDragStart(e, page.id), children: [_jsx("td", { className: "px-3 py-2", children: _jsx("input", { type: "checkbox", checked: selectedPages.includes(page.id), onChange: () => handleSelectPage(page.id), className: "rounded border-gray-300" }) }), _jsx("td", { className: "px-1 py-2 cursor-grab", children: _jsx(GripVertical, { className: "w-4 h-4 text-gray-300" }) }), _jsx("td", { className: "px-3 py-2", children: _jsx("button", { type: "button", onClick: () => onNavigate?.(`/pages/${page.id}`), className: "font-medium text-gray-900 hover:text-blue-600 text-sm text-left", children: page.title }) }), _jsx("td", { className: "px-3 py-2", children: folderName ? _jsx(FolderBadge, { name: folderName }) : _jsx("span", { className: "text-xs text-gray-400", children: "\u2014" }) }), _jsx("td", { className: "px-3 py-2 text-sm text-gray-600", children: page.author }), _jsx("td", { className: "px-3 py-2", children: _jsx(SeoScoreBadge, { score: seoScore }) }), _jsx("td", { className: "px-3 py-2", children: _jsx("span", { className: `inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium ${page.status === 'Published' || page.status === 'PUBLISHED' ? 'bg-green-100 text-green-800' : 'bg-gray-100 text-gray-800'}`, children: page.status }) }), _jsx("td", { className: "px-3 py-2 text-sm text-gray-600", children: page.date }), _jsx("td", { className: "px-3 py-2", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("button", { type: "button", onClick: () => onNavigate?.(`/pages/${page.id}`), className: "p-1.5 hover:bg-gray-100 rounded transition-colors", title: "Edit", children: _jsx(Pencil, { className: "w-4 h-4 text-gray-600" }) }), _jsx("button", { type: "button", onClick: () => handleDelete(page.id), className: "p-1.5 hover:bg-gray-100 rounded transition-colors", title: "Delete", children: _jsx(Trash2, { className: "w-4 h-4 text-red-600" }) })] }) })] }, page.id));
|
|
176
|
+
}) })] }) }) }), _jsx("div", { className: "md:hidden bg-white rounded-lg border border-gray-200 flex-1 overflow-auto", children: _jsx("div", { className: "divide-y divide-gray-200", children: filteredAndSorted.map((page) => {
|
|
177
|
+
const seoScore = computeSeoScore(page.data);
|
|
178
|
+
const folderName = page.folder?.name ?? page.folderName;
|
|
179
|
+
return (_jsx("div", { className: "p-3", draggable: true, onDragStart: (e) => handleDragStart(e, page.id), children: _jsxs("div", { className: "flex items-start gap-3", children: [_jsx("input", { type: "checkbox", checked: selectedPages.includes(page.id), onChange: () => handleSelectPage(page.id), className: "rounded border-gray-300 mt-1" }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsx("button", { type: "button", onClick: () => onNavigate?.(`/pages/${page.id}`), className: "font-medium text-sm text-gray-900 hover:text-blue-600 block mb-1 text-left", children: page.title }), _jsxs("div", { className: "flex flex-wrap items-center gap-2 text-xs text-gray-600 mb-2", children: [folderName && _jsx(FolderBadge, { name: folderName }), _jsx("span", { children: page.author }), _jsx("span", { children: "\u00B7" }), _jsx("span", { children: page.date }), _jsx(SeoScoreBadge, { score: seoScore }), _jsx("span", { className: `px-2 py-0.5 rounded-full text-xs font-medium ${page.status === 'Published' || page.status === 'PUBLISHED' ? 'bg-green-100 text-green-800' : 'bg-gray-100 text-gray-800'}`, children: page.status })] })] }), _jsx("button", { type: "button", onClick: () => handleDelete(page.id), className: "p-1.5 hover:bg-gray-100 rounded transition-colors", children: _jsx(Trash2, { className: "w-4 h-4 text-red-600" }) })] }) }, page.id));
|
|
180
|
+
}) }) })] }))] })] })] }));
|
|
126
181
|
}
|
|
127
182
|
//# sourceMappingURL=Pages.js.map
|
package/dist/views/Pages.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pages.js","sourceRoot":"","sources":["../../src/views/Pages.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Pages.js","sourceRoot":"","sources":["../../src/views/Pages.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actuate-media/cms-admin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/actuate-media/actuatecms.git",
|
|
@@ -56,9 +56,10 @@
|
|
|
56
56
|
"lucide-react": "^1.7.0",
|
|
57
57
|
"react": "^19.2.0",
|
|
58
58
|
"react-dom": "^19.2.0",
|
|
59
|
+
"recharts": "^3.8.1",
|
|
59
60
|
"sonner": "^2.0.7",
|
|
60
61
|
"tailwind-merge": "^3.5.0",
|
|
61
|
-
"@actuate-media/cms-core": "0.
|
|
62
|
+
"@actuate-media/cms-core": "0.4.0"
|
|
62
63
|
},
|
|
63
64
|
"devDependencies": {
|
|
64
65
|
"@tailwindcss/cli": "^4.0.0",
|
package/src/AdminRoot.tsx
CHANGED
|
@@ -82,7 +82,7 @@ function AdminShell({ config, session, basePath = '/admin', initialPath = '/', s
|
|
|
82
82
|
|
|
83
83
|
function renderView() {
|
|
84
84
|
if (matchRoute('/')) {
|
|
85
|
-
return <Dashboard config={config} onNavigate={navigate} />;
|
|
85
|
+
return <Dashboard config={config} session={session} onNavigate={navigate} />;
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
for (const slug of collectionSlugs) {
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { PieChart, Pie, Cell, ResponsiveContainer } from 'recharts';
|
|
4
|
+
|
|
5
|
+
interface ContentOverviewChartProps {
|
|
6
|
+
published: number;
|
|
7
|
+
drafts: number;
|
|
8
|
+
scheduled: number;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const COLORS = ['#22c55e', '#f59e0b', '#a855f7'];
|
|
12
|
+
|
|
13
|
+
export function ContentOverviewChart({ published, drafts, scheduled }: ContentOverviewChartProps) {
|
|
14
|
+
const total = published + drafts + scheduled;
|
|
15
|
+
const data = [
|
|
16
|
+
{ name: 'Published', value: published },
|
|
17
|
+
{ name: 'Drafts', value: drafts },
|
|
18
|
+
{ name: 'Scheduled', value: scheduled },
|
|
19
|
+
];
|
|
20
|
+
|
|
21
|
+
if (total === 0) {
|
|
22
|
+
return (
|
|
23
|
+
<div className="flex items-center justify-center h-full text-sm text-gray-400">
|
|
24
|
+
No content yet
|
|
25
|
+
</div>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<div className="flex items-center gap-6">
|
|
31
|
+
<div className="w-36 h-36 shrink-0">
|
|
32
|
+
<ResponsiveContainer width="100%" height="100%">
|
|
33
|
+
<PieChart>
|
|
34
|
+
<Pie
|
|
35
|
+
data={data}
|
|
36
|
+
cx="50%"
|
|
37
|
+
cy="50%"
|
|
38
|
+
innerRadius={38}
|
|
39
|
+
outerRadius={65}
|
|
40
|
+
dataKey="value"
|
|
41
|
+
strokeWidth={2}
|
|
42
|
+
stroke="#fff"
|
|
43
|
+
>
|
|
44
|
+
{data.map((_, idx) => (
|
|
45
|
+
<Cell key={idx} fill={COLORS[idx]} />
|
|
46
|
+
))}
|
|
47
|
+
</Pie>
|
|
48
|
+
</PieChart>
|
|
49
|
+
</ResponsiveContainer>
|
|
50
|
+
</div>
|
|
51
|
+
<div className="space-y-3">
|
|
52
|
+
{data.map((entry, idx) => {
|
|
53
|
+
const pct = total > 0 ? Math.round((entry.value / total) * 100) : 0;
|
|
54
|
+
return (
|
|
55
|
+
<div key={entry.name} className="flex items-center gap-3">
|
|
56
|
+
<span className="w-2.5 h-2.5 rounded-full shrink-0" style={{ backgroundColor: COLORS[idx] }} />
|
|
57
|
+
<div className="min-w-0">
|
|
58
|
+
<span className="text-sm text-gray-700">{entry.name}</span>
|
|
59
|
+
<div className="flex items-baseline gap-2">
|
|
60
|
+
<span className="text-lg font-semibold text-gray-900">{entry.value.toLocaleString()}</span>
|
|
61
|
+
<span className="text-xs text-gray-400">{pct}%</span>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
);
|
|
66
|
+
})}
|
|
67
|
+
</div>
|
|
68
|
+
</div>
|
|
69
|
+
);
|
|
70
|
+
}
|