From aab19fa6c7b98e6e260e4bf45f34ea7e03a696ae Mon Sep 17 00:00:00 2001 From: Yuri Tatishchev Date: Thu, 31 Oct 2024 01:14:25 -0700 Subject: [PATCH] basic auth ui --- bun.lockb | Bin 158395 -> 163310 bytes package.json | 4 +- src/app.html | 2 +- .../components/app/auth-form/auth-form.svelte | 28 ++++++++++ src/lib/components/app/auth-form/index.ts | 7 +++ src/lib/components/ui/button/button.svelte | 25 +++++++++ src/lib/components/ui/button/index.ts | 49 ++++++++++++++++++ src/lib/components/ui/input/index.ts | 29 +++++++++++ src/lib/components/ui/input/input.svelte | 42 +++++++++++++++ src/lib/components/ui/label/index.ts | 7 +++ src/lib/components/ui/label/label.svelte | 21 ++++++++ src/routes/+layout.svelte | 15 +++++- src/routes/+page.svelte | 7 ++- 13 files changed, 232 insertions(+), 4 deletions(-) create mode 100644 src/lib/components/app/auth-form/auth-form.svelte create mode 100644 src/lib/components/app/auth-form/index.ts create mode 100644 src/lib/components/ui/button/button.svelte create mode 100644 src/lib/components/ui/button/index.ts create mode 100644 src/lib/components/ui/input/index.ts create mode 100644 src/lib/components/ui/input/input.svelte create mode 100644 src/lib/components/ui/label/index.ts create mode 100644 src/lib/components/ui/label/label.svelte diff --git a/bun.lockb b/bun.lockb index 2b632428f7a561679961bf15cf64aba7475df6bf..15cd4e33edfb15cd92c04fd1f88f1b8b982074b1 100755 GIT binary patch delta 31867 zcmeIbcUTnJ_AcC2(n_PPU?PZu0RspEA`OBKW}!`(+N^|DP(TC>I4YQxQAcNwZgX~& zaSRxaIcE$b=IoedOykTrit)ay0x;*`@1Aq+^L_V^JN59^+H38#_g-t~sxGQ_U(&sJ zubbsnuj|@1M{LWS8!&2As(X8L&ZCj}fqfVK@WY8uYnt6z@_m<mbmBrVO{lr&=_cE6^?t{uF2#(0-s*KzD=Mf^Jmgqd+O0B_%mB3E5dv z5+1O6ek_ha@MaLopnJN)R+HsnIxsW`Wv+x+}CxDLI}jB}2Xi zr3|~lTFR&dawWq$fKq&FWU}Xg6piLIcq-5X!g8Q9K`C8^LgNx+EoGDAQd3+YpbW~F zp8bng`U*Hf^^i0yf!xsC07J>5V~31LOx9@f!Be*7ktg~48Icu0H-aa<#3lQ*?-gV#avX1JP8aKJp+Z18!Ad*M(~7X4EO!*AA5IO^i$&5*I`55;ZI?K1So{ zAXjq<(8`E^jyflLMWF{3`XeYc&pgnIpc56Eq|n|9ZKF^>nWksBDuOZ!%}4I!*CT~q zQ0M`LZU8Nh_(clMROm>B4p3F2GCWa(qa1i@st-zhN$_a=j2Me0 z$ullRGY1({j~Iw}lIy%=J^_@{^#d&n+6(dN)T8|oa087?@f;XGBuaCqfvo5Od1;al zOdOJoG487H1JK1hQMZ+S=h!EIH0| z5R6C~mY5ce5uFV~s1q+vS1ct;ohKQThNC%Hru`MgZlE@hw*sZARHuzWDV}MO3Gtf9 z>BIyPlk zbaG^hMUxvLmy;Bi9GRYqMo1V%#cMR1I>`m5##$1|rg;j#5|ld80VJf1rAY$%gSyCT zK~GSs5$CRQ`VQd9@O|KQptQCnMW&>*f}Hqq-DLgLZm56CIKeDOgo2W%`tAw^Pi?vc zygeubrHub~`awPAno#xC;kq3TkO70@QscsM;2$C%$H96zhFJ-EwPaH4%*$>fF4{bqd%*0rRN5&7cXrhN;qC#&8ft<`l){;Bn zUUrY~#kQKhzSAi8mnST%p3c2HuRpv;EwEm{wXFj=agYvkd;^cV>RS zfzD$dk65ztwtChUB z^sgK%_SbFbzi`8tnVP9Nxpv!mlFO-XbI+W=IKE%2rMG@qVZZzB`4U@(M5J{eo7JIe z?xJtc@4i-Q#$)r88EYdWZY;WYeQb#1jwM+k%j>?f&i`?^IqySWzYZ?7Y8<-!_3i$C zU8eZmpStCQLx!N=A!syM`Z7=#nq%KOd9Y9?Yq7G(!uuO__i)XF1w2DwxlRVrwFJw7 zFsg(`g9#bJ*-i%CR&Z^=m0-Cw47v~CLM1N3*&qg6v2Y)wZiJOa<0~bwYi`hHf%9iG zT!OTB5Ng5n)q=D&wHi$@(;I@sep;3pWfZfu%qG~VdjNSWq!ig~WY@DKv*~Np9Vm&5 zF}Xw-WmAe}_A%<>O39i6i>P7{HxLM7BNh>Oaw@Tx}fb{Upg)u=6t zZsf<>IR}Z&^vtH3QB2gc@M=cgI>`N{G-S?QJO)KF#1TFQacF%O-q5I94k2{` z4Vzunpu44T^7wZ2WHx?AU1v{ultBfZe;PPcchw->PY5+eQp`!1AsoDzO(V=gUTS_A zDdH9{8tJ+>5K<4eVs_33ouL7?_2AIEG5WH=(HKTtO@lTMTritaB}nInF-()9RH_*5 z&1?)t9an@U8OFBm5;#h#l?HBgA31@Q#Pw4+c~CC~MQ%lSxzA8qoJGt$y)|sK!-OrYOg@%FO6iqpPaeC>@dRG zfurix($uP(2Cfk}8;Ls(jwTftT*aWRgows8IqTvOqS}H9$YC?dB`wO~8Muye8VvYg zcmaEnLqu(ZE)g8s50g|xV}ou1IC85L)vHc0$eM^lE)5Gfnl>!pT1n}M+X1c_IC-Uc z2aYPP1e*<8d=Zq(LyPOifNLR@Kz1GkN1Af==Oaj^TS=a_2$b`br_Wj7(8ex7;^{z^ z8H$bx|9V4Nr1sEG0@snXYZ#=vgb?b8+-qpi>4M|}uu26Q#HK+kr>Rjl1;VCKK`#k3 z=uUv^3Qp=-V%1=l*~}=$1hX8FCBe+5Ihrz98X)#fll?sgj%rQr({>^1$e=D|0*7kMC@XcT@gXdyrBU1!!faX@ zbq>goR#`ZO;Sv?fG9g?CVJ8SBzeR_p%%-(bI{l}7s+gt|zf>L?Op5i`I*ghHiJ zxdkD)$3?zBH7l)pxpvap7(SZsU0Q%dmtp& z#8QMBQ%#8X+c2Bg>(H$wQEa#Vl}gy^v-OI7~1o)DGSI z9XRS}@C96uNv;Fr2`(KRoXaRj{a1W$V&NT)x?XKHbkRqSpdAjjWjP&<;>WhkCc>y| z)=oA;9*q;gq0vYa#U2GmbuFdS39wE!g8G~fIA!#s*m2;fA>@&I6dYBy%$4XM=YlRY zI=~tX6(D!xnMxEUsOInzoZRfxRjrUab$B#83J3>B1xVvkw-g*Iff@m(Pi*i%&t5-nX> zW_P3RI0Tp%FzMR0HfTk31?=6Ng0zhh!i3v8NSxh`W%e-YE|36<*3ulw%`zu<>|Aiv zDrj(&Xy0At?AEG0oGvT0;sMhfRhImar+gnq_ifz z2S-^-BS#n3Q*H-oHP_7mNA;$Y+V7OYVMRoX>3Yc}$d%T<7t6s;J{>|YB*36-Y|yP& zIIZO64RF+`8Y#J3Z?(a5F`K4=Q~YXU5Y91ObcjyVN6iZzU-at3GNX;!z7V2LU4nFT zDTM6M-p&T$EDMVX(LL@b%Sx~aH-qTXpXJ0Dbqo8;!g6eO4})-lg;_#`b!?g?M6`}# zIToYXCW_e%FzQA}$u?jWLucIs4&7YYsoO*s%-WbcyGJvdfkxdl2+o-7OjorVHx-27|DLorJ6sMlrRMhS?1;=pw+$ zy%vL2_=Zi33(+2jtOJ`77o@E`P@`!lg`x{Wn+if73qs+s8jVTPn}bl86uMmysuQQm zlB7_(gkY-zkvK?=G!=xtD+t{}sI`<`t-)$&a6xEuK`0-gmXe+^UJXqs2%S(vI(>rL z2kfE^x<24&q{(yBYK4;~3*k?uOA66?B~n%BlY+Ek5NaodatcEBLsVHzK`0v`lce_n zp)e`bGD!{1EC^kZLT6Hft%j+=9N`NgBoa(RxZn`qV@Z%kIBnY*bOr`66{YFTo zt|Un#d_BJHFKPNhQ-sVK$z{!|!{u%UA+ED><@CDAkYYwye z_`%X-nsB;>nPRW?AbtAx0Ay|wsO>7*+Y(^Tz-$t?U zkw$IvuP`4o{eU2G>{l!Y@|>@jO`1_GJDP=qbQsMtK^}}|IcY{+&=_^aqXpz^aMb@W zy;a4=Wem$4Wz=>aOP8JPa6z&dA+uyH+3*KAnuz5M+V|Zp zUY$ z3&t^URLxj{u^D(bo`sJ!>I@Uq1vLWO-f`gCOS{gW5b}pIt{HG$pq)rr7I*3*Qx&ow!cA;QuR{{@-LwReuC14g3VqOnV8a1>^&C5GDC%VsH?prWMeh_|u4V zLW}Z=dbVhyHK96*O5j9#S~>o&l&zm=FV$E{CAKIfQ7I+0PKhT1@gvw)^1QchdC=jJ;si^QoDOd?7%GjQG)@YK8G~k?-*s7$0gD3^7 zDSS~%sa=(LsfNH4CDj@Vtw{_HqE?`F6uu}WQC&e9a0p08ag+*lSK^6M&_m&g>cIOc zJW&cZQh1`2-k|VADHx#e0RnTHY{Q%&pu~5llR`<}Q<3*l$QW8zaiRcU^ zo+t%prYnM({{y9hW-0N-QEHlbh$of#iXKr4F2IS>F9IzEx{`!NXgUeV^6x<@ZjD0M z5`&{SN)yTkC7vi1uu0*G62DpDi&BzrRpdmGPr7Co0%X8mP>S0}Cxw#ypu!iWBtN3) zA64RslKh0i|9ceeUsRDS%uzBRN>!E%N}}_MoG1k^DD4_P60apFHouc|EOT9nYxO>L@DTw6Kyn_D)N7y%H{tT2~paARp39ROE1P^YV($m zlc%i|+FH>gN}aO3BJZHciBd2^k#|z$#ZgM%Ly1pU14Str&<6_CsroC5#Ziii!ifxx zR%nc(Pn4$GI8YJ|R^&w~MCqCYC4wkrln6>Q+Hi#*p~M%ZWZ+kjmjlfNC6(!lUQtR8 ze51&Vr)dA;BmOE^^3b>#TW z`QMj0RQ-Rs?D_jLhic>?op5}K{(YGv%^ZJU=E&WoE~ZhMS?ThI4x$wN`!Ywahrcg# zieB#geVIdJ+FrZu zS#nUrL$@m}KC^mR-o-uT9PFld3r;_Nrt{W~8F2?~_eJ&2dOBz%>#J=t+V7w)RmVXWPzUD0;|=q&3|@d^A_q^qxUAUl!lFe z-;K3dq-QgBnnaz3T?hLXY?BWrv9yL|e(1*5F4nW>VD%c-_+vNLeTklRJz)~dY1p@5 zt(WRqr8jK_4U2kXW;>UbVU|BlVg(J`^`;w(U52FdO+qCWxWLRDmh0K#1t!6s<$*f^ zuH8bD;K=4LG_#Q_^z0+JDlBY~nblpXXX_W4gsLnb+*NRW7MlbYmbKW-rmoU6{SuQ< zo%L8^W&x}9Y%jQ)Ot;j`o`6eOY7*RFh?&j%UeBs7GYNHA+%hw3vqsO(fUCzGmz&vJ zaATI61P^u++}gEz=DEToc(Sw=X4X9ml?AQ=tGCk3tbah|tTYKe>>9Wo;F_#5;Ss-S ztIUEQyNh!p7P#6h__NtK8(1FB0j%lwW+9Nx$GI_kg>w)KTVoc2*>aqluzZ}2EMl!$ z2w_<`hcY3{EHq_3aBjx3ac<6ZKbVCUEE4CIY$wjGnB6+F(3-{J+=d;*IgB~}XcofR zP@GNdB+hMF_4Q_<9ZSQxJHkyUbY#Pp8*j=2vvcOGd zp&Ofxvzg`L+?_SeHVZx2e4Kl-S2*`#VVliDZ?+ugJ}e*SzAR#kS?I^IaPH59t!5#T z^}sobW#b&pblc2A42#6s!gk_3fZ6@SEDU6EILESsIL9%^?Pg&R8;bK_b`s}!R(*$A zNMLC=C$e0ehp>7((FO`ZuK6Mkj7qt8+jN#cdtqKiY?!ZK6XUUwEIlL7#6V)eGJ?-aOq6gk3M!( z&n){*!Z?-W9(CPU_jD!zN({%LUgx2P5!^2~UfRI|Bbs!9Q@bna@%92X4+$lfc+r zaIvT1-!YRghs{0)|IWZaaGW(g4*$TdK5i1`vsd6op2es+VG2plNQr05}{++|90k@p#PQkxijG9v>VI|uM?g_Z6r%l3Y7Izx{oyVvFw}v^M zfqxe;YR;I1EOrvyTX3FdO?XHr?JWGeh*1M>J*)Q<{JVrv^OH%~$gY92zKl_G&Lm{B zY3JY{xaZ)uu)tjScLlRTu1VO&^1wM<#jJ4NBy4B%&%-}(AHnTpVHe=vHTZYIBk?!&)ZCgBR3e+&MB`v~qD3%d>f z9>BlbCgBFl2UqtY{JUckZn3O8@DH5+XA}O>rN__k?-Be1cbDnz!oSDx@2*L>&vt@) z0Za z`1jBxykytFSwDk+k4(ZVHtiAo1NR)Ymh~Ebg46#=Ynk0!`1t{| z$6H#<4uT8#h}k2b*0Q1bXh(3Dz`3!!k7&nFDDM-kW%ECw9Y3QyaP?T&XS5@@^`B`i z%l~YivsTd0=_6n*o0BD&d3Qn3bG-n*0q-F|U@bzhmjpgsCql4;1PLMp4f#$I#Fl`d zY6%D$@wgHYI9Ne&h6D!gXa&Iu5{$8eAdsIV!ALCxo>~Zkc$yZ1x+NjFMS>>0UP%b9 zl3+$j2txQZ5=<=xL6cGtH09Gu30U{|T_VkSpfyMfKAT8Oo=2n=Z>j@n&F2$o!(R~z z<6$-+;e0s}6VE5omPeEZX~(mOwC6$@kPf^Dk&Zl@NCemEK|1kBBAxk8B3-y$S&*(g z4um_DgK=ld!Zx34~K-u=yQ`ySQvJeq#(`$5`j z{xw&9_~}9OnV%RIL!WI^kGo6{uxS12)Ukb6a#C!yUzWtYy0&-K&-UXR+>&ky zeJV%4jiu1NA?2`|zNh1i$H!lH3JkeqyKC8~wddFD={3y5vvctD<4%X%Y`mUX7L;jy zWU*u9rdF+f_d9hjVaVex_v(y08=Dc4GoVRkauDz1C^)2d8bA4{{^_Gu*00Z%t~)o& zcW~zW-j^G`di{Ly*spbG7UD^&5l44Ey|!g+e%rExdyR?Pozdy%>*Y_GbF-f{@AG;M z{iY{qWb=jPM>Sv zZNgFKisd#0WsKRvQ%`BnmfscfYf6*j;g|CRqgw~9{@k}>bdw8n9=ypcVqIEM>-;_& zQkvdh(Yj=p=GB&a^uN>hQn^dJM+Ua?*cbR5zq($|DY1N-sM1Ac$(KB4vEBIbQn)I8m~QMcpcyUb6C z`aSL9{5id+>X(Pt`f)P5;d}EtxBD&cR9U{*@4}=2$GRRN*^PBCXYIXnNAc~TMc#uPR0ykXzk-=^5+RNwnYXX|i- z&6Z<%2O0`fYoGoxyH)M-Z34^Z-JLeVEzEJ@wgvsmw$Lpr@kTs&&1hx!?E4aPCv`n$ zZ_UrZJf7fyIVPR&q>((eDkhz(ju4FFagGoKRHJ!{1QWQU69i94FvbajN&F-U=DE;3 zRRw}6Jgo`@ZCoL^MS^L(o-+h*Nif41g0J~C60EHbL6fQw%;3|iLeRYi1kXwE4G*ja zfptv?7FUB{HqRr$4idC;fq?P(E)c}lg5Vs$AZlu<+UE!O}4-A6J4Vv zOX6%)6BQYVXDn?=975vC>c6u`$H#fmTT!SstwwGC)JzZsZFxLlX~%`;xX_}Uf6b6< z=N+hiJFGMa+t0NW^4d`iZW73Z(>7O^$z#rXB|pT3rsI`rc$!HEPo1}f?3=k4yw4Xap1M!(b2!+mtbDKdJB>pTHr$}>@+^!ylw=|}>lpbaomkquR3^mO4Ugeh&ZLg^vUsQ~4j3Yk4UM?$}a zmr<;y=b!LLFCoz^p#To`87TVEp1h|+eGbYN;ao|AXQGs}^ehefiFACU$jXDG$6Kf@ z`fY$7W2pfAK+jQ8Vd`T{^w4Hg$f&S2N@5Ho%{GMTSPM$FQU==<*$;{yHPH@5woZ{b zK(2;5Kj< zxCh(^9s-Ym$G{UH5BLRm3Ooaz122G=z^}k7;5Xn8;5G0k@CJB-ipm3?0?&aLz^?%H z?dtU4NG&M20kwfT0A@OkJKzC$0y$7T1)K&305rO2Gz|vg0qXoi0P6hI*=c)8d${2M zZI);t(6;0t@;U?@2BrX+z(h@F)II`Tfo?!96zR#6nE*YJ@-^T989n|o2%yJfdIG(G z-oPBBp=Wu*fN;PBwB*_IgwE+k1VeyOfPU+sG1VAZc>_K`L%^bOdNn(~cz)py`n&02=T|fnz`puo2j#ag|<9qS*{) z3$PW~2K)oq4(!nIR#>ysCm?JFx&u9co!g+!+KyPunJfW zL;&-Eu0S_n27t9mlLm|hFmq}~0i%H!U?30;l!IZmfC2h7fO3EhFdf)T&kb%tARC}r zhNitvKo7tS&=WfJZv?TxAYd>M50pmSR$v?O4}hk=9RN*joq?V}3iJ|zV+bDy4gg1h z;gF30ULu^(1SeV*Xk$z(0Rw^%_5$bu$JfB000X`Q+5+?t?N}gP;P2)OM&H#)^F6Qz zSPNtUKLG219|4-^e}H~dpd~O)!}~50+Bd5Oxf@U$XahNc=HdOoUf>`=Q!q`r#H;eU zlo^irtu*D8IM>hn9{=$3{z0Hrwy900ZhH1E;;w*}Y?WCP^LCV&RYYG5fqc`gDL0Q0D#IRbNl z?*InO1f~L0xX&`dK79;=FjO-PNCjy3N>kET08K|UMU4Px)RUZeqGN#!ARU+pOaL;0 zX~5UObYKSX4KN#+1$+z41*o6S2j9K>8GS2sjE*8<32;9Qkzy zI0aCnD(#gnDH4+doCY$0o4{q@5^xbX3!DRf0&;=#zy*LZy#`zXt^$pf-K6!-=B1mpu``CH%(K*lr&UISBrKY-tXJm3lN z7ms3PD1ln3kqJ76vJNlvl~3at!U37~xdr9+yg()NlH)5d_dSTy6`MPgf^ zF2Z#Hs%|$>5tRB#ZG@>R>w)rdi-pj1T001&L9MF=4B)>5^#^SV>Id2opvtE%*#Ke6 zg*t#Q!qjDbK%0VkD{&O2kwwFd;?)sG@A)qrE~JFal6@Mk+kf zuYmEuI3NQ^2dEZ*1DXOPpA1X_CIAxwil;QzG#hOKGYw28Fb-kbaMD(bwo7-x-v_8? z&r*1j%|)0TnFIPAV1+OPB?m$Psw0a3wuo#c!YhE~fDPi7fqo~nl@l)pL+!p4SP0Am ziY8tFem<}SAl*d(Wx$DU#R*5xH``0D5h@D4>MH=%cfwf{@r4i%ng^2CGYjHQeI&qD>(74oQcBs!%R!*%Ge_n7^&cVxv56TkGcU*^9Jz~{Y z;ECk6bf_=bR$q!|D|~>i6LjfPr4p$6qC1hwYUt&SMN#D57X=4#lsI>{P>J`uC{z`v zh!O zM(AcGdH)MS-!`#d=xJ!Pw1%c{#IY<2OS?Tv_e5XR(@0`(01U#KM3c< z7o~XFb%KNcn^MxIF5|0b1J6t?|FlNM0)wd|mqs;tm3uzr@`DGwqF`*|(-4_@m$v4; zk=EHB8q{RN;x=4p-Llnhg=uS9^I6akeXaQq>jYmh)SBO>(mEgoW~PkcUFvJy&Q6+1 zd3t*Vz?XiA!EBq+Ym;?%OWefxisXPFIWW|k*Z&cvO@anBc1FM6-;`Q;&P}pMs@w(E zy#J4auk%J|I6y-?FnsWx(jIq7qoJg6+?sEoJnlfl5gM8MciP^#d4E!&##?KCkMdA& zjP6;n-(xO&7>tTEP-n)!nBf&$>yd~0x^d?>lg{_neHaA|)QJ}gI-%n+>yd~0CiHza z5q)ZSH24S&ZwvuwkQRjX0kjK4|ED%FZhXi(8NrevHSd^sI@6ur%0NT-7`z`WgF!( zc5M_gC`Irl@GJDZ+a}~tzBJDy`nfFM2kNZ8ul@9WXG50~COau7sn>5T$IE0RrKc^g zosD4o?^(4+VN6~Hev|T2 zC@;HN_{Cp+Tj%TsJ!jP3)+Df^u%@DP?T~R4lrkE-V_3?GfJ?qo_rUDqt;wy(y|%z? z_4Vy3)7pI6y1LeAr2=4uxe_0}1r0Z#vfRaP-`>A?o$ua2D?ysTFxEy^=9{45uf9qB z@!ZtkmWTYgyHG=Y*ZRSSv)5LzZ~dk)WFRU+_dOjxp?C)qZHLdze`z>x( zeY~Gcs!$liUHBfPbyi=3|MfQ?7j3U;_e-J1RTus%<*vRq|4~yn>(|X&94XXrbk%6^ zmtm;0KEU_=xmJZSfv()R9clX@x*9aP+}^)@${*vL3N^k$3{7Dnr6L9-Pdyn^81tPg zpN_Q7+0dZXalC2i;HOzOZ3{I{x$*;~@faFap)oaiVVzr3!}Nt3*XqnYfl>LY4lla{ z)TS=4y91S-QJ427ep+2#_9*C_x_lP#vbyuCy0T4or`|}-Zl8l^EBa!RqA6f+U49#i z&gx6k#ha5y&zsgTQ4|8ae0;rpaeYviZ`g@d$$h6#zJ_Bxd5fTa5MaQykj-5^10LE6 z?ueneooDP8>;tizP+z}3`$m|sIk!J1JT=GvZCT=qdi=yr!QDnJ&f1-SfDK>pgJzl9 z?%aD9+C_b9ykkjottxege+N&!y$m$hwZcMg3j-}<^F}21xVr{1*i%qUH+Mdk(yDK= zPiZ^2YyalsCrN3sbl@r+X=$48Ii>ojz-@mXm12DSu?f5^)&abtv9b5AU5~7}{&=>Cf z+-_ljv*029E|KAQVz%zqq)qFfL55=h*?RC!dyto_2cJyT!-MZ4>hHl{>_Oi2`2?Dj z6Y~S#wj0!`3R3!c`BS3~^x%ny3;T()`XL9`;o+N-D~2DC%nzh8MtSh0y~y)}2M^tc zZm?&s;N+}+&*4DX$62kn#Jqw!?Pf4jm#fczgSxZ&MTn6*UmLWI!^mh_g#B?@CuiiW zej_4auIG2v50^hF3S+&op@8FxhN$!6Gf||!`ZWl1#Km@femi+rDot9y)bB-{oH4qr zy?AM)h!w+|_5%1o1i!ftW|#Kiw)^2|WgqUoUuf&Be(<5e8smXSlcL5*j!M^kPP~Ys{zQLgtjyZ=bqC|{6@^eT4&p3#>Qa{lUHMCZf(9-1sl)8c&lLPr#()dCb zfX4ek?tBQPmut-Z4?*(_{Sc*@gZacm!dB7Tgf~76ztk>(O~O>-6O4Qhx`ea(U500G zqi*%9VC^T_E7i7j2>-Qc$`Ya6ctoz5-k5ZF(h;G&^~X@@=AJwc@a0DYgY%K5@)p)7 zWR=_K33g7%u_5-*ayMM^6LL_dE&u;!&Op0R>0)L*KKv+ccD&@_(qsP%?V{Vy>lW7L zm-|sxbAB6nIICZ9*k6C)^`Nc};YdsU8p8lXto$+5(#ht$6{x@Zk%+GSpM8EeEAmgN z6luIqZXsX2H2M8Nc8+bMSi~qB)YC2ahGVd_T1$R{@+#koe>f(z^;f?G@pa61*?X>^ z#5D;G6?8L=`o)MTrRptdw{kPhS=cgq1!C=N&Bq>x#s5={@y*9kin=7oOM$=om5i*a zw@zHz+!BVX)AE1o1|h20-VoI(sH0rI|GCH{iasvnoAl9hgE!{colMFX8*{qV+; z$-A4c{aE&U#P}mEat#UN!8xcN^+Oe-OZHjVWcq3>Yw8tZ_b{FW4gUdQ^1i&sx|+Y} zCk@}D?7?J8XGgePqR@1%x3L~;12a(NH6Tb;ffA#YlD+di9miDPvRcPSKkS>$e4|Gh} zWckTGumc`@MEhes!+n;vyzglgJ-i+NmS{)^e(bcc!1-URWNah!7*t7cM?U%tj1CXu zbI+g$tKZ;=nf{M%aW|K|kV=*8Dzko`Vo;|kBmuLbmjB~ zDh0g|s;S+0;yJ;gqxw0KwP~M*G+b5%`)KS+V28IxZ$ z|MuNiv4^^Uw^|e&A+d)f)XaP1K0(KR;OUYwrpMt!OUfWwtq zP$T;8d^*xPe?bFn$hz|bl)L(!lplxqY>j^ry##qEw`_`8C;jDhQg7yE;jgIp?W}%# zrKhmyMyoeVlN38pimIW0RpnVs&#t$E5432tdN!Oi0f z72fjdR|H3~LO&jS1y?cGiTl^+;?l82;57YHNu+k9{6 z8>x8d?#n-I&iK9SXl~5R4mX6Y!cl(ahT!P0e)p#An$xQz_^l|UrW>JHdDQR4R4N!3|XVNdl_;J?qy6zTIb^KWyl(i4*UQ##C8e% z`fZ_w@p*#0UoGx_lusZoi_wPiovOHhW(*Y?ENUY z{NnCM$uYPewSm$W+lEr^>bH}YRPo+*AuqaTp=Af{`3JJB*fx~Xq7A+8;u+{-+fdRd z?tYYPnflpekVjG2Nh)7qQa{Us7+?8PSN*<{`oSG3M!HvBoZ0EH8*{7ru_pEF zJxFALby(dj!{t4L`h6e7&`o;ys($!M{SuHABVDh2!B?35FRrH3{d(76WOo<^m4~nD z2ZfLw?RWydP>?k7eL0Q#)hYEeM92-zKsBd6hdX56Pvyo=<(YSdGXCl(ry716J?h}% zWw?arBjrtv`cbOZ2m11_DtRO$AKYl9?egxC{4_dH@i(ERI|fHgbMIkA``64br^%V$ zPvh{N6Q^gHzfGjFA)oN<4y{8PJw8RFW&%~KbprQt+V=l zt!25pl5)!?&XlT5x=(}amu2?_cX97%e)_)Ps$S%1(ap+_<<<`nRdX!&dmy+vsUP18 zo4xJE?c52^u@Oy|w<*%yKrI?zQaaCkfPH}c!(0pPOei?;a*qWkUj3m^$@)5Y+^te> z8+3(8yph4<9|{gdRJG_4A>;Vkhxmo2?Kp1xs3612yyqjqU+g!Ie@nuoas1dL!Cjj+ z4m)N(gmS~)uFPY&ku#2aJr;bOCXSb{J4eqx*t66DS6tlUR(SaWtv)!giICdql|kH@bec%Dm3iF$O$ME#vIF zmi=7OugdKt2y7uZ8rZLM$neHj=Dn2->^5fmyC*`fP$qs@bR0g*D-B^D;V3#cFDkJ# z@NDoG-V+l`Bf2b29XP6QL)X!xUHke;XPPR#JrgY>Q@#9r`CTiq3Ln!<^y0}OVikR8 zYFd&drGX_S72iDN>zavw^8TS>8NM|{Y{hR^6ie~7&Bby2Q-6f6*@%AI>$MOo3;c|O zXy!dziXPnDNVInh9h4jwGte@^5+C0nmA<*@nGl(jgbxH$anAgGh`5_q4-o@oc3r6G z&JC}GD%&6ZBDmOZFE5G*thuYLXtmw0w75slqng3SwkFYed#Iym@4P*+kvLtq{Zgoy zC2U{bQv7Jor&SQE^j3Z@M@1+hRDtwsIaNVu0zMgy@98y=r@&Br^wyG`7?~P3Br!5R zZj>daK@2`3D__U|b2a(+$d>vRp9lp~T2ER}{H3x|MnpG=wZtb`lKJd6g0pjIp&$j? za#RY;!-XOD(Tc8i(t3g@iF#t%<=L)cjW&NZ8u7CANJ*<2l{H{U^sp39RB}@2fcPQs zCvhNo88alID9=B;h}C_ID&Py()Mbcx`oQb}$?&2Y^fg?`eAl8mHIP1%isOMm7B|xKxtYTq;rexFPBf3-0y>eZ=be{{?wyInV$A delta 28617 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 MhFg!0mfh|C4<%%I8vp -
%sveltekit.body%
+
%sveltekit.body%
diff --git a/src/lib/components/app/auth-form/auth-form.svelte b/src/lib/components/app/auth-form/auth-form.svelte new file mode 100644 index 0000000..1e4b3d3 --- /dev/null +++ b/src/lib/components/app/auth-form/auth-form.svelte @@ -0,0 +1,28 @@ + + +
+ +
diff --git a/src/lib/components/app/auth-form/index.ts b/src/lib/components/app/auth-form/index.ts new file mode 100644 index 0000000..0747bae --- /dev/null +++ b/src/lib/components/app/auth-form/index.ts @@ -0,0 +1,7 @@ +import Root from "./auth-form.svelte"; + +export { + Root, + // + Root as AuthForm, +}; diff --git a/src/lib/components/ui/button/button.svelte b/src/lib/components/ui/button/button.svelte new file mode 100644 index 0000000..86827f3 --- /dev/null +++ b/src/lib/components/ui/button/button.svelte @@ -0,0 +1,25 @@ + + + + + diff --git a/src/lib/components/ui/button/index.ts b/src/lib/components/ui/button/index.ts new file mode 100644 index 0000000..af1e188 --- /dev/null +++ b/src/lib/components/ui/button/index.ts @@ -0,0 +1,49 @@ +import { type VariantProps, tv } from "tailwind-variants"; +import type { Button as ButtonPrimitive } from "bits-ui"; +import Root from "./button.svelte"; + +const buttonVariants = tv({ + base: "ring-offset-background focus-visible:ring-ring inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", + variants: { + variant: { + default: "bg-primary text-primary-foreground hover:bg-primary/90", + destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90", + outline: + "border-input bg-background hover:bg-accent hover:text-accent-foreground border", + secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-10 px-4 py-2", + sm: "h-9 rounded-md px-3", + lg: "h-11 rounded-md px-8", + icon: "h-10 w-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, +}); + +type Variant = VariantProps["variant"]; +type Size = VariantProps["size"]; + +type Props = ButtonPrimitive.Props & { + variant?: Variant; + size?: Size; +}; + +type Events = ButtonPrimitive.Events; + +export { + Root, + type Props, + type Events, + // + Root as Button, + type Props as ButtonProps, + type Events as ButtonEvents, + buttonVariants, +}; diff --git a/src/lib/components/ui/input/index.ts b/src/lib/components/ui/input/index.ts new file mode 100644 index 0000000..75e3bc2 --- /dev/null +++ b/src/lib/components/ui/input/index.ts @@ -0,0 +1,29 @@ +import Root from "./input.svelte"; + +export type FormInputEvent = T & { + currentTarget: EventTarget & HTMLInputElement; +}; +export type InputEvents = { + blur: FormInputEvent; + change: FormInputEvent; + click: FormInputEvent; + focus: FormInputEvent; + focusin: FormInputEvent; + focusout: FormInputEvent; + keydown: FormInputEvent; + keypress: FormInputEvent; + keyup: FormInputEvent; + mouseover: FormInputEvent; + mouseenter: FormInputEvent; + mouseleave: FormInputEvent; + mousemove: FormInputEvent; + paste: FormInputEvent; + input: FormInputEvent; + wheel: FormInputEvent; +}; + +export { + Root, + // + Root as Input, +}; diff --git a/src/lib/components/ui/input/input.svelte b/src/lib/components/ui/input/input.svelte new file mode 100644 index 0000000..cab1457 --- /dev/null +++ b/src/lib/components/ui/input/input.svelte @@ -0,0 +1,42 @@ + + + diff --git a/src/lib/components/ui/label/index.ts b/src/lib/components/ui/label/index.ts new file mode 100644 index 0000000..8bfca0b --- /dev/null +++ b/src/lib/components/ui/label/index.ts @@ -0,0 +1,7 @@ +import Root from "./label.svelte"; + +export { + Root, + // + Root as Label, +}; diff --git a/src/lib/components/ui/label/label.svelte b/src/lib/components/ui/label/label.svelte new file mode 100644 index 0000000..2a7d479 --- /dev/null +++ b/src/lib/components/ui/label/label.svelte @@ -0,0 +1,21 @@ + + + + + diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 9b776b7..95b05e8 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -3,4 +3,17 @@ let { children } = $props(); -{@render children()} +
+

My App

+
+
+
+ {@render children()} +
+ +
+

© 2024

+
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index cc88df0..e3ee03d 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,2 +1,7 @@ + +

Welcome to SvelteKit

-

Visit svelte.dev/docs/kit to read the documentation

+ +