import { useState } from "react"; import { Link, usePage } from "@inertiajs/react"; export type SectorResourceArea = { id: string; group_ids: string[]; title: string; locations_text: string; location_labels: string[]; market_evidence: string; value_chain: string; indicative_location: string; promotion_ready: boolean; source_row: string; }; export type SectorResourceSelection = { sector_slug: string; key: string; group_id?: string | null; group_name?: string | null; area_id: string; title: string; location_label: string | null; locations_text: string; value_chain: string; source_sha256: string; reference_date: string; href: string; }; export type SectorResourceData = { sector_slug: string; title: string; introduction: string; group_label: string; resource_heading: string; resource_notice: string; background: {title:string;paragraphs:string[]}[]; source_sha256: string; reference_date: string; groups: { id: string; name: string; locations_text: string; location_labels: string[] }[]; areas: SectorResourceArea[]; projects: string[]; indicators: { label: string; value: string; source: string }[]; risks: string[]; sources: string[]; source_links?: {title:string;url:string}[]; }; export default function SectorResourceReference({ data }: { data: SectorResourceData }) { const url = usePage().url, query = new URL(url, "https://investmoz.invalid").searchParams; const [location, setLocation] = useState(query.get("resource_location") ?? ""), [search, setSearch] = useState(""), [area, setArea] = useState(query.get("resource_area") ?? ""), [group, setGroup] = useState(query.get("resource_group") ?? ""); const locations = [ ...new Set( data.groups .flatMap((m) => m.location_labels) .concat(data.areas.flatMap((m) => m.location_labels)), ), ].sort((a, b) => a.localeCompare(b, "pt")); const matches = (x: { location_labels: string[] }, text: string) => (!location || x.location_labels.includes(location)) && (!search || text.toLocaleLowerCase("pt").includes(search.toLocaleLowerCase("pt"))); const groups = data.groups.filter( (m) => (!group || m.id === group) && matches(m, m.name + " " + m.locations_text), ), areas = data.areas.filter( (a) => (!area || a.id === area) && (!group || a.group_ids.includes(group)) && matches(a, a.title + " " + a.value_chain + " " + a.locations_text), ); return (

{data.title}

{data.introduction}

{area && ( )}

{data.resource_heading}

{groups.length ? ( ) : (

Sem referências para esta pesquisa.

)}

{data.resource_notice}

Possibilidades na cadeia de valor

{areas.map((a) => (

{a.title}

{a.locations_text}

{a.value_chain.replace(/\s*\(indicativo\)/, "")}

Evidência e âmbito territorial

{a.market_evidence}

{a.indicative_location !== a.locations_text &&

{a.indicative_location}

}

Referência de {data.reference_date}; preparação da actividade sujeita ao investimento concreto.

Preparar uma ideia nesta cadeia de valor
))} {!areas.length &&

Sem áreas de investimento para esta selecção.

}
Projectos de referência
{!!data.indicators.length && (
Produção e recursos por período {data.indicators.map((s, i) => (

{s.label}

{s.value.replace( "Não encontrei dados de produção das outras gemas.", "Outras gemas: sem valores apresentados.", )}

Fonte: {s.source}

))}

Produção, capacidade, recursos e previsões são grandezas distintas. Os valores conservam os períodos e divergências das fontes.

)}
Riscos a considerar
{data.background.map(section=>
{section.title}{section.paragraphs.map((text,i)=>

{text}

)}{section.title.startsWith("Enquadramento")&&

Referência documental; não activa benefícios fiscais, licenças ou direitos no portal.

}
)}
Fontes e data

Referências reunidas em {data.reference_date}.

); }