侧边栏样式调整
This commit is contained in:
@@ -209,7 +209,7 @@ listen("menu-event", (event) => {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- Right: Editor area -->
|
<!-- Right: Editor area -->
|
||||||
<main class="flex-1 flex flex-col overflow-y-auto p-3">
|
<main class="flex-1 flex flex-col overflow-y-auto">
|
||||||
<MarkdownEditor
|
<MarkdownEditor
|
||||||
v-model="content"
|
v-model="content"
|
||||||
placeholder="输入 Markdown 内容... 支持标题、粗体、斜体、代码块等 ✨"
|
placeholder="输入 Markdown 内容... 支持标题、粗体、斜体、代码块等 ✨"
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ const rootEntry = computed<DirEntry | null>(() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// ---- sidebar view mode ----
|
// ---- sidebar view mode ----
|
||||||
type ViewMode = "folder" | "search" | "outline";
|
type ViewMode = "folder" | "search" | "outline" | "setting";
|
||||||
const activeView = ref<ViewMode>("folder");
|
const activeView = ref<ViewMode>("folder");
|
||||||
const expanded = ref(true);
|
const expanded = ref(true);
|
||||||
|
|
||||||
@@ -124,7 +124,7 @@ const showSettings = ref(false);
|
|||||||
<!-- ===== Settings ===== -->
|
<!-- ===== Settings ===== -->
|
||||||
<button
|
<button
|
||||||
class="p-2 rounded-md transition-colors mt-auto"
|
class="p-2 rounded-md transition-colors mt-auto"
|
||||||
:class="activeView === 'outline' ? 'text-[#bf6a3b] bg-[#ede8de]' : 'text-[#b8b3a8] hover:text-[#5c574e] hover:bg-[#ede8de]'"
|
:class="activeView === 'setting' ? 'text-[#bf6a3b] bg-[#ede8de]' : 'text-[#b8b3a8] hover:text-[#5c574e] hover:bg-[#ede8de]'"
|
||||||
title="设置"
|
title="设置"
|
||||||
@click="showSettings = true"
|
@click="showSettings = true"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -64,157 +64,8 @@ watch(
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
class="flex flex-col flex-1 w-full border border-[#e0dbcf] bg-white shadow-2xl overflow-hidden"
|
class="flex flex-col flex-1 w-full border-[#e0dbcf] bg-white shadow-2xl overflow-y-auto"
|
||||||
>
|
>
|
||||||
<!-- Toolbar -->
|
|
||||||
<div
|
|
||||||
v-if="editor"
|
|
||||||
class="flex flex-wrap items-center gap-0.5 px-3 py-2 border-b border-[#e0dbcf] bg-[#f4f1eb]/80 backdrop-blur"
|
|
||||||
>
|
|
||||||
<!-- Headings -->
|
|
||||||
<button
|
|
||||||
v-for="level in ([1, 2, 3] as const)"
|
|
||||||
:key="'h' + level"
|
|
||||||
:class="[
|
|
||||||
'px-2.5 py-1.5 text-xs font-semibold rounded-md transition-colors',
|
|
||||||
editor.isActive('heading', { level })
|
|
||||||
? 'bg-[#bf6a3b] text-white'
|
|
||||||
: 'text-[#5c574e] hover:bg-[#e0dbcf] hover:text-[#38342e]',
|
|
||||||
]"
|
|
||||||
@click="editor.chain().focus().toggleHeading({ level }).run()"
|
|
||||||
>
|
|
||||||
H{{ level }}
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<span class="w-px h-6 bg-[#d4cfc4] mx-1" />
|
|
||||||
|
|
||||||
<!-- Inline formatting -->
|
|
||||||
<button
|
|
||||||
:class="[
|
|
||||||
'px-2.5 py-1.5 text-xs font-medium rounded-md transition-colors',
|
|
||||||
editor.isActive('bold')
|
|
||||||
? 'bg-[#bf6a3b] text-white'
|
|
||||||
: 'text-[#5c574e] hover:bg-[#e0dbcf] hover:text-[#38342e]',
|
|
||||||
]"
|
|
||||||
@click="editor.chain().focus().toggleBold().run()"
|
|
||||||
>
|
|
||||||
<i class="ri-bold"></i>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
:class="[
|
|
||||||
'px-2.5 py-1.5 text-xs font-medium rounded-md transition-colors',
|
|
||||||
editor.isActive('italic')
|
|
||||||
? 'bg-[#bf6a3b] text-white'
|
|
||||||
: 'text-[#5c574e] hover:bg-[#e0dbcf] hover:text-[#38342e]',
|
|
||||||
]"
|
|
||||||
@click="editor.chain().focus().toggleItalic().run()"
|
|
||||||
>
|
|
||||||
<i class="ri-italic"></i>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
:class="[
|
|
||||||
'px-2.5 py-1.5 text-xs font-medium rounded-md transition-colors',
|
|
||||||
editor.isActive('strike')
|
|
||||||
? 'bg-[#bf6a3b] text-white'
|
|
||||||
: 'text-[#5c574e] hover:bg-[#e0dbcf] hover:text-[#38342e]',
|
|
||||||
]"
|
|
||||||
@click="editor.chain().focus().toggleStrike().run()"
|
|
||||||
>
|
|
||||||
<i class="ri-strikethrough"></i>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
:class="[
|
|
||||||
'px-2.5 py-1.5 text-xs font-medium rounded-md transition-colors',
|
|
||||||
editor.isActive('code')
|
|
||||||
? 'bg-[#bf6a3b] text-white'
|
|
||||||
: 'text-[#5c574e] hover:bg-[#e0dbcf] hover:text-[#38342e]',
|
|
||||||
]"
|
|
||||||
@click="editor.chain().focus().toggleCode().run()"
|
|
||||||
>
|
|
||||||
<i class="ri-code-line"></i>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<span class="w-px h-6 bg-[#d4cfc4] mx-1" />
|
|
||||||
|
|
||||||
<!-- Block elements -->
|
|
||||||
<button
|
|
||||||
:class="[
|
|
||||||
'px-2.5 py-1.5 text-xs font-medium rounded-md transition-colors',
|
|
||||||
editor.isActive('blockquote')
|
|
||||||
? 'bg-[#bf6a3b] text-white'
|
|
||||||
: 'text-[#5c574e] hover:bg-[#e0dbcf] hover:text-[#38342e]',
|
|
||||||
]"
|
|
||||||
@click="editor.chain().focus().toggleBlockquote().run()"
|
|
||||||
>
|
|
||||||
<i class="ri-double-quotes-l"></i>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
:class="[
|
|
||||||
'px-2.5 py-1.5 text-xs font-medium rounded-md transition-colors',
|
|
||||||
editor.isActive('codeBlock')
|
|
||||||
? 'bg-[#bf6a3b] text-white'
|
|
||||||
: 'text-[#5c574e] hover:bg-[#e0dbcf] hover:text-[#38342e]',
|
|
||||||
]"
|
|
||||||
@click="editor.chain().focus().toggleCodeBlock().run()"
|
|
||||||
>
|
|
||||||
<i class="ri-code-box-line"></i>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<span class="w-px h-6 bg-[#d4cfc4] mx-1" />
|
|
||||||
|
|
||||||
<!-- Lists -->
|
|
||||||
<button
|
|
||||||
:class="[
|
|
||||||
'px-2.5 py-1.5 text-xs font-medium rounded-md transition-colors',
|
|
||||||
editor.isActive('bulletList')
|
|
||||||
? 'bg-[#bf6a3b] text-white'
|
|
||||||
: 'text-[#5c574e] hover:bg-[#e0dbcf] hover:text-[#38342e]',
|
|
||||||
]"
|
|
||||||
@click="editor.chain().focus().toggleBulletList().run()"
|
|
||||||
>
|
|
||||||
<i class="ri-list-unordered"></i>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
:class="[
|
|
||||||
'px-2.5 py-1.5 text-xs font-medium rounded-md transition-colors',
|
|
||||||
editor.isActive('orderedList')
|
|
||||||
? 'bg-[#bf6a3b] text-white'
|
|
||||||
: 'text-[#5c574e] hover:bg-[#e0dbcf] hover:text-[#38342e]',
|
|
||||||
]"
|
|
||||||
@click="editor.chain().focus().toggleOrderedList().run()"
|
|
||||||
>
|
|
||||||
<i class="ri-list-ordered"></i>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<span class="w-px h-6 bg-[#d4cfc4] mx-1" />
|
|
||||||
|
|
||||||
<!-- Horizontal rule -->
|
|
||||||
<button
|
|
||||||
class="px-2.5 py-1.5 text-xs font-medium rounded-md text-[#5c574e] hover:bg-[#e0dbcf] hover:text-[#38342e] transition-colors"
|
|
||||||
@click="editor.chain().focus().setHorizontalRule().run()"
|
|
||||||
>
|
|
||||||
<i class="ri-separator"></i>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<span class="flex-1" />
|
|
||||||
|
|
||||||
<!-- Undo / Redo -->
|
|
||||||
<button
|
|
||||||
class="px-2.5 py-1.5 text-xs font-medium rounded-md text-[#5c574e] hover:bg-[#e0dbcf] hover:text-[#38342e] transition-colors disabled:opacity-30 disabled:cursor-not-allowed"
|
|
||||||
:disabled="!editor.can().chain().focus().undo().run()"
|
|
||||||
@click="editor.chain().focus().undo().run()"
|
|
||||||
>
|
|
||||||
<i class="ri-arrow-go-back-line"></i>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="px-2.5 py-1.5 text-xs font-medium rounded-md text-[#5c574e] hover:bg-[#e0dbcf] hover:text-[#38342e] transition-colors disabled:opacity-30 disabled:cursor-not-allowed"
|
|
||||||
:disabled="!editor.can().chain().focus().redo().run()"
|
|
||||||
@click="editor.chain().focus().redo().run()"
|
|
||||||
>
|
|
||||||
<i class="ri-arrow-go-forward-line"></i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Editor content -->
|
<!-- Editor content -->
|
||||||
<EditorContent :editor="editor" class="tiptap-editor flex-1 flex flex-col" />
|
<EditorContent :editor="editor" class="tiptap-editor flex-1 flex flex-col" />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user