Skip to content

Reorganize nav menu and add collapsible sidebar#7488

Open
jack-gale-ethyca wants to merge 4 commits intomainfrom
systems_nav
Open

Reorganize nav menu and add collapsible sidebar#7488
jack-gale-ethyca wants to merge 4 commits intomainfrom
systems_nav

Conversation

@jack-gale-ethyca
Copy link
Contributor

@jack-gale-ethyca jack-gale-ethyca commented Feb 25, 2026

Ticket ENG-2588

Description Of Changes

  • Break Settings into three sections: Core configuration, Compliance, and Settings
  • Add collapsible nav with smooth expand/collapse transition and logo crossfade
  • Style flyout menus with minos background, corinth text, and proper padding
  • Add selected parent icon highlight and hover states in collapsed mode
  • Fix content width to expand properly when nav collapses (FixedLayout, system pages)
  • Fix content bounce on expand via flex-based layout in _app.tsx
  • Make dev Plus nav override reliable using NODE_ENV instead of NEXT_PUBLIC_APP_ENV

Steps to Confirm

  1. View the left nav menu and ensure settings pages are regrouped and in the proper buckets
  2. Select these views to make sure the navigation is working (Hover states, selected states, page loading)
  3. Select the fides logo to collapse the menu, ensure you can hover and navigate to all pages.
  4. Ensure the main page contents span to the full width of screen when the menu is collapsed
  5. Check the data map report and make sure the table renders to the width of the page and you can scroll horizontally.
  6. Ensure this works for fides and fides-plus users

Pre-Merge Checklist

  • Issue requirements met
  • All CI pipelines succeeded
  • CHANGELOG.md updated
    • Add a db-migration This indicates that a change includes a database migration label to the entry if your change includes a DB migration
    • Add a high-risk This issue suggests changes that have a high-probability of breaking existing code label to the entry if your change includes a high-risk change (i.e. potential for performance impact or unexpected regression) that should be flagged
    • Updates unreleased work already in Changelog, no new entry necessary
  • UX feedback:
    • All UX related changes have been reviewed by a designer
    • No UX review needed
  • Followup issues:
    • Followup issues created
    • No followup issues
  • Database migrations:
    • Ensure that your downrev is up to date with the latest revision on main
    • Ensure that your downgrade() migration is correct and works
      • If a downgrade migration is not possible for this change, please call this out in the PR description!
    • No migrations
  • Documentation:
    • Documentation complete, PR opened in fidesdocs
    • Documentation issue created in fidesdocs
    • If there are any new client scopes created as part of the pull request, remember to update public-facing documentation that references our scope registry
    • No documentation updates required

- Break Settings into three sections: Core configuration, Compliance, and Settings
- Add collapsible nav with smooth expand/collapse transition and logo crossfade
- Style flyout menus with minos background, corinth text, and proper padding
- Add selected parent icon highlight and hover states in collapsed mode
- Fix content width to expand properly when nav collapses (FixedLayout, system pages)
- Fix content bounce on expand via flex-based layout in _app.tsx
- Make dev Plus nav override reliable using NODE_ENV instead of NEXT_PUBLIC_APP_ENV

Co-authored-by: Cursor <cursoragent@cursor.com>
@jack-gale-ethyca jack-gale-ethyca requested a review from a team as a code owner February 25, 2026 19:52
@jack-gale-ethyca jack-gale-ethyca requested review from jpople and removed request for a team February 25, 2026 19:52
@vercel
Copy link
Contributor

vercel bot commented Feb 25, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
fides-plus-nightly Ready Ready Preview, Comment Feb 26, 2026 10:03pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
fides-privacy-center Ignored Ignored Feb 26, 2026 10:03pm

Request Review

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Feb 25, 2026

Greptile Summary

This PR reorganizes the navigation menu structure and adds a collapsible sidebar feature with smooth animations and visual improvements.

Major changes:

  • Reorganized settings menu items into three distinct sections: Core configuration (taxonomy, integrations, notifications, custom fields, properties, domains), Compliance (locations, regulations), and Settings (privacy requests, users, organization, email templates, consent)
  • Added collapsible navigation sidebar with smooth expand/collapse transitions (0.35s ease), logo crossfade between expanded (107px) and collapsed (24px icon) states, and localStorage persistence
  • Styled flyout menus with minos background (#2b2e35), corinth text (#fafafa), selected state highlighting, and hover states
  • Fixed content width expansion by using flex-based layout in _app.tsx with flex={1}, minWidth={0}, and overflow="hidden" to prevent content bounce
  • Made dev Plus nav override more reliable by using NODE_ENV === "development" instead of NEXT_PUBLIC_APP_ENV for the devShowPlusNav check
  • Updated all Cypress tests to account for new nav structure and prevent collapsed state during testing

Issues found:

  • The PR exceeds the file count limit (18 files changed vs. 15 file limit)
  • Hardcoded color values in SCSS that should be extracted as named variables

The implementation is well-structured with proper state management, smooth transitions, and comprehensive test updates.

Confidence Score: 4/5

  • This PR is safe to merge with only minor style improvements needed
  • The implementation is solid with proper state management, smooth transitions, comprehensive test coverage, and no logical errors. The score is 4 (not 5) due to two issues: (1) the PR exceeds the 15-file limit with 18 files changed, and (2) hardcoded color values in SCSS that should be extracted as named variables per coding standards. These are minor concerns that don't affect functionality.
  • NavMenu.module.scss needs color values extracted into named variables. Otherwise, no files require special attention.

Important Files Changed

Filename Overview
clients/admin-ui/src/features/common/nav/NavMenu.module.scss Adds styles for collapsible nav with flyout menus; contains hardcoded color values that should be extracted
clients/admin-ui/src/features/common/nav/MainSideNav.tsx Implements collapsible sidebar with logo crossfade and localStorage persistence; uses window access for localStorage
clients/admin-ui/src/features/common/nav/nav-config.tsx Reorganizes settings into three sections (Core configuration, Compliance, Settings); uses window.Cypress directly
clients/admin-ui/src/features/common/features/features.slice.ts Uses NODE_ENV instead of NEXT_PUBLIC_APP_ENV for dev Plus nav override, making it more reliable
clients/admin-ui/src/pages/_app.tsx Fixes content bounce on expand via flex-based layout with flex=1, minWidth=0, overflow=hidden

Last reviewed commit: 7e39f64

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

18 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

@jack-gale-ethyca
Copy link
Contributor Author

jack-gale-ethyca commented Feb 25, 2026

I fixed the hardcoded colors so that should be OK. I also ran this through our FE dev rules so that should be looking good now.

@jack-gale-ethyca
Copy link
Contributor Author

@jpople @nrxsmith This is now ready for review, I passed this through our dev rules and cleaned up a few things. The PR size check is failing but that's just due to the number of files changed. I can't complete this fully without touching a number of files.

Copy link
Contributor

@jpople jpople left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code looks okay, few minor tweaks and I think we shouldn't ship the devShowPlusNav option.

UX-wise, I don't think the icons are sufficiently clear to actually be usable for navigation when collapsed-- might help to at least add the section headings into the flyout menus too.

Image

I wonder also if there's a way we can more clearly communicate that clicking the logo is what toggles the collapsed state, I'm not sure I would ever come to that conclusion on my own.

Last thing, if possible it'd be nice to have more visual continuity with the logo during the expand-collapse animation; notice how the square logo transitions in and out despite remaining in the same place overall.

Screen.Recording.2026-02-27.at.14.38.20.mov

export const devShowPlusNav =
process.env.NODE_ENV === "development" &&
process.env.NEXT_PUBLIC_DEV_SHOW_PLUS_NAV === "true";

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this something that we foresee end users ever using or was it just so you could develop this without a Plus backend? If the latter I would take it out before merging.

visitWithExpandedNav: (
url: string,
options?: Partial<Cypress.VisitOptions>,
) => Chainable;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't actually think this is necessary, the nav should be expanded by default in all our tests. Cypress starts with clean local storage and none of the tests ever writes true to it.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's a lot of inline styles in this file that could be cleaned up and moved into the SCSS module, which I think would be cleaner.

hasFidesCloud: false,
});

const coreConfig = navGroups.find(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should use the findGroups helper here too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants