@@ -23,9 +23,10 @@ import { Empty, EmptyDescription, EmptyHeader, EmptyMedia } from "@/components/u
2323interface TaskTerminalPanelProps {
2424 envid ?: string
2525 disabled ?: boolean
26+ onClosePanel ?: ( ) => void
2627}
2728
28- export function TaskTerminalPanel ( { envid, disabled } : TaskTerminalPanelProps ) {
29+ export function TaskTerminalPanel ( { envid, disabled, onClosePanel } : TaskTerminalPanelProps ) {
2930 const [ sessions , setSessions ] = useState < DomainTerminal [ ] > ( [ ] )
3031 const [ currentSessionId , setCurrentSessionId ] = useState < string | null > ( null )
3132 const [ signal , setSignal ] = useState < number > ( 0 )
@@ -139,9 +140,16 @@ export function TaskTerminalPanel({ envid, disabled }: TaskTerminalPanelProps) {
139140 if ( disabled ) {
140141 return (
141142 < div className = "flex flex-col h-full min-h-0" >
142- < div className = "flex items-center gap-2 px-4 py-1 min-h-11 border-b bg-muted/50 shrink-0" >
143- < IconTerminal2 className = "size-4 text-primary" />
144- < span className = "text-sm font-medium" > 终端</ span >
143+ < div className = "flex items-center justify-between gap-2 px-4 py-1 min-h-11 border-b bg-muted/50 shrink-0" >
144+ < div className = "flex items-center gap-2" >
145+ < IconTerminal2 className = "size-4 text-primary" />
146+ < span className = "text-sm font-medium" > 终端</ span >
147+ </ div >
148+ { onClosePanel && (
149+ < Button variant = "ghost" size = "icon" className = "size-8 shrink-0 hover:text-primary" onClick = { onClosePanel } >
150+ < IconX className = "size-4" />
151+ </ Button >
152+ ) }
145153 </ div >
146154 < div className = "flex-1 min-h-0 flex flex-col" >
147155 < Empty className = "border border-dashed w-full flex-1 min-h-0" >
@@ -169,7 +177,7 @@ export function TaskTerminalPanel({ envid, disabled }: TaskTerminalPanelProps) {
169177 < Button
170178 variant = "ghost"
171179 size = "icon"
172- className = "size-8 shrink-0 cursor-pointer hover:text-primary"
180+ className = "size-8 shrink-0 hover:text-primary"
173181 onClick = { handleNewSession }
174182 disabled = { disabled }
175183 >
@@ -195,7 +203,7 @@ export function TaskTerminalPanel({ envid, disabled }: TaskTerminalPanelProps) {
195203 < Button
196204 variant = "ghost"
197205 size = "icon"
198- className = "size-5 shrink-0 opacity-0 group-hover:opacity-100 hover:bg-destructive/10 hover:text-primary rounded cursor-pointer "
206+ className = "size-5 shrink-0 opacity-0 group-hover:opacity-100 hover:bg-destructive/10 hover:text-primary rounded"
199207 onClick = { ( e ) => handleCloseTab ( e , sid ) }
200208 >
201209 < IconX className = "size-3" />
@@ -207,12 +215,22 @@ export function TaskTerminalPanel({ envid, disabled }: TaskTerminalPanelProps) {
207215 < Button
208216 variant = "ghost"
209217 size = "icon"
210- className = "size-8 shrink-0 cursor-pointer hover:text-primary"
218+ className = "size-8 shrink-0 hover:text-primary"
211219 onClick = { ( ) => fetchSessions ( ) }
212220 disabled = { disabled }
213221 >
214222 < IconReload className = "size-4" />
215223 </ Button >
224+ { onClosePanel && (
225+ < Button
226+ variant = "ghost"
227+ size = "icon"
228+ className = "size-8 shrink-0 hover:text-primary"
229+ onClick = { onClosePanel }
230+ >
231+ < IconX className = "size-4" />
232+ </ Button >
233+ ) }
216234 </ div >
217235
218236 < div className = "flex-1 min-h-0 flex flex-col" >
0 commit comments