import { useMemo, useState } from "react"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { ChevronLeft, ChevronRight, Shuffle, RotateCcw } from "lucide-react"; import type { FlashcardRow } from "@/store/workspace"; function shuffleArr(arr: T[]): T[] { const a = [...arr]; for (let i = a.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [a[i], a[j]] = [a[j], a[i]]; } return a; } export default function FlashcardsDeck({ cards }: { cards: FlashcardRow[] }) { const [order, setOrder] = useState(() => cards.map((_, i) => i)); const [idx, setIdx] = useState(0); const [flipped, setFlipped] = useState(false); const ordered = useMemo(() => order.map((i) => cards[i]).filter(Boolean), [order, cards]); const total = ordered.length; const card = ordered[idx]; const go = (delta: number) => { setFlipped(false); setIdx((i) => Math.max(0, Math.min(total - 1, i + delta))); }; if (!card) return null; return (
{idx + 1} / {total}
{/* Flip card */}
setFlipped((f) => !f)} role="button" aria-label="Flip card" >
Question

{card.front}

Tap to reveal

Answer

{card.back}

); }