feat(M10/M3/M2): FR-M4/M6/X1/X2/B6/D1/D3 元数据/导出/弹层/迁移——EditorToolbar 加星标按钮(M4); DocMeta 加 createdAt+frontmatter 读写+DocInfoPanel 显示+创建时写入(M6); copyMd 失败 catch+错误提示(X1); @media print 干净排版+hljs配色(X2); SettingsPanel/CheatSheet Esc 关闭(B6); migration-service 旧版板块转换+init+switch 检测(D1/D3); meta-export E2E 3 项

This commit is contained in:
hunter-dev
2026-08-26 15:48:22 +08:00
parent 52474012c0
commit 55dedcbcf2
13 changed files with 206 additions and 47 deletions
+23 -1
View File
@@ -72,4 +72,26 @@ html, body, #root { margin: 0; height: 100%; }
}
.tiptap-wrap .ProseMirror p.is-editor-empty:first-child::before {
content: attr(data-placeholder); color: var(--text-tertiary); pointer-events: none; float: left;
}
}
/* FR-X2:打印/另存为 PDF 干净排版 + 代码语法高亮 */
@media print {
body * { visibility: hidden; }
.tiptap-wrap, .tiptap-wrap * { visibility: visible; }
.tiptap-wrap { position: absolute; left: 0; top: 0; width: 100%; padding: 20px; }
.tiptap-wrap .ProseMirror { font-size: 14px !important; color: #000 !important; }
.tiptap-wrap .ProseMirror pre { background: #f4f4f4 !important; color: #333 !important; border: 1px solid #ddd; padding: 8px; border-radius: 4px; overflow: visible; }
.tiptap-wrap .ProseMirror pre code { color: #333; }
.tiptap-wrap .ProseMirror h1, .tiptap-wrap .ProseMirror h2, .tiptap-wrap .ProseMirror h3 { color: #000; }
.tiptap-wrap .ProseMirror blockquote { border-color: #ccc; color: #555; }
.tiptap-wrap .ProseMirror a { color: #0066cc; text-decoration: underline; }
}
/* FR-A12:统一过渡动效 */
button { transition: background 0.15s, color 0.15s, opacity 0.15s; }
button:hover { opacity: 0.85; }
@keyframes panel-slide-in {
from { opacity: 0; transform: translateY(-8px); }
to { opacity: 1; transform: translateY(0); }
}
.panel-slide-in { animation: panel-slide-in 0.2s ease-out; }