feat(ui): add animated thinking bubble to chat panel to indicate ai progress
This commit is contained in:
@@ -220,8 +220,49 @@ function thoughtPreview(thoughts: string): string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function ThinkingBubble({ thoughts }: { thoughts: string }) {
|
function ThinkingBubble({ thoughts }: { thoughts: string }) {
|
||||||
// Hide thoughts completely to avoid the "weird paragraph" streaming effect
|
if (!thoughts) return null;
|
||||||
return null;
|
|
||||||
|
// Split thoughts into phrases, take the last one as the "current" action
|
||||||
|
const lines = thoughts
|
||||||
|
.split(/[.!?\n]/)
|
||||||
|
.map((l) => l.trim())
|
||||||
|
.filter(Boolean);
|
||||||
|
const currentAction = lines[lines.length - 1];
|
||||||
|
|
||||||
|
if (!currentAction) return null;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
display: "flex",
|
||||||
|
alignItems: "center",
|
||||||
|
gap: 8,
|
||||||
|
padding: "6px 12px",
|
||||||
|
margin: "4px 0",
|
||||||
|
fontSize: "0.75rem",
|
||||||
|
color: "#8c8580",
|
||||||
|
fontFamily: "var(--font-inter),ui-sans-serif,sans-serif",
|
||||||
|
fontStyle: "italic",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
position: "relative",
|
||||||
|
width: 14,
|
||||||
|
height: 14,
|
||||||
|
display: "flex",
|
||||||
|
alignItems: "center",
|
||||||
|
justifyContent: "center",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Sparkles
|
||||||
|
style={{ width: 12, height: 12, opacity: 0.7 }}
|
||||||
|
className="animate-pulse"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<span className="animate-pulse">{currentAction}</span>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function MessageBubble({ msg }: { msg: Message }) {
|
function MessageBubble({ msg }: { msg: Message }) {
|
||||||
|
|||||||
Reference in New Issue
Block a user