import { inputText } from '../../lib/input-text.ts'; import { Link, useForm } from '@inertiajs/react'; import { Frame, card, button } from '@/pages/investment/shared'; import { Field, control, states, type Publication } from './shared'; type Choice = { id: string; name: string }; export default function Index({ items, filters, options, regimes, management, }: { items: { data: { id: string; publication: Publication; state: string }[]; current_page: number; links: { url: string | null; label: string; active: boolean }[]; }; filters: Record; options: Record; regimes: Record; management: boolean; }) { const form = useForm({ q: filters.q ?? '', entity: filters.entity ?? '', sector: filters.sector ?? '', territory: filters.territory ?? '', modality: filters.modality ?? '', financier: filters.financier ?? '', state: filters.state ?? '', deadline_before: filters.deadline_before ?? '', regime: filters.regime ?? '', }); const query = new URLSearchParams( Object.entries({ ...filters, page: String(items.current_page) }).filter( ([, v]) => v != null && v !== '', ), ).toString(); return (

Procedimentos e actos divulgados pelas entidades responsáveis. Uma oportunidade divulgada não é, por si, um concurso aberto.

Os concursos que acompanho {management && ( Gerir concursos e anúncios )}
{ e.preventDefault(); form.get('/concursos', { preserveState: true }); }} > form.setData('q', e.target.value)} /> {( [ 'entity', 'sector', 'territory', 'modality', 'financier', ] as const ).map((key) => ( ))} form.setData('deadline_before', e.target.value) } />
{!items.data.length && (

Nenhum anúncio corresponde aos filtros.

)}
{items.data.map((item) => (

{inputText(item.publication.payload.title)}

{inputText( item.publication.payload.organization_name, )}{' '} · {states[item.state]}

Entrega:{' '} {inputText( item.publication.payload.deadline, ).replace('T', ' ')}{' '} · {inputText(item.publication.payload.timezone)}

{inputText(item.publication.payload.object)}

))}
); }