From 18bf710549361f8b24c0c39a13711d83be335247 Mon Sep 17 00:00:00 2001 From: Marcus Schiesser <mail@marcusschiesser.de> Date: Fri, 27 Oct 2023 15:20:51 +0700 Subject: [PATCH] feat: add simple chat for nextjs template --- .../simple/nextjs/README-template.md | 32 ++++---- .../nextjs/app/components/chat-avatar.tsx | 34 +++++++++ .../nextjs/app/components/chat-history.tsx | 34 +++++++++ .../nextjs/app/components/chat-item.tsx | 13 ++++ .../nextjs/app/components/chat-section.tsx | 45 +++++++++++ .../simple/nextjs/app/components/header.tsx | 28 +++++++ .../nextjs/app/components/message-form.tsx | 72 ++++++++++++++---- .../templates/simple/nextjs/app/favicon.ico | Bin 25931 -> 15406 bytes .../templates/simple/nextjs/app/globals.css | 12 +++ .../templates/simple/nextjs/app/page.tsx | 33 ++------ .../app/services/chatStorage.service.ts | 35 +++++++++ .../templates/simple/nextjs/public/llama.png | Bin 0 -> 36985 bytes .../templates/simple/nextjs/public/next.svg | 1 - .../templates/simple/nextjs/public/vercel.svg | 1 - 14 files changed, 275 insertions(+), 65 deletions(-) create mode 100644 packages/create-llama/templates/simple/nextjs/app/components/chat-avatar.tsx create mode 100644 packages/create-llama/templates/simple/nextjs/app/components/chat-history.tsx create mode 100644 packages/create-llama/templates/simple/nextjs/app/components/chat-item.tsx create mode 100644 packages/create-llama/templates/simple/nextjs/app/components/chat-section.tsx create mode 100644 packages/create-llama/templates/simple/nextjs/app/components/header.tsx create mode 100644 packages/create-llama/templates/simple/nextjs/app/services/chatStorage.service.ts create mode 100644 packages/create-llama/templates/simple/nextjs/public/llama.png delete mode 100644 packages/create-llama/templates/simple/nextjs/public/next.svg delete mode 100644 packages/create-llama/templates/simple/nextjs/public/vercel.svg diff --git a/packages/create-llama/templates/simple/nextjs/README-template.md b/packages/create-llama/templates/simple/nextjs/README-template.md index c4033664f..1509ded7c 100644 --- a/packages/create-llama/templates/simple/nextjs/README-template.md +++ b/packages/create-llama/templates/simple/nextjs/README-template.md @@ -1,17 +1,17 @@ -This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). +This is a [LlamaIndex](https://www.llamaindex.ai/) project using [Next.js](https://nextjs.org/) bootstrapped with [`create-llama`](https://github.com/run-llama/LlamaIndexTS/tree/main/packages/create-llama). ## Getting Started -First, run the development server: +First, install the dependencies: -```bash +``` +npm install +``` + +Second, run the development server: + +``` npm run dev -# or -yarn dev -# or -pnpm dev -# or -bun dev ``` Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. @@ -22,15 +22,9 @@ This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-opti ## Learn More -To learn more about Next.js, take a look at the following resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. - -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! - -## Deploy on Vercel +To learn more about LlamaIndex, take a look at the following resources: -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. +- [LlamaIndex Documentation](https://docs.llamaindex.ai) - learn about LlamaIndex (Python features). +- [LlamaIndexTS Documentation](https://ts.llamaindex.ai) - learn about LlamaIndex (Typescript features). -Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. +You can check out [the LlamaIndexTS GitHub repository](https://github.com/run-llama/LlamaIndexTS) - your feedback and contributions are welcome! diff --git a/packages/create-llama/templates/simple/nextjs/app/components/chat-avatar.tsx b/packages/create-llama/templates/simple/nextjs/app/components/chat-avatar.tsx new file mode 100644 index 000000000..2f79edaea --- /dev/null +++ b/packages/create-llama/templates/simple/nextjs/app/components/chat-avatar.tsx @@ -0,0 +1,34 @@ +"use client"; + +import { ChatMessage } from "llamaindex"; +import Image from "next/image"; + +export default function ChatAvatar(chatMessage: ChatMessage) { + if (chatMessage.role === "user") { + return ( + <div className="flex h-8 w-8 shrink-0 select-none items-center justify-center rounded-md border shadow bg-background"> + <svg + xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 256 256" + fill="currentColor" + className="h-4 w-4" + > + <path d="M230.92 212c-15.23-26.33-38.7-45.21-66.09-54.16a72 72 0 1 0-73.66 0c-27.39 8.94-50.86 27.82-66.09 54.16a8 8 0 1 0 13.85 8c18.84-32.56 52.14-52 89.07-52s70.23 19.44 89.07 52a8 8 0 1 0 13.85-8ZM72 96a56 56 0 1 1 56 56 56.06 56.06 0 0 1-56-56Z"></path> + </svg> + </div> + ); + } + + return ( + <div className="flex h-8 w-8 shrink-0 select-none items-center justify-center rounded-md border bg-black text-white"> + <Image + className="rounded-md" + src="/llama.png" + alt="Llama Logo" + width={24} + height={24} + priority + /> + </div> + ); +} diff --git a/packages/create-llama/templates/simple/nextjs/app/components/chat-history.tsx b/packages/create-llama/templates/simple/nextjs/app/components/chat-history.tsx new file mode 100644 index 000000000..2eafff4c1 --- /dev/null +++ b/packages/create-llama/templates/simple/nextjs/app/components/chat-history.tsx @@ -0,0 +1,34 @@ +"use client"; + +import ChatItem from "@/app/components/chat-item"; +import { useChat } from "@/app/components/chat-section"; +import { useEffect, useRef } from "react"; + +export default function ChatHistory() { + const scrollableChatContainerRef = useRef<HTMLDivElement>(null); + const { chatHistory } = useChat(); + + const scrollToBottom = () => { + if (scrollableChatContainerRef.current) { + scrollableChatContainerRef.current.scrollTop = + scrollableChatContainerRef.current.scrollHeight; + } + }; + + useEffect(() => { + scrollToBottom(); + }, [chatHistory.length]); + + return ( + <div className="w-full max-w-5xl p-4 bg-white rounded-xl shadow-xl"> + <div + className="flex flex-col gap-5 divide-y h-[50vh] overflow-auto" + ref={scrollableChatContainerRef} + > + {chatHistory.map((chatMessage, index) => ( + <ChatItem key={index} {...chatMessage} /> + ))} + </div> + </div> + ); +} diff --git a/packages/create-llama/templates/simple/nextjs/app/components/chat-item.tsx b/packages/create-llama/templates/simple/nextjs/app/components/chat-item.tsx new file mode 100644 index 000000000..5d32c64e7 --- /dev/null +++ b/packages/create-llama/templates/simple/nextjs/app/components/chat-item.tsx @@ -0,0 +1,13 @@ +"use client"; + +import ChatAvatar from "@/app/components/chat-avatar"; +import { ChatMessage } from "llamaindex"; + +export default function ChatItem(chatMessage: ChatMessage) { + return ( + <div className="flex items-start gap-4 pt-5"> + <ChatAvatar {...chatMessage} /> + <p className="break-words">{chatMessage.content}</p> + </div> + ); +} diff --git a/packages/create-llama/templates/simple/nextjs/app/components/chat-section.tsx b/packages/create-llama/templates/simple/nextjs/app/components/chat-section.tsx new file mode 100644 index 000000000..416c56cd2 --- /dev/null +++ b/packages/create-llama/templates/simple/nextjs/app/components/chat-section.tsx @@ -0,0 +1,45 @@ +"use client"; + +import ChatHistory from "@/app/components/chat-history"; +import MessageForm from "@/app/components/message-form"; +import ChatStorageService from "@/app/services/chatStorage.service"; +import { ChatMessage } from "llamaindex"; +import { createContext, useContext, useEffect, useState } from "react"; + +const ChatSectionContext = createContext<{ + chatHistory: ChatMessage[]; + loadChat: () => void; +}>({ + chatHistory: [], + loadChat: () => {}, +}); + +const ChatSectionContextProvider = (props: { children: JSX.Element[] }) => { + const [chatHistory, setChatHistory] = useState<ChatMessage[]>([]); + + const loadChat = () => { + const data = ChatStorageService.getChatHistory(); + setChatHistory(data); + }; + + useEffect(() => { + loadChat(); + }, []); + + return ( + <ChatSectionContext.Provider value={{ chatHistory, loadChat }}> + {props.children} + </ChatSectionContext.Provider> + ); +}; + +export default function ChatSection() { + return ( + <ChatSectionContextProvider> + <ChatHistory /> + <MessageForm /> + </ChatSectionContextProvider> + ); +} + +export const useChat = () => useContext(ChatSectionContext); diff --git a/packages/create-llama/templates/simple/nextjs/app/components/header.tsx b/packages/create-llama/templates/simple/nextjs/app/components/header.tsx new file mode 100644 index 000000000..2b0e488f7 --- /dev/null +++ b/packages/create-llama/templates/simple/nextjs/app/components/header.tsx @@ -0,0 +1,28 @@ +import Image from "next/image"; + +export default function Header() { + return ( + <div className="z-10 max-w-5xl w-full items-center justify-between font-mono text-sm lg:flex"> + <p className="fixed left-0 top-0 flex w-full justify-center border-b border-gray-300 bg-gradient-to-b from-zinc-200 pb-6 pt-8 backdrop-blur-2xl dark:border-neutral-800 dark:bg-zinc-800/30 dark:from-inherit lg:static lg:w-auto lg:rounded-xl lg:border lg:bg-gray-200 lg:p-4 lg:dark:bg-zinc-800/30"> + Get started by editing + <code className="font-mono font-bold">app/page.tsx</code> + </p> + <div className="fixed bottom-0 left-0 flex h-48 w-full items-end justify-center bg-gradient-to-t from-white via-white dark:from-black dark:via-black lg:static lg:h-auto lg:w-auto lg:bg-none"> + <a + href="https://www.llamaindex.ai/" + className="flex items-center justify-center font-nunito text-lg font-bold gap-2" + > + <span>Built by LlamaIndex</span> + <Image + className="rounded-xl" + src="/llama.png" + alt="Llama Logo" + width={40} + height={40} + priority + /> + </a> + </div> + </div> + ); +} diff --git a/packages/create-llama/templates/simple/nextjs/app/components/message-form.tsx b/packages/create-llama/templates/simple/nextjs/app/components/message-form.tsx index 59f42ce3a..fff39b9a4 100644 --- a/packages/create-llama/templates/simple/nextjs/app/components/message-form.tsx +++ b/packages/create-llama/templates/simple/nextjs/app/components/message-form.tsx @@ -1,40 +1,80 @@ "use client"; +import { useChat } from "@/app/components/chat-section"; +import ChatStorageService from "@/app/services/chatStorage.service"; import { ChatMessage } from "llamaindex"; +import { useState } from "react"; + +const LLM_API_ROUTE = "/api/llm"; export default function MessageForm() { - const testSendMessage = async (message: string) => { - const chatHistory: ChatMessage[] = []; - const apiRoute = "/api/llm"; - const response = await fetch(apiRoute, { + const { loadChat } = useChat(); + const [loading, setLoading] = useState(false); + + const getAssistantMessage = async (message: string) => { + const response = await fetch(LLM_API_ROUTE, { method: "POST", headers: { "Content-Type": "application/json", }, - body: JSON.stringify({ message, chatHistory }), + body: JSON.stringify({ + message, + chatHistory: ChatStorageService.getChatHistory(), + }), }); const data = await response.json(); - alert(JSON.stringify(data)); + const assistantMessage = data.result as ChatMessage; + return assistantMessage; + }; + + const sendMessage = async (message: string) => { + if (!message) return; + try { + setLoading(true); + const userMessage: ChatMessage = { content: message, role: "user" }; + ChatStorageService.addChatMessage(userMessage); + loadChat(); + const assistantMessage = await getAssistantMessage(message); + ChatStorageService.addChatMessage(assistantMessage); + setLoading(false); + loadChat(); + } catch (error: any) { + alert(JSON.stringify(error)); + } + }; + + const handleFormSubmit = async (e: React.FormEvent<HTMLFormElement>) => { + e.preventDefault(); + const message = e.currentTarget.message.value; + await sendMessage(message); + }; + + const handleKeyDown = async (e: React.KeyboardEvent<HTMLTextAreaElement>) => { + if (e.key === "Enter" && !e.shiftKey) { + e.preventDefault(); + const message = e.currentTarget.value; + if (message !== "") { + await sendMessage(message); + } + } }; return ( <form - onSubmit={(e) => { - e.preventDefault(); - const message = e.currentTarget.message.value; - testSendMessage(message); - }} - className="flex flex-col items-center justify-center w-full max-w-5xl p-4 space-y-4 bg-white rounded-xl shadow-xl" + onSubmit={handleFormSubmit} + className="flex items-start justify-between w-full max-w-5xl p-4 bg-white rounded-xl shadow-xl gap-4" > - <input + <textarea + rows={1} autoFocus - type="text" name="message" placeholder="Type a message" - className="w-full p-4 rounded-xl shadow-inner" + className="w-full p-4 rounded-xl shadow-inner flex-1" + onKeyDown={handleKeyDown} /> <button + disabled={loading} type="submit" - className="p-4 text-white rounded-xl shadow-xl bg-gradient-to-r from-cyan-500 to-sky-500 dark:from-cyan-600 dark:to-sky-600" + className="p-4 text-white rounded-xl shadow-xl bg-gradient-to-r from-cyan-500 to-sky-500 disabled:opacity-50 disabled:cursor-not-allowed" > Send message </button> diff --git a/packages/create-llama/templates/simple/nextjs/app/favicon.ico b/packages/create-llama/templates/simple/nextjs/app/favicon.ico index 718d6fea4835ec2d246af9800eddb7ffb276240c..a1eaef62f2dfa895f1bbffc6595bb53d9604963e 100644 GIT binary patch literal 15406 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 literal 25931 zcmZQzU}Run5D);-3Je;o3=D1z3=9eiP`(HQLmn#wgMk5*ugkzNO_Bi&7#S28dgT}x z_PH@IXfQA^2!Ql4K-7U1u!2cq2o(kfhFAs$hFwq$VuQp8=~ZB0U|7Jw!0?HIf#E+I z28n^>Kx(j=W5K|{@BmE@x)~roNDW9WvKjIW3=EHm&<oNJ!XULEJuovClAsr)AA~`A zK>C##7#P05^!xk!|6jLm-T&3ASEJyyYuElyPfrKwgJF;!klsj`UJxxWFaQ7T+qeJG z!Qa1s|C^ec!t}yuklx)OeaJXFI~!g5|GvIHm>y&rq!)yd#r|`0a{fPi_AK0tCr_UI zmynP^Q3JIPq!;7{3^^|^um2!7gA4(=2dW-j9Y`-I3_xLlBFD(c_<!5BZU3)cy$W^@ z7X2VSAibbC0L2B0evo=YL&N_rE-o12AUOsG29O?*UJwSQ1yGv6r50Trq!y$Hq!)%k zX%dt+(bb~!L25v1Vfv71P~HIL5l~)1*9Q^<$$``$>%qnb<yBCgB{lzIGiz9jfyzlx zfI1+TlOhy*nT>&gL5G2XA(VlEp^<@s;RO_f*dQ^G97qkt7NHrS#lXPO%D}*IiGhLP zCp4X-ry~#_BnMIhQVY_9W(>((83qQ1X$%YupYhlUvKJc$=>h2lnL)C}3=9l`3=9kp z$*>pQEg&;MW|88CA_fMA-&C+0<`$4yATx<^14tcAAGK+a+4$VxPi23jyB`z|AUm+R zL7IVq;RzMP9Nlgh|1kpt1IR9PH%zC4-7q(R>_WC5R9t<fqy3;dRvpO!ZMf{Vu(0^w z-QE4aqoac)+}YXrKR!Ml=3i_y$WD+G*cliYuHdp?PEPLsyLazE%?*-qaBwg-dtqWA zJ3)49GcYjx!eu{5JR>86WV=CaMUY-R7-T2N?hrg`z;5N>;P`*~^l75q@a4;w|2jH4 zV7&y)2HD+2Kn>U&cXxMqyN{4VdV71pdWbL=RByf{LLJyVP+Oaj-JmwDxVSi2JrU-D z>;_??)N5;N|Ns2?GhQcTWn~d%7SwGZyFp<<v>s4i#N~i9XU_Zwr4^{z#Fz<+dr%r6 zMlD#4n3&lA$B!RlI04ir@bvTqt0BRDklmm>0LlwQ>&2EI*RNmyAJn%X!ETV9AiF_j z0H`b=+I~<NBj-mF@*A=pAUi>JgUUcqS%@r0kd2%lNyu-==7Q`5*$u*=x&TxsAj=bE zZ``=?|C={&{*#d3U}l2qI#8VlvKxj$bs|ijDB9TAm{1*q%N&qhFneLN6axbTsBM5t z54FTWZ5(Xv50E=RZ6i<{iCT7{n*%Z%WCzGDTo}|wMAt_xKFDlb_9Bae)PdYeEqg&` zfy_j<gAg0kX8`pbD0KtK43Jrb?87Dx>N|n@P@ujPsqO&j0qF&qfz51E#6W#XP@fXi zw*>Vuak&K~2T}u43(`Z19mJ>w^{qjDY*1etRBzI&|4oeBM%9dlz-R~zu@C??LJSxf z7!r`j33X}e2~GycG>#7g149-A1H)zp28JID3=H3)Y>=2YR1HWiO&vp|;ld0I3}MhY zpc_#4;;I8+;vheP)PlygLFF~b3?i+gnle=e28M1bjw6E1Qlpyda2q5Bb@zJ``ZKU_ zCq#qH1o;DG2W}UTF9T}p+@XQH(ftLoBZz!wV(0|5ExH&O82-`0?J&Q9>;l;dvKzxe zBna>`Ffgp8qq|}5htVLrL2e+y$#A70eLDuw?Jz%p+`tES6>$tuysaAqZio2+<Q9;d zh;uyy11Rmm^bQsp<R)U=AHcxC@OKb}JuLh{ZX(pj7G+>yxIYNp4)X)ZZ6G(|iU&~r z0aH6zX^<PSxgWH);Nu_;dsuja+z4_jx*vLmfZJhyK#v1KV(0i&R8;<h#(7gyQ~y&N z2LuEVJ5~%Ds{^?i76+hqEX;3sX&D)r|F2)a#uz83hCp#~F<!gT(g(=RF!zJj#t^L+ z6z<e;FR~eA%u#^c401oHFLVpdZ+QK}&d&b-<jIrB)>Fg=&2e~mc;K}Yi~B%s2Du&7 z)dY=?k)+?%)%E|MKYu84H%v1TbCTHH2I|Lw+z#rKVv{E*wrbTXm=nmR$(&<>xeeCW zhVe<FH8nN=fBN)^Y`23n_Vo0SWG7lW0*wi5K@%g%Jkb0-$Q|Th(0m_g-j4$NVPhO5 zxf$6$5fPF94<9}x$NB#=Gc(Dy7wQI39spsA%ps>d1<f;p<{P2zAlH77+d*+au70pS zQp-~^%S*6bX#NGIeNZ02CP$JODdj1d<s~-vfZPr$gRsewEJjRuN@014?j}4^z| z=?GnpWIi$FDTU=FvYSA4F39bmIv7+JBg>J^##f$Fp}a(P7s$;Zw}aY1ptcaQ9NBDq z<tY`)OJsL}+zfI%2!q<9$Z{01v6ZJ}v@Z#{0pw<o+d&xA7XbAM2<ah89=$xJVtEO( zALLe$n?Y`eVNjn8CQmVqT%J;~yo9+6)YpZ%8%Bfr#Gt-0Obx~Knl)?w|Ni}(*fn#+ z+6QtY$gMDUBhyrk10y4&|FyNX#JY=Ebs#q)yBV1c8XE$Q5fN(^z14x-267{^o6*^z zF*?v#9lhN~$UcypKx3Qe?#0Fjjg=BIkKXbiH(_%tHZjmxHE7J5-fqNYAIL2rH(_%t zE-}!Y0ch?3mzneu2e|<>mx9Zk_{2f_Kyx_sax1z$AiF_sz~@Fna-etvr9IG`8oK$k z;)Co0*$J|nko$<02hC}M<~C{NW|+AkJ3w=_#JY<Vb)dOrQ2ha#YlhiJEgEDd$ZU`u zq_~M3wV=6vkX@iPe3ZH$WCqAA(3%8t+(L;S(Ao=7I~KGS1GFZCn0_2c4M;6W4`}TN z$P7x{KrOwXz7VKC2kMi8`qiLu4ba*dkb6OFkQk`14N?PAOD%gx%^3}W(GVC7fzc2c z4S~@R7!83D6#|_Be(t<nQd|rS47{EmE<vEvXF!+()boicT9F1?KV2N;?!>U}oD67J zqeW_jXPU1s185fr2Loe!CIbsd2?GNIXrC1W1JeQ~m<S`o0%imo6s#^v7R3w<a?GAC zjv*C{Z(}((h+dtUHzk(CMocg;%yHU_BN-~3r~G>Q42`uq3O5`|S;cmwcctgT4vrZv zlYNXPuhKXtqH$%0(X}HpFG@(db9NsrjCXjtvExBom$Xm?$BEhRcVFn=*I%9geed46 zm;e3^y<c6s+kgI3>*xP}fBAXd^6sIDDUFTmG+fdb2wxDi;C#XSg~g9y7h`P0I|uFs zd>PCYO9k!A7<do(JurS?n_&IH?1SD1wGG@4N*@V7P*B)7h0%<yQ<f*7api@*4F?_m zA6^i2nIYh3CQB4^;i)(mzsC=x8p;dy@ZR9r!+0U$LdJy|9z5v|YzNM8SxMe}BwWMs z!8AdkK*@pmfcl=3o7iU-SM$Cu_@ni~=)gVZ-qs@uY$*(v*7r<1!6aIvVIcH_%Yfm* zWIOLqVqBY9E94@W*RY#0vNL#k@tj~-;#^~|;_WKW&cp7<c%%0G<eIKSpSC`fd{EE$ zO)Nt}h0{oZc>>SP8vW&m`Wf^X{Ftj4CMomm=|3Faka~dYfoa2I-boUY6Bs-C?`-S% z#q+@WKqbS}eWD5<(;pPGtYnvC%MgfTkYeyW!gGSb#Ybb2weSuW3;6|?<hebv(i@Ul zWISp(Dg+i7E;t>e#MYD8@czr?#;FYM2X8vGzOYQtPf#^re!=T;#3764!`?cb4IB$@ zdvnd#VK33tV>`$A!gFFrql?6g#*k%9{!G6aHS2cCY~TxHe$!aWs*<E2#`a>>Y~Bl@ zs!Po$H}|fX{gWa7q)L*45SxYL^XmuL8$|B&@%`}nW}G0QAjoWLXuwh)_|cwi$&a$4 z4;LR={W1FIeZ)Zl#Mi1;Remeg<k%S1!1Q!dW1Pm<^NhA1H>WeiJU$TKe4DXXuz}^I zBAeBN`#K5I56ndVo;MRWVKHvBa+s9NrssBZKJ$_fKc6&|+6!K=VVW>O{h`QR_J-z$ zDe*FQ`pXKe6i!+&%LeY7&B({)`SEDucHV+&<8z-cWHWl4Sk&Xba30g1sq2zIUfjcL z(`#m=*3C8Hx>2d~!T+oeZhd+-b?yB}OG2c77~kUB%leA9fn|29^}9VBQ&y$S71poI zZP?4G_hVATF^B3W<$4>WKderP6?dO{i=mo1$NSC$*Ca;fIsgA^1gs1y_5Blan@!Gn z_N7})hj|aAJb53hxxXjgC-;Hvk>9osNfOL+&VKi9xa}UAeN!}UPUvN}8^>;3`!P$? zu%VIh1oQ6nt09XHb*<l!n_zh>rk?p${kqKu0{@+LxN+*r-$xs!nSHRjHScO1)9ms! zbJ;$<XWZdB-Gyh#L5Am?e@r(BKiI|e`iL9z1vZ`gY<IXmL@2RcN@>XbVAGK2RQKr( zw}X%{^OhaonYNZ(FX^x7-p%{R`c~RKyN_a%SINu1^|aW^)UjJgbiW1PWwss8hPPL# zII-=RD!e?kZKcFr?SGT9m~&R&ag7pUWIil-Tuou+sbH%|R$XQr7<0e97Toeb#@$eA z>2vXfMJoi3D#}gHW6s%~bNE=-$+(8Vgtyxr{F846A3NfZ%C>{?>~_Xo96O&cDNI_$ zSTOZJ%VUY)wj&OuJO#6MZFD=}!tC&LKmUcv`**c1yYS4&LHWQ=rej}Oe2f_uJ5HJ+ zui{~JoFSe)gJmB3HYPU@Zsnpv4PlwL|NS4hG=EyMrlWC%<b$HpJa_-_#8*jOj1mlL z(-@h9(_JJ5m_HgHaCLdkT#~<B>-dsczZM>`%<j5dr@5bT>OvirLk#j2`x%4g8_p=> zf8ed~kpF;XgA31--o{Xk59N&O)O=ho$*??mwQ_d@cd+J8AyMX+#uvmREhH;gEErVu zGNl?=HQx3d@m|Anv>}pbPT!jki6>&$3Qga_bHHTEm*Wkb$pW2|*RdRRFlO74_JFzJ zGmFqvlVc3W7Pb86y`Zlp$ei>*fceiqhU3itW~eB7N;lNCbKfvO>7=D=n83-LuP|Sj zVHc<HM3vnSjxTiSZrs;7#iz4_@wdbS=1=z-UU?}^dLnVaKXB1$Va=&Rg3RBH9F#Bc zRhV=tsiZQj__3YY^P9z_2mYBIjTRC=q?GP5?2&SRa?c{VqW(yUjmSqm_AOh?)tW?e z)g*891@*GWb#E>y{LXM=>O;MK%a2BK9MxqrI>E3vWjPZ+!|%sh@psrBsHN0o#mo%f zlceyN=ZpK#Z;Y!SX{FCu&#-vn%l5`2ZYGbFJU@0dib&pQ-lETtWXMz~+2D8L!{Y;y z4K6$#jRib=dTv`bzI$A7QKq&$W<A5_iC2~^o_tx-P=PHgp@I2@jQ{WXQt#GQc+1!} zT=e+(o#DIV<PJtd0bb_$%2NBdT&zMZvX~Ei{af;L<!gQ+l_Z5Ewt0><HKI3UL-z#k zXZpizWTv|6jHaBS0$Z2Fi`IDF1FsfsR;+Wm$^2l~v#AXGA7~3QCn?CW**R{xV^tq3 za#3E`Ri$IGse$-}Pwp-mK^IG2TsZjh?(XuSlbUls@B|zeW0?3NPi3Nl@tte0g&dM3 znS+=6l}^)%e6%I&>Zwh0o?Gn}U-;#Y^#P8D2kw7%Seziveq6r3=J7P$XerIf>i%JW zZ(eO%S?pGEYu)5Wx0n9Nt35m0eEotye>T_s{dH{DE-OjK-8~2R1E;U_ieGXr)H};! zTA@M3hX==Gt;<X#8RX8)vyJ|m5pKJW^X_ZTC2HFhQ%$8#TVz~Z<oft-`Tf`>fBt-Y z*e-AO?fw1uubJVs|AM1#*>iC2*Jn<c&nRPEmh*UD?e9J#2Aho;7nLL#cJmxqe!=nG z&WStjG>Tk}(0RNd_x844?XWc(EC1N+EPsFRn4q%TinzC{u3JyO_Ak-nL$V~pZ=MHJ zG=ooR?XOP!`RQqI0rx468_6sdmKqo18s`1`X40qTy6krT;WplN^TPk=Z(mS)%yuJ4 zMoi1TIy-KAyzATJM}PgQ+R6HMRr)ukHil47-R{O0)iU9sT3mCim<xVea*OMg+}fTm zuc3c;S81``?>ENJJJsiLh{QDpr8nFce{yS{`=c|S@h<Bo*6*Ij)BE&JUEN-WovdrC zd4F*Hx@qsnY#=|;d~fip8+>}ldZn-LsQ+JQU#njko9Af#>c-;k&5w;3Vg)|B`8yf0 zh)FoxZ;$s}`+d%o=nGcN8(6Jw+43nL@UQZIsry)=<M#Q*?^XGqifvhUx86RB`2w5Z zKToy;>)HZ(Z?9kStlICCZbs<c|MDeMt)yqpX`b<;k?AXg&Z7lV+vmGq_m%_6-hR%u zD7iVKKEPao{r@>0p@oNL9CX;4XTLw@vhI%T>v}s`|8^KXw)*-@;X{JR&4+F+w;65! z>ONc$wmtr&`~K%k?lgtHWVrjac98)?xaZHctA4oc`g>~ax6dz%ecOw;qppfs6v%t+ z2)v`^;9u`;!SVXr=gnM2+)+!puiTxMsKapocll|C8^JHb<0_ZV=WE}mw|#->+eH2n z^D8&*_AmK!Eu>8OZk@Dw9?#kbj!HZJd^&wqd&}bRAHpvRd=DLE)n{Cl;cd}z>Fx7$ zmM3Cc-1OsG__nV;%G7hfw>p*K&59R6vul277T$Pmez#<@9N#m084L9X(px1O<h_5s z4XE4o_ubCt^EUj7`TDnr`_@If1;@9CW;5JK4fuY)=5<^J)A5%e*LI8Rhv^^qQ}&7J z%gps(8lUpCJmFZRb-jS^QQ7aGlAw6KAh_?;{8+Ewr)#AreD27Wve1~?aqj5x14lZA z=U!awetdd^|C!udTMET=A{OLx|N1cHQ>q@%qZx4u3j-@;E?mA}z&EMn_s_2^PsB{( z;^mtCrdK}@mu%bj<7nj(BZju(2}^FDKhJPM_r}iR^sSP`x6iO&$b3~caY_`g1(#x7 zfQXlUPjbWRzwdUvUUy)2&9PX9bz*n+R&U>2_4U<`$w7a%8WzapJ-+gw>iyfLyI6$x zFqY)Vfl~42w6jIK%HC#$JX^Q_Ulsd(F%vESQ$B*skGt!p{<tXhd>-?asm3#!P43p! zt!FCYmRf6lCHGZDq-2lwp92j%4GU$Ky#4msm;o*`*`%KJ!S|z9=CM~B3weBInP`S? zpD(Xi#Qn=~%B#{>X8Ye<RXNLhz<l<)7Y8iZc9p+>cV?#X@f|g$=LPKS-^EnDTzc03 z^>#^~Ij_&QU1#|4L+8D#?ChfldL)hKG%~Z#n!3_x=gz0oqUY?|waX~H)XJ4@U(=S^ zd+Otu3z+nHJPeb)b}=!R{En^tdR5eEM(N8d!TzP|c6IGO>B*Da;6GvB(oaWJo7ow7 z8KjOmMy>w)hwaawb=g}NOx)!nYk%C7;hvmB;PnH%3;w?}K2ZKjd)*GDzda!{na>3u zn8z4;Z|MU=;{)&P*?)6CGG*{pzuWz5z8!PHZ&9{?QCqX7)}>{gVC22tA=r3*;gtzZ zc`F+mmu<AW&hX)Xrm4%4=%h4-w^!>DyVbWRM6f0Aod1|XcaP!c>_xK~_x_hY(&)MR z@1J|$|AHJ7xa;Wpn$OwyeNQvLWYn-UI^i&>L}J6qx6h9Y+--``eIf31eR5*MFFzB> zhRKC@=BcZs88~d0=XD5c$#a~2XGY}1y*`#!k81SeijOn=n$Ef6vZg`8tE~MSLSoAA zmPYAHOgr-8o&2E{G0Y1%9WDw=TP@p|{I=xxPtiHmY$tSI91lvm{@YOXI>Q%Fok-P? ziHx`J)`@brcY|Z_#@9p6^Vu5Y`E~a2t4!M>q;<OC<?6qu(rg~E?qp>a60J9=`q#IV z@dZo9RkuGazn3v=pD()lZw>b&;fD1VQMxajgZ@n4IX5KzI>QAHkD#=M?)03<x8l=Q z?JRzN3gobY@0ZoJnFaa|zj(JTcWeBON$F?LN>1w+dH39Tzi>6f7tT+I87EDVII-&X z`Tlb=jnhx*zHkq!xxUjp!Ck81-p8d2XEYm32;DwE{^r)G3;hdkte@|~yg>87#?LW! zjca!QJvIH$1<{?Xe<ixUR>?~-_%Tmga>U`<-MYFhr*vN&4_I@(x~RBeKkF88hc!0S z`{vB9(Tm-6We0!FlykW?>A%0ee!eDt|GmnmQ^Oy5yBJPSdf>a4Y04tig~c&4lf}2s zmtP7BBazcz^WHGVaEnZ1J2t6BN%thf-2`rNJ(Fj*>r{<rKJcuKHgMe3ud;QrEraeQ zJ0}k%_jR}Xd*g~)7}tu~9CCGXznjT$OLfYONtS0E;_lYf@j9#qIrz^n!#m<{xEtCW zCNVIV{ML=$cIL(TYE=j4n<^i29n=5(_;_xXY4)kMi>)Ule$468f7;*U|Gy*W{*%l5 zTOK-HaL|j`aA0Gp_>+RA{(s(?$*|0sUa`s2Hz03+g6RG2`SHv5?TgDhm{8KnwRCyC z#;;YoXEw(a{r*{e%<)p?=Vvc(H~kA~<y$D{kipgLYLIio;Q2Z0_a(QsUY?OHaBPR) zf`tnYMsCdto$!DwSef|^V@=%Sy}NW3m}?f@EjY~UH(jrF?G5I8OB1fgRj;k``DoVM zY{D@A$n3VH=PSOYPLEYnT9wkkR(x)bB`A-D8hlXXJ#bJfFW`cfWWx0S&t~UeTTwQ3 z&(4FH7Vf=LPyb!{pCOsCfboW4?wqc(rw=?iIeBjJdE4vNUdKZX4qR>e{QP`*)b?lp zL??Af{+QC-@MiY6UW+7GcDAZ7FCOYdZgP45PchngzFqB{UTJfy?Ca}zB`4?QA3Kot zjlnLfEXZCtsi8T7nT@AIW7{9M!;T^Q+^$~D{QRmT`e5}N#trpVWk&>`+wEHD+<xk< zc%t@%XagssewVFtY#ZLX*S*%@V*7Dq*T-YhSHJc*`S{CRk16iG(<Eo7WKq-2mJrP% zsL938EUe~JVDUq}a~k6}rYB-OQ!c+XVaRuvN<F8%_;$bift;I@;$tSeoNc(%G|?#P zhER_9qC4W5TP*u}cuSs~m}r@%aBtCRT?xtka~St@+cwN?7mPep+1rt4UmEy$eXUf) z*)=?8iyhx*GT7PnTrhlQ%fuIS@~wEi_5%fN-nDm{7Vgk9VwlA((B=JRHQ)C8UtV5z zKDOv~vynl@1%>w0t5r>n512Z%`a14Zow1Dh`kBR#PrMax+9R+%EBdRz6U%efJAO07 zGit1t|FwMoR)Ygq>xzC~JruK}`b+M?fIp&l{;y-KP!0*P+&44NeqaBox6}QU7d)JL zeW}_zZvNWq3~SbFa@`G)=nZ4`S+BU`zSxzlgR5RAaKA6$Ww_67A@2~x%3Sn2)G@5b z@u}FFS$AxAJl4JURI1^7fse<k1c$u+S|_>;SKMg|oqYPMJ!@?_FGDQT8&(e{BZuwx zw`5*sY75)2Lvlg%gwyL)8zmlm`QP;Vz9~bm#YW8wYq>%a8fMoNi9{vwF-Pf2?9jWW zn3AaNaGl}9x#vvx=Y4L7dYhicJR#bkVDFx1ZC|7q<~>=W;K|Ci<zzZ*5zh{l?F;f% z1CGZRIal%?2%A%LfA50-OC=vDiR6BYoFy%M?v(C}Xl@yXoLkICvKcBIA2W#ln0$LZ zlO<d1qUeH4OFY@0o>;M_fGJ?|@$=aXUAx%aQg2Q;bK-5fhwG1&<~+w-rKo8teP2y$ zxm#v8RXw%%GvVbIqoN-Xvuma)9DNWhBXDPT`TEU8PraIpXL?<$YYds4_OGg%;mq09 z4By!&R7hONvgel+lg--tAaJVd-Mmi>AF_&>5Bxk>;|`MC{?{fYqC{gmSW<5dW5Ie8 zbA~(8A2h!&`e)sGzOs00{OYi^F72&6Cv+o1GOxT{^w)m2G(%h6o)^>R{GV|9{5v*< z?FoT@ZNt8B+t1=>`t&RA0apWa(@wEnf2ZliuHvtWxX1M+_n;GNUBiBRrmkZ@yuLEr zb6GH*d;60={dekaW-t_Si@loo`Txq>u0gBV541YoZTQ^f^z04$-MaESh3%L3)&8C{ z)n@k5snHj9GMoNR`Fu<FDs#dNQwDpP3EqWw>vBvcy)kgu{y=m2oJn(;SoJ-bo7QQF z?wP~*p#4VopVp;$=U!Rv{JSY~v&oA&iZh&Vb{Jisu2pWye4z1wyZ7A*UyI+V%`f_$ zx_Mdgub12G7nt4Tw(vS7$-q{_q47yluC$!Z|H+odlnrX$;+pMwj{8p82hHlel;>cs zvz=!bhs8nLiC_O0{Z8H6#y_<`@1XB&Gt2DjpM1?fAA0$BI}^Lt)Ga~$4Y6&hOY=^F zoe{P9=+j3E`t}d!P0r`G>$&uK>b@mYikPdIi!L1yQTY5h;pw-}Vb$OIcbC3?W@2Ju zu{vz+siMU13ko(fy!#p$6g9=B`bmnnj2^q2oaNNL%5@=+_WgcWthevSqc@^{s#>QR zcn^GdczAB<YYTU^$(y8>O7XwZ54X~)P<>c^xYl7AFT?Jp9G0(NzxpLBKX>%}bl||o z<8rgVX5Rb0Snjlz{p%a+*$)`hHl#N^{^_j5cBDa+r{MPb%?(}mf3Gm%crk5~G{>cW z4MFCl19EH@4e^0LBc~{^H9UOBT4b)?z&gEyky|oh`~P<eKl!p4c9=bARS?wbkq}^B zX?!63TYB>or4@`1au(I|3N1X;!Du+aiuujP;PhJ66ABBYIoTO^E)B5%-tw=T(J(=V zdG>_G>zU=*PexvlV|e_iPpP}fWtBma1J9CU40pdZPML4HW*Pf|4}Tf=MVCC}@01W= zb~8NC{-q!x`$A0UW#)uAcY=OwcT^6yFjQa@N=?uVx*g@)b@dyA#CL&)XztQy5G@8D zIExDP4qUBoTzX56K{<~9gDu$CmOKIKtApy&_D+*ycrVRWkk?SfnBuI&b}4nivgP)h zW4!qrzVBsQA?~22lB7_}mR0r3`1aOs3>Es-j56FWj>rocDzF75HYoqE`TqRa{7~<; zwhU@V;u@Z@hWPHx6JVZbbinezsiu9g;4=0DzpI)2nbkkHg9Z~^Bp*z=pU)7T?Rz!f z+hBji{~m@rAt_Dq4zc3QNeV@5&lHZiA3h?rjs3tDYlhVg>pwwsNj!LU$M8UUVi5Oj z=7d{!)DzeZ1Un8bP>=$Jiyco)?`!>^Eg$#FqzPP*{@MKF<Am=meMcK4I(i%LE2iar zmyKFflQh5W&WF$idL`>b8YKjnpGrJfGXLU%TSbhkEai`CH_Vp%J8^Bp#&?{5Ar8rN z?csM3&7NY*@a(0<gZ=|I|0se+A%fWEIp;iX2w<+iC*yjPIbqM8o(bM<>dbZbWgG-R zj$xEsaJp7&gJQxDhl7jE7<|6)F0ek(%c+v&z~gfGfW7jp6Y2Nd{&GDK+se%s#v~&# zrGwE>ppUWa?{Q}9!>+|&?gs8;oPGR^?a6h_-%R!|xS!;}6LR!GUdum4ft{a>#S8Z^ z8N{6mYk16%%mA`(tKkRXJKMHwi~jq*>$T_s-<`I67M>k<#X)jc4ITP#wK_PLZfE6} z-OiZcw<G_+V}@`(uOkf-9LE^Ke_ecfJoWoV&pGQE@|NxNdyxBJeZ!7pGIzFoiRVda zY-H9rVv^u`r`7Wi!v>!9OmmdZY&{K%b}i!%+A;rJpDJ98@qHwE;H+jkXVJk4%eZ#; zyx1>cF^kde>we~fFZN}gml!q}FgF};r~?Pxf{w<uKaR4is9#o9^4vdpe_zmF*#nuq zAQSrxHgLDwGYAFOsm;A2!Em{#mG#M_W84i(sul9&zQps)IC4Pz#2KFl_LI(qNU=4f zKDlzN?|?Zd`xc!$;2&70ROoq{VZ#D{1{rRPx%Mha3d?!!bQk?scDNq@Xi}N@9$~LD zGn*C*>F*R0VSZ`+K|ST6e&dO2-@~JqEMaGy{XAdY?+@>XoX_09blHr~G2H(1)FJDX zf8FJGj0XHu8V?vHFw}b-aX2P<qvg|F{tMdERxP>9T)^$`w2t9kssD@p5+^j6a~=mb zT$wum&oWDn6JPdz;;Z|R%zmHEszU!o1W!r}quz&~avP3K`7|Si;l#<X2bB(P3@RQ* zM;WHhfB#3@S8Hk}Tf?0kRttZK_(6uL^QE7zGg@n+CdE*+g*U+ez?N%^{#-fK@cW6m z-_J;iU|xpL+e8-#{t!D5*(_w3Ak8fE;j#69uVCZ6O^gcZ(T(bj6CJ`Gl-P0-6O4^c z<=LzM_HZ&P;Cfdtl_7GZku|p=w^Tr(b3)@}f$LcgZVoat?y!X|=-sq7N^#kKrV7s| zQ%?S8@>nM(P&xDBMopeSY?43i4)8yXQZ$of5ZWdFU`pb-geU)+mYqp)2~)95Yk2*$ zp0mJrzu9ij6^cIYRxv&)MdbmNr|bR(JY24N<=IppW42=t&7X&OUp(R{mD`Y;U$fb4 z<$O-#3-T{@*)L@<cp2~CW8Y_HuJCZ1TxHR=UdAa(4Zpen@jXaCagNPIk3mRfqv3(? zf8!bJ`S-|2Yjy2VW81N0MzH?Z6fyR~EsW>hJbohAd60+4`JNo}qYQ>F<NbT=y3CGl zQ{C9mxb4K_m<Hu7K~aSQ%XmL<+va%J9Gwzz>_Ehm@ZgSAhAdMC{e^!oTvpjQqtWWg z-!g~2jFL?Y+8Tt<SzNfzJ0Yc|(NLqkirI*%&h3Hb7U7@Yj2C@5+kNofft-eQ&imUI zy#D#<h4Plp*^F;(8HG0K#rTxiE2xUIvtQ(sWAI~Eu}oT^ddf=h!M|oBmY+`=O6xfl zP8u@T=+5BGVNc=sbdd4;oH?u|3@S+r4mjBVS-Rb!O<}j&gXAmk&o{<3xbRF#X^6J` zEA?Q(gesPs4;s48Tgh^HfaYiR^#mBPlu0va)-71J&S9#=gFo-*Ggg^yI4)7s@avNB z{-D*@wyu(VAaSrJL3u$qv$5rkrd<zh_}?k%3NmjrIPhLLhSi4g4SNdDrKb(02lCy0 zSgRO>3@30f&v7r{+aU2^dT%Pnq^Aw*Q@R=Seq=%BqQ1DDGH#gaz^srgz|UUIS8OBu z|EHH4=Shd|3Ey9TOJdt0dsFg2d1E&NpTef)3M=O_<{jM1_n_><oK3%N6goQ?B^x?A zbOe2^=ls?xuq#kBkjP;6_#^qC+IH%^-5>tQRR}&1iiJ*@Wz2kW>yeH6!XCy90gK}f z%wY-#mES*};q{+m1KWc%ncobaJv=8Ej(Fs?uK4{}Dtvw|_XEFUCDEm9pH${A+AzCu zdE-+C(SN)SlN6YZ7&s@zs%iEK^02fqC^r~0N_9+b)Zw&MUC$iy<?4a#18NT#6g)c_ zB^#!6eD~ZYzV7no58@2$LN}u=IA3sXVfUF9dqO6*<ULc!hxEp;2h1MmIwT1&8!@nj zw)uzcdThnZ!0Tw=u%5S;L5f>1^BqeK=YtC8IfuR%mEA9Al4rDLICnt#6{FqDOa=@7 z_#_KvBZju{fQC00zrK)SkZSB>sODE^%3J@CMdq@_hbrraV@oRU*7p_9XP9%?Vd*la wdX7Ep0SmV?<}=qE3jUeNlEI)NX8hs5!~LCnS#P>PizgX8UHx3vIVCg!02|oaVE_OC diff --git a/packages/create-llama/templates/simple/nextjs/app/globals.css b/packages/create-llama/templates/simple/nextjs/app/globals.css index fd81e8858..d85e2eec9 100644 --- a/packages/create-llama/templates/simple/nextjs/app/globals.css +++ b/packages/create-llama/templates/simple/nextjs/app/globals.css @@ -25,3 +25,15 @@ body { ) rgb(var(--background-start-rgb)); } + +.background-gradient { + background-color: #fff; + background-image: radial-gradient( + at 21% 11%, + rgba(186, 186, 233, 0.53) 0, + transparent 50% + ), + radial-gradient(at 85% 0, hsla(46, 57%, 78%, 0.52) 0, transparent 50%), + radial-gradient(at 91% 36%, rgba(194, 213, 255, 0.68) 0, transparent 50%), + radial-gradient(at 8% 40%, rgba(251, 218, 239, 0.46) 0, transparent 50%); +} diff --git a/packages/create-llama/templates/simple/nextjs/app/page.tsx b/packages/create-llama/templates/simple/nextjs/app/page.tsx index a6c7e79f0..31f51facb 100644 --- a/packages/create-llama/templates/simple/nextjs/app/page.tsx +++ b/packages/create-llama/templates/simple/nextjs/app/page.tsx @@ -1,34 +1,11 @@ -import MessageForm from "@/app/components/message-form"; -import Image from "next/image"; +import ChatSection from "@/app/components/chat-section"; +import Header from "@/app/components/header"; export default function Home() { return ( - <main className="flex min-h-screen flex-col items-center gap-10 p-24"> - <div className="z-10 max-w-5xl w-full items-center justify-between font-mono text-sm lg:flex"> - <p className="fixed left-0 top-0 flex w-full justify-center border-b border-gray-300 bg-gradient-to-b from-zinc-200 pb-6 pt-8 backdrop-blur-2xl dark:border-neutral-800 dark:bg-zinc-800/30 dark:from-inherit lg:static lg:w-auto lg:rounded-xl lg:border lg:bg-gray-200 lg:p-4 lg:dark:bg-zinc-800/30"> - Get started by editing - <code className="font-mono font-bold">app/page.tsx</code> - </p> - <div className="fixed bottom-0 left-0 flex h-48 w-full items-end justify-center bg-gradient-to-t from-white via-white dark:from-black dark:via-black lg:static lg:h-auto lg:w-auto lg:bg-none"> - <a - className="pointer-events-none flex place-items-center gap-2 p-8 lg:pointer-events-auto lg:p-0" - href="https://vercel.com?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app" - target="_blank" - rel="noopener noreferrer" - > - By{" "} - <Image - src="/vercel.svg" - alt="Vercel Logo" - className="dark:invert" - width={100} - height={24} - priority - /> - </a> - </div> - </div> - <MessageForm /> + <main className="flex min-h-screen flex-col items-center gap-10 p-24 background-gradient"> + <Header /> + <ChatSection /> </main> ); } diff --git a/packages/create-llama/templates/simple/nextjs/app/services/chatStorage.service.ts b/packages/create-llama/templates/simple/nextjs/app/services/chatStorage.service.ts new file mode 100644 index 000000000..6f92ce86a --- /dev/null +++ b/packages/create-llama/templates/simple/nextjs/app/services/chatStorage.service.ts @@ -0,0 +1,35 @@ +import { ChatMessage } from "llamaindex"; + +export const CHAT_STORAGE_KEY = "chatHistory"; + +class _ChatStorageService { + public getChatHistory(): ChatMessage[] { + const chatHistory = localStorage.getItem(CHAT_STORAGE_KEY); + return chatHistory ? JSON.parse(chatHistory) : []; + } + + public saveChatHistory(chatHistory: ChatMessage[]) { + localStorage.setItem(CHAT_STORAGE_KEY, JSON.stringify(chatHistory)); + } + + public clearChatHistory() { + localStorage.removeItem(CHAT_STORAGE_KEY); + } + + public addChatMessage(chatMessage: ChatMessage) { + const chatHistory = this.getChatHistory(); + chatHistory.push(chatMessage); + this.saveChatHistory(chatHistory); + } + + constructor() { + if (typeof window !== "undefined") { + const chatHistory = localStorage.getItem(CHAT_STORAGE_KEY); + if (!chatHistory) this.saveChatHistory([]); + } + } +} + +const ChatStorageService = new _ChatStorageService(); + +export default ChatStorageService; diff --git a/packages/create-llama/templates/simple/nextjs/public/llama.png b/packages/create-llama/templates/simple/nextjs/public/llama.png new file mode 100644 index 0000000000000000000000000000000000000000..d4efba3b816bf765439c6d01b322b02684e946c3 GIT binary patch literal 36985 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 Z1<z_U4-`xNVPIfj@O1TaS?83{1OS^n$>{(9 literal 0 HcmV?d00001 diff --git a/packages/create-llama/templates/simple/nextjs/public/next.svg b/packages/create-llama/templates/simple/nextjs/public/next.svg deleted file mode 100644 index 5174b28c5..000000000 --- a/packages/create-llama/templates/simple/nextjs/public/next.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg> \ No newline at end of file diff --git a/packages/create-llama/templates/simple/nextjs/public/vercel.svg b/packages/create-llama/templates/simple/nextjs/public/vercel.svg deleted file mode 100644 index d2f842227..000000000 --- a/packages/create-llama/templates/simple/nextjs/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 283 64"><path fill="black" d="M141 16c-11 0-19 7-19 18s9 18 20 18c7 0 13-3 16-7l-7-5c-2 3-6 4-9 4-5 0-9-3-10-7h28v-3c0-11-8-18-19-18zm-9 15c1-4 4-7 9-7s8 3 9 7h-18zm117-15c-11 0-19 7-19 18s9 18 20 18c6 0 12-3 16-7l-8-5c-2 3-5 4-8 4-5 0-9-3-11-7h28l1-3c0-11-8-18-19-18zm-10 15c2-4 5-7 10-7s8 3 9 7h-19zm-39 3c0 6 4 10 10 10 4 0 7-2 9-5l8 5c-3 5-9 8-17 8-11 0-19-7-19-18s8-18 19-18c8 0 14 3 17 8l-8 5c-2-3-5-5-9-5-6 0-10 4-10 10zm83-29v46h-9V5h9zM37 0l37 64H0L37 0zm92 5-27 48L74 5h10l18 30 17-30h10zm59 12v10l-3-1c-6 0-10 4-10 10v15h-9V17h9v9c0-5 6-9 13-9z"/></svg> \ No newline at end of file -- GitLab