Delay item disappearance after check-off; add setting in Settings

Items on the lists page and dashboard widget now show as crossed-out for
a configurable duration (default 3s) before vanishing. Unchecking within
the window cancels the removal. The delay is stored in localStorage and
configurable via Settings → Lists (options: 1s / 3s / 5s / 10s / 30s).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
ginnoir
2026-05-06 15:02:04 -05:00
co-authored by Claude Sonnet 4.6
parent 8fda3e47dd
commit 2ad9521ef9
5 changed files with 163 additions and 24 deletions
@@ -0,0 +1,30 @@
"use client";
import { DELAY_OPTIONS, useCompletionDelay } from "@/hooks/use-completion-delay";
export function CompletionDelaySetting() {
const { delay, setDelay } = useCompletionDelay();
return (
<div className="flex items-center justify-between gap-4">
<div>
<p className="text-sm font-medium">Completion delay</p>
<p className="text-xs text-muted-foreground">
How long a checked-off item stays visible before disappearing from list cards and the
dashboard.
</p>
</div>
<select
value={delay}
onChange={(e) => setDelay(Number(e.target.value))}
className="rounded-md border border-input bg-background px-3 py-1.5 text-sm shadow-sm focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
>
{DELAY_OPTIONS.map((opt) => (
<option key={opt.value} value={opt.value}>
{opt.label}
</option>
))}
</select>
</div>
);
}