Permissions
When the user can't do something, decide deliberately: hide the control, or disable it with a reason. Never communicate a restriction through faded opacity alone, and never leave the user guessing why an action won't work.
Disabled with a reason
<Tooltip content="You need admin access to invite members"> <Button disabled>Invite member</Button></Tooltip>The control stays keyboard-focusable while disabled, so the reason is reachable without a mouse. Where the reason must always be visible, pair the control with a Callout instead of relying only on a tooltip.
Reason and next step
Inviting members needs an admin. Ask a workspace owner to grant access.
<Callout tone="info"> Inviting members needs an admin. Ask a workspace owner to grant access.</Callout>Hide vs disable
- Hide when the user can never use the action here and cannot request access — showing it is just noise.
- Disable with a reason when the action may become available, or seeing it helps the user understand the product and how to get access.
- Give the reason and, where possible, the next step for obtaining access.
- Opacity is not an explanation. A disabled control must still be understandable.