Files
vvveb-cms/websites/linktree-test/index.html
2026-05-18 12:45:57 +08:00

168 lines
9.1 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-TW" =""="" =""><head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>nudoragon | 個人連結</title>
<meta name="description" content="nudoragon 的個人品牌與社交連結入口。包含部落格、專案與聯絡資訊。">
<link rel="icon" id="favicon" href="avatar.png">
<link rel="stylesheet" href="style.css">
<!-- Google Fonts -->
<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@400;600;700&amp;family=Outfit:wght@400;600;800&amp;display=swap" rel="stylesheet">
<!-- Font Awesome -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style id="vvvebjs-styles">#footer-section {
display: inline;
}
#social-icons {
display: inline-flex;
}
</style></head>
<body>
<div class="background-blobs">
<div class="blob blob-1"></div>
<div class="blob blob-2"></div>
<div class="blob blob-3"></div>
</div>
<main class="container">
<header class="profile animate-fade-in" id="profile-header">
<div class="avatar-container">
<img src="avatar.png" alt="nudoragon Avatar" class="avatar">
<div class="avatar-ring"></div>
</div>
<h1 class="name">nudoragon</h1>
<p class="bio">設計與開發的探索者 | 建立數位世界的連結</p>
</header>
<section class="links-container" id="links-container">
<a href="mailto:hi@l.nudoragon.com" class="link-card animate-slide-up" style="animation-delay: 0.1s;" target="_blank" rel="noopener noreferrer">
<div class="link-icon"><i class="fas fa-envelope"></i></div>
<div class="link-content">
<span class="link-title">聯絡我</span>
<span class="link-desc">透過電子郵件與我聯繫</span>
</div>
<div class="link-arrow"><i class="fas fa-chevron-right"></i></div>
</a>
<a href="https://element.nudoragon.com" class="link-card animate-slide-up" style="animation-delay: 0.2s;" target="_blank" rel="noopener noreferrer">
<div class="link-icon"><i class="fas fa-comments"></i></div>
<div class="link-content">
<span class="link-title">Element (Matrix)</span>
<span class="link-desc">透過 Matrix 協議與我通訊servermatrix.nudoragon.com</span>
</div>
<div class="link-arrow"><i class="fas fa-chevron-right"></i></div>
</a>
<a href="https://blog.nudoragon.com" class="link-card animate-slide-up" style="animation-delay: 0.3s;" target="_blank" rel="noopener noreferrer">
<div class="link-icon"><i class="fas fa-blog"></i></div>
<div class="link-content">
<span class="link-title">個人部落格</span>
<span class="link-desc">分享技術開發與生活紀錄</span>
</div>
<div class="link-arrow"><i class="fas fa-chevron-right"></i></div>
</a>
<a href="https://code.nudoragon.com" class="link-card animate-slide-up" style="animation-delay: 0.4s;" target="_blank" rel="noopener noreferrer">
<div class="link-icon"><i class="fas fa-code-branch"></i></div>
<div class="link-content">
<span class="link-title">Gitea</span>
<span class="link-desc">查看我的開源專案與代碼</span>
</div>
<div class="link-arrow"><i class="fas fa-chevron-right"></i></div>
</a>
<a href="https://status.nudoragon.com" class="link-card animate-slide-up" style="animation-delay: 0.5s;" target="_blank" rel="noopener noreferrer">
<div class="link-icon"><i class="fas fa-heartbeat"></i></div>
<div class="link-content">
<span class="link-title">系統狀態</span>
<span class="link-desc">監控各項服務運行狀況</span>
</div>
<div class="link-arrow"><i class="fas fa-chevron-right"></i></div>
</a>
<a href="https://auth.nudoragon.com" class="link-card animate-slide-up" style="animation-delay: 0.6s;" target="_blank" rel="noopener noreferrer">
<div class="link-icon"><i class="fas fa-user-shield"></i></div>
<div class="link-content">
<span class="link-title">NudoAuth 透透龍女</span>
<span class="link-desc">統一身份認證與授權服務</span>
</div>
<div class="link-arrow"><i class="fas fa-chevron-right"></i></div>
</a>
</section>
<footer class="footer animate-fade-in" id="footer-section">
<div class="social-icons" id="social-icons">
<a href="https://www.instagram.com/nudoragon/" title="Instagram" target="_blank" rel="noopener noreferrer"><i class="fab fa-instagram"></i></a>
<a href="https://www.threads.net/@nudoragon" title="Threads - 使用 @ 符號替代" target="_blank" rel="noopener noreferrer"><i class="fas fa-at"></i></a>
<a href="https://www.facebook.com/nudoragon/" title="Facebook" target="_blank" rel="noopener noreferrer"><i class="fab fa-facebook"></i></a>
<a href="https://twitter.com/nudoragon" title="Twitter" target="_blank" rel="noopener noreferrer"><i class="fab fa-twitter"></i></a>
<a href="https://bsky.app/profile/nudoragon.bsky.social" title="Bluesky - 使用雲朵圖標替代" target="_blank" rel="noopener noreferrer"><i class="fas fa-cloud"></i></a>
<a href="https://discord.gg/nHjUJJXGVG" title="Discord" target="_blank" rel="noopener noreferrer"><i class="fab fa-discord"></i></a>
<a href="mailto:hi@l.nudoragon.com" title="Mail" target="_blank" rel="noopener noreferrer"><i class="fas fa-envelope"></i></a>
</div>
<p class="copyright" id="copyright-text">© 2026 nudoragon. All rights reserved.</p>
</footer>
</main>
<script src="config.js"></script>
<script>
document.addEventListener('DOMContentLoaded', () => {
// Set Favicon
document.getElementById('favicon').href = CONFIG.profile.favicon;
// Render Profile
const header = document.getElementById('profile-header');
header.innerHTML = `
<div class="avatar-container">
<img src="${CONFIG.profile.avatar}" alt="${CONFIG.profile.name} Avatar" class="avatar">
<div class="avatar-ring"></div>
</div>
<h1 class="name">${CONFIG.profile.name}</h1>
<p class="bio">${CONFIG.profile.bio}</p>
`;
// Render Links - 支援可見性和排序
const linksContainer = document.getElementById('links-container');
const visibleLinks = CONFIG.links
.filter(link => link.visible !== false)
.sort((a, b) => (a.order || 0) - (b.order || 0));
linksContainer.innerHTML = visibleLinks.map(link => `
<a href="${link.url}" class="link-card animate-slide-up" style="animation-delay: ${link.delay};" target="_blank" rel="noopener noreferrer">
<div class="link-icon"><i class="${link.icon}"></i></div>
<div class="link-content">
<span class="link-title">${link.title}</span>
<span class="link-desc">${link.desc}</span>
</div>
<div class="link-arrow"><i class="fas fa-chevron-right"></i></div>
</a>
`).join('');
// Render Socials - 支援可見性和排序
const socialIcons = document.getElementById('social-icons');
const visibleSocials = CONFIG.socials
.filter(social => social.visible !== false)
.sort((a, b) => (a.order || 0) - (b.order || 0));
socialIcons.innerHTML = visibleSocials.map(social => `
<a href="${social.url}" title="${social.name}${social.note ? ' - ' + social.note : ''}" target="_blank" rel="noopener noreferrer"><i class="${social.icon}"></i></a>
`).join('');
// Render Copyright
document.getElementById('copyright-text').innerHTML = `&copy; ${CONFIG.profile.copyrightYear} ${CONFIG.profile.name}. All rights reserved.`;
});
</script>
</body></html>