From 65f8d0c189e2d0fead1c083403d11b48e2fd651a Mon Sep 17 00:00:00 2001 From: Rainnny7 Date: Tue, 3 Sep 2024 16:28:43 -0400 Subject: [PATCH] Basic Discord integration --- README.md | 7 +- bun.lockb | Bin 175030 -> 175447 bytes next.config.mjs | 4 + package.json | 3 +- src/app/(pages)/page.tsx | 7 ++ src/components/landing/discord-status.tsx | 89 ++++++++++++++++++++++ src/components/landing/greeting.tsx | 9 +-- src/components/landing/navigation.tsx | 7 +- 8 files changed, 112 insertions(+), 14 deletions(-) create mode 100644 src/components/landing/discord-status.tsx diff --git a/README.md b/README.md index 5477ed8..43ad143 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,2 @@ # RainnnyCLUB -My personal portfolio website hosted [here](https://rainnny.club) - -## TODO -- [x] Mobile Responsiveness -- [ ] Discord Integration (Status, Activity, etc) -- [ ] Add Configuration \ No newline at end of file +My personal portfolio website hosted [here](https://rainnny.club) \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index 93d405fa2ed346ca034786bc1a27e924a3562906..59c8efb34c3f001e0a26a6992d222106b66010da 100644 GIT binary patch delta 32749 zcmeI5dz??z_y6DL%)FU5hH;-UGsc}6W|(oA(JbuZd3%R$p`6ZRQlK0a43e5SJTK!=8bn zP<+b!wYnYIkear`W5*238bIK_L{1FyIz#CpZxxYLI{XobA7$(3=Dm$T8Z3c|y;GsGcCw&iP*WS`i%o2o z*F$BBUcg)#sVKaJW*@W`^v5JS_KV=f(k)Fro~qCp@D-rL9a=Zp4n2hrO{-Hc z9(@llq5T+2y8(Fx&Fn00+uY+JZ}OTzWqI|cf$(=gWuWmX_GDjfY_Iyc7%I87BGoor zL1i@zMJ{u=t%dEtO0~X7?cCDr$7EIB&u#3KIPB02DC;`!ZK(9-YiqZC0hZ?#itMN9kg?zUy))aau1b1QYQr)bcy z^s!?z2YOmNElwjBi-wMgway9Y*@H)=XOGD|hFqq;R41F7&|vr_P?_Sa!6Qayv(3o1 zls;^Xr^7wAJaf#b>`dgl96mi`WcCP;M@0qsa+h|t^YT%sSX~nvWTzRIofSJ24@Zp~ zk&`iUU}hsnUJ+W7`r=Tr<$7zI*1gw`PBp05av8a#V*ym6cFLhsyV(&KmiZticw#(b z5r{&%Lmz-j2Lm%RN5y81@f>j)?pL1#Mdg-Av%57MIx2S9$PD&wXx8wou^ywRU7tB- z^tjCI98boO^kEM$&IaUSHmAT?!acYby-G@*?`4PZYpA&M1R7IFe}?S*S7C(hhxmJ^f5!^>fkdvs6q#87(hBwP)WNfP*zjkh5`1#Ju>W$dJM7` z(*~$a?1_Q4eDKIolsult_>?3%1eLg_ICRj+>{u>zh6Io}GLiZ8=VSc5FF2t|Xttmz z2GoPfDs7f!XV4)O#gK(V?aXTH4BU@-kY#@nDg(8kW1*+uC87tRvg+S=>bpUU!#AeA z^xq!+T$#hl2*l%}4*i7+QTPH{3ECEe#M3)5L^>RaTsqnb6@y=eiXkhAl<09)lbty@ zbHWnjqMtP;Jv%!+$MX=pI8rOymQTwj{^bx%q(VZL4i$sappwEdPJ>EN@u(zJlIpT! z&<{{)S7MwkUk@+s7DHvA@lbJW2viK4`Jml@4|s8~;y~grmYWEK{)C4z&?cxP-%_Y} zI3LfX!Az(O*pl!A0zYKlGZ zXsCEFSWPQYG52?B#jJ0k;>V{@31}CmyVg$kr*K1Bwal|KpfOb9R0}G87n^3cPoIz( z%T|@y*lAZ8D*YCLO8cxJjyEGS#%5=Y$ow2WlG+|L z6Ysjrw!2G$%93?2pR2-4_ttejTToeeiOShob`%dev^uLtqK`?|sF`zZcezv_n=>j? zy%+2Yjd|FvYc@7v@v2{o@1Jf=`|05Q1Kw1jW$L_sG`L0J>n+OE@%dU99uFtCJVV7d zN%T#HONJ|>MpsYt9e``-a;9Obg61i{`%I7L4upYfeZ55UDN_wiNih#X!c)vU0@NBv zY@jND%nwvC5h=c}0zIBaGzgFezOr7Ar<2t@J|fYV4kw)js7v9A=3=jkiA*s+^s1qe zDZUa#Jf1ex6;Y!j6V1*=Q~|=L5E4Yp72%O0YG~yYvr1952GXslDuC=Ls$!y2d=0n- z8DwcPtoLcSW@>nNviWI{DxkU|8-Q44DzT#{oZT&U_@04l<~B8t_*6la6kic0rZd7o z8QIqZPK>jidInB{Xmdv$u84GPRw%Aws->7cimRd3QhZOc9Z1*oQaRE01)L0P3TH-^ zP%+h0%mF3T(CR6^XGteJZ1L3+eaGRXT~Rd}t_Dj>M)z91jE0jS7PV&Nn=X z*{oJZ71T*FrHVeR29Ug`1-KTNnKG1 zs&4_D%!yBp#*HuG?y?4vc}@tEbzwdTsZSWg)X@4VzEYL!20>On9&$KqN`0a1urm3q z1nlqYaQ5Us11B>SsNxyuPq-d%wz*v+Y`=r7mG^|h5d~uM1)Ml$r(W$yRS=)z%V3id ztAngSErF9^$+>AsK@MZvP`$3^g$pXOReQ>rrvN(b`Up02S zGMhJ4F|ElLgtC>AM68iF;Osq(-N3l4@>{2x(T!A0n-t?|mDMKIdlB6RYIwC|UlqFQ zX%8Qr=$!!9z}gj7QR-lIC~LiWqQ`T;%~ekHE`sZ9Y2{P0bC-d9_1PR`X_7T?v*3o_ z;7T?1c>3PphQoDoIqwO${%ZJL&4O5&cUxj{d-hF^)NM+T?oh-1&4MW0XzSblH?9;x zbF9XK-f*%-TK0HXz_k^hjo;Pk_NhiMmCxrw6@7QA?{IT_tFSGvNU;06?R<;i2HfEO zfNNu$n2;2d$|AZ^^$whzKJ89QFahW~+}&_?07v&u3WB*Ar-YX77D3d!GvS)6wY8Fs z{VKX+s?Wy`){$-AXo%RHaVi#9L`y1^%H#~;aEpSPVJl{r z_dWsF&T{N1B|DCCZB>CqL|)0BUMtbp$>GR)l6N*-BNZEw?0uV319iT6vadi&=(AaL zO!U59y$H5G^CN{^JcM%-(A`ZqU`mVs)0hCPa#teui?q((h!8j(+$qqPaMjY8( z!f7L%<-4~xTr10om6V)l)8-VM_|0}+Gtn$}k1FVqVsuy0X{p8&Dl0A3x1VT=x~&k? zSrw$E7=2W9&s5*rgjN#Cy6*5*V84-AGh;Oqy@TNHQs?U=`(B|WBVaJ{Q*cRYc=cp& zC@F#lf$2+0@|f6HOJpmGzAx4H4KlHwQ!<-qV|F%~D^7rTHX2S$vQMoq!$~07v;rmFn=Q+=C|NyM!I z%nRMsnvN;n>MWW&EbIGFk~y$10v5oDvYpu zgp*#FN#>|T&l?`X-3=#o_V$_wXRi!d3)|o%l3YV@)g0K%?$aKx8Qf62&*Vg3$bE%& z8KbMpN>BAIMy)W66^0`*P~N!A*l>_ME!U;MhkTF07xO4(w+n zKrc8+0H1XdR&bml@`_u*Is_*{wv)1Se|K_Zm34))6GztXqi_;Bd*a@OW1^k$%BB}O zn;L^u^x#xugUTA5>ODI^eBol%NLTqt2dn5Isow2_B$-+7zM_Ne@wv*Xmgv0`j*}bP zqkNUvO2yVq_HCpjR#+OoOE)<2tnLuoUUH3dr~ITKzTkEHMDH><&N|`A-V2mEskJqd zy`8hemxX$W)e6qI-sT>NNM-N%qU}Dr;)0 zZyhq}mCJp`xO_uHF8=SHZjZrPtWKgaTV>^@ns>}lYjRVJr&NA!s_y__Yst=F?MU9B znO5r7O!l^*lwbuVo02%reIebigll6NClgr!mjq|+eBNraxKvc<@5cp7_aNtLhE@5* z?7~KWud=46nk^qvYo@2j>27+eu|-ACNcH{lklXd>94>h0$TlO}$$Yy+xA~N0MU;^( z*{nNP4V{@{Jg8RBO!aP=D~pShzi~-L&q_6$JgkP!xtvw#*-=^9EGWj&=SZ91jssWM+2#0wOV>yoq0U! z#o1AYM{S*5Tb-C4)KV-Ube1LLw{-}W{=3?&MTPI?@Is{>ClimMuFbAUW?46OLgWU| z;|2E%!y#0(`vB>spTqZu%F!Q)d;k!=3?N5g8U)YIZ5={IkKNg#?7`Of9tu`R?4O>Z zfIY)H3R4LetK4eHBDN^2);exS#gRN922KZZ2$gY?&Q!(s4Aaom$V;c~DJCH-D@H>Rz5GwpmVK{cmJd0qL z#oAQ(-3~8Q`1c+Dc2w#=aP;;#dWETYz7Gif2#EfEAjf|3Un&lQ^58ol$Nx(z{eN%u z`gbbw+%rx^VJdTX7Ko+ioch94dKK09^QR&j^uv05kibov2Fcs0~j$EjicN{9BFC4j0$*`{+-lA&W zyxQuOc|ihev~QeRp;G+T;R{o7Hs6s86)Vp|MRd-Q-_Rm9eH6Y_2V45Q0ZqPR1D37O8vB4r!XBV5t!xhv!QYb zm85wXDjhuT)IZ_S`3`*&%0JIj4!=Mc4xuvOVn_b0!!L(Qf4MJFkb&1YbS+dYd)49B zL*)=EdT&6*piK_H1F7!IMLx7(q69l21E@3;BBRzU_lfI#R$M^UKoA45g- zDIa3MVW@O)%#nZL$iH;t-#GkfsG+>`qjIIyPjHe+zeD-w`I8UnMY@zx3{i5Z$i46) z3gScf5>U|#hDtokLS^@^3Y9q4g31+DEVKl)DOB1u4`6SV0aFpkVNtbzzP<8VB9(4i zIkiHCZw-|_xjR%^r#ZA2R2J|6sOV)tu`Q1N#Slz*PJ4qYbq_Td36UaO6_=|Lop@zLJ$OyX=4OA0(`v3?Pf+0bw|VO6-R@bhupC$U(uHtpDCW zSm9X8r=;f!i~G-1^j120LM7){IeZ~%$GMQeQYp;;_x?db@|_d9{~Icy|K4d|n2P+r z_YeQQfB5hH0}J85_YVZ2@O^`97{bdg@!$K0|K30R_x?dv#Q(qhhuZ(k`v=u@>DU(8 z_xDo;$8xoAl_sc`fTdbIl>XKd-vFyk+%3 zkD1URWlLJpwCg_?tDWDpUP1|Verc#0e$a0OsLcn{)T(8{D)M8$;Z<25r>UOHgVlbx zqH5XFG!?WWSb3NE4WH_=EKO~KdlRm>GM1;QAuj~0%;kO~SgnT(eKA;-U*R`Osq__T zY7g9QxYDZh3u$V?%3w9_1;0^NZHKG#Qn0G|qTeX5M!%S*j=~*=tEj53OjC1K1*=&r z{YIGj1TJZHuxk90-w0RJUP@DE;7-Fus`yoDYT=q-wP2Osh*Dp}wd1MPJ6HRSs%rk~ zG<5~;7r5%G_8Ya;vX}AiRs4I!Z$zsuuizitn{aiN zu@?Vc!@sqDBUY`43tfkQulkMpD*aXbgWC-kuS&m$f9vt@HNVkNZHKF~0sq$djmB#9 zI{bq>440^?uE)RE@o&A~XsSMeOL_zUHu#NXHEjd_!JUR{uHs+Ezc=ykb-$6SzJ_b} z7XH2AH(ILsZ{Q!?FL13@%Qx|FBmTYVH||uI;CgPtzqkBGTea*h{M(Fw8~sLm)nz08 z!MzFRSH>p%dmH~Y`HhZhJzVG({M+m|?osKR@egh{To+aPZTx!&|K9c+_p0r1b++Q) z7C+C_jNXEOaEIa2RMmIz?_KDhYquT$-t+SW!u?m} zmg=$t|KQ$)dq5dG@ozW&?erVN)%u-j#t7xxm1c}o>3oh-oB15AO7F(E5Abcb-x#B| z?@lwus<8Ld4E~Q3pAV|Ne2!ODKS(nss2o0X)F*sSRMC6Vj7e(R9(>w|Pka2v6cxWW zjh`Fm@|ml?<}*(<-Ir!eQ}g+puJZYup;~^JX3SKJ_?)FK@i|+y|0vCPNG;=Yj=IX{ zT-9YiejLP){eI&SWgNhdkMZMx-JvT}sOUq?(4k;8?~vcn>e!()9&(HSEX`P?=6=Tf91d3JKl2-lRnx=x0=ML_ z-&msZ;T9eVRvnM{jpx;(Bh1g|!Ri{^GS&Wb<_B)==YC^_x(c`IXt3&Y)Nj0~Rv%@4 zjs>gWV}9c$)$17Zb39mWgCxcb&Nx$*B$~j5?eHpAy!o8`Yzr;JZd0+aCjp`WOoUeja^RN8I zW;ORK{5yqza9dQE80UbqQo@b8S@IHYpU;9oxe!5vo7`S=GnFW+x`u8zUY zDZsx1zi~{>Ex^CC_y_leYI+v`;Fg^A8z)sh+`@DCcg}Bor52sTKOWNm>)hSO*Q)(_ z{5y|-=l#aF>MGo-3;1`zZ=6=EFW}#g`1hmV_(Aph5&tgYA6&ljUBo}Q;TQeJS+yB% z$R+%{*{>m>$)NS!Z&g(iZICW0uv$VAXC z0Kqj8RMqVR5L^+#+5iOA^;Hq93PjK+5J647IuJomFM?n%g4(*57eP=F1Y1QAt$jrh zY!bonA_(g0%_1056hUNB1hG1+D1y)+1p7r$Uxx)D*du}|K?vgYUJ*?2A&B)MXsC01 z2QV@Lh9C$I zLC{wB3PBK58o^c(wAa4U2sVjecxeQFy;%f9${>g=gP^0%DuW=jEQ0+axJQSTMX*N% zQ_3RfqW6kmLOBGntlX+;EQM6jeHf<8K51PenEbPPq%PcI5Z&@K$YH4&ui_F)LFh+u6Pf((6C z1gk0`=u-(nre0kMLCt5jqf+7%X6+xEvMIhKDg5ePe9?+XbFeDN|WF&&& zIx7-EXk`TZMKDr_RYtH!1XC&_7_Ik;U_umv*eC>JbWRk4I#m#y6u~$hT?N5W5zMQC zV7xvif;m+YG_Q&vN6)Q_AgLOH^CFm}n^r?`Mg&W$A(*1`MX<0sf{xV@Gm}cToJ+A8VF|St0Guc6G5Mv2xjTkH4*fzg&?>Vf`@dkS_pz_BiJf}x!PA7 z!6p$5uZ`dly;%f9>L7@$gJ7P{s)Haj8o_=MJg&o{5$qAclxPI=^Mj>mf*rMQ~mOi*?gj1ZPCBBo@IE zoiBogaR@rbA$VRdibK$@K7wl^Sf<<8M{q?1YwIIep|6TyRRaWl8X$O4uWo>#XFP)7 zcmyx$UhxQm5)f<^!D{VGFw%@QIz55wqz2)2RR8e65|onKM%GKOWv>GXz13muYZ z1nLtBMjP*8ezz&6jYeEzqpG_#H1fP<_^GL+$SPX0689QG=EkBM|7vJ_8sLrOxr-2~ zOqI&u$N9pz7=15-hHOOqo+{N4P zSLz{?)};bAh9n!^4Bfev(a8HqYe(GLYQOR0)Hg$ge}rA>2W&pR^t zb?YHVwj3(OA|M7>-|DY$gz_^X5w?yO99a-tq9c3Jk;(6T!x&8l6Q}qmQSpov3pieK zWW_1V7gBPpa%A$8Tq#Gk+F*QXEZ)jb?_%j1M^S#m+$xnEFFUeQl;tOU8SE8DCXc@G zyrultYR_6nCO?>$M^6TO)sac`9szQ^=E%y5|MP5_XPqM~2mhEOlP5^{XFV|VI8-{> z;K=0Xj`=_id7wm`stBGG0mqw;UMS_IKz^KbA2bQ0{2Ztd&4)a7!awUr#HXOr$tFh@ zLX70N{F=V-k}({YM7}=LU zrFY8GP6kcE9iRi9*8nv^T~H6ig0s}gk4>jR6|e{F1@Z`>JP9Pv*!&12O(iX7BcBBh zQT`01Q|<@0P<{ucxtSCPfx$o?p{ap0+n^tSJ1MsX?LkM-72FGCJ9`w&0n>myY*YnQ z11sTkKzGmzyIX^gD9aO7?}2S#JJ<b(1Y+S>H zlq!v?=xZ+-WgE+8DK*a!!@8TzL`7fetU!>+mwfXfO)M(ys<&=n5bOB!M^(3+jPdK+Y&NKvhZeDioqX zc@P3hffB$6ii2W6&Z)t`x!|}ibuvgfAf1%~l|clMfu$}Cgo27d9&-r?kw6Tr4r+qZ zvdrpGAm=^NAO_S0i69;{0QG@bEe#ui1kezOPGisnGzZd;=*!+Ey5f}VUrmAZFF7GH zDGvo%pe^Iee|@k{crBo*pbfYav;wUizAIF+)7>fCQNA0r2ls%Ezz;frPC)d#0NEa7 zDfI-h+h&6MK?abWH+KLZlCk}OREV&*L;FJI+|wVVgCRgVkj4WYIv6?#i~z&H17NsA zAAvp$=7KrkAut=v0yDvM30@wBsbDgg2xfq3Kq4bcXA;N(4}x)EEEuni4My2J^C;4X z)tB@sefI~C0Q4RyZ=z zDcp87{C4mv*aY4K?}9hL>tH>21*`?HftLa8bFDtyfknaX)RjqtTV*nc$VA7b>k5@! zndohBahG*moyJr)ne>$5<-ly+x80XPrNfeYXgxD0*9+0i{4`PzIC*(!L+4K)E8Q3dHCrXatC(TnQQ`moYL& zGOuz-=w#0fr!o@Ae{hh!s*1yhQLX^o5Z6Xt3)BZSfh&)pEd5B|(Uj`|S63n+<-O2u zvi{>>B#iZeTw;rLa=9&++HRw^$mYXO1W$m+!DCIMlCsRd zYpr-K9`u$9Ae~FceSi}#PhZM1h+8lE?tmh54U@j4t>ndEsMHBBa+!bWTO!N<6}?&E zb}E+k1u}QTfP_|zl*U4(Q@5QY+P{@0%M17E8X!q3Nl9IY7nGGarv%pNy3&^tT4J2`8%4H?Z0Mmt;2J(P(E*-l0AapKp!}zFE{|Hn< zD1%7n5=!a(VIa965tC&t^ImvB*Lb1s7`ZZ_cqpA(7C|L!(&0QH5pf&3;TEH0dKLqj zBH0lm!84#5hyXGrvR%s-?Cyk%kjqpq1PZVt=6W=Rr@;d7lv6G|U@)@6d@{VuZw?S6 zUI1di3Lpkd0@oQ-40w>T489yX2FTz`!Sg_jcuwYj35CLY^X&$cC?x@jlte_rEBPQH z7B53VMGy$?1j~@S{fMz{*-b(*-jc;qaD}c{E0L`NFM&0n=X-o`l&Gp}y=&Ck*!f+f zyiwHX8y^=R*I?tY_lyzT38PY+G;;q=Am5tk`6rFAlo+e2efi@l8&50&e8J~d+W)KB?Qz-B@t>cL)aYeTfBQii=*k&Aw$l*dy+Qz58P;>H((v=vhVO+zw z1}uaCeQLWA+Qj|K-s^)ae>ZpD>R2@5;}WpN`d+UXZO;zhwYcXGT|T6yQCx$##>{4b zj@v<7`I<>I!dK^h_396Aa&>2EaP21lWkf7`ZuXYetFDz?Nlg>l((AhcdNOSz_M%Y| zjmbs&EN=ejizCp$F0t(M0KHCnKkaDrdbxT*@T>>lar&V5pQ#c5BN~=Ts`+t^CDb&= zX4(b>>c41fRtVIgJB6mRo(8XZJ_KqwwW?81tNideV%d36u3$o}Mk4foTN zcu!A@it5g2m}`sbp}S~twWyw2(X7B1!tNhypRq3UU`*3{Hd}2P#3gb`7NpPZVl=-` zSJ_RQ4#o9|-SlywxSj(a;r_Mt?)}eQ|NV*dUul`ZY~azyCGJ+Nm&xBW%d z?6y2>AR6vpVvnic?$0Z|%l$-6q8+c^C3VXC_~QQQ_4n#6KAzk?^lr;8`j^?z+3#c5 zf&jfzXuVSU`1?kOCcT*eiQ^*!pIZOU@x5P}2CmBld)zO8J^mh<-rVlOY2=9Fv{KleMK~H>ve+o^g(Iee-B>&doJ9zZG*T*+-H^1 zuhP~$SVr&J!)Qm#=s))`n){dH3%X=X>ikHZsaQ_@#PW4z^+$VYv8Ak@Ds)d-y>PD) zQ>=73>uaDqyFR8^zw*{zmX}lh>3tYC9aff5l=)5HE*CDa{Q5Q}N|^8dE%;d>_YWI3 z(|Fbnl2koiUU#Ccd7-=xIb)Rfl22F5>*@QjGp~YvYah9BZ$%yWp%GKV9nJlN@)vha z8TIVvA03j;STLmG!BBnTGM&{3)5AVwp4~qo|J<4<&sHe^=`1vpFo?)+4bw}}XyX12 z`D??Bb)%}aIgW-iH^bPZWyY`kK558~o=?4K8r_kwk>*XVq%Y8R=wf(Tmjiq4-0@tg zrC!sRjf5E7_>=YB51p$qab!p@Yg{%&Zb#7wMkBu1rL!@2l?ybD4M+&SkNOB(?LUC;$&0M^b@gq&YO&Z_i8M8{2`$ z)_0|?`#0^+4ZN@W$!6QySQc4r-M^my%Ebjv8loIS`>s>?exu-_QS~=bDe( zUw;0yX-t*voy-aj*DXZjwo$Yu-iejjEnGi_rs?v>!}Ypf;k#GXC!~j$qU^|h{n!3i z>of}H@fK@$A$8t~(jf=XJRGI_9x!BAnP0`8hyLv|idUQ4UFM9PLE>QRB$#ch=_d~u z2@&oex?jDef5D3BgB}bt8pJhhD9bjhnm#4HPOYY&`-JhAa4itYEZh?q9yz@Dj`To- z4#h>!+tqa3K{St4)15{0GMbgqd~5si4Nc0Ne(|Pend*8nnh|l;txJo%{@uEUp6j-y z(@l-e)%7|wnv6n2=KR8(IVXbJj-Gzgu9?(u7nwKd+<=QEW~^R*v*wxV`Y&m_&S^XC zpjrFg8RnFm8oQ_=neu+@d2&I?yWgyMv*yd{y2Hm<_A45t(Kxle{9iMV4*Bk;M$sBN zPc+2;cX#>uM958zked39k6D$D5C6eSHxBT^p04t#5vt9jMj7wvdVC+C zqfT+Ta#|aQjAXM(tWG&(goe8>8!%U1+&5^*rn;sfI|7;LX|G2gGQx~*`VmOD`_h7j zPi9QqzGUeX)94>-FYX-u9tw@!w;Vjz^Nu6t&Wy_BK_e{TEaSch;q&Pg*82|C3%ptL zwhsP`zTFom9Q)(9_luqXcGgXW0^Je?Gaydi|C!7e-w4Q@x0~&`yWUGZ)lJ1Far%kR zjD+ycXoR5g?u)PQZnyT0cI9McHIma$e|_>ZV{o|pvW2_WTwfirzEvqJVDVz+^Sa+* zqb^TzJaX8mDi;EBDHDF%3ju3WU8TPk{RedL5u>|tTxT3H8XA{%>2EN&XcOJyILoMd z6TR&ey}0i`SpLGmQSWb=P{w4zS!>wSTVFpy^xQWuywdiKHfL%V-y;gv<%VZQ6MKz( zzB=mLt&Lv(-EJxqv`BaSoC#X5zh+3C_qkEY*rykZ=%Rk}bEBVGDp5x;x~~+MAjBol z(d>NGxXY~za_g-2I`6xiRmI#Y#~FR(m{CvKefh1CaHG#3^|G%Ry>Q*F4UH|j{lWc~CBqpus88-v}nzTOSb&>eKrX!9=)=)w`c(NBTS`qJna;l3JU z^*xcFJp1IQTdXzBnT?zK=K9>17~;@EVW@YblfUQJEq;yHTfVx@v=^G98~rH#$SD%V z>CQ=09;lLx3SW_G-Am<7>^`XI{C=e$y%|?~g531}dp!Ra^J@=htkiXHvq&2M`>_Ah z@^K8mB^=ITu;(v)TMO&QxxD%h-+3Uh`@ESqo%;J~ap&~LT;D#I{<&V7yX(b$yVMgu z9Q`uviCs^H7%9!G#IuY&Jz7~m7Uq3(vDV3$#F1Yx_la_fPVi*u$kRmLeFemC>z-;G z(EGu2C^U&nlXlK>W1#INnE7tKvES+&DM5JkFghWdR;HS z(=`61CYqX**1ADOvwR?i^wNh;8+RHLH->$0^fDs$(?+gjclB!UTd_yqdfZA$F2}eT zEUzE?f&I&Ug+~Q%ugFf3GxnNBQe0zhGx(ZZZ~uWsB_!X z_1KrZp^g7}f8gE$x-T55Un*!o)cn^AthUyb*LB_J3|_l$EE#dN>6MN{yN09CD6WZ| z?A&*nlzZg(H{Czl&E>0gS;wwkvyFb`45tqF?I-0!)^C~k_z3%w%kr^x8+{6m#{Y7g zl*E@DZS0du!m!tW-gj`wV0xEJQD!AW$L2F_?h9icTehM5wJ8U?TZUQJn-A-B6nM&T zlIXcFsA=A5R8Hiq9nH|A8%_m{4(r!YXzae(=8kxOw@TB#dIbf!GGiq7-8VfdwfiLM z((BBCTa%%$<#QgoM@JWM-eSf&6yUG>4xE%ZU6x<%H*7Ncat}wWxNXQo!@X@Ve$%fP zaOV0@|4?8Y48P4?ja+VG!8rZNSzO7}XU`gg%}O0~w{ylb#xeclIisNrD~ZC@Mf3AU z!w9pJeQoe^)t<|LpLM;4V=ehos*`^7JQ?M_@#buaDq+Q^*Gxdexe)K5-=mB0UH8~Y zx$vnLyFT00GZcl!+!NzKh7P`9)HREC)^}Vms+i31{TJxbegDm|Iko;u={?6s1FmVs z@}>Im3m8@HUc1Ni9aVR?T^RNY3XSaVJnG)7zoZM(p*%EP`bSJ~Uu3hbFK_n=Yi%=%^7{@glNi@8eO?> z0Q=j$lvT4qe|V9pU8%1_!rd3&4EgbmAGI7~8VbgF zz4#LSW$A;${jT#b86Ax$b>dGD>vFMzUi_1h=zb@n3w|=<%!od^($7W}p2bc6nL*sw z=$I#FPhL2;A>Z#LI#)WM>5(XKPMZ6(vG_KLD0kPaXc95?GJ5}Ge^#EjdV1SsqmpUg zGUu5&0lM!mZ!}K@5av3*XU;CBoo0&9{+vi8>ep2a$#`nk?kw$!F;V!rN+W#9? zuF#MF0okB)e>3V9`;cZ;Xm)3YJ`rw)8a?!WQCg}$DZ}?%tcOk7xPsu24i}QIF9n-n z#!vblxF+t4X+Cap&gk@EdHc&EYX_=0(7tIsK4W`mg#(wk1F)TjKan8g;EdK)ds<*!WoNz?w)kaQg^(H*IO zEDJYLw-oLn-5V0_zHw+mY~8byV=A4o`m(<5vgf3+`>LW3V;XZ|*CXyk*92TDthIXB-W7rnZB0e>BL7?S@$~pt0v~X`r7l%|^zC1((Pa z2D0O8&rrFdR;D|XY=4y*%0x`L_P2?sBys=f8gaiRE!-CNbQ@pjj(?Hk?mMRrM{GNB z?;E>bune_M`nL>ZHEZb1zuUKyJ1*;FpdNbNs1)wLy=u#Zf-Xnzx|ZsMfPBr@hL?nM zUr*&}dilZSZ6BHBDBN_rpUy39R;u)XecC8Uf7RQ3?8?KA8o@repehM*Y5{)_*R)fo zd>|)>iwi~~wnAqGQKHG>v_9>j9j2QuZct+{Ks)kIUfT)yA6&3z@0KNen;!nXZ>PqI zn49soDJDC|(h{r~XC=D}yIGcACkxwJgB1daq_ZY&-^?At>5Yub4J1X z>$tP8xJ%x#$=N8K&A|~`wpH+w4UQM1ikg+o6617AIU?l*#;$Ub)!9$nv2?8<%O7j} zzbo29IEv*Z-c|_9d*w@V+y3wXb`kkOrTDSS3wpj)eDuxrGgFuL;hMkYdDs1A@q4xdIzvi#x;=jayldc+UHvG?4y4#a`Uitet_JXKLAe?FM zq2+|>{7U4+Nxt8av!9!&e>?FR_6e_v`u@2?axIkbBD=Y}grDLkXZe+K?5A&k5K*F5CC4aCu`ZQFTNY(_tvu_I;Jnfo zpPo0M1^?Ab&bHRM(2kuKGaBdV`^%HURz_RP&2~)BC~HQVPJ-*V%bJzKThg7}ZBH|r zJX*8W-S(YmyxdjXxWbV1jChEZT>-u7xpzhXe6EW8M1q!_x36e6bZ$ZTf!Db) zov%NvNN1O)+rMHptF@qfj%(44I+(hnjcrA1D`xl1y{- zo1y=<+I5pKYX|>ZhG$!46^Pq9q){@ zI=K=<+xG`@i~4XSGa+KUb8pb?i-~pWMkKMK0(kZ~gnV&44tHOA_}i)h9cCVjvahG( z<(9*~Ylv{)Az8QLD0Tn6ITxIvS(H_0>lWbzq3&!wEZnSOCe7B5$(=+O{ZhDDx7ZLy zs>4WZA%$-+Zb`D+N5D$6hVBX0xnQ?1rXy-)+dtT>D}H?VgjsLNPo2(p7G!)}Bzw~T z{>S#vh#fplQ35N?&qwF!mI?f_!TPc8z4@VcU8I>n<`fimaJez4rng0zE!d&Pre_Ts zpEY7&+uonnx=?q0ZTJ6C>c1Mc8n(_~=1#N=KjU$0z5Ay0w|0*zzPMxg?EA{t`d@UP z^g`OpRl+jiB}~&Qb}xCoT%#{X!%G_NZrbnOR6V7N*|5^~mbS{wq{bf^6H5NoPX3n+ z$9u1A+*ifyZ4@6jCNp*zuVzor9;h$XFvBAY3F^nzFT};Nh3WM*%&HqhJD6RJjV-E~ NN251pbu>Hn{XZd1V-WxV delta 32541 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 diff --git a/next.config.mjs b/next.config.mjs index 023d692..8bb82c7 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -7,6 +7,10 @@ const nextConfig = { protocol: "https", hostname: "cdn.rainnny.club", }, + { + protocol: "https", + hostname: "cdn.discordapp.com", + }, { protocol: "https", hostname: "bonfire.wtf", diff --git a/package.json b/package.json index 9609460..376e21d 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,8 @@ "react-dom": "^18", "sharp": "^0.33.5", "tailwind-merge": "^2.5.2", - "tailwindcss-animate": "^1.0.7" + "tailwindcss-animate": "^1.0.7", + "use-lanyard": "^1.5.2" }, "devDependencies": { "typescript": "^5", diff --git a/src/app/(pages)/page.tsx b/src/app/(pages)/page.tsx index 87f4817..07eefbf 100644 --- a/src/app/(pages)/page.tsx +++ b/src/app/(pages)/page.tsx @@ -1,6 +1,9 @@ import Greeting from "@/components/landing/greeting"; import Navbar from "@/components/landing/navbar"; import { ReactElement } from "react"; +import Navigation from "@/components/landing/navigation"; +import BlurFade from "@/components/ui/blur-fade"; +import DiscordStatus from "@/components/landing/discord-status"; const LandingPage = (): ReactElement => (
@@ -13,6 +16,10 @@ const LandingPage = (): ReactElement => ( }} > + + + +
); diff --git a/src/components/landing/discord-status.tsx b/src/components/landing/discord-status.tsx new file mode 100644 index 0000000..9c074e7 --- /dev/null +++ b/src/components/landing/discord-status.tsx @@ -0,0 +1,89 @@ +"use client"; + +import { ReactElement } from "react"; +import { Activity, Data, DiscordUser, useLanyardWS } from "use-lanyard"; +import BlurFade from "@/components/ui/blur-fade"; +import Image from "next/image"; +import { cn } from "@/lib/utils"; +import { PlayIcon } from "@heroicons/react/24/outline"; + +const statusColors = { + online: "bg-green-500", + idle: "bg-yellow-500", + dnd: "bg-red-500", +}; + +const DiscordStatus = (): ReactElement => { + const discordData: Data | undefined = useLanyardWS("504147739131641857"); + const discordUser: DiscordUser | undefined = discordData?.discord_user; + return ( +
+ {discordData && discordUser && ( + + {/* Avatar & Status */} +
+ {`${discordUser.username}'s + {discordData.discord_status !== "offline" && ( +
+ )} +
+ + {/* Username & Basic Activity */} +
+
+

+ {discordUser.display_name} +

+

+ {discordUser.username} +

+
+ + {discordData.activities.length > 0 && ( + + )} +
+ + )} +
+ ); +}; + +const BasicActivityDisplay = ({ + activity, +}: { + activity: Activity; +}): ReactElement => { + const prefix = + activity.type === 0 + ? "Playing" + : activity.type === 1 + ? "Streaming" + : "Listening to"; + + return ( +
+ {prefix} {activity.name}{" "} + +
+ ); +}; + +export default DiscordStatus; diff --git a/src/components/landing/greeting.tsx b/src/components/landing/greeting.tsx index 9ed7e94..7f1ff01 100644 --- a/src/components/landing/greeting.tsx +++ b/src/components/landing/greeting.tsx @@ -6,12 +6,12 @@ import moment, { Moment } from "moment"; import Image from "next/image"; import { ReactElement } from "react"; import { FlipWords } from "@/components/ui/flip-words"; -import Navigation from "./navigation"; const Greeting = (): ReactElement => { const now: Moment = moment(Date.now()); return (
+ {/* Picture */} { /> + {/* Intro */}

{ "text-black dark:!text-transparent bg-clip-text bg-gradient-to-br from-zinc-300/85 to-white" )} words={[ - `A ${now.diff(moment([2002, 10, 13]), "years")} year old${" "} + `A ${now.diff(moment([2002, 10, 13]), "years")} year old passionate software engineer living in Canada with ${moment([2016, 8, 1]).fromNow(true)} of experience!`, ]} /> - - - -

); }; diff --git a/src/components/landing/navigation.tsx b/src/components/landing/navigation.tsx index e0b3a05..571606f 100644 --- a/src/components/landing/navigation.tsx +++ b/src/components/landing/navigation.tsx @@ -64,7 +64,12 @@ const Navigation = (): ReactElement => { {/* Selected Content */} {selected && ( - +
{selected.content}
)}