import { useState } from "react" import type { NextPage } from "next" import Head from "next/head" import Link from "next/link" const SearchPage: NextPage = () => { const [query, setQuery] = useState("") const [category, setCategory] = useState("") const [riskLevel, setRiskLevel] = useState({ min: '', max: '' }) const [results, setResults] = useState([]) const [loading, setLoading] = useState(false) const [pagination, setPagination] = useState(null) const handleSearch = async (page = 1) => { if (!query.trim()) return setLoading(true) const params = new URLSearchParams({ q: query, page: page.toString(), limit: '10' }) if (category) params.set('category', category) if (riskLevel.min) params.set('risk_level_min', riskLevel.min) if (riskLevel.max) params.set('risk_level_max', riskLevel.max) try { const response = await fetch(`/api/search/advanced?${params}`) const data = await response.json() setResults(data.results || []) setPagination(data.pagination) } catch (error) { console.error('Search error:', error) } setLoading(false) } return (
Advanced Search - Infohliadka
← Home

Advanced Search

setQuery(e.target.value)} style={{ width: '400px', padding: '8px', marginRight: '10px' }} />
setRiskLevel({...riskLevel, min: e.target.value})} style={{ width: '80px', padding: '5px', marginRight: '5px' }} min="1" max="5" /> setRiskLevel({...riskLevel, max: e.target.value})} style={{ width: '80px', padding: '5px' }} min="1" max="5" />
{results.length > 0 && (

Search Results ({pagination?.total || 0})

{results.map((result) => (

{result.domain}

Risk Level: {result.risk_level}/5

Categories: {result.categories.join(', ')}

{result.description &&

{result.description}

} {new Date(result.created_at).toLocaleDateString()}
))} {pagination && pagination.totalPages > 1 && (
{Array.from({length: pagination.totalPages}, (_, i) => i + 1).map(page => ( ))}
)}
)}
) } export default SearchPage