@@ -64,23 +64,63 @@ function renderFileTree() {
6464
6565 treeContainer . innerHTML = '' ;
6666
67+ // Add simple CSS for tree lines if not already added
68+ if ( ! document . getElementById ( 'tree-lines-style' ) ) {
69+ const style = document . createElement ( 'style' ) ;
70+ style . id = 'tree-lines-style' ;
71+ style . textContent = `
72+ .tree-item {
73+ position: relative;
74+ padding-left: 4px;
75+ }
76+ .tree-item.level-1 { padding-left: 24px; }
77+ .tree-item.level-2 { padding-left: 44px; }
78+ .tree-item.level-3 { padding-left: 64px; }
79+ .tree-item.level-4 { padding-left: 84px; }
80+ .tree-item.level-5 { padding-left: 104px; }
81+ ` ;
82+ document . head . appendChild ( style ) ;
83+ }
84+
6785 const state = window . workspaceManager ?. getState ( ) ;
6886 const hasFiles = state && Object . keys ( state . files ) . length > 0 ;
6987
7088 if ( ! hasFiles ) {
7189 if ( emptyStateEl ) {
7290 emptyStateEl . classList . remove ( 'hidden' ) ;
7391 }
92+ // Still show the root folder even when empty
93+ const rootDiv = document . createElement ( 'div' ) ;
94+ rootDiv . innerHTML = `
95+ <div class="flex items-center p-1 text-gray-400 pointer-events-none" style="padding-left: 4px;">
96+ <div class="flex items-center gap-1">
97+ <span class="mdi mdi-folder-open text-gray-400 text-base"></span>
98+ <span class="font-medium">/your-repo</span>
99+ </div>
100+ </div>
101+ ` ;
102+ treeContainer . appendChild ( rootDiv ) ;
74103 return ;
75104 } else {
76105 if ( emptyStateEl ) {
77106 emptyStateEl . classList . add ( 'hidden' ) ;
78107 }
79108 }
80109
110+ // Add root folder styled like other folders but greyed out
111+ const rootDiv = document . createElement ( 'div' ) ;
112+ rootDiv . innerHTML = `
113+ <div class="flex items-center p-1 text-gray-400 pointer-events-none" style="padding-left: 4px;">
114+ <div class="flex items-center gap-1">
115+ <span class="mdi mdi-folder-open text-gray-400 text-base"></span>
116+ <span class="font-medium">/your-repo</span>
117+ </div>
118+ </div>
119+ ` ;
120+ treeContainer . appendChild ( rootDiv ) ;
121+
81122 function renderNode ( node , level = 0 ) {
82123 const div = document . createElement ( 'div' ) ;
83- div . style . paddingLeft = `${ level * 16 } px` ;
84124
85125 if ( node . type === 'folder' ) {
86126 const state = window . workspaceManager ?. getState ( ) ;
@@ -90,6 +130,8 @@ function renderFileTree() {
90130 isExpanded = false ;
91131 }
92132 const folderIcon = isExpanded ? 'mdi-folder-open' : 'mdi-folder' ;
133+
134+ div . className = `tree-item level-${ level } ` ;
93135 div . innerHTML = `
94136 <div class="flex items-center justify-between p-1 hover:bg-gray-100 group">
95137 <div class="flex items-center gap-1 cursor-pointer folder-toggle" data-path="${ node . path } ">
@@ -123,10 +165,11 @@ function renderFileTree() {
123165 // File node
124166 const state = window . workspaceManager ?. getState ( ) ;
125167 const isSelected = state && state . selectedFile === node . path ;
168+
169+ div . className = `tree-item level-${ level } ` ;
126170 div . innerHTML = `
127171 <div class="flex items-center justify-between p-1 hover:bg-gray-100 cursor-pointer file-item ${ isSelected ? 'bg-cyan-100 font-medium' : '' } " data-path="${ node . path } ">
128172 <div class="flex items-center gap-1">
129- <span class="w-3"></span>
130173 <span class="mdi mdi-file-document-outline text-gray-600 text-sm"></span>
131174 <span>${ node . name } </span>
132175 </div>
@@ -146,7 +189,7 @@ function renderFileTree() {
146189
147190 // Generate and render dynamic tree
148191 const fileTreeData = generateFileTreeData ( ) ;
149- fileTreeData . forEach ( node => renderNode ( node ) ) ;
192+ fileTreeData . forEach ( node => renderNode ( node , 0 ) ) ;
150193
151194 // Add event listeners
152195 treeContainer . addEventListener ( 'click' , handleTreeClick ) ;
0 commit comments