From 7c58171a657eea51f03261a16a96cc4198b5e533 Mon Sep 17 00:00:00 2001 From: Fergal Moran Date: Thu, 1 Feb 2024 00:22:42 +0000 Subject: [PATCH] Cleanup of maps and new popups --- bun.lockb | Bin 279302 -> 270420 bytes package.json | 18 +-- src/app/debug/page.tsx | 8 +- src/components/icons.tsx | 28 ++--- src/components/maps/main-map.tsx | 30 ++--- src/components/maps/map-marker.tsx | 73 ++++++++--- src/components/maps/map-viewtype-selector.tsx | 1 + src/components/pages/dashboard-page.tsx | 8 +- src/styles/globals.css | 115 +++++++++--------- 9 files changed, 162 insertions(+), 119 deletions(-) diff --git a/bun.lockb b/bun.lockb index 9a20f2da099c977ffb9f6de9eeaa7598329bd506..f472ba5db6f4028fa6046b6e6381cdd13efc6c0e 100755 GIT binary patch delta 53810 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 J5n{7l`5$3OI*J}6gJNDkO z#HeWOB@q-8HAamk)~HEL?po)ZF+90>p8MYWd*9z*nGb8${;vJqy_|gx%y9j9h3V5P zE^u{@DffO#*$urPlsuf!??U9A4<032=YBTm<8Zyl&aCobuRe}$W2ND1X-2=Ax&sR` zQXI`Epcpiow1kMzp-G6cE~(L!g}n+)y|T*Zv>HuS*dFky0ImzB-_XRwq}2EbO)EH4 zcLP@hudvo=J_C!=8ci8+Qet#e7}9)%T@LmPF#OGF2?$hy&>Fe1KyQ@?K(7W{LPpFW z23!w(#73iW1V@%qGD<;iEU0V=jixeq7W5k6-te~rw*=dQE2A_ga6Q;;NM&#(O=nHo z2PCKtp-4@51Wd<9l{A`K;L)&Iz&bE1Zi}|C z-*&3{ZP@JZOJL@kZ!i0s)0QECu1iZqo5+!{IZ#&U6juKObQaiH z=3_~p^tn1Z|)*!`RT+xTtWACLA`0JvB5Yngdl8 zHY*&g`Ymjrr0W8k`L%FX(#Lbu@u~;Avc{}QGs1x#?yNf2R5Li*P{}YXA#`X&qDIrS zk&?kUFf+UWW`UN1M?@t>G2^I27kTm=X{`8{QS;Y<=^qo3Fg(H&Wm5NtFxy3$D#Jn( zlSUzfgoxxsRpP>PQMrkn>6njgF2=Owz=R43A2P*Jxre?Z;wg zAanX#__>$TX+tA1sz|yIHb>{%rt9XOCFA* zV-n@^HRp{=y5)$ME9|ZKHEOODcoH@nunElhI5Z~QB{4E8CNVBHHUbrKKtn5N{55GW zS|~m6C7AoocdGr?N2$OVwZI3k*;AF(9;)rD6lm`&t=7AmZ=00*Tva(HDkj1uJWPXC zE6&=QiRK}*hH?6;aGL+p|haah?FFD;rVvTe!3gX4$1_h zvT2i4eFT^bx4Wtv!St&Q#*9p}0kgs-z@@o9ss|_qSQg}af5mQeijd#=|>?Q=U)hz&3@bia|e72%mvc{I{jLz z9M4Ir(Uj24>@EFL>T`2$A0>TCQbcSxB9_BudGo+bpQdvBaF?jqByY`x-b#M3AzfF&HsCouJ6jrDXI>HteRcteQ83J3N z1GB}kgBAX{gfcP@!0h2ms(lDt1@^5WO1dw>oQSuebEnt{=FV^yh0(4Yri^3;bo!MW zs$5y#L$8YR(_GQ-EVwF|HTxY7%*1r@<&24_@#3z*l;43$&CtY{dR zEo%#|32v;~H=~t;s=;Q#AGJzFz5{cPZqs62a!->WFynDxW*7lx#R9;LcTu@Am=)53 zKLfu)7ncVYf#sf3yZo<9bJ!?lC`ZKM{DhZfa~m3GjvE;T>6)4_Ntq*>uGreRDzm^` zg%OEi$x+eanrF#M*B63Wfzx1iFb&S%GQbD&SFS`~Wq+gK9SgGyNJgkUfmeDk&){A|V4db#nyH z%dv2pG)bAQV^nsZth78jVstEgHT7U~HkVM@2F#%dkBErJwy%jqIu6BO&y!=OD(MCy zo;_*=*9DJAbm57|tO-pR9v_;J7~zZvu7arHv2h6)5=YqFc6kN~jZW0un6B8vqGH2c zlH)bOGn9>}o67Mn(Q!j@O#w&6L?vmu%~awmARi9lcd*%jgs7N=P^=8)V2m}tc$QS! zrk;8BEX5yZ#?frB+Z@Fn79E4{+%kWkCmlk4uFO~B z_k+25_rsqvB@>JzaoR*MNAwkjl4~RhHrp2tmfO2fsmFCN%bh1FJPFK=y2c`<9-ZOO zfph^g-xJu9V4KsXA;2lNWr^ajQz#jH1aqJwz|1HC%qz^orAmgaV6)+YnM(REz+BYB z}ufdDx1{!I$#b_Suk7r4*pz}kHD-T4yg$d!y{6@fz5)V55t5+h-_P6RVu1egu&zXTgI9lqSGj7@_r%2>W%tT;4l0JA|sVD?art>}LW>gtGaK!I#YNig*|#IwK^yOfqZ z12cXOm=&7e7?m6vt)L1bv`h$xh};-nHkAIw>5dDLL3g&&INEN-S&!*X=BY;-P)ZceL;00*_)X@z6K zm0;flvjP{uZ2teuRTw)>y=0}}|Ea664h`fi3y;God$dL~7QM%w%)f}9!$e8TLx3$@ z3ueT*OUm@dlZ4Rd(C~;n*c^gfFf(e63>?7|uP771>Z%g|3O0K#6wFzOG;+GnuPJ=o z>)q?*6B$ihn%#fW!QXr$CGyK!yO&qqVr9Npqgjky$#v~Ew#Xb7(&mcvO6>UBe!SDG zW4{hNH2Ubu&C8#AAJ+Eyu|ZIFZqTXo2x z#AF-SCT;G%_3z=g{_$^~pU1up+W6#*f6n3w{54E_dRM;_gG8+D{c{P<*mbN zX6*hk@v!%tCx@)>1UB+q__Nb%t8VwYS%rU-DMoicTYOSiGrMy9U& zp~32JcE{Vj(C&_`en4y8>zlqWKkh2IVYj2hBdzTd)A5z{Cmwt%U0eITN3Uo48grK< z_z(K2^KRRkY1-YZ9KEfz{iK2he%k4howJ|zf)wQJXK*N~(RiVQD@jff-ckXSTqrG| zSV=j)M(uqmsG*r2u_LbvCOLp#l`qQwx%Bh-Sc@B|d7E1+)`4)B?ImQXQaBr!| z-N%rOP+zo5E8T7HZ3Sb9l-?KT0bch?+c^?yq}irn)qp}NI^~f41=+kHZg4q6(FWHc0O;!l#=ec8x5(jd|;K9LY<9T1+iufd+q_VqE0LWoUAcF176YFSBln;7-Kz(OxKYbn{a@H0%tI#mk3 z+t_G00;?s`p;55jt5!)V$J5*TbEPP~6x!IRoh$|U_!*8v^M|`eZnafSrO=X6D5};5 zR!78@ker$t4Xe~RQ~?>^QLR#P|Fpwa;t5Zk-1aelTBv$1ET!)_t$&j;ef7(5s1-0@sJcZpvsT5*eaL>?2P8%oLwf56rhb<4HzE(Z>$$j1z zA%CPO$&t}!Np@}g^mm}O;b0pa>nlAgm!=&d6}0g)tbo=PDbOjay{%xlOAf9+`Wg+` zBo1R=gg6{`H}#r^7$xSe zHz9;Zpq$AFDdpreG#bvp;*`)yPAEs)Na=_Y^62=%QYQ%FX2D{U^^%jnw>1nVQzmVN z#-B0?@|H3?_!*`{;Ucq=2mLfGW`sg8J#;RXspGT;-W~l6Sy0&jTFJ@FXt=1xE0eFR z6cpg69VBH2_~|oTkt=r!?HS3glb^xXO_`=zPD%Z6SQv9xAH!CJ{N(c3#HX;35V?mo zG8*jBSF8&xAEUOfl-b$OupAnfw@wN*84cG}3sVjqTGm5pHWoA{b11A%iYJ!-W>`#z z?i%fF4THt#<-V(kNscQgELN>2EPp8ko97aQS}|#KbtV@^Xyiw zMx&XD1>8uw+`!s!94d3h()97RhN1Kwa^Bm(NLsXs2Y}8 zm8MGnD=q2;3(;JV$ZrO$mQr>{AN>o2I!i^u$KZqF*ki~GZC(zG6AaZ};B5_q-62nO zLo*}xWLU}!o(zj|m?GHazJ`Scb3(Wp4c4eB<^($&m2Cn`ooBG(VX+UCsdE<=b5XXy zX3dqVYb2)@Mne)T_Mm(jH0*;F3=3BP%+?CX0!i6tZbp4aSm-8aAKmyCQejtZ6`i|D3hrq#ghOBz<(zfPO;TY`lkNwTWZ%oAtK}yJ zg9iIaS-nh#C78_Yl1kFu2}a#*KgqtgN$1c?3hr$(^l7DBjL;=mI}2bTTWr$ogp07) zE?iHAQP;Y)6x_$8--~JKDJH$qdPx<$4cgXHVIPyB4*HQLRFFbj84ZJADIJS;>2|k~ zvih0~kD(}w3JXEkpsi%z&!n5$RtoNCGTdovSqM%@P}N^5gxD3kg;E#fV#tJr6_Qp? z%8B;2#%9(_Hn^w)+AGy8Coi!Tu=;(9dkgDN&yF25njV%oeI~4aQb=%1YXsO%C4+Vt zlFpy31+cn(vc83dVZw-UCu$#HsUdnxH#I;C9$?ZP4v?}yzXV8y15EnXn0!s7kS0Ec zNeH1oIoCIPTf@LK;l;3r(eN8AEElDGokwTMKE!0WfjVF(;Z*5p)akoOSs^A}WEZIr zw4#e-Kggu}u8R~r$Yk&cRIYod6iyIhV6oeg^Hm~Hb-G`>@;|_kQOv(BrR|^SfdBfk(_D`jk;;wB>Pa4?rAqE zIMifliq*^n${HS{T3ExLIC8*ZGfT_U=?yH_3SQipwVDFEDnJ+%Psaw z80zUxGr#20oJL;`TOl29VB4T}PdpR*uQ<0FZ&x3_7^eSH#=2`grL3VQoqaE<5LBzT zWFKxatmtiNAjkYWSlsW>TV1`aQDquv5&F6#EM-B4j+dj@Jo(yUuYHc^c z!icKYFR+-W;@NQk4&R@wjj;YK{S~ZFwbnNo$kTiFh?dp}{F(V3Sbt_<3c(5fQ+BIh z{n=^X!{P?36zq<=v)RhUX$UN|6`kOOOYwnEalBMLf)&6Mjm~4R6dYsHjUOy!f$|1R zg)t`mhrv7z6vg=H{Dx4_jT<6m#hUcLqE;QG>{uT|n@~%IG5GqWu)OJSa~UC4PlFfE z#_C1b9rags4xABeqG7fAtB-yQRNRz!`siJTYBU3R%VL;?kUEbV8Fekgr9u~zess9y zw&=@Gp-K_Bm@tVhI6|^dFd242;Nrtf9d0y~AEs=-m=9aMtzh_aSJKZx2sd1~H>!#i z)k(ff8iJ6bT}G(8e81!vsnPV5E0ll`c0p#_$*4aB3*ChDnkY;9VF)2TPAf-b4c9Dv zRm?Dxto25yyX4^6(i#D_OquP^Vc{;$qowso1myg&OX!!t>MGajdxVtEagUZer-hGx zE<(`IO-~V0cBs3!jCsZ=bwt)!ZewBfl$YCigg75CJG_kgIvK|)4*jl>lY_z!t3%jp8 z4{+KEkPl;ew^7(_rI3a`h6IE-;c@jx+I(2eV3n4f!i|RCVR3$-qJ4}8Q-U(7<-?$X zzx(I7Vk9xCb764{k}aDeSlr7scvY1$uzT|W=$NP+0C6O0V$=mEO2HFMhD{KaapaZZ zW1>_z!KD8q88-@2(F7m8|7gy0hUOp?Acw9aq{P~dv1nlkDSo*KDY4H##Trx42Xfk} z2r0Q-K&YFn)kw9(Mj@o+vI8N-?*l?gex|V&Z3aS0e%BFFQdA!&pEOa^VF)Q{w-5 z&OU~p5o!S)r)3CiE-mcruPlW%_wKf+?CDK`l9W+|1! zlEJw@7#4fCl>E?Q9juP>F7k{zE3J2!4S)Hzxd%dOlhMdos)fTVM(G4BmakkT{(!|? z(Sx`EwwR;D$tQnZ${eY1o=LwABJKto`54|H#F4_?C$eogSFy1D4KW%Im3?Q;^z$)zq$^{Jj_GLB&x7S9IfVNdP9VgAMB{vnhSKvCFC3k)uKi(k zN1S|fqF)5dTfY51kC3OVhoU3P&R5124@V-rtzoeJNHW4(J6|eXXfiy2rkqfm&Sr`;gw<2FxW1|^R&Lo4hkY$~v6LlDx(7?7LSfS936v#Y8pcgez+yLdvS+ zGnfkNm9D`R42O=Mu<(=tHJgVJ8jNRV_YmTiB2Pv`!wpJ5$(x8i9#%{F@UjIVbue(z z(`=N2*P0A{H(ELs+q8ZYEIjGL40w(ZTcTvyBG+;-c3S6c4WqxMk%o`3n!v(CSKJ4B zY?AEPn{=_8q~P@!zfG1w`{u7&p3vGu;_`c4e3_F`m{^yZtsz@wwZKm_DY4@O!|*|3rr>*oFlVVq-o_t`j930-)8V!qJaht+)8Di8wV4OT)HBTvCI6B~15d@26D94I9Y8-ARvAvu+ zC1vHA^mR}3tcxeDy0p`h{ZW(Q9t5@kqcPm5`}~X)+}NZWct$EbYSJ${BOiT_`sfP~ z!m$}4$9(y)j8GIpIA|lZ?UVKnA;r&h))G4fAsnyacOD@euMx64XVJnC!m%FOPK1=$ z-w{%BY4?@IZyrKQY1ck!HO^a7L?NW4*ntopAS1tD5mL(azhLppKuFefg%_l(FHHuA zi^@ujVSCF%ZPM|bb46r69;HM%Bc<+m^gAv=OEatUCd%7eiya)`>IV7|!I!+_5K z+_1^^XfV^K0(|`)mx7)Kuo+YFcRL_C@QInh3_uUe1z1ozz!#YbGXUxfReK4T=`sQ8 zSpZ*T`s4f}$LD}c0viBUWE;z8LR=5z2<(}10&HR$Yv3fnc+6}5X@v&kAje+^v!ELQ z<8P{V0k|sg6Tkv~2KXw@^#1@b{V!}k1HS@%{T;I>=%fSb==>L^R03~gD>a@>|B|Xr zX3NWhS%LCkMwu({9WOE?K2z=DOo@L>O0J^Dlj(1(>UOG5rd~s}|BhL)&y{$y9AE+` z2-Iq+3CRrBR_(uIrmKf|X4pXW`#YvzBQ?G_YdJ`b5uufyeN|1Ki*BkLnb~@PnY@Xr z{~dFRd8_fondw`oI+=bZFeN`#FUHDRC??1iXstSu8Em6+Tb2DO;`MjTsCH^RnZfpW zSPAHXi+|E+*K92sSaf7JygA?s{beE+6h+u$P5lpd7!G3neQOg9%Qxzzzhyn zd5FrP6!9XnDAI5XoI=!}Y0HS#|h3X8ag6L5k`} zW-t|Rtk?uF{VWaoPfWi_N;O z4ym!lnW^%iR|a2Ei>!9@(gcm{tJ~~^Y8unLg2s5%;0DEGs!zO9hnvX0Or-HJPZTamZHjZ zwNq^}r`_i|l+TEoYQ+ByGo7QF?(ditt&RAK;3iIi)S%IctdvG@}GY$cx=9*|QTbu~yVx9r!VKGaM&jnY5eH_euPJ@~LI+zvy4$MC* z*E~UhHF~eI9^Jqimjg3lWpEjAO)xWX0keXxV7|z5g~99rBN&az#d&y7$UKxU67TcP}V2rN@0$n5eQ)h4qm z*MQk0YgPR}G5yx5={BhTf5-IOXjUCI{s*RGt{P8fg*K};nekgx-m3C8HJ;4)?O+b= zF4f)*W<$*f5#WnV$3v=JoLS%zRVULgPqqIO)9KxRQ-DiNAf zs!nD`r`7m;)jq4nlNr3A>K9f0zrrQB{;#MBiZhpAp{kQvvD>OmW`&AWyExPDTQ&YW zFgKi+VCMG=m_6_j%omySPow32`WL376?8`NBeyKDw8~|`j4!8hMKE7v>ionnxtgkz zY1@PAgIj|c)gEvBM4hGs0_2WV|H7dPnjv^&s&Fui z9j@{Sm19(nS2+>PeoF>3T`HI_GVKXq)^4K8av`wE%zv_~PtjvEnb9-|OgKw*n5#OZ ztM&pgH*Nu@eA)g?8O_mo0DML`FP`E zy9nmaUkGLfcfhQ`cVNE$j+yaY#FOu-d|&17Rek`*kLE{q2{V2U=G6NG%!G33e_`rc z*6QCd<8_Fy1m>4)&jGp^}$>d?qK$SCzvlX zgWjs%Leh8)2}O-Lp4yfL%^))5Y-L^ z^F^kAm}-;Rkl|qF8zt))e+HOAv>Fi$X2LkxL188srP^frCxO|*@nHH-P~*w;H-p); zQ&fAJ8eg0_|1`4^!3^f8j_Io7e_|FeU-i#WSyIy#XP&M3xdy)ej#>WSM*RPz%jN%V z1=u5-)S8pI{&%W&ab_3qh0Y;4pvM0l^SpKn@f@-Xs^5i@O8K(D$#E4C?Aq(91A_7+ z$RGyrBD0|Xw#Sib`Tz1L^^!JY=(f=jY1Z1|bESME24`vh} zL-IwY{+VhQXG;H1k0Uw$|A*(1|D%s1ol(C0oRTeTq_(U$Q)-O2e;!Bv^EguT&*R8{ z9!Dyh;y;fg<;(9sk0bwi9Qn`VNcp+tKaV4Ml=|m!Wbwz4>=D{Lm;duP@}I|%|2&SA z?;!tq9Qn`V$bTM3{_{BUe}5dw-`V2D=ac{PIC6Kvi-Aqdc5WRH+$}$#{W8F@SZxKa60o$r%Z%>UMA`?)d;x?8WySo24C(|B!*XgzvFRErd*ElX7zD|kIk2F4rg5NH^0T{a)-YkH?(QdiI5dLZH_!OwC}cm z>5i9sE(>wH3ZCwVeZ(70);? zcyUD8l|^AM3mSx6T|MFSlONN{&ThG**2bw{?pwEK)wJ3d(=VmGD0=)hZ|1;vS04Tv zcFw%I?xxu4UMUev3QW^4i3#`MdOdMa$>$xzJKg{K zm(7pI9605ldN}Dw*Ytp<72sduDXeO#Ve{_K9&~whv1Vr%uU&cD^jWui zR@lC^M(l3yS#^(G+p#PquJpd^TW=)}JzDuuf>ghHzRl}Jc5aIg`i16bzgI)Nced&L{n$R| z_U!7uE$YG4q|5tPfA^ry$&NcWlqwj|%C%8m=Abfmrk%GR9DnetYw*d{iif zr7NptCr#Ra?e4sd+dsDGc_aUTvBrldc8?p*3u-!V;M({y!>12%wtILj@L&VCPKSng zi}VJlUhKmiHND)1fKq?{&3}XKa`G*xKQ+7=|*bcwHEtU7*95f z^$zLRarIrFbt|S{*q=~y-gBp7)mvA*dcS*St~wWgd2q=NhLn%@u6VyNj(S&Z&kkol ze=paF&wd*>->`UBsa>{qZ?n#)Y-#56;Z&_PmrEty@cMe`vesk18B)zgJY)5))C|k0 z`pc6OC!T3ub{p{h`Ul#58=4o*O*?+RWNPb9?PuQn?Z)i9uP453@6zt&`sr&1wD-T- zSE|0OLBH7iR#cmrl*JV_|oTrO)Hx@O2dT@r{tX|(_bbn#m zo1NQq%kwEUAHKHxVNIu-rBl1#u^X|(+B)!$%bOhH_f;~TycH?38*)der|qoG6|?GT z`-%RIv^M57zuos(6k6Zz)zha_tKH9iXy@0#6%ae0;P6y^WGmY;^M<}Hd}1FK6>+awvHETiF3{FEgd(nZ}4-M zTgST3@7nF{?-vXH*xGrVv87|K-p=~Lh18zkTn^nwzl`e9B)&;X`SU$4 zoTxuOeXnEibw97udryA*LUXi3vFdHrh^%C7UvZ!@nw>xS>sjxEJGS=R`!@flTKoUYYsrn!feENq;!h@Y&FuW%p*MwEuNloe{nEXNDKOdfxR) zv3$1|Z+6o8Hs+@VzmC7tdhxl_(c7$ZJC=R9?br$ZyL6A(RtGZlZMzn3oU!SwUFDx< zby=JCJu>+xPrk)N-C_U$gYBi4Cn;G1)*_tY?&BJ|)Rd1(o zu8YC8b=BI4^tu@R-J*a(K80tT4tquO`VdmwAY|8vuwOi;(7+u+U;_vTMP>sCHz|Ci za99L5Lzw9SVXHHQJn?~owQMe?W-62GJLr8ara77eQ zux$>(*8{>eG0Ou&K80r#Ziwcd5K>w|$o7Qrjd%<}dsDRb0u_i%QlWTBx+MadfNqN% zQjz#Tx+8it1$`@WLE@1wGO}rgjP8n{W)PN|AmmZFFAPQq9r4|HBE|^efjCIvJp~7E z2oFV+H-wF?AY7pESlBg((7!c=3C$rq5oak_w}If&0>U$q+5*A>3Plut63#vlBHKbp z_kr+I6i~4Bhp-rj742(rwrQiGohRh;w6Qf6#Do<_*LZiL73SAg1!}mkD^B_2;Lnb?1d2c$G^;_ z=+J$Ge;l*8`~D^as;69b?(^#7+)LkOKRi{+FvE1)Y2Lf#TMPZlMus1oHZQPBvg@Gk z(>9){(BX&GZg-LccWqc2A&NTU>M_1+erlZ~pKmFV?S9_x%*Ly(&ZDMk#zxKBoc-E* z@52qFYyZAtVyy+q%Uuhdt&0jDHBB12@MMV|Ro3L+$&b+X>0A8jp~acf^0Jy(<8E|X zja^N0d*(M!AL)4Q>5crQ{U16k^c@%5c}jV0c-5TV&PO{`w;Npert0exD>tkUJYZ9$ zdaF^xy>?wqC>-g~OQZ*2s#j^F?W`-I6=7|#k9O>YjyOd{uN9TrLU~Umxh<4ZTJZ&y zjh&&?^@n26iUfZs{kuT9L8XjV)M^LCIuOdVc2I1z;wqH`RGPMjQeG=2w}%qh70LrD z6}7^%0~FhCP!@N9@|jlLqmoahT}LQYv|?dLC@I~cyoI8zCRzt@xO+fY7XZOdyrgiG zLZ40$s*9XX9PXYF^qnC%h#s9e+`S;|rBG97yFhqEA)*TeC$W>l(%ulN1VX4SLIWXm z>;vHxg}S0*R|xMZBzJ{SU!0(@u`h(W-7troi;vQVFDGR7TxRY5WAhtFy>fQdSvGCu zrlYkqr$RTMnt9JHD)f2t=i!c{{r5E9yY993?S-00ODEm-D=att)l=8xl%GT=5!jFW z5%SeG5@)-iAnX1p$fY|37m?Z>!T}0J6x@V!4+xP#5Yl@<@DK$QY=a^A_C(#hir4L( z|Ah%}_CA0AecMtu^G{X3yWIC&&WkF8nwXC@toq2iULE^~_s5p6-)nTwiyOR_&p*Cl zby`p6helaJhcuNyH35zS+Id z0Hb)^3k_&65Df_I4WYTn>up_ArNBvLue-sQg~0nAqYYT5fubsV3{pSwnABgi9t;W+nWSLxk~BaB3;_)kIiwKrfiy_;2n7umxuhXN z8>a1NwtSj~8;R8hrx&}bcWioZaQES@9{;p&(cJGBzbPmcG4^V$OVJUx;!oD9;Jn3o z%v4{uouW*@_Ik|{x|CZ}F>mCtrlb12`>D4_Pvl{_*$pc`1@fxReO9U3cNOmc)@GO2 zn$=;W-0wXr>)q;T;z-Zd&q5mJEZlp~5f})eje;qzG}4G)z{=pR~Y+s8DN#$$Tj68N@xA)Io7Pr`0b>X-9{VvYmdG>U*UoSjbRIzUE zh4d-KYA{0BMWB?CViYM_oF&Bwr(vL2kxGgaS4i=~c{pg4m_$kt1*Amb5eZ5Xvq;I} zE@`xA9t9dBGDs=nF)3BF9swFFGD+jaOVW4|FcLIDoG$z%lSWK!JqGB9`jbk7r$3d7SPEhEd0-sk2&q|AVjZH9m&I)w%^Aq1vDz!5zS!c7VvDI697lOW8T1!3zX2zlZI1@GAq zLMB5vCUPf3ctpWw3Iv?er$AUb2SOf&lfp0+LdUrfVx~ekB@R+}Pr+dt1e~s?LD-lM z;R1!T!frZ*{_`MAm=579ah8JhdQMfM*^C5H;5Mt&-cpwf^cu&D$ z0R)_q7eLs!6v71xI3;I5=${E;LI#8<;w%O0EC?BGAQFtqwFNTnk4Iz6mgm>aGg$64i1TKN_L1Zq0aFfDE z3crc~0b%A!2wMe&kKzLb?^O^&mO}VLW@!$TJSru0qI4FN zj;o=>WI@sE#33s0sW>cyQc5RAEQ7Lf4U`L13_4-I97_MSP$n#gQbs4vQL$bJ#U&ex zjZTcshH`*P5tZ^f(QpNn$n{XtS3s$#6NOZ4H$d@S3FR}Ln7tB8K9y%ws^~pi9SD{%Aav=ofK(G^;IS_7A_(-9;2v`ka<|YVRS3__RA1HWlh7hs_LQRpo z2Ero>Hftd`iJ-L*mTrNNN1?Vbtb@>TD}_GSo1@t8t`JrDx7Kxi&9w?Mc_;Ufhf5wI1)%)Jn{ZiV10 zK2Y%92O(q|1V53x4ZO2SVf#2B4F;_yTo zAOa46aCjnxhz}$jo(_Tri(C>8PlrIEB8U_wc9Mn)!(k9kCZq^)kc5-T5zufEMT!(B zNKwKr4>UrIB8?PhNzuaTC@4mxl48XbQk-x;hN?!MK~>X_p{k=q0R)^SJdT4B#Vk^i zxJybF%};5;w5RE2sjBEFLFo|#0Szu(c?>yS>%$^g!U9@ zk_aMA7CT8(gyA%3st6@b69-AtMa46q86t`_Q=A~p5_b8Z*=Lv?fzA7v^TXP?Xvc|elUJdRAK+5H(D

3P=f=4L-t4b3$O>L;6?~i<{jo0d@rQ@?L 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 diff --git a/package.json b/package.json index 2d86c96..81eeaeb 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "scripts": { "build": "next build", "_dev": "next dev", - "dev": "NODE_ENV=development next dev -p 3002 & local-ssl-proxy --config ./ssl-proxy.json", + "turbo": "next dev --turbo", + "dev": "NODE_ENV=development next dev -p 3002 --turbo & local-ssl-proxy --config ./ssl-proxy.json", "lint": "next lint", "start": "next start", "db:generate": "drizzle-kit generate:pg", @@ -18,8 +19,8 @@ "db:check": "drizzle-kit check:pg" }, "dependencies": { - "@auth/core": "^0.22.0", - "@auth/drizzle-adapter": "^0.3.16", + "@auth/core": "^0.24.0", + "@auth/drizzle-adapter": "^0.4.0", "@faker-js/faker": "^8.4.0", "@hookform/resolvers": "^3.3.4", "@radix-ui/react-accordion": "^1.1.2", @@ -49,25 +50,24 @@ "@radix-ui/react-toggle": "^1.0.3", "@radix-ui/react-toggle-group": "^1.0.4", "@radix-ui/react-tooltip": "^1.0.7", - "@t3-oss/env-nextjs": "^0.7.3", + "@t3-oss/env-nextjs": "^0.8.0", "@tanstack/react-query": "^4.36.1", "@trpc/client": "^10.43.6", "@trpc/next": "^10.43.6", "@trpc/react-query": "^10.43.6", "@trpc/server": "^10.43.6", "@types/leaflet": "^1.9.8", - "@types/react-leaflet": "^3.0.0", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", "cmdk": "^0.2.0", "date-fns": "^3.3.1", "drizzle-orm": "^0.29.3", "drizzle-zod": "^0.5.1", - "embla-carousel-react": "^8.0.0-rc20", + "embla-carousel-react": "^8.0.0-rc22", "http-status-codes": "^2.3.0", "leaflet": "^1.9.4", "local-ssl-proxy": "^2.0.5", - "lucide-react": "^0.314.0", + "lucide-react": "^0.320.0", "next": "^14.1.0", "next-auth": "^4.24.5", "next-themes": "^0.2.1", @@ -78,7 +78,7 @@ "react-hook-form": "^7.49.3", "react-leaflet": "^4.2.1", "react-qr-code": "^2.0.12", - "react-resizable-panels": "^1.0.9", + "react-resizable-panels": "^2.0.2", "server-only": "^0.0.1", "socket.io": "^4.7.4", "socket.io-client": "^4.7.4", @@ -91,7 +91,7 @@ }, "devDependencies": { "@types/eslint": "^8.44.7", - "@types/node": "^18.17.0", + "@types/node": "^20.11.14", "@types/react": "^18.2.37", "@types/react-dom": "^18.2.15", "@typescript-eslint/eslint-plugin": "^6.11.0", diff --git a/src/app/debug/page.tsx b/src/app/debug/page.tsx index 18822c0..2c5e43c 100644 --- a/src/app/debug/page.tsx +++ b/src/app/debug/page.tsx @@ -6,7 +6,13 @@ import React from "react"; const DebugPage = () => { return (

- + + + + + + +
{/**/} {/**/} diff --git a/src/components/icons.tsx b/src/components/icons.tsx index 861672c..6cc4461 100644 --- a/src/components/icons.tsx +++ b/src/components/icons.tsx @@ -19,14 +19,21 @@ import { Copy, Cable, Edit, - Edit2, Radar, PhoneCall, Smartphone, Waypoints, LocateFixed, -} from 'lucide-react'; + Edit2, + Radar, + PhoneCall, + Smartphone, + Waypoints, + LocateFixed, + XCircle, +} from "lucide-react"; export type Icon = LucideIcon; export const Icons = { add: PlusIcon, call: PhoneCall, + close: XCircle, chevronLeft: ChevronLeft, connect: Cable, chevronRight: ChevronRight, @@ -47,11 +54,7 @@ export const Icons = { twitter: Twitter, user: User, logo: (props: LucideProps) => ( - + ), gitHub: (props: LucideProps) => ( - + ), google: (props: LucideProps) => ( - + { - return ( - - ); -}; const MainMap: React.FC = ({ kids, mode }) => { + const _renderMarker = (ping: Ping, device: Device, child: Child) => { + return ( + + ); + }; return (
= ({ kids, mode }) => { zoom={10} scrollWheelZoom={true} > - + {kids?.map((kid) => kid.devices?.map((device) => mode === "route" diff --git a/src/components/maps/map-marker.tsx b/src/components/maps/map-marker.tsx index 25a387c..0ff881b 100644 --- a/src/components/maps/map-marker.tsx +++ b/src/components/maps/map-marker.tsx @@ -1,17 +1,24 @@ -import React from "react"; +import React, { + ForwardRefExoticComponent, + RefAttributes, + RefObject, +} from "react"; import L from "leaflet"; -import { Marker, Popup } from "react-leaflet"; +import { Marker, Popup, PopupProps } from "react-leaflet"; import { Card, CardContent, CardFooter, CardHeader, + CardTitle, } from "@/components/ui/card"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import Link from "next/link"; import { Icons } from "@/components/icons"; import { usePingSocket } from "@/lib/hooks/use-ping-socket"; import { getInitials } from "@/lib/helpers/name"; +import { Bold } from "lucide-react"; +import { Button } from "@/components/ui/button"; type MapMarkerProps = { childName: string; @@ -44,34 +51,64 @@ const MapMarker: React.FC = ({ latitude, longitude, ]); + + const popup = React.createRef(); + usePingSocket({ deviceId: deviceId, locationUpdate: (ping) => { setPosition([ping.location.latitude, ping.location.longitude]); }, }); + + const _closePopup = () => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access + popup?.current?._source.closePopup(); + }; + return (
- + - -
- - - {getInitials(childName)} - -
-
{childName}
-
-
- {deviceName} -
-
-
-
+ + + + {getInitials(childName)} + + + {childName} + + + {/**/} + {/*
*/} + {/* */} + {/* */} + {/* {getInitials(childName)}*/} + {/* */} + {/*
*/} + {/*
*/} + {/*
{childName}
*/} + {/* */} + {/*
*/} + {/*
*/} + {/*
*/} + {/* {deviceName}*/} + {/*
*/} + {/*
*/} + {/*
*/} + {/*
*/} + {/*
*/} +
+ {deviceName} +
+
Last seen -{" "} {timestamp.toLocaleDateString() + diff --git a/src/components/maps/map-viewtype-selector.tsx b/src/components/maps/map-viewtype-selector.tsx index f1a2f56..0fe4cb8 100644 --- a/src/components/maps/map-viewtype-selector.tsx +++ b/src/components/maps/map-viewtype-selector.tsx @@ -15,6 +15,7 @@ export const MapViewTypeSelector: React.FC = ({ onChange(value === "latest" ? "latest" : "route") } diff --git a/src/components/pages/dashboard-page.tsx b/src/components/pages/dashboard-page.tsx index 03e8f71..c45a992 100644 --- a/src/components/pages/dashboard-page.tsx +++ b/src/components/pages/dashboard-page.tsx @@ -4,15 +4,17 @@ import dynamic from "next/dynamic"; import ChildrenFilter from "../children/children-filter"; import { MapViewTypeSelector } from "../maps/map-viewtype-selector"; import { type CompleteChild } from "@/server/db/schema/children"; +import { Button } from "@/components/ui/button"; +const Map = dynamic(() => import("@/components/maps/main-map"), { + ssr: false, +}); type DashboardPageProps = { children: CompleteChild[]; }; const DashboardPage: React.FC = ({ children }) => { const [mode, setMode] = React.useState<"latest" | "route">("latest"); - const Map = dynamic(() => import("@/components/maps/main-map"), { - ssr: false, - }); + return (
diff --git a/src/styles/globals.css b/src/styles/globals.css index 9477a51..d675b82 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -2,84 +2,85 @@ @tailwind components; @tailwind utilities; -@layer base { - :root { - --card: 258 70% 100%; - --ring: 258 58% 37%; - --input: 220 13% 91%; - --muted: 258 29% 85%; - --accent: 258 19% 81%; - --border: 220 13% 91%; - --popover: 258 70% 100%; - --primary: 258 58% 37%; - --secondary: 258 19% 81%; - --background: 258 70% 100%; - --foreground: 258 77% 0%; - --destructive: 19 98% 27%; - --card-foreground: 258 77% 0%; - --muted-foreground: 258 10% 40%; - --accent-foreground: 258 19% 21%; - --popover-foreground: 258 77% 0%; - --primary-foreground: 258 58% 97%; - --secondary-foreground: 258 19% 21%; - --destructive-foreground: 19 98% 87%; - --radius: 0.5rem; - } - .dark { - --card: 258 53% 3%; - --ring: 258 58% 37%; - --input: 215 27.9% 16.9%; - --muted: 258 29% 15%; - --accent: 258 15% 10%; - --border: 215 27.9% 16.9%; - --popover: 258 53% 3%; - --primary: 258 58% 37%; - --secondary: 258 15% 10%; - --background: 258 53% 3%; - --foreground: 258 40% 97%; - --destructive: 19 98% 46%; - --card-foreground: 258 40% 97%; - --muted-foreground: 258 10% 60%; - --accent-foreground: 258 15% 70%; - --popover-foreground: 258 40% 97%; - --primary-foreground: 258 58% 97%; - --secondary-foreground: 258 15% 70%; - --destructive-foreground: 0 0% 100%; - } +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 20 14.3% 4.1%; + --card: 0 0% 100%; + --card-foreground: 20 14.3% 4.1%; + --popover: 0 0% 100%; + --popover-foreground: 20 14.3% 4.1%; + --primary: 24.6 95% 53.1%; + --primary-foreground: 60 9.1% 97.8%; + --secondary: 60 4.8% 95.9%; + --secondary-foreground: 24 9.8% 10%; + --muted: 60 4.8% 95.9%; + --muted-foreground: 25 5.3% 44.7%; + --accent: 60 4.8% 95.9%; + --accent-foreground: 24 9.8% 10%; + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 60 9.1% 97.8%; + --border: 20 5.9% 90%; + --input: 20 5.9% 90%; + --ring: 24.6 95% 53.1%; + --radius: 0.5rem; + } + + .dark { + --background: 20 14.3% 4.1%; + --foreground: 60 9.1% 97.8%; + --card: 20 14.3% 4.1%; + --card-foreground: 60 9.1% 97.8%; + --popover: 20 14.3% 4.1%; + --popover-foreground: 60 9.1% 97.8%; + --primary: 20.5 90.2% 48.2%; + --primary-foreground: 60 9.1% 97.8%; + --secondary: 12 6.5% 15.1%; + --secondary-foreground: 60 9.1% 97.8%; + --muted: 12 6.5% 15.1%; + --muted-foreground: 24 5.4% 63.9%; + --accent: 12 6.5% 15.1%; + --accent-foreground: 60 9.1% 97.8%; + --destructive: 0 72.2% 50.6%; + --destructive-foreground: 60 9.1% 97.8%; + --border: 12 6.5% 15.1%; + --input: 12 6.5% 15.1%; + --ring: 20.5 90.2% 48.2%; + } } .map { - width: 100%; - height: 40rem; + width: 100%; + height: 40rem; } img.leaflet-marker-icon { - border-radius: 50%; - border: 2px solid red; + border-radius: 50%; + border: 2px solid red; } .leaflet-control { - z-index: 0 !important; + z-index: 0 !important; } .leaflet-pane { - z-index: 0 !important; + z-index: 0 !important; } .leaflet-top, .leaflet-bottom { - z-index: 0 !important; + z-index: 0 !important; } .leaflet-popup-content-wrapper { - border-radius: 0px; - padding: 0px !important; + border-radius: 0px; + padding: 0px !important; } .leaflet-popup-content { - padding: 0px !important; - border-radius: 0px !important; - margin-right: 0px !important; - margin-left: 0px !important; + padding: 0px !important; + border-radius: 0px !important; + margin-right: 0px !important; + margin-left: 0px !important; }