import { useState } from 'react' import { uploadNip95Media } from '@/lib/nip95' import { t } from '@/lib/i18n' import Image from 'next/image' interface ImageUploadFieldProps { id: string label?: string | undefined value?: string | undefined onChange: (url: string) => void helpText?: string | undefined } export function ImageUploadField({ id, label, value, onChange, helpText }: ImageUploadFieldProps) { const [uploading, setUploading] = useState(false) const [error, setError] = useState(null) const handleFileSelect = async (e: React.ChangeEvent) => { const file = e.target.files?.[0] if (!file) { return } setError(null) setUploading(true) try { const media = await uploadNip95Media(file) if (media.type === 'image') { onChange(media.url) } else { setError(t('presentation.field.picture.error.imagesOnly')) } } catch (e) { setError(e instanceof Error ? e.message : t('presentation.field.picture.error.uploadFailed')) } finally { setUploading(false) } } const displayLabel = label ?? t('presentation.field.picture') const displayHelpText = helpText ?? t('presentation.field.picture.help') return (
{value && (
{t('presentation.field.picture')}
)}
{value && ( )}
{error && (

{error}

)} {displayHelpText && (

{displayHelpText}

)}
) }