diff --git a/README.md b/README.md index 1a8869f..e2c943a 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# Nexory.org +# nexory.dev Website for this organisation, informations and more \ No newline at end of file diff --git a/public/dashboard/home.css b/public/dashboard/home.css index 8879138..ca37243 100644 --- a/public/dashboard/home.css +++ b/public/dashboard/home.css @@ -92,11 +92,7 @@ body { width: 0%; background: linear-gradient(90deg, var(--color-grad-2), var(--color-grad-3)); border-radius: 99px; - animation: load-bar 1.2s ease forwards; -} - -@keyframes load-bar { - to { width: 100%; } + transition: width 0.35s ease; } /* -- Hero Section -- */ diff --git a/public/dashboard/home.js b/public/dashboard/home.js index 8feb888..24972f5 100644 --- a/public/dashboard/home.js +++ b/public/dashboard/home.js @@ -1,36 +1,73 @@ /* -- React Preloader -- */ - -const { useEffect, useRef } = React; +const { useEffect, useRef, useState } = React; function Preloader() { const ref = useRef(null); + const progressRef = useRef(0); + const [progress, setProgress] = useState(0); useEffect(() => { - function showPage() { - ref.current.classList.add('hidden'); + function advance(value) { + if (value > progressRef.current) { + progressRef.current = value; + setProgress(value); + } + } - setTimeout(() => { - document.getElementById('page').classList.remove('page-hidden'); - startAnimations(); - }, 500); + advance(5); + + const resources = document.querySelectorAll( + 'link[rel="stylesheet"], script[src], img[src]' + ); + const expectedCount = resources.length; + let loadedCount = 0; + + let observer; + try { + observer = new PerformanceObserver((list) => { + loadedCount += list.getEntries().length; + if (expectedCount > 0) { + const pct = Math.min(85, Math.round((loadedCount / expectedCount) * 85)); + advance(pct); + } + }); + observer.observe({ type: 'resource', buffered: true }); + } catch (_) {} + + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', () => advance(25), { once: true }); + } else { + advance(25); } - function trigger() { - setTimeout(showPage, 1300); + function finishLoading() { + if (observer) observer.disconnect(); + advance(100); + setTimeout(() => { + if (ref.current) ref.current.classList.add('hidden'); + setTimeout(() => { + document.getElementById('page').classList.remove('page-hidden'); + startAnimations(); + }, 500); + }, 450); } if (document.readyState === 'complete') { - trigger(); + setTimeout(finishLoading, 200); } else { - window.addEventListener('load', trigger, { once: true }); + window.addEventListener('load', () => setTimeout(finishLoading, 200), { once: true }); } + + return () => { + if (observer) observer.disconnect(); + }; }, []); return (
-
Nexory.Org
+
nexory.dev
-
+
); @@ -42,7 +79,7 @@ ReactDOM.createRoot(document.getElementById('preloader-root')).render( @@ -33,7 +33,7 @@
-

Nexory.Org

+

nexory.dev

Open source projects · Python, JavaScript, PHP and more

diff --git a/public/footer/footer.css b/public/footer/footer.css index 8b13789..a7d2844 100644 --- a/public/footer/footer.css +++ b/public/footer/footer.css @@ -1 +1,118 @@ +/* -- Footer -- */ + +.footer { + border-top: 1px solid var(--color-border); + background: var(--color-bg-surface); + font-family: 'Fira Code', monospace; + color: var(--color-text); +} + +.footer-container { + display: flex; + flex-wrap: wrap; + gap: 3rem; + justify-content: space-between; + align-items: flex-start; + max-width: 1100px; + margin: 0 auto; + padding: 3rem 2rem 2rem; +} + +/* -- Brand -- */ + +.footer-brand { + display: flex; + flex-direction: column; + gap: 0.6rem; + max-width: 260px; +} + +.footer-logo { + font-size: 1.2rem; + font-weight: 600; + background: linear-gradient(135deg, var(--color-grad-1) 0%, var(--color-grad-2) 35%, var(--color-grad-3) 70%, var(--color-grad-4) 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.footer-tagline { + font-size: 0.78rem; + color: var(--color-text-muted); + margin: 0; + line-height: 1.6; +} + +/* -- Sections -- */ + +.footer-section { + display: flex; + flex-direction: column; + gap: 0.75rem; +} + +.footer-section-title { + font-size: 0.72rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.1em; + color: var(--color-text-muted); + margin: 0 0 0.25rem; +} + +.footer-nav-list { + list-style: none; + margin: 0; + padding: 0; + display: flex; + flex-direction: column; + gap: 0.55rem; +} + +.footer-nav-list li a { + text-decoration: none; + color: var(--color-text-muted); + font-size: 0.85rem; + transition: color 0.25s ease; +} + +.footer-nav-list li a:hover { + color: var(--color-accent); +} + +/* -- Social link -- */ + +.footer-social-link { + display: inline-flex; + align-items: center; + gap: 0.45rem; +} + +/* -- Bottom bar -- */ + +.footer-bottom { + border-top: 1px solid var(--color-border-subtle); + text-align: center; + padding: 1rem 2rem; +} + +.footer-bottom p { + margin: 0; + font-size: 0.78rem; + color: var(--color-text-muted); +} + +/* -- Responsive -- */ + +@media (max-width: 640px) { + .footer-container { + flex-direction: column; + gap: 2rem; + padding: 2rem 1.25rem 1.5rem; + } + + .footer-brand { + max-width: 100%; + } +} diff --git a/public/footer/footer.php b/public/footer/footer.php index 8b13789..d078615 100644 --- a/public/footer/footer.php +++ b/public/footer/footer.php @@ -1 +1,37 @@ + \ No newline at end of file diff --git a/public/init.php b/public/init.php index b624490..49af192 100644 --- a/public/init.php +++ b/public/init.php @@ -36,7 +36,7 @@ $rawHost = (string)($_SERVER['HTTP_HOST'] ?? ''); $cookieHost = (string)parse_url(($secure ? 'https' : 'http') . '://' . $rawHost, PHP_URL_HOST); -$allowedCookieBaseDomains = ['nexory.org']; +$allowedCookieBaseDomains = ['nexory.dev']; if ($cookieHost !== '' && filter_var($cookieHost, FILTER_VALIDATE_IP) === false) { foreach ($allowedCookieBaseDomains as $baseDomain) { diff --git a/public/language.php b/public/language.php index 8094b83..4767dfe 100644 --- a/public/language.php +++ b/public/language.php @@ -106,14 +106,20 @@ function t($key) { 'nav.github' => 'Github', 'nav.contact' => 'Kontakt', 'nav.language_switcher' => 'Sprachwechsel', - 'home.title' => 'Nexory.Org', + 'home.title' => 'nexory.dev', + 'footer.tagline' => 'Open-Source-Projekte · Python, JavaScript, PHP und mehr', + 'footer.nav_heading' => 'Navigation', + 'footer.links_heading' => 'Links', ], 'en' => [ 'nav.home' => 'Home', 'nav.github' => 'Github', 'nav.contact' => 'Contact', 'nav.language_switcher' => 'Language Switcher', - 'home.title' => 'Nexory.Org', + 'home.title' => 'nexory.dev', + 'footer.tagline' => 'Open source projects · Python, JavaScript, PHP and more', + 'footer.nav_heading' => 'Navigation', + 'footer.links_heading' => 'Links', ] ];