From 030a69ba011ebadad9da5cb46137d855964751f7 Mon Sep 17 00:00:00 2001 From: Bruno Date: Wed, 13 Jul 2022 19:47:17 +0000 Subject: [PATCH] feature: Add status badge to the favicon --- site/htmlTemplates/index.html | 11 +++-- .../src/pages/WorkspacePage/WorkspacePage.tsx | 4 ++ site/src/util/workspace.ts | 38 ++++++++++++++++++ site/static/favicon.png | Bin 571 -> 0 bytes site/static/favicon.svg | 1 - site/static/favicons/favicon-error.png | Bin 0 -> 2579 bytes site/static/favicons/favicon-error.svg | 4 ++ site/static/favicons/favicon-running.png | Bin 0 -> 2487 bytes site/static/favicons/favicon-running.svg | 4 ++ site/static/favicons/favicon-success.png | Bin 0 -> 2460 bytes site/static/favicons/favicon-success.svg | 4 ++ site/static/favicons/favicon-warning.png | Bin 0 -> 2503 bytes site/static/favicons/favicon-warning.svg | 4 ++ site/static/favicons/favicon.png | Bin 0 -> 1901 bytes site/static/favicons/favicon.svg | 8 ++++ 15 files changed, 74 insertions(+), 4 deletions(-) delete mode 100644 site/static/favicon.png delete mode 100644 site/static/favicon.svg create mode 100644 site/static/favicons/favicon-error.png create mode 100644 site/static/favicons/favicon-error.svg create mode 100644 site/static/favicons/favicon-running.png create mode 100644 site/static/favicons/favicon-running.svg create mode 100644 site/static/favicons/favicon-success.png create mode 100644 site/static/favicons/favicon-success.svg create mode 100644 site/static/favicons/favicon-warning.png create mode 100644 site/static/favicons/favicon-warning.svg create mode 100644 site/static/favicons/favicon.png create mode 100644 site/static/favicons/favicon.svg diff --git a/site/htmlTemplates/index.html b/site/htmlTemplates/index.html index 1fb055a67bb95..90cdd483aa79c 100644 --- a/site/htmlTemplates/index.html +++ b/site/htmlTemplates/index.html @@ -22,9 +22,14 @@ data-statuscode="{{ .APIResponse.StatusCode }}" data-message="{{ .APIResponse.Message }}" /> - - - + + + diff --git a/site/src/pages/WorkspacePage/WorkspacePage.tsx b/site/src/pages/WorkspacePage/WorkspacePage.tsx index 7dfbac41e803c..9a87398707711 100644 --- a/site/src/pages/WorkspacePage/WorkspacePage.tsx +++ b/site/src/pages/WorkspacePage/WorkspacePage.tsx @@ -10,6 +10,7 @@ import { FullScreenLoader } from "../../components/Loader/FullScreenLoader" import { Workspace } from "../../components/Workspace/Workspace" import { firstOrItem } from "../../util/array" import { pageTitle } from "../../util/page" +import { getFaviconByStatus } from "../../util/workspace" import { selectUser } from "../../xServices/auth/authSelectors" import { XServiceContext } from "../../xServices/StateContext" import { workspaceMachine } from "../../xServices/workspace/workspaceXService" @@ -50,10 +51,13 @@ export const WorkspacePage: React.FC = () => { } else if (!workspace) { return } else { + const favicon = getFaviconByStatus(workspace.latest_build) return ( <> {pageTitle(`${workspace.owner_name}/${workspace.name}`)} + + { + const status = getWorkspaceStatus(build) + switch (status) { + case undefined: + return "favicon" + case "started": + return "favicon-success" + case "starting": + return "favicon-running" + case "stopping": + return "favicon-running" + case "stopped": + return "favicon" + case "deleting": + return "favicon" + case "deleted": + return "favicon" + case "canceling": + return "favicon-warning" + case "canceled": + return "favicon" + case "error": + return "favicon-error" + case "queued": + return "favicon" + } + throw new Error("unknown status " + status) +} diff --git a/site/static/favicon.png b/site/static/favicon.png deleted file mode 100644 index ebb0c8c8062b5603f44c42a695670b2b48477de6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 571 zcmV-B0>u4^P)@1z3&;l zT<&rqhrq-{7)q^rlL-iF>(jGMzOKcCvQr%nXlj{Lcfs}GUx*Ca&N>uyWkG)iY(zyMjmIu z7cD)D)oAawZ6>Mli{U>OTNNHd+84gyI}>cf7Ri`BWeewKeu;iXO0>5o6}D3|%HVIY zoWhfUM4`K(+>^i&YQ;0={EBfem?0{yH}?HyXfh>WOH3{E8`ojW#u3gWV1r&OIHB11 z?7M) \ No newline at end of file diff --git a/site/static/favicons/favicon-error.png b/site/static/favicons/favicon-error.png new file mode 100644 index 0000000000000000000000000000000000000000..bfa8e566e018d96e89d4f94dda5f76137b5b18b4 GIT binary patch literal 2579 zcmV+u3hecXP)$LQ|EgYTGz5W0e|QhCUpFv-$K&yM zJRXn7_yFp*qfHY;<*3KYTwzDrfyoz|AZmck^wLFcnQYtyQTO1X@EhoE z+!RmUbm-ptd)7$~aXQ3b~QywsfB&uP#~`c!F|J5xu8T@zIm&1$Ow#?bjsimCa9z|xR7Wzc#bF=HYVV^aHa$@aP>rZV)W{}_N<)eV z(k{Y2e?yIIx~KNBhBQ@FzVP!1K7o3UCWy+R<`M&_VGB>$hD42^GGt0pLU^H_gT|db z6kp>@_E)$+!QMv&vox-GDv3#tQ5>Lr!TjdjqWS(zisu|=i`@pOsE*ro0+e6dn`KAP zAHMVr_uWS^`Ub~noTv6seJ0wKc1_y5$e+!LpznDCX0t9TdaH%Rag&2sQc$u+j<3>?q^-c~>*f_%65H&NTaC z-bPbQpMJ9@YT2|~w{d*Q@u{iJ?mB5#Hw(2j7%kwtqa0&WVp8%@kFJk%X#0v{Xr1ce@X9!il z{TRhpFw!w@&f9b?<5;C@^*xwhv6LwEVQYjA9iYM={?hH;MYplRcQ{nZ z??unmUZa$?;~~t#4}~4uCwU+Bi@Hc3)tqM<9M6keTGTGg1nr_425?K%I-uJMMTyd) znv6-SoQoX5i%L*r$g7(DNZJxn4*jRH2dMEmOxF-WfHA%W+GjGOVN6|ZLS{WG@0tC~ z2TTSHBbT*2oUF+MUPpCb%<(Ensd9McuVg9!3x}XQAti9=)yi~>}-kEOy z0j{9JFx~nxhm-3xq@feO0!y?f9rDs1+=6YjwsU92)@_{nA(XI%t1$$HUfO}2X}Jc+ zkdr*Oo(8|j+-BY0O~|2^Xi{C8%9vkgY)gsX;vXaWk@41;{t0Bb<8Y7UPlScbHdxme zPToZROcRMpOEg~|bH^=m)S!|FJuSdmZOWFyWuLnqeygr8r+cz`M*U5=2@_0Y-WFW< z)T%32QQ9xnngtokg`2L*a)xiNdur8lwo&SDV@Af|E}2D$CWPN(tQr-5SFsGVD2*1C zp!XS^!lO+SM2)2V2`XD%4XV=Z@*;q>s3;9kjj%lRw<`R)E2WoKqmMWults3OIL&QjUcBeE~JrdE_f zR5*JiT4(gn2@_5RGFsW6xsub-LRkHbcdt_4JaKMlBQSjJ(PwXDZQ@rGEF>&J;rzo)%D*jJBU;cYZ1h47ZC4 zN_bB#$Z7B^`iHmMabJ1{t>Q1+mox92p8e#`P8gONLU~b3vLJ4+C2&plD2HCZ&ZZBg zXO3igeK?(-J1i?^f)~{yPjAdt&Ik0`ofgBJQZO!+ + + + diff --git a/site/static/favicons/favicon-running.png b/site/static/favicons/favicon-running.png new file mode 100644 index 0000000000000000000000000000000000000000..97698d87d5ed07962fcc38a70f67c88846f84474 GIT binary patch literal 2487 zcmV;o2}t&dP)|K((TTTeo z8Hs@nv3{yVJ#D{0U7!M6#95e&*(XtRyCdxYTYx~l4(g+*w1u=0Hk>Ac_EFSaSmS%` z4*CJFSb^<>7sW?Vw;gTzAgVw&Ugiq>(yp0&p%0>l*iJ89=8DP2eGv5k9){mgcjLZz z>bAps>+`xB58yT->Ty@vp|snX<^Q*CID&m9`&(odqF(e7*bq3JH=PDBU1&5~?0^@b zvPY%~iH%?kvlE}8KUeg1n9o_Y=*v7+7lzzeb6ei0=+$)-13#k~Oyak4OV~6~Bbd=7 zOxpeZYW`kt4-Y;|bkVTh#%C2KTZ@kVvDEi#5#y9Ihc zlgfil5Z0umg>4SuI1_Xu=yE3=pj%#mS)0Fv!;H|apt-TmNT55;!@SM;RL!Z1$q;S` znj1?myXv5(PsQaCXSlr6E-D`;s7EC2O{n5%Ug1Gz7ofrzlk;`5NZeOf_g9K?3q5B9 z^DFTP`U3<3^EqbMVVF;~H5o8IEh^LA!5J8N$5H4|!@+LNrUd zwkr#-?ZA=+uDO>r51>qa>%qFx1%v}mH@_(Q0< z+HA?*srb$j+HEtBzmIy@c-hAgHDRMCfR#>IWs{QQS6$7bJ`Ht}<<=Y`5LN_1(4Jppsrh!`gi z0iVT5rioPoKj5V5uZ*X&Ht293`dOb4s^iaLb#>y|B_lD{mX5_-G5e>D)g1wq@;mLh+BHgLJD$NT z{4ng;KFJ&CUesmAXy-hO5O`4B#-a{kCg>3DFoj#9b^&iIj1rASHJOvPxfVHv7nLwF zRAtTnrl>?zK>w-iDLQ-((>210ytd}|)Fp%^UJ84n);k~a?&5w_h=(W1( z;|D1kIx|_Wvt~Gz_A=UK3jH~s$&{u!xtRC&0_+~2m7>ZK@Z zHpDHO_vkk2Gi)i(z55fwfB()u_hm$V2lG8S#Ysjr1SLZ5V~D{X2Sdyloeyu`LlcTb z)xDp7g)QWNH-E(+|NKWF?~B(kA5e&^u!RzrS*ZgVmIKseRpz4ZcWpC;E8+L=d*>d{ zns`xc(EWQ_s8l#%q*diEmQxBc* z=`29lWaPer0Kmd{GQ!_T&2 zej3XACag$uC+P7m3Q7$FnF-=pSXD#n=Y^b(fhRA-m}fbW0$W zVjHxkOsfV;v9u?k1iYTvvv6C`r(luPOLuo=VqteIyHuci_T~L`q~onsuLp=={4 zi&ky0sV|(&UyM}-MP-TR!=f&rme5>{V~c?E>eRJJY+g`JcOFk2Dm(nCeAHweux?vqjuS@5mJ8{jN)5>7`>GFC|{o3Zl!8%Ms_!VTWNj;j!h2_ha2J_$iGh*%W8pk6n;& zqRWr{*W?S{Q*{{}C(`)qQ@ZbUYKkhJ9~}Q5hImgkB)s{Xdafo3uAsgC%R=rM?e{z^ z<2}_7+0jf&Ttl*WMRxrR)=9W_e7&xq#CvK@!uQj4dx633So#L5_?z}+>YbcI$x(Ns zDU=trAxq+p(&BGbE3DJ6+45mR0S_^lA2t;;$BSx_ta3iYf`#BaPfE`dQZ#Y$f)6QR z5=h|!xdOC^Wbc0;T|N`R + + + diff --git a/site/static/favicons/favicon-success.png b/site/static/favicons/favicon-success.png new file mode 100644 index 0000000000000000000000000000000000000000..dcb8a3784440043aef7b7813ce18a067c0d03539 GIT binary patch literal 2460 zcmV;N31jw&P)?ju4EV0Qn{nS!Cb~IAA)Ec!${Y$-+Yes)s{pme*zwXum4u`|xa5x+ehr{7; zI2;a#!{Kl^91e%W;cz$_0TXsx*tW1=g^h&qDb~g8@p8&U-wlLq3cH4u<3m;k*RU>T zPoAi!Z6ERmWoQu#&=<2wq9(Q{Yy~ZVp;!eqQB<#J_u6i;nC^lbf5 zb>lZ-H$IASAZ$z6ZfwbCvxZu*%kkeVHXp^J55t^5&3WB!0Hq7HT8lMs9Wr~Qn~<0b z0_a`%2+g^p*P-8MRiY{VR8=VChKk$LbBesWXky@Rl!KD^l{^yWP1GUuC=;elg!pHu z0NWc%y6kFfOWsByu&6j8%E1jBBb9j*RhOrjL*^~~I?y~%4JRytL59#va75THD)r^4 zMN46lo|knb5E_T=qHdu&l3^_d^H8gH6E)HHhLVqJL>-|<+AJz{DINf#$IT6eG|$ zN8>!Thw59RU167neT4kcoDk}s$DubmH1|-5B@f~=G`i!p=FwJ20KIZEG=MTQ59UEw zohdC;W*?Tbjd}!~tfUpx%XR3Lc?TBLL%o6~M)Qmq>f=20%bax8teP?D!wx|cqp6p5 zRZ!VgaY@AKP9C(5nGf42#!%Q@$jQ-khkLOtL549(&KJod(Xr}!zLF@9(QtauzY_;g zZy+$}_c7}Z!?dccOoQXd;CEI#cq@0QxY1gFYne4ao8v#fKEkWEUksIT*}lsOVVRsP-)?UFetjHBT*zk8(-(ssv47 zs3!GT)r&TI(02@DqEcub0LCimv`3i4M>XX%DK3TIqEXI>sJ8*|3XSEQzYEz{8%@|o z&OQTFTV^`{B8p++WglG>gbKY47^#G5ww-bQyt|oY?8^+7GtFMaWz_D$B++&yUqCArmrQr9%?kLKn))<3XT=ZMBgi|7s|>gkxNt9W6*~R5#o3e@B)rA zO*Bj34;;_>%i>a81{KajJ?rB`R{S|kpPjfcVMJP8(RB_X^S94XdZKcim8687~NrzDZkU6t2{?3>%b%Eg&zt# zrY~|6^@}=5fNHKY4Th8AmKL=OJwdyuhCb{PwGQa9LQ$f$s5*VpD#s%GaH0|v8S=7b zuSlCB%Amd~yN?>zVcJG_0K5g+n&D&7*zu;cczECBu!Kw>fA-k z34}lgL*NjRSRVJH`nw3(iY4cmY(Xb$e#m|kHeB7obBZ%BJK*1_37kvXjYP?El`+G< zuuo7eeW>^ObhUMb47(+pBv%1W)={JHp4qiLCoqWhYr4@<%?h1>n12)E+7>3P^NDrO4e_?zN9cg}d= zTbkk6y&Ovs5>&7#wB4y%P(lbwUBzEeVDLRn)DZdXqD4^1B@Y$0u)Qziqk};4)PVGC-evLcOhE9pY&e`OjPQZs249TgHo4iT0#<#d z-GW|(LC8xz;icY71fCsv<;BA>dMe(U_j-UK^xt+}7u4`K_NME^OGUr&V^~5QhUw9l zIT$}rT^hRJB^W|@D0yiQcHte3^GC(zt)Kb?QrJ?75gKiYYNit<haYS&*nSMe{XL zJLAaH{h1^}3*dF4{_=3z_qK=MqOQH`)H?ZbHV!e&v!tS_6CQKBJ18e~W&nwuc?+2rxatQ|8R%LQgrY2wdBzbb!gt{7f^gmR)z;Y=qo+eD=&!@azXoTyWv3Djah z`oJP@<-$w*50~?&6FE^c5T43~C_%$XgG`*yp_VDY4x15U6-5;Y7{h z>#I>0VXMY495vX!TE@4kJGd^5A~$6hXV%Luh!>&@^S;gw&QldR>wycSU!PKauTxp* zEdm2^&a2SGd8#I>a + + + diff --git a/site/static/favicons/favicon-warning.png b/site/static/favicons/favicon-warning.png new file mode 100644 index 0000000000000000000000000000000000000000..e15e126acc3b19a82230510fe848c88f17f1298b GIT binary patch literal 2503 zcmV;&2{`tNP)d5Op0M4!@!9!fo-?MThULU+XTs z0=EfKj%~85WKR-HKbtk2!G4kaEfNb+F8T<}37pQGb_2LvXp}8Bz#3Hb$h06a7xZ9u z;3Kr>ioOi8I+#Ave-omhV&S)ny9<|DYON#INO+FmIv`VMdiOZ6n0rMh&>0 zD4FuaU|IGy4uNIGiBJt`VH=suo2aJT!W=Sh;n#!qd1^FaDFP~lo`5IDby2x5#~Ce$ zNxok;Q9x)Nu8VpV^^p#13D}3T+6^?sq9;lr>JfE>23cfLxl3`K>_gf*Gc z!fg)WIGboj(8-guj%HbdS(_iiVY+Bm(A0RIkw9}Cg?XFPu9{ObCPTO(Xlgw5vZ)hP z^{Kct;&diA+QiIVn!3NTDA&<)x-h>I2hdLt z1kC%GO^0EAs;x@G_>QLrun&ha0ad5{IB7H!!TdQ>_RJp45l|O{Fj%J#RdqUoH`_dE zb-~eslOO?eSlAz++HaK*N-&#Ulpd-fV7EfW+uB6EZ&B&Myv^@;YE?p1E4tSuXo^5R zrN_Enw9$pRV^|ZFL+b#rc9P!q2%Chcr=2#%NN()&nXZXca*_n%fa*{#erE`4xJY7WA*d0v(|8LFOGiceulX zHjFg4Cr}KByNzVuwvQz}9!{Fpp+^W61;-j~;_tPd7s{(Bu}gE<6EKGx5n=x!;6vE2 zH1RBfXV{d`USw?IAcg~i>trxW|)S}~uWI!1Q{RLSpc&()rzl(*p#%)$?c z9oq-Ff#yY>q=$NrGYf$?#jPxA2WEnHP!D~$C2AA!ZH1#mWl>G~q;-x(_TfckI5HGf z&0do=MN~llsq8))d=Aq!>QIBbo$H>+h1fuxpnT5`f6DQtG8f- ztkju{tA$Li%1ClaiHsd5JLfkD{{)OB(vLS9( zzel%Gb}p+HBJZyPpK~=(9!4Oq;J}!=II@d!S+PKzXzp<`#1*5Xa_cKpAxl)<`{^Sr zAo9Vtbk^PrD8^kPF`v>s@*?cfA#oqly?9+dI2WKKS@%@ktF3JHq?No5w{n*Sy<%C+ zNd$R+pMIZ^_s{-_-4`-g8^Q$tax7hr$Gtonf|L(y6m%aMcNPDj3&?ozJxkOG#XP|R z5r^D^;{fmP=?p;FBM467z=tgjrUGt^o?rQK|1$4{p?z598p6T^(;NdOg4p z=5M=h3Vv|P-kYx3O9K{j?>o4H3d4Ns%k56iQe5H~G(q_Tk|(?ngw&1#`byu#U?2qGaxq!RmcHdkVweB(7DDzY0sRHhjTZCvs_#L1bW-$%4EUgxm z;rAIlhew+>h#Hao2xQL9s}q+e0n9~3sgHVu6*=FzD{3I4ysz6-QQ{#%9%M)-n%f}z z-lWE)+#NHP!Lz)t+xTz6K7}d_@O$;Ej?7F;I9OJ$Na;+Kojqfjd%?A}qBKOEqenp; z2%gmQ?y$;8im$mdIh|~^3&^c_UJyUB=vvoi6s+DombZYPO*oA)KkFjv{9kir85S+z zMV-dWW#GRR*F=@-@r-=Ds8a~mZUgVX+NKc^SA^voeLq;e6%{S$Ma^S(S>okN;q;Li z5$Sj-<3-IudF$SD@{y*e#7gR$_H?|I@uC(GoViOsDFinch9&PiICJMW-4%S7MiaSp zme18gI%OediIk6nGxt6-S;c#*E<1F8-Cg;H!l3SZovI>v3LNe8OBmuk)ew0<_E>(d z<^t+Fe@V!_r~RIXNxY{TLMK|1pgi}M$9YGv4<%;f%Vh;+yr?ChG9CR~?vtG+kK(5U zZHyYRcWzLaKNg(%y;4%d+;@SLa^0$EAc}*{b?Kr#MS-Bdl-Lldj_M%!O znK>U~Otu_+LbYR&OkkUQ<<2&pbshm4QkeZaSiLud$K&yMJRXn7{s$ZKtgE67 RL302A002ovPDHLkV1f}hts?*c literal 0 HcmV?d00001 diff --git a/site/static/favicons/favicon-warning.svg b/site/static/favicons/favicon-warning.svg new file mode 100644 index 0000000000000..18dcf60cf13e3 --- /dev/null +++ b/site/static/favicons/favicon-warning.svg @@ -0,0 +1,4 @@ + + + + diff --git a/site/static/favicons/favicon.png b/site/static/favicons/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..e71c650d80ce0a00520df88403dfda0fe7a6296e GIT binary patch literal 1901 zcmV-z2a@=SP)Gtik-?L-8E8+Yu4Fs0PEd zvRJsA+Zlw!E^2~#w$fd`g^<`qT|lAxO(b6!Lra}I>|4K(eBndHOM-U1&FxukuL~>x z*Ebx&epdW#3QN$=`xs0F4(FxQ0EP?2qs5+i1RFh)1|%jy3fYBkF`g&-JILp(&WvH6 z>Iz+MCODq0x@}Z%~X6Ns>&;itY#4f6VT}w=0r!D5d zF%&g}9U*g&as?GSIymoKp?!`o?I*;)z@8$|Doso+m11%m#TmK>%pVq(73E2S=LWK5 zw+#ZuamP%8?zz2nwubxkB^8#Pq8+K=9HVQgD}*13E@2-WW*s!G=45bhc{h-+4ow=m zShk>>o=u!b8;BILmTE8px?~tK6QzCP(uLKPv1L){QYZ z-zJL0vWDtkDas3soE79x;w9V%2nO;wChZM|bHm)#)@8tWu%#ZsFLY%FHcoq|s5HqS z-)G8}nL>_%eHe`3I~&-j(+U1x=Uod0y#)tB268CuH?Z~hN&+jG&nZfZZW#EDP_e8v z!oEdi33;6lw$v^p=oWMjC1{C3n9yU07j4jEt{`t1-bAHqy#&17r2Q7*lLTSvS=M!d z?p+w&Z(A?dSyWd34DfbS4w-2<|JSf{we5~QMLjPA*O}+Pi+1>U*~bzsVWroAmzz*! z>zea7JQjzj+h2>#*Cka;D<^yjk0Z?;F&!_EgV0yM|2IwypHt zo-NRVOTf!T*HyAE0O0aK8PsDu)YHY-VqGItr^2#%pZE%%1h+fW4O&FRQlRsNb`f;x zSdPK)*HT(jA73I3=s$-CmO$qVtP_(1n53Z&TgUPY+<01?`vzgJ&1F6-U3zogFH|)g zXOpJeGmyhdWVqb~e2m*j6SD;Vz-`uF9S@2+xNr~dQJ)01A38yGcH;4l5$UvrD?lHk zJ|3OI{r!Wyr=8>UE6AVF>!PB*Ry~%2a~p(#4;GW*t|7l4X+znmpe#|2(jg3FqcWb5 zZq4@+*14b#2H{B|bKP7hIBqB}h^U8}bOQIA#1k^0%>Kc50(Ddi!LTBH346^hu>MO7 zz#&l|!=3LDV1*!JE?}?O1@W88LSf+U64nUIMo<@n{-9WwaCe(k9w&wS^>uQ;3EX*t zdBU44xpwENh%fdd_p2Pcz#U5z7bt*;!8qpSV|J+m*W>r>@& zK~pDlJg)0{tC+SeRri0|$e0T!=ox)E)&$uXHA6GH%gf^0Rb}XzeNkPKi&a$HPk!on ztgD;$#=fYGw{B~W=Vx=BpYFo3hl{8jB_C=8YObf;wI?m}D@=^g+YtK_l(=m4nsh5IF|aNzRx!&P-!#>c1{=x;CBZ~lBK-cB zwyo3U1soJql9*nWy~4yfLp;K|ZtfydL0R^nh$LUQ4-9N@VF+<~PId#XViF2^AuN9d z4?7cjPm1zD0{bN2M|d*Wr8CYGrN3gud;3qtXXOt%?Ct`Tmaiy^q9}@@D2k#eilQir nq9}@@D2k#eilQirG6??yS|X(mm7zFY00000NkvXXu0mjfEx>SU literal 0 HcmV?d00001 diff --git a/site/static/favicons/favicon.svg b/site/static/favicons/favicon.svg new file mode 100644 index 0000000000000..2c1867d71575d --- /dev/null +++ b/site/static/favicons/favicon.svg @@ -0,0 +1,8 @@ + + + + + + + +