import { Button } from "@pram/ui/components/button"; import { MaterialIcon } from "@/components/ui/MaterialIcon"; import { formatLabel } from "@/lib/format"; import type { Question } from "@/lib/types"; interface QuestionCardProps { q: Question; isFeatured?: boolean; isInBundle: boolean; disabled?: boolean; selected?: boolean; bulkSelect?: boolean; onToggle: () => void; onOpenDetail: () => void; isOwner: boolean; onTogglePublic: () => void; onDelete: () => void; } export function QuestionCard({ q, isFeatured = false, isInBundle, disabled = false, selected = false, bulkSelect = false, onToggle, onOpenDetail, isOwner, onTogglePublic, onDelete, }: QuestionCardProps) { const isPrivate = isOwner && !q.isPublic; return (
{ if (!disabled) onOpenDetail(); }} className={`border-2 rounded-[var(--radius-xl)] h-full flex flex-col transition-all ${ disabled ? "bg-[var(--oat-light)] border-[var(--oat-border)] opacity-40 cursor-not-allowed" : selected ? "bg-[var(--matcha-100)] border-[var(--matcha-600)] clay-hover cursor-pointer ring-2 ring-[var(--matcha-400)]" : isInBundle ? "bg-[var(--matcha-100)] border-[var(--clay-black)] clay-shadow clay-hover cursor-pointer" : isPrivate ? "bg-[var(--pure-white)] border-[var(--oat-border)] border-l-[var(--warm-charcoal)] border-l-4 clay-shadow clay-hover cursor-pointer" : "bg-[var(--pure-white)] border-[var(--oat-border)] clay-shadow clay-hover cursor-pointer" }`} >
{bulkSelect && ( {selected ? "Terpilih" : "Pilih"} )} {q.examTypeName} {q.sectionTypeName} {disabled && ( Terkunci )}
{q.avgRating && (
{q.avgRating}
)}

{q.questionText}

{q.passageText}

{formatLabel(q.format ?? "")} Lv.{q.difficulty} {q.usageCount}x digunakan
{/* Actions row */}
{isOwner && !bulkSelect && (
e.stopPropagation()}>
)} {!bulkSelect && ( )}
); }