From 4dcddf56fe237283ee602c1b0f0b2cbbf34fa617 Mon Sep 17 00:00:00 2001 From: shinoki Date: Sat, 17 Jun 2023 20:45:16 +0300 Subject: [PATCH] adaptive fixes, some new features --- design/icons/beer.png | Bin 0 -> 14056 bytes design/icons/cder.png | Bin 0 -> 12452 bytes design/icons/champage.png | Bin 0 -> 10903 bytes design/icons/coffee.png | Bin 0 -> 8841 bytes design/icons/cola.png | Bin 0 -> 10516 bytes design/icons/index.ts | 8 + design/icons/mineral-water.png | Bin 0 -> 7373 bytes package-lock.json | 11 + package.json | 1 + src/components/layout/Layout.tsx | 15 +- src/components/layout/header/Header.tsx | 2 - src/components/layout/header/Logo.tsx | 2 +- src/components/screen/category/Category.tsx | 144 +-------- .../screen/category/utils/filter.ts | 41 +++ src/components/screen/category/utils/sort.ts | 49 ++++ src/components/screen/home/Home.tsx | 32 +- src/components/screen/home/Promo.tsx | 4 +- src/components/screen/product/Product.tsx | 3 +- src/components/screen/user/Favourites.tsx | 73 +++++ src/components/screen/user/Orders.tsx | 174 +++++++++++ src/components/screen/user/Personal.tsx | 77 +++++ src/components/screen/user/Title.tsx | 8 + src/components/screen/user/User.tsx | 276 ++---------------- src/components/ui/card/Card.tsx | 42 +-- src/components/ui/checkout/Eventually.tsx | 17 +- src/components/ui/checkout/delivery/Type.tsx | 8 +- src/components/ui/drawer/DrawCategory.tsx | 70 +++-- src/components/ui/order/OrderLoader.tsx | 17 ++ src/components/ui/product/view/View.tsx | 136 +-------- src/components/ui/refinements/Refinements.tsx | 42 +-- src/pages/404.tsx | 12 + src/pages/_app.tsx | 45 ++- src/pages/_document.tsx | 21 +- src/pages/category/[slug].tsx | 50 ++-- src/pages/checkout/success/index.tsx | 78 ++++- src/pages/global-error.tsx | 26 ++ src/pages/product/[slug].tsx | 8 +- src/pages/user/index.tsx | 9 - src/services/Server/ServerProduct.ts | 9 +- src/services/Server/SeverUser.ts | 13 + src/store/product/product.slice.ts | 11 +- src/store/product/product.types.ts | 6 +- src/types/product.interface.ts | 32 +- 43 files changed, 854 insertions(+), 718 deletions(-) create mode 100644 design/icons/beer.png create mode 100644 design/icons/cder.png create mode 100644 design/icons/champage.png create mode 100644 design/icons/coffee.png create mode 100644 design/icons/cola.png create mode 100644 design/icons/index.ts create mode 100644 design/icons/mineral-water.png create mode 100644 src/components/screen/category/utils/filter.ts create mode 100644 src/components/screen/category/utils/sort.ts create mode 100644 src/components/screen/user/Favourites.tsx create mode 100644 src/components/screen/user/Orders.tsx create mode 100644 src/components/screen/user/Personal.tsx create mode 100644 src/components/screen/user/Title.tsx create mode 100644 src/components/ui/order/OrderLoader.tsx create mode 100644 src/pages/404.tsx create mode 100644 src/pages/global-error.tsx diff --git a/design/icons/beer.png b/design/icons/beer.png new file mode 100644 index 0000000000000000000000000000000000000000..943c58841b4d42355d122470feff885fa1a603b7 GIT binary patch literal 14056 zcmeHOXIN8Pv)(a~P?CVu&_QX6K$PBtpcs&%C{-Y!QUvKpkrD`CMIfkjh#C(TngW7I zN5rF)7%2kMdoLor+zlK(e&4Tq|6iVmhh*(pv)-BY&g@yUH@8fT^pH%vOaK5Nai?_8 z0>D1-<34}^2L4$LXjudQFnXS{^Z@{7_MKk{kdlT50AT>9t9>pYZ91K?CC{{DyV7Y0 z9h;0e5si>Nz;^8N$8*V2=OPc>b|xJykA58YYM?PLIZ-n5cr?GxM-d$kJ^o_?P5lkq zMZMdaDj7czmHj=-e%;r@G+k|6Ew2QIu9sG>clKWIy&eZH|G)czIY4ki35DsDJe;aN zEtw>9$E%!@>Ui6Auu{v8c8i3HU!=#S;?@Y1Y6?F9RI${GhKQmTMo*O*&??0Y^OSqy z<*jI(qzWk)Q{2HEJ{ABlVbT%1Dm;FJG;@FPT10h4YZ8}X^>dP@w2STJ5Qu8%y}Fm` z)?u6n8nptgZ`t72&bZ8#_ZI3Fm$b)KO;_~5bH-GGX0-fwr=5uAa?*F?M<6fGaZ zv*sQCP+u1{c@P{WEVIGtdrzfI;H!*yo`_DfwI2gVIX<5xZS~>txoR2lg?W_zHV_d& zHfnq5n@SA-M%=%`CI@a+oSK1tDMp4=AQ-GscaiiaKU5hMJJ0@CY3xnrfo!;SvsV%2 za-0x|w#temcnwpcC|2{Pesf+}4{X@K0(NJy(O7y$Zbv4o>H%QQ-WD$A+<< z@akew@>M(lI|;L#vGt_mk! znmKAo3vFZJ14)wa_PyR+L-`?xgg$S?2I%$Mt)el07~zNL_ERYW<4^$G9jr^M6hK6Z z=_wlp3Q|}AYBs%({rTljq_+Eowm8BZrRkKZIWhU zq$YK~9~jrfg~cxhZ!~F^Ywz!TjW=u#$)`k#H_E<+^IpF%~FIORQUP_JP)En%OH> z>->x#2SYMrnb~4v%x6PO8l`=S1KU~+o>SuEm4o}sWmTQ6?dIbst5W0)oY9{fuQQ!}giz52{Yoxz|CHG!c^L2y@wP|o%u0GrzT^SE|qANim^ zpM6))yw`(kFVpOm=j=HA_2vB_-wt_+q@CERA+O5mnQnBSOe!j&Rxw0(BYN*Kdu2JX zD!o?_0x(q(d3N&n(!vA=B5hnc`$JEc=L@aG;s;L$4xE^D$}l*c;Om9FV_U0w3ykq$ za^v%+I0iKifP7<6>q+=}wc0Jbd(+g#llaR-%UJF~rO*6%m78>W;^w*CnA+DSb*Utdd^s=GB!V48b8sgGT7I!{x*I#m=XivR$(3F(cU9@a*}-r{vj*|;dK4Ga z2#3AMj5g;~Q1X{;pX3P-iJH$%#sg1nfx1`TX>6&s0e5emm}^KWUW}?cFZRk_{Q-3? zaCAwWPqWLfW?^xAdvQDe$38LxtUlqVxQZlR?4PYd&3pWttf+2CAyVo zj}+*az#-(LkAP&r2z11Vdd5S zQqr`J4SN$V;3kBDeP9JW^4Ep0Ncx>J zo1rA5o5XPZxE7 zpRjD|3Q&smsN34U6R@ve)2qDRZ2sNaU3GV%;?JQ6ZBJh_xIj?qwlDiux4!{+V4ND% zIiaLz>&>pZ_L?)DpZj!8I4RdV=wgT3{C$OIOJuTYroFPnU{iqOhm&60!AcE6S$D!L zzTN#$`J|&)Y-ziibLeOi@vErD1UW=*;1KT4wGKr>u1bxzQ-C3@V?IXnXVDv-!LC|* zR1cezZh&j}#M_E!os`@=9vKJOwW>U~Yayf=PjWkl$NT;d^~lHe#_9F7>1iIG{%Ilf z82gKZ>{};KWO?{iZ1R(qNQ)GElzUF~;{8wS?8#;Ik6j8>$E6#bH&uxREHx6PvUO6K z(hQjnGV;0M5ETqlw=` zbPdcmzIAb0?B)6~7Ik^>gf&<6;jt^$lXO^1gkovytOrRkVYX~a$b6zLKGrkm7-jT@ z4EGNk-q^aI`sk`$KTJLgNAm|BEm_!$;%2Bh-_S58&cISh@KZmAsDnYtrA@ddF4who z9r9W5$JOTWSuq?GwfR~tw-!>%<>Wp*)OD?yL5`#Tea;6%;j(xw8=reK4jMp9^(O^m zznCj?4-+-mdK8ycCO>d~peoyF7S-isWtzz)f9aYEm?l3Q&uHLg>A*?%B@T{XP#KxsVp{O296VtXC&X+{=`tIfhJ|VJJlpQIHAMw# z6Fxm3yxyjDELn4U_S~yV-}ub=Ci4WHj0WqkS(Qr1DyJNE4d2ma98>3`KQ=`4vXc4P zCzQ+9luj?U`L5@3@WFe1xua$iknpfkEfyl=7%85O*8!r@g#+G=W;afF)I zo0t=3%kv{Fs3hqObxXf(q0Dio%B_U}pMjLM3ozzq)e!shYKk8`68De_3n`VeoRC!kY&N+C=B7=sSsI&%afB#JGZqh%)*fa#-8@jsVs+GAh`7si0sOg1h19S?KY}_^>Hk zYgeX~5-O!$g)wjO>ZhDgfVw57{PII8eeLl!zd;8jbW#F)>-T(WTpfXGCSl|kUgxL| z2MD&su!^{6Gwy~JkIrjmo{H>0;s%y?=|uL{9s`_m;im_;bW2oX!Q#_+h)%wH zY@=VL5Fe>BZUZ;2;fbg(GRa*cxitt217q1^^EupKij!lCCg+*La zbtkmlYNItRkB0Ys_;4`_0+9VelgWZ%iEtp~mBGGho71Hb;6hscf@=nJvF<1%T`|iz z3~)|8A!hipL{O{2hoEYnA!7gvsSd=`DZN_2aRm)$&~L8U4Cj6bsFeex-w$j7#T?znvKcE;9*cFd`Wj9W+Gf0=1gU-48fW2inZw^D2 zcqz)-DM;Y~$QMTpOcE=be-JXV6R^%|Bu9XdYebh_DkD@6j=9BQovq_`#-6P?V%_N@ zEx#QJhxDPq>VGES`9NtfFALoS1`rZ!1OS`);5xrmLI^ z1XV6bXtX>O@NK~3Or>%^YYhcrjm?blz%>bQs(_q-L}`N}HYrMsonacgfB>jRg-(IE znm`N<8Cd761Q5f$jsw~@Bf(r_54<>;r@3~e;G!77tvT8@u+ZUAj7T%6$|q3}&e)k#iuhOs+E>3R|p)Z7* zM5nNF#G3{B3Lnvxb$lbG#a~xh&ps<4T<@mFKx?DU-xAn|Q}@TjrV84SL`P5aee+RJ z$%jSm7DNjRS_i3T=3wUb!$oGCf%Uct@a(Sktu}kZ`|`5Qj8^^cZt;()P%6dR+%7VC zMo`K>N@2O&QlBl^dURu)QBvY;{i1K^-uSM!ub{lIn+VhZ1d7M@6Smf#kN|foDhwz3 z{$(H{#XM>qBqp^$@SNAjpfcx(Z6Cw`DJND?4++#n=WHl^f{`1Zx&gB?clV z_gSz5T#>V%-x;jg;f(8xr0jcFnMqqm#u;!@^UiBFQ|o6R2VGYQym8G^zWO;qZeTp% z3w_yVFV5j5dz??a#j|K(AJAnpenez^I8tE= zKM6ZtfGa{{-t(m)<9sJ%`6ZZgUWK(>lnM+{cW*tCeAp3Qd%9}k@b!n|#*FJ>D@WvZ zQg27F;v=li#(7%s;e>LwQN{PTwiw^0e3aogYtoxD$x~L3G&2(m?|&Lvd>^t6Z$n0o zuvdg^Nxw4jh<({-;4pZ*a($V*KSH7cy0nE{Z8wLN6``4{ZJ#~bDa~KJ zE(hm+-Fn`;q2sB2tQYksko*b;Hk}E#i>;9dU+i$qxW{JS- zT*#4PgXA`aW4Zn8jqX=84Mck;+JCr3ozLb&1pX-Jy@QqP)Kd!Z>RT7vtR@G%Veemf z6e1Vwist9e)3o-{%(~>;UPrsd^4#So)4U3AaE)F1>cuXhme(F@;VE~jx{+!a(bGAz zF8Q>|)Dnp&(pUNFn@^d&4KA<`nx3Ros&Z|;2{QZGd8MsR)2Us3k~@R*T`-x;OfiWI z;b8{mnJmc54K)>^Zi5T0eY1IdttCd6$pMNzB2?Xo@N$|q>Ut9_gKySp&V9qQd!pU^ zu7_u4RJ1qwj7Y%I43Funsh_<`GSBSq7~9k-B7n(fJaT8>@m9_+b1Eq=e*F}W@@_Ye zv@G(_PqC?hZCxEyJb5QAe?sWAZdi=H2t#jM#VmgNr=FNi+T6sY$r81S)`nqEuEW_Z zJcGh|n zSJY1&n>w-kdi@hH7pe^hjS z&R37#ep398fwnqC zXuWq+k3A3V(WWMu(c+&#EPnaoU^dI4RqvG2i)W{{x$Czo4b!x(D4E40fezcf>P>S| zwb$M66d=B)H-2~!DxjcTd*uv1>!?U>+oqFxhJPBd_x_K&+8^hc<%Zue_9nl)mov2N z{o-%>l(xjdRNsU*lNAERZ}*i9TEGP&h2gdetgzI;;X99v{7qO3M)3M+Hc-#cF21(6 zxp~J-p^w4>23RxBU(|G&a**aCm~pW`tx&u#3^#18YEd4Z8GhC~kMcf_P@m5HJWn(E z$OF-OdeQV76`RM)poUXtl_3uBtTt&|q`p@Qa~3u1%rlH5sw%LWJ+)@r(o9*dbc}4> zqFT)OP;W7K_nm>VyiY#H9Q|I}yG=!St*P2hRN95YLeQ@QOok*ELR^K@Y+baK2O~xY zl;DZ-D@>ON+XP6ytaxNE|96+grR_-K8}@S9rLM$zs5bWo;};mig&Km=-8Zr~SHPCV^E-j2wEYp zE9dQbWq`TV)|+~A9~7Vuhmgn4ELwlXDyJxMW^XOGvm`?ZQ`NvXZr;Z{DoF=inshhk zx=@{Zcz}$-034c3VUxV4iX=9U`HmUgXaKNFAZBLdmo)yV#Aia9z(g1g+!m^<^h4e?q{3Nri82Zw5x^yuJrDd{oyxe@_XyQ_ z0)&bMp=#X*p(dq}S+)RVX^XHN5T}6#){pDROTZJrm7WL`-T{3T4*DvTW4ldZ&MZPR zK$+L~x%QtxZNZf)NB;!cHM4Jp>%YY^45;u9nDh39qkxI%uT{c~sqkfgs*FP$KW5ke z{XFd}`NClIzFFHXz6(1^Awy_i%cKfDSn% zKX#Ug20jXcG8NCgvxa#ru2bE9o1nWFNq71A zN%>4y2go6GFtRl=t@>WLBN(M~XI8AgR%Lz`>82m((evrPb3sCN|tyR1@n-*{ie?v~Yrp#<|D z$@cV-)4?ULAU7;&5ekb!V*mm;5&Kvx9~Nq=g(X4?g~;}%q5<8jROI| z2oZYKvvyFHHj5K8*jV?)F?$$3jgmE}zvg*)@$%88c;7b^Q_*y>@vwo)O3f={f$-H- zP3-rBE=_bQ(Tbpcf4UlfR8!8Y$NB7JekkT>Mhf?}q%_{xlpaf(o|v?Z%Nv<(v!o)c zGc-lgz1y&wF2vW_0TBy49cVN=YlV*|HfGaH2tF-F;~_{7I5ZF6b*J(j8Lt!-I6MxK zXkNn*)v|4_E(0ZGzMido5~oH_Y+D~qz4onUfcH>s>NYD?bq^C>1?W53KpNba~mvqQ>z zKJcqG0F&seC*PKH!ZUdn|Mr{^Zho)18v=6s*7bwlj-<`nchAxGyy}6vCO?*t=|y#a z>;}aUJ#RHDC`{OAQv!4NY`~-7ZGpN959ATYbG})R418=HfSzGy(uel@%bDoKw+?%R znRU5rranR5djn!44EnnSuZWUqKQk1f@p%JkjN99qOBf~bC< zA5Ex8eixlU=kfAYB`5P9>%8ak{p#;>zq1&9Gz7+B^KnwfsSQNU-$`+-yGe0lxXNKW z%y`K^?gj}8#b7=g1c~*_m6Sz?n#u1u^K*4un}8{ehFUQ3#sgLt*CU(p`ek_lTlh{K zN9OUD2{aEaSCyj{&RhYnk4{B4_ZLQPz6{t+&vX8IZ@DYRg@vBNU}V3MxJ8S{qjN7P z{fz4tU-q~!1-DBO>fz4P&ha_xfCoA+CPX$nbm{(9@Br%3%kSY8m%s*vQZ?H}gSfcG z$IPn`gur-_;9-1W?Th?GV%dE(ny|D=rueg|-|?DvLp)0g9QfOaP6Z34T|h}Suok*J zHgtbFdAER#=e5A$8L-^}n1~4J`=$=psf&SMdM_ka0cFnJlHljDOhfh%n1wr`k{SFK zjd&<89uE0N%mSY$_obS$qX|CQeBiS}V6(t}A9QX72m_xX1N?4wA&0^lExwi7gWsrH z=3*FtFTof5+#4(fPH!$fvpYTsj%)Gtd4PQx!qEbQ6pL4olD6Gz7>w~bH$d=8|K2qv z@QZDcJ1aN~(U8p820?iA&+g0;={3Rw$~(}iRP6NeK+S_%@N-|10En#U7qZJ>o1=*v z90%&%;;H~oe$NxZXK4Nm-X?J{#WS|>9E(x8_HXTL{f;$OjEJg{wwO;*>ul=$5&Qvd zRT2-lS(HDz+?!{agr_o2iU%mBS}7go-rdk=vT#{_-WO%c3`l!`zu?Tikmzmkb6}={ zl!!vT&qkj=ICU#yO1Stfy&TY*9~j|O5PG6AXO9fv+?P(BgL!&-Xdufi6`Lwl;C@a9 z51+A4DVZj;&teVakqfqB78V2^AdR*fOEC+oLY%4B$)YP*KPPtc;75k zDaj?<3ZhPF8>0c^jcfROD`Agn?EGrxh?V_A-x}TBeN)&#KVL0h;wmYKPZs z2oQ|yG2KpnbsM~FFP{y#HS@l8K}TE+jlGi~c-E$l$nTFAPI;|c-P&2~?#q?8X?9;` z_w7azZG`;ZVgEhc33D{Sg1D2}|Dt8^5J(6{M?mtS3JaG#^I4a&X6+sy21lUO=?h)6 zSeg{Txf}kvrTl3o_@_zShW0>OzWzSxnTy@e(srCY>W0-Xfs!Q-3Jhu7z{AMb6;IDy z(6p(ZjbPZ#Oyl03LE#!9IQb}uXUz;_;mR4%v2;6*b%J_ld?KD8paEI_46?Bgr)Lzn zq3}ZoY*3+D3oFVgFLc#{_l;%PiBlbvXLt{TeKsJi0227PO8-?Bv22tTO_+K6e86eJ zioTN3ao_G%_^KrFFCR#JKkv*0?TeI zQX)Y7#<><_;fUQ5r<1=-)WumuW9!`xdm?SvoxPkuBVjwSLI-{Q^i!Y69s$Sh>9DJ_ zqaZKPyE&OQ+IM`oS>G9)bn^$>m{;h(laATaj(M1(TT(mJqef1G>V}z>#@NHsZ%+R~F z93;BO*EMfeqrX3URVsLFgM6Jz>I)3+Ej^H$SWWN|u8~5t(pBSNEUg>0U}}X2RMkj9RuRpj5!47c`b3OiKK?W|;^(hGHa|C&txp`BZDVY3%wh7QWOVKg?(F`EE(8Tyc3YIFd!4sLkG7wrIOgDpA72UC-iPxbYbWx)2MX&u z88fPTd7gjWqpOb(MjLzsMJC?&E+tRD(}uQ0dUIPTY5L$e9_OTAYDq)GD^tee0Pw_}wekcaPk@X?f@k6M z%JZ84sbcz=1U?)G5;yA<`(~~IXK>{)bE=)`HTUG!@oVFM$&o0saXPO6S^ zg1IwuAQnaiU}UX_3G&j~T8yKNckym-z?R4_C1bG(>_6i(+y9F=AxCde%)tvk(TP|8 zAjFzOrtVq*r7a#61cv-?9Wf$cz1yNy(Uj!&r=5Ii5)*vvC9BQwKlUemur{#hzYI6l zOwPBo>RB9W0O|K0aJarqCP zQ7RUlN-4GIu#i8P(@?VD?^}}-#%#qBF!$%SS8Xw_*YF@Jw*GMFN&O&|Gj>U$E-sVR zD91mnRu-|>QjV=|m-uB|_-ka9H>n5L!t$5CRYz$!Rqf9!vusP@pTWLp2zUzKqp)N< zFm>N#+f*#ay&F5m_sbq^G7K++YZhzSt^*%TZ2k8BeHXyU_}S*)B=BVf;lo%lL zYb6fVe-&jy&>UIArdnNHgS`>3-%06XGmvId>ys|&A_k%v{TIzK;ClPwX_g{)N#Ebu zKv)QxZ&P+l_NQFA0gV-WAHn}$c?^(>3(A6N#3mM&`CWVjHVOa9vW-eWe^4)@g3GFF zTTIlI-wcuO0^GQIKTQVQQ_7#v68cwO0kAd*dMA#o6m~f?3DfcWy+(=)a4lZ`x%j5h zNcQ%|zlxfHU>#ZuZ_&C9DE{+b@ryvT{#syT%BFPt#t7rDJVNGy;k9u}t=aAMVvSDS zo~M2%jjBqBg(>Z;g6mHtPRd$|pZ1&jb60^1uIBE%A1a3Ng;9RBBGSJ|0m+2n_v6g@ z#^sJ2i){GKxfMAeGhy*|yrQv!yIKoaH|}Nos#u7{Nm@~KN?8);_VDj;%U1#piVB<` zd>&d}*GO`F`L-L+@Ow%VfJi7zq=fNK&I#gtT3Z}F!TNqr9XS*V-X&&88Q$c|b+N|G zlJdTtWAo_2j}TtTdZ2;b{F~MwIYvY@s+)n2p>yjDn;E+jg!a9$N?53-|NxbV&}f4FSlNuh=G7-(M?-_A!CAST7HwHvzWc zB5V$wds*@We8HfPtn-i9Jy>4=j)-2y!y0xvS`qwYNEq+Ozk$fwsEYUbaE;x1=%3L# z;BNflnP|;1{hRpmVA+VP$*-3DK)5eM-l*|Bwz)04|CN2)hJC^unWd3)&r*ZOQjF0%e@B3&U(e z&k+9_0+HQmWhJaMu^jrtkbFhJ{>8Q=?uW#R0I&_;J!dPBtI|MsYY}D ze<#6@ZeVAEKm03`|72H2^$&O^e2~|UjDIZsEC#TYJ4K^|r~iZIOBDxBCmS?E0Bq3K z?g!(N43Xsxc=!me-){vMxVMM-OO-&|2_CYHktel(&roh;TH_q_X?`jZrMKrD=RRQa zF~WrVrRtdHo(u256dhK=&!T0<1>os>nk-!LFDUUlx{PKX&n0mS?zrGO@~-1pIIYhN zyI!LMD#Pc6`()oaitV22BMGx!MFnvUx&W_wZ(V7ZUypoJeCNIm2g4DbjP3WtfG zvU)hcLRDQ?87tWXZjB61tzn@G+P`ctEGb*38oy2#s=UnMyW75JZAV!n$Fd@*RRPyYW&)E&gi;E&S zW3{pGdrQh9!8@{2eqW~G1M}EZHRmhdAC1Riy+N> zYK=&Az=Fguxd#)xU&v7>R8_A6aZ;9K+QGBxDty6Q^M>CSC}H`vfEr!HorBsaZ`<*0 zLKZ5G`=$aSv;4k@fDX<7T6GTBu5Z;|Dha`sA2~A4ii^cC9A$VE{#bsFLeUYE zHu^$OC=yM7|D|RmDp?r*Tz)Q%Vk#D*KEtsONQ&~zTHa6E5_MstPuAu^%AbYWFE@9S z?%kUVLoY(e(j%n8BFe=9h>nM{q}z@s3a<1?@BFuu8SM>ek5&r|i+*kkr literal 0 HcmV?d00001 diff --git a/design/icons/cder.png b/design/icons/cder.png new file mode 100644 index 0000000000000000000000000000000000000000..81edf6f95e288ce9044df507c8fc6e9ad4aa819a GIT binary patch literal 12452 zcmc(Fi96Km`~Q0uGsKLwY-1@~8>a00Ok~O0(K%WfDNAJE*BP=DAu6(OZRZe$LY6_H ztV7vjiWo@|W#{+2bv~cp=Rf#%U0rp}^E~%+@AvDzpZ9eu3nSbvkzEi3;Y^GT{(vAP z_%9M-$AEv90^hBHe>gmi&-g$PCqMib0cB(fL69V5Vn99>m^GK}RB`#wJJ0QIq#Tw( zVj_3#4~>gsM_%QZQ6^^=Q;kOsR-`oS2gxXHw^@3Tu4aEa89M6)#~AKoRK zoR=by|2MUuOYOP)%l2nq#(chK`*c?i1m_%?N)jmy&r+GznjT)xs_Q?50KEJk{JBj( zmZB=vh7cj4^qnb{EE*f+e|WD8DH)|q#l-Z`A9LAJz0)mw7r7#0^maBeS@5Rk+HdEb zRtgcy#A_J*r4{7u*WJQfToJzyi8GpaL2lLeK6cL=p`0n~IJf3`w*B$jjw?zV3`j)i z7;0NUrx>E&^%45-nSXX@Agd*tx$ogGO^8^T-85H6vBb|ytuDHQScqFsz$vji@W zc2ar%(o!B03h{UNm+o;?1I$Wm1M$CyBn-I^LS@tP|FU1`%sd#QND3-`^)L4~F!ka( zk081@0U^Al4du}o%AUKL1@p8$(U(>hAu7hOkA9L7wF?TR^Csh{v5+z`1%s!6TR0M_ zToK|>58YTK&~hmm2}%6th$j;Li041_ZYh`9f>mm`I#O5GMLv>{N8`Z}=H`h}{F0>n z(^|-`I9ndl>(Eyp5s(~-dThZHeO@{EBy`6+!Ao%h&2B{$Po%aRDelVq!$RrXXSo7F zG_>iBJ|7i{xaOJfrMMlbiM$;jE5#fs5M;ADFd(%2gZtk-qu1d*nO=%^CSr)UubX*2 zOIgPer{1Dk>OyUoBB4CHL~86GL@G~?>bK9`)<#rsaJjZFxP14syyoVOTa0+Xw+1rD zq!H3|5{|`EHy=xph5*mDe07r4T|rUJDEha5H-)D~B7D1I@Z8WjKu9s0aYn8P^7c(2 zmp3^3h|5)u-dYHY?u!nUibk<+$0vlW=zhUk=>qj+8UXbieWLQsJ_|w|qys@)VL@Xm z`I);JoInOmxk*tJR z3Eb+TsQI(tE^L1ywGXgv#f#O_hH7Ek_ShNGqYsFau#o5sJo3=dA(g?4o!!Gt7jsfB2Z}RVOdE(jxL_nOa07+)lee|U|0(t6M ztQ5sZnFHDg>ZuCozV8hEqyp_m+;iN3JiTFKk0(+)8Pd@F<-M^U-*w3h=u6WuZ<$60 z8md1$I}epf97jFkBp?uLt)gP$5bVQTu154JXFh1<*;63uT>)I4La`Vkv(N-$w&Q^f zXRVZ}HD&(jjjMqEL5gK87J~KPJj^?PkHv;KMc)fHnF8BDHEgiPys{Ril7MW{uxxr= z#BeC^FmMs87%Ao#0Y3Vj_?sbnKnUytUO2iRs405!!bHy1L==j2IZz$xE>X9i+Em?K z<)oMdRN~8>NQE|cR6fHVNc2On?(kE52tv@o=4RgcL7+>4j(vFUIaoKl;H~x=z=5aK ziO{LIN-5@X;1~OaxaH{o{iPEACEc9xTXq2;JBTQ>6;Vr58&YniA@Ys^;U(Z;Z46XL zsP6pYiAJ-yW5EU{@Sp?0gE(OivI1svI*}nzw;$Ty%Ihh7gM-<0ucdC7fWlBu0O3OQ zmkOX=pZO+iuO=c;r2DXNLO{4z_9R8Bx7Szro6zGu^uMfN;Wzh@vcr~=Mg-IZdh z2ngf}{?DOvu%}9DY5aRg9f_QDQUr?IT`0%~UDiPAnv)S78o!ej>kGP_@9N@rgGa$!NMpgY2g&8}UIjI?E6DO0J^Sw#Z9}dlMr{suvcRPQp3N+}| znG130wCuCHvvkHp;?5GnWW;2c)cbdeZA|KY+`2jlmR?plf||t7bdcT?voRYcW)gBj zvoh?>I>Mx!@atxydVxku*9&%jicM@mv7sv>J(6ECQ0Z~@2MOoxjP1uo_c&Bn8`+PP z)b-%`G?1!xeGpYl9TAB=WIFsZj2^nLF-BL&VKnye53tzq9xMh3EjurslYiHWoRbK% zb8C1jv84SZ-okktwwfJmh2~+7`B4@d`Jv+1x&1StCJ|<3F5FxwqxNfwRO}FI4|LX1 zXqh$L=C;rN|07`$F)y#awQC8gW>%|@4`$d9$Zf`HNG#JV?pn>-(!rn)&ePi$W2|XCG$F(%B zUarxQu-ny8Fdq$kv5nJ$O4RC<544uixko`ICf>i*@~RQ|lY$(*5*X0o!O+*l!yEVO z8-)t0b<<6$e40pA#XN|L3(@52o?1~{in>2+E!xNDR&(!D4y);QB#4w;*dusiHMqJD zFybTgzkSpzqL;6u3YmE7E09udT0=yyM73|7_vSJul2c9Q!Zwnm2QMkLhBKlMMu&;r zSiAwpVpH19kn*Q4(OJbZGwU3x1G=wj7_Seqfqe7h2X3Nqh_D_Vs<;v+bF0(+SK#xy zPeNQE4kQ)Tgt)uEA6I1GO3WVdxLlz2UiWoUkCi*fOO6MjboBt?<*Ca8GHj){eE*E> ztVmjjW_`K?G9j}8E|@$Z4ue88TNzz?a)ZX}BHwQ+P)tCuZ57q=rAuO+DHlZoyQYiEsP@#i-e4b0TpcbXGmgsuP&7Y4^7$%Q;K`!Kr!vgBdHr zd!D0p_|Kb_|5*aG8gpc%!_>%Orim{kN4Nf^wT`RQ_{I6_#oDGaykeJsLGPD|6$Ky< zgdL8FcD7u!VC%2jDtG-`e~!-JO$M5fOv8lVrF@b<>>_HiZn}26NJ@HcO#I%gsOX6` z>&TjZ9*;x?|2IH&JIwZyCR8L=Re~0uE%X(t?^act`bjI1)=ABKpz^AY@mfKQ+lU0? zobw{iiR*^*_9lHT^BSVu*ABdGPb`rO^VM;^Zh2g=))&+;4sR;P+lBcxar(q!(?^bp zjp7%kXaCSp+n(ls_w2!Gof_8tiI42Y0F5S_qH<>gpAd+R-63^FCU2YZ=jZ#X9lzgD z2*xqlh4ivGyqP7mspywaP7krvexU9|T^-uccYL?Sh%ROOR^o{Iw719&=R1QAeEyN~ zI$9v2bUOk4^B?&Km4b)KSU^EBFp_YaiB^BTf?GAlHdo5%L@Ve!_MM^ml_pNb@rd#O z(|*1}Sxj_%GjdaJ+2zK^%9QZ5Jom~LO|oAp9|1AJW|@q##3@H~`ulzD{^2wJ;9F32 zkzHYH*}bJyYK9Fik?N+aO}$-0dy)kuscnsRe*d2Oe(q}Y3+YETolk9Ie_{xTW|)Wv z&eyNH%O0N_b_Z{1pd!f2Nb=GMJl18Qcm-Gf)FZNqA2{fWGjmzY;^j{<-R)LQ%~`#8ajv<>hcfc-$tCu9fK(SRFUs4X zZrX*}9R4`J+A!Am`gnwy)x+Tl^t5KPHl3GfyMfl2@1>iIS=Ji``|{S z8lP=>+C@aFBU{uUGQL*X^Gs{scP$-F4o}@0(<32UeUIyj=>M+H-${JPe1ms&u7B`i z3gxWOY5Mme^>>0XXe0WHtYjN44P)^&kZ;R~+X7iTw(|C3LBtE4W1NXpWg@EhJdQB7 zP;^djRYW8zUyJWubn@2WncXp!(O!{KlDIddgVrdCFM$Vxv(W0@^NV4!WOH^ucWay! zKtASgtibB`UFo4`ERnT;_I99E_7=rT%U?NVlP;-_?7hu(|ENmY8M<$+=0_9iap@14 zdE&3^eCBnfN@xhMp3e0Etp7#7))B}@pHSkRXm1otnNsT&5dy?JJBWv@QM^XQ&$7|Z z8=qId=vlhiKT;twi_isN+}8LrYqcAItc9D$ zl2NWW<>fIWUO&FPYRZ&&#qEnZ+6QLdi#g+D+d@keeJUvIAdo+GcP$U`Qxt>un{&_g z(pu>3ASgs*B(ZlzRw(nn6}lY6u-m1nqW_Fzd#r9~cn8O7qEMdb1P_r&!qNv0;ty#$ zjV1S*s~Y>TVT&e337z1Xr2m1+#CG3SutXl-KSN&P*VTVudbZpl8#Ypl8aEk#ScOL? zPK`BRhe?XXUHq!CvYe=bF=VnEH!ID*?IkUV4qgC88sn@|B-gtpO(2!wMWJyLu){n0 zCyoaWf;rI3{LJ|wFShB;br7Qq<_5`8^;!tSEc6PZh9g@{&-Hr>O}t#u{1qkvbAv(h z!RVoK15S_3W_b{#W4ar2rR#L9>?mm9v$|2G1e}2;!asxV4EmYtvPH3SbZL`@e7j?7pUa%dG#z#1v(;y-cMEC8a&!d{LsH~K*97Z= z*J$02fvqR}@LUiE=mVW73xJLNX zA{%*$^$d1zNZ zBCn5PSWw605bUZEM2ry$!x>e%LpnGYExF-6A6bMdU_*Ua)DVepjKtjNpzb6i1M2gv^U%4$3sQMB5EKRCaFpO`h37T`xClO%n?Iq(+cpf@Hvz4Y{s`lK$|9pQoe}UPZBtj? zWy{%~1X5pu#|e<>KcUs-ve0dXb5s2TB?WAVYLN2kk8pTXyqrP|)j5*&NA!}HGMtZ) zbm0>gkp#0-D7pRMNZk8h#r^3s#~H_{Sxok}sb-Y%w#xj;&zCmQ)sIy&mKC2T?tvz; zASfMW+8Pa%dp7Q8^I9NZvDT0#riOwNYlz=J32Bnr@KkBIkRWX1d8pR|cgY)h{&a6limvR;36pN=Hp@4R(5RP}eHr-; zu+Xp28mxan7xcIzxTLhryhITZ{HwcBLPkv5g+?FNM`Rf^A1&)4m8$fB&iId%v4QZp z4TH#^1OA!g!YQ_6UY+??u&`Gm36}zpp?hwzB6Z``nw6;g@0=nP(B_8-W|fVw1P7(3?5tAE0Od)=+S^{0pjz0@2^hKPj2Y z&(wJ*b=-36bgy`dtkydrrXnmT3#}nkib)JecW8Jh{y6x@z#K;c+fX?@V=CamG=E$c z4DP;)sCU?lYsc=fzOu0Oi=0<|m6y&15>jTSBzA&9w{7w9+~sFH9^Y_vw#yPlLBf%5 zo*cE{Op%)qu0r~;%oSC?U-3K($-Kk`Bj7&tG>0>PE%4^9LvD}3n*Nu#6Ar5RH5SI#3p!cZ#V0xDjl zyQ+?1f8+(nljbdKGZhw`Z<10hlKzo6mY9b>eg>N>JM-EtipaMv%X0`62>PJ%d~)+? zEncxbLAQEZ+-O8a*lK@75)%GI1!yKzl>QNW(T>lp9(VfMRh}uh&|-imo>uXUYTn<> zQRXH#CgWoMoRlsGr{`2jtiyY{4Bp{u$h-U%+bo9dfrJml4S>uiGE;We?%@|_o!;eV z*w&uvH621BV9%D`p%>ZAYT_uY`4|4*aC~}&X*C6fIV`2pa~PRCuRx`4z80Gt z?gGitS43_LbRM9w4aUu08{hgQ3ZUmL3u@`!?f1(Rhr<;WPoLxgBxbz02=yxB+%9UP z`Yp<2_vvCAQY!v_`dm^2b~16`WCe&Uh!H=~5qP5aFGePxF96%26A+Eql_bzJ!6}>=p4lQCqonMDY6>Q+&ek5 zn%$dNjH#a`q7vD>X%L@M}>d0M}N7pqV60{YN6o6PZxzYFDuOJkA5T3kekY zU|(BfnTUF`J;qaX|C(q!mu7qb@-0Y)8Mz=ToSEve!t=4{*?ntwqEZRI?BqnM5dN7rjn z0(O16t!5@8BCdRzuzwov92y*~TJ}O31n_6;bQ_=TKAqMBD%MeSAoRG8!*dbsx^FEv zYTP9F&QsNVDcIE{BMDrEw9g44xtSzJ_WQ5Z=Dh_iYuE6g80@8^jP;bu%Dlc$u<_aT zrF^>hjh!U{8xBv#gITI??3hQQcfO7{U%y(DfybXk+noBld#C=&|^_%gft}Y9a zMe<@5yDa9lD4~5klN4njYMkNPQ8|E=uK0fq--(f(-_K9?tY<;T0&L5t_n2_1JMT#V z2?b^$9C!W`adk)CZ@eO-92QMDf`T^iJ$GG1YVyyszT)eTVgQv|HZR)$vXyfkIfy(~$11>nMd9ymq&H+GN5!RsU ziA-*_=K&{4NZ5w#k%SIYlscl|Cf{_kJ3~}rWA_+)q6g-GfA)}(Z;~Z+4|BYN-vfvN zxbt6o7DqS94VPIjqQok24%f~#eiEfgVi$YqGkE^F>B-C-Q*V9dA72Nb!fBcv6yY?G zrdg|c$$;7G7z^JXwFE>~)Nufb$`?R%mr%kEut{F;+@Z@F85&F5t1@oOF6#fa5md6slcfI;UX<}M< zIOxF*K7I5rfL5IZ>+tMLsFc{R$@RvDpB=0?GbL0gn~|q{P@+MySYZ`UWi5X$;HB}o z@F~C-tKja?d{xowKz3G+6rTY2*_l4hk!<_0`{?q}7Cs~PB-|pc00BqBX8N-Xa%L)D ziL68ynS34m5Gh5eod;$7A;vv`_0tDt`8;a-Q(lM=O`cC6`!}h1Z{L`%6j$aS{dVM=gp4Bc{N3T_p8mmJ#sImH}$p zttdHZbH~mS384g%TDUP91^`F^Se#$;5af4LCbco0j-Q`xn2! z$Qgr2$t7VFyjTn0EsGKpV*qa4Uae9E?_RWle4BOU7A!ww_xE%0z z(*rsCh;Y|sErjk}$^}pi5|pr7>PzSfP@5c%X0`hvv!q=dBmHj&wvB(F1SsPXfr}DfZ)p z$L>6u{NU3~SPUjw!&#ZiFR4k{!;8!t}w=$+!2*7iOtkl z0=2e{dXaShKeVTqB!5@%ij^R!M#ew!W6ia{IaK#&9Hz^c#hqO7SL7$Y$vl6M1Bf@> zEp`mXTd`4_C>o;j3&fsdv-{?%LX(iTuGB%jj=;d z!(c6q8hp@zD=^038zD3X3rW=9$*V$ZJURpL0`;8CX?|eo7>$(-uOw3Y5c?hbXv{H{ zvV;ZYV6~q`4>|kjDqjb6;UIA@_(nK!3w45)cPDi;Xr%-pHs|zu{rfJjWr-M6T2GU;_LnZZCvjou32?l)<+^O zJn;d;mnL$$eC@+9?KQu^U0}Q`%+s+s;oAQ>bB++q28KANj}$k-{<3Mb?ed6Fd*{P2 z(7W(4u6!X}?RZt17qTeLbnf%bgb+3`HUefn>4bl-mUFDsyi69v8^OCw7|5lz_jJr2 z5q1W>rKPSG?^l$@`JO)2QiqiPEwB>SgP3y+7W#IwDPEP*`U{39ck_1_0u(l*6Ktvf znQ}oK3SBvDZp>dm+xJB6L#}3Td-N5i`Tr-Pi0xK4%ah_Sj+exuVhP1>6X%*^c@FDy z;(VXbuwuchm%gY!5UG`%S)U8z^6)4%jBpLnoCq{omTj9hGf^{MD=WGxU01!Cpj9zG zwso}8iQvm~NMni9IM`;#Emd)&--uzJNP_ORjmcSuxGZUtva1I>y_c~1>^eYq3SStq_K5B z1o51JzXjOwx-gBZ!F-@pg3kAl1f>_9cEe8odGTjb{Kco8vZQBbIVyCBi7pczSguA_ zJ^|1bRJwqWBQ|^V-wBF{t* zUagl%sd&_AQD(UQBd^tIqq2w%r#lfmr^XR=?9*RSV6)v-owU3*;O{0Niu^Obqi_LK z5B0E?IxfA57yQnl6agF2DYhxNq1h+*4&~(i`kGr)UWNtmxtpu665x*2KcM9A!3u>IS!543K z4w#ocC}xC;xpyj0bPsM6Q{KcA#{U%ZC18c7F(7xtxy|o0#c$$3#pOtq%Qra*vRhIu zxlfN=E}wdgu9gsb^&DSK8(KLLxsQJ`PZoDt3-K+7Vt!^qbK<<(^jxmmRzjL+L`yXP zWEe%jL%9pr0UG8VNoYSi9YL&G_pg|9huggfx3sTB2T2GW_c%XH`k|F zLk$`)oMBi7IvUO~p9-$>p#AsSH*>1r{R7e3d_z!9s@G$ z!JTfn-S2rk((iIo`>^0jOMCC!I(kfQPeuc?wf$L&xJB|Txk;2@FJ7xb&gby9iU*Y{ zp?%Y-wYpK&|K&iylCYjiSN4?~MH13I%XFgZ<$+%hi_R6YdnaE&J=9tvT2Py(w?j?h z6ZXF7Y!7-7P<(63mKxnMFKlzy*AjV^JE3s3pDhc3y&cBWzw|UG$(**y{nXf>WM5?d zygGARDE8cT%*}O~xg$69DU0A)JLQ2~+YDVjqy26kJc1L{I%$d5&Vo#&s4O1{J=Nl_do{Q~@Az(g?4roMZ4it+?PF zpFb4IlTtYTO8JNg>qBJ)?wqw+@Czbt^vb9dan}wCdL;F4=FN_>9(wwc4LBNu-*1v~ zc=~0m{WfS)+8XIZ>`Rel_5|Si%0&H9JCvoCS-}*$Xr&bPzBA=+^NUM6v^aD3>tVUo z%?i4IqXI*X6^@sF%b>cWlwPfa7XtC&<1g7t+D?MO5#Y4Ay8m{c{S~dUJr& z!mR8r*MdS}Xp?&N5gI$Yx79O@>d_nvb;Pf2-Pp?`Bi}K*Ta{AwD0Li2K*2bhwqFYv z<}R;<+L-+ny|=4&Uk7(4aO~iI=dI!L$qyX;rySf|&bOxW6(2Y{W}js#gv~XPM1vt* zF^%n}Tpt47Q0#ubHHyFZz(H|B>yZyl+E zBqw1e2|AVAez@&+~bTc{X;&_cBnnkd0{n{OjFzn2K_Har?;Pdn6v9=08#3 zO4x*Qnza2uJ%58>K76R&h3I3qZ-#+(y&kvinyd$g zx}dw4eB0T01mE}NIy~9>m6La??*(7+-hErrE;sBYsJy_h)vzZW@!*{@v%F7H`m{~w z!iM_yvfRTnrX0EvrwC4?oN(I+2LHG3p};3FGW^BYS7uK>caV`k8k2jr^oe>vx8`UZ zhv8^8NfI!75;Y=f`FH@}nT2Jw;W@pgsppQf8)|hwYQtVvannJYI3ap%ztT=1<^AJ< z4j<0(YOw0X%{7ykrr+{(do5VHgYfj=E9fAAyzHJzF$eG$oqG+T-*v2qOGTMkK(i6C z{Cn9-F1XUEVY8GnilXccVvhj^cW~OP&rAXT*$n_KlPSi-u1uF$Tb*4c1@Cj5DViQz z%dpF2M(7C;76h{vyZ_K{)>sPIq!VW| zKGftYdtB{344Q>O7iL(CPL05tLGE>xvVWeAu`|};@?~#mwtxR^%>c593DH0CZ`Ve4kkSpLE zC}PHzcgC#8?iQDOl~}PH4psepxXSw0*2F;_w7~| z@&2>kpn%msj`Q~RY|u~2$=GRND$ZVu92B-!8ttLp!?^pfP6Fh{;L-_xSQIU`grmXf z;BOee^Z^<{xH7ipn0KJh>?*=|2#sI#+*+BT;3(WD~QY$VkO`*5o z=7!=t>dipgq4y z<|T)@W0vZBX)7RnBjH+Hia7F%kR|W($C4rX$Zw`B&Z8pyS)GLp*f+|Ow=iHrBrFceK7o;S;ny%< zO^@|v@W>!Eo^G)1<5}G79JH^oChn;B{27zQr<;wV>9Y~g=~tsL4yzRLa)})8b$fr3CX{}quUwOh)9w!9Jj*( zrsENgvr+c2_t;+#p9X$=vfLKvYqNvwuuzXYC&2|?Wf#m%0e#SBd02v}RD?#=sa}ES zxt&m;R*@=@TndRRb12qoQ z;sAFxIPE!Na3TooeGz!~yA`!jTi_Es5LcH98h-nWO895JJFa1kNH}|CusrbYenR@w zpmg6_ruD78<2cnZ!WWkzi4A*Ce~;I>&QA%wP@Z8S|1nSPkq~?&6C6?SWxbJ*1xMtt z4HJLq&BL=-jNDo#3e*of8Swjb>DGOMGG<BmO23{NG2K@h7D4-(1NpuTyCR6Q$PeRgbJ z{zC`aRkkG;3`@kiTDXUtM>}%ztA*X2DP|(-RTH`w{_H&yD%JB+ceAc2$u!ucH5eh3 z(ax{Di;Q0@qNzkqwI7lWdsZ2FvkP(LJ7J?%<=lj^MA3AevQje_j;n+gQYiZT!|4p% zl=zpse+PKnuE;JjVIUDgcMoiE@#w0@ZB6C{T|dORXfkZrySrA7=RvHTOt#2M2@n06 zhEyX3G|B!r?eD%D-H|pYH1jGCBz9Tj7931MDsBEoEoHo~j!_QH<5~6b%voz3PO)%F z%050_T(okps8G6u?*avKRXEW@L2I=AO%oh`v9SIMnesf%SAiQf@nl``?1WtXr`Q6Q zm=PZij64~C^h)09z2feU@v(KU(DgJoU)^#;pXny~6y3cpC9DF3?;9t6W$;1HQQHqS z2KI$4zZBiWGa|Ogt@fZzAL+Sa+g2_snfT|eSp`@Hu*-$wbjRFBZu82V>D5ldz=+7K zke22Y1!ubqx2?C+gW{xiy%!!@MrsGZUT0?J9gCPL(a4C@B^eX7%7Gz#uux}nM}(>7 zU%mLb%O@ZrQo^hUOe^C0=^xHdtZ^IR)KV)Niu#7*J&ul^P_L^KcwEi>ku&9&%Xk2D zmo3$+X&qXKx*4~5q3Xy4jdA8t=bwvn9~0+LO-E9?+;66a59VYxSoSK8@N-yJ$Q_#U zf7-=A7b4iXU3a0ka?a-0_Ko2H8&wM@i1Kjn-R+zgq_ttrz+s`}o7^wbE*WsUL=pm> z^HxiOR#~zrsO@b{O88sMD}7_KNML?gVc0F!6cS=Ji#AxVs!E1V>~l+8E#d!Q1wmnj z)#O<%Hv_jh%wddNlkQGOYta>d(%HSPuxwTo@mN`p*x%X)(iVs}RfI58qG0U-fu!j%tC0 z;vPOd6;@Ytb42Skm~NiLxxK4TdbTeUoc_Q0^T>KjuW3{gu^MwJ7v{j^xP`%!W0c7M E2LVZMwg3PC literal 0 HcmV?d00001 diff --git a/design/icons/champage.png b/design/icons/champage.png new file mode 100644 index 0000000000000000000000000000000000000000..6224e21b06b3c7c10c1d3009b82fba4a5e08dd05 GIT binary patch literal 10903 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 Zw<1&G6)y44h*rU1qw}T)CHnZN{{{GTxV8WQ literal 0 HcmV?d00001 diff --git a/design/icons/index.ts b/design/icons/index.ts new file mode 100644 index 0000000..25d4c1a --- /dev/null +++ b/design/icons/index.ts @@ -0,0 +1,8 @@ +import ico1 from './beer.png'; +import ico2 from './cder.png'; +import ico3 from './champage.png'; +import ico4 from './coffee.png'; +import ico5 from './cola.png'; +import ico6 from './mineral-water.png'; + +export const imageIcons = [ico3, ico4, ico5, ico1, ico2, ico6]; diff --git a/design/icons/mineral-water.png b/design/icons/mineral-water.png new file mode 100644 index 0000000000000000000000000000000000000000..133a60703a8c450a32d5de476c248c61efcb58e9 GIT binary patch literal 7373 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 tMP2cW(}$p4do;o!3I+Im*PzXRYT&2|6) literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index aa18674..b75646f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ "axios": "^1.3.4", "eslint": "8.35.0", "eslint-config-next": "13.2.3", + "js-sha1": "^0.6.0", "lodash": "^4.17.21", "next": "13.2.3", "next-redux-wrapper": "^8.1.0", @@ -5092,6 +5093,11 @@ "url": "https://opencollective.com/js-sdsl" } }, + "node_modules/js-sha1": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/js-sha1/-/js-sha1-0.6.0.tgz", + "integrity": "sha512-01gwBFreYydzmU9BmZxpVk6svJJHrVxEN3IOiGl6VO93bVKYETJ0sIth6DASI6mIFdt7NmfX9UiByRzsYHGU9w==" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -13520,6 +13526,11 @@ "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==" }, + "js-sha1": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/js-sha1/-/js-sha1-0.6.0.tgz", + "integrity": "sha512-01gwBFreYydzmU9BmZxpVk6svJJHrVxEN3IOiGl6VO93bVKYETJ0sIth6DASI6mIFdt7NmfX9UiByRzsYHGU9w==" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", diff --git a/package.json b/package.json index 09064dd..6fd5945 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "axios": "^1.3.4", "eslint": "8.35.0", "eslint-config-next": "13.2.3", + "js-sha1": "^0.6.0", "lodash": "^4.17.21", "next": "13.2.3", "next-redux-wrapper": "^8.1.0", diff --git a/src/components/layout/Layout.tsx b/src/components/layout/Layout.tsx index 725e2a0..c9d2dab 100644 --- a/src/components/layout/Layout.tsx +++ b/src/components/layout/Layout.tsx @@ -3,11 +3,20 @@ import Header from './header/Header'; import DrawCategory from '../ui/drawer/DrawCategory'; import { CategoryService } from '@/services/Server/ServerCategory'; +import styled from 'styled-components'; interface ILayout { children?: React.ReactNode; } +const Main = styled.main` + width: 100%; +`; + +const Section = styled.section` + display: flex; +`; + // TODO: change categories variable to object like {data, changeData, loading, error} or set 'em to redux storage const Layout: React.FC = ({ children }) => { @@ -30,11 +39,11 @@ const Layout: React.FC = ({ children }) => { // TODO: create recurcive function for fetching data return ( -
+
-
{children}
-
+
{children}
+
); }; diff --git a/src/components/layout/header/Header.tsx b/src/components/layout/header/Header.tsx index c30edf2..8686c26 100644 --- a/src/components/layout/header/Header.tsx +++ b/src/components/layout/header/Header.tsx @@ -33,8 +33,6 @@ const Wrapper = styled.div` `; const Header = () => { - console.log(window.innerWidth); - return ( diff --git a/src/components/layout/header/Logo.tsx b/src/components/layout/header/Logo.tsx index 8ec3c3d..1720690 100644 --- a/src/components/layout/header/Logo.tsx +++ b/src/components/layout/header/Logo.tsx @@ -31,7 +31,7 @@ const Logo = () => { onClick={() => toggleUpperDrawer(!user.upperDrawer)} /> -

Оболонь Маркет

+

Маркет

); diff --git a/src/components/screen/category/Category.tsx b/src/components/screen/category/Category.tsx index f584a5e..9752737 100644 --- a/src/components/screen/category/Category.tsx +++ b/src/components/screen/category/Category.tsx @@ -1,18 +1,19 @@ import Card from '@/components/ui/card/Card'; import CardLoader from '@/components/ui/card/CardLoader'; -import List from '@/components/ui/list/List'; import Pagination from '@/components/ui/pagination/Pagination'; import Refinements from '@/components/ui/refinements/Refinements'; import { useActions } from '@/hooks/useActions'; import { useTypedSelector } from '@/hooks/useTypedSelector'; -import { AmazonProduct } from '@/services/Amazon/AmazonProduct'; import { ProductService } from '@/services/Server/ServerProduct'; import { IProduct } from '@/types/product.interface'; -import { IAmazonProductsByCategory } from '@/types/products.interface'; import { Empty, Select } from 'antd'; import React, { useEffect, useState } from 'react'; import styled from 'styled-components'; +import sortByValue from './utils/sort'; +import filterByValue from './utils/filter'; +import { TFilter } from '@/store/product/product.types'; + const Wrapper = styled.div` display: flex; padding: 20px; @@ -55,8 +56,10 @@ const SortWrapper = styled.div` } `; +type TData = IProduct & TFilter & { strength: string[]; capacity: string[] }; + interface ICategory { - data: IAmazonProductsByCategory; + data: TData[]; categoryId: string; } @@ -75,10 +78,7 @@ const Category: React.FC = ({ data, categoryId }) => { const [categoryResults, setCategoryResults] = useState(data); const [loading, setLoading] = useState(false); const [refinements, setRefinements] = useState({}); - - const sort = useTypedSelector((state) => state.product.sort); const filter = useTypedSelector((state) => state.product.filter); - const { setSort } = useActions(); useEffect(() => { (async () => { @@ -87,140 +87,22 @@ const Category: React.FC = ({ data, categoryId }) => { })(); }, []); - // React query status working - - // const fetchByParameters = async (page: number, sort?: string) => { - // window.scrollTo(0, 0); - // setLoading(true); - // const data = await AmazonProduct.getByCategoryId(categoryId, page, sort); - // if (data) { - // setCategoryResults(data); - // } - // setLoading(false); - // }; + useEffect(() => { + setCategoryResults(filterByValue(data, filter)); + }, [filter]); const handleChange = (value: string) => { - setSort({ type: value.type }); - - console.log(value); - - switch (value) { - case 'by_title_a': - setCategoryResults( - data.sort((a, b) => { - if (a.title > b.title) return 1; - if (a.title < b.title) return -1; - return 0; - }) - ); - break; - case 'by_title_z': - setCategoryResults( - data.sort((a, b) => { - if (a.title > b.title) return -1; - if (a.title < b.title) return 1; - return 0; - }) - ); - break; - case 'by_cost_l': - setCategoryResults( - data.sort((a, b) => { - const costA = a.discount ? a.cost - a.discount * a.cost : a.cost; - const costB = b.discount ? b.cost - b.discount * b.cost : b.cost; - - if (costA > costB) return -1; - if (costA < costB) return 1; - return 0; - }) - ); - break; - case 'by_cost_h': - setCategoryResults( - data.sort((a, b) => { - const costA = a.discount ? a.cost - a.discount * a.cost : a.cost; - const costB = b.discount ? b.cost - b.discount * b.cost : b.cost; - - if (costA > costB) return 1; - if (costA < costB) return -1; - return 0; - }) - ); - break; - case 'by_discount': - setCategoryResults( - data.sort((a, b) => { - if (a.discount > b.discount) return -1; - if (a.discount < b.discount) return 1; - return 0; - }) - ); - break; - case 'by_new': - setCategoryResults( - data.sort((a, b) => { - if (a.isNew) return -1; - if (!a.isNew) return 1; - return 0; - }) - ); - break; - - default: - break; - } + const sorted = sortByValue(data, value); + setCategoryResults([...sorted]); }; - useEffect(() => { - setCategoryResults(data); - }, [data]); - - useEffect(() => { - console.log(JSON.stringify(filter)); - - if ( - JSON.stringify(filter) !== - '{"brand":[],"capacities":[],"kind":[],"manufacturer":[],"packing":[],"strengths":[]}' - ) { - const products = categoryResults.filter((product) => { - const isBrand = filter.brand.some( - (brand) => product.brand[0] === brand - ); - const isKind = filter.kind.some((kind) => product.kind[0] === kind); - const isManufacturer = filter.manufacturer.some( - (manufacturer) => product.manufacturer[0] === manufacturer - ); - const isStrength = filter.strengths.some( - (strength) => product.strength[0] === strength - ); - const isCapacity = filter.capacities.some( - (capacity) => product.capacity[0] === capacity - ); - const isPacking = filter.packing.some( - (packing) => product.packing[0] === packing - ); - return ( - isBrand || - isKind || - isManufacturer || - isStrength || - isCapacity || - isPacking - ); - }); - setCategoryResults(products); - } else setCategoryResults(data); - }, [filter]); - return ( - {/* */} -

Відсортувати:

+ + +
); diff --git a/src/pages/global-error.tsx b/src/pages/global-error.tsx new file mode 100644 index 0000000..6579ca2 --- /dev/null +++ b/src/pages/global-error.tsx @@ -0,0 +1,26 @@ +import styled from 'styled-components'; + +export const Wrapper = styled.div` + display: flex; + align-items: center; + justify-content: center; + + height: 350px; + width: 100%; + + p { + font-size: 16pt; + font-style: italic; + font-weight: bold; + } +`; + +const Error = () => { + return ( + +

Occur some unknown error

+
+ ); +}; + +export default Error; diff --git a/src/pages/product/[slug].tsx b/src/pages/product/[slug].tsx index d537dd8..f884ba0 100644 --- a/src/pages/product/[slug].tsx +++ b/src/pages/product/[slug].tsx @@ -1,15 +1,9 @@ import React from 'react'; import MetaLayout from '@/components/layout/MetaLayout'; import Product from '@/components/screen/product/Product'; -// import { AmazonProduct } from '@/services/Amazon/AmazonProduct'; -import { IAmazonProductById } from '@/types/products.interface'; import { GetServerSideProps } from 'next'; import { ProductService } from '@/services/Server/ServerProduct'; -import { - IAttribute, - IAttributesResponse, - IProduct, -} from '@/types/product.interface'; +import { IAttributesResponse, IProduct } from '@/types/product.interface'; export const getServerSideProps: GetServerSideProps = async (context) => { const slug = context.params?.slug as string; diff --git a/src/pages/user/index.tsx b/src/pages/user/index.tsx index 133c08a..c0d349e 100644 --- a/src/pages/user/index.tsx +++ b/src/pages/user/index.tsx @@ -1,14 +1,5 @@ import React from 'react'; import MetaLayout from '@/components/layout/MetaLayout'; -import Product from '@/components/screen/product/Product'; -// import { AmazonProduct } from '@/services/Amazon/AmazonProduct'; -import { GetServerSideProps } from 'next'; -import { ProductService } from '@/services/Server/ServerProduct'; -import { - IAttribute, - IAttributesResponse, - IProduct, -} from '@/types/product.interface'; import User from '@/components/screen/user/User'; const UserPage = () => { diff --git a/src/services/Server/ServerProduct.ts b/src/services/Server/ServerProduct.ts index c607f14..c63e90b 100644 --- a/src/services/Server/ServerProduct.ts +++ b/src/services/Server/ServerProduct.ts @@ -41,9 +41,12 @@ export const ProductService = { async getProductsByCategory({ id }: { id: string }) { try { - const { data } = await serverApi.post(`${PRODUCT}/category`, { - id: id, - }); + const { data } = await serverApi.post<{ id: string }>( + `${PRODUCT}/category`, + { + id: id, + } + ); return data; } catch (error) {} diff --git a/src/services/Server/SeverUser.ts b/src/services/Server/SeverUser.ts index b97bdf4..2e52ee2 100644 --- a/src/services/Server/SeverUser.ts +++ b/src/services/Server/SeverUser.ts @@ -67,4 +67,17 @@ export const UserService = { return data; } catch (error) {} }, + + // Liqpay + + async getLiqpayData(obj: any) { + try { + const { data } = await serverApiClient.post( + `${USER}/liqpay/data`, + obj + ); + + return data; + } catch (error) {} + }, }; diff --git a/src/store/product/product.slice.ts b/src/store/product/product.slice.ts index 38a8999..5da18bc 100644 --- a/src/store/product/product.slice.ts +++ b/src/store/product/product.slice.ts @@ -2,6 +2,15 @@ import { PayloadAction, createSlice } from '@reduxjs/toolkit'; import { IProductInitialState } from './product.types'; +const filterInitial = { + brand: [], + capacities: [], + kind: [], + manufacturer: [], + packing: [], + strengths: [], +}; + const initialState: IProductInitialState = { sort: {}, filter: { @@ -31,7 +40,7 @@ export const productSlice = createSlice({ reset: (state) => { state.sort = {}; - state.filter = {}; + state.filter = filterInitial; }, }, }); diff --git a/src/store/product/product.types.ts b/src/store/product/product.types.ts index 91615dc..988704c 100644 --- a/src/store/product/product.types.ts +++ b/src/store/product/product.types.ts @@ -1,11 +1,11 @@ -export interface IFilter { +export type TFilter = { brand: string[]; kind: string[]; capacities: string[]; strengths: string[]; manufacturer: string[]; packing: string[]; -} +}; export interface ISort { type: @@ -19,5 +19,5 @@ export interface ISort { export interface IProductInitialState { sort: ISort | {}; - filter: IFilter | {}; + filter: TFilter; } diff --git a/src/types/product.interface.ts b/src/types/product.interface.ts index 2f2997c..fab0114 100644 --- a/src/types/product.interface.ts +++ b/src/types/product.interface.ts @@ -1,27 +1,27 @@ -export interface IProduct { - _id: string; - code: string; - title: string; - description: string; - picture: string; - cost: number; - discount: number; - isNew: boolean; - inStockQuantity: 5; - category: string[]; - __v: number; -} - export interface IAttribute { _id: string; value: string; } -export interface IAttributesResponse { +export type IAttributesResponse = { brand: IAttribute[]; capacity: IAttribute[]; strength: IAttribute[]; kind: IAttribute[]; manufacturer: IAttribute[]; packing: IAttribute[]; -} +}; + +export type IProduct = { + _id: string; + code: string; + title: string; + description: string; + picture: string; + cost: number; + discount: number; + isNew: boolean; + inStockQuantity: 5; + category: string[]; + __v: number; +};