@@ -139,6 +139,14 @@ const SYSTEM_FQN_PREFIX = `${SYSTEM_NAMESPACE}__`;
139139/** Legacy system object name prefix (namespace + single underscore) */
140140const SYSTEM_LEGACY_PREFIX = `${ SYSTEM_NAMESPACE } _` ;
141141
142+ /** Resolve a label value that may be a plain string or an i18n object {key, defaultValue} */
143+ function resolveLabel ( val : unknown ) : string {
144+ if ( typeof val === 'string' ) return val ;
145+ if ( val && typeof val === 'object' && 'defaultValue' in val ) return String ( ( val as any ) . defaultValue ) ;
146+ if ( val && typeof val === 'object' && 'key' in val ) return String ( ( val as any ) . key ) ;
147+ return '' ;
148+ }
149+
142150/** Check if an object item is a system object */
143151function isSystemObject ( item : any ) : boolean {
144152 if ( item . isSystem === true ) return true ;
@@ -399,7 +407,7 @@ export function AppSidebar({
399407 const isExpanded = expandedTypes . has ( type ) || ! ! searchQuery ;
400408
401409 const filtered = items . filter ( ( item : any ) =>
402- matchesSearch ( item . label || item . name || '' , item . name || '' )
410+ matchesSearch ( resolveLabel ( item . label ) || item . name || '' , item . name || '' )
403411 ) ;
404412 if ( filtered . length === 0 && searchQuery ) return null ;
405413
@@ -418,7 +426,7 @@ export function AppSidebar({
418426 < SidebarMenuSub >
419427 { filtered . map ( ( item : any ) => {
420428 const itemName = item . name || item . id || 'unknown' ;
421- const itemLabel = item . label || item . name || 'Untitled' ;
429+ const itemLabel = resolveLabel ( item . label ) || item . name || 'Untitled' ;
422430 const fqnParts = itemName . includes ( '__' ) ? itemName . split ( '__' ) : [ null , itemName ] ;
423431 const namespace = fqnParts . length === 2 && fqnParts [ 0 ] ? fqnParts [ 0 ] : null ;
424432
@@ -500,10 +508,10 @@ export function AppSidebar({
500508 < CollapsibleContent >
501509 < SidebarMenuSub >
502510 { systemObjects
503- . filter ( ( item : any ) => matchesSearch ( item . label || item . name || '' , item . name || '' ) )
511+ . filter ( ( item : any ) => matchesSearch ( resolveLabel ( item . label ) || item . name || '' , item . name || '' ) )
504512 . map ( ( item : any ) => {
505513 const itemName = item . name || item . id || 'unknown' ;
506- const itemLabel = item . label || item . name || 'Untitled' ;
514+ const itemLabel = resolveLabel ( item . label ) || item . name || 'Untitled' ;
507515
508516 return (
509517 < SidebarMenuSubItem key = { itemName } >
0 commit comments