From fbcf1fbefe0f42d791ed4e82648cbdbf1bda4731 Mon Sep 17 00:00:00 2001 From: Kirtan Thakkar Date: Tue, 3 Nov 2026 15:23:26 +0530 Subject: [PATCH] fix(web): align segmented controls, vertical nav and button padding with published guidance - Selected segments get a 3:1 accent border, and dark mode uses an indigo fill to match the rails - Rail and main nav selection use a straight 4x20 inset bar in place of the bent stripe - Rail rows are 32px with 8px side padding, and titles, labels and icons share one line - Rail and dark main nav hover are neutral, so hover no longer reads as selected - Toolbar and small buttons get wider side padding at 1366px and up; narrower windows keep the old padding - Logs mode buttons have accessible names when icon-only, and pin budgets match rendered widths --- web/src/components/MenuLink.vue | 12 ++-- .../autoobserve/AutoObservePolicyTab.vue | 2 +- web/src/components/common/SectionRail.vue | 6 +- .../components/common/sidebar/FolderList.vue | 4 +- web/src/components/dbm/DbmMetricsRail.vue | 2 +- web/src/components/fleet/FleetRail.vue | 4 +- web/src/components/iam/roles/ModuleRail.vue | 4 +- .../variables/SyntheticsScopeRail.vue | 4 +- .../components/billings/Billing.vue | 2 +- .../AIObservability/QueueWorkbenchPage.vue | 2 +- web/src/lib/core/Button/OButton.vue | 13 ++-- web/src/lib/core/Navbar/ONavbar.vue | 5 +- web/src/lib/core/ToggleGroup/OToggleGroup.vue | 2 +- .../ToggleGroup/OToggleGroupItem.types.ts | 2 +- .../lib/core/ToggleGroup/OToggleGroupItem.vue | 9 ++- web/src/lib/navigation/Tabs/OTab.spec.ts | 4 +- web/src/lib/navigation/Tabs/OTab.vue | 64 +++++++++---------- web/src/lib/navigation/Tabs/OTabs.vue | 2 +- web/src/lib/styles/tokens/colorMath.spec.ts | 4 +- web/src/lib/styles/tokens/component.css | 12 ++-- web/src/lib/styles/tokens/dark.css | 8 ++- .../logs/SearchBar.savedViewsPinned.spec.ts | 4 +- web/src/plugins/logs/SearchBar.vue | 43 +++++++------ .../views/Dashboards/DashboardSettings.vue | 6 +- .../kubernetes2/K8sResourceTree.vue | 2 +- 25 files changed, 117 insertions(+), 105 deletions(-) diff --git a/web/src/components/MenuLink.vue b/web/src/components/MenuLink.vue index aaab24684c..f3ae002978 100644 --- a/web/src/components/MenuLink.vue +++ b/web/src/components/MenuLink.vue @@ -263,13 +263,11 @@ export default defineComponent({ const activePillClass = computed(() => { if (slideActive.value) { - return isDark.value - ? "text-tabs-active-text border-s-2 border-transparent" - : "text-accent border-s-2 border-transparent"; + return isDark.value ? "text-tabs-active-text" : "text-accent"; } return isDark.value - ? "text-tabs-active-text bg-tabs-active-bg border-s-2 border-accent" - : "text-accent bg-surface-base border-s-2 border-accent"; + ? "text-tabs-active-text bg-tabs-active-bg" + : "text-accent bg-surface-base shadow-xs"; }); const activeIconClass = computed(() => isDark.value ? "text-tabs-active-text!" : "text-accent!", @@ -396,10 +394,10 @@ export default defineComponent({ // Sit above the rail's sliding pill so icon/label stay readable. slideActive.value ? "z-10" : "", props.locked - ? "cursor-pointer text-tabs-inactive-text border-s-2 border-transparent bg-transparent hover:bg-tabs-hover-bg" + ? "cursor-pointer text-tabs-inactive-text bg-transparent hover:bg-tabs-hover-bg dark:hover:bg-tabs-rail-hover-bg" : isActive.value ? activePillClass.value - : "text-tabs-inactive-text border-s-2 border-transparent bg-transparent hover:bg-tabs-hover-bg", + : "text-tabs-inactive-text bg-transparent hover:bg-tabs-hover-bg dark:hover:bg-tabs-rail-hover-bg", isActive.value ? "nav-menu-item--active" : "", props.title === "Functions" ? "menu-link-function" : "", // Reset native