diff --git a/components/Layout.js b/components/Layout.js index 3ab4196..507c576 100644 --- a/components/Layout.js +++ b/components/Layout.js @@ -3,6 +3,125 @@ import { useRouter } from 'next/router'; import Link from 'next/link'; import { useTheme } from '../lib/theme-context'; +// User Profile Dropdown Component +function UserProfileDropdown({ user, onMobileMenuClose }) { + const [isDropdownOpen, setIsDropdownOpen] = useState(false); + + const profileMenuItems = [ + { name: 'Profile', href: '/profile', icon: 'user' }, + { name: 'Settings', href: '/settings', icon: 'settings' }, + ...(user?.role === 'admin' ? [ + { name: 'Admin Panel', href: '/admin', icon: 'admin' } + ] : []), + { name: 'Logout', href: '/logout', icon: 'logout', isLogout: true } + ]; + + const getProfileIcon = (iconName) => { + const icons = { + user: ( + + + + ), + settings: ( + + + + + ), + admin: ( + + + + ), + logout: ( + + + + ) + }; + return icons[iconName] || icons.user; + }; + + return ( +
+ {/* Dropdown Menu */} + {isDropdownOpen && ( + <> + {/* Backdrop */} +
setIsDropdownOpen(false)} + /> + + {/* Menu */} +
+
+ {profileMenuItems.map((item) => ( + +
{ + setIsDropdownOpen(false); + onMobileMenuClose(); + }} + > + + {item.name} +
+ + ))} +
+
+ + )} + + {/* Profile Button */} + +
+ ); +} + export default function Layout({ children, user = { email: 'me@randallstillwell.com', role: 'user' }, showSearch = false }) { const router = useRouter(); const { theme, toggleTheme } = useTheme(); @@ -203,85 +322,40 @@ export default function Layout({ children, user = { email: 'me@randallstillwell. ))} - {/* Profile Section */} -
- {/* User Profile */} -
-
-
- - {user?.email?.charAt(0).toUpperCase() || 'G'} - -
-
-

- {user?.email || 'Guest'} -

-

- {user?.role || 'visitor'} -

-
- -
-
+ {/* Bottom Section */} +
+ {/* Theme Toggle */} + - {/* Bottom Navigation */} - + {/* User Profile Dropdown */} + setIsMobileMenuOpen(false)} + />