import React from 'react'
import type { ArticleDraft } from '@/lib/articlePublisher'
import { ArticleField } from './ArticleField'
import { ArticleFormButtons } from './ArticleFormButtons'
import { CategorySelect } from './CategorySelect'
interface ArticleEditorFormProps {
draft: ArticleDraft
onDraftChange: (draft: ArticleDraft) => void
onSubmit: (e: React.FormEvent) => void
loading: boolean
error: string | null
onCancel?: () => void
}
function CategoryField({
value,
onChange,
}: {
value: ArticleDraft['category']
onChange: (value: ArticleDraft['category']) => void
}) {
return (
)
}
function ErrorAlert({ error }: { error: string | null }) {
if (!error) {
return null
}
return (
)
}
const ArticleFieldsLeft = ({
draft,
onDraftChange,
}: {
draft: ArticleDraft
onDraftChange: (draft: ArticleDraft) => void
}) => (
onDraftChange({ ...draft, category: value })} />
onDraftChange({ ...draft, title: value as string })}
required
placeholder="Entrez le titre de l'article"
/>
onDraftChange({ ...draft, preview: value as string })}
required
type="textarea"
rows={4}
placeholder="Cet aperçu sera visible par tous gratuitement"
helpText="Ce contenu sera visible par tous"
/>
)
const ArticleFieldsRight = ({
draft,
onDraftChange,
}: {
draft: ArticleDraft
onDraftChange: (draft: ArticleDraft) => void
}) => (
onDraftChange({ ...draft, content: value as string })}
required
type="textarea"
rows={8}
placeholder="Ce contenu sera chiffré et envoyé aux lecteurs qui paient"
helpText="Ce contenu sera chiffré et envoyé comme message privé après paiement"
/>
onDraftChange({ ...draft, zapAmount: value as number })}
required
type="number"
min={1}
helpText="Montant en satoshis pour débloquer le contenu complet"
/>
)
export function ArticleEditorForm({
draft,
onDraftChange,
onSubmit,
loading,
error,
onCancel,
}: ArticleEditorFormProps) {
return (
)
}