diff --git a/frontend/apps/app/components/SessionDetailPage/components/Chat/components/Messages/AiMessage/ReasoningMessage/ReasoningMessage.module.css b/frontend/apps/app/components/SessionDetailPage/components/Chat/components/Messages/AiMessage/ReasoningMessage/ReasoningMessage.module.css index 414e2b6d2f..0b2e14d20f 100644 --- a/frontend/apps/app/components/SessionDetailPage/components/Chat/components/Messages/AiMessage/ReasoningMessage/ReasoningMessage.module.css +++ b/frontend/apps/app/components/SessionDetailPage/components/Chat/components/Messages/AiMessage/ReasoningMessage/ReasoningMessage.module.css @@ -60,16 +60,44 @@ overflow-wrap: break-word; word-break: break-word; letter-spacing: 0.01em; - animation: slideDown 0.2s ease; + overflow: hidden; + transform-origin: top; + will-change: opacity, transform; } -@keyframes slideDown { +.content[data-state='open'] { + animation: reasoningFadeIn 200ms ease-out; +} + +.content[data-state='closed'] { + animation: reasoningFadeOut 200ms ease-in forwards; +} + +@keyframes reasoningFadeIn { from { opacity: 0; - transform: translateY(-8px); + transform: translateY(-4px); } to { opacity: 1; transform: translateY(0); } } + +@keyframes reasoningFadeOut { + from { + opacity: 1; + transform: translateY(0); + } + to { + opacity: 0; + transform: translateY(-4px); + } +} + +@media (prefers-reduced-motion: reduce) { + .content[data-state='open'], + .content[data-state='closed'] { + animation: none; + } +} diff --git a/frontend/apps/app/components/SessionDetailPage/components/Chat/components/Messages/AiMessage/ReasoningMessage/ReasoningMessage.tsx b/frontend/apps/app/components/SessionDetailPage/components/Chat/components/Messages/AiMessage/ReasoningMessage/ReasoningMessage.tsx index 4f01af0d58..099260ad78 100644 --- a/frontend/apps/app/components/SessionDetailPage/components/Chat/components/Messages/AiMessage/ReasoningMessage/ReasoningMessage.tsx +++ b/frontend/apps/app/components/SessionDetailPage/components/Chat/components/Messages/AiMessage/ReasoningMessage/ReasoningMessage.tsx @@ -1,4 +1,10 @@ -import { ChevronDown, ChevronRight } from '@liam-hq/ui' +import { + ChevronDown, + ChevronRight, + CollapsibleContent, + CollapsibleRoot, + CollapsibleTrigger, +} from '@liam-hq/ui' import type { FC } from 'react' import { useEffect, useState } from 'react' import { MarkdownContent } from '../../../../../../../MarkdownContent' @@ -36,37 +42,36 @@ export const ReasoningMessage: FC = ({ return () => clearTimeout(timer) }, [content, isWorkflowRunning]) - const handleToggle = () => { - setIsExpanded(!isExpanded) - } - return ( -
- - {isExpanded && ( -
- -
- )} -
+ + + + + + + + ) }