This commit is contained in:
2026-03-21 19:30:13 +08:00
parent 7520b7e2a0
commit 557e25d187
100 changed files with 16990 additions and 18914 deletions

View File

@@ -261,25 +261,28 @@
.tag-finance { background: #e8f5e9; color: #2e7d32; }
.tag-urgent { background: #ffebee; color: #c62828; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border-width: 0; }
</style>
</head>
<body>
<div class="app-container">
<!-- Header -->
<header class="app-header">
<header class="app-header" role="banner">
<div class="logo-area">
<span class="logo-icon">📧</span> GlobalMail (MyGlobalMail)
<span class="logo-icon" aria-hidden="true">📧</span> GlobalMail (MyGlobalMail)
</div>
<div class="search-bar">
<span>🔍</span>
<input type="text" id="searchInput" placeholder="Search mail..." onkeyup="filterEmails()">
<div class="search-bar" role="search">
<span aria-hidden="true">🔍</span>
<label for="searchInput" style="display:none;">Search mail</label>
<input type="text" id="searchInput" placeholder="Search mail..." onkeyup="filterEmails()" aria-label="Search mail">
</div>
<div class="user-actions">
<div class="theme-toggle" onclick="toggleTheme()" title="Toggle Dark/Light Mode">🌓</div>
<div title="Notifications">🔔</div>
<div title="Settings">⚙️</div>
<div class="user-avatar">JD</div>
<button class="theme-toggle" onclick="toggleTheme()" title="Toggle Dark/Light Mode" aria-label="Toggle dark/light mode">🌓</button>
<button title="Notifications" aria-label="Notifications">🔔</button>
<button title="Settings" aria-label="Settings">⚙️</button>
<div class="user-avatar" aria-label="User avatar">JD</div>
</div>
</header>
@@ -287,77 +290,81 @@
<div class="main-layout">
<!-- Sidebar -->
<aside class="sidebar">
<aside class="sidebar" role="navigation" aria-label="Folder navigation">
<div class="compose-btn-wrapper">
<button class="btn-compose" onclick="openCompose()">+ New Mail</button>
<button class="btn-compose" onclick="openCompose()" aria-label="Compose new mail">+ New Mail</button>
</div>
<ul id="nav-folder-list">
<li class="nav-item active" onclick="selectFolder('inbox')">
<div style="display:flex; align-items:center;">
<span class="nav-icon">📥</span> Inbox
</div>
<span class="unread-badge" id="badge-inbox">3</span>
</li>
<li class="nav-item" onclick="selectFolder('sent')">
<div style="display:flex; align-items:center;">
<span class="nav-icon">📤</span> Sent
</div>
</li>
<li class="nav-item" onclick="selectFolder('drafts')">
<div style="display:flex; align-items:center;">
<span class="nav-icon">📝</span> Drafts
</div>
<span class="unread-badge">1</span>
</li>
<li class="nav-item" onclick="selectFolder('junk')">
<div style="display:flex; align-items:center;">
<span class="nav-icon">🚫</span> Junk
</div>
</li>
<li class="nav-item" onclick="selectFolder('trash')">
<div style="display:flex; align-items:center;">
<span class="nav-icon">🗑️</span> Trash
</div>
</li>
</ul>
<nav>
<ul id="nav-folder-list" role="list">
<li class="nav-item active" onclick="selectFolder('inbox')" role="menuitem" aria-current="page">
<div style="display:flex; align-items:center;">
<span class="nav-icon" aria-hidden="true">📥</span> Inbox
</div>
<span class="unread-badge" id="badge-inbox" aria-label="Unread messages count">3</span>
</li>
<li class="nav-item" onclick="selectFolder('sent')" role="menuitem">
<div style="display:flex; align-items:center;">
<span class="nav-icon" aria-hidden="true">📤</span> Sent
</div>
</li>
<li class="nav-item" onclick="selectFolder('drafts')" role="menuitem">
<div style="display:flex; align-items:center;">
<span class="nav-icon" aria-hidden="true">📝</span> Drafts
</div>
<span class="unread-badge" aria-label="Draft messages count">1</span>
</li>
<li class="nav-item" onclick="selectFolder('junk')" role="menuitem">
<div style="display:flex; align-items:center;">
<span class="nav-icon" aria-hidden="true">🚫</span> Junk
</div>
</li>
<li class="nav-item" onclick="selectFolder('trash')" role="menuitem">
<div style="display:flex; align-items:center;">
<span class="nav-icon" aria-hidden="true">🗑️</span> Trash
</div>
</li>
</ul>
</nav>
<div class="sidebar-section-title">Tags</div>
<ul>
<li class="nav-item">
<span style="width:10px; height:10px; border-radius:50%; background:#1565c0; margin-right:12px;"></span> Work
</li>
<li class="nav-item">
<span style="width:10px; height:10px; border-radius:50%; background:#2e7d32; margin-right:12px;"></span> Finance
</li>
<li class="nav-item">
<span style="width:10px; height:10px; border-radius:50%; background:#c62828; margin-right:12px;"></span> Urgent
</li>
<li class="nav-item">
<span style="width:10px; height:10px; border-radius:50%; background:#f9ab00; margin-right:12px;"></span> Travel
</li>
</ul>
<nav>
<ul role="list">
<li class="nav-item" role="menuitem">
<span style="width:10px; height:10px; border-radius:50%; background:#1565c0; margin-right:12px;" aria-hidden="true"></span> Work
</li>
<li class="nav-item" role="menuitem">
<span style="width:10px; height:10px; border-radius:50%; background:#2e7d32; margin-right:12px;" aria-hidden="true"></span> Finance
</li>
<li class="nav-item" role="menuitem">
<span style="width:10px; height:10px; border-radius:50%; background:#c62828; margin-right:12px;" aria-hidden="true"></span> Urgent
</li>
<li class="nav-item" role="menuitem">
<span style="width:10px; height:10px; border-radius:50%; background:#f9ab00; margin-right:12px;" aria-hidden="true"></span> Travel
</li>
</ul>
</nav>
</aside>
<!-- Mail List Column -->
<main class="mail-list-panel">
<div class="toolbar">
<div class="tool-icon" title="Select All"><input type="checkbox" style="margin:0;" id="select-all-checkbox" onclick="toggleSelectAll()"></div>
<div class="tool-icon" title="Refresh" onclick="refreshMail()">🔄</div>
<div class="tool-icon" title="Mark as Read" onclick="markSelectedAsRead()">✉️</div>
<div class="tool-icon" title="Delete" onclick="deleteSelected()">🗑️</div>
<main class="mail-list-panel" role="main" aria-label="Mail list">
<div class="toolbar" role="toolbar" aria-label="Mail actions">
<div class="tool-icon" title="Select All" role="button" tabindex="0"><label><input type="checkbox" style="margin:0;" id="select-all-checkbox" onclick="toggleSelectAll()" aria-label="Select all emails in current folder"></label></div>
<button class="tool-icon" title="Refresh" onclick="refreshMail()" aria-label="Refresh mail list">🔄</button>
<button class="tool-icon" title="Mark as Read" onclick="markSelectedAsRead()" aria-label="Mark selected emails as read">✉️</button>
<button class="tool-icon" title="Delete" onclick="deleteSelected()" aria-label="Delete selected emails">🗑️</button>
<div style="flex:1"></div>
<div style="font-size:12px; color:var(--text-secondary);">Sort: <b>Date</b></div>
</div>
<div class="mail-items-container" id="mail-list-container">
<div class="mail-items-container" id="mail-list-container" role="region" aria-label="Email messages">
<!-- Emails will be injected here by JS -->
</div>
</main>
<!-- Reading Pane Column -->
<section class="reading-pane" id="reading-pane">
<section class="reading-pane" id="reading-pane" role="region" aria-label="Email reading pane">
<div class="reading-empty-state">
<div class="empty-icon">📧</div>
<div class="empty-icon" aria-hidden="true">📧</div>
<h3>Select an email to read</h3>
<p>Click on an email from the list to view details.</p>
</div>
@@ -367,25 +374,28 @@
</div>
<!-- Compose Modal -->
<div class="modal-overlay" id="compose-modal">
<div class="modal-header">
<div class="modal-overlay" id="compose-modal" role="dialog" aria-modal="true" aria-labelledby="compose-title">
<div class="modal-header" id="compose-title">
<span>New Message</span>
<span style="cursor:pointer;" onclick="closeCompose()"></span>
<button style="cursor:pointer; background:none; border:none; font-size:1.5rem;" onclick="closeCompose()" aria-label="Close compose"></button>
</div>
<div class="modal-body">
<div class="input-group">
<input type="text" placeholder="To" id="compose-to">
<label for="compose-to" style="display:block; margin-bottom:5px; font-weight:bold;">To:</label>
<input type="text" id="compose-to" placeholder="To" aria-label="Recipient email">
</div>
<div class="input-group">
<input type="text" placeholder="Subject" id="compose-subject">
<label for="compose-subject" style="display:block; margin-bottom:5px; font-weight:bold;">Subject:</label>
<input type="text" id="compose-subject" placeholder="Subject" aria-label="Email subject">
</div>
<div class="input-group" style="flex:1;">
<textarea style="height:100%;" placeholder="Type your message..." id="compose-body"></textarea>
<label for="compose-body" style="display:block; margin-bottom:5px; font-weight:bold;">Message:</label>
<textarea style="height:100%;" id="compose-body" placeholder="Type your message..." aria-label="Email body"></textarea>
</div>
</div>
<div class="modal-footer">
<button class="btn-compose" style="width:100px;" onclick="sendEmail()">Send</button>
<button style="color:var(--text-secondary);" onclick="closeCompose()">Discard</button>
<button class="btn-compose" style="width:100px;" onclick="sendEmail()" aria-label="Send email">Send</button>
<button style="color:var(--text-secondary); background:none; border:none; cursor:pointer;" onclick="closeCompose()" aria-label="Discard email">Discard</button>
</div>
</div>