fix(nav,footer): drop orphan _hidden section header, show footer on Activate

Two follow-ups to the prior sidebar/footer cleanup:

- The "_hidden" section header was still visible in the sidebar
  because Streamlit renders ``stNavSectionHeader`` as a sibling of
  ``stNavSection``, not a child — so the ``:has()`` rule on the
  section was hiding the items list but leaving the header
  (and its collapse/drilldown marker) behind. Move Activate +
  Close into the unlabeled section (key ``""``) alongside Home so
  there is no header to leak in the first place, then hide just
  the two links via ``stSidebarNavLinkContainer:has(...)`` (with
  a defensive ``a[href$=...]`` fallback for browsers without
  ``:has()`` support).
- The sticky footer was missing on ``pages/_Activate.py`` because
  the page never called ``render_sticky_footer`` — added the
  call so the Help / Close bar persists when the user follows
  the popover's Activate / Manage link.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-18 15:45:22 +00:00
parent d840230e48
commit b2449d3139
3 changed files with 27 additions and 19 deletions

View File

@@ -109,13 +109,16 @@ def _build_navigation() -> dict[str, list]:
url_path="close",
)
# Activate + Close are placed in the unlabeled section alongside
# Home (key ``""`` — Streamlit renders no header for it). The CSS
# in ``hide_streamlit_chrome`` then hides just their two links by
# ``href``, leaving Home visible and no orphan section header /
# drilldown marker in the sidebar.
return {
"": [home],
"": [home, activate, close],
section_label("cleaners"): by_section["cleaners"],
section_label("transformations"): by_section["transformations"],
section_label("automations"): by_section["automations"],
# Hidden section — see comment above + CSS in hide_streamlit_chrome.
"_hidden": [activate, close],
}