From 749fab3b84006ed111db668afea1829433d49c48 Mon Sep 17 00:00:00 2001 From: Jai Lovehart Date: Tue, 2 Jan 2024 22:49:58 -0500 Subject: [PATCH] hi new build --- .gitignore | 8 + Dockerfile | 1 + LICENSE | 42 +++++ bun.lockb | Bin 131456 -> 133378 bytes package.json | 7 +- src/app.html | 1 + src/components/CatppuccinTabber.svelte | 100 ++++++++++-- src/components/parts/Block.svelte | 38 +++++ src/components/parts/Centered.svelte | 31 ++++ src/components/parts/LyricsContainer.svelte | 18 +++ src/components/parts/SocialItem.svelte | 4 + src/components/parts/SpotifyContainer.svelte | 150 ++++++++++++++++++ src/components/parts/Timestamp.svelte | 25 +++ .../download_FILL0_wght400_GRAD0_opsz24.svg | 1 - 14 files changed, 408 insertions(+), 18 deletions(-) create mode 100644 LICENSE create mode 100644 src/components/parts/Block.svelte create mode 100644 src/components/parts/Centered.svelte create mode 100644 src/components/parts/LyricsContainer.svelte create mode 100644 src/components/parts/SpotifyContainer.svelte create mode 100644 src/components/parts/Timestamp.svelte delete mode 100644 static/download_FILL0_wght400_GRAD0_opsz24.svg diff --git a/.gitignore b/.gitignore index 6635cf5..76498b8 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,11 @@ node_modules !.env.example vite.config.js.timestamp-* vite.config.ts.timestamp-* + + + +src/routes/api +src/routes/components +static/spotify-test-artwork.png + +server/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 08d31a6..e30aeec 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,6 +3,7 @@ FROM oven/bun:latest # ENV ADDRESS_HEADER="X-Forwarded-For" # ENV PROTOCOL_HEADER="X-Forwarded-Proto" ENV HOST_HEADER="Host" +ENV NODE_ENV="development" COPY . . RUN bun i --no-cache -f --no-save diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d6dd6ed --- /dev/null +++ b/LICENSE @@ -0,0 +1,42 @@ +# LICENSE + +Unless otherwise stated, all content on this site and in +this repository is licensed under the Creative Commons CC0 1.0 Universal License. + +The following items represent trademarks or copyrighted material +and are thus excempt from this repository's licensing: + +- static/avatar.png +- static/banner.png +- static/bluesky.svg ([Source](https://bsky.app/)) +- static/codeberg.svg ([Source](https://codeberg.org/)) +- static/discord.svg ([Source](https://discord.com/branding)) +- static/github.svg ([Source](https://github.com/logos)) +- static/keyoxide.png ([Source](https://keyoxide.org/)) +- static/lastfm.svg ([Source](https://www.last.fm/brand)) +- static/spotify.svg ([Source](https://developer.spotify.com/branding-guidelines/)) +- static/telegram.svg ([Source](https://telegram.org/brand_guidelines)) +- static/twitter.svg ([Source](https://about.twitter.com/en_us/company/brand-resources.html)) +- static/wetdry.world.png ([Source](https://wetdry.world/)) +- static/spotify-test-artwork.png + +The following items come from Google's Material Design Icons +and are licensed under the Apache License Version 2.0: + +- static/no-download.svg +- static/download.svg +- static/web.svg + +The following items are direct derivatives of [surfbryce/beautiful-lyrics](https://github.com/surfbryce/beautiful-lyrics) +and thus licensed under the MIT License: + +- src/lib/beautiful-lyrics/* +- src/components/parts/SpotifyContainer.svelte +- src/components/parts/lyrics/* + +The following items are imported from Google Fonts, and despite appearing on +the website, should not be considered part of this repository or its license: + +- [Google Fonts - Rubik](https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,400;0,700;1,400&display=swap) + +Any externally loaded content (such as images, fonts, etc.) is not covered by this license. diff --git a/bun.lockb b/bun.lockb index e32ef2fe4eca3be3de63ceb7b8ae9e668766fd9a..f9273468eb3b6f5639fbb5368cb5aa8f8b5a5e94 100755 GIT binary patch delta 23831 zcmeHvcUVf10v@@6cvx6#DXOjq$o&{Vj&hVYLwWbqmCsO zVk{U-(AbSVmT02bV(%KUMU!YW#oTx8BL4Cv-_3KMd+%R4kMCad&a5eG&6=5g&cHR|8oxzUVs9(!ZAXN+8Z{BoU#;iFp*nK|=;nL^Y{O@pDZKQd}VegP>%4oc4&n3FuxU_h;^;JFF8xuks(+zx!l%x!K3-ZrZ8 zno0&k4P>U~`cOT?cgUwoi?#f0qrp%MoP$?`9GH`kn2hGkl~uh7kW~LHBz2yUnV*r6 zmpC|m*vPC*blMt&az(xe($x9z)VyRQ3k*NosttytR&^BQWTmGM8)`7LKraoz>p)V) zXBZ9f%aBfxUqCj5Tmtz9p9@p7F3( zEy+yC%t}o%7?N`b4ogi>GOU76$*ps6sRKCc?O zr<0SP!d*0FgW+lN@LX^g$lH(w&@DWV1Qql~F3nAHZcYMb03OKjNzNQ@IEr$b+oa^| zVF~F5!(MQBv#=DB>L(;-<VL2!)<_VSRvr#<1lAFBGT`kMw#g*PH=mQ&Qh$FIchU8^okWJLmjGTr{$eCnv!Pwn_IB(>iP`Q(WO{;FXkAsbP+9>f5u zL(arBlAHiZu5t@h6*r+Akyv;fmXl>Skxw4j2u`!UG)S$-f>jUQ0jF@Rj;SI&36cho zmz$nC5CeY(P(Q~)5U$j4Sg1PU+~kbm$q1LU+^kHrWf+v4nVX-PXwY5%40^OL(tehZ zo@=-OP6I7%X)s`V3ui-;=kg(G0N-i)J;B|mLQ--BI1R)Ll47L+BrkQAJ| zOsYo?yrs6AZ9)bqwrj1rC^su7F*zsSkeiU1M4oVNqk1MMH6te>1sZX)a!zVqZfa&qdg`FTd55*uGKM6j<_t9$GEy^BGhkOu zE&n)1L8D2+sK}h&kTh}oF;Ub{aE!_`l5++n2f%k8$RLNNB;@90V^}%K!*Wwo@(quW zPcy&1gWBM)kTh}iH2qW1r44XsPI6veYI4qQaPnI+A|x}m8BcqpZh-oIyhq za&nVLA-@LlheFaCN*$D$m6Hs=gUjH0{6Bp;k|4^coBZ}4K<`UN+- zt1KSX$xpdG)M4t=IV3rMI1Rr+ysC#~oR^oJWM~h48g6p#u)I_RdU9^|Fba#v2JUb;CFS zPP6qnB)Mhu0M(3z;52KWbX4m#0;jOJm7toX?+<@kmIa32P=PvZhE-hy5{H1Y!po6Q z{y76l4eir-2~4N>TM9{ji-IpmP6DR^G{RDIgS>-$N643uO(0_isRQ|+3y-g;>il*G zxRpG75ULF!p{dA&scI7)(^L<)gru#Y1o^aA!STwJ!DY&t!?Y_yD<8tER@-Ikbolw! z&It>TY&=|Tt7O~wPWw$?eje6iV_}WL%J!ok4ElO42C!^iUeCe~axVvqR8`_>4rUg~OB^h0G%v^XD)*{yk=!fswEAY&hnLj1 zu^)xMWRZ^{ z4_j!Vk!L%YNk@a&joe1My5i%cvYw1s+7V_Ux3#mrXnau== zky7<;yvmEjq^W((L#hYWV2`+0LyO!3;Y}W6WFX7uB@HcXD=%+oF>Xf?MDvFY!;OC+ z)lNyZMXbgssToMArKexzH9!QbdPzvBr6owIHGV* z)mDZerRsf-l-k~lS9xz?J*hQjAf?tgiM*3+uJO+#v*I0D3p4d*fw6`ZIRt@ zCU-y{0@KMPr)tc=pVT+WhrvjnDIr_~yFd>`vot=Gmp4PSHRRsS%~F?!JgvD|ey^b# zz=%^vlW`|l0MDo&E~V9}X0;7xunz%0#wlY0l6<@+e3ZZU6gx*P5t zV-!tt++Z*(_X!M_yu7$~kXcUlQvC`;;lCwdIN;SOXW#SkAd4LCZ7{?luM%lUOT2kn zuvxZiW-z26Q(10OZZm!_*etDY#=S$#@=qvJBLz;DgE2dADVj7vBfuy=u@7M{yUo2! z7TLi^pIXxI0!9njNTX**dAZ4AtcR%>$TJYTBaou$giBkP{P{g( zF2jvG?V8F8V3&DnxJ7P*9aCLBrCug^k;c?Dav4ms6~X2isMf|#8Xsy4LepwPTeP%1 zkl$-%X3w}+ghh%D;%O0PX-yDc9buO11RD$;p-3TYGWG}S$se{1m$x8AZNpZ~su9an z^%9nn6cxhnna%QeWU51ZVm8V4CN->$oC2v0ycWtIwhEWs!qn-h%uAbxvM}x)X_jV$ z@w7;@d<;bueLKSRNUFlV69xF4xxo)I2y^o+oml^VGb+`F||S{|X;eUq28wix?i5@1_YxN$R5I0z!b<^Bk2 z@;C+!E9ZmJexz(4>^LuPW03|#a_?xfybFe^>l%u1WJ$C|3X9_RqRrBjDDK_XY&?n8 z(vLq34LAD1Z*3_h4S$Q@YipLjMh5kwoT$bsn3qUpXN*INys9i%c^(*iNDDmBWV{F# z#2?lRmpt0=wDx8xsSRJ<-Ym~+V=y3g5YhgTCiwwad%XoID4M6mn2kx%RMiK&)jXuA zV}u04|2p^TV38x+s+}5WmoSb7YeTxmJxC#ReZuAElu{Zkbur0)?er}k0V0iT$5&es zJni^Bt69FKm7#rO;3|N1FRdE;tJUXVfSh}rLG;hcNepi(ut>aG0Wd!_n}d#k>9wp$|@`OHK`gi z@+Ur_wi z-nd8TrG_AGR1t!?VB}^T5dJ24r&b0Vy-dbuV9I7L`}S5xQblp<9Iyb?!2u309eTyc z6EDE9d{72v?AS-ykZ_PpN9t9;$p^ux1q41O@HrUPF~*Q>4z+zpRaD)a2SyX33`pJp zMk`C5>7T$_fia34$*(V8-Onsf>#O<^6*`%Wd%;4LgX{%T2t6$(WBTD}6i!m%w z->4=bg(!wocOXSwDzzjziKiu*jlGkQ$ukgd8<0ZK7Rt0tYE@2F@1K}K{nX{f_1@&y z>e19*bP;R$g{+Lp?egV8Lj>^>Nrrm^mW^eyQLOql~l zhRI6g90#L%>IBvsj4%3N)p)j3s0~PfV$~$1)KHi6;317zKkee53aegCUHs#TS-Dq+0QeF5&VLq_DNpZizAc z21b6ify)95oZuz`Ino)B09SxMuggl{Zc6U|l(xuwQ_Ckw?RaYZbxHYNT0TkQ-Ub6d znkE-ex|x>OT$8wwQ*?YG=|hsn=0^k{k~RRQntn^5l|*0c4V?gL4;CsPl2ncbqI~{B z7W`eo|8YJ!3u{dIye{h_XSkMMA=Uo>qCnNGQ2c+y$>sFzcKtb$kwB{Oip6QKWT&7;q7w4@uIxLIj`JCAD&mGV!?vFz%C8U)c$6P!>KU zskNH`wQ>ib&p(kADBlD2z#l+OpawPe-(>;)-f3{u6knH=<%A1KXIyCbu8=e^de%iB zlH|n38YfBRO(82oHix7lA6#hm12i5;nfL^C{(-gjtyCAiF5a~7=@ zNg5740Vdf_%O^?6_PEfnVzqpdlUseYpAlceNwTxcLGwS1D4T&2l^5-qWsa`7Qa z$xm^iNLr`y^_u*Q3i0`Gl2l4HJ(ASU=NczT$xXOmU`-8Mw2ZBq+y+S%c50mdHp0Mt za@A1X1xEJl(MtDHDLy1Axlfb(wS1Bk!iTi{!&?47ku-{#hBT!Li$cWu~L!Kn1QR_k?1SvRzNl9aru$y<;#jPEpl7m`|k1WD~ZhNKTkTgc~- zl=VWBzcB5{`xO~fkx?y8lA@$>l9aT;#SXF-BsJ(nnSYYB;@;5mNm8<*CL3w_N*$_a z7^05o|H~aB{~}F23Fw?9^Zvaj{3o|&G+F=G^!~jkBzOLgdqj%FPn6uhlK6CmLXy&c>cX7RQ<4DTS+AUy(csn z{{P<-zO4CDnS+fT3Vy5-`OW*M)^Gk~WWsm5w~PxLQLFIKdzSUF#*bvcfuF-9<~m-*o}{wg9 zTk`9;hVw8U&sy=BxJK}DT+KXcc09B2`M5^%C%8uOm^tz6EnbXkYyJY)Hau=_Jd5Tf zb76yk4Z_OW@m?aH+s?D&Ux3AMd0sr<3YIa?%B*}F*x>oFW4@Jj;;HlFx#I#m{xw)< z?zAAD9|jwtmuwtDL8CK{lsbx^Ih8vb%-hH^RnQlU``I*nS(QlQFnKV><@L8AET_XwyUE8(YAcKkM2KKEY*Kb6?=IjgMr zQ|jwrcfq1dtZWRQSpq+;w&PF13V76N_~}zSzI?TnjpI+io`ZG&)XK*5;!okHHFn&% z#>yu0xHa(8T06c8Y!YW{;iq+WJbA5^74cHAtzh-mS=khxunvA&Z^yp`o5pLcho3&P z@b+eXI3_oXMYC!N?{)u=kBGjZv*TrwX!+94D1|O@CGaXRBPM@*tZe( zfz9Xs8)4t)uy3Q4E#%k1?t(>sZe@%3%+F!pCfEnIghy?HeVbw5CMzrEPr#mob>D1d z%Xsl-*tZ4tZLzZDJZ=l@+Y0-@R&ur#_HBcGTdk~wmx65ttGCU{KIIA9VBdDw2ey{i z+7A16z`pHPww~_=I}GNr!-_wJ%iaO|cEUcejof`F?E3=t?X9Dsda z!alICd95#D-$B^-r4@g{uovtwn8!gY9)D&Zgnfr#AJ{4GehBs*hJA;u>;t>XqmIJ9W3cb2 z6@PB<1nfCj_hVLelNTR@eP6@AudVn?oVc%H-#4%i>^siBfqlne-#1oP&P&0zg4H{2 zW%qf)aoBeP_JKX*wNAjkGT3**ia!|I3w9XHqs+>l@a!_!cM|r2{m9)6>t%#PQ(2m>#{z>8K^lkWvP4CZmk%4+fKOEB;<3y*R41xpMX6F>wd$Eqq6u0?7Ip3Zd!3z#@&Q{w_qRGo1EQ(eYauXEh~=8 zQn0OH^=?~nU?$v#eRp6Vm=CXY2ljmj`|enAWbOq!4Ce8j6^CZ_cd+j+>;ntr?ss8d zIqbV@#lcwyb`C7K+=`=fTsiE!2m8Rnxc@!acOUlMv*P%?4t5tT`o0wh=*;`D?*Z%s zv+$?~u=Gk1@D_sYv-KLu64`{n!7 z$6da(vQA3S5Ss%BuN`dX+J56Z-Ja&H+wzE>6fuK(TN9<-UebYLvn#1~+@T9|XL*;o zr9HZJ_d@pv<<}>#xH@!m&gFnVtUYEmwypVc+p{>QWntZmJhyE(29e-_#yoLJ-q*j4)(Z5@b_bQA1sEm@8NH- z&72z{Ly%hdB~x!e!DfKN0ocNeFHn4UenvHf!EU9$e+GS*&p33y631h ze5K!>ek&(z+np2HC*w8ebmQ4S#N#&M2(CRgy8qZh;-A&4iwEpB4XWdJMm#(zbb!Q9 zkA?ILqV|8y3?K3Ar{Qe!# z_;VYH8s-Cjw>8ejlj3Tx3O;0WB3X00XXv3i8p;j9a~@v$lpgfkxa)s>UOTK}9QuD$ z>59Cn(CjMHB-aeb|0Dt%PxZta#%zsg5f}inMp2f7{@+Lv(^GxZa@Ai*J4A|DiQONNS{V^U zCoPYDu$Pdg4?V1+y7auRik8-}v1CdNyDLDg#vj`oFDJfoec?zz(PZlw({J4)pNiHgE@^ z2WWY~Fkm<^0vO3)TRsx+0;7P@q9l&F6--3(eP9wW87Km#0@Hx$zzpC+U?wmN;J_SU zE+BwpU=WZBqya;KbRYxB0*1q;kw8B1E-(rh1B?YQw*`iANZbJ^ekoqdfqTFM;4PpH z5DlyZRspnpRs){`egMTYHYEC=Vao5oOCdi7=oyF$un?#NM_tBXegsYd^gxPcxi3AE zJb=WPz(IhXc;QHGyMW!m9^i9e9q<{j9Jqp> ze+7O6XdMrLq@X_p>;?7!^vG~0K+iDO0BeDj^dyYdIj!qysM`W)26zG201NUX0oqT@ zfB|3t?HiQ<8^8!u2C4wIKsBH`a2@LVfc;brgGxZ&K7byY(gW00Ky!+%)=0Dg+5)uE zG=lU2e1R4~Q@|7O0=$7*KyBbAbZ-MkfTO?x;7i~j&>rP6KnI{B&iShx`Qc1*8nv0nq^MhP3(l1N8yg^l0-s z3($rYfV|f^?M>$ZXFYKNgb>;Xn)vKVq)n<(cZx12@LoVSq-kKZUB3m;)I3B!O%tud z`v9%Uwg9a`T8k?HT4NL^LxC*7QH<%qhQwte=?e@2sEafp6&MV}0<2`cgc0rmz_2Yr=Ko5ZQXibr%ya7Nzpf8{sgmqS+EI8c)vVzk6 z0a7Ms>t#tulLrO@gMbVm9iZ}2z(|1BG_CDyU<5$B=`fAcS|_fTzl(G}#eFdnO8~tB zHBtzmNZEF2`yCDB1Ee&@yE==!UXMWI21-vaCewgcOMQeYFX9-y(T18BC^0&9Rz0lnU4q(28X z0viCTOLa*9Gc8S=+Jh`mD(Xs95D$=nTY=X*rG{zdb^z2cIfDjGbq)ew0=t1P02sq_cLOTZ5J9rzXa1^5wo0g#8D15beOfk(h&;3@Dk&Hpnb zegde%4*(SqC;1ydM;l|?r&U>a0T7~8UyYC9feH*4}dJELLQ-2NuHo` zI+iIE9+o7x-B*jQuU`RDMIN0FM`w?qClcf-v&AZdgFQw&>ZWH z(-BF7p}>s;x&W^anDnR|gKwrZMx&=uQD#SgD)j)Ikbazq1U^X%#fpBcsW{P(r6*R$ zj;;UaW9_XrP#FX?M9JY}-`sQV($CkH^$YR!^Yv4=a5Pq!a^A9`yHDutijt+MBcnwB z@69OjN1XsaF{D3paVbHu1B#aneDENlZ5eK~`i1#I0egrj?#}|*DRHJhYbKXN4?Zq@ zCgcGuP?DH14`2Z<6qI$4-C@Fx5sC7s;S%eIwyC zvt4-mS{V1RzcffI@y8*ky%R_O-`Yw^kZ+LKIe@u_^hZ5xErmTdB-&gbA5f}v8SIOC zbSFxtzUY@>H?)%cu~HJ?8-}4vqDBI1Bd?W|Z+L|}M4traR7Zc)PqQ=2a>|Bmct>If z#H0ik?xMekVDbAqTCe)O#tMmzMGw9KI1k0;1bAhQs5OvvlDuuifPu`>MSmMm)kW7Y zOsH}*5IqM#A7jcEd>{*S(O&};@#CJ-uk3>dL%{?$Kw*NoK9D)Fv*K3>SN%0Zqbv7a z7%_EuCiFCSp)0>c=2%C6gUbiIx7lC3baSG_&Wk>Y7}6hNMj~^U`q+vMiL8(f7TFoh zNpwtNK`c*=s18w@_!4FlPzw)qQLB3(+7lTw)`4UqYx8TvE$fad3D@xp} zid`wpF<5`&&_)lNzJ7Nn)~V3Y-$@kucvR;a_LIsgO2&w4gP4yf2OTuRR5BS{qs`g@TYyxW=G9(|^;qNGkWF?|qolv-31s|K+E$-{o` zSj^>r28Fs{uu?_M!RSkWkI>;NT}0cv8T)J)CK8Lr-=M!~=xy_fX08ott*j_%UQ6^F z3?D?+!uAEXE_U(TeyTjNcZG)j_9DNx7WCgzxu#T6GFW_yZe8@(9qltbYS*+}imXtW zC9XmtSbsm##qlX^{pViTTcM!8LFwa?v1yNNJx*4X92GvPXj^~hQdzNmg9D!BohuZc ziv%c0)oY8B;`*J?SkLPLKM6c2yU zIBnX3$rUA8;&&RwI4tYBaL(apg>Iui>CP(@<_P~ZERt2i3gM!^N6C<~>%hYgvo9&D z4eJd*N{F%{2>N+x%-N+B`=LErOIa~`%ZZ)07eLG3H;ATbulSl;J1V|QW1U>|w>urV z_w4EqQ;Sb)OAf8w7M;aX6B}gSIWjelvt8*$zblRSVUxC$*a2nTP>z!=qo?a^)4zo zqmupttow7X4{AAWuA@D(G!zXpF+OFBaIdq^UHyS`^vu1ztL$mGNMfIh9hodkGBgp* zvzVjE%Vf2i)c3&s1e()d`83F2F1zP>zAm{3dmyZsrhu3-E?j?0#JVe)$9e4#p{na?1Q48Zz#?E z{HEeJQq(F4-=WMo@G@7DI8=ZS)k!hN5TveN7H88%6J4e`-2X}7MProEy#uDQRSU5T zZMf?1$BAvR?_;O0_ESU!sv44)sGbMoi&}`Lc`P8L7_Oq*lY!YyA|k8R3{`pwBM0j5 z>niKH`b5l6OKwXHF^NgT_iKMK9d%vxH+bD$^+CmZs;;O&O>%sGZ zm;2YT4XV&^3l#Rlpm7ro(s5aR^@$TLZ9by&9fty%F)R%dd){RZmHdP6h`z(Hm8#u3 zy6ErsimLl*s`L6DqfiAmPBdg?PjC=>hp`6I{t$5u9Y~tTwL?lYAI_Xz>5X4BKVvP& zvt#abEIKFHcDrx`?Mm4u z@e+B`7?W@u!Mvp+lUO>PIf&jPSk=1vOSd||*uQC~&Ad;w-6wDZ5O&8|l&Bd$(-UHB5#JqHH7r z`8#oW6z;5OYs;L zL-d!aedX{=y{a{zoY9;1Gw82dYq@Pow_oceZBR>S{g$>A=6BJlI!H+ygZSWG7DNQ$ z<)}-|0!@cb72kYi2=aCcB0&n*y*5DtzLeeaA)!$#&@BCxm z*rm=z`uP2WTbspz(HNs zEJbS9T6~0?NOoLo8p}H2xTeEfs@X=oQNTJ%&TT|`0h&A9Ml1!#cdLg5IHWHL_d*uv zs=s%x*X~EgkFGrQR0inpi?!p~RtznKqe9w>4+>d|tN!A*DM_ngW|8k>pd3T z_@-5P%JJ$gV!1oJf4WYp`2>B!^|aZ{6*J#MNBcU8gYV&+!Wr>`=q{7+9gj7qzclQV zkS^Cue-jDgSzubDPU^gT{Nu+fn&12V7m3wDPR+mAF6y!nl+cc+zu9hE zx582D?N>dwXYEi@8zuV7&i-?l3pU0xg8ZNc9JZL6^|iZ^!M^*z6g8XDeY|+w1q&YyQxzmViE#!d#q^4F~>(l zHYnn73WTfvp1|(suQ#jhW_=gcv@i4hJBvM&pnqMQpM-$DFYG3x6`L-?b27TE(M7y7 z8LLx&UEsze1+(57w8lemk8+?x^FwH$e#vB*;N4AJK}B{$)G9*v4@I*ggrxp@zZNUa zd+tmeh^0$sD7inkhnQW&3SIRV`(=2&F>v+lft@8rUyk8^yvk4beSouEe|6uy*^viM zZ|zB2NU$&N8R+GHV(bSv5_|PhPbuxCeuWA9+`nu$&*>>NgP@7t(AKdJFf*DIFF(LO zo8DUlO~HifulB229^b&SbSk1%|AIcYh4^R+s^OMo^OV27B~f;jzq%zEOZOy*!1l4? zjj8aY{_4L8meVdBP8@EBUZ^exm)}>sJrx1Apubo;6)rp_PEBPCwc7)t%KVNVAa>#Y zjDqXjH0E7(WP*ACBj~D6SM!@r#|CsuxT@z&DhziS9$T)GSfh&tNHOfBspZ z;`@yLia-5jc@-u4dy3_(RtN9JE!d&VKtKqr`}@`oCX2@iN9j(oaGeGDGFhyd0of=; zY@Njd#Pb=fcGaj9_4}Nzq)uo>C0%*;hxo!fF5MO^~o4^*+ zg~qShNrZ#A8Q3q%XGe94B-ARb;*MHZuXID~1A$-+D zcgJ6Dcy!}wXqhHt#ozc{w3^MDzw);}8QPG=yC32f zQFW~Mt5N*@H(!jR#vE8$K16uVVF6V?TZr33d>$_pNpsj+V$~ex=llW(5B=mhAvE|H z8(HIJ!;e&@G+Xh*95$(P3*{$45&e=i6nrjok_QgU^r06M=ZZCRS&_ZZ(DY%0QZsW~ zBn12KD{bp9#=g&># zqMp`TE~;Yj`Q{CJ7mGa@&J|H#v$`U7F{>i_A7d`UX9ttFtl7>ESUg{i4E0~7edw47 zP+EvohTUR>sI`MN5cXGCWxEm7*N9vnoHoAxqHHT`xMk=sY@@NxpT{5QYZ7t4Fpo`* Iq<-vw0iDcQuK)l5 delta 22954 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 diff --git a/package.json b/package.json index c7e8e54..f1a2034 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,10 @@ "@sveltejs/kit": "^2.0.0", "@sveltejs/vite-plugin-svelte": "^3.0.0", "@types/eslint": "8.56.0", + "@types/luxon": "^3.3.7", "@typescript-eslint/eslint-plugin": "^6.0.0", "@typescript-eslint/parser": "^6.0.0", + "bun-types": "^1.0.20", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-svelte": "^2.35.1", @@ -33,8 +35,11 @@ "dependencies": { "@catppuccin/palette": "^0.2.0", "@emotion/css": "^11.11.2", + "@svelte-plugins/tooltips": "^3.0.0", "@sveltejs/adapter-cloudflare": "^3.0.1", + "luxon": "^3.4.4", "sass": "^1.69.5", "svelte-adapter-bun": "^0.5.1" - } + }, + "license": "CC0-1.0" } diff --git a/src/app.html b/src/app.html index 72d42d8..2fe0c7d 100644 --- a/src/app.html +++ b/src/app.html @@ -9,6 +9,7 @@ @import url('https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,400;0,700;1,400&display=swap'); * { font-family: 'Rubik', sans-serif; + -webkit-tap-highlight-color: transparent; } %sveltekit.head% diff --git a/src/components/CatppuccinTabber.svelte b/src/components/CatppuccinTabber.svelte index 6be6d1f..42b76d7 100644 --- a/src/components/CatppuccinTabber.svelte +++ b/src/components/CatppuccinTabber.svelte @@ -1,8 +1,9 @@ + + + +
+ + + +
\ No newline at end of file diff --git a/src/components/parts/Centered.svelte b/src/components/parts/Centered.svelte new file mode 100644 index 0000000..2cadcb8 --- /dev/null +++ b/src/components/parts/Centered.svelte @@ -0,0 +1,31 @@ + + +
+ +
\ No newline at end of file diff --git a/src/components/parts/LyricsContainer.svelte b/src/components/parts/LyricsContainer.svelte new file mode 100644 index 0000000..651f398 --- /dev/null +++ b/src/components/parts/LyricsContainer.svelte @@ -0,0 +1,18 @@ + + + + + + +
+ +
\ No newline at end of file diff --git a/src/components/parts/SocialItem.svelte b/src/components/parts/SocialItem.svelte index 5258b5d..8050dc6 100644 --- a/src/components/parts/SocialItem.svelte +++ b/src/components/parts/SocialItem.svelte @@ -23,10 +23,14 @@ font-size: 20px; font-weight: bold; + } img { max-height: 25px; } + a { + text-decoration: none; + } diff --git a/src/components/parts/SpotifyContainer.svelte b/src/components/parts/SpotifyContainer.svelte new file mode 100644 index 0000000..02965ba --- /dev/null +++ b/src/components/parts/SpotifyContainer.svelte @@ -0,0 +1,150 @@ + + + + +
+
+
+
+ Album Art +
+
+
+
+ {songName} +
+
+ {artistName} - {albumName} +
+ +
+
+
+
+
+
+ +
+
\ No newline at end of file diff --git a/src/components/parts/Timestamp.svelte b/src/components/parts/Timestamp.svelte new file mode 100644 index 0000000..41453c3 --- /dev/null +++ b/src/components/parts/Timestamp.svelte @@ -0,0 +1,25 @@ + + + + + + { + content.replace("%%", (DateTime.fromJSDate(new Date(date)).toRelative({ + + }) as string).replace(/( ago)|(in )/, '')) + } + + diff --git a/static/download_FILL0_wght400_GRAD0_opsz24.svg b/static/download_FILL0_wght400_GRAD0_opsz24.svg deleted file mode 100644 index 6a171ea..0000000 --- a/static/download_FILL0_wght400_GRAD0_opsz24.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file