From 3b2f2d3d2aaf9e09ee6a127ef5390ad4dd456337 Mon Sep 17 00:00:00 2001 From: ngc2207 Date: Tue, 12 Nov 2024 18:47:57 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0chat-support=E5=92=8C?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E7=9A=84=E7=9B=B8=E5=85=B3shadcn=E7=BB=84?= =?UTF-8?q?=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintrc.json | 5 ++- bun.lockb | Bin 182910 -> 186311 bytes package.json | 2 ++ src/app/layout.tsx | 2 ++ src/components/chat-support.tsx | 44 ++++++++++++++++++++++++ src/components/ui/avatar.tsx | 50 ++++++++++++++++++++++++++++ src/components/ui/button.tsx | 57 ++++++++++++++++++++++++++++++++ src/components/ui/textarea.tsx | 22 ++++++++++++ 8 files changed, 181 insertions(+), 1 deletion(-) create mode 100644 src/components/chat-support.tsx create mode 100644 src/components/ui/avatar.tsx create mode 100644 src/components/ui/button.tsx create mode 100644 src/components/ui/textarea.tsx diff --git a/.eslintrc.json b/.eslintrc.json index 3722418..2cfeb98 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,3 +1,6 @@ { - "extends": ["next/core-web-vitals", "next/typescript"] + "extends": ["next/core-web-vitals", "next/typescript"], + "rules": { + "@typescript-eslint/no-empty-interface": "off" + } } diff --git a/bun.lockb b/bun.lockb index faef72173e2eed27c3871be14373b11c8521d17f..06a4eacbe9466a7c72cd5e542b4445ab370f00c3 100755 GIT binary patch delta 33193 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 delta 31590 zcmeHwd0Z7$|NqR$Rjvx+4g!k1fS`bE0{6Ow8{n>}sUf0V1VnJ(z-||=U;(b5o^FI6Me9oCOGncs^yinuz z!!_1~2F@Oo_piyl^UftNUa{i*?)QHxp1$*u5cg+}e1ExP%pV_xoj!j^Q+T|!c1V-L zuK!XEMNzUQj~SQIAzhg@&y2~%?w<>zW3ALe5b7ZBxE<&P!qE59G1%E|}dTp&qQ*W4zW&aFW8!|0-dQRG; z^vr_E>G^2|8A?69pVqMOP93vLlQJ`M+3R1Vei@QIr~=8{Mn7Sa)366kkmJgA<)sxA zMASE1_$l}X;NOR2i^oA>TlPb;75gNghJoi;4unMcg++tB%?xcIX%crIQ~r(w?9^81 zbe3XBR=f}CD2p4J4J?IZzW=ElD}SV)Y>-h-p;EL1En|zu`kMt0mvU;RD?JlEb`@ky z%YghHJbUz2W3%GCv`LvE<1?mThk4lJlaOp^lK@3QTZ`NveIb`alD_~Cgt3aUT$5ZV zP8pLu1^q`LEq@$!<$b^~6(kGH&qzz3gz%kark<1sD+)SWG!PQTDvFnSOUOdDtcHxZ+{$eE50EVIASB1MATupL4+WL9 zHTj1j*^~K@^o^1bvq6&zvR$K*ZajEacq|xG2(lk^R{T12^ra{PI?LZ2jQ(RdidutU zMRSn=)-9?n^>nG4E8)Y1!kEs|32?F|lU8 zMHnCEKLwrn3Z~}6brfaFWcnp+>M+f7I>C%z1fBIc>1=Vql#J|2X#BSim@Pg8$&C9TX}=|qMneno)985_1vw!Zxl@!Ez_XmE zAvs>_A(<~NeL{XN%Y{zQL^T;S(O%T+0j}tI1|X;PG&9O}C|97<)U1RBKL|-r>(Sdx z-wKiip6soEQLRC;}{0y{vIMVSH)&_=W`};tr0h)|3^*HDpk1-R{C*`|xGsa|$o;*%b z^v(9#+PabYi}qH96ETOGWC&y<$QH=LA*~A881mN?)0uZ*>Ez;Z0y?|)IV8LKES4-b zVIw4~9)X<*WnW0T%x{ov+G|Mf1NkT<%MCE~!Xgg@Siq;S6DyvM26AjxWSO(&EMzU{ zRa_=NZbIG|+UymaU0A_&NLG*`<=6@NAz1n|gJgOy$;alH_51{#%j*EhI#@xAHX(u* zxQ>b&Kvth%T4J`W_*>|7;@mv5qH!pg6^?{X3nW8wT6dH2pCCOuFdq52?&Kl8C*(lr z>|lbF!Hh2iQ5yl8J{K)wPczXF7FaBMa1D|zJ_X5!9D!sy?4R;8#$`-90G;Vw1!?*D zY15UR(Aklj@GbJgrY+wnb9daGw*}x)5R+taT9%e|s-dxiHvmohf=P-8|-(@TcATe{E zneiATd(?Zrsh2^rrF|Ee4M>y{rZ32t#NACu4wu*?NXH(&2}w)rfTZcIi5G;1u!D6W z8Gi!}p#EoJvRPr{C1%fSL$W98QZvEr#byK3re%a+mCm>boh?6!e018fWzy8kO-pcN znd2&$lvOYxHxjdCB6wQrs7!YVk{y;Sfl~M^3gQqvj|grGo`9?l`40G|kY`qz4LS6XkiSE1q`Ul`>QcP~pGA79zf(J-=|PPh_KsB)B?g67(RVkCw&z2`DW%9w4{IE) z9?(l0JMCA&;e3r0m;9sEDBab>X`kt)C_TVc)h9NIR^Qc2n>f`PdSHN4?Weo&xmhm> zaBBay>16>9wWl7~)Mv4J9yTw=4N50HXJEX$WHtQ~a=3d~2AtS3S{M-L2isvC4ypwoU7%TqjJFe(_SR(dJ8(QwCd&b|p6 z8)`Jd_9wIy{amv+^#Q#!$f<7A1B0Dv8{LJ^*?I{+_vod;PJ4CC5jG41fZ<4m*3qa1 zO}DSR8wX$c3L4Fa0f9*y>470mb(-!9acURq>Dxmb_Q6;e*qmy{Sgz9pL!GwI!KLcw zX2iQ=v7zDY`ozF!`xI!spqWGQNdv<*8^F;`#|sOMRwwEu?VR>Kl5;n_r4ZA>v_75p zAT*9sRbyo8VD3>f$EiOw8WN6;>Ry9344UaZb#Mw|m)(siFi>i4`X!Y4B(%Fe@>?T4 zDBNL>z_P(=-HqX$2+ed44)$)TRW;%+L1VSXFx$Ig8^Ma~`tDZI_Jz^pJV+?g&VOqJR_7*bB42 zt(#bGf`PNALvt8~LsPfvt|+G(qnF_G3B5E5(?0-?W8{UW+7huc_R>QF;?#|LNwm}c z8T4?(!d-%*?OHQavl%n5gYJrP`m6!Rc?)m(%P~uTJEpaddvmj+_m3TjSmtF$3|aYM z9c^&0B4id_wY{Q@GPn$c1{&%1B9v}$eqk1u zhmgsAiI9=k-W;Pl%4|Ylv~3==G$YqZgffg!j|et=N2ho<1O~Hk?N)@oy^F&Z*#XVh z&rOYYM}SUh%szFm?&|8a*MPZA_s3*VN9v_ro$3}nu$$BFjil_g!g;I?(@VNJ)%AKQ zVvZw*%d)vRwTQMBM@$PfQ!jbIY2OCUY2>9p{sJu)nlY+sfbL3k+Sj50GzSxg-v1u7 z2hH@s(e|cDY{p?dQ3vU+?oKsVFX`^Iz17iJK7->_4?VDl)1Dq@&M3uLCO?D5>56f} zl=O=?dy7erQu^zGJ)QPv!1Xm!aJ~N{Uf^^z2)`lViqPj5Z2 zk5hH&E`09POZqtN7rI&2<9Kw`1N%Ddryj6882z@lLNm=}4feI?LqisKtor#w04cw&UM$b`a9IFdP#q$Z3a^H z;A>dZC5egYwM zg0(h|)&}*~%LY5_kM&j*)Q`r7^@z6JfYwFN@sHCIlJxCE9QI}Cq}jIJU83zDLhFab zh8JpSDSB3_!(Ij6z$C`%uXXLKmx0^`lJ>!A5Z-tb8od!oT1VU3qliv=NRK#Mo*4>= zv+qKPYd4xPFxq||8r&4=!@{HOZTiCqW?T>08X8j?n>cM(e?4fp!*0WBWVV4Dpa%x% z+d(b`ImO7w{f);!vrN^mFmqpr#(eNW^r#xvaK@Q~90x5% z4{01{FF?q&!o)Vw_7|jP`t7gKx^S0k4;g0W#`Y)%^+03$a0W)nJE56v$GUDi0}bvP z6lV{|d4@br=17$-HFLGw1AVFR9RNEK zY{}0+V=2baX)Q+SWn&%og`-Ss!wT@>ebD0doR)F+YY4FchHu-GA5s+ju@Y3d13@?; z?9O79H1lL?jEOchP2ZmBupa`+6R%+?t?_7MN(~upb{Hi5|6kDH^c;1RSu@>QYuJ64 z)QqOuc0fziLvrHX5pWn;&p5u&V zqgkA`V4NP5?XW+dg;PFK!E^dzd4PuVIXvfq@unAmZxL-<46TD6GA-T>0W=^a&aP&c zPZT(Svs`1NXG5cXamopd*7j!WS-B3|4JP5zV@t|0PQzF+UqlF-fyQw*&s?5Lc+E8u zA)NTb5sOf&k)y=~Sl#f|1qhjI#qP#2ZcuOlL0Xzb(A;*HaY z-;|0C&w|!b&k2mvo|>WuO>x*grkc_4qQ=p-3D97-z<75Aa89Ckw~5y5)AXRJ4qN|e z#+r=Qu0sfm2U~!FD}$B<&78+k(@ozqSCtviXlwXon`qksXgKr2o(*P{r-FTkLBpja z?D;4{*zTc@%LolK>*yA3OPWcGzz+7O5aKj6cOPe=^|k7@#n0kkay?qdkdbOPT6hK; zTWGea!)!&tbdjwuhGtq5DYeV9^|F}`d%rp6M8*|AwxUbt=vlKI_76c~JApIXL`O6p z3hHGb2NhZ!!MV}?A~en^b3wldjaD?Lc2rS$Q&HxkB0Xr1!~O|KCV_pTa2A_ut`qRG zuFmxo#G_5*jUlJXo@RgJzBl_Z1`N8~%lPa2=r}qpV>I z%$3y~tw--_I6r&`Ee2(oadj3}(6n9)_3d*VwyhvdSH6KzijjCX=4;PI=6p4;zZXKo zq{KGn1VZL8qD%I;#g?&g3fIJ9J!`(hK4OWv%AnS1G3pY%Y`#PDS*iyuaM-6TwYrLF zVLu2h0X1TAnjdYqEi;XRQ!wnAyi5;T=+N3M*RvKn?2DG0<6x}uwgb@O^>eM`Y|095 zv|v&#YK5M)$YGxZ!t^G1vi8Oby$ocnmFBvSLCM8VVWpn6*kOMbj({&z>@s-8og|(LvvfJ2Q72hhpaVy7}xEY$hXcMXH#1YjkCvw z024ZmWPg=xP$z)0Gr)tAdKW4<{!TJoSAen`z=M(vOjPv#s~Z(E3a11k2?ooMy&-wr zPujp^VjBk~^Y;T-xmmFI3zS93>+tS>Qubra|(cWI^db zH6RP%QBl%{IRNv+>kT;plE?jIRq&HhzfmwwEXHv^$pWVVlsHou2PGSXb>28AS>RlN z4Osv%Jr*P5pd^nq#W>0(>NgT%4Kd_0GhU%&225{*$5b{BO7fU?#&JK%hG7aB2PM-N z18k50cu-Ow@dz~>_mj-H5nzFj13dn>q`rP_6aDB~_d+`Q(?)(%vg&7~PRW`|0M5d< z03QD*lI0vRN-<=R5hTHizn1df2CFEP_{mU9F$C7Mg<2Y^tP1C6L`QtEAO|EX>ICTlnas$0B&ih1Q!;&DsozgBs-KLfWcmS8AHcAEjPVvVkXL z{7;Z|q5lp^{!hqI$d*tzllYZMP)aZ(rKH|g#)nBhOf&kgC?uF5Tt-l`plC=AQ-X|l zNa=)R54%XcD;s8ErC*^W`cuO}$qG{?&-Ir2C`cAK29gzz zlQIjE4IeM{Tu2_2Og9md4Vo>6R5nZE2}l<3q|~30vP8<~rF;RBTckaZ_*3@cgKNrr zRHS6Z2cc7bBza1f|FP65t8lyXDFSTamj;2eq15?>Uh+RcGUJbs9E#JBwIHuRa!9U0 zau3GZ*pQl#%;yD(D5VZtQHkV=uhc~XR!~pM`cgK4WCgyEEU*bA8_*Kc3o;TCe@YBK zm_L@v{~+rjJ{jp)UOz~~{~6#x$%6Vzosz*pk{>MP5XldNWP=`p*g(c&n-5PE6v_5(@!>1)09gMWJH3DM#0+n?v*^*FE%G&`R~5w}$93 zH$3zmw|c9;>ery1fi~iHZ}psBa(jsW$W0I3<4$k&fc zkM%ifZ}qqJd!cQ+?IHYCsJ{!B3O)6Xhd50APvN7fL)N>i9%8np_SUW`;zLaxy#6&1 zAyq)!P{fQX>R^$nf;mR!mLh`Oz<6t5R=Rw<`>4Pr-K z5W(Uai8CZd)B_PBO6q}lqz(v=`XJhgq4h!Zs0(5ri7;Vr0OBf%oCY8w#9k8H>VfcY z2qIFr8iGiz58^P1XyM}x!o2~A+1?;x#UT=}kqGet5htemfXHkJ;uwhp5!eWXw>OBD zjX*fXwiGIS~6vR~$ zIZZ(f5PL~%YXZW*8Hho`)eJ;x0EojRh6tbL_;7CuVs>*7L&YHyuaO980b;nA-U38s zGZ4o}j1Yk>L3lR@v9cwIQQ}(?2T3Hf0+A+`wgNG&1&DJb(nV}*5N%q5c)T@;3{gtr z8xqNFK#UU`+JIQn3dAiEF3~d(L`-WCI|4zB7uQIfAu%EdM2;v40`W*25FWuGCWxWI zAbJFX*hgZbu(t(ql|)Wk5Cvi{iETk3{6j!Y7OoHwslgx)lb9-eLP5B<1u;7m#B_0p z#A_r%+JTrUrndu;83N)MiP<8sJqYhm5G&h*C=}n4I7lKP48&ZqGz`SFb|B7?m@i_( zL9}TP;_+}03q>i3Z%8CZfLJUxM1WWl2I3ZprJ`pC5HaB(c60!-TwEh@hQx?S5GzGV zB#1{MKzKxfSS^M|f#}fz#6A*hg*_U?RT4STAat>p#I{Hf{xKld3s($?)F=>#NeJN+ z3&K4b#OzoQ8^j?JuaOAp2x6m{-VsD*42WYS9v6XeAiQHitc(M(S$s?4Ac=%{5L?C4 zco5S%f;dOwNfDa>0^c)+JrY1XElNpzLn7G$;#sl50b)r!h+8B|L{BG(m;?|zoFJYP z*GQZpF`^TQ9ipTYh({bCJUWATK@9B-qK6a2J`%fyy$gt|ByzfdcuDLfv8@vb|E?fj z5w5NvQaghKRu%FcE}zHxMfm z)emg#aXPOq(o)ohdVs&1nABZ;*tQn;%{pGI7V&YftCCYIlu! z>~4+Ce+cswBU04wZEKq1&L?xvG)jD%X@9#Nqxkt7)g&cxNJg&yGRr4b|4M2cB7yucnGlL)8x2z!c_gZ063A|IvE~ zUv%&^bF-13|@lw8nevJS?5X%iT-)<2G)ea@h|YeDua3Z>LU>+-}M7o@Jio zUW8;>+;8P0Y}}gVb2^f|!4JzD$E)D*XWWTyBDp=1d^m?++NA?ZuKt7 zna}>@lTo%D2Oj?wDh%_vZ@MJ;tPg+uk3(e)IQEFo^~lizV`aMilH)^y41mYmlBUsA@b6)?@F#N`#)Eb2PDa-2NMAnY&=4QtPfb<0(oDiGA$dA-!;>x?~gPpne<&%L;0H07#1*QShff>L|U=}bNm;>+* zc@Z!dmARWea{8Za8T0P>I=%M?87XUs!e-7Yt_pV5{4e|-#Nr2Dx9|tzk^|vCh011|0ES3VxfaSnyU@|ZT zNCo)FX*9qok^yiE@HrU&gES6^2NHlTKqAl`=mGQudI7xwK2K`{1Oh=oFrNywMIaPt z2ZRF=z)3XfH1G>>7PtUh27Ut)&{%w5(D+8y7)W~WSYRBG3AlhEKq`Q5_9-KP-arb_ z9q0zc0I@*(PWa#>CO*^7K;fytP#_+#0rYC6JtD0iRj^aOeVy@4d4 z&>bIkpgK?ks0sXp%si>R0`Nrk8o-m%PM`}a-2!X{9s;@niNGCz%Q=_tIRFf+6al?} zddSxTXbA)XO@IL4B$K^?0KW>+1Lz587=Jgw22=-Dp@2m|1EgyN@X@&k;0e?Me8Kqv zXOU(nzz5Gf@i_n|@H65r0z(m(473AO=x;+7R(a4ofz3lgKEa*<@X0h!U@svN^{EIG zvjLt<76L1QWxxtxp47=Pu80d7k1vh$Mj(Uqo7VxJ#(#nSGf)#i@ycm{lk@nV9UrN~ zZH3&;`~>|3K*yy6pOpHCkcR*iV~hw#hNHxFlj|dA;-i2LbO0g%md8575e@@_0ggf& zpf%7IajhVm0*$$@jsii8(z3L;H$dz2J8yM?IzVl}4Yb?_ybpgKY-tX zUx6#YCEy}Z3UFCF1Dpdc0Ox_TbQ~rw0~oA&f?4H00E|BbMZj9?^t?hkNbw49ihpkvd) zn*q&%K!6rxWi%_pv>vTQ3xyy|%P_tz!tH=ipgmB?iaB1yJcQQ)Yk@VuYG6LV#?(iA zAtVc#134R*1xy3DEtvvL1|k8LH5f7qm;@964*;Ejd|)Dw2Xy85Cm=8gm;mGe*+3jH z9>@YZ0$f+(fmnbI$%GsSaPb@qWB|i~F+eY%FOUw528IA>z)0XhU>GnINCgI}qUsUV zv#<}s-GOMpYN!KY)*S<|UbcyCZGieKwuNm#N6O=vt~1c>9?t3q(=v^f2YjKD2!hs0 z0a#fNAQ?ykdIRiKPk?c35W)16%)_wNU^b2hV43&pkQIM751gW(P({o@F!LDEgIUu7?n2C03!#U{y%YY8VS+X1aq5 zl5y0@bJ$rpO7^#q-`u+3Sj&r5Ccrv;ccb(=p-* zdP@^>G28$=0(=EdKn{bX`PlIF02jsCC`Q@tXpq0viEVuo-d_@Hp_8locyw;r;+6%d8DljKAAijQ>s~@&ld& z*pThOHsD!+jp1pX2P+mp3HWeGp3Z}TAfPF*1N`&A%fN2nMPL`evYD4$1Ax-vx6_QQ zq&vXEUxLnkij^n~It$zbyb3U*b^7P&o#|fySV1^s#mdRC5zNO%FfBJpuS32E`39ut zoA_w|B|dQEh3(1zPVJ_OvhUSKDcoFoW5B$JYi}RDeI<)qZ1b?*K{()t;U|Y5E2?of zrWgsZ-6}euln%JOa$NA;7}5WznmF(Y#QP$CAEX^}rgz+R*W!U=HPwoFA2FVY*_k0c zZ>{{I>D?0Ofmj%dCfcU=PP_E=CM!mqJ*tMP*~0gj`fuNl(GwON=6tH(v!mfC-lvF7p+@r_`t(ex4(y~BF(;a75$Jv zO%#2iG#}r=9>(3QqPN;^{4Q>gcQ4tb2-&J#W#zFQA5 zoW(GR_1fQC+3K#mX5GFsV!}e*5Y4=({nGPD5N)<>tk_zL+4H-<__|b0^0QtuT)lLNzjMoq>vy|wp^0#mVa(hD%w_so z?TqoaI~?AC6li*ASbL?3m{^|B6CWL}!Z8VmO4a^$z0Lon5Xa77iML25m%>aQ zS$T5n4Z1tG{kFLOqq`4jY8ZzUlYgbCeHImN5W#2Fh`QDrc_Y@P&v^UsE%@fb(_-RT zwW<21&=DVHy|Z{zYR9j&cheiYm6v0^)p%~$kxBJ}_0+pDms^ROXJJt5J;*&4DZSc0 zo2uVU(NeTKhjF*woV@1ZwvQ91eBAtQ0_)w%N#B-C@7`alP;IW5jjXiMj9K!C*o_40Hu2Fp^zYttu9y0*sC^#s?~35_=;l`<`Met8_apW*oSh}F zKUDVQys=Z<)b^nf5j+k45hNZv&(2`i(*!BHzIx->=WlE-KwDu?c(xKGK1G4P*2|PX zc;fbF!+$>gl$ih}DCwfcCDb@qT)K#KcuTYK-qa&6X0Ca2W2xhAL9dH`7cfVT1&izp zsL^^$^Z6x9j=FcBIPY$oYKzTC7-_xc`TFwC&F6f%Ve;Js)*GSceyX(|FkhQ}H>RIB zhpfKVE2aH>uPr|vQS0lw3FeEYXr=nFh+|`|S5)_&s`l#l+flE(=}N?eiVDMd)$0p)IO>=cCRRP(;s}Pho9ig2-rG zT!=Iz&`!mQS-+{?e)oDbW^8CI*Ffb$tk{JVzSfh{C3&~YzIgJxFIW_|OGx1&_w$yYFjm4jJTpE+Xi;T8BU~KQR~+5;@TaK{h?AK4qw4pa=%c2FYgd0 z1Y0FiepeH#Ka*gdiBBhpO~0c7@&(vMNgdzL+Sp-JvZi8+goeSSs`#8`)Dgc@G!wQz zQ1BvA8|~0!Zjt?m+Q?G;Dlf{a%zDYT`mb9vMjn`xez&p@#03`rl~{ch#bcBle`5O} z^Qo_iiGQLEnpjTZFP{DrZfX^p+{Jt+=+vm28FQ9*KYF*&k-~$e$%K|vOV1ZmmZcABaE$iXaVjy#UCg?!HnP&2 z?rDwYsq1isfui;eHNxKf0duJ<5Xm=Co2+z+n2ShX>jmIrpP9Aivo}sZYMlckl&8g~ zO#XtH+fMTl+D)~Cul08ELuG&bczMNEa~o!yV-AUaFp#v9uk}{)*H=yd_WJo38ybZg z8_^|VGtyOh=8aU0W;GC{H&uUM>jwcg*56asXyF^d9n*%Tw>DKam2rj*9-=^>Ftp!>4dJ7lmCE7Aot_-alPzbu1`)!uN=Y4voOR zL)`ltBM$JQqX>n&4QuP#qW$(!!K@SS+%#ZdD?xoRKr2J-q`AF&;rR@_JYK)JP#s8bd4g+3w?(${*UeeSi` ztI1jYeP#Dy{`W%`Lljt&g~ggxdVR zqCqt++;3%H^CrT6&tFQqzchv>=RE?P9E&aqevr!^{+ALxh`M zE7G>4ibZw|reQNIFLupedoESDSJ%dBX~RTbb=c*Z;bK{JSia4J;!W!2c-9x^s%!PD zzl|q*ykcxJLe#8bChl}sCaL?x${HAqbtA>L8Ym;Tk2s2GKkJ?P3!Gp1_WJB#ceIQa zM9U_Q5?(d6ByC5U7+DiO@xEAFQ`@L*94$gU4AmIiXGe=!9w^6pm;Q52Q=hoL@Jy`7}-n$v={Al7bBgQxr{5VeJBCmFRTrqC{ zXkMA3s12k~rg#IipY;;^&!Wz%DIe80Z{Qdi9hu@HGY-fUc?}^mkkc137kUdc#(EvT zXQ$#a-wKj8`(nmIjdTWQzT@A-~BK z-_?ez{RF)+^y``8xDR9%m+0h;n^t}ew1!QvOjxh(5AMHrbKh1oddhBMKkDleYwDms z*6$?L`1Z>B)K_avlyxITq)VhULz$gj;)gmId+TQcycZta@MdbsNm&-!Kh7oE))q%8yI2cS>=FBoDD?EBQ9~1 zDNnh~+a%jAPg|V2q3IskI^1Ep<`V7e!K&7;CwRB|rRfiA9&IjL1$Q!jU;)nXW!cnk zPB!YpO9D9s8z6V08GvG~o-5+5V4 zwjxV}HqsinMJj)F6mheW)&X=VMsNxbEhM#XA{skEjE2G#n73?=r;lqb3`pLy5p z(g0D`Z*J6IHLdCGZx8=)H$}HR^So7-w$qj{>6s%k27OD;6RY6*QP%HrR2ejN+0Vs( zf5;TLcDH`Hquy65y1x0$N9SY=&Uv|c;wbXU>0=C=IfCADB#m`|jkom5I)R4B6~lA{ zYhuc&@i*2n9qQh7=f0&_i_+glmOGj?E3K6bi=$U7^hB;p<>@x%2tUqJbF}N*Fk;rk ztt{)k{Pc06eN(MovA^b4UOdtS_@h|MN&5T4qd-=)rq!YHb#)nxCA3$o!@(5#tZHCV27;zm>Kt4uqV zkG5u=MDFcv1-_zpSn2&LKR=r_{AHxf{x-m?*I}IO<`@IBZS`#!Ve3R!$>|Fns!*a# zT<(vSFG$B0eOth@tr4&$kTit3R$5C~Tq{`3wWyYKPqpy9G z(Qk|#BTU>Hg<=(^hK8pt+gjq>ZT(WtnQhBzef@P+-1Fan$HHDXJ6Z!{_0;Orz5HJ+ zP+20$M^&=1Le#|GhVV?frfa&Lr6k)vX zK$DD#_Me`v&6+EAwZ?wvziPGRxYo9%l1zBMXE+o$aekF=-tIa3a%&b9Sozj0s&dDe zInTVy-8odt%pUirpX@n&*xD9ZgM=O!OO13kzhlVR0E4M~*7v}z?kBCS8CDs%R4x~# zO8O{13##DI(lAlh4?Kn6dDTC~w#*zPW2f4CzS+cs-QN0i&uT}?-6mQ)Rk<2)^SJ|w zYok>&|GXUX_NZrYDPUdyV3ApYZLQy%NWmNNp^r2TEbH71H!G|S*pc~Se=w{lx00e} zTdmRGYzxXz5WV@!XSNRP8zFEPz$(Z*tu_$(ZMCSV#0BPM@|F+Bd7b;0+bG#0wAK2B zr`sb|5Bc?r#DB{e*xs_7li1^YN=>CSrSRUD{n-EK=IxqSL(Br`=vG9&4w0<6hb;?X-x<|Gb>T zm8EeT&ibjU<-wmfdMdIHuQ_>U!`58ho3JkDb8vqM9B!b!7&h2+9XPm3Qp2n(Tz1^#fY*t+s`Eby>4j_7?tOUaf{}@`6MwTPBW%qnlTk zneU9BxLkNe;97t7axpUEe^{c#4-s05{5pb2>`=Kw-Ty=+ho4s+FRv1}J7D3rexEDz z!pj%>cbF82cH+A1gD?>^2-i>m3$us>(;C_;)^KM`Q%#R8H+mKT`TbFV{h&Iwc??U zkayOKi_u!RSQM?*sor>9U^OiUGLaG^OIC-;9R_tBR`fW7p zhOC#G{jj)*-nOthbl)4JxaWbdo!r+hLFJ~f>|{15+^Q2MxY1Edc38ibwr|Ci#CjK| z<6AsEW&Iv~9S`+!zZH++mHlCwk)jAzkJGx;r!pzcl|2=|lG%Ou z7p=|*?{1BMNR88);QvyuK{TC<)xQR2`uBroJ~iaI0G}1m`CX5>4F`GNsn_9$M?`GA z=4>=4$)p#=M1HJJ^Sr%_{}F-X=R;y$y!MnhFQ$VkRok
{children}
+ ); diff --git a/src/components/chat-support.tsx b/src/components/chat-support.tsx new file mode 100644 index 0000000..106365e --- /dev/null +++ b/src/components/chat-support.tsx @@ -0,0 +1,44 @@ +import { + ChatBubble, + ChatBubbleAvatar, + ChatBubbleMessage, +} from "@/components/ui/chat/chat-bubble"; +import { ChatInput } from "@/components/ui/chat/chat-input"; +import { + ExpandableChat, + ExpandableChatHeader, + ExpandableChatBody, + ExpandableChatFooter, +} from "@/components/ui/chat/expandable-chat"; +import { ChatMessageList } from "@/components/ui/chat/chat-message-list"; +import { Button } from "./ui/button"; +import { Send } from "lucide-react"; + +export default function ChatSupport() { + return ( + + +

Chat with our AI ✨

+

Ask any question for our AI to answer

+
+ + +
+
+ + + + + {/* {message.content} */} + + + + + + + +
+ ); +} diff --git a/src/components/ui/avatar.tsx b/src/components/ui/avatar.tsx new file mode 100644 index 0000000..51e507b --- /dev/null +++ b/src/components/ui/avatar.tsx @@ -0,0 +1,50 @@ +"use client" + +import * as React from "react" +import * as AvatarPrimitive from "@radix-ui/react-avatar" + +import { cn } from "@/lib/utils" + +const Avatar = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +Avatar.displayName = AvatarPrimitive.Root.displayName + +const AvatarImage = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AvatarImage.displayName = AvatarPrimitive.Image.displayName + +const AvatarFallback = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName + +export { Avatar, AvatarImage, AvatarFallback } diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx new file mode 100644 index 0000000..65d4fcd --- /dev/null +++ b/src/components/ui/button.tsx @@ -0,0 +1,57 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const buttonVariants = cva( + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", + { + variants: { + variant: { + default: + "bg-primary text-primary-foreground shadow hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90", + outline: + "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground", + secondary: + "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-9 px-4 py-2", + sm: "h-8 rounded-md px-3 text-xs", + lg: "h-10 rounded-md px-8", + icon: "h-9 w-9", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button" + return ( + + ) + } +) +Button.displayName = "Button" + +export { Button, buttonVariants } diff --git a/src/components/ui/textarea.tsx b/src/components/ui/textarea.tsx new file mode 100644 index 0000000..e56b0af --- /dev/null +++ b/src/components/ui/textarea.tsx @@ -0,0 +1,22 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +const Textarea = React.forwardRef< + HTMLTextAreaElement, + React.ComponentProps<"textarea"> +>(({ className, ...props }, ref) => { + return ( +