UI foundation step 2. Depends on U1. Implements PAR-375 (as revised: no Inbox, Drafts or Favourites; a customisable Pinned section), PAR-394, PAR-389, PAR-362 (loading) and the shell half of PAR-387 (mobile).
Reference: the stories "Screens / Sidebar — editing pinned", "Screens / Navigation drawer (mobile)" and "Loading / *", plus Shell.tsx and LoadingScreens.tsx in the prototype.
Do
- Sidebar:
- workspace switcher with the taskl.ie mark, search and new-issue icon buttons
- My issues
- Pinned (edit mode: reorder, unpin, "Pin something…")
- Workspace: Projects, Deployments, Analytics
- Teams (collapsible, each with Triage and Issues)
- footer: avatar menu, invite, help, settings
- Pins: persist them per user. Until a backend endpoint exists, use local storage and leave a TODO that cites PAR-417 (workspaces domain).
- Top bar: a breadcrumb of the current location, with per-page actions on the right.
- Mobile (≤760px): tab bar (My issues, Issues, Triage, Projects, Search), floating create button, sidebar as a drawer, top bar showing only the current page.
- Loading:
- Delete or slim
app/(app)/loading.tsx so the shell never unmounts.
- Add per-route
loading.tsx skeletons (list, detail, board, projects, settings) using the DS Skeleton.
- Add a thin accent progress bar for route transitions.
- Remove the Board nav item (it's a view toggle on Issues), Releases, Usage (it moves to settings) and the old Settings group (settings get their own layout in PAR-384).
Acceptance
- No full-screen loading takeover anywhere. Verify on dev with the test account.
- Mobile works at 390×844, and keyboard and a11y pass.
- Lint, typecheck, tests and stories pass, with screenshots in the PR.
PR: https://github.com/ParadauxIO/taskl.ie/pull/42 (shell, Pinned sidebar, breadcrumb bar, mobile tab bar and drawer, per-route skeletons).