import React, { useState } from "react"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { Input } from "@/components/ui/input"; import { Copy, Download, Shield } from "lucide-react"; import { toast } from "sonner"; interface Payload { id: string; name: string; score: number; tags: string[]; code?: string; } interface PayloadLibraryProps { payloads: Payload[]; onSelect?: (payload: Payload) => void; } export function PayloadLibrary({ payloads, onSelect }: PayloadLibraryProps) { const [searchTerm, setSearchTerm] = useState(""); const [selectedPayload, setSelectedPayload] = useState(null); const filtered = payloads.filter(p => p.name.toLowerCase().includes(searchTerm.toLowerCase()) || p.tags.some(t => t.toLowerCase().includes(searchTerm.toLowerCase())) ); return (
setSearchTerm(e.target.value)} className="bg-black/50 border-green-500/20 text-white" />
{filtered.map((payload) => ( { setSelectedPayload(payload); onSelect?.(payload); }} >
{payload.name} {payload.score}/100
{payload.tags.map((tag) => ( {tag} ))}
))}
); }