diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 9d08a1a8..00000000 --- a/.editorconfig +++ /dev/null @@ -1,9 +0,0 @@ -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true diff --git a/.env.example b/.env.example index 9640bba2..4c302de9 100644 --- a/.env.example +++ b/.env.example @@ -2,3 +2,7 @@ NUXT_PUBLIC_API_URL=https://kms.ikxin.com NUXT_PUBLIC_I18N_BASE_URL=https://kms.ikxin.com NUXT_MONITOR_LIST=kms.org.cn,win.freekms.cn NUXT_MONITOR_INTERVAL=10 + +CLOUDFLARE_ACCOUNT_ID= +CLOUDFLARE_KV_NAMESPACE_ID= +CLOUDFLARE_API_TOKEN= diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cd451034..c487d7c0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,33 +2,30 @@ name: CI on: push: - branches: [main] + branches: + - main pull_request: - branches: [main] + branches: + - main + +permissions: + contents: read jobs: build: runs-on: ubuntu-latest - strategy: - matrix: - node-version: [20] - steps: - - name: Checkout - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - - name: Install pnpm - uses: pnpm/action-setup@v4 - - - name: Setup Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 + - uses: actions/setup-node@v6 with: - node-version: ${{ matrix.node-version }} - cache: pnpm + node-version: lts/* - - name: Install dependencies - run: pnpm install + - uses: pnpm/action-setup@v6 + with: + cache: true + run_install: | + - args: [--frozen-lockfile] - - name: Build - run: pnpm run build + - run: pnpm build diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 431876c5..5f050f91 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -11,11 +11,11 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Docker meta id: meta - uses: docker/metadata-action@v5 + uses: docker/metadata-action@v6 with: images: | ikxin/kms-tools @@ -27,26 +27,26 @@ jobs: type=raw,value=latest - name: Set up QEMU - uses: docker/setup-qemu-action@v3 + uses: docker/setup-qemu-action@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 - name: Login to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Login to GitHub Container Registry - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push - uses: docker/build-push-action@v6 + uses: docker/build-push-action@v7 with: context: . platforms: linux/amd64,linux/arm64 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 25cb2877..00000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: Release - -on: - push: - tags: - - 'v*' - -permissions: - contents: write - -jobs: - release: - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install pnpm - uses: pnpm/action-setup@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: pnpm - - - name: Install dependencies - run: pnpm install - - - name: Build - run: NITRO_PRESET=node-server pnpm run build - - - name: Package artifacts - run: | - cd .output - tar -czf ../kms-tools-${{ github.ref_name }}.tar.gz . - cd .. - - - name: Create GitHub Release - uses: softprops/action-gh-release@v2 - with: - generate_release_notes: true - files: kms-tools-${{ github.ref_name }}.tar.gz diff --git a/.gitignore b/.gitignore index 4a7f73a2..a0837e43 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,5 @@ logs .env .env.* !.env.example + +.wrangler diff --git a/CHANGELOG.md b/CHANGELOG.md index 33863986..2107f866 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,65 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/). +## v2.1.0 + +[compare changes](https://github.com/ikxin/kms-tools/compare/v2.0.0...v2.1.0) + +### 🚀 Enhancements + +- 支持通过环境变量自定义监控频率 ([#38](https://github.com/ikxin/kms-tools/pull/38)) +- 使用 node.js 实现 vlmcs 客户端 ([106bc6d](https://github.com/ikxin/kms-tools/commit/106bc6d)) +- 移除本地 vlmcsd 相关配置 ([db3c576](https://github.com/ikxin/kms-tools/commit/db3c576)) +- 集成 motion-v 增强组件间的动画效果 ([bd97f54](https://github.com/ikxin/kms-tools/commit/bd97f54)) +- 新增监控页面平均延迟和成功率 ([1b7dd27](https://github.com/ikxin/kms-tools/commit/1b7dd27)) +- 添加 KMS 检测结果详情页面 ([8e8bbbf](https://github.com/ikxin/kms-tools/commit/8e8bbbf)) +- 新增赞助商模块 ([4eeaec9](https://github.com/ikxin/kms-tools/commit/4eeaec9)) +- 新增繁体中文、俄语、法语、韩语等多种语言 ([61d247a](https://github.com/ikxin/kms-tools/commit/61d247a)) +- 监控任务调度并添加 Cloudflare 部署设置 ([38857aa](https://github.com/ikxin/kms-tools/commit/38857aa)) +- 集成 Arco Design 组件库 ([79a75e4](https://github.com/ikxin/kms-tools/commit/79a75e4)) +- 兼容多平台 Storage 数据 ([b0ce704](https://github.com/ikxin/kms-tools/commit/b0ce704)) +- 将主机指标合并为单次存储写入 ([be27c90](https://github.com/ikxin/kms-tools/commit/be27c90)) +- 为连接和接收数据的 socket 添加超时处理 ([c767490](https://github.com/ikxin/kms-tools/commit/c767490)) +- 接入 Nuxt SEO 模块实现站点地图 ([7d6331b](https://github.com/ikxin/kms-tools/commit/7d6331b)) +- 引入 unplugin 组件插件并注册 Arco 设计图标 ([a9ef9bc](https://github.com/ikxin/kms-tools/commit/a9ef9bc)) + +### 🩹 Fixes + +- 生产环境环境变量不生效问题 ([#37](https://github.com/ikxin/kms-tools/pull/37)) +- 移除构建和启动命令 ([0b85098](https://github.com/ikxin/kms-tools/commit/0b85098)) +- 修复激活页面 URL.createObjectURL() 未实现 ([09b0593](https://github.com/ikxin/kms-tools/commit/09b0593)) +- 替换 BigInt 字面量以兼容 ES2019 打包目标 ([0f8f9d2](https://github.com/ikxin/kms-tools/commit/0f8f9d2)) +- 修复监控数据排序逻辑以按成功率和延迟排序 ([0f83ad7](https://github.com/ikxin/kms-tools/commit/0f83ad7)) +- 修复 Arco 深色模式刷新闪烁 ([1e84130](https://github.com/ikxin/kms-tools/commit/1e84130)) + +### 💅 Refactors + +- 重构 RPC 处理并集成 node-vlmcs ([b3539e7](https://github.com/ikxin/kms-tools/commit/b3539e7)) + +### 🏡 Chore + +- 删除历史遗留的代码 ([4b51728](https://github.com/ikxin/kms-tools/commit/4b51728)) +- 更新监控间隔和默认监控列表 ([881f8df](https://github.com/ikxin/kms-tools/commit/881f8df)) +- Prettier 迁移到 Oxfmt ([6911256](https://github.com/ikxin/kms-tools/commit/6911256)) +- 发布 node-vlmcs 到 npmjs ([77d8a1d](https://github.com/ikxin/kms-tools/commit/77d8a1d)) +- 修改 Cloudflare KV 绑定名称 ([77f3b54](https://github.com/ikxin/kms-tools/commit/77f3b54)) +- 多平台同步使用 Cloudflare KV 存储监控数据 ([c7b8e36](https://github.com/ikxin/kms-tools/commit/c7b8e36)) +- 移除 @vueuse/nuxt 模块 ([b3989b0](https://github.com/ikxin/kms-tools/commit/b3989b0)) +- 将 Tailwind CSS 从 Nuxt 模块改成 Vite 插件接入 ([4195b01](https://github.com/ikxin/kms-tools/commit/4195b01)) +- 更新 CI 和 Docker 工作流中的依赖版本 ([412e926](https://github.com/ikxin/kms-tools/commit/412e926)) +- 集成 changelogen 版本管理工具 ([bbeea2c](https://github.com/ikxin/kms-tools/commit/bbeea2c)) + +### 🎨 Styles + +- 调整 Arco Design 边框和内边距默认样式 ([51b3fae](https://github.com/ikxin/kms-tools/commit/51b3fae)) + +### ❤️ Contributors + +- Ikxin +- 一纸忘忧 ([@ikxin](https://github.com/ikxin)) +- Notte ([@ikxin](https://github.com/ikxin)) +- Copilot ([@MicrosoftCopilot](https://github.com/MicrosoftCopilot)) + ## [2.0.0] - 2026-03-17 ### 🚀 Major Changes diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 81c020c3..a775d329 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,3 +7,46 @@ Please take a moment to review our [code of conduct](./CODE_OF_CONDUCT.md) to en In this guide, you will receive an overview of the contribution workflow, including opening an issue, creating a PR, and reviewing and merging PRs. You can quickly navigate to specific sections of this guide using the directory icon in the top left corner of this document. + +## Commit messages + +This project uses [Conventional Commits](https://www.conventionalcommits.org/) so that changelogen can generate release notes and determine the next version automatically. Use one of the following prefixes for commits that should appear in the changelog: + +- `feat:` for new features (minor release) +- `fix:` or `perf:` for fixes and performance improvements (patch release) +- `feat!:` or a `BREAKING CHANGE:` footer for breaking changes (major release) +- `refactor:`, `docs:`, `style:`, `test:`, `build:`, `ci:`, or `chore:` for other changes + +For example: + +```text +feat: add KMS server health checks +``` + +## Release process + +Releases are managed with [changelogen](https://github.com/unjs/changelogen). This process updates the root project version; the `node-vlmcs` package is versioned separately. + +1. Check out `main`, pull the latest changes, and make sure the working tree is clean. +2. Preview the unreleased changelog: + + ```bash + pnpm release:preview + ``` + +3. Create and push the release: + + ```bash + pnpm release + ``` + +The release command updates `package.json` and `CHANGELOG.md`, creates a `chore(release): vX.Y.Z` commit and matching Git tag, pushes both, and creates or updates the GitHub Release. Authenticate the GitHub CLI with `gh auth login`, or provide `GITHUB_TOKEN`, `GH_TOKEN`, or `CHANGELOGEN_TOKENS_GITHUB`; without a token, changelogen opens the manual GitHub Release page. + +To override the inferred SemVer change, pass `--major`, `--minor`, `--patch`, or an exact version with `-r`: + +```bash +pnpm run release --patch +pnpm run release -r 2.1.0 +``` + +Pushing the `vX.Y.Z` tag also starts the Docker image release workflow. diff --git a/Dockerfile b/Dockerfile index a63df239..eec401d9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,38 +1,25 @@ -FROM alpine:latest AS vlmcsd-builder - -WORKDIR /root - -RUN apk add --no-cache git make build-base && \ - git clone --branch master --single-branch https://github.com/Wind4/vlmcsd.git && \ - cd vlmcsd/ && \ - make - -FROM node:20-slim AS app-builder +FROM node:lts-slim AS app-builder WORKDIR /app -COPY package.json pnpm-lock.yaml ./ - -RUN corepack enable && pnpm install --frozen-lockfile - COPY . . -RUN NITRO_PRESET=node-server pnpm run build +RUN npm install --global corepack@latest && \ + corepack enable && \ + pnpm install --frozen-lockfile && \ + NITRO_PRESET=node-server pnpm build -FROM node:20-slim - -COPY --from=vlmcsd-builder /root/vlmcsd/bin/vlmcsd /usr/bin/vlmcsd -COPY --from=app-builder /app/.output /app/.output - -RUN chmod +x /usr/bin/vlmcsd +FROM node:lts-slim WORKDIR /app +COPY --from=app-builder /app/.output /app/.output + VOLUME ["/app/.data"] -EXPOSE 3000 1688 +EXPOSE 3000 ENV HOST=0.0.0.0 ENV PORT=3000 -CMD ["sh", "-c", "/usr/bin/vlmcsd -D -e & node .output/server/index.mjs"] +CMD ["node", ".output/server/index.mjs"] diff --git a/README.en.md b/README.en.md index 15ecffa7..974c9636 100644 --- a/README.en.md +++ b/README.en.md @@ -65,7 +65,6 @@ The static version uses https://kms.ikxin.com API by default. You can deploy you | [Tailwind CSS](https://github.com/tailwindlabs/tailwindcss) | Utility-first CSS framework | | [Arco Design Vue](https://github.com/arco-design/arco-design-vue) | Enterprise-level design system by ByteDance | | [ECharts](https://github.com/apache/echarts) | Feature-rich interactive charting library | -| [VueUse](https://github.com/vueuse/vueuse) | Collection of essential Composition API utilities | | [Nuxt I18n](https://github.com/nuxt-modules/i18n) | Internationalization plugin for Nuxt | ## 📦 Deployment @@ -95,7 +94,6 @@ services: container_name: kms-tools ports: - 3000:3000 - - 1688:1688 volumes: - kms-data:/app/.data environment: @@ -112,7 +110,6 @@ Or using Docker CLI: docker run -d \ --name kms-tools \ -p 3000:3000 \ - -p 1688:1688 \ -v kms-data:/app/.data \ ikxin/kms-tools:latest ``` diff --git a/README.md b/README.md index fd55b747..2d1a3627 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,6 @@ https://kms.ikxin.com | [Tailwind CSS](https://github.com/tailwindlabs/tailwindcss) | 实用性优先的 CSS 框架 | | [Arco Design Vue](https://github.com/arco-design/arco-design-vue) | 字节跳动开发的企业级产品设计系统 | | [ECharts](https://github.com/apache/echarts) | 功能丰富的交互式图表库 | -| [VueUse](https://github.com/vueuse/vueuse) | 基于 Composition API 的实用函数集合 | | [Nuxt I18n](https://github.com/nuxt-modules/i18n) | 适用于 Nuxt 的国际化支持插件 | ## 📦 部署 @@ -95,7 +94,6 @@ services: container_name: kms-tools ports: - 3000:3000 - - 1688:1688 volumes: - kms-data:/app/.data environment: @@ -112,7 +110,6 @@ volumes: docker run -d \ --name kms-tools \ -p 3000:3000 \ - -p 1688:1688 \ -v kms-data:/app/.data \ ikxin/kms-tools:latest ``` diff --git a/app/assets/css/main.css b/app/assets/css/main.css index 7ad8d294..82bf4373 100644 --- a/app/assets/css/main.css +++ b/app/assets/css/main.css @@ -1,3 +1,5 @@ +@import 'tailwindcss'; + body { background-color: var(--color-neutral-2); color: var(--color-text-2); @@ -14,245 +16,34 @@ body { padding: 0; } -html[class='dark-mode'] body { - --red-1: 77, 0, 10; - --red-2: 119, 6, 17; - --red-3: 161, 22, 31; - --red-4: 203, 46, 52; - --red-5: 245, 78, 78; - --red-6: 247, 105, 101; - --red-7: 249, 141, 134; - --red-8: 251, 176, 167; - --red-9: 253, 209, 202; - --red-10: 255, 240, 236; - --orangered-1: 77, 14, 0; - --orangered-2: 119, 30, 5; - --orangered-3: 162, 55, 20; - --orangered-4: 204, 87, 41; - --orangered-5: 247, 126, 69; - --orangered-6: 249, 146, 90; - --orangered-7: 250, 173, 125; - --orangered-8: 252, 198, 161; - --orangered-9: 253, 222, 197; - --orangered-10: 255, 244, 235; - --orange-1: 77, 27, 0; - --orange-2: 121, 48, 4; - --orange-3: 166, 75, 10; - --orange-4: 210, 105, 19; - --orange-5: 255, 141, 31; - --orange-6: 255, 150, 38; - --orange-7: 255, 179, 87; - --orange-8: 255, 205, 135; - --orange-9: 255, 227, 184; - --orange-10: 255, 247, 232; - --gold-1: 77, 45, 0; - --gold-2: 119, 75, 4; - --gold-3: 162, 111, 15; - --gold-4: 204, 150, 31; - --gold-5: 247, 192, 52; - --gold-6: 249, 204, 68; - --gold-7: 250, 220, 108; - --gold-8: 252, 233, 149; - --gold-9: 253, 244, 190; - --gold-10: 255, 252, 232; - --yellow-1: 77, 56, 0; - --yellow-2: 120, 94, 7; - --yellow-3: 163, 134, 20; - --yellow-4: 207, 179, 37; - --yellow-5: 250, 225, 60; - --yellow-6: 251, 233, 75; - --yellow-7: 252, 243, 116; - --yellow-8: 253, 250, 157; - --yellow-9: 254, 254, 198; - --yellow-10: 254, 255, 240; - --lime-1: 42, 77, 0; - --lime-2: 68, 112, 6; - --lime-3: 98, 148, 18; - --lime-4: 132, 183, 35; - --lime-5: 168, 219, 57; - --lime-6: 184, 226, 75; - --lime-7: 203, 233, 112; - --lime-8: 222, 241, 152; - --lime-9: 238, 248, 194; - --lime-10: 253, 255, 238; - --green-1: 0, 77, 28; - --green-2: 4, 102, 37; - --green-3: 10, 128, 45; - --green-4: 18, 154, 55; - --green-5: 29, 180, 64; - --green-6: 39, 195, 70; - --green-7: 80, 210, 102; - --green-8: 126, 225, 139; - --green-9: 178, 240, 183; - --green-10: 235, 255, 236; - --cyan-1: 0, 66, 77; - --cyan-2: 6, 97, 108; - --cyan-3: 17, 131, 139; - --cyan-4: 31, 166, 170; - --cyan-5: 48, 201, 201; - --cyan-6: 63, 212, 207; - --cyan-7: 102, 223, 215; - --cyan-8: 144, 233, 225; - --cyan-9: 190, 244, 237; - --cyan-10: 240, 255, 252; - --blue-1: 0, 26, 77; - --blue-2: 5, 47, 120; - --blue-3: 19, 76, 163; - --blue-4: 41, 113, 207; - --blue-5: 70, 154, 250; - --blue-6: 90, 170, 251; - --blue-7: 125, 193, 252; - --blue-8: 161, 213, 253; - --blue-9: 198, 232, 254; - --blue-10: 234, 248, 255; - --arcoblue-1: 0, 13, 77; - --arcoblue-2: 4, 27, 121; - --arcoblue-3: 14, 50, 166; - --arcoblue-4: 29, 77, 210; - --arcoblue-5: 48, 111, 255; - --arcoblue-6: 60, 126, 255; - --arcoblue-7: 104, 159, 255; - --arcoblue-8: 147, 190, 255; - --arcoblue-9: 190, 218, 255; - --arcoblue-10: 234, 244, 255; - --purple-1: 22, 0, 77; - --purple-2: 39, 6, 110; - --purple-3: 62, 19, 143; - --purple-4: 90, 37, 176; - --purple-5: 123, 61, 209; - --purple-6: 142, 81, 218; - --purple-7: 169, 116, 227; - --purple-8: 197, 154, 237; - --purple-9: 223, 194, 246; - --purple-10: 247, 237, 255; - --pinkpurple-1: 66, 0, 77; - --pinkpurple-2: 101, 3, 112; - --pinkpurple-3: 138, 13, 147; - --pinkpurple-4: 176, 27, 182; - --pinkpurple-5: 217, 46, 217; - --pinkpurple-6: 225, 61, 219; - --pinkpurple-7: 232, 102, 223; - --pinkpurple-8: 240, 146, 230; - --pinkpurple-9: 247, 193, 240; - --pinkpurple-10: 255, 242, 253; - --magenta-1: 77, 0, 52; - --magenta-2: 119, 8, 80; - --magenta-3: 161, 23, 108; - --magenta-4: 203, 43, 136; - --magenta-5: 245, 69, 166; - --magenta-6: 247, 86, 169; - --magenta-7: 249, 122, 184; - --magenta-8: 251, 158, 200; - --magenta-9: 253, 195, 219; - --magenta-10: 255, 232, 241; - --gray-1: 23, 23, 26; - --gray-2: 46, 46, 48; - --gray-3: 72, 72, 73; - --gray-4: 95, 95, 96; - --gray-5: 120, 120, 122; - --gray-6: 146, 146, 147; - --gray-7: 171, 171, 172; - --gray-8: 197, 197, 197; - --gray-9: 223, 223, 223; - --gray-10: 246, 246, 246; - --primary-1: var(--arcoblue-1); - --primary-2: var(--arcoblue-2); - --primary-3: var(--arcoblue-3); - --primary-4: var(--arcoblue-4); - --primary-5: var(--arcoblue-5); - --primary-6: var(--arcoblue-6); - --primary-7: var(--arcoblue-7); - --primary-8: var(--arcoblue-8); - --primary-9: var(--arcoblue-9); - --primary-10: var(--arcoblue-10); - --success-1: var(--green-1); - --success-2: var(--green-2); - --success-3: var(--green-3); - --success-4: var(--green-4); - --success-5: var(--green-5); - --success-6: var(--green-6); - --success-7: var(--green-7); - --success-8: var(--green-8); - --success-9: var(--green-9); - --success-10: var(--green-10); - --danger-1: var(--red-1); - --danger-2: var(--red-2); - --danger-3: var(--red-3); - --danger-4: var(--red-4); - --danger-5: var(--red-5); - --danger-6: var(--red-6); - --danger-7: var(--red-7); - --danger-8: var(--red-8); - --danger-9: var(--red-9); - --danger-10: var(--red-10); - --warning-1: var(--orange-1); - --warning-2: var(--orange-2); - --warning-3: var(--orange-3); - --warning-4: var(--orange-4); - --warning-5: var(--orange-5); - --warning-6: var(--orange-6); - --warning-7: var(--orange-7); - --warning-8: var(--orange-8); - --warning-9: var(--orange-9); - --warning-10: var(--orange-10); - --link-1: var(--arcoblue-1); - --link-2: var(--arcoblue-2); - --link-3: var(--arcoblue-3); - --link-4: var(--arcoblue-4); - --link-5: var(--arcoblue-5); - --link-6: var(--arcoblue-6); - --link-7: var(--arcoblue-7); - --link-8: var(--arcoblue-8); - --link-9: var(--arcoblue-9); - --link-10: var(--arcoblue-10); +.arco-layout-sider > .arco-layout-sider-children { + border-radius: inherit; +} + +.arco-menu:not(.arco-menu-horizontal) > .arco-menu-inner { + padding: 8px; +} + +.arco-menu-icon > i { + display: inline-block; +} + +.arco-card-bordered { + border: none; +} + +.arco-card-header { + border-bottom-color: var(--color-border-1); +} + +.arco-collapse { + border-color: var(--color-border-1); +} + +.arco-collapse-item { + border-bottom-color: var(--color-border-1); } -html[class='dark-mode'] body { - --color-white: rgba(255, 255, 255, 0.9); - --color-black: #000000; - --color-border: #333335; - --color-bg-1: #17171a; - --color-bg-2: #232324; - --color-bg-3: #2a2a2b; - --color-bg-4: #313132; - --color-bg-5: #373739; - --color-bg-white: #f6f6f6; - --color-text-1: rgba(255, 255, 255, 0.9); - --color-text-2: rgba(255, 255, 255, 0.7); - --color-text-3: rgba(255, 255, 255, 0.5); - --color-text-4: rgba(255, 255, 255, 0.3); - --color-fill-1: rgba(255, 255, 255, 0.04); - --color-fill-2: rgba(255, 255, 255, 0.08); - --color-fill-3: rgba(255, 255, 255, 0.12); - --color-fill-4: rgba(255, 255, 255, 0.16); - --color-primary-light-1: rgba(var(--primary-6), 0.2); - --color-primary-light-2: rgba(var(--primary-6), 0.35); - --color-primary-light-3: rgba(var(--primary-6), 0.5); - --color-primary-light-4: rgba(var(--primary-6), 0.65); - --color-secondary: rgba(var(--gray-9), 0.08); - --color-secondary-hover: rgba(var(--gray-8), 0.16); - --color-secondary-active: rgba(var(--gray-7), 0.24); - --color-secondary-disabled: rgba(var(--gray-9), 0.08); - --color-danger-light-1: rgba(var(--danger-6), 0.2); - --color-danger-light-2: rgba(var(--danger-6), 0.35); - --color-danger-light-3: rgba(var(--danger-6), 0.5); - --color-danger-light-4: rgba(var(--danger-6), 0.65); - --color-success-light-1: rgb(var(--success-6), 0.2); - --color-success-light-2: rgb(var(--success-6), 0.35); - --color-success-light-3: rgb(var(--success-6), 0.5); - --color-success-light-4: rgb(var(--success-6), 0.65); - --color-warning-light-1: rgb(var(--warning-6), 0.2); - --color-warning-light-2: rgb(var(--warning-6), 0.35); - --color-warning-light-3: rgb(var(--warning-6), 0.5); - --color-warning-light-4: rgb(var(--warning-6), 0.65); - --color-link-light-1: rgb(var(--link-6), 0.2); - --color-link-light-2: rgb(var(--link-6), 0.35); - --color-link-light-3: rgb(var(--link-6), 0.5); - --color-link-light-4: rgb(var(--link-6), 0.65); - --color-tooltip-bg: #373739; - --color-spin-layer-bg: rgba(51, 51, 51, 0.6); - --color-menu-dark-bg: #232324; - --color-menu-light-bg: #232324; - --color-menu-dark-hover: var(--color-fill-2); - --color-mask-bg: rgba(23, 23, 26, 0.6); +.arco-collapse-item-active > .arco-collapse-item-header { + border-color: var(--color-border-1); } diff --git a/app/components/AppFooter.vue b/app/components/AppFooter.vue index c59faed5..0cf23dfc 100644 --- a/app/components/AppFooter.vue +++ b/app/components/AppFooter.vue @@ -5,15 +5,15 @@ const currentYear = new Date().getFullYear()