SharePopover
A Share/permissions popover — Members/Automations tabs, workspace access, per-member roles.
Measured live on app.attio.com (both an object table's and a List's own "Share" trigger,
techpartners workspace): Members/Automations pill tabs, a "Workspace access" row (avatar +
label + a "Read and write ⌄"-style role select), an optional plan-gated upsell slot, a "Clear
permissions" action, an "Individual members" list (one row per member, its own role select),
and — on the Automations tab — a search box + role select + "Add" row. Both tabs share a
trailing "Learn more about permissions" link.
Its own floating shell, not the generic Popover: the measured surface
is 440px wide, past Popover's 360px content cap.
Installation
npm install @crisp-ui-kit/crispProps
ShareMember = { id, name, email?, avatar?, access, accessDisabled? } — access is one of
the row's own memberRoleOptions; accessDisabled greys the row's role select without hiding
it (Attio disables, but still shows, the signed-in user's own row on the Pro-gated surface).
Notes
advancedSharingis a slot for the plan-gated upsell card ("Workspace and advanced permissions are not supported on your current plan" + Upgrade, or the Pro "Advanced sharing" card) — crisp has no billing concept, so it never renders this content itself. Omit it entirely on an ungated plan.onClearPermissionsis a real, ungated action, unlikeadvancedSharing— wire it to reset the workspace/member roles a consumer's own backend tracks.- Roles are consumer-defined vocabularies.
workspaceAccessOptions,memberRoleOptionsandautomationRoleOptionsare each a plainSelectOption[]— crisp has no fixed Admin/Editor/Viewer enum of its own, since the exact role set is a consumer's own permissions model. addAutomationDisabledmatches Attio's own measured behaviour: "Add" is disabled on an empty automation search.