From 8b75f67e66caefd257589a56786a2cc13cca9bec Mon Sep 17 00:00:00 2001 From: KirillKirill Date: Mon, 6 Apr 2026 16:44:31 +0300 Subject: [PATCH 01/10] feat: the beginning of the redesign, add and remove some components, theme, images, icons --- .../client/public/tableImage.png | Bin 39133 -> 0 bytes .../client/src/assets/coinbase.png | Bin 0 -> 2256 bytes .../client/src/assets/coinbase.svg | 9 - .../client/src/assets/metamask.png | Bin 0 -> 5636 bytes .../client/src/assets/metamask.svg | 9 - .../client/src/assets/walletConnect.png | Bin 0 -> 4538 bytes .../client/src/assets/walletconnect.svg | 9 - .../client/src/components/Account/index.tsx | 5 +- .../src/components/BaseDrawer/index.tsx | 71 ++++++++ .../src/components/CampaignAddress/index.tsx | 73 ++++---- .../src/components/CampaignSymbol/index.tsx | 12 +- .../src/components/CampaignsTable/index.tsx | 3 +- .../src/components/ConnectWallet/index.tsx | 162 ++++++++++-------- .../client/src/components/Container/index.tsx | 1 + .../src/components/CryptoEntity/index.tsx | 2 +- .../src/components/CryptoPairEntity/index.tsx | 12 +- .../src/components/ExchangeSelect/index.tsx | 59 ------- .../client/src/components/Footer/index.tsx | 31 ++-- .../client/src/components/Header/index.tsx | 119 ++++++------- .../components/LaunchCampaignButton/index.tsx | 100 ++--------- .../client/src/components/Layout/index.tsx | 40 ++++- .../src/components/PageWrapper/index.tsx | 16 +- .../components/ResponsiveOverlay/index.tsx | 56 ++++++ .../src/components/modals/BaseModal/index.tsx | 34 ++-- .../client/src/constants/index.ts | 3 + .../client/src/hooks/useBreakpoints.ts | 4 +- campaign-launcher/client/src/icons/index.tsx | 41 +++++ campaign-launcher/client/src/theme.ts | 8 +- 28 files changed, 475 insertions(+), 404 deletions(-) delete mode 100644 campaign-launcher/client/public/tableImage.png create mode 100644 campaign-launcher/client/src/assets/coinbase.png delete mode 100644 campaign-launcher/client/src/assets/coinbase.svg create mode 100644 campaign-launcher/client/src/assets/metamask.png delete mode 100644 campaign-launcher/client/src/assets/metamask.svg create mode 100644 campaign-launcher/client/src/assets/walletConnect.png delete mode 100644 campaign-launcher/client/src/assets/walletconnect.svg create mode 100644 campaign-launcher/client/src/components/BaseDrawer/index.tsx delete mode 100644 campaign-launcher/client/src/components/ExchangeSelect/index.tsx create mode 100644 campaign-launcher/client/src/components/ResponsiveOverlay/index.tsx diff --git a/campaign-launcher/client/public/tableImage.png b/campaign-launcher/client/public/tableImage.png deleted file mode 100644 index 82b7d8c5ef979a12c1f6392f076858446489efec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39133 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%0D@F z2XAi=X(1tBUtd9AQ9*Yvdm&*dDJh|cB0?e}0u%@Vpud~ARN%mwpxbk=2qxMu$-;a7DOQZUMsy`Mthd7QmeTHF!o$us4Bb=Sp z!6@WXQ^Rr9Z|MVdO=$Hy&R1t*ZBx&m6Y2ZP68WY^Rragp_J{V!g@rdJS7R@>D*7$- zvx1f$Kb?q4%VjiUy#yWGnoc+^C!df^wROkLf(fDKg9ooGlKenrXg6cZwQ7!ssOo6O#!oYMxU1$D; zr@dp~?th-gKWaBZsc84)9&=pzPjmfePZ}AU|4PtrplX^kk`wz>(ft2~=-)68IjX@f zEm95eSr^EunVFf?%YBR+a4CQsvefzf*N3bHYlTcIcNvVTm2=}zbp()ZqRN|;0)+ytFbU3wFC?6AvG@z1IMFFANPoNH)kOdo}4*&$)z zHTk`y&tdS{zHGXd7Kx0q?(Sgx6w&hasJ2J7djQ>wkpC{qh-Z(hLZ!gu*Bo4dpwj6$ zOBtAD$Dtrs%LyQyG7IiqcGo}5;^Mj8VB)l!Owt?_Fn|bwAMpF>N$Qkk0-=&U)wET8_QzDgeR)%&R@CO(VH;AMGPrU&D6kv)fv? zw_Yp!MY|`nDLI-c=UXWS#Kg>;Y6qPjlJ1^nYOK)<$)jcWXMWtB&C!V1$x#TAN0I{g zV?{L@-xAhmNIon|i66JO&Hd*+witnlJs~?0+MUbIgc4ByB_K8R#ocr7F~#R)jhqS7 zBGRU@D>mr^Ti_*leuJ8bo^;Vjp-pLaGDDrC-U>Ik2UW_18}=8tT2tE1veLw(<r>^);2csx=S0r8OcC=bC-(9NIQi(MiNT?;?;!Nl zvTWH{x4-2lq%8w1g#EP3nHyZ(merVSSvIP;YhS^SR#I(znO2)TyaIjWjSdR?WRyB$ zpi%V$IyKeirm-Qkl6JYb9;}Xh3Be(sYiG*}Z#^@5@OE@&fFKW>u9@qVWMg(WpLZ3s zfR(34Ut`>|4#6JpOVG*g>ZB)D04?NlJC4@0gKJ51zHQUKefB5oLZf+y*_hD%)|O^t z&)N_o&Pt=!tY0R0Yu_td0#54hr@&Oz3L=R;U%Q)u_8C>d$05t9^9Mw$ExkGNUZYsZ z(eUYv)!|d0!}XN5v7i+VE0BK3*y|wV@s|4OmX*U`eh3+IrL)7951%oApi&ia^WtOc z^!BiBx7AafUqQjxmbr1+qmzBEj2&a2x#Wg#t90}Gi1RYm4C71YwVrK+={5tXXZ&GH+v#C>NEfaA&Ty36_HoqtsX|6bUD;#*k z?B%wPx$e#0y!D>^a#g-yTlm%^yIxP3`x-}fe^qDsFCLzjNq3I%PNo40g!k-c@9Jfu z)O*aXu(YWsfc>YZ=PhsImJmrOk&z1M>^H!{ zypJK|9L~IjGnLxAx=J=yRdP+#vlexZ<)r;E zLBJ1f&MelzqD7cqLK9wU6?^Gc=48585mwFS4|0HeHV!9=2HR7$QTxQta!CT?vixYX z0Z2X;-2a}ge>_!T${F`*ZM$`uVN`rO$YlDp;Er(6ffArp+$ZU-%OJ9qHE&{Z4X*wkr%e8NnnX;LmF6SZe+FkH| z2COfAvzsf&1wk$pik@P{3B*>;8(YkD3Nx%_tvThy_SC*dolznvfgd(#F{Ter)o-`A z%#Y4TzLJ|sp0Kh3<6CP6nHx8e)1#X{a9_EIRY{|Fz7>#s@g|{Gc~0pCvuh@pokG6; zXhsQGYQKz2eV7HE6KvRF_;h@^8ubb{7r50=_o6K=(`>lQPXxvJnfP7N)!)Z)Ob=8; z;GL6T&I)|hZQbo5)hae_;_oC4FMh!c{qSN4;vO5c%Q5L$#OU8jJ?+sM(83gR{Y|?h zwStR-AnNTMI4$|j=9~n=vm@<>&r^Syh+7a6KcffcIhjg83MY2DGVzi2%ygt52WV1y zie-F5m;6?QaK&`Fh~uobtVrLC-HtH`;PAD3Bvd8wxKggmQE+xY`4EH2?Mbi@ zLMK;hH`5a2tov9ru$E8EeNir<-muwM&WE{v6>;<1m4~B~sLX^Hj(U4foHus9P5RL# z($Y+)#`p4ytJr7~6KV10Mt->I5Q*4~9TrT$heq+5)#*~FGV;!h9QMxUtO-L1D*X+L z*&RGRO(;6IU(yN9{`g2x_Kw)r79K$?yD%GvGK~#hyh)nW!QGD7nWj5TQ*BGz2xB^h zSvdvqChh|VL%pJ?N&mKRfM+*B-Rr5!?SQZFBqK~V>99(6lH^`?_ZI9A!BRQ z>(h#?+5!g)dN9bdK(`k_%)6d0Gs^D~3Mqss;&xM%^O^m)*Y7*gl!HdSA}n}%dM+9L z*hajI$P+s(J}$2MY|eFzG+`$^NFDt{k}lDG)qi}isZ$aB5LJ{*;>Vbp^>kZaXne4j zvdo+e*ER{Zh(*RQ_bRxgyLG#+GOZumdNiH(R2@xY04EC}`3t`0X>$|6OwTaV_CFcLdwlPYgNTJr{e%n|QCNNhQ|@2pffD=*>! zWe$rUEf}rT4Nnh~(<j=MZ>{@ZDQLeEGTG;>RtB z@}Aiprsd>u_QfEt#2&kGZ?)K-_*t)N*L$WxV=klmf#n%XvZ41*{Xgzm>I5_P+Ei}j z*98A+guSxT77*!$d4TILP7JJuD$<>JRxBse$~kbu8}0xRQ=Tr@xJafZ4XWBFzamIU z?4GWi*nOn@$@YdHVF0xDS#-0bei|O6{AJo~AS2g*)jiIErYV#5a(196Ge$Z&0Qmmw zLB3c)CWhCHO{6-YvBD0Uq>Zx#|6(M>OkSC_8nc>z-U3>R_=d^KhBwR;!x1PaaqD1hxZ=dC}Il{ax-#`aQv+BnPt(fDZP{i)Qy-1@hK&`*I@^%Q2_=6M zKxHf~^)v(c;PltwsY3^K+21rx6J(#nI-U10QM;l3s9gv6bih)oS%b@&XDgyY7!t0) z8Z|Ig<8O>=HjgNA^Rg@pF0AvtEv{56xD`hi{7_-$8e9blmhu+*MSIv~*JoKQU(4`{ z1)${&`tBoisI=WXm0AL8x(W~z{9!)-g4IPn^f>6@qLc`xsk$#1Gd#w`n89cxr$3d- zjU!q%hdvi+@HM4bHRFZFfCScuNvT(*{oWL)rd$4zlhU5XwyBvzLbz;`=W%gE*P4a=mFD1V`+x^}K?7;)VKqKg zlB?6HaVnTzk~<-XEXW+d7Ozj5 zBbNCNIeOm1)(~Rkm`sXfX(zArPO>CPcoZVTBi$CE?pwyO^fv;0i$TjNEjOI$%x%c! zjj~!$NFo;YKxfIyCjUnv*`h`Fk$9qzbWf&zIlyUYeu+a+wjy$AnCm(|%9PK{urjvC z=fjG36rD6I`?6lc2o8Gi=9Oxx6(v8};*zVMX5^>c|%APu;R62bR{W4%S zDib#)ciPq7;txrEUWkN6S1{XHk@=2weFfa3mHYCIj#d$DkOD-1p-vsgK)%?{WSxD2 zYdRPlV8XaWvp}F9fb7WYgCF}y)v&DiMT=y*-=PjUD5TRg^!)ilN-A-S6%&WHga*1Z zC6tv5C%N|scEXS>(WD|w+s?JMngLsH<2`OBilE~nrvx?&XD55XUZo0s#$NXVm6mz{ z*~yG&ZOe{x>+#P0jSF5yn>4+BqPRuL=YLlqPjhlM;P4skninv}sc^fcGz`ACK=Qa^ ze#Nrf?N;S&Cw=7SK+`35fq{XDPr-PNPvg$ky8(Mv0mrxu8kQh;!i3ck8Z&91O;jO@ zTdk#T)myY4d~Kb(2AguAX^{-{tO7FJ!b_qdYEbRS`}sdV{*2Xf%JEh{`^6W(W_JfL zviQ9z?S1#>Fbm@Fx74@t1_^UJDonk#x_u0v6g;;J3XCH(von=No8PtPUa!U%!`)2@ z)#4CYtiEDD{ve&p2nON+O$`l8EIJ6~mCJV})Ri<$aO2<74|}HM`utFS2cR9lkW{84 z_zVB81pL`L3%X<+xO**cDpnS~+d8(WexigoYMU5_)Z7S}c!cp(NW3B&y|j1x20i8u z2k?OAC4+ntsNHYDxX2Uy=whPt4Y{Xl)BeMu`gQKLie8A$eddf08>>UGqI!#g zrF?uW`Z?&=6z%%U9@;a#DrRDZRx63FhUTs;WYtw$D;ov`*QydvzXUwEEYp3&U#EjE z<>Y$qUUhM;6P_2xYB5jllsL>XSK9kZa*6^21hV81Z4O+fGX{uH(ZlZ(RTZ|k`}C_q zhH38Jvw?0Gz~qij=$4@{g!IW-Il2OS>h2ghx+Yg9bnF`piee*alV(TOzfq`&Bku;r zhWIY{XxHpzCwOLedS`90Z&VH&B$G6-lhUHr(2x zb9C~_Qgo+ex1u}$Rx(r*vv~Mfp)0y-{w_@WlacpDmEd(FnRc5X|H@!SVD(|xn%{hK zj8|U>zx!XUa^qOK9`+sL*m1i}rMP?nE5fV5lqxQ*eW-~KJE0$vxb&iDR<$8~MWW^b zM_^rP*eqZ%aUZy-^FcUS))?1Cajba1tk!qfwv@(V>&}}Cv88jnhz49db z5c%mJ+2OGA*=E_T6JdR(4S`;IeAR`LURIi$R8uY1ZTh;s6zq?JlII}5d#gE%c z@3rT?QY#$~UScHnnGACqUr6kX+%$?oziO3;HnWXa zBbe^-LQr;V1|}#DDY-75L|U6^>q0e41#^R7(Pxe{H=KNkOhQ>aVw1JB>%C!K)oA0A zc_=D+3o#!VtvkO?bF}LuIvZ$U=-4tNPK>bRE0BHl<>B7XjUXm;${TqHf816PwnYLi zRTVaNN=EGr(Gar}K)gu;W&PKtV;v3?2W!bgof(DoEG-<9-)lUJTPa;(9npO(a#WP1OGOwS@^s*z!;%X+(0~+nieQL_po5( z{iZ53I4OuBDCFKfqe`n*F3AC(U6bNN_-pu zJ@E!8o2_aVS&nwkCE99EexdBqWxo$|Hq+u#F>Osn&ghUj<_%~As?(@{Gik8X7GaA4 zk`}_J|H1)?f@brn_RNFY+0w&I3JB3a2#lAfD&T6j<4JFow#>wQ8S_TSoa_?%`#F2q z52&L*pZ|ova@5E2ZsARlduICD46!3RNjU|Mwf^WYT)M53Qk9v;h#S+*LN2{pB66!e z7X#26wIo!5bMb|9s88*+k(0)b^QkM6LwRh1h5|+dddOJjh>dVU;$GLb<#M9Tv*oA{ zZDKD;UN_hRm&rY9D|_8;Qr|7|V)W#tgqcnxr3&)kSx&J8&rB|zB?Tej5CgMaS0f(#`zL>GjnXv$;4>Ka9jr;L>7Ia2rL<#!wz4?$t z%kc*^@gSkz8}wGHwS7T5O6J}w-1FeIjL7Y!8E-^ z8M)Ik-t>CC5{p#{5-f}NRZ{BTsUCQO^I?Fpyn6SY;!+t8J? zLWz$z6)WtLueond_kv&SH|`{vidC|-QFiOW^V_$D2lQHe69M;H`brKv#$@YQVwV1H z80a#lK;>VUn^SbCeBFA#QM`5XWqJ5-H5#^&kq=3B9ZrprnJ|dpR?z3_7p=%xqS7I=@+vkiQ|-mU)A71~%o6|2-iFG9$6S15Xp@N;v)|Nim_5b*6}ECc;2Ye%Z%-4{ zn|tIjye&UPs~jQtV4vUD)ulb3u|G#$iKmVD0TiaOF@ zCM_S$e#8nt6_M75p!AfMle@9fj#^!qb!6r-Sy1Mqfz@%>*iG%AkWHWaphw@Kh9)Uf znPopn!Me3I$B|n6^Jnju?biUF>X@BkoUPomTMo?Uh5M%NDoh83!q}7YgjKnc7Gm#=mT1zmjSj z96$61Zzb5a(Fz;1b$6;{Fxsv>9+T)8zsmSm!$?&5Al>zv}!J8VU%s=Y`u9w|>z}f6Max zmU`IrrNyvkceFyvW#o7L+3o;9{8jl^KgwSVdm*3e7i#sv%qxb`d!YSQdmY( z_3IXn(ja>%*0UK{J=6VS9ZFz3(aCgu)^Ew(*86F%gU$d-5;`>A)Jn|G4bNnLVtOtM zKgY)Je;(av7&Fo@i~^U+^{5)(e@JXM!wj)EdV^Hb3=Us91U=2l1X!FAlUYKocPKX~ zRy{VsD1IY##^~W5Vu=^dNg3v6>B2H0rZ;DeCWr3+d|@(T82jND4yvCvjNi;!;Hatc&< z{VeZ|{QgtQ zXuzyjQf@#El4OJ2mPTQo3ux7{?0ae!9o*&D8;IuClL6F4qSk7vj?($aotj5)`U3>4 z+!{ROp;ejr12SVE2mrc7(Wj_L{9Nh2+P+>tA|-Qt{vHzQS$Oy}e{DS0b0e@1-MMaT z*11VjIyxcChwCFg3^hQ`ex4;XeE@>XV`UAA6{wxFtF|sWLGPKJvRw6Czoj9A%Bzr> z$c7wSv21|fDjW#lSNC1B-Zze2Qb6_FCKLMjofO5CQ{Ob=f&G2GbtaQuYKo9F9byA*dP4d&R%oX5Mwt*Hf#prTl!KS>*mB;!fT zrtc(vf2pEg0JVOrk28z2d@uDf+6caMa!5G4#Ic4{W_H^9>L`uch@%&TM)0o0f%QMg zq`bf5)u0gE=Gxr#S@3uu+~qUkRjKc~ikVsPj>34hx$p`9b)B5jDvgsXZ!ONz?y-q{ z-wLPfjmEJk#;Gw@NR3PTm=+6`QHECTOQL^0hc@HY*Q&kEFB!{a#mqLdObZ22e3d5; zD=Ky^S7_!5o6Y<0==znWiA{n`rV(lA35lD%pcsqDBt+Vy-HJXhBf|%Y<~|;O~9;}tL5NO zWt-(Tdc)Slyb3^Fp|%?xO|fAmVuOAu9e1)5*CG_yBX$-eT-|;QW$Kef2;9MMRy~=p zt-DRZD>QEEz`N;;S^()}kghALE+3Q2^lT+_WI{;cpw?|%FGHY5Rvl0a{C_IuiO7C; zNig$bS#TsRXl)qx##?(dbu@Lih6-QEH!|<#4od1@IXG2 zB*8s)x)+#42r7@IwJEQ3%8qkeHuA>WU2DH$g^g(q|EKc!0oZ z)!KAoQ#7dB*@H|&bA0wu0M+n)er9>wh$zjg-6*#&mc@y5{$gQ2n`+H1aG@HJU~TK( zVmZn^;1(fz)Kj|D)#_lzo<4X8nIPKJNyt@Wwv~)%*GPH;2!21cMOtEX#}~=&eHJUQ zstPAfgpfw1B4Y62z5F=+I#ru1^eg*l(vlXWCOp%3E@e*>Hl_uZ(~cyIjJZ@y>-CUf zLB>8u8po29m)y?qUCCAE4O<3;U{+}i*3bLm*v500EMJ-=8$}$?N=10OT+Pgwbe~s) ztyjD={#F>S+$U*6U7&c5?mnbe{&Cbx2LbU%bhb3m8&6{FWFEHCmPvW^m(4KUz*YB= zj2Q;D+}S8zkY-6amWU}iyT&D&Te>M*!0ph9HOl=j=UuegHjL(4xR<#}Ju-Y_#-PO1#y=57+u%? z#cdM}y{t@2%BGjKM7bcVkh>C)O*gI>AVzn4(e8=`-K10@kFjqc^uV{gPkD_PYeKmt z=+!wq&UJGfG+aXqo31xbnVK&xm06wa%+SQM5TIE4lw8ksw8wWq?f$X#YV&tk1w=L` z$)pF7ScS~)RTo^TOWnxZ0z&PD_jO&t?6biL_-&hU!fO{upd&@A^7`wuy`mxhI>73b zsJ?1Dg{-1{Japhe*~2{>lnu_P>NXUUnXaG&PT;Fn4AIJ#9o{Ga$Ry1N2^L(0JHumz zm~fNSfW`X2<8Z7{f62u6NQyQwHgV>h@U4~!PJw^^NVV*lCi;Gi1~9La;~fSIdW zr67%SM53K9wvJu8+OG@TK8mXta#OI9nN`J=6!PJ(xgSZ8Xi6TXgnV{+>Ut8prX!V& zYfxQ*;{J*iOG`igBx^(Tni@M86Rfh*oc|g(swHmhT$AfB zY*^)`)qKR3fsqo^Po9N=wi@rjN` z8#fF(?|H9IdZvlIf8Du}xxTp9Y`IdiY*yqxMf~lC?VM`c0DBc%At%N=k)N|Hiz-K0)pw*MZk^b>XS?o_uMggoQ6S1GMND!#A5crr(P zMo$x1&>{7Qh#`LEpMC)bQ77*15P-bFvzAf3@nFoJxcDhNZLh_uB>+x2x&_2{SMGg= zHA5sPBpSDh|2w)+`mFYWZ5vXO@bsFh&h3T`2W=!H+WnD)+Xjmi5|+DUEpdr*CHo(v zt$x>53!O3RZmB%I+|tr=I0C(t=2`9jL`YZlzeo05H|!QvF!W;k7PPIZ z1gm5gSB8YF!yIs2DI^tl;B_go26Xe|qXS%}Nycrs+Keusjs!_xLMe1UTZI4s} z5ESyMR!k>z}>oQ3Eq_JcrewzlPS04{PUWz)U{cL*E8YwS11#tb60>^D(gtQ-wUf&^pAB+?an zn`8l5of5G)l=Y1F857_dmpT1luy9I;#Y z2V|LqvIoV-D3jOQKteE|397ZIF_*|K3A4?@qKcv8oMYoq4{?0FZKrz zz6UwDf~+_}RpG3WAYQ4Y+##*+Ly@{xeDTDA@$PMD5R5Ff8Q|+^Qhx{Xjw$ESAaBBt zeh#ZuZCyyX_Z4+5w&WDSvK^b+o`mswCi|5LSkdm>uR;gU87=8Rn{&wJ2uVK-3cjg+mm<$&E}*Y^sbd(X{H>+{h6#- z4y6aUxKlb6vyF5)GaFrfL|YKr#D`du;{*{b!4uJB0$Z$$(wc&`F#YgmPSAdUj@O8n zgH*zyUeYAP27}>KA5*KRKRGQf$JH#65AKVWJ-?H~c;%CB_7@vAIqdqfH_K}ulO$g` zr{5$eK7V3SIHB1;ZgUc7E)WH->0yg*iAl0~r&Eq47jL;28nd^HA5_u_Bpu5ASi#Ly zN$aid*unA8o?d(9)5hB_wzcg;Ipw`R>6dukljgTq?+*5>BGtZw$9(mAfo}ZIDy`w4 z1sTrc1j+Th3Y>ffYa#Ai-2 zJ0$H?Ku`{FmywV|QV84|ZBK2Xb7=RrDa?4P_6~d6mshtiiFvI>v4Jl1UoeamoG#!` zWoR^cjaIrS!Uo!|cbcCvJA*r=H9{)@_id1B_vZt@$%$F@3f{@kyMns1w#kg!-0jP| z0#?79VBke=tG=LD{uh(1_lwNeXwT!ezXx0-VMviFw6l}J8q6DB#0% zX1VY`eEH^w~$MN3kp({<1#^W-)Q>`EdNe&AESNoDiHA<4#Lf~NVgC~}1ysCm`XHW`X zRJ~|f&|r9rY;yNnb9s4F|DB#q_K}xg5Lp|~LyQI`8*0}{M-@TpUEDKY4LKnOJKVg< zdM(*M)}FH^GEOHA%wBQ5EiHxIk1`V=xw|+U%Jt^Um!JfCOXk)al+)5cXuCUgeJ0Sp zJf_}yWP@O{X_k3l_GyDM2*1HQ+ZlaAp@smt8Z&?#0^w4gN$=n7S1!OA%I=zR%k;F! z^?aVx`WHF9Tk91#tuo$)7&o8(|3D5eR|JfuTPoGnYOB(vcX`)5*~>dXX|f_aKuW42 zA!}`GodIcRh?n-gr-zt{DxVUdXnv(Si}DXICv=@;7SB5`o0gGgvvI@R1Ypo$(|G(T zh(y0mzodjn%UrK;y8>h_cGb4X2!A*HfsI9Y4vVj;h)jgZQ-o8dP`R=358*KK$*qOV zLv!)WLOkBH-q}j(y_08Dxz_Hk%(B>ax$=wv5mI1_@Fye_yKn_CNiBlZoW}Did(vDA zp6HZz65(mWr?4#c)x6<#ptz4*JWz-EHaWo8){GN^t-U`!&XZU%F-!*4iXPY1l0^#g zs_F#!^AmOzApKMEK5E5X`NhUs_<%bQ(eQSu2EMG8?+ush8U`&I)u-BODolv{vFoN4 zX32W+@l1+%0{)wL(i37`H@fEYHl?io^7WQ~-#`PeG^>&=gf8aJlfRQrd;=5N>I~v| z+K@p5;*hE`9d3nU%k_Hnd{RD6%UQ-Uf74Gs;f28HX}}>_{atIkevEm;xfgBF+)9eV z*$tyx_@+gq3bS`Tf<_VUrI52{i7 zzn2etVWl=j;nrjMWMmp@I6@*}*iLnA^1QDrW%+1awvfoeejf2^XdhOSR`G9CW$-fl zw43R!Wo4AB6P#>9IS2)hybN};`;=-gZlontXj*jo(j3)8=O6trMPM>p(;{}6NnbS_ zF=sLPdjavQ`S@J6=#BL=UI6|AZF zT8;;zE8_S5v3_8Nxa1XmcQJciyP`R0+7Eu9p+FrsQiP&z8kL4z=xl78YaC|ThEZmx zu{dxba9gC^e}V^R=dL%OK4R{1EA9ubKZ*lRt@6nv_>(26s< zchy*>6J`|WlfBba9%H+rejMQmcbYX!5}K}_KN|79F5MH5gpSZvF~Jm>r?~XsYMJ%c z3WM+g49vY<#{0ar19~he<2B{xC8rN7jVh)~cWfE=GOWn7PgG5+cE}HVxO-<3aq*h| z77aGM@Wd($p?n(#2Arib%D-o+RysL}j|k`_mim|(AY8r$6Ex-(SGjQpmH-t7+q6cE zseAoU=jKf=P`VyO>k(3$X|RgT$Z?WXnXnw2oPW%P4MCZ=1zQL=@-sDsf$i-f{^PU0 zg%{Qh9ziHH6Hya+u83X^9r9z&}{8)E76>+Dr7f2z)*6+EqMTN{w~LX%Ncw zGNJE>Jo$?@?N~?U`_}bMt7i(9u-TAnk7dSkP9}j7Cz}~z7sBQLWU5=8k&!{Bw`{`l zIpT)E#C*p4p;x=G&mR9GP3nB|MPIE7=heR?Fl)r4=j&cA#m z|KZawNryB0GlWu##ke%t9ZVWYIucJlPOh=1IdrxR^aaWuU&i&0T z{$zWFd0?~=s5(aqXh!&CG?#Wo_JhD~V5JnpAErWehVQRmd_zgD68KlA3a3FYm9L3z zCoymMLeSqb5%||5)k(64gLZVM&zbH2paN8(M9yE4RWj2Qx>nRTu>t~oG80yWsg{ha zB^lB&4jXc$4_c{-d(Qs=-I}LWt`xQWPw@J1Xhh zPZx2Pv(Bg35b60G;2%GKoH%#Jch;wNlj>HO3q~lYLY`o zcP;PX&HoQ!?*Y{G)2)w75l~7%RBAv#LFq;55R|6UM3f>eG(jPuNhbkBiqb@oB27g= zrMJ)t5PC;iAoK_*gboQ1NdED@_ultE_x`@#nVrut!(_|ZbI$IbeV((EEWXr#v04pq z62nY3+;#u`tb3e#j&CXGV5~CeJLx_P{&3e1zVO1RvFC3AJ}FtMqxzxjAnj>Ac;!?= zX^=Y$z6wJ6!&fnqJlWUo)Y$o}SjQRscs*TLK>t_l%zC^ zzS{d2Wu#(ArnQ*?;u^!7aDbA(=o(m)p;1u(iBS<~n3YUinhZs}nn!{pd z89BI-!jPD>kC*?kZOSjD?|t+u6Y1$oEx}Dqo{}l7c`{k#_PtMM&S;$Z!)o5hVyv>& zhHb6>^m+F-_1s(bC+`aH)HWgR#}W`#tj}Gog~1JhjBobuFyDE6k(R=1M^rzwNquZ{ zR*SarA)Eet$>qg|W~o>A18!gRnSD2mp}ueU){O7!YUZmnWK`B&#L_ zJ706&QVUv9kjqIw8o`wF_AKBcxzBn?^v)lSuxHH5k#{mNRXfH6tO%l3S6)4Z zNyO-%+oW_SZ0DEFt*@90>@C6=-k7jAOGF)P!g8U6Xm9$V4e!0D_&UuMLvLMioOfYLKLeNl$}>(3 zzqgq+K7i0aYKa+2z8W3M@Rw4hbw#19rY^1V=n_u4%poR?rlo}ib*!CADo3&D90bAl zD=>}D@j=IVrv{Iw-*k-5U;sIb@%T=>6a7J*)ck<~*K~&9*A~Gm)c;t9m8k2&W@FsC zCT26kW;a{aBbaf0W=ypi?nHg*A`odwo$x+n7E@*1^!2-0kS6h&?%=ymO$={Ov^8k8 z{;7QIqy0{Y&vs`Ehds;W!PDVeZ`5k{N2v$CX*m1=sQ*nr;9Ya#*sgYrYc6@TJpEp7 z=AJvwPwEt>1>o>g2;{o*m+Mzfp;_(N)Ql(#qLH#)3LA$%b)v9&by9q$Ib$>H?KfC>>rs zq}kaB0P^By!kKsg@EK5|2_dSW2?N{dVIvH$G^s%x%?C)N++!!lts6eqg#TI49v?4! zg|dyVtD)&DBZp)2? z!oRz*p&)jhqqT#=0zxYHeqI0Pwy#jn3Te;;+1lE=*F;-zo0bu!3R#G-XNYEW(*?YS zth!6!@-2?oK7_P(hstjQx!E4~v}MEKRr-U)QNg>r9Dg%Zd4}N@7PbxC#E*SlLphqD zpw|fF&3J9=X8RVkou8+hbNo%XW)gp;vTzOiOG)MYd5M670Kb{i>@@_kqL5win&#gI zto8BE89KaSu={@KtupuHRH=sW`Pv`WwVnw)QwrQ=eB@)UO%P(s&j?wCbY_N3#H#!C zFOJTVVV=k!xNgekOC{Lm^nB)e^NYUJ*=sqq2HOSli0Gj?OTy7Fm9MiWOLO7o;KU{CXcXJg=R1b1n+{w({yv>=Qot0icT zI0v@M0fBfjdT6kOI_Df9)8_uD@&BAjVL2*pbPzGo1o;y7`$tE12D$s2tvnLqu?zc| zTsSFpLR51=ynM}!bGxE&>W_w;5C+ZBQkHTUV4a7u_G(vh7%WbqJ>+L9G3dB;l#uE5 zMupJ0w;NmxI=xxrw3l+C?Bf+_yBtY=Awt=TuL2hOQkZL*38xb7bq*mLle^xTMS<&< zvvCUZyeD9=ZOHWRfSC`WBOTXrNL7}8ZRc7EEXWEL^76kNS-svFWgasBZeco>BY)Pw z;zxtQnS;R1qt!a01S<=L8%2&?Z+yo?to7?HG|n(yjkor0L@mWwtN7I$@F;wjxK#G8 z=Ktr-H3;WuX^0iqSTNO94(m{83@36Y=&<`)jzZa1dL|v7h=dgeVb^Nv_efAe+7nUP zvVz!o2f@_++Rd8PS|{&Z{8e;21sULZqou z;LKToHsYVujPTGd6vZwi9)@!m?lszCqTy*P3v z&k!QI_N0I5iV#z6yB^10s4aKuyIk{oF)Bm;#b@5Tj84u-*a>kS;I$-ih4r#il&jCO zD3@Brj-B6W_2gNLtV8daovu|WnpXb`l|~odZMp(x!VI=KaI4ATjl=rVJ0lzPcE>6w z)g0D=wEVj~8v_W2kvp708Rs8jYZjY{ZMQJ0(>pcId$SAlG(lWkx2Sz&1kPz7Gri}I zpmFXz6Sw(W4wXXq5HUxg3ekKi^O2rFh=x>+_f<8e*9Qt~cB80yZ@(FMgMw)d(ySS{ z{_yPcFF`oPlpk^~t_uFv&X|Yk5xn0TtJXOxXDnp!1vY$BJHqcv#xe44Q{}I*j`!tH zK5&H?OP)x1{i+;ZMw4zVOY^soU;q4=G5AfK^n2gxvzrnG2&tV+7$w943;KH3UerFF zmi?gvYWz7G@@|M`y&Cok^kax)NR52*V=-d@@FUG7K2};PTnv+{V!tpeeBte-B+on~q&B*nV zA$N>wuDek2Qy`bm^pytuE1yjh5*1r~Y{mda>pXI?xs*QFWJW$s*OJ4(`@Y&+X}6KY zKz7eQ)vs#1M&yfHQ}RQ>PmrJYe}a@4$_&#js}c@BrP9@zhkOOTeL_f(mbKZm9m}6d zk;u@@flhWC!m{quzz<#|0J~V_^PIubFZo^)zbia!n;mZDD7_7S4Laz&6YDK~Y?*S< zCZtqYW671l?J1=~deW@TDQ(l~7FemRQ>Z;o@tXMGzxHwDR&b^m7^7U)1jMT{z z-g@gW>+^!zL8;m5wDSxoWgz1;bKwPDsZ!@bE5dD+>K5Atj@YEyYo&bb zlwCFaY=do^Bu&u0!x_GnqODC|75rf}InlMF1qw2)_jasW>@v={RaR=QI$(Xu;~iLU zz*M%dam}no!y@}9N2ah?XK7~bRSdnTJDu*aSK!= z=A|?xlox*8l9NOg?CV!5M^`8ZRP8

W2ld*Ue|eS(-xc6x_qpB593mUy1iSMUKX9? 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 diff --git a/campaign-launcher/client/src/assets/coinbase.png b/campaign-launcher/client/src/assets/coinbase.png new file mode 100644 index 0000000000000000000000000000000000000000..092bea92b281d9f7eae1ac1ac43b49f553314c84 GIT binary patch literal 2256 zcmV;>2ru`EP)1i$6#iz~Qjh{II|XFl6cW*>K|zWjMgw6f zK}C%aO^68rsWAZ)#l#;N35Y04;sPYbm>`INM2bH^7J(1~QTDAM2-HFsiL|uujo+E2 zuhjO3pQX5PFzclqu)=bm%!jDfnCWaYuaJbv!uuWbCcQ3eBBcwC9q##-;9 zQTz8qYdOECA{nsUmb~Mwhs9W9%$5_UdlRh>`28A^fm@e^8)0AtC1sj{d}};A{T=QA zh+>4v!%MgW2WgmRQabVw6c%nS!fKz3iAYGW)#O&N5#hC;Z6YYb>P%SmSO_FB=|~|A z4%&+H}5MKgi?AwXsZ62jF=VEIqLTT6lRa+24@Aud@+oDc<=v`p3&PAre>>GBO9 z=!m^EWF|Osa-ZSevuX$M>>H?6CnbqVP<4VE)p|&$5=M^!GoJ%0HUp2{8yl3VA;umV zQPz?F2&H2u@H8bYdYWyesZ@Z35UPZviHe*6_N}3<=*e@=U|PtO*RalX*12vEFz#iZ z-@|J)2o0eTlIGfr(k(#CyPRvLreX7gsEVlN!Lz`?F(hR`c%+0ff3iwMPSF5vqiQ#E zh)5P00@LmFfUdxyA4tX_AVWocRO&`Rh#p6d07o|fO`AC4oGJ+E{kiIFTtOe^M2x6F zbs_-7;MJT5KAsQs%?;mPs6h1nsRw{5Q+QsEz=&@{e3mR3e=mBO$G(o~wF*>L!bDa} z&(Jo{1FG6N##|TiJ=Hip66uIiObZLu$*_G9%PG5?YPN*>zw1|^q|6cjcCEQg4+dt@ zP!8&@UaycL%kqXLz~is*LRV-*dzCTiEe`1mY=2*^yf=$`j{~EbtSi09#ygRqCiOaW zjo0{J_ddX;MO4MkYQ%UFl{*=@6m0V)|3&dI;gjc@F}F$^9v#MmbqCA(-`LgHDptH6t6p$2wp z-ENZc6&vfEn8A}EF0D5(_if;}GyVe8E1&F>oBl_eowKFN7|aXl63ksIzrhnA@RhL1Ix*R60XqrMz153Z33|!*GbB> z_h6F~7vi_%=(VerQ&n}*gSgNQ!LBYxv8?7KXc1CbrB=?)i-eR0u(R*gkq}D9h0AJ1vzjui-j;5Qrjt|`a({o;b@&Ul^36t)5Dm3ySoq^r!oihYR9A=5 zL;0mBQE@>-`uvk>MXzuxqmuRup?Ru4Mzx9!mQ=tOqQ{Gw_q2+FC2#CJ3#GDPyqa@& zggF}BC{6D++J?gY{>8*G>%t{^6vKJ^4K0Z6h;ZYoU5-ptJ+ol`a_(e==lhPm+lXr=acoXc1z|R7={2^=cw4Hb7kc z2&3Nn>4IDIUd={Ad7B6h-a5)$DMR^^!kCo#LGCU1(ut~d(YVU^d;lwwo+>@ybk%m3oPaeX_F?;H}?SjBtnc^mA(Jv|6q%PiJLJ~+aF(&Oz zdXHdv7eU}Tm3X0owG5f*kWrn)XE*9Y1~1#FT_&*YF2TtVgd*fdb1uUNfc$rzJ=U5O zkYf8JY-uk{J)Z#%(kNTag9ncu)Fs4^ z6iLc3Gq(L8SBtUEqfp-Uu;A5ozJwd=Twc#e-ZU#bG6ZUb7>GT*9|zK5iybWCvX@O) zec{^JCQ}e%?0Ve{{)}Z@nkBUFEmG5N74xKU`xnFM-(SA>YY7~?t3qaypQuFDz}qP)}rr$%|Eh^ z<{FP?Y9Q%^)HWou#MQtmaejB;zD`emI@9jtv~WcKGCkIFB=0zP>B|0q?a~{P;nz`( z1SO-kpQ$3GUaL-rWwxu`qd=BUNotx - - - - - - - - diff --git a/campaign-launcher/client/src/assets/metamask.png b/campaign-launcher/client/src/assets/metamask.png new file mode 100644 index 0000000000000000000000000000000000000000..ace902fefce50e9140f96b51046f822ff1cb9dc5 GIT binary patch literal 5636 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 epWdh0(|-fPP|MmI1Dfmr0000 - - - - - - - - diff --git a/campaign-launcher/client/src/assets/walletConnect.png b/campaign-launcher/client/src/assets/walletConnect.png new file mode 100644 index 0000000000000000000000000000000000000000..63d1bbe5136ece7d13091d5a8d97285adbc1e888 GIT binary patch literal 4538 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 literal 0 HcmV?d00001 diff --git a/campaign-launcher/client/src/assets/walletconnect.svg b/campaign-launcher/client/src/assets/walletconnect.svg deleted file mode 100644 index 3ef58a415..000000000 --- a/campaign-launcher/client/src/assets/walletconnect.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/campaign-launcher/client/src/components/Account/index.tsx b/campaign-launcher/client/src/components/Account/index.tsx index 55a0fda7d..8d8e156ab 100644 --- a/campaign-launcher/client/src/components/Account/index.tsx +++ b/campaign-launcher/client/src/components/Account/index.tsx @@ -83,16 +83,15 @@ const Account: FC = () => { return ( <> + + ))} + + ); +}; + +type Props = { + size?: 'small' | 'medium' | 'large'; + handleClickCallback?: () => void; +}; + +const ConnectWallet: FC = ({ size = 'large', handleClickCallback }) => { + const [anchorEl, setAnchorEl] = useState(null); + + const { isConnecting } = useActiveAccount(); + const isMobile = useIsMobile(); + const handleConnectWalletButtonClick = (e: MouseEvent) => { setAnchorEl(e.currentTarget); + handleClickCallback?.(); }; const onClose = () => setAnchorEl(null); - const renderContent = () => { - return ( - <> - - {connectors.map((connector) => ( - - ))} - - - By connecting a wallet, you agree to HUMAN Protocol Terms of Service - and consent to its Privacy Policy. - - - ); - }; - return ( <> {isMobile ? ( - - {renderContent()} - + + + Connect Wallet + + + Connect your wallet to create, participate in campaigns and even + track your performance on the leaderboard. + + + ) : ( { boxShadow: '0px 0px 10px 0px rgba(255, 255, 255, 0.15)', borderRadius: '10px', p: 2, - width: '320px', + width: '380px', }, }, }} @@ -157,7 +173,7 @@ const ConnectWallet: FC = () => { - {renderContent()} + )} diff --git a/campaign-launcher/client/src/components/Container/index.tsx b/campaign-launcher/client/src/components/Container/index.tsx index be8bc7b44..79b3f7f09 100644 --- a/campaign-launcher/client/src/components/Container/index.tsx +++ b/campaign-launcher/client/src/components/Container/index.tsx @@ -8,6 +8,7 @@ const Container: FC> = ({ sx, children }) => { maxWidth={false} sx={{ width: '100%', + maxWidth: '1280px', px: { xs: 0, sm: 0, md: 4, lg: 5, xl: 6, xxl: 7 }, ...sx, }} diff --git a/campaign-launcher/client/src/components/CryptoEntity/index.tsx b/campaign-launcher/client/src/components/CryptoEntity/index.tsx index e1f5bb8d6..ea92c71a9 100644 --- a/campaign-launcher/client/src/components/CryptoEntity/index.tsx +++ b/campaign-launcher/client/src/components/CryptoEntity/index.tsx @@ -25,7 +25,7 @@ const CryptoEntity: FC = ({ symbol, size = 'small' }) => { borderRadius="100%" /> )} - + {label} diff --git a/campaign-launcher/client/src/components/CryptoPairEntity/index.tsx b/campaign-launcher/client/src/components/CryptoPairEntity/index.tsx index 4238a97b9..f213283b7 100644 --- a/campaign-launcher/client/src/components/CryptoPairEntity/index.tsx +++ b/campaign-launcher/client/src/components/CryptoPairEntity/index.tsx @@ -27,19 +27,23 @@ const CryptoPairEntity: FC = ({ symbol, size = 'small' }) => { src={baseIcon} alt={baseLabel} borderRadius="100%" - {...getSymbolStyles(size).image} + width={getSymbolStyles(size).image.size} + height={getSymbolStyles(size).image.size} + border={getSymbolStyles(size).image.border} /> )} - + {isLarge ? ( <> {baseLabel ?? base} diff --git a/campaign-launcher/client/src/components/ExchangeSelect/index.tsx b/campaign-launcher/client/src/components/ExchangeSelect/index.tsx deleted file mode 100644 index 7588bb4fd..000000000 --- a/campaign-launcher/client/src/components/ExchangeSelect/index.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import type { FC } from 'react'; - -import { FormControl, InputLabel, MenuItem, Select } from '@mui/material'; - -import type { Exchange } from '@/types'; - -type Props = { - data: Exchange[] | undefined; - onChange: (exchange: string) => void; -}; - -const ExchangeSelect: FC = ({ data, onChange }) => { - return ( - - Sort by Exchange - - - ); -}; - -export default ExchangeSelect; diff --git a/campaign-launcher/client/src/components/Footer/index.tsx b/campaign-launcher/client/src/components/Footer/index.tsx index efed57b7d..08da2b115 100644 --- a/campaign-launcher/client/src/components/Footer/index.tsx +++ b/campaign-launcher/client/src/components/Footer/index.tsx @@ -3,9 +3,10 @@ import type { FC } from 'react'; import GitHubIcon from '@mui/icons-material/GitHub'; import TelegramIcon from '@mui/icons-material/Telegram'; import XIcon from '@mui/icons-material/X'; -import { Box, IconButton, styled, Typography } from '@mui/material'; +import { Box, IconButton, Stack, styled, Typography } from '@mui/material'; import Container from '@/components/Container'; +import { MOBILE_BOTTOM_NAV_HEIGHT } from '@/constants'; const SocialMediaIconButton = styled(IconButton)(({ theme }) => ({ padding: 0, @@ -27,18 +28,22 @@ const handleClickOnSocialButton = (url: string) => { window.open(url, '_blank'); }; -const Footer: FC = () => { +const Footer: FC<{ reserveBottomOffset: boolean }> = ({ + reserveBottomOffset, +}) => { return ( - + - © {new Date().getFullYear()} HuFi powered by HUMAN Protocol @@ -48,7 +53,7 @@ const Footer: FC = () => { alignItems="center" gap="30px" width={{ xs: '100%', md: 'auto' }} - justifyContent={{ xs: 'flex-start', md: 'center' }} + justifyContent="center" > { - + ); diff --git a/campaign-launcher/client/src/components/Header/index.tsx b/campaign-launcher/client/src/components/Header/index.tsx index 36a798771..a2400b521 100644 --- a/campaign-launcher/client/src/components/Header/index.tsx +++ b/campaign-launcher/client/src/components/Header/index.tsx @@ -10,7 +10,6 @@ import { Stack, type SxProps, Toolbar, - Typography, } from '@mui/material'; import { Link, useLocation } from 'react-router'; import { useConnection } from 'wagmi'; @@ -19,48 +18,62 @@ import logo from '@/assets/logo.svg'; import Account from '@/components/Account'; import ConnectWallet from '@/components/ConnectWallet'; import Container from '@/components/Container'; -import CustomTooltip from '@/components/CustomTooltip'; -import InfoTooltipInner from '@/components/InfoTooltipInner'; -import LaunchCampaignButton from '@/components/LaunchCampaignButton'; -import NetworkSwitcher from '@/components/NetworkSwitcher'; import { ROUTES } from '@/constants'; import { useIsMobile } from '@/hooks/useBreakpoints'; +import { OpenInNewIcon } from '@/icons'; import { useActiveAccount } from '@/providers/ActiveAccountProvider'; -import { useSignerContext } from '@/providers/SignerProvider'; type StyledLinkProps = { to: string; text: string; + isActive?: boolean; + isExternal?: boolean; sx?: SxProps; target?: string; onClick?: () => void; }; -const StyledLink = ({ to, text, sx, target, onClick }: StyledLinkProps) => { +const StyledLink = ({ + to, + text, + isActive, + isExternal, + sx, + onClick, +}: StyledLinkProps) => { return ( {text} + {isExternal && } ); }; const DOCS_URL = import.meta.env.VITE_APP_DOCS_URL; const STAKING_DASHBOARD_URL = import.meta.env.VITE_APP_STAKING_DASHBOARD_URL; -const LAUNCH_CAMPAIGN_TOOLTIP = - "You'll need to connect your wallet before launching a campaign"; const Header: FC = () => { const [anchorEl, setAnchorEl] = useState(null); @@ -68,7 +81,6 @@ const Header: FC = () => { const { pathname } = useLocation(); const { activeAddress } = useActiveAccount(); const { isConnected } = useConnection(); - const { isSignerReady } = useSignerContext(); const isMobile = useIsMobile(); const handleMenuOpen = useCallback( @@ -99,12 +111,13 @@ const Header: FC = () => { position="static" elevation={0} sx={{ - position: { xs: 'sticky', sm: 'static' }, + position: 'sticky', top: 0, zIndex: (theme) => theme.zIndex.appBar, bgcolor: 'background.default', boxShadow: 'none', width: '100%', + borderBottom: '1px solid #433679', '& .MuiToolbar-root': { px: { xs: 2, md: 0 }, }, @@ -144,25 +157,32 @@ const Header: FC = () => { - - + + + - - - {activeAddress && isConnected ? : } - - - - {activeAddress && isConnected ? : } + {activeAddress && isConnected ? ( + + ) : ( + + )} { }} > + - - - - {!isSignerReady && ( - - {LAUNCH_CAMPAIGN_TOOLTIP} - - } - slotProps={{ - tooltip: { - sx: { - width: '150px', - lineHeight: '14px', - mr: '12px !important', - }, - }, - }} - > - - - )} - diff --git a/campaign-launcher/client/src/components/LaunchCampaignButton/index.tsx b/campaign-launcher/client/src/components/LaunchCampaignButton/index.tsx index 5e03362df..374165574 100644 --- a/campaign-launcher/client/src/components/LaunchCampaignButton/index.tsx +++ b/campaign-launcher/client/src/components/LaunchCampaignButton/index.tsx @@ -1,106 +1,42 @@ -import { type FC, type PropsWithChildren, useState } from 'react'; +import { type FC } from 'react'; -import { Box, Button, Tooltip, Typography, type SxProps } from '@mui/material'; +import { Button, type SxProps } from '@mui/material'; import { useNavigate } from 'react-router'; -import StakingRequirementModal from '@/components/modals/StakingRequirementModal'; import { ROUTES } from '@/constants'; -import { useIsXlDesktop } from '@/hooks/useBreakpoints'; -import { useStakeContext } from '@/providers/StakeProvider'; - -type ButtonWrapperProps = { - isDisabled: boolean; - withTooltip: boolean; -}; - -const ButtonWrapper: FC> = ({ - isDisabled, - withTooltip, - children, -}) => { - if (isDisabled && withTooltip) { - return ( - - You'll need to connect your wallet before launching a campaign - - } - slotProps={{ - tooltip: { - sx: { - width: '150px', - lineHeight: '14px', - }, - }, - }} - arrow - placement="left" - > - {children} - - ); - } - - return children; -}; type Props = { - variant: 'outlined' | 'contained'; + size?: 'small' | 'medium' | 'large'; sx?: SxProps; - withTooltip?: boolean; handleCallbackOnClick?: () => void; }; const LaunchCampaignButton: FC = ({ - variant, + size, sx, - withTooltip = false, handleCallbackOnClick, }) => { - const [isSetupModalOpen, setIsSetupModalOpen] = useState(false); - const navigate = useNavigate(); - const isXl = useIsXlDesktop(); - const { fetchStakingData, isClientReady } = useStakeContext(); - - const isDisabled = !isClientReady; const handleLaunchCampaignClick = async () => { - if (isDisabled) return null; - - const _stakedAmount = Number(await fetchStakingData()); - if (_stakedAmount === 0) { - setIsSetupModalOpen(true); - } else { - navigate(ROUTES.LAUNCH_CAMPAIGN); - } - + navigate(ROUTES.LAUNCH_CAMPAIGN); handleCallbackOnClick?.(); }; return ( - <> - - - - setIsSetupModalOpen(false)} - /> - + ); }; diff --git a/campaign-launcher/client/src/components/Layout/index.tsx b/campaign-launcher/client/src/components/Layout/index.tsx index 7db7f3ec8..ce65d0d7c 100644 --- a/campaign-launcher/client/src/components/Layout/index.tsx +++ b/campaign-launcher/client/src/components/Layout/index.tsx @@ -1,4 +1,13 @@ -import { type FC, type PropsWithChildren, useEffect } from 'react'; +import { + createContext, + type Dispatch, + type FC, + type PropsWithChildren, + type SetStateAction, + useContext, + useEffect, + useState, +} from 'react'; import { Box } from '@mui/material'; import { useLocation } from 'react-router'; @@ -7,7 +16,30 @@ import Container from '@/components/Container'; import Footer from '@/components/Footer'; import Header from '@/components/Header'; +const LayoutBottomOffsetContext = createContext +> | null>(null); + +export const useReserveLayoutBottomOffset = (enabled: boolean) => { + const setReserveBottomOffset = useContext(LayoutBottomOffsetContext); + + if (!setReserveBottomOffset) { + throw new Error( + 'useReserveLayoutBottomOffset must be used within Layout provider' + ); + } + + useEffect(() => { + setReserveBottomOffset(enabled); + + return () => { + setReserveBottomOffset(false); + }; + }, [enabled, setReserveBottomOffset]); +}; + const Layout: FC = ({ children }) => { + const [reserveBottomOffset, setReserveBottomOffset] = useState(false); const { pathname } = useLocation(); useEffect(() => { @@ -17,8 +49,10 @@ const Layout: FC = ({ children }) => { return (

- {children} -