2025-03-30 16:42:51 -03:00
|
|
|
import React, { useState } from 'react';
|
2025-03-30 19:28:28 -03:00
|
|
|
import { AccountSwitcher } from './account-switcher';
|
2025-03-30 16:42:51 -03:00
|
|
|
import { MailList } from './mail-list';
|
2025-03-30 19:28:28 -03:00
|
|
|
import { MailDisplay } from './mail-display';
|
|
|
|
import { mails, accounts } from '../data';
|
2025-03-30 16:42:51 -03:00
|
|
|
|
2025-03-30 19:28:28 -03:00
|
|
|
export function Mail() {
|
2025-03-30 16:42:51 -03:00
|
|
|
const [isCollapsed, setIsCollapsed] = useState(false);
|
|
|
|
const [activeTab, setActiveTab] = useState('all');
|
2025-03-30 19:28:28 -03:00
|
|
|
const [selectedMailId, setSelectedMailId] = useState<string | null>(null);
|
2025-03-30 16:42:51 -03:00
|
|
|
|
|
|
|
const toggleCollapse = () => setIsCollapsed(!isCollapsed);
|
|
|
|
|
2025-03-30 19:28:28 -03:00
|
|
|
const filteredMails = activeTab === 'all'
|
|
|
|
? mails
|
|
|
|
: mails.filter(mail => !mail.read);
|
|
|
|
|
2025-03-30 16:42:51 -03:00
|
|
|
return (
|
2025-03-30 19:28:28 -03:00
|
|
|
<div className="flex h-screen">
|
|
|
|
<div className={`${isCollapsed ? 'w-16' : 'w-64'} border-r flex flex-col`}>
|
|
|
|
<div className="p-4 border-b">
|
|
|
|
<AccountSwitcher isCollapsed={isCollapsed} accounts={accounts} />
|
|
|
|
</div>
|
|
|
|
<div className="p-4">
|
|
|
|
<button onClick={toggleCollapse} className="w-full text-left">
|
|
|
|
{isCollapsed ? '»' : '« Collapse'}
|
|
|
|
</button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div className="flex-1 flex flex-col border-r">
|
|
|
|
<div className="p-4 border-b">
|
|
|
|
<div className="flex justify-between items-center">
|
|
|
|
<h2 className="text-xl font-bold">Inbox</h2>
|
|
|
|
<div className="flex space-x-2">
|
|
|
|
<button
|
|
|
|
onClick={() => setActiveTab('all')}
|
|
|
|
className={`px-3 py-1 rounded ${activeTab === 'all' ? 'bg-blue-500 text-white' : ''}`}
|
|
|
|
>
|
|
|
|
All mail
|
|
|
|
</button>
|
|
|
|
<button
|
|
|
|
onClick={() => setActiveTab('unread')}
|
|
|
|
className={`px-3 py-1 rounded ${activeTab === 'unread' ? 'bg-blue-500 text-white' : ''}`}
|
|
|
|
>
|
|
|
|
Unread
|
|
|
|
</button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div className="mt-4">
|
|
|
|
<input
|
|
|
|
type="text"
|
|
|
|
placeholder="Search"
|
|
|
|
className="w-full p-2 border rounded"
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div className="flex-1 overflow-auto">
|
|
|
|
<MailList
|
|
|
|
items={filteredMails}
|
|
|
|
selectedId={selectedMailId}
|
|
|
|
onSelect={setSelectedMailId}
|
2025-03-30 16:42:51 -03:00
|
|
|
/>
|
2025-03-30 19:28:28 -03:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div className="flex-1">
|
|
|
|
<MailDisplay mail={mails.find(mail => mail.id === selectedMailId) || null} />
|
|
|
|
</div>
|
|
|
|
</div>
|
2025-03-30 16:42:51 -03:00
|
|
|
);
|
|
|
|
}
|