import { PermissionAction } from '@supabase/shared-types/out/constants' import { ChevronDown, Mail, UserPlus } from 'lucide-react' import { parseAsBoolean, useQueryState } from 'nuqs' import { DropdownMenuItemTooltip } from 'components/ui/DropdownMenuItemTooltip' import { useAsyncCheckPermissions } from 'hooks/misc/useCheckPermissions' import { useIsFeatureEnabled } from 'hooks/misc/useIsFeatureEnabled' import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuTrigger } from 'ui' import CreateUserModal from './CreateUserModal' import InviteUserModal from './InviteUserModal' export const AddUserDropdown = () => { const showSendInvitation = useIsFeatureEnabled('authentication:show_send_invitation') const { can: canInviteUsers } = useAsyncCheckPermissions( PermissionAction.AUTH_EXECUTE, 'invite_user' ) const { can: canCreateUsers } = useAsyncCheckPermissions( PermissionAction.AUTH_EXECUTE, 'create_user' ) const [inviteVisible, setInviteVisible] = useQueryState( 'invite', parseAsBoolean.withDefault(false).withOptions({ history: 'push', clearOnDefault: true }) ) const [createVisible, setCreateVisible] = useQueryState( 'new', parseAsBoolean.withDefault(false).withOptions({ history: 'push', clearOnDefault: true }) ) return ( <> {showSendInvitation && ( { if (canInviteUsers) setInviteVisible(true) }} tooltip={{ content: { side: 'left', text: 'You need additional permissions to invite users' }, }} >

Send invitation

)} { if (canCreateUsers) setCreateVisible(true) }} tooltip={{ content: { side: 'left', text: 'You need additional permissions to create users' }, }} >

Create new user

) }