Navigation

Five tabs. One press to switch.

Every screen in Ordentus belongs to one of five tabs. The tab bar sits at the bottom and stays visible on root and pushed screens — it disappears only when a .large sheet or a full-screen cover is up. Tap a tab to switch root; tap again to scroll its current stack to the top.

Within a tab

How a single tab's stack behaves.

TAP TABSwitch root. Scroll position and stack are preserved per tab.
TAP AGAINScrolls the current screen to the top. From a pushed detail, pops back to root.
TAP ROWPush detail. Slides in from the right; the tab bar stays.
+ / EDITPresent a sheet. .medium for quick edits, .large for full editors. Tab bar hides only at .large.
SWIPE ←Pop to parent. Apple-standard edge-swipe.
LONG-PRESSContext menu on events, todos, goals, links. Haptic .impact(.light) on lift.
SWIPE →Row actions: complete, hide, restore, delete. Per the spec.
PULL ↓Pull-to-refresh on every list and feed surface.

Across the app

When does navigation leave the tab bar behind?

SHEETS.medium = quick-add to-do, wake schedule, share-link create, add-feed.
.large = event editor, share-link inspector, HealthKit intro, import preview. Tab bar hides only here.
FULL COVEROnboarding only. Welcome → Credentials → HealthKit → Sync → Tour. Returns to the tab bar at "Today".
MODAL ALERTReserved for destructive / auth-recovery. Session expired, sign out everywhere, empty trash, rotate token, disable user.
CONTEXT MENULong-press lifts the object onto a blurred backdrop. Same source-of-truth as swipe actions, plus Share.
DEEP LINKA share URL or .ics file opens the matching tab. Health-sync push wakes the app in the background; no UI.
SESSION GONE401 anywhere → modal alert ("Session expired") → back to the Credentials screen. Tab state is preserved.

Where everything lives

Each tab's full nav stack. push slides in, sheet presents up, modal is an alert dialog.

PUSH slides in from right · tab bar visible SHEET presents up · medium or large detent MODAL alert dialog · destructive or auth

The tab bar

Frosted glass over content. Active tab in iOS blue. The same component on every screen — never duplicated, never restyled per-tab.

Anatomy

HEIGHT49pt + bottom safe area. Glass material blurs whatever scrolls under.
ICONSSF Symbols geometry, currentColor. Active = filled feel via stroke 2.4; inactive = stroke 2.
LABELS11pt, weight 600. Always shown — no hide-on-scroll. Dynamic Type respected.
BADGESRed disc for unread counts. Settings shows it when Admin has new sessions or logs.

Why 5 and not 4: per the brief, Share is a first-class action — generate-link is the brand's social surface. Settings keeps Admin out of the main flow.