feat: add section heading icons to PDF templates (#3127)

* feat: add section heading icons to PDF templates

Add customizable Phosphor icons before section titles in PDF output.
Users can toggle visibility globally via a new "Hide section heading icons"
switch (independent of item-level icons) and customize individual section
icons through the builder sidebar icon picker.

- Add `icon` field to `baseSectionSchema` and `summarySchema`
- Add `hideSectionIcons` to `pageSchema` (defaults to true for backward compat)
- Implement `SectionHeadingIcon` component with heading font-size scaling
- Support "none" sentinel for per-section icon hiding
- Fallback to sensible defaults (briefcase, graduation-cap, etc.) for legacy data
- Add icon picker to builder sidebar sections and custom section dialogs

Closes #2632

* test: add unit tests for section heading icons

- Add tests for getResumeSectionIcon() covering built-in sections,
  summary, custom sections, "none" sentinel, and default fallbacks
- Add schema tests for baseSectionSchema icon field, summarySchema icon,
  and pageSchema hideSectionIcons default behavior

* refactor: minor updates to icon display

* Update apps/web/locales/es-ES.po

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: Amruth Pillai <im.amruth@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
This commit is contained in:
JamesGoslings
2026-06-01 20:02:42 +08:00
committed by GitHub
parent 1522794733
commit b932711f08
81 changed files with 1153 additions and 306 deletions
+8 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ru\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-27 21:53\n"
"PO-Revision-Date: 2026-06-01 11:26\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
@@ -1745,8 +1745,8 @@ msgid "Hide"
msgstr "Скрыть"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Скрыть все иконки в резюме"
msgid "Hide Icons"
msgstr "Скрыть значки"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1766,6 +1766,10 @@ msgstr "Скрыть все иконки в резюме"
msgid "Hide password"
msgstr "Скрыть пароль"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Скрыть значки разделов"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1804,6 +1808,7 @@ 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 "Иконка"
@@ -3991,4 +3996,3 @@ msgstr "Уменьшить"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Зулу"