Files
2026-06-03 18:27:18 +02:00

363 lines
11 KiB
HTML

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Nightcord</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
:root {
--bg: #08080f;
--bg2: #0e0e1a;
--bg3: #13131f;
--bg4: #1a1a2a;
--border: rgba(255,255,255,0.055);
--border2: rgba(255,255,255,0.10);
--purple: #8b5cf6;
--purple2: #6d28d9;
--purple3: #a78bfa;
--purple4: #c4b5fd;
--green: #4ade80;
--red: #f87171;
--text: #dde3f0;
--muted: #8892a4;
--dim: #4a5568;
--glow: rgba(139,92,246,0.18);
}
html, body {
width: 320px;
background: var(--bg);
color: var(--text);
font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
overflow: hidden;
user-select: none;
}
/* -- Animated gradient bg -- */
body::before {
content: '';
position: fixed;
top: -60px; left: -60px;
width: 200px; height: 200px;
background: radial-gradient(circle, rgba(139,92,246,0.12) 0%, transparent 70%);
pointer-events: none;
animation: bgPulse 4s ease-in-out infinite alternate;
}
@keyframes bgPulse {
from { opacity: 0.5; transform: scale(1); }
to { opacity: 1; transform: scale(1.15); }
}
/* -- Header -- */
.header {
display: flex;
align-items: center;
gap: 11px;
padding: 15px 15px 13px;
background: linear-gradient(180deg, rgba(139,92,246,0.1) 0%, transparent 100%);
border-bottom: 1px solid var(--border);
position: relative;
}
.header::after {
content: '';
position: absolute;
bottom: -1px; left: 0; right: 0;
height: 1px;
background: linear-gradient(90deg, transparent 0%, rgba(139,92,246,0.5) 50%, transparent 100%);
}
.logo-wrap {
position: relative;
flex-shrink: 0;
}
.logo-ring {
position: absolute;
inset: -3px;
border-radius: 11px;
background: conic-gradient(from 0deg, transparent 60%, rgba(139,92,246,0.6) 80%, transparent 100%);
animation: logoSpin 4s linear infinite;
}
@keyframes logoSpin {
to { transform: rotate(360deg); }
}
.logo-inner {
position: relative;
z-index: 1;
border-radius: 9px;
overflow: hidden;
width: 34px; height: 34px;
}
.logo-inner img {
width: 34px; height: 34px;
display: block;
}
.logo-dot {
position: absolute;
bottom: -1px; right: -1px;
z-index: 2;
width: 10px; height: 10px;
border-radius: 50%;
background: var(--dim);
border: 2px solid var(--bg);
transition: background .4s, box-shadow .4s;
}
.logo-dot.live {
background: var(--green);
box-shadow: 0 0 8px rgba(74,222,128,0.7);
}
.header-text { flex: 1; }
.logo-name {
font-size: 15px;
font-weight: 800;
color: #fff;
letter-spacing: -0.3px;
background: linear-gradient(135deg, #fff 40%, var(--purple4) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.logo-sub {
font-size: 10px;
color: var(--dim);
margin-top: 2px;
letter-spacing: 0.2px;
}
.ver-pill {
font-size: 10px;
font-weight: 700;
padding: 4px 10px;
background: linear-gradient(135deg, rgba(139,92,246,0.18), rgba(109,40,217,0.18));
border: 1px solid rgba(139,92,246,0.35);
border-radius: 20px;
color: var(--purple4);
letter-spacing: 0.4px;
text-shadow: 0 0 10px rgba(167,139,250,0.4);
}
/* -- Panel -- */
.panel { padding: 10px 10px 4px; display: flex; flex-direction: column; gap: 6px; }
.option-row {
background: var(--bg2);
border: 1px solid var(--border);
border-radius: 12px;
padding: 12px 13px;
display: flex;
align-items: center;
gap: 12px;
transition: all .2s;
cursor: default;
position: relative;
overflow: hidden;
}
.option-row::before {
content: '';
position: absolute;
inset: 0;
background: radial-gradient(circle at 30% 50%, rgba(139,92,246,0.06) 0%, transparent 70%);
opacity: 0;
transition: opacity .2s;
pointer-events: none;
}
.option-row:hover { background: var(--bg3); border-color: var(--border2); }
.option-row:hover::before { opacity: 1; }
.option-row.on {
border-color: rgba(139,92,246,0.35);
background: rgba(139,92,246,0.07);
box-shadow: 0 0 0 1px rgba(139,92,246,0.1) inset, 0 2px 12px rgba(139,92,246,0.08);
}
.option-row.on::before { opacity: 1; }
.opt-icon {
width: 36px; height: 36px;
border-radius: 11px;
background: rgba(139,92,246,0.10);
border: 1px solid rgba(139,92,246,0.15);
display: flex; align-items: center; justify-content: center;
flex-shrink: 0;
transition: all .2s;
}
.option-row.on .opt-icon {
background: rgba(139,92,246,0.22);
border-color: rgba(139,92,246,0.4);
box-shadow: 0 0 10px rgba(139,92,246,0.25);
}
.opt-icon svg { width: 17px; height: 17px; fill: var(--purple3); }
.opt-text { flex: 1; }
.opt-name { font-size: 12px; font-weight: 700; color: var(--text); }
.opt-sub { font-size: 10px; color: var(--dim); margin-top: 2px; line-height: 1.4; }
/* Toggle */
.tog { position: relative; width: 42px; height: 23px; flex-shrink: 0; cursor: pointer; }
.tog input { position: absolute; opacity: 0; width: 0; height: 0; }
.tog-track {
position: absolute; inset: 0;
border-radius: 23px;
background: var(--bg4);
border: 1.5px solid rgba(255,255,255,0.07);
transition: background .25s, border-color .25s, box-shadow .25s;
}
.tog input:checked ~ .tog-track {
background: linear-gradient(135deg, var(--purple), var(--purple2));
border-color: rgba(139,92,246,0.55);
box-shadow: 0 0 10px rgba(139,92,246,0.4), 0 0 4px rgba(139,92,246,0.2) inset;
}
.tog-knob {
position: absolute;
top: 3px; left: 3px;
width: 15px; height: 15px;
border-radius: 50%;
background: #fff;
box-shadow: 0 1px 4px rgba(0,0,0,0.5);
transition: transform .25s cubic-bezier(.34,1.4,.64,1);
pointer-events: none;
}
.tog input:checked ~ .tog-knob { transform: translateX(19px); }
/* -- Divider -- */
.divider {
height: 1px;
background: linear-gradient(90deg, transparent 0%, var(--border2) 30%, var(--border2) 70%, transparent 100%);
margin: 6px 10px;
}
/* -- Links -- */
.links {
display: flex;
gap: 6px;
padding: 0 10px 8px;
}
.link-btn {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
gap: 5px;
padding: 8px 6px;
background: var(--bg2);
border: 1px solid var(--border);
border-radius: 10px;
color: var(--dim);
font-size: 10px;
font-weight: 700;
cursor: pointer;
transition: all .2s;
text-decoration: none;
letter-spacing: 0.3px;
position: relative;
overflow: hidden;
}
.link-btn::after {
content: '';
position: absolute;
inset: 0;
opacity: 0;
transition: opacity .2s;
border-radius: inherit;
}
.link-btn:hover { transform: translateY(-1px); }
.link-btn svg { width: 13px; height: 13px; fill: currentColor; flex-shrink: 0; }
.link-btn.github:hover { color: #e2e8f0; border-color: rgba(226,232,240,0.25); background: rgba(226,232,240,0.05); box-shadow: 0 3px 10px rgba(0,0,0,0.3); }
.link-btn.discord:hover { color: #7289da; border-color: rgba(114,137,218,0.4); background: rgba(114,137,218,0.08); box-shadow: 0 3px 10px rgba(114,137,218,0.15); }
.link-btn.website:hover { color: var(--purple4); border-color: rgba(139,92,246,0.4); background: rgba(139,92,246,0.08); box-shadow: 0 3px 10px rgba(139,92,246,0.15); }
/* -- Footer -- */
.footer {
padding: 8px 14px 11px;
border-top: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
}
.footer-status {
font-size: 10px;
color: var(--dim);
display: flex;
align-items: center;
gap: 5px;
transition: color .3s;
}
.footer-status.active { color: var(--muted); }
.status-dot {
display: inline-block;
width: 6px; height: 6px;
border-radius: 50%;
background: var(--dim);
flex-shrink: 0;
transition: background .3s, box-shadow .3s;
}
.status-dot.active {
background: var(--green);
box-shadow: 0 0 6px rgba(74,222,128,0.6);
animation: dotPulse 2s ease-in-out infinite;
}
@keyframes dotPulse {
0%, 100% { box-shadow: 0 0 5px rgba(74,222,128,0.5); }
50% { box-shadow: 0 0 10px rgba(74,222,128,0.9); }
}
.debug { font-size: 9px; color: var(--dim); font-family: monospace; opacity: 0.4; }
</style>
</head>
<body>
<div class="header">
<div class="logo-wrap">
<div class="logo-ring"></div>
<div class="logo-inner">
<img src="icon.png" alt="Nightcord">
</div>
<span class="logo-dot" id="statusDot"></span>
</div>
<div class="header-text">
<div class="logo-name">Nightcord</div>
<div class="logo-sub">Discord Enhancement</div>
</div>
<span class="ver-pill">v1.19.2</span>
</div>
<div class="panel">
<div class="option-row" id="row">
<div class="opt-icon">
<svg viewBox="0 0 24 24"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg>
</div>
<div class="opt-text">
<div class="opt-name">Auto-inject</div>
<div class="opt-sub">Injecter automatiquement à l'ouverture de Discord</div>
</div>
<label class="tog">
<input type="checkbox" id="chk">
<div class="tog-track"></div>
<div class="tog-knob"></div>
</label>
</div>
</div>
<div class="divider"></div>
<div class="links">
<button class="link-btn github" id="btnGithub">
<svg viewBox="0 0 24 24"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.3 3.44 9.8 8.2 11.38.6.11.82-.26.82-.58v-2.03c-3.34.73-4.04-1.61-4.04-1.61-.54-1.38-1.33-1.75-1.33-1.75-1.09-.74.08-.73.08-.73 1.2.08 1.84 1.24 1.84 1.24 1.07 1.83 2.8 1.3 3.49 1 .1-.78.42-1.3.76-1.6-2.67-.3-5.47-1.33-5.47-5.93 0-1.31.47-2.38 1.24-3.22-.14-.3-.54-1.52.1-3.18 0 0 1.01-.32 3.3 1.23a11.5 11.5 0 0 1 3-.4c1.02 0 2.04.13 3 .4 2.28-1.55 3.29-1.23 3.29-1.23.65 1.66.24 2.88.12 3.18.77.84 1.24 1.91 1.24 3.22 0 4.61-2.81 5.63-5.48 5.92.43.37.81 1.1.81 2.22v3.29c0 .32.22.69.83.57C20.57 21.8 24 17.3 24 12c0-6.63-5.37-12-12-12z"/></svg>
GitHub
</button>
<button class="link-btn discord" id="btnDiscord">
<svg viewBox="0 0 24 24"><path d="M20.32 4.37A19.8 19.8 0 0 0 15.33 3c-.22.4-.48.93-.65 1.35a18.3 18.3 0 0 0-5.36 0A14.6 14.6 0 0 0 8.67 3 19.9 19.9 0 0 0 3.68 4.38C.53 9.17-.32 13.84.1 18.44a20 20 0 0 0 6.07 3.04 14.9 14.9 0 0 0 1.3-2.1 13 13 0 0 1-2.05-.98l.5-.38a14.28 14.28 0 0 0 12.16 0l.5.38c-.64.38-1.33.7-2.05.98a14.8 14.8 0 0 0 1.3 2.1 19.94 19.94 0 0 0 6.07-3.05c.5-5.17-.83-9.8-3.58-13.86zM8.01 15.52c-1.18 0-2.15-1.08-2.15-2.41 0-1.33.95-2.42 2.15-2.42 1.2 0 2.17 1.09 2.15 2.42 0 1.33-.95 2.41-2.15 2.41zm7.98 0c-1.18 0-2.15-1.08-2.15-2.41 0-1.33.95-2.42 2.15-2.42 1.2 0 2.16 1.09 2.15 2.42 0 1.33-.94 2.41-2.15 2.41z"/></svg>
Discord
</button>
<button class="link-btn website" id="btnWebsite">
<svg viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"/></svg>
Site web
</button>
</div>
<div class="footer">
<span class="footer-status" id="ftxt">
<span class="status-dot" id="dot"></span>
Prêt
</span>
<span class="debug" id="dbg"></span>
</div>
<script src="popup.js"></script>
</body>
</html>