'use client'; import { useEffect, useState } from 'react'; import { Users, Scale, Crown, ChevronDown, Settings2, Check } from 'lucide-react'; import { PERSONAS, getPersona, setPersona, type PersonaId } from '@/lib/persona'; import { cn } from '@/lib/utils'; const ICONS: Record = { Users, Scale, Crown }; /** * PersonaSwitcher — compact dropdown shown in the Sidebar user info area. * Click → expands menu with all 3 personas + a "Manage / เปลี่ยนบทบาท" hint. */ export function PersonaSwitcher() { const [personaId, setPersonaId] = useState(null); const [open, setOpen] = useState(false); useEffect(() => { setPersonaId(getPersona()); const onChange = () => setPersonaId(getPersona()); window.addEventListener('panya-persona-changed', onChange); window.addEventListener('storage', onChange); return () => { window.removeEventListener('panya-persona-changed', onChange); window.removeEventListener('storage', onChange); }; }, []); // Close on outside click useEffect(() => { if (!open) return; const handler = (e: MouseEvent) => { const target = e.target as HTMLElement; if (!target.closest('[data-persona-switcher]')) setOpen(false); }; document.addEventListener('click', handler); return () => document.removeEventListener('click', handler); }, [open]); const current = personaId ? PERSONAS[personaId] : null; const CurrentIcon = current ? (ICONS[current.icon] || Users) : Settings2; return (
{/* Trigger button */} {/* Dropdown menu */} {open && (
เปลี่ยนบทบาท
{Object.values(PERSONAS).map((p) => { const Icon = ICONS[p.icon] || Users; const isActive = personaId === p.id; return ( ); })}
)}
); }