import { useState, useEffect, useCallback } from 'react'; import { Stack, Title, Tabs, Group, Button, TextInput, Textarea, ActionIcon, Modal, Text, Select, Paper, Loader, Center, Alert, } from '@mantine/core'; import { useForm } from '@mantine/form'; import { useDisclosure } from '@mantine/hooks'; import { IconEdit, IconTrash, IconPlus, IconBriefcase, IconMap, IconCertificate, IconInfoCircle } from '@tabler/icons-react'; import { useTranslation } from 'react-i18next'; import { notify, useErrorHandler, AdvancedTable, useServerTable, type AdvancedColumn, } from '@ema-platform/ui'; import { LocationPage } from '../../location/pages/LocationPage'; import { CertificationPage } from '../../certification/pages/CertificationPage'; import { useGetOrganizationsQuery, useGetProfessionsQuery, useCreateProfessionMutation, useUpdateProfessionMutation, useDeleteProfessionMutation, } from '../api/configuration-api'; import type { Profession } from '../types/configuration'; interface ProfFormValues { nameEn: string; nameAm: string; descEn: string; descAm: string; departmentId: string; } interface ProfFormProps { editingProf: Profession | null; deptOptions: { value: string; label: string }[]; isSubmitting: boolean; onSubmit: (values: ProfFormValues, isEdit: boolean) => void; onCancel: () => void; } function ProfessionForm({ editingProf, deptOptions, isSubmitting, onSubmit, onCancel }: ProfFormProps) { const { t } = useTranslation(); const form = useForm({ initialValues: { nameEn: '', nameAm: '', descEn: '', descAm: '', departmentId: '' }, validate: { nameEn: (v) => (!v ? t('configuration.validation.nameEnRequired') : null), nameAm: (v) => (!v ? t('configuration.validation.nameAmRequired') : null), departmentId: (v) => (!v ? t('configuration.validation.departmentRequired') : null), }, }); useEffect(() => { if (editingProf) { form.setValues({ nameEn: editingProf.name.en, nameAm: editingProf.name.am, descEn: editingProf.description.en ?? '', descAm: editingProf.description.am ?? '', departmentId: editingProf.departmentId, }); } }, [editingProf]); const handleSubmit = form.onSubmit((values) => onSubmit(values, !!editingProf)); return (