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 { RecipientActionAuth } 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 RecipientActionAuthSelectProps { value?: string[]; defaultValue?: string[]; onValueChange?: (value: string[]) => void; disabled?: boolean; placeholder?: string; } export const RecipientActionAuthSelect = ({ value, defaultValue, onValueChange, disabled, placeholder, }: RecipientActionAuthSelectProps) => { const { _ } = useLingui(); // Convert auth types to MultiSelect options const authOptions: Option[] = [ { value: '-1', label: _(msg`Inherit authentication method`), }, ...Object.values(RecipientActionAuth) .filter((auth) => auth !== RecipientActionAuth.ACCOUNT) .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 (