Files
halo-dark-mode-plugin/ui/src/styles/overrides/editor.css
T

263 lines
8.1 KiB
CSS

/* ============================================================
Halo Dark Mode — 富文本编辑器覆盖
@halo-dev/richtext-editor + TipTap / ProseMirror
+ Bytemd (Markdown 编辑器) + CodeMirror
============================================================ */
[data-halo-theme="dark"] {
/* ===== Bytemd Markdown 编辑器 ===== */
.bytemd {
background-color: var(--halo-bg-card) !important;
color: var(--halo-text-primary) !important;
border-color: var(--halo-border-base) !important;
}
.bytemd-toolbar {
background-color: var(--halo-bg-content) !important;
color: var(--halo-text-primary) !important;
border-color: var(--halo-border-light) !important;
}
.bytemd-toolbar-icon {
color: var(--halo-text-secondary) !important;
}
.bytemd-toolbar-icon:hover {
background-color: var(--halo-bg-hover) !important;
color: var(--halo-text-primary) !important;
}
.bytemd-toolbar-tab-active,
.bytemd-toolbar-icon-active {
color: var(--halo-accent-primary) !important;
}
.bytemd-editor,
.bytemd-editor .CodeMirror {
background-color: var(--halo-bg-input) !important;
color: var(--halo-text-primary) !important;
}
.bytemd-preview {
background-color: var(--halo-bg-card) !important;
color: var(--halo-text-primary) !important;
}
.bytemd-status,
.bytemd-status-right,
.bytemd-status-left {
background-color: var(--halo-bg-content) !important;
color: var(--halo-text-secondary) !important;
border-color: var(--halo-border-light) !important;
}
.bytemd-dropdown,
.bytemd-dropdown-menu,
[class*="bytemd-dropdown"] {
background-color: var(--halo-bg-dropdown) !important;
color: var(--halo-text-primary) !important;
border-color: var(--halo-border-base) !important;
}
.bytemd-dropdown-title {
color: var(--halo-text-secondary) !important;
}
.bytemd-dropdown-item {
color: var(--halo-text-primary) !important;
}
.bytemd-dropdown-item:hover {
background-color: var(--halo-bg-hover) !important;
}
.bytemd-sidebar,
.bytemd-toc,
.bytemd-toc ul,
.bytemd-toc li {
background-color: var(--halo-bg-content) !important;
color: var(--halo-text-secondary) !important;
}
.bytemd-toc-active {
background-color: var(--halo-bg-hover) !important;
color: var(--halo-accent-primary) !important;
}
.bytemd-floating-btn {
background-color: var(--halo-bg-card) !important;
color: var(--halo-text-secondary) !important;
border-color: var(--halo-border-base) !important;
}
.bytemd-floating-btn:hover {
background-color: var(--halo-bg-hover) !important;
}
.bytemd-floating-btn.active {
background-color: var(--halo-bg-active) !important;
color: var(--halo-accent-primary) !important;
}
.bytemd-code-theme-toggle,
.bytemd-copy-code-btn,
[class*="bytemd"] button {
color: var(--halo-text-secondary) !important;
}
.bytemd-copy-code-btn:hover,
[class*="bytemd"] button:hover {
color: var(--halo-text-primary) !important;
background-color: var(--halo-bg-hover) !important;
}
/* 编辑器内 markdown 正文 */
.bytemd-preview .markdown-body,
.bytemd-editor .markdown-body {
color: var(--halo-text-primary) !important;
}
.bytemd-preview .markdown-body p,
.bytemd-preview .markdown-body li,
.bytemd-preview .markdown-body h1,
.bytemd-preview .markdown-body h2,
.bytemd-preview .markdown-body h3,
.bytemd-preview .markdown-body h4,
.bytemd-preview .markdown-body td,
.bytemd-preview .markdown-body th,
.bytemd-preview .markdown-body blockquote {
color: var(--halo-text-primary) !important;
}
.bytemd-preview .markdown-body code,
.bytemd-preview .markdown-body pre,
.bytemd-preview .markdown-body pre code {
background-color: oklch(22% 0.02 250) !important;
color: oklch(85% 0.05 160) !important;
}
.bytemd-preview .markdown-body table tr,
.bytemd-preview .markdown-body table tr:nth-child(2n) {
background-color: var(--halo-bg-card) !important;
}
.bytemd-preview .markdown-body table td,
.bytemd-preview .markdown-body table th {
border-color: var(--halo-border-base) !important;
}
/* ===== CodeMirror 代码编辑器 ===== */
.CodeMirror {
background-color: var(--halo-bg-input) !important;
color: var(--halo-text-primary) !important;
}
.CodeMirror-gutters {
background-color: var(--halo-bg-content) !important;
border-color: var(--halo-border-light) !important;
}
.CodeMirror-linenumber {
color: var(--halo-text-tertiary) !important;
}
.CodeMirror-cursor {
border-color: var(--halo-text-primary) !important;
}
.CodeMirror-selected {
background-color: oklch(30% 0.04 160 / 50%) !important;
}
.cm-s-default .cm-header,
.cm-s-default .cm-strong,
.cm-s-default .cm-em,
.cm-s-default .cm-link,
.cm-s-default .cm-url {
color: var(--halo-text-primary) !important;
}
.cm-s-default .cm-comment {
color: var(--halo-text-tertiary) !important;
}
.cm-s-default .cm-quote {
color: var(--halo-accent-success) !important;
}
.cm-s-default .cm-tag {
color: var(--halo-accent-primary) !important;
}
.CodeMirror pre.CodeMirror-placeholder {
color: var(--halo-text-tertiary) !important;
}
.CodeMirror-activeline-background {
background-color: var(--halo-bg-hover) !important;
}
.CodeMirror-lines {
color: var(--halo-text-primary) !important;
}
/* ===== ProseMirror / TipTap 编辑器主体 ===== */
.ProseMirror,
.tiptap,
[class*="editor-content"] {
color: var(--halo-text-primary);
background-color: var(--halo-bg-input);
}
/* ===== 编辑器菜单栏 ===== */
.editor-toolbar,
.editor-menubar,
[class*="editor-toolbar"],
[class*="editor-menubar"] {
background-color: var(--halo-bg-card);
border-color: var(--halo-border-base);
}
.editor-toolbar button,
.editor-menubar button {
color: var(--halo-text-secondary);
}
.editor-toolbar button:hover,
.editor-menubar button:hover,
.editor-toolbar button.is-active,
.editor-menubar button.is-active {
background-color: var(--halo-bg-hover);
color: var(--halo-text-primary);
}
/* ===== 代码块 ===== */
.ProseMirror pre,
.ProseMirror code,
.tiptap pre,
.tiptap code {
background-color: oklch(20% 0.015 250);
color: oklch(85% 0.03 160);
}
/* ===== Bubble menu / floating menu ===== */
.tippy-box,
.tiptap-bubble-menu,
.floating-menu {
background-color: var(--halo-bg-dropdown);
border-color: var(--halo-border-base);
color: var(--halo-text-primary);
}
/* ===== 编辑器占位符 ===== */
.ProseMirror p.is-editor-empty:first-child::before {
color: var(--halo-text-tertiary);
}
/* ===== 链接 ===== */
.ProseMirror a,
.tiptap a {
color: var(--halo-text-link);
}
/* ===== 选中文字 ===== */
.ProseMirror ::selection,
.tiptap ::selection {
background-color: oklch(30% 0.04 160 / 50%);
}
}
/* ===== Monaco Editor(日志查看器,JS 主题优先,此处仅兜底) ===== */
html[data-halo-theme="dark"] .monaco-editor.vs,
html[data-halo-theme="dark"] .monaco-editor.vs .margin,
html[data-halo-theme="dark"] .monaco-editor.vs .lines-content,
html[data-halo-theme="dark"] .monaco-editor.vs .monaco-scrollable-element {
background-color: var(--halo-bg-input) !important;
color: var(--halo-text-primary) !important;
}
html[data-halo-theme="dark"] .monaco-editor.vs .line-numbers {
color: var(--halo-text-tertiary) !important;
}
html[data-halo-theme="dark"] .monaco-editor.vs .cursor {
border-color: var(--halo-text-primary) !important;
}
html[data-halo-theme="dark"] .monaco-editor.vs .selected-text,
html[data-halo-theme="dark"] .monaco-editor.vs .view-overlays .selected-text {
background-color: oklch(30% 0.04 160 / 50%) !important;
}
html[data-halo-theme="dark"] .monaco-editor.vs .find-widget,
html[data-halo-theme="dark"] .monaco-editor.vs .monaco-hover {
background-color: var(--halo-bg-dropdown) !important;
color: var(--halo-text-primary) !important;
}
/* ===== 编辑器链接(覆盖通用链接色规则) ===== */
html[data-halo-theme="dark"] .ProseMirror a,
html[data-halo-theme="dark"] .tiptap a {
color: var(--halo-text-link) !important;
}