Skip to content

fix(ui): migrate app-render nav + theme-toggle to upstream sidebar + theme-orb — residual v2026.3.13-1 drift after #2501 #2509

@alexey-pelykh

Description

@alexey-pelykh

Problem

Cluster 2 of the #2502 CSS class drift audit: the v2026.3.13-1 upstream sync (commit 04a7853f0f, PR #2398) — the same sync that #2501 partially addressed — also renamed .nav*.sidebar* and replaced the .theme-toggle* component with .theme-orb*. #2501 fixed the .nav-group/.topbar*/.brand* subset; this issue covers the residue.

5 remaining orphans from the same sync commit.

Orphaned class references (5)

Orphaned class Callsites Likely upstream target
.nav ui/src/ui/app-render.ts:251 .sidebar (verified via git show 04a7853f0f)
.theme-toggle ui/src/ui/app-render.helpers.ts:501 .theme-orb (defined in components.css:391)
.theme-toggle__track app-render.helpers.ts:502 .theme-orb__menu or equivalent — verify
.theme-toggle__indicator app-render.helpers.ts:503 verify
.theme-toggle__button app-render.helpers.ts:505, :514, :523 .theme-orb__trigger / .theme-orb__option — verify

Note: the current class="nav ${state.settings.navCollapsed ? "nav--collapsed" : ""}" on app-render.ts:251 uses a dynamic modifier. The rename needs to change BOTH the static nav and the dynamic nav--collapsed token.

Scope

  • In: ui/src/ui/app-render.ts (the <aside class="nav ..."> element) and ui/src/ui/app-render.helpers.ts (the renderThemeToggle function). Map to upstream .sidebar + .theme-orb vocabulary. Verify structural equivalence — theme-toggle was a segmented-button group; theme-orb is a trigger + menu. The markup structure may need to change, not just the class names.
  • Out: Other drift clusters — audit(ui): one-shot CSS class drift audit — surface fork-side references with no CSS definition #2502 filed separate follow-ups per cluster.

Acceptance criteria

  • app-render.ts and app-render.helpers.ts emit only classes defined in the ui/src/styles.css import graph for the nav aside and theme toggle
  • Re-run node scripts/audit-css-class-drift.mjs — cluster 2 (04a7853) shows 0 orphans
  • Sidebar collapse/expand works (was tied to .nav--collapsed → now .sidebar--collapsed)
  • Theme toggle: Light / Dark / System all switch correctly; visual matches upstream dashboard-v2

References

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions