"use client"; import { useState } from "react"; import type { Award } from "@/payload-types"; import { Badge } from "@/components/ui/badge"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { RibbonDesign } from "@/components/admin/awards/RibbonDesigner"; import { RibbonViewer } from "./RibbonViewer"; import { GrantAwardDialog } from "./GrantAwardDialog"; import { MedalIcon, RibbonIcon, ScrollTextIcon } from "lucide-react"; interface AwardPickerDialogProps { awards: Award[]; recipientUserId: number; recipientUsername: string; open: boolean; onOpenChange: (open: boolean) => void; onGranted?: () => void; } /** * Grid of grantable awards. Selecting a card closes this dialog and opens the * GrantAwardDialog for that award with the recipient pre-filled. */ export function AwardPickerDialog({ awards, recipientUserId, recipientUsername, open, onOpenChange, onGranted, }: AwardPickerDialogProps) { const [selectedAward, setSelectedAward] = useState(null); function pick(award: Award) { setSelectedAward(award); onOpenChange(false); } return ( <> { if (!o) setSelectedAward(null); onOpenChange(o); }} > Select an award Choose which award to grant to @{recipientUsername}. {awards.length === 0 ? (

No awards are available to grant.

) : (
{awards.map((award) => ( ))}
)}
{selectedAward && ( { if (!o) setSelectedAward(null); }} onGranted={onGranted} /> )} ); }