@@ -39,6 +39,8 @@ export const AcpInput: React.FC<AcpInputProps> = ({
3939 onSelectModel,
4040 onSelectReasoning,
4141} ) => {
42+ const [ isMinimized , setIsMinimized ] = React . useState ( false ) ;
43+
4244 const handleKeyDown = ( e : React . KeyboardEvent < HTMLTextAreaElement > ) => {
4345 if ( e . key === 'Enter' && ! e . shiftKey ) {
4446 e . preventDefault ( ) ;
@@ -102,66 +104,90 @@ export const AcpInput: React.FC<AcpInputProps> = ({
102104 } ;
103105
104106 return (
105- < div className = "acp-dialog-input" >
106- < div className = "acp-input-main-row" >
107- < textarea
108- id = "acp-prompt-input"
109- name = "prompt"
110- value = { value }
111- onChange = { ( e ) => onChange ( e . target . value ) }
112- onKeyDown = { handleKeyDown }
113- placeholder = "Ask anything..."
114- rows = { 3 }
115- disabled = { ! isConnected }
116- />
117- { isProcessing ? (
118- < button
119- className = "acp-stop-prompt-btn"
120- onClick = { onCancel }
121- disabled = { ! isConnected }
122- >
123- < AcpIcons . Cancel />
124- </ button >
125- ) : (
126- < button
127- className = "acp-send-btn"
128- onClick = { handleSend }
129- disabled = { ! value . trim ( ) || ! isConnected }
130- >
131- < AcpIcons . Send />
132- </ button >
133- ) }
134- </ div >
135- { ( agentLabel || modelSelector || reasoningSelector || contextUsage ) && (
136- < div className = "acp-input-controls-row" >
137- { agentLabel && (
138- < div className = "acp-input-agent-chip" title = { agentLabel } >
139- < span className = "acp-input-agent-chip-label" > { agentLabel } </ span >
140- { onCloseAgent && (
141- < button
142- className = "acp-agent-close-btn acp-input-agent-close-btn"
143- onClick = { onCloseAgent }
144- title = "Close agent"
145- >
146- < AcpIcons . Close />
147- </ button >
148- ) }
149- </ div >
150- ) }
151- { renderSelect ( 'acp-model-select' , 'model' , modelSelector , onSelectModel ) }
152- { renderSelect ( 'acp-reasoning-select' , 'thinking' , reasoningSelector , onSelectReasoning ) }
153- { contextUsage && (
154- < div
155- className = "acp-input-context"
156- title = { formatContextTitle ( contextUsage . used , contextUsage . size ) }
107+ < div className = { `acp-dialog-input ${ isMinimized ? 'acp-dialog-input-minimized' : '' } ` } >
108+ < div className = "acp-input-preview-container" >
109+ < div className = "acp-input-preview-content" >
110+ < div className = "acp-input-preview-row" onClick = { ( ) => setIsMinimized ( false ) } >
111+ < span className = "acp-input-preview-text" > { value ? value : "Ask anything..." } </ span >
112+ < button
113+ className = "acp-input-toggle-btn"
114+ onClick = { ( e ) => { e . stopPropagation ( ) ; setIsMinimized ( false ) ; } }
115+ title = "Expand"
157116 >
158- < div className = "acp-input-context-value" >
159- { formatContextPercent ( contextUsage . used , contextUsage . size ) }
117+ < AcpIcons . ChevronUp />
118+ </ button >
119+ </ div >
120+ </ div >
121+ </ div >
122+
123+ < div className = "acp-input-full-container" >
124+ < div className = "acp-input-full-content" >
125+ < div className = "acp-input-main-row" >
126+ < textarea
127+ id = "acp-prompt-input"
128+ name = "prompt"
129+ value = { value }
130+ onChange = { ( e ) => onChange ( e . target . value ) }
131+ onKeyDown = { handleKeyDown }
132+ placeholder = "Ask anything..."
133+ rows = { 3 }
134+ disabled = { ! isConnected }
135+ />
136+ { isProcessing ? (
137+ < button
138+ className = "acp-stop-prompt-btn"
139+ onClick = { onCancel }
140+ disabled = { ! isConnected }
141+ >
142+ < AcpIcons . Cancel />
143+ </ button >
144+ ) : (
145+ < button
146+ className = "acp-send-btn"
147+ onClick = { handleSend }
148+ disabled = { ! value . trim ( ) || ! isConnected }
149+ >
150+ < AcpIcons . Send />
151+ </ button >
152+ ) }
153+ </ div >
154+ < div className = "acp-input-controls-row" >
155+ { agentLabel && (
156+ < div className = "acp-input-agent-chip" title = { agentLabel } >
157+ < span className = "acp-input-agent-chip-label" > { agentLabel } </ span >
158+ { onCloseAgent && (
159+ < button
160+ className = "acp-agent-close-btn acp-input-agent-close-btn"
161+ onClick = { onCloseAgent }
162+ title = "Close agent"
163+ >
164+ < AcpIcons . Close />
165+ </ button >
166+ ) }
167+ </ div >
168+ ) }
169+ { renderSelect ( 'acp-model-select' , 'model' , modelSelector , onSelectModel ) }
170+ { renderSelect ( 'acp-reasoning-select' , 'thinking' , reasoningSelector , onSelectReasoning ) }
171+ { contextUsage && (
172+ < div
173+ className = "acp-input-context"
174+ title = { formatContextTitle ( contextUsage . used , contextUsage . size ) }
175+ >
176+ < div className = "acp-input-context-value" >
177+ { formatContextPercent ( contextUsage . used , contextUsage . size ) }
178+ </ div >
160179 </ div >
161- </ div >
162- ) }
180+ ) }
181+ < button
182+ className = "acp-input-toggle-btn acp-input-minimize-btn"
183+ onClick = { ( ) => setIsMinimized ( true ) }
184+ title = "Minimize"
185+ >
186+ < AcpIcons . ChevronDown />
187+ </ button >
188+ </ div >
163189 </ div >
164- ) }
190+ </ div >
165191 </ div >
166192 ) ;
167193} ;
0 commit comments