From e37be407732f328576ca4aed34b7e2cece1e7da4 Mon Sep 17 00:00:00 2001 From: Henry Li Date: Fri, 16 Jan 2026 20:40:09 +0800 Subject: [PATCH] feat: add flip display effect --- .../src/components/workspace/flip-display.tsx | 29 +++++++++++++++++++ .../workspace/message-list/message-group.tsx | 17 +++++++---- .../workspace/message-list/message-list.tsx | 2 +- 3 files changed, 41 insertions(+), 7 deletions(-) create mode 100644 frontend/src/components/workspace/flip-display.tsx diff --git a/frontend/src/components/workspace/flip-display.tsx b/frontend/src/components/workspace/flip-display.tsx new file mode 100644 index 0000000..6c3a2ca --- /dev/null +++ b/frontend/src/components/workspace/flip-display.tsx @@ -0,0 +1,29 @@ +import { AnimatePresence, motion } from "motion/react"; + +import { cn } from "@/lib/utils"; + +export function FlipDisplay({ + uniqueKey, + children, + className, +}: { + uniqueKey: string; + children: React.ReactNode; + className?: string; +}) { + return ( +
+ + + {children} + + +
+ ); +} diff --git a/frontend/src/components/workspace/message-list/message-group.tsx b/frontend/src/components/workspace/message-list/message-group.tsx index 16f9d82..dcc7ae1 100644 --- a/frontend/src/components/workspace/message-list/message-group.tsx +++ b/frontend/src/components/workspace/message-list/message-group.tsx @@ -29,6 +29,8 @@ import { useRehypeSplitWordsIntoSpans } from "@/core/rehype"; import { extractTitleFromMarkdown } from "@/core/utils/markdown"; import { cn } from "@/lib/utils"; +import { FlipDisplay } from "../flip-display"; + export function MessageGroup({ className, messages, @@ -62,17 +64,20 @@ export function MessageGroup({ {open && steps.length > 1 ? (
{steps.length} steps
) : ( - - {label} - + + + {label} + + )}
{!open && steps.length > 1 && ( -
- {steps.length - 1} more step - {steps.length - 1 > 1 ? "s" : ""} +
+ {steps.length - 1 > 1 + ? `${steps.length - 1} more steps` + : `${steps.length - 1} more step`}
)}
diff --git a/frontend/src/components/workspace/message-list/message-list.tsx b/frontend/src/components/workspace/message-list/message-list.tsx index 215b6ab..f947e38 100644 --- a/frontend/src/components/workspace/message-list/message-list.tsx +++ b/frontend/src/components/workspace/message-list/message-list.tsx @@ -28,7 +28,7 @@ export function MessageList({ - + {groupMessages( thread.messages, (groupedMessages) => {