feat: добавлены функции для работы с PID sing-box

Refs: None
This commit is contained in:
2026-05-08 19:41:17 +03:00
parent 8476ab16e5
commit 0cd898d1c1
5 changed files with 203 additions and 48 deletions

View File

@@ -1,6 +1,9 @@
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap');
/* Системные шрифты — без загрузки из интернета */
:root {
--font-ui: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, Roboto, sans-serif;
--font-head: 'Segoe UI', system-ui, -apple-system, Roboto, sans-serif;
--font-mono: 'SF Mono', 'Fira Code', 'Fira Mono', 'Cascadia Code', Consolas, 'Liberation Mono', Menlo, monospace;
color-scheme: dark;
/* Surfaces */
@@ -62,7 +65,7 @@ html, body, #root {
body {
margin: 0;
font-family: 'IBM Plex Sans', sans-serif;
font-family: var(--font-ui);
font-size: 14px;
line-height: 1.5;
color: var(--text);
@@ -79,7 +82,7 @@ a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }
h1, h2, h3, h4 {
font-family: 'Space Grotesk', sans-serif;
font-family: var(--font-head);
margin: 0;
font-weight: 600;
letter-spacing: -0.01em;
@@ -92,7 +95,7 @@ h4 { font-size: 13px; color: var(--muted); text-transform: uppercase; letter-spa
p { margin: 0; }
small { font-size: 12px; color: var(--muted); }
code, .mono {
font-family: 'JetBrains Mono', monospace;
font-family: var(--font-mono);
font-size: 12px;
}
@@ -142,7 +145,7 @@ code, .mono {
height: var(--topbar-h);
}
.topbar-brand {
font-family: 'Space Grotesk', sans-serif;
font-family: var(--font-head);
font-weight: 700;
font-size: 16px;
letter-spacing: -0.01em;
@@ -359,7 +362,7 @@ code, .mono {
border-color: var(--accent);
box-shadow: 0 0 0 3px var(--accent-dim);
}
.textarea { min-height: 80px; resize: vertical; font-family: 'JetBrains Mono', monospace; font-size: 12px; }
.textarea { min-height: 80px; resize: vertical; font-family: var(--font-mono); font-size: 12px; }
.field {
display: flex;
@@ -487,7 +490,7 @@ code, .mono {
background: var(--surface-3);
border: 1px solid var(--border);
border-radius: 8px;
font-family: 'JetBrains Mono', monospace;
font-family: var(--font-mono);
font-size: 12px;
color: var(--text);
}
@@ -509,7 +512,7 @@ code, .mono {
border: none;
outline: none;
color: var(--text);
font-family: 'JetBrains Mono', monospace;
font-family: var(--font-mono);
font-size: 12px;
padding: 4px 6px;
}
@@ -632,7 +635,7 @@ code, .mono {
border: 1px solid var(--border);
border-radius: var(--radius-input);
padding: var(--space-3);
font-family: 'JetBrains Mono', monospace;
font-family: var(--font-mono);
font-size: 12px;
line-height: 1.55;
overflow-y: auto;
@@ -687,7 +690,7 @@ code, .mono {
.text-success { color: var(--success); }
.text-warning { color: var(--warning); }
.text-danger { color: var(--danger); }
.text-mono { font-family: 'JetBrains Mono', monospace; }
.text-mono { font-family: var(--font-mono); }
.text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.divider {
@@ -701,7 +704,7 @@ code, .mono {
border: 1px solid var(--border);
border-radius: var(--radius-input);
padding: var(--space-3);
font-family: 'JetBrains Mono', monospace;
font-family: var(--font-mono);
font-size: 12px;
line-height: 1.5;
margin: 0;
@@ -718,7 +721,7 @@ code, .mono {
padding: 6px 8px;
border-radius: 6px;
color: var(--subtle);
font-family: 'JetBrains Mono', monospace;
font-family: var(--font-mono);
font-size: 14px;
}
.drag-handle:hover { color: var(--text); background: var(--surface-2); }
@@ -771,7 +774,7 @@ code, .mono {
font-size: 12px;
}
.event-row:hover { background: var(--surface-2); }
.event-row .event-time { color: var(--subtle); font-family: 'JetBrains Mono', monospace; font-size: 11px; }
.event-row .event-time { color: var(--subtle); font-family: var(--font-mono); font-size: 11px; }
.route-result {
background: var(--surface-2);

View File

@@ -5,7 +5,11 @@ const COUNTRIES = [
{ re: /\b(ru|россия|russia|moscow|spb)\b/i, code: "RU", flag: "🇷🇺" },
{ re: /\b(de|germany|frankfurt|berlin|deu)\b/i, code: "DE", flag: "🇩🇪" },
{ re: /\b(nl|netherlands|amsterdam|holland)\b/i, code: "NL", flag: "🇳🇱" },
{ re: /\b(us|usa|america|new[-_ ]?york|chicago|miami)\b/i, code: "US", flag: "🇺🇸" },
{
re: /\b(us|usa|america|new[-_ ]?york|chicago|miami)\b/i,
code: "US",
flag: "🇺🇸",
},
{ re: /\b(uk|britain|london|england)\b/i, code: "GB", flag: "🇬🇧" },
{ re: /\b(fr|france|paris)\b/i, code: "FR", flag: "🇫🇷" },
{ re: /\b(jp|japan|tokyo)\b/i, code: "JP", flag: "🇯🇵" },