import { useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { X, Plus, Loader2, Users as UsersIcon } from 'lucide-react'; import { Card, CardContent, CardHeader } from './Card'; import { Button } from './Button'; import type { Group, UserCreate } from '../api/client'; interface AdvancedAuthFormData extends UserCreate { group_ids: number[]; confirmPassword: string; email?: string; } interface CreateUserAdvancedAuthModalProps { formData: AdvancedAuthFormData; setFormData: (data: AdvancedAuthFormData) => void; groups: Group[]; onClose: () => void; onCreate: () => void; isCreating: boolean; isCreateButtonDisabled: boolean; } export function CreateUserAdvancedAuthModal({ formData, setFormData, groups, onClose, onCreate, isCreating, isCreateButtonDisabled, }: CreateUserAdvancedAuthModalProps) { const { t } = useTranslation(); // Close modal on Escape key useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { if (e.key === 'Escape') { onClose(); } }; window.addEventListener('keydown', handleKeyDown); return () => window.removeEventListener('keydown', handleKeyDown); }, [onClose]); const toggleGroup = (groupId: number) => { setFormData({ ...formData, group_ids: formData.group_ids.includes(groupId) ? formData.group_ids.filter(id => id !== groupId) : [...formData.group_ids, groupId], }); }; return (
{t('users.modal.advancedAuthSubtitle') || 'with Advanced Authentication'}
{t('users.form.autoGeneratedPassword') || 'A secure password will be automatically generated and emailed to the user.'}
{t('users.noGroupsAvailable')}
)}