in src/components/reasoning-trace.tsx [35:69]
function ExpandableMessage({ message }: { message: Message }) {
const [isExpanded, setIsExpanded] = useState(false);
const isLongMessage = message.content.length > MAX_MESSAGE_LENGTH;
const toggleExpand = () => setIsExpanded(!isExpanded);
return (
<div
className={`p-3 rounded-lg max-w-[80%] ${
message.role === "user"
? "bg-primary/10 ml-auto"
: "bg-secondary/10 mr-auto"
}`}
>
<p className="text-xs font-semibold mb-1 capitalize text-muted-foreground">
{message.role}
</p>
<p className="text-sm whitespace-pre-wrap">
{isLongMessage && !isExpanded
? `${message.content.substring(0, MAX_MESSAGE_LENGTH)}...`
: message.content}
</p>
{isLongMessage && (
<Button
variant="link"
size="sm"
className="p-0 h-auto text-xs mt-1"
onClick={toggleExpand}
>
{isExpanded ? "Show Less" : "Show More"}
</Button>
)}
</div>
);
}