6.2.4 Filters directory — the project-level manage surface (search, pagination, actions by role, built-ins, delete-with-dependents warning)
Estimate: 30m · Depends on: 6.2.1, 6.2.2
The directory, per the 6.2.2 design (which names the route), on the 6.2.1 list/write API.
Build: the paginated, server-searched table — name (→ applies the filter on /issues) / owner / visibility / star count + my-star toggle / actions; row actions gated by the matrix (rename + edit details + visibility for owner/admin; change owner admin-only; delete with the dependents warning — the confirm enumerates subscriptions [and reserves the 6.3 widget line] before cascading); built-in defaults listed read-only with their designed mark; empty, loading, error, and no-access states per the design. Strings via next-intl.
A11y: a real table with row-action menus keyboard-complete; the delete confirm names consequences in text; extends the strict sweep.
Acceptance criteria
- The directory paginates + searches server-side (asserted: no unbounded fetch); name-click applies on /issues; star toggles update the aggregate.
- Every row action enforces the matrix in the UI AND re-checks server-side (403 paths tested); change-owner is admin-only; delete shows the dependents warning and cascades subscriptions.
- Built-ins are present, read-only, and unstarrable-or-starrable per the design decision recorded in the notes; empty/no-access states render designed.
- Axe-clean; token tiers only; next-intl; integration tests over the table + actions; coverage ≥90%.
Context refs
design/work-items/saved-filters.mock.html+ notes (6.2.2) — THE authority (incl. the route placement)- 6.2.1 (list reads + matrix + dependents read); the shell nav conventions (1.5) for mounting the route
- The verified Jira directory columns + admin powers in the Story 6.2 description
- The i18n threading pattern