From 804fa5e6595c64a2ffb86e59b02c852f15542eed Mon Sep 17 00:00:00 2001 From: naheyansheikh Date: Sat, 23 Nov 2024 21:35:24 -0800 Subject: [PATCH 1/6] New Login Page --- frontend/src/assets/images/logo.png | Bin 0 -> 57588 bytes .../components/TranscribedTables/Table1.css | 188 +++++++++ .../components/TranscribedTables/Table1.jsx | 123 ++++++ .../components/TranscribedTables/Table2.css | 180 +++++++++ .../components/TranscribedTables/Table2.jsx | 77 ++++ frontend/src/contexts/AuthContext.jsx | 138 +++---- frontend/src/main.jsx | 4 +- frontend/src/pages/LogCode.jsx | 112 ++++++ frontend/src/pages/login/Login.jsx | 273 +++++++++++-- .../__tests__/SignUp.test.js | 0 frontend/src/pages/sign_up/SignUp.jsx | 117 ------ frontend/src/pages/styles/LogCode.css | 222 +++++++++++ frontend/src/pages/styles/Login.css | 368 ++++++++++++++++++ transcription/requirements.txt | 2 +- 14 files changed, 1580 insertions(+), 224 deletions(-) create mode 100644 frontend/src/assets/images/logo.png create mode 100644 frontend/src/components/TranscribedTables/Table1.css create mode 100644 frontend/src/components/TranscribedTables/Table1.jsx create mode 100644 frontend/src/components/TranscribedTables/Table2.css create mode 100644 frontend/src/components/TranscribedTables/Table2.jsx create mode 100644 frontend/src/pages/LogCode.jsx rename frontend/src/pages/{sign_up => login}/__tests__/SignUp.test.js (100%) delete mode 100644 frontend/src/pages/sign_up/SignUp.jsx create mode 100644 frontend/src/pages/styles/LogCode.css create mode 100644 frontend/src/pages/styles/Login.css diff --git a/frontend/src/assets/images/logo.png b/frontend/src/assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2f030bcba8354393fb0724badc6dc1b44b471796 GIT binary patch literal 57588 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

5>3{jEMXr$z*Zvx5>gP^aS^>&%5 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%0Ap zE=Zu~;>C$IU2l`*idaucPrv&_=mYGk&A@0EKV0xli&dNa17sEU{4~<56FT25ManGN zb{+PP7)i){bnM&gdvvXo-_t9ftmF|raxix0*ElX8(ezGg%M9e^!4KrWA0>f}yEI-LYqT%zEedk)22(6*yz~T}kqCL0 z)!w-OoWh`_c_}+AQx`sQs}vjmBT3)CvbjLv)E3<^L%Rr(IcTMZah%`y<&VE&KC``Jtvd(kU#LNyP$gq?%xS6DjKA`>THaie_L% zTvCmQ&prB$s_daSR|;1Qzd1Be5;J-id+!gDc$7c#CxZ`_4RkJqK#{LW=b$ILX(=-Q zzhSBsfok?^gc;)^ZSih<`9tCES;e9PBMjRxrVUh_1+4(>%aUh>fMAu*1*<5OD{l`} z;+BdZEn&4+@KAUT-epwZ3{Bi$mvrj6{Uy9`C{Adp?o`-rcpYCRS;qyo1^)Y$=Sx94 zq$sF{k0&d$ruI_Z{+O|O|1oaKH{Q!+jWL0jD%-tuUpKVn>FDawBT$@KgUU@6o*c%~ z!bp^D2lPoTcjxQRqS$knMaNc)D$`nXW|mXT@{0(QZ2!HbIeSCv-(jMe4K7Le)Y<=k zSO6iL+Cc_xlLjI?;kT&xSIxTXfYpPAYqi%&_a;0ZqjCIdDEnH?4Ia8XkoR+nl*3!2 zs@aD4xOf-9fslnqi&PcMO#CmV-v6Fhi1Pfsq)`|+s9T_{3hVH4{`v%bS`YWA3E4wu zwL$Lu>`bTwwoKN0ylH?hzk0m9GEXpRz3LEw1?XE3`kX$9S+}k6R29}QObt2rB^b)r zQ4=CW`6A1u>{xC$;aeSE5}@#(MU7D*rEL7G-m^E06y=5a1jJ}{%y9%~QLRC}{BQVj zPiHQf)uiu$qYs835OQIH1!iwxmb%0lSL3JO=@6_30oT?n4kkzgisO&NefogW+#JsT z*5P_#866Vx0ybmZoeq-rZ3^574Ps3Q!g;hyvBI?)HP6Es)hglSpAa&8KSA&ETiYR} zgbXLT$PxxQ{eE~+pXPh+jm&?2q+zDsotV@be-dlw7XxY8T2d1}t@|awizb>xoxja= ziI`R+WplwHch8?L0v;&WB7KTRnuaJ*qWOP2q+X8 z;20ZJB2vfOkpt9_H6`i@Lza)lt~JnsBA!1J#{7XqQr^K}&t5~+$BZRuj^4sxZ>&Ne zp;UdnpPCQrKIJ&+esy}FO}AQd19ws1_MG1SfA7BtKl`Qu)dfM!CIjyI(10|v2|%a- z+|03?#@%}C77+SYY#1d)IZiu!;c%?ywCSP5gTf)eZ?VP+I@`^mhdg7AwG+V=c8bS_ zF)JlbyiFfkDxKpQ1>(7hXovrXF&DPGwa`)4x+R7<_9NrMiZ8&%?$i#A*}qs*dZXl!kE2<=XF8$_NFvie{Ir&R@vpwHMj#b5im3 z#=34{7=kBK%^D26PPACZyVL3VhN(?|@1m2wD0eIFRd`W2>1cili7Ap3^MFe{R6WJPFl+ zh&K41!i2#z#U^RZmOcD0$@S%;rX5a>lv-+b{f#HgmM7~_lnA!vW@9Q5s(ZT=cX#|U zRDfDJSj|FOqcYe-*77!slU3=b2*v zHE{_m3Bb%os(jw7g8nzKW^P$v;j|TmB*V4->0VuJsF3*_WmAM{t4@R5t$(!UbPi(5 zd2|NZg0z;$*Rd;{Oy6i!$P(*bu)0nA6U#K!4G_x-H>~*Ze1bF7_D6>m2f2!ctWOCk z{_=c|r;(xS#(%GjXn2ADZz~nRbji3p@2+=eC2VbU*)oK&%T#R+cw5ahp#!QFK=6_< zJ+hl)F<_)Wqm~WD{BnErwAD2c_4?Ge%FOwDixh|F3BdcvwDqE?P7syO?fvPPAo0%{ zG&I2%AXGw5i?E;xDjX4$Km{5?tDvD9rv>e*irv3GuZYdmPNi3CYthv&e683_fodUi zahsvj)y+Q@Gs6$=fmMgfcsVCpYTxB-3|DCU)3B$BsvDpNaT=@U5R+=-4*8f43cYw6 zLbpv<__-g-ZU%Pu^QD<_d4FbU^EZ2;PSuTd@HFka+{QkXS01giLKm%UId`jZ?N63t z5cVOc0RQZKtCY_cu3RzIXwy6vcN5H`f4#p}9;=Zih77>PdcrWAE#!B1chF-V)lj_- z3<|5rSo7;CRIc2(!PADEP!iO(6w(`d`C_HT>SK81MTo`ILtne9)n5zK7k%pX=`v#BPO{ zfw1Yk>XOm~gKL#!}e=jpeCWC#>6 z2L&|1U>A^o4ufxQT&e#ZW(~r69J5mCOiXmZ_D~r~EJkEW0VGf|KhfY3=@Gg)*!Eik z^+h#!)vK-{RN{}V0LlIt6~l&6INt##mN74pcGvRA2idv<-wO>+^zDpG&4wO)1)8@V zGIx)sJ^o}`Hd*l`=|}!acLOMDC(Tzt>Z;lNU3cY06jhG+Fhp_c?keG|JL7RjAuuUH zW^Dtp2_$BzeEu^ zB&VE`5OOTaSrj=78|D;qni(PIQ;JkhiOKnV+>EddIi{FH<+x!>tDK5P$mIOJ>)q$^ z`|ZDa)OEkE`?~Je@%ehb)J@Ulo0T9~$_iNYSyyJ!39aTbfK?t&dl>vAs>lQ^x_8(a zvb=C{Q)Rc%c7|%0f5Ra&SDn#97AKND0c1&9{Bms7grV%VAL+uNSpbU$0Ds ztZt|FmJIuAtk3jZ6{#y6(m6R*r-2Kg?6eE48_+Xebh}?A0=zD?-l6y@@hM zsx*@uQN4lA`}MRiV73cYm6xW~FW|i}B5@0sB;n2yz@7BNCYM$ zPO7F|cfv@j9bEnCAB$wkkrtm2;Gi5pEj;pv-w}w@k=%6Izk3wj5KhuBqyp?KDVk|Ygr)+r_IT~tl{YDqI_!tf$D}<@sU+ei zwCTo@PSI8g<}Z|$z6XWIvkXat-8U;Zr=BYptX#_KEzrG&jS7U7 z7aL@C7@`Neqjc9j9(FlgzNQD;bn4`|49VPNB`zxa(6;Z%4-~J#UjA==HGEPViZ}0} zQgvIlY(kg&JEjN+VZ+1pHF1LbJy2fzUg#s1cMTKGdH!S9kVO2>b-Yv2$){%bEa+8- zrh9t?r72-bohiA+PA{8Y(f&fmJxpPF7Pq=-p$ChDsQkQOPyIX;Q5W5#zDTmuSx)78 zi>=Tyz$Fmfpg%j(Y@bjX=U+;3FLfC*0#@9Pvs^48C%K{FdfhOP>(D_$N1FX|hD{&T z=s+GB4H;zDGQp601sm~l&-ezfjT5I_$xO4itf+&D)A<=wW)@WkN6(fGt_$ToF z$v(}sjb%4u%v}?_b=%S#H^vIizxH#)uj^UkngOFn86Z(ENnz4_m1F zH~o@e(pwl)J7@u`edSA+0JabUUUqVLFr+no?e058+T!C?JHOa%2>nUd6*|vVaIEm? zqe-7gd+Zp=GRV$^2A%ACyH+J96|VxcDp`9#`1B&%ljK;}J|Hc9q`okQ$;iKZ%)-s9 z{2c+(VQ6r?NiI?Ld;6_XJ9n0>5YtH)boy}?7TmC0(F*QXqI`X_p1TEaUNt=aDN*_O zy=V@rY%=+IMWF3Ndme57`D1sBa2MTn>ZtuERvP$Bx1!H^p27wEE_|`ze{5Bwwj}E~ z)bgx_7I&YY(@7W0?Maq;mN)9ov(qHRszzt7pU3C#cw9aCWB=mB*kt!!{b|_=8Po*Hj%W428C<5%Rwk+f3tZd_s zAj^xU=z0zhnl)g_Zj!fzALh$1ml0`0v(3Q2sCYgE5y#ZMkAMx4UnPhsWKRANSxwz* zf4+zg;HlI}0SEx>G~}L)+@L#bk8Rj)yHOYQF?mz_=rxH!C#0&4;Aztg)#=$?y{C;z z$17&h2fvBg<&`vXPN^#b(c(w@UFL`Dt_Mdap9D$RaTioDBbq01sLP0apV?qcsR1R# zqPe_u1~<5e1H*ptP1o1%H%+Jz|5_a6a?Sco1#sg{X0;;3`IP9>F3y9Ur78Owar^jd z6~}#e;5E^2PfA)j)%b&?*zA=&&6fPmBD&Vh?x%U^D8IA2LP})VQNP7mj&l;l_(?)n z{pCbrg9CcKaEl^kz=mztx6qHXlKA?zzm%`#uJj`|*Fq)hXO$Z}mO0r^wol#h(c_+` z4kUUYzP8FvcIvh1g$0ThD_x`c^b_J4GkO4g2{6_TCnVcxBtWH}_}P$c`OTk&;ZXAG zbhVSN6_2*GFxijlQTr%Dj`HE^3g~n-Vm85{u5`}7?*hGpVN3e2!kusYlo!iCJIPr) z{MwIgEt&(qY~YNhs~wumyEU9g3ROD^B3;xn9V_r;UN3laXXw@2%pM6LKy(KM>#)Hp zZ4Ts4+QWV2hi9*r&3F@Cqc5I&n{d199zVy&gO+jS2_GK^BwpRGs~Qu_iw1UGg=^5h zS1XsfR`HzhtD}w>^jkl5*JS(U#!x@Jg4l6KxbIU)GTL$`kuu>@ms^Y1NNWw`Iv%Qm zNh4}A&fj4(9^y-#nUFM#&Zy$3K7QPkBiX3exUag)%eP<&bp|`oXZ#_&LYR=2LJP6Z z>mL5z7v_(To&klX5_?jge~1=(IMYBI+^ksp6onAV(+@{QX~#mN4wq)(;=1|oyw;u{ z!wpt{9w_nu>4Ede2Leirjn40n^`M*QQlcd;@wXLBo6_fX&dXRiJ~LodEq`gtI#$a$ z=`}qi+6Go?1wU>8!8QrFKJTJqHG3zuK3Ji2IOYzAkBLoM_3=?vvv0-+a2(sxc_iDH zb0G%IyW3$j6(QAU0=4qUlhWX%qt_Ff-lEYBsY(~+s66dmGKWr!tY43`7n$x=H3)Zp zxYF%A4X;~AYPJ8e?a!}2~o78E;l$tbAOOR8s430bJ;^wFf*DK9Op8Ya7#OFLA z=hXIgol^L&8zfl#TJO`&4Mb(&=rV{I&mb=UqA8^u!Ch^W|>O9HUVKdfvFRdE@HSI`h zu!sP3Y{PI?$plr6lSw1+Q!!6ZBF4fT+EwV%R3-)e*}t|&5={)3b|t?U+=#?D_Gb?Y z&Td+KZSwgZ2kC|Qh>rGTX*|(WK^O4GLDY8#%jxKJ$rPtZf@M+%=>E@YFIlbb0EAv! z?JzRpePsg~55=!kt;-*{Hy*!izmaI5`}i6Od7qjxRqur6 zbZz9zYVNy{DzMQ&R2O#C5?<{$mz%1A`mQ@Bv)9Yo&+Y~i=A)V=Em6;@*FcHy16-qf54J(5HG zpFP}o=>PRis6)kG`x4hkd#aqEizzjxb$v+bUfy8jxr^k={^%i$yRa}A zzcbwpa@pmg3Gdc&F#T>>>RUZVd}dbj5Nn(oXEGo5OY1;f;7yxN`YYom%Qk~%XUM+L zm9((;wsA=^sV5!zplTRoF7c=HlTE#emWcU{LMMGyW(bs^---^)}eTw}V? zp-_Eszw4A1IH&__{6W8-;gBw)sJe=;?w0KZ_28~I z7k~xU%f?Q6d1ve&Ng3_1>HIbWP01`(JYKQL`UWctOrN;sn$PrU9Cg9@EP*(J<$VMN zhkGxQS2GvYvCYN_OwgjDRY$Ee2+;+8wsDa>#8q}#(@3W~**ser&@zbC#{(PF120P_cK?kMrCf2)KjV$^VtJprqeVATkAuE3}uKucD zOiJUeT&Ob-;@;E|;NC^=Z`uzV3l*e;(I_Eme&Sq{SSrYT`KcEJ^()9wi*E%e;x z4nujy%yE%Ty@8U2{S%?4D=1(s8@97?_Z5bmtnd2^i9& z(+HY~PrGlf!H!koC6qIPI5Hblr4Xk-hMJ3H&_#CoMiGk|eC%<5zXSUi@TUyo7P5^+?qX6Q2v#RE9NK$dz$0QbIS z!Qe{vb(3>=!F5!OJX+ViX;zzR)FzWM!2WimC#R}U>AtHsrAVn-gL)$c>|wi@cahkm zb|>$5YRzEwo^S?ls%_tL|IJ8E+IGrKRvvuo(++Ha3+2VN<8QD8cgiWCk52EQbUcjg z)h|YP`T`enKyGo$uVMPDqCVJFc;Y;M1a+kXU<#X>;7T)Jc=OggYOEHQ;b_tpEu;5L zx1*zs=d-GlyYFT7jJ0>_?D?z$tC%$v`kJ2Wl$CRnf+;nr+BdRpkMb%bD{dj1d3^n6 zv|70J=R_NtzNXwR=WJiggLD~O0N}wbQYy)epm)?Yvx6g)uO{=?Vxh^b(2ayyVmEiu zR_4>^F0A=i>ip{kw+|<|YtI-NQ2^>NS*ibAncv`T&0ukmZAIEu^2WG)^22OMF&JTq zB!3~xt<|OAlef5S(z&WDRIDYZUT8_JswjbA!?4xI@vpFHgBM&9W*$(mGNnbA`KOiuloKx zYOwA+>X{d}57h_3@vAIaX;fP=jkY-f(Ja0OMxJ#!o=D)&Ec8FEQ8@$MS5c*1++y{8 zSd(InG#%SX-4=#E&{ClV7|-}YHhWcHRV8mDK1fLa4V?t3*09ZQkpI}jW28GJ&rIJ~t_I8F^aSWsRo4+T1e?9n~0>u04~qU9?Y z-l-v>=NI`q)$3wd7_E`D!rABF1(djbTQfffx+~SU=0KF8=%t>2@by1<@e~L7 zr@4&Ox!8)Rn6nT3UB2=szrhQ>;H|{$LEVZ%F(E&6eyZKRO8i?_AiZ6CBf{f?jm|$# z+qVD}-~}5DCK60{EGm4MJc7g?%4j=n+erF?k!0o(X-iqP8@h^WQlwtcf{wmZmG@7iX4$v!Tk4Q5Ak(0Yf z-|W_|Na9*Yl#cA~z96hX>k2if=GyVHm$bf3UD$@*KrRg8ZKn)p`(4#AjKBdjoJcO4 zOnTU4oD5Ez=nihfb^=8ZT|{RHYg7nQrNRnSCCo^AjIyn`&GewtQT8>}!A4i^a(%`^ z%bn?y6(2W@M!z;ZpIzMoMw*A;$)~0F%GnT5#Bh za%i%hzZ-lmTV^_~FS1FzJ||W56fobiui9#vyfl(K_rrQWtBEGQT)kOkc6JM69)!FG zcF;hLJsay}R7aqSoZX$J-UlEAF(FTo$zE+wAcZ3RYkcc(`A^7%uawX>E-8{U47n(G zOo!n#rSunci6Pt8W4^gB2H$>y>OFk@$JpjEZ-Vj?ybpnKuP5;D&-6(n#-bjxz^E4j zJxt%aIief(se@|e6TyXlgTHxPjce`(kQLRYKTMX2@;n1bi|W4N!S00alt1>xrD*A@ z+^@lD`fc>%o)a6UL|7f!6#ceD=9F~nPkJ*i2*zi{6mm`1r0bYH!HhMlz*$6+k;omJeCdtV1$hWhh`s;%yUp0|W4r8VHTHEE$nf_HESKEbQ(cgA!e+3@v z!5a5HwCqK(@*IlKCi_SFrT|k+0SvbAX0=t5UXwP_pA-*NLejtzCxB^nOrB$MePnB!zWEqo9TX<89Ra3%^&I$Ibi~Jc;>p_83yt6sFjsXBJyWLhCgJ4}uBJ)Gvd|j&=*AKV1_`6wlidAo z>AGU{Ijq`exuW7^UaI&TY)5yC<3RY(NtqXNkYy2>+4uY(E_8pCxFvgu)HB3?3u`T#VGcz3Fcfp zM6YdEpZV+Mj8T+iw9uyz(uY=hTiIJMLwT@c%JoAB)=7M6AcC6#2LSolFJmf5n=wK7 z==Q89PNEDd1*&mWiM<()T8?0elGh_Ni-sIBxB{d1)o^|Fk@w=&3?=HMIc^1o2N`_YDlxM@%f&?L5&67Pdx`0d$3x7a>R z(en4z0}$|#jfzkR!s=^E$(J`I9A8<$HhX(Ua6K1Z*svD>h8@W1R3 zQKejRi-kvs&E8ivC|~HoTB?w4e)V~u@%V^>s%f5K@-YjD(0GZ;RA2ynj5f3#S{;2P zAp6IWPrJ8UAzLPr;*D->#)ME}P*F%)YCR2Fp(%2NjTS)g!Aun)vMHId|HA@ov)#3b z`Tgz~)(dBj30g)Y&V~lKO%9S2;0Uq9)+g{fgmEzd*N03F)>|SWd?a^IUy5RiY6GRY z*G^h)(5ex2lic21*INeWnk9Lwm!D>2`N2eQmbB$jn>)D5VdJA-C5LKrdm9h4O?M?< zI)6k1!PUOnTz$cG0Aoa$I(Fw|r*+}%FaVjIUt@CYTx!H)ckhhx98rD9Iu`S6;KvBr z=ZN-id;3uPw&L%vkHL9|P^O!L}P47RUyUQO(kE5D!KHwO<&?aq`7aw6Lxh z2J@6fEr<;`?q#YBE=^cEW8N!{X4lNe%r1Z7E-Pk~@vR-xUY9HgsXffyY?b^4^;vIt z&Hh2K__Ea_7}6I`YYExn5o{l3;PaXb%(`o)euTdV4hx^SXTkgPgfX&grVP;9N2atb zJhZA~xoVH12*%l9|A*f;Y_>!5-r~|RiExC>q@%+vTO1HyXb9w;sW$VF!%@0#cu%sp z%HH`tP9M#^C~3KS$Is^XTl43lMlD}h=Ve$fTY;%}BHwF(D^7JdzhE85LVLnb^V?E< zxGQ^w(h}o#9q^8cE7doda|e|J?ywxuA0=l-nS|Ycu#FnG!baW$&{w{^)NuCkwSros z8M+rSmA1ORQLyJd+qPk+r$Wj!OM<>^8*83%Q0sHVWrZZ~a{}*B(hiXr(LxU`BX%yB zu#hAp<7Oq90OSG5YFzWjRORTaVeL3F=JvipF+EN-=TOs4t}2JIlnV4KbP#XQ%eZ>j zd@G49n})>@lwUFs2KD6W0N%FM18w*oTsAlxPY%(+%Ni% zeDFEHOC3DO6eQdU^#y34`WtKx-~Hm4XQ&c}!M;VNM zhhfQGf&f|uKuvDG0H9rX-%&p$@RA~eH{gf1e|S{d=+fE)aM}?`z!^zewI+*{=&Dh) z9<5kJ`rgU--81K-hh&0kSy02VgNmN*D|VRq-D%G*V+VYf%xtvESF*)_DkDhzXz*pB zK(V~xhjLwaRxwels6;qfds*|DCBljrod-k=$1Dy)oHlAtnm&z@7c+K%PzV}1WbKes z6R+CwR_~Leyj@E&r%h% z3w`}umBLI6?`{qi`%HSX=8fO}ib&b}M&TK%wQ~?Y|+7Hp+HDBeSU*O% z72-?1CV_P|a5*qY*+6PrdO2WG@-BI`jQy78!%(+-RkU@4foaqD`@RpUkqd zXw3ZmfwEk@22%GSZ`wDwO2{79w8&jCo^&UYpQ(glf?e{%$3P)hd&RF0{;S&NsINY{V4SZC@`G3&0Kx~_8iQH7gqFiY za^7KO@&aqiND}2uJ%&IqRECRaxB6slyIsa4WRcx&z);7aeCD*87tR>p0GJK6o&{B! z1Vz)&dj@MQp1jpSg1!5`9p49ydbj1;33z*-yJBoQTVml+qlTJ&#WBV#jm#4-2cj15 z`_<+Km|C_T|GU^BT>cC-}l35yx3m;iJ51_ zqhcJ)*Bf5f2B3a54Dy9}U$Mul%(`QS3A=!9QyLvzAv>CcKlwoY5I;%jN%7;1e>+XqzWn5q|-F=77 zm#S1PNS%A_qqBcuBaK%v=+YhF4zzU6zC1&|hU&-?ib})1xyhYT22wjEkh(*!cnVc~ zN)PjG3yAh=7a>_YghFjnLy{YEEO`cvtjy4@K~gt9isEFWYEBJ3s(@`_xZ#@1$UZ+ zu-t5B#zWC(w}0RNy#1#Pt1 z^zCL3|3sm`@{aAi%%V``ufn6!?YH|5Q6s}*X~>P|3T(qh6h8^`xuEO1)7a>mul#Io z6eKOBL3^q>AqxLWYIUf2{W5qnA1})1F9_f*fnJV9V&XHa?}k5)dW2C#Wk^g z8d+{N<@QX8mM3hMY1Vf8zmg@*a8_$4e6IVjC{S#=Yi{=g$LYENE1wkI!KdOk5W3X_r%AcpZdKzf z0GG2(b*X}9XF+GM#(1Pc<}l1ikepH;eP7|bNtSA>_OvWf(WpztJew6(#1mX z^cRXkPzg;OKWZ|s@`ALp6&I)-ffj0Rg{9S)<)+0o3{^T^``X4Y`7d?13sI{KxnQ#q zO&5HyssoFo{nChA2>ej_|3gRWSJ^_MHVKu1DFf z4y_I@tIJmFF^}WCY;;tS6MqsKv%7%jlXcmY711Q`3XuTt7ulh&YV&{`4kqxLTQd0; z`9o)jxXX2I_0B85WEPqgWO}>KT?BesAPkL-X|MWG#SCS8y2wg5Myao9 z>D;mQ&UmFU$ghO;M~+1QSYk&+DY)h#!6nw`X+6A%Qmub4yoqETsXk^`kpSAt+>(_- zT#|{=zLN*sZJ^;QcQ-ENiP;}tO_+QI`~<=aaV^9>`Z(fgkdT&lN#{z>123$lK7*7& zwSz4riGaG9?U};j)LT1Azo7WZht2?UcbYWQV2i)ks%VZ-MKsO^9OW*zKmv?xi)?dr ztL=3<;=1j&c}j@p<>S%CxJV&r>34%1Qz8V)koOs&{{Kzu-#s`6wc0bRSaQ8cR%?o9 zy={#8AdOUgvZ`@nuJ4Zt^gHW(_RAuNL3L&ZT`lNav;phSsKpnhz7EBz2{Jf%jqezi zx$M`Y|TU7tnwP@l6AQ&n;wX@OQ05E8Ru=PZT!` z6ujiaeW`Pi#rGtJ<}U#y@@Eu~&T5dR)HCxKq#n!Wuq`kgp+IN%&{#= ztaN9;3FY{v*EmdG9n@WMOyZ2>Af44Bmr(Hi9iH z`7>~T(~qbz<+NSj!;MJ3I8hsY77O()doj2j!Ti_%ubf>SR0B{MCllY~F6+IOx%HN7|iq92Afedb`xbu90*p$D~|f%|Pu zg2+%rA#~(J4tjFUe>S*$L8IuUFBj3Dw(#1+q0Se58p`Kyw~e?qnkZyR-Ane)PkrVQs>Tn4{yUF-K! zmb>1p^7o8n%g+ArOUg9ynwy^8jSAolc(cEjR zPA?tE2dYWliP^GYA(Y{WALvwsAG&{J*`6>Nd?xIZ+9mJJ796&dhIFji@!x(vkIwqG zTo~m|2Q+Nl;_>9`@W^u78|J3e4TR7`>{A7~cW0l|g*t_5Zb~U;HXE4Kq3{Q8OV9do zyXy&hALrPb$e|Z`rHp>6kg!bRrP*a|K?rC-GrlzFG zWZy-(pY`s^GSSbKu4KhH2vTub4-uNk-3=UD&}%&p8yDYP;prlgA=QvwV%M=KPEcyEC{&>?VaQ%iq zJT^#(D#K0eI=dV@H%IA81b(Ue}j(RwLbt-|JtqZZMq}KToP}` z_sQ!l6qcE-9a!Q^NBWb>H@xJe@^HGCr}?HYLt09t z#NA}!xy<7ulW{gGz40)K`eCmWIrAUah@^nx9`q_c&*+;+hhZ86sQWBj=zWF7@5J|W zd3PR{nCW6+!e8qi5m(@Bq{WO9&gzcENN1>7OzUQc9`gj5vY_OxQuDJ5-psBO?$#=0 zdtrC4H(Ph0w>g$0MHit7MeM5b9VuTRg2 zbtX+qBqaZ4krb&7*M4pHLC`-$kNLluVm)sq`+dV7i}2gFGjo?yK_jR5fojn1$p(>S zA6iyB^SEM`y?ZuzXD5olqzR)Sa{rjJM-k)r{c`Dwr(Pk&YND_JqDiTBnh z`DwTP1Q+qKipk6YIMGtD1Zgb93Yk z^Yu0o9taN^Nmh{_@iC$2^;O_wlP6orPhs2D0uiNK*@~ycr#To^kc_uC9&F*Vb(c$T zexvqjmNx#jALh+SH1N190lhw1Jo4(+`4>s)B7E~f(e%U?t56@8&quvZ+TOJw;#048 z9{Fh&2jBP3aP3^=@KxsHguy?RuQ$@KS?jD$=*uH68LjbCgPB+H@0ZCTgB=`;f6Ehf zQIKU~$)q*fXV>Jzs*eA>ip9=(2L>F>rpBK8jS@F$vJY-5P@UlXV$)6^{N=3;=}N)r zN-?hGYt`;9LtHm18b!Ihojf3D_|>~{x)PLni!kiTA2E=&&4(Uole{OF0;R)a^#mN@ zNnMi8Y*W#3hePpQ-N*cT*tdPh`LSg-VaPCvW_rFGspp7ldYFoWRG4O?WOdTteaF^dq;<1X6Kg98t zn;o2gjBwF^FC8t1BVJf9f;Y$ftcmx`0##5J2Unp79ha@y*Ja$a#Nac<^21X;NxMz!7w)D%?8B{M@lNa&tJW7M z%@Imp7A!Ixp8ZB(%(8K}l#awJ9zUA>-~pZ-dp++5qgPCJbLs2cHp zik<1t?bdj^o(rd&4DdN@=E-&;o+{GKqoC5PT0$H+ zE1IEgWMlXX%1hSyzt)K(53%6F2ZvWR{=UuD^ zR5NUA?1vR92TdcJC}1V;Ep8vV%KbLu2#v+l*7oB!JWl+)ZW;`#BRwcl#Ym&RdakeH z)^JO=Z&Ez=jKnGf1^yFK_kzrXHaG%FUL(tizO^xTtesge#5q43MlRyDt*9ui4pMCt_da?GS9yTnh} z#@-bUafm#Gy9dE=0fYMRieotxAO>krW#l0*!0=EP5_JZ zi%+CB3@@|d(%;SBSNhlLdMim6;WPm9X|`f1Wtn*a>Q(ZL)L#zYC;x27F&D>AJ=j- z3_SaNYj8DCeek0m-+v2E0h7F9{v2gSJ3yU-VA%5;S{xx+^7w4%^0;ujo(0gj!6z&( z<1Xi)=xa7ko$M?b_50lOq!T03c03^Z7t4`ehP4`D#LK>8@6JOMD^X8bL7#pvH z|5(?|HV{dcIil{+ws{N9J3&I7sbW%Yce``^j3h zER>A=nXrPJb)t*hsHma&@Jf2#f6E(U!gO|N-hAwTj$qQP=~K9A2? z*^8zsEPFDgW(Bi)M;EtLWKF-c^0^wKz; z<@-kdzca-Gi7g@Y=}S0OB0suoYY}*W{Z^1WV}KHo9U(h`B_v@Uj|*YhG-~F)5tuyc zQ1A9@Xsl3&TSU&IsFiDOGuTc-%}v&=0#ccR|Y6^K!u@B&lyx{@aC`Vx~!rw&+U~WKjuf z$SM*D*3};~$7Kc9&fh)FJZ{bnc&y6oB;YDl(hZo$QH8_*Q!yrtJ^|(zYy^R(!|I#6 zFS#XvKF%Ius1CUQS=s5EZNqg(Cmq9`avkA1W=Pg|3%G9I(C&SW<_c`&oYv%f@i(Yw zmKAFaW~@)g^DV^$OEh6o>kZwe#6{4nmYey%EwCkJrLB?id_T};%=h3noY5%L$MD02 zQqrKsIDWp2q`c9j+p>5$gU~G5zl>Ki-C**v#;7I*%N%{`Uqpy(AdGDAF00{{UJxef zZz}eHd5*5tL?|^R3!*{ExAGJH?o(E*}@ z(WkTE(n3H~?Iiivc~_*#_ocY$Pj6*E)Sbor$R+ASRMJBqw5U?Vv|;FaICMdx~g8KzQ;O>XalfIUYrGJ@&EkpzpJ){*H6f(EQfES6v5ofI+*?UTOv#h>~hIyO&%Zg z=fy2t7qPS8qp5QlNwRL`3iO;J)*iFuTi>0PG6cD`Kv!yBb(CcD94!jDq)Hvu8V*a> zt48>lwoTi$I%xIz4hcm;|M#$?mL()-K#@aqL%y+O*BVWSpR-IlwJif3Bfp9*%IH7$ zy=Mbb<=)IyXwRdnA0Wp+41Yb1xFf1(@0pHtNzC~)8D8Azlhe{$zG(*|i##@INd7==SDPQwJA%n77eoQojkl{rZW~+R&f?H$$8K`r|WF}ro1H)x_qVlD=J3=pHqHIBSB^h84Z{x4MPoXY+@aAux z>G0!b5~dX7mRs!+j7YxIkBFeJ2|D3pWN8YJ^|z$SVtp1laB|aEY8drRDRx zE$yQ(xZ?c0JKk#RrPZe>ImP$1$yV(9))Kq+#m7S$qedG`|JhbuNo>@Qs<*faXMs4# z2Gym0KZV0hU%}+EBN}2_Jj}{5?up|xL$906m-6NpSYsYA6XF!nXTxW(69~36fT`5@ z<#GFW>ZvsaT$TS+^87i=<-aQ$O#zwtn2Sgu`CCA-p;b8t4jNFA>W?nTU)7G*D;fR5 z>`Jy2Bj1$MEZbp2^w#C!yF%b+BMs)^NU?ra;k4n%RGt%YcXbjy`d)JX_aW+@I7~|+ zITWdclV1ti!(0=o~ilQ;+K^ZhDN5jlWW^%JJQ>ZPcDoh#T0I zmvokUgIIBsZq7gm?Lx(EBUU~4|4IowwcfzO@I%8|Bzs;m}4(Y zsGOYt-pz4rl2^{p^vzna=2fi01?T-o%w#@N6xwoK1!yp07=_xwf@yu~-u(#PYo7`nmn%W*zrmax zt1KUPudxX=ozN0hs0{Y>u{~DwkAdL`R`<^XKt6S}vf&wsqNkbqE`tjEd8@WPb+1{1 z(PYyHOJ$&acPjvaHp@{c;hNLxl|78d1S4m#mhiWWPu~0rFFw19T?}gy9aX=as3i0C zpX4{rTbjTD+KLq_gnQ<_&lUJS)-%l3s*TVZ&t8KXT@uTM&wDdv=*lN@y}tVaP+wn2 zHy;Iz`pC8Z*oNq1E(CpV`y}}9=-x3;i~&r4X0s%##s|grpAVOFUps0gI~*@Gkw2kq zL?an2Kjb`Bkz<&ARBh6X6_@L15PyIWK8_;n;3G6eN&suQ`RSirZ1;8LI-Uaqb;;Tg z5ZC*YIMwAU;+w1RF)dt#0|B5qT@{P>zG!cXCgd*zI0uxLwGRD~VrSu|5S)IRan(sk zx$fUe^Wv5!{(p!$_-(_v!`~%KY+^2zspGT`tzJiqm_wmLl)g*OvLjnv7ExS@IaZc=N z5VwEItbZ;eboEmMVmxnPZp9M5c8S4t60_#$XmX3TRb+GyA7OSC-sN-{`JND!4s(mO zm3-ZX_ilS``5Dxg6{gGnqVQ##pESX+&hj_t+{cJB-Vzj&sdE!=m=hz)OCL;G8t$eJ ze3|a%bNTmLz5%1!H2tJ(DnbZ=rvc#AUFCh-{80bek z`3&IN_+;^|s`el^m~D(#dEih$?5w1GC2@9xEiS7`khzFAE}(iD3aQ_2m3rq7<>}Kh z-OGpC@#+4P^WwBZVPyIEZiKHskdLCRfL;Y|I<09 z9B~k5g51O6&eUXffh?fFP0X1MHD=9)>%&JB&TuZ=Rk3>f&q*$>`a^6; zP<^-T-7SMdN*PzI8C2t5bEx*~LKKV_ zcT#Yx)5W+Yz--ejuq|%3e()|Ei8i>4rfu2Aog~S7Hj2X1!pTjDuQI<60L!@;odo^@|ceKbPle_#SN(N%mL+}e! z{$3CgF_|LzR)a%`dpH8G&Bme?lltu2RCTq}U;ue@s%T(Cc;^~G6B+aGkR%`LBKRwS zmW*f-(hgi2W&IIiKxT}PSk^E2#XRbG7ccu-0O>g!h>#rCDiPGS1G(E^M4ky`v~*I zBWq(Mq&nIGMR@Xs^*8V7mpGPDM`F(IT0&3-Io_a zXoBTUM=Al^^U5*Mmh0a~%YOuzLTg-O#fp0dUmh=v8+j6cr+%&rDmgS0;kC=e>L<#Q<>5#Kz)_XAyo1+bV@cr#m^mKx^>?NT zoLmn4_Wu;C9%uC_bi52M^K~IFdHyr`sz~ygJ;w=##)YE1N|9Hs^oR|}k*f)~#jKS3 zv_Q92qEFi&E{MozO6{ZgzQ>Lj5zN!}PMVxPO*UvP<@Nt}Xm-G%*>g`K<_f2ZhW1xE zY!VjqvNs^!ss^CxGe1;g96x*Fm@mBsiQkdMd6e^3&pThmJog#>QwBR{h&H5cs=M@W zEXf3;Dg4osk^hK_EIAo)UofN-yPn;Ko1j~@l5>Z4yLq(Df;qZ?%ngStdOQ!Buyh|D zL`5QkFJ-?tJ|w*}D~(l6J`hY!cz_YYh@f>p6GKk{jM@7L8mT?2k!sPgdGVjv*Nau# zOD5Mw$xTj@-UTfg7vpn{9%nTb%qEzUxeHT<$)P0PlUy9YFuuXggm8Z z1P>XUYkabtkI0Qsae!T?*d3*mFv9c`x=NO&4Fw?Xj~MDZc>?rp8EyM+{`2LJNG9td z!lED6s%GJg!iyZB=QYaVOpnk88dqdoU)|;Lu4f)meacFv`w$Tjcz4MqpI!3yBO8rJ zbfWYGKFZs`!Xrtf5m$jE_7`>Gcr)-g;)cTpTi~rZu zlgC5ZMLi^qq$Vw7>qUr+tb?*sDv4r74P(g?X2zN&vPMGILZaxECCoHr#=fsv;>8%v z@QNXYu}3Jr$CLN_zWM8Ue)rBf=iam2bIx<`xdW*w7pfISLlO&SoTV9F&-8d&iY!Vi zN$}~HfvHOBsd++w-^RX}0^-GkOPi<`OajSd5^cX1@-%b+DnWj^x}(Gtr@ZRMAa_Op z12~kI`7;}pBFG}w`N-=RNbA9pjf zo$@pK9FL(DawF@elI`R6;yg$sutgvB$u|KbRab4^bB85jwjVgM?W+72`A$wUuq(%i zJnDXA$PJ!$qTswEGci8>cZ!G-}FH&Ma{3zZ}S_Hjbpra(qZ4QY~qUr;3dW zRWZ_b=op{~M2fpqnX$f8Id6^fxfowfy!e8lR>~9|?#SR4dT*E>->feVWKRzb95#dw zq%K$NF#-W(JDNY%2BWil?eVV}$GB=T)2~aO7Qi$0K22)9yR83ihK=$1S2<(sy~EBc zH0+^EL?mCj9Ar49o!S;t$9&;4R{4MPucKRFD)`B*v6o<+f)1MSw~^^Ab3N8|i~Wgx z?gSj=-5(++YGd|krs10PqXnOzZuM{3-M!>Ak=gSv)_}Xb$=J72OOE=#`eF5` zyK2Eo4*FlNk)@N3$Q%i~VWYqj=sg3ar^pv$v1Fz6U&P6}89V!xouW2MMuNPHNRCNH zWh^~}){J1)-+V01=>pUUL)os4923bS-76OTT#lcp^Bk*`y`#Dp;th*%xO$+*8)6F! z>l7#*=eYjeEb}XNmC{GWE;Z7DMV{dX-n|+usH_4rm z^%$!ZGFCI+s|nf1i!I=pK2w@|*CJ?0#LG!hx7e6+K5p!dEOCZavnCZLh(g}27qk>@ zRh#%wIJw#C9Vj7cot0YA9>&e))j@6(`ooz}y`un}ntPTFiBi1uALPQSpTPnd$Av3p zR4qP#l^ONokUra$TjEPkFS~IaetdA9Ye|pIPA=={jXl%F04__;$T5jD9Q6!OjX%o} z=JE?-d(X{~!`d-a2rNX?o1=L@FwNa}p1j;e5^S#NIOS8gu?@9kz;M!`B$IyaXCTr+ti|VhglCLW%GbFv=$rK9gunJ)o zVNIjqcZX2b5s8-zJqN#UiD0J~p)Vhv=yx`LS&GCBkV|$nlbF@9RQ~mW zY)euIWY0?2P5^et+Z0JXpMDxXy{UD8_n_;sN&N~}4ji%Y@ktzlhW4`N{^Ar__M$in zXI`4iC*Y^mWxn4v(mF`5rVs5=`S2!^S`>Erzu;FFfM-wEHj-W!(B4}9VB!2@zy}Y1 zZ`njS8~C~p-%Y~*Q{ceVocmPxw1?Uxe>~vFsT?3TIgKs<>LY2tmj(`nUj|f$dS;~u zlHe*XG`=8(TkuW-`SS9k-DR1`S{Wv-Qe}?cfACZLQp8am-2A`eC z>%)=wx<1ML$b96Pp$(a;RIkjh!%js(Dwer2G zFrX{97wx`B8{!Z^8*28%Z{-GYxij5ok+n@OsEo29$qAzgnH)J6;Zu%Z-&qOCI24sf zKP0a)SYO!5N?f^KoN+@JlDHo%R0H4Iet%t+CS2MhObw6{wDH*;g+B3Mg@0gnC~o>p z2rBY`8(&;#+(GHl+oB8vio~MI$a+^R(`&SVlFJUPAvFL~DT>oPrTu zMYZ-u_v76-n!t=rdZXf6ZZu-ROTv3NuRrd&-`dIxXg36@&!qsz1??MNf z=7`L`#1pkXj0k}BKGU99KEJZWuIN6RYsZ505JHfaFx5^3V zaY81&>U=?K-GJh)Z933t0REl&+KU=)j4S)(Yy6(=*d4Hwd19qId9d3YR?U9#gc|X$ z8~c;aJuwgKIVgtmaN4hMu|n7F!Don=fgZ${O{4eeWqVUz3E1S3x@})zYPWSw1#M33 z-xgZ3&MNi$Cs~MzmVSd@*Kx@Ceqn=Orta+k)@&rr;|g_UQX8(l!-(H1N8X%GYx~EJ z#q_r62E#M~4zfm@)mq70)o4|P`5Ck6?fGM;VeXFDQCqH^j(0^m`!m!6UQ2UQOc`nL_T;2$w5{bPZ{#~9ob)P2 zKaJj+r8=!MfN-o%p#9E8Eo};2)MMP^-G$`;JUi8d;pL)V73=;ONSW*eLC1ZV&Z=fS zI8kp02JKTu!&*60>p_OdnoWkcd7$h=pV8RjURsnlp2_6ch0q6#rYOK{GviQwqt=bs zIQ0~T)zy#B_gP*MV;l4nE>keKV<8@sMfE!`{A*%kH1o=SCJe42-->A4I5sRoxi&$MJy1Vkw{SP~ zWvow)7UAcBBphNWXdwYZL;%|$YfXIVMUHRaPg4(>L>ivRGZ}1E4#6V?=aSe|nUzYyv_#pR=4lZ{s zIRWSFuHN1f(hhlW2KKfwe^&8@NYb{l- zB)-vSj#e|Ry&7Kmnd_okdxCS!vE#PSW3i z>G@aAMS)*Gzg;su*EP*%&)Lj7EazR&sxp9e3_M$ax6iIxE$J#5w5K^rgSK*8tRN*f zhVOJ*Ft3xIZS~Xd%zlw>MCt zv$o>JzyFIZ&x?ui5Ee(%5`E2C8EY8kH&T_H5vWy*A>rr;C{HeOiIf^YEt8#rRIEi9 z93tk?+$J7WxsP<3Yn0(8`wlN{mc0eztHm?n==8#%=wQputG8dM@2AWyoJ2d#JbY5Z@iCSw;VBtWzv#l)N`#8Bh9uQZ-}ghrkc-KzS!{;~2Xt<9{~ z_jl5G@cL36obBLl@72qu8JsucjOOgsHlIIy{kJji@Fsfme%4&2FQX!*ZqllBZKEY0 z0ZIltm+L@Dj63gorL0I-iAkzX=3N~B-378f?~qoy^9+(0G@um$vqr>&QlXKQjesM~ z15fMy^!zRrE~S3P484BLiqkXYIuRd`IZ^`*vSJ8xqAa+}qdtn?TGMxz9-RdavJ1V% zMchcIKMezLgX}^m;`by5W`3zL`kOi3M#xO|en3Ah%LEyC=#ps$(I*qtRZ=XlQf?I9 z|2*}HmDDrrn5rAgiEkgJVy$B9dRM=jy(uUo{1MrRpbY+@y7Wbx(u6k?{BFdF45s8_ zX9>ZWWZWndjSa$>R6E@1cn42WFPriC=JR+ni?W7MjtP z=zI0))qMCGr(Nt{#!zjNe(<8S)x3Qss zLq!efIAFeJoAF_0V^N`bY+dHYFHp0dUNe2P!i96>9d5HQX8u-Ru61LsfWDLM{cwT% zQlyltwu0?ju%_9h`B_+6`md1+P(*Aw!Ua|hZO=VxKxAg=L){H4viz3ncIkqY!Uk>C z*e%mJD8U3~89g>Ec>6y+b`URU^yi>>;ju|ThK07;1EKv;`UjMn4r9|t4}m5w+-UJc z|I;8AVGRo%H)eur-O$0IayF^~MZ}kCIQ-b?>Nn{SFPvRRL@fGjrIG3FxgxKyyQu%V zsLRtSK}x||074M-5~WZWG*&UC(QEvN@3{bF7XTbASKz**v|v46DsQ5@pdn*45{4ky zfb$_QrpuFOWD8WMLo`xW8&H@m)qB=CQU3UhO)$2L5iMwZ2*pj&X_CY9eEx?~o@ka2 zGc_dO1QT2xbrd*MUYrjjSVhq}7|HCGKA5^AqBYJVyiEw}qFoXpmyQnF0t=;=@GcQ2 z7ggUgTj&W(V^sBuQVq%74yFJJsQ?Lp*5G@`71Mp!BuJ5qq7jRwf7aK~n_R99=CTSTO>WT<)ju{* zUPhPaMWGA{BN4{hO4m$g{PY9KPfX9|?Ed)UDLbPG*0jfZNY1grQ1uK~TSgRYC@u#? z;~-kVW~7+X;LE2sto#RLVq`X_?45UEJ=@?+LH2KSK4Oy{&j0CYe$94kPz}_39faf{ zTP6W z=y-L!_Kzr76aN3TG~cF54u9gpr3Qk2+u6iyPWgCm_KYde!G#<=Q@}Rqc?f5*w35a@ zQ0K1!j-pen0Hgq-6C09M2ij=}1U3k^?Ybp#ZU%C|%dM*hy5=BXAP_i*%AaOuU { + return ( +
+
+

+ Your photos have been successfully transcribed! +
+ Please review and edit the information as needed. +

+
+
+ +
+ +
+
Case No.
+
Type:
+
Surgeon:
+
OR Date:
+
+ +
+
1234567
+
<insert type>
+
<surgeon name>
+
<MM/YY/DD>
+
+ +
+
+
+
Patient ID:
+
<patient ID>
+
+
+
Age:
+
30
+
+
+
Gender:
+
M
+
+
+
HPI:
+
<hpi>
+
+
+ +
+
+
+ Indication for Surgery/Reason for Referral: +
+
+ Lorem ipsum dolor sit amet consectetur. +
+
+
+
Social:
+
+
+ EtOH: None +
+
+ Drugs: Occasional +
+
+ Smoking: Quit +
+
+
+
+
+ +
+
+
PMHx
+
+
HTN
+
<##>
+
+
+
DM II
+
<##>
+
+
+
DLP
+
<##>
+
+
+
CVA
+
<##>
+
+
+ +
+
Meds (last dose)
+
+ Lorem ipsum dolor sit amet consectetur. Nisi nec ultricies commodo. +
+
+ +
+
Allergies
+
+ Lorem ipsum dolor sit amet consectetur. Et ac porta turpis rutrum + pellentesque id vulputate hendrerit. Venenatis elementum sagittis + luctus urna. +
+
+
+
+ ); +}; + +export default Table1; diff --git a/frontend/src/components/TranscribedTables/Table2.css b/frontend/src/components/TranscribedTables/Table2.css new file mode 100644 index 00000000..e059631f --- /dev/null +++ b/frontend/src/components/TranscribedTables/Table2.css @@ -0,0 +1,180 @@ +.table-container { + width: 90%; + max-width: 1200px; + margin: 0 auto; + border-radius: 12px; + overflow: hidden; + background: white; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + margin-top: 30px; + } + + .header-row { + display: grid; + grid-template-columns: 1.7fr 1.6fr 1fr 1fr 1fr; + background: #2b3b56; + color: white; + text-align: center; + } + + .header-cell2 { + padding: 12px; + border-right: 1px solid rgba(255, 255, 255, 0.2); + background-color: white; + color: black; + } + + .exam-cell { + padding: 12px; + border-right: 1px solid rgba(255, 255, 255, 0.2); + height: 34px; + } + + .info-row { + display: grid; + grid-template-columns: 1.5fr 1.75fr 1fr 1fr 1fr; + text-align: center; + height: 80px; + } + + .info-cell { + padding: 12px; + border-right: 1px solid #ddd; + } + + .investigations-section { + border-top: 1px solid #ddd; + } + + .investigations-content .row { + display: grid; + grid-template-columns: 0.2fr 0.2fr 0.5fr; + width: 600px; + border-bottom: 1px solid #ddd; + } + + .invx-row { + display: grid; + grid-template-columns: 0.201fr 0.2fr 0.5fr; + width: 600px; + } + + .rows { + display: grid; + grid-template-columns: 0.29fr 1fr; + background-color: white; + border-bottom: 1px solid #ddd; + border-top: 1px solid #ddd; + } + + .cath-row { + display: grid; + grid-template-columns: 1.1fr 1fr; + background-color: #2B3B56; + border-bottom: 1px solid #ddd; + } + + .investigations-content .cell { + padding: 12px; + text-align: left; + border-right: 1px solid #ddd; + color: black; + } + + .cells { + padding: 12px; + text-align: left; + border-right: 1px solid #ddd; + color: black; + font-size: 15px; + } + + .cath-cell { + padding: 12px; + text-align: left; + border-right: 1px solid #ddd; + color: white; + font-size: 19px; + } + + .cath-section, .ct-section { + text-align: center; + padding: 12px; + width: 518px; + height: 500px; + border-right: 1px solid #ddd; + } + + .physical-section { + display: flex; /* Use Flexbox to arrange the items in a row */ + justify-content: space-between; /* Add space between the items */ + align-items: center; /* Align vertically centered */ + height: 0px; + } + + .physical-row { + display: flex; /* Arrange the cells side-by-side */ + justify-content: space-between; /* Space between the cells */ + align-items: center; /* Vertically align content */ + padding: 1.3rem; + border: 1px solid #ddd; /* Subtle border for the row */ + background: #fff; /* White background */ + flex: 1; /* Take up remaining horizontal space next to the header */ + margin-top: 49px; /* Remove the margin to avoid spacing issues */ + width: 200px; + } + + .physical-cell { + font-size: 14px; + color: #2B3B56; + text-align: left; /* Align text to the left */ + white-space: nowrap; /* Prevent text wrapping */ + } + + .investigations-header{ + display: grid; + background-color: #2B3B56; + grid-template-columns: 1.1fr; + text-align: left; + height: 50px; + width: 539px; + } + + .right-section-only { + grid-column: 3 / 6; /* Span from the 3rd to the last column */ + text-align: center; + border-left: 1px solid #ddd; + color: black; + height: 80px; + } + + .right-section-only-2 { + grid-column: 3 / 6; /* Span from the 3rd to the last column */ + text-align: center; + color: black; + border-bottom: 1px solid #ddd; + height: 154px; + } + + .right-section-only-3 { + grid-column: 3 / 6; /* Span from the 3rd to the last column */ + text-align: center; + color: black; + border-bottom: 1px solid #ddd; + height: 95px; + } + + .left-placeholder { + grid-column: 1 / 3; /* Placeholder for left columns */ + text-align: center; + color: black; + background-color: white; /* Optional background for distinction */ + } + + .left-placeholder-2 { + grid-column: 1 / 3; /* Placeholder for left columns */ + text-align: center; + color: white; + height: 55px; + background-color: #2B3B56; /* Optional background for distinction */ + } \ No newline at end of file diff --git a/frontend/src/components/TranscribedTables/Table2.jsx b/frontend/src/components/TranscribedTables/Table2.jsx new file mode 100644 index 00000000..527081ff --- /dev/null +++ b/frontend/src/components/TranscribedTables/Table2.jsx @@ -0,0 +1,77 @@ +import React from "react"; +import "./Table2.css"; + +const Table2 = () => { + return ( +
+ {/* Header Row */} +
+
EXAM
+
+
+
+ ___ kg +
+
+ ___ cm +
+
+ ___ m2 +
+
+
+
Veins
+
Allen Test
+
Pulses:
+
+ + {/* Exam Content */} +
+
+

...

+
+
+ {/* Content for the right side */} +

Diagrams.

+
+
+

INVx

+ {/* Investigations Section */} +
+
+
+
Echo
+
EF ___%
+
RVFx
+
+
+
WMA
+
+
+
Aorta
+
+
+
Valves
+
+
+
+
+
+ {/* Content for the right side */} +

Diagrams.

+
+
+ {/* Content for the right side */} +

CXR

+
+
+ + {/* CXR and CT Sections */} +
+
+
+
+ ); +}; + +export default Table2; diff --git a/frontend/src/contexts/AuthContext.jsx b/frontend/src/contexts/AuthContext.jsx index a5ca34b7..0e307ad9 100644 --- a/frontend/src/contexts/AuthContext.jsx +++ b/frontend/src/contexts/AuthContext.jsx @@ -4,83 +4,83 @@ import supabase from "../config/supabase"; const AuthContext = createContext(); export function useAuth() { - return useContext(AuthContext); + return useContext(AuthContext); } export function AuthProvider({ children }) { - const [session, setSession] = useState(); - const [loading, setLoading] = useState(true); + const [session, setSession] = useState(); + const [loading, setLoading] = useState(true); - async function register(firstName, lastName, email, password) { - const { user, error } = await supabase.auth.signUp({ - email: email, - password: password, - options: { - data: { - first_name: firstName, - last_name: lastName, - } - } - }); - if (error) { - throw error; - } - return user; - } + async function register(firstName, lastName, email, password) { + const { user, error } = await supabase.auth.signUp({ + email: email, + password: password, + options: { + data: { + first_name: firstName, + last_name: lastName, + }, + }, + }); + if (error) { + throw error; + } + return user; + } - async function login(email, password) { - const { data, error } = await supabase.auth.signInWithPassword({ - email: email, - password: password, - }); - if (error) { - throw error; - } - return data; - } + async function login(email, password) { + const { data, error } = await supabase.auth.signInWithPassword({ + email: email, + password: password, + }); + if (error) { + throw error; + } + return data; + } - async function logout() { - const { error } = await supabase.auth.signOut(); - if (error) { - console.log(error); - throw error; - } - } + async function logout() { + const { error } = await supabase.auth.signOut(); + if (error) { + console.log(error); + throw error; + } + } - useEffect(() => { - const { - data: { subscription }, - } = supabase.auth.onAuthStateChange((event, session) => { - if (event === "SIGNED_OUT") { - setSession(null); - } else if (session) { - setSession(session); - console.log("This is the session:", session); - } + useEffect(() => { + const { + data: { subscription }, + } = supabase.auth.onAuthStateChange((event, session) => { + if (event === "SIGNED_OUT") { + setSession(null); + } else if (session) { + setSession(session); + console.log("This is the session:", session); + } - setLoading(false); - }); - supabase.auth.getSession().then(({ data }) => { - if (data.session) { - setSession(data.session); - } - setLoading(false); - }); - return () => { - subscription.unsubscribe(); - }; - }, []); + setLoading(false); + }); + supabase.auth.getSession().then(({ data }) => { + if (data.session) { + setSession(data.session); + } + setLoading(false); + }); + return () => { + subscription.unsubscribe(); + }; + }, []); - const value = { - session, - login, - logout, - register, - }; + const value = { + session, + login, + logout, + register, + }; - return ( - - {!loading && children} - - ); + return ( + + {!loading && children} + + ); } diff --git a/frontend/src/main.jsx b/frontend/src/main.jsx index 46329ed2..7f8b0aae 100644 --- a/frontend/src/main.jsx +++ b/frontend/src/main.jsx @@ -4,7 +4,6 @@ import { ProtectedRoutes } from "./utils/ProtectedRoutes.jsx"; import { AuthProvider } from "./contexts/AuthContext.jsx"; import App from "./App.jsx"; import Login from "./pages/login/Login.jsx"; -import SignUp from "./pages/sign_up/SignUp.jsx"; import NotFound from "./pages/not_found/NotFound.jsx"; import Home from "./pages/Homepage.jsx"; import Dashboard from "./pages/Dashboard.jsx"; @@ -13,6 +12,7 @@ import LogHistory from "./pages/LogHistory.jsx"; import UploadPhotos from "./pages/UploadPhoto.jsx"; import ManualEdit from "./pages/ManualEdit.jsx"; import "./index.css"; +import LogCode from "./pages/LogCode.jsx"; createRoot(document.getElementById("root")).render( @@ -20,7 +20,7 @@ createRoot(document.getElementById("root")).render( } /> } /> - } /> + } /> }> } /> } /> diff --git a/frontend/src/pages/LogCode.jsx b/frontend/src/pages/LogCode.jsx new file mode 100644 index 00000000..196ffd7c --- /dev/null +++ b/frontend/src/pages/LogCode.jsx @@ -0,0 +1,112 @@ +import React, { useState } from "react"; +import { useNavigate } from "react-router-dom"; +import { TextField, InputAdornment } from "@mui/material"; +import { Article } from "@mui/icons-material"; +import Logo from "../assets/images/logo.png"; +import "./styles/LogCode.css"; + +const LogCode = () => { + const [logbookCode, setLogbookCode] = useState(""); + const [termsAccepted, setTermsAccepted] = useState(false); + const [loading, setLoading] = useState(false); + const navigate = useNavigate(); + + const handleSubmit = async (e) => { + e.preventDefault(); + if (!termsAccepted) { + return alert("Please accept the terms and conditions"); + } + try { + setLoading(true); + await new Promise((resolve) => setTimeout(resolve, 1000)); + navigate("/"); + } catch (error) { + alert("Something went wrong. Please try again."); + } finally { + setLoading(false); + } + }; + + return ( +
+
+
+
+

Logbook code entry

+

+ Please enter in your logbook code in order to finish registering + your account. +

+ +
+ + setLogbookCode(e.target.value)} + InputProps={{ + startAdornment: ( + +
+ + ), + }} + required + /> +
+ + + +
+ +
+ + +
+
+ +
+
+
+ Logo +
+
+
+
+
+ ); +}; + +export default LogCode; diff --git a/frontend/src/pages/login/Login.jsx b/frontend/src/pages/login/Login.jsx index 8045046a..220e5a4b 100644 --- a/frontend/src/pages/login/Login.jsx +++ b/frontend/src/pages/login/Login.jsx @@ -1,15 +1,26 @@ -import { Link } from "react-router-dom"; -import { useState } from "react"; +import React, { useState, useEffect } from "react"; +import { Link, useNavigate } from "react-router-dom"; import { useAuth } from "../../contexts/AuthContext"; -import { useEffect } from "react"; -import { useNavigate } from "react-router-dom"; +import { TextField, InputAdornment, IconButton } from "@mui/material"; +import { + AccountCircle, + Lock, + Email, + Visibility, + VisibilityOff, +} from "@mui/icons-material"; +import Logo from "../../assets/images/logo.png"; +import "../styles/Login.css"; -export default function Login() { +const Login = () => { + const [isRightPanelActive, setIsRightPanelActive] = useState(false); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); + const [name, setName] = useState(""); const [loading, setLoading] = useState(false); + const [showPassword, setShowPassword] = useState(false); const navigate = useNavigate(); - const { session, login } = useAuth(); + const { session, login, register } = useAuth(); useEffect(() => { if (session) { @@ -17,47 +28,239 @@ export default function Login() { } }, [session, navigate]); - async function handleSubmit(e) { + const getFirstAndLastName = (fullName) => { + const names = fullName.trim().split(" "); + return { + firstName: names[0] || "", + lastName: names.slice(1).join(" ") || "", + }; + }; + + const handleSignUp = async (e) => { e.preventDefault(); + if (!checkValidEmail(email)) { + return alert("Please enter a valid email"); + } + + const { firstName, lastName } = getFirstAndLastName(name); + + try { + setLoading(true); + await register(firstName, lastName, email, password); + setIsRightPanelActive(false); + } catch (error) { + if (error.code === "weak_password") { + alert( + "Password must contain:\n" + + "- At least 8 characters\n" + + "- At least one uppercase letter\n" + + "- At least one lowercase letter\n" + + "- At least one number\n" + + "- At least one special character (e.g., !@#$%^&*()_+-=[]{};:'\"|<>?,./`~)" + ); + } else { + alert(error.message); + } + } finally { + setLoading(false); + } + }; + + const handleSignIn = async (e) => { + e.preventDefault(); try { setLoading(true); await login(email, password); navigate("/dashboard"); } catch { alert("Failed to login: Email or Password Incorrect"); + } finally { + setLoading(false); } - setLoading(false); + }; + + function checkValidEmail(email) { + const emailRegex = /^[\w-.]+@([\w-]+\.)+[\w-]{2,4}$/; + return emailRegex.test(email); } return (
-

Login to Your Account

-
- - setEmail(e.target.value)} - required - /> - - setPassword(e.target.value)} - required - /> - -
- Don't have an Account? Register +
+
+
+

Welcome to Flow Leaflets!

+

Register your account

+ +
+ + setName(e.target.value)} + InputProps={{ + startAdornment: ( + + + + ), + }} + required + /> +
+ +
+ + setEmail(e.target.value)} + InputProps={{ + startAdornment: ( + + + + ), + }} + required + /> +
+ +
+ + setPassword(e.target.value)} + InputProps={{ + startAdornment: ( + + + + ), + endAdornment: ( + + setShowPassword(!showPassword)} + edge="end" + > + {showPassword ? : } + + + ), + }} + required + /> +
+ + + +
+ Already have an account? + setIsRightPanelActive(false)}> + Sign in + +
+
+
+
+
+

Welcome Back

+

Login to your account

+
+ + setEmail(e.target.value)} + InputProps={{ + startAdornment: ( + + + + ), + }} + required + /> +
+
+ + setPassword(e.target.value)} + InputProps={{ + startAdornment: ( + + + + ), + endAdornment: ( + + setShowPassword(!showPassword)} + edge="end" + > + {showPassword ? : } + + + ), + }} + required + /> +
+
+ Forgot password? +
+ +
+ Don’t have an account? + setIsRightPanelActive(true)}> + Sign up + +
+
+
+
+
+
+ Logo +
+
+ Logo +
+
+
+
); -} +}; + +export default Login; diff --git a/frontend/src/pages/sign_up/__tests__/SignUp.test.js b/frontend/src/pages/login/__tests__/SignUp.test.js similarity index 100% rename from frontend/src/pages/sign_up/__tests__/SignUp.test.js rename to frontend/src/pages/login/__tests__/SignUp.test.js diff --git a/frontend/src/pages/sign_up/SignUp.jsx b/frontend/src/pages/sign_up/SignUp.jsx deleted file mode 100644 index 6399c404..00000000 --- a/frontend/src/pages/sign_up/SignUp.jsx +++ /dev/null @@ -1,117 +0,0 @@ -import { Link } from "react-router-dom"; -import { useState } from "react"; -import { useAuth } from "../../contexts/AuthContext"; -import { useEffect } from "react"; -import { useNavigate } from "react-router-dom"; - -export default function SignUp() { - const [firstName, setFirstName] = useState(""); - const [lastName, setLastName] = useState(""); - const [email, setEmail] = useState(""); - const [password, setPassword] = useState(""); - const [confirmPassword, setConfirmPassword] = useState(""); - const [loading, setLoading] = useState(false); - const navigate = useNavigate(); - const { session, register } = useAuth(); - - useEffect(() => { - if (session) { - navigate("/dashboard"); - } - }, [session, navigate]); - - async function handleSubmit(e) { - e.preventDefault(); - - if (!checkValidEmail(email)) { - return alert("Please enter a valid email"); - } else if (password !== confirmPassword) { - return alert("Passwords do not match"); - } - - try { - setLoading(true); - await register(firstName, lastName, email, password); - navigate("/dashboard"); - } catch (error) { - if (error.code === "weak_password") { - alert( - "Password must contain:\n" + - "- At least 8 characters\n" + - "- At least one uppercase letter\n" + - "- At least one lowercase letter\n" + - "- At least one number\n" + - "- At least one special character (e.g., !@#$%^&*()_+-=[]{};:'\"|<>?,./`~)" - ); - } else { - alert(error.message); - } - } - setLoading(false); - } - - return ( -
-

Register your account

-
- - setFirstName(e.target.value)} - required - /> - - setLastName(e.target.value)} - required - /> - - setEmail(e.target.value)} - required - /> - - setPassword(e.target.value)} - required - /> - - setConfirmPassword(e.target.value)} - required - /> - -
- Already have an account? Login -
- ); -} - -function checkValidEmail(email) { - const emailRegex = /^[\w-.]+@([\w-]+\.)+[\w-]{2,4}$/; - return emailRegex.test(email); -} diff --git a/frontend/src/pages/styles/LogCode.css b/frontend/src/pages/styles/LogCode.css new file mode 100644 index 00000000..19b4b7ec --- /dev/null +++ b/frontend/src/pages/styles/LogCode.css @@ -0,0 +1,222 @@ +.logcode-page { + width: 100%; + min-height: 100vh; +} + +.logcode-page .container { + display: flex; + width: 100%; + min-height: 100vh; +} + +.form-description { + font-size: 1.2rem; + text-align: center; + color: #1d57b6; + font-weight: bold !important; +} + +/* Form Container - Left Side */ +.logcode-page .form-container { + width: 50%; + display: flex; + align-items: center; + justify-content: center; + background-color: white; + padding: 40px; + position: fixed; + left: 0; + height: 100%; +} + +.logcode-page form { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + padding: 0 50px; + text-align: center; + width: 100%; + max-width: 480px; +} + +/* Overlay Container - Right Side */ +.logcode-page .overlay-container { + position: fixed; + top: 0; + left: 50%; + width: 50%; + height: 100%; + overflow: hidden; + z-index: 100; + background: #0B234A; +} + +.logcode-page .overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: #0B234A; + background: -webkit-linear-gradient(180deg, #0B234A 0%, #162A5B 100%); + background: linear-gradient(35deg, #1d57b6 0%, #070e1e 100%); + background-repeat: no-repeat; + background-size: cover; + background-position: 0 0; + color: #FFFFFF; +} + +.logcode-page .overlay-panel { + position: absolute; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + padding: 0 40px; + text-align: center; + top: 0; + height: 100%; + width: 100%; + padding-top: 50px; +} + +.logcode-page .overlay-panel img { + width: 300px; + height: auto; +} + +/* Rest of your styles remain the same */ +.logcode-page h1 { + font-weight: bold; + margin: 0; + font-size: 2.5rem; + color: #000; + margin-bottom: 10px; +} + +.logcode-page h2 { + font-size: 1.1rem; + color: #4B5FD4; + margin-bottom: 30px; + font-weight: normal; +} + +.logcode-page .code-group { + width: 100%; + margin-bottom: 15px; +} + +.logcode-page label { + text-align: left; + display: block; + margin-bottom: 8px; + font-size: 0.9rem; + color: #333; +} + +.logcode-page .terms-group { + width: 100%; + margin: 15px 0; + text-align: left; +} + +.logcode-page .custom-checkbox-container { + display: flex; + align-items: center; + gap: 8px; + cursor: pointer; +} + +.logcode-page .custom-checkbox { + width: 18px; + height: 18px; + cursor: pointer; +} + +.logcode-page .terms-text { + font-size: 14px; + line-height: 1.4; +} + +.logcode-page .terms-text a { + color: #4B5FD4; + text-decoration: none; +} + +.logcode-page .help-text { + text-align: right; + width: 100%; +} + +.logcode-page .help-text a { + color: #6B7280; + text-decoration: none; + font-size: 0.9rem; +} + +.logcode-page .help-text a:hover { + color: #1d57b6; +} + +.logcode-page button { + border-radius: 50px; + background: linear-gradient(35deg, #1d57b6 0%, #070e1e 100%); + color: #FFFFFF; + font-size: 12px; + font-weight: bold; + padding: 12px 45px; + letter-spacing: 1px; + text-transform: uppercase; + transition: transform 80ms ease-in; + width: 100%; + margin-top: 15px; + border: none; +} + +.logcode-page button:active { + transform: scale(0.95); +} + +.logcode-page button:focus { + outline: none; +} + +/* TextField styling */ +.logcode-page .MuiTextField-root { + width: 100% !important; +} + +.logcode-page .MuiTextField-root .MuiOutlinedInput-root { + border-radius: 50px; + background-color: #F8F9FA; + height: 48px; +} + +.logcode-page .MuiTextField-root .MuiOutlinedInput-input { + color: #6B7280; + padding: 12px 18px; +} + +.logcode-page .MuiTextField-root .MuiOutlinedInput-input::placeholder { + color: #9CA3AF; + opacity: 0.8; +} + +.logcode-page .MuiTextField-root .MuiOutlinedInput-notchedOutline { + border-radius: 50px; + border: 1px solid #E5E7EB; +} + +.logcode-page .MuiTextField-root .MuiInputAdornment-root .MuiSvgIcon-root { + color: #9CA3AF; +} + +.logcode-page .MuiTextField-root .MuiOutlinedInput-root:hover .MuiOutlinedInput-notchedOutline { + border-color: #E5E7EB; +} + +.logcode-page .MuiTextField-root .MuiOutlinedInput-root.Mui-focused .MuiOutlinedInput-notchedOutline { + border-color: #E5E7EB; + border-width: 1px; +} diff --git a/frontend/src/pages/styles/Login.css b/frontend/src/pages/styles/Login.css new file mode 100644 index 00000000..4f690667 --- /dev/null +++ b/frontend/src/pages/styles/Login.css @@ -0,0 +1,368 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +html, body { + background-color: #FFFFFF; /* White background */ + margin: 0; /* Remove any default margin */ + padding: 0; /* Remove any default padding */ + height: 100%; /* Ensure it covers the full page */ + width: 100%; + } + +h1 { + font-weight: bold; + margin: 0; + color: black; +} + +h2 { + font-size: 1.2rem; + text-align: center; + color: #3f51b5; +} + +p { + font-size: 14px; + font-weight: 100; + line-height: 20px; + letter-spacing: 0.5px; + margin: 20px 0 30px; + color: black; +} + +span { + color: black; + font-size: 1rem; +} + +a { + color: #333; + font-size: 14px; + text-decoration: none; + margin: 15px 0; +} + +form button[type="submit"] { + border-radius: 20px; + border: 1px solid #0B234A; + background: #16448f; + color: #FFFFFF; + font-size: 15px; + font-weight: bold; + padding: 12px 45px; + letter-spacing: 1px; + text-transform: uppercase; + transition: transform 80ms ease-in; + width: 400px; + height: 55px; +} + +form button[type="submit"]:active { + transform: scale(0.95); +} + +form button[type="submit"]:focus { + outline: none; +} + +form button[type="submit"].ghost { + background-color: transparent; + border-color: #FFFFFF; +} + +form { + background-color: #FFFFFF; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + padding: 0 50px; + height: 100%; + text-align: center; +} + +input { + background-color: #eee; + border: none; + padding: 12px 15px; + margin: 8px 0; + width: 100%; +} + +.container { + background-color: #fff; + overflow: hidden; + margin: 0; + width: 1280px; + height: 931px; +} + +.form-container { + position: absolute; + top: 0; + height: 100%; + transition: all 0.7s ease-in-out; +} + +.sign-in-container { + left: 50%; + width: 50%; + z-index: 2; +} + +.container.right-panel-active .sign-in-container { + transform: translateX(-100%); +} + +.sign-up-container { + left: 50%; + width: 50%; + opacity: 0; + z-index: 1; +} + +.container.right-panel-active .sign-up-container { + transform: translateX(-100%); + opacity: 1; + z-index: 5; + animation: show 0.7s; +} + +@keyframes show { + 0%, 49.99% { + opacity: 0; + z-index: 1; + } + + 50%, 100% { + opacity: 1; + z-index: 5; + } +} + +.overlay-container { + position: absolute; + top: 0; + left: 0; + width: 50%; + height: 100%; + overflow: hidden; + transition: transform 0.6s ease-in-out; + z-index: 100; +} + +.container.right-panel-active .overlay-container { + transform: translateX(100%); +} + +.overlay { + background: #0B234A; /* Fallback solid color */ + background: -webkit-linear-gradient(180deg, #0B234A 0%, #162A5B 100%); /* For Chrome and Safari */ + background: linear-gradient(35deg, #1d57b6 0%, #070e1e 100%); /* Standard syntax */ + background-repeat: no-repeat; + background-size: cover; + background-position: 0 0; + color: #FFFFFF; + position: relative; + left: -100%; + height: 100%; + width: 200%; + transform: translateX(0); + transition: transform 0.6s ease-in-out; +} + + +.container.right-panel-active .overlay { + transform: translateX(50%); +} + +.overlay-panel { + position: absolute; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + padding: 0 40px; + text-align: center; + top: 0; + height: 100%; + width: 50%; + transform: translateX(0); + transition: transform 0.6s ease-in-out; + padding-top: 50px; +} + +.overlay-left { + transform: translateX(-20%); +} + +.container.right-panel-active .overlay-left { + transform: translateX(0); +} + +.overlay-right { + right: 0; + transform: translateX(0); +} + +.container.right-panel-active .overlay-right { + transform: translateX(20%); +} + +.social-container { + margin: 20px 0; +} + +.username-group { + margin-top: 3rem; + display: flex; + flex-direction: column; + } + + label { + font-size: 1.1rem; + color: #333; + margin-bottom: 0.3rem; + align-self: flex-start; +} + +.username-group .MuiTextField-root { + width: 400px !important; +} + .password-group { + margin-top: 2rem; + display: flex; + flex-direction: column; + } + + label { + font-size: 0.9rem; + color: #333; + margin-bottom: 0.3rem; + } + + .password-group .MuiTextField-root { + width: 400px !important; +} + + .forgot-password { + display: flex; + justify-content: flex-end; + margin-bottom: 1.5rem; + width: 400px; +} + +.forgot-password a { + color: #666; + text-decoration: none; + font-size: 0.9rem; +} + +.forgot-password a:hover { + color: #000; +} + + .signup-link { + margin-top: 1rem; + text-align: center; + font-size: 0.9rem; + } + + .signup-link a { + font-size: 1rem; + color: #3f51b5; + text-decoration: none; + font-weight: bold; + } + + .signup-link a:hover { + text-decoration: underline; + } + + .overlay-panel img { + width: 450px !important; + margin-bottom: 2rem; +} + +.sign-up-container .username-group { + margin-top: 3rem; + display: flex; + flex-direction: column; +} + +.sign-up-container .password-group { + margin-top: 1.2rem; + margin-bottom: 4rem; + display: flex; + flex-direction: column; +} + +.sign-up-container .email-group { + margin-top: 1.2rem; + display: flex; + flex-direction: column; + width: 400px; +} + +.logo-container { + position: absolute; + top: 2rem; + left: 50%; + transform: translateX(-50%); + z-index: 101; +} + +.logo-container img { + width: 250px; +} + +/* TextField Container Styling */ +.MuiTextField-root { + width: 400px !important; +} + +/* Main TextField Styling */ +.MuiTextField-root .MuiOutlinedInput-root { + border-radius: 50px; + background-color: #fff; +} + +/* Input Field Styling */ +.MuiTextField-root .MuiOutlinedInput-input { + color: #6B7280; + padding: 15px 5px; +} + +/* Placeholder Text */ +.MuiTextField-root .MuiOutlinedInput-input::placeholder { + color: #9CA3AF; + opacity: 0.8; +} + +/* Border Styling */ +.MuiTextField-root .MuiOutlinedInput-notchedOutline { + border-radius: 20px; + border: 1px solid #E5E7EB; +} + +/* Focus State */ +.MuiTextField-root .MuiOutlinedInput-root.Mui-focused .MuiOutlinedInput-notchedOutline { + border-color: #E5E7EB; + border-width: 1px; +} + +/* Icon Styling */ +.MuiTextField-root .MuiInputAdornment-root .MuiSvgIcon-root { + color: #9CA3AF; + font-size: 1.4rem;; +} + +/* Label Styling */ +label { + color: #6B7280; + font-size: 0.9rem; + margin-bottom: 0.3rem; +} \ No newline at end of file diff --git a/transcription/requirements.txt b/transcription/requirements.txt index 03feafad..0cb346b0 100644 --- a/transcription/requirements.txt +++ b/transcription/requirements.txt @@ -1,7 +1,7 @@ Pillow==11.0.0 Requests==2.32.3 supervision==0.24.0 -torch==2.5.1 +torch==2.1.2 transformers==4.46.1 einops timm From ec54f9b9b459dd85fb5a3efdf655fbeab011def1 Mon Sep 17 00:00:00 2001 From: naheyansheikh Date: Sat, 23 Nov 2024 21:39:16 -0800 Subject: [PATCH 2/6] New Login Page --- .../components/TranscribedTables/Table1.css | 188 ------------------ .../components/TranscribedTables/Table1.jsx | 123 ------------ .../components/TranscribedTables/Table2.css | 180 ----------------- .../components/TranscribedTables/Table2.jsx | 77 ------- frontend/src/pages/LogCode.jsx | 8 +- frontend/src/pages/login/Login.jsx | 2 +- 6 files changed, 5 insertions(+), 573 deletions(-) delete mode 100644 frontend/src/components/TranscribedTables/Table1.css delete mode 100644 frontend/src/components/TranscribedTables/Table1.jsx delete mode 100644 frontend/src/components/TranscribedTables/Table2.css delete mode 100644 frontend/src/components/TranscribedTables/Table2.jsx diff --git a/frontend/src/components/TranscribedTables/Table1.css b/frontend/src/components/TranscribedTables/Table1.css deleted file mode 100644 index 5f99ca4d..00000000 --- a/frontend/src/components/TranscribedTables/Table1.css +++ /dev/null @@ -1,188 +0,0 @@ -.table-container { - width: 100%; - max-width: 1200px; - height: 100%; - margin: 0 auto; - border-radius: 12px; - overflow: hidden; - background: white; - } - - /* Header Styles */ - .header-section { - display: grid; - grid-template-columns: 1fr 1fr 1fr 1fr; - background: #2B3B56; - color: white; - } - - .header-cell { - padding: 12px; - border-right: 1px solid rgba(255, 255, 255, 0.2); - } - - /* Info Row Styles */ - .info-section { - display: grid; - grid-template-columns: 1fr 1fr 1fr 1fr; - border-bottom: 1px solid #ddd; - color: black; - } - - .info-cell { - padding: 12px; - border-right: 1px solid #ddd; - } - - .type-cell { - margin: 4px; - padding: 8px; - } - - /* Patient Section */ - .patient-section { - display: grid; - grid-template-columns: 513px 1fr; - color:black; - border-bottom: 1px solid #ddd; - height: 250px; - } - - .info-pair { - display: grid; - grid-template-columns: 258px 1fr; - border-bottom: 1px solid #ddd; - } - - .left-column { - width: 511px; - } - - .label { - background: #2B3B56; - color: white; - padding: 12px; - width: 233px; - } - - .value { - padding: 12px; - border-right: 1px solid #ddd; - width: 230px; - } - - /* Right Column */ - .indication-header { - background: #2B3B56; - color: white; - padding: 12px; - } - - .indication-section { - height: 147px; - } - - .indication-text { - display: flex; /* Enable Flexbox */ - justify-content: center; /* Horizontally center the text */ - align-items: center; /* Vertically center the text */ - height: 100px; /* Ensure the container height fills its parent */ - text-align: center; /* Keep the text centered horizontally */ - box-sizing: border-box; /* Ensure padding is included in the height/width calculation */ - } - - /* Medical Section */ - .medical-section { - display: grid; - grid-template-columns: 408px 1fr 1fr; - } - - .medical-header { - background: #2B3B56; - color: white; - padding: 12px; - border-bottom: 1px solid #ddd; - border-right: 1px solid #ddd; - } - - .condition-row { - display: grid; - grid-template-columns: repeat(2, 1fr); - border-bottom: 1px solid #ddd; - color: black; - - } - - .condition { - color: black; - padding: 12px; - width: 180px; - border-right: 1px solid #ddd; - } - - .meds-text, .allergies-text { - border-right: 1px solid #ddd; - padding: 12px; - } - - .pmhx-column { - width: 408px; - } - - .social-section { - display: flex; /* Use Flexbox to arrange the items in a row */ - justify-content: space-between; /* Add space between the items */ - align-items: center; /* Align vertically centered */ - height: 0px; - } - - .social-header { - border: 2px dashed #2B3B56; /* Styling for the header */ - color: white; - background: #2B3B56; - padding: 11px; - width: 120px; /* Fixed width to match the example */ - margin-top: 50px; /* Remove the margin to avoid spacing issues */ - text-align: center; /* Center the text inside the header */ - } - - .social-row { - display: flex; /* Arrange the cells side-by-side */ - justify-content: space-between; /* Space between the cells */ - align-items: center; /* Vertically align content */ - padding: 7px; - border: 1px solid #ddd; /* Subtle border for the row */ - background: #fff; /* White background */ - flex: 1; /* Take up remaining horizontal space next to the header */ - margin-top: 50px; /* Remove the margin to avoid spacing issues */ - } - - .social-cell { - font-size: 14px; - color: #2B3B56; - text-align: left; /* Align text to the left */ - padding: 7px; - white-space: nowrap; /* Prevent text wrapping */ - } - - .c-value { - padding: 12px; - border-right: 1px solid #ddd; - width: 180px; - } - - .meds-text { - color: black; - height: 172px; - display: flex; - align-items: center; - border-bottom: 1px solid #ddd; - } - - .allergies-text { - color: black; - height: 172px; - display: flex; - align-items: center; - border-bottom: 1px solid #ddd; - } \ No newline at end of file diff --git a/frontend/src/components/TranscribedTables/Table1.jsx b/frontend/src/components/TranscribedTables/Table1.jsx deleted file mode 100644 index 5540c393..00000000 --- a/frontend/src/components/TranscribedTables/Table1.jsx +++ /dev/null @@ -1,123 +0,0 @@ -import React from "react"; -import "./Table1.css"; -import EditIcon from "@mui/icons-material/Edit"; - -const Table1 = () => { - return ( -
-
-

- Your photos have been successfully transcribed! -
- Please review and edit the information as needed. -

-
-
- -
- -
-
Case No.
-
Type:
-
Surgeon:
-
OR Date:
-
- -
-
1234567
-
<insert type>
-
<surgeon name>
-
<MM/YY/DD>
-
- -
-
-
-
Patient ID:
-
<patient ID>
-
-
-
Age:
-
30
-
-
-
Gender:
-
M
-
-
-
HPI:
-
<hpi>
-
-
- -
-
-
- Indication for Surgery/Reason for Referral: -
-
- Lorem ipsum dolor sit amet consectetur. -
-
-
-
Social:
-
-
- EtOH: None -
-
- Drugs: Occasional -
-
- Smoking: Quit -
-
-
-
-
- -
-
-
PMHx
-
-
HTN
-
<##>
-
-
-
DM II
-
<##>
-
-
-
DLP
-
<##>
-
-
-
CVA
-
<##>
-
-
- -
-
Meds (last dose)
-
- Lorem ipsum dolor sit amet consectetur. Nisi nec ultricies commodo. -
-
- -
-
Allergies
-
- Lorem ipsum dolor sit amet consectetur. Et ac porta turpis rutrum - pellentesque id vulputate hendrerit. Venenatis elementum sagittis - luctus urna. -
-
-
-
- ); -}; - -export default Table1; diff --git a/frontend/src/components/TranscribedTables/Table2.css b/frontend/src/components/TranscribedTables/Table2.css deleted file mode 100644 index e059631f..00000000 --- a/frontend/src/components/TranscribedTables/Table2.css +++ /dev/null @@ -1,180 +0,0 @@ -.table-container { - width: 90%; - max-width: 1200px; - margin: 0 auto; - border-radius: 12px; - overflow: hidden; - background: white; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); - margin-top: 30px; - } - - .header-row { - display: grid; - grid-template-columns: 1.7fr 1.6fr 1fr 1fr 1fr; - background: #2b3b56; - color: white; - text-align: center; - } - - .header-cell2 { - padding: 12px; - border-right: 1px solid rgba(255, 255, 255, 0.2); - background-color: white; - color: black; - } - - .exam-cell { - padding: 12px; - border-right: 1px solid rgba(255, 255, 255, 0.2); - height: 34px; - } - - .info-row { - display: grid; - grid-template-columns: 1.5fr 1.75fr 1fr 1fr 1fr; - text-align: center; - height: 80px; - } - - .info-cell { - padding: 12px; - border-right: 1px solid #ddd; - } - - .investigations-section { - border-top: 1px solid #ddd; - } - - .investigations-content .row { - display: grid; - grid-template-columns: 0.2fr 0.2fr 0.5fr; - width: 600px; - border-bottom: 1px solid #ddd; - } - - .invx-row { - display: grid; - grid-template-columns: 0.201fr 0.2fr 0.5fr; - width: 600px; - } - - .rows { - display: grid; - grid-template-columns: 0.29fr 1fr; - background-color: white; - border-bottom: 1px solid #ddd; - border-top: 1px solid #ddd; - } - - .cath-row { - display: grid; - grid-template-columns: 1.1fr 1fr; - background-color: #2B3B56; - border-bottom: 1px solid #ddd; - } - - .investigations-content .cell { - padding: 12px; - text-align: left; - border-right: 1px solid #ddd; - color: black; - } - - .cells { - padding: 12px; - text-align: left; - border-right: 1px solid #ddd; - color: black; - font-size: 15px; - } - - .cath-cell { - padding: 12px; - text-align: left; - border-right: 1px solid #ddd; - color: white; - font-size: 19px; - } - - .cath-section, .ct-section { - text-align: center; - padding: 12px; - width: 518px; - height: 500px; - border-right: 1px solid #ddd; - } - - .physical-section { - display: flex; /* Use Flexbox to arrange the items in a row */ - justify-content: space-between; /* Add space between the items */ - align-items: center; /* Align vertically centered */ - height: 0px; - } - - .physical-row { - display: flex; /* Arrange the cells side-by-side */ - justify-content: space-between; /* Space between the cells */ - align-items: center; /* Vertically align content */ - padding: 1.3rem; - border: 1px solid #ddd; /* Subtle border for the row */ - background: #fff; /* White background */ - flex: 1; /* Take up remaining horizontal space next to the header */ - margin-top: 49px; /* Remove the margin to avoid spacing issues */ - width: 200px; - } - - .physical-cell { - font-size: 14px; - color: #2B3B56; - text-align: left; /* Align text to the left */ - white-space: nowrap; /* Prevent text wrapping */ - } - - .investigations-header{ - display: grid; - background-color: #2B3B56; - grid-template-columns: 1.1fr; - text-align: left; - height: 50px; - width: 539px; - } - - .right-section-only { - grid-column: 3 / 6; /* Span from the 3rd to the last column */ - text-align: center; - border-left: 1px solid #ddd; - color: black; - height: 80px; - } - - .right-section-only-2 { - grid-column: 3 / 6; /* Span from the 3rd to the last column */ - text-align: center; - color: black; - border-bottom: 1px solid #ddd; - height: 154px; - } - - .right-section-only-3 { - grid-column: 3 / 6; /* Span from the 3rd to the last column */ - text-align: center; - color: black; - border-bottom: 1px solid #ddd; - height: 95px; - } - - .left-placeholder { - grid-column: 1 / 3; /* Placeholder for left columns */ - text-align: center; - color: black; - background-color: white; /* Optional background for distinction */ - } - - .left-placeholder-2 { - grid-column: 1 / 3; /* Placeholder for left columns */ - text-align: center; - color: white; - height: 55px; - background-color: #2B3B56; /* Optional background for distinction */ - } \ No newline at end of file diff --git a/frontend/src/components/TranscribedTables/Table2.jsx b/frontend/src/components/TranscribedTables/Table2.jsx deleted file mode 100644 index 527081ff..00000000 --- a/frontend/src/components/TranscribedTables/Table2.jsx +++ /dev/null @@ -1,77 +0,0 @@ -import React from "react"; -import "./Table2.css"; - -const Table2 = () => { - return ( -
- {/* Header Row */} -
-
EXAM
-
-
-
- ___ kg -
-
- ___ cm -
-
- ___ m2 -
-
-
-
Veins
-
Allen Test
-
Pulses:
-
- - {/* Exam Content */} -
-
-

...

-
-
- {/* Content for the right side */} -

Diagrams.

-
-
-

INVx

- {/* Investigations Section */} -
-
-
-
Echo
-
EF ___%
-
RVFx
-
-
-
WMA
-
-
-
Aorta
-
-
-
Valves
-
-
-
-
-
- {/* Content for the right side */} -

Diagrams.

-
-
- {/* Content for the right side */} -

CXR

-
-
- - {/* CXR and CT Sections */} -
-
-
-
- ); -}; - -export default Table2; diff --git a/frontend/src/pages/LogCode.jsx b/frontend/src/pages/LogCode.jsx index 196ffd7c..84f530af 100644 --- a/frontend/src/pages/LogCode.jsx +++ b/frontend/src/pages/LogCode.jsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import { useState } from "react"; import { useNavigate } from "react-router-dom"; import { TextField, InputAdornment } from "@mui/material"; import { Article } from "@mui/icons-material"; @@ -6,7 +6,7 @@ import Logo from "../assets/images/logo.png"; import "./styles/LogCode.css"; const LogCode = () => { - const [logbookCode, setLogbookCode] = useState(""); + const [setLogbookCode] = useState(""); const [termsAccepted, setTermsAccepted] = useState(false); const [loading, setLoading] = useState(false); const navigate = useNavigate(); @@ -20,7 +20,7 @@ const LogCode = () => { setLoading(true); await new Promise((resolve) => setTimeout(resolve, 1000)); navigate("/"); - } catch (error) { + } catch { alert("Something went wrong. Please try again."); } finally { setLoading(false); @@ -81,7 +81,7 @@ const LogCode = () => { I have read and agree to{" "} e.preventDefault()}> - FlowLeaflet's Terms and Conditions + FlowLeaflet's Terms and Conditions {" "} and{" "} e.preventDefault()}> diff --git a/frontend/src/pages/login/Login.jsx b/frontend/src/pages/login/Login.jsx index 220e5a4b..01ad7adf 100644 --- a/frontend/src/pages/login/Login.jsx +++ b/frontend/src/pages/login/Login.jsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from "react"; +import { useState, useEffect } from "react"; import { Link, useNavigate } from "react-router-dom"; import { useAuth } from "../../contexts/AuthContext"; import { TextField, InputAdornment, IconButton } from "@mui/material"; From fbb58931718e068ff88f23220f20f78eaae267f7 Mon Sep 17 00:00:00 2001 From: naheyansheikh Date: Tue, 26 Nov 2024 21:38:12 -0800 Subject: [PATCH 3/6] Implement changes requested in draft PR --- frontend/src/assets/images/ShopLogBooks.png | Bin 0 -> 50935 bytes frontend/src/assets/images/logbooks.png | Bin 0 -> 83258 bytes frontend/src/assets/images/logo-small.png | Bin 0 -> 6273 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 frontend/src/assets/images/ShopLogBooks.png create mode 100644 frontend/src/assets/images/logbooks.png create mode 100644 frontend/src/assets/images/logo-small.png diff --git a/frontend/src/assets/images/ShopLogBooks.png b/frontend/src/assets/images/ShopLogBooks.png new file mode 100644 index 0000000000000000000000000000000000000000..361ad31cfaf3cd43bf0bf31232e6f9313c873725 GIT binary patch literal 50935 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�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 zℜ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 A8vp-KVZQHhO+%~(n_rsqbX684~%$ai@ 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 literal 0 HcmV?d00001 diff --git a/frontend/src/assets/images/logo-small.png b/frontend/src/assets/images/logo-small.png new file mode 100644 index 0000000000000000000000000000000000000000..aa03e20979e1d2bf9814bc82dc1f228719325a5d GIT binary patch literal 6273 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 Date: Tue, 26 Nov 2024 21:41:52 -0800 Subject: [PATCH 4/6] Refactored Homepage --- .gitignore | 1 + frontend/package-lock.json | 9 + frontend/package.json | 1 + frontend/src/components/Buttons/CLButtons.jsx | 68 +++ .../components/Buttons/CreateNewLogButton.css | 4 - .../components/Buttons/CreateNewLogButton.jsx | 23 - .../src/components/Buttons/HomeButton.jsx | 11 - .../components/Buttons/LogHistoryButton.css | 4 - .../components/Buttons/LogHistoryButton.jsx | 23 - .../src/components/Buttons/SignInButton.css | 10 - .../src/components/Buttons/SignInButton.jsx | 20 - .../src/components/Buttons/SignOutButton.css | 10 - .../src/components/Buttons/SignOutButton.jsx | 24 - .../src/components/Buttons/SignUpButton.css | 4 - .../src/components/Buttons/SignUpButton.jsx | 15 - frontend/src/components/Navbar/Navbar.css | 117 +++- frontend/src/components/Navbar/Navbar.jsx | 119 ++-- frontend/src/components/inputs/CLInputs.jsx | 29 + frontend/src/index.css | 32 +- frontend/src/main.jsx | 8 +- frontend/src/pages/Dashboard.jsx | 40 -- frontend/src/pages/Homepage.jsx | 194 ++++++- frontend/src/pages/LogCode.jsx | 22 +- frontend/src/pages/login/Login.jsx | 38 +- frontend/src/pages/styles/Dashboard.css | 20 - frontend/src/pages/styles/Homepage.css | 518 +++++++++++++++++- frontend/src/pages/styles/Login.css | 31 +- transcription/requirements.txt | 2 +- 28 files changed, 1045 insertions(+), 352 deletions(-) create mode 100644 frontend/src/components/Buttons/CLButtons.jsx delete mode 100644 frontend/src/components/Buttons/CreateNewLogButton.css delete mode 100644 frontend/src/components/Buttons/CreateNewLogButton.jsx delete mode 100644 frontend/src/components/Buttons/HomeButton.jsx delete mode 100644 frontend/src/components/Buttons/LogHistoryButton.css delete mode 100644 frontend/src/components/Buttons/LogHistoryButton.jsx delete mode 100644 frontend/src/components/Buttons/SignInButton.css delete mode 100644 frontend/src/components/Buttons/SignInButton.jsx delete mode 100644 frontend/src/components/Buttons/SignOutButton.css delete mode 100644 frontend/src/components/Buttons/SignOutButton.jsx delete mode 100644 frontend/src/components/Buttons/SignUpButton.css delete mode 100644 frontend/src/components/Buttons/SignUpButton.jsx create mode 100644 frontend/src/components/inputs/CLInputs.jsx delete mode 100644 frontend/src/pages/Dashboard.jsx delete mode 100644 frontend/src/pages/styles/Dashboard.css diff --git a/.gitignore b/.gitignore index 2969bf68..5ac6d0c4 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ venv/ *.pyz *.pyw node_modules +frontend/src/assets/images/* \ No newline at end of file diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 25e3d790..6813c886 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -11,6 +11,7 @@ "dependencies": "^0.0.1", "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", + "@heroicons/react": "^2.2.0", "@mui/icons-material": "^6.1.2", "@mui/material": "^6.1.2", "@supabase/supabase-js": "^2.45.5", @@ -2485,6 +2486,14 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@heroicons/react": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.2.0.tgz", + "integrity": "sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ==", + "peerDependencies": { + "react": ">= 16 || ^19.0.0-rc" + } + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", diff --git a/frontend/package.json b/frontend/package.json index 9894ef85..d6e63ca2 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -13,6 +13,7 @@ "dependencies": { "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", + "@heroicons/react": "^2.2.0", "@mui/icons-material": "^6.1.2", "@mui/material": "^6.1.2", "@supabase/supabase-js": "^2.45.5", diff --git a/frontend/src/components/Buttons/CLButtons.jsx b/frontend/src/components/Buttons/CLButtons.jsx new file mode 100644 index 00000000..515ae552 --- /dev/null +++ b/frontend/src/components/Buttons/CLButtons.jsx @@ -0,0 +1,68 @@ +const DEFAULT_HEIGHT = "54px"; +const DEFAULT_WIDTH = "fit-content"; +const DEFAULT_BORDER_RADIUS = "20px"; +const DEFAULT_ON_CLICK = () => {}; + +// PRIMARY specific styles +const PRIMARY_COLOR = "#F7FAFF"; +const PRIMARY_BACKGROUND_COLOR = "#244B94"; + +// SECONDARY specific styles +const SECONDARY_COLOR = "#4F607E"; +const SECONDARY_BACKGROUND_COLOR = "#F7FAFF"; +const SECONDARY_BORDER = "1px solid #9AB0E1"; + +/** + * PRIMARY variant of the clinical logging button. + * Should work out of the box for most use cases (with the exception of onClick which does nothing by default). + * The height and width are customizable if necessary. + */ +export const CLButtonPrimary = ({ + children, + height = DEFAULT_HEIGHT, + width = DEFAULT_WIDTH, + onClick = DEFAULT_ON_CLICK, +}) => { + return ( + + ); +}; + +/** + * SECONDARY variant of the clinical logging button. + * Should work out of the box for most use cases (with the exception of onClick which does nothing by default). + * The height and width are customizable if necessary. + */ +export const CLButtonSecondary = ({ + children, + height = DEFAULT_HEIGHT, + width = DEFAULT_WIDTH, + onClick = DEFAULT_ON_CLICK, +}) => { + return ( + + ); +}; diff --git a/frontend/src/components/Buttons/CreateNewLogButton.css b/frontend/src/components/Buttons/CreateNewLogButton.css deleted file mode 100644 index 3831f023..00000000 --- a/frontend/src/components/Buttons/CreateNewLogButton.css +++ /dev/null @@ -1,4 +0,0 @@ -.add-icon { - margin-right: 9px; - vertical-align: -6px; -} \ No newline at end of file diff --git a/frontend/src/components/Buttons/CreateNewLogButton.jsx b/frontend/src/components/Buttons/CreateNewLogButton.jsx deleted file mode 100644 index f39087fb..00000000 --- a/frontend/src/components/Buttons/CreateNewLogButton.jsx +++ /dev/null @@ -1,23 +0,0 @@ -import AddIcon from "@mui/icons-material/Add"; -import { useNavigate } from "react-router-dom"; -import "./CreateNewLogButton.css"; - -export default function CreateNewLogButton({ variant }) { - const navigate = useNavigate(); - - const handleCreateNewLog = () => { - navigate("/newLog"); - }; - - return ( - - ); -} diff --git a/frontend/src/components/Buttons/HomeButton.jsx b/frontend/src/components/Buttons/HomeButton.jsx deleted file mode 100644 index f7a8e407..00000000 --- a/frontend/src/components/Buttons/HomeButton.jsx +++ /dev/null @@ -1,11 +0,0 @@ -import { useNavigate } from "react-router-dom"; - -export default function HomeButton() { - const navigate = useNavigate(); - - const handleHomeClick = () => { - navigate("/dashboard"); - }; - - return ; -} diff --git a/frontend/src/components/Buttons/LogHistoryButton.css b/frontend/src/components/Buttons/LogHistoryButton.css deleted file mode 100644 index f9a21a14..00000000 --- a/frontend/src/components/Buttons/LogHistoryButton.css +++ /dev/null @@ -1,4 +0,0 @@ -.history-icon { - margin-right: 9px; - vertical-align: -6px; -} \ No newline at end of file diff --git a/frontend/src/components/Buttons/LogHistoryButton.jsx b/frontend/src/components/Buttons/LogHistoryButton.jsx deleted file mode 100644 index 84954962..00000000 --- a/frontend/src/components/Buttons/LogHistoryButton.jsx +++ /dev/null @@ -1,23 +0,0 @@ -import { useNavigate } from "react-router-dom"; -import HistoryIcon from "@mui/icons-material/History"; -import "./LogHistoryButton.css"; - -export default function LogHistoryButton({ variant }) { - const navigate = useNavigate(); - - const handleViewHistory = () => { - navigate("/logHistory"); - }; - - return ( - - ); -} diff --git a/frontend/src/components/Buttons/SignInButton.css b/frontend/src/components/Buttons/SignInButton.css deleted file mode 100644 index 3caa433d..00000000 --- a/frontend/src/components/Buttons/SignInButton.css +++ /dev/null @@ -1,10 +0,0 @@ -.sign-in-button-container { - display: flex; - gap: 9px; - } - -.login-icon { - margin-left: 8px; - font-size: 1.2rem; - vertical-align: middle; -} \ No newline at end of file diff --git a/frontend/src/components/Buttons/SignInButton.jsx b/frontend/src/components/Buttons/SignInButton.jsx deleted file mode 100644 index 5ddb730a..00000000 --- a/frontend/src/components/Buttons/SignInButton.jsx +++ /dev/null @@ -1,20 +0,0 @@ -import { useNavigate } from "react-router-dom"; -import LoginIcon from "@mui/icons-material/Login"; -import "./SignInButton.css"; - -export default function SignInButton() { - const navigate = useNavigate(); - - const handleSignInClick = () => { - navigate("/login"); - }; - - return ( -
- -
- ); -} diff --git a/frontend/src/components/Buttons/SignOutButton.css b/frontend/src/components/Buttons/SignOutButton.css deleted file mode 100644 index 6f6a4b22..00000000 --- a/frontend/src/components/Buttons/SignOutButton.css +++ /dev/null @@ -1,10 +0,0 @@ -.sign-out-button-container { - display: flex; - gap: 9px; - } - -.sign-out-icon { - margin-left: 8px; - font-size: 1.2rem; - vertical-align: middle; -} \ No newline at end of file diff --git a/frontend/src/components/Buttons/SignOutButton.jsx b/frontend/src/components/Buttons/SignOutButton.jsx deleted file mode 100644 index 65cd7b9b..00000000 --- a/frontend/src/components/Buttons/SignOutButton.jsx +++ /dev/null @@ -1,24 +0,0 @@ -import { useAuth } from "../../contexts/AuthContext"; -import LogoutIcon from "@mui/icons-material/Logout"; -import "./SignOutButton.css"; - -export default function SignOutButton() { - const { logout } = useAuth(); - - const handleSignOutClick = async () => { - try { - await logout(); - } catch { - console.log("Failed to logout"); - } - }; - - return ( -
- -
- ); -} diff --git a/frontend/src/components/Buttons/SignUpButton.css b/frontend/src/components/Buttons/SignUpButton.css deleted file mode 100644 index 512fad28..00000000 --- a/frontend/src/components/Buttons/SignUpButton.css +++ /dev/null @@ -1,4 +0,0 @@ -.sign-up-button-container { - display: flex; - gap: 8px; -} \ No newline at end of file diff --git a/frontend/src/components/Buttons/SignUpButton.jsx b/frontend/src/components/Buttons/SignUpButton.jsx deleted file mode 100644 index 6be86bd7..00000000 --- a/frontend/src/components/Buttons/SignUpButton.jsx +++ /dev/null @@ -1,15 +0,0 @@ -import { useNavigate } from "react-router-dom"; -import "./SignUpButton.css"; - -export default function SignUpButton() { - const navigate = useNavigate(); - - const handleSignUpClick = () => { - navigate("/signup"); - }; - return ( -
- -
- ); -} diff --git a/frontend/src/components/Navbar/Navbar.css b/frontend/src/components/Navbar/Navbar.css index 49db6121..d7e5b159 100644 --- a/frontend/src/components/Navbar/Navbar.css +++ b/frontend/src/components/Navbar/Navbar.css @@ -1,21 +1,108 @@ .navbar { display: flex; + flex-direction: column; + position: absolute; + top: 28%; + left: 30px; + height: 420px; + width: 65px; justify-content: space-between; align-items: center; - padding: 16px; - width: 100vw; - height: 80px; - background-color: #242424; - position: fixed; - top: 0; - left: 0; - right: 0; - border-bottom: 2px solid rgba(255, 255, 255, 0.3); -} - -.nav-buttons-container { +} + +.nav-button-container { + height: 305px; + width: 65px; + padding: 15px 0 15px 0; + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: center; + background-color: white; + border-radius: 30px; + box-shadow: 0px 0px 10px #CDD8F0; +} + +.nav-button { + background-color: transparent; +} + +.nav-button-icon-container { + height: 50px; + width: 50px; + display: flex; + justify-content: center; + align-items: center; + border-radius: 25px; + color: #244B94; + background-color: #CDD8F0; + transition: all 0.2s ease; +} + +.nav-button-icon-container:hover { + background-color: #244B94; + color: #F7FAFF; + box-shadow: 0 4px 8px rgba(36, 75, 148, 0.4); +} + +.nav-button-icon-container-selected { + height: 50px; + width: 50px; display: flex; - gap: 8px; - margin-top: 10px; - margin-right: 30px; + justify-content: center; + align-items: center; + border-radius: 25px; + color: #F7FAFF; + background-color: #244B94; + box-shadow: 0 4px 8px rgba(36, 75, 148, 0.4); +} + +.nav-button-icon-container:hover { + background-color: #244B94; + color: white; +} + +.nav-button-text { + margin-top: 2px; + color: black; + font-weight: 400; + text-align: center; + transition: all 0.2s ease; + font-size: 11px; +} + +.nav-button-text-selected { + margin-top: 2px; + color: #244B94; + font-weight: bold; + text-align: center; + font-size: 11px; +} + +.logout-button { + height: 50px; + width: 50px; + display: flex; + justify-content: center; + align-items: center; + border-radius: 25px; + color: #244B94; + background-color: white; + box-shadow: 0px 0px 10px #CDD8F0; + transition: all 0.2s ease; + border: none; /* Added to remove default button border */ + cursor: pointer; +} + +.logout-button:hover { + background-color: #244B94; + color: #F7FAFF; + box-shadow: 0 4px 8px rgba(36, 75, 148, 0.4); +} + +.icon { + height: 24px; + width: 24px; + color: inherit; + transition: color 0.2s ease; } \ No newline at end of file diff --git a/frontend/src/components/Navbar/Navbar.jsx b/frontend/src/components/Navbar/Navbar.jsx index 9666a7a4..dbabf415 100644 --- a/frontend/src/components/Navbar/Navbar.jsx +++ b/frontend/src/components/Navbar/Navbar.jsx @@ -1,51 +1,84 @@ -import Logo from "../Logo/Logo"; -import HomeButton from "../Buttons/HomeButton"; -import CreateNewLogButton from "../Buttons/CreateNewLogButton"; -import LogHistoryButton from "../Buttons/LogHistoryButton"; -import SignInButton from "../Buttons/SignInButton"; -import { useAuth } from "../../contexts/AuthContext"; +"use state"; +import { useState } from "react"; +import { useNavigate } from "react-router-dom"; import "./Navbar.css"; -import SignOutButton from "../Buttons/SignOutButton"; - -export default function Navbar({ variant }) { - return ( -
- -
- ); -} - -function NavbarComponent({ variant }) { - return ( -
- - -
- ); -} +import { + HomeIcon, + BookOpenIcon, + ClockIcon, + ArrowLeftStartOnRectangleIcon, +} from "@heroicons/react/24/outline"; +import { useAuth } from "../../contexts/AuthContext"; -function NavButtons({ variant }) { - return ( -
- {variant === "homepage" ? ( - - ) : ( - <> - - - - - )} -
- ); -} +export default function Navbar() { + const [selected, setSelected] = useState("home"); + const { logout } = useAuth(); + const navigate = useNavigate(); -function Buttons() { - const { session } = useAuth(); + const handleClickLogout = async () => { + try { + await logout(); + navigate("/login"); + } catch (error) { + console.error("Logout failed:", error); + } + }; return ( -
- {session ? : } +
+
+ + + +
+
); } diff --git a/frontend/src/components/inputs/CLInputs.jsx b/frontend/src/components/inputs/CLInputs.jsx new file mode 100644 index 00000000..4b05745c --- /dev/null +++ b/frontend/src/components/inputs/CLInputs.jsx @@ -0,0 +1,29 @@ +import { DemoContainer } from "@mui/x-date-pickers/internals/demo"; +import { AdapterDayjs } from "@mui/x-date-pickers/AdapterDayjs"; +import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider"; +import { DatePicker } from "@mui/x-date-pickers/DatePicker"; + +// const DEFAULT_HEIGHT = "67px" +// const DEFAULT_WIDTH = "100%" +// const DEFAULT_PADDING = "" +// const DEFAULT_BORDER = "" +// const DEFAULT_BORDER_RADIUS = "" +// const DEFAULT_BACKGROUND_COLOR = "transparent" + +export const CLTextInput = () => { + return ; +}; + +export const CLNumberInput = () => { + return ; +}; + +export const CLDatePicker = () => { + return ( + + + + + + ); +}; diff --git a/frontend/src/index.css b/frontend/src/index.css index d7ff7205..5744195e 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -4,8 +4,8 @@ font-weight: 400; color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; + color: #1E1E1E; + background-color: #F7FAFF; font-synthesis: none; text-rendering: optimizeLegibility; @@ -31,37 +31,9 @@ h1 { } button { - border-radius: 8px; border: 1px solid transparent; - padding: 0.6em 1.2em; font-size: 1em; font-weight: 500; font-family: inherit; - background-color: #1a1a1a; cursor: pointer; - transition: border-color 0.25s; -} - -button:hover { - border-color: #646cff; -} - -button:focus, -button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; -} - -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - - a:hover { - color: #747bff; - } - - button { - background-color: #f9f9f9; - } } \ No newline at end of file diff --git a/frontend/src/main.jsx b/frontend/src/main.jsx index 7f8b0aae..04a4f6da 100644 --- a/frontend/src/main.jsx +++ b/frontend/src/main.jsx @@ -6,7 +6,7 @@ import App from "./App.jsx"; import Login from "./pages/login/Login.jsx"; import NotFound from "./pages/not_found/NotFound.jsx"; import Home from "./pages/Homepage.jsx"; -import Dashboard from "./pages/Dashboard.jsx"; +import Homepage from "./pages/Homepage.jsx"; import NewLog from "./pages/NewLog.jsx"; import LogHistory from "./pages/LogHistory.jsx"; import UploadPhotos from "./pages/UploadPhoto.jsx"; @@ -19,15 +19,15 @@ createRoot(document.getElementById("root")).render( } /> - } /> - } /> }> } /> - } /> + } /> } /> } /> } /> } /> + } /> + } /> } /> diff --git a/frontend/src/pages/Dashboard.jsx b/frontend/src/pages/Dashboard.jsx deleted file mode 100644 index 2156cd07..00000000 --- a/frontend/src/pages/Dashboard.jsx +++ /dev/null @@ -1,40 +0,0 @@ -import Logo from "../components/Logo/Logo"; -import CreateNewLogButton from "../components/Buttons/CreateNewLogButton"; -import LogHistoryButton from "../components/Buttons/LogHistoryButton"; -import "./styles/Dashboard.css"; - -export default function Dashboard() { - return ( -
-
- -
-
- -
-
- ); -} - -function MainContent() { - return ( -
- - Convert handwritten clinical logs to a
- standardized Excel template with just a click of a button! -
-
- -
-
- ); -} - -function Buttons() { - return ( -
- - -
- ); -} diff --git a/frontend/src/pages/Homepage.jsx b/frontend/src/pages/Homepage.jsx index 82aabaf2..26eeed03 100644 --- a/frontend/src/pages/Homepage.jsx +++ b/frontend/src/pages/Homepage.jsx @@ -1,29 +1,189 @@ -import SignUpButton from "../components/Buttons/SignUpButton"; import Navbar from "../components/Navbar/Navbar"; +import { useState } from "react"; +import { + CLButtonPrimary, + CLButtonSecondary, +} from "../components/Buttons/CLButtons"; +import { useNavigate } from "react-router-dom"; +import { Link } from "react-router-dom"; +import LogbookImage from "../assets/images/logo-small.png"; +import LogBooks from "../assets/images/logbooks.png"; +import ShopLogBooks from "../assets/images/ShopLogBooks.png"; +import { TextField, InputAdornment } from "@mui/material"; +import { + UserCircleIcon, + BellIcon, + AdjustmentsHorizontalIcon, + MagnifyingGlassIcon, + ChevronRightIcon, + ClockIcon, +} from "@heroicons/react/24/outline"; +import "./styles/Homepage.css"; -const mainColour = "#646cff"; +export default function Homepage() { + return ( +
+ + + +
+ ); +} + +function MainContent() { + const navigate = useNavigate(); + const [setSelectedLog] = useState(null); + + const handleCreateNewLog = () => { + navigate("/uploadPhotos"); + }; + + const handleAddLogbook = () => { + navigate("/newLog"); + }; + + const handleViewHistory = () => { + navigate("/logHistory"); + }; -export default function Home() { return ( -
- - + ); } -function CTASection() { +function TopNav() { + const [searchQuery, setSearchQuery] = useState(""); return ( -
-

- Welcome to
- FlowLeaflets -

-

- Detailed caselogs for patients you see, vital care for those in need, - globally -

- +
+ + FlowLeaflets Logo + +
); } diff --git a/frontend/src/pages/LogCode.jsx b/frontend/src/pages/LogCode.jsx index 84f530af..6c498c8f 100644 --- a/frontend/src/pages/LogCode.jsx +++ b/frontend/src/pages/LogCode.jsx @@ -1,6 +1,6 @@ import { useState } from "react"; import { useNavigate } from "react-router-dom"; -import { TextField, InputAdornment } from "@mui/material"; +import { TextField, InputAdornment, Tooltip } from "@mui/material"; import { Article } from "@mui/icons-material"; import Logo from "../assets/images/logo.png"; import "./styles/LogCode.css"; @@ -17,9 +17,7 @@ const LogCode = () => { return alert("Please accept the terms and conditions"); } try { - setLoading(true); - await new Promise((resolve) => setTimeout(resolve, 1000)); - navigate("/"); + navigate("/home"); } catch { alert("Something went wrong. Please try again."); } finally { @@ -59,15 +57,15 @@ const LogCode = () => {
diff --git a/frontend/src/pages/login/Login.jsx b/frontend/src/pages/login/Login.jsx index 01ad7adf..5f1d63d7 100644 --- a/frontend/src/pages/login/Login.jsx +++ b/frontend/src/pages/login/Login.jsx @@ -19,12 +19,13 @@ const Login = () => { const [name, setName] = useState(""); const [loading, setLoading] = useState(false); const [showPassword, setShowPassword] = useState(false); + const [confirmPassword, setConfirmPassword] = useState(""); const navigate = useNavigate(); const { session, login, register } = useAuth(); useEffect(() => { if (session) { - navigate("/dashboard"); + navigate("/home"); } }, [session, navigate]); @@ -43,6 +44,10 @@ const Login = () => { return alert("Please enter a valid email"); } + if (password !== confirmPassword) { + return alert("Passwords do not match"); + } + const { firstName, lastName } = getFirstAndLastName(name); try { @@ -169,6 +174,37 @@ const Login = () => { />
+
+ + setConfirmPassword(e.target.value)} + InputProps={{ + startAdornment: ( + + + + ), + endAdornment: ( + + setShowPassword(!showPassword)} + edge="end" + > + {showPassword ? : } + + + ), + }} + required + /> +
+ diff --git a/frontend/src/pages/styles/Dashboard.css b/frontend/src/pages/styles/Dashboard.css deleted file mode 100644 index d2a593a5..00000000 --- a/frontend/src/pages/styles/Dashboard.css +++ /dev/null @@ -1,20 +0,0 @@ -.main-content-text { - font-size: 20px; - font-weight: 800; - margin-top: -100px; -} - -.main-content-buttons { - font-size: 17px; - display: flex; - flex-direction: column; - align-items: center; - margin-top: 30px; - gap: 10px; -} - -.buttons-container { - display: flex; - flex-direction: column; - gap: 10px; -} \ No newline at end of file diff --git a/frontend/src/pages/styles/Homepage.css b/frontend/src/pages/styles/Homepage.css index 73cb697c..d29251d8 100644 --- a/frontend/src/pages/styles/Homepage.css +++ b/frontend/src/pages/styles/Homepage.css @@ -1,16 +1,504 @@ -.cta-section { - display: flex; - flex-direction: column; - align-items: center; - margin-left: 64px; - margin-right: 64px; - margin-top: 200px; -} - -.cta-paragraph { - text-align: center; - font-size: 1.1rem; - color: #64748b; - width: 450px; - margin-top: -1rem; +body, html { + background: #F7FAFF; +} + +.page-container { + display: flex; + flex-direction: column; + height: 100vh; +} + +.top-nav { + display: flex; + justify-content: space-between; + align-items: center; + padding: 0.8rem 1.5rem; + width: 40px; + height: 40px; +} + +.nav-left { + display: flex; + align-items: center; + gap: 8px; + margin-left: auto; + margin-right: 200px; + margin-left: 50px; + position: relative; + z-index: 1; +} + +.nav-logo { + width: 70px; + height: 70px; +} + +.logo-link { + position: absolute; + top: 0.5rem; + left: 1.5rem; +} + +.nav-right { + display: flex; + align-items: center; + gap: 0.5rem; + margin-right: 1rem; + position: absolute; + top: 2rem; + right: 10%; +} + +/* Style the notification button */ +.notification-btn { + display: flex; + align-items: center; + justify-content: center; + padding: 0.5rem 0.8rem; + border: 1px solid #E5E7EB; + border-radius: 1rem; + cursor: pointer; + transition: all 0.2s ease-in-out; + box-shadow: 0px 0px 10px #e3e8f2; + backdrop-filter: blur(8px); + background: white; + width: 50px; + height: 40px; +} + +/* Style the profile button */ +.profile-btn { + display: flex; + align-items: center; + justify-content: center; + padding: 0.5rem 0.8rem; + border: 1px solid #E5E7EB; + border-radius: 1rem; + color: black; + cursor: pointer; + transition: all 0.2s ease-in-out; + box-shadow: 0px 0px 10px #e3e8f2; + backdrop-filter: blur(8px); + background: white; + width: 50px; + height: 40px; +} + +.notification-btn:hover, +.profile-btn:hover { + background: #E5E7EB; +} + +/* Style the icons */ +.notification-btn svg, +.profile-btn svg { + width: 30px; + height: 18px; +} + +/* Style the filter button */ +.filter-btn { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.5rem 0.8rem; + border: 1px solid #E5E7EB; + border-radius: 1rem; + background: white; + color: #2F3C50; + font-size: 14px; + cursor: pointer; + font-weight: 600; + transition: all 0.2s ease-in-out; + box-shadow: 0px 0px 10px #e3e8f2; + backdrop-filter: blur(8px); + height: 40px; +} + +.filter-btn:hover { + background: #F3F4F6; +} + +.MuiTextField-root { + width: 300px !important; + height: 40px !important; + background: #F3F4F6; + border-radius: 50px; + box-shadow: 0px 0px 10px #e3e8f2; + backdrop-filter: blur(8px); +} + +.MuiTextField-root .MuiInputBase-root { + height: 50px !important; + padding: 0 8px !important; + background: white; +} + +.MuiTextField-root .MuiInputBase-input { + padding: 8px 4px !important; + font-size: 13px !important; +} + +.MuiTextField-root .MuiInputAdornment-root { + height: 40px !important; + margin-right: 4px !important; +} + +.MuiTextField-root .MuiInputAdornment-root .icon { + width: 18px !important; + height: 18px !important; + color: #2F3C50; +} + +.filter-btn .icon, +.notification-btn .icon, +.profile-btn .icon, +.search-input .icon { + width: 20px; + height: 20px; + color: #2F3C50; +} + +.dashboard-container { + padding: 16px; + margin-left: 65px; + max-width: 1400px; +} + +.welcome-section { + position: absolute; + left: 230px; + top: 15%; + display: flex; + align-items: center; +} + +.welcome-text { + font-weight: 300; + font-size: 25px; +} + +.user-name { + font-weight: bold; + font-size: 25px; +} + +.content-grid { + display: grid; + grid-template-columns: 1fr 1.2fr; + gap: 24px; + margin-top: 11%; + height: auto; +} + +.logbooks-card { + background: white; + border-radius: 20px; + padding: 24px; + height: 500px; + width: 100%; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); +} + +.get-started-card { + background: white; + border-radius: 20px; + padding: 30px 50px; + height: 280px; + width: 95%; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); +} + +.get-started-card p { + color: #3c4049; + font-weight: 400; + margin-top: 13px; + text-align: left; + font-size: 14px; + margin-bottom: 16px; +} + +.get-started-card h2 { + font-size: 20px; + font-weight: 600; + color:#2F3C50; +} + +.card-header { + display: flex; + justify-content: space-between; + align-items: center; +} + +.card-header h2 { + font-size: 20px; + margin-bottom: 8px; + margin-left: 30px; + color:#2F3C50; +} + +h2 { + font-size: 20px; + text-align: left; + color:#2F3C50; +} + +/* Button stack container */ +.button-stack { + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; + margin: auto 0; /* This will push the button stack to the vertical center */ + height: 60%; + margin-left: auto; + margin-right: auto; +} + +/* Individual buttons */ +.secondary-button { + width: 100%; + padding: 12px; + border: 1px solid #e0e0e0; + border-radius: 8px; + background: white; + color: #1a1a1a; + font-weight: 500; + cursor: pointer; + transition: all 0.2s; +} + +/* Primary button (Create New Log) */ +.primary-button { + width: 10%; + padding: 12px; + border: none; + border-radius: 8px; + background: #35478C; + color: white; + font-weight: 500; + cursor: pointer; + transition: all 0.2s; +} + +.secondary-button:hover { + background: #f5f5f5; +} + +.view-more-btn { + padding: 6px 12px; + border-radius: 20px; + border: 1px solid #9AB0E1; + background: #F7FAFF; + color: #4F607E; + font-size: 15px; + font-weight: bold; + cursor: pointer; + margin-right: 30px; +} + +.progress-list { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + margin-left: auto; + margin-right: auto; + gap: 16px; + width: 80%; +} + +.progress-item { + width: 100%; + padding: 12px; + border-radius: 8px; + cursor: pointer; + transition: background-color 0.2s ease; + background-color: transparent; /* Default transparent background */ +} + +.progress-item:hover { + background-color: #E7EDF8; +} + +.progress-info { + display: flex; + justify-content: space-between; + margin-bottom: 6px; + font-size: 13px; +} + +.progress-bar { + height: 6px; + background: #E7EDF8; + border-radius: 4px; + overflow: hidden; +} + +.progress-fill { + height: 100%; + background: #244B94; + border-radius: 4px; +} + +.progress-item:hover .progress-bar { + background: #FBFCFE; +} + +.logbooks-image { + width: 100%; + max-width: 280px; + margin: 20px auto; + display: block; +} + +/* Bottom section container */ +.bottom-section { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 30px; + margin-top: 10px; + width: 95%; + grid-column: 1; + height: calc(500px - 280px - 24px); +} + +/* Shop Log Books card */ +.shop-books-card { + background: linear-gradient(232.43deg, #6C8BD3 9.4%, #244B94 90.17%); + border-radius: 30px; + padding: 20px; + color: white; + display: flex; + justify-content: space-between; + cursor: pointer; + height: 100%; + position: relative; + overflow: hidden; /* Important for containing the gradient and images */ + height: calc(500px - 280px - 24px); + transition: transform 0.2s ease; +} + +.shop-books-card:hover { + transform: translateY(-2px); /* Slight lift effect on hover */ +} + +.shop-books-card::after { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: radial-gradient( + circle at bottom, + rgba(255, 255, 255, 0) 30%, + rgba(255, 255, 255, 0.2) 100% + ); + pointer-events: none; +} + +.shop-books-card .chevron-icon { + width: 20px; /* Reduced from 20px */ + height: 20px; + color: white; /* Adjust color as needed */ + margin-top: 4px; +} + +.shop-books-content h3 { + font-weight: 600; + font-size: 17px; +} + +.shop-books-image { + position: absolute; + top: 40%; + right: 1px; + left: 1px; + width: 250px; /* Adjust size as needed */ + height: auto; + object-fit: contain; + z-index: 1; +} + +/* Recent Activity card */ +.recent-activity-card { + background: white; + border-radius: 30px; + padding: 20px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); + height: calc(500px - 280px - 24px); + transition: transform 0.2s ease; +} + +.recent-activity-card:hover { + transform: translateY(-2px); +} + +.activity-header { + display: flex; + justify-content: space-between; + align-items: center; +} + +.activity-header .chevron-icon { + width: 20px; /* Reduced from 20px */ + height: 20px; + color: black; /* Adjust color as needed */ +} + +.activity-header h3 { + font-weight: 600; + font-size: 17px; + color:#2F3C50; +} + +.activity-list { + display: flex; + flex-direction: column; +} + +.activity-item { + display: flex; + justify-content: space-between; + align-items: center; + padding: 10px 0; + margin-top: 5px; + border-bottom: 1px solid #f0f0f0; +} + +.activity-info { + display: flex; + gap: 3px; + color: #666; + font-size: 10px; +} + +.activity-info h2 { + font-weight: 500; + font-size: 10px; + color:#2F3C50; + opacity: 0.7; +} + +.activity-info h3 { + font-weight: 700; + font-size: 10px; + color:#2E4A8F; +} + +.activity-time { + margin-left: 17px; +} + +.activity-time h3 { + font-weight: 400; + font-size: 10px; + color: #A1B4DE; +} + +.time-icon { + color: #92a4cb; + width: 12px; + height: 12px; } \ No newline at end of file diff --git a/frontend/src/pages/styles/Login.css b/frontend/src/pages/styles/Login.css index 4f690667..ba48b070 100644 --- a/frontend/src/pages/styles/Login.css +++ b/frontend/src/pages/styles/Login.css @@ -107,6 +107,10 @@ input { transition: all 0.7s ease-in-out; } +.form-container h2 { + color: #244B94; +} + .sign-in-container { left: 50%; width: 50%; @@ -232,11 +236,6 @@ input { .username-group .MuiTextField-root { width: 400px !important; } - .password-group { - margin-top: 2rem; - display: flex; - flex-direction: column; - } label { font-size: 0.9rem; @@ -295,7 +294,12 @@ input { .sign-up-container .password-group { margin-top: 1.2rem; - margin-bottom: 4rem; + display: flex; + flex-direction: column; +} + +.password-group { + margin-top: 1.2rem; display: flex; flex-direction: column; } @@ -307,6 +311,10 @@ input { width: 400px; } +.email-group .MuiTextField-root { + width: 400px !important; +} + .logo-container { position: absolute; top: 2rem; @@ -360,6 +368,17 @@ input { font-size: 1.4rem;; } +.confirm-password-group { + margin-top: 1.2rem; + margin-bottom: 3rem; + display: flex; + flex-direction: column; +} + +.confirm-password-group .MuiTextField-root { + width: 400px !important; +} + /* Label Styling */ label { color: #6B7280; diff --git a/transcription/requirements.txt b/transcription/requirements.txt index 0cb346b0..03feafad 100644 --- a/transcription/requirements.txt +++ b/transcription/requirements.txt @@ -1,7 +1,7 @@ Pillow==11.0.0 Requests==2.32.3 supervision==0.24.0 -torch==2.1.2 +torch==2.5.1 transformers==4.46.1 einops timm From 574ee5cd4acf670507a9b2b108aa50377dd3c1c8 Mon Sep 17 00:00:00 2001 From: naheyansheikh Date: Tue, 26 Nov 2024 21:59:29 -0800 Subject: [PATCH 5/6] Changed protected routing --- frontend/package-lock.json | 2 +- frontend/package.json | 2 +- frontend/src/contexts/AuthContext.jsx | 13 ++++++++++--- frontend/src/pages/login/Login.jsx | 2 +- frontend/src/utils/ProtectedRoutes.jsx | 8 ++++---- 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 6813c886..4281d9f8 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -14,7 +14,7 @@ "@heroicons/react": "^2.2.0", "@mui/icons-material": "^6.1.2", "@mui/material": "^6.1.2", - "@supabase/supabase-js": "^2.45.5", + "@supabase/supabase-js": "^2.46.1", "axios": "^1.7.7", "pdfjs-dist": "^4.7.76", "react": "^18.3.1", diff --git a/frontend/package.json b/frontend/package.json index d6e63ca2..e1407e11 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -16,7 +16,7 @@ "@heroicons/react": "^2.2.0", "@mui/icons-material": "^6.1.2", "@mui/material": "^6.1.2", - "@supabase/supabase-js": "^2.45.5", + "@supabase/supabase-js": "^2.46.1", "axios": "^1.7.7", "dependencies": "^0.0.1", "pdfjs-dist": "^4.7.76", diff --git a/frontend/src/contexts/AuthContext.jsx b/frontend/src/contexts/AuthContext.jsx index 0e307ad9..72f2810b 100644 --- a/frontend/src/contexts/AuthContext.jsx +++ b/frontend/src/contexts/AuthContext.jsx @@ -40,9 +40,16 @@ export function AuthProvider({ children }) { } async function logout() { - const { error } = await supabase.auth.signOut(); - if (error) { - console.log(error); + try { + const { error } = await supabase.auth.signOut(); + if (error) throw error; + setSession(null); + } catch (error) { + if (error.message === "Auth session missing!") { + setSession(null); + return; + } + console.error("Logout error:", error); throw error; } } diff --git a/frontend/src/pages/login/Login.jsx b/frontend/src/pages/login/Login.jsx index 5f1d63d7..1b51f4ef 100644 --- a/frontend/src/pages/login/Login.jsx +++ b/frontend/src/pages/login/Login.jsx @@ -77,7 +77,7 @@ const Login = () => { try { setLoading(true); await login(email, password); - navigate("/dashboard"); + navigate("/home"); } catch { alert("Failed to login: Email or Password Incorrect"); } finally { diff --git a/frontend/src/utils/ProtectedRoutes.jsx b/frontend/src/utils/ProtectedRoutes.jsx index 78eecd6f..c48f7a1b 100644 --- a/frontend/src/utils/ProtectedRoutes.jsx +++ b/frontend/src/utils/ProtectedRoutes.jsx @@ -1,7 +1,7 @@ -import { Outlet, Navigate } from 'react-router-dom'; -import { useAuth } from '../contexts/AuthContext'; +import { Outlet, Navigate } from "react-router-dom"; +import { useAuth } from "../contexts/AuthContext"; export const ProtectedRoutes = () => { const { session } = useAuth(); - return session ? : ; -} \ No newline at end of file + return session ? : ; +}; From eb7e1012ab134566315dd182a881750c80d8d98f Mon Sep 17 00:00:00 2001 From: naheyansheikh Date: Tue, 26 Nov 2024 22:06:20 -0800 Subject: [PATCH 6/6] Update .gitignore file --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 5ac6d0c4..ac48899b 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,4 @@ venv/ *.pyz *.pyw node_modules -frontend/src/assets/images/* \ No newline at end of file +frontend/src/assets/images/ \ No newline at end of file