From 8b7af65265b5773fd7ab5f87a265a28f380b4d8f Mon Sep 17 00:00:00 2001 From: Dustin Healy <54083382+dustinhealy@users.noreply.github.com> Date: Tue, 25 Nov 2025 14:02:52 -0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=AA=84=20style:=20Improved=20Input=20Coll?= =?UTF-8?q?apse=20UI=20(#10659)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: shift collapse chevron inside ChatForm input area * feat: add soft gradient on bottom of collapsed text input so there isn't a hard cut off when text overflows * feat: add better scroll bar behavior for main chat input * fix: smooth out purple gradient for temporary chats * feat: better colors for gradient * feat: use blur instead of colors * chore: address copilot comments --- client/src/components/Chat/Input/ChatForm.tsx | 73 +++++++++++-------- client/src/style.css | 20 +++++ 2 files changed, 63 insertions(+), 30 deletions(-) diff --git a/client/src/components/Chat/Input/ChatForm.tsx b/client/src/components/Chat/Input/ChatForm.tsx index 022cddd156..edd12bd3ac 100644 --- a/client/src/components/Chat/Input/ChatForm.tsx +++ b/client/src/components/Chat/Input/ChatForm.tsx @@ -260,37 +260,50 @@ const ChatForm = memo(({ index = 0 }: { index?: number }) => { {endpoint && (
- { - ref(e); - (textAreaRef as React.MutableRefObject).current = e; - }} - disabled={disableInputs || isNotAppendable} - onPaste={handlePaste} - onKeyDown={handleKeyDown} - onKeyUp={handleKeyUp} - onCompositionStart={handleCompositionStart} - onCompositionEnd={handleCompositionEnd} - id={mainTextareaId} - tabIndex={0} - data-testid="text-input" - rows={1} - onFocus={() => { - handleFocusOrClick(); - setIsTextAreaFocused(true); - }} - onBlur={setIsTextAreaFocused.bind(null, false)} - aria-label={localize('com_ui_message_input')} - onClick={handleFocusOrClick} - style={{ height: 44, overflowY: 'auto' }} - className={cn( - baseClasses, - removeFocusRings, - 'transition-[max-height] duration-200 disabled:cursor-not-allowed', +
+ { + ref(e); + (textAreaRef as React.MutableRefObject).current = + e; + }} + disabled={disableInputs || isNotAppendable} + onPaste={handlePaste} + onKeyDown={handleKeyDown} + onKeyUp={handleKeyUp} + onCompositionStart={handleCompositionStart} + onCompositionEnd={handleCompositionEnd} + id={mainTextareaId} + tabIndex={0} + data-testid="text-input" + rows={1} + onFocus={() => { + handleFocusOrClick(); + setIsTextAreaFocused(true); + }} + onBlur={setIsTextAreaFocused.bind(null, false)} + aria-label={localize('com_ui_message_input')} + onClick={handleFocusOrClick} + style={{ height: 44, overflowY: 'auto' }} + className={cn( + baseClasses, + removeFocusRings, + 'scrollbar-hover transition-[max-height] duration-200 disabled:cursor-not-allowed', + )} + /> + {isCollapsed && ( +
)} - /> -
+
+