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);
|
|
|
|
|
2025-04-02 02:43:36 -03:00
|
|
|
// Triangle icon
|
|
|
|
const TriangleIcon = () => (
|
|
|
|
<svg width="12" height="12" viewBox="0 0 24 24" fill="currentColor">
|
|
|
|
<path d="M24 22.525H0l12-21.05 12 21.05z" />
|
|
|
|
</svg>
|
|
|
|
);
|
|
|
|
|
2025-03-30 16:42:51 -03:00
|
|
|
return (
|
2025-03-30 19:28:28 -03:00
|
|
|
<div className="relative">
|
|
|
|
<button
|
|
|
|
onClick={() => setIsOpen(!isOpen)}
|
2025-04-02 02:43:36 -03:00
|
|
|
className={`flex items-center w-full justify-between rounded-md px-2 py-1.5 hover:bg-gray-100 ${isCollapsed ? 'justify-center' : ''}`}
|
2025-03-30 16:42:51 -03:00
|
|
|
>
|
2025-04-02 02:43:36 -03:00
|
|
|
<div className="flex items-center gap-2">
|
|
|
|
<div className="bg-black rounded-md text-white p-1">
|
|
|
|
<TriangleIcon />
|
|
|
|
</div>
|
|
|
|
{!isCollapsed && (
|
|
|
|
<span className="text-sm font-medium">Alicia Koch</span>
|
|
|
|
)}
|
|
|
|
</div>
|
|
|
|
{!isCollapsed && (
|
|
|
|
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
|
|
|
|
<path d="m6 9 6 6 6-6" />
|
|
|
|
</svg>
|
2025-03-30 16:42:51 -03:00
|
|
|
)}
|
2025-03-30 19:28:28 -03:00
|
|
|
</button>
|
|
|
|
|
|
|
|
{isOpen && (
|
2025-04-02 02:43:36 -03:00
|
|
|
<div className="absolute z-10 top-full left-0 mt-1 w-64 rounded-md border shadow-md bg-white">
|
|
|
|
<div className="p-1">
|
2025-03-30 19:28:28 -03:00
|
|
|
{accounts.map((account) => (
|
|
|
|
<button
|
|
|
|
key={account.email}
|
|
|
|
onClick={() => {
|
|
|
|
setSelectedAccount(account.email);
|
|
|
|
setIsOpen(false);
|
|
|
|
}}
|
2025-04-02 02:43:36 -03:00
|
|
|
className="w-full text-left px-2 py-1.5 hover:bg-gray-100 rounded-md flex items-center gap-2"
|
2025-03-30 19:28:28 -03:00
|
|
|
>
|
2025-04-02 02:43:36 -03:00
|
|
|
<div className="w-6 h-6 flex items-center justify-center">
|
2025-03-30 19:28:28 -03:00
|
|
|
{account.icon}
|
|
|
|
</div>
|
2025-04-02 02:43:36 -03:00
|
|
|
<span className="text-sm">{account.label}</span>
|
2025-03-30 19:28:28 -03:00
|
|
|
</button>
|
|
|
|
))}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
)}
|
|
|
|
</div>
|
2025-03-30 16:42:51 -03:00
|
|
|
);
|
|
|
|
}
|