Compare commits

..

10 Commits

Author SHA1 Message Date
6faaa7984b 1 2026-08-31 18:30:30 +08:00
42146aedf4 feat: 新增多语言图标生成脚本与视图切换功能,优化分页与暗黑模式
1. 新增Python/JS版图标生成脚本,批量创建标准化SVG图标
2. 重构页面视图切换逻辑,添加平滑过渡动画
3. 升级登录日志分页系统,支持页码跳转与页大小调整
4. 完善暗黑模式样式适配,覆盖更多UI组件
5. 优化海报展示适配,根据图片比例自动调整布局
2026-07-01 18:22:21 +08:00
a889b83959 功能:新增 OpenList 同步按钮及相关 API,优化样式 2026-06-30 17:43:01 +08:00
d9f87f72b5 壮举:添加验证码生成和绘图实用程序
-实现了`generateCaptcha`函数来创建随机验证码。

-添加了`drawCaptcha`函数,在画布上渲染带有视觉噪声的验证码。

feat:引入数据操作实用程序

-为数据处理创建了“normalizeText”、“filterRows”、“attachSheetName”、“flatenRows”和“buildDuplicates”函数。

-添加了用于记录管理的“createLoginLog”、“createRecord”、“mapMovieToRecord”和“createFolder”函数。

-实现了“buildTree”函数来构建分层数据结构。

feat:实现滚动锁定机制

-添加了“lockScroll”和“unlockScrolls”功能,以管理模式交互期间的后台滚动行为。

feat:创建存储实用程序函数

-引入了从本地存储中读取、写入和删除项目的功能。

chore:设置Vite配置

-配置了使用Vue进行开发的Vite,包括服务器设置和API代理。
2026-06-29 10:19:00 +08:00
fe27fb4399 功能:新增连接状态展示,优化绑定信息加载逻辑及状态提示 2026-06-27 17:26:50 +08:00
3fb7f45789 功能:新增设置页面和海报卡片的导演、主演及简介展示,优化海报加载样式 2026-06-27 16:02:19 +08:00
a9066b9046 功能:新增电影简介、导演和主演信息展示,优化刮削日志样式 2026-06-27 13:14:42 +08:00
e4a0ac71cc 优化黑夜 2026-06-26 18:14:35 +08:00
83e23b7365 功能:新增单部电影重新刮削功能,优化刮削日志展示样式 2026-06-26 14:55:48 +08:00
69494434e9 功能:新增全局加载覆盖层及批量抓取功能
引入带有动画GIF的全局初始加载遮罩层,提升应用启动时的用户体验。新增文件夹树操作的多选模式,支持批量删除和重新抓取选定项。增强NodeCard组件,增加抓取状态指示器和勾选框选择功能。
2026-06-25 18:27:13 +08:00
144 changed files with 10548 additions and 3688 deletions

View File

View File

@ -1,112 +0,0 @@
# 知识卡导出索引文件
schema_version: 1
locale: zh-CN
branch: Q0DeR-MaG1C-BrAnCh-Fo2-NoN-GiT-Or-No-C0MmIt
exported_at: "2026-06-12T08:09:05Z"
modules:
"":
dir_name: 网盘管理跨端应用
title: 网盘管理跨端应用
scope:
- vue\.gitignore
- vue\.vscode\extensions.json
- vue\APK_BUILD_OPTIONS.md
- vue\APP_GUIDE.md
- vue\PACKAGING_SUMMARY.md
- vue\README.md
- vue\android\.gitignore
- vue\android\app\.gitignore
- vue\android\app\build.gradle
- vue\android\app\capacitor.build.gradle
- vue\android\app\proguard-rules.pro
- vue\android\app\src\androidTest\java\com\getcapacitor\myapp\ExampleInstrumentedTest.java
- vue\android\app\src\main\AndroidManifest.xml
- vue\android\app\src\main\assets\capacitor.config.json
- vue\android\app\src\main\assets\capacitor.plugins.json
- vue\android\app\src\main\assets\public\assets\index-DrjxTYTT.css
- vue\android\app\src\main\assets\public\assets\index-xOoYtVTp.js
- vue\android\app\src\main\assets\public\cordova.js
- vue\android\app\src\main\assets\public\cordova_plugins.js
- vue\android\app\src\main\assets\public\index.html
- vue\android\app\src\main\assets\public\logo.png
- vue\android\app\src\main\assets\public\vite.svg
- vue\android\app\src\main\java\com\wangpan\app\MainActivity.java
- vue\android\app\src\main\res\drawable-land-hdpi\splash.png
- vue\android\app\src\main\res\drawable-land-mdpi\splash.png
- vue\android\app\src\main\res\drawable-land-xhdpi\splash.png
- vue\android\app\src\main\res\drawable-land-xxhdpi\splash.png
- vue\android\app\src\main\res\drawable-land-xxxhdpi\splash.png
- vue\android\app\src\main\res\drawable-port-hdpi\splash.png
- vue\android\app\src\main\res\drawable-port-mdpi\splash.png
- vue\android\app\src\main\res\drawable-port-xhdpi\splash.png
- vue\android\app\src\main\res\drawable-port-xxhdpi\splash.png
- vue\android\app\src\main\res\drawable-port-xxxhdpi\splash.png
- vue\android\app\src\main\res\drawable-v24\ic_launcher_foreground.xml
- vue\android\app\src\main\res\drawable\ic_launcher_background.xml
- vue\android\app\src\main\res\drawable\splash.png
- vue\android\app\src\main\res\layout\activity_main.xml
- vue\android\app\src\main\res\mipmap-anydpi-v26\ic_launcher.xml
- vue\android\app\src\main\res\mipmap-anydpi-v26\ic_launcher_round.xml
- vue\android\app\src\main\res\mipmap-hdpi\ic_launcher.png
- vue\android\app\src\main\res\mipmap-hdpi\ic_launcher_foreground.png
- vue\android\app\src\main\res\mipmap-hdpi\ic_launcher_round.png
- vue\android\app\src\main\res\mipmap-mdpi\ic_launcher.png
- vue\android\app\src\main\res\mipmap-mdpi\ic_launcher_foreground.png
- vue\android\app\src\main\res\mipmap-mdpi\ic_launcher_round.png
- vue\android\app\src\main\res\mipmap-xhdpi\ic_launcher.png
- vue\android\app\src\main\res\mipmap-xhdpi\ic_launcher_foreground.png
- vue\android\app\src\main\res\mipmap-xhdpi\ic_launcher_round.png
- vue\android\app\src\main\res\mipmap-xxhdpi\ic_launcher.png
- vue\android\app\src\main\res\mipmap-xxhdpi\ic_launcher_foreground.png
- vue\android\app\src\main\res\mipmap-xxhdpi\ic_launcher_round.png
- vue\android\app\src\main\res\mipmap-xxxhdpi\ic_launcher.png
- vue\android\app\src\main\res\mipmap-xxxhdpi\ic_launcher_foreground.png
- vue\android\app\src\main\res\mipmap-xxxhdpi\ic_launcher_round.png
- vue\android\app\src\main\res\values\ic_launcher_background.xml
- vue\android\app\src\main\res\values\strings.xml
- vue\android\app\src\main\res\values\styles.xml
- vue\android\app\src\main\res\xml\config.xml
- vue\android\app\src\main\res\xml\file_paths.xml
- vue\android\app\src\test\java\com\getcapacitor\myapp\ExampleUnitTest.java
- vue\android\build.gradle
- vue\android\capacitor-cordova-android-plugins\build.gradle
- vue\android\capacitor-cordova-android-plugins\cordova.variables.gradle
- vue\android\capacitor-cordova-android-plugins\src\main\AndroidManifest.xml
- vue\android\capacitor-cordova-android-plugins\src\main\java\.gitkeep
- vue\android\capacitor-cordova-android-plugins\src\main\res\.gitkeep
- vue\android\capacitor.settings.gradle
- vue\android\gradle.properties
- vue\android\gradle\wrapper\gradle-wrapper.jar
- vue\android\gradle\wrapper\gradle-wrapper.properties
- vue\android\gradlew
- vue\android\gradlew.bat
- vue\android\settings.gradle
- vue\android\variables.gradle
- vue\build-apk.bat
- vue\capacitor.config.json
- vue\index.html
- vue\package-lock.json
- vue\package.json
- vue\public\logo.png
- vue\public\vite.svg
- vue\src\App.vue
- vue\src\api\index.js
- vue\src\assets\vue.svg
- vue\src\components\DriveManageDialog.vue
- vue\src\components\FolderTree.vue
- vue\src\components\LoginView.vue
- vue\src\components\PosterCard.vue
- vue\src\components\RecordDialog.vue
- vue\src\components\SimpleDialog.vue
- vue\src\components\TreeNode.vue
- vue\src\components\UserManageDialog.vue
- vue\src\main.js
- vue\src\style.css
- vue\src\utils\captcha.js
- vue\src\utils\data.js
- vue\src\utils\storage.js
- vue\vite.config.js
source_files: []
children: []
depends_on: []
related_to: []

View File

@ -1,105 +0,0 @@
schema_version: 1
module_path: ""
title: 网盘管理跨端应用
scope:
- vue\.gitignore
- vue\.vscode\extensions.json
- vue\APK_BUILD_OPTIONS.md
- vue\APP_GUIDE.md
- vue\PACKAGING_SUMMARY.md
- vue\README.md
- vue\android\.gitignore
- vue\android\app\.gitignore
- vue\android\app\build.gradle
- vue\android\app\capacitor.build.gradle
- vue\android\app\proguard-rules.pro
- vue\android\app\src\androidTest\java\com\getcapacitor\myapp\ExampleInstrumentedTest.java
- vue\android\app\src\main\AndroidManifest.xml
- vue\android\app\src\main\assets\capacitor.config.json
- vue\android\app\src\main\assets\capacitor.plugins.json
- vue\android\app\src\main\assets\public\assets\index-DrjxTYTT.css
- vue\android\app\src\main\assets\public\assets\index-xOoYtVTp.js
- vue\android\app\src\main\assets\public\cordova.js
- vue\android\app\src\main\assets\public\cordova_plugins.js
- vue\android\app\src\main\assets\public\index.html
- vue\android\app\src\main\assets\public\logo.png
- vue\android\app\src\main\assets\public\vite.svg
- vue\android\app\src\main\java\com\wangpan\app\MainActivity.java
- vue\android\app\src\main\res\drawable-land-hdpi\splash.png
- vue\android\app\src\main\res\drawable-land-mdpi\splash.png
- vue\android\app\src\main\res\drawable-land-xhdpi\splash.png
- vue\android\app\src\main\res\drawable-land-xxhdpi\splash.png
- vue\android\app\src\main\res\drawable-land-xxxhdpi\splash.png
- vue\android\app\src\main\res\drawable-port-hdpi\splash.png
- vue\android\app\src\main\res\drawable-port-mdpi\splash.png
- vue\android\app\src\main\res\drawable-port-xhdpi\splash.png
- vue\android\app\src\main\res\drawable-port-xxhdpi\splash.png
- vue\android\app\src\main\res\drawable-port-xxxhdpi\splash.png
- vue\android\app\src\main\res\drawable-v24\ic_launcher_foreground.xml
- vue\android\app\src\main\res\drawable\ic_launcher_background.xml
- vue\android\app\src\main\res\drawable\splash.png
- vue\android\app\src\main\res\layout\activity_main.xml
- vue\android\app\src\main\res\mipmap-anydpi-v26\ic_launcher.xml
- vue\android\app\src\main\res\mipmap-anydpi-v26\ic_launcher_round.xml
- vue\android\app\src\main\res\mipmap-hdpi\ic_launcher.png
- vue\android\app\src\main\res\mipmap-hdpi\ic_launcher_foreground.png
- vue\android\app\src\main\res\mipmap-hdpi\ic_launcher_round.png
- vue\android\app\src\main\res\mipmap-mdpi\ic_launcher.png
- vue\android\app\src\main\res\mipmap-mdpi\ic_launcher_foreground.png
- vue\android\app\src\main\res\mipmap-mdpi\ic_launcher_round.png
- vue\android\app\src\main\res\mipmap-xhdpi\ic_launcher.png
- vue\android\app\src\main\res\mipmap-xhdpi\ic_launcher_foreground.png
- vue\android\app\src\main\res\mipmap-xhdpi\ic_launcher_round.png
- vue\android\app\src\main\res\mipmap-xxhdpi\ic_launcher.png
- vue\android\app\src\main\res\mipmap-xxhdpi\ic_launcher_foreground.png
- vue\android\app\src\main\res\mipmap-xxhdpi\ic_launcher_round.png
- vue\android\app\src\main\res\mipmap-xxxhdpi\ic_launcher.png
- vue\android\app\src\main\res\mipmap-xxxhdpi\ic_launcher_foreground.png
- vue\android\app\src\main\res\mipmap-xxxhdpi\ic_launcher_round.png
- vue\android\app\src\main\res\values\ic_launcher_background.xml
- vue\android\app\src\main\res\values\strings.xml
- vue\android\app\src\main\res\values\styles.xml
- vue\android\app\src\main\res\xml\config.xml
- vue\android\app\src\main\res\xml\file_paths.xml
- vue\android\app\src\test\java\com\getcapacitor\myapp\ExampleUnitTest.java
- vue\android\build.gradle
- vue\android\capacitor-cordova-android-plugins\build.gradle
- vue\android\capacitor-cordova-android-plugins\cordova.variables.gradle
- vue\android\capacitor-cordova-android-plugins\src\main\AndroidManifest.xml
- vue\android\capacitor-cordova-android-plugins\src\main\java\.gitkeep
- vue\android\capacitor-cordova-android-plugins\src\main\res\.gitkeep
- vue\android\capacitor.settings.gradle
- vue\android\gradle.properties
- vue\android\gradle\wrapper\gradle-wrapper.jar
- vue\android\gradle\wrapper\gradle-wrapper.properties
- vue\android\gradlew
- vue\android\gradlew.bat
- vue\android\settings.gradle
- vue\android\variables.gradle
- vue\build-apk.bat
- vue\capacitor.config.json
- vue\index.html
- vue\package-lock.json
- vue\package.json
- vue\public\logo.png
- vue\public\vite.svg
- vue\src\App.vue
- vue\src\api\index.js
- vue\src\assets\vue.svg
- vue\src\components\DriveManageDialog.vue
- vue\src\components\FolderTree.vue
- vue\src\components\LoginView.vue
- vue\src\components\PosterCard.vue
- vue\src\components\RecordDialog.vue
- vue\src\components\SimpleDialog.vue
- vue\src\components\TreeNode.vue
- vue\src\components\UserManageDialog.vue
- vue\src\main.js
- vue\src\style.css
- vue\src\utils\captcha.js
- vue\src\utils\data.js
- vue\src\utils\storage.js
- vue\vite.config.js
source_files: []
depends_on: []
related_to: []

View File

@ -1 +0,0 @@
Vue 3.5, Vite 7, Capacitor 8, Android Gradle Plugin

View File

@ -1,4 +0,0 @@
- **前端架构**:采用 Vite + Vue 3 (Composition API) 技术栈,通过 `src/api/index.js` 封装 RESTful 请求并处理 Token 鉴权。
- **跨端桥接**:利用 Capacitor 8 将 Web 应用(`dist` 目录)嵌入原生 Android Shell (`BridgeActivity`),实现从 Web 到 Native 的无缝转换。
- **配置管理**:通过 `capacitor.config.json` 定义应用 ID、启动屏及状态栏样式并通过 `vite.config.js` 代理后端 API 请求。
- **构建流程**遵循“Vite 构建 Web -> Cap sync 同步资源 -> Gradle 编译 APK”的标准化流水线`build-apk.bat` 脚本自动化执行。

View File

@ -1 +0,0 @@
基于 Vue 3 与 Capacitor 构建的网盘资源管理与海报展示跨端应用,支持 Android APK 打包。

View File

@ -1 +0,0 @@
- **APK 打包**:运行根目录下的 `build-apk.bat` 脚本,自动完成 Web 资源构建、Capacitor 同步并唤起 Android Studio 进行最终编译。

View File

@ -1,2 +0,0 @@
- API 模块统一在 `src/api/index.js` 中导出,使用自定义 `request` 包装器处理全局认证头与 401/403 状态分发。
- 组件采用 `<script setup>` 语法糖编写,逻辑复用通过 `src/utils` 下的纯函数(如 `data.js`, `storage.js`)实现。

View File

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

BIN
create_icons.py Normal file

Binary file not shown.

20
gen_icons.js Normal file
View File

@ -0,0 +1,20 @@
const fs = require('fs');
const path = require('path');
const iconsDir = path.join(__dirname, 'public', 'icons');
if (!fs.existsSync(iconsDir)) fs.mkdirSync(iconsDir, { recursive: true });
const icons = {
home: { path: 'M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z M9 22v-10l6 6v-10', label: 'Home' },
search: { d: 'circle cx=11 cy=11 r=8 line x1=21 y1=21 x2=16.65 y2=16.65', label: 'Search' },
user: { d: 'path d=M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2 circle cx=12 cy=7 r=4', label: 'User' },
folder: { d: 'path d=M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z', fill: true, label: 'Folder' },
file: { d: 'path d=M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z polyline points=14 2 14 8 20 8', label: 'File' },
settings: { d: 'circle cx=12 cy=12 r=3 path d=M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0', label: 'Settings' },
close: { d: 'line x1=18 y1=6 x2=6 y2=18 line x1=6 y1=6 x2=18 y2=18', label: 'Close' },
check: { d: 'polyline points=20 6 9 17 4 12', color: '#22c55e', label: 'Check' },
delete: { d: 'polyline points=3 6 5 6 21 6 path d=M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2', color: '#ef4444', label: 'Delete' },
add: { d: 'circle cx=12 cy=12 r=10 line x1=12 y1=8 x2=12 y2=16 line x1=8 y1=12 x2=16 y2=12', label: 'Add' },
download: { d: 'path d=M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4 polyline points=7 10 12 15 17 10 line x1=12 y1=15 x2=12 y2=3', label: 'Download' },
upload: { d: 'path d=M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4 polyline points=17 8 12 3 7 8 line x1=12 y1=3 x2=12 y2=15', label: 'Upload' },
share: { d: 'circle cx=18 cy=5 r=3 circle cx=6 cy=12 r=3 circle cx=18 cy=19 r=3 line x1=8.59 y1=13.51 x2=15.42 y2=17.49 line x1=15.41 y1=6.51 x2=8.59 y2=10.49', label: 'Share' },
favorite: { d: 'path d=M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z', fill: true, label: 'Favorite' },
cloud: { d: 'path d=M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z', label: 'Cloud' },

175
gen_icons.py Normal file
View File

@ -0,0 +1,175 @@
# Icon Generator Script
import os
icons_dir = 'public/icons'
os.makedirs(icons_dir, exist_ok=True)
# Color scheme
PRIMARY_COLOR = '#6366f1'
SUCCESS_COLOR = '#22c55e'
DANGER_COLOR = '#ef4444'
def create_svg(filename, elements, color=PRIMARY_COLOR, fill=False):
"""Create an SVG icon file"""
fill_attr = 'fill "{}"'.format(color) if fill else 'fill="none"'
svg_content = '''<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" {} stroke="{}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
{}
</svg>'''.format(fill_attr, color, '\n'.join(elements))
filepath = os.path.join(icons_dir, filename)
with open(filepath, 'w', encoding='utf-8') as f:
f.write(svg_content)
print(f'Created: {filename}')
# Home icon
create_svg('home.svg', [
'<path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>',
'<polyline points="9 22 9 12 15 12 15 22"/>'
])
# Search icon
create_svg('search.svg', [
'<circle cx="11" cy="11" r="8"/>',
'<line x1="21" y1="21" x2="16.65" y2="16.65"/>'
])
# Settings icon
create_svg('settings.svg', [
'<circle cx="12" cy="12" r="3"/>',
'<path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"/>'
])
# User icon
create_svg('user.svg', [
'<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/>',
'<circle cx="12" cy="7" r="4"/>'
])
# Folder icon (filled)
create_svg('folder.svg', [
'<path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/>'
], fill=True)
# File icon
create_svg('file.svg', [
'<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/>',
'<polyline points="14 2 14 8 20 8"/>'
])
# Download icon
create_svg('download.svg', [
'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/>',
'<polyline points="7 10 12 15 17 10"/>',
'<line x1="12" y1="15" x2="12" y2="3"/>'
])
# Upload icon
create_svg('upload.svg', [
'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/>',
'<polyline points="17 8 12 3 7 8"/>',
'<line x1="12" y1="3" x2="12" y2="15"/>'
])
# Share icon
create_svg('share.svg', [
'<circle cx="18" cy="5" r="3"/>',
'<circle cx="6" cy="12" r="3"/>',
'<circle cx="18" cy="19" r="3"/>',
'<line x1="8.59" y1="13.51" x2="15.42" y2="17.49"/>',
'<line x1="15.41" y1="6.51" x2="8.59" y2="10.49"/>'
])
# Favorite/Like icon (filled)
create_svg('favorite.svg', [
'<path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/>'
], fill=True)
# Delete icon
create_svg('delete.svg', [
'<polyline points="3 6 5 6 21 6"/>',
'<path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/>'
], color=DANGER_COLOR)
# Edit icon
create_svg('edit.svg', [
'<path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/>',
'<path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/>'
])
# Add icon
create_svg('add.svg', [
'<circle cx="12" cy="12" r="10"/>',
'<line x1="12" y1="8" x2="12" y2="16"/>',
'<line x1="8" y1="12" x2="16" y2="12"/>'
])
# Back/Arrow Left icon
create_svg('back.svg', [
'<line x1="19" y1="12" x2="5" y2="12"/>',
'<polyline points="12 19 5 12 12 5"/>'
])
# More/Options icon (three dots)
create_svg('more.svg', [
'<circle cx="12" cy="12" r="1"/>',
'<circle cx="19" cy="12" r="1"/>',
'<circle cx="5" cy="12" r="1"/>'
], fill=True)
# Cloud icon
create_svg('cloud.svg', [
'<path d="M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z"/>'
])
# Drive/Server icon
create_svg('drive.svg', [
'<rect x="2" y="6" width="20" height="12" rx="2"/>',
'<circle cx="12" cy="12" r="2"/>',
'<path d="M6 12h.01 M18 12h.01"/>'
])
# Log/File Text icon
create_svg('log.svg', [
'<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/>',
'<polyline points="14 2 14 8 20 8"/>',
'<line x1="16" y1="13" x2="8" y2="13"/>',
'<line x1="16" y1="17" x2="8" y2="17"/>',
'<polyline points="10 9 9 9 8 9"/>'
])
# Close icon
create_svg('close.svg', [
'<line x1="18" y1="6" x2="6" y2="18"/>',
'<line x1="6" y1="6" x2="18" y2="18"/>'
])
# Check/Verify icon
create_svg('check.svg', [
'<polyline points="20 6 9 17 4 12"/>'
], color=SUCCESS_COLOR)
# Play icon
create_svg('play.svg', [
'<polygon points="5 3 19 12 5 21 5 3"/>'
], fill=True)
# Pause icon
create_svg('pause.svg', [
'<rect x="6" y="4" width="4" height="16"/>',
'<rect x="14" y="4" width="4" height="16"/>'
])
# Eye icon
create_svg('eye.svg', [
'<path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/>',
'<circle cx="12" cy="12" r="3"/>'
])
# Eye Off icon
create_svg('eye-off.svg', [
'<path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"/>',
'<line x1="1" y1="1" x2="23" y2="23"/>'
])
print(f'\nTotal icons created: {len(os.listdir(icons_dir)) - 1}') # Exclude test.txt
print('Icon generation complete!')

8
public/icon/add-file.svg Normal file
View File

@ -0,0 +1,8 @@
<!-- 添加文件图标:文档+加号 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/>
<polyline points="14 2 14 8 20 8"/>
<!-- 加号(青绿色) -->
<line x1="12" y1="13" x2="12" y2="19" stroke="#2dd4bf" stroke-width="2"/>
<line x1="9" y1="16" x2="15" y2="16" stroke="#2dd4bf" stroke-width="2"/>
</svg>

After

Width:  |  Height:  |  Size: 525 B

View File

@ -0,0 +1,7 @@
<!-- 添加文件夹图标:文件夹+加号 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/>
<!-- 加号(青绿色) -->
<line x1="12" y1="11" x2="12" y2="17" stroke="#2dd4bf" stroke-width="2"/>
<line x1="9" y1="14" x2="15" y2="14" stroke="#2dd4bf" stroke-width="2"/>
</svg>

After

Width:  |  Height:  |  Size: 510 B

View File

@ -0,0 +1,10 @@
<!-- 批量删除图标:垃圾桶+列表 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M3 6h18"/>
<path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"/>
<path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/>
<!-- 列表线(青绿色) -->
<line x1="10" y1="11" x2="10" y2="17" stroke="#2dd4bf" stroke-width="1.5"/>
<line x1="14" y1="11" x2="14" y2="17" stroke="#2dd4bf" stroke-width="1.5"/>
<line x1="9" y1="9" x2="15" y2="9" stroke="#2dd4bf" stroke-width="1"/>
</svg>

After

Width:  |  Height:  |  Size: 628 B

View File

@ -0,0 +1,13 @@
<!-- 批量刮削图标:电影+列表 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<rect x="3" y="6" width="18" height="14" rx="1"/>
<path d="M3 10h18"/>
<path d="M7 6V3"/>
<path d="M12 6V3"/>
<path d="M17 6V3"/>
<!-- 场记板条纹(青绿色) -->
<line x1="5" y1="8" x2="7" y2="8" stroke="#2dd4bf" stroke-width="1.5"/>
<line x1="9" y1="8" x2="11" y2="8" stroke="#2dd4bf" stroke-width="1.5"/>
<line x1="13" y1="8" x2="15" y2="8" stroke="#2dd4bf" stroke-width="1.5"/>
<line x1="17" y1="8" x2="19" y2="8" stroke="#2dd4bf" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 713 B

8
public/icon/cast.svg Normal file
View File

@ -0,0 +1,8 @@
<!-- 主演图标:面具/戏剧 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M2 12c0-5 4-9 10-9s10 4 10 9"/>
<path d="M2 12c0 3 2 5 4 5s3-2 4-5"/>
<path d="M14 12c1 3 2 5 4 5s4-2 4-5"/>
<!-- 面具高亮(青绿色) -->
<path d="M2 12c0 3 2 5 4 5s3-2 4-5" fill="#2dd4bf" stroke="#2dd4bf" stroke-width="0.3" opacity="0.2"/>
</svg>

After

Width:  |  Height:  |  Size: 492 B

5
public/icon/checkbox.svg Normal file
View File

@ -0,0 +1,5 @@
<!-- 多选图标:复选框+对勾 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<rect x="3" y="3" width="18" height="18" rx="3"/>
<path d="M7 12l3.5 3.5L17 9" stroke="#2dd4bf" stroke-width="2"/>
</svg>

After

Width:  |  Height:  |  Size: 346 B

7
public/icon/close.svg Normal file
View File

@ -0,0 +1,7 @@
<!-- 关闭图标X -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<line x1="18" y1="6" x2="6" y2="18"/>
<line x1="6" y1="6" x2="18" y2="18"/>
<!-- 关闭线高亮(青绿色) -->
<line x1="18" y1="6" x2="6" y2="18" stroke="#2dd4bf" stroke-width="1.2"/>
</svg>

After

Width:  |  Height:  |  Size: 410 B

10
public/icon/delete.svg Normal file
View File

@ -0,0 +1,10 @@
<!-- 删除图标:垃圾桶 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M3 6h18"/>
<path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"/>
<path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/>
<line x1="10" y1="11" x2="10" y2="17"/>
<line x1="14" y1="11" x2="14" y2="17"/>
<!-- 桶身高亮(青绿色) -->
<path d="M9 6v12a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1V6" stroke="#2dd4bf" stroke-width="0.8" opacity="0.3"/>
</svg>

After

Width:  |  Height:  |  Size: 577 B

View File

@ -0,0 +1,7 @@
<!-- 简介图标:打开的书 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"/>
<path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/>
<!-- 书页高亮(青绿色) -->
<path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z" fill="#2dd4bf" stroke="#2dd4bf" stroke-width="0.3" opacity="0.15"/>
</svg>

After

Width:  |  Height:  |  Size: 495 B

10
public/icon/detail.svg Normal file
View File

@ -0,0 +1,10 @@
<!-- 详情图标:文档+放大镜 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/>
<polyline points="14 2 14 8 20 8"/>
<line x1="8" y1="13" x2="16" y2="13"/>
<line x1="8" y1="17" x2="12" y2="17"/>
<!-- 放大镜(青绿色) -->
<circle cx="17" cy="17" r="3" stroke="#2dd4bf" stroke-width="1.5"/>
<line x1="19.5" y1="19.5" x2="22" y2="22" stroke="#2dd4bf" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 608 B

7
public/icon/edit.svg Normal file
View File

@ -0,0 +1,7 @@
<!-- 编辑图标:铅笔 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/>
<path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/>
<!-- 铅笔尖高亮(青绿色) -->
<path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4z" fill="#2dd4bf" stroke="#2dd4bf" stroke-width="0.3" opacity="0.2"/>
</svg>

After

Width:  |  Height:  |  Size: 529 B

8
public/icon/export.svg Normal file
View File

@ -0,0 +1,8 @@
<!-- 导出图标:上传箭头 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/>
<polyline points="17 8 12 3 7 8"/>
<line x1="12" y1="3" x2="12" y2="15"/>
<!-- 箭头高亮(青绿色) -->
<polyline points="17 8 12 3 7 8" stroke="#2dd4bf" stroke-width="1.2"/>
</svg>

After

Width:  |  Height:  |  Size: 469 B

7
public/icon/eye-off.svg Normal file
View File

@ -0,0 +1,7 @@
<!-- 隐藏图标:眼睛+斜线 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"/>
<line x1="1" y1="1" x2="23" y2="23"/>
<!-- 斜线高亮(青绿色) -->
<line x1="1" y1="1" x2="23" y2="23" stroke="#2dd4bf" stroke-width="1.2"/>
</svg>

After

Width:  |  Height:  |  Size: 574 B

7
public/icon/eye.svg Normal file
View File

@ -0,0 +1,7 @@
<!-- 显示图标:眼睛 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/>
<circle cx="12" cy="12" r="3"/>
<!-- 眼睛高亮(青绿色) -->
<circle cx="12" cy="12" r="1.5" fill="#2dd4bf" stroke="#2dd4bf" stroke-width="0.5"/>
</svg>

After

Width:  |  Height:  |  Size: 436 B

9
public/icon/fail.svg Normal file
View File

@ -0,0 +1,9 @@
<!-- 失败图标:叉号圆圈 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="9"/>
<line x1="9" y1="9" x2="15" y2="15"/>
<line x1="15" y1="9" x2="9" y2="15"/>
<!-- 叉号高亮(青绿色) -->
<line x1="9" y1="9" x2="15" y2="15" stroke="#2dd4bf" stroke-width="1.5"/>
<line x1="15" y1="9" x2="9" y2="15" stroke="#2dd4bf" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 528 B

9
public/icon/file.svg Normal file
View File

@ -0,0 +1,9 @@
<!-- 文件图标:文档 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/>
<polyline points="14 2 14 8 20 8"/>
<line x1="8" y1="13" x2="16" y2="13"/>
<line x1="8" y1="17" x2="13" y2="17"/>
<!-- 文件折角高亮(青绿色) -->
<polyline points="14 2 14 8 20 8" stroke="#2dd4bf" stroke-width="1" opacity="0.5"/>
</svg>

After

Width:  |  Height:  |  Size: 541 B

View File

@ -0,0 +1,7 @@
<!-- 打开的文件夹图标 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/>
<path d="M2 10h20"/>
<!-- 文件夹内部高亮(青绿色) -->
<path d="M4 10h16v7a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-7z" fill="#2dd4bf" stroke="#2dd4bf" stroke-width="0.3" opacity="0.15"/>
</svg>

After

Width:  |  Height:  |  Size: 506 B

View File

@ -0,0 +1,7 @@
<!-- 刷新文件夹图标:文件夹+刷新箭头 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/>
<!-- 刷新箭头(青绿色) -->
<path d="M14 13a3 3 0 1 1-1-2.2L14 12" stroke="#2dd4bf" stroke-width="1.5"/>
<polyline points="12 10 14 12 16 10" stroke="#2dd4bf" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 527 B

6
public/icon/folder.svg Normal file
View File

@ -0,0 +1,6 @@
<!-- 文件夹图标:关闭状态 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/>
<!-- 文件夹标签高亮(青绿色) -->
<path d="M4 5h5l2 3h9" stroke="#2dd4bf" stroke-width="1" opacity="0.4"/>
</svg>

After

Width:  |  Height:  |  Size: 439 B

8
public/icon/globe.svg Normal file
View File

@ -0,0 +1,8 @@
<!-- 网络图标:地球 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="10"/>
<line x1="2" y1="12" x2="22" y2="12"/>
<path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/>
<!-- 地球高亮(青绿色) -->
<path d="M12 2a15.3 15.3 0 0 1 4 10" stroke="#2dd4bf" stroke-width="1.2"/>
</svg>

After

Width:  |  Height:  |  Size: 514 B

8
public/icon/info.svg Normal file
View File

@ -0,0 +1,8 @@
<!-- 信息图标圆圈i -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="10"/>
<line x1="12" y1="16" x2="12" y2="12"/>
<line x1="12" y1="8" x2="12.01" y2="8"/>
<!-- 信息符号高亮(青绿色) -->
<line x1="12" y1="16" x2="12" y2="12" stroke="#2dd4bf" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 461 B

7
public/icon/link.svg Normal file
View File

@ -0,0 +1,7 @@
<!-- 链接图标:链条 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/>
<path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/>
<!-- 链条连接处高亮(青绿色) -->
<path d="M10 13a5 5 0 0 0 2 1.5" stroke="#2dd4bf" stroke-width="1.2"/>
</svg>

After

Width:  |  Height:  |  Size: 487 B

10
public/icon/log.svg Normal file
View File

@ -0,0 +1,10 @@
<!-- 日志图标:剪贴板 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/>
<rect x="8" y="2" width="8" height="4" rx="1" ry="1"/>
<line x1="8" y1="10" x2="16" y2="10"/>
<line x1="8" y1="14" x2="16" y2="14"/>
<line x1="8" y1="18" x2="12" y2="18"/>
<!-- 日志条目高亮(青绿色) -->
<line x1="8" y1="10" x2="11" y2="10" stroke="#2dd4bf" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 609 B

8
public/icon/logout.svg Normal file
View File

@ -0,0 +1,8 @@
<!-- 退出图标:门+箭头 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"/>
<polyline points="16 17 21 12 16 7"/>
<line x1="21" y1="12" x2="9" y2="12"/>
<!-- 箭头高亮(青绿色) -->
<polyline points="16 17 21 12 16 7" stroke="#2dd4bf" stroke-width="1.2"/>
</svg>

After

Width:  |  Height:  |  Size: 471 B

11
public/icon/movie.svg Normal file
View File

@ -0,0 +1,11 @@
<!-- 电影图标:场记板 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<rect x="3" y="6" width="18" height="14" rx="1"/>
<path d="M3 10h18"/>
<path d="M7 6V3"/>
<path d="M12 6V3"/>
<path d="M17 6V3"/>
<!-- 场记板条纹高亮(青绿色) -->
<line x1="5" y1="8" x2="7" y2="8" stroke="#2dd4bf" stroke-width="1.5"/>
<line x1="9" y1="8" x2="11" y2="8" stroke="#2dd4bf" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 557 B

10
public/icon/network.svg Normal file
View File

@ -0,0 +1,10 @@
<!-- 内外网切换图标:双向箭头 -->
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#374151" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<line x1="4" y1="8" x2="20" y2="8"/>
<polyline points="16 4 20 8 16 12"/>
<line x1="20" y1="16" x2="4" y2="16"/>
<polyline points="8 12 4 16 8 20"/>
<!-- 箭头高亮(青绿色) -->
<polyline points="16 4 20 8 16 12" stroke="#2dd4bf" stroke-width="1.2"/>
<polyline points="8 12 4 16 8 20" stroke="#2dd4bf" stroke-width="1.2"/>
</svg>

After

Width:  |  Height:  |  Size: 577 B

Some files were not shown because too many files have changed in this diff Show More