Components

Record Sharing

Record Sharing component.

Client Only

Installation

pnpm dlx @docyrus/cli add @docyrus/ui-record-sharing
UI Primitives(10 components)
npx shadcn@latest add avatar badge button command popover scroll-area select separator skeleton tooltip

Usage

import {
  RecordSharingButton
} from "@docyrus/ui/components/record-sharing";
import type {
  RecordSharingButtonProps,
  RecordSharingPanelProps,
  RecordSharingItemProps,
  SharedEntity,
  SharingSearchResult,
  SharingResourceType,
  SharingPermissionValue,
  SharingPermissionPresetValue,
  PermissionPresetOption
} from "@docyrus/ui/components/record-sharing";

<RecordSharingButton />

API Reference

ComponentPropTypeDefault
RecordSharingclassNamestring—

Components

ComponentDescription
RecordSharingButtonPublic export
RecordSharingItemInternal — record-sharing-item.tsx
RecordSharingPanelInternal — record-sharing-panel.tsx

Type Exports

TypeDescription
RecordSharingButtonProps—
RecordSharingPanelProps—
RecordSharingItemProps—
SharedEntity—
SharingSearchResult—
SharingResourceType—
SharingPermissionValue—
SharingPermissionPresetValue—
PermissionPresetOption—

Type Reference

RecordSharingButtonProps

FieldTypeDescription
refRef<HTMLDivElement>—
variant'button' | 'avatar-group'—
maxAvatarsnumber—
size'sm' | 'default' | 'lg'—
align'start' | 'center' | 'end'—
side'top' | 'right' | 'bottom' | 'left'—
openboolean—
onOpenChange(open: boolean) => void—
disabledboolean—
triggerClassNamestring—

RecordSharingPanelProps

FieldTypeDescription
sharedEntitiesSharedEntity[]—
resourcesSharingResourceType[]—
permissionPresetsPermissionPresetOption[]—
defaultPermissionnumber—
onSearch(query: string) => Promise<SharingSearchResult[]> | SharingSearchResult[]—
onAdd(entities: Array<{ id: string; type: SharingResourceType; permission: number }>) => void | Promise<void>—
onPermissionChange(entityId: string, permission: number) => void | Promise<void>—
onRemove(entityId: string) => void | Promise<void>—
isLoadingboolean—
isSearchingboolean—
isAddPendingboolean—
pendingPermissionChangesRecord<string, boolean>—
pendingRemovalsRecord<string, boolean>—
titlestring—
maxHeightnumber | string—
classNamestring—

RecordSharingItemProps

FieldTypeDescription
entitySharedEntity—
permissionPresetsPermissionPresetOption[]—
onPermissionChange(entityId: string, permission: number) => void | Promise<void>—
onRemove(entityId: string) => void | Promise<void>—
isPermissionChangePendingboolean—
isRemovePendingboolean—

SharedEntity

FieldTypeDescription
idstring—
namestring—
descriptionstring—
typeSharingResourceType—
avatarUrlstring | null—
initialsstring—
permissionnumber—

SharingSearchResult

FieldTypeDescription
idstring—
namestring—
descriptionstring—
typeSharingResourceType—
avatarUrlstring | null—
initialsstring—

SharingResourceType

"user" | "team" | "role" | "tenant" | "public"

PermissionPresetOption

FieldTypeDescription
labelstring—
valuenumber—
descriptionstring—

On this page