From a7ac2cb9d7836a37ec94d77beb9f56f6dca50503 Mon Sep 17 00:00:00 2001 From: Usman Baig Date: Thu, 19 Mar 2026 11:09:16 +0100 Subject: [PATCH] feat: add browser logo icons for all detected browsers Use real browser logos from alrra/browser-logos (SVG where available, PNG fallback for archived browsers). Replaces the generic globe icon with actual Chrome, Firefox, Safari, Edge, Opera, Brave, Vivaldi, Arc, Samsung Internet, UC Browser, Yandex, Waterfox, Pale Moon, DuckDuckGo, Maxthon, Silk, Puffin, Tor, and Opera Mini logos. --- lib/utils/icons.tsx | 27 ++++++++++++++++++++- public/icons/browsers/arc.png | Bin 0 -> 1520 bytes public/icons/browsers/brave.svg | 1 + public/icons/browsers/chrome.svg | 1 + public/icons/browsers/duckduckgo.png | Bin 0 -> 1872 bytes public/icons/browsers/edge.svg | 1 + public/icons/browsers/firefox.svg | 1 + public/icons/browsers/maxthon.png | Bin 0 -> 984 bytes public/icons/browsers/opera-mini.png | Bin 0 -> 1870 bytes public/icons/browsers/opera.svg | 1 + public/icons/browsers/pale-moon.png | Bin 0 -> 2446 bytes public/icons/browsers/puffin.png | Bin 0 -> 2039 bytes public/icons/browsers/safari-ios.svg | 1 + public/icons/browsers/safari.svg | 1 + public/icons/browsers/samsung-internet.svg | 1 + public/icons/browsers/silk.png | Bin 0 -> 1618 bytes public/icons/browsers/tor.png | Bin 0 -> 2017 bytes public/icons/browsers/uc-browser.svg | 1 + public/icons/browsers/vivaldi.svg | 1 + public/icons/browsers/waterfox.png | Bin 0 -> 1497 bytes public/icons/browsers/yandex.png | Bin 0 -> 1787 bytes 21 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 public/icons/browsers/arc.png create mode 100644 public/icons/browsers/brave.svg create mode 100644 public/icons/browsers/chrome.svg create mode 100644 public/icons/browsers/duckduckgo.png create mode 100644 public/icons/browsers/edge.svg create mode 100644 public/icons/browsers/firefox.svg create mode 100644 public/icons/browsers/maxthon.png create mode 100644 public/icons/browsers/opera-mini.png create mode 100644 public/icons/browsers/opera.svg create mode 100644 public/icons/browsers/pale-moon.png create mode 100644 public/icons/browsers/puffin.png create mode 100644 public/icons/browsers/safari-ios.svg create mode 100644 public/icons/browsers/safari.svg create mode 100644 public/icons/browsers/samsung-internet.svg create mode 100644 public/icons/browsers/silk.png create mode 100644 public/icons/browsers/tor.png create mode 100644 public/icons/browsers/uc-browser.svg create mode 100644 public/icons/browsers/vivaldi.svg create mode 100644 public/icons/browsers/waterfox.png create mode 100644 public/icons/browsers/yandex.png diff --git a/lib/utils/icons.tsx b/lib/utils/icons.tsx index 79ccc4c..bfc9cc6 100644 --- a/lib/utils/icons.tsx +++ b/lib/utils/icons.tsx @@ -32,9 +32,34 @@ import { */ export const FAVICON_SERVICE_URL = 'https://www.google.com/s2/favicons' +const BROWSER_ICON_MAP: Record = { + 'chrome': { file: 'chrome', ext: 'svg' }, + 'firefox': { file: 'firefox', ext: 'svg' }, + 'safari': { file: 'safari', ext: 'svg' }, + 'edge': { file: 'edge', ext: 'svg' }, + 'opera': { file: 'opera', ext: 'svg' }, + 'brave': { file: 'brave', ext: 'svg' }, + 'vivaldi': { file: 'vivaldi', ext: 'svg' }, + 'samsung internet': { file: 'samsung-internet', ext: 'svg' }, + 'uc browser': { file: 'uc-browser', ext: 'svg' }, + 'yandex browser': { file: 'yandex', ext: 'png' }, + 'waterfox': { file: 'waterfox', ext: 'png' }, + 'pale moon': { file: 'pale-moon', ext: 'png' }, + 'duckduckgo': { file: 'duckduckgo', ext: 'png' }, + 'maxthon': { file: 'maxthon', ext: 'png' }, + 'silk': { file: 'silk', ext: 'png' }, + 'puffin': { file: 'puffin', ext: 'png' }, + 'arc': { file: 'arc', ext: 'png' }, + 'tor': { file: 'tor', ext: 'png' }, + 'opera mini': { file: 'opera-mini', ext: 'png' }, +} + export function getBrowserIcon(browserName: string) { if (!browserName) return - return + const entry = BROWSER_ICON_MAP[browserName.toLowerCase()] + if (!entry) return + const src = `/icons/browsers/${entry.file}.${entry.ext}` + return {browserName} } export function getOSIcon(osName: string) { diff --git a/public/icons/browsers/arc.png b/public/icons/browsers/arc.png new file mode 100644 index 0000000000000000000000000000000000000000..700a72c7e63e012fa16113425f7fffacb5e28240 GIT binary patch literal 1520 zcmVZK$TP$p_RprRgDoe@j)LDqrnYSBpO3hVnR&tK?S!b zqlv~njTprcm0(*ITPjOjsA%hyQoz!}v@@NVd*{x*$A@k+oheY_o9F49^PThm|G)pe z^PLO-_fVJ9BqB?I3EQ3(){5@3z_(_x(R z-C1jleGNEq1K`<|z9JE+1*)BJ_`YO&`^`=)_7L!!h-?9HUy17A+yQ>Relh#i%Rz$u6I)KwaSVRtr$Q0la zpdh|$&qZyLxPh@}AHZF}Lx3xlJT1#k*Gg}f7y*FpKq%ZiC}khWUbS59U$Tc9ss7T-uOGmnxlgSAMQBK z&Ufb&jvuQR#=hNsN#p=dxEEtzBmU(#=~he2h;^>wVt_*$u;$x6U1{V1q3$GG-U^a9 z{0sJ}e=b=7fU&y{yR#GX@ZqfcT45osapM3!)qt|UPsXzreph>rnvWVUaEkF+^L8{w z&qtplmX&qiGkNmBvQ7g|RZP##T4-4|Pt+9iN5r48r_ZS%f5Y00yyG~;B4HxO{sPIw zR6Za2%$We6E2UaB;QghGu3&2EFcN`y)S@HqW@SSqZw5;-?V-`(t(=X@@uSb1H6%D; z66p?+Fb%BU80J4+83KIs=c5GzHn0i$Zo+qfo+sB#PAjyN4v9n(fTSaA|ErW0^_6UE zDdUha*(c5=ve zl~U0G2T)3F2X?-&ehRCW6_HFjnDJy*K#yC)qr1{_yJA-}(qxYXPxXW}A6wuY$w_~_6nYzxoXAl_gjQ~jOXzPN}$Zu;{F@VFHf<+(V^ z?&v2j!0qv*Ib!Us2bc~lNbODab3)6XU04Y_gFsmZ8y_oY^}{m&IB_aY=lQ;u^ojxx z#YH+fzP_`B-)th;(wc#hY&kKotN;#V6QDVEma7XWnh;?1+A4r*U}xDR|GctEOr_7k z^S}wK7QYr|1kWHwF zT&q`)%iQ@TD5WSIm&1#%+{ROzZUNZV zPky0z9ha*$@Zi0;r%eG(LwUV;7tF(d*R256N~!u0yG5i@MA}6}EX$UZ_~atQsTk8m zBq$={*tUp0i1UqzWK6w`>#P48a3N3$oB \ No newline at end of file diff --git a/public/icons/browsers/chrome.svg b/public/icons/browsers/chrome.svg new file mode 100644 index 0000000..dcc3b11 --- /dev/null +++ b/public/icons/browsers/chrome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/browsers/duckduckgo.png b/public/icons/browsers/duckduckgo.png new file mode 100644 index 0000000000000000000000000000000000000000..64ee9430fc0490c06751a4701312a1cf514f8e7b GIT binary patch literal 1872 zcmV-W2e0^vP)+3(U}74R@3_At>kJZzIT zh&rizC@rvQFn9qp3YEwfnyIkvfux#BRq&RsA*|UT&KM40LQI@oJI?j}?cv(jcI*_o z^JJg<`jFr9k5uGN3-B>S!U+X?Z}99#(f^CUcxSths+oOKidXVF*P1Zywe3{3gi-ws zC~hwRhL$7~9bFbdK5g`sLDZMw?KU^^)6$y-QT^EonTmk|B)$2D=w`CWq zzwz^&u|$u@m_B!$*$)Qts;I!ep;9!;2#jxA8#V$Z$nH?eHTt0-Wg{8!i*Y?ZvmHo7#>p0PY{{B{?); zl1OKt&F6&8^1kc2w?KSP^*8e6pB_foolN%~WBSZ*FlHX0{q;SxOXr!dsmJ-`DjYR+ zRDWwDc7G$8i7^bVG#YXtL+X>uAfT!xjH@Ng+~vPuXi1;6+gyi7Vt=+GkPH1dz{20+Kw(V6Jy-|$+leR?ZM#LkD>~I z!NNW;vt9K!qQ_$-`i>RAJ6@vU2R~a9+yr@b$tp>lJBA*Q;b>~6di^E<47uQ$2=O&#gXh#p+0p zMliG_s=pCeOPKU%#Fus1I~9Rw18}cx2Vm~%P{~F6%GDOgtTxY`c;(Xj?WqsBJbEA3 znsCME01w|g1Ax2L#Ij+usX`D!f-~1_%F4>+v3~aaa)9b8C%ruzsdhU{j(r%30`N6| z!;%E@ExM}3Bq@amspQ(NBVZE9OpKLWTF7-ffNzHb0A=6+zdvMV_w>0D02CKgKMhqY zA$}2zH0be3091>l45;}DXAPD`?@v$8SiiS#ZY?~>CSmGNpp_E#KKU8mZcuA-Uf(jo zfkNxfVIlFUWv(oiJ5e&33=W5*R6qI>WMXBLnQq0cN04p>t)6V1Oi5mk|V0)$f6BRB%hxYmS8k48!^YB#RIR{{lv%?r)H zgPVJC_+zZx1(|p$xLOODdvLeEpv#x~d@j+2l*5XF9E3vo)jr=<#@rbB7+u#(mF{Nv z`n%|!Zj#pkX@aV?CXwWbnf=A$X>Fqz3*?Y$a~b_|-u6~{G~(0avEoi;T@;g1=H}+8 zt*tF1mmGn_g)()S6wevUcG~Dyf+vO(5>A3S0|5NH_n~;ah1=uTNGGN$8n!PQK>up6 z@!xu-M5lPXC36Nqz=>f0a6$o4WcDDy?9c$2=oqTMk-E*LgC%wIIsmf^Nj`n>cjok2 z09-B4G38azoPs}m)6TCu99#^QR(IXz?h11z+Y6uq1kVmfZ*+wZ3CW(jZ|-HquTE3b z(S2zt0{bTBH+|hD9LqJx~0`Q<( zpm@C0Z|}jk#f)V9NUyb=KJ`w-TJ^sLn(CFS zNKH@iRLxhBQkqdQ4D7lcyKX1&pLxR9(^TJ2vCRG@R=j@N@;rXDcqz?pD0bqJYk9-Z zj~3Q!T_-J5y!`(6@z`tF8~O#$KCu=sw;q6+=ew+qmzfyj?t#5UYkBsC;M>DXujLkr zt)YO#R`@U}TC>4S#A>^@(p8gaJjQh2@#4iMD#&gKo;Bb5BMIc?MpyWtknG9-ceR9Z zx3=SKYQ_<0F6r(1y-8BnBWPC#OL~Zu98%`9`@hhqS+V4zu^-s+sIx^@6Vl+MBC-c7 zdHsb5SVTHQzN|~>R1ob5@eIh)&vQgnNHLrxJ7h~6{Y!bgSpElzk}H`1$**Dn0000< KMNUMnLSTYjij~&@ literal 0 HcmV?d00001 diff --git a/public/icons/browsers/edge.svg b/public/icons/browsers/edge.svg new file mode 100644 index 0000000..b2afc8e --- /dev/null +++ b/public/icons/browsers/edge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/browsers/firefox.svg b/public/icons/browsers/firefox.svg new file mode 100644 index 0000000..f153ced --- /dev/null +++ b/public/icons/browsers/firefox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/browsers/maxthon.png b/public/icons/browsers/maxthon.png new file mode 100644 index 0000000000000000000000000000000000000000..87134c9716e98014b9a10d2ae3df6625df14f30b GIT binary patch literal 984 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 IM6N<$f(WZ>CjbBd literal 0 HcmV?d00001 diff --git a/public/icons/browsers/opera.svg b/public/icons/browsers/opera.svg new file mode 100644 index 0000000..6e79822 --- /dev/null +++ b/public/icons/browsers/opera.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/browsers/pale-moon.png b/public/icons/browsers/pale-moon.png new file mode 100644 index 0000000000000000000000000000000000000000..b51eafd38ad6cc28b95571e0b04cf3c201122ece GIT binary patch literal 2446 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 m5?7-KLlq*PK;O1Tge z6H3W9fBu`_{`HP!FCvRx-6?%?DfF;0fDZZ@QF3Z`qqK3f6{B{uE`)MjuUxLwYJGqX zOkB#x?s>3s^f;{e_Gdrwo_DL?+iUr}ihbRj%6>t!QX>#;6^=ll*A%v(_ z#S8TaFXRjEN~-E@+aCVk&;R%6xI%Q5$04udok~V=bp_U4AP6+4iBS^~3eX46BS2BZ z*t>ggCZC@%W4diO03Gxe0=6!=?{m*{xvZ6o?6KEgbHmL~9*HJ%v2{B2Y7T57+Jnl^ zqgV$SLJd-5Cm}RghFaD-GfzLYF_F%UpE$nJXgZGTaSnIWaU0EMzpEPOws!Bh?&rHE zRcZ~Qu?@MDs?<61V>R5jl<={b@vs(AO3@JW5thNr*A2sS-5-4KM+Xiae$^{qQOIQ& z37mrq{BXDse&TlcODV%0)j^VJHo708k{A>gn#e?V9WEx#O;Up->oENT$g<@0M-uM|R*(G!G73S0D%<{}1}p2d`6q6SNzVoW21hNoY`AHY2iJTfwy z{=*NydH4VRa_4{l{O{lX?61H2(H+FDk`c>KJhx+JPoOabW9=s5Jib-)8^m`1~Klgapxzx8E9*XyXFH0(F(MHcLc*F#Z|}*DgU2g(o%4U+<8Co%;;QKI{6EL~ V56;yDGI9U_002ovPDHLkV1j6K^>qLM literal 0 HcmV?d00001 diff --git a/public/icons/browsers/safari-ios.svg b/public/icons/browsers/safari-ios.svg new file mode 100644 index 0000000..c04ad58 --- /dev/null +++ b/public/icons/browsers/safari-ios.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/browsers/safari.svg b/public/icons/browsers/safari.svg new file mode 100644 index 0000000..214ccc5 --- /dev/null +++ b/public/icons/browsers/safari.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/browsers/samsung-internet.svg b/public/icons/browsers/samsung-internet.svg new file mode 100644 index 0000000..5b2caa9 --- /dev/null +++ b/public/icons/browsers/samsung-internet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/browsers/silk.png b/public/icons/browsers/silk.png new file mode 100644 index 0000000000000000000000000000000000000000..aafa0fee1ad3e3e69163ecfbbbafd310cf9120d7 GIT binary patch literal 1618 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 \ No newline at end of file diff --git a/public/icons/browsers/vivaldi.svg b/public/icons/browsers/vivaldi.svg new file mode 100644 index 0000000..2084b97 --- /dev/null +++ b/public/icons/browsers/vivaldi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/browsers/waterfox.png b/public/icons/browsers/waterfox.png new file mode 100644 index 0000000000000000000000000000000000000000..c031bf986b79881bd342dd4f5b04628df7566a1d GIT binary patch literal 1497 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 literal 0 HcmV?d00001