feat: добавлены функции для работы с PID sing-box
Refs: None
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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: "🇯🇵" },
|
||||
|
||||
Reference in New Issue
Block a user