@@ -17,6 +17,7 @@ import { useEffect, useState } from "react";
1717import { useCompletionState } from "@/lib/hooks/useCompletionState" ;
1818import JsonView from "./JsonView" ;
1919import { UriTemplate } from "@modelcontextprotocol/sdk/shared/uriTemplate.js" ;
20+ import IconDisplay , { WithIcons } from "./IconDisplay" ;
2021
2122const ResourcesTab = ( {
2223 resources,
@@ -129,7 +130,16 @@ const ResourcesTab = ({
129130 } }
130131 renderItem = { ( resource ) => (
131132 < div className = "flex items-center w-full" >
132- < FileText className = "w-4 h-4 mr-2 flex-shrink-0 text-gray-500" />
133+ { ( resource as WithIcons ) . icons &&
134+ ( resource as WithIcons ) . icons ! . length > 0 ? (
135+ < IconDisplay
136+ icons = { ( resource as WithIcons ) . icons }
137+ size = "sm"
138+ className = "mr-2"
139+ />
140+ ) : (
141+ < FileText className = "w-4 h-4 mr-2 flex-shrink-0 text-gray-500" />
142+ ) }
133143 < span className = "flex-1 truncate" title = { resource . uri . toString ( ) } >
134144 { resource . name }
135145 </ span >
@@ -159,7 +169,16 @@ const ResourcesTab = ({
159169 } }
160170 renderItem = { ( template ) => (
161171 < div className = "flex items-center w-full" >
162- < FileText className = "w-4 h-4 mr-2 flex-shrink-0 text-gray-500" />
172+ { ( template as WithIcons ) . icons &&
173+ ( template as WithIcons ) . icons ! . length > 0 ? (
174+ < IconDisplay
175+ icons = { ( template as WithIcons ) . icons }
176+ size = "sm"
177+ className = "mr-2"
178+ />
179+ ) : (
180+ < FileText className = "w-4 h-4 mr-2 flex-shrink-0 text-gray-500" />
181+ ) }
163182 < span className = "flex-1 truncate" title = { template . uriTemplate } >
164183 { template . name }
165184 </ span >
@@ -175,16 +194,30 @@ const ResourcesTab = ({
175194
176195 < div className = "bg-card border border-border rounded-lg shadow" >
177196 < div className = "p-4 border-b border-gray-200 dark:border-border flex justify-between items-center" >
178- < h3
179- className = "font-semibold truncate"
180- title = { selectedResource ?. name || selectedTemplate ?. name }
181- >
182- { selectedResource
183- ? selectedResource . name
184- : selectedTemplate
185- ? selectedTemplate . name
186- : "Select a resource or template" }
187- </ h3 >
197+ < div className = "flex items-center gap-2 min-w-0" >
198+ { selectedResource && ( selectedResource as WithIcons ) . icons && (
199+ < IconDisplay
200+ icons = { ( selectedResource as WithIcons ) . icons }
201+ size = "md"
202+ />
203+ ) }
204+ { selectedTemplate && ( selectedTemplate as WithIcons ) . icons && (
205+ < IconDisplay
206+ icons = { ( selectedTemplate as WithIcons ) . icons }
207+ size = "md"
208+ />
209+ ) }
210+ < h3
211+ className = "font-semibold truncate"
212+ title = { selectedResource ?. name || selectedTemplate ?. name }
213+ >
214+ { selectedResource
215+ ? selectedResource . name
216+ : selectedTemplate
217+ ? selectedTemplate . name
218+ : "Select a resource or template" }
219+ </ h3 >
220+ </ div >
188221 { selectedResource && (
189222 < div className = "flex row-auto gap-1 justify-end w-2/5" >
190223 { resourceSubscriptionsSupported &&
0 commit comments