5.3.6 Fields admin UI — Project settings → Fields (list/reorder, create/edit, options editor, caps + delete-with-count confirm)
Estimate: 35m · Depends on: 5.3.2, 5.3.4
The settings surface: app/(authed)/settings/project/fields/page.tsx (+ the new hub card), per the 5.3.4 design, on the 5.3.2 routes. The 6.4 members page is the structural template (server component + admin gate + read-only degradation).
Build: the hub card; the field list (type glyph, label, value-count gloss, drag-reorder via the shipped dnd pattern from board settings, row actions); add/edit field (label, five-type picker, description; type immutable; select reveals options); the options editor (reorder/rename inline, archive toggle, delete-when-unused with the in-use tooltip, add w/ 55-cap); the delete-field confirm naming the value count (from the 5.3.2 read); the 50-cap state; empty / loading / error; the non-admin read-only state. Mutations via server actions → customFieldsService → router.refresh(); i18n strings under a new settings.customFields namespace (the en-byte-identical i18n convention).
A11y: reorder is keyboard-operable (the board-settings dnd precedent), destructive confirms focus-managed, the options editor rows labelled; extends the settings-route axe sweep.
Acceptance criteria
- The page matches
fields.mock.htmlpanel-for-panel (list, add/edit, options editor incl. archive/delete split + tooltips, both cap states, the value-count delete confirm, empty/read-only states). - All mutations round-trip (create each type, rename, reorder persists across reload, option lifecycle, field delete) honouring the admin gate — a non-admin member sees read-only, a viewer/none is gated per 6.4.
- Keyboard-complete reorder + editors; the strict axe sweep over the page is clean; colour/shape only through the token tiers; strings via next-intl.
- Component/integration tests over the action wiring + gate rendering;
pnpm test:coverageholds.
Context refs
design/projects/fields.mock.html+ notes (5.3.4) — THE layout authorityapp/(authed)/settings/project/members/page.tsx(6.4) — the page + gate template; the hubpage.tsxcard list- 5.3.2 routes/actions; the board-settings dnd reorder (3.6) for the handle pattern
messages/en.jsonsettings.*namespace conventions (the i18n threading pattern memory)