w+d~^m3q>edS@7nh9u5eJ<$I61AU5K{pXofRS2!flzwJ8wpE#B
z?8yGjX`ZLsCy!m1SF)5sPOyl5zSoXT4nM
z1nhL8#2*WNuG1>lJ@;53)PGqI5}u~Lr}`UhRNI8n>ONe*Q7WmT8l^02TOk-m_tY?d
zQFpg{QulqUqB*;sKwt{?OI4E!pGxArfGZlAwaA)}0pX?@d}(QLW^`(wYl7gYNi#2Vn7_{`
zWz=?RmPCCIUSAF?kjiJBL8@GJgR5ajX;-o}XPWt}zPD+MV)(}g!-YyF>QT+M?)0$2
zYq0zg%tv9qeWZ7hI2;s~hD-qA#Xo;@^vi2Md*Qr%U9fG(mf2qI)d&59{pe@3TFz<1|(y!+)hw&x^
z2qDe|-@#1p!9G3S;?IbOd`V;VD!4LY$HA+9QJz+LA35@$aShNs!CsDv=yVuCfi+IW
z*)Qo(N2pCqzV@`20Gq+JHTH}hvTu4!?6CR4BQ%%HRsP2Xpvd2%;1#~_vFr~u5k9nZ
zmFOs~XoWhPYFz2IxFzfsIzGMo;d*Yhid`!?+Tqtu+CAA~zB6f+E~^g&pWWdmS)#$K
zbGX@GrY+~0vFnxGJskw~SDX#Wg@of*sz0xXKPq>`SsTS_(PeQ5#Ky*k&S1z&@T(^z
zpghs5X`hNKu%aBDo2hNhE0^~)T5bxwy{?8xX?AyjNOV~*q+{R9aT86bFr`Hg35!ah
z936l7qV1zNyq9w)2yB+Lb^DGU0t#i9G_0Am>({Tg^Q2B=&?yTI7W|QPm*zM5KFxtT
zPfiS#k8t#`)wI!+71-wZMS`8|h{z&JWbi1z+W)qJF(p5O$a;wO-0qyOwDSC_rU+qsTyjD~9O(Qo%Lg$hxQZ~&%!T-59>%OLX+<3@3(^{f=D63Eh
zY9B6+0GhG#j;S~%A*6paIeadqb?i#T6^h=tFvs+Ic
z>SR=&!%XA(Wv?SKRs=S|z4smrzeVO~%_(J7e0UO7_WW7j@LkT!*C=ps2ho|sT3>}y
z@Y|3vR4}{)U1aca!bh~YvYR8dl5~%;X9P1h?i#Rw>Q+?z!rA_`Cd42Hlk@!^K$9xrs4GHz9@P!U@vT35Bnj%ZFYFKifX?B2hG
zGX9WO|GTF_bVjQ$?;-;^M0g|kLoF{QvY{}yx+XCqGN-v>UJl0%FY{jpWEbsLk~mg`
zlHi6ZBQM{)EFj{#nMr-SL{k~E7xu`1_KTN16JLGCY>m6EUV9=79~hG1fAPu&S$sffgrZJ!;&QZPlZYF7|}wjh`jc0ioGsI
zlg#jPU2Z7R6!78&r)zCz0;B@34I$A8G>%Y5oOC%U)|32KKmsDO&kky;CYi7tik_Sf
zPgi_desD~4H+i>&X8(g1_>nv_Q^30v;S$7vYHd8gLMirwY59VcQ$cdYxIPU7nDBi#_nYgZm2@EsBwq((6bs1Rqt
z3%M~N@tH`KrLC;%nt
zIJqh!jpst2Ph#)wOFSXW$iF}427M@a6a2k?+R7~@WNYbqz=+o0WHIR0^4S42OO4*K
zKW{UJmP}M%K3k?*GuIo3{nn#+$Sj8X?+WwL-8O$iKH}2w`1JXB$=i4{*SsErk#GW1
zq}vXAI-M8j)t1Y*#(4J)5H0ZH7U}PWnk*J^Og_B-<2~48L`hyPz0y*$Wm-1AhQ+Q}
z9ms3ao3I!A3c!m!`;EhmSE~3G*4}Ubrx=KlC+i%M21tAusXxf-r^X-UImHdG($ul-
z=qEs7!EOy=!;s^bx?hI2^`~2qI-`7stg7Vj?vE14{-SWi62A_(+P~ppYYx)1n7fO^
zK^?_}yVWyIbymKfA}ETguUO@j($y9BO^?(5ySxr`;s<-r>Zy}nJ+h&W93Plc`?6}u
zAE;Rl2#H|P;OHv1oKt!@=N#|^^yfaS
zvZ-of0i|}>46&|v`)EUVBA2wPJx)(iW_z!|O$b3EjCTI$iDbf;
zl?QtU+@P(Jsiv^TdOZHHWd>S`^)IYrQ52e2B(M)@*oBs4mShzcv@(@SK1gJYM0xin
zftTP*SL$78Ja^>6hk#}bn>Ef7DDBWnhE^Ji(>PT!|Iy1@SJ~6QE2SV9^t8x#92i9p
z3Z&>LX?m!XdCP{0Q~td6H#^)&1f+TKSq;LFnlEp;RH(9IYOSLwTtF)g`+*!98ajAX
zvWqbl(*f5~xl1Jlz~S+oIt0EiCII^X85~haWq(ETW&L3O#Bgf?3f#$}_7%MEaY{1x
zjwx1zK4!wb%!7AE_#u6k{;uU*7B0%gojpZkIfz`K%UmyKoB=|f3T%vVf
zCC=-rqX)UY8tR``RqmcQuY!x%bOH+`ykzCQW$NAc293$wZg6ChtkrxeGy+H&6^)4k
zbTFFl7JR%m%tw
z?+enxN?ZJUTCP7JKI@A*kB(~V#`J_|NmR6E25cDs=@}`bLKB^SsL>@%=;gjsc6Fh9
zkoLRZ(tnK$U4R?|^kCNTx`I9F`5arqdtuu;`e?l(%jw1k0G(IUlxU*!)8{Jq-sexZ
z%Bl~@ckr^%F3){`3!)xW=VnUHBSW?IXNa0ScB&{JbaFKgCJ8F+A#l`yh8g><_5(-eT(m*Y2;f4pk;)sGY*O%U;)Y
zb`i=yyw{hs#!&mIddQlI-+*`0?B7QzGf=)PSHTFHgt%4HDdql+7mnPH;lG$C5oXZH
zdByt{620qSUVmWbtc~VPt^53Z6M6eq|D7%JpB7%R3i{Y+$tus*PI&Fj&5z?re4Oh
zzno+#DXIX#C6^bJ1Zep!>iA8BglV)4jw=d9EwPt9&NB)
zk1m=_tx;oHiy_TMOg@nb-y=qWU8__mprrnDITEUvax+qfEwi1M9`h(L^@E2?Cm8`Y
z5r`RXt@wZe$V?nmR56fwpu*5Snr4dgn+NbHg?{$rTFtIu4QBZvvC(IZgK{1n3{z7h
z@HQCLr|T$@n^6}%aS8)-OcWjy@3OIg7{aC|CCg6wxsq7wkZ`|hCvN3Z^X?A>Jr?qJ
zAy3Sg9@$DEjF3-h#-lzbx$`8m+Am+5pADh!5wmw0=0vQWHYmS
zoLfCOmW~*tAx>_jS)gv|cu?@hd$jBo(HzHXC^tPQnL;w~%vEdlb$OWG&eTd(q>$Hs
zRwfVjVwyhD@tU6vK6hdKqf!0#g`P`dqi^OwX+fum`=-$XNPH*Fer!^u1lk8|WR9&_
z6wq%9%l`N(?eH(Or8(=4<3b#$fdZ3}>Gf{bt)+pa+m9^}*}p#dy$KSMJ`4#Idi>Rd
zn&@tO&g7@WduknZW-^{tRaL7WK5XR&Jko^FqP}a}*+Ct6ASb}35u
zi)rwR*6X0B*zp{$;0h;+ko5mF}g4e}%@$#>LV54niN5#%_
z3ZRCI8m>dN-~T7fIwb3@zY16r6deTD+5B^Is7&a)Q*r5isg791x%^`n{W#<&MnWBc
z&uu1DO}!9)BP+9SV?~;V9KslA(hA&TeY8*oLj0|(4t0sj2|RsS^nbvKqR&Y72nqnC
zftVN*s>Lu|>^aPikii1l9{!(2W<(D@xmoNs>;nc*m;ydL^UoC8hv_m`Jpj6_ytCtE
ze=KUk#3_>R=(+BWDpXrr@&%Ri7GPj_1x5DQn~k9U*2rSit?~Gj;X_=i<4mJ>VV|13
zA%K34t4+E?=oPCbWIFk?%PyAX=$zr6Zm}+xWn>Gv#A(oyMZs*+vg>{E*ED_pBGTWV
zk^=~-BYR2lTv{s+&f^-U?qgO>)$ukc#DY2)K7?MT^Of=p_n{5nE7ZZZLe!g!cQ~{R
z#ux=GK)SNyjQT^v??MAg$)VlY_dv(-o*=?ZO-;y!P<5NlSwJnz(N#Uo+Rj8~G6%
zra0c~ctYce0NAdlUIAbO;1B4vTfH
z9q1by(Lsf8u1u!t${&ZyeO0wfKba)$x_K@fcB#js521~ooSCf*KO(qX;?E2OfwH&t
zRw)PXW9UHT=*H*-o^@sx77%$<%W&#JO;x;Vx_++4-kk@Dslc5e!Hq<9C?BgOop4+KJlLq=41Bjk^VA
ztaca+XYz3I{`0GQ8`77y2yW&O|h2b_umcJdtHUWE{n30zaN>piPLQu$ul*Qs+VVCZ0w
zQx-8Pu?vNr(329=t^Ny;*~|vwEe347NS|hiC*czEn0v4=)9q_RO+@EPuU>!1Xv&*y
zSH7un@w4QL=8Vh~+#&IV&=L`RWV6LYIK;|VkLlX?1x-}1W(`e5)OaY}-W%&+M5Lid
zmdf00u#J=rk)Cv3ofq4p*g
zv1>OI&z;5$rC1M}VV-4M<4iw0%9`LG%oB7}QnXso58t03(o-Q*$!q=ka8#Uiy`J%IH9Wd3_JEumy5r`OrYf0o
zWBY{^>oQ9R2Zt2?A2&Yni5vhju5=Qbt{t)PHf~?)MR7+?fl~;K4msX;Wkhhz23hjE
z6!NRu3eE)0qszB!XRk=$!BdAQa5$_NY3U9l_#3pqcb_0VW#BwQRpkvj+0ssiShI$@
zt|~t4ZmWWK1H-QbkEi#^S*abFI>agdMNse33W5$OEIv--uYCpf?400TOBRsD3!x>I^BIi8{BJz
zXrU*WFhElY{{oGm-!1>?lK7Gk%h%mDlR`ts;4G->CvQL(XsvKpT2FiD}J35QCOGms<)?V
z)GxLqKdena0wnBvHi+E-Z_yD2j-kt^90pj}O=o`C>k_KFFgbC8!DvLy293!NMb1Gt
z|HZzJN9gYYZ=1uh&vO%yck{t%an=SIFp7ZC}N$qC-|fOlc2c5sR5A~zRzSk(qbbw;Ea9peA`<9BEd7i&g#Q+50$rz1r+P|61Jwe}3e-)cFv#%_7&4!&FMPpOFqfL~4H*MCT^kwHei)L}_>*
zMm^Ei0NOjTLYi^2NCGw6S}fOn8~hNotjHxY(oY!ZXdSL;Uii>(wm$DQ(NuhB>4}2$
zwW8Ew?tM@(5KLc;TX?3-#i8J}_yDcds&U$HimJhUU!oX47?re^8^rULK8dY7X%^nV
zX|v%A;KCi)ElBgNo?z*BaFc@hF1a35yjA(_X%YEKWwWAUhVOC)Xym$Si^{Q*R|v}kTag6yx9ttT|_Pd6*4(vl(h-x*$0W?2pW+igb=!Dd+WS(hgU6;
zf>P;2qu)p{-eo7RP2%v1YEUTvgK8KXjwx^d&)i8s2A`oEnem`PE&0W;B==e#%y8^c
zOLE%SxI+znzX27^mxLa>lh*FUGQs}V`~%)7(67hY(yu3qt|gzgkpflzKI6@Aj^ZU0
zY+gXmBb-;lMOc&(TlPqmD^9(n<;3+$s4Gn1)ozWUPrO}S|8&uWThkfsjVX(}O@TZ<
zMJ1xx04TQ|#E4b~L*BWeSp{-^@IGAC61LzQ-{kR?Sa8k_Ye4v8%Y!e6`;*NVmM=07
z1zIi=wc^N~D8;}S<)#k>!$-1Rk?
zkGd;42B=TyXT5z0Tl5;GWG=J@U-uv!*^bv*Z9f>DgvVe45$l#h->8I^ObiDbDZVlY
zI^%;Fn%ANs{ZN%TTQFmgTek{~eN?a2k1EsKn=dds>l%_G8c5eU!T%v(I)4>+m~2Q5
zl4VTIGySSx*wWSd13YMu$j$vML(^TYKkpx}VL~EtYtUbso?|qEwK~)?QExHJb@kz?{5FrRA{yD`!HVv8I`z9~
z;gmPXr`r>`dDd0=I05+!3?BWUD^inGCD6>)tP06`v~Bu1vJAh7V*rh+?46HGF@69@
zXbXSqg3V#$N>HL%S`e+tLxgkB@Bq_Yn7N%|A&ZNPR*k9;mk5)=5O|;JIKTB2BL@oe
zS@rh@5#AiY3kS%s%QdBrcX|@ZrmUbKGxyY&`?>`Uyv;eDOHm+_Fj$I?>~2vAyz&fd
z!AZCsRoqQpWgZ_6W=X}I%S7}=@Ux&WwDq4&HKO01OvFSX@wz2G-z9lWYk^`jDuQ#j
zeu9VHvO${eF=>tI!&Uh8=IYF}XQcal`{A9S)M2>V5?y-4%TJ6AbFgw>nx^M>!$=>kZc
z;M(iu{Nm%O))C^pDF2CLm?-&|q5|rN=MuLLmvSoDgGQp$Y7nDzf-W%oDv9ld3Y1Im
zDjV>?Bb
zKjVKLqqIbX&O1N@2B#8X^m;x+`MeNTz)cwuvb(cerpz8VVYKb`PM%&^gb4qNFgO7n
zjF2BaDW@I~TEgbDj>V|-3=p3QklBb(y{efkDIp#{nyPn{werEwR>eor!`h#6Y|U=)
z!aEK2Ki$rzchT&J=XDC-WlRk+E%zF-TO$|5E1|$4!;@Vb{c=^(7J*=wU*;%=`_RQ1
z%DvOqe_rC$o>&b+ZC1{9L0F$Kfti;she^+CG*r*pqwkrMgiJ8SYeLJSRM2p1NS1~h
ze`Eu3N&`?0hD%rdC3vf5z_<~6*q29zrMn@N?MiS=c*BtOpP||9K)3gC1w8ZWJI%37
z;84LZN@Stc!{z;q?0yNms9Zt!p=f{vp!lIYNK)POt)6G#CsG#53dWDTUC@VNRyLAA
z+r_&$YVR&|lZU}E0gPC;X1BD)LjXV@l$Uy@(H>s#K!iSK-v`@@GsW#b8v~aIucS@s
zPjo|~TBg?yEC!<43}r`G8HA^A3FgUA-~!o6JRccS!7DG|;|0!cgL@QMeb`JCG2c(S
z<@qSv&Oq07pQYrrk*Q}|8G6)PU|uYwjrRWf+%9>exQL0*bE|rBoP}@Isr(_Z{M1J>
zDshi9N|Ts&9`?e0Hr!+-^WID0L#m19DX&+Son{F1>N!O0PL2904X?qJZm}F$T3gB}
zYPb^Wp!)L*h7=GI7e+5bTdPM#y0Bf2R%BI?23JWGfmiWIZ|Bcq7dl)Vmv&StTa6i<
z!Mb7=^1RBY6pM#xX=#c-c{kIrI+}S?yS2mfjj<;(%F}qp4Iq+&ZNYSp{>~S^#1`2#
zsA{xBDvU%snm~|64$n2~(?K_HsCJl7{|011ZvG+W+=R>~MtG!`u7#cBQK^d0!70cS
zl2r7`^f%+g_Ff@)883#f$;}~`jQ^|KN(-kIr3gTw;Fci2QxgyLlS7tV~oByIMed!UvPsAmy4`Odz
z4+7qWAFTD_O=iwi(w}90eV%K@djAH>PnpK11aX#Fu|!_%yl+VCLIATF6*}1|8$E7k
zp)@{qLF+Bu4Q12`1ZGB!k>XEK;24UOoNfzQgA6T>WiS0+!52M;Dr
zC;Ud0ZsX4$QG-O|KYi(D;ZbNwYxS5LcM5#zAl?aYo0O+Wf58F2lo(k-WM
z^?oWBE)?2Qi&uai&eIW8v4Ma|XYy=iaFfXr0i;`C?N{FTE!p1Dg#tEP{CjH|aR2&M
zdl!nbOGm*^?w$H>28ww6(MBCiYam$Ar4SRM`DNRc`nT?_ge-JU;ot$_BUM(Q73bZ8
zrbT>1&mwvR7D2&up<(m{esiaR*ED$%@b{(n!;TK7{@`+L5T8MCW5ViK=yGW9nN&_?
z%i&SDVBLb=qt~Ga8py170-!yl5LP2_0v`pPJxmgQI_M=q*27l6ZN}plDDe04!!LPA
zpx(ck=A^O+p>9is*#v0dCN9E3mJchk6)`>p2_JkM5=&cw%nB^`XFQ63`N$}kFB-k{
zewb07&kD^NKvCeRx6H8qEQf%Tb0-XMOIn412-1)Kwp)lso2<*QC`H!AOc$yFBn#AD
zA}1~k*bE3$qb3VkW~Dx5?P4PU@08%deNoT-v~Dn|bx0#djjNFmv=7?XtM0o(Or->D
zmTf{#XmF9$h+`eI8k{c|u4QlDUja`sy1gEqyWZmVe~XhGCdz^$j#RI8KfQ1Ei~&Pc9Sffbr#xZr>GvKZoJ9
z5(XzGf{bD;I}dbzfDVu&`o3(=b_J|}4;x)P$`S`IjZ}SBmxl(C*V~>-7XEBrECRS3
z9dKw;guIwPFycV#XQ2B>IGoAIGD>iyED4UnA02+kVJ|pV7S1-{nMEH-_%)J&8yON*
zh1Es+!ST^X-}e&^C_mi+<*;9vCv?!D$6p>84I|p(-UZZ_;*`g?zX}AUB2lhd>{;ee
z^My6Pg3a;Dd_A;5ih2dCWz$fY7X{+p$Zv+LT3tK>Z>$f$KeM@Jfo|6k@R=27UL&r^
zYe_bAtMD!vbWcxJ+iN}MBaq0HcPt>n)FRQ`_PprhpnN6u5G38{Dw
zC^}AF2Ig^XQ5%;%L=pky9_dQaqC)erBWnK|iXZ?qaMgKg|#OxTu&Ibh)GHlo)sj
zz{cipY_&=wIgCj+ERePa0$d3zWqteQ;SdR=ZMM$JtZlBAzlukgKEEg!K>*6@pd5I!
zftx3r=u)@19rldy&wSuFJKFa=$j=5OV{X%PPN5de>cclvzFW^9cRV*H2#5pa7LFR!
zfw9bxZ+WRZo?I?&*-V8riRAQ(GW1p3nQP=qUuWVJBGK{4{Bv%;w}lda2MG?iu$*iu
zdv@u0cF!^LQN$FlgYB;X4`31~GG;-qLhE$~!Yew59{RDIhi0@~&za$c9TPzqL8;7Q
zP^vOlfG#pG&4s=x1p}IZdbDI_%+zEaoj30$G51#}bq0hI(U5lEdN(EsrsTbT2(HSi
zEu~pbiZ*qJjE6^e3`<+lx*y*f@`V)8<$_&1QiVKEP_yBN;{a1Y&iv
zOt6R(oH+rWY2C98_%47Ifbjr0D*)$#2(uMLB9Xu^1@4fQrtqmIk^V<6WdKwFNSQV>
zh^9Yz$FeB)DM+fpoM2%mi!f(|@k}u0WZ-8q&gydTG=SBWXcplx!1pq+V$S$paJCZ+
z0nS;0jq?C(;ezsm$py5|-VDEEia}-qQ~=1FJ<@JD0u5cQ&aB35bs3Px!0JYTy0D4=
z8+9329nMh;jMoB3O@P(pKusG^lZ*eKp%x(i{h$9F`(9xm0I})Kk$)IJ$T&L?0S>Z?
zf5#7k;UG9Wz!(m2@O>QEiwKHsz+Mi%mjlIREV6f(f8DQ2C51}FlaMqr6eDX>YEYWY
a&i?}lr}}fx-d!I60000
\ No newline at end of file
diff --git a/public/icons/services/navidrome-light.svg b/public/icons/services/navidrome-light.svg
new file mode 100644
index 0000000..45576ef
--- /dev/null
+++ b/public/icons/services/navidrome-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/netbird-dark.svg b/public/icons/services/netbird-dark.svg
new file mode 100644
index 0000000..8cbfded
--- /dev/null
+++ b/public/icons/services/netbird-dark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/netbird-light.svg b/public/icons/services/netbird-light.svg
new file mode 100644
index 0000000..19f5726
--- /dev/null
+++ b/public/icons/services/netbird-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/nextdns-dark.svg b/public/icons/services/nextdns-dark.svg
new file mode 100644
index 0000000..09a3834
--- /dev/null
+++ b/public/icons/services/nextdns-dark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/nextdns-light.svg b/public/icons/services/nextdns-light.svg
new file mode 100644
index 0000000..d4164c7
--- /dev/null
+++ b/public/icons/services/nextdns-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/open-meteo-dark.svg b/public/icons/services/open-meteo-dark.svg
new file mode 100644
index 0000000..c407212
--- /dev/null
+++ b/public/icons/services/open-meteo-dark.svg
@@ -0,0 +1 @@
+
diff --git a/public/icons/services/open-meteo-light.svg b/public/icons/services/open-meteo-light.svg
new file mode 100644
index 0000000..94c4e12
--- /dev/null
+++ b/public/icons/services/open-meteo-light.svg
@@ -0,0 +1 @@
+
diff --git a/public/icons/services/pi-hole-dark.svg b/public/icons/services/pi-hole-dark.svg
new file mode 100644
index 0000000..0258f41
--- /dev/null
+++ b/public/icons/services/pi-hole-dark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/pi-hole-light.svg b/public/icons/services/pi-hole-light.svg
new file mode 100644
index 0000000..5cfdf80
--- /dev/null
+++ b/public/icons/services/pi-hole-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/plausible-dark.svg b/public/icons/services/plausible-dark.svg
new file mode 100644
index 0000000..f0fca83
--- /dev/null
+++ b/public/icons/services/plausible-dark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/plausible-light.svg b/public/icons/services/plausible-light.svg
new file mode 100644
index 0000000..a779369
--- /dev/null
+++ b/public/icons/services/plausible-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/plex-dark.svg b/public/icons/services/plex-dark.svg
new file mode 100644
index 0000000..99ceafb
--- /dev/null
+++ b/public/icons/services/plex-dark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/plex-light.svg b/public/icons/services/plex-light.svg
new file mode 100644
index 0000000..ba9da99
--- /dev/null
+++ b/public/icons/services/plex-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/scrutiny-dark.svg b/public/icons/services/scrutiny-dark.svg
new file mode 100644
index 0000000..5a824d8
--- /dev/null
+++ b/public/icons/services/scrutiny-dark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/scrutiny-light.svg b/public/icons/services/scrutiny-light.svg
new file mode 100644
index 0000000..ca5bf80
--- /dev/null
+++ b/public/icons/services/scrutiny-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/speedtest-tracker-dark.svg b/public/icons/services/speedtest-tracker-dark.svg
new file mode 100644
index 0000000..f19624a
--- /dev/null
+++ b/public/icons/services/speedtest-tracker-dark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/speedtest-tracker-light.svg b/public/icons/services/speedtest-tracker-light.svg
new file mode 100644
index 0000000..f90dc9a
--- /dev/null
+++ b/public/icons/services/speedtest-tracker-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/technitium-dark.svg b/public/icons/services/technitium-dark.svg
new file mode 100644
index 0000000..68700f0
--- /dev/null
+++ b/public/icons/services/technitium-dark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/technitium-light.svg b/public/icons/services/technitium-light.svg
new file mode 100644
index 0000000..805a063
--- /dev/null
+++ b/public/icons/services/technitium-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/this-machine-dark.svg b/public/icons/services/this-machine-dark.svg
new file mode 100644
index 0000000..9b603f4
--- /dev/null
+++ b/public/icons/services/this-machine-dark.svg
@@ -0,0 +1 @@
+
diff --git a/public/icons/services/this-machine-light.svg b/public/icons/services/this-machine-light.svg
new file mode 100644
index 0000000..8571487
--- /dev/null
+++ b/public/icons/services/this-machine-light.svg
@@ -0,0 +1 @@
+
diff --git a/public/icons/services/truenas-scale-dark.svg b/public/icons/services/truenas-scale-dark.svg
new file mode 100644
index 0000000..282e862
--- /dev/null
+++ b/public/icons/services/truenas-scale-dark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/truenas-scale-light.svg b/public/icons/services/truenas-scale-light.svg
new file mode 100644
index 0000000..c4b9528
--- /dev/null
+++ b/public/icons/services/truenas-scale-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/umami-dark.svg b/public/icons/services/umami-dark.svg
new file mode 100644
index 0000000..1e375c3
--- /dev/null
+++ b/public/icons/services/umami-dark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/umami-light.svg b/public/icons/services/umami-light.svg
new file mode 100644
index 0000000..3124397
--- /dev/null
+++ b/public/icons/services/umami-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/unraid-dark.svg b/public/icons/services/unraid-dark.svg
new file mode 100644
index 0000000..c4564a3
--- /dev/null
+++ b/public/icons/services/unraid-dark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons/services/unraid-light.svg b/public/icons/services/unraid-light.svg
new file mode 100644
index 0000000..ba87cf1
--- /dev/null
+++ b/public/icons/services/unraid-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/components/ServiceList.astro b/src/components/ServiceList.astro
index f4d593a..6aa1870 100644
--- a/src/components/ServiceList.astro
+++ b/src/components/ServiceList.astro
@@ -8,6 +8,7 @@ interface Link {
interface Service {
name: string;
+ icon?: string;
kind?: string;
needs: string;
fields?: [string, string][];
@@ -31,6 +32,18 @@ const { title = 'Works with', footer, items } = Astro.props;
items.map((s) => (
+ {s.icon && (
+
+ {s.icon.endsWith('.png') ? (
+
+ ) : (
+ <>
+
+
+ >
+ )}
+
+ )}
{s.name}
{s.kind && {s.kind}}
diff --git a/src/content/docs/docs/widgets/backup.mdx b/src/content/docs/docs/widgets/backup.mdx
index 300a772..127eb45 100644
--- a/src/content/docs/docs/widgets/backup.mdx
+++ b/src/content/docs/docs/widgets/backup.mdx
@@ -19,7 +19,7 @@ Small holds one slot. Medium holds three. Each slot reads one job.
@@ -54,10 +54,10 @@ Small or Medium. The state of one VPN connection.
]} />
diff --git a/src/content/docs/docs/widgets/disk-health.mdx b/src/content/docs/docs/widgets/disk-health.mdx
index 8780932..17fd029 100644
--- a/src/content/docs/docs/widgets/disk-health.mdx
+++ b/src/content/docs/docs/widgets/disk-health.mdx
@@ -19,7 +19,7 @@ Small holds four bays. Medium holds ten.