task modal: add multi-line 'text' input type (textarea)
`type: string` renders a single-line <input>; the new `type: text` renders a resizable multi-line <textarea> (6 rows) — for pasted multi-line values like lyrics. Checked before options/default so `text` always means free-form text. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+16
@@ -463,6 +463,22 @@ const TaskInputForm = ({
|
||||
);
|
||||
}
|
||||
|
||||
if (def.type === 'text') {
|
||||
return (
|
||||
<div key={key} className="flex flex-col gap-1">
|
||||
<label className="text-xs font-medium text-duck-dark/70 dark:text-foreground/70">
|
||||
{def.description ?? key}
|
||||
</label>
|
||||
<textarea
|
||||
value={values[key] ?? ''}
|
||||
onChange={(e) => onChange(key, e.target.value)}
|
||||
rows={6}
|
||||
className="px-3 py-1.5 text-sm rounded-lg border border-duck-dark/15 dark:border-foreground/15 bg-background focus:outline-none focus:ring-1 focus:ring-duck-teal resize-y whitespace-pre-wrap"
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
if (def.options && def.options.length > 0) {
|
||||
const selected = values[key] ?? def.default ?? def.options[0]!;
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user