From a6614e1bfb9bc5ec073f1417361de61b45d7463b Mon Sep 17 00:00:00 2001 From: EthanHealy01 <80844253+EthanHealy01@users.noreply.github.com> Date: Tue, 25 Nov 2025 15:22:14 +0000 Subject: [PATCH] UI/allow logo selection (#4982) # Description of Changes - Allow switching between logos in-app using the same section in settings --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing) for more details. --- frontend/index.html | 4 +- frontend/public/Login/Firstpage.png | Bin 415584 -> 215942 bytes frontend/public/branding/StirlingLogo.svg | 19 --- .../public/branding/StirlingLogoLegacy.svg | 28 ---- .../branding/StirlingPDFLogoNoTextLightHC.svg | 4 - frontend/public/branding/old/favicon.ico | Bin 15086 -> 0 bytes frontend/public/branding/old/favicon.png | Bin 8860 -> 0 bytes frontend/public/branding/old/favicon.svg | 1 - frontend/public/classic-logo/Firstpage.png | Bin 0 -> 415584 bytes .../StirlingPDFLogoBlackText.svg | 0 .../StirlingPDFLogoGreyText.svg | 0 .../StirlingPDFLogoNoTextDark.svg} | 7 +- .../StirlingPDFLogoNoTextLight.svg | 0 .../StirlingPDFLogoWhiteText.svg | 0 .../public/{ => classic-logo}/favicon.ico | Bin .../logo-tooltip.svg} | 6 +- .../public/{ => classic-logo}/logo192.png | Bin .../public/{ => classic-logo}/logo512.png | Bin .../public/locales/en-GB/translation.json | 35 ++++- frontend/public/manifest-classic.json | 26 ++++ frontend/public/manifest.json | 6 +- frontend/public/modern-logo/Firstpage.png | Bin 0 -> 215942 bytes .../modern-logo/StirlingPDFLogoBlackText.svg | 4 + .../modern-logo/StirlingPDFLogoGreyText.svg | 4 + .../modern-logo/StirlingPDFLogoNoTextDark.svg | 4 + .../StirlingPDFLogoNoTextLight.svg | 4 + .../modern-logo/StirlingPDFLogoWhiteText.svg | 4 + frontend/public/modern-logo/favicon.ico | Bin 0 -> 15406 bytes frontend/public/modern-logo/logo-tooltip.svg | 4 + frontend/public/modern-logo/logo192.png | Bin 0 -> 3161 bytes frontend/public/modern-logo/logo512.png | Bin 0 -> 8151 bytes frontend/public/og_images/add-attachments.png | Bin 118761 -> 57945 bytes frontend/public/og_images/add-image.png | Bin 100266 -> 49799 bytes .../public/og_images/add-page-numbers.png | Bin 115856 -> 56962 bytes frontend/public/og_images/add-password.png | Bin 107035 -> 53118 bytes frontend/public/og_images/add-stamp.png | Bin 109892 -> 54415 bytes frontend/public/og_images/add-watermark.png | Bin 108451 -> 53771 bytes .../og_images/adjust-colors-contrast.png | Bin 114479 -> 56305 bytes .../og_images/adjust-page-size-scale.png | Bin 112024 -> 55267 bytes .../public/og_images/auto-rename-pdf-file.png | Bin 114677 -> 56737 bytes .../og_images/auto-split-by-size-count.png | Bin 133766 -> 64795 bytes .../public/og_images/auto-split-pages.png | Bin 121535 -> 59845 bytes frontend/public/og_images/automate.png | Bin 123732 -> 60391 bytes frontend/public/og_images/certSign.png | Bin 112765 -> 56142 bytes frontend/public/og_images/change-metadata.png | Bin 117182 -> 57487 bytes .../public/og_images/change-permissions.png | Bin 112843 -> 55943 bytes frontend/public/og_images/compare.png | Bin 110762 -> 55173 bytes frontend/public/og_images/compress.png | Bin 99722 -> 49557 bytes frontend/public/og_images/convert.png | Bin 118098 -> 57967 bytes frontend/public/og_images/cropPdf.png | Bin 98961 -> 49330 bytes .../og_images/detect-split-scanned-photos.png | Bin 109856 -> 54674 bytes .../og_images/edit-table-of-contents.png | Bin 117214 -> 57225 bytes frontend/public/og_images/extract-images.png | Bin 111587 -> 55666 bytes frontend/public/og_images/extract-pages.png | Bin 101222 -> 49785 bytes frontend/public/og_images/flatten.png | Bin 103514 -> 51039 bytes .../public/og_images/get-all-info-on-pdf.png | Bin 109186 -> 54454 bytes frontend/public/og_images/home.png | Bin 88389 -> 22655 bytes .../public/og_images/manage-certificates.png | Bin 125533 -> 61723 bytes frontend/public/og_images/mergePdfs.png | Bin 93625 -> 46620 bytes .../public/og_images/multi-page-layout.png | Bin 116856 -> 57603 bytes frontend/public/og_images/multi-tool.png | Bin 109443 -> 54774 bytes frontend/public/og_images/ocr.png | Bin 128393 -> 63006 bytes frontend/public/og_images/overlay-pdfs.png | Bin 100975 -> 49489 bytes frontend/public/og_images/read.png | Bin 119264 -> 58512 bytes frontend/public/og_images/redact.png | Bin 131675 -> 64130 bytes .../public/og_images/remove-annotations.png | Bin 113128 -> 55848 bytes .../public/og_images/remove-blank-pages.png | Bin 114225 -> 56056 bytes .../og_images/remove-certificate-sign.png | Bin 107968 -> 53267 bytes frontend/public/og_images/remove-image.png | Bin 106720 -> 52766 bytes frontend/public/og_images/remove-password.png | Bin 114540 -> 56325 bytes frontend/public/og_images/remove.png | Bin 100173 -> 49748 bytes .../public/og_images/reorganize-pages.png | Bin 128620 -> 63220 bytes frontend/public/og_images/repair.png | Bin 90691 -> 44587 bytes .../og_images/replace-and-invert-color.png | Bin 132111 -> 63977 bytes frontend/public/og_images/rotate.png | Bin 87199 -> 42923 bytes frontend/public/og_images/sanitize.png | Bin 102075 -> 51113 bytes frontend/public/og_images/scanner-effect.png | Bin 99224 -> 49182 bytes frontend/public/og_images/show-javascript.png | Bin 108752 -> 53912 bytes frontend/public/og_images/sign.png | Bin 98475 -> 48991 bytes .../public/og_images/single-large-page.png | Bin 108726 -> 54055 bytes .../public/og_images/split-by-chapters.png | Bin 116890 -> 58098 bytes .../public/og_images/split-by-sections.png | Bin 123839 -> 61572 bytes frontend/public/og_images/split.png | Bin 0 -> 46238 bytes frontend/public/og_images/splitPdf.png | Bin 93258 -> 46238 bytes .../public/og_images/unlock-pdf-forms.png | Bin 120918 -> 59233 bytes .../og_images/validate-pdf-signature.png | Bin 118614 -> 57855 bytes frontend/public/og_images/view-pdf.png | Bin 103759 -> 52283 bytes frontend/scripts/sample-pdf/template.html | 12 +- frontend/src/core/components/AppProviders.tsx | 28 +++- .../components/fileEditor/AddFileCard.tsx | 5 +- .../fileManager/EmptyFilesState.tsx | 5 +- .../core/components/shared/AppConfigModal.css | 41 ++++++ .../core/components/shared/AppConfigModal.tsx | 36 +++-- .../core/components/shared/LandingPage.tsx | 40 +++--- .../src/core/components/shared/Tooltip.tsx | 5 +- .../tools/FullscreenToolSurface.tsx | 7 +- frontend/src/core/constants/logo.ts | 15 ++ .../core/contexts/UnsavedChangesContext.tsx | 95 +++++++++++++ frontend/src/core/hooks/useLogoAssets.test.ts | 57 ++++++++ frontend/src/core/hooks/useLogoAssets.ts | 34 +++++ frontend/src/core/hooks/useLogoPath.ts | 21 +-- frontend/src/core/hooks/useLogoVariant.ts | 18 +++ frontend/src/core/pages/HomePage.tsx | 7 +- .../src/core/services/preferencesService.ts | 4 + .../proprietary/components/AppProviders.tsx | 2 +- .../configSections/AdminGeneralSection.tsx | 133 ++++++++++++++++-- .../components/shared/loginSlides.ts | 93 +++++++----- .../src/proprietary/routes/Login.test.tsx | 5 +- .../routes/authShared/AuthLayout.tsx | 11 +- .../proprietary/routes/login/LoginHeader.tsx | 6 +- 110 files changed, 651 insertions(+), 189 deletions(-) delete mode 100644 frontend/public/branding/StirlingLogo.svg delete mode 100644 frontend/public/branding/StirlingLogoLegacy.svg delete mode 100644 frontend/public/branding/StirlingPDFLogoNoTextLightHC.svg delete mode 100644 frontend/public/branding/old/favicon.ico delete mode 100644 frontend/public/branding/old/favicon.png delete mode 100644 frontend/public/branding/old/favicon.svg create mode 100644 frontend/public/classic-logo/Firstpage.png rename frontend/public/{branding => classic-logo}/StirlingPDFLogoBlackText.svg (100%) rename frontend/public/{branding => classic-logo}/StirlingPDFLogoGreyText.svg (100%) rename frontend/public/{logo-tooltip.svg => classic-logo/StirlingPDFLogoNoTextDark.svg} (58%) rename frontend/public/{branding => classic-logo}/StirlingPDFLogoNoTextLight.svg (100%) rename frontend/public/{branding => classic-logo}/StirlingPDFLogoWhiteText.svg (100%) rename frontend/public/{ => classic-logo}/favicon.ico (100%) rename frontend/public/{branding/StirlingPDFLogoNoTextDark.svg => classic-logo/logo-tooltip.svg} (68%) rename frontend/public/{ => classic-logo}/logo192.png (100%) rename frontend/public/{ => classic-logo}/logo512.png (100%) create mode 100644 frontend/public/manifest-classic.json create mode 100644 frontend/public/modern-logo/Firstpage.png create mode 100644 frontend/public/modern-logo/StirlingPDFLogoBlackText.svg create mode 100644 frontend/public/modern-logo/StirlingPDFLogoGreyText.svg create mode 100644 frontend/public/modern-logo/StirlingPDFLogoNoTextDark.svg create mode 100644 frontend/public/modern-logo/StirlingPDFLogoNoTextLight.svg create mode 100644 frontend/public/modern-logo/StirlingPDFLogoWhiteText.svg create mode 100644 frontend/public/modern-logo/favicon.ico create mode 100644 frontend/public/modern-logo/logo-tooltip.svg create mode 100644 frontend/public/modern-logo/logo192.png create mode 100644 frontend/public/modern-logo/logo512.png create mode 100644 frontend/public/og_images/split.png create mode 100644 frontend/src/core/constants/logo.ts create mode 100644 frontend/src/core/contexts/UnsavedChangesContext.tsx create mode 100644 frontend/src/core/hooks/useLogoAssets.test.ts create mode 100644 frontend/src/core/hooks/useLogoAssets.ts create mode 100644 frontend/src/core/hooks/useLogoVariant.ts diff --git a/frontend/index.html b/frontend/index.html index b8c8bcc577..5dbaa18938 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -3,14 +3,14 @@
l#7U
zFZjYw?(7t_HHXh<2%oDmC}Ul@$it(RgD2|A;~Dekn;+AgbS^8XYl@KO#xyov1GR#`
zU;j7C#VlF#VEcR@HR0~=?j7vGckkZi{PXYQrPDSsKa=++{5^Q^V2jGk`7>v(+?AbK
zlxO>U&CIqPUq4#Eix6$&NYtLZ!}Q;;*RN*B|KIiN;QxR3S1sIlvF7{T>G5(iH*+gV
zT{~{Xb4=TZJADRwzo9ux(6om?4D_{ZgbvA6{MP@!DYETx!}OUl?#m{4JrO^=&G6X1
zjdt4_A0OM&-I9}J*%x@kjzKYCTYu?>`kQLcl*=WZtXH#!1iCC2<2ntR$rW_+SO}g4
z>e%=?WX;VDiU|f!RC*YXCEQR@k!H?)!=@i?P~ktvV&R06Zx`L=kJhg8$Skn2Y))r%
zVbeA-Fqtw%v?F@C-`u7RuU@7%EN9ho?P|Mz|NeXBlYdT5Ru^@02%XC4$kD`8;T<0C
zXSq$`+n=-3_if3tJEF;vwEwI1{>gUn+?fK0?yddap7~LV*{$T#ai&IIr-{3H9#q$V
zd+ERYrt}F(wqwVSohd)O^KeSFz%qtu_0P^(pWSvSLGGOT9)6kb7Fk@rmIB)Ono&Uwe#C$$BA8zNLtt8U*
zr1$kf)dgqu!xCpEJ*cYot~;f1r|kUO4_#T!iej#7qx}~39kdM#zoW(SGUc@DosB^`
zx3``Bv+OV{pG2Pz$4PO}%&5f24o5q_j}Mq$oIQHFRg2jm>F9#u>e$2!yY|lFxB1lZ
zae
bm$_PBimm!=G$fntebGD&DE>w
zn!%p$d*A ff4uu(M+nDv
zD>n6<;uSZG{crEjQBSJ7Rl4EyhyS0QkH4DNo`3yhiQT1Q?aLg#22LwCxovDweH8MR
zdrGBb)ANS9g}#frF3q#8R C
zfa~95mV$N|T$TFqGW+4}%a6G2yzK0P6dvtdnq%FNZar^%l~L)RABCl#o_IdCWuGI$
zrl!9
@k;;mq9=v#k2nnZKOV-L!Ws+uJf#c>6?w
z^DLHqQKy(c{)+gf6r?s$JGxLixNe