import { Avatar } from '@langgenius/dify-ui/avatar' import { cn } from '@langgenius/dify-ui/cn' import { Popover, PopoverClose, PopoverContent, PopoverTitle, PopoverTrigger, } from '@langgenius/dify-ui/popover' import { RadioGroup, RadioItem } from '@langgenius/dify-ui/radio' import { useAtomValue } from 'jotai' import { useTranslation } from 'react-i18next' import { userProfileAtom } from '@/context/account-state' import { PermissionLevel } from '@/models/permission' export type CredentialPermission = | typeof PermissionLevel.onlyMe | typeof PermissionLevel.allTeamMembers type PermissionSelectorProps = { disabled?: boolean permission: CredentialPermission onChange: (permission: CredentialPermission) => void } const optionClassName = 'flex w-full touch-manipulation cursor-pointer items-center gap-x-1 rounded-lg border-none bg-transparent px-2 py-1 text-left outline-hidden hover:bg-state-base-hover focus-visible:ring-2 focus-visible:ring-state-accent-solid' const PermissionSelector = ({ disabled, permission, onChange }: PermissionSelectorProps) => { const { t } = useTranslation() const userProfile = useAtomValue(userProfileAtom) const isOnlyMe = permission === PermissionLevel.onlyMe const isAllTeamMembers = permission === PermissionLevel.allTeamMembers const permissionLabel = t(($) => $['auth.whoCanUse'], { ns: 'plugin' }) return ( {isOnlyMe && ( <>
{t(($) => $['form.permissionsOnlyMe'], { ns: 'datasetSettings' })}
)} {isAllTeamMembers && ( <>
{t(($) => $['form.permissionsAllMember'], { ns: 'datasetSettings' })}
)}
{permissionLabel} value={permission} onValueChange={onChange} aria-label={permissionLabel} className="flex-col items-stretch gap-0 p-1" > value={PermissionLevel.onlyMe} />} className={optionClassName} >
{t(($) => $['form.permissionsOnlyMe'], { ns: 'datasetSettings' })}
{isOnlyMe && (
value={PermissionLevel.allTeamMembers} />} className={optionClassName} >
{t(($) => $['form.permissionsAllMember'], { ns: 'datasetSettings' })}
{isAllTeamMembers && (
) } export default PermissionSelector