@becrafter/prompt-manager 0.0.18 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/IFLOW.md +175 -0
  2. package/README.md +145 -234
  3. package/app/desktop/assets/app.1.png +0 -0
  4. package/app/desktop/assets/app.png +0 -0
  5. package/app/desktop/assets/icons/icon.icns +0 -0
  6. package/app/desktop/assets/icons/icon.ico +0 -0
  7. package/app/desktop/assets/icons/icon.png +0 -0
  8. package/app/desktop/assets/icons/tray.png +0 -0
  9. package/app/desktop/assets/templates/about.html +147 -0
  10. package/app/desktop/assets/tray.png +0 -0
  11. package/app/desktop/main.js +187 -732
  12. package/app/desktop/package-lock.json +723 -522
  13. package/app/desktop/package.json +54 -25
  14. package/app/desktop/preload.js +7 -0
  15. package/app/desktop/src/core/error-handler.js +108 -0
  16. package/app/desktop/src/core/event-emitter.js +84 -0
  17. package/app/desktop/src/core/logger.js +108 -0
  18. package/app/desktop/src/core/state-manager.js +125 -0
  19. package/app/desktop/src/services/module-loader.js +214 -0
  20. package/app/desktop/src/services/runtime-manager.js +301 -0
  21. package/app/desktop/src/services/service-manager.js +169 -0
  22. package/app/desktop/src/services/update-manager.js +268 -0
  23. package/app/desktop/src/ui/about-dialog-manager.js +208 -0
  24. package/app/desktop/src/ui/admin-window-manager.js +757 -0
  25. package/app/desktop/src/ui/splash-manager.js +253 -0
  26. package/app/desktop/src/ui/tray-manager.js +186 -0
  27. package/app/desktop/src/utils/icon-manager.js +133 -0
  28. package/app/desktop/src/utils/path-utils.js +58 -0
  29. package/app/desktop/src/utils/resource-paths.js +49 -0
  30. package/app/desktop/src/utils/resource-sync.js +260 -0
  31. package/app/desktop/src/utils/runtime-sync.js +241 -0
  32. package/app/desktop/src/utils/template-renderer.js +284 -0
  33. package/app/desktop/src/utils/version-utils.js +59 -0
  34. package/examples/prompts/engineer/engineer-professional.yaml +92 -0
  35. package/examples/prompts/engineer/laowang-engineer.yaml +132 -0
  36. package/examples/prompts/engineer/nekomata-engineer.yaml +123 -0
  37. package/examples/prompts/engineer/ojousama-engineer.yaml +124 -0
  38. package/examples/prompts/recommend/human_3-0_growth_diagnostic_coach_prompt.yaml +105 -0
  39. package/examples/prompts/workflow/sixstep-workflow.yaml +192 -0
  40. package/package.json +18 -9
  41. package/packages/admin-ui/.babelrc +3 -0
  42. package/packages/admin-ui/admin.html +237 -4784
  43. package/packages/admin-ui/css/main.css +2592 -0
  44. package/packages/admin-ui/css/recommended-prompts.css +610 -0
  45. package/packages/admin-ui/package-lock.json +6981 -0
  46. package/packages/admin-ui/package.json +36 -0
  47. package/packages/admin-ui/src/codemirror.js +53 -0
  48. package/packages/admin-ui/src/index.js +3188 -0
  49. package/packages/admin-ui/webpack.config.js +76 -0
  50. package/packages/resources/tools/chrome-devtools/README.md +310 -0
  51. package/packages/resources/tools/chrome-devtools/chrome-devtools.tool.js +1703 -0
  52. package/packages/resources/tools/file-reader/README.md +289 -0
  53. package/packages/resources/tools/file-reader/file-reader.tool.js +1545 -0
  54. package/packages/resources/tools/filesystem/README.md +359 -0
  55. package/packages/resources/tools/filesystem/filesystem.tool.js +538 -0
  56. package/packages/resources/tools/ollama-remote/README.md +192 -0
  57. package/packages/resources/tools/ollama-remote/ollama-remote.tool.js +421 -0
  58. package/packages/resources/tools/pdf-reader/README.md +236 -0
  59. package/packages/resources/tools/pdf-reader/pdf-reader.tool.js +565 -0
  60. package/packages/resources/tools/playwright/README.md +306 -0
  61. package/packages/resources/tools/playwright/playwright.tool.js +1186 -0
  62. package/packages/resources/tools/todolist/README.md +394 -0
  63. package/packages/resources/tools/todolist/todolist.tool.js +1312 -0
  64. package/packages/server/README.md +142 -0
  65. package/packages/server/api/admin.routes.js +42 -11
  66. package/packages/server/api/surge.routes.js +43 -0
  67. package/packages/server/app.js +119 -14
  68. package/packages/server/index.js +39 -0
  69. package/packages/server/mcp/mcp.server.js +346 -28
  70. package/packages/server/mcp/{mcp.handler.js → prompt.handler.js} +108 -9
  71. package/packages/server/mcp/sequential-thinking.handler.js +318 -0
  72. package/packages/server/mcp/think-plan.handler.js +274 -0
  73. package/packages/server/middlewares/auth.middleware.js +6 -0
  74. package/packages/server/package.json +51 -0
  75. package/packages/server/server.js +37 -1
  76. package/packages/server/toolm/index.js +9 -0
  77. package/packages/server/toolm/package-installer.service.js +267 -0
  78. package/packages/server/toolm/test-tools.js +264 -0
  79. package/packages/server/toolm/tool-context.service.js +334 -0
  80. package/packages/server/toolm/tool-dependency.service.js +168 -0
  81. package/packages/server/toolm/tool-description-generator-optimized.service.js +375 -0
  82. package/packages/server/toolm/tool-description-generator.service.js +312 -0
  83. package/packages/server/toolm/tool-environment.service.js +200 -0
  84. package/packages/server/toolm/tool-execution.service.js +277 -0
  85. package/packages/server/toolm/tool-loader.service.js +219 -0
  86. package/packages/server/toolm/tool-logger.service.js +223 -0
  87. package/packages/server/toolm/tool-manager.handler.js +65 -0
  88. package/packages/server/toolm/tool-manual-generator.service.js +389 -0
  89. package/packages/server/toolm/tool-mode-handlers.service.js +224 -0
  90. package/packages/server/toolm/tool-storage.service.js +111 -0
  91. package/packages/server/toolm/tool-sync.service.js +138 -0
  92. package/packages/server/toolm/tool-utils.js +20 -0
  93. package/packages/server/toolm/tool-yaml-parser.service.js +81 -0
  94. package/packages/server/toolm/validate-system.js +421 -0
  95. package/packages/server/utils/config.js +49 -5
  96. package/packages/server/utils/util.js +65 -10
  97. package/scripts/build-icons.js +135 -0
  98. package/scripts/build.sh +57 -0
  99. package/scripts/surge/CNAME +1 -0
  100. package/scripts/surge/README.md +47 -0
  101. package/scripts/surge/package-lock.json +34 -0
  102. package/scripts/surge/package.json +20 -0
  103. package/scripts/surge/sync-to-surge.js +151 -0
  104. package/packages/admin-ui/js/closebrackets.min.js +0 -8
  105. package/packages/admin-ui/js/codemirror.min.js +0 -8
  106. package/packages/admin-ui/js/js-yaml.min.js +0 -2
  107. package/packages/admin-ui/js/markdown.min.js +0 -8
  108. /package/app/desktop/assets/{icon.png → tray.1.png} +0 -0
@@ -0,0 +1,610 @@
1
+ /* 空白区域与推荐词布局 */
2
+ .custom-blank-content {
3
+ display: flex;
4
+ flex-direction: column;
5
+ align-items: center;
6
+ justify-content: center;
7
+ height: 100%;
8
+ padding: 64px 32px 32px;
9
+ color: #9ca3af;
10
+ font-size: 16px;
11
+ overflow-y: auto;
12
+ gap: 36px;
13
+ }
14
+
15
+ .custom-blank-content.no-recommendation {
16
+ padding-bottom: 64px;
17
+ }
18
+
19
+ .blank-placeholder {
20
+ flex: 1;
21
+ width: 100%;
22
+ display: flex;
23
+ align-items: center;
24
+ justify-content: center;
25
+ text-align: center;
26
+ }
27
+
28
+ .blank-placeholder-body {
29
+ max-width: 520px;
30
+ width: 100%;
31
+ padding: 32px 40px;
32
+ border-radius: 28px;
33
+ background: rgba(255, 255, 255, 0.95);
34
+ box-shadow: 0 20px 60px -40px rgba(15, 23, 42, 0.6);
35
+ border: 1px solid rgba(226, 232, 240, 0.9);
36
+ }
37
+
38
+ .blank-placeholder-emoji {
39
+ font-size: 60px;
40
+ margin-bottom: 20px;
41
+ }
42
+
43
+ .blank-placeholder-text {
44
+ font-size: 17px;
45
+ color: #4b5563;
46
+ line-height: 1.4;
47
+ margin: 0;
48
+ white-space: nowrap;
49
+ overflow: hidden;
50
+ text-overflow: ellipsis;
51
+ display: block;
52
+ }
53
+
54
+ .custom-blank-content.no-recommendation .blank-placeholder {
55
+ margin-bottom: 0;
56
+ }
57
+
58
+ /* 推荐词卡片列表样式 */
59
+ .recommended-prompts-section {
60
+ width: min(1280px, calc(100% - 48px));
61
+ min-width: 560px; /* 2个卡片的最小宽度(240px) + 1个间隙(12px) + 2个padding(20px) */
62
+ margin-top: auto;
63
+ margin-left: auto;
64
+ margin-right: auto;
65
+ padding: 22px 28px 16px;
66
+ border-radius: 22px;
67
+ background: rgba(255, 255, 255, 0.96);
68
+ border: 1px solid rgba(226, 232, 240, 0.9);
69
+ box-shadow: 0 25px 55px -32px rgba(15, 23, 42, 0.35);
70
+ flex-shrink: 0;
71
+ }
72
+
73
+ .recommended-prompts-section.hidden {
74
+ display: none;
75
+ }
76
+
77
+ .recommended-prompts-header {
78
+ display: flex;
79
+ justify-content: space-between;
80
+ align-items: center;
81
+ margin-bottom: 20px;
82
+ }
83
+
84
+ .recommended-prompts-header h3 {
85
+ font-size: 18px;
86
+ font-weight: 600;
87
+ color: #1f2937;
88
+ margin: 0;
89
+ letter-spacing: 0.02em;
90
+ }
91
+
92
+ .recommended-prompts-nav {
93
+ display: flex;
94
+ gap: 10px;
95
+ }
96
+
97
+ .nav-arrow {
98
+ width: 36px;
99
+ height: 36px;
100
+ border-radius: 50%;
101
+ border: 1px solid #e0e0e0;
102
+ background: white;
103
+ display: flex;
104
+ align-items: center;
105
+ justify-content: center;
106
+ cursor: pointer;
107
+ transition: all 0.2s ease;
108
+ }
109
+
110
+ .nav-arrow:hover:not(.disabled) {
111
+ background: #f5f5f5;
112
+ border-color: #ccc;
113
+ }
114
+
115
+ .nav-arrow.disabled {
116
+ opacity: 0.4;
117
+ cursor: not-allowed;
118
+ }
119
+
120
+ .recommended-prompts-container {
121
+ position: relative;
122
+ overflow: hidden;
123
+ }
124
+
125
+ .recommended-prompts-list {
126
+ display: flex;
127
+ gap: 12px;
128
+ padding: 6px 0;
129
+ overflow-x: auto;
130
+ scroll-behavior: smooth;
131
+ /* 滚动条默认透明,保持空间 */
132
+ scrollbar-width: thin;
133
+ scrollbar-color: transparent transparent;
134
+ }
135
+
136
+ .recommended-prompts-list::-webkit-scrollbar {
137
+ height: 6px;
138
+ }
139
+
140
+ .recommended-prompts-list::-webkit-scrollbar-track {
141
+ background: transparent;
142
+ }
143
+
144
+ .recommended-prompts-list::-webkit-scrollbar-thumb {
145
+ background-color: transparent;
146
+ border-radius: 3px;
147
+ transition: background-color 0.2s ease;
148
+ }
149
+
150
+ /* 滚动或悬停时显示滚动条 */
151
+ .recommended-prompts-list:active::-webkit-scrollbar-thumb,
152
+ .recommended-prompts-list:hover::-webkit-scrollbar-thumb {
153
+ background-color: #c5c5c5;
154
+ }
155
+
156
+ .recommended-prompts-list:active::-webkit-scrollbar-thumb:hover,
157
+ .recommended-prompts-list:hover::-webkit-scrollbar-thumb:hover {
158
+ background-color: #a0a0a0;
159
+ }
160
+
161
+ .recommended-prompts-list:hover::-webkit-scrollbar {
162
+ height: 6px;
163
+ }
164
+
165
+ .recommended-prompts-list:hover::-webkit-scrollbar-track {
166
+ background: transparent;
167
+ }
168
+
169
+ .recommended-prompts-list:hover::-webkit-scrollbar-thumb {
170
+ background-color: #c5c5c5;
171
+ border-radius: 3px;
172
+ transition: background-color 0.2s ease;
173
+ }
174
+
175
+ .recommended-prompts-list:hover::-webkit-scrollbar-thumb:hover {
176
+ background-color: #a0a0a0;
177
+ }
178
+
179
+ .recommended-prompt-card {
180
+ min-width: 240px;
181
+ max-width: 320px;
182
+ min-height: 140px;
183
+ border-radius: 18px;
184
+ border: 1px solid rgba(226, 232, 240, 0.8);
185
+ background: white;
186
+ padding: 18px 20px;
187
+ cursor: pointer;
188
+ transition: all 0.25s ease;
189
+ box-shadow: 3px 16px 18px -26px rgba(15, 23, 42, 0.5);
190
+ display: flex;
191
+ flex-direction: column;
192
+ margin-right: 12px;
193
+ }
194
+
195
+ .recommended-prompt-card:last-child {
196
+ margin-right: 0;
197
+ }
198
+
199
+ .recommended-prompt-card:hover {
200
+ transform: translateY(-4px);
201
+ box-shadow: 0 18px 30px -28px rgba(15, 23, 42, 0.45);
202
+ border-color: rgba(148, 163, 184, 0.5);
203
+ }
204
+
205
+ .recommended-prompt-card .card-header {
206
+ display: flex;
207
+ justify-content: space-between;
208
+ align-items: flex-start;
209
+ margin-bottom: 10px;
210
+ }
211
+
212
+ .recommended-prompt-card .card-title {
213
+ font-size: 15px;
214
+ font-weight: 600;
215
+ color: #111827;
216
+ margin: 0;
217
+ flex: 1;
218
+ line-height: 1.3;
219
+ overflow: hidden;
220
+ text-overflow: ellipsis;
221
+ display: -webkit-box;
222
+ -webkit-line-clamp: 2;
223
+ -webkit-box-orient: vertical;
224
+ }
225
+
226
+ .recommended-prompt-card .card-tags {
227
+ display: flex;
228
+ gap: 6px;
229
+ flex-wrap: wrap;
230
+ margin-top: 10px;
231
+ }
232
+
233
+ .recommended-prompt-card .card-tag {
234
+ font-size: 12px;
235
+ padding: 4px 10px;
236
+ border-radius: 12px;
237
+ background: rgba(59, 130, 246, 0.08);
238
+ color: #2563eb;
239
+ font-weight: 500;
240
+ }
241
+
242
+ .recommended-prompt-card .card-description {
243
+ font-size: 13px;
244
+ color: #4b5563;
245
+ line-height: 1.5;
246
+ overflow: hidden;
247
+ text-overflow: ellipsis;
248
+ display: -webkit-box;
249
+ -webkit-line-clamp: 3;
250
+ -webkit-box-orient: vertical;
251
+ flex: 1;
252
+ margin-top: 4px;
253
+ max-height: calc(1.5em * 3); /* 确保最大高度为3行 */
254
+ word-break: break-word; /* 确保长单词也能正确换行 */
255
+ }
256
+
257
+ .recommended-prompt-modal {
258
+ position: fixed;
259
+ inset: 0;
260
+ background: rgba(0, 0, 0, 0.5);
261
+ display: flex;
262
+ align-items: center;
263
+ justify-content: center;
264
+ z-index: 2000;
265
+ opacity: 0;
266
+ visibility: hidden;
267
+ transition: all 0.3s ease;
268
+ }
269
+
270
+ .recommended-prompt-modal.active {
271
+ opacity: 1;
272
+ visibility: visible;
273
+ }
274
+
275
+ .recommended-prompt-modal-content {
276
+ width: 90%;
277
+ max-width: 700px;
278
+ max-height: 90vh;
279
+ background: white;
280
+ border-radius: 16px;
281
+ overflow: hidden;
282
+ transform: translateY(20px);
283
+ transition: transform 0.3s ease;
284
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
285
+ display: flex;
286
+ flex-direction: column;
287
+ }
288
+
289
+ .recommended-prompt-modal.active .recommended-prompt-modal-content {
290
+ transform: translateY(0);
291
+ }
292
+
293
+ .recommended-prompt-modal-body {
294
+ padding: 24px;
295
+ flex: 1;
296
+ overflow-y: auto;
297
+ display: flex;
298
+ flex-direction: column;
299
+ /* 滚动条默认透明,保持空间 */
300
+ scrollbar-width: thin;
301
+ scrollbar-color: transparent transparent;
302
+ }
303
+
304
+ /* Webkit浏览器滚动条样式 - 默认透明 */
305
+ .recommended-prompt-modal-body::-webkit-scrollbar {
306
+ width: 6px;
307
+ }
308
+
309
+ .recommended-prompt-modal-body::-webkit-scrollbar-track {
310
+ background: transparent;
311
+ }
312
+
313
+ .recommended-prompt-modal-body::-webkit-scrollbar-thumb {
314
+ background-color: transparent;
315
+ border-radius: 3px;
316
+ transition: background-color 0.2s ease;
317
+ }
318
+
319
+ /* 滚动或悬停时显示滚动条 */
320
+ .recommended-prompt-modal-body:active::-webkit-scrollbar-thumb,
321
+ .recommended-prompt-modal-body:hover::-webkit-scrollbar-thumb {
322
+ background-color: #c5c5c5;
323
+ }
324
+
325
+ .recommended-prompt-modal-body:active::-webkit-scrollbar-thumb:hover,
326
+ .recommended-prompt-modal-body:hover::-webkit-scrollbar-thumb:hover {
327
+ background-color: #a0a0a0;
328
+ }
329
+
330
+ .recommended-prompt-modal-body .prompt-detail-description {
331
+ font-size: 16px;
332
+ color: #666;
333
+ line-height: 1.6;
334
+ margin: 0 0 24px 0;
335
+ padding: 16px;
336
+ background: #f8f9fa;
337
+ border-radius: 8px;
338
+ }
339
+
340
+ .recommended-prompt-modal-body .prompt-detail-content {
341
+ background: #f8f9fa;
342
+ border-radius: 8px;
343
+ padding: 20px;
344
+ font-size: 16px;
345
+ line-height: 1.7;
346
+ color: #333;
347
+ white-space: pre-wrap;
348
+ font-family: "SF Pro Display", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;
349
+ border: 1px solid #e2e8f0;
350
+ margin-top: 24px;
351
+ flex: 1;
352
+ min-height: 0;
353
+ overflow-y: auto;
354
+ /* 滚动条默认透明,保持空间 */
355
+ scrollbar-width: thin;
356
+ scrollbar-color: transparent transparent;
357
+ }
358
+
359
+ /* Webkit浏览器滚动条样式 - 默认透明 */
360
+ .recommended-prompt-modal-body .prompt-detail-content::-webkit-scrollbar {
361
+ width: 6px;
362
+ }
363
+
364
+ .recommended-prompt-modal-body .prompt-detail-content::-webkit-scrollbar-track {
365
+ background: transparent;
366
+ }
367
+
368
+ .recommended-prompt-modal-body .prompt-detail-content::-webkit-scrollbar-thumb {
369
+ background-color: transparent;
370
+ border-radius: 3px;
371
+ transition: background-color 0.2s ease;
372
+ }
373
+
374
+ /* 滚动或悬停时显示滚动条 */
375
+ .recommended-prompt-modal-body .prompt-detail-content:active::-webkit-scrollbar-thumb,
376
+ .recommended-prompt-modal-body .prompt-detail-content:hover::-webkit-scrollbar-thumb {
377
+ background-color: #c5c5c5;
378
+ }
379
+
380
+ .recommended-prompt-modal-body .prompt-detail-content:active::-webkit-scrollbar-thumb:hover,
381
+ .recommended-prompt-modal-body .prompt-detail-content:hover::-webkit-scrollbar-thumb:hover {
382
+ background-color: #a0a0a0;
383
+ }
384
+
385
+ .recommended-prompt-modal-body .prompt-detail-content p {
386
+ margin: 0 0 16px 0;
387
+ }
388
+
389
+ .recommended-prompt-modal-body .prompt-detail-content p:last-child {
390
+ margin-bottom: 0;
391
+ }
392
+
393
+ .recommended-prompt-modal-footer {
394
+ padding: 16px 24px;
395
+ border-top: 1px solid #eee;
396
+ display: flex;
397
+ justify-content: flex-end;
398
+ gap: 12px;
399
+ background: #fafafa;
400
+ margin-top: auto;
401
+ }
402
+
403
+ .sync-to-my-prompts-btn {
404
+ background: #393939;
405
+ color: white;
406
+ border: none;
407
+ border-radius: 8px;
408
+ padding: 10px 20px;
409
+ font-size: 14px;
410
+ font-weight: 500;
411
+ cursor: pointer;
412
+ transition: all 0.2s ease;
413
+ display: flex;
414
+ align-items: center;
415
+ gap: 8px;
416
+ }
417
+
418
+ .sync-to-my-prompts-btn:hover {
419
+ background: #222;
420
+ transform: translateY(-1px);
421
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
422
+ }
423
+
424
+ .sync-to-my-prompts-btn svg {
425
+ color: #ffffff;
426
+ stroke: #ffffff;
427
+ }
428
+
429
+ /* 同步到我的提示词弹窗样式 */
430
+ .sync-prompt-modal {
431
+ position: fixed;
432
+ inset: 0;
433
+ background: rgba(0, 0, 0, 0.5);
434
+ display: flex;
435
+ align-items: center;
436
+ justify-content: center;
437
+ z-index: 2100;
438
+ opacity: 0;
439
+ visibility: hidden;
440
+ transition: all 0.3s ease;
441
+ }
442
+
443
+ .sync-prompt-modal.active {
444
+ opacity: 1;
445
+ visibility: visible;
446
+ }
447
+
448
+ .sync-prompt-modal-content {
449
+ width: 90%;
450
+ max-width: 500px;
451
+ background: white;
452
+ border-radius: 16px;
453
+ overflow: hidden;
454
+ transform: translateY(20px);
455
+ transition: transform 0.3s ease;
456
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
457
+ }
458
+
459
+ .sync-prompt-modal.active .sync-prompt-modal-content {
460
+ transform: translateY(0);
461
+ }
462
+
463
+ .recommended-prompt-modal-header {
464
+ padding: 16px 24px;
465
+ display: flex;
466
+ justify-content: space-between;
467
+ align-items: center;
468
+ background: #fafafa;
469
+ border-bottom: 1px solid #eee;
470
+ }
471
+
472
+ .recommended-prompt-modal-header h3 {
473
+ font-size: 18px;
474
+ font-weight: 600;
475
+ color: #333;
476
+ margin: 0;
477
+ display: flex;
478
+ align-items: center;
479
+ gap: 8px;
480
+ }
481
+
482
+ .sync-prompt-modal-header {
483
+ padding: 16px 24px;
484
+ display: flex;
485
+ justify-content: space-between;
486
+ align-items: center;
487
+ background: #fafafa;
488
+ border-bottom: 1px solid #eee;
489
+ }
490
+
491
+ .sync-prompt-modal-header h3 {
492
+ font-size: 18px;
493
+ font-weight: 600;
494
+ color: #333;
495
+ margin: 0;
496
+ display: flex;
497
+ align-items: center;
498
+ gap: 8px;
499
+ }
500
+
501
+ .sync-prompt-modal-header h3 {
502
+ font-size: 18px;
503
+ font-weight: 600;
504
+ color: #333;
505
+ margin: 0;
506
+ display: flex;
507
+ align-items: center;
508
+ gap: 8px;
509
+ }
510
+
511
+ .recommended-prompt-modal-close {
512
+ width: 32px;
513
+ height: 32px;
514
+ border: none;
515
+ background: transparent;
516
+ border-radius: 8px;
517
+ color: #666;
518
+ cursor: pointer;
519
+ display: flex;
520
+ align-items: center;
521
+ justify-content: center;
522
+ transition: all 0.2s ease;
523
+ }
524
+
525
+ .recommended-prompt-modal-close:hover {
526
+ background: #f0f0f0;
527
+ color: #333;
528
+ }
529
+
530
+ .sync-prompt-modal-close {
531
+ width: 32px;
532
+ height: 32px;
533
+ border: none;
534
+ background: transparent;
535
+ border-radius: 8px;
536
+ color: #666;
537
+ cursor: pointer;
538
+ display: flex;
539
+ align-items: center;
540
+ justify-content: center;
541
+ transition: all 0.2s ease;
542
+ }
543
+
544
+ .sync-prompt-modal-close:hover {
545
+ background: #f0f0f0;
546
+ color: #333;
547
+ }
548
+
549
+ .sync-prompt-modal-body {
550
+ padding: 24px;
551
+ }
552
+
553
+ .sync-prompt-form .form-group {
554
+ margin-bottom: 20px;
555
+ }
556
+
557
+ .sync-prompt-form label {
558
+ display: block;
559
+ margin-bottom: 8px;
560
+ font-size: 14px;
561
+ font-weight: 500;
562
+ color: #333;
563
+ }
564
+
565
+ .sync-prompt-form select {
566
+ width: 100%;
567
+ padding: 12px 16px;
568
+ border: 1px solid #e0e0e0;
569
+ border-radius: 8px;
570
+ font-size: 14px;
571
+ background: white;
572
+ transition: all 0.2s ease;
573
+ }
574
+
575
+ .sync-prompt-form input {
576
+ width: 100%;
577
+ padding: 12px 16px;
578
+ border: 1px solid #e0e0e0;
579
+ border-radius: 8px;
580
+ font-size: 14px;
581
+ background: white;
582
+ transition: all 0.2s ease;
583
+ }
584
+
585
+ .sync-prompt-form input:focus,
586
+ .sync-prompt-form select:focus {
587
+ outline: none;
588
+ border-color: #393939;
589
+ box-shadow: 0 0 0 3px rgba(57, 57, 57, 0.1);
590
+ }
591
+
592
+ .sync-prompt-form select:focus {
593
+ outline: none;
594
+ border-color: #393939;
595
+ box-shadow: 0 0 0 3px rgba(57, 57, 57, 0.1);
596
+ }
597
+
598
+ .sync-prompt-modal-footer {
599
+ padding: 16px 24px;
600
+ border-top: 1px solid #eee;
601
+ display: flex;
602
+ justify-content: flex-end;
603
+ gap: 12px;
604
+ background: #fafafa;
605
+ }
606
+
607
+ /* 滚动动画 */
608
+ .recommended-prompts-list.sliding {
609
+ transition: transform 0.5s cubic-bezier(0.25, 0.1, 0.25, 1);
610
+ }