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 b8c8bcc57..5dbaa1893 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -3,14 +3,14 @@
+PJv5xFH}Y
zRCO *kB+
zCJan?#hCyesEwHD#Tpeh?pa;Zh(Ajo_L~CYp(K!
zsxXLx8s@d0iE9frc6D`q3TY}3vvQ9d9JWH=`z6oD4%XB!h@?Bh8;%m-ijprv9e#Y3
zMb$kTDxZ|TBNyYA^a~#j%+?|78ODGRf2i;Pu=e~;1w>wXqi*T!^*xm~IBc(!6R)sV
zFKDT*(6Kxn4?(hq@5;>uNI`F&nVa*}E*69d?I?dZx`pmX;@6tfN#bvTBTz?)Hj*JB
z7RjS%L>AufKec6g@7b(~OZHqTn$&=CG|>(4^eno-hw-iFK=63#
N3s9W
zA6fyq&JCK3!MNM4U9}O|X*c@uDKBGN6crUEi(kFylP~I#m*@Gn|7^L7f$kT`jiZL*
zYLsEaJ4r(12xTq8Re9)0a~Fz~MmjD5B55E16h~pEGXjBjnCbPcVd-A$geBbp17g0b
zBWf+`JBb=|u?38P))0tMJ7r^>OiF5*^Q}*RM}d!4F@`@}*|{loO3|RqfhB=;kc4C|
zsEMr|N?_F?0o+p`E-$@JOW1mUYJ2_6@Bc#8L=IT=N!sQ9`ge#C!halTNR@I95!Q*#
z-UH%ob)~YH!Pbk{PPPP`sjnvncG6N@930L7jO3s74YT}DfOb(;2ejf>sT^my>f#yy
z@^yTR`i`*jVZf5eTQlTf1J*bI%`M!za4ZvE!sZX~+HDL=9i{%%yGMl+67>K+D$(+>
zB`7m=xkuWkGE3zh;W&NYm5`qe*S{9$7u14vXb2SPZdT4`N|UdZxrC;t{uM8z49q;h
zaUc!{%zp5B^j1>I^AP}J`3pprq$hl6&LoN>K<^UTM=EbUTPp|Bh`(^bJVK*@Pr#EW
zLYdD1I!mFpXq{dpn{4b-lUM1@$8_J%B!JsjF`6?ksw|0{=?A%@eLPUGud^JGh8Vw!
zL>ImRsNr0skugw*AcBNhApa0D$q0C*&`KcAYqGA)y^jBBtrrvPfvvClEo3WN+tdAq
z6|jZU*67y1db|UGj6U&VwBwad3Rp`Rmi~eZVKrvF
z?6AYiK=aaY^zNm?54KMTbWbyrTMkN$H?R985WXiCrg2^1?`0k6W5Np8sZQ<3gHaa@
z&gSoCtAZ08&|ya9<_m*@-CD2WEG(`YTe