import { Box, Group, SegmentedControl, Text, TextInput } from '@mantine/core'; import { FormEvent } from 'react'; import { useTranslation } from 'react-i18next'; import BackToDashboard from '~/components/common/navigation/back_to_dashboard'; import useSearchParam from '~/hooks/use_search_param'; import { FormLayout, FormLayoutProps } from '~/layouts/form_layout'; import { Visibility } from '~/types/app'; export type FormCollectionData = { name: string; description: string | null; visibility: Visibility; }; interface FormCollectionProps extends FormLayoutProps { data: FormCollectionData; errors?: Record>; disableInputs?: boolean; setData: (name: string, value: any) => void; handleSubmit: () => void; } export function MantineFormCollection({ data, errors, disableInputs = false, setData, handleSubmit, ...props }: FormCollectionProps) { const { t } = useTranslation('common'); const collectionId = Number(useSearchParam('collectionId')); const onSubmit = (event: FormEvent) => { event.preventDefault(); handleSubmit(); }; return ( setData('name', target.value)} value={data.name} readOnly={disableInputs} error={errors?.name} mt="md" autoFocus required /> setData('description', target.value)} value={data.description ?? undefined} readOnly={disableInputs} error={errors?.description} mt="md" /> {t('form.visibility')} setData('visibility', value as Visibility)} value={data.visibility} style={{ minWidth: 'fit-content' }} readOnly={disableInputs} /> {data.visibility === Visibility.PUBLIC && ( {t('form.visibility-warning')} )} ); }