From ceeb1dcb8e526c3ad512abfec18912e047a60c9a Mon Sep 17 00:00:00 2001 From: Fabrizio Ferri Benedetti Date: Tue, 18 Aug 2026 13:15:23 +0200 Subject: [PATCH 1/5] Add mobile top nav tabs menu The section-driven top nav needs a compact mobile presentation so configured tabs remain usable on narrow screens while preserving the existing desktop tab row. Co-Authored-By: GPT-5.5 --- .../Assets/secondary-nav.css | 19 +++++++++ .../Assets/styles.css | 1 + .../Layout/_SecondaryNav.cshtml | 42 ++++++++++++++++++- .../Rendering/SecondaryNavRenderingTests.cs | 29 +++++++++++-- 4 files changed, 86 insertions(+), 5 deletions(-) create mode 100644 src/Elastic.Documentation.Site/Assets/secondary-nav.css diff --git a/src/Elastic.Documentation.Site/Assets/secondary-nav.css b/src/Elastic.Documentation.Site/Assets/secondary-nav.css new file mode 100644 index 000000000..9552f9239 --- /dev/null +++ b/src/Elastic.Documentation.Site/Assets/secondary-nav.css @@ -0,0 +1,19 @@ +@layer components { + .secondary-nav-mobile-menu summary { + list-style: none; + } + + .secondary-nav-mobile-menu summary::-webkit-details-marker { + display: none; + } + + .secondary-nav-mobile-chevron { + flex-shrink: 0; + color: var(--color-grey-60); + transition: transform 0.15s ease; + } + + .secondary-nav-mobile-menu[open] .secondary-nav-mobile-chevron { + transform: rotate(180deg); + } +} diff --git a/src/Elastic.Documentation.Site/Assets/styles.css b/src/Elastic.Documentation.Site/Assets/styles.css index db3847d47..0b760a4ca 100644 --- a/src/Elastic.Documentation.Site/Assets/styles.css +++ b/src/Elastic.Documentation.Site/Assets/styles.css @@ -22,6 +22,7 @@ @import './markdown/image-carousel.css'; @import './markdown/hr.css'; @import './modal.css'; +@import './secondary-nav.css'; @import './secondary-nav-dropdown.css'; @import './archive.css'; @import './markdown/stepper.css'; diff --git a/src/Elastic.Documentation.Site/Layout/_SecondaryNav.cshtml b/src/Elastic.Documentation.Site/Layout/_SecondaryNav.cshtml index 569dcb898..a9d685258 100644 --- a/src/Elastic.Documentation.Site/Layout/_SecondaryNav.cshtml +++ b/src/Elastic.Documentation.Site/Layout/_SecondaryNav.cshtml @@ -11,12 +11,50 @@ class="bg-grey-10 border-b border-grey-20"> @if (topNav is not null) { + var activeMobileLink = topNav.Items.OfType().FirstOrDefault(item => item.IsActive(currentSectionId)); + var mobileSummary = activeMobileLink?.Title ?? "Sections"; + @* navigation-preview: scrollable section-driven top nav. secondary-nav-dropdown.css lets an open dropdown escape the overflow clipping. *@ +
+
+ + @mobileSummary + + +
+ @foreach (var link in topNav.Items.OfType()) + { + var isActive = link.IsActive(currentSectionId); + var mobileStateClass = isActive ? "text-blue-elastic" : "text-ink-light hover:text-blue-elastic active:text-blue-elastic-100"; + @if (link.IsExternal) + { + + @link.Title + (opens in a new tab) + + } + else + { + @link.Title + } + } +
+
+