Components

SharePopover

A Share/permissions popover — Members/Automations tabs, workspace access, per-member roles.

Available since@crisp-ui-kit/crisp@0.57.4

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/crisp

Props

Prop

Type

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

  • advancedSharing is 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.
  • onClearPermissions is a real, ungated action, unlike advancedSharing — wire it to reset the workspace/member roles a consumer's own backend tracks.
  • Roles are consumer-defined vocabularies. workspaceAccessOptions, memberRoleOptions and automationRoleOptions are each a plain SelectOption[] — crisp has no fixed Admin/Editor/Viewer enum of its own, since the exact role set is a consumer's own permissions model.
  • addAutomationDisabled matches Attio's own measured behaviour: "Add" is disabled on an empty automation search.

On this page