{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "flashcard",
  "title": "Flashcard",
  "description": "Two-sided card with an xAPI experienced statement on first reveal.",
  "registryDependencies": [
    "https://beadkit.dev/r/learning-core.json"
  ],
  "files": [
    {
      "path": "components/learning/FlashcardBlock.tsx",
      "content": "\"use client\";\nimport { useState } from \"react\";\nimport { LearningCard } from \"./LearningCard\";\nimport { useTelemetry, type XApiStatement } from \"./xapi\";\n\nexport interface FlashcardBlockProps {\n  activityId: string;\n  front: string;\n  back: string;\n  onTrackTelemetry?: (statement: XApiStatement) => void;\n}\n\nexport function FlashcardBlock({\n  activityId,\n  front,\n  back,\n  onTrackTelemetry,\n}: FlashcardBlockProps) {\n  const [revealed, setRevealed] = useState(false);\n  const [tracked, setTracked] = useState(false);\n  const track = useTelemetry(activityId, front, onTrackTelemetry);\n\n  const flip = () => {\n    setRevealed((v) => !v);\n    // Only the first reveal is a learning event; flipping back and forth is not\n    // repeated engagement and would inflate the LRS record.\n    if (!tracked) {\n      setTracked(true);\n      track(\"experienced\");\n    }\n  };\n\n  return (\n    <LearningCard label=\"Flashcard\" type=\"flashcard\">\n      <button\n        onClick={flip}\n        aria-expanded={revealed}\n        className=\"focus-visible:ring-ring hover:border-muted-foreground/40 flex min-h-24 w-full flex-col items-center justify-center gap-2 rounded-lg border p-4 text-center transition-all focus-visible:ring-2 focus-visible:ring-offset-1\"\n      >\n        <span className=\"text-muted-foreground font-mono text-[10px] font-bold uppercase tracking-wider\">\n          {revealed ? \"Back\" : \"Front\"}\n        </span>\n        <span aria-live=\"polite\" className=\"text-sm font-medium\">\n          {revealed ? back : front}\n        </span>\n      </button>\n      <p className=\"text-muted-foreground mt-2 text-center text-[11px]\">\n        {revealed ? \"Click to flip back\" : \"Click to reveal the answer\"}\n      </p>\n    </LearningCard>\n  );\n}\n",
      "type": "registry:component",
      "target": "@components/learning/FlashcardBlock.tsx"
    }
  ],
  "type": "registry:component"
}
