refactor: split parts into standalone components

This commit is contained in:
草师傅 2025-07-20 13:44:20 +08:00
parent 498155fea3
commit d9f04f1a88
Signed by: gb
GPG key ID: 43330A030E2D6478
7 changed files with 73 additions and 66 deletions

View file

@ -8,6 +8,8 @@ import Meta from "../components/helper/head/Meta.astro";
import { siteConfig } from "../config";
import Logo from '../assets/mercury.svg'
import Statistics from "../components/Statistics.astro";
import Navbar from "../components/Navbar.astro";
interface Props {
title: string;
@ -20,9 +22,6 @@ interface Props {
const noscript = siteConfig.noClientJavaScript
const statisticsEnabled = siteConfig.siteAnalytics.enabled
const statisticsType = siteConfig.siteAnalytics.type
const umamiConfig = siteConfig.siteAnalytics.umami
const goatCounterConfig = siteConfig.siteAnalytics.goatcounter
const defaultTitle = siteConfig.title
const formattedRootPath = defaultTitle.toLowerCase().replace(/\s+/g, '-');
@ -31,7 +30,6 @@ const path = formattedRootPath + (relativePath === '/' ? '' : relativePath)
const pageTitle = (relativePath === '/' ? defaultTitle : `${Astro.props.title} - ${defaultTitle}`)
const navBarItems = siteConfig.navBarItems
const customFooter = siteConfig.customFooter
const nekoType = siteConfig.neko?.type
@ -54,13 +52,7 @@ const { title = pageTitle, author = siteConfig.defaultAuthor.name,description =
<div class="terminal-path">
{path}
</div>
<nav class="nav">
<a href="/" class="home">~</a>
<a href="/blog">Blog</a>
{navBarItems.map((item) => <a href={item.link}>{item.text}</a>)}
</nav>
<Navbar />
<Search />
<div class="content-box">
@ -80,33 +72,7 @@ const { title = pageTitle, author = siteConfig.defaultAuthor.name,description =
<p>Powered by <a href="https://git.gb0.dev/gb/mercury" target="_blank"><Logo width={16} height={16} /> mercury</a></p>
</div>
</footer>
{statisticsEnabled && statisticsType === 'umami' && (
<script
is:inline
defer
src={`https://${umamiConfig.instanceDomain}/script.js`}
data-website-id={umamiConfig.websiteId}
></script>
)}
{statisticsEnabled && statisticsType === 'goatcounter' && (
<>
{noscript ? (
<img src={`https://${goatCounterConfig.instanceDomain}/count?p=/${Astro.url.pathname}`} alt="Analytics" />
) : (
<>
<script
is:inline
async
data-goatcounter={`https://${goatCounterConfig.instanceDomain}/count`}
src={`https://${goatCounterConfig.instanceDomain}/count.js`}
></script>
<noscript>
<img src={`https://${goatCounterConfig.instanceDomain}/count?p=/${Astro.url.pathname}`} alt="Analytics" />
</noscript>
</>
)}
</>
)}
{statisticsEnabled && <Statistics/>}
{ (siteConfig.neko.enabled && !noscript) &&
<>
<script is:inline define:vars={{ nekoType }}>