From 5bf1c24492acbf2d078495587899d010092b0c4e Mon Sep 17 00:00:00 2001 From: Nikolai Andree Date: Mon, 11 May 2026 14:00:14 +0200 Subject: [PATCH 01/26] feat(i18n): add translation keys for ordered list and indent/outdent buttons Adds editor.toggleOrderedList, editor.indentListItem, editor.outdentListItem and editor.createOrderedList to all 13 translation files. --- app/_translations/de.json | 4 ++++ app/_translations/en.json | 4 ++++ app/_translations/es.json | 4 ++++ app/_translations/fr.json | 4 ++++ app/_translations/it.json | 4 ++++ app/_translations/klingon.json | 4 ++++ app/_translations/ko.json | 4 ++++ app/_translations/nl.json | 4 ++++ app/_translations/pirate.json | 4 ++++ app/_translations/pl.json | 4 ++++ app/_translations/ru.json | 4 ++++ app/_translations/tr.json | 4 ++++ app/_translations/zh.json | 4 ++++ 13 files changed, 52 insertions(+) diff --git a/app/_translations/de.json b/app/_translations/de.json index 024e2bf6..d8e30c40 100644 --- a/app/_translations/de.json +++ b/app/_translations/de.json @@ -1141,6 +1141,9 @@ "toggleInlineCode": "Code-Formatierung umschalten", "toggleHeading2": "Überschrift umschalten", "toggleBulletList": "Aufzählungsliste umschalten", + "toggleOrderedList": "Nummerierte Liste umschalten", + "indentListItem": "Listenelement einrücken", + "outdentListItem": "Listenelement ausrücken", "toggleBlockquote": "Zitat umschalten", "toggleLink": "Verknüpfung einfügen", "editImageSize": "Bilgröße ändern", @@ -1174,6 +1177,7 @@ "heading2": "Überschrift 2", "mediumSectionHeading": "Mittlere Abschnittsüberschrift", "createBulletedList": "Aufzählungsliste erstellen", + "createOrderedList": "Nummerierte Liste erstellen", "taskList": "Aufgabenliste erstellen", "createTaskList": "Aufgabenliste erstellen", "createCodeBlock": "Code-Block erstellen", diff --git a/app/_translations/en.json b/app/_translations/en.json index e4c8ade6..708c69e7 100644 --- a/app/_translations/en.json +++ b/app/_translations/en.json @@ -1170,6 +1170,9 @@ "toggleInlineCode": "Toggle inline code", "toggleHeading2": "Toggle heading 2", "toggleBulletList": "Toggle bullet list", + "toggleOrderedList": "Toggle ordered list", + "indentListItem": "Indent list item", + "outdentListItem": "Outdent list item", "toggleBlockquote": "Toggle blockquote", "toggleLink": "Toggle link", "editImageSize": "Edit image size", @@ -1203,6 +1206,7 @@ "heading2": "Heading 2", "mediumSectionHeading": "Medium section heading", "createBulletedList": "Create a bulleted list", + "createOrderedList": "Create a numbered list", "taskList": "Task List", "createTaskList": "Create a task list", "createCodeBlock": "Create a code block", diff --git a/app/_translations/es.json b/app/_translations/es.json index a89a0196..cb7a9853 100644 --- a/app/_translations/es.json +++ b/app/_translations/es.json @@ -1145,6 +1145,9 @@ "toggleInlineCode": "Alternar código en línea", "toggleHeading2": "Alternar encabezado 2", "toggleBulletList": "Alternar lista con viñetas", + "toggleOrderedList": "Alternar lista numerada", + "indentListItem": "Sangrar elemento de lista", + "outdentListItem": "Quitar sangría del elemento", "toggleBlockquote": "Alternar cita", "toggleLink": "Alternar enlace", "editImageSize": "Editar tamaño de imagen", @@ -1178,6 +1181,7 @@ "heading2": "Encabezado 2", "mediumSectionHeading": "Encabezado de sección mediana", "createBulletedList": "Crear una lista con viñetas", + "createOrderedList": "Crear una lista numerada", "taskList": "Lista de tareas", "createTaskList": "Crear una lista de tareas", "createCodeBlock": "Crear un bloque de código", diff --git a/app/_translations/fr.json b/app/_translations/fr.json index fd6f0e97..8c9c20bc 100644 --- a/app/_translations/fr.json +++ b/app/_translations/fr.json @@ -1145,6 +1145,9 @@ "toggleInlineCode": "Basculer le code en ligne", "toggleHeading2": "Basculer titre 2", "toggleBulletList": "Basculer liste à puces", + "toggleOrderedList": "Basculer liste numérotée", + "indentListItem": "Indenter l'élément de liste", + "outdentListItem": "Désindenter l'élément de liste", "toggleBlockquote": "Basculer bloc de citation", "toggleLink": "Basculer le lien", "editImageSize": "Modifier la taille de l’image", @@ -1178,6 +1181,7 @@ "heading2": "Titre 2", "mediumSectionHeading": "Titre de section moyen", "createBulletedList": "Créer une liste à puces", + "createOrderedList": "Créer une liste numérotée", "taskList": "Liste", "createTaskList": "Créer une Liste", "createCodeBlock": "Créer un bloc de code", diff --git a/app/_translations/it.json b/app/_translations/it.json index 464420d0..287d2004 100644 --- a/app/_translations/it.json +++ b/app/_translations/it.json @@ -1145,6 +1145,9 @@ "toggleInlineCode": "Codice in linea", "toggleHeading2": "Intestazione 2", "toggleBulletList": "Elenco puntato", + "toggleOrderedList": "Elenco numerato", + "indentListItem": "Indenta elemento lista", + "outdentListItem": "Riduci rientro elemento lista", "toggleBlockquote": "Citazione", "toggleLink": "Link", "editImageSize": "Modifica dimensioni immagine", @@ -1178,6 +1181,7 @@ "heading2": "Intestazione 2", "mediumSectionHeading": "Intestazione sezione media", "createBulletedList": "Crea elenco puntato", + "createOrderedList": "Crea elenco numerato", "taskList": "Lista Attività", "createTaskList": "Crea lista attività", "createCodeBlock": "Crea blocco di codice", diff --git a/app/_translations/klingon.json b/app/_translations/klingon.json index 6d8cb02f..09416f07 100644 --- a/app/_translations/klingon.json +++ b/app/_translations/klingon.json @@ -1170,6 +1170,9 @@ "toggleInlineCode": "mI' wI' yIchoH", "toggleHeading2": "mung 2 yIchoH", "toggleBulletList": "mI'be' tetlh yIchoH", + "toggleOrderedList": "mI' tetlh yIchoH", + "indentListItem": "tetlh gho' yIchoH", + "outdentListItem": "tetlh gho' yIchev", "toggleBlockquote": "le' tetlh yIchoH", "toggleLink": "lI' yIchoH", "editImageSize": "nagh beQ 'ab yIchoH", @@ -1203,6 +1206,7 @@ "heading2": "mung 2", "mediumSectionHeading": "mung motlh", "createBulletedList": "mI'be' tetlh yIchenmoH", + "createOrderedList": "mI' tetlh yIchenmoH", "taskList": "Qu' tetlh", "createTaskList": "Qu' tetlh yIchenmoH", "createCodeBlock": "mI' wI' yIchenmoH", diff --git a/app/_translations/ko.json b/app/_translations/ko.json index 7428daf3..cd12af01 100644 --- a/app/_translations/ko.json +++ b/app/_translations/ko.json @@ -1170,6 +1170,9 @@ "toggleInlineCode": "인라인 코드 전환", "toggleHeading2": "제목 2 전환", "toggleBulletList": "글머리 기호 목록 전환", + "toggleOrderedList": "번호 매기기 목록 전환", + "indentListItem": "목록 항목 들여쓰기", + "outdentListItem": "목록 항목 내어쓰기", "toggleBlockquote": "인용문 전환", "toggleLink": "링크 전환", "editImageSize": "이미지 크기 편집", @@ -1203,6 +1206,7 @@ "heading2": "제목 2", "mediumSectionHeading": "중간 섹션 제목", "createBulletedList": "글머리 기호 목록 만들기", + "createOrderedList": "번호 매기기 목록 만들기", "taskList": "작업 목록", "createTaskList": "작업 목록 만들기", "createCodeBlock": "코드 블록 만들기", diff --git a/app/_translations/nl.json b/app/_translations/nl.json index 6f03159b..e5c4fde0 100644 --- a/app/_translations/nl.json +++ b/app/_translations/nl.json @@ -1145,6 +1145,9 @@ "toggleInlineCode": "Inline code wisselen", "toggleHeading2": "Kop 2 wisselen", "toggleBulletList": "Opsommingslijst wisselen", + "toggleOrderedList": "Genummerde lijst wisselen", + "indentListItem": "Lijstitem inspringen", + "outdentListItem": "Inspringing lijstitem verwijderen", "toggleBlockquote": "Citaat wisselen", "toggleLink": "Link wisselen", "editImageSize": "Afbeeldingsgrootte bewerken", @@ -1178,6 +1181,7 @@ "heading2": "Kop 2", "mediumSectionHeading": "Middelgrote sectiekop", "createBulletedList": "Maak een opsommingslijst", + "createOrderedList": "Maak een genummerde lijst", "taskList": "Takenlijst", "createTaskList": "Maak een takenlijst", "createCodeBlock": "Maak een codeblok", diff --git a/app/_translations/pirate.json b/app/_translations/pirate.json index fb6836bc..899cbcd7 100644 --- a/app/_translations/pirate.json +++ b/app/_translations/pirate.json @@ -1170,6 +1170,9 @@ "toggleInlineCode": "Cipher", "toggleHeading2": "Sub-headline", "toggleBulletList": "Shot List", + "toggleOrderedList": "Numbered Shot List", + "indentListItem": "Walk the Plank Further", + "outdentListItem": "Walk the Plank Back", "toggleBlockquote": "Parrot", "toggleLink": "Rope", "editImageSize": "Resize", @@ -1203,6 +1206,7 @@ "heading2": "Headline 2", "mediumSectionHeading": "Mid Headline", "createBulletedList": "Make shot list", + "createOrderedList": "Make numbered shot list", "taskList": "Duty List", "createTaskList": "Make duty list", "createCodeBlock": "Make cipher block", diff --git a/app/_translations/pl.json b/app/_translations/pl.json index 9ed9e4c5..f4dd4ce3 100644 --- a/app/_translations/pl.json +++ b/app/_translations/pl.json @@ -1145,6 +1145,9 @@ "toggleInlineCode": "Włącz/wyłącz kod w linii", "toggleHeading2": "Włącz/wyłącz nagłówek 2", "toggleBulletList": "Włącz/wyłącz listę punktowaną", + "toggleOrderedList": "Włącz/wyłącz listę numerowaną", + "indentListItem": "Wcięcie elementu listy", + "outdentListItem": "Usuń wcięcie elementu listy", "toggleBlockquote": "Włącz/wyłącz blok cytatu", "toggleLink": "Włącz/wyłącz link", "editImageSize": "Edytuj rozmiar obrazu", @@ -1178,6 +1181,7 @@ "heading2": "Nagłówek 2", "mediumSectionHeading": "Średni nagłówek sekcji", "createBulletedList": "Utwórz listę punktowaną", + "createOrderedList": "Utwórz listę numerowaną", "taskList": "Lista zadań", "createTaskList": "Utwórz listę zadań", "createCodeBlock": "Utwórz blok kodu", diff --git a/app/_translations/ru.json b/app/_translations/ru.json index 3f65a211..502eeb26 100644 --- a/app/_translations/ru.json +++ b/app/_translations/ru.json @@ -1170,6 +1170,9 @@ "toggleInlineCode": "Переключить inline-код", "toggleHeading2": "Переключить заголовок 2", "toggleBulletList": "Переключить маркированный список", + "toggleOrderedList": "Переключить нумерованный список", + "indentListItem": "Увеличить отступ элемента списка", + "outdentListItem": "Уменьшить отступ элемента списка", "toggleBlockquote": "Переключить цитату", "toggleLink": "Переключить ссылку", "editImageSize": "Редактировать размер изображения", @@ -1203,6 +1206,7 @@ "heading2": "Заголовок 2", "mediumSectionHeading": "Средний заголовок раздела", "createBulletedList": "Создать маркированный список", + "createOrderedList": "Создать нумерованный список", "taskList": "Список задач", "createTaskList": "Создать список задач", "createCodeBlock": "Создать блок кода", diff --git a/app/_translations/tr.json b/app/_translations/tr.json index d85a53ad..e7f147fa 100644 --- a/app/_translations/tr.json +++ b/app/_translations/tr.json @@ -1172,6 +1172,9 @@ "toggleInlineCode": "Satır içi kodu aç/kapat", "toggleHeading2": "Başlık 2'yi aç/kapat", "toggleBulletList": "Maddeli listeyi aç/kapat", + "toggleOrderedList": "Numaralı listeyi aç/kapat", + "indentListItem": "Liste öğesini girintile", + "outdentListItem": "Liste öğesinin girintisini azalt", "toggleBlockquote": "Alıntıyı aç/kapat", "toggleLink": "Bağlantıyı aç/kapat", "editImageSize": "Görsel boyutunu düzenle", @@ -1205,6 +1208,7 @@ "heading2": "Başlık 2", "mediumSectionHeading": "Orta bölüm başlığı", "createBulletedList": "Maddeli liste oluştur", + "createOrderedList": "Numaralı liste oluştur", "taskList": "Görev Listesi", "createTaskList": "Görev listesi oluştur", "createCodeBlock": "Kod bloğu oluştur", diff --git a/app/_translations/zh.json b/app/_translations/zh.json index a4f3209b..674295ec 100644 --- a/app/_translations/zh.json +++ b/app/_translations/zh.json @@ -1170,6 +1170,9 @@ "toggleInlineCode": "切换行内代码", "toggleHeading2": "切换标题 2", "toggleBulletList": "切换无序列表", + "toggleOrderedList": "切换有序列表", + "indentListItem": "增加列表项缩进", + "outdentListItem": "减少列表项缩进", "toggleBlockquote": "切换引用块", "toggleLink": "切换链接", "editImageSize": "编辑图片大小", @@ -1203,6 +1206,7 @@ "heading2": "标题 2", "mediumSectionHeading": "中节标题", "createBulletedList": "创建无序列表", + "createOrderedList": "创建有序列表", "taskList": "任务列表", "createTaskList": "创建任务列表", "createCodeBlock": "创建代码块", From 8d132438b4fad32a94826aefd881f668d5e35135 Mon Sep 17 00:00:00 2001 From: Nikolai Andree Date: Mon, 11 May 2026 14:00:26 +0200 Subject: [PATCH 02/26] feat(editor): add ordered list, indent and outdent toolbar buttons Adds three buttons after the existing bulletList button: - orderedList (LeftToRightListNumberIcon, Ctrl+Shift+7, dual-mode aware) - indent/sinkListItem (TextIndentMoreIcon, disabled when not in a list) - outdent/liftListItem (TextIndentLessIcon, disabled when not in a list) --- .../Parts/TipTap/Toolbar/TipTapToolbar.tsx | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/app/_components/FeatureComponents/Notes/Parts/TipTap/Toolbar/TipTapToolbar.tsx b/app/_components/FeatureComponents/Notes/Parts/TipTap/Toolbar/TipTapToolbar.tsx index de647511..aea4b14a 100644 --- a/app/_components/FeatureComponents/Notes/Parts/TipTap/Toolbar/TipTapToolbar.tsx +++ b/app/_components/FeatureComponents/Notes/Parts/TipTap/Toolbar/TipTapToolbar.tsx @@ -14,6 +14,9 @@ import { TextUnderlineIcon, Image02Icon, LeftToRightListBulletIcon, + LeftToRightListNumberIcon, + TextIndentMoreIcon, + TextIndentLessIcon, } from "hugeicons-react"; import { Button } from "@/app/_components/GlobalComponents/Buttons/Button"; import { FileModal } from "@/app/_components/GlobalComponents/Modals/FilesModal/FileModal"; @@ -473,6 +476,41 @@ export const TiptapToolbar = ({ > + {/* fccview is onto you! */} + + + {/* fccview is onto you! */} - {/* fccview is onto you! */} + ); + + return ( + +
+ + +
+ + +
+ + ); +}; diff --git a/app/_components/FeatureComponents/Notes/Parts/TipTap/Toolbar/TipTapToolbar.tsx b/app/_components/FeatureComponents/Notes/Parts/TipTap/Toolbar/TipTapToolbar.tsx index 50733a6d..4cc654a2 100644 --- a/app/_components/FeatureComponents/Notes/Parts/TipTap/Toolbar/TipTapToolbar.tsx +++ b/app/_components/FeatureComponents/Notes/Parts/TipTap/Toolbar/TipTapToolbar.tsx @@ -13,16 +13,13 @@ import { Tv02Icon, TextUnderlineIcon, Image02Icon, - LeftToRightListBulletIcon, - LeftToRightListNumberIcon, - TextIndentMoreIcon, - TextIndentLessIcon, } from "hugeicons-react"; import { Button } from "@/app/_components/GlobalComponents/Buttons/Button"; import { FileModal } from "@/app/_components/GlobalComponents/Modals/FilesModal/FileModal"; import { ImageSizeModal } from "@/app/_components/GlobalComponents/Modals/ImageSizeModal"; import { CodeBlockDropdown } from "@/app/_components/FeatureComponents/Notes/Parts/TipTap/Toolbar/CodeBlocksDropdown"; import { DiagramsDropdown } from "@/app/_components/FeatureComponents/Notes/Parts/TipTap/Toolbar/DiagramsDropdown"; +import { ListMenuDropdown } from "@/app/_components/FeatureComponents/Notes/Parts/TipTap/Toolbar/ListMenuDropdown"; import { TableInsertModal } from "@/app/_components/FeatureComponents/Notes/Parts/Table/TableInsertModal"; import { FontFamilyDropdown } from "@/app/_components/FeatureComponents/Notes/Parts/TipTap/Toolbar/FontFamilyDropdown"; import { useState, useEffect } from "react"; @@ -485,76 +482,12 @@ export const TiptapToolbar = ({ > - - - - +