Files
Investidor-V2/resources/js/components/journey-document-resources.tsx
T

160 lines
6.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { Link } from '@inertiajs/react';
import { useState } from 'react';
import {
fiscalPreparationGuide,
fiscalPreparationSource,
} from '@/lib/fiscal-preparation-guide';
export function JourneyDocumentResources({
stages = [],
}: {
stages?: string[];
}) {
const [stage, setStage] = useState('');
function destination(path: string, type?: string) {
const query = new URLSearchParams();
if (stage) query.set('stage[0]', stage);
if (type) query.set('document_type', type);
return `${path}${query.size ? `?${query}` : ''}`;
}
return (
<section
aria-label="Fontes e guias para a jornada"
className="space-y-3 rounded-xl border border-emerald-200 bg-emerald-50 p-4"
>
<h2 className="font-semibold text-emerald-950">
Fontes e guias para a jornada
</h2>
<p>
Prepare as etapas em paralelo. A disponibilidade para consulta,
a situação jurídica e a utilização numa regra ou cálculo são
estados independentes.
</p>
{stages.length > 0 ? (
<label className="block">
Etapa com associações no acervo
<select
className="mt-1 block rounded border bg-white p-2"
value={stage}
onChange={(event) => setStage(event.target.value)}
>
<option value="">Consultar todas as etapas</option>
{stages.map((value) => (
<option key={value} value={value}>
{value}
</option>
))}
</select>
</label>
) : (
<p>
Não há etapas documentais associadas nesta consulta. Pode
explorar o acervo autorizado e preparar o dossier; a falta
de associação não impede a consulta.
</p>
)}
<div className="grid gap-3 sm:grid-cols-3">
<div>
<h3 className="font-semibold">Fontes e requisitos</h3>
<p>
Confira origem, edição, artigo, âmbito e evidência antes
de tratar um requisito como confirmado. Uma ligação
temática não prova aplicabilidade.
</p>
<Link
className="underline"
href={destination('/legislacao')}
>
Consultar fontes legais
</Link>
</div>
<div>
<h3 className="font-semibold">Formulários</h3>
<p>
Use os campos do exemplar disponível. Origem ou
homologação pendentes devem permanecer identificadas;
pode continuar a preparar o dossier.
</p>
<Link
className="underline"
href={destination('/documentos', 'official_form')}
>
Consultar exemplares de formulários
</Link>
</div>
<div>
<h3 className="font-semibold">Guias e preparação</h3>
<p>
Os guias ajudam a preparar informação; não emitem
licenças, aprovam pedidos ou ativam benefícios fiscais.
</p>
<Link
className="underline"
href={destination('/documentos', 'guide')}
>
Consultar guias disponíveis
</Link>
{' · '}
<Link className="underline" href="/como-investir">
Abrir o roteiro didático
</Link>
</div>
</div>
<details>
<summary className="font-semibold">
Guia de preparação fiscal — 14 etapas da fonte
</summary>
<p>
Orientação interna baseada na leitura atual do documento
mestre, p.{fiscalPreparationSource.start}–
{fiscalPreparationSource.end}. Prepare etapas em paralelo.
Requisitos, autoridades, prazos e taxas exigem confirmação
específica; este guia não concede benefícios, não valida
elegibilidade e não executa atos externos.
</p>
<ol className="space-y-3">
{fiscalPreparationGuide.map((step) => (
<li
key={step.sourceParagraph}
className="rounded border bg-white p-3"
>
<h3 className="font-semibold">{step.title}</h3>
<p>
Informação a preparar segundo a fonte:{' '}
{step.inputs}
</p>
<p className="text-sm">
Fonte atual: parágrafo {step.sourceParagraph}{' '}
(histórico: {step.historicalSourceParagraph});
aplicabilidade por confirmar.
</p>
<Link className="underline" href={step.href}>
{step.href === '/simulador-fiscal'
? 'Abrir simulador e conferir parâmetros'
: step.href === '/balcao-virtual/painel'
? 'Preparar ou acompanhar no Balcão'
: 'Consultar documentos autorizados'}
</Link>
</li>
))}
</ol>
</details>
<p>
Próxima ação: registe o que a fonte sustenta e as dúvidas por
confirmar no dossier existente. Se precisar de esclarecimento,
prepare um pedido no Balcão e confirme a submissão.
</p>
<Link
className="inline-block rounded border border-emerald-800 bg-white px-3 py-2"
href="/balcao-virtual/painel"
>
Continuar no meu Balcão
</Link>
{' · '}
<Link className="underline" href="/documentos">
Explorar todo o acervo autorizado
</Link>
</section>
);
}