import { useEffect, useState } from 'react'; import { PollIcon, PlusIcon, SpinnerIcon, TrashIcon } from './icons'; import { Modal } from './Modal'; interface Props { open: boolean; sending: boolean; error: string | null; onClose: () => void; onSubmit: (question: string, options: string[]) => Promise; } export function PollComposerDialog({ open, sending, error, onClose, onSubmit }: Props) { const [question, setQuestion] = useState(''); const [options, setOptions] = useState(['', '']); useEffect(() => { if (!open) return; setQuestion(''); setOptions(['', '']); }, [open]); const filledOptions = options.map((option) => option.trim()).filter(Boolean); const canSubmit = question.trim().length > 0 && filledOptions.length >= 2 && !sending; return (
{ e.preventDefault(); if (!canSubmit) return; void onSubmit(question, options); }} >

Antworten

{options.map((option, idx) => (
{idx + 1} { const value = e.target.value; setOptions((prev) => prev.map((item, itemIdx) => (itemIdx === idx ? value : item)), ); }} maxLength={80} placeholder={'Antwort ' + (idx + 1)} className="min-w-0 flex-1 rounded-lg border border-line bg-surface-2 px-3 py-2 text-sm text-fg outline-none transition placeholder:text-fg-muted focus:border-accent/60 focus:ring-2 focus:ring-accent/20" />
))}
{error && (

{error}

)}
); }