b~Mc^f&WXkMTIpk82;! zav|aUT+y!^aRzpUaE8=g_s7CTU-IT%yyfYxLP9n1j}1NC{fI^o3Pra;yTt3vf^^rvfNU`RkL7QgGj#XZ zd`WjU1Miz166p_iN3oWSdb*6K46(R7ln=dRvFxFX5?t#w;#Z2FeL`X_nQ}4${Fy{^ z2gOossPk&4_)0amL@Nu?5*gf-Z5Efr(pukyKQlaqhX`UE!mafhOb@+S?JZ|~(_vdd z;}21YD zm7_1lkZ?b<+F osaQ?d@ZZf t4^8bZ;;vtxW!rk!yC4&<8sdQElGF|LHn@GT~up9X1W z-u}SKL*%@Bl`=|1kMrEj`@M%O?gyNry1pxcqB&+6PWG2#WUa2Gx~_&g2y$0M>mOMw z3lo{4w~T82*SQwcL&l@G2D3%PUkcdrf7hbxMnbsyh{a@fje7~OL(=c7>$$&q4s8=y za9`$fSq1!zq(EV4?>6AY#fw-q+}l|Noyer$`t2YN w8 zxx2p+l@1#Ti{bQoErriZ0PJT}z2sjY)KF>#Vo)*4+vk{I^)llPB*>o<1tG-xedQrr zQ1x|j&Y*b0d!v@<-21vsR?R&NvrOZ%W!^jA-=k{b>?=U=M59>p3grFUD67<4ow|j- zv6x*rdsmZfttaFv1~=}jmU)JckMkNde%R(bH eT6ghD9q!;u1gY=igEn2vGW18;>`N`b8vm?!QdXg`S0VIe ze0w~*`|)aHoOnN={tV%z<`t=^P1vo6>Uc%yHC6lb!}H|E`gKUTE6DcKn9#3H^tCA; zaGw~rQ)J`{@2PSv&8{Th^%rEo?{URs4725*b1!KD_1gPO3MNW2$9kc9WzA71t}Un9 zJXDZ*_RX 11q<@%xg_CQf0c?GV%G}yy zZBgxwaJOlbduA%VZJnov9G7WqswjgI+iE7K2CeVzcLJy64Kn4YVc)?Xy|6btSe>GB zj$FCfvo^Ms&JwGZfAmx8oPGz;Sp~6rpcps>+`<_`z(8p42Qv>(Z+mx70ErY~-+lYt zTYk#Bz!<>%c8Uu;cg21B=_wp&zF+#stW@vrc`Baz3Pc!9u#*6bkp>Z%c1*tqsUv z4_qloaBwvL<8A3bPiw3{Se+az6Xk5z*)fAb4+LWJEHm)Y+u~alo$p!jey#?aO1P?h zpu@FP@q2%Ws0V%eGHSo~ikSVo5HTL*RiV&VGzOU}ztvsBmEG4fb)HLXoOT#_(?0F? zr8Ok#G9yVp=@4XUSXQ`bDidE+e}1ka6_2tlxm%&U{gQD)|Ds!z^nrRr8Y@Wc@yP5z zGYJpKnxB;cUWp(jdfqhtmWLNxU#LuLN5(rYlLxo)@iGt2n6C)2S$()DCPI}%x0DWL zrgm@JiNR(3jLvMxGR!J10dVg6rM||Uo}6W=x_r;dY_Lt+ziSFSW?h@=@P^hr1xzRJ zu#DAZtei2!(hm5}PdiwG5>h#roT;k8MX1j7!&A9yW ^ r9%*w@~c_#nHA& )EpjD`O(0VTsO+ zuS}7I*r?saGx(KFIyks8Xx{Kqiu(PLIn}AD?A2)oTh!a7oT^s|Q~t<4qSIAzVz*zE zEHul@N+}eECP)oxPSQd)1?m-}#Ce*{V;hc0yiS`K1oKIpm&iV3mvc<-DDJ7f;S GQ+)P^Tm 8@##Dm@PCL4j=wOk8W9c- z0UZvG`u|;AmX1m4Ae(h=9B5T>3#!Bil&p ! zp|!%%?5|W-rp@O5RE{1fU3EzkG>gBLhCuSw#QjGw2(_Y>SHzCb{dx}jhVOw>PqJDm zQ6?AbcftloANm`Jo_&zCfI$P~kUQ*GLuVOLd|7iUKO+rpVWP%6E?xAJRB3FqTHXl} z$G9ELk~9*v8F~{(o?@CYvWj?x^<>FE=?(2+!ttgFUb5)F)--4 D#9rxN~x3W#{jop7V8)-M0&trN0pp3%c?@ zyY;dP0@s}@e~vh|q$+a=Iq|fz+bHz|v#TQ#6=?)sR|teCrhtB2R`tJg>O+m8)BG+b zjP&;Y#b({2XVmL5<1|dAmcbgek?iZVv$}7KRgcY}MfJD2pLapOKc?AVv1^o=Tt=>n zH*>HkGP`_Rt9Q<_c4pOHp5G=es$=r9tXj2Y=$21l =@Lp6n#EGv`dk-a(YK%F |gc&$%=@QcdH@c0oG-0}iK;O@USyd=bS`x`$oS`K&P?pMsX z5t{Ac43|CO%1Y;R#&hA(v~i~xbNeS5b5AY)8uSdBh}0^eAg<44dq4f)MjUffDI{az zH6KOHhyb`?;ghe8HA>7)K#8y&KD>nls4*9$gvB<7K1p$8#B7H;fX{s+BI;f0`>@_h z?xX!k7d^P6o#$zBRQ9C7WYM(D#`ngUK5f>{IXMOx4wd*pDAm_o&!xz_$qL_bxwg)! z9Y9h )jeH?Xv%U6wmVaM&=u%0|x4 h#1R$6+R~ z )#87wk>UBmQgK0wEP4H(?r4QjoZ5>E+h}6~HViRwI#SaJHE5y;srEyx!6-X!i zum0S&bUyU+n0YXVGs4e};wV!u+$kr@X$m2T1#2n&Y#Iz2Cmb%NBBP`?JPKOn)|pWw zjhr2L{BUia!A=*9|KNe&XjZq1(5omR(%jX``nEXTXl39yp|(pu?eV8tm1XugWwDSM zZPdEl$Dij*!XeA}s3(uj73eQpc49osXeSu2UTmgiG9SlkyD);SK5{swJc?y;*~H8r z+^Kr(E)aD|c)Fu;yY5nw(Bn2{wLU~#TO&mfCbKN5e#afc*m;F%O6JMEE@P{>Yxev& z*K#=oCT-2q+R#U__O{S8KuazTYVUr%=Hh_FBF3+Cvo8Ho(zK3XWyRF7$ZarFtz)qA zroY2rFUEP#a_zVQ<; 8 z)))Wd_L {O(6Js%4vFWeG1M2X(n0Co_InLP2t2F6#Y`vo5 zFuFlpdcd13vp=aMgRVjx#?x8h(h8}dhk20WNJj5k>>Lpu;zGlkMo~v#gnh;*8UR%x z`l)iY^ pW#Q)ejH$AxE(6#E4 45_3TcEDXlz>kABZlzCrN* zGo3 b7 ;j zuNz&fDPU~Jm+wwoK%~$*Me*VZxaS !l=5M^JK5GI{{*Cb@vG&@3+;yl`l5_}-Fail<4*9}-VWc+0EZ%6=?I0` zN;zZ@&8mN F0GF8a^zQX812TVza-80hRb_VAKAHMJAm*R<1yztk2}ZxG=ntgXb| z7^qxv8)R*%abS>ct8=NmSCr`X5(eqSNGU9-n%9QvI=oYDFXhmDgBDHKSsVAvLSgj+ zTzK}NbW)iUE=u@exo4K2PaF4*RWPgoZ1ZiX`_`}$YE`Cve7W^z=brUsi!3MM`EbO* zJM_0WhoeYJc-u}Y5M|nUSJZkSCG${RP&fTiB>f%q?bkHpuqJwdG{oqWjH%|S*m~~< zby@oiD5!F#CQ&COb)?6AUK^a>IJH<8@%#`zqTaZZ{N{A1$>p>lCHK1lWN1}pj2x;= zTJt@-k(zQy%&@-EhVnw0y0x7BDZTH{ZY?WIS$6hwLU0G>>5#@~P3^gNZGx^aj?_|y zf_6%s1@_#*f^b}}3&YGw3a1pACIqg$h@wns+(qJ3?N1JJyFsj~qMf#B8pnk{GgwQH zim-jMpvA_{mM%M>f17w*lagg?rTK1o(K{(n-feZP4@=sE<=C0Ymb%gl%V^wzk`se9 zrNrA~OTVc{qqk=j nOs^@c#PP;F~T zmz&sCMwKiZqtf1*M%O{%1_c3NT051m@lRmRghQKt;MoYmAtw5NRuk7x@t4@Z1c** z$51(SGLeMt8-q8ZERYJku&G1;1@sV1FKyy!&SLNd!XY-f9{GuX?3^Zv`y1&m`Mh9B z?QkCXAFtzW3d}YorgQ +1^RKg%+oM&V$pu0;Nu)KG+K8@P zv1tPiBDVMHW?4U!b$cUp+ASv>&MorZ>#mWyr`MchD`~|ohm^ y_#9LuhKzcRwKoWiOV8hafDjbZ0Gyex z_7%15BGkd3Pv~-{29FoC9_$xhRLj%Zqffeqc8)VxGmn;xdfh6| 6Np=<$26ex=Q ;&fI-aI z=U=F;$9!T#PUhJq;cN#_6HxO#UfuOULRBMjknwG%R#*psg5`d;U{)})jk;p}TL-IB zm_TS7z|#4JqvV{55UQ3htM<<3gPTZsJBf35|Bl>Sy*9kjA^+3Hw%wBQp`F6FdUbfm z#9uJb8`@5!RZ~LRq~B&rgmw6~<^GK hAHGiB>lc~89(w{A-srYm-Opz(-j)&S2r{4d*WmKKnjo?&>X3+$ZT_nj_hd5I z_9_XluE=YHc&S IvdPyf^eA;1QNv9NvZ4eoTk2R3SVb z37+X>8GEtPuZ3^?` Y*gf;Ze#*$Z@h`;81bvPai zu}c|6U;LEBS=5P2J=QhyL)+Umb5RF+7GD{fhVy*01r=fW+tN%XmP(E?z(Zh}LNU_P zFQI&u#Y3fK4Ha*+NnOeOGWi{FeIw2p3#Ljj29NO|hT5S2P@-tiI@M2lHfv7|o!G{h zx`nQlgg`cp3%ZM0k=wM$5StgOfKE(u)Ix&g#{T#)C(oawH$o&$^5-v(MDD89Zj5|F z>R!CqWie4iR{a&z%8Oi}k6dqO;Afp>tD_@{iCqPeo*4sFA J_Cw5HSjVaZjt!>;_gWt#;O)DJ;JRb4ij{;?vw)cc?W+u28y+0ggIqM%RqdUX)4g;efO?-N7V=y6 z{@VE-v~^FJbESd?RqLay>IVc~8RS0GIe2HQ08<`MBBy(uo>hdjg#JAEUt}+BV;6c6 z?HA)ficjvBw*ivF{hT-1_l{r5p?uHZv;lbgz}Mref_vDRlB{#vu5*vT @RtYg{AW+6dwnu!B7pP*F8DnjM1~ylbBt2v0T^ZY ze9ZU!W(- @)e#uz;pJKwu1 zcST$=qjjsmn0S%yE95_8OMZeVll#!^(#H`-JnSU=*j`@IjtRo&k~HpYc1LhJ^nv z;9wv?I}_@BkFDqvdX+6>{12fqwu0wzG-x6p^z_0^1)?}+OEL9#*%%X{T6JUD^7q1J z*WIt734XB2g&6k}Lp$GR!l {MCe9t|WE%^Y> z9{#J!)WqyB4+&_{mcJdDFUR*FiE0qlkZ@cM2ZRxdJ2p-8Z2Wh5g+(5y$AGD0_u!+8 z&P0Q+537Ly)xRsfnkbxjMJe~61^V{V#l2
unBeIVC3F2w`FG>K;Z9sAK ze<+O} cL=Sp&A zu*-VeA|)u4Pm!$>!*X&daeH6q;iV>ct`Y;#h^a0g=2 Y#wc0wx0IJ 0yE{2SZ#PaV(&xHsFVl1REZQN{c2cZprh}yUN@Fsfy;?fX@~@Dyb{= z&O63=gg(~>`6qFd02TDIR77==GUE)Ce~cT{xy4ns*lj-#svi-z15CcV zFNIgJ^sI^7D6sQLb?=N>K8?YZ)9Z9olpM?nyjcF0SC^8{;8Sn&=T<0rTg|KcZTRFf zz5mpksyEc~(lNIV=ZQ`Z(Qaz7@>O-78H=oIgYZ>z^_`)rBL)-Umes}ty5y6k2T26U zNN14m71q({x6s;wV2#2Qmtb*cS1!_lJ>qU#_4RV`olMb0JHz4vvx>X6%wr-00SluE zGmmvA4XqTV!le|f+u7VN(Tl9upTkSfnRZ#bwB=r_a(vuE)^Hk*Xx`yVp$R4WO`&;e zpV)@58EX(*Bc1oeZ$y?K6#>AGJt11Ny6K$F#8^1k6LaKbefM5XUV1t$KC9nA%;k@V zP5`qRPxCW2eQ^s1Bfj$RKv->im@4_SJ`j3q7b)x@Mp0ZocV^GKN}NMrJ|aQkI-|a& zc8WXXYx?||xUl^=Y|^1TM{v(F5h=GsQf?|h+9r1y(VIibI=$$vvdAfVtOa^i>-@pB zr#CCWj-~RWhX-+3AXa{j71!axq`xAS=0T0;m>7ZM21G=6_|??v69cMe&ju}g3V=0Z z`p{v>If+@=lZRIcyTy$bQ(eQ^Ro;@=3{)h!gcw~G_Rj2kDX{9atcTar49O6?#mX7Q zUmv>G>d}m?;d5u>kVj!xyKss{*wYUvl(%)*Hv_$+KM8x _a?7kj zs><>9(*P=DIoV8IjZvJc-VSUym1+A_WtP=>j7XSQw9jos#YEcK$bVA9cITbOvSI_^ zc7!;&o^e$;UTe^tmA30=S`k%Vwmd(&`b0WLy8^zgh@Z38qXa fTYsm%;_Z2nfAD!IdObdAaTDFM z5l>NgA87<7)|`jI63J5MIP9nx(}l2^+1EhK%3ELfxY0soF0;zFA9UAi71eZn1Lg4U z5`!9mRW5jv-VZ?)T1H<%qtqsfL|^dalHJ2UY4rL+0iN-6!p|qwH)>akNl1K@s&O{T z@oy((@@S={zsjjk$c@HkBOHr{*8#NRM{Q(|E}^TRF5@(LhiI?&Y=0E~FE?iYWlq!X zMH_W!sOx{ZNX-B7?z?WpC32+g@V!lBI{RkWB|fom$fZyuu 4LbVdyIwSV`>fwRjQIb7>?!-2JH zPpr^;uN=uj3@wm}7X06DEK4U4){7d;jtw#HYiVfygk7Gk9aqZBtznl{nxi|9#O%lB z^tTW3-;;nQuE>9qs)!k7eDiX~56ZCGo+&&Ve}V2^IXdqA&`+Z`^|07C|lm*@0Nr8RDi1}9v z2)w>bSn^UF=$d(6Ac_1cdD0cB`rXtaN< 1L z3#)=+0#+Qd3T>9Q3eL@=xn$~^L1Ntkc?DAri5E4m)(2O$hWOSh8P5{FmY!25#$|e* zEVJ54W@cS1A^263>fZUs$|y0>I26{T^)MleaGB$zqj-aZ5?HF-Vp)jWT~$WT24!Rd zX-L}uJ}d?8p_6MCJw)^8_vkV;zb&Tp`E!F^_4awwdK3h^L2C%rj>ycprbK9yOnbZb zgbqpFQ|8$1`}R4IKgEh }upz+mzD7j&NN6)qp$wjM)#uHyRyr-o9iJoZ^z%D8gfuGa_j1Nce zpg5vaV9)uGphJ~1X zO^@&9#6R0yGQ7kxz+cS2RgXfh#!b|^Glox>V%E40x?O;)V~jdrY9H1*%PWN6$2M&~ zN$e*$+aI2U#G>%wrag0V=AFIX;n%NRpNPCgebYEUZ$mq5N5jj_Q!@FGux5MmyKau$ zS8GCjmo{r%-HdrUZ9BR)PHcjvp2)9U4+8g%G_al;zAQ*4N3XQBG}%-op>*+$yg7F> z9aq}g<5L=*vP!+j*p>q@t$+cs*9@rqDBwwKkH14WP#G#LR`DVK{{7B}fdEe>-Do$a z9mxTSP#qk8+-90C68pz#hAw=2v>mzu!+{tY8_DN)JKO`dH1eHkJ2aszp)u5V)aQ$& z>oIPhchm=nsMV8I1jy|PcOF8=aSb9`aP3j;F?QBru6&5?AGzLuM0Ne$gm>6?P v9GUM|61xmWpj$53p@=QNKI8goWjvDfp;BKf6F7}^@vt|_m zTo@{5oD`ZabbA^jY#4Q6so&A}J_E-DZ-j$dUR{#HT)~ 3B!04CbHoxmatlb$njrojm=?LT34dZv20-LIAvER|33x%725| Z8NJ3yPw5t6!Jy%oC1T&L;g4i$APL$34vN(wgDHcr=}bKD=Qwf=n-; zq`PTHS^x?Ie|${W{h`5;Ty%sSLFh^DfW9PH%Wr7d5!T4{y%NGAx?LyYb?k4XG}; zcP%mdeA2B|emK5(%{K55mI=sJ2Qoxw2Wfkg?i4El>5j%dEpDy-H|qj-I{&)$-nln; z7fCr_TYpJ&lpYANBD|q(>2k|%1eEr^)T 48W+i?JzDhu;Vz_*9*rXj z>QFZ2bj^wY8DNc9;tS2hM>;T1017GZcE2t?m?uk1^hJ(};=}P`htu`i61I;sDX1Pz z6jP$!D zjD;u68zIr@O`@jUu2B)-`=iyT!Pg7TZ;xP8=}Ea7 MfnBR@L8tYX%bfaW>2Z*Km0m$@=+LXjT{VXfV)BLBt;ZnS`L1w* cPXLiol;awuCSTju g3bSu6$O-{>`*q39)Pp!k{$a>QbPgCGT+qS1fz3b{ z^n-Zkv Y4V57z9A{j(}kS&M5+Ia%_oUUiAo1NR~RG%z;mowFI}c$d7oi04T}% zLO*k`VO(Eo2>*kXhdZxpQUs>yRq*K9KT%y#VNw4JDu6=dKTs|BPtq}O 1DLUlr7`gpnX z0t$x;rhCzS+wQ`?lbYxPV@XVOWk-okbREh`PIOJn!P U$S;cS z<#W-AF3Rr7lYUTcHjOFJOyMIS4!9h6yA3YCgbnI=plejf6Ld)O6-3yi+VXt$9O|2m zdm;Slxz!ht(=%Zgt`))Y$}7ls9Et4B1>37 |$4bg>teUl&}Uc KUc4`G-y5g#jv1^q!(m33Zr?EW{3>Pa2h+&cl{G@Zw`2r5qI0Ea44d;&x8JT;&s2 z(a$zg;h89r()r1ZIp`!DDc5c jL-!|YmN5M3$Il-s(KRfRle?}%TgWM_4?nvj zv~xE2^G%&sh4K$1U1w@oT=bfHR|JOEzXxtOdXOIMSf@m^Yst5($(!Y8)W}t(%Q;*& zjSOzQDsG2oh1~J%PTF2Jbq%iGyKt{>ww=Qg>D^A-fGkrsJZ #Z#hwUW6%v z>?9?vjz1aqt9(g&gVR}r!cTMetMj{N)1lddD#g57d=GqQ6H6B6P5Q3KoLoA^m8*PF zlS>xXP4bTQ&THxU^P6Oyr)97*^X}lNfkilb7#oa@N8&THe#qX)V2cep46Lb%OQd zZ`r`3QQX-I8?b0$TLl{c^H4m$DFEv_Zs1V>O~IP8 dk+)FuGD-9hVJ5CG2 z3X}PHl0SCn3VX;NnV_v%K>yL_zq)&6Rs~B)FzFkpnmVlgA~B+OHj%-{#j)l3gXx23 z*{<$FOWQ 0$&m>}3^?O)MLW{_RDMp)Rz{fOAV4ToBsFKELWnwwKB+%VlrTZ6> z)2UTIpk|6=nBBnO)6%kmN_OR#+L`0S?gGz`cM#7E-r#odw5agUlY5OUzbEGqtB+97 z(b~V#RT6xX&a@5OxQEENT^%>1d88IR4i4C+nh8E=Yc^>*3OfJIRC$&QpKO{VUAQOd z?sBs6dT-}-RiE|Ex;xG+$j1BlpKKM3TW6qr71f6ZwhEy9iB#hTp{9{iX%;A55EgF0I`8v4Pl zd8z}WltG8Q3!Z)L*4>$x5yhra`q#bK`N0QUD|yzw^=Zf@7LC>4+|h^}yEBczo&-yU z`s-6D+jGAwe 0C=x7sp9=L)8hfz$OO^n%c=a1 zDu`@*ultxTWYH#sIR`*Ew6&Hnm~GaFb8E1|Ar22PZEW{{HM}>fQeVusET+6aJ#+7@ zL?q;Fe?pcx14J_x);1_SOAGv^>uQuwB2>u0^K0KxEv*5{vK0T_GbJcLB5U2=BhzB| z7{O#5j8>F+jQ@e$xihhH-&8h48m;@5MLI^MsX_dAGP~R1vGW6eG^>aG6Uc*6oX_CX znQ$8e+D)fR#-=$!XWg|&Uv`PppQi*y=WiZ;{4&ZAW9v@27{&l?(?+b<)1Oj5#E{D< zQt)Tw{PdF=*V!Xm_CvmMNmgiZ!jW5~lpCL*lO1*#!R~8a#|!@BMLEZ;N(noX?&xfh zeULlh?X;n|S8GA^S`%AaO#QwF@G3>Sn%FYvi=Jm=ECa{@?JQW#qs2TXUKJXf^OXXQ z v-P~=NQ)58AWv!zXb86k-P^h=k$XQbV3F|T{#eR2|oleZn$I2U-n-SKvB zOtf`uWrvTQk+#M&$cIx7KyW}+N;5hJoftN6!mC{9vR^i75{nf61plb>XJkkr{nWAf zM@EH-ciwAO@={6e@*&4!Yf?)g7L=0%b(oR#ab3qI=QZHW`HzGR15$IFPW7KEGxiv_ zm9f8 K#sLQt&$+H{JnhUbqqms%#4K`)FFM+0U5< z*S*?$?+;~vjs8uC4 *sN$z@@iX-&Foe)$5i!Z@j+3z-6~= zi&Uem7n@gC!Ic_!03-FL7J~8fRq3(Y^7zC-np{dLQDPg7yW)N3r*aQ1zIZvBQ#s>f zXAb6V1D`bZpJs0xM(1Qx30XiKt~`vw8SGw%b_^Kwv!4>4f)hA}t 5TH#CR}Y+7llAIjB)U07K| z+JvR^z#~#P)4_K?fo`|bb3^2=smXHwUB9elASXx(b@vYl^N{&d^jzS97?eOnc*+kl z0kj``DqEW-H#Ip0P (Qg zZPUlWR{W_c7BbZm71epIU=!R%GoKXQkDcD+h3<&hk=&W|%8>NZBIlFbDlsb--RuJu ziC6R<6L|=0eGlzdHPF6i&cr8?R2TE6!rhwwj(yY#$M?eUEw18PEy9Tev7gcaC>AJt zf^gt1>aB# 4@kDhDYNp+58$lIDcI@Un+eUonA2PWhF&>d@8cEKfH{o~Jk zy2n(Gw5iz>cGj>Ta@ jAV!lfi>@T} zUH9@ID?6YUl6)b;2)oQ-H%JZc96VAczrP)pY+9~nME?loA?s C6jE zCU2Ch53yhi+wo{D14f}oFWBYf%^pwTaLbP@DF0qzu}am04sDV>6yst0<3}4IyX+7F z6U==I2&+2iFxJ3FG_swdML|S=-F(dZ(yd|>JIpqp7a+GiM_zz+sB$hYJaA%7+m$(O zZ-}{}u*QzwYL 4kiIR;nVY|YMYnl7xv7CY#@G-+^t_lw-DPfN-@cjT^iUm-KBN$EU8 zRi%OQoT>|JzlB{xSA32Al{YcouFd-{tnK0c$GPlyZp +-WucTA` zmv%mpI^tgZF^8Ml9wZk1RDbF}exzgywJjBJb+jO~5NCSir(Wuo4YOqwXs*2xn+txk zXFAX_IMD3(d~eM}F1^N% KHoFRU{l_@uLq%jnD#X1_6~|c(czL z9M;3ff%+%>xLTwc#0txVOAob;gG9xAAZjb7tH^Hr1IX?#pYr F-W({$tfDtoo_APzi&-y)BSwU*CWi-UYRm`?HaAHflHFoBJnZE zOoGY$_Z{h$uIbvwL(SafvD>4MGwS0B^{;gz+8Nh?qia`}KMxon{QImL%tv#^n?d)h8;y% z4ZnRbqJ%q>hOi3*W#!1Ky#yyIJvpK%^%YKma2@yu#B3d52b67bS9s?=*I7iYFTuN7 zHWJV!L+{)0wQe>9kV Rf@y374GJ*0mvs~Y5T!xs1gh8x_K43echT-S+#AYFEV4ZUgl z3uCU%IeJh8N66^-OXcN?oI@<_@z}pglfXFwt1o}X%kpQ2j>)VY0 zh+fEx1KU2ikg#rBVl~L-rW*ZJTo=9r$;%TY235}k@XS9B!B>lT>Nk4d$q0blohaOJ zmuNT|57pd_^+rgEcTFs(%dcMZ)<7R;-FK SLZY2 #Gw!bU^riOOnQp5Z zgRbHiArv=*G)^$?tu1dBSSK6}gr9IAlm~gi92Tq^9fk*y|5Ih@zmvRpL;z9JO?rQM z(FuQX4ZIq8TEqCK+K%pS{c&^tUtN(9@_{GUZ!I?;|1nJ3esQ51@?0rsjVS>Xu1tdz zpWj`ab6K3zoB$OrJ1QHp(LnN>-M2@;cNL)Q&y;Ys_#jFlHVWO)Wot?yBH!j{Fv#@A z7JdngJ~iFbo&^Tc-Bc4-4`Y1Xl-cYio$b#4E-V}YX1h?ofK-Y@!|gi$6#cpwbAvAB z0o4B-(%V17SBHYD318A 69yhk!(J2PI_lWuk zplqU-c7$R0seU$uYVqyo>l{FRO_#y;XQa($vT0?Q27+IHhwfs#W!noBzI}NTUSYcz zc-Mi=t3U311pM}sZF8E`w>cX;9R-;Tt-@9&v1J1p5InjvMyu$8RpCHdo83uAK+Xz~ zq^>O-sJa8ddc%fYO&UGS+q2&Lbod48aM?jk2I%qh1yB1yOpKx1*8sAM^PQJ+5olek zMgT1GZ3kfg$bhb?KMGbkb%*{u0;*PEuS>XDxk0NWphe$3na#aJq(Wq2b@d!T!lh6* z_mJZSghdL q6zeKsS3Y5jw_UCx*ZsMy-L+fW5GgZW@+Ayp1gfo63aoChf60>&8SOX=_7_Y>M6S z2iDB7!gb;8lf$`5-L^Q{rxqu)l&PJ$Qr)%}<0_y3%g~+w+fXVE;S`&LxhUPW;X>IK zC&Co@{kbzrhg-*EQ`U` lK?iXV=-l+`E1u+BIzQ z3;FT;;no|lZd;}-puZ40S=hZbC)IL8&HC~&1rjSuxi$Cyv~u53O=S(cz=hDebU~Vk zH0eqaAruh>q!*E 61fJwZScU zJS#t7^FLtC75yli>bJA)xGW#CTlu-5s19_9vy1?A?$!Lf@EX%msml9n^1{%O4?bU{ zQ6d6caF^O+T1h2ACM$2!!$ q;{7HC%mxB#Ce7 zMIwve$^6ugc0JT)mH5QMCZ66jM#W`^DWkazzxVwMX{yb$bu-J`veusiKkcm>z{W~! z;wHP1T~S8lI5&miwho^UFCZ5PRhZYeBaMF8HKZ#FWTf+3vsl5@hBxCe3)VM879|`= z56{V+XpU@fA0zBG{50aI02dVuGYD9Y39p?iZg6+RcChKCvhSqK$WEJ#*c%t_*{ef+ zgc9t&^nza47S;7s$CQ~Sf`)Zys#{p5(Q3!}MAn``_e;JSAgSJiKQT#g!oK)yMS8`` ziW8Jnifo+9zGH6si|eN)QulqYj(lmXAfV);6-Wo894}vYqb*IJp85$+PoMA4)w#vR zB-pui$#5Ukc04)94qLo&96-VesvxE{KhVh8I`ERz@*iYMTQYq_D2+_L*d%Vgx~GEB zF`mpX3}+U)1~Yy-!mgwgd!senVC+jOWXC~Oh~YA1Ovyegy2c>WUwVvH@j&t~4ut z$cM6&e+yrVT^IR{Eznx*A4-v1=|htJGk4-Xke@eU(&%qCY_b|P35D$UQ?+t?jw0zu z8VFw?d+t1?_>Jks8%ndbg`=F8pF|vMWy~!0z-KgchnO&Ra=FSp^HWQ?i|4o8)KF21 z6Gl1fjBhg9GIU6lfbSR#gu#+U2ze*lE9nlYi@&LLt}m|hI@=5H(_r3v8KbcnPjuOn zbd$Os8}c(30(oP$f487Wa4X+v_$Or3IB8g2T+MDeY0EwM;d2P&RbgOP?_(t550R&s zms_O`;lAz!=UgS<(PGGE_Eqj=o8$g?uYUAaJY`VVwEh150fZGsy0u23$5`nqCCPG4 zu@$ze>0a;)xyGV3spI>h6LCTMfu%E{xnI*oEi8;S_dg&zRUf7oCkm}gX_ojk4K^Fy zR4_A3Dg7EOR!RQUaZW-{(d_MGH~ItGotu1(2>+63mdu8Do$p3Wj#ocq*O`kIcC5%- z6{S`aykI`JF#n%EBk2Hkld0+X2(~`ths$7ouA&uD1Y+~qD2LnN8p;&@6=AE}jBvRV zd9*dALok&-6vHo3(MD|hZzeBzSmH#XuP@`1ln%L$&uXmMONriwUlfTd2o%oe1HFF! zGc?*zNxww8T<&=bL#N8ESppqIj}xbKJj$+#?Ly4`uds|qfqn#yEB(##^mf#p9qbZq zV^QVw3!G9jv1n63W)S#0>m) @)TVsYb2^H}+$?1&7$TEde~8$F0@03uRKuQC_eUl|jkw_#jxJ(=?XNu}ezuf8!f} zwG;2kdrwqG%70fGX*zMiw?FovJ}H9swaj9f1yl?M>> $dwdaWS)!*Z5yy%^l43-u7es8y^$u`q!s)PBdRr8siuu;s#P>^%)JVcN&h4c0b| zgXYV$hg{-!#D%ETLYjJ+h90Wtwirhhj4+clD5o0a@3ZAy_9ZW-aw4<2rOVoD#ZvOH zwD<>i5uNz !e3=cRf=(Fng~iS+aWu)t*2f_pcPd)>Skw9(=t*Xg6L{4xqHeO9!$m5dNqvtn zWnMwA*B?3XI{AONpz){7Kzqnij*F`MH5t_?pZg?wB)%GUv-N#w5MrIz zcn8#5-@m@UotvsZU_y=Ih;>6vl#;r~D~?@d)2%3SaqnvTnI#?Hrdb3jE%76!F&Pt? zk|f}J_8!GWcjw3I=%?NkjZX1#VcdlekmR|2$iAp*_J%a6QDd=!G&LbVKx9tVkX!EY zYr$`nJ>A;x-n=4NT9tpF2N;1ZGzq9DX{TsY6cjC^T64rGpn4eiG5aF(m=c|tZ=oFX z^FkG` x=#Dbqz@I z8q-PpZtLjO f2AT2`mo56lqAc!AVojUeb#=e33iHE@<8DVw59A67JlZ|nW0=3! z4(E4Q3uZtow+k{<@hg|Hbv)u1Y9uKqEobp!u_XsggdE>Y*a2O;TO^N4`t?_UsW6YU zQK_dvTby79je0J$0U$gQ1C4?i(UR?JIYOC{W6=kO?aJ*t3?AzB#DLA<1t>;fd*O=R z$%=7++`KoigB(AB*h^+!CX$|)J5{G#nxl+-o~Au4Qk$Vn#WF_zc{QaMXdW8LqY3~D z^Y%w<`gl59>Uj?aGd^A9vr!(jQ+pkQp88aH0MY!S6muPeBVQvWTDskzkB&ct2JP2g z#_O(uKRcfY=n-ALf&dkpdP1bcjScnd)M(juZH6k|Qq}XS^^{)7yV0 yXU1T?}PlWBMwF z&pHwdeHv2t4k5S-JrXLtq12{x{QTWYZ&ZjHEZXDbrj5%F >vjk&{O~v^x$d_h@8}OtX#v#6eDOfM-5gRIa#Ka b*xK;t*H)?e*#1)o6Ca%9MTb~m(?g=g2NR6{$LM25NZsN1R0W( z#s2lY>qDa)t1f`SusLG>wQN6P$329S835MuU5`v7uznzD9k68s;%`pDqa6Q>C ^%^)1PB;yAfMYo`~^)8*nf@e#u4-ya*}p; z6WA6dp$6a&_%ZeK6)=E$0RAEdfCRm2(mfM0tO%eSz*En#H$l)G07QrqVzE|aSSw%y z#8}L)p+%@GtNxiF)w;ujru?N=a5JyGxs{J;cY8^caLSOg$Tl+UM<4>?kP}iD3d~SP z1nft9n#`8d+mI;SYyz#jhWq1wRQa4xKsKpt!)`ui?eb>|H`u zom&Nr%|3L4`WM&1WsXE)BSVz|w}Ppfdxky)kIWu|O#=x0{Wp$iKu0vd>p=Bs{$-p# zqe5keJY)w>6bx>TV@Qs3H4X44GXa7~diGU%U?`zK4S?B#!}AE997H^p1_TWU4j7D3 zhem}q-T**J9wNJOM8!rFc)sBo_3cBCKY2{h#@{21+w}PjGG^*1fVWHe_$xIW)-GxQ zhz$T3;WC3k$YPpZ6JRW1?kc|~FKYPCdxSmk|9XfTUzB-3g@Jwq+wM1b2-)r*xiZ`C zD|txU?nB+L0ryqYNZ|+@>fahY5TSoSd7u TBaRkIxBfgCZwKTuQ$0oj${AOXrF(b;a|OtD#MqB_zIwr!U) z1o!NP17C{c=i6k@<+?doT0 Q*z_!Hw%VqI=hY7Gp(u=Jn9GEcaQxnez2s~ za)oasWC@q)l^0sr4dsYcZid;`Vmk7t-{p 6^;AsTbem{!v+}F-ogQX&ROg)jmj9XjrJF}g z6=>u>$_1ZM=C$9@Iljl?0WaQqVb*q3iuS8RZu)N44w{UuaCjsaZ*h+vC|cG{A|{Tu zOcxqTY85Tw_P<0=vVBox^W7KgoCHWT+!oIj^Zh8=%1;!j<7vb- 7;-I)B2l=vL$kDBqiH(&gbAnLFfb#AadR=Xp1&9;+9%Fbc;_WQk< zx${IT(eXX+FI)TR;$1Vee$G4U#k_?+!f&jhKRdR=GYbdPFJ}a2_&Ka!xnfaP=aZUR zGC1Oz(dn>WA!|`kGycnH%=iN0;+NDop&b8#IDm&vjK&_>r@y4eZ_4pE;u!o#Yxu7K zwnML=;V}^W>u!giqQ0BP?e )N2Rsu6xj z0NM)h{VJf5kDw !R?vvuzK+5 ?g-1*D)|Z8tkH0#YAsiKdi+Lm9 zJ9E$;C+CWt9S?Mweyw?2uw=FfRY2$P+ms&fVZKNd(B85jpmH=Dg#+D&6XV6YHxI`9 zc<^h-s2%#Bv>`w1)*M4*J*-eIy=6QQPwZmX^7c0g!uW)x54slx=kQzZEGxPcXCv=B zp9Q}J#T;ddjwl^u+jt>lcc8tyIsQCaDF9CDqCeJ~sk9+rW*6i2rkjrYXQONBORasn z<6)n!D=Z~1Xx{Dp8YfyiUsm!~2YY{gd1;CB=H krwT z5(k}Gf#$XwKy%xLe=XPYd|>DDz|mgZ8RFrd^tw-%Q;Oj$>T$FIU3znxipiH-@0eBd zxQTDAm596=RUE&Ho_GUh)p!}P*0$U55hKbO=@fXkTk$vrL2&%Kze92V@}sB)2)l%s zsZa(N&sV3gPH%x6Pp$qgbEdul>9#K}NfyX}u +>0R?Xv9^E5x%CU-w?jt330not?6Hu=iq{NP=~wxE1G+GRqXJzu^ZL zy;_n5fh(7ABkGx-ri4Gw`0*5QXnSv6%aprtlWL_xN$=G=W@Q1Lq}!uLO}ynFR?0k& za&;;l$GB>9T@|(Rb7ijYwG33|mR}uP!H}|9x>WCbhgreB_@Bq!!wp%&TXPJ1>swYK zmMg9=FrYI1))FdZYWOBMce3_XZTn=^+=D;-`CG@>NRvdJ_h%)$9(bzWl SBEHa84{9t9oy8vJYQ2J5ni@v6hss&n`8E$B~F=v zQRiL(vx<`Z%$f85I;;E~Ai#{uGwzNC=2HX4%*mZ`VVC|2-8XyQm(AzZyd}wcr-$7i zn3p)E2%I|(($e;*BqvrF7c*%HG(jaHt<5#B_;Z;vftu REH)*qkwf66x0pnzMgwEnsFL++BdM)sc$b^TULM}`hjqRe} z*5F%?BKNzZZd=G#lC1CT(jp&yDEbLEL-az#fl(@tadOWZ= zsNr;dZq|+(=BcM~hO}+8>eWx}7LPJq z#r3KR371D_x~ypJrKj;G&K`C2b=TN(wlo8%Y2@t9`$fWxdMfia4M=*-9>Tk@kT)Yw zc5Ws>g;lu*n%`2uVf=oEyyR=bVv4OQqSocMLI#y;S1Xo_&eHlb*p_R5jr$A^ThHf| zWom19L_z3PdEee&Oa^AYQU}y%h2&IG-~NCgr+$6ll95HppXfMTUq{_-cu`cZn#HT# z$i`0VS`)nn9LVQkL%*p_0B`W?W2rr5!dep z7zQf)Ex1fc6^(a|`?kIj`S6OlDeJM8gh9ZQ@ZsiFXYT9r9uy5VnsWDZ>O9g{&IvqD zpX))+w5Hn` {w#6u*u^U z&bJE=sP(mph{2$LZz~5T^q-ea)ssJ`y37B4*OT`0- uR)C%k zJYDqoPoNl3cm3aw?(aZn$mzJ#O>)2EHbXfX{-1Ft&vrWS^k?Poz}(PivwsWxKR-E7 l=bb)F{*yOr{%?7Ioip{dNr4h@;QR{wWCQ2f50)pl{s&MYn_B literal 0 HcmV?d00001 diff --git a/src/page/Auth/hook/useStep.ts b/src/page/Auth/hook/useStep.ts index 7cb7502f..83c8fc57 100644 --- a/src/page/Auth/hook/useStep.ts +++ b/src/page/Auth/hook/useStep.ts @@ -13,10 +13,16 @@ export const useStep = (type: Type) => { const target = type === 'find' ? findPassword : register; const [index, setIndex] = useState(0); const [isComplete, setIsComplete] = useState (false); + const [isStepComplete, setIsStepComplete] = useState (false); const navigate = useNavigate(); const nextStep = () => { - if (index + 1 < target.length) setIndex((prev) => prev + 1); + if (isStepComplete && index + 1 < target.length) { + setIndex((prev) => prev + 1); + setIsStepComplete(false); + } else if (isStepComplete && index + 1 === target.length) { + setIsComplete(true); + } }; const previousStep = () => { @@ -25,10 +31,17 @@ export const useStep = (type: Type) => { }; const currentStep = target[index]; - const totalStep = target.length; return { - nextStep, previousStep, currentStep, index, totalStep, isComplete, setIsComplete, + nextStep, + previousStep, + currentStep, + index, + totalStep, + isComplete, + setIsComplete, + isStepComplete, + setIsStepComplete, }; }; From 893a5278b5ae6db5e0d84cc5d8b8bd7f4e5927de Mon Sep 17 00:00:00 2001 From: chaeseungyun Date: Wed, 5 Jun 2024 15:55:11 +0900 Subject: [PATCH 03/14] =?UTF-8?q?feat:=20=EB=B9=84=EB=B0=80=EB=B2=88?= =?UTF-8?q?=ED=98=B8=20=EC=B0=BE=EA=B8=B0=20=EC=B4=88=EA=B8=B0=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EA=B5=AC=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FindPassword/Verify/index.module.scss | 36 ++++++ src/page/Auth/FindPassword/Verify/index.tsx | 115 ++++++++++++++++++ src/page/Auth/FindPassword/index.tsx | 24 ++++ 3 files changed, 175 insertions(+) create mode 100644 src/page/Auth/FindPassword/Verify/index.module.scss create mode 100644 src/page/Auth/FindPassword/Verify/index.tsx create mode 100644 src/page/Auth/FindPassword/index.tsx diff --git a/src/page/Auth/FindPassword/Verify/index.module.scss b/src/page/Auth/FindPassword/Verify/index.module.scss new file mode 100644 index 00000000..c9650ca2 --- /dev/null +++ b/src/page/Auth/FindPassword/Verify/index.module.scss @@ -0,0 +1,36 @@ +.container { + height: calc(100vh - 30vh); +} + +.section { + display: flex; + flex-direction: column; + justify-content: center; + gap: 10px; + margin-top: 25px; +} + +.title { + font-weight: bold; +} + +.input { + background-color: #f5f5f5; + border-radius: 4px; + border: none; + height: 50px; + padding: 2px 10px; + box-sizing: border-box; +} + +.button { + background-color: #eeeeee; + border: 4px; + height: 50px; + width: 40%; +} + +.error { + color: #f7941e; + font-size: 10px; +} \ No newline at end of file diff --git a/src/page/Auth/FindPassword/Verify/index.tsx b/src/page/Auth/FindPassword/Verify/index.tsx new file mode 100644 index 00000000..78b56a33 --- /dev/null +++ b/src/page/Auth/FindPassword/Verify/index.tsx @@ -0,0 +1,115 @@ +import { isKoinError } from '@bcsdlab/koin'; +import { useMutation } from '@tanstack/react-query'; +import { sendVerifyCode, verifyCode } from 'api/auth'; +import { useState } from 'react'; +import { + useFormContext, UseFormGetValues, UseFormSetError, +} from 'react-hook-form'; +import styles from './index.module.scss'; + +// 코드 발송 및 에러 처리 +const code = ( + getValues: UseFormGetValues , + setError: UseFormSetError , + setIsSent: React.Dispatch >, +) => { + sendVerifyCode(getValues('phone_number')) + .then(() => setIsSent(true)) + .catch((e) => { + if (isKoinError(e)) { + setError('phone_number', { type: 'custom', message: e.message }); + } + }); +}; + +const useCheckCode = () => { + const mutate = useMutation({ + mutationFn: ({ + phone_number, + certification_code, + }: { phone_number: string, certification_code: string }) => verifyCode({ + phone_number, + certification_code, + }), + onError: () => { + // + }, + }); + + return mutate; +}; + +interface Verify { + phone_number: string; + certification_code: string; +} + +export default function Verify() { + const method = useFormContext (); + const { + register, getValues, setError, formState: { errors }, + } = method; + const [isSent, setIsSent] = useState(false); + const [id, setId] = useState (null); + const mutate = useCheckCode(); + console.log(mutate); + + // 디바운싱 + const debounce = () => { + if (id) clearTimeout(id); + const timeId = setTimeout(() => code(getValues, setError, setIsSent), 200); + setId(timeId); + }; + + const sendCode = () => { + if (getValues('phone_number').length === 0) { + setError('phone_number', { type: 'custom', message: '필수 입력 항목입니다.' }); + return; + } + debounce(); + }; + + return ( + + ); +} diff --git a/src/page/Auth/FindPassword/index.tsx b/src/page/Auth/FindPassword/index.tsx new file mode 100644 index 00000000..e844813f --- /dev/null +++ b/src/page/Auth/FindPassword/index.tsx @@ -0,0 +1,24 @@ +import { useOutletContext } from 'react-router-dom'; +// eslint-disable-next-line +import Verify from './Verify'; + +export interface OutletProps { + nextStep: () => void; + previousStep: () => void; + currentStep: string; + index: number; + totalStep: number; + isComplete: boolean; + setIsComplete: React.Dispatch >; +} + +export default function FindPassword() { + const steps: OutletProps = useOutletContext(); + const { index } = steps; + return ( + <> + {index === 0 && } + {index === 1 && 비밀번호 변경} + > + ); +} From bd1fab4381caf9e8b2909fe0bfe8dcae71c6657d Mon Sep 17 00:00:00 2001 From: chaeseungyunDate: Wed, 5 Jun 2024 15:55:36 +0900 Subject: [PATCH 04/14] =?UTF-8?q?feat:=20=EB=B9=84=EB=B0=80=EB=B2=88?= =?UTF-8?q?=ED=98=B8=20=EC=B0=BE=EA=B8=B0=20=EB=AC=B8=EC=9E=90=EC=9D=B8?= =?UTF-8?q?=EC=A6=9D=20api=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.tsx | 3 ++- src/api/auth/index.ts | 8 ++++++++ src/page/Auth/components/Common/index.tsx | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index d2ce3303..9bb58b0b 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -5,7 +5,7 @@ import OwnerLayout from 'layout/OwnerLayout'; import CoopLayout from 'layout/CoopLayout'; import Login from 'page/Auth/Login'; import Signup from 'page/Auth/Signup'; -import FindPassword from 'page/Auth/FindPassword/SendAuthNumber'; +// import FindPassword from 'page/Auth/FindPassword/SendAuthNumber'; import NewPassword from 'page/Auth/FindPassword/NewPassword'; import CompleteChangePassword from 'page/Auth/FindPassword/CompleteChangePassword'; import AuthLayout from 'layout/AuthLayout'; @@ -23,6 +23,7 @@ import AddingEvent from 'page/ManageEvent/AddingEvent'; import ModifyEvent from 'page/ManageEvent/ModifyEvent'; import LogPage from 'component/common/PageLog'; import CommonLayout from 'page/Auth/components/Common'; +import FindPassword from 'page/Auth/FindPassword'; interface ProtectedRouteProps { userTypeRequired: UserType; diff --git a/src/api/auth/index.ts b/src/api/auth/index.ts index 1e670088..7ea41d9b 100644 --- a/src/api/auth/index.ts +++ b/src/api/auth/index.ts @@ -34,3 +34,11 @@ export const findPassword = ({ }); export const newPassword = ({ address, password }: { address: string, password: string }) => client.put('/owners/password/reset', { address, password }); + +export const sendVerifyCode = (phone_number: string) => client.post('/owners/password/reset/verification/sms', { + phone_number, +}); + +export const verifyCode = ({ phone_number, certification_code } : { phone_number:string, certification_code:string }) => client.post('/owners/password/reset/send/sms', { + phone_number, certification_code, +}); diff --git a/src/page/Auth/components/Common/index.tsx b/src/page/Auth/components/Common/index.tsx index a56de627..5a2e2192 100644 --- a/src/page/Auth/components/Common/index.tsx +++ b/src/page/Auth/components/Common/index.tsx @@ -21,7 +21,7 @@ interface Register extends FindPassword { shop_name: string, attachment_urls: { file_url: string - }[] + }[], } export default function CommonLayout() { From 02e8c60bf4441cbf5e7f66529427ada6a0f65444 Mon Sep 17 00:00:00 2001 From: chaeseungyun <101871802+chaeseungyun@users.noreply.github.com> Date: Wed, 5 Jun 2024 16:23:42 +0900 Subject: [PATCH 05/14] =?UTF-8?q?[=EB=B9=84=EC=A6=88=EB=8B=88=EC=8A=A4]=20?= =?UTF-8?q?step=20=EC=83=81=ED=83=9C=EC=97=90=20=EB=94=B0=EB=9D=BC=20?= =?UTF-8?q?=EB=B2=84=ED=8A=BC=20=EC=83=89=EC=83=81=20=EB=B3=80=EA=B2=BD=20?= =?UTF-8?q?(#345)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: step 상태에 따라 button 색상 변경 * refactor: 이전 페이지로 돌아갈 때 isStepComplete 복구 * refactor: className 변경 --- src/page/Auth/components/Common/index.module.scss | 2 +- src/page/Auth/components/Common/index.tsx | 6 +++--- src/page/Auth/hook/useStep.ts | 6 ++++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/page/Auth/components/Common/index.module.scss b/src/page/Auth/components/Common/index.module.scss index e35cc61c..2e0ee9ab 100644 --- a/src/page/Auth/components/Common/index.module.scss +++ b/src/page/Auth/components/Common/index.module.scss @@ -78,7 +78,7 @@ border-radius: 4px; font-weight: 600; - &__active { + &--active { width: 100%; background-color: #175C8E; height: 50px; diff --git a/src/page/Auth/components/Common/index.tsx b/src/page/Auth/components/Common/index.tsx index a56de627..074825af 100644 --- a/src/page/Auth/components/Common/index.tsx +++ b/src/page/Auth/components/Common/index.tsx @@ -38,7 +38,7 @@ export default function CommonLayout() { const steps = useStep(isFindPassword ? 'find' : 'register'); const { - nextStep, previousStep, currentStep, index, totalStep, isComplete, + nextStep, previousStep, currentStep, index, totalStep, isComplete, isStepComplete, } = steps; // eslint-disable-next-line @@ -92,10 +92,10 @@ export default function CommonLayout() {