Skip to content

Commit f6a2496

Browse files
committed
chore: update frontend packages (#877)
1 parent 71e0160 commit f6a2496

File tree

14 files changed

+765
-697
lines changed

14 files changed

+765
-697
lines changed

usecases/ai/edge-ai-demo-studio/frontend/package-lock.json

Lines changed: 279 additions & 318 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

usecases/ai/edge-ai-demo-studio/frontend/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
"graphql": "^16.11.0",
4242
"hast-util-to-jsx-runtime": "^2.3.6",
4343
"lucide-react": "^0.552.0",
44-
"next": "^15.5.4",
44+
"next": "^15.5.7",
4545
"next-themes": "^0.4.6",
4646
"openai": "^6.7.0",
4747
"openvino-node": "^2025.1.0",

usecases/ai/edge-ai-demo-studio/frontend/src/components/samples/digital-avatar/conversation-panel.tsx

Lines changed: 40 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import {
2525
Square,
2626
Languages,
2727
Mic,
28+
Trash2,
2829
} from 'lucide-react'
2930
import { useEffect, useRef, useState, useMemo } from 'react'
3031
import { toast } from 'sonner'
@@ -36,6 +37,11 @@ import {
3637
} from '@/components/workloads/text-to-speech/common'
3738
import Markdown from 'react-markdown'
3839
import remarkGfm from 'remark-gfm'
40+
import {
41+
Tooltip,
42+
TooltipContent,
43+
TooltipTrigger,
44+
} from '@/components/ui/tooltip'
3945

4046
interface ConversationPanelProps {
4147
sessionId: string
@@ -62,7 +68,7 @@ export function ConversationPanel({
6268
enabled: !disabled,
6369
})
6470

65-
const { messages, sendMessage, status, stop } = useChat({
71+
const { messages, sendMessage, status, stop, setMessages } = useChat({
6672
transport: new DefaultChatTransport({
6773
api: '/api/chat/digital-avatar',
6874
}),
@@ -182,16 +188,42 @@ export function ConversationPanel({
182188
}
183189
}
184190

191+
const handleClearChat = () => {
192+
handleStopChat() // Stop any ongoing generation
193+
setMessages([])
194+
toast.success('Chat history cleared')
195+
}
196+
185197
return (
186198
<Card>
187199
<CardHeader>
188-
<CardTitle className="flex items-center gap-2">
189-
<MessageCircle className="h-5 w-5 text-blue-500" />
190-
Conversation
191-
</CardTitle>
192-
<CardDescription>
193-
Chat with your digital avatar in multiple languages
194-
</CardDescription>
200+
<div className="flex items-center justify-between">
201+
<div className="space-y-1.5">
202+
<CardTitle className="flex items-center gap-2">
203+
<MessageCircle className="h-5 w-5 text-blue-500" />
204+
Conversation
205+
</CardTitle>
206+
<CardDescription>
207+
Chat with your digital avatar in multiple languages
208+
</CardDescription>
209+
</div>
210+
<Tooltip>
211+
<TooltipTrigger asChild>
212+
<Button
213+
variant="outline-destructive"
214+
size="sm"
215+
onClick={handleClearChat}
216+
hidden={messages.length === 0}
217+
className="flex items-center gap-2"
218+
>
219+
<Trash2 className="h-4 w-4" />
220+
</Button>
221+
</TooltipTrigger>
222+
<TooltipContent side="bottom" align="center">
223+
<p className="text-sm">Clear chat history</p>
224+
</TooltipContent>
225+
</Tooltip>
226+
</div>
195227
</CardHeader>
196228
<CardContent className="space-y-4">
197229
{/* Language and Voice Settings */}

usecases/ai/edge-ai-demo-studio/frontend/src/components/samples/rag-chat/chat-panel.tsx

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,14 @@
66
import { Button } from '@/components/ui/button'
77
import { ScrollArea } from '@/components/ui/scroll-area'
88
import { Textarea } from '@/components/ui/textarea'
9+
import {
10+
Tooltip,
11+
TooltipContent,
12+
TooltipTrigger,
13+
} from '@/components/ui/tooltip'
914
import { useChat } from '@ai-sdk/react'
1015
import { DefaultChatTransport } from 'ai'
11-
import { Bot, Send, User, Square, Loader2 } from 'lucide-react'
16+
import { Bot, Send, User, Square, Loader2, Trash2 } from 'lucide-react'
1217
import { useEffect, useRef, useState } from 'react'
1318
import Markdown from 'react-markdown'
1419
import remarkGfm from 'remark-gfm'
@@ -26,7 +31,7 @@ export function ChatPanel({
2631
const chatEndRef = useRef<HTMLDivElement>(null)
2732
const [currentMessage, setCurrentMessage] = useState('')
2833

29-
const { messages, sendMessage, status, stop } = useChat({
34+
const { messages, sendMessage, status, stop, setMessages } = useChat({
3035
transport: new DefaultChatTransport({
3136
api: '/api/chat/rag',
3237
}),
@@ -66,6 +71,11 @@ export function ChatPanel({
6671
stop()
6772
}
6873

74+
const handleClearChat = () => {
75+
handleStopChat() // Stop any ongoing generation
76+
setMessages([])
77+
}
78+
6979
return (
7080
<div className="flex h-full flex-col bg-gradient-to-b from-slate-50 to-white dark:from-slate-900 dark:to-slate-800">
7181
{/* Chat Messages */}
@@ -146,7 +156,7 @@ export function ChatPanel({
146156
className="max-h-[120px] min-h-[56px] resize-none rounded-xl border-slate-300 bg-slate-50 px-4 py-3 text-sm focus:border-blue-500 focus:ring-2 focus:ring-blue-500/20 dark:border-slate-600 dark:bg-slate-800"
147157
disabled={disabled || status !== 'ready'}
148158
/>
149-
<div className="flex flex-col gap-2">
159+
<div className="flex flex-row gap-2">
150160
{status === 'streaming' ? (
151161
<Button
152162
type="button"
@@ -176,6 +186,23 @@ export function ChatPanel({
176186
<Send className="h-5 w-5" />
177187
</Button>
178188
)}
189+
190+
<Tooltip>
191+
<TooltipTrigger asChild>
192+
<Button
193+
variant="outline-destructive"
194+
size="icon"
195+
onClick={handleClearChat}
196+
hidden={messages.length === 0}
197+
className="h-[56px] w-14 rounded-xl"
198+
>
199+
<Trash2 className="h-5 w-5" />
200+
</Button>
201+
</TooltipTrigger>
202+
<TooltipContent side="top" align="center">
203+
<p className="text-sm">Clear chat history</p>
204+
</TooltipContent>
205+
</Tooltip>
179206
</div>
180207
</div>
181208
</div>

usecases/ai/edge-ai-demo-studio/frontend/src/components/ui/button.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,14 @@ const buttonVariants = cva(
1818
'bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60',
1919
outline:
2020
'border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50',
21+
['outline-destructive']:
22+
'border border-destructive text-destructive hover:bg-destructive/10 dark:hover:bg-destructive/20',
2123
secondary:
2224
'bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80',
2325
ghost:
2426
'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50',
27+
['ghost-destructive']:
28+
'hover:bg-destructive/10 hover:text-destructive dark:hover:bg-destructive/20',
2529
link: 'text-primary underline-offset-4 hover:underline',
2630
},
2731
size: {

usecases/ai/edge-ai-demo-studio/frontend/src/hooks/use-image-generation.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,8 +225,10 @@ export interface ImageGenerationFormData {
225225
showAdvanced: boolean
226226
}
227227

228-
export interface ImageEditFormData
229-
extends Omit<ImageGenerationFormData, 'numImages'> {
228+
export interface ImageEditFormData extends Omit<
229+
ImageGenerationFormData,
230+
'numImages'
231+
> {
230232
numImages: number
231233
sourceImage: File | null
232234
sourceImagePreview: string

usecases/ai/edge-ai-demo-studio/frontend/src/lib/server-db-utils.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,6 @@ import { getPayload } from 'payload'
66
import configPromise from '@payload-config'
77
import { McpServer } from '@/payload-types'
88

9-
// export interface McpServerDoc {
10-
// id: number
11-
// name: string
12-
// url: string
13-
// apiKey?: string
14-
// disabled?: boolean | null
15-
// description?: string
16-
// }
17-
189
let payload: Awaited<ReturnType<typeof getPayload>> | null = null
1910

2011
async function getPayloadInstance() {

0 commit comments

Comments
 (0)