Repository navigation
Open
Description
Parent: #5451
Summary
Build the shared Mantine application shell, responsive navigation, theme, persistent settings, and accessibility foundations used by every v3alpha-backed page.
Application shell
- Centralize page and route metadata so the Router and Header do not maintain duplicate definitions.
- Build a responsive Mantine
AppShellwith desktop navigation and a keyboard-accessible mobile burger/drawer. - Include current-route state, Alertmanager branding and favicon, Documentation, and a route-prefix-safe Classic UI link.
- Add a real not-found page and reusable loading, empty, unavailable, and error states.
- Reset page error boundaries on route changes and lazy-load substantive routes where useful.
- Hide routes whose v3alpha services have not landed rather than exposing non-functional placeholder pages.
Theme and settings
- Define Alertmanager theme tokens, spacing, radius, typography, contrast, and focus behavior centrally.
- Support automatic, light, and dark color schemes and persist explicit selection.
- Integrate/rebase ui: Add theme toggle #5106 where suitable and include its requested interaction and accessibility tests.
- Add persistent settings for first day of week, default silence creator, expand-all alert groups, local/UTC time display, and page sizes.
- Preserve compatible Elm localStorage keys (
firstDayOfWeek,defaultCreator, andgroupExpandAll) and tolerate malformed or missing values.
Accessibility and responsiveness
- Restore browser zoom; do not use
user-scalable=no. - Use semantic page headings, landmarks, table structures, labels, and status/error announcements.
- Ensure all navigation and interactive controls work with keyboard and visible focus.
- Correct the current mobile navigation gap and title visibility breakpoints.
- Prevent fixed-width skeletons, tables, code blocks, labels, and menus from overflowing narrow viewports.
- Do not globally suppress keyboard-equivalent click lint rules.
Acceptance criteria
- One route registry drives navigation and route rendering.
- Every available page is usable by keyboard at mobile and desktop widths.
- Mobile navigation exposes all routes and actions available on desktop.
- Auto/light/dark theme selection is clear, accessible, and persistent.
- Existing Elm preferences migrate without throwing and malformed storage values fall back safely.
- Documentation and Classic UI links work at root and non-root route prefixes.
- Not-found, loading, empty, unavailable, and error states are consistent and announced appropriately.
- Browser zoom, semantic headings/tables, focus visibility, labels, and responsive overflow pass automated and manual checks.
- Interaction tests cover navigation, theme cycling, settings persistence, error resets, and mobile controls.
Dependencies and related work
- Runtime UI path/bootstrap: UI: build and serve the Mantine application at /ui/ #5486.
- Can proceed in parallel with Connect client work in UI: generate Connect TypeScript clients and establish the data layer #5487.
- Theme work should coordinate with ui: Add theme toggle #5106 and dark-mode request Darkmode #2556.
- Local/UTC settings relate to [UI] Feature: Localtime / Timezone option #3861.
Likely code areas
ui/mantine-ui/src/{App,main,theme}.tsxui/mantine-ui/src/components/Header*,ErrorBoundary.tsx, and new shell components- new route and settings modules/tests
ui/mantine-ui/index.html,biome.json- shared test utilities
Metadata
Metadata
Assignees
Type
Projects
- StatusShow more project fieldsTo triage
Activity