@@ -33,15 +33,15 @@ export default function ServersPage() {
3333 try {
3434 setIsLoading ( true ) ;
3535
36- // Fetch servers
3736 const serversResponse = await getServers ( ) ;
3837 if ( serversResponse . success && serversResponse . data ) {
39- setServers ( serversResponse . data ) ;
40-
41- // Initially expand all servers
42- const serverNames = serversResponse . data . map ( ( server ) => server . ref ) . filter ( ( ref ) : ref is string => ref !== undefined ) ;
43-
44- setExpandedServers ( new Set ( serverNames ) ) ;
38+ const sortedServers = [ ...serversResponse . data ] . sort ( ( a , b ) => {
39+ return ( a . ref || '' ) . localeCompare ( b . ref || '' ) ;
40+ } ) ;
41+ setServers ( sortedServers ) ;
42+
43+ // Start with all servers collapsed
44+ setExpandedServers ( new Set ( ) ) ;
4545 } else {
4646 console . error ( "Failed to fetch servers:" , serversResponse ) ;
4747 toast . error ( serversResponse . error || "Failed to fetch servers data." ) ;
@@ -100,6 +100,18 @@ export default function ServersPage() {
100100 }
101101 } ;
102102
103+ const toggleServer = ( serverName : string ) => {
104+ setExpandedServers ( prev => {
105+ const newSet = new Set ( prev ) ;
106+ if ( newSet . has ( serverName ) ) {
107+ newSet . delete ( serverName ) ;
108+ } else {
109+ newSet . add ( serverName ) ;
110+ }
111+ return newSet ;
112+ } ) ;
113+ } ;
114+
103115 return (
104116 < div className = "mt-12 mx-auto max-w-6xl px-6" >
105117 < div className = "flex justify-between items-center mb-6" >
@@ -134,7 +146,10 @@ export default function ServersPage() {
134146 { /* Server Header */ }
135147 < div className = "bg-secondary/10 p-4" >
136148 < div className = "flex items-center justify-between" >
137- < div className = "flex items-center gap-3 cursor-pointer" >
149+ < div
150+ className = "flex items-center gap-3 cursor-pointer"
151+ onClick = { ( ) => toggleServer ( serverName ) }
152+ >
138153 { isExpanded ? < ChevronDown className = "h-5 w-5" /> : < ChevronRight className = "h-5 w-5" /> }
139154 < div className = "flex items-center gap-2" >
140155 < Globe className = "h-5 w-5 text-green-500" />
0 commit comments