From 843f992b1f6b3f4fd9589b3fa1e792960150f8f8 Mon Sep 17 00:00:00 2001 From: Hyko Date: Wed, 22 Apr 2026 17:58:04 -0400 Subject: [PATCH] feat(admin): replace prop-based page title with context provider --- .../admin/components/AdminPageTitleContext.js | 18 +++++++++ src/features/admin/components/AdminShell.js | 40 ++++++++++--------- src/features/admin/components/AdminTop.js | 4 +- 3 files changed, 42 insertions(+), 20 deletions(-) create mode 100644 src/features/admin/components/AdminPageTitleContext.js diff --git a/src/features/admin/components/AdminPageTitleContext.js b/src/features/admin/components/AdminPageTitleContext.js new file mode 100644 index 0000000..f10b1b6 --- /dev/null +++ b/src/features/admin/components/AdminPageTitleContext.js @@ -0,0 +1,18 @@ +'use client'; + +import { createContext, useContext, useState } from 'react'; + +const AdminPageTitleContext = createContext({ title: '', setTitle: () => {} }); + +export function AdminPageTitleProvider({ children }) { + const [title, setTitle] = useState(''); + return ( + + {children} + + ); +} + +export function useAdminPageTitle() { + return useContext(AdminPageTitleContext); +} diff --git a/src/features/admin/components/AdminShell.js b/src/features/admin/components/AdminShell.js index 6aa5b6b..d3ad6c3 100644 --- a/src/features/admin/components/AdminShell.js +++ b/src/features/admin/components/AdminShell.js @@ -3,34 +3,36 @@ import { useState } from 'react'; import AdminSidebar from './AdminSidebar.js'; import AdminTop from './AdminTop.js'; +import { AdminPageTitleProvider } from './AdminPageTitleContext.js'; -export default function AdminShell({ children, user, onLogout, appName, navigationSections, currentPageTitle }) { +export default function AdminShell({ children, user, onLogout, appName, navigationSections }) { const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); return ( -
- -
- +
+ -
-
- {children} -
-
+
+ +
+
+ {children} +
+
+
-
+ ); } diff --git a/src/features/admin/components/AdminTop.js b/src/features/admin/components/AdminTop.js index 2bd8e88..f020b54 100644 --- a/src/features/admin/components/AdminTop.js +++ b/src/features/admin/components/AdminTop.js @@ -6,9 +6,11 @@ import { ChevronDownIcon, User03Icon, DashboardSquare03Icon } from '@zen/core/sh import { UserAvatar } from '@zen/core/shared/components'; import { useRouter, usePathname } from 'next/navigation'; import { getPages } from '../registry.js'; +import { useAdminPageTitle } from './AdminPageTitleContext.js'; import { useTheme, getThemeIcon } from '@zen/core/themes'; -const AdminTop = ({ isMobileMenuOpen, setIsMobileMenuOpen, user, onLogout, appName = 'ZEN', navigationSections = [], currentPageTitle }) => { +const AdminTop = ({ isMobileMenuOpen, setIsMobileMenuOpen, user, onLogout, appName = 'ZEN', navigationSections = [] }) => { + const { title: currentPageTitle } = useAdminPageTitle(); const router = useRouter(); const pathname = usePathname();