'use client'; import { useRef, useState } from 'react'; import { Input } from '@/components/ui/input'; import { Button } from '@/components/ui/button'; import { useI18n } from '@/lib/hooks/use-i18n'; interface ImagePickerProps { readonly onPick: (src: string) => void; } function fileToDataUrl(file: File): Promise { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onloadend = () => resolve(reader.result as string); reader.onerror = reject; reader.readAsDataURL(file); }); } export function ImagePicker({ onPick }: ImagePickerProps) { const { t } = useI18n(); const inputRef = useRef(null); const [url, setUrl] = useState(''); async function handleFiles(files: FileList | null) { const file = files?.[0]; if (!file || !file.type.startsWith('image/')) return; try { onPick(await fileToDataUrl(file)); } catch (err) { console.error('ImagePicker: failed to read image file', err); } } return (
void handleFiles(e.target.files)} />
{t('edit.insert.imageOr')}
setUrl(e.target.value)} placeholder={t('edit.insert.imageUrlPlaceholder')} />
); }