Iniciativa Cidadã Independente · Transparência Parlamentar
TSX40 linhas1.961 bytes

apps/web/src/components/senador/ResumoTramitacao.tsx

SHA-256

dc9ed4e403990956b4c239341966523d86d10dd88ceb1d0419bef2fafdc896ae

Somente leiturafonte-0531042d9f3e
import type { ResumoTramitacao as Resumo } from '@/lib/types'

const ETAPAS = [
  ['sem_avanco', 'Sem avanço comprovado', '0'],
  ['instrucao', 'Avanço deliberativo', '1'],
  ['aprovado_senado', 'Aprovadas no Senado', '2'],
  ['camara', 'Destinadas à Câmara', '2'],
  ['sancao', 'À sanção ou promulgação', '3'],
  ['norma', 'Transformadas em norma', '4'],
] as const

export default function ResumoTramitacao({ resumo }: { resumo: Resumo }) {
  return (
    <section className="mt-6 rounded-sm border border-border bg-surface p-5">
      <h3 className="font-serif text-xl font-semibold text-ink">Até onde avançaram as proposições</h3>
      <p className="mt-2 text-sm text-muted">
        {resumo.normativas} proposições normativas apresentadas na janela avaliada.
        Cada projeto aparece uma vez, no maior avanço comprovado até{' '}
        {resumo.dataCorte.split('-').reverse().join('/')}.
      </p>
      <dl className="mt-4 grid grid-cols-2 gap-4 md:grid-cols-3">
        {ETAPAS.map(([etapa, rotulo, pontos]) => (
          <div key={etapa}>
            <dt className="text-xs text-muted">{rotulo} · {pontos} {pontos === '1' ? 'ponto' : 'pontos'}</dt>
            <dd className="mt-1 font-mono text-xl text-ink">{resumo.porEtapa[etapa]}</dd>
          </div>
        ))}
      </dl>
      <p className="mt-4 text-sm text-muted">
        Avanço ponderado: <strong className="text-ink">{(100 * resumo.proporcao).toLocaleString('pt-BR', { maximumFractionDigits: 1 })}%</strong>{' '}
        do máximo possível, antes do ajuste por tamanho da amostra. Não é o percentual de projetos que viraram lei.
        Requerimentos e indicações contam na produtividade; a efetividade considera apenas proposições normativas.
      </p>
      {resumo.evidenciasSemData > 0 && (
        <p className="mt-2 text-xs text-muted">Há registros de avanço sem data verificável; eles não acrescentam pontos.</p>
      )}
    </section>
  )
}