From 0dde47109fbfe75311b80dc287f8d5b248430601 Mon Sep 17 00:00:00 2001 From: Ben Grant Date: Tue, 2 Mar 2021 20:31:32 +1100 Subject: [PATCH] Calendar field and time field --- crabfit-frontend/.gcloudignore | 6 - .../{app.yaml => example-app.yaml} | 0 crabfit-frontend/jsconfig.json | 6 - crabfit-frontend/package.json | 7 + .../public/fonts/karla-italic-variable.ttf | Bin 0 -> 76376 bytes .../public/fonts/karla-variable.ttf | Bin 0 -> 78356 bytes crabfit-frontend/public/index.css | 5 + crabfit-frontend/public/index.html | 2 + crabfit-frontend/src/App.js | 25 --- .../src/{App.test.js => App.test.ts} | 0 crabfit-frontend/src/App.tsx | 49 +++++ .../src/components/Button/Button.tsx | 14 ++ .../src/components/Button/buttonStyle.ts | 47 +++++ .../CalendarField/CalendarField.tsx | 192 ++++++++++++++++++ .../CalendarField/calendarFieldStyle.ts | 73 +++++++ .../src/components/TextField/TextField.tsx | 22 ++ .../components/TextField/textFieldStyle.ts | 38 ++++ .../TimeRangeField/TimeRangeField.tsx | 139 +++++++++++++ .../TimeRangeField/timeRangeFieldStyle.ts | 72 +++++++ crabfit-frontend/src/components/index.ts | 4 + crabfit-frontend/src/index.css | 13 -- crabfit-frontend/src/{index.js => index.tsx} | 1 - .../src/pages/Event/{Event.js => Event.tsx} | 0 crabfit-frontend/src/pages/Home/Home.js | 12 -- crabfit-frontend/src/pages/Home/Home.tsx | 59 ++++++ crabfit-frontend/src/pages/Home/homeStyle.ts | 32 +++ .../src/pages/{index.js => index.ts} | 0 crabfit-frontend/src/react-app-env.d.ts | 1 + crabfit-frontend/src/res/create_banner.svg | 61 ++++++ crabfit-frontend/src/theme/index.ts | 20 ++ crabfit-frontend/tsconfig.json | 27 +++ crabfit-frontend/yarn.lock | 39 +++- 32 files changed, 901 insertions(+), 65 deletions(-) delete mode 100644 crabfit-frontend/.gcloudignore rename crabfit-frontend/{app.yaml => example-app.yaml} (100%) delete mode 100644 crabfit-frontend/jsconfig.json create mode 100644 crabfit-frontend/public/fonts/karla-italic-variable.ttf create mode 100644 crabfit-frontend/public/fonts/karla-variable.ttf create mode 100644 crabfit-frontend/public/index.css delete mode 100644 crabfit-frontend/src/App.js rename crabfit-frontend/src/{App.test.js => App.test.ts} (100%) create mode 100644 crabfit-frontend/src/App.tsx create mode 100644 crabfit-frontend/src/components/Button/Button.tsx create mode 100644 crabfit-frontend/src/components/Button/buttonStyle.ts create mode 100644 crabfit-frontend/src/components/CalendarField/CalendarField.tsx create mode 100644 crabfit-frontend/src/components/CalendarField/calendarFieldStyle.ts create mode 100644 crabfit-frontend/src/components/TextField/TextField.tsx create mode 100644 crabfit-frontend/src/components/TextField/textFieldStyle.ts create mode 100644 crabfit-frontend/src/components/TimeRangeField/TimeRangeField.tsx create mode 100644 crabfit-frontend/src/components/TimeRangeField/timeRangeFieldStyle.ts create mode 100644 crabfit-frontend/src/components/index.ts delete mode 100644 crabfit-frontend/src/index.css rename crabfit-frontend/src/{index.js => index.tsx} (95%) rename crabfit-frontend/src/pages/Event/{Event.js => Event.tsx} (100%) delete mode 100644 crabfit-frontend/src/pages/Home/Home.js create mode 100644 crabfit-frontend/src/pages/Home/Home.tsx create mode 100644 crabfit-frontend/src/pages/Home/homeStyle.ts rename crabfit-frontend/src/pages/{index.js => index.ts} (100%) create mode 100644 crabfit-frontend/src/react-app-env.d.ts create mode 100644 crabfit-frontend/src/res/create_banner.svg create mode 100644 crabfit-frontend/src/theme/index.ts create mode 100644 crabfit-frontend/tsconfig.json diff --git a/crabfit-frontend/.gcloudignore b/crabfit-frontend/.gcloudignore deleted file mode 100644 index d3a7b16..0000000 --- a/crabfit-frontend/.gcloudignore +++ /dev/null @@ -1,6 +0,0 @@ -.gcloudignore - -.git -.gitignore - -node_modules/ diff --git a/crabfit-frontend/app.yaml b/crabfit-frontend/example-app.yaml similarity index 100% rename from crabfit-frontend/app.yaml rename to crabfit-frontend/example-app.yaml diff --git a/crabfit-frontend/jsconfig.json b/crabfit-frontend/jsconfig.json deleted file mode 100644 index 5875dc5..0000000 --- a/crabfit-frontend/jsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "compilerOptions": { - "baseUrl": "src" - }, - "include": ["src"] -} diff --git a/crabfit-frontend/package.json b/crabfit-frontend/package.json index 072dd0d..90739d6 100644 --- a/crabfit-frontend/package.json +++ b/crabfit-frontend/package.json @@ -8,10 +8,17 @@ "@testing-library/jest-dom": "^5.11.4", "@testing-library/react": "^11.1.0", "@testing-library/user-event": "^12.1.10", + "@types/jest": "^26.0.20", + "@types/node": "^14.14.31", + "@types/react": "^17.0.2", + "@types/react-dom": "^17.0.1", + "dayjs": "^1.10.4", "react": "^17.0.1", "react-dom": "^17.0.1", + "react-hook-form": "^6.15.4", "react-router-dom": "^5.2.0", "react-scripts": "4.0.3", + "typescript": "^4.2.2", "web-vitals": "^1.0.1", "zustand": "^3.3.2" }, diff --git a/crabfit-frontend/public/fonts/karla-italic-variable.ttf b/crabfit-frontend/public/fonts/karla-italic-variable.ttf new file mode 100644 index 0000000000000000000000000000000000000000..aecc4685826faf335f92756acc715eb62a38ccd4 GIT binary patch literal 76376 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 {@HxcmBfdVYGClGz?BX1xGc~ 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ýqKY{2z&H*%3=Tza-XAJM@E8 z0{e#uMEmOkqv!?L2fT08;uG^$Ky~S7bsrUC@|8{C1spt2z^L9&O2|PF3nc{qsRX{k zpEg7Vn`Zt3JjDt;g}aQVWL4$Gl{nF|u@1-k6gC2fEo*FOZf>2RX`mNGww6Tbu-p)eq_VqrLi%~mmT`Yu9z89C(Vpmwq(g1hU2_=&uWV0 zS~!K>+7$zM@*GU4!+Yidi0^D~V{dQo%#P^^e>JBSfky<=7_MdkT&swn8T8m{JTF}9 zlz&G0m9){}A@x9OCrG+wbw%mv>ao81>ay&#^c$I#%@yQSUrs|&k<_z829ol+&LIwH zBCLc$oEFpE+}1my#4%UAeun-B_KELMQYRZHXR%L2xVxL<%oUFwJ}j{cT(;&xASjcl zSEwY5e{7n*mK@>BiP^bR>N#`9(iN+hg}aTTC|Q5M?Tp2X7tfpQjAMgjBfe~1Oyl`Z z578>rU=3>E7dmBfXt0;q!JmKvdn+oYhk0-{il(x%l1inevbL%sret_XIFsI0_4|dh4OCEk{PAzIHI^QcTedvB!M@L7<@)%CoM!POP-_?ox7u8TOh3f0VM;`28Xo4y*^Z+T?*X)y0pMC7WbZP?tq$SNoGZ z&dFaS;-)uTL~NP8rZVTE)={XnTUG1uu%fBrcJkHh z1?A01Q0S;GxS4(<2Wjjs0LBh?Vp;0MIb5ZsvS9)Q<_^nB8Nr764$kgN9(aOaoUsat zc5Pk|I@vFL?PCXD0v9Zuh_a876QC)_X;^QjIZ{CQ&T>>?2~s)E+WIF8@x0zbL{5~x zg%;u2V(@GpT9Nm(&|nXNMqZO&Skg44vc`(zLiN?vRJSwtXS(;`^`w4(>P(Kp(mU?) wo!cW_CCyk%im8AVaqH$V|2eb$#2UbZUz@e;HksCd2`P;!!di9@==J;m11-=pB>(^b literal 0 HcmV?d00001 diff --git a/crabfit-frontend/public/fonts/karla-variable.ttf b/crabfit-frontend/public/fonts/karla-variable.ttf new file mode 100644 index 0000000000000000000000000000000000000000..172b500c49c80a05e6123d4d2bca21893e4a162f GIT binary patch literal 78356 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

L)KC|R=X>q32 z5-QRPQh@yITC$WrMR(An$Qrpq9wC>=qvR{HoBW&XB|jk2@;!MBM>FliU_DMpkweso zJV`CcK{^ck$vwzX>Pe2!@#JahN1mm@->H zjPNX+I*>}9pyuQinomyCJn}M~L(b4C|)? z%^{6AbIXfdCcolzo&@qOq=A50AAtR^H*ua!F8P=qCLhwr$p!i(`IJ6GqDVAdgtIA{ zXams^nS6(tI*xYG4Ri#~7JQMG(8uT_)D<&$GhI(j>1@-Hq6e4q%;Lm7`ey<86$kXsBBTX7`-+v9Fk8RYKdZ=SjDrGK z<9W3HSwm7me+6zt96$l(*_1lbz53@7BtST;JfjX1pGh(b_lKy!Z>d6KbYr)Tp!Ml~5ZySgM&P4IXp2J`~ zWq^~*aGwE=tOwr~;W-sgwczP8%mh|Cf;8e@0a!h_-T}LYEAYDkwJwA-os9p@L*1-I zBRF{yzN#fP99oN~d8n1momy~w1HPCHo-njEen`7%C^Zi?FdXWE;UwVbjr&y0{uKN# z4o`QmoJj62f9H+E@7`phUWRui$AIr$StQI|U zfbGe8SHx++W;UZ?CGHB%wEy)z8wI7ESUsH_km1YfZh(|yZLu*@N>t-sg5O%;RR(Mv zKr=1Jsvgg56j<4G$jBtzQ!q-btOMkzG6D{O53Ruq?|x6CDWDO%6#lqZy9R8EAf<~? z9~-q|KGF`rSm6c-z*xHxh}yE}25^f5@VlFL7NR$dH|qdjh&I_sRpZXMZ63HK1vMo7 zFTct{-wj+J15KceAnQMq;0>G-%F|3v%SzC)hD4(6YEbmf7Y0ZIzA3^xM!z(aVtk-A z_#pBIqnnDMRq@$=A`3AYx=CCU*p;>Rip0lC0ko%+Q7;=T$K^xdZGmfJU z)REwXBYK@24Cn(Kk84uhFus4O}Y!# zVF=kzv3{hXbQ<(i7_ze0K`VVpr&B^|p=+NwmMAjkUOEz_tE{ZFRs&r^bmcVJ^@SM7kZdJ zMK;nS^e8OSr(u&m3#;^bdK~ANoq!c^5_Z8$cS7_+{%uA)pGQCwfvRHlijDJrS2)oLPY=hbS<<{L+q);1KCl$2>3 z)X^nHc!OJgZBYZS!Z+B@G`g~>a$#kyHodxNVTC$|mobhR{7Ms}R4B%1=V@Y;O8K`_ ze0+@K?i2$?Q(}T+r1;{ZdQE~JiG-o$eFM}5u7d19$QuH;lj{8OgtJ9Qk(uREFAD~X>P+qamlprYsxTrIR6bbOrzl$)P zeOL9f_0`W-5LV5uuhh;{XYuNWXO&demo(OtSC=&#WtCQz)t4=-T&T{PS6|drHhj*V zm+Cnjq|V`=8RrZVM_t6n#)!j9YHNx$Mf&!Nl=emx)z#J4HkU1EEUKQ=P(Gq)VM%4B zQZas-@}CWr)umM~x`xNNXNJu#SXoV7!{UWy4PqIXs!XB5FhlR9n8x~A4f}((jmj&V%6J3H z6RTgtVGZTO*`2plu~2Cu$Y0--zY#X&)a$=vPs(@fX%HV!FZi>q<5rIw)7rZxO09kbAzL_ghp`7%r;!msaqVmYl8m2sguKeL{ZsE0~|u~XeCD8_ zGK0J$qK7X8OH@Nfpp4YO#7x5wwDDj3WL)7hCDOQ|qP|R_l>U(;r9l5b#=Zq0s%qzbOCmrTuTMt($O zL`0Gzq9P&!j);gjAc*6LI3P0r-`+DI_h#SspTlhS`?2;~Yp=cb+Go%y=K0S~S;_`R z47XtvPjOK3=DH+H_o#<;k9xYhXCd&wh+w-l|1nu>tcbYA%GK5|uC|VW&34@r#$~gv zo2#v}aJBVM5@qWFRX}^ag}J@WN-N)fLMm^+3QDCcz=ru~_vFmi-M>J~?2QVfni=|@ zC+exB-x(ILL|g?$R5Owm3*_o8j()rh>z| zeF*Nqv9fcJJpX{356O&!ELRQpIvxo$54G^$!b9(g-bTzFJRIc3yYL&JiQw>7suuVk zU?1qhE&8sx_Jxk+uS>F-{sy#s)!vq2WezC+%zr?F?hib{NFZ7O<^ zhBS+|lt79n=oNv^1m*Hb9uf#9Fq~k&4`mp>+=&hOZ~wXG&$WNPeR9pob*EOJdb40< z!Ro^0g-K`LIJ4~RYiF09TXKGJ@k_;vE-bjPuq2^mLFt^*xtHQD&Av3J?1i$pvKKGU zEPuW{wj!qDxr*m2r&Ug`jJY!HN{nu@Zi;TIE?W2O)k#;Qu1>x>rD|eTWYwgqsH(|T zQ?E_D7I|$_wRiRS>hS6b)e+Sbt0!F_eSQ4(@aq$5#?^$?jKA^Bjj=bz)sC(WtsQf7 z)XmVk5p^MTBkM-p3cfY`)`(jn`XGI9eNcUH!_eDF2qKswp~1Nl6Y ze1uc8U&(tpMn!IH~9^V%{%^axGpG!9far?}X+d&ZY zvxxm0FTJ@OyDb6jQELby%Ca#_L zgk^UG{~EuRPv^5F{UmXc*CneYZ{u!;kMNFgR=9+k>2DsvIu?6Vs>!E&LOJ$?1F)AH zgvT8_%pnK|3x1-}Yyj`5m>8z0AoTV$O1v{WGD&AZ@AkWwLB zL&|B%8N^-385@n;;yIMY36~L?F?Svv!wAFXs0) zU+{R33_v~Uuq)q%R35#hCk}oDqd{nl*&r-O4TpKktDMZ2DCOh-bt_PkF!Y0<64kH zT{_xykBpx6U=oSUlQ8+5RkbfcYc-67Y|H#+ePs8D_rjfgA74uONL{uI_&F ztDqh6;TNN~X*|W$!|;y-p2ecXTKMr^0Kj$xYN==NzRriE?*q&kzwG`<|12Ou z$j)Sfb=S@u%k#j}*Ws$oaU>ZdqJAgyF5Vt<6^oM!5A#}_WOy>y%e;s)z^0PMXjslZ z=H-a-HsdsoXjyz;Gwyg{)aQZK{V+xzn6enP^*8U~I?$hV_yf^n9=X0mF9_Mh+;5os z1zdadD-W6g2j;4o>&RRub2_&c{i3+!#bN+&XqWn!uS2Wg&0+>H*B?-Powfrvg!u_c zL*0-$kZ#ZFw#S&MpVo~#iKyGNN8R=qA&u|DTyK`DHJ?Tv+5#H`Tn@F@gNu2g-Yw(+ z>U|eyP-^BnGS><23Dmn7t_O?pWUd!;dox$V+&;|pX08vg<^Ul2HuNHW&4;1+@?~y6 z^Dflm2VBnrL}^%;$0B5yG11*pTO#dMf%w;kG4?P~0=131|PQj!(4U^`A zm^3$$NpsVfG&hGya|@U>x0Fe9tC%z=GHGr*ljFW(a@@a|1eeBSx38Jhc7VxiFptDC z_$`ys{>@~x@0g5sl*wi3Od|UqCW~b-S?nh!i)ArcESpJTzcMKdr%CKAiAr91O!7Lx zBrlvGVeF@v%vH!_u5(PLKdh zgs3yr+rYf+)!?3vuQ`6?xKFx6x)*s4IHLd3bm?)pC!B)eo^^uEt~jq~R+yxhrPm=s z_O*$EyUPZBuzAZS#b%pLw#_y8>uoS*WiN+VrH}Nsv<3b^X(!y}%6GA7C}d9XXDA^V z%KF+WZCzwTWEhJqToz4;?OV3s8Mb-0hv0VFqBd2SDna#{Y?dqmd6uhk;l3qHfxFEP z+)K90ZVKEq3MJVQ3K>}@9jPpr_EUD6_DXh=$( zg{tBRt09}k{K;H4Yl>^sZ=+zd=FZ%{HbXF9Bbk2&n@7uR#?$`Tyu#e&)V0i)b(Sr8 zjnN)>Y%4k!baV=&{ zOa~WQ#rZE31idU)>=I&wcVdkEvIHsy#Zas5N)P-I06u5nv8_e9Hn z{|=-2EzI4)Tnh)dL~+By2kif3eiq{(IM{;&^r1Y#0k{o!ibEK4;in(ReHPbY5#trB zn7hRRy>&>V*yV79xr`TCIElqo^Nfc$F?Wc1EcnSZ^*p$%C|6OZFgHW}CF3(Ey7-K` zf^i#rwTZ?!_JcdZF%s@9N)e6;%w@dD@h#?0r@Y89m$|2zdy%n6O61>+bhqySrPJIX~DGbP4$u##=mNJ9-5NAn= zrzzY+Nsi*O1LfDSIZ>QNssuNwb5v6t`oaf`BKdL$cj|*p6L1{)E+X}92kaj>9ehXZ z+mVXjCJ{2^QPhWpmbMQ5FVvHF^o|gVwwdso=5b;d4lJkz+?Ac@AMqk7g#* zJllnO+g&nR>mZ@tp_dH5&C3tM%&BNO{zIYO<~)z3hMtC;dF=OokN!K0mZ{OorQk{7RwT?y_tPe7=It?y!Rzy*3Lv zn{5s<#Q6w1d8<9F0r&`+Tox&dgm0Kku8fo6WS?Iq=t#ExHTe1q)pDa9G&4Mp+gNFK z*WvROs!5LBW%yRWr?jIGeuegppCq#-O1gFso`r*DwhDV0K+d_!EG?3UW8aB!!#7em zi@5F5BAfSw6BeJ;T{w=^K7vkl(e4fSv=pYQx6rpCv~Qdb?Ym7T!T~I-Mav8AXb<}f z2jnyC=xnYNG89KSTB9%G7ORZ#O_E+95!f?J_@mMbe1E#rM#~p$?17map}HkHUzd@C z;^ic{2P{I~q&{GtQiwr&R1l$I;Iiaxgk>xYu4LzekVH_TCW__I7qXOp(D@T++Pjvp z^nx-CVF~{ap^n#3+ zT!e2ta_^T=j0~20NSm?4gHNcJ-jq=M2al0nVP(I;$@3UXEf`0HgwD%Ogh#WuO|r{e zZ}geBj%AZjGfkY^L#^v5efBm5_{Uw{N5FDBF8Y=W$wC^( z`LW!T{*#hv*d4u_!BZV0eg{VyCBf`)fmS$yLDD=tE~^t4zKQxe-@@GPMQK-7x`slK zzld;OOBj&ogRq3Vgq;0sR=`(7=Z8;6p8hP)CHUwp5E7S6Yd^~B_z2;VmN4oV$m9J$ z{87a9!52Q(18`OTDC>bcV#l)FoKUaW1Wkd2=fFGPrnzBXZJB2*(JaqysR>Y~5cOc; z?Q##HU&Yd2rK8|ZBiDFK zSb9OR0$~aND*Ck;@$jLq^Qfg0|7z!3idaP~eDhg3$_YYPx%t5Ow{bqq__R$kD>tok zDp4xz;di&>0soDIMH-tAn==X}p!@*s5$y7@HkcpCuSn4fm)jYJUaC^i9qm`pK2$--~S+^o4M zjG;4Pv2?w$%!C~c^L{d0=}-~_Uq5N1bOh3%jI^Xki=?wy-uGA-Keo)$v1nP+L4_j- ztz)IkR(68r^kyk5r5EJUmR4B!T}m}r3ZDoAM^M@4;TTPb%!>~NZg8_MeV6yfJtcrbjHI;OJlnC^a9uy}-g5LOu4!x5CD2&dqm z!E(A|C#V!C-p;m$Cqq|3>+-UMk-v|y3vIef7Z4XgL48QIv^JmS!TN^Yp%fvh)^G;w zFfJiw9^%&Gi#(Duu;ienHnKc;qb%;GgdrtBI4e`j`orgoQBIM8JM;bN$fZuyhZ2^y zLTNe4GK6TDBNlq_r8&X9P`W$kQks*G2b8ZOPQsN?EEN8Pe>F`(_y8oAk?>VOvwe!y z_fJa-YEuf7N5g!!q>*^C@FYtZyupISD-b3mjK$is_GTgcp*4H} zcRo&`yc_x*&dPtxQY76}uo+=O_OMuc)(bjc+gaGHbG@~dPZ1_0oW^o1F&~z?v@HA! zw3bnsWo85c`rf4E*6+ zQL-NI=G=k2I0v+(kgk$T5SAj;rT?S9K{*1}fmm_L-|7D>CxVufMtc<9g6}ST(@+Zh zf;)o$x9~q3-#_s^kMB))=Yb zadc*IriR-eEbPw0o(R7{!~9H?r}8NwYgqbFAqyc|%QS=u`3$avTPn%tEOWCSVHM^n z5S(Bh^u#H+Rgg~pgf;$cj`r-XP-iXw402-Ba4{z75o>HT!k9G{n+7gvX)6|C$mlHg z8{rIUq*8~JhDkBjHA}8O2orJuF2)Vovc%dWOvu+XmQ+aNtg(RzbCw$LW<*dk8o%o014#cF6QKNH->2k{(Xk`*^pa^9LNhUF4j*`>mF*4W7`R?S=h0I?r% zV@S{QSSPkFLX$lGxoJLRD2$MNAYIY(S&A(bgXzhu99n!El&1Ewb}SWccdGRNNSFOr zy8TNpz40cAd->&MD@X!0{~)g{h6xXO{f(tdU>8k|p~&0JO{OLxWJ}VjSC*4)D-a-` zu3ox)G1;?v&7#$0-|96hR+9s7()c6j52Z6YO4@7c+QOBv9^139D|2Pcl`>b!Tu0_Q zGgrY}Idg58>w6+HZ4-$eJ2z?%Tt{x=*3M_3nFpi;wzvXpqi1nS zoNP~p{cbPd_H$fc%*s|+#s=q;lylQxs|`b6&trR$MuIFR?z5iAI=;8Z5-{z$Jl#GtyaAs zz@k_B#GV@d*e*+C@LJ0{0S?XjI1l|C%4V9qS)M_Z2PO4paROX$e%RprZ`{~|sT5DZ zO}NppqNb&&4SH7!)+@|Aupi2KxhiXRvWVxd=bU4d{*^ZH;H^C|dMH>#^v^7WCkA^yYYXYv=*E6INTa zKyOdZM7vwj;$F1=OLvR?Sj|I_&&gUdZJh_+KWVdfcMA4Fz_Xbw%!4jM5VpXZ-hdJq z{ep%OOD!5Kbn_%f6!EcA@B>gUXqQoLFWg(8G)pO#((824>Wfx7UBPX{jRsIBnGU+l zU^MAtrM6a38l^K8xP=?=mD1NR@Qg_Cj~LL^Y%5Kz1U|LBpG-((~A z0oa%KLrotczX~;U@gNHassnY?7TwTFBwCmaE|Sdsh}wLtyy59LF)aMT!YyusM_}aO z3PWM5n@~drDpc^WdEs@qoP)C_+1JgxY*m`p)*52kl$c~-}Rw!?x=ylhKR7; zRXWm#BQKxF#1lfo@mR|~gFKAu=WYDs-4h#5ypzA-&$s@3yI}R{m9P&>JhSXfQc)ta z5PPNgr3(u$&bu`D((JOh%QG*}s+dtZ?aDM}_ciHSB(?Fn4(qO(aW|f!_FVPD>H`}B zZx3tqZyI#h*Pu1@z1OG3z16kNp+nIrm<7I_e$0S zUZou)UmqhoGsu@2+0SJAFJ#9r%o|``>@`cGWmdu$G6BE8>?h6YJ?EGT()@NrwJ7ea-uV(E2=-DX;znZ!~ z{9yQ3yEpIr;;S90$;mr*ELbpi&-9pY_s!ow`A}r?+^^Eo_Ai*Tb;b*DU)VZh#*DA< zIcyDl_0{w5=Wpr`MB?+|hXtG8-o0n{jDKx8`N=>3nX-S*oUI4H`gAKkv+;TM*{!dk zl7lmzJ$UfoH($Z~(X;p}M}*!{r>T)e9E9`YL(#)jYfl1FyxHOpZ^WCHRQeb7A=~SM$qT=Z%{DJn1M)gdPX$vCcUtL%$YMMF_9!D&LyyRn=@zG zGV*oQvd@=cJm3ra{#=aAZ_PdR$BB=_cZ7$>MSxYT!G|Oykbfp5EL=$NM^?_ohb&!6 zzI=VxYh)6B_cy0w8(uMKp*Hr69VBQ2L>AOFzP|gK0fQ#ieh)^agBC z>7J`E?m$J81OjP_W-7d9ap!+2mQP6(VUeOk5NtzA)1a#r! z@kQ^zUs*Z_&cJ#BNshM6VU1>Gx@wkDE^(b)r=x^;Z8s^9c#jSz;WS9|P4Uf*b{ac}CQggB2DlO<+hoRBCS6Doz<(rMCdQk^VJ z_JhnIpDBM&ULe;iG>R#Tt%?JRvo?V?$u_^+T(xOc&Qq?(`>OJkjW~@Cv0Y&Mz3oj^ zoazfZd%Hlp<#wOo6!(F>#y-k^KHfp~jr}zTdxvm`xejkQq&i%5c&Lt3Ur;}AoZ@)O zvBv2`XU_R!7r`abWxdO0mz^&AU5>f@?sCpW=W^S{Z(*n&*1nwaT^8wXK(;ms_uXy(-+kb^8(Te!Adx&8^Apk-Lq%n|puv5ci4h z&$};hU*^8U{eRpqdkpi4_gLx4d#XLPp3itr^<3t;!SjZv!E3bFWV{FJWv^9UqSp?u zS}$X7uD80kckh7S&-9+!`^DZ%dav%ixA&pmnY~Z+zM$!=3Dm69Y|(tCIiNYFDbv(y z?rF?@?ECcYGpNt#J_&u6^?9eyhke?-72a;%$=(&-x4c_?cpoPptxurOc%SJ$bA6Wj ztn3|={SpeVSfZp3Y-(THgI3y zzXOj4o(`-FB0-abW(Fk%{Uhk3pf7_51+NSKAo%Ctlfk9IHNkg>tA>vlK7M%Y@Xf=& z8GdZ|@576RR}R;Ya2Vk^V&I68BO*r}7;!AbJ7ig$@V} z37r_aG<03)<}nUqyv95?=D?UA#{4#>XiVi8{WDvhNqgq#Gbf)Zd*<#lkH^j*yL9a3 zaU;h~8W%I}`*GLDHIM5EQ--;RtqZFNyE%T=_*cfC9A7s6W_UpOn(&k1B@_BhcymJP zgij{?Yr^*vew}b;Lgj?|2@fM=5v~#aBIZSGkN7g;NW}4oQxhc<9VWgo@so*Zd7#Q< z9y>KRP$AV3e*K=r#m7sPB6ITbARazWDH4^Jk4q||EB-iFpCYUJ{X9AUdsT|0{@foG zsg|;IM<+$uWO7|hO(x;u{}JCG`KdJFSgMjV>F>*Avij1W_wC#FJ2@mejPh`nl6HON zsbj~EUAiq9nyQS~w+{?*Z)s^6Ha8MGq?7DPNe(BOqT-X{iiboM9J4xtq|rwbKe+9i zR5l_FS{dX6ZLLaWyn5=$kt3(B8dc;cQGW3^F!SFo>Ql(AR2v1mDnPFb@cQ0sC%^{q zD8IJ1KAh~Dh&|aac(#(^B7`4SC*8GD9h0QJnWTxyBq)_v`2mD~z`xHr>h3(9o#dFv zX^}?|kS9&#a=Y?SP7L`BhiTZ{8mi9n1+c5uMlI!6*Ah!hGzYW|EJrf;*-n}xc>*rB zmj7Lz!{1u-93vS|^7x@1st)*?Ci^!E6L%^%)_EWUy=iWFl9H8lDh|wT!~%7f9F%!#6S5EJaHj z&=P4)8Bkk!DL*q)sgxNj3x7&aPj7y}E0s!HVrYD5GPP8d7iDB*{9b&iNt8A>H`J3~ z#N@!b_FjH|e!gxB1>f4-+}zU9iFdg0ZH5QNrlzL4YK6U4{YAmg zFEALhvK>u_sLHakvVJW!7&=_g2RDU4Os2;UTDRW*{{A5mhT787(g)gzq@<*I;Xy&( zQj>M2>8|BfjCf$#g|kIPxw&Vq>J5UElas`tzlLB@(fJGKPXC#opMUDSTAiC)OD>6i zf*>(9G?e8XKYsk=4U>9EXlUp#cR^?~V9dscrgk%J+ptN9dueH6;sm^^BUQC*N|4s1 z)9Fmwpvc!*lwD%t%L^B;T)$z%hBsfWu4Zw3D48wFOr}SU0ReFnapQRheLUBOscQ~z z-@bi+iOJ;97o+R#tX5&Ksa9(@Sukx1MnQL(eGLzJ1)%@XaHFK?LivC`X2Xrsw42uq z(g6d?%P-fEo1za;xugC59rU(c)m!U9``=&LezzDIi}m_OlaT7Hb$)Cx7#=%o$1O;F zDK_IzUK_R|0Q}Z)epT=-7d&2{ucfGv03H2Fv8M# z>7t;Z!45s4JqP_v9w4(*tJMy+GKrv2xVb4?o9Zs)<>eLEH9u6k0e=)y!Obl{-vVuO zyXm13y*0E6g8MM^c8J<^<0N{USJu#Ak_g0LGHps8&{9`jU0rj#rTwA7P+EG&)qnKD zjT<+bi^75(%a!u?n z2tsG;{kx13fonW#jIPm zZh~6vEbD?g)mo24-yKyd75}iMv9hG5s=Tb^Pjpz6oI6L(iODW%*`wChR#R)xh>(zw z;C@cT*J$)jwb$$Q?am$ppGz1wd1hR~+tx`HB}_h+Ad_Qi1+ z7HKruR?5PD6F0bF@7~0@0!V{GYs!m?iprYIK4_t@y5`11uoD~JR9SHW4BOn91hwUom;K74c9eNbjSBdg_wRLqjs>oGQs#Iby9pZSUvc35x zQcG_FdGL`wGTv*_>pMD3cl9-8^iy|_Q#Lg<-)(Mc#AGxwUshIGvqY=aN}82rS;ms{ zX9^2J^{M0iNg2R@bbHv$#Kgqe{`~J4S$1{USZ7RMQ-?Zc#zOFr1!2_+j3QuwqVon? zzR{_04vvnF4t7@Ql~|>2DFRVAC`y#~850sRHi}FUrHze`ojq*Ckj6%p-zcQc8RO^F zh);{H#@jzA2<^Z*OnD?()gp+>(-_f^(-%p@WolkqR+c-R=hR@pp4_ z>Y(I*zr9`LKsz$O)9joqxIPO=S!P;;}CdtVUsP^L@d_W8qs6% zC@+J-D=Lz*b#n_=feni6?CZl45){|9B3qNfPXxlKYZQ7|Ij;RsD{Qb3#YN5HfxESHr z!4tgDssha>3{zasZfvY8O;`@jJT*Y0@fRAc5T??|K=cHxD>t`5eYil;a_kT(5R+}d zPzsGk4`M9e#94vHt*#Cy$N1F-j|n7=WG0i<$fs75B#ow+XksnvE!}Z;NeH|;_dGF) zge?WH5Vd9W^dxN|+8hKTP`Bucit6gB%gZWDOUuj4)#`%WU-K+8+&$^J;PBRY?(N~h z-D$ASvyIVMe$DEaccH;1S77T6kEw}?At4bnUWl1H7i_({dNoCa_w6=Xu)vBO5fnKH zWW!Ni$WT~ZZ0f+V^fUFy3uwYR~~6bqxkZZ*Txx{e>K`!m}U{jUY(5_Is2z z?%ZqVq(V;4h30l!kh)gduFpwz_t#3nsij)~VN-xBQ-*1c=zi|)pqHqm$(Bcc2|9#T zjBxD^}5!g-IZ~Dokr`?%5knZAwTWg0Z3I zTyAb@X-P@h#WR?MGi7RZF@SYebP)uFth4jhDRlcxL%Vt~hh>m(LKAw@aYDt*CLlanPt0o|9F^jT~k6*ALZXQMSWpUNji&$hbSt`mQzT6jt z5J==q0gZ^1 zx3}-SU2~-X-TdQXbtAFI=keWgBmOl&e$6>ifWg>8oa$_UK!vA9qv-8A6oVP8Zf`h) zQm5)VJ3Bc+DQ|5AGPE>SSCpkXYn(eV2OUba0*h*GEk87D+A6DTqTV<^VhE|lN9r5v ziGKkTE#fb14*!9d0g1LIQ-`2((_#pNG@?!UK@95OHL78W){#1`8BJGhQ{z2n{|>C| zgCl0dS?6geMi_+=x>D*dEc_)s>$k$$$rF>E32=`oHAuf zu(K?+n;j%UuKgHN?M|{ulC&sk)g)}SQpu-?V??!4Ot#f(NsAo9fX3HfoM_%)UP&K* z-_;gt58}~-1?a)xPP4t2N9m<|D)%5L(uOz%_<^!)TW{CY`uizbuTjCj^cq&vyEu0e z9R)!~T3V_RTXNH2R=WzE=xPGAc_*j7l&c7Jm4GBa#N@1>HzpY z*6DJ5pr3s}1%8s9IN3-&B3GK@b`m$Q98U;%SS%y}cG4 zK2ro^Dkh1z`nfhkga@idj~nJ6F?y)U6c9kBiOyiX9ziNqDB541h&8{51VUFt%6Hsd z^YdL5*dCm3=v2G9+S}X7I@^gtfklHe7(^AY=`xV*0;tC zPW3AR!u9g<+S*$!f*nd=x!|-~kxCCQbcwkO2mAT)4^sG+2MX(KxuEqvXx&D2)Yv?{ zG*=6eP---0XB&;1i9VbhmT3I;#$&I>=R&08G@1z%Rq=nbMW*kE@^n3SRAp6G$&Qs* zk@QSiZFz=_{3?Q(XJnX685u^S$c2Zq`gZa$Q7zb_^0D+SSqJd$;+9Z|=wCw37f#-{ zG=N1Gi}nP%*rFkk6UEKl`)qpJW9KTkrkA#Vw*Q}|@^o@UOqR793^@ivyGTMd@#UuS zaB_f)S4ChC`x{==r$+q;lEcYStW_$l7CepDYE>fn%)FFN}{F z=;6`3pH^;cZZcpzUs}ck?xfaew0g)ww{0(MMs5UgC^0j=XSP%eY8LHFn~Q;4a0 zZ}nv%XSi{Ajwrzk=p({$3K%hq_WN_q=lEw?b92-xPtj@{nhHq zb2*urnLi)P%)-CS?9=7Bx;Ah_qYkS`)on1&#wv0~Om=|KT5+vTe^cLhs}3V>!z=NR zA1~9lVbi1mT~xK&YBZ^m>gt#!)3CD8J^dcA>NL2YSwp+Yb}k9?lPZe_ldSC>ZC$?= zQ31gBK~ZEGnt`|(8yONjDroS?(SCz`97HQR+rJQ`!e*)fL>1-QP*7mu@sSwEa~OwD z)4fh~RWLPOJXJEl=TTF2J`_F2FE;T527pGdk;`HqtWcbxt{ltk%@%?=(x^KO4RnWD z(%9Hagj7d=Zvp)U{M#{&G+|rHCs7LH@>NLrGEgtf0XLLs&!2gKv>d*H>Zno!1c<_rk0Kr zr7uL(6IYuax%m15kkNBDMpytR**G`avKv=M`#%EY9{EQDR&s!9`WSx?SqjOHp!7q& zlx>Xmx2?$T+V4EUH|T@#k*P~_@thaRG(}FwMXoxY&Okg#<>FtF#1$m!!pRN`zENus zoZ`u(RFedeSY4T0lY3E8rYUwsv6zV{7KZOUlv-3STDSu}yjY64@HDhZFc&tm4#V01 z$4OAt&Awffph%u1`buP^pl_77@xr?C|0 z-w+kNL?FrzQd+u6skLvz)m%;X2ysbqL}!8AU*zYqZuvRRl4Bs?GzxIS;(SY2 zbq@eJeE9IsMWwn%k}j$hIg}jFmY0>4H+5p+m!&GS+Tl~9`T(R7di*6Olj**NJ}BQ{T(o6#PR^0khH7A+ntUw^Wo3#qoye=p$~F^^ zNSqkcN{*6tJ|Mz^YFsty|6Szc;tWtkl4y~yj*HuDnQ5wvgk_o_q1YkGtyG`Ei@VE^ zKb4QEUIrur$9b}1gkr3Y>MyHn2OK|+4RT>eKJCM4QCe2^{`-`FMMbIAk&&ATb|-~= zL}Xviz%n%X3ySi0|hDNz8o)+=#o?dRy|(3Xd@5>6^C;pNSqjM zhWt*o*W*wp-oZi~bxl~C6{Ja5n0fT*(ab_!bBdx_cM21A3hH7YamQVK^=062#SOjT zF+}uYJr7it=!g1#=Mn{TuP*&*-=%zuJM+zbPfwAZe z0u(F++tG4^0vs<@qSHmcY;Ds1AT{rFFTvPJH^IT;pTN0qHRnJPOW1HDQCQF|xzXgRM4jqo>mp5U{2hwx~ z4HN+yMLKwD9)O=dsL`d8E-_mAX6$fRSJ#PnD>!|=m2HT{yCJAFw?~x3#YMki9h2&f zXoSL`r8T*QMO)kMh5q}ZZJSCy{ir~Wl!1No`@v@TvaBH=-xA-u*xMGZCROX&hgAm5Jjp*ZUYvHLQ=*< zkxu6gT}(|D3UcG($|C@w9b}JnO{X%AGisE!AI&o0Oi<+f{8EW(0vPg6PK&ach|0>c zwr@QtBYX?_R3uKRFmejV8c%>dY;72T+L%RnQB_NdN>}j77ss-`+r4{t7I{xp;~=7+ z+oMZGjm_=6%+vpw*i=4ovRexG?CL3y(2FoDJMnUh687vwhYgsZdFFX`;?JcvvlIP& zZ9DE4rGFT1o@c?40JJq0Jy)gIUdhin1C7aVNA@H~&_&R^hX0(k7&KJt;mo&C-EWmi z)^}}%}F z0;DONltI-#Nv-e-3K$e0V^BB-OzqNM_@VwF)bE&M!ttHy;X_l-VH_A7`hm8fs4Q)4 z&>K5Ug=JS8?ze5iFy#21F16apSsjIG{Q+2MdG=!IqqcDNgP05OP1>Vh@Xzg)wq9JPvEIGC|VwXn3oW&vv{!_6uwjb*37rVZTO|J*g)2JjtT>ZnTBoPJDf6a}X`GU2k=@{qBsL2lcL_hpqR$GF_6}!>1 zVzO4JyL7hjo065i8mLAd=865~P_L|WEgAo@|NG)(r6j(%}z(z@kQe(l%=UTtd9!~h<% z#`<|Xv^VKnLzb}B#fmG7(R&fS531Ii6l!%==85v^dqA7^+MYS_(0Fm>`h$yLx>YU3yDv?{HYAp~6snUo*yL(hIzmx2-eJ3`eH!wjpHZdRo2PyWk0NlvfgcTc$3TnKfmPBL8wIF*g z7-cRU9-eKmM-C^VsK5fO>Khak_Ydo8W;z=ip_QO9ZDvR(-cjb}ggjmIx1Ie5L{1QJ9B#lYb z5nXJ!c|A;t8IIGP_zQrZPt8Mxy*fMlV$CCnp4A#?)5;2x78Jp%_>IG%PG8509Jg$W=o@gYzY#KmEs9TgJ;(Q0(a09)&LUqLUaopWH>jW$Y& z`s(vP!aB19l06gwzhwV-?8mHhkmlhZPnR{cx3@Qxoz4Q*=E0U=D5kizvHB7w@~WY; zQ%S`sef7!glO^bPmA>hIC&=|e9o2_O40RVkuW?}xz+Jl$5wAwz6_r1d!^skxfziuj z(0}@Tgr4jLHtz)r8~{VJ5cKDYm2pD>xuJ0@CxXfudUOB4L~o~h2eYex#B9vuR4phA zGfRTP*MgFj>*iyeQN#Vcq!v22c`3vWKxos3yhI6|&5$$3PHoXS?*XDvP>@cKiG%?I z%F6sVarqe{w|X^}40b3aWMss}S=aSXQ7RLq##i5$qFZ*3t}+OUm;L~_pg^w!qTbQ9 zn5Z2Ff4BN_9<(k{B>i5j(=|Ru+M~wm(i2q0Qj;S;4)sRP1(GYu07+BJ!^bJl$Wf2Omnb2X-U&Z-CNqJ4fts5A^m9qT&;yU9ad%)Z7VN>Pl{L;&nHI2X$ z`v|WVpvJB0awCoqX9N2gT%DkB4*{?6i}rAQgagvYz7ew~lVq&9^!c398%a^U934Fv zgkw?;j+pzdRdd5F45K@YPb|6=ynp;9fIXF>7w_odEKgAw^u@(@ynW1bPvvBg{#d@O@`x2?K>SU@A;`5-qoNh_BxV;+S1qs)1 zucf}?YSR@Mm=x98YJ=m}S&2uzGTP6!9vI!Bod#9gbh3et|FNxy$24n>{%fM3i>a+P zV0u*=|IyE3;4>qJ`ngL@>(T>*4?IQ&?Gr#?o@!N%} zs;bjjCr@q#1Mv|>@%{Ze-O;0^gsR1E7k;xyM$#!HB)pag{9;N?$(rbR z;Dv$m-8O08u&@`pU^g&vtRJZ?)hCAZ@1u3)P323Llvj7{gZ!`$0$An#&n{oL#0nd_ z&!fK!830fcGcR+*(Q&7~EI(W2@VNPUAvV-G$FqI}NtHJPJDSV$u;~1b^N7LOCr_R_ zQ(Stbp;ZcGaZ{<9G4&PoEf3mT42{(#*@DniegbRLiSkC!3DDfkceGSvL6QW;tp`Jp z>T6_v5zFZB4AEx`C}$^TiIIpb)))BEZ)PMGL(8I*oQzWql+vtQw|3d0_-6xMTY)wg z^?EI)enzlIFO`RONMr(X2qx3unE(`9pd|0a4(h`A7>sl^Mhcn#VXF6?igL&Too(04 z{{VAMzkrp`#!j7itWs$(Fe$$eHn=|>*HdAj1cxv#7^Fmh?3Y3U7V=A8Uacsp&B&-t z1Vk0mFa7sb28z1|RE|uT`*#d<^-&}`d)dPw!{0U zxXH2(N|8oy^oTSGP(uRazEm%W_XQ)95{t>^WUh(v^v#x1G?m(QC-c2=CIgLD0S;jP zlIDT)V5FVHajrGZ+7qhI;*7hwI^4U2#-9tZ)Jjv)7nbUB9;saUD_v<%TJ*r76KXw+ zGo+`~+W8Cj81II_`U8V(Hj=J%fp^QWbCkAsa~)?@TNN7=?w?fxs3(hjd6#o{L3Kwc89RJ9AxIf<0< zCAX9s*<;AcE!PS&KL7aRkN2g6JKk?-Xs9UsF)c0aP(~%zmh1IRhYub0IM-Lq_j;+0>pQG++GTt8G!{RptcqEcPUrlbljM{O7^+%%5<)mWRX9-!i}b>Z6I~jh06% zZuw*%G;m+;-uvZ&@33;^o;~;Fp-h15yMteC!%F`#2{%s@$4{FU5$x?M+@>79LjOq7 zs~@!{8Wu7<2>-Oboa_W@`zJW*8(=fgs!%z4U`o6^JiU9_DijS3?Mj*Jpy9)Z59#f| zHKa-w#|*Sj;rh;>MZO`Y@V;no+kg+GD`pwDJ*>Eh}5L7+@jWf9{Kqv`@& zsr^1X~_gChb7Z0gyN_~ zZNvmvI_xA?ilur|s=eWkWYTl46@mfkO%T~aQLdrZQ23@!gg~~N8xFeATGX9D(r{6J zO07Oczt+A)p{50>Nh?#BT40-CZ%a#bv|bN+POqQ|7JBH19@F<$tJNO(*)P{d zBWbB?rmuOCi}vMp%|$26%TE?I)|DGt4XNttVm+xX_ty}Q5Whw!1&yM8Y=~dty4cut zN&X?RT34+V4)&;(>4_B`hcltmm#AxN)v&HmP|e34^zVQusSXXTw)Ej0DM_{k@q9K_v&6t|9+=K5;rZ>#H@JFwU3Xubxi z^BPot$-~Rapo1Z8#@lq)d*imTjo=*NmXT^v9vN?ywY1!W-5S+CT)I+o`yO^#6*WyM zlBSx9f>f?4$bxQr$TndEwrv}x;@1BjsADq#Z2DxtzeiXPCBgbhNXWtr&?k%c^H8Mp zQh4|UM?gm$5$tD!eUFXbMCgJi0%_CGuednU(Lo$EL&LDM4I8R)ARTdW!5SsD-bzhy zoQDTerqSJR{4}I`tX@4MY+#CHVAzb+R(Mh>0#!pIP8Uf_D(K*VNIWdiqiO$PZ3<%o z$m^-(6%uPXgQc2Q+?Masw5pHf9?23mmkP1?)mMtwsrc>;$IocRo1n~2?v_xgtj&K$ zc8Qz9Nf{=s)XFQpP#>i@o-f@VZcY%g^3sliT;fIfsH&<_qg-7_rE(ougKu$EnYa;) z^(&#fHD zC^$ks`deY)Z}fj!8aXUVaDT#1)KL8j_PoF4<^A++T3S<6aem=hU3G2!!*_RSo9d6euQ&V82Cfbx>RlyU>oS|-Otz8 zcR;Fik=iAAG3>mz!{lkzI~&7E3is}Y2po-^CcA8smM&PdYI)*I3xJF_M30PWTO6Fu zj9UP)XLhW{1ij*k{9m9H$mr46t`+3*FI*>fRaA-={<@Fws6Z@tZU)!-*ECfHN^|wQe_8i?{vJ)h_f&$*$DS9GWWNwBl*0k27hil&)IVvJrq^9N_2u{r7veZQGNc zPTlXnzjp0nOYwPMW$Cr*i#7ShO#r+K$D+;<@9gbcuhUBsxPqV*6=g;lZZfpl7*nT{ zgLq0Hh}6TSYQru+;$dDf*KN_OzckH_oH%#<`bGW#=MSP1hpCl=SFf(Eb(t`MN;9IQ z>Bx~gq9RW7;4)geqj?Hcu~Vpn{mOr>_FdyIW~mGRCiU=c?mi3wj{$aGe}!G`ZtgtZ zvq#Im`Xse$ZFav*_kG2)dhWrx(wr}&Pn>R6*Y54fx~+%d7i59qu-bZxEZ}gu4G zwOZ%VYkoMz=rYdZLXyB%g;Aqke;spRwap`Y#R<^${?kHJPg<#`tqkjGh0TScg~d|s-v4AO$|}oX zppbcw(9NLLT#c{Rz6Smyjhh~aT@8+putE9@l>avjYGxSJuN#AUVpl1fow?n!L+Q{m z;;XPZ!-%8M;_pwR#I`e(y6u-ejk;SXA#$F}dcx77E4v3e1a)gbiB>3jqD4O+SRr&O zi%;a{R#rmxK7#{?oXkfsr4UJ3sscqp-uOtQO^a|m&TQ658@(;D2ff|VZM)WUHqALy z2gK1Cd5R9Goy|2g8ULSiJs-WK@{&3fC)7-Am!|HqOY51cXQ_cbQfC7$ zZvZZ?SL@qh$=PjickI`5SFY$yDNYufyWh@VRVc1ry>jLI?{V_q4;N!@*LR!W)i>d) zOlj%mYgP-qYnMw)VL&Q!)QEKIFgp`qLT&M=7;KS{{sq1DYtyF>cVzZ>U82!e`72Wm zhN)AhPoIEw^A@vk)51S2lcWPg}zS!t54s!V>Qt12U;6i|woOrEhw z%ROYvtviiM!{agAUQSMVd8Jmf%u?88mRb!nOPOV+J8Z158d;1p+evx1 zd8RTIo9KlfnkMh}IZ2wZjN;t?UP9WmPtQ5e@_T;!@B82) z(-c5GxLiq5_4fny59vR@zbf8p-L`G}n&fyQ{WvOh&hjmrmp}FxcHvi@RMPTimcuX3 zzQq5wG}dtV@R~JC=1|MDWi%}ziAghf4g7)LCrIQ!UYUYo_Jw}D1_z7Rux)8kQ4SKU zoZKi`bRq_?5{~N=Zd3EV0)PT2GV@b$XjS$8RVBP?W>v%Y<(VVcdDQd7at-XfA7d>^ z6n)`WVd${U^7XZAS5F)}|JCKoH#Z#(HNmtiv36g2_uY37zVnyA z{`Id14xMcvmEI%cHV6`XZalZIudlzitGl~fH!v-kJ$rWM98F$MPEJ0<|IzF@6;A^V zf9|J0s-#XLF8&ht2Rk0#MSL~?5%KKPPdxF@{_f?_-|@)bVbFbAPSVOB zRwL(yyxzx|t)B&6pHPRgetth<06AGns+5!zYtyMEOvvrS-ggnMBw3#-QBh%Ebc1k z6?HUN44*Rsho_~kuEoRf%PeaiR2RVMAZ$S`We_l0O9 zs1=w8XdgvqETlQNwk5G`muA{Rv+p6ZFAC0nA)Zx;{wYPAh`5yGWEoG)v%74gX1m=! z>ESX;i5sP?E>vAc8qE=?sN&HyPY}r{Egp08`Sa)cCXLQGnJOz?85b85ImIZAlEhSH z6g6fXDNvh%<%o!++d2~9B1A`i1W(I}L4gN(e>=X4PCHki*9$m09f1t`7Mzu&j*gld z^1eg7l}c@@t*FT6sjNf|)px*Mnc26|*t5Fez9nl7Z!ab25cPg;urx3N%jIjAEqp%1 zSz`f({+?5$evlEUAAjg^wcYNgsoA(@Hm;G`L{f1?B%G+UYYbL^gOQ1S6emJJd7Y3W zK2C&`ktJ9RBV!{5gV85V&(6w>Wn{x#-;{aM$0G@5-03kxV4ee%io-A%YLcPi8A=go z`2(K!M?8;fGCMqb$~+FUX{fsm3SC?GkZE*c(&chZPK=uLechd%o!xzU)5tg|!Dcaa zw(1m7HdF5v$f66aCYM6d)1#xPX05i&Giezf(y=$u4FN{NL*deX!|<4uy`6Pz*wEkI zX|*~h&89)P=tu1ypKMbz_`Z-9=tVflPbW}*U- z21R0~rfA6ulz^{TQk1JnL%MB(I=5vU6yCkO7&jL9s;ZVRDZ>3?q*7@Nd%xvXNl7uWvvU`qKz>d_q#aVk8Z$e8^N)Yb z|M7TuCu#JQ*z$OnB_*ClreI{m&XcHe5QWWANqF{=r=PCL zme>fG)Mc9_yXNW3wq?qe*k#lzQGfEPMXkur4i`3fi_zXbsn-hFo=wSz5ZqKuC}`M7Z~ut(Gg@0;q`>Nj5x-2EBc{XcQ{MF&rwJ$>>Nq5wxedgtx8 z-#$d$A%@c-ZHaJd+Q;WiPub08v&+kifKqxVm`()BZ4dnmgekP#Um=HJ74)J%!J~bY zeZ5;d=MEvC%Bgp?S>q7`j(u7nj#sPIQC!y;g2;Cc0>#SH2QU*v8q{j;Y~;hkSFa+N z4@c6SjFwWgw=0-h&7F-&qXEF_oj_Sdg`ljc!R&0%48>MkronnnqZKh=2th4{d?ef= zrWK$$#?}j;zW3gz7wVe2nl7GxBWB#ta_*Buhd#O5Vi-Sl>S{;FSClM@a1$ugfqZQO4>JazQjq_5;YHnTqBfkzXAN?RT z<4kxYyd`)O}Ae1Evabgio=}*#79bxlk(cO+wRy18^421Wo&5#(as0y1 zJ&VwvwdfDVMoPSnA|EnYFgs41Uh65chA9?LJuN|S1j~?B&O=QIO zFp9De`ppXeOes-2Otg1~Z_#T1a<+F5zxV84w5S0>2i`+Q3rcPA`VyaCqMq>gWJYH5 zAg`T4nf)Ya@Mq{>v6~a0vv8qaZ+6&dViHQ70>PIEbY5)GM@4mYQF(d5uT(nP&z^`9 zbDX2d)3ONmrt)se?Uj?<-r-PguQtYC!Whc!y@cG}SjklV!Tcw(Hlg55V490t6ZNG`5l;LN51M2U=TO2d&-+F&~-uRs(XZ3})Ln404m9 zt83H+7?v2H-KgstGMLPhJZ4#n8$sj2t}&iURkC*N+LDwwn2nMQK4mkROq`Ut%b{zm z-?(C4Muq?l5h=y%)~zc{s#>>s^XA3W5-qaNcoG3NiFHh;6C~ZWapT7Mi9EB>?&Qjo z3Ltk2(p4!iIyFUARasG95C*N(R8$ogXwv0D>zT~C-}dPv+V_&6_WgVO{uRtnZCPv< zvg``xm1HYl$bNX>~$mw17YTE!7DZXQ~rw%UV7}y7t?zzw*I#r&GBI=@mxZDK3+@R z5u|{9(MKtkB9OghQ%yN`f#E!;_@aqYEnUBUeUhhg4G(QqsmwQ*9}Mek4&k?yA3Qx% ze!x=iO*9q5(iG+ZGzHRek9lc7O^v|!Lug7rHbyY2rp5{387Dg1K~w$VG$o9b%cohI z8k+D%iUll94Gj$$!)VIQRVWmc!_?C?WHgz9=NO==ZZj_-VLoVTfuE+*gEW;LpsAwt zbRkPq^I4ku-g?l~UEwrkBQ%w`2sBkfXvzVXO=A9n1q%w(6H>6kEKSJ>O>yEhl~u)s znv9qrO^HA|@JUh}K88b$G8_kPOl1c4Eb+5R2xU?4mHY0mE%!xhe+{hEztPpT<#dns z*M4ac+Sx9DcAb>n*{npJYLsNn$JbPKYZVP!|!uT6<=D}RosH!k;p>!;21nO z(_Wqo?vhKFF4ZHm;#RCZf@s#JRfk1!6$(UfsUYfF2z-x4IE!028@?9--_;M{fn1>N z_%?&acU#1>wOVypNVmNm;an;RxfX)w3qwE)=Xz7!B&r*+BIxZRUI*z6zQkC}SPYlc zR&p~tGCNRN3901^R92Eonx9}6=1p_OD7=zMA~_tPC@wB?a%>Qx>r+<;%pQp%E-`Xi ztm!!Q_v4tLwh>Q4p3g+tNF|NWHOb<5dIVftnJt_$lJqQqLVCu>8yiMqG8Pa>&z+0ZB2#PQl~LjFyVWmLApG(h@sm$Jxgk5E z?r&TTmEZ^XjEN;YM{IMs8s7%W*E@aD%YGV2#8o_%?dW>{_4E9@g%>Xi7A8#Fo%S`T zsF=w;*o=`9O>eHz%p%=P8oxeyS)FJ%b`zwVBMruBwff4Ht8IWKo*-`|J^=0W8xe0L zdcDNm-0Wr|@>mQxry_56IaMoo;>6Y1ycK{}`7`@^Ip%>p{)rR2cR#vbuTM@U?{5Xc zk@`V!^hHH_NllF;u%pNr9>y55EDlmIhKOfx*GT2U2)E$^_~Pkaw>Z1B)M(V3qM{(| z@Mf}jJRvorBIaW{7uiIJFo|!R-)k=cQJ3&d7t;jC-{gU^GQArWd;@C2d zm>0?=Bk%9qmzP(R*Wa(#lQ)BMI*T`X(PmhM0T`cNUi1t~Y}7B-vN%37Ltu9u+3kd5 zXn}J~{e#g0!I&g-&b0ZX-B;jmMYMZ2d|$mmuhR-#xdK)< z1_lzZwJckfwQ$+8Wvf@Otg5P7ltJ;dDNd&#IX8DH*kW-qE-WfS&?zfdlb@fTk{mnZ zlMYE$ACaoOpj0KjU5(zRx}()|fS_b@$AEGr&fTwXD-O9I?@W|pnASQg#cX|j@8o=8yi_Kx)TVwT(Clj%eSnU|gA36rUxon%Pum@^{va6%~`apw6yxhSx(8#T^5|>!a}5MX65E$mQ%xK zIoM|oTv1xe%y6ujX(}U3Hw@CvYeBlX9Hg7|SP7CLmg%&gIX~Re+1IbP!vf$qM}Wn6 zq2qde-R0vS9{%9)(eoGU2dFdJ41!IU)YA$5r+d_U3x;lF9Nb)qj7k>w%V)FisV-eo z9Os>Kxn*9$$%sfH$bOkV?OwdYS*zr*|x(p4Vm&47*DeRjXI8UNMJz zGsdoOxCt2oR|DfA-gWqE!)uCp4ObetA_{SPV-HSD&}Zu@(d2{Qf6!&2cYaS)P!1cZ z=x|Y>wmw9Y$Zyx8zBl0I&c%ImF%yc6D_43O8+)%@Nlo>t)vB1r7N?34LV;;%iHUJ) zBb+fYElW!9(*&b9x_fu&wr!=mcb_@KJ8`0}W80?aI!3sDeaWUx9Ualyi0F=vO}}{s zKLvB$ZrA(zEA?EF?}pwx?tk=tmxbC{b#w1$)|!h-XUf8GTvU~oN)61-OskYKXkjC8 zhLGQN8!JJIi{Z5%!sz$itY@hFZFQlxa9NtzNi2x3zZbM1{tdH6d?g8o55K$r_19nj z)0=O>9rlkaP0e+6^_RPQhh2M;Jd@+2qoWqvB!pqtbtIHv8+-L#*H0ZrpsF^<=bd)h zC(L7`h|`feaX$a*RjhZb(PDG^I6S^UD3Zp+gXS~jT4B`mI6Nw&RwN|8h1dJkG1!pg zbspC6$v`^tt4WXEd+*MNx9?tFniGWpq)?GEXU?276?DXuDgYR=@i`%Q0B3&HJ+Rl` zswF8;8Xr#}l*SQ|={a*1$V&Fu?Tb>-R@* z-_G2ai0@yaWXyCXuB?>^CME>b<;xxq99`|&Nd1AMEtZ4t>4C$vw^m|HPPXAV84)0W zkZ41p;_wsdxAZ18@hrW=EdugVfZlny9~;?enbS$_1O?a0KNeZT7dK~b47(Y&>O;8 z{C4||wV7mWEPoJGMfWg~Iy=O}e(t^6^net&hzU7_ld7tx~^(W5f& z6sZiSr@S=R>yYw&H1r|Vw9!Hy?c+)8(_DJYC*kuYzA;@L_GFzdcJ@4YS?0}-NN3HO6+LY=G{a@nY_Lv8 z<7X+Szx5(h#*H9FZvUSNx~ldJUF#@<5PiET!pz=g}G6StWK|wD^E^MOI1b)rcM3G zDHt)dT|rU%^}fMTni|%oeyb!@TU60J+SPUL%&F7Y&32w=AA9_<%}Yz> z_^51c>K#hH8Hqsy4KR1q(J}Yp#O8wfB9_?!)0L>nja-xej8+P zS(vF6js{L>&QDQhfIC2bqygePu=8)A)vG{YB{j5he$Ex%hRotgibiH}^v!a|N?j%Q zR8hNv_ays<<&~m(o2_0{P{4#LpoEs~D%Ez&{{7%9x7Ixcd8M>1Dhd_z`bHiP4no2! z_3s_Dv>ZJ^c%^iGfB*VzMMc}3PI&XyYFSiAoT)~uHxX=*Pij%Y|Bbwo*pa9%;c+3g zXs+0j7|m_=M98_r>dQLrmWVMOtG8$2uLuqiN7VMma^J4VKein^cIfm+ADupgDE1Gv z++l)WC3JTJ2-dAopb%*N8mgUMgp;J!L$dxSN&{a&2;findJv9*xmu~FrbgrQNmoDr z{Ay`iTVU0dcnaaX5j<(bMHc-2s#YLuZ}1^EZ!dpx@cyS}pzU{Q1ruu?;G(Q4FuK6{ zP#gyxon}WC(xjS*CUsxz4!Z#fW{lNkwjLku{)2Z^mT7yi%< zK_sQ{Hf1X^2k7e?=!u&t)#4=VG@=0^b%F2>yBP>{hFQK5IKn0C2+v#+3#9|HX zhIw+nbJzez9H~r)CsdQD5II+@P)9l7Y;#0qt?)~l&`O%fO3u^-d>`X_0^=(5@RKx} z=B5Ek6i;evk~4DV0udhnX3Ke=VS+8+J;9L^aP0)18HT2r`4@0R3Pp~K2M^Y4T|`-$ z;1N3e<+1laJn_NX&?i6daSC&)VM(t@_VgTsbMu-r70z}w@m~H*;2|t6Zo}xd239R0 zp}%iz8Uh{5hE*dVDH6_r6DN+# zfUl8VwUsN=qwFxd>``-8`d4j6+ZUr-#J@O9wEduek?f}QG-z^kTbot{FiD={atnB% zxW8YcIdOu=%Q$r^gB&FVl^a8#IU)ir=2SkhDF83VcOHG=1!VcLb2YP=8)V$r@qy?)e1 z{1~B+np~q9w3aSV06L=WxVy)ZDpI^zm+4i|x2rBH;nHQ!Qx*wlIHs@bKZm z>2lO6tnA;I024)wbAVRY)ST4UkaIuTJ+K4!`~mux|DC+Sh==EXCr|Kq@d69|USLY| ztsY?ctsY=M7kLh&dJdynQlM%aq-X&=rvjSt5rBj#A0>y4E2qZ5(#I%{ka$%&ln<#` zPEWAS&+gd*W8zJ<>3fkt)T_6_h5&l4Z5kYP+BV!`v)RqPO;;f)t~T|W?Iox7+ zntI#5WR~o&+g3t(?QpQ#y%a|ZKq@JR>PBi}HwBtsrKUVqv{^kACla@d47R1CEuCR& zh@H*}uWEi7Tn@0oU0X{tl&B$ISE|{=)s(Kg zwTAdpEpoBobbVDz)%)is3iCtqp=+sk%6-40>!7u5*1m{H%}2;FdYCGw@72EOrw_u} zO7NGlPJtMqF4SFI*3F%J{kl|&B9?w_jLS9B(=$HabLN8&fT&L`wpbQ3e7W6(^D`=e z-GP_*vC5A=+OlPEu)3OBtQAS6Srrv2DHT8AE{pnIYU=N9=+_K}dW)qcJ370T z$0ASiH>o#$p!=Yf$Kp=1)T==6pdtDhKD!-6^_F^(QKWOX3+g`U|FZv+^IFk%^>$01 zrBbq%dIb6v=dNe&!Z+&QwcjKK$X-jwxDg_mm{_^;u1kmpakLQt0q60QX=zFx!R=2< zs_;GQdzOCr$qGP)?yIHT@TAq$IGxR>PdA50%!sd&gM(DH)KP}>6blU%7;yxiL%a{1 zgFtrm-B0`vhX`&ey*em!2!A2hQ-1-yyIU(63^;f#+ zLzOP!eds$yb18c93$)AMzddObrWJXc+2D5^fA$-VkRbb?&+3OeXV9G}q4cScY`XZMq>O4*;~y9>b@mJ~I&5D1VmV;&06o9Ogf?V`?hB7zZL3rz7eL;6Iy9n!fqFqz9&! zm#3yKTC^x%9S4b(T2WCkSK&p@fPaUCBEL)=#CDO0QBeJcR7lA-sq5cMi43) zA;=i&?SUgN_>UKOB*>hLAki@rVp_FI8|wkLEXq`2qDo6km(I&n&~S13XKF^fONAfs zY|s}NPH(9mLi49ZL7ETIX(CSC!T!2}jOBf|?iJcY{8l~@4F-C1hISO&HZaphGGE`s ze3eBi^RblK(V7gnh$7sBJ-u1!JZJm4bLZUkog_WgUTelDvvP>^bxWTt*gYNm=RNkGi6( zQ6MFKX!YX7i?d`AlDi&%{BhsLrAQS?^jV!W5ZiyO()T0s5*=v#)BBKWy%J`@ zefOs%I z8kd?J?S)y^*4EU}e7)}K)vH}b`yP?q*ab7Ii_$?P@#rbL2^O|hn=C>W5^WvrYUv(= zWoNN_c&)7iz%*Rv2$qP2#%$sy% z<|~3T{|IKDSlsy&z62x}CGfnX*Unu`Rz zK?2(U8+_Pp7#VAA8^=lYm&4qHuoqb|46C)Zxv_~|u}-4{&I$*6ssLFsVr^r|U|m~j zS_F3pZ5`{zl40MEJIIm^juTHYGSXU^)Z7#fmQ0~8f9xTb7fW_G{;jRqRMrs^cv4w#ZTNqfe8QX=6ZV_wS zg}YFh0gI1=(Q&YDd-2at@g%bP2!1m=DJcajnHB5v4m3AsrU|_UBtA7yW@Ho>&cCbU zI#nDWZ!|J@h)Fs7^5yebwU665JU|!ySvQCoYzE+Yh@#8&CSs3ppu_Ga)ie_!thZ*nwzUw zfz#a@k>1@%{Xw9}%|#`2iZ(LqbWIIZJj?*<>|Ul`rd_Ub>Sg~f2$wKP?KI5SOKVZx zbBm-9v_sFK9czK6dP|$Lok%9xT3UE(8=q~n&9rU6sCHmfnRjyX;E5B=KRI?VD*V_% zXu02V>Y#Mn4W|yWS+UGFoj4d3e&Qf>yUpn$ z=kjWj2x$1)4FGyZQkPr?4&sUVdC=K|yn4 zufr=-Blu1mMWSXqoN+wo_>k_dB?Su4NCRAh$GxYq+m+G1k8t>yLb<_>qp*hK|8LD89X?PF`%& z4H|pfI*`7^BsvDKf%AR(;XxqC9RB#iHF6w_&4~(0w*%*eX~lD^H#|^1e=)S%(if0& zANj-el_mM5>u@;53WlRB*-;$;-F+2G^!ovHhW*s*l4l++fyW_HE{2k&4D2=1qt)n9 z5>5B^4t93ph(!JSb@kR`#|8#^&UKwWaY9d>)2e(O9X{Y|SnT-l>8BkXkUlt{F$QOE zF_AP~QL$*v8kb9)UrxQvdFcLl77T+wfBw>ED^c-U3);x1ex?<3tE;(OWooJtA1VNs z^{TkKIyJSuT_)@7OilH3%GH7XWPmQDT&EXQ;T+L5Hi*R3#HhX<3Qm)8f~W{M8pnc@ z35X%nsWaI*$WMv{1sSpHhsNwqpFqg5AiZTTL17+n$#@_F#oWqm513899L}(1_iYbnh;okT-NC~dSa}jY zyArN*8r*bpxVxc26zQ{!43XJwHjdvoyWO3-VMqAvqAuaa*&TF8^T`&=uDt)j@nI@? zPVri3i#7SPitoAS9?WjKe|9UYDmC%pvpauw{LQmFvwOHC&X3*W#?>>rM^I0$U3zxnvO(aKl(|y4l+3>c=CR8}nBliXCn@L+RD(E`~=}U273WM7IR`9{!1TDu@Sb~uyoY25Ria0=i4rx~k6J?6$vG+Ab}A13 zfjG*9+nAVdJ{6}n(R2d*=7foguYd!&BA#l70pCpJfXn1CcYX>^Nnm!QCU$mAy05?f zT4!?Y5xGoV5a(Ukobg<)*Jgry!({Vvo0| literal 0 HcmV?d00001 diff --git a/crabfit-frontend/public/index.css b/crabfit-frontend/public/index.css new file mode 100644 index 0000000..749c6cd --- /dev/null +++ b/crabfit-frontend/public/index.css @@ -0,0 +1,5 @@ +@font-face { + font-family: Karla; + src: url('fonts/karla-variable.ttf') format('truetype'); + font-weight: 1 999; +} diff --git a/crabfit-frontend/public/index.html b/crabfit-frontend/public/index.html index 523055d..11686e0 100644 --- a/crabfit-frontend/public/index.html +++ b/crabfit-frontend/public/index.html @@ -12,6 +12,8 @@ + + Crab Fit diff --git a/crabfit-frontend/src/App.js b/crabfit-frontend/src/App.js deleted file mode 100644 index 06a90b3..0000000 --- a/crabfit-frontend/src/App.js +++ /dev/null @@ -1,25 +0,0 @@ -import { - BrowserRouter, - Switch, - Route, - Redirect, - useLocation, -} from 'react-router-dom'; - -import { - Home, - Event, -} from 'pages'; - -const App = () => { - return ( - - - - - - - ); -} - -export default App; diff --git a/crabfit-frontend/src/App.test.js b/crabfit-frontend/src/App.test.ts similarity index 100% rename from crabfit-frontend/src/App.test.js rename to crabfit-frontend/src/App.test.ts diff --git a/crabfit-frontend/src/App.tsx b/crabfit-frontend/src/App.tsx new file mode 100644 index 0000000..c7c7be2 --- /dev/null +++ b/crabfit-frontend/src/App.tsx @@ -0,0 +1,49 @@ +import { useState } from 'react'; +import { + BrowserRouter, + Switch, + Route, +} from 'react-router-dom'; +import { ThemeProvider, Global } from '@emotion/react'; + +import { + Home, + Event, +} from 'pages'; + +import theme from 'theme'; + +const App = () => { + const darkQuery = window.matchMedia('(prefers-color-scheme: dark)'); + const [isDark, setIsDark] = useState(darkQuery.matches); + + darkQuery.addListener(e => setIsDark(e.matches)); + + return ( + + + + ({ + body: { + backgroundColor: theme.background, + color: theme.text, + fontFamily: `'Karla', sans-serif`, + fontWeight: 600, + margin: 0, + }, + a: { + color: theme.primary, + }, + })} + /> + + + + + + + ); +} + +export default App; diff --git a/crabfit-frontend/src/components/Button/Button.tsx b/crabfit-frontend/src/components/Button/Button.tsx new file mode 100644 index 0000000..5e90449 --- /dev/null +++ b/crabfit-frontend/src/components/Button/Button.tsx @@ -0,0 +1,14 @@ +import { Wrapper, Top, Bottom } from './buttonStyle'; + +const Button = ({ + buttonHeight, + buttonWidth, + ...props +}) => ( + + + + +); + +export default Button; diff --git a/crabfit-frontend/src/components/Button/buttonStyle.ts b/crabfit-frontend/src/components/Button/buttonStyle.ts new file mode 100644 index 0000000..b46842e --- /dev/null +++ b/crabfit-frontend/src/components/Button/buttonStyle.ts @@ -0,0 +1,47 @@ +import styled from '@emotion/styled'; + +export const Wrapper = styled.div` + display: inline-block; + position: relative; + + --btn-height: ${props => props.buttonHeight || '40px'}; + --btn-width: ${props => props.buttonWidth || '100px'}; + + height: var(--btn-height); + width: var(--btn-width); +`; + +export const Top = styled.button` + border: 0; + cursor: pointer; + font: inherit; + box-sizing: border-box; + background: ${props => props.theme.primary}; + color: #FFF; + font-weight: 600; + text-shadow: 0 -1.5px .5px ${props => props.theme.primaryDark}; + padding: ${props => props.padding || '10px 14px'}; + border-radius: 3px; + height: var(--btn-height); + width: var(--btn-width); + position: absolute; + top: -4px; + user-select: none; + transition: top .15s; + outline: none; + + &:active { + top: 0; + } + &:focus-visible { + filter: brightness(1.2); + } +`; + +export const Bottom = styled.div` + box-sizing: border-box; + background: ${props => props.theme.primaryDark}; + border-radius: 3px; + height: var(--btn-height); + width: var(--btn-width); +`; diff --git a/crabfit-frontend/src/components/CalendarField/CalendarField.tsx b/crabfit-frontend/src/components/CalendarField/CalendarField.tsx new file mode 100644 index 0000000..8636276 --- /dev/null +++ b/crabfit-frontend/src/components/CalendarField/CalendarField.tsx @@ -0,0 +1,192 @@ +import { useState, useEffect, useRef } from 'react'; +import dayjs from 'dayjs'; +import isToday from 'dayjs/plugin/isToday'; + +import { Button } from 'components'; +import { + Wrapper, + StyledLabel, + StyledSubLabel, + CalendarHeader, + CalendarBody, + Date, + Day, +} from './calendarFieldStyle'; + +dayjs.extend(isToday); + +const days = [ + 'Sun', + 'Mon', + 'Tue', + 'Wed', + 'Thu', + 'Fri', + 'Sat', +]; + +const months = [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', +]; + +const calculateMonth = (month, year) => { + const date = dayjs().month(month).year(year); + const daysInMonth = date.daysInMonth(); + const daysBefore = date.date(1).day(); + const daysAfter = 6 - date.date(daysInMonth).day(); + + let dates = []; + let curDate = date.date(1).subtract(daysBefore, 'day'); + let y = 0; + let x = 0; + for (let i = 0; i < daysBefore + daysInMonth + daysAfter; i++) { + if (x === 0) dates[y] = []; + dates[y][x] = curDate.clone(); + curDate = curDate.add(1, 'day'); + x++; + if (x > 6) { + x = 0; + y++; + } + } + + return dates; +}; + +const CalendarField = ({ + label, + subLabel, + id, + register, + ...props +}) => { + const [dates, setDates] = useState(calculateMonth(dayjs().month(), dayjs().year())); + const [month, setMonth] = useState(dayjs().month()); + const [year, setYear] = useState(dayjs().year()); + + const [selectedDates, setSelectedDates] = useState([]); + const [selectingDates, _setSelectingDates] = useState([]); + const staticSelectingDates = useRef([]); + const setSelectingDates = newDates => { + staticSelectingDates.current = newDates; + _setSelectingDates(newDates); + }; + + const startPos = useRef({}); + const staticMode = useRef(null); + const [mode, _setMode] = useState(staticMode.current); + const setMode = newMode => { + staticMode.current = newMode; + _setMode(newMode); + }; + + useEffect(() => { + setDates(calculateMonth(month, year)); + }, [month, year]); + + return ( + + {label && {label}} + {subLabel && {subLabel}} + + + + + {months[month]} {year} + + + + + {days.map((name, i) => + {name} + )} + {dates.length > 0 && dates.map((dateRow, y) => + dateRow.map((date, x) => + { + startPos.current = {x, y}; + setMode(selectedDates.includes(date.format('DDMMYYYY')) ? 'remove' : 'add'); + setSelectingDates([date]); + + document.addEventListener('mouseup', () => { + if (staticMode.current === 'add') { + setSelectedDates([...selectedDates, ...staticSelectingDates.current.map(d => d.format('DDMMYYYY'))]); + } else if (staticMode.current === 'remove') { + const toRemove = staticSelectingDates.current.map(d => d.format('DDMMYYYY')); + setSelectedDates(selectedDates.filter(d => !toRemove.includes(d))); + } + setMode(null); + }, { once: true }); + }} + onMouseEnter={() => { + if (staticMode.current) { + let found = []; + for (let cy = Math.min(startPos.current.y, y); cy < Math.max(startPos.current.y, y)+1; cy++) { + for (let cx = Math.min(startPos.current.x, x); cx < Math.max(startPos.current.x, x)+1; cx++) { + found.push({y: cy, x: cx}); + } + } + setSelectingDates(found.map(d => dates[d.y][d.x])); + } + }} + >{date.date()} + ) + )} + + + ); +}; + +export default CalendarField; diff --git a/crabfit-frontend/src/components/CalendarField/calendarFieldStyle.ts b/crabfit-frontend/src/components/CalendarField/calendarFieldStyle.ts new file mode 100644 index 0000000..32d3cbc --- /dev/null +++ b/crabfit-frontend/src/components/CalendarField/calendarFieldStyle.ts @@ -0,0 +1,73 @@ +import styled from '@emotion/styled'; + +export const Wrapper = styled.div` + margin: 30px 0; +`; + +export const StyledLabel = styled.label` + display: block; + padding-bottom: 4px; + font-size: 18px; +`; + +export const StyledSubLabel = styled.label` + display: block; + padding-bottom: 6px; + font-size: 13px; + opacity: .6; +`; + +export const CalendarHeader = styled.div` + display: flex; + align-items: center; + justify-content: space-between; + user-select: none; + padding: 6px 0; + font-size: 1.2em; + font-weight: bold; +`; + +export const CalendarBody = styled.div` + display: grid; + grid-template-columns: repeat(7, 1fr); + grid-gap: 2px; +`; + +export const Date = styled.div` + background-color: ${props => props.theme.primary}22; + border: 1px solid ${props => props.theme.primaryLight}; + display: flex; + align-items: center; + justify-content: center; + padding: 10px 0; + border-radius: 3px; + user-select: none; + + ${props => props.otherMonth && ` + color: ${props.theme.primaryLight}; + `} + ${props => props.isToday && ` + font-weight: 900; + color: ${props.theme.primaryDark}; + `} + ${props => (props.selected || (props.mode === 'add' && props.selecting)) && ` + color: ${props.otherMonth ? 'rgba(255,255,255,.5)' : '#FFF'}; + background-color: ${props.theme.primary}; + border-color: ${props.theme.primary}; + `} + ${props => props.mode === 'remove' && props.selecting && ` + background-color: ${props.theme.primary}22; + border: 1px solid ${props.theme.primaryLight}; + color: ${props.isToday ? props.theme.primaryDark : (props.otherMonth ? props.theme.primaryLight : 'inherit')}; + `} +`; + +export const Day = styled.div` + display: flex; + align-items: center; + justify-content: center; + padding: 3px 10px; + font-weight: bold; + user-select: none; + opacity: .7; +`; diff --git a/crabfit-frontend/src/components/TextField/TextField.tsx b/crabfit-frontend/src/components/TextField/TextField.tsx new file mode 100644 index 0000000..0a91061 --- /dev/null +++ b/crabfit-frontend/src/components/TextField/TextField.tsx @@ -0,0 +1,22 @@ +import { + Wrapper, + StyledLabel, + StyledSubLabel, + StyledInput, +} from './textFieldStyle'; + +const TextField = ({ + label, + subLabel, + id, + register, + ...props +}) => ( + + {label && {label}} + {subLabel && {subLabel}} + + +); + +export default TextField; diff --git a/crabfit-frontend/src/components/TextField/textFieldStyle.ts b/crabfit-frontend/src/components/TextField/textFieldStyle.ts new file mode 100644 index 0000000..ac37df0 --- /dev/null +++ b/crabfit-frontend/src/components/TextField/textFieldStyle.ts @@ -0,0 +1,38 @@ +import styled from '@emotion/styled'; + +export const Wrapper = styled.div` + margin: 30px 0; +`; + +export const StyledLabel = styled.label` + display: block; + padding-bottom: 4px; + font-size: 18px; +`; + +export const StyledSubLabel = styled.label` + display: block; + padding-bottom: 6px; + font-size: 13px; + opacity: .6; +`; + +export const StyledInput = styled.input` + width: 100%; + box-sizing: border-box; + font: inherit; + background: ${props => props.theme.primary}22; + color: inherit; + padding: 10px 14px; + border: 1px solid ${props => props.theme.primaryLight}; + box-shadow: inset 0 0 0 0 ${props => props.theme.primaryLight}; + border-radius: 3px; + font-size: 18px; + outline: none; + transition: border-color .15s, box-shadow .15s; + + &:focus { + border: 1px solid ${props => props.theme.primary}; + box-shadow: inset 0 -3px 0 0 ${props => props.theme.primary}; + } +`; diff --git a/crabfit-frontend/src/components/TimeRangeField/TimeRangeField.tsx b/crabfit-frontend/src/components/TimeRangeField/TimeRangeField.tsx new file mode 100644 index 0000000..fb5fce3 --- /dev/null +++ b/crabfit-frontend/src/components/TimeRangeField/TimeRangeField.tsx @@ -0,0 +1,139 @@ +import { useState, useEffect, useRef } from 'react'; + +import { + Wrapper, + StyledLabel, + StyledSubLabel, + Range, + Handle, + Selected, +} from './timeRangeFieldStyle'; + +const times = [ + '12am', + '1am', + '2am', + '3am', + '4am', + '5am', + '6am', + '7am', + '8am', + '9am', + '10am', + '11am', + '12pm', + '1pm', + '2pm', + '3pm', + '4pm', + '5pm', + '6pm', + '7pm', + '8pm', + '9pm', + '10pm', + '11pm', + '12am', +]; + +const TimeRangeField = ({ + label, + subLabel, + id, + register, + ...props +}) => { + const [start, setStart] = useState(9); + const [end, setEnd] = useState(17); + + const isStartMoving = useRef(false); + const isEndMoving = useRef(false); + const rangeRef = useRef(); + const rangeRect = useRef(); + + useEffect(() => { + if (rangeRef.current) { + rangeRect.current = rangeRef.current.getBoundingClientRect(); + } + }, [rangeRef]); + + const handleMouseMove = e => { + if (isStartMoving.current || isEndMoving.current) { + let step = Math.round(((e.pageX - rangeRect.current.left) / rangeRect.current.width) * 24); + if (step < 0) step = 0; + if (step > 24) step = 24; + step = Math.abs(step); + + if (isStartMoving.current) { + setStart(step); + } else if (isEndMoving.current) { + setEnd(step); + } + } + }; + + return ( + + {label && {label}} + {subLabel && {subLabel}} + end ? {start: end, end: start} : {start, end})} + {...props} + /> + + + end ? end : start} end={start > end ? start : end} /> + { + document.addEventListener('mousemove', handleMouseMove); + isStartMoving.current = true; + + document.addEventListener('mouseup', () => { + isStartMoving.current = false; + document.removeEventListener('mousemove', handleMouseMove); + }, { once: true }); + }} + onTouchMove={(e) => { + const touch = e.targetTouches[0]; + + let step = Math.round(((touch.pageX - rangeRect.current.left) / rangeRect.current.width) * 24); + if (step < 0) step = 0; + if (step > 24) step = 24; + step = Math.abs(step); + setStart(step); + }} + /> + { + document.addEventListener('mousemove', handleMouseMove); + isEndMoving.current = true; + + document.addEventListener('mouseup', () => { + isEndMoving.current = false; + document.removeEventListener('mousemove', handleMouseMove); + }, { once: true }); + }} + onTouchMove={(e) => { + const touch = e.targetTouches[0]; + + let step = Math.round(((touch.pageX - rangeRect.current.left) / rangeRect.current.width) * 24); + if (step < 0) step = 0; + if (step > 24) step = 24; + step = Math.abs(step); + setEnd(step); + }} + /> + + + ); +}; + +export default TimeRangeField; diff --git a/crabfit-frontend/src/components/TimeRangeField/timeRangeFieldStyle.ts b/crabfit-frontend/src/components/TimeRangeField/timeRangeFieldStyle.ts new file mode 100644 index 0000000..ddaefb3 --- /dev/null +++ b/crabfit-frontend/src/components/TimeRangeField/timeRangeFieldStyle.ts @@ -0,0 +1,72 @@ +import styled from '@emotion/styled'; + +export const Wrapper = styled.div` + margin: 30px 0; +`; + +export const StyledLabel = styled.label` + display: block; + padding-bottom: 4px; + font-size: 18px; +`; + +export const StyledSubLabel = styled.label` + display: block; + padding-bottom: 6px; + font-size: 13px; + opacity: .6; +`; + +export const Range = styled.div` + user-select: none; + background-color: ${props => props.theme.primary}22; + border: 1px solid ${props => props.theme.primaryLight}; + border-radius: 3px; + height: 50px; + position: relative; + margin: 38px 6px 18px; +`; + +export const Handle = styled.div` + height: calc(100% + 20px); + width: 20px; + border: 1px solid ${props => props.theme.primary}; + background-color: ${props => props.theme.primaryLight}; + border-radius: 3px; + position: absolute; + top: -10px; + left: calc(${props => props.value * 4.1666666666666666}% - 11px); + cursor: ew-resize; + + &:after { + content: '|||'; + font-size: 8px; + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + display: flex; + align-items: center; + justify-content: center; + color: ${props => props.theme.primaryDark}; + } + + &:before { + content: '${props => props.label}'; + position: absolute; + bottom: calc(100% + 8px); + text-align: center; + left: 50%; + transform: translateX(-50%); + } +`; + +export const Selected = styled.div` + position: absolute; + height: 100%; + left: ${props => props.start * 4.1666666666666666}%; + right: calc(100% - ${props => props.end * 4.1666666666666666}%); + top: 0; + background-color: ${props => props.theme.primary}; +`; diff --git a/crabfit-frontend/src/components/index.ts b/crabfit-frontend/src/components/index.ts new file mode 100644 index 0000000..0146924 --- /dev/null +++ b/crabfit-frontend/src/components/index.ts @@ -0,0 +1,4 @@ +export { default as TextField } from './TextField/TextField'; +export { default as CalendarField } from './CalendarField/CalendarField'; +export { default as TimeRangeField } from './TimeRangeField/TimeRangeField'; +export { default as Button } from './Button/Button'; diff --git a/crabfit-frontend/src/index.css b/crabfit-frontend/src/index.css deleted file mode 100644 index ec2585e..0000000 --- a/crabfit-frontend/src/index.css +++ /dev/null @@ -1,13 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', - monospace; -} diff --git a/crabfit-frontend/src/index.js b/crabfit-frontend/src/index.tsx similarity index 95% rename from crabfit-frontend/src/index.js rename to crabfit-frontend/src/index.tsx index ef2edf8..7998135 100644 --- a/crabfit-frontend/src/index.js +++ b/crabfit-frontend/src/index.tsx @@ -1,6 +1,5 @@ import React from 'react'; import ReactDOM from 'react-dom'; -import './index.css'; import App from './App'; import reportWebVitals from './reportWebVitals'; diff --git a/crabfit-frontend/src/pages/Event/Event.js b/crabfit-frontend/src/pages/Event/Event.tsx similarity index 100% rename from crabfit-frontend/src/pages/Event/Event.js rename to crabfit-frontend/src/pages/Event/Event.tsx diff --git a/crabfit-frontend/src/pages/Home/Home.js b/crabfit-frontend/src/pages/Home/Home.js deleted file mode 100644 index c60398a..0000000 --- a/crabfit-frontend/src/pages/Home/Home.js +++ /dev/null @@ -1,12 +0,0 @@ -import { Link } from 'react-router-dom'; - -const Home = () => { - return ( -

-
Home
- Test -
- ); -}; - -export default Home; diff --git a/crabfit-frontend/src/pages/Home/Home.tsx b/crabfit-frontend/src/pages/Home/Home.tsx new file mode 100644 index 0000000..b57eda4 --- /dev/null +++ b/crabfit-frontend/src/pages/Home/Home.tsx @@ -0,0 +1,59 @@ +import { useForm } from 'react-hook-form'; + +import { + TextField, + CalendarField, + TimeRangeField, + Button, +} from 'components'; + +import { + StyledMain, + CreateForm, + TitleSmall, + TitleLarge, +} from './homeStyle'; + +const Home = () => { + const { register, handleSubmit } = useForm(); + + const onSubmit = data => console.log('submit', data); + + return ( + + Create a + CRAB FIT + + + + + + + + + + + + ); +}; + +export default Home; diff --git a/crabfit-frontend/src/pages/Home/homeStyle.ts b/crabfit-frontend/src/pages/Home/homeStyle.ts new file mode 100644 index 0000000..c9a75be --- /dev/null +++ b/crabfit-frontend/src/pages/Home/homeStyle.ts @@ -0,0 +1,32 @@ +import styled from '@emotion/styled'; + +export const StyledMain = styled.main` + width: 600px; + margin: 30px auto; + max-width: calc(100% - 30px); +`; + +export const CreateForm = styled.form` +`; + +export const TitleSmall = styled.span` + display: block; + margin: 20px 0 0; + font-size: 3rem; + text-align: center; + font-family: 'CF Samurai Bob'; + font-weight: 400; + color: ${props => props.theme.primaryDark}; + line-height: 1em; +`; + +export const TitleLarge = styled.h1` + margin: 0 0 40px; + font-size: 4rem; + text-align: center; + color: ${props => props.theme.primary}; + font-family: 'Molot'; + font-weight: 400; + text-shadow: 0 4px 0 ${props => props.theme.primaryDark}; + line-height: 1em; +`; diff --git a/crabfit-frontend/src/pages/index.js b/crabfit-frontend/src/pages/index.ts similarity index 100% rename from crabfit-frontend/src/pages/index.js rename to crabfit-frontend/src/pages/index.ts diff --git a/crabfit-frontend/src/react-app-env.d.ts b/crabfit-frontend/src/react-app-env.d.ts new file mode 100644 index 0000000..6431bc5 --- /dev/null +++ b/crabfit-frontend/src/react-app-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/crabfit-frontend/src/res/create_banner.svg b/crabfit-frontend/src/res/create_banner.svg new file mode 100644 index 0000000..c4c1aff --- /dev/null +++ b/crabfit-frontend/src/res/create_banner.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/crabfit-frontend/src/theme/index.ts b/crabfit-frontend/src/theme/index.ts new file mode 100644 index 0000000..c6063e2 --- /dev/null +++ b/crabfit-frontend/src/theme/index.ts @@ -0,0 +1,20 @@ +const theme = { + light: { + mode: 'light', + background: '#FFFFFF', + text: '#000000', + primary: '#F79E00', + primaryDark: '#F48600', + primaryLight: '#F4BB60', + }, + dark: { + mode: 'dark', + background: '#111', + text: '#DDDDDD', + primary: '#F79E00', + primaryDark: '#F4BB60', + primaryLight: '#F48600', + }, +}; + +export default theme; diff --git a/crabfit-frontend/tsconfig.json b/crabfit-frontend/tsconfig.json new file mode 100644 index 0000000..425d574 --- /dev/null +++ b/crabfit-frontend/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "baseUrl": "src" + }, + "include": [ + "src" + ] +} diff --git a/crabfit-frontend/yarn.lock b/crabfit-frontend/yarn.lock index 4ab31ff..d1ce37f 100644 --- a/crabfit-frontend/yarn.lock +++ b/crabfit-frontend/yarn.lock @@ -1834,7 +1834,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@*": +"@types/jest@*", "@types/jest@^26.0.20": version "26.0.20" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.20.tgz#cd2f2702ecf69e86b586e1f5223a60e454056307" integrity sha512-9zi2Y+5USJRxd0FsahERhBwlcvFh6D2GLQnY2FH2BzK8J9s9omvNHIbvABwIluXa0fD8XVKMLTO0aOEuUfACAA== @@ -1857,7 +1857,7 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== -"@types/node@*": +"@types/node@*", "@types/node@^14.14.31": version "14.14.31" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.31.tgz#72286bd33d137aa0d152d47ec7c1762563d34055" integrity sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g== @@ -1877,11 +1877,31 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.1.tgz#374e31645d58cb18a07b3ecd8e9dede4deb2cccd" integrity sha512-DxZZbyMAM9GWEzXL+BMZROWz9oo6A9EilwwOMET2UVu2uZTqMWS5S69KVtuVKaRjCUpcrOXRalet86/OpG4kqw== +"@types/prop-types@*": + version "15.7.3" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" + integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== + "@types/q@^1.5.1": version "1.5.4" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== +"@types/react-dom@^17.0.1": + version "17.0.1" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.1.tgz#d92d77d020bfb083e07cc8e0ac9f933599a4d56a" + integrity sha512-yIVyopxQb8IDZ7SOHeTovurFq+fXiPICa+GV3gp0Xedsl+MwQlMLKmvrnEjFbQxjliH5YVAEWFh975eVNmKj7Q== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^17.0.2": + version "17.0.2" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.2.tgz#3de24c4efef902dd9795a49c75f760cbe4f7a5a8" + integrity sha512-Xt40xQsrkdvjn1EyWe1Bc0dJLcil/9x2vAuW7ya+PuQip4UYUaXyhzWmAbwRsdMgwOFHpfp7/FFZebDU6Y8VHA== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + "@types/resolve@0.0.8": version "0.0.8" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" @@ -3951,6 +3971,11 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" +dayjs@^1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" + integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== + debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -9106,6 +9131,11 @@ react-error-overlay@^6.0.9: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== +react-hook-form@^6.15.4: + version "6.15.4" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-6.15.4.tgz#328003e1ccc096cd158899ffe7e3b33735a9b024" + integrity sha512-K+Sw33DtTMengs8OdqFJI3glzNl1wBzSefD/ksQw/hJf9CnOHQAU6qy82eOrh0IRNt2G53sjr7qnnw1JDjvx1w== + react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -10828,6 +10858,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typescript@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.2.tgz#1450f020618f872db0ea17317d16d8da8ddb8c4c" + integrity sha512-tbb+NVrLfnsJy3M59lsDgrzWIflR4d4TIUjz+heUnHZwdF7YsrMTKoRERiIvI2lvBG95dfpLxB21WZhys1bgaQ== + unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"