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 (
e.stopPropagation()} >

{t('users.modal.createUser')}

{t('users.modal.advancedAuthSubtitle') || 'with Advanced Authentication'}

{/* Username Field */}
setFormData({ ...formData, username: e.target.value })} className="w-full px-4 py-3 bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded-lg text-white placeholder-bambu-gray focus:outline-none focus:ring-2 focus:ring-bambu-green/50 focus:border-bambu-green transition-colors" placeholder={t('users.form.usernamePlaceholder')} autoComplete="username" required />
{/* Email Field */}
setFormData({ ...formData, email: e.target.value })} className="w-full px-4 py-3 bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded-lg text-white placeholder-bambu-gray focus:outline-none focus:ring-2 focus:ring-bambu-green/50 focus:border-bambu-green transition-colors" placeholder={t('users.form.emailPlaceholder') || 'user@example.com'} required />
{/* Info box about auto-generated password */}

{t('users.form.autoGeneratedPassword') || 'A secure password will be automatically generated and emailed to the user.'}

{/* Groups Field */}
{groups.map(group => ( ))} {groups.length === 0 && (

{t('users.noGroupsAvailable')}

)}
{/* Action Buttons */}
); }