basic test
This commit is contained in:
202
009/9-001.html
Normal file
202
009/9-001.html
Normal file
File diff suppressed because one or more lines are too long
202
009/9-002.html
Normal file
202
009/9-002.html
Normal file
File diff suppressed because one or more lines are too long
202
009/9-003.html
Normal file
202
009/9-003.html
Normal file
File diff suppressed because one or more lines are too long
219
009/9-004.html
Normal file
219
009/9-004.html
Normal file
File diff suppressed because one or more lines are too long
235
009/9-005.html
Normal file
235
009/9-005.html
Normal file
File diff suppressed because one or more lines are too long
219
009/9-006.html
Normal file
219
009/9-006.html
Normal file
File diff suppressed because one or more lines are too long
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>MyGlobalMail - Inbox (3 new)</title>
|
||||
<title>GlobalMail - Inbox (3 unread)</title>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
/* === CSS Variables System === */
|
||||
@@ -48,7 +48,7 @@
|
||||
/* === Reset & Base === */
|
||||
* { box-sizing: border-box; }
|
||||
body {
|
||||
font-family: 'Roboto', 'Segoe UI', -apple-system, sans-serif;
|
||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
||||
margin: 0;
|
||||
height: 100vh;
|
||||
background-color: var(--bg-body);
|
||||
@@ -269,14 +269,14 @@
|
||||
<!-- Header -->
|
||||
<header class="app-header">
|
||||
<div class="logo-area">
|
||||
<span class="logo-icon">📧</span> MyGlobalMail
|
||||
<span class="logo-icon">📧</span> GlobalMail (MyGlobalMail)
|
||||
</div>
|
||||
<div class="search-bar">
|
||||
<span>🔍</span>
|
||||
<input type="text" id="searchInput" placeholder="Search mail..." onkeyup="filterEmails()">
|
||||
</div>
|
||||
<div class="user-actions">
|
||||
<div class="theme-toggle" onclick="toggleTheme()" title="Toggle Dark/Light Theme">🌓</div>
|
||||
<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>
|
||||
@@ -289,7 +289,7 @@
|
||||
<!-- Sidebar -->
|
||||
<aside class="sidebar">
|
||||
<div class="compose-btn-wrapper">
|
||||
<button class="btn-compose" onclick="openCompose()">+ New Message</button>
|
||||
<button class="btn-compose" onclick="openCompose()">+ New Mail</button>
|
||||
</div>
|
||||
|
||||
<ul id="nav-folder-list">
|
||||
@@ -301,7 +301,7 @@
|
||||
</li>
|
||||
<li class="nav-item" onclick="selectFolder('sent')">
|
||||
<div style="display:flex; align-items:center;">
|
||||
<span class="nav-icon">📤</span> Sent Items
|
||||
<span class="nav-icon">📤</span> Sent
|
||||
</div>
|
||||
</li>
|
||||
<li class="nav-item" onclick="selectFolder('drafts')">
|
||||
@@ -312,7 +312,7 @@
|
||||
</li>
|
||||
<li class="nav-item" onclick="selectFolder('junk')">
|
||||
<div style="display:flex; align-items:center;">
|
||||
<span class="nav-icon">🚫</span> Junk Mail
|
||||
<span class="nav-icon">🚫</span> Junk
|
||||
</div>
|
||||
</li>
|
||||
<li class="nav-item" onclick="selectFolder('trash')">
|
||||
@@ -322,7 +322,7 @@
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="sidebar-section-title">Labels</div>
|
||||
<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
|
||||
@@ -344,10 +344,10 @@
|
||||
<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 Read" onclick="markSelectedAsRead()">✉️</div>
|
||||
<div class="tool-icon" title="Mark as Read" onclick="markSelectedAsRead()">✉️</div>
|
||||
<div class="tool-icon" title="Delete" onclick="deleteSelected()">🗑️</div>
|
||||
<div style="flex:1"></div>
|
||||
<div style="font-size:12px; color:var(--text-secondary);">Sort by: <b>Date</b></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">
|
||||
<!-- Emails will be injected here by JS -->
|
||||
@@ -358,8 +358,8 @@
|
||||
<section class="reading-pane" id="reading-pane">
|
||||
<div class="reading-empty-state">
|
||||
<div class="empty-icon">📧</div>
|
||||
<h3>Select an item to read</h3>
|
||||
<p>Click on an email on the left to view details.</p>
|
||||
<h3>Select an email to read</h3>
|
||||
<p>Click on an email from the list to view details.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -397,11 +397,11 @@
|
||||
{
|
||||
id: 1,
|
||||
folder: 'inbox',
|
||||
sender: 'HR Department',
|
||||
sender: 'Human Resources',
|
||||
senderEmail: 'hr@company.com',
|
||||
subject: 'Action Required: 2026 Benefits Enrollment Open',
|
||||
preview: 'The open enrollment period for 2026 benefits is now open. Please login to the portal to make your selections...',
|
||||
body: `<p>Dear Employee,</p><p>We are pleased to announce that <strong>Open Enrollment for 2026 Benefits</strong> is now live!</p><p>You have until <strong>Jan 31st</strong> to make changes to your medical, dental, and vision plans.</p><ul><li>Review new premiums in the attached PDF.</li><li>Update beneficiaries if needed.</li></ul><p>Regards,<br>HR Team</p>`,
|
||||
preview: '2026 Benefits Open Enrollment is now live. Please log in to the portal to make your selections...',
|
||||
body: `<p>Dear Employee,</p><p>We are pleased to announce that <strong>2026 Benefits Enrollment</strong> is now live!</p><p>You have until <strong>January 31st</strong> to make changes to your medical, dental, and vision plans.</p><ul><li>Please review the new premiums in the attached PDF.</li><li>Update your beneficiaries if necessary.</li></ul><p>Best regards,<br>The HR Team</p>`,
|
||||
date: '10:42 AM',
|
||||
unread: true,
|
||||
checked: false,
|
||||
@@ -414,8 +414,8 @@
|
||||
sender: 'Boss_Steve',
|
||||
senderEmail: 'steve.jobs@apple-mock.com',
|
||||
subject: 'URGENT: Project Beta Update Meeting',
|
||||
preview: 'Can we reschedule our 2pm sync to 3pm? Something came up with the client.',
|
||||
body: `<p>Hi,</p><p>Can we push the Beta review to <strong>3:00 PM</strong> today? The client just sent over some last-minute requirements we need to discuss first.</p><p>Thanks,<br>Steve</p>`,
|
||||
preview: 'Can we move the 2pm sync to 3pm? Client just had a fire drill.',
|
||||
body: `<p>Hi,</p><p>Can we push the Beta review to <strong>3:00 PM</strong> today? The client just sent over some last minute requirements we need to discuss first.</p><p>Thanks,<br>Steve</p>`,
|
||||
date: '09:15 AM',
|
||||
unread: true,
|
||||
checked: false,
|
||||
@@ -427,9 +427,9 @@
|
||||
folder: 'inbox',
|
||||
sender: 'Netflix',
|
||||
senderEmail: 'info@netflix.com',
|
||||
subject: 'New sign-in to your account',
|
||||
preview: 'We noticed a new sign-in to your Netflix account from a new device in Brazil.',
|
||||
body: `<p>Hi John,</p><p>We detected a new sign-in to your account.</p><p><strong>Device:</strong> Smart TV<br><strong>Location:</strong> São Paulo, Brazil</p><p>If this was you, you can ignore this email. If not, please change your password immediately.</p>`,
|
||||
subject: 'New login to your account',
|
||||
preview: 'We noticed a new login to your Netflix account from a new device in Brazil.',
|
||||
body: `<p>Hi John,</p><p>We detected a new login to your account.</p><p><strong>Device:</strong> Smart TV<br><strong>Location:</strong> Sao Paulo, Brazil</p><p>If this was you, please ignore this email. If not, please change your password immediately.</p>`,
|
||||
date: 'Yesterday',
|
||||
unread: false,
|
||||
checked: false,
|
||||
@@ -442,8 +442,8 @@
|
||||
sender: 'Amazon Orders',
|
||||
senderEmail: 'order-update@amazon.com',
|
||||
subject: 'Your package has been delivered!',
|
||||
preview: 'Your package containing "Wireless Headphones..." was delivered at front door.',
|
||||
body: `<p>Hello,</p><p>Your package has arrived!</p><p><strong>Tracking ID:</strong> TBA99881223<br><strong>Location:</strong> Front Porch</p><p><button style="background:#f9ab00; padding:10px; border-radius:4px; border:none; color:black; font-weight:bold;">View Order</button></p>`,
|
||||
preview: 'Your package containing "Wireless Headphones..." was delivered to your front porch.',
|
||||
body: `<p>Hello,</p><p>Your package has arrived!</p><p><strong>Tracking #:</strong> TBA99881223<br><strong>Location:</strong> Front Porch</p><p><button style="background:#f9ab00; padding:10px; border-radius:4px; border:none; color:black; font-weight:bold;">View Order</button></p>`,
|
||||
date: 'Yesterday',
|
||||
unread: true,
|
||||
checked: false,
|
||||
@@ -455,9 +455,9 @@
|
||||
folder: 'inbox',
|
||||
sender: 'Mom',
|
||||
senderEmail: 'mom@family.com',
|
||||
subject: 'Dinner on Sunday?',
|
||||
preview: 'Are you free this Sunday for roast chicken? Dad wants to know.',
|
||||
body: `<p>Hi honey,</p><p>Are you coming over this Sunday? I'm making your favorite roast chicken. Let me know so I can buy enough potatoes.</p><p>Love,<br>Mom</p>`,
|
||||
subject: 'Sunday Dinner?',
|
||||
preview: 'Are you free for roast chicken this Sunday? Dad wants to know.',
|
||||
body: `<p>Honey,</p><p>Are you coming over this Sunday? I am making your favorite roast chicken. Let me know so I can buy enough potatoes.</p><p>Love,<br>Mom</p>`,
|
||||
date: 'Jan 15',
|
||||
unread: false,
|
||||
checked: false,
|
||||
@@ -470,9 +470,9 @@
|
||||
folder: 'inbox',
|
||||
sender: 'IT Support',
|
||||
senderEmail: 'support@company.com',
|
||||
subject: 'Planned Maintenance: This Saturday',
|
||||
preview: 'System maintenance scheduled for Sat 10:00 PM - 2:00 AM. Services unavailable.',
|
||||
body: `<p>Attention Team,</p><p>We will be performing upgrading server maintenance this Saturday.</p><p><strong>Impact:</strong> Email and File Servers will be down for approx 4 hours.</p>`,
|
||||
subject: 'Scheduled Maintenance: This Saturday',
|
||||
preview: 'System maintenance scheduled for Sat 10:00 PM - 2:00 AM. Services will be unavailable.',
|
||||
body: `<p>Attention Team,</p><p>We will be performing server upgrades this Saturday.</p><p><strong>Impact:</strong> Email and file servers will be down for approx 4 hours.</p>`,
|
||||
date: 'Jan 14',
|
||||
unread: false,
|
||||
checked: false,
|
||||
@@ -499,7 +499,7 @@
|
||||
sender: 'Spotify',
|
||||
senderEmail: 'no-reply@spotify.com',
|
||||
subject: 'Your 2025 Wrapped is here! 🎵',
|
||||
preview: 'See your top songs, artists, and podcasts for the year.',
|
||||
preview: 'Check out your top songs, artists, and podcasts for the year.',
|
||||
body: `<p>It's that time of year!</p><h1>Your 2025 Wrapped</h1><p>Top Genre: Lo-Fi Beats<br>Top Artist: Unknown</p>`,
|
||||
date: 'Jan 10',
|
||||
unread: false,
|
||||
@@ -513,7 +513,7 @@
|
||||
sender: 'Spam Bot',
|
||||
senderEmail: 'winner@lottery.com',
|
||||
subject: 'YOU WON $1,000,000!!',
|
||||
preview: 'Click here to claim your prize immediately before it expires.',
|
||||
preview: 'Click here to claim your prize now before it expires.',
|
||||
body: `<p>CLICK HERE NOW!!!</p>`,
|
||||
date: 'Jan 01',
|
||||
unread: true,
|
||||
@@ -529,7 +529,7 @@
|
||||
senderEmail: 'john.doe@globalmail.com',
|
||||
subject: 'Re: Project Beta Update Meeting',
|
||||
preview: 'Sure, 3pm works for me. See you then.',
|
||||
body: `<p>Hi Steve,</p><p>3 PM is fine. I'll update the calendar invite.</p><p>Best,<br>John</p>`,
|
||||
body: `<p>Hi Steve,</p><p>3 PM is fine. I will update the calendar invite.</p><p>Best,<br>John</p>`,
|
||||
date: '09:20 AM',
|
||||
unread: false,
|
||||
checked: false,
|
||||
@@ -542,7 +542,7 @@
|
||||
sender: 'Me',
|
||||
senderEmail: 'john.doe@globalmail.com',
|
||||
subject: 'Draft Proposal V2',
|
||||
preview: 'Attached is the revised proposal. Let me know what you think.',
|
||||
preview: 'Attached is the revised proposal. Let me know your thoughts.',
|
||||
body: `<p>Hi All,</p><p>Please find attached.</p>`,
|
||||
date: 'Yesterday',
|
||||
unread: false,
|
||||
@@ -574,7 +574,8 @@
|
||||
}
|
||||
|
||||
if (filtered.length === 0) {
|
||||
container.innerHTML = `<div style="padding:40px; text-align:center; color:var(--text-secondary);">No mail in ${currentFolder}</div>`;
|
||||
const folderNameCN = { 'inbox': 'Inbox', 'sent': 'Sent', 'drafts': 'Drafts', 'junk': 'Junk', 'trash': 'Trash' }[currentFolder] || currentFolder;
|
||||
container.innerHTML = `<div style="padding:40px; text-align:center; color:var(--text-secondary);">${folderNameCN} is empty</div>`;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -586,7 +587,7 @@
|
||||
// Generate Tags HTML
|
||||
let tagHtml = '';
|
||||
if (email.tag === 'work') tagHtml = '<span class="tag tag-work">Work</span>';
|
||||
if (email.tag === 'finance') tagHtml = '<span class="tag tag-finance">Order</span>';
|
||||
if (email.tag === 'finance') tagHtml = '<span class="tag tag-finance">Finance</span>';
|
||||
if (email.tag === 'urgent') tagHtml = '<span class="tag tag-urgent">Urgent</span>';
|
||||
|
||||
// Insert Checkbox in HTML
|
||||
@@ -664,7 +665,7 @@
|
||||
}
|
||||
});
|
||||
|
||||
showToast(`${count} item(s) deleted`);
|
||||
showToast(`Deleted ${count} emails`);
|
||||
selectedEmailId = null;
|
||||
document.getElementById('reading-pane').innerHTML = `<div class="reading-empty-state"><div class="empty-icon">🗑️</div><h3>Moved to Trash</h3></div>`;
|
||||
renderMailList();
|
||||
@@ -682,7 +683,7 @@
|
||||
e.checked = false; // Optional: uncheck after action
|
||||
});
|
||||
|
||||
showToast('Marked as Read', 'var(--primary)');
|
||||
showToast('Marked as read', 'var(--primary)');
|
||||
renderMailList();
|
||||
}
|
||||
|
||||
@@ -736,12 +737,15 @@
|
||||
const clicked = event.currentTarget;
|
||||
if(clicked) clicked.classList.add('active');
|
||||
|
||||
const folderMap = { 'inbox': 'Inbox', 'sent': 'Sent', 'drafts': 'Drafts', 'junk': 'Junk', 'trash': 'Trash' };
|
||||
const displayName = folderMap[folderName] || folderName;
|
||||
|
||||
// Clear reading pane
|
||||
document.getElementById('reading-pane').innerHTML = `
|
||||
<div class="reading-empty-state">
|
||||
<div class="empty-icon">📂</div>
|
||||
<h3>${folderName.charAt(0).toUpperCase() + folderName.slice(1)}</h3>
|
||||
<p>Select an item to view.</p>
|
||||
<h3>${displayName}</h3>
|
||||
<p>Select an email to view.</p>
|
||||
</div>
|
||||
`;
|
||||
|
||||
@@ -760,10 +764,10 @@
|
||||
showToast('Moved to Trash');
|
||||
} else {
|
||||
EMAILS.splice(index, 1);
|
||||
showToast('Deleted permanently');
|
||||
showToast('Permanently Deleted');
|
||||
}
|
||||
selectedEmailId = null;
|
||||
document.getElementById('reading-pane').innerHTML = '<div class="reading-empty-state">Item deleted</div>';
|
||||
document.getElementById('reading-pane').innerHTML = '<div class="reading-empty-state">Email Deleted</div>';
|
||||
renderMailList();
|
||||
}
|
||||
}
|
||||
@@ -801,20 +805,20 @@
|
||||
folder: 'inbox',
|
||||
sender: 'News Bot',
|
||||
senderEmail: 'news@daily.com',
|
||||
subject: 'Breaking News: Tech market rally',
|
||||
preview: 'Global markets are seeing a significant uptrend today...',
|
||||
subject: 'Breaking: Tech Market Rebounds',
|
||||
preview: 'Global markets are showing significant upward trends today...',
|
||||
body: '<p>Markets are up 2% today.</p>',
|
||||
date: 'Just Now',
|
||||
date: 'Just now',
|
||||
unread: true,
|
||||
checked: false,
|
||||
tag: null,
|
||||
avatar: 'NB'
|
||||
};
|
||||
EMAILS.unshift(newMail);
|
||||
showToast('1 New Email Arrived');
|
||||
showToast('1 New Email Received');
|
||||
renderMailList();
|
||||
} else {
|
||||
showToast('All up to date');
|
||||
showToast('Up to date');
|
||||
}
|
||||
}, 600);
|
||||
}
|
||||
@@ -843,7 +847,7 @@
|
||||
|
||||
showToast('Sending...', 'var(--primary)');
|
||||
setTimeout(() => {
|
||||
showToast('Message sent!', 'var(--success)');
|
||||
showToast('Email Sent!', 'var(--success)');
|
||||
closeCompose();
|
||||
// Add to Sent
|
||||
EMAILS.unshift({
|
||||
@@ -854,7 +858,7 @@
|
||||
subject: subj || '(No Subject)',
|
||||
preview: 'You sent a message...',
|
||||
body: `<p>${document.getElementById('compose-body').value}</p>`,
|
||||
date: 'Just Now',
|
||||
date: 'Just now',
|
||||
unread: false,
|
||||
tag: null,
|
||||
avatar: 'JD'
|
||||
@@ -909,7 +913,7 @@
|
||||
el.innerHTML = `
|
||||
<div class="mail-header-row"><span class="mail-sender">${email.sender}</span></div>
|
||||
<div class="mail-subject">${email.subject}</div>
|
||||
<div class="mail-preview">Found in search</div>
|
||||
<div class="mail-preview">Search Result</div>
|
||||
`;
|
||||
container.appendChild(el);
|
||||
});
|
||||
26
009/record.json
Normal file
26
009/record.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"step-1": {
|
||||
"query": "最近网购的快递好像到了,列表里有个亚马逊(Amazon)发来的通知,帮我把那封邮件前面的复选框勾选上",
|
||||
"grounding_area": ""
|
||||
},
|
||||
"step-2": {
|
||||
"query": "这封邮件不用特意点进去看了,直接在列表上方的工具栏里,点击那个“信封”图标把它标记为已读",
|
||||
"grounding_area": ""
|
||||
},
|
||||
"step-3": {
|
||||
"query": "老板(Boss_Steve)好像发了个关于Beta项目会议的紧急邮件,赶紧点开这封邮件看看详情",
|
||||
"grounding_area": ""
|
||||
},
|
||||
"step-4": {
|
||||
"query": "内容看完了,需要给老板回个话,点击回复按钮准备写邮件",
|
||||
"grounding_area": ""
|
||||
},
|
||||
"step-5": {
|
||||
"query": "在弹出的发送窗口里不用改内容了,直接把邮件发出去",
|
||||
"grounding_area": ""
|
||||
},
|
||||
"step-6": {
|
||||
"query": "最后确认一下邮件发没发成功,通过左侧侧边栏去查看",
|
||||
"grounding_area": ""
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user