"use client"; import { Plus, X } from "lucide-react"; import { useState } from "react"; import { giveBadge, removeBadge } from "@/actions/users"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { useServerAction } from "@/hooks/use-server-action"; interface BadgeInfo { id: number; badgeCode: string; } interface UserBadgesSectionProps { userId: number; badges: BadgeInfo[]; } export function UserBadgesSection({ userId, badges }: UserBadgesSectionProps) { const { isPending, run } = useServerAction(); const [newBadge, setNewBadge] = useState(""); function handleAddBadge() { if (!newBadge.trim()) return; run(() => giveBadge({ userId, badgeCode: newBadge.trim() }), { successMessage: `Badge "${newBadge.trim()}" added.`, onSuccess: () => setNewBadge(""), }); } function handleRemoveBadge(badgeCode: string) { run(() => removeBadge({ userId, badgeCode }), { successMessage: `Badge "${badgeCode}" removed.`, }); } return ( Badges ({badges.length})
setNewBadge(e.target.value)} placeholder="Badge code..." onKeyDown={(e) => e.key === "Enter" && handleAddBadge()} />
{badges.map((badge) => (
{badge.badgeCode} { (e.target as HTMLImageElement).style.display = "none"; }} /> {badge.badgeCode}
))} {badges.length === 0 && (

No badges

)}
); }