"use client"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { isValidFreezeDuration, MAX_FREEZE_DURATION_SECONDS, useFreezeFrameStore, } from "@/actions/freeze-frame-store"; export function FreezeFrameDialog() { const isOpen = useFreezeFrameStore((state) => state.isOpen); const cancelDuration = useFreezeFrameStore((state) => state.cancelDuration); return ( { if (!open) { cancelDuration(); } }} > Freeze frame How long should the frozen frame stay on screen? {isOpen && } ); } function FreezeFrameForm() { const lastDurationSeconds = useFreezeFrameStore( (state) => state.lastDurationSeconds, ); const confirmDuration = useFreezeFrameStore((state) => state.confirmDuration); const cancelDuration = useFreezeFrameStore((state) => state.cancelDuration); const [value, setValue] = useState(String(lastDurationSeconds)); const seconds = Number(value); const showError = value.trim() !== "" && !isValidFreezeDuration({ seconds }); const canConfirm = isValidFreezeDuration({ seconds }); const handleConfirm = () => { if (canConfirm) { confirmDuration({ seconds }); } }; return ( <> setValue(e.target.value)} onKeyDown={(e) => { if (e.key === "Enter") { e.preventDefault(); handleConfirm(); } }} placeholder="e.g. 2.5" /> {showError && (

Enter a duration greater than 0 and at most{" "} {MAX_FREEZE_DURATION_SECONDS} seconds.

)}
); }