From 7d908caec3a1299587e43403cf1ebfe9628df47f Mon Sep 17 00:00:00 2001 From: seaznCode Date: Sun, 14 Dec 2025 18:20:50 +0100 Subject: [PATCH] feat: enhance news management and display features --- .../admin/news-management/hooks/getNews.ts | 6 + src/app/admin/news-management/page.tsx | 71 ++++++-- src/app/admin/page.tsx | 16 ++ src/app/components/nav/Header.tsx | 170 ++++++++++++------ src/app/news/page.tsx | 136 +++++++++++--- 5 files changed, 305 insertions(+), 94 deletions(-) diff --git a/src/app/admin/news-management/hooks/getNews.ts b/src/app/admin/news-management/hooks/getNews.ts index 5f7ef13..441b8e7 100644 --- a/src/app/admin/news-management/hooks/getNews.ts +++ b/src/app/admin/news-management/hooks/getNews.ts @@ -4,11 +4,14 @@ export type AdminNewsItem = { id: number title: string summary?: string + content?: string slug: string category?: string imageUrl?: string isActive: boolean publishedAt?: string | null + createdAt?: string + updatedAt?: string } export function useAdminNews() { @@ -32,11 +35,14 @@ export function useAdminNews() { id: r.id, title: r.title, summary: r.summary, + content: r.content, slug: r.slug, category: r.category, imageUrl: r.imageUrl, isActive: !!r.is_active, publishedAt: r.published_at || null, + createdAt: r.created_at, + updatedAt: r.updated_at, })) setItems(data) } catch (e: any) { diff --git a/src/app/admin/news-management/page.tsx b/src/app/admin/news-management/page.tsx index e23c116..e54aecd 100644 --- a/src/app/admin/news-management/page.tsx +++ b/src/app/admin/news-management/page.tsx @@ -15,12 +15,13 @@ export default function NewsManagementPage() { const { items, loading, error, refresh } = useAdminNews() const [showCreate, setShowCreate] = React.useState(false) const [selected, setSelected] = React.useState(null) + const [deleteTarget, setDeleteTarget] = React.useState(null) return (
-
-
+
+

News Manager

-
@@ -70,6 +76,33 @@ export default function NewsManagementPage() { {selected && ( setSelected(null)} onUpdate={async (id, payload) => { await updateNews(id, payload); setSelected(null); await refresh() }} /> )} + {deleteTarget && ( +
+
setDeleteTarget(null)} /> +
+
+
+

Delete news?

+

You are about to delete "{deleteTarget.title}". This action cannot be undone.

+
+
+ + +
+
+
+
+ )} ) } @@ -125,11 +158,11 @@ function CreateNewsModal({ onClose, onCreate }: { onClose: () => void; onCreate:
- setTitle(e.target.value)} required /> - setSlug(e.target.value)} required /> - setCategory(e.target.value)} /> -