import { MDXEditor, type MDXEditorMethods, type MDXEditorProps } from '@mdxeditor/editor'; import type { CSSProperties, Ref } from 'react'; import { Label } from './Label'; type MDXEditorFieldProps = { label?: string; markdown: string; readOnly?: boolean; disabled?: boolean; onChange?: (markdown: string) => void; editorRef?: Ref; themeClassName: string; plugins: MDXEditorProps['plugins']; contentEditableClassName?: string; className?: string; editorWrapperClassName?: string; editorWrapperStyle?: CSSProperties; editorClassName?: string; error?: string; }; export function MDXEditorField({ label, markdown, readOnly = false, disabled = false, onChange, editorRef, themeClassName, plugins, contentEditableClassName = 'mdx-content', className = '', editorWrapperClassName = 'post-mdx-editor mt-2 overflow-hidden rounded-xl border', editorWrapperStyle, editorClassName = '', error, }: Readonly) { const resolvedEditorClassName = `${themeClassName} ${editorClassName}`.trim(); const editorModeKey = disabled || readOnly ? 'read-only' : 'editable'; const resolvedEditorWrapperClassName = `${editorWrapperClassName} ${disabled ? 'post-mdx-editor--disabled' : 'post-mdx-editor--enabled'}`.trim(); const resolvedEditorWrapperStyle: CSSProperties = { backgroundColor: disabled ? 'var(--field-disabled-bg)' : 'var(--field-bg)', borderColor: disabled ? 'var(--field-disabled-border)' : 'var(--field-border)', ...editorWrapperStyle, }; return (
{label ? ( ) : null}
{error ? ( ) : null}
); }