@@ -16,47 +16,62 @@ interface ServersTableProps {
1616 onServerClick ?: ( server : V0ServerJson ) => void ;
1717}
1818
19- /**
20- * Server table component that displays MCP servers in a table format
21- */
2219export function ServersTable ( { servers, onServerClick } : ServersTableProps ) {
2320 return (
2421 < div className = "w-full overflow-hidden rounded-md border" >
25- < Table className = "table-fixed" >
26- < TableHeader className = "bg-muted/50" >
27- < TableRow >
28- < TableHead className = "w-2/12 pl-4" > Server</ TableHead >
29- < TableHead className = "w-9/12" > About</ TableHead >
30- < TableHead className = "w-1/12" />
31- </ TableRow >
32- </ TableHeader >
33- < TableBody >
34- { servers . map ( ( server ) => {
35- const url = server . remotes ?. [ 0 ] ?. url || "" ;
36- const serverName = server . name || "Unknown" ;
37- const description =
38- server . description || "No description available" ;
22+ < div className = "overflow-x-auto" >
23+ < Table className = "min-w-full" >
24+ < TableHeader className = "bg-muted/50" >
25+ < TableRow >
26+ < TableHead className = "w-full pl-4 sm:w-1/5" > Server</ TableHead >
27+ < TableHead className = "hidden sm:w-7/10 sm:table-cell" >
28+ About
29+ </ TableHead >
30+ < TableHead className = "w-16 text-right sm:w-1/10" />
31+ </ TableRow >
32+ </ TableHeader >
33+ < TableBody >
34+ { servers . map ( ( server ) => {
35+ const url = server . remotes ?. [ 0 ] ?. url || "" ;
36+ const serverName = server . name || "Unknown" ;
37+ const description =
38+ server . description || "No description available" ;
3939
40- return (
41- < TableRow
42- key = { server . name }
43- onClick = { ( ) => onServerClick ?.( server ) }
44- className = { onServerClick ? "cursor-pointer" : undefined }
45- >
46- < TableCell className = "font-medium pl-4" > { serverName } </ TableCell >
47- < TableCell className = "max-w-0 overflow-hidden text-ellipsis whitespace-nowrap" >
48- { description }
49- </ TableCell >
50- < TableCell >
51- { url ? (
52- < CopyUrlButton url = { url } className = "shadow-sm" />
53- ) : null }
54- </ TableCell >
55- </ TableRow >
56- ) ;
57- } ) }
58- </ TableBody >
59- </ Table >
40+ return (
41+ < TableRow
42+ key = { server . name }
43+ onClick = { ( ) => onServerClick ?.( server ) }
44+ className = { onServerClick ? "cursor-pointer" : undefined }
45+ >
46+ < TableCell
47+ className = "pl-4 align-middle sm:w-1/5"
48+ title = { serverName }
49+ >
50+ < p className = "text-base font-medium sm:text-sm" >
51+ { serverName }
52+ </ p >
53+ </ TableCell >
54+ < TableCell
55+ className = "hidden pr-4 text-muted-foreground whitespace-normal wrap-break-word sm:table-cell sm:w-7/10"
56+ title = { description }
57+ >
58+ { description }
59+ </ TableCell >
60+ < TableCell className = "pr-3 text-right align-middle sm:w-1/10" >
61+ { url ? (
62+ < CopyUrlButton
63+ url = { url }
64+ className = "md:h-9 md:w-auto md:rounded-md md:px-3"
65+ labelClassName = "hidden md:inline"
66+ />
67+ ) : null }
68+ </ TableCell >
69+ </ TableRow >
70+ ) ;
71+ } ) }
72+ </ TableBody >
73+ </ Table >
74+ </ div >
6075 </ div >
6176 ) ;
6277}
0 commit comments