SHELL-2 prototype · ui-core-micha · visual/UX spec, no behaviour change

AccountPage: from a horizontal tab strip to a grouped sidebar + mobile drawer

AccountPage currently renders its sections (Profil, Sicherheit, Benutzer, Einladen, Support, plus whatever a consuming app injects via extraTabs) behind a horizontally scrollable MUI Tabs strip. This prototype replaces it with the grouped-list navigation pattern already shipping in jg-ferien’s EventInfoPage: a sticky sidebar on desktop, a bottom-sheet drawer on mobile — and, because AccountPage has no header of its own to hang a trigger button on, a new full-width trigger bar built for this component specifically.

Colour and spacing tokens below are MUI’s stock light/dark defaults (primary #1976d2 / #90caf9, default divider and text-alpha values), used only as placeholders inside the mockup frames. ui-core-micha ships to 14 apps with 14 different themes — the host app’s ThemeProvider supplies the real values at runtime, exactly as it does for every other shared component today.

Coverage

Covers

  • AccountPage’s section navigation: desktop sidebar, mobile drawer, and the new mobile trigger bar.
  • The users section’s table → card switch below md.

Does not cover — left untouched

  • The internal content of Profil, Sicherheit, Einladen, Support and Benachrichtigungen.
  • The invite / access-code / QR management components.
  • Anything outside AccountPage.

Explicit

The horizontal MUI Tab strip is replaced on both desktop and mobile. It is meant to disappear entirely — that is not an omission in this prototype, it is the point of the redesign.

On mobile, the current section name is carried by the trigger bar alone. The section-title heading that would otherwise repeat it just below is removed, not merely undrawn — do not add it back as a “missing” heading. Desktop keeps its section heading unchanged, since desktop has no trigger bar to carry that name instead.

The mobile trigger problem

jg-ferien’s drawer is opened from a button that lives in that app’s own page header (MobileSectionHeaderBar). AccountPage is a bare content component — every consuming app mounts it under its own header, and it cannot assume that header exists, has room for a button, or is even visible when scrolled. The trigger has to live inside AccountPage’s own content, at the very top, before anything else.

Panel 2 below shows the answer: a full-width bar, the first thing rendered on mobile, stating the current section name at 16.5px semibold with a small “Bereich” label above it for context, and a trailing chevron that is the conventional “tap to open a sheet” affordance. The whole 56px-tall bar is the tap target (well over the 44px minimum), bordered and shadowed like a raised control so it reads as tappable at a glance, not as a static heading.

Try it: the trigger in panel 2 actually opens/closes its drawer. Panel 3 is a separate, permanently-open frame kept alongside it purely for side-by-side comparison.

States

1 Desktop ≥ 900px — Benutzer active

280px sidebar, sticky · content grid minmax(0,1fr)

jg-ferien’s pattern has a standalone “Übersicht” entry above the groups. AccountPage has no equivalent landing/overview page, so this prototype starts directly at the first group — nothing was dropped, there was nothing there to keep.

Benutzer

5 Ergebnisse

Name Neu Rolle Aktionen
Selina Amrein ● admin
✎ 🗑
Thabo Ndlovu ○ teacher
✎ 🗑
Fatima El Idrissi ○ student
✎ 🗑
Jonas Berger ○ supervisor
✎ 🗑
Priya Nair ○ none
✎ 🗑
2 Mobile <900px — trigger closed

Benutzer active, card list · tap the bar to open

5 Ergebnisse

Selina Amrein

selina.amrein@swisstph.ch

Neu
Letzte Anmeldung 07.08.2026, 14:22
Rolle admin
✎ 🗑

Thabo Ndlovu

thabo.ndlovu@swisstph.ch

Letzte Anmeldung 05.08.2026, 09:10
Rolle teacher
✎ 🗑

Priya Nair

priya.nair@swisstph.ch

Letzte Anmeldung –
Rolle none
✎ 🗑
tap the trigger above — this panel is interactive
3 Mobile — drawer open

static reference · rounded top 18px · max-height 78dvh

Bereich wechseln

Mein Konto
Verwaltung
Hilfe
Weitere
4 Permission variant

plain user · no can_view_users / can_invite / support access — the list is genuinely short, not padded out

Mein Konto