refactor(admin): remove quick links section and replace anchor tags with Next.js Link components
This commit is contained in:
@@ -7,6 +7,7 @@ import { UserAvatar } from '@zen/core/shared/components';
|
|||||||
import { useRouter, usePathname } from 'next/navigation';
|
import { useRouter, usePathname } from 'next/navigation';
|
||||||
import { getPage, getPages } from '../registry.js';
|
import { getPage, getPages } from '../registry.js';
|
||||||
import { useTheme, getThemeIcon } from '@zen/core/themes';
|
import { useTheme, getThemeIcon } from '@zen/core/themes';
|
||||||
|
import Link from 'next/link';
|
||||||
|
|
||||||
const AdminTop = ({ isMobileMenuOpen, setIsMobileMenuOpen, user, onLogout, appName = 'ZEN', navigationSections = [] }) => {
|
const AdminTop = ({ isMobileMenuOpen, setIsMobileMenuOpen, user, onLogout, appName = 'ZEN', navigationSections = [] }) => {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -78,8 +79,6 @@ const AdminTop = ({ isMobileMenuOpen, setIsMobileMenuOpen, user, onLogout, appNa
|
|||||||
|
|
||||||
const breadcrumbs = buildBreadcrumbs();
|
const breadcrumbs = buildBreadcrumbs();
|
||||||
|
|
||||||
const quickLinks = [];
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<header className="bg-white dark:bg-black border-b border-neutral-200 dark:border-neutral-800/70 sticky top-0 z-30 h-12 flex items-center w-full">
|
<header className="bg-white dark:bg-black border-b border-neutral-200 dark:border-neutral-800/70 sticky top-0 z-30 h-12 flex items-center w-full">
|
||||||
<div className="flex items-center justify-between px-4 lg:px-6 py-2 w-full">
|
<div className="flex items-center justify-between px-4 lg:px-6 py-2 w-full">
|
||||||
@@ -127,20 +126,8 @@ const AdminTop = ({ isMobileMenuOpen, setIsMobileMenuOpen, user, onLogout, appNa
|
|||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Right section — Quick links + Profile */}
|
{/* Right section — Profile */}
|
||||||
<div className="flex items-center gap-3 sm:gap-4">
|
<div className="flex items-center gap-3 sm:gap-4">
|
||||||
<nav className="hidden sm:flex items-center gap-4 lg:gap-6">
|
|
||||||
{quickLinks.map((link) => (
|
|
||||||
<a
|
|
||||||
key={link.name}
|
|
||||||
href={link.href}
|
|
||||||
className="text-sm text-neutral-600 dark:text-neutral-300 hover:text-neutral-900 dark:hover:text-white transition-colors duration-200"
|
|
||||||
>
|
|
||||||
{link.name}
|
|
||||||
</a>
|
|
||||||
))}
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
{/* User Profile Menu */}
|
{/* User Profile Menu */}
|
||||||
<Menu as="div" className="relative">
|
<Menu as="div" className="relative">
|
||||||
<MenuButton className="cursor-pointer flex items-center gap-2.5 px-2.5 py-1.5 rounded-xl hover:bg-black/5 dark:hover:bg-white/5 transition-colors duration-200 outline-none group">
|
<MenuButton className="cursor-pointer flex items-center gap-2.5 px-2.5 py-1.5 rounded-xl hover:bg-black/5 dark:hover:bg-white/5 transition-colors duration-200 outline-none group">
|
||||||
@@ -163,35 +150,15 @@ const AdminTop = ({ isMobileMenuOpen, setIsMobileMenuOpen, user, onLogout, appNa
|
|||||||
>
|
>
|
||||||
<MenuItems className="absolute right-0 mt-4 w-48 outline-none rounded-xl border border-black/8 dark:border-white/8 bg-white dark:bg-[#0B0B0B] shadow-lg overflow-hidden z-50">
|
<MenuItems className="absolute right-0 mt-4 w-48 outline-none rounded-xl border border-black/8 dark:border-white/8 bg-white dark:bg-[#0B0B0B] shadow-lg overflow-hidden z-50">
|
||||||
<div className="p-1.5 flex flex-col gap-0.5">
|
<div className="p-1.5 flex flex-col gap-0.5">
|
||||||
{/* Quick links — mobile only */}
|
|
||||||
{quickLinks.length > 0 && (
|
|
||||||
<>
|
|
||||||
{quickLinks.map((link) => (
|
|
||||||
<MenuItem key={link.name}>
|
|
||||||
<a
|
|
||||||
href={link.href}
|
|
||||||
className="sm:hidden flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm text-neutral-500 dark:text-neutral-400 transition-colors duration-150 data-focus:bg-neutral-100 dark:data-focus:bg-white/5 data-focus:text-neutral-900 dark:data-focus:text-white"
|
|
||||||
>
|
|
||||||
<svg className="w-4 h-4 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
||||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.75} d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
|
||||||
</svg>
|
|
||||||
{link.name}
|
|
||||||
</a>
|
|
||||||
</MenuItem>
|
|
||||||
))}
|
|
||||||
<div className="h-px bg-black/6 dark:bg-white/6 my-0.5" />
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{/* Profile */}
|
{/* Profile */}
|
||||||
<MenuItem>
|
<MenuItem>
|
||||||
<a
|
<Link
|
||||||
href="/admin/profile"
|
href="/admin/profile"
|
||||||
className="cursor-pointer w-full flex items-center gap-2 px-[7px] py-[10px] rounded-lg text-[13px] leading-none text-neutral-500 dark:text-neutral-400 transition-colors duration-[120ms] ease-out data-focus:bg-neutral-100 dark:data-focus:bg-white/5 data-focus:text-neutral-900 dark:data-focus:text-white"
|
className="cursor-pointer w-full flex items-center gap-2 px-[7px] py-[10px] rounded-lg text-[13px] leading-none text-neutral-500 dark:text-neutral-400 transition-colors duration-[120ms] ease-out data-focus:bg-neutral-100 dark:data-focus:bg-white/5 data-focus:text-neutral-900 dark:data-focus:text-white"
|
||||||
>
|
>
|
||||||
<User03Icon className="w-4 h-4 shrink-0" />
|
<User03Icon className="w-4 h-4 shrink-0" />
|
||||||
Mon profil
|
Mon profil
|
||||||
</a>
|
</Link>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
|
|
||||||
{/* Theme — pas de MenuItem pour ne pas fermer le menu au clic */}
|
{/* Theme — pas de MenuItem pour ne pas fermer le menu au clic */}
|
||||||
@@ -209,7 +176,7 @@ const AdminTop = ({ isMobileMenuOpen, setIsMobileMenuOpen, user, onLogout, appNa
|
|||||||
<MenuItem>
|
<MenuItem>
|
||||||
<button
|
<button
|
||||||
onClick={handleLogout}
|
onClick={handleLogout}
|
||||||
className="cursor-pointer w-full flex items-center gap-2 px-[7px] py-[10px] rounded-lg text-[13px] leading-none text-red-700 dark:text-red-600 transition-colors duration-150 text-left data-focus:bg-red-700/15 dark:data-focus:bg-red-600/30"
|
className="cursor-pointer w-full flex items-center gap-2 px-[7px] py-[10px] rounded-lg text-[13px] leading-none text-red-700 dark:text-red-600 transition-colors duration-150 text-left data-focus:bg-red-700/10 dark:data-focus:bg-red-700/20"
|
||||||
>
|
>
|
||||||
<svg className="w-4 h-4 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
<svg className="w-4 h-4 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.75} d="M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1" />
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.75} d="M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1" />
|
||||||
|
|||||||
Reference in New Issue
Block a user