'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

}
) }