feat(editor): add multicolor highlight with auto-contrast text (#3110)

* feat(editor): add multicolor highlight with auto-contrast text

Enable the Tiptap Highlight extension in multicolor mode, replacing the
single-color yellow toggle with a full color picker (16 presets + custom).
When the chosen highlight color is perceptually dark, text inside the mark
automatically renders white for readability.

Changes span the full pipeline:
- Editor: ColorPicker UI, extended renderHTML for contrast detection
- PDF: normalizeMarkElements preserves data-color as inline style
- DOCX: mergeStyle reads actual background-color from <mark>
- Utils: new isDarkColor() luminance helper

Backward-compatible: legacy <mark> without data-color still renders yellow.

Resolves #3109

* fix: handle multicolor highlight edge cases

---------

Co-authored-by: Amruth Pillai <im.amruth@gmail.com>
This commit is contained in:
JamesGoslings
2026-06-01 14:58:15 +02:00
committed by GitHub
co-authored by Amruth Pillai
parent 1507d869c7
commit e96a51f31c
63 changed files with 565 additions and 179 deletions
+7 -3
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ta\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-06-01 11:26\n"
"PO-Revision-Date: 2026-06-01 12:55\n"
"Last-Translator: \n"
"Language-Team: Tamil\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -653,6 +653,7 @@ msgstr "சீனம் (சம்பிரதாய)"
msgid "Choose a model and resume draft."
msgstr "ஒரு மாதிரியையும் சுயவிவர வரைவையும் தேர்வு செய்யவும்."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -670,6 +671,7 @@ msgstr "பக்கப் பட்டியில் இருந்து ஏ
msgid "Circle"
msgstr "வட்டம்"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
@@ -1779,6 +1781,10 @@ msgstr "உயர்"
msgid "Highlight"
msgstr "ஹைலைட்"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "ஹிந்தி"
@@ -1808,7 +1814,6 @@ msgid "Hungarian"
msgstr "ஹங்கேரியன்"
#: src/components/level/combobox.tsx
#: src/dialogs/resume/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Icon"
msgstr "ஐகான்"
@@ -3996,4 +4001,3 @@ msgstr "சிறிதாக்கு"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "ஜூலு"