diff --git a/src/app/chain/page.tsx b/src/app/chain/page.tsx index 1a13f2f0..3737958c 100644 --- a/src/app/chain/page.tsx +++ b/src/app/chain/page.tsx @@ -52,9 +52,11 @@ export default function ChainPlotPage() { const { state, error, chainPlot, reset } = useChainPlot(); const { valid, charCount } = validateContentLength(content); + const titleValid = title.trim().length > 0; const canSubmit = (state === "idle" || state === "error") && storylineId !== null && + titleValid && valid; if (!isConnected) { @@ -139,18 +141,25 @@ export default function ChainPlotPage() { {/* Chapter title */}
setTitle(e.target.value.slice(0, 100))} disabled={busy || noStoryline} - placeholder={noStoryline ? "Select a storyline first" : "e.g. The Awakening"} + placeholder={noStoryline ? "Select a storyline first" : "e.g. The Silent Storm"} maxLength={100} className="border-border bg-surface text-foreground placeholder:text-muted w-full rounded border px-3 py-2 text-sm focus:border-accent focus:outline-none disabled:opacity-50" /> - {title.length}/100 +
+ {!titleValid && content.length > 0 ? ( + Title is required + ) : ( + + )} + {title.length} / 100 chars +
{/* Content */}