import React from 'react'; import { useNavigate } from 'react-router-dom'; import { useMutation } from '@tanstack/react-query'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; import { ArrowRightIcon, BuildingOffice2Icon } from '@heroicons/react/24/outline'; import { toast } from 'sonner'; import { api } from '../lib/api'; import type { ApiResponse } from '../lib/api'; import MobileInput from '../components/ui/MobileInput'; import { iranMobileSchema } from '../lib/utils'; import { latinDigitsField } from '../lib/forms'; const schema = z.object({ owner_mobile: iranMobileSchema, name: z.string().min(2, 'نام کلینیک حداقل ۲ کاراکتر'), telephone: z.string().max(20).optional().or(z.literal('')), address: z.string().max(500).optional().or(z.literal('')), info: z.string().max(2000).optional().or(z.literal('')), }); type FormValues = z.infer; interface ClinicCreated { uuid: string; name: string; is_active: boolean } export default function ClinicFormPage() { const navigate = useNavigate(); const { register, handleSubmit, formState: { errors, isSubmitting } } = useForm({ resolver: zodResolver(schema) }); const mutation = useMutation, Error, FormValues>({ mutationFn: (body) => api.post('/api/v1/admin/clinic', body), onSuccess: (res) => { toast.success(`کلینیک "${res?.data?.name}" ایجاد شد`); navigate('/admin/clinics'); }, onError: (err) => toast.error(err.message ?? 'خطا در ایجاد کلینیک'), }); return (

افزودن کلینیک جدید

mutation.mutate(v))} style={{ display: 'flex', flexDirection: 'column', gap: 20 }}>
{errors.owner_mobile && {errors.owner_mobile.message}} اگر این موبایل در سیستم نباشد، کاربر جدید ساخته می‌شود
{errors.name && {errors.name.message}}