import React from 'react'; import { msg } from '@lingui/core/macro'; import { useLingui } from '@lingui/react'; import { Trans } from '@lingui/react/macro'; import { InfoIcon } from 'lucide-react'; import { DOCUMENT_AUTH_TYPES } from '@documenso/lib/constants/document-auth'; import { DocumentAccessAuth } from '@documenso/lib/types/document-auth'; import { MultiSelect, type Option } from '@documenso/ui/primitives/multiselect'; import { Tooltip, TooltipContent, TooltipTrigger } from '@documenso/ui/primitives/tooltip'; export interface DocumentGlobalAuthAccessSelectProps { value?: string[]; defaultValue?: string[]; onValueChange?: (value: string[]) => void; disabled?: boolean; placeholder?: string; } export const DocumentGlobalAuthAccessSelect = ({ value, defaultValue, onValueChange, disabled, placeholder, }: DocumentGlobalAuthAccessSelectProps) => { const { _ } = useLingui(); // Convert auth types to MultiSelect options const authOptions: Option[] = [ { value: '-1', label: _(msg`No restrictions`), }, ...Object.values(DocumentAccessAuth).map((authType) => ({ value: authType, label: DOCUMENT_AUTH_TYPES[authType].value, })), ]; // Convert string array to Option array for MultiSelect const selectedOptions = (value ?.map((val) => authOptions.find((option) => option.value === val)) .filter(Boolean) as Option[]) || []; // Convert default value to Option array const defaultOptions = (defaultValue ?.map((val) => authOptions.find((option) => option.value === val)) .filter(Boolean) as Option[]) || []; const handleChange = (options: Option[]) => { const values = options.map((option) => option.value); onValueChange?.(values); }; return ( ); }; DocumentGlobalAuthAccessSelect.displayName = 'DocumentGlobalAuthAccessSelect'; export const DocumentGlobalAuthAccessTooltip = () => (

Document access

The authentication methods required for recipients to view the document.

Multiple access methods can be selected.

  • Require account - The recipient must be signed in to view the document
  • No restrictions - The document can be accessed directly by the URL sent to the recipient
);