+
+
+ {{
+ btn.title
+ }}
+
-
- {{ btn.title }}
-
+
+
+
@@ -53,35 +64,49 @@ const active = (key: string) => {
align-items: center;
justify-content: center;
cursor: pointer;
- padding: 6px 10px;
- border-radius: 8px;
+ padding: 8px 12px;
+ border-radius: 12px;
transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
&:hover {
- background-color: #f5f3ff; // 极淡的紫色背景
- .arco-icon,
- .i-icon {
- color: #7816ff;
- }
+ background-color: #f5f3ff;
}
-
&.active {
background-color: #f5f3ff;
- &::after {
- content: '';
- position: absolute;
- bottom: -4px;
- width: 4px;
- height: 4px;
- background-color: #7816ff;
- border-radius: 50%;
- }
}
}
-// 按钮之间的分割线(可选)
-.nav-btn:not(:last-child) {
- margin-right: 4px;
+.nav-text {
+ font-size: 10px;
+ max-width: 0;
+ opacity: 0;
+ overflow: hidden;
+ white-space: nowrap;
+ transition: all 0.3s ease;
+ .group:hover & {
+ max-width: 40px;
+ margin-left: 6px;
+ opacity: 1;
+ }
+}
+
+.active-text {
+ max-width: 40px;
+ margin-left: 6px;
+ opacity: 1;
+ font-weight: bold;
+ color: #7816ff;
+}
+
+/* 动画 */
+.slide-up-enter-active,
+.slide-up-leave-active {
+ transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
+}
+.slide-up-enter-from,
+.slide-up-leave-to {
+ opacity: 0;
+ transform: translateY(10px) scale(0.95);
}
diff --git a/src/renderer/src/components/BackPage.vue b/src/renderer/src/components/BackPage.vue
new file mode 100644
index 0000000..1b65016
--- /dev/null
+++ b/src/renderer/src/components/BackPage.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
diff --git a/src/renderer/src/pages/menus/data/MenusData.ts b/src/renderer/src/pages/menus/data/MenusData.ts
new file mode 100644
index 0000000..0785aac
--- /dev/null
+++ b/src/renderer/src/pages/menus/data/MenusData.ts
@@ -0,0 +1,83 @@
+import {
+ DatabaseConfig,
+ DocumentFolder,
+ FileCode,
+ Headset,
+ Refresh,
+ Search,
+ TrendTwo
+} from '@icon-park/vue-next'
+
+export const features = [
+ {
+ group: '数据探索',
+ items: [
+ {
+ id: 'search',
+ title: '全局检索',
+ desc: '秒级搜索所有本地心得内容',
+ icon: Search,
+ color: '#7816ff',
+ path: 'search'
+ },
+ {
+ id: 'statistics',
+ title: '阅读画像',
+ desc: '可视化你的知识边界与偏好',
+ icon: TrendTwo,
+ color: '#00b42a',
+ path: 'statistics'
+ }
+ ]
+ },
+ {
+ group: '自动化与导出',
+ items: [
+ {
+ id: 'obsidian',
+ title: 'Obsidian 同步',
+ desc: '自动同步至本地双链笔记库',
+ icon: Refresh,
+ color: '#165dff',
+ path: 'sync'
+ },
+ {
+ id: 'export',
+ title: '批量导出',
+ icon: FileCode,
+ desc: '导出 PDF / Markdown 格式',
+ color: '#ff7d00',
+ path: 'export'
+ },
+ {
+ id: 'monitor',
+ title: '书库监控',
+ icon: DocumentFolder,
+ desc: '自动扫描本地文件夹新书',
+ color: '#eb2f96',
+ path: 'monitor'
+ }
+ ]
+ },
+ {
+ group: '实验室功能',
+ items: [
+ {
+ id: 'tts',
+ title: '听书模式',
+ desc: '调用系统引擎朗读心得摘要',
+ icon: Headset,
+ color: '#722ed1',
+ path: 'tts'
+ },
+ {
+ id: 'model',
+ title: '模型实验室',
+ desc: '对比不同 Prompt 的生成效果',
+ icon: DatabaseConfig,
+ color: '#13c2c2',
+ path: 'lab'
+ }
+ ]
+ }
+]
diff --git a/src/renderer/src/pages/menus/index.vue b/src/renderer/src/pages/menus/index.vue
new file mode 100644
index 0000000..c60b6f8
--- /dev/null
+++ b/src/renderer/src/pages/menus/index.vue
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+ {{ group.group }}
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+
+ {{ item.desc }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/renderer/src/pages/menus/views/Developing.vue b/src/renderer/src/pages/menus/views/Developing.vue
new file mode 100644
index 0000000..ef99733
--- /dev/null
+++ b/src/renderer/src/pages/menus/views/Developing.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Z
+
+
+
读书心得助手
+
+ 让每一篇阅读者享受阅读与思考的乐趣
+
+
+
+
+
+
+
+
+ {{ currentTitle || '功能' }} 正在精心打磨中
+
+
+ 为了提供更精准的体验,我们正在优化。该功能预计在接下来的版本中与您见面。
+
+
+
+
+
+
+ “好的深度,值得一点时间的等待”
+
+
+
+
+
+
+
+
+
+
diff --git a/src/renderer/src/pages/menus/views/statistics/index.vue b/src/renderer/src/pages/menus/views/statistics/index.vue
new file mode 100644
index 0000000..f414385
--- /dev/null
+++ b/src/renderer/src/pages/menus/views/statistics/index.vue
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 你的阅读分享报告
+
+
+ 基于你最近生成的 12
+ 篇心得分析:你在人文素养领域积累深厚,近期对认知科学的关注度上升了
+ 24%。
+
+
+
+
+
+
diff --git a/src/renderer/src/pages/reflection/index.vue b/src/renderer/src/pages/reflection/index.vue
index ca334a6..256abff 100644
--- a/src/renderer/src/pages/reflection/index.vue
+++ b/src/renderer/src/pages/reflection/index.vue
@@ -1,12 +1,13 @@
-
+
-
+
diff --git a/src/renderer/src/pages/reflection/views/poster/index.vue b/src/renderer/src/pages/reflection/views/poster/index.vue
index 3740d12..0326e68 100644
--- a/src/renderer/src/pages/reflection/views/poster/index.vue
+++ b/src/renderer/src/pages/reflection/views/poster/index.vue
@@ -5,6 +5,7 @@ import { ApplicationEffect, Camera, FontSize, Left } from '@icon-park/vue-next'
import { trpc } from '@renderer/lib/trpc'
import html2canvas from 'html2canvas'
import { Message } from '@arco-design/web-vue'
+import BackPage from '@renderer/components/BackPage.vue'
const { getQuery, goBack } = useRouterHook()
const subTaskId = computed(() => getQuery('itemId') as string)
@@ -67,18 +68,11 @@ onMounted(fetchDetail)