2121 </div >
2222
2323 <div class =" help-content" >
24- <slot >
25- <div class =" placeholder-text" >
26- 此处为帮助文档内容,支持快捷键列表、操作说明等。
24+ <section class =" help-section" >
25+ <div class =" section-title" >
26+ <MessageSquare class="ui-icon" />
27+ <h3 >消息操作</h3 >
2728 </div >
28- </slot >
29+ <ul class =" tip-list" >
30+ <li >
31+ <strong >悬停消息</strong >
32+ - 显示操作按钮
33+ </li >
34+ <li >
35+ <strong >拖拽消息</strong >
36+ - 移动消息
37+ </li >
38+ <li >
39+ <strong >Ctrl/Cmd + 点击</strong >
40+ - 多选消息
41+ </li >
42+ <li >
43+ <strong >Shift + 点击</strong >
44+ - 范围选择
45+ </li >
46+ </ul >
47+ </section >
48+
49+ <section class =" help-section" >
50+ <div class =" section-title" >
51+ <FolderOpen class="ui-icon" />
52+ <h3 >场景管理</h3 >
53+ </div >
54+ <ul class =" tip-list" >
55+ <li >
56+ <strong >双击名称</strong >
57+ - 重命名
58+ </li >
59+ <li >
60+ <strong >拖拽场景</strong >
61+ - 移动场景
62+ </li >
63+ <li >
64+ <strong >向下合并</strong >
65+ - 合并相邻场景
66+ </li >
67+ </ul >
68+ </section >
69+ <section class =" help-section" >
70+ <div class =" section-title" >
71+ <UserRound class="ui-icon" />
72+ <h3 >身份管理</h3 >
73+ </div >
74+ <ul class =" tip-list" >
75+ <li >
76+ <strong >切换模式</strong >
77+ - 点击标题旁图标可在角色/账号模式间切换
78+ </li >
79+ <li >
80+ <strong >双击名称</strong >
81+ - 重命名身份,会同步更新所有关联消息
82+ </li >
83+ <li >
84+ <strong >下拉选择</strong >
85+ - 修改身份角色
86+ </li >
87+ <li >
88+ <strong >点击色块</strong >
89+ - 修改该身份的染色
90+ </li >
91+ </ul >
92+ </section >
93+ <section class =" help-section" >
94+ <div class =" section-title" >
95+ <Palette class="ui-icon" />
96+ <h3 >染色规则</h3 >
97+ </div >
98+ <ul class =" tip-list" >
99+ <li >
100+ <strong >优先级</strong >
101+ - 数字越大越优先,高优先级覆盖低优先级
102+ </li >
103+ <li >
104+ <strong >筛选条件</strong >
105+ - 文本字段支持逗号分隔多个关键词
106+ </li >
107+ <li >
108+ <strong >选区绑定</strong >
109+ - 可将当前选中的消息直接绑定到规则
110+ </li >
111+ </ul >
112+ </section >
113+
114+ <section class =" help-section" >
115+ <div class =" section-title" >
116+ <TextInitial class="ui-icon" />
117+ <h3 >导出模板占位符</h3 >
118+ </div >
119+ <ul class =" tip-list" >
120+ <li >
121+ <strong v-pre >{{ name }}</strong >
122+ - 角色名
123+ </li >
124+ <li >
125+ <strong v-pre >{{ account }}</strong >
126+ - 账号
127+ </li >
128+ <li >
129+ <strong v-pre >{{ content }}</strong >
130+ - 消息内容
131+ </li >
132+ <li >
133+ <strong v-pre >{{ time }}</strong >
134+ - 时间
135+ </li >
136+ <li >
137+ <strong >\t</strong >
138+ - 制表符
139+ </li >
140+ <li >
141+ <strong >\n</strong >
142+ - 换行符
143+ </li >
144+ </ul >
145+ </section >
146+
147+ <section class =" help-section" >
148+ <div class =" section-title" >
149+ <Keyboard class="ui-icon" />
150+ <h3 >快捷键</h3 >
151+ </div >
152+ <div class =" shortcut-grid" >
153+ <div
154+ v-for =" shortcut in shortcuts"
155+ :key =" shortcut.key"
156+ class =" shortcut-row"
157+ >
158+ <kbd >{{ shortcut.key }}</kbd >
159+ <span >{{ shortcut.desc }}</span >
160+ </div >
161+ </div >
162+ </section >
29163 </div >
30164
31165 <div class =" help-footer" >
36170</template >
37171
38172<script setup lang="ts">
39- import { HelpCircle , X } from ' @lucide/vue' ;
173+ import {
174+ HelpCircle ,
175+ X ,
176+ Keyboard ,
177+ MessageSquare ,
178+ FolderOpen ,
179+ Palette ,
180+ TextInitial ,
181+ UserRound ,
182+ } from ' @lucide/vue' ;
40183import { useWindowStore } from ' @/stores/windowStore' ;
41184
42185const windowStore = useWindowStore ();
186+
187+ const shortcuts = [
188+ { key: ' Ctrl/Cmd + A' , desc: ' 全选' },
189+ { key: ' Esc' , desc: ' 取消选择' },
190+ { key: ' Ctrl/Cmd + C' , desc: ' 复制' },
191+ { key: ' Ctrl/Cmd + V' , desc: ' 粘贴' },
192+ { key: ' Ctrl/Cmd + Z' , desc: ' 撤销' },
193+ { key: ' Ctrl/Cmd + Shift + Z' , desc: ' 重做' },
194+ { key: ' Ctrl/Cmd + S' , desc: ' 保存' },
195+ { key: ' Ctrl/Cmd + P' , desc: ' 导出预览' },
196+ { key: ' Ctrl/Cmd + B' , desc: ' 切换左侧边栏' },
197+ { key: ' Ctrl/Cmd + I' , desc: ' 切换右侧边栏' },
198+ { key: ' Ctrl/Cmd + K' , desc: ' 打开帮助文档' },
199+ ];
43200 </script >
44201
45202<style scoped>
@@ -50,53 +207,139 @@ const windowStore = useWindowStore();
50207 display : flex ;
51208 align-items : center ;
52209 justify-content : center ;
210+ background : rgba (0 , 0 , 0 , 0.3 );
53211}
54212
55213.help-dialog {
56- width : min (720px , calc (100vw - 32px ));
57- max-height : min (80vh , 760px );
58- overflow : auto ;
214+ width : min (560px , calc (100vw - 32px ));
215+ max-height : min (80vh , 520px );
216+ display : flex ;
217+ flex-direction : column ;
59218 background : var (--bg-topbar );
60219 color : var (--text-primary );
61220 border : 1px solid var (--border-color );
62- box-shadow : 0 18 px 40 px rgba (0 , 0 , 0 , 0.2 );
221+ box-shadow : 0 8 px 24 px rgba (0 , 0 , 0 , 0.2 );
63222}
64223
65224.help-header {
66225 display : flex ;
67226 align-items : center ;
68227 justify-content : space-between ;
69- gap : 16px ;
70- padding : 8px 18px ;
228+ padding : 8px 12px ;
71229 border-bottom : 1px solid var (--border-color );
72230}
73231
232+ .help-header .header-title {
233+ margin-top : 0 ;
234+ }
235+
74236.help-header h2 {
75237 margin : 0 ;
76- font-size : 16px ;
238+ font-size : 14px ;
239+ font-weight : 600 ;
77240}
78241
79242.close-button {
80- padding : 6 px 10 px ;
243+ background : none ;
81244 border : none ;
82- background-color : var (--bg-topbar );
245+ padding : 4px ;
246+ border-radius : 4px ;
83247 cursor : pointer ;
248+ display : flex ;
249+ align-items : center ;
250+ justify-content : center ;
251+ }
252+
253+ .close-button :hover {
254+ background : var (--hover-bg );
255+ }
256+
257+ .close-button .ui-icon {
258+ width : 16px ;
259+ height : 16px ;
84260}
85261
86262.help-content {
87- padding : 18px ;
88- font-size : 14px ;
263+ flex : 1 ;
264+ overflow-y : auto ;
265+ padding : 16px 20px ;
266+ font-size : 13px ;
89267 line-height : 1.6 ;
90268}
91269
92- .help-content p {
93- margin : 0 0 12px ;
270+ .help-section {
271+ margin-bottom : 20px ;
272+ }
273+
274+ .help-section :last-child {
275+ margin-bottom : 0 ;
276+ }
277+
278+ .section-title {
279+ display : flex ;
280+ align-items : center ;
281+ gap : 8px ;
282+ margin-bottom : 10px ;
283+ }
284+
285+ .section-title h3 {
286+ margin : 0 ;
287+ font-size : 13px ;
288+ font-weight : 600 ;
289+ color : var (--text-primary );
290+ }
291+
292+ .section-title .ui-icon {
293+ width : 14px ;
294+ height : 14px ;
295+ color : var (--icon-color );
296+ }
297+
298+ .shortcut-grid {
299+ display : grid ;
300+ grid-template-columns : auto 1fr ;
301+ gap : 8px 16px ;
302+ }
303+
304+ .shortcut-row {
305+ display : contents ;
306+ }
307+
308+ kbd {
309+ display : inline-block ;
310+ padding : 2px 6px ;
311+ font-family : ' Fira Code' , monospace ;
312+ font-size : 11px ;
313+ color : var (--text-primary );
314+ background : var (--bg-sidebar );
315+ border : 1px solid var (--border-color );
316+ border-radius : 3px ;
317+ white-space : nowrap ;
318+ }
319+
320+ .tip-list {
321+ margin : 0 ;
322+ padding-left : 20px ;
323+ color : var (--text-primary );
324+ }
325+
326+ .tip-list li {
327+ margin-bottom : 6px ;
328+ }
329+
330+ .tip-list strong {
331+ color : var (--active-accent );
332+ font-weight : 600 ;
94333}
95334
96335.help-footer {
97- margin-top : 24px ;
98- padding : 18px ;
336+ padding : 8px 20px ;
99337 font-size : 12px ;
100338 color : var (--text-muted );
339+ text-align : right ;
340+ }
341+
342+ .shortcut-hint {
343+ font-size : 11px ;
101344}
102345 </style >
0 commit comments