Spaces:
Build error
Build error
added loading spinner (#17)
Browse files* added loading spinner
Added a spinner component whenever waiting for a query response, so that users know something is still happening
* Updated loading spinner to use native svg/tailwinds & moved it in 'send' button
---------
Co-authored-by: Yee Kit <yeek3063@gmail.com>
frontend/app/components/ui/chat/chat-actions.tsx
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
import { PauseCircle, RefreshCw } from "lucide-react";
|
2 |
|
3 |
-
import { Button } from "
|
4 |
-
import { ChatHandler } from "
|
5 |
|
6 |
export default function ChatActions(
|
7 |
props: Pick<ChatHandler, "stop" | "reload"> & {
|
|
|
1 |
import { PauseCircle, RefreshCw } from "lucide-react";
|
2 |
|
3 |
+
import { Button } from "@/app/components/ui/button";
|
4 |
+
import { ChatHandler } from "@/app/components/ui/chat/chat.interface";
|
5 |
|
6 |
export default function ChatActions(
|
7 |
props: Pick<ChatHandler, "stop" | "reload"> & {
|
frontend/app/components/ui/chat/chat-input.tsx
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
import { Button } from "@/app/components/ui/button";
|
2 |
import { Input } from "@/app/components/ui/input";
|
3 |
import { ChatHandler } from "@/app/components/ui/chat/chat.interface";
|
|
|
4 |
import { Send } from "lucide-react";
|
5 |
|
6 |
export default function ChatInput(
|
@@ -23,12 +24,23 @@ export default function ChatInput(
|
|
23 |
value={props.input}
|
24 |
onChange={props.handleInputChange}
|
25 |
/>
|
26 |
-
<Button type="submit" disabled={props.isLoading} className="hidden md:flex items-center transition duration-300 ease-in-out transform hover:scale-110">
|
27 |
-
|
28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
</Button>
|
30 |
-
<Button type="submit" disabled={props.isLoading} className="md:hidden"> {/* Hide on larger screens */}
|
31 |
-
|
|
|
|
|
|
|
|
|
32 |
</Button>
|
33 |
</form>
|
34 |
);
|
|
|
1 |
import { Button } from "@/app/components/ui/button";
|
2 |
import { Input } from "@/app/components/ui/input";
|
3 |
import { ChatHandler } from "@/app/components/ui/chat/chat.interface";
|
4 |
+
import { IconSpinner } from "@/app/components/ui/icons";
|
5 |
import { Send } from "lucide-react";
|
6 |
|
7 |
export default function ChatInput(
|
|
|
24 |
value={props.input}
|
25 |
onChange={props.handleInputChange}
|
26 |
/>
|
27 |
+
<Button type="submit" disabled={props.isLoading} className="hidden md:flex items-center transition duration-300 ease-in-out transform hover:scale-110 z-10">
|
28 |
+
{props.isLoading ? (
|
29 |
+
<IconSpinner className="animate-spin" />
|
30 |
+
) : (
|
31 |
+
// Fragment to avoid wrapping the text in a button
|
32 |
+
<>
|
33 |
+
<span className="pr-2">Send</span>
|
34 |
+
<Send className="h-5 w-5" />
|
35 |
+
</>
|
36 |
+
)}
|
37 |
</Button>
|
38 |
+
<Button type="submit" disabled={props.isLoading} className="md:hidden z-10"> {/* Hide on larger screens */}
|
39 |
+
{props.isLoading ? (
|
40 |
+
<IconSpinner className="animate-spin" />
|
41 |
+
) : (
|
42 |
+
<Send className="h-5 w-5" />
|
43 |
+
)}
|
44 |
</Button>
|
45 |
</form>
|
46 |
);
|
frontend/app/components/ui/chat/chat-message.tsx
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
import { Check, Copy } from "lucide-react";
|
2 |
|
3 |
-
import { Button } from "
|
4 |
-
import ChatAvatar from "
|
5 |
-
import { Message } from "
|
6 |
-
import Markdown from "
|
7 |
-
import { useCopyToClipboard } from "
|
8 |
import { ToastContainer } from 'react-toastify';
|
9 |
import 'react-toastify/dist/ReactToastify.css';
|
10 |
|
|
|
1 |
import { Check, Copy } from "lucide-react";
|
2 |
|
3 |
+
import { Button } from "@/app/components/ui/button";
|
4 |
+
import ChatAvatar from "@/app/components/ui/chat/chat-avatar";
|
5 |
+
import { Message } from "@/app/components/ui/chat/chat.interface";
|
6 |
+
import Markdown from "@/app/components/ui/chat/markdown";
|
7 |
+
import { useCopyToClipboard } from "@/app/components/ui/chat/use-copy-to-clipboard";
|
8 |
import { ToastContainer } from 'react-toastify';
|
9 |
import 'react-toastify/dist/ReactToastify.css';
|
10 |
|
frontend/app/components/ui/chat/chat-messages.tsx
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
import { useEffect, useRef } from "react";
|
2 |
|
3 |
-
import ChatActions from "
|
4 |
-
import ChatMessage from "
|
5 |
-
import { ChatHandler } from "
|
6 |
|
7 |
export default function ChatMessages(
|
8 |
props: Pick<ChatHandler, "messages" | "isLoading" | "reload" | "stop">,
|
|
|
1 |
import { useEffect, useRef } from "react";
|
2 |
|
3 |
+
import ChatActions from "@/app/components/ui/chat/chat-actions";
|
4 |
+
import ChatMessage from "@/app/components/ui/chat/chat-message";
|
5 |
+
import { ChatHandler } from "@/app/components/ui/chat/chat.interface";
|
6 |
|
7 |
export default function ChatMessages(
|
8 |
props: Pick<ChatHandler, "messages" | "isLoading" | "reload" | "stop">,
|