MotirBuilding in public
MOTIR · moooon
onMotir
You’re viewing a public project. Anyone can view it — no account needed. Sign in to submit, upvote, or comment on requests.View-only — you can’t edit work items
MOTIR-978

2.9.1 [design] Archived work items view + Restore UX

Done
Description

Estimate: 60m · Type: design

Design the archived work items view + Restore UX — the durable surface that replaces the transient Undo toast (WorkItemActionsMenu.tsx:20: "the only restore path until an archived-items view ships"). Produce/extend the design/work-items/ THREE-file asset set (notes + *.mock.html + .png) — this is the design gate for 2.9.3.

Decide placement (rung 1 = Jira). Jira surfaces archived work in a dedicated, admin-gated Archived issues view with single + bulk Restore. Decide where Motir's lives and JUSTIFY from the mirror + the shipped /issues navigator (app/(authed)/issues/_components/IssueFilterBar.tsx / IssueAppliedFilterBar / IssueListPager): a dedicated route (e.g. /issues/archived), a navigator filter/segment ("Archived"), or a project-settings page. Do not improvise — settle it here with a one-line rationale.

Design the surface:

  • A FLAT, paginated list of archived items (Motir's archive is single-node "Linear shape" — children stay live — so archived items do NOT form a tree). Reuse the issues-list row vocabulary (key, type glyph, title, status) + show when/who archived (from the archived revision).
  • A per-row Restore affordance + its confirm/feedback (Restore is reversible → an inline action with a success toast, mirroring the archive Undo, is appropriate; design it).
  • Empty state (no archived items), loading, and pagination controls (reuse IssueListPager).
  • Access: who can SEE the view vs who can RESTORE. Restore is gated assertCanEdit in the shipped service (workItemsService.unarchiveWorkItem); decide whether viewing is canBrowse while Restore stays canEdit (recommended, matches archive's canEdit gate) and design the non-editor state.

Acceptance criteria

  • design/work-items/ three files updated together (notes + new archived.mock.html (or extension) + regenerated .png).
  • Notes specify: the placement decision + rationale, the flat-list row anatomy (incl. archived-by/at), the Restore affordance + feedback, empty/loading/pagination states, the view-vs-restore access decision, and all --el-* colour + shape tokens and exact copy (i18n keys).

Context refs

  • components/issues/actions/WorkItemActionsMenu.tsx (archive + Undo restore today)
  • app/(authed)/issues/_components/ (IssueFilterBar, IssueAppliedFilterBar, IssueListPager) — the navigator to fit
  • design/work-items/design-notes.md + list.mock.html (the active-list design to mirror)
  • lib/services/workItemsService.ts unarchiveWorkItem (the assertCanEdit gate + unarchived revision)