2025-03-30 16:42:51 -03:00
|
|
|
import React, { useState } from 'react';
|
|
|
|
|
|
|
|
interface Account {
|
|
|
|
email: string;
|
|
|
|
label: string;
|
|
|
|
icon: React.ReactNode;
|
|
|
|
}
|
|
|
|
|
|
|
|
interface AccountSwitcherProps {
|
|
|
|
isCollapsed: boolean;
|
|
|
|
accounts: Account[];
|
|
|
|
}
|
|
|
|
|
2025-03-30 19:28:28 -03:00
|
|
|
export function AccountSwitcher({ isCollapsed, accounts }: AccountSwitcherProps) {
|
2025-03-30 16:42:51 -03:00
|
|
|
const [selectedAccount, setSelectedAccount] = useState<string>(accounts[0].email);
|
2025-03-30 19:28:28 -03:00
|
|
|
const [isOpen, setIsOpen] = useState(false);
|
2025-03-30 16:42:51 -03:00
|
|
|
|
|
|
|
const selectedAccountData = accounts.find((account) => account.email === selectedAccount);
|
|
|
|
|
|
|
|
return (
|
2025-03-30 19:28:28 -03:00
|
|
|
<div className="relative">
|
|
|
|
<button
|
|
|
|
onClick={() => setIsOpen(!isOpen)}
|
|
|
|
className={`flex items-center ${isCollapsed ? 'justify-center' : 'space-x-2'}`}
|
2025-03-30 16:42:51 -03:00
|
|
|
>
|
|
|
|
{selectedAccountData && (
|
|
|
|
<>
|
2025-03-30 19:28:28 -03:00
|
|
|
<div className="w-6 h-6 flex items-center justify-center">
|
|
|
|
{selectedAccountData.icon}
|
|
|
|
</div>
|
2025-03-30 16:42:51 -03:00
|
|
|
{!isCollapsed && (
|
2025-03-30 19:28:28 -03:00
|
|
|
<span>{selectedAccountData.label}</span>
|
2025-03-30 16:42:51 -03:00
|
|
|
)}
|
|
|
|
</>
|
|
|
|
)}
|
2025-03-30 19:28:28 -03:00
|
|
|
</button>
|
|
|
|
|
|
|
|
{isOpen && (
|
|
|
|
<div className="absolute z-10 mt-2 w-56 bg-white rounded-md shadow-lg">
|
|
|
|
<div className="p-2">
|
|
|
|
{accounts.map((account) => (
|
|
|
|
<button
|
|
|
|
key={account.email}
|
|
|
|
onClick={() => {
|
|
|
|
setSelectedAccount(account.email);
|
|
|
|
setIsOpen(false);
|
|
|
|
}}
|
|
|
|
className="w-full text-left px-3 py-2 hover:bg-gray-100 flex items-center space-x-2"
|
|
|
|
>
|
|
|
|
<div className="w-5 h-5 flex items-center justify-center">
|
|
|
|
{account.icon}
|
|
|
|
</div>
|
|
|
|
<span>{account.label}</span>
|
|
|
|
</button>
|
|
|
|
))}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
)}
|
|
|
|
</div>
|
2025-03-30 16:42:51 -03:00
|
|
|
);
|
|
|
|
}
|