feat: добавлены компоненты для управления конфигурацией и логами

Добавлены новые компоненты для отображения и управления конфигурацией, логами и правилами маршрутизации. Реализована логика для работы с API, включая запросы на получение и сохранение данных. Также добавлены шаблоны правил и утилиты для валидации.

Refs: None
This commit is contained in:
2026-05-08 18:23:29 +03:00
parent 7d41dd86e7
commit 8789496ae6
24 changed files with 2987 additions and 364 deletions

View File

@@ -438,3 +438,93 @@ dd {
flex-direction: column;
}
}
/* Дополнения для новых компонентов */
.primary-block { display: flex; flex-direction: column; gap: 12px; }
.masked-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.masked-row .masked {
flex: 1;
padding: 8px 12px;
border-radius: 10px;
background: rgba(255,255,255,0.04);
font-family: 'Space Grotesk', monospace;
color: var(--muted);
}
.runtime-actions {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin: 12px 0;
}
.runtime-actions button { flex: 1 1 auto; }
.rule-card.invalid { border-color: rgba(255, 107, 107, 0.55); }
.field.has-error textarea, .field.has-error input { border-color: var(--red); }
.field small.error { color: var(--red); margin-top: 4px; display: block; }
.drag-handle {
cursor: grab;
user-select: none;
padding: 4px 8px;
border-radius: 6px;
background: rgba(255,255,255,0.05);
color: var(--muted);
font-family: 'Space Grotesk', monospace;
font-size: 12px;
}
.drag-handle:active { cursor: grabbing; }
.logs-panel .logs-stream {
max-height: 360px;
overflow-y: auto;
background: rgba(0,0,0,0.35);
border-radius: 14px;
padding: 12px;
font-family: 'Space Grotesk', monospace;
font-size: 12px;
line-height: 1.55;
}
.log-line { display: flex; gap: 10px; margin: 0 0 2px; }
.log-time { color: var(--muted); flex: 0 0 auto; }
.log-level { color: var(--amber); flex: 0 0 50px; text-transform: uppercase; font-size: 10px; padding-top: 2px; }
.log-error .log-level { color: var(--red); }
.log-text { flex: 1; word-break: break-all; }
.modal-backdrop {
position: fixed; inset: 0;
background: rgba(3, 8, 6, 0.7);
backdrop-filter: blur(6px);
display: flex; align-items: center; justify-content: center;
z-index: 100;
padding: 24px;
}
.modal {
background: var(--panel-strong);
border: 1px solid var(--line);
border-radius: 24px;
box-shadow: var(--shadow);
width: min(900px, 100%);
max-height: 90vh;
display: flex; flex-direction: column;
padding: 24px;
gap: 16px;
}
.modal-header {
display: flex;
justify-content: space-between;
align-items: center;
gap: 16px;
flex-wrap: wrap;
}
.modal-header h3 { margin: 0; font-family: 'Space Grotesk', sans-serif; }
.config-view {
flex: 1;
overflow: auto;
background: rgba(0,0,0,0.4);
padding: 16px;
border-radius: 14px;
font-family: 'Space Grotesk', monospace;
font-size: 12px;
line-height: 1.5;
margin: 0;
color: var(--text);
}