import React, { useState } from 'react'; import { Compass, Map, Image as ImageIcon, Settings, ShieldAlert, Users, LogOut, LogIn, Globe, Sun, Moon } from 'lucide-react'; import { useTranslation } from '@/hooks/useTranslation'; import { useTheme } from '@/hooks/useTheme'; interface MapProfileDropdownProps { user: any; onLogout?: () => void; onOpenSettings: () => void; onOpenCreateTour: () => void; onOpenReport: () => void; onOpenLogin: () => void; onOpenMyPhotos: () => void; onOpenMyTours: () => void; onOpenFriends: () => void; onOpenAdmin?: () => void; } export const MapProfileDropdown: React.FC = ({ user, onLogout, onOpenSettings, onOpenCreateTour, onOpenReport, onOpenLogin, onOpenMyPhotos, onOpenMyTours, onOpenFriends, onOpenAdmin, }) => { const [isOpen, setIsOpen] = useState(false); const { lang, changeLanguage } = useTranslation(); const { theme, changeTheme } = useTheme(); const guestToken = localStorage.getItem('guest_token'); const isAuthenticated = !!user && !guestToken; const renderInitialsAvatar = (name: string) => { const initials = name ? name.split(' ').map(n => n[0]).slice(0, 2).join('').toUpperCase() : 'U'; return (
{initials}
); }; const handleItemClick = (callback: () => void) => { setIsOpen(false); callback(); }; return (
{/* TRIGGER BUTTON */} {/* DROPDOWN MENU / MOBILE BOTTOM SHEET LAYER */} {isOpen && ( <>
setIsOpen(false)} />
{isAuthenticated ? (
{/* User info header */}
{user?.avatar ? ( Avatar ) : ( renderInitialsAvatar(user?.name || 'User') )}
{user?.name} {user?.email}
{/* Extra System Admin option */} {user?.isAdmin && ( )} {/* 1. Tạo tour */} {/* 2. Hành trình của tôi */} {/* 3. Thư viện ảnh */} {/* 4. Cài đặt */} {/* 5. Báo cáo vi phạm */} {/* STRICT VISUAL DIVIDER LINE */}
{/* 6. Danh sách bạn bè */} {/* 7. Đăng xuất */}
) : (
Tùy chỉnh nhanh
Ngôn ngữ:
{theme === 'light' ? ( ) : ( )} Giao diện:
)}
)}
); };