diff --git a/frontend/src/components/server/ServerCard.jsx b/frontend/src/components/server/ServerCard.jsx index 4e783fa..f742003 100644 --- a/frontend/src/components/server/ServerCard.jsx +++ b/frontend/src/components/server/ServerCard.jsx @@ -6,10 +6,13 @@ import { IconCopy, IconChevronDown, IconChevronUp, - IconNetwork, IconCheck, IconCircleCheck, - IconExternalLink + IconWorld, + IconNetwork, + IconCloud, + IconRouter, + IconArrowsRightLeft } from '@tabler/icons-react'; import { useState } from 'react'; @@ -46,195 +49,176 @@ export default function ServerCard({ const isExit = server.type === 'exit'; const primaryGateway = server.gateways?.find(g => g.primary)?.name || server.gateway || ''; const connectionsCount = server.gateways?.length || 0; - const shortName = server.dns?.split('.')[0] || server.ip?.split('.').slice(0, 2).join('.'); + const serverName = server.dns?.split('.')[0] || server.ip; return (
- {/* Основная строка */} -
- {/* Статус онлайн */} -
- - {/* Чекбокс выбора */} - - - {/* Количество соединений */} - - - {connectionsCount} - - - {/* Флаг + Страна */} - - {countryToFlag(server.country)} - - - {/* Название */} - - {shortName} - - - {/* Тип сервера */} - - {isExit ? 'EXIT' : 'JUMP'} - - - {/* Провайдер */} - - {server.provider} - - - {/* Туннель */} - - {server.tunnel} - - - {/* DNS */} -
- - + {/* Основная строка */} +
+ {/* Левая часть: статус + выбор + тип */} +
- {server.dns} - -
+ +
+ {isExit ? ( + + ) : ( + + )} +
+ {isExit ? 'EXIT' : 'JUMP'} +
+
+
- {/* Gateway */} - {primaryGateway && ( - - - {primaryGateway} - - )} - - {/* Действия */} -
- - - - - -
-
- - {/* Расширенная информация */} - {expanded && ( -
-
-
-
IP адрес
- {server.ip} -
-
-
Внешний IP
- {server.extIp || '—'} -
-
-
Внутренний IP
- {server.internalIp || '—'} -
-
-
Страна
- {countryToFlag(server.country)} {server.country} -
- {server.gateways?.length > 0 && ( -
-
Шлюзы ({server.gateways.length})
-
- {server.gateways.map((gw, idx) => ( - - {gw.primary && } - {gw.name} - {gw.ip && ({gw.ip})} - - ))} + {/* Центральная часть: информация о сервере */} +
+
+ {/* Флаг + Название */} +
+ {countryToFlag(server.country)} +
+
{serverName}
+
{server.country}
- )} + + {/* Провайдер */} +
+
Провайдер
+
{server.provider}
+
+ + {/* DNS */} +
+
Домен
+
+ {server.dns || server.ip} +
+
+ + {/* Туннель + Connections */} +
+ + + {server.tunnel} + + {connectionsCount > 0 && ( + + + {connectionsCount} + + )} +
+ + {/* Gateway */} + {primaryGateway && ( +
+
Шлюз
+
{primaryGateway}
+
+ )} +
+
+ + {/* Правая часть: действия */} +
+ + + + +
+
- )} + + {/* Расширенная информация */} + {expanded && ( +
+
+ {/* IP адреса */} +
+
+ + Сетевые адреса +
+
+
+
IP
+ {server.ip} +
+
+
Внешний
+ {server.extIp || '—'} +
+
+
Внутренний
+ {server.internalIp || '—'} +
+
+
+ + {/* Шлюзы */} +
+
+ + Шлюзы ({server.gateways?.length || 0}) +
+ {server.gateways?.length > 0 ? ( +
+ {server.gateways.map((gw, idx) => ( + + {gw.primary && } + {gw.name} + {gw.ip && ({gw.ip})} + + ))} +
+ ) : ( + Нет шлюзов + )} +
+
+
+ )} +
); }