import { PermissionAction } from '@supabase/shared-types/out/constants' import { ChevronDown, Mail, UserPlus } from 'lucide-react' import { useState } from 'react' import semver from 'semver' import { useCheckPermissions } from 'hooks/misc/useCheckPermissions' import { IS_PLATFORM } from 'lib/constants' import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, TooltipContent_Shadcn_, TooltipTrigger_Shadcn_, Tooltip_Shadcn_, } from 'ui' import CreateUserModal from './CreateUserModal' import InviteUserModal from './InviteUserModal' export type AddUserDropdownProps = { projectKpsVersion?: string } const AddUserDropdown = ({ projectKpsVersion }: AddUserDropdownProps) => { const inviteEnabled = IS_PLATFORM ? semver.gte( // @ts-ignore semver.coerce(projectKpsVersion ?? 'kps-v2.5.4'), semver.coerce('kps-v2.5.3') ) : true const canInviteUsers = useCheckPermissions(PermissionAction.AUTH_EXECUTE, 'invite_user') const canCreateUsers = useCheckPermissions(PermissionAction.AUTH_EXECUTE, 'create_user') const [inviteVisible, setInviteVisible] = useState(false) const [createVisible, setCreateVisible] = useState(false) return ( <> {inviteEnabled && ( { if (canInviteUsers) setInviteVisible(true) }} >

Send invitation

{!canInviteUsers && ( You need additional permissions to invite users )}
)} { if (canCreateUsers) setCreateVisible(true) }} >

Create new user

{!canCreateUsers && ( You need additional permissions to create users )}
{inviteEnabled && } ) } export default AddUserDropdown