MOTIR-297Done
5.4.7 Design — Components admin page (`design/projects/components.mock.html`: list + create/edit + default assignee + move-or-remove delete)
Estimate: 35m
The design asset for the settings surface (the design-gate NONE-exists case — the projects area covers Members+Access and, in-flight, Fields). Output: design/projects/components.mock.html + PNG + a design-notes section. Render checklist + AA + dark parity. Mirror: Jira's Project settings → Components (company-managed — the verified shape source).
Specify, panel by panel:
- Entry — the "Components" card on the settings hub (slotting after Estimation, before Members — the domain order) + the page shell (the 6.4.1 settings chrome).
- Component list — name-ordered rows: name, description (truncating), default assignee (Avatar + name or muted "None"), item count, row actions (edit, delete). Empty state ("No components yet" + Add component).
- Add/edit — name (required, case-insensitive-unique inline error), description, default assignee (the member picker with an explicit "None" row + the helper line explaining the at-create rule).
- Delete dialog — the move-or-remove choice (the verified Jira flow): when in use, the dialog shows the item count and forces a radio choice — "Move N work items to…" (a component picker excluding self) or "Remove the component from N work items" — issues untouched either way; unused components confirm simply.
--el-dangerconfirm + ghost cancel (the house destructive grammar). - Read-only — the non-admin state; loading skeleton;
ErrorState.
Acceptance criteria
- The mockup + PNG + notes exist, composed from shipped primitives + token tiers; render checklist + AA + dark parity pass.
- Panels cover: the hub card, the list (populated/empty), add/edit with the default-assignee picker + helper copy, the move-or-remove delete dialog (both branches + counts), and read-only/loading/error.
design-notes.mdnames primitives + copy strings and records the simplification (nullable default assignee; lead = documented extension).- No improvised primitive; token needs recorded.
Context refs
design/projects/access-members.mock.html+ notes (6.4.1) and the in-flight 5.3.4 fields page — the settings grammar to matchapp/(authed)/settings/project/page.tsx(the hub card list + slot)- The verified Jira component rules in the Story 5.4 description
- Findings #35/#54; the design-mockup render checklist