From a443abe6aef782629bcc388648b4fc5bf41205f4 Mon Sep 17 00:00:00 2001 From: hsiegeln <37154749+hsiegeln@users.noreply.github.com> Date: Mon, 6 Apr 2026 23:03:30 +0200 Subject: [PATCH] refactor: unify all brand icons to single SVG from DS v0.1.36 Replace PNG favicons and brand logos with cameleer3-logo.svg from @cameleer/design-system/assets. Favicon, login dialog, and sidebar all use the same SVG. Remove PNG favicon files from public/. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../server/app/security/SecurityConfig.java | 2 +- ui/index.html | 3 +- ui/package-lock.json | 8 +- ui/package.json | 2 +- ui/public/favicon-16.png | Bin 983 -> 0 bytes ui/public/favicon-32.png | Bin 2495 -> 0 bytes ui/public/favicon.svg | 145 +++++++++++++++++- ui/src/auth/LoginPage.tsx | 2 +- ui/src/components/LayoutShell.tsx | 2 +- 9 files changed, 152 insertions(+), 12 deletions(-) delete mode 100644 ui/public/favicon-16.png delete mode 100644 ui/public/favicon-32.png diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityConfig.java b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityConfig.java index 909bad49..fe27af21 100644 --- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityConfig.java +++ b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityConfig.java @@ -94,7 +94,7 @@ public class SecurityConfig { "/", "/index.html", "/config.js", - "/favicon-*.png", + "/favicon.svg", "/assets/**" ).permitAll() diff --git a/ui/index.html b/ui/index.html index 639f5a45..70980c1c 100644 --- a/ui/index.html +++ b/ui/index.html @@ -2,8 +2,7 @@ - - + Cameleer3 diff --git a/ui/package-lock.json b/ui/package-lock.json index 5d0346f1..919a06b0 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -8,7 +8,7 @@ "name": "ui", "version": "0.0.0", "dependencies": { - "@cameleer/design-system": "^0.1.34", + "@cameleer/design-system": "^0.1.36", "@tanstack/react-query": "^5.90.21", "lucide-react": "^1.7.0", "openapi-fetch": "^0.17.0", @@ -278,9 +278,9 @@ } }, "node_modules/@cameleer/design-system": { - "version": "0.1.34", - "resolved": "https://gitea.siegeln.net/api/packages/cameleer/npm/%40cameleer%2Fdesign-system/-/0.1.34/design-system-0.1.34.tgz", - "integrity": "sha512-z2B4VF4v0hwRil6G9N31qadk1rN5PQQC4I5A5DO9gZKnyPZ18+KlgNB5zSyYKvl1MV++id9xdSMg2hDGy3Aybg==", + "version": "0.1.36", + "resolved": "https://gitea.siegeln.net/api/packages/cameleer/npm/%40cameleer%2Fdesign-system/-/0.1.36/design-system-0.1.36.tgz", + "integrity": "sha512-8PLAGY6tQTYuV+s132fpGFyvSA+D9TJxVWaitxkiwuvL6cQnfZ3ujuP7CI60BRVaL2LhM+RLh+dcFDUo6NRBhQ==", "dependencies": { "lucide-react": "^1.7.0", "react": "^19.0.0", diff --git a/ui/package.json b/ui/package.json index 70872360..69c5167a 100644 --- a/ui/package.json +++ b/ui/package.json @@ -14,7 +14,7 @@ "generate-api:live": "curl -s http://localhost:8081/api/v1/api-docs -o src/api/openapi.json && openapi-typescript src/api/openapi.json -o src/api/schema.d.ts" }, "dependencies": { - "@cameleer/design-system": "^0.1.34", + "@cameleer/design-system": "^0.1.36", "@tanstack/react-query": "^5.90.21", "lucide-react": "^1.7.0", "openapi-fetch": "^0.17.0", diff --git a/ui/public/favicon-16.png b/ui/public/favicon-16.png deleted file mode 100644 index 8aa3556ae661a7b1ffe860b088bfc1756481ee6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 983 zcmV;|11S87P)OePjjI9nta5_PeGEq?{ zWBxOkI`7qG%ugx;wya4ydksy}%ci0oqFhiJV^HihCHEZ<>|WW@`O#u8`}cwP*-!RlNBVce?iSw0 zHHTgP`{H(|GddMN{r+4!+C~tp?(R*kjccDja~mQe5D|v^_x46YPsnSLgBytm>EWJG zEuo;75nZ*B0~K1$6dc2Xs2u8uI&pPhzNFUQCZB{$CDSDS8e<}5c&2g0RVis@0U}G<}?7{!l4a zn&YpD91PQf%jJ?9w=}oQK>(m=E;EyeyvYd+Wl>fW(H}aYXfQ0oY(XHaOXN)jMoH4P zJt2SP(iM5BPlC!i`~CO}$4Q!;F)6s>tc{t|f2{BZf)m-?JRktC&ugxJ@|6?LssITh z7Cv#P+saS5#%FXWih^`3{G2cf>Rrp$?Bn-8{n=wyNms3ztMwk=o!4zDCr9;?39Fb1 z+G-o~PCF-u%Uf!HYnNXy0Rn{jV9Ss+vcU3nNe;k(5X4AwMKzl4d9-6ppG*WSv*1Wy zIald)*xCGKeACHYJ2NB+l{O2Q8w+Z_rrFz3P7QShNBTY;wgiWiL_!G06b75hpl}7; z<{-1Avx>T_8Wx>sES~2r-qukMxi;XNLmtlagK2* zVHxwxDoX^`zO)Vi{ijSf&+pqXdcM2YDwi2oHE1p$IqQPDnYqdI*`$*z8nwQOV8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H12~0^u zK~z|UwO46$7UdOw?mIKzmM{B4NZ1mBpsXQ;6l?)4Dq4%n5$i!j#D#iXs#rX&RBKyB zYbyw9txJxGkZMtpidf{}N)iY=BtSyKmyM7>NWOiU<-PqO2}xM}(f6GBG53AuxzF5t z=gxbHnepRSM}n`TrHI4+5f)pfaA%YzCl9X#Ab%{AdZ|Fq-uD-`SAG4g;jL3i_kkb* zQouxjv;d)j9jS0-jp-OS?v9BVSWtHfkBCaWY^|K53IG=#S@nyxg z$g)@R`OuaZE6#;EQvT-A?W<d0^4targhdS4#H$dwnR_`g4EX);Q^J04p{mT`@Cik5BIyI$>URU$T80 ze%~6Y-Pq4PeCDxH*Z*Ze-+j^7uygh7FbA3_W7_X#_jL{cgECVdNgZBzZBpKp2x|#Y z(?_vAF0sj-)^FjtQatv?7cyPLZfprwf1X{lb=fButbyupmu@M0`3kQ7`h^STjhWG2 zvtfGG=4YdxJ*%sjS-lv3+savH>GFxpT%C5F8aQGvePse~FPURpjI8Ubt0?xIIQrdf zUHA1n-(9%x6%ZsGi#o}jSz`23h>Lu#lo>4x%(Vgv4Mo^;=`Bp}ZZj5rlP z;s#If(E1!;*C3#vu~!ZF8n+G7G7HUfHIUt(JnW~o3e{%$VAtEw_T4`g?fK8blgF#q z&FF~>G?ZWN3j-0q521h$GSE!TRl62a>859k3pn$&s4@bpc0*dj#;3oi+Wg%1F1rytAv!{gQ(>@9@tk+-@_Pr2 z{MF(fgu0qO+zdAFPU+?XfRj7kUkhnr(3rbd^Z;vRZ!ZYj0v-aLBPjq>*5R*OJF!N! zZDlfrYWkp%1xYF_sPfSIKfSp(aH2S6;OJ1{+!8kcqz|3EuC?r~SwOu57!nl#5DT`Y zP+b3B4Pi&g{IC|NCjgK*f4kOX1m4}nSNiw7H%WmBe~^)ol5V999#KQ8B07ChK3Y}b z>cZy~-Fgp5qU~t)ue(!#h*t=AmemDntXgxw-dv^<7%T~mC(T|?d&)6{3xXId8J<=H zs;0n*MuaOlJ6%&$;Z#jZ%^KWs=81kGsW{PDUpcp102^Uah`R+em3_EWYViPoup!|O zGO8MMG`5?lX)#dWCc9O%cSfesRK}SI2o)xCcc$ALkHkT<0RUpAfZJ(f%VKnTbwncO>7PEs6i#>pI{FXDG_JmX z`Ru!2@lflo&G+VA^YC0mJ4ja&0cm2#+C|%XMbI?CEU8<7&>YNWO!;B^q}v~gk}4EP zNr>te0-*@0n!x3SQ!3Lk)2-~>kvbEh`9uVI%s^aX|Kmf(-25*9fC5;)V-J#y!RPZr zAx7)rGW&m*6qvy2a%Kx^TuRHC2tZ@g*PsAEthp)EotPjI^`hyNf%x>CDCmcdIr*NF z(KkK4TTK}{t_dLI7G1wb)fChn+&2iQO*qYs&Zb@YF&zj+OfXAmPA7X$wJV!mni2%+ zG9Y6}&mQwmw*W`x@CF$P007wsjIYfel!p#q7;!0C(W`EMV}cM0;@!^f+KUE!X%;y! z{-)&<#!S0qDKW7AnVDVyNFF?L*YP8j&f^_AqPhhlLVQvhNVTygb;rR?C7-geA!FE# z;%)(B3+7#;ssc6T%iaZm&c?kW5+$CoXsfg0+n3*BW+Y?`?(DAoK&xBY5&%HvPn)&E zrV--elMDcueCNuEw=Jm_48cSyj&%^sXc!5p8SIEp^ZPtoegf460Opw#3@oU#G&kDH z-=7NrM8NRr^WFo10i&lsY_k!3t)ApA0g50gYzYj&zUH|(^_pGd>5JB-)Re#WF>pAw zwQ5aaBx+GiH;|nIxNJ<Yv|o=8HJJl5?i)jfH(wyKm)PcAE{U z0}6KRTs=E_qITQn%f?UNuIoA--umJL0AT4lk?Jr@7Uf1+GI9&Ai~Ohk5QsvtCjmwP5Go)XEJ0 z^FyyA*|482e8!zM$}iY}vE88;u8cgB1VK|JDQ1LZ#7n9S zkz#}?J$Iy0Fn`tU?zG&Pq5#s2k*UWh5(<(L3lke5Vwgmb&~=0SJ|7vDfgzLb`Dj?t zgKzcqcizF|`xRH|p^kb@Q3UMqsVr0nAWcXk3Tf!1I^66YIKD-K0_}&t8gA-3Sq!K` z0ZV4PLm^leEHE-g|MH7*H!r*4Tz)P%8SVS@v5NM}&kChwf*~LTfdqj_g-}(txzpgv zDhRvNFDpwPI`$7T98B}Wid1ZFkj=pg5iABrJDU_X{RB&bA&@krsA0mK)k7{qeklUFm$vWYM-Oz= zesx(a8YNXQKnyT}2(YAp=1Sy&lka>ZZ}Q_0T`K915%7Om{{s{mgGpE=Z{Pp`002ov JPDHLkV1m=mt;7HT diff --git a/ui/public/favicon.svg b/ui/public/favicon.svg index a5e73c39..75f61117 100644 --- a/ui/public/favicon.svg +++ b/ui/public/favicon.svg @@ -1,3 +1,144 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ui/src/auth/LoginPage.tsx b/ui/src/auth/LoginPage.tsx index 2242c906..76c85abe 100644 --- a/ui/src/auth/LoginPage.tsx +++ b/ui/src/auth/LoginPage.tsx @@ -4,7 +4,7 @@ import { useAuthStore } from './auth-store'; import { api } from '../api/client'; import { config } from '../config'; import { Card, Input, Button, Alert, FormField } from '@cameleer/design-system'; -import brandLogo from '@cameleer/design-system/assets/cameleer3-192.png'; +import brandLogo from '@cameleer/design-system/assets/cameleer3-logo.svg'; import styles from './LoginPage.module.css'; interface OidcInfo { diff --git a/ui/src/components/LayoutShell.tsx b/ui/src/components/LayoutShell.tsx index c4264cca..e91a1c98 100644 --- a/ui/src/components/LayoutShell.tsx +++ b/ui/src/components/LayoutShell.tsx @@ -16,7 +16,7 @@ import { useStarred, } from '@cameleer/design-system'; import type { SearchResult, SidebarTreeNode } from '@cameleer/design-system'; -import sidebarLogo from '@cameleer/design-system/assets/cameleer3-48.png'; +import sidebarLogo from '@cameleer/design-system/assets/cameleer3-logo.svg'; import { Box, Settings, FileText, ChevronRight, Square, Pause, Star, X } from 'lucide-react'; import { useQueryClient } from '@tanstack/react-query'; import { useRouteCatalog } from '../api/queries/catalog';