From 9ae820a7969fa0737a201e97edb0c0b48a18809f Mon Sep 17 00:00:00 2001 From: grtsinry43 Date: Fri, 25 Apr 2025 16:15:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=BB=E9=A1=B5=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .prettierrc | 3 +- astro.config.mjs | 2 +- package.json | 4 +- pnpm-lock.yaml | 76 +++++++++++++ public/grotesk.woff2 | Bin 0 -> 22376 bytes src/components/Footer.svelte | 4 + src/components/Header.svelte | 180 +++++++++++++++++++++++++++++++ src/components/MirrorList.svelte | 158 +++++++++++++++++++++++++++ src/components/Test.svelte | 2 +- src/layouts/BasicLayout.astro | 32 ++++++ src/layouts/Layout.astro | 34 +++--- src/pages/index.astro | 10 +- src/styles/global.css | 87 ++++++++++++++- 13 files changed, 566 insertions(+), 26 deletions(-) create mode 100644 public/grotesk.woff2 create mode 100644 src/components/Footer.svelte create mode 100644 src/components/Header.svelte create mode 100644 src/components/MirrorList.svelte create mode 100644 src/layouts/BasicLayout.astro diff --git a/.prettierrc b/.prettierrc index 3fe4b27..689b694 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,6 +1,7 @@ { "plugins": [ - "prettier-plugin-astro" + "prettier-plugin-astro", + "prettier-plugin-tailwindcss" ], "overrides": [ { diff --git a/astro.config.mjs b/astro.config.mjs index 72cf507..7772610 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -11,5 +11,5 @@ export default defineConfig({ plugins: [tailwindcss()] }, - integrations: [svelte()] + integrations: [svelte()], }); \ No newline at end of file diff --git a/package.json b/package.json index 24b8b81..a3cdc07 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "@skeletonlabs/skeleton-svelte": "^1.2.1", "@tailwindcss/vite": "^4.1.4", "astro": "^5.7.5", + "lucide-svelte": "^0.503.0", "svelte": "^5.28.2", "tailwindcss": "^4.1.4", "typescript": "^5.8.3" @@ -24,6 +25,7 @@ "eslint": "^9.25.1", "eslint-plugin-astro": "^1.3.1", "prettier": "3.5.3", - "prettier-plugin-astro": "0.14.1" + "prettier-plugin-astro": "0.14.1", + "prettier-plugin-tailwindcss": "^0.6.11" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 41ec4d5..b1f7378 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,6 +23,9 @@ importers: astro: specifier: ^5.7.5 version: 5.7.5(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(typescript@5.8.3)(yaml@2.7.1) + lucide-svelte: + specifier: ^0.503.0 + version: 0.503.0(svelte@5.28.2) svelte: specifier: ^5.28.2 version: 5.28.2 @@ -51,6 +54,9 @@ importers: prettier-plugin-astro: specifier: 0.14.1 version: 0.14.1 + prettier-plugin-tailwindcss: + specifier: ^0.6.11 + version: 0.6.11(prettier-plugin-astro@0.14.1)(prettier@3.5.3) packages: @@ -1554,6 +1560,11 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lucide-svelte@0.503.0: + resolution: {integrity: sha512-oT1idMbgJKCCLWI4U7bdUYUZqxS78fiTGJuKGZ5u0NJNyuiUErDu3G7sXkYpfDwwspeid7gZSjrlJbTINEfErw==} + peerDependencies: + svelte: ^3 || ^4 || ^5.0.0-next.42 + magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} @@ -1841,6 +1852,61 @@ packages: resolution: {integrity: sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==} engines: {node: ^14.15.0 || >=16.0.0} + prettier-plugin-tailwindcss@0.6.11: + resolution: {integrity: sha512-YxaYSIvZPAqhrrEpRtonnrXdghZg1irNg4qrjboCXrpybLWVs55cW2N3juhspVJiO0JBvYJT8SYsJpc8OQSnsA==} + engines: {node: '>=14.21.3'} + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@trivago/prettier-plugin-sort-imports': '*' + '@zackad/prettier-plugin-twig': '*' + prettier: ^3.0 + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-import-sort: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-marko: '*' + prettier-plugin-multiline-arrays: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-sort-imports: '*' + prettier-plugin-style-order: '*' + prettier-plugin-svelte: '*' + peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true + '@prettier/plugin-pug': + optional: true + '@shopify/prettier-plugin-liquid': + optional: true + '@trivago/prettier-plugin-sort-imports': + optional: true + '@zackad/prettier-plugin-twig': + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-multiline-arrays: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-sort-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true + prettier@3.5.3: resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} engines: {node: '>=14'} @@ -4025,6 +4091,10 @@ snapshots: lru-cache@10.4.3: {} + lucide-svelte@0.503.0(svelte@5.28.2): + dependencies: + svelte: 5.28.2 + magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -4495,6 +4565,12 @@ snapshots: prettier: 3.5.3 sass-formatter: 0.7.9 + prettier-plugin-tailwindcss@0.6.11(prettier-plugin-astro@0.14.1)(prettier@3.5.3): + dependencies: + prettier: 3.5.3 + optionalDependencies: + prettier-plugin-astro: 0.14.1 + prettier@3.5.3: {} prismjs@1.30.0: {} diff --git a/public/grotesk.woff2 b/public/grotesk.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ce2ec213814a4ebf4262a18e7fa995e2ffa23017 GIT binary patch literal 22376 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 literal 0 HcmV?d00001 diff --git a/src/components/Footer.svelte b/src/components/Footer.svelte new file mode 100644 index 0000000..f1f9520 --- /dev/null +++ b/src/components/Footer.svelte @@ -0,0 +1,4 @@ +
+ © {new Date().getFullYear()} 我的镜像站. All rights reserved. | + 免责声明 +
\ No newline at end of file diff --git a/src/components/Header.svelte b/src/components/Header.svelte new file mode 100644 index 0000000..db5c406 --- /dev/null +++ b/src/components/Header.svelte @@ -0,0 +1,180 @@ + + +
+
+
+ + + + + + + +
+ + + + + + + + +
+
+
+ + + + {#if mobileMenuOpen} +
+
+ 首页 + 浏览 + 热门 + 最新 + 关于 + + +
+ + +
+
+
+ {/if} +
+ + \ No newline at end of file diff --git a/src/components/MirrorList.svelte b/src/components/MirrorList.svelte new file mode 100644 index 0000000..82a2a4c --- /dev/null +++ b/src/components/MirrorList.svelte @@ -0,0 +1,158 @@ + + +
+
+

镜像列表

+ + +
+
+ +
+ +
+ 排序: + +
+ + +
+ + + {#if loading} +
+
+
+ + {:else if error} +
+

加载失败: {error}

+ +
+ + {:else} +
+ + + + + + + + + + + {#each filteredMirrors as mirror (mirror.name)} + + + + + + + {:else} + + + + {/each} + +
镜像名称状态大小最后更新时间
{mirror.name} + + {mirror.status === 'success' ? '正常' : mirror.status === 'failed' ? '失败' : mirror.status === 'syncing' ? '同步中' : mirror.status} + + {mirror.size || 'N/A'}{mirror.lastUpdated}
未找到符合条件的镜像
+
+

共 {filteredMirrors.length} 个镜像

+ {/if} +
+
\ No newline at end of file diff --git a/src/components/Test.svelte b/src/components/Test.svelte index 58e5aa4..5fdb3b8 100644 --- a/src/components/Test.svelte +++ b/src/components/Test.svelte @@ -1,4 +1,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/layouts/BasicLayout.astro b/src/layouts/BasicLayout.astro new file mode 100644 index 0000000..dda9134 --- /dev/null +++ b/src/layouts/BasicLayout.astro @@ -0,0 +1,32 @@ +--- +// src/layouts/BaseLayout.astro +import Header from "../components/Header.svelte"; // 引入 Svelte 头部组件 +import Footer from "../components/Footer.svelte"; // 引入 Svelte 页脚组件 +import "@/styles/global.css"; // 引入全局样式(包含 Tailwind 和 Skeleton 基础) + +// 设置 HTML 的 data-theme 属性,让 Skeleton 主题生效 +// 注意:你可能需要 client:load 来确保 store 在客户端可用,或者在 中直接设置 +// 一个简单的示例,实际可能更复杂,取决于你的主题切换实现 +// const currentTheme = $theme; // 如果在 Astro 中直接读取 store +--- + + + + + + + + {Astro.props.title || "我的镜像站"} + + + +
+
+ +
+