diff --git a/frontend/src/views/components/ConfigSettings/ConfigSettings.css b/frontend/src/views/components/ConfigSettings/ConfigSettings.css index 1de0dba..42b4cba 100644 --- a/frontend/src/views/components/ConfigSettings/ConfigSettings.css +++ b/frontend/src/views/components/ConfigSettings/ConfigSettings.css @@ -100,43 +100,11 @@ } .config-workspace { display: grid; - grid-template-columns: minmax(0, 1fr) 176px; + grid-template-columns: minmax(0, 1fr) 152px; grid-template-areas: "main submenu"; align-items: start; gap: 20px; } -.config-submenu { - grid-area: submenu; - position: sticky; - top: 0; - display: grid; - gap: 6px; - align-self: start; - padding: 8px; - border: 1px solid var(--pm-border-color); - border-radius: var(--pm-radius-lg); - background: var(--pm-bg-secondary); -} -.config-submenu-item { - width: 100%; - padding: 12px 14px; - color: var(--pm-text-secondary); - text-align: left; - font: inherit; - border: 0; - border-radius: var(--pm-radius-sm); - background: transparent; - cursor: pointer; - transition: color .2s ease, background-color .2s ease; -} -.config-submenu-item:hover, -.config-submenu-item.active { - color: var(--pm-primary-color); - background: var(--el-color-primary-light-9); -} -.config-submenu-item.active { - font-weight: 600; -} .config-main { grid-area: main; display: grid; @@ -293,7 +261,7 @@ .audit-item time { flex: none; } -@media (max-width: 640px) { +@container settings-content (max-width: 560px) { .status-panel, .editor-panel, .rollback-panel, @@ -320,18 +288,6 @@ "main"; gap: 16px; } - .config-submenu { - position: static; - display: flex; - gap: 6px; - overflow-x: auto; - padding: 6px; - } - .config-submenu-item { - flex: 0 0 auto; - width: auto; - white-space: nowrap; - } .selected-section-label { white-space: normal; } diff --git a/frontend/src/views/components/ConfigSettings/ConfigSettings.vue b/frontend/src/views/components/ConfigSettings/ConfigSettings.vue index 3c531b3..c0abf37 100644 --- a/frontend/src/views/components/ConfigSettings/ConfigSettings.vue +++ b/frontend/src/views/components/ConfigSettings/ConfigSettings.vue @@ -20,19 +20,13 @@
- +
@@ -285,6 +279,7 @@ diff --git a/frontend/src/views/components/PluginSettings/PluginSettings.css b/frontend/src/views/components/PluginSettings/PluginSettings.css index e040aca..5b5a068 100644 --- a/frontend/src/views/components/PluginSettings/PluginSettings.css +++ b/frontend/src/views/components/PluginSettings/PluginSettings.css @@ -29,14 +29,45 @@ overflow: hidden; } -.custom-tabs :deep(.el-tabs__header) { +.custom-tabs > :deep(.el-tabs__header) { margin-bottom: 0; background: var(--pm-bg-primary); - padding: 0 16px; + padding: 8px 12px; border-bottom: 1px solid var(--pm-border-color); } -.custom-tabs :deep(.el-tabs__content) { +.custom-tabs > :deep(.el-tabs__header .el-tabs__nav-wrap::after), +.custom-tabs > :deep(.el-tabs__header .el-tabs__active-bar) { + display: none; +} + +.custom-tabs > :deep(.el-tabs__header .el-tabs__item) { + height: 38px; + margin-right: 6px; + padding: 0 14px !important; + border-radius: 8px; + color: var(--pm-text-secondary); + font-size: 13px; +} + +.custom-tabs > :deep(.el-tabs__header .el-tabs__item:hover:not(.is-active)) { + color: var(--pm-text-primary); + background: var(--pm-bg-hover); +} + +.custom-tabs > :deep(.el-tabs__header .el-tabs__item.is-active) { + color: var(--settings-accent, var(--pm-primary-color)); + background: color-mix(in srgb, var(--pm-primary-color) 10%, var(--pm-bg-secondary)); + font-weight: 600; + box-shadow: inset 0 -2px var(--settings-accent, var(--pm-primary-color)); +} + +.custom-tabs > :deep(.el-tabs__header .el-tabs__item:focus-visible) { + outline: 2px solid var(--settings-accent, var(--pm-primary-color)); + outline-offset: -2px; +} + +.custom-tabs > :deep(.el-tabs__content) { height: 100%; } diff --git a/frontend/src/views/components/SecuritySettings/SecuritySettings.css b/frontend/src/views/components/SecuritySettings/SecuritySettings.css index af573c7..0b7d13a 100644 --- a/frontend/src/views/components/SecuritySettings/SecuritySettings.css +++ b/frontend/src/views/components/SecuritySettings/SecuritySettings.css @@ -1,44 +1,18 @@ .settings-card { padding: 0; } .security-workspace { display: grid; - grid-template-columns: minmax(0, 1fr) 176px; + grid-template-columns: minmax(0, 1fr) 152px; grid-template-areas: "main submenu"; align-items: start; gap: 20px; } -.security-submenu { - grid-area: submenu; - position: sticky; - top: 0; - display: grid; - gap: 6px; - padding: 8px; - border: 1px solid var(--pm-border-color); - border-radius: var(--pm-radius-lg); - background: var(--pm-bg-secondary); -} -.security-submenu-item { - width: 100%; - padding: 12px 14px; - color: var(--pm-text-secondary); - text-align: left; - font: inherit; - border: 0; - border-radius: var(--pm-radius-sm); - background: transparent; - cursor: pointer; - transition: color .2s ease, background-color .2s ease; -} -.security-submenu-item:hover, -.security-submenu-item.active { - color: var(--pm-primary-color); - background: var(--el-color-primary-light-9); -} -.security-submenu-item.active { font-weight: 600; } .security-main { grid-area: main; min-width: 0; } +.security-main > .settings-divider:first-child { + display: none; +} .settings-header { margin-bottom: 24px; } .settings-header h3 { font-size: 18px; font-weight: 600; color: var(--pm-text-primary); margin: 0 0 8px; } .settings-desc { font-size: 14px; color: var(--pm-text-secondary); margin: 0; } @@ -59,7 +33,7 @@ .credential-info span { color: var(--pm-text-secondary); font-size: 13px; } .credential-warning { width: 100%; color: #b45309 !important; font-size: 13px; } .credential-actions { display: flex; flex: none; gap: 8px; } -@media (max-width: 640px) { +@container settings-content (max-width: 560px) { .security-workspace { grid-template-columns: minmax(0, 1fr); grid-template-areas: @@ -67,18 +41,6 @@ "main"; gap: 16px; } - .security-submenu { - position: static; - display: flex; - gap: 6px; - overflow-x: auto; - padding: 6px; - } - .security-submenu-item { - flex: 0 0 auto; - width: auto; - white-space: nowrap; - } .security-key-header, .credential-item { flex-direction: column; align-items: stretch; } .credential-actions { width: 100%; } .credential-actions .el-button { flex: 1; } diff --git a/frontend/src/views/components/SecuritySettings/SecuritySettings.vue b/frontend/src/views/components/SecuritySettings/SecuritySettings.vue index 4e7cff2..4f5029d 100644 --- a/frontend/src/views/components/SecuritySettings/SecuritySettings.vue +++ b/frontend/src/views/components/SecuritySettings/SecuritySettings.vue @@ -1,19 +1,12 @@