@@ -210,23 +210,53 @@ export function AppSidebar({ activeAppName, onAppChange }: { activeAppName: stri
210210function NavigationTree ( { items } : { items : any [ ] } ) {
211211 const hasGroups = items . some ( i => i . type === 'group' ) ;
212212
213- if ( hasGroups ) {
213+ // If no explicit groups, wrap everything in one default group
214+ if ( ! hasGroups ) {
214215 return (
215- < >
216- { items . map ( item => < NavigationItemRenderer key = { item . id } item = { item } /> ) }
217- </ >
216+ < SidebarGroup >
217+ < SidebarGroupContent >
218+ < SidebarMenu >
219+ { items . map ( item => < NavigationItemRenderer key = { item . id } item = { item } /> ) }
220+ </ SidebarMenu >
221+ </ SidebarGroupContent >
222+ </ SidebarGroup >
218223 ) ;
219224 }
220225
221- return (
222- < SidebarGroup >
223- < SidebarGroupContent >
224- < SidebarMenu >
225- { items . map ( item => < NavigationItemRenderer key = { item . id } item = { item } /> ) }
226- </ SidebarMenu >
227- </ SidebarGroupContent >
228- </ SidebarGroup >
229- ) ;
226+ // If there are groups, we need to handle mixed content
227+ // We group consecutive non-group items into an implicit SidebarGroup
228+ const renderedItems : React . ReactNode [ ] = [ ] ;
229+ let currentBuffer : any [ ] = [ ] ;
230+
231+ // Helper to flush buffer
232+ const flushBuffer = ( keyPrefix : string ) => {
233+ if ( currentBuffer . length === 0 ) return ;
234+ renderedItems . push (
235+ < SidebarGroup key = { `${ keyPrefix } -group` } >
236+ < SidebarGroupContent >
237+ < SidebarMenu >
238+ { currentBuffer . map ( item => (
239+ < NavigationItemRenderer key = { item . id } item = { item } />
240+ ) ) }
241+ </ SidebarMenu >
242+ </ SidebarGroupContent >
243+ </ SidebarGroup >
244+ ) ;
245+ currentBuffer = [ ] ;
246+ } ;
247+
248+ items . forEach ( ( item , index ) => {
249+ if ( item . type === 'group' ) {
250+ flushBuffer ( `auto-${ index } ` ) ;
251+ renderedItems . push ( < NavigationItemRenderer key = { item . id } item = { item } /> ) ;
252+ } else {
253+ currentBuffer . push ( item ) ;
254+ }
255+ } ) ;
256+
257+ flushBuffer ( 'auto-end' ) ;
258+
259+ return < > { renderedItems } </ > ;
230260}
231261
232262function NavigationItemRenderer ( { item } : { item : any } ) {
0 commit comments