Access control — 375 px, English · עברית

Frames 3a–3b at a phone width. One card per grant with the role select full-width, the 409 last-owner refusal inline on that card, the role matrix as a per-role list, and “Add person” as a BottomSheet.

en · ltr · 375 · access panel

FuzeFront
DO

Access

+ Add person
Marc Lindqvist marc@northwind.example · by Dana Okafor, 5 Aug 2026
Camille Roy camille@northwind.example · by Dana Okafor, 6 Aug 2026
Priya Raman priya@northwind.example · by Marc Lindqvist, 7 Aug 2026

en · ltr · 375 · 409 last owner

FuzeFront
DO

Access

Dana Okafor only owner dana@northwind.example · creator
Marc Lindqvist marc@northwind.example

What each role can do

list-ownerread · values · translate · list · manage access
list-editorread · values · translate · list
list-contributorread · values
list-translatorread · translate
list-viewerread

he · rtl · 375 · access panel

FuzeFront
DO
רשימות בחירה · מדינות

הרשאות

+ הוספת אדם
Dana Okafor dana@northwind.example
Camille Roy camille@northwind.example

en · ltr · 375 · add person

FuzeFront
DO

States at 375 px

Same states as frames 3a–3b.

loading

empty

Only you have explicit access

Everyone in the organization can already read this list.

+ Add person

error

Couldn't load access

No grants have been changed.

403 — read-only

Changing access needs manage_access (list-owner or org admin).

Marc Lindqvistlist-editor

Rules the implementation must keep

Test hooks: [data-frame='17-mobile-access-control'] · [data-device='375'] · [data-panel='access-mobile'] · [data-locale='he'][data-dir='rtl'] · [data-grant='usr_01h455vb4pex5vsknk084sn02q'] · [data-sole-owner='true'] · [data-role-select] · [data-action='revoke-access'] · [data-action='add-access'] · [data-case='last-owner'] · [data-error='CONFLICT'] · [data-panel='role-matrix'] · [data-dialog='add-access'][data-presentation='bottom-sheet'] · [data-already-granted='true'] · [data-control='role'] · [data-state='loading'] · [data-state='empty'] · [data-state='error'] · [data-error='FORBIDDEN'] · [data-rules='mobile-access-control']
Playwright drives the real panel at { viewport: 375×812, locale: en | he-IL }: no horizontal scroll, demoting the sole owner shows the 409 inside that grant's card with the select reverted, and every Remove button is ≥ 44 px.
Tokens only — no raw hex, spacing or type outside tokens.css / frame.css / mobile.css.

Review · selection-lists approve or reject each flow ↓
list-managementapproved · izzywdev
translation-workbenchapproved · izzywdev
access-controlapproved · izzywdev
pickerapproved · izzywdev