From aa572febd407b92eaa5dbc507063d67180b3fc2f Mon Sep 17 00:00:00 2001 From: 01zulfi <85733202+01zulfi@users.noreply.github.com> Date: Sat, 29 Nov 2025 12:36:09 +0500 Subject: [PATCH] editor: add toggle text color keybinding (#9010) Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com> --- docs/help/contents/keyboard-shortcuts.md | 125 +++++++++--------- packages/common/src/utils/keybindings.ts | 6 + .../editor/src/extensions/key-map/key-map.ts | 7 + packages/editor/src/toolbar/tools/colors.tsx | 2 +- 4 files changed, 77 insertions(+), 63 deletions(-) diff --git a/docs/help/contents/keyboard-shortcuts.md b/docs/help/contents/keyboard-shortcuts.md index bd6a38f3d..1a829035a 100644 --- a/docs/help/contents/keyboard-shortcuts.md +++ b/docs/help/contents/keyboard-shortcuts.md @@ -9,71 +9,72 @@ The following keyboard shortcuts will help you navigate Notesnook faster. ### General -| Description | Web | Windows/Linux | Mac | -| -------------------------------------------------- | ------ | ------------- | --- | -| Search in notes list view if editor is not focused | Ctrl F | Ctrl F | ⌘ F | -| Settings | Ctrl , | Ctrl , | ⌘ , | -| Keyboard shortcuts | Ctrl / | Ctrl / | ⌘ / | -| New note | - | Ctrl N | ⌘ N | +| Description | Web | Windows/Linux | Mac | +| --- | --- | --- | --- | +| Search in notes list view if editor is not focused | Ctrl F | Ctrl F | ⌘ F | +| Settings | Ctrl , | Ctrl , | ⌘ , | +| Keyboard shortcuts | Ctrl / | Ctrl / | ⌘ / | +| New note | - | Ctrl N | ⌘ N | ### Navigation -| Description | Web | Windows/Linux | Mac | -| ---------------- | ------------------------- | ------------- | ------- | -| Next tab | Ctrl Alt → / Ctrl Alt ⇧ → | Ctrl tab | ⌘ tab | -| Previous tab | Ctrl Alt ← / Ctrl Alt ⇧ ← | Ctrl ⇧ tab | ⌘ ⇧ tab | -| Command palette | Ctrl ⇧ P | Ctrl ⇧ P | ⌘ ⇧ P | -| Quick open | Ctrl P | Ctrl P | ⌘ P | -| New tab | - | Ctrl T | ⌘ T | -| Close active tab | - | Ctrl W | ⌘ W | -| Close all tabs | - | Ctrl ⇧ W | ⌘ ⇧ W | +| Description | Web | Windows/Linux | Mac | +| --- | --- | --- | --- | +| Next tab | Ctrl Alt → / Ctrl Alt ⇧ → | Ctrl tab | ⌘ tab | +| Previous tab | Ctrl Alt ← / Ctrl Alt ⇧ ← | Ctrl ⇧ tab | ⌘ ⇧ tab | +| Command palette | Ctrl ⇧ P | Ctrl ⇧ P | ⌘ ⇧ P | +| Quick open | Ctrl P | Ctrl P | ⌘ P | +| New tab | - | Ctrl T | ⌘ T | +| Close active tab | - | Ctrl W | ⌘ W | +| Close all tabs | - | Ctrl ⇧ W | ⌘ ⇧ W | ### Editor -| Description | Web | Windows/Linux | Mac | -| ---------------------------------- | ----------------- | ----------------- | ----------- | -| Add attachment | Ctrl ⇧ A | Ctrl ⇧ A | ⌘ ⇧ A | -| Insert blockquote | Ctrl ⇧ B | Ctrl ⇧ B | ⌘ ⇧ B | -| Toggle bold | Ctrl B | Ctrl B | ⌘ B | -| Toggle bullet list | Ctrl ⇧ 8 | Ctrl ⇧ 8 | ⌘ ⇧ 8 | -| Toggle check list | Ctrl ⇧ 9 | Ctrl ⇧ 9 | ⌘ ⇧ 9 | -| Split list item | ↵ | ↵ | ↵ | -| Lift list item | ⇧ Tab | ⇧ Tab | ⇧ Tab | -| Sink list item | Ctrl ⇧ Down | Ctrl ⇧ Down | ⌘ ⇧ Down | -| Toggle code | Ctrl E | Ctrl E | ⌘ E | -| Toggle code block | Ctrl ⇧ C | Ctrl ⇧ C | ⌘ ⇧ C | -| Insert date | Alt D | Alt D | ⌥ D | -| Insert time | Alt T | Alt T | ⌥ T | -| Insert date and time | Ctrl Alt D | Ctrl Alt D | ⌘ ⌥ D | -| Insert date and time with timezone | Ctrl Alt Z | Ctrl Alt Z | ⌘ ⌥ Z | -| Increase font size | Ctrl [ | Ctrl [ | ⌘ [ | -| Decrease font size | Ctrl ] | Ctrl ] | ⌘ ] | -| Insert paragraph | Ctrl ⇧ 0 | Ctrl ⇧ 0 | ⌘ ⇧ 0 | -| Insert heading 1 | Ctrl Alt 1 | Ctrl Alt 1 | ⌘ ⌥ 1 | -| Insert heading 2 | Ctrl Alt 2 | Ctrl Alt 2 | ⌘ ⌥ 2 | -| Insert heading 3 | Ctrl Alt 3 | Ctrl Alt 3 | ⌘ ⌥ 3 | -| Insert heading 4 | Ctrl Alt 4 | Ctrl Alt 4 | ⌘ ⌥ 4 | -| Insert heading 5 | Ctrl Alt 5 | Ctrl Alt 5 | ⌘ ⌥ 5 | -| Insert heading 6 | Ctrl Alt 6 | Ctrl Alt 6 | ⌘ ⌥ 6 | -| Undo | Ctrl Z | Ctrl Z | ⌘ Z | -| Redo | Ctrl ⇧ Z / Ctrl Y | Ctrl ⇧ Z / Ctrl Y | ⌘ ⇧ Z / ⌘ Y | -| Add image | Ctrl ⇧ I | Ctrl ⇧ I | ⌘ ⇧ I | -| Toggle italic | Ctrl I | Ctrl I | ⌘ I | -| Remove formatting in selection | Ctrl \ | Ctrl \ | ⌘ \ | -| Insert internal link | Ctrl ⇧ K | Ctrl ⇧ K | ⌘ ⇧ K | -| Insert link | Ctrl K | Ctrl K | ⌘ K | -| Insert math block | Ctrl ⇧ M | Ctrl ⇧ M | ⌘ ⇧ M | -| Toggle ordered list | Ctrl ⇧ 7 | Ctrl ⇧ 7 | ⌘ ⇧ 7 | -| Toggle outline list | Ctrl ⇧ O | Ctrl ⇧ O | ⌘ ⇧ O | -| Toggle outline list expand | Ctrl Space | Ctrl Space | ⌘ Space | -| Open search | Ctrl F | Ctrl F | ⌘ F | -| Toggle strike | Ctrl ⇧ S | Ctrl ⇧ S | ⌘ ⇧ S | -| Toggle subscript | Ctrl , | Ctrl , | ⌘ , | -| Toggle superscript | Ctrl . | Ctrl . | ⌘ . | -| Toggle task list | Ctrl ⇧ T | Ctrl ⇧ T | ⌘ ⇧ T | -| Text align center | Ctrl ⇧ E | Ctrl ⇧ E | ⌘ ⇧ E | -| Text align justify | Ctrl ⇧ J | Ctrl ⇧ J | ⌘ ⇧ J | -| Text align left | Ctrl ⇧ L | Ctrl ⇧ L | ⌘ ⇧ L | -| Text align right | Ctrl ⇧ R | Ctrl ⇧ R | ⌘ ⇧ R | -| Underline | Ctrl U | Ctrl U | ⌘ U | -| Toggle highlight | Ctrl Alt H | Ctrl Alt H | ⌘ ⌥ H | +| Description | Web | Windows/Linux | Mac | +| --- | --- | --- | --- | +| Add attachment | Ctrl ⇧ A | Ctrl ⇧ A | ⌘ ⇧ A | +| Insert blockquote | Ctrl ⇧ B | Ctrl ⇧ B | ⌘ ⇧ B | +| Toggle bold | Ctrl B | Ctrl B | ⌘ B | +| Toggle bullet list | Ctrl ⇧ 8 | Ctrl ⇧ 8 | ⌘ ⇧ 8 | +| Toggle check list | Ctrl ⇧ 9 | Ctrl ⇧ 9 | ⌘ ⇧ 9 | +| Split list item | ↵ | ↵ | ↵ | +| Lift list item | ⇧ Tab | ⇧ Tab | ⇧ Tab | +| Sink list item | Ctrl ⇧ Down | Ctrl ⇧ Down | ⌘ ⇧ Down | +| Toggle code | Ctrl E | Ctrl E | ⌘ E | +| Toggle code block | Ctrl ⇧ C | Ctrl ⇧ C | ⌘ ⇧ C | +| Insert date | Alt D | Alt D | ⌥ D | +| Insert time | Alt T | Alt T | ⌥ T | +| Insert date and time | Ctrl Alt D | Ctrl Alt D | ⌘ ⌥ D | +| Insert date and time with timezone | Ctrl Alt Z | Ctrl Alt Z | ⌘ ⌥ Z | +| Increase font size | Ctrl [ | Ctrl [ | ⌘ [ | +| Decrease font size | Ctrl ] | Ctrl ] | ⌘ ] | +| Insert paragraph | Ctrl Alt 0 | Ctrl Alt 0 | ⌘ ⌥ 0 | +| Insert heading 1 | Ctrl Alt 1 | Ctrl Alt 1 | ⌘ ⌥ 1 | +| Insert heading 2 | Ctrl Alt 2 | Ctrl Alt 2 | ⌘ ⌥ 2 | +| Insert heading 3 | Ctrl Alt 3 | Ctrl Alt 3 | ⌘ ⌥ 3 | +| Insert heading 4 | Ctrl Alt 4 | Ctrl Alt 4 | ⌘ ⌥ 4 | +| Insert heading 5 | Ctrl Alt 5 | Ctrl Alt 5 | ⌘ ⌥ 5 | +| Insert heading 6 | Ctrl Alt 6 | Ctrl Alt 6 | ⌘ ⌥ 6 | +| Undo | Ctrl Z | Ctrl Z | ⌘ Z | +| Redo | Ctrl ⇧ Z / Ctrl Y | Ctrl ⇧ Z / Ctrl Y | ⌘ ⇧ Z / ⌘ Y | +| Add image | Ctrl ⇧ I | Ctrl ⇧ I | ⌘ ⇧ I | +| Toggle italic | Ctrl I | Ctrl I | ⌘ I | +| Remove formatting in selection | Ctrl \ | Ctrl \ | ⌘ \ | +| Insert internal link | Ctrl ⇧ K | Ctrl ⇧ K | ⌘ ⇧ K | +| Insert link | Ctrl K | Ctrl K | ⌘ K | +| Insert math block | Ctrl ⇧ M | Ctrl ⇧ M | ⌘ ⇧ M | +| Toggle ordered list | Ctrl ⇧ 7 | Ctrl ⇧ 7 | ⌘ ⇧ 7 | +| Toggle outline list | Ctrl ⇧ O | Ctrl ⇧ O | ⌘ ⇧ O | +| Toggle outline list expand | Ctrl Space | Ctrl Space | ⌘ Space | +| Open search | Ctrl F | Ctrl F | ⌘ F | +| Toggle strike | Ctrl ⇧ S | Ctrl ⇧ S | ⌘ ⇧ S | +| Toggle subscript | Ctrl , | Ctrl , | ⌘ , | +| Toggle superscript | Ctrl . | Ctrl . | ⌘ . | +| Toggle task list | Ctrl ⇧ T | Ctrl ⇧ T | ⌘ ⇧ T | +| Text align center | Ctrl ⇧ E | Ctrl ⇧ E | ⌘ ⇧ E | +| Text align justify | Ctrl ⇧ J | Ctrl ⇧ J | ⌘ ⇧ J | +| Text align left | Ctrl ⇧ L | Ctrl ⇧ L | ⌘ ⇧ L | +| Text align right | Ctrl ⇧ R | Ctrl ⇧ R | ⌘ ⇧ R | +| Underline | Ctrl U | Ctrl U | ⌘ U | +| Toggle highlight | Ctrl Alt H | Ctrl Alt H | ⌘ ⌥ H | +| Toggle text color | Ctrl Alt C | Ctrl Alt C | ⌘ ⌥ C | \ No newline at end of file diff --git a/packages/common/src/utils/keybindings.ts b/packages/common/src/utils/keybindings.ts index 031e85d4e..1fbb87207 100644 --- a/packages/common/src/utils/keybindings.ts +++ b/packages/common/src/utils/keybindings.ts @@ -394,6 +394,12 @@ export const tiptapKeys = { description: "Toggle highlight", category: "Editor", type: "tiptap" + }, + toggleTextColor: { + keys: "Mod-Alt-c", + description: "Toggle text color", + category: "Editor", + type: "tiptap" } } satisfies Record; diff --git a/packages/editor/src/extensions/key-map/key-map.ts b/packages/editor/src/extensions/key-map/key-map.ts index 49627861a..e8e63dbde 100644 --- a/packages/editor/src/extensions/key-map/key-map.ts +++ b/packages/editor/src/extensions/key-map/key-map.ts @@ -23,6 +23,8 @@ import { showLinkPopup } from "../../toolbar/popups/link-popup.js"; import { isListActive } from "../../utils/list.js"; import { tiptapKeys } from "@notesnook/common"; import { isInTable } from "../table/prosemirror-tables/util.js"; +import { config } from "../../utils/config.js"; +import { DEFAULT_COLORS } from "../../toolbar/tools/colors.js"; export const KeyMap = Extension.create({ name: "key-map", @@ -71,6 +73,11 @@ export const KeyMap = Extension.create({ [tiptapKeys.insertLink.keys]: ({ editor }) => { showLinkPopup(editor); return true; + }, + [tiptapKeys.toggleTextColor.keys]: ({ editor }) => { + const color = + config.get<"string">("textColor") || DEFAULT_COLORS.text[0]; + return editor.commands.toggleMark("textStyle", { color }); } }; } diff --git a/packages/editor/src/toolbar/tools/colors.tsx b/packages/editor/src/toolbar/tools/colors.tsx index 77ea660e7..47d70f3bc 100644 --- a/packages/editor/src/toolbar/tools/colors.tsx +++ b/packages/editor/src/toolbar/tools/colors.tsx @@ -41,7 +41,7 @@ type ColorToolProps = ToolProps & { type: ColorType; }; -const DEFAULT_COLORS: Record = { +export const DEFAULT_COLORS: Record = { background: [ "#b0bec5", // Neutralized pink "#a1887f", // Neutralized purple