diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index fa0dcd3..33cc834 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Feb 16 20:20:50 PST 2025 +#Tue Feb 03 10:14:04 GMT 2026 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/resources/webpage-internal/css/main.css b/src/main/resources/webpage-internal/css/main.css index 70a7378..a142965 100644 --- a/src/main/resources/webpage-internal/css/main.css +++ b/src/main/resources/webpage-internal/css/main.css @@ -62,12 +62,12 @@ body { display: flex; flex-direction: column; } + a { text-decoration: none; color: inherit; } - ul { list-style: none; } @@ -144,6 +144,8 @@ img { background: var(--color-bg-tertiary); } + + .nav-cta { display: flex; align-items: center; @@ -263,47 +265,6 @@ img { margin-bottom: 60px; } -.btn { - display: inline-flex; - align-items: center; - gap: 10px; - padding: 14px 28px; - font-size: 1rem; - font-weight: 600; - border-radius: var(--radius-full); - transition: all var(--transition-base); - cursor: pointer; - border: none; -} - -.btn-primary { - color: #000; - background: var(--gradient-primary); - box-shadow: var(--shadow-glow); -} - -.btn-primary:hover { - transform: translateY(-3px); - box-shadow: 0 0 60px rgba(255, 149, 0, 0.4); -} - -.btn-secondary { - color: var(--color-text); - background: var(--color-bg-tertiary); - border: 1px solid var(--color-border); -} - -.btn-secondary:hover { - background: var(--color-bg-elevated); - border-color: var(--color-border-light); - transform: translateY(-2px); -} - -.btn-large { - padding: 18px 36px; - font-size: 1.1rem; -} - .hero-stats { display: flex; align-items: center; @@ -338,6 +299,23 @@ img { background: var(--color-border); } +.page-header { + padding-top: 140px; + padding-bottom: 60px; + background: var(--gradient-hero); +} + +.header-content { + text-align: center; +} + +.header-subtitle { + font-size: 1.1rem; + color: var(--color-text-secondary); + max-width: 600px; + margin: 0 auto; +} + section { padding: 100px 0; } @@ -421,9 +399,13 @@ section { line-height: 1.6; } +.plugins { + background: var(--color-bg); +} + .plugins-grid { display: grid; - grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 20px; } @@ -433,16 +415,18 @@ section { border: 1px solid var(--color-border); border-radius: var(--radius-lg); transition: all var(--transition-base); + cursor: pointer; } .plugin-card:hover { - transform: translateY(-2px); border-color: var(--color-border-light); + transform: translateY(-2px); + box-shadow: var(--shadow-md); } .plugin-header { display: flex; - align-items: center; + align-items: flex-start; justify-content: space-between; margin-bottom: 16px; } @@ -496,6 +480,7 @@ section { .plugin-card p { font-size: 0.9rem; color: var(--color-text-secondary); + line-height: 1.6; margin-bottom: 16px; } @@ -583,6 +568,95 @@ section { left: 20%; } +.btn { + display: inline-flex; + align-items: center; + gap: 10px; + padding: 14px 28px; + font-size: 1rem; + font-weight: 600; + border-radius: var(--radius-full); + transition: all var(--transition-base); + cursor: pointer; + border: none; +} + +.btn-primary { + color: #000; + background: var(--gradient-primary); + box-shadow: var(--shadow-glow); +} + +.btn-primary:hover { + transform: translateY(-3px); + box-shadow: 0 0 60px rgba(255, 149, 0, 0.4); +} + +.btn-secondary { + color: var(--color-text); + background: var(--color-bg-tertiary); + border: 1px solid var(--color-border); +} + +.btn-secondary:hover { + background: var(--color-bg-elevated); + border-color: var(--color-border-light); + transform: translateY(-2px); +} + +.btn-large { + padding: 18px 36px; + font-size: 1.1rem; +} + +.btn-full { + width: 100%; + justify-content: center; +} + +.footer { + background: var(--color-bg-secondary); + border-top: 1px solid var(--color-border); + padding: 40px 0; + margin-top: auto; +} + +.footer-content { + display: flex; + flex-direction: column; + align-items: center; + gap: 16px; + text-align: center; +} + +.footer-brand { + display: flex; + align-items: center; + gap: 8px; + font-weight: 700; + font-size: 1.1rem; +} + +.footer-text { + color: var(--color-text-muted); + font-size: 0.9rem; +} + +.footer-links { + display: flex; + gap: 24px; +} + +.footer-links a { + font-size: 0.9rem; + color: var(--color-text-secondary); + transition: color var(--transition-fast); +} + +.footer-links a:hover { + color: var(--color-primary); +} + .guilds-hero { padding-top: 140px; padding-bottom: 40px; @@ -659,17 +733,6 @@ section { display: none; } -@keyframes fadeIn { - from { - opacity: 0; - transform: translateY(10px); - } - to { - opacity: 1; - transform: translateY(0); - } -} - .guild-header { display: flex; align-items: center; @@ -850,228 +913,71 @@ section { margin-bottom: 24px; } -.footer { - background: var(--color-bg-secondary); - border-top: 1px solid var(--color-border); - padding: 40px 0; - margin-top: auto; +.trick-hero { + padding-top: 100px; + padding-bottom: 20px; + background: var(--gradient-hero); } -.footer-content { +.breadcrumb { display: flex; - flex-direction: column; align-items: center; - gap: 16px; - text-align: center; + gap: 8px; + font-size: 0.9rem; + color: var(--color-text-secondary); + margin-bottom: 24px; } -.footer-brand { - display: flex; - align-items: center; - gap: 8px; - font-weight: 700; - font-size: 1.1rem; +.breadcrumb a { + transition: color var(--transition-fast); } -.footer-text { - color: var(--color-text-muted); - font-size: 0.9rem; +.breadcrumb a:hover { + color: var(--color-text); } -.footer-links { +.breadcrumb svg { + opacity: 0.5; +} + +.trick-content { + padding: 40px 0 80px; +} + +.trick-layout { + display: grid; + grid-template-columns: 1fr 320px; + gap: 24px; + align-items: start; +} + +.trick-main { display: flex; + flex-direction: column; gap: 24px; } -.footer-links a { - font-size: 0.9rem; - color: var(--color-text-secondary); - transition: color var(--transition-fast); +.trick-header-card { + background: var(--color-bg-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-lg); + padding: 24px; } -.footer-links a:hover { - color: var(--color-primary); -} - -@media (max-width: 768px) { - .nav-menu { - position: fixed; - top: 72px; - left: 0; - right: 0; - background: var(--color-bg); - border-bottom: 1px solid var(--color-border); - flex-direction: column; - padding: 16px; - gap: 4px; - transform: translateY(-100%); - opacity: 0; - visibility: hidden; - transition: all var(--transition-base); - } - - .nav-menu.active { - transform: translateY(0); - opacity: 1; - visibility: visible; - } - - .nav-link { - width: 100%; - padding: 12px 16px; - } - - .nav-cta { - display: none; - } - - .nav-toggle { - display: flex; - } - - .nav-toggle.active span:nth-child(1) { - transform: rotate(45deg) translate(5px, 5px); - } - - .nav-toggle.active span:nth-child(2) { - opacity: 0; - } - - .nav-toggle.active span:nth-child(3) { - transform: rotate(-45deg) translate(5px, -5px); - } - - .hero { - padding: 100px 20px 60px; - } - - .hero-buttons { - flex-direction: column; - } - - .btn { - width: 100%; - justify-content: center; - } - - .hero-stats { - gap: 24px; - } - - .stat-divider { - display: none; - } - - section { - padding: 60px 0; - } - - .features-grid, - .plugins-grid { - grid-template-columns: 1fr; - } - - .contact-card { - padding: 40px 24px; - } - - .guild-header { - flex-direction: column; - text-align: center; - } -} - -@keyframes float { - 0%, 100% { - transform: translateY(0); - } - 50% { - transform: translateY(-10px); - } -} - -@keyframes pulse { - 0%, 100% { - opacity: 1; - } - 50% { - opacity: 0.5; - } -} - -html { - scroll-padding-top: 80px; -} - -.trick-hero { - padding-top: 100px; - padding-bottom: 20px; - background: var(--gradient-hero); -} - -.breadcrumb { - display: flex; - align-items: center; - gap: 8px; - font-size: 0.9rem; - color: var(--color-text-muted); -} - -.breadcrumb a { - color: var(--color-text-secondary); - transition: color var(--transition-fast); -} - -.breadcrumb a:hover { - color: var(--color-primary); -} - -.breadcrumb span { - color: var(--color-text); -} - -.breadcrumb svg { - opacity: 0.5; -} - -.trick-content { - padding: 40px 0 80px; -} - -.trick-layout { - display: grid; - grid-template-columns: 1fr 320px; - gap: 24px; - align-items: start; -} - -.trick-main { - display: flex; - flex-direction: column; - gap: 24px; -} - -.trick-header-card { - background: var(--color-bg-card); - border: 1px solid var(--color-border); - border-radius: var(--radius-lg); - padding: 24px; -} - -.trick-title-row { - display: flex; - align-items: center; - gap: 16px; -} - -.trick-icon { - width: 56px; - height: 56px; - display: flex; - align-items: center; - justify-content: center; - background: rgba(255, 149, 0, 0.1); - border-radius: var(--radius-md); +.trick-title-row { + display: flex; + align-items: center; + gap: 16px; +} + +.trick-icon { + width: 56px; + height: 56px; + display: flex; + align-items: center; + justify-content: center; + background: rgba(255, 149, 0, 0.1); + border-radius: var(--radius-md); color: var(--color-primary); } @@ -1212,53 +1118,6 @@ html { color: var(--color-text-muted); } -.btn-full { - width: 100%; - justify-content: center; -} - -@media (max-width: 900px) { - .trick-layout { - grid-template-columns: 1fr; - } - - .trick-sidebar { - position: static; - } -} - -@media (max-width: 768px) { - .trick-title-row { - flex-direction: column; - text-align: center; - } - - .trick-badges { - justify-content: center; - } - - .breadcrumb { - flex-wrap: wrap; - justify-content: center; - } -} -.page-header { - padding-top: 140px; - padding-bottom: 60px; - background: var(--gradient-hero); -} - -.header-content { - text-align: center; -} - -.header-subtitle { - font-size: 1.1rem; - color: var(--color-text-secondary); - max-width: 600px; - margin: 0 auto; -} - .commands-content { padding: 60px 0 100px; } @@ -1407,19 +1266,195 @@ html { animation: fadeIn 0.2s ease; } +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(-5px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +@keyframes float { + 0%, 100% { + transform: translateY(0); + } + 50% { + transform: translateY(-10px); + } +} + +@keyframes pulse { + 0%, 100% { + opacity: 1; + } + 50% { + opacity: 0.5; + } +} + +html { + scroll-padding-top: 80px; +} + +@media (max-width: 900px) { + .trick-layout { + grid-template-columns: 1fr; + } + + .trick-sidebar { + position: static; + } +} + @media (max-width: 768px) { - .command { - font-size: 0.85rem; + .container { + padding: 0 16px; } - .param .tooltip, - .cmd .tooltip { - left: auto; + .nav-menu { + position: fixed; + top: 72px; + left: 0; right: 0; - min-width: 250px; + background: var(--color-bg); + border-bottom: 1px solid var(--color-border); + flex-direction: column; + padding: 16px; + gap: 4px; + transform: translateY(-100%); + opacity: 0; + visibility: hidden; + transition: all var(--transition-base); + } + + .nav-menu.active { + transform: translateY(0); + opacity: 1; + visibility: visible; + } + + .nav-link { + width: 100%; + padding: 12px 16px; + } + + .nav-cta { + display: none; + } + + .nav-toggle { + display: flex; + } + + .nav-toggle.active span:nth-child(1) { + transform: rotate(45deg) translate(5px, 5px); + } + + .nav-toggle.active span:nth-child(2) { + opacity: 0; + } + + .nav-toggle.active span:nth-child(3) { + transform: rotate(-45deg) translate(5px, -5px); + } + + .hero { + padding: 100px 20px 60px; + } + + .hero-buttons { + flex-direction: column; + } + + .btn { + width: 100%; + justify-content: center; + } + + .hero-stats { + gap: 24px; + } + + .stat-divider { + display: none; + } + + section { + padding: 60px 0; + } + + .features-grid, + .plugins-grid { + grid-template-columns: 1fr; + } + + .contact-card { + padding: 40px 24px; + } + + .guild-header { + flex-direction: column; + text-align: center; + } + + .trick-title-row { + flex-direction: column; + text-align: center; + } + + .trick-badges { + justify-content: center; + } + + .breadcrumb { + flex-wrap: wrap; + justify-content: center; } .command-block { padding: 16px; } + + .command { + font-size: 0.85rem; + } + + .cmd, .param { + position: relative; + cursor: pointer; + } + + .tooltip { + display: none; + position: fixed !important; + left: 50% !important; + top: 50% !important; + transform: translate(-50%, -50%) !important; + max-width: 90vw !important; + width: auto !important; + min-width: 280px !important; + white-space: normal !important; + z-index: 10000 !important; + box-shadow: 0 10px 40px rgba(0, 0, 0, 0.8) !important; + } + + .cmd.active .tooltip, + .param.active .tooltip { + display: block !important; + } + + .mobile-overlay { + display: none; + position: fixed; + inset: 0; + background: rgba(0, 0, 0, 0.7); + z-index: 9999; + } + + .mobile-overlay.active { + display: block; + } } \ No newline at end of file diff --git a/src/main/resources/webpage-internal/js/main.js b/src/main/resources/webpage-internal/js/main.js index 5f00531..8ac2321 100644 --- a/src/main/resources/webpage-internal/js/main.js +++ b/src/main/resources/webpage-internal/js/main.js @@ -1,7 +1,19 @@ document.addEventListener('DOMContentLoaded', () => { + initNavigation(); + initParticles(); + initSmoothScroll(); + initAnimations(); + initCounters(); + initMobileTooltips(); + initConsoleMessage(); +}); + +function initNavigation() { const navToggle = document.querySelector('.nav-toggle'); const navMenu = document.querySelector('.nav-menu'); const navLinks = document.querySelectorAll('.nav-link'); + const navbar = document.querySelector('.navbar'); + const sections = document.querySelectorAll('section[id]'); navToggle?.addEventListener('click', () => { navToggle.classList.toggle('active'); @@ -15,8 +27,6 @@ document.addEventListener('DOMContentLoaded', () => { }); }); - const sections = document.querySelectorAll('section[id]'); - function updateActiveLink() { const scrollY = window.scrollY; @@ -36,10 +46,6 @@ document.addEventListener('DOMContentLoaded', () => { }); } - window.addEventListener('scroll', updateActiveLink); - - const navbar = document.querySelector('.navbar'); - function updateNavbar() { if (window.scrollY > 50) { navbar?.classList.add('scrolled'); @@ -48,10 +54,11 @@ document.addEventListener('DOMContentLoaded', () => { } } + window.addEventListener('scroll', updateActiveLink); window.addEventListener('scroll', updateNavbar); -}); +} -function createParticles() { +function initParticles() { const particlesContainer = document.getElementById('particles'); if (!particlesContainer) return; @@ -105,9 +112,7 @@ function createParticles() { document.head.appendChild(style); } -document.addEventListener('DOMContentLoaded', createParticles); - -document.addEventListener('DOMContentLoaded', () => { +function initSmoothScroll() { document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function(e) { const href = this.getAttribute('href'); @@ -124,9 +129,9 @@ document.addEventListener('DOMContentLoaded', () => { } }); }); -}); +} -document.addEventListener('DOMContentLoaded', () => { +function initAnimations() { const observerOptions = { threshold: 0.1, rootMargin: '0px 0px -50px 0px' @@ -156,7 +161,7 @@ document.addEventListener('DOMContentLoaded', () => { } `; document.head.appendChild(style); -}); +} function animateCounter(element, target, duration = 2000) { let start = 0; @@ -175,7 +180,7 @@ function animateCounter(element, target, duration = 2000) { updateCounter(); } -document.addEventListener('DOMContentLoaded', () => { +function initCounters() { const statsObserver = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { @@ -198,8 +203,68 @@ document.addEventListener('DOMContentLoaded', () => { if (heroStats) { statsObserver.observe(heroStats); } +} + +function initMobileTooltips() { + if (window.innerWidth > 768) return; + + let overlay = document.querySelector('.mobile-overlay'); + if (!overlay) { + overlay = document.createElement('div'); + overlay.className = 'mobile-overlay'; + document.body.appendChild(overlay); + } + + document.querySelectorAll('.cmd, .param').forEach(element => { + element.addEventListener('click', function(e) { + e.preventDefault(); + e.stopPropagation(); + + document.querySelectorAll('.cmd.active, .param.active').forEach(el => { + if (el !== this) el.classList.remove('active'); + }); + + const isActive = this.classList.toggle('active'); + + if (isActive) { + overlay.classList.add('active'); + } else { + overlay.classList.remove('active'); + } + }); + }); + + overlay.addEventListener('click', function() { + document.querySelectorAll('.cmd.active, .param.active').forEach(el => { + el.classList.remove('active'); + }); + overlay.classList.remove('active'); + }); + + document.addEventListener('keydown', function(e) { + if (e.key === 'Escape') { + document.querySelectorAll('.cmd.active, .param.active').forEach(el => { + el.classList.remove('active'); + }); + overlay.classList.remove('active'); + } + }); +} + +let resizeTimer; +window.addEventListener('resize', function() { + clearTimeout(resizeTimer); + resizeTimer = setTimeout(function() { + const overlay = document.querySelector('.mobile-overlay'); + if (overlay) { + overlay.remove(); + } + initMobileTooltips(); + }, 250); }); -console.log('%c🥭 MangoBot', 'font-size: 24px; font-weight: bold; color: #ff9500;'); -console.log('%cA versatile Discord bot by MangoRage', 'font-size: 14px; color: #a1a1aa;'); -console.log('%cJoin us: https://discord.mangorage.org/', 'font-size: 12px; color: #5865f2;'); +function initConsoleMessage() { + console.log('%c🥭 MangoBot', 'font-size: 24px; font-weight: bold; color: #ff9500;'); + console.log('%cA versatile Discord bot by MangoRage', 'font-size: 14px; color: #a1a1aa;'); + console.log('%cJoin us: https://discord.mangorage.org/', 'font-size: 12px; color: #5865f2;'); +} \ No newline at end of file