diff --git a/frontend/src/ServerManager.jsx b/frontend/src/ServerManager.jsx
index 1d311b9..1d71da1 100644
--- a/frontend/src/ServerManager.jsx
+++ b/frontend/src/ServerManager.jsx
@@ -19,7 +19,6 @@ import {
IconAlertTriangle,
IconServer,
IconChevronDown,
- IconLink,
IconFilter,
IconMapPin,
IconWorld,
@@ -27,11 +26,9 @@ import {
IconLayoutGrid,
IconNetwork,
IconGitBranch,
- IconCopy,
IconSquare,
IconSquareCheck,
- IconChevronRight,
- IconSettings
+ IconChevronRight
} from '@tabler/icons-react';
import GraphView from './GraphView';
import {
@@ -659,17 +656,6 @@ function ServerManager() {
{/* Actions */}
-
-
-
- {Object.keys(presets).map(key => (
-
- ))}
-
-
@@ -795,8 +781,6 @@ function ServerManager() {
onSelect={toggleServerSelection}
onEdit={handleEdit}
onDelete={confirmDelete}
- onGenerateLink={handleGenerateLink}
- onQuickCopy={quickCopyLink}
/>
))}
@@ -865,14 +849,12 @@ function ServerManager() {
{server.tunnel} |
-
|
diff --git a/frontend/src/components/server/ServerCard.jsx b/frontend/src/components/server/ServerCard.jsx
index f742003..4b9302b 100644
--- a/frontend/src/components/server/ServerCard.jsx
+++ b/frontend/src/components/server/ServerCard.jsx
@@ -2,8 +2,6 @@ import {
IconServer,
IconEdit,
IconTrash,
- IconLink,
- IconCopy,
IconChevronDown,
IconChevronUp,
IconCheck,
@@ -40,9 +38,7 @@ export default function ServerCard({
selected,
onSelect,
onEdit,
- onDelete,
- onGenerateLink,
- onQuickCopy
+ onDelete
}) {
const [expanded, setExpanded] = useState(false);
@@ -55,112 +51,114 @@ export default function ServerCard({
{/* Основная строка */}
-
- {/* Левая часть: статус + выбор + тип */}
+
+ {/* Левая часть: тип сервера */}
onSelect?.(server)}
>
-
{ e.stopPropagation(); onSelect?.(server); }}
- >
- {selected ? (
-
- ) : (
-
- )}
-
- {isExit ? (
-
- ) : (
-
- )}
-
+
+ {selected ? (
+
+ ) : isExit ? (
+
+ ) : (
+
+ )}
+
+
{isExit ? 'EXIT' : 'JUMP'}
{/* Центральная часть: информация о сервере */}
-
-
+
setExpanded(!expanded)}>
+
{/* Флаг + Название */}
-
-
{countryToFlag(server.country)}
+
+
{countryToFlag(server.country)}
-
{serverName}
-
{server.country}
+
{serverName}
+
{server.provider}
- {/* Провайдер */}
-
-
Провайдер
-
{server.provider}
-
-
{/* DNS */}
-
-
Домен
-
+
+
{server.dns || server.ip}
- {/* Туннель + Connections */}
-
-
-
+ {/* Badges: туннель + кол-во шлюзов */}
+
+
+
{server.tunnel}
{connectionsCount > 0 && (
-
-
- {connectionsCount}
+
+
+ {connectionsCount} {connectionsCount === 1 ? 'шлюз' : 'шлюзов'}
)}
- {/* Gateway */}
+ {/* Primary Gateway */}
{primaryGateway && (
-
-
Шлюз
-
{primaryGateway}
+
+ → {primaryGateway}
)}
{/* Правая часть: действия */}
-
-
{ e.stopPropagation(); onQuickCopy?.(server); }}>
-
+
+
{ e.stopPropagation(); onEdit?.(server); }}
+ >
+
+ Изменить
-
{ e.stopPropagation(); onGenerateLink?.(server); }}>
-
+ { e.stopPropagation(); onDelete?.(server); }}
+ >
+
- { e.stopPropagation(); onEdit?.(server); }}>
-
-
- { e.stopPropagation(); onDelete?.(server); }}>
-
-
-
- setExpanded(!expanded)} title={expanded ? 'Свернуть' : 'Развернуть'}>
- {expanded ? : }
+ { e.stopPropagation(); setExpanded(!expanded); }}
+ title={expanded ? 'Свернуть' : 'Подробнее'}
+ >
+ {expanded ? : }