'use client'; import { useState, useTransition, useCallback } from 'react'; import { SearchInput } from '@/components/search/SearchInput'; import { ResultsTable } from '@/components/search/ResultsTable'; import { EmptyState } from '@/components/search/EmptyState'; import { searchPolicySettings, seedMyTenantData, type PolicySettingSearchResult, } from '@/lib/actions/policySettings'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { toast } from 'sonner'; import { Database } from 'lucide-react'; import { useRouter } from 'next/navigation'; export default function SearchPage() { const router = useRouter(); const [results, setResults] = useState([]); const [searchTerm, setSearchTerm] = useState(''); const [hasSearched, setHasSearched] = useState(false); const [isPending, startTransition] = useTransition(); const [isSeeding, startSeedTransition] = useTransition(); const handleSearch = useCallback((query: string) => { setSearchTerm(query); if (query.length === 0) { setResults([]); setHasSearched(false); return; } if (query.length < 2) { return; } startTransition(async () => { try { const result = await searchPolicySettings(query); if (result.success) { setResults(result.data ?? []); setHasSearched(true); } else { toast.error(result.error ?? 'Search failed'); setResults([]); setHasSearched(true); } } catch (error) { toast.error('An unexpected error occurred'); setResults([]); setHasSearched(true); } }); }, []); const handleSeedData = () => { startSeedTransition(async () => { try { const result = await seedMyTenantData(); if (result.success) { toast.success(result.message ?? 'Test data created successfully'); router.refresh(); } else { toast.error(result.error ?? 'Failed to seed data'); } } catch (error) { toast.error('An unexpected error occurred'); } }); }; return (
Global Policy Search Search across all your Intune policy settings by keyword
{isPending && (
Searching...
)} {!isPending && hasSearched && ( <> {results.length > 0 ? (

Found {results.length} result{results.length !== 1 ? 's' : ''}

) : ( )} )} {!hasSearched && !isPending && ( )}
{/* Seed Data Button - Development Helper */}
); }