diff --git a/src/features/admin/AdminPage.client.js b/src/features/admin/AdminPage.client.js index 6126206..a701505 100644 --- a/src/features/admin/AdminPage.client.js +++ b/src/features/admin/AdminPage.client.js @@ -1,8 +1,6 @@ 'use client'; -import { useEffect } from 'react'; import { getPage } from './registry.js'; -import { useAdminPageTitle } from './components/AdminPageTitleContext.js'; import './pages/DashboardPage.client.js'; import './pages/UsersPage.client.js'; import './pages/RolesPage.client.js'; @@ -15,11 +13,6 @@ export default function AdminPageClient({ params, user, widgetData }) { const slug = first || 'dashboard'; const page = getPage(slug) || getPage('dashboard'); - const { setTitle } = useAdminPageTitle(); - - useEffect(() => { - if (page?.title) setTitle(page.title); - }, [page?.title]); if (!page) return null; diff --git a/src/features/admin/components/AdminPageTitleContext.js b/src/features/admin/components/AdminPageTitleContext.js deleted file mode 100644 index f10b1b6..0000000 --- a/src/features/admin/components/AdminPageTitleContext.js +++ /dev/null @@ -1,18 +0,0 @@ -'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 d3ad6c3..2684dc4 100644 --- a/src/features/admin/components/AdminShell.js +++ b/src/features/admin/components/AdminShell.js @@ -3,36 +3,33 @@ 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 }) { 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 f020b54..0667abc 100644 --- a/src/features/admin/components/AdminTop.js +++ b/src/features/admin/components/AdminTop.js @@ -5,12 +5,10 @@ import { Menu, MenuButton, MenuItem, MenuItems, Transition } from '@headlessui/r import { ChevronDownIcon, User03Icon, DashboardSquare03Icon } from '@zen/core/shared/icons'; import { UserAvatar } from '@zen/core/shared/components'; import { useRouter, usePathname } from 'next/navigation'; -import { getPages } from '../registry.js'; -import { useAdminPageTitle } from './AdminPageTitleContext.js'; +import { getPage, getPages } from '../registry.js'; import { useTheme, getThemeIcon } from '@zen/core/themes'; const AdminTop = ({ isMobileMenuOpen, setIsMobileMenuOpen, user, onLogout, appName = 'ZEN', navigationSections = [] }) => { - const { title: currentPageTitle } = useAdminPageTitle(); const router = useRouter(); const pathname = usePathname(); @@ -40,21 +38,17 @@ const AdminTop = ({ isMobileMenuOpen, setIsMobileMenuOpen, user, onLogout, appNa const buildBreadcrumbs = () => { const crumbs = [{ icon: DashboardSquare03Icon, href: '/admin/dashboard' }]; const after = pathname.replace(/^\/admin\/?/, ''); - if (!after) { - crumbs.push({ label: currentPageTitle }); - return crumbs; - } - const segments = after.split('/').filter(Boolean); - if (!segments.length || (segments[0] === 'dashboard' && segments.length === 1)) { - crumbs.push({ label: currentPageTitle }); + const [first, second] = segments; + const pageTitle = getPage(first || 'dashboard')?.title || ''; + + if (!after || !segments.length || (segments[0] === 'dashboard' && segments.length === 1)) { + crumbs.push({ label: pageTitle }); return crumbs; } - const [first, second] = segments; - if (first === 'profile') { - crumbs.push({ label: currentPageTitle }); + crumbs.push({ label: pageTitle }); return crumbs; }