'use client' import type { FC } from 'react' import type { FullDocumentDetail } from '@/models/datasets' import { PencilIcon } from '@heroicons/react/24/outline' import { useTranslation } from 'react-i18next' import Button from '@/app/components/base/button' import Divider from '@/app/components/base/divider' import Loading from '@/app/components/base/loading' import { useMetadataMap } from '@/hooks/use-metadata' import DocTypeSelector, { DocumentTypeDisplay } from './components/doc-type-selector' import MetadataFieldList from './components/metadata-field-list' import { useMetadataState } from './hooks/use-metadata-state' import s from './style.module.css' export { default as FieldInfo } from './components/field-info' type MetadataProps = { docDetail?: FullDocumentDetail loading: boolean onUpdate: () => void } const Metadata: FC = ({ docDetail, loading, onUpdate }) => { const { t } = useTranslation() const metadataMap = useMetadataMap() const { docType, editStatus, showDocTypes, tempDocType, saveLoading, metadataParams, setTempDocType, setShowDocTypes, confirmDocType, cancelDocType, enableEdit, cancelEdit, saveMetadata, updateMetadataField, } = useMetadataState({ docDetail, onUpdate }) if (loading) { return (
) } return (
{/* Header: title + action buttons */}
{t('metadata.title', { ns: 'datasetDocuments' })} {!editStatus ? ( ) : !showDocTypes && (
)}
{/* Document type display / selector */} {!editStatus ? : showDocTypes ? null : ( setShowDocTypes(true)} /> )} {/* Divider between type display and fields (skip when in first-time selection) */} {(!docType && showDocTypes) ? null : } {/* Doc type selector or editable metadata fields */} {showDocTypes ? ( ) : ( )} {/* Fixed fields: origin info */} {/* Fixed fields: technical parameters */}
{metadataMap.technicalParameters.text}
) } export default Metadata