Merge branch 'dev' into feature/install-page

# Conflicts:
#	backend/bot/app/web/admin_api_impl/settings.py
#	backend/bot/app/web/webapp/cache_helpers.py
#	frontend/src/admin/sections/SettingsSection.svelte
#	tests/test_admin_settings_manifest_i18n.py
This commit is contained in:
3252a8
2026-05-22 22:57:24 +03:00
31 changed files with 2093 additions and 219 deletions
+79 -32
View File
@@ -1889,6 +1889,65 @@
align-items: center;
}
.admin-webhook-hint {
display: grid;
grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
gap: 16px;
align-items: center;
min-width: 0;
padding: 14px 18px;
border-bottom: 1px solid var(--admin-border);
background: color-mix(in srgb, var(--info) 7%, transparent);
}
.admin-webhook-hint-meta {
display: grid;
gap: 4px;
min-width: 0;
}
.admin-webhook-hint-meta strong {
color: var(--admin-text);
font-size: 12px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.04em;
}
.admin-webhook-hint-meta small {
color: var(--admin-muted);
font-size: 12px;
line-height: 1.45;
overflow-wrap: anywhere;
}
.admin-webhook-value {
display: flex;
align-items: center;
gap: 8px;
min-width: 0;
}
.admin-webhook-value code {
flex: 1 1 auto;
min-width: 0;
padding: 8px 10px;
border: 1px solid var(--admin-border);
border-radius: 8px;
background: color-mix(in srgb, var(--admin-bg) 82%, var(--admin-surface-2));
color: var(--admin-text);
font-family: var(--font-mono);
font-size: 11px;
line-height: 1.35;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.admin-webhook-copy {
flex: 0 0 auto;
}
.admin-setting:last-child {
border-bottom: 0;
}
@@ -2625,6 +2684,26 @@
padding: 14px 14px;
}
.admin-webhook-hint {
grid-template-columns: minmax(0, 1fr);
gap: 10px;
padding: 14px;
}
.admin-webhook-value {
align-items: stretch;
flex-direction: column;
}
.admin-webhook-value code {
white-space: normal;
overflow-wrap: anywhere;
}
.admin-webhook-copy {
align-self: flex-start;
}
.admin-card-head {
padding: 12px 14px;
}
@@ -2704,38 +2783,6 @@
}
}
.settings-admin-block {
display: grid;
gap: 10px;
margin: 6px 0 0;
}
.settings-row.settings-row-admin {
border: 1px solid color-mix(in srgb, #f59e0b 42%, transparent);
background: color-mix(in srgb, #f59e0b 12%, transparent);
border-radius: var(--radius);
padding: 10px 12px;
width: 100%;
cursor: pointer;
transition:
background 0.12s ease,
border-color 0.12s ease;
}
.settings-row.settings-row-admin:hover {
background: color-mix(in srgb, #f59e0b 18%, transparent);
border-color: color-mix(in srgb, #f59e0b 58%, transparent);
}
.settings-row.settings-row-admin > svg:first-child {
color: #fbbf24;
opacity: 1;
}
.settings-row.settings-row-admin strong {
color: var(--text);
}
/* ============================================================
shadcn-svelte primitives: Tabs / Select / Switch / Label
bits-ui exposes data-state attributes; styling here matches
+55
View File
@@ -1287,6 +1287,11 @@ a {
gap: 8px;
}
.settings-admin-block {
display: grid;
gap: 8px;
}
.settings-divider {
height: 1px;
background: var(--border);
@@ -1329,6 +1334,56 @@ a {
font-size: 12px;
}
.settings-row.settings-row-admin {
min-height: 54px;
border-color: var(--warning-border);
background: linear-gradient(
135deg,
color-mix(in srgb, var(--warning) 13%, var(--panel)),
color-mix(in srgb, var(--warning) 7%, var(--panel-2))
);
cursor: pointer;
transition:
transform 0.14s ease,
border-color 0.14s ease,
background 0.14s ease,
box-shadow 0.14s ease;
}
.settings-row.settings-row-admin:hover:not(:disabled) {
border-color: color-mix(in srgb, var(--warning) 52%, var(--border));
background: linear-gradient(
135deg,
color-mix(in srgb, var(--warning) 16%, var(--panel)),
color-mix(in srgb, var(--warning) 9%, var(--panel-2))
);
}
.settings-row.settings-row-admin:active:not(:disabled) {
transform: translateY(1px);
}
.settings-row.settings-row-admin:focus-visible {
outline: none;
border-color: color-mix(in srgb, var(--warning) 58%, var(--border));
box-shadow:
0 0 0 2px color-mix(in srgb, var(--warning) 24%, transparent),
inset 0 1px 0 var(--inset-highlight);
}
.settings-row.settings-row-admin > svg:first-child {
color: var(--warning-text);
opacity: 1;
}
.settings-row.settings-row-admin > svg:last-child {
color: color-mix(in srgb, var(--warning) 70%, var(--muted));
}
.settings-row.settings-row-admin strong {
color: var(--warning-text);
}
.settings-row-linked {
grid-template-columns: 28px minmax(0, 1fr);
border-color: var(--success-border);