@@ -199,11 +199,13 @@ export type ChatProps = {
199199 basePath ?: string ;
200200 composerControls ?: TemplateResult | typeof nothing | ReturnType < typeof guard > ;
201201 workspaceFiles ?: {
202+ collapsed : boolean ;
202203 agentId : string ;
203204 list : AgentsFilesListResult | null ;
204205 loading : boolean ;
205206 error : string | null ;
206207 activeName : string | null ;
208+ onToggleCollapsed : ( ) => void ;
207209 onRefresh : ( ) => void ;
208210 onOpenFile : ( name : string ) => void ;
209211 } ;
@@ -1028,6 +1030,28 @@ function renderWorkspaceFileRail(
10281030 if ( ! workspaceFiles ) {
10291031 return nothing ;
10301032 }
1033+ if ( workspaceFiles . collapsed ) {
1034+ return html `
1035+ < aside
1036+ class ="chat-workspace-rail chat-workspace-rail--collapsed "
1037+ aria-label ="Workspace files "
1038+ >
1039+ < button
1040+ type ="button "
1041+ class ="nav-collapse-toggle chat-workspace-rail__collapse-toggle "
1042+ title ="Expand workspace files "
1043+ aria-label ="Expand workspace files "
1044+ aria-expanded ="false "
1045+ @click =${ workspaceFiles . onToggleCollapsed }
1046+ >
1047+ < span class ="nav-collapse-toggle__icon " aria-hidden ="true "> ${ icons . panelRightOpen } </ span >
1048+ </ button >
1049+ < span class ="chat-workspace-rail__collapsed-icon " aria-hidden ="true "
1050+ > ${ icons . fileText } </ span
1051+ >
1052+ </ aside >
1053+ ` ;
1054+ }
10311055 const files = workspaceFiles . list ?. files ?? [ ] ;
10321056 return html `
10331057 < aside class ="chat-workspace-rail " aria-label ="Workspace files ">
@@ -1036,16 +1060,30 @@ function renderWorkspaceFileRail(
10361060 < span class ="chat-workspace-rail__eyebrow "> Workspace</ span >
10371061 < strong > Files</ strong >
10381062 </ div >
1039- < button
1040- class ="btn btn--ghost btn--sm chat-workspace-rail__refresh "
1041- type ="button "
1042- title ="Refresh files "
1043- aria-label ="Refresh files "
1044- ?disabled =${ workspaceFiles . loading }
1045- @click =${ workspaceFiles . onRefresh }
1046- >
1047- ${ icons . refresh }
1048- </ button >
1063+ < div class ="chat-workspace-rail__actions ">
1064+ < button
1065+ class ="btn btn--ghost btn--sm chat-workspace-rail__refresh "
1066+ type ="button "
1067+ title ="Refresh files "
1068+ aria-label ="Refresh files "
1069+ ?disabled =${ workspaceFiles . loading }
1070+ @click =${ workspaceFiles . onRefresh }
1071+ >
1072+ ${ icons . refresh }
1073+ </ button >
1074+ < button
1075+ type ="button "
1076+ class ="nav-collapse-toggle chat-workspace-rail__collapse-toggle "
1077+ title ="Collapse workspace files "
1078+ aria-label ="Collapse workspace files "
1079+ aria-expanded ="true "
1080+ @click =${ workspaceFiles . onToggleCollapsed }
1081+ >
1082+ < span class ="nav-collapse-toggle__icon " aria-hidden ="true "
1083+ > ${ icons . panelRightClose } </ span
1084+ >
1085+ </ button >
1086+ </ div >
10491087 </ div >
10501088 ${ workspaceFiles . list ?. workspace
10511089 ? html `< div class ="chat-workspace-rail__path " title =${ workspaceFiles . list . workspace } >
@@ -2058,7 +2096,11 @@ export function renderChat(props: ChatProps) {
20582096 : nothing }
20592097 ${ renderSearchBar ( requestUpdate ) } ${ renderPinnedSection ( props , pinned , requestUpdate ) }
20602098
2061- < div class ="chat-workbench ">
2099+ < div
2100+ class ="chat-workbench ${ props . workspaceFiles ?. collapsed
2101+ ? "chat-workbench--workspace-collapsed"
2102+ : "" } "
2103+ >
20622104 < div class ="chat-split-container ${ sidebarOpen ? "chat-split-container--open" : "" } ">
20632105 < div
20642106 class ="chat-main "
0 commit comments