import { Controller, useForm, useWatch } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { useAuthSuspense } from '@/features/auth'; import { Checkbox, TextArea, TextInput } from '@/components/input'; import { ModalForm } from '@/components/modal'; import { useDialogsStore } from '@/stores/dialogs'; import { type RO } from '@/utils/meta'; import { type ICreatePromptTemplateDTO, type IPromptTemplateDTO, schemaCreatePromptTemplate } from '../backend/types'; import { useAvailableTemplatesSuspense } from '../backend/use-available-templates'; import { useCreatePromptTemplate } from '../backend/use-create-prompt-template'; export interface DlgCreatePromptTemplateProps { onCreate?: (data: RO) => void; } export function DlgCreatePromptTemplate() { const { onCreate } = useDialogsStore(state => state.props as DlgCreatePromptTemplateProps); const { createPromptTemplate } = useCreatePromptTemplate(); const { items: templates } = useAvailableTemplatesSuspense(); const { user } = useAuthSuspense(); const { handleSubmit, control, register } = useForm({ resolver: zodResolver(schemaCreatePromptTemplate), defaultValues: { label: '', description: '', text: '', is_shared: false } }); const label = useWatch({ control, name: 'label' }); const isValid = label !== '' && !templates.find(template => template.label === label); function onSubmit(data: ICreatePromptTemplateDTO) { void createPromptTemplate(data).then(onCreate); } return ( void handleSubmit(onSubmit)(event)} submitInvalidTooltip='Введите уникальное название шаблона' className='cc-column w-140 max-h-120 py-2 px-6' >