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 (

{error}

) } 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 (

Publier un nouvel article

) }