UX Specification: Global Navigation & Scope Switcher (v1.1)
This document defines the persistent global navigation chassis for Evalium. It ensures a consistent "Entry Point" into functional hubs and manages the organizational context (multi-tenancy) through a unified scope switcher.
1) Architecture: The "Sandwich" Layout​
To maximize screen real estate for data-dense tables while providing contextual support, Evalium uses a three-column sandwich architecture:
- Left (Persistent Sidebar): Global Navigation + Scope Switcher. "Where am I going?"
- Center (Fluid Workspace): The
StandardHuborBuildercontent. "What am I doing?" - Right (Context Drawer): The
ContextDrawerdriven byDrawerCoordinator. "Who/What is this reference?"
2) The Global Sidebar (GlobalNav)​
The sidebar is a "Fixed-Rail" navigation component located on the far left.
2.1 Top Section: Scope Switcher (OrgSwitcher)​
This is the most critical component for multi-tenant data isolation. It allows users to set their "Working Context" once for the entire session.
- Interaction: A dropdown (Bits UI Select) showing the current active scope.
- Modes:
- "All Organizations" (Global): Sets
X-Org-Scope: all. User sees aggregated data across the tenant. - "Specific Org" (Silo): Sets
X-Org-Id: <uuid>. User sees only data belonging to that unit.
- "All Organizations" (Global): Sets
- Behavior:
- Changing the scope should trigger a data refresh of the current page.
- Selection must persist across navigations (Session/Cookie-backed).
- Visual cue: If scope is "All," use a distinct "Global" icon (e.g., Earth); if specific, use a "Silo" icon (e.g., Building).
2.2 Center Section: Primary Workspaces​
Links are grouped logically to reduce cognitive load for SMB users.
- Dashboard: Root entry point (
nav_dashboard). - Content: Grouped links for
Questions,Passages, andEvaluations. - Delivery: Direct link to
Assignments. - Insights: Direct link to
Reporting. - Admin: Grouped links for
Users,Groups,Roles, andSign-In Security.
2.3 Bottom Section: System & Profile​
- Settings: Tenant-level configuration.
- User Profile: Identity management and Logout (
nav_logout).
3) Breadcrumb Trail (NavBreadcrumbs)​
Breadcrumbs are required for every primary page shell (StandardHub). They provide the "Depth" navigation to complement the sidebar's "Width."
3.1 Contract (MUST)​
- Placement: Always in the top-left of the fluid workspace header, above the
<h1>title. - Structure:
Root / Hub / Sub-Feature / [Entity]- Example:
Dashboard / Questions / Geography MCQ / Version 2
- Example:
- i18n: Every static label in the trail MUST be localized. Entity names (like Question Stems) are rendered as provided.
- Behavior: Clicking a crumb performs a standard navigation. The current page crumb is rendered as plain text (non-clickable).
4) Interaction Rules​
4.1 Visual Hierarchy​
- Active State: The sidebar must clearly highlight the active route using high-contrast markers or background shifts.
- Hover Intent: Sidebar links should show a tooltip or expanded label if the rail is collapsed (Tier B/C devices).
4.2 Mobility (Task-Tiers)​
- Tier A (Mobile): The persistent left sidebar is hidden. A top-right Menu button opens navigation in a right-side sheet/dialog. Scope switcher stays in this menu.
- Tier B/C (Tablet/Desktop): Full sidebar is shown.
4.3 Collapsible Group Default​
- Navigation parent groups (
Content,Delivery,Insights,Admin) are collapsible. - Default: only the group containing the current route is expanded on load.
- When route changes, open state should follow the active section and collapse others by default.
5) Implementation Status (2026-03-05)​
-
AppShelluses grid layout (Sidebar + Main + Drawer host). -
OrgSwitcheris implemented with local BitsSelectwrapper. - Org scope state maps to request headers (
X-Tenant-Id,X-Org-Id,X-Org-Scope) via shared scope state/contract headers. -
NavBreadcrumbsis integrated into page shell (AppShellandStandardHubsurfaces). - Sidebar labels resolve from i18n navigation keys.
- Mobile menu uses dialog sheet and does not compete with drawer z-order.
Open implementation notes:
PassagesandReportingremain disabled placeholders until those page surfaces are wired.