From 766faacbcf5098bf4ea48399b905fc3842da04df Mon Sep 17 00:00:00 2001 From: tianma-if Date: Mon, 7 Sep 2026 13:24:19 +0800 Subject: [PATCH] refactor(web): unify compact editor chrome --- .../src/components/DiagramEditorPane.test.mjs | 6 ++++ apps/web/src/components/DiagramEditorPane.tsx | 8 +++-- apps/web/src/components/DiagramToolbar.tsx | 4 ++- apps/web/src/components/EditorPane.tsx | 32 +++++++++++-------- apps/web/src/components/EditorToolbar.tsx | 4 ++- .../src/components/MemoEditorChromeDensity.ts | 11 +++++++ .../MemoEditorHeaderActions.test.mjs | 13 ++++++++ 7 files changed, 61 insertions(+), 17 deletions(-) create mode 100644 apps/web/src/components/MemoEditorChromeDensity.ts diff --git a/apps/web/src/components/DiagramEditorPane.test.mjs b/apps/web/src/components/DiagramEditorPane.test.mjs index b8c59bf0..b7160e95 100644 --- a/apps/web/src/components/DiagramEditorPane.test.mjs +++ b/apps/web/src/components/DiagramEditorPane.test.mjs @@ -256,6 +256,12 @@ describe("diagram editor canvas surface", () => { expect(source).toContain('graph.startBatch("quick-create")'); }); + test("keeps the desktop header compact without shrinking mobile controls", () => { + expect(source).toContain("MEMO_EDITOR_TOP_ROW_CLASS_NAME"); + expect(source).toContain("MEMO_EDITOR_TITLE_ROW_CLASS_NAME"); + expect(toolbarSource).toContain("MEMO_EDITOR_TOOLBAR_PADDING_CLASS_NAME"); + }); + test("repaints the graph when the application appearance changes", () => { expect(source).toContain("const { resolvedTheme } = useAppearanceTheme();"); expect(source).toContain("applyGraphPalette(graph, themeRef.current, document.kind, resolvedTheme);"); diff --git a/apps/web/src/components/DiagramEditorPane.tsx b/apps/web/src/components/DiagramEditorPane.tsx index 15778f8c..6c840046 100644 --- a/apps/web/src/components/DiagramEditorPane.tsx +++ b/apps/web/src/components/DiagramEditorPane.tsx @@ -90,6 +90,10 @@ import { ShareMemoDialog } from "@/components/dialogs/ShareMemoDialog"; import { ClipboardCopyNotice } from "@/components/ClipboardCopyNotice"; import { DiagramToolbar, DiagramToolbarAddTrigger } from "@/components/DiagramToolbar"; import { MemoEditorHeaderActions } from "@/components/MemoEditorHeaderActions"; +import { + MEMO_EDITOR_TITLE_ROW_CLASS_NAME, + MEMO_EDITOR_TOP_ROW_CLASS_NAME, +} from "@/components/MemoEditorChromeDensity"; import { EditorNoteSearchBar } from "@/components/editor/EditorNoteSearchBar"; import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@/components/ui/collapsible"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"; @@ -2180,7 +2184,7 @@ export const DiagramEditorPane = ({
-
+
@@ -2340,7 +2344,7 @@ export const DiagramEditorPane = ({
-
+
{ const { t } = useTranslation(); return ( -
+
{leading ? <>{leading} : null} {t("diagram.undo")} {t("diagram.redo")} diff --git a/apps/web/src/components/EditorPane.tsx b/apps/web/src/components/EditorPane.tsx index 7a33fa47..3e561886 100644 --- a/apps/web/src/components/EditorPane.tsx +++ b/apps/web/src/components/EditorPane.tsx @@ -41,6 +41,10 @@ import { import { Button } from "@/components/ui/button"; import { ClipboardCopyNotice } from "@/components/ClipboardCopyNotice"; import { MemoEditorHeaderActions } from "@/components/MemoEditorHeaderActions"; +import { + MEMO_EDITOR_TEXT_TITLE_REGION_CLASS_NAME, + MEMO_EDITOR_TOP_ROW_CLASS_NAME, +} from "@/components/MemoEditorChromeDensity"; import { MemoTitleInput } from "@/components/MemoTitleInput"; import { Input } from "@/components/ui/input"; import { @@ -3807,7 +3811,7 @@ const RichEditorPane = ({ /> )}
-
+
-
- { - setTitle(nextTitle); - persistCurrentDraft(nextTitle, tagsText, getMobilePlainTextValue()); - markDirty(); - }} - placeholder={t("common.untitledMemo")} - /> -
+
+
+ { + setTitle(nextTitle); + persistCurrentDraft(nextTitle, tagsText, getMobilePlainTextValue()); + markDirty(); + }} + placeholder={t("common.untitledMemo")} + /> +
+