From c5d076c54b328285742398e0ac9e99c572a09c4c Mon Sep 17 00:00:00 2001 From: tomkovich Date: Mon, 28 Nov 2022 23:47:04 +0100 Subject: [PATCH] Finish the project --- .gitignore | 1 + images/arrow.svg | 3 + images/arrows.png | Bin 0 -> 302 bytes images/bitcoin.png | Bin 0 -> 38744 bytes images/convert.svg | 5 + images/equals.svg | 3 + images/ethereum.png | Bin 0 -> 18995 bytes images/single.svg | 11 + index.html | 140 ++++++++++ js/convert.js | 90 +++++++ js/events.js | 31 +++ js/index.js | 53 ++++ js/markups.js | 44 ++++ js/single.js | 101 +++++++ js/state.js | 19 ++ js/utils.js | 22 ++ js/variables.js | 20 ++ styles/styles.css | 593 +++++++++++++++++++++++++++++++++++++++++ styles/styles.css.map | 1 + styles/styles.scss | 601 ++++++++++++++++++++++++++++++++++++++++++ 20 files changed, 1738 insertions(+) create mode 100644 .gitignore create mode 100644 images/arrow.svg create mode 100644 images/arrows.png create mode 100644 images/bitcoin.png create mode 100644 images/convert.svg create mode 100644 images/equals.svg create mode 100644 images/ethereum.png create mode 100644 images/single.svg create mode 100644 index.html create mode 100644 js/convert.js create mode 100644 js/events.js create mode 100644 js/index.js create mode 100644 js/markups.js create mode 100644 js/single.js create mode 100644 js/state.js create mode 100644 js/utils.js create mode 100644 js/variables.js create mode 100644 styles/styles.css create mode 100644 styles/styles.css.map create mode 100644 styles/styles.scss diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..600d2d3 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.vscode \ No newline at end of file diff --git a/images/arrow.svg b/images/arrow.svg new file mode 100644 index 0000000..7f75dd8 --- /dev/null +++ b/images/arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/images/arrows.png b/images/arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..1851f8b114e2ab712d6bd4562942fc66b3050302 GIT binary patch literal 302 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

6j(6vPapV$6Ji5z$lJM9QQzE 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 + + + + diff --git a/images/equals.svg b/images/equals.svg new file mode 100644 index 0000000..6f3805e --- /dev/null +++ b/images/equals.svg @@ -0,0 +1,3 @@ + + + diff --git a/images/ethereum.png b/images/ethereum.png new file mode 100644 index 0000000000000000000000000000000000000000..04d90cef611abb22ad8954fea0ba9b651a8c0628 GIT binary patch literal 18995 zcmc#)Q+p*$v)wzkZB1<3wr$(a#F^MmCbl)PZQHhOocH?`=c1~f?yI_}UcH{GRS}Bv z67VoMFaQ7mUP@9_`M)^wKZAn!&sT#>4F4CP9VN9~003Cj{}~XFnT7S=CD27#LKsjp zjd%9n0n9>3P6z;~kAwX*0tW!3Mx{iBR6T)LU9hcmT51H`=1Ub%n>Q}cUTzEUtl@L8 zP|XFF_OoQ+ks8SxudRWUFuHq*xNQ)vSZ1I&V43!TqI+OC_JT26Z;6&@0udaIMKNV^ zxcOde@L#;X(`yzzFW$=)6$wnoKFiu4vqZyP&*gJnGuoBveCA7;KX^Z$lT1MB@}flP z|2NmRFDm%UpR}R58G}yuOGQSCrH$IYu?7Q+kG-6tK+wr9;rNLXnH1^HItTNw6Bvln z#j7ZA0cWtHnebz{pzR0tz@Tr)VVHd=m`(9ffvC4ved0)g zb!~&6N(OuX%Y4MDuR|p2H{3KBJcB=qBj^sE1GxJ`6y2ZxT3LVn`6FL>3Mjp~1zE#3 zyUZLQ&o?Lyl-&LJ6~76)ac044Q7GTx(+wgx%mHumImQ0M7M-MF-#6Xoe<-etYsvER z5^Kx<%NpkB*uUf9vAAtnph)6np0Xl4pI~h_Ru>HpEaFdHp$*_QFa4FkklK)F74sljaR-oad&*{}L6~l=(b%=vVIM{4|QT5x^h1 z<2cHI0DD>iQ5!kpk9v2)*!0)ZLNYA6pY77WeW_9pfef(H9{euceg)KrGjBB6Cz`{W z`ZJ$ib^BjzKj}Dh-j(x}9oGIr=cFg?`PSKpvzunqCs@h+fg*9DoV+QlZbNHM{WlOiFx%L$(bvxqCu- zKG&ah9sQri2VvFWkHQ2R0=yfaos;9CbF~?{^{bV^dQWFjUk6qcV@~JA(%W~Vy(ftY z_YgJ!SaQ1_0Ar7^Qo@TkDBCyQk??pSmL)mVbFf*gsJGzxM5EeT5to&~aF)eZbntr5 zI0|boW^HK7!2imocH@sUJ>}r+xcbzWPUd@y(Shj)U#8&5mF|fFGf#Ico?9)W`5Y zU#dBZvp%sG-l^UzSoz;|7)_;Yo%oMj@RBgfI$UhAx6r?Z|N|E{#)mN#6{))`i$avN($Nn9Q5$HYW*=_pgvS0c7X3{oD5L#Yt{3~s$W zy%mv`ZftHBjHO+UdB1O&TA!hF%u3F&B3+?fL8k|QEPWqmE-x3_0zxc=JU%R_a;hRB z-DQ;fcqAxG2~%YIg&X)DC44zZfZ3?d*Ue(E-%|j{o*CVcvz=gVE{$DpCfUSrG!}TG zWQ(k!V^-Y_QJ!8^;^>~E6YJ%VaPxP!&hqjyOxfT#IxzNSGeXM6;k92~*Z;s0E&J># zL6EpA&C+_Z&mSBV4;=B_r(cI%9UA=Q+$79?TZ=Q$KjK zI1+SC9LD5@00usrBr2(puFTEp)z2(ZBqKpW(xda-{oN*^|F8ME5x-1yJOOe<$3aiP z?frE;hArH$a|cr}w7E{dluMNLX)>ovC>O{An9`S%03=yd=NKPS2`4?gwO0_wpnX1gr zWS+!}pB!G<5T!8O6)^M?Bv&ABSJ;dm{&o_2aE(~gwcj3T-iHhUDbeik7QF4EeYL!1 zOICA@2&RN|-qZFzEmkuCR1buxzDh`%h%BGT69~|+g$&jwgn5r<)uvc%vyl?^XDeGe z2Mb6K5M+!tF2@LI#2_(a)7(WzF|AOTZ)wsbPzVV0&W=qR3B-F(5u)o=Y~1|@nJ#Uq zgH5-0%(CE=hb+hdG%0xk?qcw>>Lfg2+v;X43a_JvaS1<9Q{?}}QgT9J`E$PeXFeUm z2m3AJARsPdbVsSX(_=@QOfiOheGy#RUm+2BFAj|~Jh1D~dD{ujTP9)<2}(}ov4$Yk zdxINMqOInftzpxP_us)~d-p$s+7RGe+kmAP3FVcG9V7Wvoy`jMAn3MG_N8HR&GRYJ z49`};mgh$|9cmHnSzLkT`JBgwZnb>v(-6MMXf!}@Iq$aasYm~`m>jf-6+Dk$^DhpU zH_$n=KzKI?eOjKONN#Ua5ZT(>_9Fy>L^3t%Fg5bfS+btiuH`52Cuj@DyBlVrB}_=1 zIyUPBK%;O(T6gr=ixADgG*!Xs~cP7ine{%#|Vo_c*orEmdz)pwIbOSQuvL;R}kPZ^GGC#g`LKN zp)H>0eY*F|2iKx_U~@omYZhWQm=o8#CP|?&1o}=?!}27a08Sk;QXW&$>o& z^$WI99PYd(sNaYE-@XE_50yDw0W`9)aGcw3dkn0xO$0C3v@zdI*xT&sBm3fJOZd?x zlF(>dUwW;sMxgF39(m;Aj6JhK)1M@)e_i4iBe;LT&!a^!SN)=74OF$tV89?tev7R3aa!C?1iTY5w6S4i`VD-6-T832exSg zc6Qdde&V+8*Dq?z%H9(IBk&xXNI$zXpUXWnBXfw4-t_Ls-r2n@4Y15L9d%w-p!8Wf zVNj5Db+aLDf50u>F!Hu-RUlO}`&UuN`KakX27h-sDY|YVlBf3kJ(r~JN*nHsoj@}G zrHBTBXCR7tax349Ce!v?Wu8ROk|W%F$++?>=$60C1fHd+gF!OlbNc$r;Jw`7Ev2Ue zULzb2+VRt$5PK^~?4D#Es~!j;v!{fXEKY3|r3AyXv2i;(a51~F5&9Mz@Mp+t9zzB! zl8d=nOJ}iZg-V&A^j-yp0Px$SgY4)gCTY|tHp@G?eQlh*t-pAWMWDyiq_NNx3``9xzu#iPGU^Vf`EW_^Yyi7W0mYL z(nEn_VDhRh;_VQgSXb|R_vzL8ItuYMt*5DLy|BZ?+=@BIvzW*_-fBEnRM$)S@$@i5M5^4 zfnDhtHG+JU5=^d0D>^6!HdO8ZnW6ACNZ5JtA?`S6R?>G@`?GNUvh??%<@q_^gk+na z5vH1H*d*ku3!l^f8pO87VLqHI=;#PM-GCpW`k6N{$WnDa-U;R?@lP)(&zZCu%Hxd$ zFsMATq>3v9F@EeT#g3GG*wZ9!kPSb;v;$^Q{A{IP_%(B|DChBm@7+DXr8+ZwvP+@W zt51nxUjwc8_l%9c_xq8=))ddbUC$rFT@xGl&xP%7&Ww^GDCe1Gz><=tN%R7Uy9fK; zUKoAv^)STb3^8pj?ZD^0lV#)TsXY}A`kCcZBZYH-J0}z#23Xn#JGf>4DnhXx>dO7} z!HHM>Z2(cxoPF{i9Hy!lX;84H{G5dLtCx;Pzz5^XvZ`{60uZ^nw9hmad8ip!(2yyg8_}(vEo#Sgci%u~@z!;51%|?J(*X4zL{WDKm=VFCF+8AI`Sy|WW z43df8%*1_IU^lKA1Re?u!W>Yc$hHl0DfeEoxs`m~GFW@O}aPdKh?sz*TF^hbVfUNN##>b<`^F#Y{+ zSTlrs4U76n#M93|UHYLIYC&mY3R-^?@)1!C7$+`s;m!N*OcaD_RPKvFrqAKNQsm1F z0>wiN!qF(wLt-f`$vp-@c7lB73rOz}hgE{dIXwBxexQAU{~x_wPzWZaW`T_L_!)_D zzz}<62@V7i4~(r1!#P0VeeDHb-B}Ab8iGoVtM2cgrv{qng9M`jxQH2Nkrvt++XWt) zTE-$NyFyQ#63&=q$LUr5KMwz6rdaILmWWF`dX-qPV#F@vj{qbux_Lp24?UsiRYuN-e1;Hz(s9^G}5u3)F<_#Ue zU|Ss=lIt@x1kbptD=|4+q%?&S>7QG{5ts-Hm-+=-*&s8z#1iZ4n ztJ|A_ZSoK_qQ%FUaY}?C%FcSN8(4ObrzL$#(EwS-s^a3^vSh z@7T48#oW)ohaRI6Af%cgjEK^cK7v7QFv^8Sl@g4S;GWRdDvM9*J>xbMc{9LeBTJtX zUqw%T0KE(f_!g4J>BwAfZVdYNboBm~v#2z@G3$ioW`Rw3LxzlGhP;3aOb?=n=e^f+ z7~1Nrkmb#WMJy*>Shi3|B+{b<|I8SsrUiv-3~6Y~UxYIu{U{KC1rQRFx-lc|T>=Vu z8kax6rXo?F{In0u)`+r=c(F=MXG=+9(bF4CkhiItLPdn+V@iELe!TAn2tNw_+n^;x z&Ba|BH59&I9f@itoOxhp;L_%&C9O0!TRjQb>7R%QuX@MFd1>iug`+@!E1N8m^C<%$ zb;cG{BTVS*vD^%_tdEpx3`d)SP%(VYXt(XRIquZ}MDlA6`{L>5=tSd>QTm)JYnDh7 zbiQ%wWDEB?SKxE_FmJYVi)1j{&Bs zE$I^>ZKAbuT&xHYulBHr)KJ0+y$7apznC~lm{E5<=RNd(3TUI`Psnouy>VKq#9$e* z9-*<&4mY;{h%*;(4#T)&q>j-nC7>oI#}KPB+?OXWBP>7*gs6@xa`s?}AX`V@=Q<6; z+~BEnDQp{H*O{+ZKY2j&L2hOFl8hmBacl3!UzBU>>1%+HRfti4>8D4iy-REVWBrQ; zX&n!71}|FU4{+&eep(ltxv$c@~Lh}-#K0^!^n$*>a4}#Q{kVB)We=iaD7{Uf+8S+Ak=arCwf*`r9t)#t$T zZY(5ZDE`8?Xny%6eW6Z}@qKLFP-f!r@(%C8X|I31&5~2xs)2%MLnumy!IGE`bP4p^ zLO2s4L&BweKFx8sdg1zWhR@?o9>2fG7!RCJ`;f(+exgtz+wyV+I%!CM!~IR09{ARW z;oSZO`Wu`3LAG?A6^FdNx6cgBEf*z+OWTj(BWnLUnD`4GNxWRz{E%y>txDYZSj!W; z9z3)e>V2JTS6@*XH6Nxu8tm+5yDyS2Rap+O$$oIXR5m&CC{a7l{veJFiUI+Jd-`-7 zB+bMG6!s7iwnBFEE6{L}>iUl2JXk+a3_h^?IsP6&_xj8}l*ar%tsvPG)HWex=V)g< zz3Jc71#vO8kmOdYyih_4ighU3d~tdl+$!LXlO8IfF>aCxfspF{8oaEoI`>J^gw*BylA(OLTr)67OFy z^tz^-KD=Uylj*cm%U2mbO1r@9iJpL%giyYqk^lx0} zXk9s3k{@ND6bf<61uPWtolAkq$iQ1Jb16hj*rO0_6fuc|7HBnGw}CRWwjqiue#F;Z z)}Zu7ZQ)AieuZ;Jj(vp~X`54l-0~{C7yjFjv5+vjVyW@$C+L=JkAKod+7rOl>QjOf zCuJTIf5fxS4C2;@@I7CP!KA#iVw-J7tb``0r6-m=UvqcKZAdg7>Z+oYRRn@U0C? zK38^^i9%eo={ZkfxPo;#!uoDpL3fmR;Yh>_n(}ymSP}6G#zU#+vuvh0$o#Kw%#o2^ z%Xf^Cr*~GX2qU-5>Oz_SsvW)Y9yP~1JQ7itM)flZAFkRG*wr6t?-)f)v9TY1Oa2#J zBZ#Bfpx~T~m*X}WRyF~`4Z^Q$`pc_QM!f5I;_Xy)k=EwqcmebB$l<{V3ZBhCJ3y1e z)Ix1lO8T&#&lH|gHJ7GVMc?OdxRtC3L$`X^gFSvYiHt_ER|b}6$-VJ_&>XsF4+ zF!=Ol{9Yg^nkR#Y!ZHHz2RS`L7OMTQzy;RwV_;Z-S41|2rudX=&3&Hp<^}zADdBnY zn5E0E1*bYAI+IY^(Gi~7`1elV1m;ID@sA}hj>k(&F%#TSK=iGbWi$7($S>ZPWVe+M ze2L`pF))8bcDPXMF_t~M6PrcrAi;!qjEpdw8v8yFs{~XUH_uNsDA*X^@+EN`qO(;1 zS);^cWj#*+<@%V%w-5d!GQwq97UD0b-aB}ZIz-h|E+Wd-V9aM=`Vj9@r}v%`g;-mW z({{n?NcasEXhuaP3I?xSKLgr}WTwD3s?Cig$5`+2*T zjcQPn!lI&|QK>{ln;^cJib%mxalxSGrhyn$pu<~9Jpco^RJ$rQ#-I7otz~6tk zJ!%v`j2$^W1%1Nya7B z2Pb^k3z?yZlw?zWG(g?ieG&MD4Wa@fQ;{IhlpNXf}<+&{9u$_JO@ky+SE+1&x zu(JwJnzN93@gas`l+dx;b9gW)9fW|Z^F&~0$U3w6d(VIW=uGbp78M2GAa=ZW&H~T8 z3SLDke!I$oCRvrV;l)YfL)M}i#Up30+k-VMS%o5$RnasVeAgjhU6oE%*Wbb6Gnt(9 zcH|ip*3ar*buE+LH$sh+&t?JQ6buk%MQOT1W}Q8Yzghib!O#cyUqMKqQ7EK!M}A^2t;qkE9~va--ED@Vv?^Q}qaHXC!7!oneuyMf%e_SlEjz z$L%eSHG@H`RKLlCl`1UmW}=#up~In+Xd3~TCZ^_r+QD_1w40RC-?_nmz=bK_v5<1s zYH+Bk3NX$T8Y~m@uf9%iLT*z$ES|Ki@ilNm*+ zP})Q;bRDdRcMKHr@N4HFPCO*+g_A4h3)zkTej2eNMf=Q2E1`;M#g1vDV#S5$8Bh>i z$mQto!~b!He9auf>M@f;!@36OhXJN0mi%R<)Khg#qZpU06Z_~7O{;7aKxx^14wrBe zPv}%~s-5z$5`<5z{yc}b%eR5rdTe~{|K`Z;}&)a{hVaW=wwpf32K1XTHwA zujxg@nio{j>Y$s)fi7(p{wj>GjcqnHibw2H#n+fX-*WWmRxVNAyvT-WY&0kZT zQmp*-J_7QuF!7A`_dEM1b2fhILdAXeKJy93=zh9T=|W!XC?0Q4+48=yY-UIqrdN|Z zLkwl4d_8i;-NZB0IH2Ip8ePoNWA*xkji8im@*sgTA7lbj+rA9aw-}u4YyKj*OiC$X zIj6t1nz81WX64L*BPSYod#03mzJ;H}OJaEI^NXQ)*-}2}h;Vgx<`GG5UF;d5eyIYT zq>7~oFK|cfPxs0gy!SOL!LRzLZNgauIEE{J&+L(%kZ(xJy@|qb<_du8lOwN zEH1HnWE_PwjM2*fO0jz`SQP>ZT`>AX!x|~hz70U)8E{v7(uCN@v>2go(yGUK3w?FL z?h{-6%osVK%+(iCIcFQOhh;aonX?d(ID;*=^F5!IQ{4wQnhz>by`WtZh7FmGB3SE? zc4oo53?2Fzy@m5zzxp5aPZYCgcB$CZkopd!Z;30O|41h3ea7FgXe*Jt^!v4W{4H^U zK-?HG`E2U}R6+sBO3|iuI^r(vm7MW>1fK@h*es3$y9B3Wa70*4vc@Ym^$y205DtQX zbY?NkPxnARJT)k?%T;P?`jTV}Ggnc~sEbE8)Dcr$ZGp}b&G+FomAm9eSzmH#VSH}K z=mz6y!b~~H_^27vcF|}+Iaf&bi|%!-rS3~VQ#FyQc^9`eNBTK5^Tj3$C;5F^i6xW| zJ=Dw}l{lp?#$!Qk6|W`&AGs)A?fS_j@5wWqEG+^d{_}}sPqR8)9WswOw}n?hJS|VMp(sWn1mXk9ZGCLPEH=f`!OlZKvWc`f#BlS5^xtm|qsu1xqS(2j2*j z0eIX`>Xl1iGljr_yj?f}TQ2{MS6b{}&R^G~E}A&MZf5+Or?DP*8WI=;Q|RxI)Yw&z zjNUoF6E;=3Bf^96RI?0U%Uz> z>S$=ThAj-3?`V{1f0Z#=8sh}rIHz$@!P}EyjH%=owICGYachg!Xl1eUNhv`+ zkvcNQ2O7cHr+*iV`_s|@dw%)?UCe`RGUhb9oI^IbhsFzQ{NZmKmy+?LeN;3(;(hB! zq*g4e%9oeyT2op4Fhh!TDB|W2&PZo3>?f@HHCu(Db5Q%&)tim5I#-q(hr@kz=~0yg z7?VEB&iA-Tc@}o-aIj?~)Xd_@Vz@Gh&J}>o@}S>%5w!w`t?~Z>kWh$KDI<;R8{gEV zY%tL#coI5TF$`wXN%p;q;n@>l?=eEjT0tNsCA@rv3ULf#(mooa@AP^LJZ+E|VMg`h z?(jdp#G6{#8!Mr=+U`gQ_pxCbd?pO(%^&L8CH*0rW_`!vV7DRC2&Kb^jK74otHiIm zM zj=Ny!LLCj%+AR`TxU!It0ZvarLk3&m%sZ~vX!0+*(7wi`LyXrUZp>V=SFdpSM`#4# z_bxvN>=R?dd2c*=8O&qSr>JO>ZuZkY{=t2*J@f7p3^HT9(7E+2ro$o@OuKXXfWD}x zQTa=9=8e!4<_FHX#N~38UmNN9A4*R&xFq2AUXo2o-s@m!J^S^?l=o!PA5Almcjl<5 zMJcSzUk2F7zR{NWr8A?Jhr}YWSl+~))MWXXBD%kDUH1ixfHL2sL@xlXP;xey)n|$n zqfBs!-wa)oCY;34i3O%g%((Vr2HW8R>(_sreh|6!w8}A}N znvTg;a8+ZlLY$G6?68imgFPq^HdAv18cN#?2WYHj30i+eVQzG}1!Lq~daNimiEg2^^W? z6bc1yeOUW!CtWE2wiW}I?OHqq;ee=FzsI$tD=c^kkSX6C{q)qBj2s)ap?S}s>AdWx zv9MIY`0%e2;O8kSxS9!Q2(3w6Bi0f&C7L_T#$p=p2gh((KQgG3&9|H#5YZQ959dm# zJF49Z*mO3L(5v62k1i)_2v<<<7)6PhQi0_1N@)mBn&iY7RU1zO?xbvBf>czgbuV7q z^juyig4RNL_^BNdl;PXN+QqAjysWsu5+>Z1ArHLz<wh~NGUkqs+hx*-R_r#n z(GGflzPf6Pl7~&I&36)(DVbaRLT?Ho6x^T|x~Zh$f8S*Ph{}5Zp4GHV9{K*l@{}sf z@|QwThbT1pfCj46=exVxsotkyA0!==ILZ%b~Rjt!Gc><_nR{q|u|jsLLoz zz#;j9`483GcTQ*U&|^tkwz|EyMt+oKZ)xG&!Z1B3RRru+JbGyCVxlgjZ5*$co_0Fn zrnoi7hq2pB*8l0#BFP4_!zoqjP#OkNd0~h#=6H^*Eu`;nKGTQ9xB*_VXU@Ssd7R*e zH|e!~z~4qT|A^3sHT3qkZv21@y?xqJzd6wD2^-6CIb>A^IVw)Jxl-`7pvh$vU1?3r z2(3hb%SMT`A`DQGF+)WB0%y4*f`T-4$p3Y_L-dL>lO29lEGo=J~2pDN64#YWh~6^Z5q^A)n;hK5KSsZ|97|^fh(Zx z;@*c1pUk?CIBh^{(XR19iv;$spBcR0j0@*^j3~e7b81ncY9Q$5BgBO!BvflBHd|M~ zm1s|MVJn6CuEK&Nt~aKji>u>wfVk(^BygbA41uGH?RjtS0epxZ;xGho_V#vMT8&h# zjMqI28*oc2)Mid}u{3HW>Cq*{hHN_$f1bkUO{7~9J8Q?{_H0|UX+7%L$9^^viSpH9 zXazt@hkrlWi=Wt|ZFuT6S)lA!fUHLVHfRFVeyZ-c{gr~b=W?n%r^Pb+RJSRgJYQTw zaP2G{VIaE#nH_=u>W+5>vgS9(xRCaSHp8P-*3I*aSyj1%B&J{X`r8ZSpuzdqMBKg> z(#(cLOA^dWvb7JC8Cvo_Wws6Xw>Y`4{_EP7vMT{M5&bPI?5-zM#ojzQ>dCyZB zHu|Ge^zqkm^yoI#f;Lj1_AVLt6%3^}S2t%nk&uizi1*l9C6`-p)W$yfq!6Hp(`D4( z#PETY>L~`TShC=(Mq;)M(>##pFP|m3PsRagV_Bw-^F~b^(8l3H7V5>{ro_0z~`Rl-te@p&a$*I`_j!*(cB3po?{Ra4yNCXgh_BD#}(%3edXp#O)#Ve#&vNtafe5FJ7`PS&PCD(#_s$u5)M2Y&+VClPO_SeB7?WS zCPUiAtb0Wr!QP)8D4(%ea^@>Xlc3V`&hv!+4%kO#Dc8c_da;fv}p&(teu2XM^T8zHD|f zGhl~L0d*o|`$fLSw`|i0mQ?}qnrUol5ayOD_8N50 zo-oEMqYuU&&*#et1nj0dmBts+gxMvO%Nydntqh78Ia&NNIzFEHVjE>C zfbGd(0Ew4C&0DohIurhot7b=Bu{zZ73rL_gux?9W7DB&6=0)SWV(W{a_jl|84%K3k zCO!IBHQLHLQ=!GiZB<)M!x8E3|m z{LPJ#(wmc$ZaOOqBW-kvTCUontZk3R6u%3V$Gn@1*8P85WV3@G(k$gzbTIAPe=b=g2n84 zjol&eM-aWz5n_Rrs!rslrKRmP52i_NG4!y2jKvqAD@_?^wPtf%~-u0NpO2ju)JsFtf3vK*t()Ey7ALtU@FLqL5?%LkOEL#|)953x|dh>QjIUJ(6Q!5us&q9CUuK#5ga(XOYl<`8x zjjLFVB~cwI<3K&1g?^Osxw>`{3Y7JLd(JsxW>Khlme@E5zYK4UmkPF%f`-)^tX@K6 zmbl#X%HdQU4KVnJoUp73*BH7NP?cfYDY7nS-_>0nb$m~()a%?k9J`1ELL?m=SUw$u zsvw>_iJD(YN)0nUQx%{nMslM67JoFR8GJqcj%f&SID4{)_`Y`YOYRccW{+#6B9emd znp~;!Pchf(hD<&OQe8)foT?4-*Z`?1pT-L*G!mpGsKKni+n0pDJ2XmOLw6>8fQ>v9 zR_*+#08#uSXzw5rsrOOGFZ$vbO+9M={4@Qr*!Q_LCc1-U=sSuuIvw zVpNvlt<6@RV5w^G5IHy_@z7NRf$yq`<4hl`tbyH5#{$XtrtwoiOTq^AC%Vzc@- zA*K5}kV{+p-tl_WpcCG*U$Z2NUy_#73?)t#iLV$?ngn*R!(Kjg(?DHcoFX1A5Tb)= z+Qt6#wsFm)5LM@*vm2$LKb7gGUXLtG)(oW%9QPE8XE7@Ruyv%V|ugOYIARiKt%N5 z;j{e(xUF2Z)TU(ZhpCtsvI_j^PZi8LaN1g;l&_^`94)Z0v;~cSGw{mamf5xJ zy>)MLEP0>&m;kpaGoYg@auz)v$M@TqwP~p56WoadhfWRkv>{K1^mjn&o&5$O2B~H7 z98}$tHtQVY!UZV`r7fMHG(% z_>~jTLsELk_X5hhhZBN2VX0S{Wvv{w^(IGEUA$>n;%&YNzhHeHYo2)od<`1_lO8fX52kc}YV;y0y;+E7K z!R-LcsJW%7rQ?n&9XTUniSK7EO0*UW@mme8gIF##fEd0n^sV1mMtu51&$%}7c~o`G z4|(!Qk>xAo>bCe!-ocr)F#^K79@vzH03qRQaI_EW|HcK(eT@#t=Bv9lRgrC*tsGuA zn;JIf0Q$FyrFk>VZb4ZP+^Sdqu2pd%g)I5vmQksR}vteuW)7QbAOI>{BLI^hGQlt=Ub|~_IH+SUIT7j zJWfS|1)Xf4u)Hd)k(M&+>iwYKd1V+Uf?FjR^%gueA7>0Gwc*W&d|?mmsdZo%`dZ`AbM+IesZ@#JLendqv|2JE?AWOZXL#m4Kw!bk{q7jeP8M_FeQ_xKeh zQCNjDW%Hyl+>6d8Xue$dB;-j}$dMGVi!!%VsYHh6UksEK&{^=i7%_B=&Xb?>^-$m3 z^m6?2FbXv-!I0b8YWvAXJK1J}dMlq*TLt*T857iaVE#NFFzOOVnR01t@o#bTI_{Vl>k3TW2ApOj z2owsEx=mHFfDLj*Tk_v^hvBekNpD||bhJ;)V&bPhGSx^i(=@6w)rh*r(LRIQJQ?nV zj%fWmYmgbc79xc$0ID$%^pF0QxG&XatiDXLnsJy-lWg=H`Md0J2PqaB2)}<%fWQ|G z5YgZfv)9#7aOT2<8$a`^9oYGZ-E;7UpDI>P)v!x!)IVlAy?YTM<+C-%4CfjH5HRdV zH;mM+{n9|YcKrJNkLhjGsfyXXn0)N}bZ_SKuR?G1SacxhE;<9}T(QyV)qL-R?tRwR znpF!lQIu&Gh4b3Z6KvXHySHuDMzT8}vvy6bZr3=31Z&0;;22zvY;6JO6bRxA%C|@# zRJbFITU8}h)&i#j%>6coBm6N1)A89RQ=`omP;_hOLSmu6Jxt$9+qjGy{>IZ?c~y>sliZ`iRQzdo29 z_x9bl@$i3rb54I(a;%7aXIk?`nH6ZzS+e8S_3VUIPuXR(RW8pxOuXiq;F4Fs0v|x2 z{_B0vUj_xc+e!q~k$zaF z^SVp_5#0p|YQKQJ@?po}}2bFiqx7l5tMwbopf=zUZS$pmD3@8yS(myG$=JF;AahqHqW9p_I!X4ni5Dkk|2l>2~eU{ND$#SS_D4&>Iz$c$ESm(_}Eojc* zatTs4C&YC)%SRe!XT$6JZ%ozV^umqH1_c+t?AG@X5zf|*^?Q>;k^eIzb-&slzXLyP zJ0`NO`yPexs#WgF@gQ*iYCy&tC97uA9;npA_#Fqxr*oJlg*+Cu!)5qf}Ek$R&r&Q>5FZw^&K(AN*}_kd~XMrJ7b5DKvHXnmz> z%*=~CbK-{!S&Z&Wi1kKW7-dCy5V-6e5ddMKW`RYhQB1r>T(Ne#!+zpvpNrKf($m&P zp&8+xwdE-P7gHR_j~9CsZo?{xWddat&0xOSl5_ECgR(3@u#?{iEYL>mo7ugvF@`6 z4{P${r$|36XC~JQYe@WG#7Hbd-@LNOI-ySoUxR?V)gk_b7mB%5O+f&Ftc3965yF)b z%t>1Swkh~bkDY&yZl@q1pT+!7gG97mKfU3$S`CT};Y>B?=a|9pZE=`M#@j{BpG0vs zOQ_tx6f16p#1k);?dXC_RWF#@IM=FXj=|umb2!{JLU{+{G*=k?mZRu!E``6YDEmS^ zrR!rzF2=QWirDxa7Z`qebN^E+$p!}>o#=DEC=t)UD4x{SBVGqE*;zKN*E!oJSgM02 zif0=Wet;zchXj~2Nc25%2EX18D1vsH^t?F*PvwMPNOUO$JN^kPq=m-dZcMqs7=4c1 zd!AqFK0QPsg8sgg2O{bzsu7q)YJimpKOcP z$0<UL_6_moYkK9woeB|+w) zKqH3PL`5>!(F*p8Z?MH2OzJG-<#xsK>WH>@uTd{RQf<%f+9OpA0=LUPr$&PmKBK_&MoV z@$>bHTW#8jKRnDYuu|Yu?QhbCaSKT zo1*fU^N6Ow4l#UUqQ@^4cFDjRoTdWovLGW6UF)!qf5zNd9PE$-_2^AoOawM5f=FJC zuD?E6_#u~(s(?04eY}qGi-)zq2Le*k6 z@Je&_`VX5!VbR3=(~_t!Ep5i*m<)E=A5xqoC?7A*oZYf*s!F`$#2nU)o0~q}mm-P!gnLx{`ymK=l~D)alHFybB?XO*Df zU0TJ|=L`_~f$3BeLqTv_3|c%4bm9mFB7<5-Z{!17vArS%`LCqc;6*BX+Pj7Ulu+G%|9(>WPlYjarumx`qr?_E{S3T8ns|i2 zxkZI}ehIF#xR{H19#soilqzaHH!}KoXE@pNh3GUcvZz7xmmEVC14&;3u`O;xAwVi- z@$c+aWZ&38@T56n$A9V$FTzt4lOAL5J;tps5iM8Cc%90@Ls_MwjD9unQ@jWeL z8u#RFso`1th{>l~n(I<+VOW=mLWo7f>=O{1~oX*LNBm5i1b0 z7YIr6s9=_)cA5f2mZ}acE4a^EaLcrDD*mI3RyOKlWMo|zX#Mpd`;5ziHN<8teTSuuqZJZ!AIrZuE3>M{a1_PaYq%c*P=+5<{V@ zdWEzt(hf~xemNGd8Z&gx=8mT_RuOXeIqggs!%f8!Lq1Ee)wk3)7~t2PQLK`ff2Ijx z1ApkPO}QX4tt%Gok_FqqLYc*kF%HEs11+0xi}&bmxa#|wgZJ{?=d<(v8MYVx-!3Xb zDu=J(NjrD5e=g_KN(Kz!dI~ssjBi$~lu2}i{?TE+Qu!Jk^SYNi@k*^6O8#bd0@S7c z4&L3zQ;`k~-(@QT1I1qCnEv$t6?5nROgIi4$8BbgIX-f1A?IgdeK2xN2xX4&!AEF} zzO^nR({hw+jvTSeonldvNh3#$t&#e4I3_fuk3_PM#IO%yuU~T}WYWCDRH=UTPnxE_L6Y0jZyD#&ODcK;m;p*h7nz?M1N8?;1Z1Hw-uOw}4lc(Z=Wtqe_H*z;> zN`q6j$6E~3GFVaf7y$ezG$>o;_hwu-uF1Ou2Wm+-;_q!;oK5 zv%XP*x-UM zu>8%h3^>u>HqpzWbC2S*-K0VDsSQJAJED@ zT<%(u=W!XXE98&hb%~IWA_`-OwK_9rJ-dm#O3o5o+%elXDD*ex`MtCaKLYObGM-q7jy?51(%KMGzn!6>I@^94HYf{#g4%rl$My7e2JPKKzf z-#OFxfewa>jQ(C$$FuaUV9id3vv}`qq-k8{pr#)V-5ck9wL@`oBmjInVc&O1NnUyQ z(LRTsfyKuO*;@ns2DO}Z+2yZ+E|+xDmATYc(sm{H@=M;Bxf)>I+$VLDnJ}0UZ0+$@ z-wve7S+Xu-%b!b`83{4cK(+n6c7+on;upP%s=S(>3(x)R3mZVvCkrFyZkT$5oWQU0 zW@J8lT150cS5aVtT)E04=F`>|fhXQeJx^jg(n|eGk9_`_igonK0x9n*7)-V4C`uOT zM}l0W>)H)z_nS0Oy6}0Hoo@@Se}!fON$Pv`=t6u{D^EP^%>5E_dqX=m`VYrn8PDOiNd5wAM){qgkPXQ6}X zZnp*tZ6^TU_E;eD2Km|jKUU=1^{HJ{CSx>O>_~{HSF7Dua?s>k<<)~({6UXP?1=hN zHwBndGU{8?R57K4fRdDnc-nOie3l%u=TbUne%zJ;ed}OX?3(tlLfgtL9eSt?B)F2{ z*^5?1X`q8J!bq0PouRi!Fjd%hOpb!)u~rnV+@=N6`iatjS3cy%zr8nlt*+;sH2T(s zz=Hv^=Svz+P)7EEE~OR?L+TE8Tu}pL)oW67BuFhR$As{As63B2n}udk z{Y_SLKHAsX79Mje8=E~nFp_gh1v3!Qk~5;LPIm+Auq(5}6MFrP+r&z5nEK8+HG;+d z5mf*#InnyBZT5QXf*s+>rp!UiwZ$ki4U}#+XK7C2*D=xGRK2vR@HMd@sWsGBv9A%c zMnPiOk0T=8xK#_@st=388Ckh9Zbe#5Cpl|`0`orW;Eq+)e4)Fc^i-!N8wnaO-fx^f zjA^Ydi!1YlLhSP;vw9y^MeTzRLNU_rz9h|kRG#7XO-su^{*T^U!p?8Glz-8-BP(JUzRbJ=TT=4jOMZu!2w76vuZ@1l>D+ zqX`+c?F+~mQ~i^qnEg-i+4uD@6+(iFXfOQSV~M^c+5mRgYR1`Q zWO}JQf8|G5LT(>P(yPt8FI(zUs-Qzs+N`i65wEs$w>YRsu5~_sym)?LZdL-2|A09v z{7t9%6$yI7`iJPty)KlC6v{Y5elDZdZ?luOd1aXy*SWU7mb|o;*fF`@V1Vsq)O-Bg z=M(UMS(^CIdfbGVvtK-3e*X~we62SB=JB_Nq1PYF_S_Hygdi0=QD#P?nXt-u@2>h@*x@cNWd%bM;yVO&n%X5zSn_Ofkw2SDF%($ZKZaK6X{mwU6 zvirmYOe%7B;H83>w1$YTLY^73XT{EVCPzCa&s{v;ar=Ax)b3cq;^70-ucX{> zOKP)~7g2pqlfQV=pgSJ&>(AOJ9Ks@+VO-%{z^F7wln#!DT#$j^i;A?RF#U+ zLu^KQ$xwGA@3iJR{$wO;<;bfW)_Mw(xBmWuS)cXw_&j{ehllJY|T L?#4RupUi&&0}O-Z literal 0 HcmV?d00001 diff --git a/images/single.svg b/images/single.svg new file mode 100644 index 0000000..76817e0 --- /dev/null +++ b/images/single.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..79bb2cb --- /dev/null +++ b/index.html @@ -0,0 +1,140 @@ + + + + + + + SuperPuper Currency Converter + + + + + + + + +
+
+

Check live foreign currency exchange rates

+ +
+
+
+
+
+ +
+
Convert
+
+ +
+
+ +
+
Single
+
+
+ +
+
+
+
+ + +
+ +
+
+ + +
+ +
+ +
+ +
+ + +
+
+
+ +
+
+ + + +
+ +
+
+ +
+ +
+ +
+
+ + +
+ +
+
+
+
+
+
+ +
+
+
+ + +
+
+ +
+
+ +
+ + + +
+
+
+
+
+
+ + + + + diff --git a/js/convert.js b/js/convert.js new file mode 100644 index 0000000..9ff8d75 --- /dev/null +++ b/js/convert.js @@ -0,0 +1,90 @@ +import { renderResult } from "./markups.js"; +import state from "./state.js"; +import { convertTime, formatToCurrency, getFullTitle } from "./utils.js"; +import variables from "./variables.js"; + +const { success, formResults, rateConversion, rateLast, toSelect, fromSelect } = + variables; + +export const handleChange = ({ target: { value, name } }) => { + state.pair = { + ...state.pair, + [name]: value, + }; +}; + +export const handleInput = ({ target: { value, name } }) => { + state[name] = Number(value); +}; + +const insertResults = ({ + base_code: baseCode, + target_code: targetCode, + conversion_rate: rate, + conversion_result: result, + time_last_update_utc: time, +}) => { + const from = { + code: baseCode, + amount: state.amount, + full: getFullTitle(state.codes, baseCode), + }; + + const to = { + code: targetCode, + amount: result, + full: getFullTitle(state.codes, targetCode), + }; + + resultFrom.innerHTML = renderResult(from); + resultTo.innerHTML = renderResult(to); + + const baseValue = formatToCurrency(baseCode, 1); + const targetValue = formatToCurrency(targetCode, rate); + + rateConversion.innerText = `${baseValue} = ${targetValue}`; + rateLast.innerText = `Last updated ${convertTime(time)}`; + + formResults.classList.add("show"); +}; + +export const handleSubmit = async (e) => { + e?.preventDefault(); + + const { + url, + amount, + pair: { from, to }, + } = state; + + state.loading = true; + + if (!amount || !from || !to) return; + + try { + const response = await fetch(`${url}/pair/${from}/${to}/${amount}`); + const data = await response.json(); + + if (data.result === success) insertResults(data); + + state.loading = false; + } catch (err) { + console.log(err); + } +}; + +export const switchCurrencies = () => { + const { + pair: { to, from }, + } = state; + + if (!to || !from) return; + + state.pair = { + to: from, + from: to, + }; + + toSelect.value = from; + fromSelect.value = to; +}; diff --git a/js/events.js b/js/events.js new file mode 100644 index 0000000..9e1f85a --- /dev/null +++ b/js/events.js @@ -0,0 +1,31 @@ +import { handleInput, handleSubmit, switchCurrencies } from "./convert.js"; +import { fetchCodes, handleTabClick } from "./index.js"; +import { + addCurrency, + handleActionClick, + handleAddSelectChange, + handleSingleSelectChange, +} from "./single.js"; +import variables from "./variables.js"; + +const { + tabs, + form, + amountInput, + switchButton, + currentCurrency, + currentCurrencyList, + singleSelect, + addButton, +} = variables; + +fetchCodes(); +amountInput.addEventListener("keyup", handleInput); +form.addEventListener("submit", handleSubmit); +switchButton.addEventListener("click", switchCurrencies); +tabs.forEach((tab) => tab.addEventListener("click", handleTabClick)); +currentCurrency.addEventListener("click", handleActionClick); +currentCurrencyList.addEventListener("click", handleActionClick); +singleSelect.addEventListener("change", handleSingleSelectChange); +addButton.addEventListener("click", addCurrency); +addCurrencySelect.addEventListener("change", handleAddSelectChange); diff --git a/js/index.js b/js/index.js new file mode 100644 index 0000000..a7ebcd7 --- /dev/null +++ b/js/index.js @@ -0,0 +1,53 @@ +import variables from "./variables.js"; +import state from "./state.js"; + +import { handleChange } from "./convert.js"; +import { fetchLatest } from "./single.js"; + +const { selects, success, tabs } = variables; + +const renderCodeList = () => { + selects.forEach((select) => { + state.codes.forEach(([code]) => { + const element = document.createElement("option"); + element.value = code; + element.innerText = code; + select.insertAdjacentElement("beforeend", element); + }); + + const name = select.getAttribute("name"); + name && select.addEventListener("change", handleChange); + }); +}; + +export const fetchCodes = async () => { + try { + const response = await fetch(`${state.url}/codes`); + const data = await response.json(); + + if (data.result === success) { + state.codes = data.supported_codes; + renderCodeList(); + fetchLatest(); + } + } catch (err) { + console.log(err); + } +}; + +export const handleTabClick = ({ currentTarget: target }) => { + const { tab } = target.dataset; + const children = document.querySelectorAll(".content"); + + if (!tab || tab === state.currentTab) return; + + tabs.forEach((item) => item.classList.remove("active")); + target.classList.add("active"); + + for (const child of children) { + if (child.dataset.child === tab) child.classList.add("show"); + else child.classList.remove("show"); + } + + state.currentTab = tab; +}; diff --git a/js/markups.js b/js/markups.js new file mode 100644 index 0000000..6451f90 --- /dev/null +++ b/js/markups.js @@ -0,0 +1,44 @@ +import state from "./state.js"; +import { getFullTitle } from "./utils.js"; + +export const renderResult = ({ code, amount, full }) => { + return `
+ +
+ +
+
${code}
+
+ ${full} +
+
+ +
${amount.toFixed(2)}
`; +}; + +const getCurrencyItemAction = (isBase) => { + const { + actions: { remove, change }, + } = state; + const actionName = isBase ? change : remove; + + return ``; +}; + +export const renderCurrencyItem = ({ code, base_code: baseCode, rate = 1 }) => { + const isBase = code === baseCode; + const action = getCurrencyItemAction(isBase); + const full = getFullTitle(state.codes, code); + + return `
+
+
${code}
+
${full}
+
+ +
${rate.toFixed(2)}
+
${action}
+
`; +}; diff --git a/js/single.js b/js/single.js new file mode 100644 index 0000000..b192e57 --- /dev/null +++ b/js/single.js @@ -0,0 +1,101 @@ +import { renderCurrencyItem } from "./markups.js"; +import state from "./state.js"; +import variables from "./variables.js"; + +const { success, currentCurrency, currentCurrencyList } = variables; + +const insertCurrency = (data) => { + currentCurrencyList.insertAdjacentHTML( + "afterbegin", + renderCurrencyItem(data) + ); +}; + +const insertCurrencies = () => { + const { currency, currencies } = state; + const { conversion_rates: rates, base_code: baseCode } = currency; + + currentCurrency.innerHTML = renderCurrencyItem(currency); + currentCurrencyList.innerHTML = ""; + + Object.entries(rates).forEach(([code, rate]) => { + if (code === baseCode || !currencies.includes(code)) return; + insertCurrency({ ...currency, code, rate }); + }); +}; + +export const fetchLatest = async () => { + const { + url, + currency: { code }, + } = state; + + if (!code) return; + + try { + const response = await fetch(`${url}/latest/${code}`); + const data = await response.json(); + + if (data.result === success) { + state.currency = { ...state.currency, ...data }; + insertCurrencies(); + } + } catch (err) { + console.log(err); + } +}; + +const removeCurrency = (target) => { + const parent = target.parentElement.parentElement; + const { item } = parent.dataset; + + if (!item) return; + + const element = document.querySelector(`[data-item="${item}"]`); + element.remove(); +}; + +const changeCurrency = () => { + currentCurrency.parentElement.classList.add("active"); +}; + +export const handleActionClick = ({ target }) => { + const { action } = target.dataset; + + if (!action) return; + + const { + actions: { remove }, + } = state; + + action === remove ? removeCurrency(target) : changeCurrency(); +}; + +export const handleSingleSelectChange = ({ target }) => { + target.parentElement.classList.remove("active"); + state.currency = { ...state.currency, code: target.value }; + fetchLatest(); + target.value = ""; +}; + +export const addCurrency = ({ currentTarget }) => { + currentTarget.parentElement.classList.add("active"); +}; + +export const handleAddSelectChange = ({ target }) => { + const { + currency: { conversion_rates: rates, base_code: baseCode }, + } = state; + + const currency = Object.entries(rates).find( + ([key]) => key === target.value && key !== baseCode + ); + + if (currency) { + const [code, amount] = currency; + insertCurrency({ ...state.currency, code, rate: amount }); + } + + target.parentElement.classList.remove("active"); + target.value = ""; +}; diff --git a/js/state.js b/js/state.js new file mode 100644 index 0000000..c6d7930 --- /dev/null +++ b/js/state.js @@ -0,0 +1,19 @@ +export default { + url: "https://v6.exchangerate-api.com/v6/{API KEY}", + codes: [], + pair: { + from: "", + to: "", + }, + amount: "", + loading: false, + currentTab: "convert", + currency: { + code: "USD", + }, + currencies: ["USD", "EUR", "BYN"], + actions: { + remove: "remove", + change: "change", + }, +}; diff --git a/js/utils.js b/js/utils.js new file mode 100644 index 0000000..7a8f04a --- /dev/null +++ b/js/utils.js @@ -0,0 +1,22 @@ +export const getFullTitle = (codes, code) => { + const [, title] = codes.find((item) => item.includes(code)); + return title; +}; + +export const formatToCurrency = (code, amount) => { + return new Intl.NumberFormat("en-US", { + style: "currency", + currency: code, + maximumFractionDigits: 2, + }).format(amount); +}; + +export const convertTime = (date) => { + const options = { + year: "numeric", + month: "long", + day: "numeric", + }; + + return new Intl.DateTimeFormat("en-US", options).format(new Date(date)); +}; diff --git a/js/variables.js b/js/variables.js new file mode 100644 index 0000000..e40deeb --- /dev/null +++ b/js/variables.js @@ -0,0 +1,20 @@ +export default { + success: "success", + selects: document.querySelectorAll(".select"), + amountInput: document.getElementById("amount"), + form: document.querySelector(".form"), + resultFrom: document.getElementById("resultFrom"), + resultTo: document.getElementById("resultTo"), + formResults: document.querySelector(".form-results"), + rateConversion: document.querySelector(".rate-conversion"), + rateLast: document.querySelector(".rate-last"), + switchButton: document.querySelector(".switch-currencies"), + toSelect: document.getElementById("to"), + fromSelect: document.getElementById("from"), + tabs: document.querySelectorAll(".tab"), + currentCurrency: document.querySelector(".currency-single__item"), + currentCurrencyList: document.querySelector(".currency-list"), + singleSelect: document.getElementById("singleSelect"), + addButton: document.querySelector(".currency-add__button"), + addCurrencySelect: document.getElementById("addCurrencySelect"), +}; diff --git a/styles/styles.css b/styles/styles.css new file mode 100644 index 0000000..fd203e9 --- /dev/null +++ b/styles/styles.css @@ -0,0 +1,593 @@ +body { + color: #f5f5f5; + margin: 0; + padding: 0; + background: #1e192d; + font-family: Inter, Roboto, sans-serif; + overflow-x: hidden; +} + +input, +button { + background: none; + outline: none; + border: none; + font-family: Inter, Roboto, sans-serif; + font-size: 16px; + color: #fff; +} + +input::-webkit-outer-spin-button, +input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} + +input[type=number] { + -moz-appearance: textfield; +} + +* { + box-sizing: border-box; +} + +.container { + width: 1024px; + margin: 0 auto; + min-height: 100vh; + display: flex; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + row-gap: 28px; +} +@media screen and (max-width: 1100px) { + .container { + width: 100vw; + padding: 5px; + } +} + +h1 { + width: 100%; + text-align: center; + font-size: 22px; + color: #fff; + margin: 0; + line-height: 27px; + font-weight: 700; +} +@media screen and (max-width: 1100px) { + h1 { + font-size: 17px; + line-height: 24px; + } +} + +.main { + width: 100%; + position: relative; +} +.main:after, .main:before { + position: absolute; + content: ""; + display: block; +} +@media screen and (max-width: 1100px) { + .main:after, .main:before { + display: none; + } +} +.main:before { + width: 220px; + height: 220px; + bottom: 0; + left: -180px; + background: url(../images/bitcoin.png) no-repeat center/contain; + z-index: -1; +} +.main:after { + width: 144px; + height: 144px; + top: -72px; + right: 0; + background: url(../images/ethereum.png) no-repeat center/contain; + z-index: 1; +} + +.wrapper { + background: linear-gradient(180deg, #271d35 0%, rgba(39, 29, 53, 0.2) 100%); + -webkit-backdrop-filter: blur(5px); + backdrop-filter: blur(5px); + border-radius: 12px; + padding: 9px 45px 37px 45px; + width: 100%; +} +@media screen and (max-width: 1100px) { + .wrapper { + padding: 9px 20px 15px 20px; + } +} +@media screen and (max-width: 500px) { + .wrapper { + padding: 10px; + } +} + +.tabs { + display: flex; + align-items: center; + justify-content: center; + position: relative; +} +.tabs:before { + bottom: 0; + left: 50%; + transform: translateX(-50%); + position: absolute; + width: 70%; + height: 2px; + min-width: 660px; + background: linear-gradient(90deg, rgba(217, 217, 217, 0) 12.5%, #ffffff 51.57%, rgba(255, 255, 255, 0) 86.98%); + opacity: 0.2; + content: ""; +} +@media screen and (max-width: 1100px) { + .tabs:before { + min-width: unset; + width: 100%; + } +} + +.tab { + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + -moz-column-gap: 10px; + column-gap: 10px; + padding: 15px 10px; + opacity: 0.5; + transition: opacity 0.25s ease; + position: relative; +} +.tab:after { + bottom: 0; + left: 50%; + transform: translateX(-50%); + position: absolute; + width: 0; + height: 2px; + content: ""; + transition: width 0.25s ease; + background: linear-gradient(90deg, rgba(255, 88, 95, 0) 0%, #fa5897 51.57%, rgba(255, 88, 95, 0) 100%); +} +.tab-icon { + width: 18px; + height: 18px; +} +.tab:hover { + opacity: 0.8; +} +.tab.active { + opacity: 1; +} +.tab.active::after { + width: 100%; +} + +.form { + margin-top: 40px; +} +.form label { + display: block; + font-weight: 400; + font-size: 13px; + line-height: 16px; + color: #b7b7b7; + margin-bottom: 10px; + padding-left: 16px; +} +.form-inputs { + display: flex; + align-items: center; + justify-content: center; + gap: 25px; +} +@media screen and (max-width: 1100px) { + .form-inputs { + min-width: unset; + flex-direction: column; + } +} +.form-group { + width: 320px; +} +@media screen and (max-width: 700px) { + .form-group { + width: 100%; + } +} +.form-group input { + width: 100%; + background: #2b2440; + border-radius: 12px; + font-weight: 600; + line-height: 19px; + color: #f5f5f5; + border: 2px solid rgba(255, 88, 95, 0.35); + padding: 14px; +} +.form-selects { + display: flex; + align-items: center; + justify-content: center; + -moz-column-gap: 25px; + column-gap: 25px; + align-items: flex-end; +} +@media screen and (max-width: 700px) { + .form-selects { + width: 100%; + -moz-column-gap: 10px; + column-gap: 10px; + } +} +@media screen and (max-width: 500px) { + .form-selects { + flex-direction: column; + align-items: center; + } +} +@media screen and (max-width: 700px) { + .form-select { + flex-grow: 1; + } +} +@media screen and (max-width: 500px) { + .form-select { + width: 100%; + } +} +.form-select__icon { + display: flex; + align-items: center; + justify-content: center; + background: #2b2440; + width: 52px; + height: 52px; + border-radius: 50%; + cursor: pointer; + opacity: 0.5; + transition: opacity 0.25s ease; +} +@media screen and (max-width: 500px) { + .form-select__icon { + margin: 25px auto 0 auto; + } +} +.form-select__icon:hover { + opacity: 1; +} +.form-info { + display: flex; + align-items: center; + justify-content: space-between; + margin-top: 25px; + position: relative; +} +@media screen and (max-width: 700px) { + .form-info { + flex-direction: column; + gap: 20px; + margin-top: 20px; + } +} +.form-submit { + background: linear-gradient(97.46deg, #ff585f 3.28%, #fa5897 95.35%); + border-radius: 12px; + font-size: 17px; + line-height: 21px; + color: #fff; + padding: 12px 30px; + cursor: pointer; + margin-left: auto; +} +.form-submit:hover { + background: linear-gradient(97.46deg, #c03940 3.28%, #b33263 95.35%); +} +@media screen and (max-width: 700px) { + .form-submit { + order: -1; + } +} +.form-results { + display: flex; + align-items: center; + justify-content: center; + -moz-column-gap: 15px; + column-gap: 15px; + opacity: 0; +} +@media screen and (max-width: 700px) { + .form-results { + width: 100%; + } +} +@media screen and (max-width: 500px) { + .form-results { + flex-direction: column; + gap: 10px; + } +} +.form-results.show { + opacity: 1; +} +.form-result__equals { + background: #2b2440; + border-radius: 50%; + width: 30px; + height: 30px; + display: flex; + align-items: center; + justify-content: center; +} +.form-result__item { + background: #1e192d; + border-radius: 12px; + padding: 12px; + align-items: center; + display: grid; + -moz-column-gap: 8px; + column-gap: 8px; + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + grid-template-columns: 32px 1fr; + grid-template-areas: "icon titles" "icon amount"; +} +@media screen and (max-width: 700px) { + .form-result__item { + flex-grow: 1; + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + } +} +@media screen and (max-width: 500px) { + .form-result__item { + width: 100%; + } +} +.form-result__item.from .icon { + background: #fc5782; + box-shadow: 0px 0px 0px 2px rgba(252, 87, 130, 0.25); +} +.form-result__item.to .icon { + background: #1fc4af; + box-shadow: 0px 0px 0px 2px rgba(31, 196, 175, 0.25); +} +.form-result__item .icon { + display: flex; + align-items: center; + justify-content: center; + grid-area: icon; + border-radius: 50%; + width: 30px; + height: 30px; +} +.form-result__item-titles { + grid-area: titles; + display: flex; + align-items: center; + justify-content: start; + -moz-column-gap: 10px; + column-gap: 10px; +} +@media screen and (max-width: 700px) { + .form-result__item-titles { + flex-direction: column; + align-items: start; + } +} +.form-result__item-title { + font-weight: 500; + font-size: 14px; + color: #fff; + line-height: 17px; +} +.form-result__item-full { + font-weight: 400; + font-size: 12px; + line-height: 15px; + color: rgba(245, 245, 245, 0.5); +} +.form-result__item-value { + grid-area: amount; + font-weight: 700; + font-size: 19px; + line-height: 23px; + margin-top: 6px; +} + +.rate-information { + display: flex; + align-items: center; + justify-content: space-between; + margin-top: 16px; + font-weight: 400; + font-size: 12px; + line-height: 15px; + color: rgba(245, 245, 245, 0.5); +} +@media screen and (max-width: 500px) { + .rate-information { + flex-direction: column; + gap: 10px; + } +} +.rate-conversion { + color: #fff; +} + +.select { + cursor: pointer; + min-width: 240px; + background: #2b2440; + border-radius: 12px; + font-weight: 600; + line-height: 19px; + color: #f5f5f5; + border: 2px solid rgba(255, 88, 95, 0.35); + padding: 14px; +} +@media screen and (max-width: 700px) { + .select { + min-width: unset; + width: 100%; + } +} + +.currency-wrapper { + margin-top: 40px; +} +.currency-item { + display: grid; + align-items: center; + grid-template-columns: 1fr 1fr 1fr; + width: 100%; + border-radius: 12px; + padding: 14px 20px; + border: 2px solid #fa5897; + background: none; +} +@media screen and (max-width: 500px) { + .currency-item { + padding: 10px; + align-content: center; + } +} +.currency-titles { + display: flex; + align-items: center; + justify-content: start; + -moz-column-gap: 19px; + column-gap: 19px; +} +@media screen and (max-width: 500px) { + .currency-titles { + flex-direction: column; + gap: 5px; + align-items: start; + } +} +.currency-title { + font-weight: 600; + line-height: 19px; + color: #f5f5f5; + min-width: 40px; +} +.currency-full { + font-weight: 400; + font-size: 12px; + line-height: 15px; + color: rgba(245, 245, 245, 0.5); +} +.currency-amount { + text-align: center; + font-weight: 700; + font-size: 18px; + line-height: 22px; +} +.currency-single { + position: relative; +} +.currency-single .currency-item { + height: 69px; +} +.currency-single .select { + display: none; + position: absolute; + top: 50%; + transform: translateY(-50%); + right: 10px; + width: calc(100% - 20px); + max-width: 290px; +} +.currency-single.active .currency-button { + display: none; +} +.currency-single.active .select { + display: block; +} +.currency-action { + text-align: right; +} +.currency-current { + border: none; + background: #879fff; +} +.currency-current .currency-full { + color: #2b2440; +} +.currency-list { + margin-top: 30px; + display: flex; + flex-direction: column; + row-gap: 8px; +} +.currency-button { + border: 1px solid rgba(255, 255, 255, 0.5); + border-radius: 8px; + font-weight: 500; + font-size: 12px; + line-height: 15px; + color: rgba(255, 255, 255, 0.5); + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + padding: 10px 24px; + cursor: pointer; + transition: border 0.25s, color 0.25s; + text-transform: capitalize; +} +.currency-button:hover { + border: 1px solid rgb(255, 255, 255); + color: rgb(255, 255, 255); +} +.currency-add { + display: flex; + justify-content: end; + margin-top: 20px; +} +.currency-add__button { + background: linear-gradient(97.46deg, #ff585f 3.28%, #fa5897 95.35%); + border-radius: 12px; + font-size: 17px; + line-height: 21px; + color: #fff; + padding: 12px 30px; + cursor: pointer; + margin-left: auto; +} +.currency-add__button:hover { + background: linear-gradient(97.46deg, #c03940 3.28%, #b33263 95.35%); +} +.currency-add .select { + display: none; + padding: 11px 14px; +} +.currency-add.active .select { + display: block; +} +.currency-add.active .currency-add__button { + display: none; +} + +.content { + display: none; +} +.content.show { + display: block; +}/*# sourceMappingURL=styles.css.map */ \ No newline at end of file diff --git a/styles/styles.css.map b/styles/styles.css.map new file mode 100644 index 0000000..3ed0af8 --- /dev/null +++ b/styles/styles.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["styles.scss","styles.css"],"names":[],"mappings":"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","file":"styles.css"} \ No newline at end of file diff --git a/styles/styles.scss b/styles/styles.scss new file mode 100644 index 0000000..6389ce7 --- /dev/null +++ b/styles/styles.scss @@ -0,0 +1,601 @@ +body { + color: #f5f5f5; + margin: 0; + padding: 0; + background: #1e192d; + font-family: Inter, Roboto, sans-serif; + overflow-x: hidden; +} + +input, +button { + background: none; + outline: none; + border: none; + font-family: Inter, Roboto, sans-serif; + font-size: 16px; + color: #fff; +} + +input::-webkit-outer-spin-button, +input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} + +input[type="number"] { + -moz-appearance: textfield; +} + +* { + box-sizing: border-box; +} + +@mixin flex($justify: center) { + display: flex; + align-items: center; + justify-content: $justify; +} + +@mixin input { + background: #2b2440; + border-radius: 12px; + font-weight: 600; + line-height: 19px; + color: #f5f5f5; + border: 2px solid rgba(255, 88, 95, 0.35); + padding: 14px; +} + +@mixin button { + background: linear-gradient(97.46deg, #ff585f 3.28%, #fa5897 95.35%); + border-radius: 12px; + font-size: 17px; + line-height: 21px; + color: #fff; + padding: 12px 30px; + cursor: pointer; + margin-left: auto; + + &:hover { + background: linear-gradient(97.46deg, #c03940 3.28%, #b33263 95.35%); + } +} + +.container { + width: 1024px; + margin: 0 auto; + min-height: 100vh; + display: flex; + @include flex; + flex-direction: column; + row-gap: 28px; + + @media screen and (max-width: 1100px) { + width: 100vw; + padding: 5px; + } +} + +h1 { + width: 100%; + text-align: center; + font-size: 22px; + color: #fff; + margin: 0; + line-height: 27px; + font-weight: 700; + + @media screen and (max-width: 1100px) { + font-size: 17px; + line-height: 24px; + } +} + +.main { + width: 100%; + position: relative; + + &:after, + &:before { + position: absolute; + content: ""; + display: block; + + @media screen and (max-width: 1100px) { + display: none; + } + } + + &:before { + width: 220px; + height: 220px; + bottom: 0; + left: -180px; + background: url(../images/bitcoin.png) no-repeat center/contain; + z-index: -1; + } + + &:after { + width: 144px; + height: 144px; + top: -72px; + right: 0; + background: url(../images/ethereum.png) no-repeat center/contain; + z-index: 1; + } +} + +.wrapper { + background: linear-gradient(180deg, #271d35 0%, rgba(39, 29, 53, 0.2) 100%); + backdrop-filter: blur(5px); + border-radius: 12px; + padding: 9px 45px 37px 45px; + width: 100%; + + @media screen and (max-width: 1100px) { + padding: 9px 20px 15px 20px; + } + + @media screen and (max-width: 500px) { + padding: 10px; + } +} + +.tabs { + @include flex; + position: relative; + + &:before { + bottom: 0; + left: 50%; + transform: translateX(-50%); + position: absolute; + width: 70%; + height: 2px; + min-width: 660px; + background: linear-gradient(90deg, rgba(217, 217, 217, 0) 12.5%, #ffffff 51.57%, rgba(255, 255, 255, 0) 86.98%); + opacity: 0.2; + content: ""; + + @media screen and (max-width: 1100px) { + min-width: unset; + width: 100%; + } + } +} + +.tab { + @include flex; + cursor: pointer; + column-gap: 10px; + padding: 15px 10px; + opacity: 0.5; + transition: opacity 0.25s ease; + position: relative; + + &:after { + bottom: 0; + left: 50%; + transform: translateX(-50%); + position: absolute; + width: 0; + height: 2px; + content: ""; + transition: width 0.25s ease; + background: linear-gradient(90deg, rgba(255, 88, 95, 0) 0%, #fa5897 51.57%, rgba(255, 88, 95, 0) 100%); + } + + &-icon { + width: 18px; + height: 18px; + } + + &:hover { + opacity: 0.8; + } + + &.active { + opacity: 1; + + &::after { + width: 100%; + } + } +} + +.form { + margin-top: 40px; + + label { + display: block; + font-weight: 400; + font-size: 13px; + line-height: 16px; + color: #b7b7b7; + margin-bottom: 10px; + padding-left: 16px; + } + + &-inputs { + @include flex; + gap: 25px; + + @media screen and (max-width: 1100px) { + min-width: unset; + flex-direction: column; + } + } + + &-group { + width: 320px; + + @media screen and (max-width: 700px) { + width: 100%; + } + + input { + width: 100%; + @include input; + } + } + + &-selects { + @include flex; + column-gap: 25px; + align-items: flex-end; + + @media screen and (max-width: 700px) { + width: 100%; + column-gap: 10px; + } + + @media screen and (max-width: 500px) { + flex-direction: column; + align-items: center; + } + } + + &-select { + @media screen and (max-width: 700px) { + flex-grow: 1; + } + + @media screen and (max-width: 500px) { + width: 100%; + } + + &__icon { + @include flex; + background: #2b2440; + width: 52px; + height: 52px; + border-radius: 50%; + cursor: pointer; + opacity: 0.5; + transition: opacity 0.25s ease; + + @media screen and (max-width: 500px) { + margin: 25px auto 0 auto; + } + + &:hover { + opacity: 1; + } + } + } + + &-info { + @include flex(space-between); + margin-top: 25px; + position: relative; + + @media screen and (max-width: 700px) { + flex-direction: column; + gap: 20px; + margin-top: 20px; + } + } + + &-submit { + @include button; + + @media screen and (max-width: 700px) { + order: -1; + } + } + + &-results { + @include flex; + column-gap: 15px; + opacity: 0; + + @media screen and (max-width: 700px) { + width: 100%; + } + + @media screen and (max-width: 500px) { + flex-direction: column; + gap: 10px; + } + + &.show { + opacity: 1; + } + } + + &-result { + &__equals { + background: #2b2440; + border-radius: 50%; + width: 30px; + height: 30px; + @include flex; + } + + &__item { + background: #1e192d; + border-radius: 12px; + padding: 12px; + align-items: center; + display: grid; + column-gap: 8px; + width: max-content; + grid-template-columns: 32px 1fr; + grid-template-areas: + "icon titles" + "icon amount"; + + @media screen and (max-width: 700px) { + flex-grow: 1; + width: max-content; + } + + @media screen and (max-width: 500px) { + width: 100%; + } + + &.from { + .icon { + background: #fc5782; + box-shadow: 0px 0px 0px 2px rgba(252, 87, 130, 0.25); + } + } + + &.to { + .icon { + background: #1fc4af; + box-shadow: 0px 0px 0px 2px rgba(31, 196, 175, 0.25); + } + } + + .icon { + @include flex; + grid-area: icon; + border-radius: 50%; + width: 30px; + height: 30px; + } + + &-titles { + grid-area: titles; + @include flex(start); + column-gap: 10px; + + @media screen and (max-width: 700px) { + flex-direction: column; + align-items: start; + } + } + + &-title { + font-weight: 500; + font-size: 14px; + color: #fff; + line-height: 17px; + } + + &-full { + font-weight: 400; + font-size: 12px; + line-height: 15px; + color: rgba(245, 245, 245, 0.5); + } + + &-value { + grid-area: amount; + font-weight: 700; + font-size: 19px; + line-height: 23px; + margin-top: 6px; + } + } + } +} + +.rate { + &-information { + @include flex(space-between); + margin-top: 16px; + font-weight: 400; + font-size: 12px; + line-height: 15px; + color: rgba(245, 245, 245, 0.5); + + @media screen and (max-width: 500px) { + flex-direction: column; + gap: 10px; + } + } + + &-conversion { + color: #fff; + } +} + +.select { + cursor: pointer; + min-width: 240px; + @include input; + + @media screen and (max-width: 700px) { + min-width: unset; + width: 100%; + } +} + +.currency { + &-wrapper { + margin-top: 40px; + } + + &-item { + display: grid; + align-items: center; + grid-template-columns: 1fr 1fr 1fr; + width: 100%; + border-radius: 12px; + padding: 14px 20px; + border: 2px solid #fa5897; + background: none; + + @media screen and (max-width: 500px) { + padding: 10px; + align-content: center; + } + } + + &-titles { + @include flex(start); + column-gap: 19px; + + @media screen and (max-width: 500px) { + flex-direction: column; + gap: 5px; + align-items: start; + } + } + + &-title { + font-weight: 600; + line-height: 19px; + color: #f5f5f5; + min-width: 40px; + } + + &-full { + font-weight: 400; + font-size: 12px; + line-height: 15px; + color: rgba(245, 245, 245, 0.5); + } + + &-amount { + text-align: center; + font-weight: 700; + font-size: 18px; + line-height: 22px; + } + + &-single { + position: relative; + + .currency-item { + height: 69px; + } + + .select { + display: none; + position: absolute; + top: 50%; + transform: translateY(-50%); + right: 10px; + width: calc(100% - 20px); + max-width: 290px; + } + + &.active { + .currency-button { + display: none; + } + + .select { + display: block; + } + } + } + + &-action { + text-align: right; + } + + &-current { + border: none; + background: #879fff; + + .currency { + &-full { + color: #2b2440; + } + } + } + + &-list { + margin-top: 30px; + display: flex; + flex-direction: column; + row-gap: 8px; + } + + &-button { + border: 1px solid rgba(255, 255, 255, 0.5); + border-radius: 8px; + font-weight: 500; + font-size: 12px; + line-height: 15px; + color: rgba(255, 255, 255, 0.5); + width: max-content; + padding: 10px 24px; + cursor: pointer; + transition: border 0.25s, color 0.25s; + text-transform: capitalize; + + &:hover { + border: 1px solid rgba(255, 255, 255, 1); + color: rgba(255, 255, 255, 1); + } + } + + &-add { + display: flex; + justify-content: end; + margin-top: 20px; + + &__button { + @include button; + } + + .select { + display: none; + padding: 11px 14px; + } + + &.active { + .select { + display: block; + } + + .currency-add__button { + display: none; + } + } + } +} + +.content { + display: none; + + &.show { + display: block; + } +}