mirror of
https://github.com/jhd3197/ServerKit.git
synced 2026-11-09 05:24:49 +09:00
Introduce a full email management feature: adds EmailService (Postfix/Dovecot/SpamAssassin/OpenDKIM management, account creation, forwarding, webmail, queue/logs, service control), new email API blueprint with admin-protected endpoints, and EmailAccount DB model. Register the email blueprint in app init. Frontend: add Email page, route and sidebar link, preload accent color + theme to prevent FOUC, new email styles and a dashboard layout hook. Also update ROADMAP.md to include Phase 21 SSO/OAuth and bump roadmap last-updated date.
38 lines
1.7 KiB
HTML
38 lines
1.7 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
|
|
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
|
|
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<meta name="description" content="ServerKit - Server Management Dashboard" />
|
|
<title>ServerKit</title>
|
|
<script>
|
|
// Prevent flash of unstyled content (FOUC) by setting theme + accent before React loads
|
|
(function() {
|
|
var d = document.documentElement;
|
|
d.setAttribute('data-theme', localStorage.getItem('theme') || 'dark');
|
|
var accent = localStorage.getItem('accent_color');
|
|
if (accent) {
|
|
var m = accent.match(/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i);
|
|
if (m) {
|
|
var r = parseInt(m[1],16), g = parseInt(m[2],16), b = parseInt(m[3],16);
|
|
var dk = function(v){ return Math.max(0, Math.round(v*0.88)); };
|
|
d.style.setProperty('--accent-primary', accent);
|
|
d.style.setProperty('--accent-hover', '#'+dk(r).toString(16).padStart(2,'0')+dk(g).toString(16).padStart(2,'0')+dk(b).toString(16).padStart(2,'0'));
|
|
d.style.setProperty('--accent-glow', 'rgba('+r+','+g+','+b+',0.15)');
|
|
d.style.setProperty('--accent-shadow', 'rgba('+r+','+g+','+b+',0.3)');
|
|
}
|
|
}
|
|
})();
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
<div id="root"></div>
|
|
<script type="module" src="/src/main.jsx"></script>
|
|
</body>
|
|
|
|
</html> |