UNPKG

ihrz

Version:
556 lines (482 loc) 10.9 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet"> <title>Server Leaderboard</title> <style> :root { /* Primary Colors */ --primary: #5865F2; --primary-light: #7983f5; --primary-dark: #4752c4; --secondary: #EB459E; --secondary-light: #f16db6; --secondary-dark: #c93c85; /* Background Colors */ --bg-dark: #1E1F22; --bg-medium: #2B2D31; --bg-light: #313338; --bg-lighter: #383A40; /* Text Colors */ --text-bright: #FFFFFF; --text-normal: #DCDDDE; --text-muted: #A3A6AA; --text-link: #00AFF4; /* Status Colors */ --online: #3BA55C; --idle: #FAA61A; --dnd: #ED4245; --offline: #747F8D; /* Other */ --border-radius-sm: 4px; --border-radius: 8px; --border-radius-lg: 16px; --shadow-sm: 0 2px 10px rgba(0, 0, 0, 0.2); --shadow: 0 4px 20px rgba(0, 0, 0, 0.3); --shadow-lg: 0 8px 30px rgba(0, 0, 0, 0.4); --transition: all 0.2s ease; } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Inter', sans-serif; background-color: var(--bg-dark); color: var(--text-bright); min-height: 100vh; display: flex; justify-content: center; align-items: center; padding: 2rem; } .container { width: 100%; max-width: 1400px; background: linear-gradient(135deg, var(--bg-medium) 0%, var(--bg-light) 100%); border-radius: var(--border-radius-lg); box-shadow: var(--shadow-lg); overflow: hidden; display: flex; flex-direction: column; gap: 2rem; padding: 0; position: relative; } .header { position: relative; padding: 2.5rem 3rem; background: linear-gradient(90deg, rgba(88, 101, 242, 0.2) 0%, rgba(235, 69, 158, 0.2) 100%); display: flex; align-items: center; gap: 1.5rem; border-bottom: 1px solid rgba(255, 255, 255, 0.1); } .header::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: linear-gradient(90deg, var(--primary) 0%, var(--secondary) 100%); } .server-info { display: flex; align-items: center; gap: 1.5rem; flex: 1; } .server-avatar { width: 80px; height: 80px; border-radius: 50%; object-fit: cover; border: 4px solid rgba(255, 255, 255, 0.2); box-shadow: var(--shadow-sm); transition: var(--transition); } .server-avatar:hover { transform: scale(1.05); border-color: var(--primary-light); } .server-details { display: flex; flex-direction: column; gap: 0.5rem; } .server-name { font-size: 2.2rem; font-weight: 800; color: var(--text-bright); letter-spacing: -0.5px; margin: 0; } .server-meta { display: flex; align-items: center; gap: 1rem; color: var(--text-muted); font-size: 0.95rem; } .meta-item { display: flex; align-items: center; gap: 0.5rem; } .meta-icon { opacity: 0.8; } .content { padding: 0 3rem 3rem; display: flex; flex-direction: column; gap: 2.5rem; } .grid-layout { display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); gap: 2rem; } .section { background: var(--bg-light); border-radius: var(--border-radius); box-shadow: var(--shadow); overflow: hidden; transition: var(--transition); height: 100%; } .section:hover { transform: translateY(-5px); box-shadow: var(--shadow-lg); } .section-header { padding: 1.5rem; background: rgba(0, 0, 0, 0.15); border-bottom: 1px solid rgba(255, 255, 255, 0.05); display: flex; align-items: center; gap: 0.75rem; } .section-icon { font-size: 1.25rem; color: var(--primary); display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; background: rgba(88, 101, 242, 0.15); border-radius: 50%; } .section-title { font-size: 1.25rem; font-weight: 700; color: var(--text-bright); margin: 0; } .section-content { padding: 1.5rem; } .list { display: flex; flex-direction: column; gap: 0.75rem; } .list-item { background: rgba(255, 255, 255, 0.03); border-radius: var(--border-radius); padding: 1rem; display: flex; align-items: center; gap: 1rem; transition: var(--transition); position: relative; overflow: hidden; } .list-item:hover { background: rgba(255, 255, 255, 0.07); transform: translateX(5px); } .list-item::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--primary); border-radius: 2px; opacity: 0; transition: var(--transition); } .list-item:hover::before { opacity: 1; } .rank { font-size: 1.25rem; font-weight: 800; color: var(--text-muted); width: 30px; text-align: center; } .rank-1 { color: gold; } .rank-2 { color: silver; } .rank-3 { color: #cd7f32; /* Bronze */ } .avatar { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; } .channel-icon { width: 40px; height: 40px; border-radius: 50%; background: rgba(255, 255, 255, 0.1); display: flex; align-items: center; justify-content: center; font-size: 1.25rem; color: var(--text-normal); } .info { flex: 1; display: flex; flex-direction: column; gap: 0.25rem; min-width: 0; } .name { font-weight: 600; color: var(--text-bright); font-size: 1rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .detail { font-size: 0.85rem; color: var(--text-muted); display: flex; align-items: center; gap: 0.5rem; } .stat { font-weight: 700; color: var(--primary-light); margin-left: auto; display: flex; align-items: center; gap: 0.5rem; background: rgba(88, 101, 242, 0.1); padding: 0.5rem 0.75rem; border-radius: var(--border-radius-sm); transition: var(--transition); } .list-item:hover .stat { background: rgba(88, 101, 242, 0.2); } .badge { background: var(--primary); color: white; font-size: 0.75rem; font-weight: 600; padding: 0.25rem 0.5rem; border-radius: var(--border-radius-sm); display: inline-flex; align-items: center; gap: 0.25rem; } .footer { text-align: center; padding: 1.5rem; color: var(--text-muted); font-size: 0.9rem; border-top: 1px solid rgba(255, 255, 255, 0.05); background: rgba(0, 0, 0, 0.1); } .footer a { color: var(--text-link); text-decoration: none; transition: var(--transition); } .footer a:hover { text-decoration: underline; } /* Animations */ @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .container { animation: fadeIn 0.6s ease-out; } .section { animation: fadeIn 0.6s ease-out; animation-fill-mode: both; } .section:nth-child(1) { animation-delay: 0.1s; } .section:nth-child(2) { animation-delay: 0.2s; } .section:nth-child(3) { animation-delay: 0.3s; } .list-item { animation: fadeIn 0.5s ease-out; animation-fill-mode: both; } .list-item:nth-child(1) { animation-delay: 0.1s; } .list-item:nth-child(2) { animation-delay: 0.15s; } .list-item:nth-child(3) { animation-delay: 0.2s; } .list-item:nth-child(4) { animation-delay: 0.25s; } .list-item:nth-child(5) { animation-delay: 0.3s; } /* Responsive Design */ @media (max-width: 1200px) { .grid-layout { grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); } } @media (max-width: 768px) { body { padding: 1rem; } .container { max-width: 100%; } .header { padding: 1.5rem; flex-direction: column; text-align: center; } .server-info { flex-direction: column; } .content { padding: 0 1.5rem 1.5rem; } .grid-layout { grid-template-columns: 1fr; } } </style> </head> <body> <div class="container"> <div class="header"> <div class="server-info"> <img class="server-avatar" src="{guild_pfp}" alt="Server Logo"> <div class="server-details"> <h1 class="server-name">{header_h1_value}</h1> <div class="server-meta"> <div class="meta-item"> <span class="meta-icon">👥</span> <span>{member_count} members</span> </div> <div class="meta-item"> <span class="meta-icon">📊</span> <span>Activity Leaderboard</span> </div> </div> </div> </div> </div> <div class="content"> <div class="grid-layout"> <div class="section"> <div class="section-header"> <div class="section-icon">👑</div> <h2 class="section-title">Top Active Users</h2> </div> <div class="section-content"> <div class="list"> {top_message_users} </div> </div> </div> <div class="section"> <div class="section-header"> <div class="section-icon">💬</div> <h2 class="section-title">Top Active Text Channels</h2> </div> <div class="section-content"> <div class="list"> {top_text_channels} </div> </div> </div> <div class="section"> <div class="section-header"> <div class="section-icon">🎤</div> <h2 class="section-title">Top Active Voice Channels</h2> </div> <div class="section-content"> <div class="list"> {top_voice_channels} </div> </div> </div> </div> </div> <div class="footer"> Stats generated on {current_date} • Powered by <a href="#">IHRZ</a> </div> </div> <!-- Template for user item (to be replaced by server) --> <!-- <div class="list-item"> <div class="rank rank-1">1</div> <img class="avatar" src="https://cdn.discordapp.com/avatars/user_id/avatar.png" alt="User"> <div class="info"> <div class="name">Username</div> <div class="detail">Last active: 2 hours ago</div> </div> <div class="stat">5.2K <span>messages</span></div> </div> --> <!-- Template for channel item (to be replaced by server) --> <!-- <div class="list-item"> <div class="rank rank-1">1</div> <div class="channel-icon">#</div> <div class="info"> <div class="name">channel-name</div> <div class="detail">Category: General</div> </div> <div class="stat">8.7K <span>messages</span></div> </div> --> </body> </html>