From f4b96e1f84a0d147ab3f5f7318c5864ce76f64e8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 1 Mar 2026 00:16:25 +0000 Subject: [PATCH] sync(ui): update UI --- ui/src/components/chat/ChatView.tsx | 4 ++ ui/src/components/chat/ThinkingIndicator.tsx | 12 ++++++ ui/tailwind.config.ts | 40 +++++++++----------- 3 files changed, 34 insertions(+), 22 deletions(-) create mode 100644 ui/src/components/chat/ThinkingIndicator.tsx diff --git a/ui/src/components/chat/ChatView.tsx b/ui/src/components/chat/ChatView.tsx index dbda402..c8e2218 100644 --- a/ui/src/components/chat/ChatView.tsx +++ b/ui/src/components/chat/ChatView.tsx @@ -1,6 +1,7 @@ import { useRef, useEffect } from 'react'; import ChatMessage from './ChatMessage'; import ChatInput from './ChatInput'; +import ThinkingIndicator from './ThinkingIndicator'; import ThemeToggle from '@/components/ThemeToggle'; import type { Message, FileAttachment } from '@/lib/llm'; @@ -41,6 +42,9 @@ export default function ChatView({ ))} + {/* Thinking indicator — visible before first stream token */} + {isLoading && !streamingContent && } + {/* Streaming Message */} {streamingContent && ( +
+ + + + Thinking... +
+ + ); +} diff --git a/ui/tailwind.config.ts b/ui/tailwind.config.ts index cc139df..ded75f4 100644 --- a/ui/tailwind.config.ts +++ b/ui/tailwind.config.ts @@ -63,28 +63,24 @@ export default { md: 'calc(var(--radius) - 2px)', sm: 'calc(var(--radius) - 4px)' }, - keyframes: { - 'accordion-down': { - from: { - height: '0' - }, - to: { - height: 'var(--radix-accordion-content-height)' - } - }, - 'accordion-up': { - from: { - height: 'var(--radix-accordion-content-height)' - }, - to: { - height: '0' - } - } - }, - animation: { - 'accordion-down': 'accordion-down 0.2s ease-out', - 'accordion-up': 'accordion-up 0.2s ease-out' - }, + keyframes: { + 'accordion-down': { + from: { height: '0' }, + to: { height: 'var(--radix-accordion-content-height)' } + }, + 'accordion-up': { + from: { height: 'var(--radix-accordion-content-height)' }, + to: { height: '0' } + }, + 'dot-pulse': { + '0%, 80%, 100%': { opacity: '0.3', transform: 'scale(0.8)' }, + '40%': { opacity: '1', transform: 'scale(1.2)' } + } + }, + animation: { + 'accordion-down': 'accordion-down 0.2s ease-out', + 'accordion-up': 'accordion-up 0.2s ease-out' + }, fontFamily: { sans: [ 'Poppins',