import { PermissionAction } from '@supabase/shared-types/out/constants' import { ChevronDown, Mail, UserPlus } from 'lucide-react' import { parseAsBoolean, useQueryState } from 'nuqs' import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuTrigger } from 'ui' import CreateUserModal from './CreateUserModal' import InviteUserModal from './InviteUserModal' import { DropdownMenuItemTooltip } from '@/components/ui/DropdownMenuItemTooltip' import { ShortcutBadge } from '@/components/ui/ShortcutBadge' import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions' import { useIsFeatureEnabled } from '@/hooks/misc/useIsFeatureEnabled' import { SHORTCUT_IDS } from '@/state/shortcuts/registry' 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

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

Create new user

{canCreateUsers && ( )}
) }