From d44f5e6e149148440019067917824deb7bc950a0 Mon Sep 17 00:00:00 2001 From: Vlad-Stefan Harbuz Date: Fri, 4 Oct 2024 13:42:52 +0100 Subject: [PATCH] Add endorsements Closes #103 --- public/images/endorsers/raymmar.webp | Bin 0 -> 7516 bytes public/images/endorsers/raymmar.webp.license | 2 + public/images/endorsers/schickling.webp | Bin 0 -> 5904 bytes .../images/endorsers/schickling.webp.license | 2 + public/images/endorsers/xdamman.webp | Bin 0 -> 8920 bytes public/images/endorsers/xdamman.webp.license | 2 + src/components/Endorsement.astro | 73 ++++++++++++++++++ src/components/Endorsements.astro | 56 ++++++++++++++ src/layouts/Layout.astro | 1 + src/pages/index.astro | 5 ++ src/util.ts | 13 ++++ 11 files changed, 154 insertions(+) create mode 100644 public/images/endorsers/raymmar.webp create mode 100644 public/images/endorsers/raymmar.webp.license create mode 100644 public/images/endorsers/schickling.webp create mode 100644 public/images/endorsers/schickling.webp.license create mode 100644 public/images/endorsers/xdamman.webp create mode 100644 public/images/endorsers/xdamman.webp.license create mode 100644 src/components/Endorsement.astro create mode 100644 src/components/Endorsements.astro create mode 100644 src/util.ts diff --git a/public/images/endorsers/raymmar.webp b/public/images/endorsers/raymmar.webp new file mode 100644 index 0000000000000000000000000000000000000000..39e4a05d4371ec836320c5fbf4150eee83fb7469 GIT binary patch literal 7516 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 RT)b?iKkLGt8S4Sy{{WEO{ht5; literal 0 HcmV?d00001 diff --git a/public/images/endorsers/raymmar.webp.license b/public/images/endorsers/raymmar.webp.license new file mode 100644 index 00000000..97670058 --- /dev/null +++ b/public/images/endorsers/raymmar.webp.license @@ -0,0 +1,2 @@ +© 2024 Raymmar Tirado +SPDX-License-Identifier: LicenseRef-Restricted diff --git a/public/images/endorsers/schickling.webp b/public/images/endorsers/schickling.webp new file mode 100644 index 0000000000000000000000000000000000000000..ff30e797bc9d3f1076c80703e7479a5467f35516 GIT binary patch literal 5904 zcmbuDWl$Vjw}u;cXYc^Q4lWtoC1`MGaF^hN%OHaV5AMM=SkOR#03i@G!6ir_xI+jb zz;Gw$RDI{ickBMSyL<2b^t;zuyVt7js;<^mRZ_yH1OOvNd2K^&QDa;H02q;d`0rCy zK|wne6?qAurn=g?LDBgEz|GyqTUS}0(bxp?$M8SR+7{|5r>(92AK|~?=RAP&N1WmL z6YIa0|8D`$&K_zD04UfG z?go0uneOin1#|&rKpt5>8^9NE23!FjfCo9dBWw1*`#t&FPZRJ!`q&~zPaqKRMtV2` zPDo#Fr0NSm0ej@^fYj}ghbz(o+5WBlzcqzAfd9lpri`x!02o^j50{((fRzsb_puKT zx1|pc_hkTpwg>?4Gye7W$Uv6!1gWR~tFaUU01+Gj+I#=iY$^bt16gCLHBW1A>%aFw zLyo8p4ghdb1povl06>PUHLmIZcm1DwBV+%G50otcfPOFls80YuZXN)zA@?IPLq4gD zy5s=x*%>HA;T!=*0BIez6h-FJ$7Fd1?4lUxE$xXpf)T}pobE8w!O#!M95uu1U#MqJD!cUvdL>k`cvu5T{bYg$BP+9I_K_b1(?uNlQ&viI^WY#5ss3D8bej+m&;&xHms5xN-4sEU_iDP1J`xk`rB ze4gMi{HI3^TWjFVEpP{>@seh%8#x5#L|2~ag%1%EmU7$2?6dGEvX7k3D5_{*;QTpw z$Yp+fac1w9-)bmm=>NKJhNtZ9fWNsuyT|L8zq0C&Q_0GK!0V2P)YDf1*dF$v6}d<% zckSx0@f2<^moes7ghOejSV%W*W-F`CTFblHwdNxi;AHBN_9Pr;Nne2^R$Wlc(5*i`#ZiVA{KRX6x`$@ zXFxJS#XeOvE1UlY>XI*oh}r+Dj-F26TxSzE)XYcU8Ku%mE0|;_t8d@BT5qNn6VLcp z-!Roys*sSU%a0RIt#BerYM%gWL3_1+e4+tMnz_x~lt&Ctr+N?%sH!f9pDpr4 zV!8FTZp~&2YF|in(cD2MjI~@BQp?!b7G|!IWc>b)14yE~rwZ?Z#yqR?_o?i~i z>K|)=1`HHEp3rS{%}Zx{V}z1N_qbIAX6jJr$@fCj1oL;hieg?J^|6s%*zx^kTr(GRuia=xgH(;ZW77++8S0N zw8cjLae$C>wwt}6MXe7M60DAkPC2D34Jn!ppuu#DeGG$S54`i~wWG3AjllU%?u4<1 z!lZBffVkOyPZgvp;M@>U-}|#|Y-z=;hBQpZkfMRZGTOrU#N3reVL|Kbw;N+N`9K#Q zMlh+jo<&H#4pFSBki{pQ94?$88|$i3@zenedVD+B(OXcAWcIhmG9E>PY@WLLO$^|= zwv-ZU0poGU1r?V84kC?wirNwp#D;EQen5na(_v&yO!HRXK7R7yB8u7^jPpd#`g_-c z`s@morB8a@n*rzPaK%U?>^38nAZP2DEr@xqPGqOJ&+kL1dsTLM~&cGCFMFbv1w$3!@LG?PahNy^q>DK0iYb>~?=p5}@h2&1{}!47qu ztg-XDH_EFWg;3^*#Vtd2zO}#LeN9p}!u>Y$T={QG;tDozmi?jL0<@)Bzk7o(ZM(vI z@bGnB$(s_bz6#D=?TwM<*s+vFI}OHMMrSHE6>TPyeXu*mP4uV2G#%y_+%s*P|VGjK#&@t6&90y^C zH)%I@>%? z!sXbEB1%XTrFw$h^%wbPmBqdJq_BBt0tKIj8pWjLI0acibmCrE4S*FFDON5zee0 z2$QPuYI$9KbnEh{gjp%5<}|#NQ}|`xQGuj-TB0LwLnVDdQbmT|_l5L3^ggqW%o7}= zPeGtYB2G%v1S#e{g~rKQT(Rw~!jUnhiKqULdps-y_b^HmYdz8#7ztgpM%)-<@Fg*# zl3xTXWs_z$-bGdFzY*c^u4v6(PfEDh~V2H*XXc3#nz?aSkw88H@7n!?@5h1EgQ>1?C09V zq+;PpgE-Wz)^6|qN|j=q zdN*kZo&=`BU?|IKLi~~emRnF`?NuTV2x4cWOuW7|EC`?|ZL^v$U!tL8g;!F&u%krq zVZnVdr?PEQT$c>+QfQTa+bw_Hc2}j`6J$-rBp8<5@PJ92i5t`!&f%?ulrg4-ELYg| zmcF!^Xn&SzPo!=DeGzsj)TlHOTKJkgtY8~fGF6>HapEcq2GjX54ykO zz-|=A@$$q|7RLou(#KS7$>mMo$Iv>6D9Q{xFF;pJ^-E%k&XUY@z6)cOqLaKw**}@R zYp;7PHridrFf?)TE~)QbN4S;Bi7j-wu)RAA5WT+gg4&FBkip|l!grszgf0cH#p}^P zauzlQUQY9#rw^Vif4)+Q!N(xGnoIRgRvd; z%U~k=C+bvradSE|{V!YM!*SW2zzDIyu)&%u&mhpOUfuG$p47B zakkU@r5!>`DBEy5pSNECyPZ&e{Anh?+v>50^~+s}RH(*fjmL)doMl31T3iX;j?e06 zSX>i^<{1qNTYwc)$a%xXmzw5Ie;ZN^4bfrfbQuZhc4$w|Csl?$r9qMmaZ%5YEm)!Q zOfs?!0Z-#ly*U*po6^#A#A?V$>)(yC_>A?+R;>s4ubS*I0Uh)#<>t6_L4s24e4%T-iet6Mh8=wL_F3-Uu#hJ8=4xnm&Z8EsfinYc zW%9sLOpVxWFF(Nq;xE4WeLD5UaKd=u2%5tV_F~4G2E>Eru_d0*J|o(c*JTtjdU9<6 zc0JgaK-|Z`8ghrh*aG&8Z;%zT&_QXP#5`JMecmLqyN`bLOW5KdMHg;>)iaYkbUU>+?$-lU1DX5xl{8(mg4*hrKSG9E@l7TRFec zgbLN{TtUb7ti2WH*l}oju5rr=Z@tdl6UK-F9^D}HR&lS<_or+l!J6_@tgRv>ASTRMuJ@-!QOOHqs|U6J!e+ z6n(gYZg^~UTm%m+t%3=W?~`JM-;)qqW9TUf$@6K)3D3)?U4eku7;NM<_K|#=a~K+z z%EOb@UmHS`FH=$jSpp%iJ(JJ~n4Wv?JSqPmDak!E!TX$}*z4QJqT6CQYt3=Ewr!o!4qncl=sah+ccJDrw)C@QWZpG*xl0DaKbJ+;;TJhA5?3EyFh21Km zDW{0~N>a3Ly%&zsGDQc5shWHmFm%ZVcZ>;@P(^Jx^cC$jnPag8cCq;J`#Ji$xIUhC zU+z1#bDx<2N<*6hZ8{=W-V*pOW4e`*ULSd;RJ7-&?VjN3WW=L{aM>zCOv=<^SSU0K z^YeU~5FFV=ydeU8_QHag8?yWhQS}9t3R5`@2IZk!3+j1DjyU5&yHVhj| z84#XT#_x3`8EC!Tz-nY;jt6TzQ-D_%1|PF3D|65uelsbvBA5;<>aQGLqo5Fo4c2LS zyjxIw^3+%3=-zjhLPQ|tC+JLjjtLu;Ny@e4{&gU%yXz2|Pda;097$p?5n}Z^7sa9? z+r?l{dX}hI8=;IPH&c@et1jrwf2R6*$;i#{FS?7;%T$)4rbmI7A6NGY@rCVnEwmZRpMyc}G-LVRUJi7Q$9Io=XP*)? zp8qQSViDjoAZ;<%k!mOa-AIV(zNK{`pXwG%}`)MBnm)84^L84q@YsO-uyf`oS@mSS?JrQcQWrGw5Lj$V-<0Rc0UfLbrltl z8#U0Ko(Yg4BkQiFFjVn#EB%AW zZZ+AcpJ(76I6M0=bM4Bo+P%lqpwti8YNcWiaW>Y9C$nA-F-mI z`EM**o0L>;XRkW-W9)JIHSY(0{dS=%6@P=cJ&Ld#*yszwxW=)V#@RXt*oNn)hzW*W zbH7Y=GGD{Sc3>n&xCHx%@F!!>JKsatX?n z$Bn;U$*4mliYBJ?2i*CMuIXg&@>46Xxcvf-2*5Zpb2tAJk=u$|R>%;ox zHq+2|B20wQqBn{t`2Ioqz1f5k2cZ|HK{Q=CZt1`)p7=0^9}eh)3=iW!7BX?XLvbc1B$90PsI%Y;xZK literal 0 HcmV?d00001 diff --git a/public/images/endorsers/schickling.webp.license b/public/images/endorsers/schickling.webp.license new file mode 100644 index 00000000..aa3f9733 --- /dev/null +++ b/public/images/endorsers/schickling.webp.license @@ -0,0 +1,2 @@ +© 2024 Johannes Schickling +SPDX-License-Identifier: LicenseRef-Restricted diff --git a/public/images/endorsers/xdamman.webp b/public/images/endorsers/xdamman.webp new file mode 100644 index 0000000000000000000000000000000000000000..24abc8d55d6bad001d0ab73f2f9a7debca856d7e GIT binary patch literal 8920 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 U>pJTwLZ~v43zC2S8UTR*15Q++2LJ#7 literal 0 HcmV?d00001 diff --git a/public/images/endorsers/xdamman.webp.license b/public/images/endorsers/xdamman.webp.license new file mode 100644 index 00000000..6fe5b69f --- /dev/null +++ b/public/images/endorsers/xdamman.webp.license @@ -0,0 +1,2 @@ +© 2024 Xavier Damman +SPDX-License-Identifier: LicenseRef-Restricted diff --git a/src/components/Endorsement.astro b/src/components/Endorsement.astro new file mode 100644 index 00000000..230253a5 --- /dev/null +++ b/src/components/Endorsement.astro @@ -0,0 +1,73 @@ +--- +// © 2024 Vlad-Stefan Harbuz +// SPDX-License-Identifier: Apache-2.0 + +interface Props { + name: string; + handle: string; + imageUrl: string; + sourceUrl: string; + hidden?: boolean; +} + +const { name, handle, imageUrl, sourceUrl, hidden } = Astro.props; +--- + + + + diff --git a/src/components/Endorsements.astro b/src/components/Endorsements.astro new file mode 100644 index 00000000..0510a59d --- /dev/null +++ b/src/components/Endorsements.astro @@ -0,0 +1,56 @@ +--- +// © 2024 Vlad-Stefan Harbuz +// SPDX-License-Identifier: Apache-2.0 + +import Endorsement from "./Endorsement.astro"; +--- + +
+ +

I can't overstate how excited I am about this. ❤️

+
+ +

Great initiative. [Vital] for the next step of internet growth. 💪

+
+ +

Great initiative to get companies who wouldn’t exist without the digital public good of open source software to + give back.

+
+
+ + + + diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index 58f78c0c..0acffb53 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -477,6 +477,7 @@ const { title, navless } = Astro.props; background: var(--color-light-bg); border-radius: 0.5rem; h2, h3 { + font-size: 1.2rem; line-height: 1.3; } &.highlight-box--circled { diff --git a/src/pages/index.astro b/src/pages/index.astro index 620ced2f..07045e26 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -6,6 +6,7 @@ import Blob from "../components/Blob.astro"; import Button from "../components/Button.astro"; +import Endorsements from "../components/Endorsements.astro"; import Layout from "../layouts/Layout.astro"; import MiniLeaderboard from "../components/MiniLeaderboard.astro"; import TextButton from "../components/TextButton.astro"; @@ -57,6 +58,10 @@ import TextButton from "../components/TextButton.astro"; +
+ +
+
diff --git a/src/util.ts b/src/util.ts new file mode 100644 index 00000000..46ad92cb --- /dev/null +++ b/src/util.ts @@ -0,0 +1,13 @@ +// © 2024 Vlad-Stefan Harbuz +// SPDX-License-Identifier: Apache-2.0 + +export function shuffle(arr: any[]) { + return arr + .map(value => ({ value, key: Math.random() })) + .sort((a, b) => a.key - b.key) + .map(({ value }) => value); +} + +export function range(n: number) { + return [...Array(n).keys()]; +}