From f8da00588b7df4a8c1491c8159f6826d7384ba67 Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Sat, 2 Nov 2024 09:36:38 +0000 Subject: [PATCH] feat: Adds Command Panel with shortcuts --- client/bun.lockb | Bin 318086 -> 327868 bytes client/package.json | 3 + client/src/App.tsx | 2 +- client/src/components/ProtectedRoute.tsx | 2 + .../src/components/modals/Tts-magic-modal.tsx | 2 +- .../src/components/modals/command-modal.tsx | 133 +++++++++++++++ .../modals/translate-magic-modal.tsx | 2 +- client/src/components/ui/command.tsx | 153 ++++++++++++++++++ client/src/components/ui/dialog.tsx | 122 ++++++++++++++ client/src/pages/Leaderboard.tsx | 2 +- 10 files changed, 417 insertions(+), 4 deletions(-) create mode 100644 client/src/components/modals/command-modal.tsx create mode 100644 client/src/components/ui/command.tsx create mode 100644 client/src/components/ui/dialog.tsx diff --git a/client/bun.lockb b/client/bun.lockb index 8cc0766badfe0c3f82da3146adef016e75567014..ca1da321ea6cec44b0b1065dabeb83da45f74f40 100755 GIT binary patch delta 66182 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�e@6kEXloyZL$j~uHn$*tSbZJ7 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%0DEAjH^y$5?d{<`Za2t5h{{5k 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 delta 60617 zcmeFacX(Ar-~PMz4jZ!RRR|ps1T{!CjqHFTQl*FjDoTJr0)zxY3y29SQUnB-I3Uu* zLJ<`afgne2;_4R7@@7Qm{!wgRmtPMQ z^Xa+}nA@jz)chX(sHtfk4?+- zrAGUFbx6<~R>F?3Do#($$r?Ap=UYf^D(G?vFFreCaIPvofn6Cr#uiu>RtKUiXXL~V z8J;!3_Y|Vay=WU!yR=u{x2~P%%U_A09t{|kIxsEA=c`L?$}kvKLpH*SKV%DtjKD5z z>6vMxhNLz3`63l>CX+^FaB9xzku-Ev+L#=*`Mz@A2qqIrmHE@*at#QqwiyPdXAR33 zlsal~PTJVC5umpHAHoMbb8tdcWkU( z3f90iA|EB?yQ4w+LsfjfE3kLNYUg|m<)3AFTzba9bkb$yq>WF5>);MFJum+!0xB>& zb#!{{u(aH56rhazs@Z|a7?F{knv=5uT>~>M#?6?27}h|(X!Wtxy^1qnl{cVYB6?IA2a0;P=)UhA)Z>xE8sI&8UODJDvO_~A^%=Z9Y#nEj)vv?v+MeN zRFOXhrtSHi>Y?LS`Td;(QFZD)z>-lh<6t#oR9fo5(F|12`d)iqbYhCt=~xO&jT&SZ zST9(^T?bZWJD7U$SXk3D6jpEB6R*-4EY}|AOfFWnaoa{-SLeX=Hoq0D)Yo0@mAa@g zj(|PK*GRDII zF+&)~%p87jy-q=D@#O@s0iV;5%GhVAlkFQgJZHQ{@=J6zIAW)c&&bjsCwK7t z@%j#ozk1RTL33Tdqt}znjLfvyK?8i1vDJ|8VWmsW$sI9pSjOmG6f9@l+{qj2b=Ycn z=`LP{OW}IhXFGdy{~pY&g=Xt3q!=qk6C&Hrb2?|ybXkAPaf&+^LKy&h!4 z>T#q&4z|*Lafeq?LT_)#8^IOO?H=cYtY~8DYx=i9B9a55^AU#r+RZ$5tdyXmb1k&?i!gvIcd0{ z&-VxU<^9Ld#f=Ag6^$O%@&?5Z7&CaVoH!#bEiJB9OW#T2HY*m;wVjw;B`Nq+)>|CGk1LD=tYbdv@hBhaAc*f}FIK)tA zRjJx}#nIKl%NgEC{S24H{=wSW86&b(-XkNua)!cc?^sx_(hHVL+zhMT&0q~&L%0;2 zm7O*sm9hfNpW30VMDab~3c4knW1I-&AA{B5wPU=D`>al5{>ungWF$kR>p0Gvk$3D& z#$jtQTpsJCj~of6Oz=8%9$oo9n&`!Qw|M8B(iQU_y3gxVcI?P8X=BoSZ6fQ!3FE_5Ifey(WzqlNp*oFYy$V?>442P0%vKZ`#KRAJ`7#H!Qnc^+sa|^4+o-e=1APNW zZqKwA)~TJ#^wwfR-D0B z!ZkCzbs77Jx3gqptLK?By#i~Y%NysTt7jc&dGQa~bp2p?S!Y<2G-kF}-gj^NHrbE&r64t^};=?nW2iW;te&*ZbM9cBv9@MR-V7Hv5#%HvwDIwVY;@gv%{)^XKIk z_X0ezj84xQl;cYsI4~`HbdK)=x)Kh|;sJ#Ij7=TIWcYmFSqGd8*CYNuSo0lm%#TQ; zih4fn9WuscjTpvO?i(|TJ(g=Hy2^cExf+b)?L*MEQH@H(&pqSyY#v+zdkU<1EFiPC znH|r1BXkS-G)-f8z{yA(ROtC*2WJeYC|~4M962TTdd?e}|8kPOiUJ}>-J>l$k1Vyq zt6&&UR65txaXMDGKJR9-t9g;*-T!jPZtP8zJ?IvmYa_?W$U!-B989+3Fy%$B*2wub za_(L9l6Qu=4`!V6^6w>3iv}dZ4dBRuH*!F(j$RkNZ8Pu09XZKIPVkWfbL4;>IXM6K z2WDUXPc*QRCTbi3xnzTlUPCItn(4?p+LFXzn|2{k7mg; zv7@(o6-Um&k!P4l1BPdf8=f&FeRMqKVHH=-0sN@zEXL zB8)t){re-szdwBKddqX^^{_@V@-P;8h;knyV>5E5zUdp{_9PdDEyh-dR>A7PK+-F|$Gc9a%C+-`?eU7c9aeEEmK$5H zWckncy|w=Xtmb@Xd57f}Ek9}bVauZ|-($HmtgSuX!O z!1CP}Ezf~fz({M~4%fs^gyq{S@e&Q__%FPI?}b%y8V?e>b+10+x#lvKkh|Dwu#iCZau!eC%kj|7PvC$#*E5{)k!;h%!u59S%cE5P_TT(4=euIm)=x; z2A9E(Ipy(N*h;6yt3$71tAjD8^Sq%Ob=u=JSQ&k1yawr=St>nSK?XJSaaa}oPJ9)( zB2%Ne9*bTZj`XxV_Ep#&h_3@*fVD_}!#7mU65Eg=F+|iwxE8Jj-$DWn2y;aLA+SK8xgVL_TR{P7tmEmU8qvE#x=Jn^t3*LZ!YWa0o z?SBrw0-g@58QGqGZGImD)ezdk+SnUgy9%rdO2Hb@zkXZyUbQcaJ9FypubcdEx1DR} zcj?o9$>CK`SKWMJ`b#a#w`gP{CblUcg3!Du&17w`EG;o8nGE%do$pbFpQLKif%YmEwQK$>nE7XH%<`P<}M4k1T%G z6#NdWwR5>ylK)C4_lA_v5Y~d)5pZi>fpw#smYPF9V6~3qr2O2tl+Yavba%93YCz~Y zEH%gL#Sd8FLaPzJBCEJc_78S8#ixXxLsN+X$KNV0^tH8$Ig{tdN8?heI^eWTi1TMU zn-Ws|uQ(SIQbMPQ@rG)9d|c=nTuViiaElm?r3NtQ32~wASQ@wz?iBo9#z{;HhvLe5 zB6W_7cQz%Z_;))OlTt!|p{spChrargo!r(b{zsin{M_MOY@HIgP|itA4u?9jM%$3g z?~eFXOkolR}!WEb0}gwC-q^m5D4u-we5>fn~4T+6XkKBLYY9JN*nM}yme z<<*=x*BgQpWI4&blY%c0YOhe}FG8x*oAI{Q3VTHha-H0EDS<=PoPu`Y&=o9cb(nct z6(5bEi3vIWa9qe>wRdZwb%B#H-h!wear*7;;&^$S&^{%!(`wPKbI#;OS2(+&y;$;t z;_l2>t?5~wAKZqeIb%5`$A#8o-GSvbxfENAx*zQ>ypGmlFc_N0vD7)&2LoT#atb^SqmSZ86SgYqU5N-)mZJFEiID*f7EjlyM#lr zSNeQSi1s^^Q{qB*Su5zSy6MivE-9fsXsVrtG2?YOXYk~aUr`?AzsK3sH6^qG&1-{p zqjOmD0-DYyQ{TzGH6?iaRX*Q!@&Ny2=i;p?p)J_jvD`uR*K=~arG%z7@cB3>QgYjg z@y^9=DgNS4Lidzl`-VPWTW3)R z)j-O6*ZF*1vC6nLY{AmNdCe>p>$wxdm=G7d1?wJn!F^AtryELOZrxDm5kl$`Tg$e1 ze-kIMcQ|y*^*&!WGR_Rh z@)DMuh^b}IOiuCE7I*PBal!FeUEJ03jY4h-DlZk^)nIyC-DWI1$=r)7G5hVDZgZg{ShU_+HCSw&B35uT7W@8Ft)mIt6OsMZoPxx|AVJubc75WvH z#=~n!Q)(MjXg!YQ4M^L`@zEIGy};i(4yV4DmcpGhVQ@<5otwQ~%crf`U)9+(IK|(^ zxya8=PQs9sQ1M&5JEME93AM(;r!}sO-Eb`RoV<+ITZ)s51kT^$6l8@1T{}3JvcjP! z*e(N>bcP~nMkiLP;hk)51N zBg26Mot(r`;b6Vay7ymhnH1{D1ZkGNdbVTrcP?*k9nGeo`;xbxjKdmQX!%L6@uqYA zgI@f zM^C3)|tIXb4|y^-mNB^URsd05ORRjcKv z?rD>ONj3xdL7VsmBSx!Vp~cNEcu{YX7E|8J2ZO1-w81} zOxmQr-mS)~^$3>y*|V<4(KQ$>&5rTW7Rw}Mzs?SGObsB30 zmg1Q6;W#6f@_CCtX@Iw*c!N6*tEn?-ed}V9ok?x*KAXV12PO^l=GVOkhNfa^A+w}5 z$46td#Bk37!Sh%*=;#x=W>CaI{N3ULg9bU5CWix$4{{P82nViCb0$0x4((3!?tbMR z|D?E3V6f+3-ucjAF;8}PI)|kdL;Y>yLal~)_eord;Tem?)YF=_L*fFz4sjA63J02} zI};uXhceT>PG8|{&x#AIO?NI4_gA`;I3*ltk>O035)KW_@MfLttfAFdDHK-9J#603 zYM0A%d&Y0x$7+q`Jy%s8<{d-ay)D=ai&fGlDX@5$lQ=aT3Jfn?sBv+j9$0cfj(jcS z0*?-NE|KJ2M2#G!zZxHnA?NdU<6fDb>v&_a7)#^LA&MR1kSu3Q*Q8*n5fq>UKpfYMm6CMaVXQ?rq1qfh^vP|AwWmdz~dQN?c%bwv#wB9QqYejpW?O?REZ0&&|F2!Yb&v7Qq4u{H(_9`Mf+sXr@olA%Z z5WSU0DS`T9oC%NO3uC+)q3F(W!Pl|a{BYDuR%h9diwlIuIuquE1LMa!1<CqXbQh62kTb`lqaLnjcslLYVKT$M02veM{FFc+(dp4Wpf6H0WpP~8uN zG)l}5eXl#M@Yx8fCzcndTg)`9n@CyOeG=P^#nDP*Jt!_zdb;OdJcHd8AB~}G-mz~s zmNyF92e?r($c6v@NtC)uF1Du6W_Y(g?~Xk75zlW};mp^yGriGc*4d9ISc}=i2VS4) zTv`+k1!s9aTGE}wepqT=NN3yNVyqk8Bhpv1oJ)(tfh%V_iA%zPnX{bcwPb{_FyJbFx)eXz@(W6)iSnkAx8qM`Q z*4-Qe1Lryg%fg|Nk9m6p%epJKRV;7O>1iwEL>i$Ty9ZV~w<0;HwVKw#g zFl_f1T9c>5gkkQE6J;`H`mSwNQVomToGos>lBohl78D<+VtzP;r5C zX+=12*8(STWjOTm0hZ;vd!n+#sJh{<=7 zlahkZ5$fX(;h%)M6n3)H;>e)Ut>6T#?yi5nN2s;i3GGzXmPBf6y8w^0mUpL^iRDcR zo*dY*#JTh$ch;p|c9tJ^pYT#=!b{=MC`509(&)wewN1t{ktYz$$dqsP<(k@tP63c?Qnz!6Zd?g&Z zfY{!xukF$JV$ZMzIG59tLN5_gN6WY;latRliR;3FxM!US>%yT4&qmgVD*gaVi;are zu1h@UO-ImsP{N8MuB4W8a5)weken1cOsF|JOOlPP-1FX9*n81366;3dusXzr)?xL* z@_eZ3ibyB5DP>`GC(hjhf?KiJ(z9DfuPi*twu%c3S?OGQEgV?3(n;J94t+|T{DZe` zadClitDFMFH7rQCU0iF=gNy;EK$)E?cv69jKstqm->b5h6< z(gx-oe~)0P^=z=bJd1n5>zR9!3gu$;C(dns=m6G?LTlif$W26TScj!XvlTxU7dnll z(~WnYO?uIrC(n8c>ki^*75l@RFXh?`qa1xOU_7(DF!3mGw|Bfb-d&8EGG0rtb4pFXnyRgk;fU`#qzN3 zEKGR-%N9votM!o~QMcz6TFUnemb&H*SLfG?TFbBo6vjnu@cG7jwX;D@#A=7-P1KDW z)k$^t8A9FNP6jp=Iu)DUomh6TX~W}K%FWR8{$oFuH)R^$_yXGC?j5rU4R&kP9#n2~ z;mZt8<&&}Gq~6_U?`Egq&2T8~^++Y#zmAW_&?2E{-Qt2@VeuY?x8hfAQRs5(q+mKB zeyc+08A3d-5jsPty&G!z2K8xo3O+{YPB(OlP#1T9jNj@xi1%`GCRQ)EF5Efv6_(dF z-BFuvi@5rBcB}#0oC)uSLj{Ol2JIPTw>y{K4F}q9cM^AogOj$i@}1=FNrBh4I|T^8 zAv9N;LXCHLw+uEq#-JaT7K?k@3oPH^6r_g(=XW@l(!-&f-tss^6l&Lh?(^N|Y7Y?V=Z20D%5Xy+_WOLPZfGSTFShsrpKpk(WfDqrL;DEb z>xP;gjD+S8@^YN^wEeA%9f~yISwg*)A@Ii`XTrg7aQ+us`jZZFkUy*eArxx+rO(%j zN#n%3ir)$y@s=Hqd|SN#h*NMV9J=!>(t0k$x$X( zUME6wLNK2=vmLNGEWy&u@MOZ4ei+N!4%D1$k9#BMb$A+93sUkMLFRBX zRvXt+%3>$Hl-$`VGmO=pICn4tvrjmez6pm;BHoSYy@k8w2QP^?!3Iks>ptuUcVqE9 zz$0taNpHvF4H-B0j#zC;MIHuX2G;FZ-gDNGlg_2@!oh~8Xos_9c~Yo9p>}TK?eyyz ztU~__9>8kjT<+gG`n1;x=7MJ5Z!K>Q-@v*tQhq3OrqGG#?oC*_E0uNMW=z1+{JL+v z1FxKM3QmMW<$v^!s>}cKHc&S_ecPqvOGpfShaY3|cl-aK+%4t|N{t-6*!F|=+84-vv2D1iXO!eS`)v)9&g zPTTfzf!04e6HbR4twkJ3xj~=L=LeB%A^H{Qfqj#IJyEIPCZ~V1YJsumolB>~q2JDX zQ{%m>Oa7(M{W(@n{KY9a6Atb`Y^$9ibjz=i8)e&e@zEF>F8AR%@WroA!H?lUo!^{G zKZZluzjcdlg~)kV}FJ>I;^Fx?`>UE$rTx+RQ8!OD4pc0cSazBWF0l$2Y-rnM z(^s5`$J}U-Rl(!d7OOx5RN#D|ODubV46dTA{0k+TS!MlI^OS6nOfIpam&o7}tNLew zs#yV)ekIT)mi~eauA;1TYk>Ggpi8XuYk~Av+`ne@0&c{5!n*zoo37>jbzEmC@M3-c zC#?Fm0M++~<*l$TvGi@0x5K)Mvf_8}2e+R)2&kk2(c({T(YIHw5=8%5r-)SN&O|k8Q;*@DEs* zSQY*ygR3a30e%%KcKt*F1Ze@wQLq+#30OU^WcA8cuV(ESSeIDA>innxUkfY$^;U0c zxf!emw6L7lia>dUn_*pIwY&qY0=ii4Zn>9@?+x?M*GE4rE2vMF=@Kh=r?ti9ursVa z)YJ2PHt=6qizAx^+8oAv30+ppCsA7UxM~QE#wtdTiKypsHE(}`8_Z&tr(b+Hr+!#g zx%v_pU1Hh2tZlirE2yA5Y=Yi!9qh5P&E;zTI;M1tzq|&@H<2IO-KNQ~tU{+-Tdc;; zw)X!ZdyZ1HKsn+(ThZUKhItwBYT(m0omj!=tSwgOS6ExD^ebUWYplMe81<`XuUO&l zSn(T(*Sv0lRnQxjw_4r?YZ~8#Rq@-fuD@f&ziZ>)b;rM`5Q%_Q;Ct2S6^042vp=f>mJ< zR=U#GE(`lizZ(9l-6^hssccnXWxGPr|AE!c7~-|C>cO(Ff>ljJSoyDpRo=DMzRq&2 z(1cXZHmaRQz&-tv8x^I=u+ptYyM8pzqOdN9Z8kHhl)rLZ0e^!XNDVx?OLtDM(h zRa{{C4b6zIH{cTHbS<7{)v*t(T$EMLM^^vuSV=y$>BO3m&#e7-toYAuJnY?_4p>2~ z1P85Ml%*fCx>y}QWz(Owx>y}P2Ww_7!WxJ_Y`j?IT(-KexSbKruM$RSIR1?#g=~Cj z8!uLw6<`%u5mr<+erV*XTfK(0Yr*{U)#r!uHIgCL_`7!txGF+t8}a`Z=lxGsq~mWt z+kyX0&ig;j@V}K_Q`w(}=)^M&R+~oh<0^Qb49mrJI$LN3vF2_OtT|n5_5Y5QZi&se z%%=a}Vb!x->E(Y4sGw&oKWq6pCEyY({&`p#S6W>xeU-KUjupS!#)~yFFIrpdzNL7{ z3Sw2T7FNbrtS;8Fdd=EJS?M-d{l8%Zf^{)y(vw~O&_QUG&7qHgrQ5#>BmG5hG@iACC^$#}P z-?7R&L%bS%&Zax(?!QF^BGiDNVV%R=QvZip4fdZCamjk_@5WzzJFeb|MNoJ_s;{Uu5|L29co*4dlA^y(`ab9u!^FsWe7vk&&|GW_IY+ud&Pw+o4#C3=H=Y{y+ zy%^V9-hW<*|NriVxZl5F!Bzg!oz0?Le`o(8b0XK@+jPkGmoZ%@ARIOeCLmmpa9P3; z({UogijfFwCL$a)7bWx=h0yOlf9Jq4pILRE{|*zKgHmP^%C|mq=OmPkQnpC>-e*eQ zkCHwbCG&oi6FyTQrP>&jT6riZeP(DL%1$YJq@4Dd>iH<+$D&NiNBPlb-jmX397^nD zlyg2aVKT~oDTk%}>@(LqfHG}7%B%-y@-L>@c$yrai!fy@!f$4}gyRyv9fxqy>>Z0R ze*!`)3BQ}k;}AMbM2JU4zt65f_j$yAtuFzrEvJu?uhn3zWp;vYho z^aw&#Q*S21aS2mqBE*bA8YzL2;*lWY>{xi2|bR`Xcj`|;|R^nCJFl`)S8FT!eq=t zm^K?>kAzkx<_U!OM-e7Hfe>eQNjNSc)*vL9T!S!w4#HsxNv839gbs5NX3a-PHU}hJ zkdV9pA;nBzfUx2*gwqn*nuI42`Zx%SoU z^mzzto2%XK!MF=}3lv#|>)%0DAFy0_+k_;=Md7& zg69x6O1Laxi0Sw|Li$pKHP0htn2QpsEko$H0%4e0xdLIQgfc4;GELu=2;-kd*digz zgjOLmT8@yp3Sp$#Bw@dVTB{LqOvY-2Y0n_+kub)@ynqn@EW)H05XPBZ5{^rVU4xKo za@Qcte-7cWgo&o{iwGT_N0{{@!X$G*!UYM*FCpZa=`SIySb=a_!eo>1GD4q~2#a1u zc+i}X5WNba>so{=z~pX3n7R?LhPFen@sMT2=iY@I4ohaY5W#Khb;)R-a^=74oJ8l zA^B~Dt!Db$2rJ$|I4xnjNq7gL&sKy*?;yNsPDqH}hS2q0gtyItcM xGdpa({U$4 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 /> } /> } /> - } /> }> } /> @@ -55,6 +54,7 @@ function App() { } /> } /> } /> + } /> diff --git a/client/src/components/ProtectedRoute.tsx b/client/src/components/ProtectedRoute.tsx index ad8023f..b11ce3a 100644 --- a/client/src/components/ProtectedRoute.tsx +++ b/client/src/components/ProtectedRoute.tsx @@ -2,6 +2,7 @@ import { useAuth } from "@/contexts/auth-context"; import { Navigate, Outlet } from "react-router-dom"; import { CopilotPopup } from "@copilotkit/react-ui"; +import { CommandModal } from "./modals/command-modal"; const ProtectedRoute: React.FC = () => { const { user, loading } = useAuth(); @@ -22,6 +23,7 @@ const ProtectedRoute: React.FC = () => { }} /> + ); }; diff --git a/client/src/components/modals/Tts-magic-modal.tsx b/client/src/components/modals/Tts-magic-modal.tsx index 5fb1c4a..1d17173 100644 --- a/client/src/components/modals/Tts-magic-modal.tsx +++ b/client/src/components/modals/Tts-magic-modal.tsx @@ -33,7 +33,7 @@ const markdownToPlainText = (markdown: string) => { export default function TtsMagicModal() { const modal = useTtsMagicModal(); - const { text: initialText } = modal.extras; + const initialText = modal.extras.text || ""; const [text, setText] = useState(""); const [loading, setLoading] = useState(false); diff --git a/client/src/components/modals/command-modal.tsx b/client/src/components/modals/command-modal.tsx new file mode 100644 index 0000000..784553c --- /dev/null +++ b/client/src/components/modals/command-modal.tsx @@ -0,0 +1,133 @@ +"use client"; + +import * as React from "react"; +import { GearIcon } from "@radix-ui/react-icons"; + +import { + CommandDialog, + CommandEmpty, + CommandGroup, + CommandInput, + CommandItem, + CommandList, + CommandSeparator, +} from "@/components/ui/command"; +import { + AudioWaveform, + Bot, + ChartColumn, + Image, + Languages, + PanelTopInactive, + Plus, +} from "lucide-react"; +import { + useCreateChatbotModal, + useSettingsModal, + useTranslateMagicModal, + useTtsMagicModal, +} from "@/stores/modal-store"; +import { useNavigate } from "react-router-dom"; + +export function CommandModal() { + const [open, setOpen] = React.useState(false); + + const createBotModal = useCreateChatbotModal(); + const settingsModal = useSettingsModal(); + const ttsModal = useTtsMagicModal(); + const translateModal = useTranslateMagicModal(); + const navigate = useNavigate(); + + React.useEffect(() => { + const down = (e: KeyboardEvent) => { + if (e.key === "k" && (e.metaKey || e.ctrlKey)) { + e.preventDefault(); + setOpen((open) => !open); + } + }; + + document.addEventListener("keydown", down); + return () => document.removeEventListener("keydown", down); + }, []); + + return ( + <> +
+

+ Open Command Panel +

+

+ Press{" "} + + K + +

+
+ + + + No results found. + + createBotModal.onOpen()}> + + Create Chatbot + + ttsModal.onOpen({ text: "" })}> + + Text-to-Speech Magic + + translateModal.onOpen({ text: "" })}> + + Translate Magic + + { + setOpen(false); + navigate("/imagine"); + }} + > + + Generate Images + + { + setOpen(false); + navigate("/anonymous"); + }} + > + + Anonymous Chat + + + + + { + setOpen(false); + navigate("/hub"); + }} + > + + Marketplace Hub + + { + setOpen(false); + navigate("/leaderboard"); + }} + > + + Leaderboard + + + + settingsModal.onOpen()}> + + Settings + + + + + + ); +} diff --git a/client/src/components/modals/translate-magic-modal.tsx b/client/src/components/modals/translate-magic-modal.tsx index 75de171..694271a 100644 --- a/client/src/components/modals/translate-magic-modal.tsx +++ b/client/src/components/modals/translate-magic-modal.tsx @@ -52,7 +52,7 @@ const languageOptions = [ export default function TranslateMagicModal() { const modal = useTranslateMagicModal(); - const { text: initialText } = modal.extras; + const initialText = modal.extras.text || ""; const [text, setText] = useState(""); const [language, setLanguage] = useState(""); diff --git a/client/src/components/ui/command.tsx b/client/src/components/ui/command.tsx new file mode 100644 index 0000000..0ac9af3 --- /dev/null +++ b/client/src/components/ui/command.tsx @@ -0,0 +1,153 @@ +import * as React from "react" +import { type DialogProps } from "@radix-ui/react-dialog" +import { Command as CommandPrimitive } from "cmdk" +import { Search } from "lucide-react" + +import { cn } from "@/lib/utils" +import { Dialog, DialogContent } from "@/components/ui/dialog" + +const Command = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +Command.displayName = CommandPrimitive.displayName + +interface CommandDialogProps extends DialogProps {} + +const CommandDialog = ({ children, ...props }: CommandDialogProps) => { + return ( + + + + {children} + + + + ) +} + +const CommandInput = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( +
+ + +
+)) + +CommandInput.displayName = CommandPrimitive.Input.displayName + +const CommandList = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) + +CommandList.displayName = CommandPrimitive.List.displayName + +const CommandEmpty = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>((props, ref) => ( + +)) + +CommandEmpty.displayName = CommandPrimitive.Empty.displayName + +const CommandGroup = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) + +CommandGroup.displayName = CommandPrimitive.Group.displayName + +const CommandSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +CommandSeparator.displayName = CommandPrimitive.Separator.displayName + +const CommandItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) + +CommandItem.displayName = CommandPrimitive.Item.displayName + +const CommandShortcut = ({ + className, + ...props +}: React.HTMLAttributes) => { + return ( + + ) +} +CommandShortcut.displayName = "CommandShortcut" + +export { + Command, + CommandDialog, + CommandInput, + CommandList, + CommandEmpty, + CommandGroup, + CommandItem, + CommandShortcut, + CommandSeparator, +} diff --git a/client/src/components/ui/dialog.tsx b/client/src/components/ui/dialog.tsx new file mode 100644 index 0000000..01ff19c --- /dev/null +++ b/client/src/components/ui/dialog.tsx @@ -0,0 +1,122 @@ +"use client" + +import * as React from "react" +import * as DialogPrimitive from "@radix-ui/react-dialog" +import { X } from "lucide-react" + +import { cn } from "@/lib/utils" + +const Dialog = DialogPrimitive.Root + +const DialogTrigger = DialogPrimitive.Trigger + +const DialogPortal = DialogPrimitive.Portal + +const DialogClose = DialogPrimitive.Close + +const DialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogOverlay.displayName = DialogPrimitive.Overlay.displayName + +const DialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + {children} + + + Close + + + +)) +DialogContent.displayName = DialogPrimitive.Content.displayName + +const DialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +DialogHeader.displayName = "DialogHeader" + +const DialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +DialogFooter.displayName = "DialogFooter" + +const DialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogTitle.displayName = DialogPrimitive.Title.displayName + +const DialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogDescription.displayName = DialogPrimitive.Description.displayName + +export { + Dialog, + DialogPortal, + DialogOverlay, + DialogClose, + DialogTrigger, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, +} diff --git a/client/src/pages/Leaderboard.tsx b/client/src/pages/Leaderboard.tsx index 5df9652..141bce4 100644 --- a/client/src/pages/Leaderboard.tsx +++ b/client/src/pages/Leaderboard.tsx @@ -49,7 +49,7 @@ export default function LeaderboardPage() { const { leaderboard } = data; return ( -
+

Leaderboard