"use client"; import { motion, useMotionValue, useTransform } from "framer-motion"; import { useState } from "react"; import type { Activity } from "@/lib/schemas"; import { Button } from "@/components/ui"; import { ActivityHeader, FeedbackPanel, Hint, PromptCard, type ActivityComponentProps, } from "./shared"; type TrueFalseActivity = Extract; export function TrueFalse({ activity, onAnswered, onNext, isLast }: ActivityComponentProps) { const [result, setResult] = useState(null); const x = useMotionValue(0); const trueOpacity = useTransform(x, [30, 110], [0, 1]); const falseOpacity = useTransform(x, [-30, -110], [1, 0]); const answer = (value: boolean) => { if (result !== null) return; setResult(value === activity.answer); onAnswered(value === activity.answer, { userAnswer: value ? "true" : "false" }); }; return ( <> {result === null ? "Swipe the card right for true, left for false — or tap a button." : "Nice swipe!"}
{ if (info.offset.x > 90) answer(true); else if (info.offset.x < -90) answer(false); }} whileTap={{ cursor: "grabbing" }} className="touch-pan-y" > ✓ true false ✕

“{activity.statement}”

{result === null ? (
) : ( This statement is {activity.answer ? "true" : "false"}. } /> )} ); }