From 3713a972aef59a80b7db1b502b1351529676cc3e Mon Sep 17 00:00:00 2001
From: ZZY <2450266535@qq.com>
Date: Wed, 28 May 2025 16:00:29 +0800
Subject: [PATCH] init zzyxyz_vue project with basic cards show
---
.env | 1 +
.env.development | 0
.env.production | 0
.gitignore | 3 +
index.html | 10 +-
package-lock.json | 907 +++++++++++++++++++--
package.json | 6 +-
public/favicon.ico | Bin 4286 -> 0 bytes
src/App.vue | 80 +-
src/apis/cards/CardType.ts | 17 +
src/apis/cards/Cards.ts | 56 ++
src/apis/request.ts | 11 +
src/assets/base.css | 86 --
src/assets/home.png | Bin 0 -> 6740 bytes
src/assets/icons/Git-Icon-1788C.svg | 1 +
src/assets/icons/beian.png | Bin 0 -> 1403 bytes
src/assets/icons/home.png | Bin 0 -> 6740 bytes
src/assets/icons/qq.png | Bin 0 -> 11492 bytes
src/assets/icons/qq_link.png | Bin 0 -> 13784 bytes
src/assets/icons/wechat.png | Bin 0 -> 12891 bytes
src/assets/icons/wechat_link.png | Bin 0 -> 18818 bytes
src/assets/logo.svg | 1 -
src/assets/main.css | 37 +-
src/components/AppFooter.vue | 85 ++
src/components/AppHero.vue | 22 +
src/components/AppNavbar.vue | 15 +
src/components/TheWelcome.vue | 95 ---
src/components/WelcomeItem.vue | 87 --
src/components/cards/CardsContainer.vue | 18 +
src/components/cards/CardsShow.vue | 18 +
src/components/cards/OneCard.vue | 36 +
src/components/icons/IconBeian.vue | 3 +
src/components/icons/IconCommunity.vue | 7 -
src/components/icons/IconDocumentation.vue | 7 -
src/components/icons/IconEcosystem.vue | 7 -
src/components/icons/IconGit.vue | 3 +
src/components/icons/IconQQ.vue | 3 +
src/components/icons/IconQQLink.vue | 3 +
src/components/icons/IconSupport.vue | 7 -
src/components/icons/IconTooling.vue | 19 -
src/components/icons/IconWechat.vue | 3 +
src/components/icons/IconWechatLink.vue | 3 +
src/components/utils/ImgModal.vue | 29 +
src/components/utils/LegalAlert.vue | 74 ++
src/router/index.ts | 22 +-
src/views/AboutView.vue | 15 -
src/views/CardView.vue | 17 +
src/views/ErrorView.vue | 110 +++
src/views/HomeView.vue | 18 +-
vite.config.ts | 16 +-
50 files changed, 1426 insertions(+), 532 deletions(-)
create mode 100644 .env
create mode 100644 .env.development
create mode 100644 .env.production
delete mode 100644 public/favicon.ico
create mode 100644 src/apis/cards/CardType.ts
create mode 100644 src/apis/cards/Cards.ts
create mode 100644 src/apis/request.ts
delete mode 100644 src/assets/base.css
create mode 100644 src/assets/home.png
create mode 100644 src/assets/icons/Git-Icon-1788C.svg
create mode 100644 src/assets/icons/beian.png
create mode 100644 src/assets/icons/home.png
create mode 100644 src/assets/icons/qq.png
create mode 100644 src/assets/icons/qq_link.png
create mode 100644 src/assets/icons/wechat.png
create mode 100644 src/assets/icons/wechat_link.png
delete mode 100644 src/assets/logo.svg
create mode 100644 src/components/AppFooter.vue
create mode 100644 src/components/AppHero.vue
create mode 100644 src/components/AppNavbar.vue
delete mode 100644 src/components/TheWelcome.vue
delete mode 100644 src/components/WelcomeItem.vue
create mode 100644 src/components/cards/CardsContainer.vue
create mode 100644 src/components/cards/CardsShow.vue
create mode 100644 src/components/cards/OneCard.vue
create mode 100644 src/components/icons/IconBeian.vue
delete mode 100644 src/components/icons/IconCommunity.vue
delete mode 100644 src/components/icons/IconDocumentation.vue
delete mode 100644 src/components/icons/IconEcosystem.vue
create mode 100644 src/components/icons/IconGit.vue
create mode 100644 src/components/icons/IconQQ.vue
create mode 100644 src/components/icons/IconQQLink.vue
delete mode 100644 src/components/icons/IconSupport.vue
delete mode 100644 src/components/icons/IconTooling.vue
create mode 100644 src/components/icons/IconWechat.vue
create mode 100644 src/components/icons/IconWechatLink.vue
create mode 100644 src/components/utils/ImgModal.vue
create mode 100644 src/components/utils/LegalAlert.vue
delete mode 100644 src/views/AboutView.vue
create mode 100644 src/views/CardView.vue
create mode 100644 src/views/ErrorView.vue
diff --git a/.env b/.env
new file mode 100644
index 0000000..93c1ab8
--- /dev/null
+++ b/.env
@@ -0,0 +1 @@
+VITE_BASE_URL=/api
\ No newline at end of file
diff --git a/.env.development b/.env.development
new file mode 100644
index 0000000..e69de29
diff --git a/.env.production b/.env.production
new file mode 100644
index 0000000..e69de29
diff --git a/.gitignore b/.gitignore
index 8ee54e8..d3a5520 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,3 +28,6 @@ coverage
*.sw?
*.tsbuildinfo
+
+# https://cn.vitejs.dev/guide/env-and-mode.html#env-variables
+.env.*.local
diff --git a/index.html b/index.html
index 9e5fc8f..40d34ea 100644
--- a/index.html
+++ b/index.html
@@ -1,10 +1,10 @@
-
+
-
-
-
- Vite App
+
+
+
+ zzyxyz
diff --git a/package-lock.json b/package-lock.json
index b0e7d16..30833e9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,14 +1,18 @@
{
"name": "zzyxyz_vue",
- "version": "0.0.0",
+ "version": "0.0.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "zzyxyz_vue",
- "version": "0.0.0",
+ "version": "0.0.1",
"dependencies": {
+ "@tailwindcss/vite": "^4.1.7",
+ "axios": "^1.9.0",
+ "daisyui": "^5.0.38",
"pinia": "^3.0.1",
+ "tailwindcss": "^4.1.7",
"vue": "^3.5.13",
"vue-router": "^4.5.0"
},
@@ -39,7 +43,6 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
"integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
- "dev": true,
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.24"
@@ -648,7 +651,6 @@
"cpu": [
"ppc64"
],
- "dev": true,
"optional": true,
"os": [
"aix"
@@ -664,7 +666,6 @@
"cpu": [
"arm"
],
- "dev": true,
"optional": true,
"os": [
"android"
@@ -680,7 +681,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"optional": true,
"os": [
"android"
@@ -696,7 +696,6 @@
"cpu": [
"x64"
],
- "dev": true,
"optional": true,
"os": [
"android"
@@ -712,7 +711,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"optional": true,
"os": [
"darwin"
@@ -728,7 +726,6 @@
"cpu": [
"x64"
],
- "dev": true,
"optional": true,
"os": [
"darwin"
@@ -744,7 +741,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"optional": true,
"os": [
"freebsd"
@@ -760,7 +756,6 @@
"cpu": [
"x64"
],
- "dev": true,
"optional": true,
"os": [
"freebsd"
@@ -776,7 +771,6 @@
"cpu": [
"arm"
],
- "dev": true,
"optional": true,
"os": [
"linux"
@@ -792,7 +786,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"optional": true,
"os": [
"linux"
@@ -808,7 +801,6 @@
"cpu": [
"ia32"
],
- "dev": true,
"optional": true,
"os": [
"linux"
@@ -824,7 +816,6 @@
"cpu": [
"loong64"
],
- "dev": true,
"optional": true,
"os": [
"linux"
@@ -840,7 +831,6 @@
"cpu": [
"mips64el"
],
- "dev": true,
"optional": true,
"os": [
"linux"
@@ -856,7 +846,6 @@
"cpu": [
"ppc64"
],
- "dev": true,
"optional": true,
"os": [
"linux"
@@ -872,7 +861,6 @@
"cpu": [
"riscv64"
],
- "dev": true,
"optional": true,
"os": [
"linux"
@@ -888,7 +876,6 @@
"cpu": [
"s390x"
],
- "dev": true,
"optional": true,
"os": [
"linux"
@@ -904,7 +891,6 @@
"cpu": [
"x64"
],
- "dev": true,
"optional": true,
"os": [
"linux"
@@ -920,7 +906,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"optional": true,
"os": [
"netbsd"
@@ -936,7 +921,6 @@
"cpu": [
"x64"
],
- "dev": true,
"optional": true,
"os": [
"netbsd"
@@ -952,7 +936,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"optional": true,
"os": [
"openbsd"
@@ -968,7 +951,6 @@
"cpu": [
"x64"
],
- "dev": true,
"optional": true,
"os": [
"openbsd"
@@ -984,7 +966,6 @@
"cpu": [
"x64"
],
- "dev": true,
"optional": true,
"os": [
"sunos"
@@ -1000,7 +981,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"optional": true,
"os": [
"win32"
@@ -1016,7 +996,6 @@
"cpu": [
"ia32"
],
- "dev": true,
"optional": true,
"os": [
"win32"
@@ -1032,7 +1011,6 @@
"cpu": [
"x64"
],
- "dev": true,
"optional": true,
"os": [
"win32"
@@ -1282,11 +1260,21 @@
"node": ">=12"
}
},
+ "node_modules/@isaacs/fs-minipass": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
+ "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
+ "dependencies": {
+ "minipass": "^7.0.4"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.8",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
"integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
- "dev": true,
"dependencies": {
"@jridgewell/set-array": "^1.2.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
@@ -1300,7 +1288,6 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
- "dev": true,
"engines": {
"node": ">=6.0.0"
}
@@ -1309,7 +1296,6 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
- "dev": true,
"engines": {
"node": ">=6.0.0"
}
@@ -1323,7 +1309,6 @@
"version": "0.3.25",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
"integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
- "dev": true,
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
"@jridgewell/sourcemap-codec": "^1.4.14"
@@ -1439,7 +1424,6 @@
"cpu": [
"arm"
],
- "dev": true,
"optional": true,
"os": [
"android"
@@ -1452,7 +1436,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"optional": true,
"os": [
"android"
@@ -1465,7 +1448,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"optional": true,
"os": [
"darwin"
@@ -1478,7 +1460,6 @@
"cpu": [
"x64"
],
- "dev": true,
"optional": true,
"os": [
"darwin"
@@ -1491,7 +1472,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"optional": true,
"os": [
"freebsd"
@@ -1504,7 +1484,6 @@
"cpu": [
"x64"
],
- "dev": true,
"optional": true,
"os": [
"freebsd"
@@ -1517,7 +1496,6 @@
"cpu": [
"arm"
],
- "dev": true,
"optional": true,
"os": [
"linux"
@@ -1530,7 +1508,6 @@
"cpu": [
"arm"
],
- "dev": true,
"optional": true,
"os": [
"linux"
@@ -1543,7 +1520,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"optional": true,
"os": [
"linux"
@@ -1556,7 +1532,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"optional": true,
"os": [
"linux"
@@ -1569,7 +1544,6 @@
"cpu": [
"loong64"
],
- "dev": true,
"optional": true,
"os": [
"linux"
@@ -1582,7 +1556,6 @@
"cpu": [
"ppc64"
],
- "dev": true,
"optional": true,
"os": [
"linux"
@@ -1595,7 +1568,6 @@
"cpu": [
"riscv64"
],
- "dev": true,
"optional": true,
"os": [
"linux"
@@ -1608,7 +1580,6 @@
"cpu": [
"riscv64"
],
- "dev": true,
"optional": true,
"os": [
"linux"
@@ -1621,7 +1592,6 @@
"cpu": [
"s390x"
],
- "dev": true,
"optional": true,
"os": [
"linux"
@@ -1634,7 +1604,6 @@
"cpu": [
"x64"
],
- "dev": true,
"optional": true,
"os": [
"linux"
@@ -1647,7 +1616,6 @@
"cpu": [
"x64"
],
- "dev": true,
"optional": true,
"os": [
"linux"
@@ -1660,7 +1628,6 @@
"cpu": [
"arm64"
],
- "dev": true,
"optional": true,
"os": [
"win32"
@@ -1673,7 +1640,6 @@
"cpu": [
"ia32"
],
- "dev": true,
"optional": true,
"os": [
"win32"
@@ -1686,7 +1652,6 @@
"cpu": [
"x64"
],
- "dev": true,
"optional": true,
"os": [
"win32"
@@ -1710,6 +1675,253 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/@tailwindcss/node": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.7.tgz",
+ "integrity": "sha512-9rsOpdY9idRI2NH6CL4wORFY0+Q6fnx9XP9Ju+iq/0wJwGD5IByIgFmwVbyy4ymuyprj8Qh4ErxMKTUL4uNh3g==",
+ "dependencies": {
+ "@ampproject/remapping": "^2.3.0",
+ "enhanced-resolve": "^5.18.1",
+ "jiti": "^2.4.2",
+ "lightningcss": "1.30.1",
+ "magic-string": "^0.30.17",
+ "source-map-js": "^1.2.1",
+ "tailwindcss": "4.1.7"
+ }
+ },
+ "node_modules/@tailwindcss/oxide": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.7.tgz",
+ "integrity": "sha512-5SF95Ctm9DFiUyjUPnDGkoKItPX/k+xifcQhcqX5RA85m50jw1pT/KzjdvlqxRja45Y52nR4MR9fD1JYd7f8NQ==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "detect-libc": "^2.0.4",
+ "tar": "^7.4.3"
+ },
+ "engines": {
+ "node": ">= 10"
+ },
+ "optionalDependencies": {
+ "@tailwindcss/oxide-android-arm64": "4.1.7",
+ "@tailwindcss/oxide-darwin-arm64": "4.1.7",
+ "@tailwindcss/oxide-darwin-x64": "4.1.7",
+ "@tailwindcss/oxide-freebsd-x64": "4.1.7",
+ "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.7",
+ "@tailwindcss/oxide-linux-arm64-gnu": "4.1.7",
+ "@tailwindcss/oxide-linux-arm64-musl": "4.1.7",
+ "@tailwindcss/oxide-linux-x64-gnu": "4.1.7",
+ "@tailwindcss/oxide-linux-x64-musl": "4.1.7",
+ "@tailwindcss/oxide-wasm32-wasi": "4.1.7",
+ "@tailwindcss/oxide-win32-arm64-msvc": "4.1.7",
+ "@tailwindcss/oxide-win32-x64-msvc": "4.1.7"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-android-arm64": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.7.tgz",
+ "integrity": "sha512-IWA410JZ8fF7kACus6BrUwY2Z1t1hm0+ZWNEzykKmMNM09wQooOcN/VXr0p/WJdtHZ90PvJf2AIBS/Ceqx1emg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-darwin-arm64": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.7.tgz",
+ "integrity": "sha512-81jUw9To7fimGGkuJ2W5h3/oGonTOZKZ8C2ghm/TTxbwvfSiFSDPd6/A/KE2N7Jp4mv3Ps9OFqg2fEKgZFfsvg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-darwin-x64": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.7.tgz",
+ "integrity": "sha512-q77rWjEyGHV4PdDBtrzO0tgBBPlQWKY7wZK0cUok/HaGgbNKecegNxCGikuPJn5wFAlIywC3v+WMBt0PEBtwGw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-freebsd-x64": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.7.tgz",
+ "integrity": "sha512-RfmdbbK6G6ptgF4qqbzoxmH+PKfP4KSVs7SRlTwcbRgBwezJkAO3Qta/7gDy10Q2DcUVkKxFLXUQO6J3CRvBGw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.7.tgz",
+ "integrity": "sha512-OZqsGvpwOa13lVd1z6JVwQXadEobmesxQ4AxhrwRiPuE04quvZHWn/LnihMg7/XkN+dTioXp/VMu/p6A5eZP3g==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm64-gnu": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.7.tgz",
+ "integrity": "sha512-voMvBTnJSfKecJxGkoeAyW/2XRToLZ227LxswLAwKY7YslG/Xkw9/tJNH+3IVh5bdYzYE7DfiaPbRkSHFxY1xA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm64-musl": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.7.tgz",
+ "integrity": "sha512-PjGuNNmJeKHnP58M7XyjJyla8LPo+RmwHQpBI+W/OxqrwojyuCQ+GUtygu7jUqTEexejZHr/z3nBc/gTiXBj4A==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-x64-gnu": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.7.tgz",
+ "integrity": "sha512-HMs+Va+ZR3gC3mLZE00gXxtBo3JoSQxtu9lobbZd+DmfkIxR54NO7Z+UQNPsa0P/ITn1TevtFxXTpsRU7qEvWg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-x64-musl": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.7.tgz",
+ "integrity": "sha512-MHZ6jyNlutdHH8rd+YTdr3QbXrHXqwIhHw9e7yXEBcQdluGwhpQY2Eku8UZK6ReLaWtQ4gijIv5QoM5eE+qlsA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-wasm32-wasi": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.7.tgz",
+ "integrity": "sha512-ANaSKt74ZRzE2TvJmUcbFQ8zS201cIPxUDm5qez5rLEwWkie2SkGtA4P+GPTj+u8N6JbPrC8MtY8RmJA35Oo+A==",
+ "bundleDependencies": [
+ "@napi-rs/wasm-runtime",
+ "@emnapi/core",
+ "@emnapi/runtime",
+ "@tybys/wasm-util",
+ "@emnapi/wasi-threads",
+ "tslib"
+ ],
+ "cpu": [
+ "wasm32"
+ ],
+ "optional": true,
+ "dependencies": {
+ "@emnapi/core": "^1.4.3",
+ "@emnapi/runtime": "^1.4.3",
+ "@emnapi/wasi-threads": "^1.0.2",
+ "@napi-rs/wasm-runtime": "^0.2.9",
+ "@tybys/wasm-util": "^0.9.0",
+ "tslib": "^2.8.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-win32-arm64-msvc": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.7.tgz",
+ "integrity": "sha512-HUiSiXQ9gLJBAPCMVRk2RT1ZrBjto7WvqsPBwUrNK2BcdSxMnk19h4pjZjI7zgPhDxlAbJSumTC4ljeA9y0tEw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-win32-x64-msvc": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.7.tgz",
+ "integrity": "sha512-rYHGmvoHiLJ8hWucSfSOEmdCBIGZIq7SpkPRSqLsH2Ab2YUNgKeAPT1Fi2cx3+hnYOrAb0jp9cRyode3bBW4mQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/vite": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.7.tgz",
+ "integrity": "sha512-tYa2fO3zDe41I7WqijyVbRd8oWT0aEID1Eokz5hMT6wShLIHj3yvwj9XbfuloHP9glZ6H+aG2AN/+ZrxJ1Y5RQ==",
+ "dependencies": {
+ "@tailwindcss/node": "4.1.7",
+ "@tailwindcss/oxide": "4.1.7",
+ "tailwindcss": "4.1.7"
+ },
+ "peerDependencies": {
+ "vite": "^5.2.0 || ^6"
+ }
+ },
"node_modules/@tsconfig/node22": {
"version": "22.0.2",
"resolved": "https://registry.npmjs.org/@tsconfig/node22/-/node22-22.0.2.tgz",
@@ -1719,8 +1931,7 @@
"node_modules/@types/estree": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
- "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
- "dev": true
+ "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ=="
},
"node_modules/@types/jsdom": {
"version": "21.1.7",
@@ -1743,7 +1954,7 @@
"version": "22.15.21",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.21.tgz",
"integrity": "sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"undici-types": "~6.21.0"
}
@@ -2544,6 +2755,21 @@
"node": ">=12"
}
},
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "node_modules/axios": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz",
+ "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==",
+ "dependencies": {
+ "follow-redirects": "^1.15.6",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -2641,6 +2867,18 @@
"node": ">=8"
}
},
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/callsites": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -2711,6 +2949,14 @@
"node": ">= 16"
}
},
+ "node_modules/chownr": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
+ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -2729,6 +2975,17 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/commander": {
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
@@ -2818,6 +3075,14 @@
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
},
+ "node_modules/daisyui": {
+ "version": "5.0.38",
+ "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-5.0.38.tgz",
+ "integrity": "sha512-RsLsdePT/4ZU0N+vWivR/zJyAL9U9EeRtbis3K3VDvewrqY0NOFYBh6ib3n9GfN3Wb+FHwP80ae1qOA6ONWvyw==",
+ "funding": {
+ "url": "https://github.com/saadeghi/daisyui?sponsor=1"
+ }
+ },
"node_modules/data-urls": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz",
@@ -2915,6 +3180,35 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
+ "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@@ -2966,6 +3260,18 @@
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
"dev": true
},
+ "node_modules/enhanced-resolve": {
+ "version": "5.18.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz",
+ "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==",
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
"node_modules/entities": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz",
@@ -2987,17 +3293,57 @@
"url": "https://github.com/sponsors/antfu"
}
},
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/es-module-lexer": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
"integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==",
"dev": true
},
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/esbuild": {
"version": "0.25.5",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz",
"integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==",
- "dev": true,
"hasInstallScript": true,
"bin": {
"esbuild": "bin/esbuild"
@@ -3488,6 +3834,25 @@
"integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
"dev": true
},
+ "node_modules/follow-redirects": {
+ "version": "1.15.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
+ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
"node_modules/foreground-child": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
@@ -3504,6 +3869,20 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/form-data": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
+ "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "es-set-tostringtag": "^2.1.0",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/fs-extra": {
"version": "11.3.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
@@ -3522,7 +3901,6 @@
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "dev": true,
"hasInstallScript": true,
"optional": true,
"os": [
@@ -3532,6 +3910,14 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/gensync": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@@ -3541,6 +3927,41 @@
"node": ">=6.9.0"
}
},
+ "node_modules/get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/get-stream": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz",
@@ -3601,11 +4022,21 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "dev": true
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
},
"node_modules/graphemer": {
"version": "1.4.0",
@@ -3622,6 +4053,42 @@
"node": ">=8"
}
},
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -3900,7 +4367,6 @@
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz",
"integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==",
- "dev": true,
"bin": {
"jiti": "lib/jiti-cli.mjs"
}
@@ -4092,6 +4558,223 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/lightningcss": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz",
+ "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==",
+ "dependencies": {
+ "detect-libc": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "lightningcss-darwin-arm64": "1.30.1",
+ "lightningcss-darwin-x64": "1.30.1",
+ "lightningcss-freebsd-x64": "1.30.1",
+ "lightningcss-linux-arm-gnueabihf": "1.30.1",
+ "lightningcss-linux-arm64-gnu": "1.30.1",
+ "lightningcss-linux-arm64-musl": "1.30.1",
+ "lightningcss-linux-x64-gnu": "1.30.1",
+ "lightningcss-linux-x64-musl": "1.30.1",
+ "lightningcss-win32-arm64-msvc": "1.30.1",
+ "lightningcss-win32-x64-msvc": "1.30.1"
+ }
+ },
+ "node_modules/lightningcss-darwin-arm64": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz",
+ "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-darwin-x64": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz",
+ "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-freebsd-x64": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz",
+ "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm-gnueabihf": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz",
+ "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-gnu": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz",
+ "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-musl": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz",
+ "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-gnu": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz",
+ "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-musl": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz",
+ "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-arm64-msvc": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz",
+ "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-x64-msvc": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz",
+ "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
"node_modules/locate-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
@@ -4139,6 +4822,14 @@
"@jridgewell/sourcemap-codec": "^1.5.0"
}
},
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/memorystream": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
@@ -4170,6 +4861,25 @@
"node": ">=8.6"
}
},
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/minimatch": {
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
@@ -4189,16 +4899,40 @@
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
"integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
- "dev": true,
"engines": {
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/minizlib": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz",
+ "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==",
+ "dependencies": {
+ "minipass": "^7.1.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
"node_modules/mitt": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
"integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="
},
+ "node_modules/mkdirp": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
+ "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
+ "bin": {
+ "mkdirp": "dist/cjs/src/bin.js"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/mrmime": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
@@ -4694,6 +5428,11 @@
"integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
"dev": true
},
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ },
"node_modules/punycode": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
@@ -4764,7 +5503,6 @@
"version": "4.41.1",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.1.tgz",
"integrity": "sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==",
- "dev": true,
"dependencies": {
"@types/estree": "1.0.7"
},
@@ -5127,6 +5865,43 @@
"url": "https://opencollective.com/synckit"
}
},
+ "node_modules/tailwindcss": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.7.tgz",
+ "integrity": "sha512-kr1o/ErIdNhTz8uzAYL7TpaUuzKIE6QPQ4qmSdxnoX/lo+5wmUHQA6h3L5yIqEImSRnAAURDirLu/BgiXGPAhg=="
+ },
+ "node_modules/tapable": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz",
+ "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tar": {
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz",
+ "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==",
+ "dependencies": {
+ "@isaacs/fs-minipass": "^4.0.0",
+ "chownr": "^3.0.0",
+ "minipass": "^7.1.2",
+ "minizlib": "^3.0.1",
+ "mkdirp": "^3.0.1",
+ "yallist": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tar/node_modules/yallist": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
+ "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/tinybench": {
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
@@ -5143,7 +5918,6 @@
"version": "0.2.14",
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
"integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
- "dev": true,
"dependencies": {
"fdir": "^6.4.4",
"picomatch": "^4.0.2"
@@ -5159,7 +5933,6 @@
"version": "6.4.4",
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
"integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
- "dev": true,
"peerDependencies": {
"picomatch": "^3 || ^4"
},
@@ -5173,7 +5946,6 @@
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
- "dev": true,
"engines": {
"node": ">=12"
},
@@ -5334,7 +6106,7 @@
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
- "dev": true
+ "devOptional": true
},
"node_modules/unicorn-magic": {
"version": "0.3.0",
@@ -5406,7 +6178,6 @@
"version": "6.3.5",
"resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz",
"integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==",
- "dev": true,
"dependencies": {
"esbuild": "^0.25.0",
"fdir": "^6.4.4",
@@ -5586,7 +6357,6 @@
"version": "6.4.4",
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
"integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
- "dev": true,
"peerDependencies": {
"picomatch": "^3 || ^4"
},
@@ -5600,7 +6370,6 @@
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
- "dev": true,
"engines": {
"node": ">=12"
},
diff --git a/package.json b/package.json
index e90d899..c701dbe 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "zzyxyz_vue",
- "version": "0.0.0",
+ "version": "0.0.1",
"private": true,
"type": "module",
"scripts": {
@@ -14,7 +14,11 @@
"format": "prettier --write src/"
},
"dependencies": {
+ "@tailwindcss/vite": "^4.1.7",
+ "axios": "^1.9.0",
+ "daisyui": "^5.0.38",
"pinia": "^3.0.1",
+ "tailwindcss": "^4.1.7",
"vue": "^3.5.13",
"vue-router": "^4.5.0"
},
diff --git a/public/favicon.ico b/public/favicon.ico
deleted file mode 100644
index df36fcfb72584e00488330b560ebcf34a41c64c2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 4286
zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj
zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56
zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy
zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei
z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX
zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm
zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp=
zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8
zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO
z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3
z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD
zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6
z={Xwx{T%b6i9IjI)Ls)S{-*mq<@~R{?$}ZKjf;^k75i_}(2MXt}^SEBVg7AI@28
zo_uPg2V)_e-`2Ois=PYoe%9u*n9({PFR)OnHJPi{dNx>KxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S
diff --git a/src/App.vue b/src/App.vue
index 7905b05..a78fb6f 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,85 +1,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/apis/cards/CardType.ts b/src/apis/cards/CardType.ts
new file mode 100644
index 0000000..4d31e45
--- /dev/null
+++ b/src/apis/cards/CardType.ts
@@ -0,0 +1,17 @@
+export const schema = [
+ { name: 'title', label: '标题', type: 'input' },
+ { name: 'body', label: '内容', type: 'input' },
+ { name: 'jumpHref', label: '跳转链接', type: 'input' },
+ { name: 'btnText', label: '按钮内容', type: 'input' },
+ { name: 'btnHref', label: '按钮链接', type: 'input' },
+]
+
+export type CardType = {
+ title: string | null
+ body: string | null
+ jumpHref: string | null
+ imgSrc: string | null
+ imgAlt: string | null
+ btnText: string | null
+ btnHref: string | null
+}
diff --git a/src/apis/cards/Cards.ts b/src/apis/cards/Cards.ts
new file mode 100644
index 0000000..136610e
--- /dev/null
+++ b/src/apis/cards/Cards.ts
@@ -0,0 +1,56 @@
+import { type CardType } from './CardType'
+import request from '../request'
+
+const file_api = {
+ root_url: '/api',
+ cards: {
+ url: 'cards',
+ type: 'json',
+ home: 'home',
+ },
+}
+
+export function GetRealHref(href: string, user_name: string = '$') {
+ if (href.startsWith('$')) {
+ href = `/card${href.substring(1)}?user_name=${user_name}`
+ }
+ return href
+}
+
+export async function GetCardsData(cards: CardType[], url?: string) {
+ await request
+ .get(`files/cards/${url ? url : 'index-content.json'}`)
+ .then((response) => {
+ if (response.status != 200) {
+ throw new Error(`HTTP error! status: ${response.status}`)
+ // return null
+ }
+ return response.data
+ })
+ .then((jsonData) => {
+ // console.log(jsonData)
+ if (!jsonData || !cards) {
+ return null
+ }
+ cards.length = 0
+ jsonData.datas.forEach((i: CardType) => {
+ const item = { ...jsonData.default_item, ...i }
+ cards.push({
+ title: item.title,
+ body: item.intro,
+ jumpHref: item.url,
+ imgSrc: null,
+ imgAlt: null,
+ btnText: null,
+ btnHref: null,
+ })
+ })
+ })
+ .catch((error) => {
+ console.error('Error fetching data:', error)
+ })
+ .finally(function () {
+ // 总是会执行
+ console.log('finally', cards)
+ })
+}
diff --git a/src/apis/request.ts b/src/apis/request.ts
new file mode 100644
index 0000000..86d13df
--- /dev/null
+++ b/src/apis/request.ts
@@ -0,0 +1,11 @@
+import axios from 'axios'
+
+const request = axios.create({
+ baseURL: import.meta.env.VITE_BASE_URL,
+ timeout: 3000,
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+})
+
+export default request
diff --git a/src/assets/base.css b/src/assets/base.css
deleted file mode 100644
index 8816868..0000000
--- a/src/assets/base.css
+++ /dev/null
@@ -1,86 +0,0 @@
-/* color palette from */
-:root {
- --vt-c-white: #ffffff;
- --vt-c-white-soft: #f8f8f8;
- --vt-c-white-mute: #f2f2f2;
-
- --vt-c-black: #181818;
- --vt-c-black-soft: #222222;
- --vt-c-black-mute: #282828;
-
- --vt-c-indigo: #2c3e50;
-
- --vt-c-divider-light-1: rgba(60, 60, 60, 0.29);
- --vt-c-divider-light-2: rgba(60, 60, 60, 0.12);
- --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65);
- --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48);
-
- --vt-c-text-light-1: var(--vt-c-indigo);
- --vt-c-text-light-2: rgba(60, 60, 60, 0.66);
- --vt-c-text-dark-1: var(--vt-c-white);
- --vt-c-text-dark-2: rgba(235, 235, 235, 0.64);
-}
-
-/* semantic color variables for this project */
-:root {
- --color-background: var(--vt-c-white);
- --color-background-soft: var(--vt-c-white-soft);
- --color-background-mute: var(--vt-c-white-mute);
-
- --color-border: var(--vt-c-divider-light-2);
- --color-border-hover: var(--vt-c-divider-light-1);
-
- --color-heading: var(--vt-c-text-light-1);
- --color-text: var(--vt-c-text-light-1);
-
- --section-gap: 160px;
-}
-
-@media (prefers-color-scheme: dark) {
- :root {
- --color-background: var(--vt-c-black);
- --color-background-soft: var(--vt-c-black-soft);
- --color-background-mute: var(--vt-c-black-mute);
-
- --color-border: var(--vt-c-divider-dark-2);
- --color-border-hover: var(--vt-c-divider-dark-1);
-
- --color-heading: var(--vt-c-text-dark-1);
- --color-text: var(--vt-c-text-dark-2);
- }
-}
-
-*,
-*::before,
-*::after {
- box-sizing: border-box;
- margin: 0;
- font-weight: normal;
-}
-
-body {
- min-height: 100vh;
- color: var(--color-text);
- background: var(--color-background);
- transition:
- color 0.5s,
- background-color 0.5s;
- line-height: 1.6;
- font-family:
- Inter,
- -apple-system,
- BlinkMacSystemFont,
- 'Segoe UI',
- Roboto,
- Oxygen,
- Ubuntu,
- Cantarell,
- 'Fira Sans',
- 'Droid Sans',
- 'Helvetica Neue',
- sans-serif;
- font-size: 15px;
- text-rendering: optimizeLegibility;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
diff --git a/src/assets/home.png b/src/assets/home.png
new file mode 100644
index 0000000000000000000000000000000000000000..f683c56e792fc9814365b4697689895e78689db5
GIT binary patch
literal 6740
zcmY*edpy(s_n)~o<(5m7ON+1}%yQ==*O9xep=U9@yj
zjF?+;X_Z3O$fr^%ec$^1_1ojI$KE?Tm)E(x&g;CMyX@iSxCf#H0f9h!P)>GUAdrC0
z&Ra|bpqx)FNB}+r&UrZ=12vBvSOLBWojZo|5d&T+Vj;O8km5GV&c-LH^wa!#x^e>L
z>F2fN=fioI|G{dAkWbo)8!5zRdWq`Bc2!6WI^9z*wnwwoV6eN#BkD87k)HpADg>8m
zi@jA-(|cG=QbL#vYKgo()+Hq<^GN2Jvc^Ngwn^#{g0(;4!2^Dp71}4Xt9I+)X6aJj
z1FO{TJw>RwRB5^xR*Wai+r^XML3m)^Zl0Kh@~xYxr!?C^g#v{jNkK_)x(Hvi9lQx5
zga&rZu#YbNm#&@=JSIR*;aiEmR83N$tFE665_>6{bd+w3?Yvwr#0MP}*iW3zc#Zor
zABmfNSBVmm!wh$AEwF4@M3(+Kn42-`@uN%by9QmLQy6;&M|kQ$g4WX`pU&Trysu;;
znU*NW}hAzJI8FnYCf?gw-31h)ja~KU0w^^29ERZ93=I+;mvM*~^+zUa-
zb!9}dmPui2MZdF8`-C|-NxZ3&^tMT)PxxeQ_308H?5^j|ADy@{tpzTqQY5R5g@m=>
z>*yClhkC0rI>!C@s0)4KDaxJBLr<|Vni_u_!wu)&TGru^;lviojB#bAQ4yrkj-MtK
zcVJzDtN1XUYE2NlDRAP}%+FsDOK!+7ZYXhgD!*>UAM`p-qayP%a&DVQe<{PsmEPJZ1Kk!)dhoLo=;$>rCAYby!|
zox<9|@L?W%Sq)v?|B=|EDw!ht(%9^(4=08d#^%AtY#JQ0Cxr>=%Ioo5@|Z7GK20cv
z!|qd6row!%%5j^i#BpLZKrhA!+|g&wR%TM&vL`R~q|1Jn{n
z+3PTOs*`_)_b~6uvRb`IumHbr|N42q6P{A2;ZT<7Ft2Y}ZA>W;%TJSSDs*2ymri0>
z3#jTd8!I#IBJsgpTV1T=s&l#cHx`KGKzy!NzK#yTTBtK)O1a3s0cROkN%^gA<}@Qx
zDR^Ue-W{BlH|X53s>U6dIoIW>gaG7Ea{uL)jrrQ0{c?u|K_o-XoD`KjvHWcrt_;^6
zphMyi^f`9y6$!7_R|>^FM+E!8?8_riue+aEpK*!j@zX{2~w?}
zTyf6>(v)>1Usm;zYLAs(?`l0wbhWK26(qr2&hj<^#JOH%c@WVH3C3dR6^?zfH~
z!B4)3UmAm}waZzy*AO3?e<8TAx6GE>KVr-rJmpt^7FeSKSkn%WBVJ|m=En|pd)D`R
z`CeXZ_NqoxGWj!x9-$hfmc5K=jD}Aoogv6G!)bWsZHBbmThs`|&dky;7<*8$nkU}e
z$e|VnhiZ1OSip-mN^!V5`4R@#L&V`*TEvkc1?|@m#MW7S?uxoEc1D!aQZRCm6XaMj
z(>8YSuuC(Y;qv&G@lQ3T6IC-~`qoTgRc78zpWsl1*Zw)pVH%{1vqalrUcs_j73us<
z{T|w9m=6Y8pCr*V9b!n**72JTnhwpk=WM_T4|L2P*QrC`=6`IB^Q2JYhJ-)U%Tm`^
z1~gtD@wriFE_>Mou@xDTG1@=KfA(wdmx7?`Cf~1Gp!ApY{QUjx`M-aRu5(|uNcx+l
z_peoxw!sJf#dX*Ti@|jWcf{v%V^srDQ5Z|J>bqtJjA)fZE=vkGoSoMZ-1oQ-(&mLa
zv_GH)#kTa7;bo(?4;uqNUlm+wMQexNkYj1oT8@4dNZCb*n^D+?#{h*@mGK7_mCkv<
z7>u-V^&{i6D5=amWwI9**oAa~B%I>b^=cl)zcix
z;(x1*NmI|=&JbktK367sd?Bqf>u9ipPZ$@cHauXbRUv&5$AkA4_ozyw)Yg4+N%PWe
z^fWuvch-R&9V5M8k3o+Wk0qr-A9^asw
zNhEH1UwIkF2UM+z|7y;SaY<|N!Muy$G~^8sf3u^{mG9U6x8F>ejOH}>VeXtdFXFoK1U+_Z%#kmD5qPM|MyMZF+m$XN<|;+N<0<|?3Dq*
z7IsuJsl|-E6Df_nkUNRb?PFbz5&l@x&jid~|21(Bh{=Zj`3Htfg%9^CP96qwE=NX_
zJ_hWV1qX2XYs05)Q{92KW5ksR+T4EUR9@nNdAIUZ9yPn$VwSx<^}=D}7Tqdq5N7HM
zhlkHU5Bt(=MJly#?XEnM>I$UmP@E>+`+<$RwX06!XQK#>C^)@?^1E$%&lmIHvb;f<
zw(AjK$z=L`M1sSM3*~g+&}mAjUnoaqNm#j4QE=2I_=OSkQ?Etmon5QyKA7hozOK~(
zIT^IJ_VwZKUFeN<5Y5KSkG3^h4Vq~
zK)}y{ioa}NpBD}`n3uGY&N3+psow9KHFXH-a9Cp;tdSqVaUQ%n_Z!$c6GNmpd&$D0
z1NF2EwH#;X=~J9Z(&)S-IBnsRo4PfuF(v%`tvrR>Ge6xPbk6RAcMRD%ZTet-j8VyX
z&1TiJyH@qMil?3wovfo>sX)Q!=5g&OY6Is!XOWeoPxuOZ_{uq6$8?5;%yWuji?bXz
zr5t`z8L)C^_{o8Jjweu_ZY%@Kfui!JN%4AFSd+&8ZKif5BhEhAIeaY^`f`o^FrAosx+(#j23e-K`cnleD4!
z#J!m5J2l1pdK#x4=oDXmYrmkCjW^R5NT;PJmj)Y@zNEs2X=R9aBz^Ou)rWKMp6%-u
zYY6)>D7<@*q{Bd6PuVc9VrBc^_Fb#4!r9V37K}e-$<*D|0q&8LseOpA8vi-ELD%;mjxGeGU+o&2m$VNho0HMK;T#y7?6QR`Xd%
zFRxp#ynT^Zn|I&t(LQB#Dp(nF?Ai|Hx-ltn5FdxkD(f{jxm8T~j
z_Tt)?zFXhY2Qu`Zr|(z$P>t?*r`T`L%p%x}8gCk1c6*z{;EL6p!Qm{ol9Sl+a+=1c
zdRmAf8KZX?&sprhfWB-KX&b76@QnBxb4)W|8Bf^kC0ZA&)V}q>aCRx@t_?BSJhxjW
z!OF6-H4K2J?dq4RxLWf$J0a+wYlB|Cs16@L%l$h9&
zh*95)LkhXeO;AHcHkp`i~3415|s?}kML?wkm4
z5rDz}3DsB`r6Qk5@cY6+SlKdlVHg~h?;Lf-UXazlEIa0dA;HK~LgJzsy_Mc}fZHE^
z{7!#U0)30#3Pn~kNDUql0`w&iJsE#R4480~$nrgspdN=>Ent-m4R5O3RzY+Z{1rx1
z4Bz-D(@Tis<>ja2regX
zK!Ce4raf3$eRl#SSQuuR3c96GR=Im8f?ghxOOnGE++IYnDg2UVYJt)>+oU&({*%+B
z8hAbPu&(%iPb@THiW(Yx2;wqi1CW|jfY}Y2usNFQ?%=4E4RNu9*=B1%$rb%FMT6mX
z!N`@nRHrgzCEcMI`8Fgif?k#w^)xj^Btv)XpdFQ9`zUivdXNzcs{8$39G`An&wMhh
zO&bu&aIEycQDI}9O%0YmLfNlep;NdUBL1hA4@90X-=SPC9Ou!X=ApY0;
z?s24YkgIV6nS!i4JN|kXPoN&vz%#5RL7RZ!&@;{tvnMu@Rl(zOtlxsHsb$$v4#(qT
zP{_>v!&ZeI5}-}HTCG{&FfaK&TwH?fJ8R?ZKG_up>V%uw3z3U`JRjZZAW(W99OyJK
zL)`!(JlXU>{XCHVdr8md4&RhxJ^aAGnqgjb-Of86b;aSedgQW99HVy+YraEp`1_ZT
z{Xm5G_fQ$l8*0**E{P7fJ@oX6N-Oas3Vmz7i*hy+6?q^a-ID5zp3y4nHnS|U6dFL
z)buKWXk%yh>W8ic8v9_+ZYY#9lGWdh)X&XzGVeHs!Q$GLzbAwrkSiO^s
zrj?ibEIQ5f=he^IZ3oqM7*Ed|_0eN@iS0;Zjq{Jtz6$Ip1$OJbenX}?an|;2Ztn55
zZ?xMP^&JflDi-yjP$p#*bzMB_)a4z{zt5{V8Y0rt5n;zPUA1%&TYKWp)W_S|)ez21
zp-vxm$AVt#Y42FB!H<EqCHgvJ8rZWJCvO8{6ztQV9u9B3^NMx&=)6lwUdHu2_)u
zKiQL5pwM&zyVOD+*gg`+4TIla0Z?)>g|^kB$esJpAm1Epg6O>U9Y@UN&zP(6dXN`>M1*H!RlgeZtJ+`
z0Nw{XbNS?nZ*q=yAs0@JBr=wh%G?0vRfE6G{Ne)fA$Fg@+`RYS5-Ce?aqOnhL3*nj
ztM+!dada)-AA17-<13Kwl?Lx_m=41Kg^t3sjPy$XN1C_U)Tb=rxOmAzX=w^=Rc{5j
z5ebGoSpF6dg}$4M#+?e>Q*#sW;i8JFCKPO$=;WRqic=6s|M>nMl#|qPd*){H`Jfgc
zBweW%7`u|jCH`_PeMCTI`Q2wI$6^y4$ou-xQlXe)DUwn#J#f|OQ0fA^ee)+b?XXS;
zlUQKYss+vOAY;P5&{}pPO=SL@xs+@4l!E&dZ~sjwpGjlwbuv!
zrPcE3vXd^&fH|kCdFDG3iQ6x1A9;
z57PKqY1?+y0Rdm!tDh~4`EW=$);z*b!pQ&85CoF)NnvMaD=n`;PoZlyqnXO>z^Rnw
zv{W+ls`6;SBCx#RAeV<*PMl|q^JCKLtkLzL>*+x;U^n<#(QJ7j4xm!MMJq2Phj)jO
zKe@j0ae~KulC6EAA8J0-Rz%2~x-qG<=T5Vp0kiSy0_sgR`G?w``w>row(6P&Hg?Ob
zZFFr7c$W>Yrn7lgT)|Kt965ACFSkHVW1sKQmgm-`3ukbJH||w24(qUaFtwX5$9?jh
z8y6gkhod$OhM2>=+o7Lmt^Htq=BB{v&|DY=9-5mG^Y-Av
zN-2XN7KB^s+`396IPk1r0Sng&Fud8;s1o|_Qp{L9)pn;xsHj9=@U&TF7$`XKOsI52
zc!nTRK^P}CZWdOXa54(ugtge^7f-y^IM-Hs=7-{Xb6uJLM1jEEZw;1vuI>oc0{{B@
z=?7`wx6dAdx4&zC>elngQ@47
zizeCQ<)szRWm10I;&VOUxb%C@#L#Yn)AL54P|%#)Dw2{H0ug7ikB<4t$4VAJIe2%_
zK*@~qn9Wm{20Dn%b7YMHT9x?w5L@y1+~*{?4hYdB@_h*~zNf99-3(v{W$NO92E7{Y
zs_oThvb7XnhH)XPeMgwNd_cE|kz$rStO2KtE8*Vp!vr)P0SMzBbEvN!eFWx-1@Y5V
z1g2k0M`Zjr%;kNd`7mMUxT2_`zbs5_EjaHn5)xA2T~
z?tcKnx1Z|q`kNW6^@u=ztKhw*J*NU?R5TzhvP)<$Kc~MEHA)nHsR^@pDrv@;_XV(|Vcy#uDvT`O$=N;D1Hp9FGJEPj>B0r>Z!jnA8$M+r
zVOt_9$5!QMp$T6QTyFPGIitID5W_zT7%Ys;t~!nA2?wa0-}-I{%uFCQdpO!O?q9%s
zX=ylaXqa7@T0FN_>zW)Aae
zmer&q|L6sq^S29G3dB?Z0b}F#uBRckaQJIZ`K9!yL**cs3;-d`WpibMP~$@oqhMDq
z|Bq1V?sFP6fmRgAy^B4mtAjN*71re6jVhpnE;M?+@=30Lvu83S?9d=NHr@B*7(gR
zIN{;Eq_CAlo?TdxA677h!=3^#T8JD*5i03r)N0S-hk&)A7ZK;`-`uW
zoUcO~!Hm#%x5MS8_Y>#;-8=ad<2Teh$s)AQx!i#?USu>n+*e7`U1xAj(EoXJMOmA8
za@I%BVD!m$`~d+8!G%04d83(LRtK?-rKJ0{!8IF=;BTjJCs`G_)xK%vjM_(3F6+
z5%aas5>}BS+>pMI^uyLYIgN;H{iXgD+YlPWeX)#);Dx*!;YFb$hR1P*kZSZ*e}J-J5%O~|Nn24&wpI_D=GC_*LVIu
O0-@~P?3#}SUHl&ycFb)6
literal 0
HcmV?d00001
diff --git a/src/assets/icons/Git-Icon-1788C.svg b/src/assets/icons/Git-Icon-1788C.svg
new file mode 100644
index 0000000..5bf444b
--- /dev/null
+++ b/src/assets/icons/Git-Icon-1788C.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/beian.png b/src/assets/icons/beian.png
new file mode 100644
index 0000000000000000000000000000000000000000..2a13ba2f4b92c4b531945a66e3e35e3ead3739f9
GIT binary patch
literal 1403
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
O0-@~P?3#}SUHl&ycFb)6
literal 0
HcmV?d00001
diff --git a/src/assets/icons/qq.png b/src/assets/icons/qq.png
new file mode 100644
index 0000000000000000000000000000000000000000..6789b43f9c6a49397cc8021e0c051a830e836c3c
GIT binary patch
literal 11492
zcmY*=gXsEA20lEhQ000zPnrg-X0D&sakRP&>i8kAEQcQ_*@(ivNX?Iwk-B_W@dJPoKjJj@ClMp3k>EI^9@#
znCqx%PpBdqlW#>#@PX$E?J2D{=SQCVddc%HBu&{r%z~TkJDp#cpm01AO7WLX6@z4#jblCVbA`CU8To3E!j28^E5OLki3qAJ2K{okXNfK;ld|Oq4Eyu7I*G4amCp
z7=C~StTtCAb)r1Dei}lTb)QamXg%5Bh|PoCdhs?C3na_JnWOxd
zfn>hKw{{1?7C$@-}aZMw{s{BmSLCLw;I%Bv1ADkAsmxlnigKgL5c`_Cxz^oA`
zMldg*0GSSx3l$)T2hGlH4?U?$`PUX`@|(kPQN=p5=?2Ik$r=9
z(LM$VXY5fvn52?jdPKl8T06w0AH6NuvUssUZ}t5N!U@)(qy0AA=8{Ra>+b!hfl3VX
z#Hl;draRqltx5MefLV4Trp^!oNLTGy0d%!G$ae)VI
zJv~b&vf`$JA~L2Fz>S(^$ZZKuWq3dUN$wb^rG=X8DzaL!LQz7T^pKf=Ak$HAz-<)HLNoFzL;Bre
zhAQU=FU=Ptc+d=JV@F1)`NL$LqVEOW1R$YV
zC`RhoP
;Xj(?rX_FyQo2|EK$3=Ta
z%4HzL`o)V}ZnwFZ?pNEZC=bqd7$GkC#Wvr255-n*G|s*zl~70HKcnYQRD;QL#Lx_-
zLW4}-9bXsatixd&La5|=N%{Elj2G&6XKr-Y$fMU{IHQ6BZQ
zAYlsdSgx`OFp{E?PGJACBwFZEr%BUg8BV3<6`>Ay@Br`fSI@hy%Yyvs93||Ci`qe
zg@wyRY8})N;OLGvKe27A&xGlmXa;-uBmcq5uKQ@xh7YkHj2;LH`AG$x>ZR1P;yq(F
z=dJWhu6tC+p(cTx&guwo`L{Q8w_{8nz&IYRl=|KpGCE~XMP%A#avEW$HdAb_`dRll
zQ=~;8TYsZGICgTS+2^n5a%>I-&@ATX_X%u#l_xNulIISqEH27prFnGT#c9!=&woaV
zu)$l1nbK5{Bo>@VL-g#^X)Q2oMuLgp+F2bl1d-c&%ToHDvt>)D}Gl#9voMAW_A+QWvj+9R1D{zzC9)SK_jVaR9a=WK<)zREuYR>LLvZ1vs#pkjcb(rwH%%l=F
zyk~5GM5!vFJ;YSv=cB)o^O;3PYDBbO^J5?AZGJvWCAoHRZZ52PyJ_+tP451RjdW&i
zVI01%CFJh_J&qQ!kQng&Zif_OMRT@93X)$hGp!Te7(#)};o~VM_{E6tXD(?6D@9ce
zFe(A(+&TDt6}7M8@qJII&LZF^wMOVhFt$7JZ=Y&-GFS(1Nqzs<;0wsaJ_8A?`Jt
zj1E6Ki<~>ECmLh2cmNCDMudAfF51yI&UD7-w{ajwUhV;T9S%Vnq
z$Mbp6lpl&Qgz2FkFF;WmPKz{x(5BLST1Y-3^1#PcNv411%K>UC&&+8Ro6ShjWBa+w
z6>*eTk@wMexRK$|fZ!kEfOa8o;u>m5#UYBx@;U76{R|&zF{MWQNbgx*u3Lga>JE4-(
zM-~tROre^A6mMoEkp~CA)WVmwYXa1+FY4!3I80(0qVubLY_qK6belV~kWl>*IM}lr
zuc|40wmpaALmiRwOvdlu1Ji3)@^5__tD3~Vug)Xp=bzVN-&w~BHy+zMvoO_J94Y&XAl+w3{PK=zLf-Mj;fCCKsvB*u^jP0U=X
zRD41D3ZWv-AL`zp&5^jYxc<>f@ntIRo*GII3T9xC?|H+IrhG`oPn;sPmXh_UD0;Lu
z!}^tGGg-~q4?!TH0Cku?P|KDuFA=wl@}M4(K@7CEMI!413EtevvZ?OYTN`JhCaG9)
zOB4P>%&=WSSp!kO_hd7y%d~e0HyQ0`j=*xg`_Z1KC2O=
z1r0Ufl@2f<-YIym-xtq`Ao>TPs(~#E?}v9`T?yEgxjONl9v00)BrJ5AvTrUVQ5Oviz&gMXnbIcBW
zgHn$N#`&Ohrjm?~@6ma%JtGAvJ$gVt861lPsUbC>1P+dj#b9n$M~j#W+%7cpo>X7W
znZh~;ns@=e40IgT_q*zyH#{Ml5q7
zg##qzGv93UXAzE}6r_nOTth^At?-G#bLpo2Wg1mNF#Fx(hI6*{WpKuzayb0ot^RWC
z-pDl@LneG#dQWfCEp=EhlYMuX(6K;>Zv4a#(uGBZ#Y@}w_FDqR-de}6pYIuFDPB9Q
zDO9f$Zo6G5;={?;k;=lXuJ1a;cXqt-FO-YSVxsxeB9DnmeZ@36XIj~&mnCT(Z^@ydovallp
z6oKmCP0UhhKn$IZf~
zt9x>Wb=GGisMh)EXARiDi>&qgGqlEZXynJQObp-IhJGg1fBe`mz}7^bXx6UtGg&M`
z*Um}O2Q-wXO|@m4tejz;4^N6nQj~8#VN~9
zq7l%vdmf;yE57iVY^eNwwl!hmboZC3gxz)g@*L#73Rq+a?4JJnhYIM8`i!nFXDH{?
z`CPEwP#exluA};QRonc5S-UZ@IsFRTV&R|x1LWFf=6p?_^As$|^Ec;F4W0)A~+g&p{sf
zGB03{vI@+`k1X9Lz9tm{2z+a(3s-fuldo5cmo|jNa-p~Lq&nETyZ@=SZhLj^bO`2A2a;6^&zvRv$ZmW)2kGul0^R{tX*Tdy;E#pCM{
zSmqEs0G=64ll=I2s6Ml^;SZTtHSN$j0<0GV9>ve_fc3{mKOR>@)2nAT>xo0!RQ4--
zI$|rlgFlBBHNGxC($Hj9_+AX^U0?TF*2n6{lR(UR0s^W6%Y=hCfVi!hNW-fyK?|lbTqEG;8FVyw%>z
z3a(cNgmL*}t&g!d1h2oC)^tz6#ju(11KCu|iUJy$inYHNN1Ine3e2)=-)Utkri!l%
z1Z^dxyrBC^Y`C<&Gb=jD6`#ei3`lyY$}l`|b~E5>Y)jmB(TQ_$Qy-_}82+RB-mo7{
z8pNg%>hRC!Kb6Y}MemTDTw*AwTuB?cZ
zHW67uS^_2P1`i-kNexaoNN=sNZoilt2euChAHaRdJ
z*D?2G5S8HZ?7eDF48vGa#H(JR7}d%zOUO{B_2r_ZX#P87YzoxIaiFTn+?N)v6Bx;1
zf7pFVv+2r8xP*h}U1zK5S8|I>L5#DJ3l$DS{DMnAMx0#F64o;N)7PH6(nGj%c#(vT
zBF}*BEvQ_X3h-jeKRl(Bt>CSNZEPyHnt{RcP0Dqmgd^IItCHwMa1
z&1|aqg|g;N4sCko)48lz$91qYyr>MdlbjD0-u@d%jv20_b}yfJGj*nMb4)|bs4^mH
z{rsOU81j8})_UOe_vGc_^V^~VLS5S)0`N_j9{s53ecJDLg;@@SFzp)^)XA9xmGG=*
z2q%>iN-0pi4zNoD0R!DKN$`V&llQ7ENhwjszdnPVdnR*Vja&;Lg=@RrCU@DE2M`N?
z93+83T0JMfBJ!7_e-rBTh?j;h&wjzHLHHW-5Y?(##P>
zE-kFhhg~+Iut@NMyKqXr5OOSpd)|E+NNo>vw%DP}kw!AnP?L%u(dsrF
zEj>x-$#IVjjdCNpTRg?Zqg_ER1fXu%?$R%m^}W#>iW$ks=&5w{U2)4uCkQy1I2A)-
z6SCwc?JkD%6~rP{t$s3Qwa$v+0-un!J%7(lpz~$__NGii3|q^~Q1PDD8IJpdJE(4v)>wk%~ff(0u
z>iQds}~NW%thG
zyiCEN>hopb+0XtY0Ft@x`zc6@+mdNBuKokARvnXq(M&Ml_}mi$4*KU+M%EAKYd`Z@;ZnCm(F2
zmnhyI6Jh-D0}_7@^?}yo?p@F9dt}H2LJu?vDmc;lXI%YqkxcZE?9u#(b@Wg2aPnit
zbpRGC7(db@zO0H|7@ov<^O#J-X8p^|h%^gUIn$aHiU)@>|2UaXWy2U>kIsCPOO2V+
zC6D-SP!xH(tnB}<(<8o9C8bv@l+~8t^aOl+7jAOIbB8M0Ak$3R+&39kH_M&sr4CHdI=ZnTV
ztw6q>BUY;7KV_|-dWG)8?0>%^=oOw@0LzGGP>I%jn5QHeE&O&tOiK{`#VVe|53ZKL}7Oht_DfalAr2J@f5
zK!@TT+6B8_UWy_Im{4Dw?Oj}$`QYgc9-vwBbl#XXH~P?Iqb3vE@B)AXL&!TY#A4L<
zEMRaNE^?ROfCwQ6SHWGR@9sDY@xrYn1LC=M
zn6hT=J~8n-SgE97K#1~>R-~RP~xmd^$t0E5@ZsfYGQ^ca^`3dm2kG|8&m|hMFsp_I`xkkC-Mi1
z$mg-S50IqOZ)4?!vqC*`PfZlIh_D(6bsSa&5qs5ITT(hi&kjjaHC0d3N}z!V)&Poi
zF8CAJO>R(k2E%%Xc=`b~43M!+9IaBtDP~Kz1jE%23VX~#oE0xGY;Uk|h}^2-fK<`3
zmEuK7@uEowvSMMn(?o$kn*BW&|HhSgvAcv^I)~V3)Tv&bX&cip{qo21J?2
zoS^)|s32V_@2~41h0n&zWWYll|5Wldjk(d{;~Fphv|4&uJGT1mGzW50&taimDqU
zz&neyp`P`*Yl%Ky5u~h%jQcelQ-LSSNUpDc(*=RNip_Nl~D)Vj?I*66CJ
z#Sh3W9ESx26q%>`pQgsLPBnAekKWPa5F^xgBO0nUeM~jGH+^N+oh-(BI?GfD9HMey
z{xtC>iuX9??xV`#AE6<)UH;=X#`avbtU>Bq5#T7ZpwKt44#iWS0$T^!P0!7pdb95w$CH)?im|G}|bqH=M|qdH{}GW{&P
z6LNA-l9rN&jbZyH7p5HKvXkck+B)l*))3qy;#|A35Z$;l
z^vh4RHf+-&bm|w%Y~%20+AD1u3DT#^XIZsyb|biFwN<#8TfiD1)x4C|&vLw?DWn6!
zAk+3AV6Vh5uo&hYx^o@;_q`_$+dK~TmV5$PH8JmwZx_y|nX#5oL^qUjZLul0cv-F)
znV3e9L`6)7$FgQ@hrWq;y--GCrnl4HO{iF7PR@+fa5@;ndro(vlkUWerO%BFAF(JZ
zBV~`s?Coxc-`98t@FqA218jP!VNMT^On0Q~Q$7Lr5kSBMJj^XB+eU%la`x!mj(Iow
z)7Bbf=xpGRIYM>mvUbjCIX=CdoE&`8)%-mJ!ckd)D*eJd$xq0%_pT%xzYzXe)@-}=
zP$MobuP;99*U}St`qf3s6Q%z9`q)VgKS2Jbd)_YU1HpqxmFl6pBmplL_zzraK3=t%
zrTwpo^t&A@-`Z5*(yyMSL&k8zArAKk*zV$ac>Rn!XQuQ2_U+HFrfOv)y`=okVLR&<
zSzG>aWuQ2uP9nszK8zWU=_lPwCC#!`w8aQ?bX53u))MVZv-{X{2cLOJJYMK_;p
zA0lA|P0TcZeyu8gV>}0!TQ>QRzB1~gL73Hs7^%gVUo#g8AND$Mi}z<5GPJbpJOacV
z6=?3(Yo?ej%hdodoM=EUC7b*=7P*&O!Qz4O!#-{nt|G76t3?G;X9kHlman@Cn~#wI
zsH64`M-P0gt~JI3ANM}ZqL?`OSLGtS8_%>PmmVX{>THg73;wEo%Q;Uf2_U_G(JVA}
z5tD#OnYhG%4SY$(zdnq;%?4Q1BHM`#ufBZsfqBt<EH)Z>`jc-
zDHAwNSDdGWeOrPuIP1FX{fCWj0f=
z$Gr>oVPQOH*lS^>ObAn(gU>nTW+Um2Ob-JOl+%L^^{*#*0(f4hucwpbSxS*C1vEn~#oWA`1aHwdxrKc8vZVwBCQo65
z9PmH$P3QoQVMkYOrlhSK2Ebaa15U4>;7KE=>%H!hz}f40t~-(}pc-m-nOZmK*A1{7
zUu@P7vOG}XW!v1J3-QEAR=&77J~^){sh^)e>B%tI??yL|LPk=}
z7b1)QJmFJkGgICw=&F12bzs_mIn{@3CFdj;cKpi0g&y*EsohRBWAt}60A}PcV@$G5
zbIvhB;x$rxa;TKBJe>&xXiy#h@%(nBB??$fW=gAw8|2#SFy((9xp|xvP6curNO6p8|VrpEdpN7UP
z@kfN>uc<#w!ND%JMaC2pg;3y7b%02J4BqH>>+oCZly1c1UJ#(m2Ww~bs9p=A7jO~k
z%G&|p>K)xT{BbCDa)d`Ii>Xt(d+-BYY+|A-rK}!$Vr}YOC<>%fRseFa>CLqu@6WmI
zYfSwFD%PI@zB?ABe$)B53Q}QX=sm0oNlr8QQDpm@^hNZazeUC-cuCdg5RtYESeYHr
zuqA+IH3$+G8lv`ees#o8RQNa6QK~?1s`ev+VP!d+k=?~nXapQGF#o!;CRn;5Oz+ZSf
z=jkc!)0zPQX07LkiEw+TKl$>CttHE~eOuCQY0(YkAxgKo&9aI&I7e2w?FEm7bbRFi
zY4V9RkH2mMjWm!r>VzROP8~RO&KA>53udvV`rboK84f<(2MaX#x&uaeapdfG!cJj1Adb>V&a)&DpO&VZXgeT>=
zad~4siPl#~=D)T^Qv%n9+A+?%4W4umuD%CLewL`y_(hFZcUK9KEU{Tjf?r$D&+wv`
z_O7THwC}R3yK50<=E}53^LeBcvGU(tVtDvg_gWyi=o@P=U@UJc#Wrl;fu}!lb>u^~
zdsgHY-;3yE$7IYw8}2(ru5{R3PJ+g*3++TR*|Pp27k-m_JK;iB`4vrNeF|XzBgM<&$gKw+E{-p75
z4OR1hZJ4z;A0&C`2TN2eVfWljp}SiDq6(8I?oN`V&hM~r&BjPBd7D3~OWW+0N$pu-
z+c!QWjmets(>WhGhvF$GofG*4JPIomh7(`j>PK4>Vqt7%$d*frL9xZOcfKlJk3Phj
z-!CKd#=^!w`a#-Hi|Z?*vP&^2&<7F*fIpn=YL?~2)zGExm8ruG#4$FTMg_EILwfxg
z5A3tea;^7iE9TK!#82zD|Jt23d3jSBCcLivRv4X`Oe~f><(sH>KRt!okN~vZ>M^Jl
zw!P4&nevP32KWqLqsI0O5)c0LA1R`{<60nrk*XK#Ay`=KCSZ&=wDo2g_*NsMXm(9D
zSXq>9t?jsHs&Xjq03~>W9zrOayKELUtu%
znPZRNZFaOfO7#bczAmqX`)pji78sFp>nI0pqDK6wktWdGMl2|>eLi+~<6dfj!c4h{
zd{a^*w&UsmFFCH1DBEzylnU){9`%~=u6R&37&j-!SQsgEcSm7Xpp{EXstx@iPkHU;
zDG+0}28Om^P*1YKHJ_9yJ%Y*{)>5Sk6nEcRrEF2e;XBq-?JT4P8Es^7#7tCl{u^hu-svQzW-z=
zpfSM%4bZz|6YMRpB0sQ3-ltj1w17Z6vku{jCWmw^&*4Wdr#>X1=RHVNlj_~Q_0r(o
zO2H-6Bd~X*A~C;3je^s2rlD^&f%s5Jwy5VRxpA*bb6Khez(T?R{W}F}{s-r3KGqqq
z{1f-}!-vG)7SDye)t#X+ACcBB{xV~d-;UWlaj*M8$Y3bJCFpZh#hLybyXHV)9G+zp
zCd0eysHoeMXsZZaw&gh7o6oJz{zA?vUT>`5!eyw0q6qIsNgMQQl=dBB3gdV>B6*lE
z;xkU4s?u8U7X7;y986NnKA&2x(a070TxgI|fy#Mz!we(@pocInDK)#P3`
zXZ6y?;9+u`b!prVcjcO>cm$Ay1<%wo#mfwbrCcP7izcjQ1l8)qd~tF6uX?d1qg?*Irl~1!Y_+E8SA)%za^L&v1UC;<8%j%a
z{TBL}ynhIGEKkRN&s$uu_5F8QDD9ip=RA8BVPqaahR^u|jUk##1W{eT03WLl=zwO*
zo*}19ThNjdC9+sTA@UBsqaVkQgu?;MKcV$nFy^13-fHv^8l)>McMG~tR;vOzWX%@r
z`t=N7jK-T0Z;l@&Az%!S%#rP=B8XCX5JC^RC;k*}N`(A|uunQs+MYLj_vrIwXEuUR
z$05w}87KY4;Bin{0KvS{c7AhmQXE0ouXzA9sQ~8jMyQbhl9@QlPTd{YF(w~4RfjKimJ++PWKrvBm+rT?$$_rD@wrtyCyb0svM7l%_Q
Re5Eo#OI=^BRt5U%{{Ss2+=~DJ
literal 0
HcmV?d00001
diff --git a/src/assets/icons/qq_link.png b/src/assets/icons/qq_link.png
new file mode 100644
index 0000000000000000000000000000000000000000..49b58c47d3e29b95335578371e7abfc59b9b8d0a
GIT binary patch
literal 13784
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
literal 0
HcmV?d00001
diff --git a/src/assets/icons/wechat.png b/src/assets/icons/wechat.png
new file mode 100644
index 0000000000000000000000000000000000000000..c2511a6d63528a3187a17f4f9563896c0a04bb10
GIT binary patch
literal 12891
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