first commit
This commit is contained in:
commit
c9fb67e751
423 files changed
+53287
No files matched your search
@@ -0,0 +1,3 @@
|
||||
export function classNames(...classes: string[]) {
|
||||
return classes.filter(Boolean).join(' ');
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
export const ORGAOS_EMISSORES = [
|
||||
{ value: "SSP", label: "SSP - Secretaria de Segurança Pública" },
|
||||
{ value: "PC", label: "PC - Polícia Civil" },
|
||||
{ value: "DIC", label: "DIC - Diretoria de Identificação Civil" },
|
||||
{ value: "DETRAN", label: "DETRAN - Departamento de Trânsito" },
|
||||
{ value: "PM", label: "PM - Polícia Militar" },
|
||||
{ value: "CNT", label: "CNT - Carteira Nacional de Habilitação" },
|
||||
{ value: "DPF", label: "DPF - Departamento de Polícia Federal" },
|
||||
{ value: "IFP", label: "IFP - Instituto Félix Pacheco" },
|
||||
{ value: "IPF", label: "IPF - Instituto Pereira Faustino" },
|
||||
{ value: "IML", label: "IML - Instituto Médico-Legal" },
|
||||
{ value: "MTE", label: "MTE - Ministério do Trabalho e Emprego" },
|
||||
{ value: "MEX", label: "MEX - Ministério do Exército" },
|
||||
{ value: "MM", label: "MM - Ministério da Marinha" },
|
||||
{ value: "MAE", label: "MAE - Ministério da Aeronáutica" },
|
||||
];
|
||||
|
||||
export const PREVIDENCIA_OPTIONS = [
|
||||
{ value: "NAO_CONTRIBUI", label: "Não Contribui" },
|
||||
{ value: "RGPS", label: "RGPS (INSS)" },
|
||||
{ value: "RPPS", label: "RPPS (Servidor Público)" },
|
||||
];
|
||||
|
||||
export const ASSUNTOS_CNJ = [
|
||||
{
|
||||
codigo: "864",
|
||||
descricao:
|
||||
"Direito Previdenciário - Benefícios em Espécie - Aposentadoria por Invalidez",
|
||||
},
|
||||
{ codigo: "1209", descricao: "Direito Civil - Família - Alimentos" },
|
||||
{ codigo: "10538", descricao: "Direito Civil - Contratos - Bancários" },
|
||||
// Adicionar mais assuntos conforme necessário...
|
||||
];
|
||||
@@ -0,0 +1,20 @@
|
||||
export const DATAJUD_URLS = {
|
||||
STF: "https://api-publica.datajud.cnj.jus.br/api_publica_stf/_search",
|
||||
STJ: "https://api-publica.datajud.cnj.jus.br/api_publica_stj/_search",
|
||||
TST: "https://api-publica.datajud.cnj.jus.br/api_publica_tst/_search",
|
||||
// Tribunais Federais
|
||||
TRF1: "https://api-publica.datajud.cnj.jus.br/api_publica_trf1/_search",
|
||||
TRF2: "https://api-publica.datajud.cnj.jus.br/api_publica_trf2/_search",
|
||||
TRF3: "https://api-publica.datajud.cnj.jus.br/api_publica_trf3/_search",
|
||||
TRF4: "https://api-publica.datajud.cnj.jus.br/api_publica_trf4/_search",
|
||||
TRF5: "https://api-publica.datajud.cnj.jus.br/api_publica_trf5/_search",
|
||||
TRF6: "https://api-publica.datajud.cnj.jus.br/api_publica_trf6/_search",
|
||||
// Exemplo de TJ (adicionar os demais conforme necessário)
|
||||
TJTO: "https://api-publica.datajud.cnj.jus.br/api_publica_tjto/_search",
|
||||
TJGO: "https://api-publica.datajud.cnj.jus.br/api_publica_tjgo/_search",
|
||||
TJPA: "https://api-publica.datajud.cnj.jus.br/api_publica_tjpa/_search",
|
||||
TJAC: "https://api-publica.datajud.cnj.jus.br/api_publica_tjac/_search",
|
||||
TJAM: "https://api-publica.datajud.cnj.jus.br/api_publica_tjam/_search",
|
||||
TJAP: "https://api-publica.datajud.cnj.jus.br/api_publica_tjap/_search",
|
||||
TJBA: "https://api-publica.datajud.cnj.jus.br/api_publica_tjba/_search",
|
||||
};
|
||||
@@ -0,0 +1,29 @@
|
||||
export const UF_BRASIL = [
|
||||
{ value: "AC", label: "Acre" },
|
||||
{ value: "AL", label: "Alagoas" },
|
||||
{ value: "AP", label: "Amapá" },
|
||||
{ value: "AM", label: "Amazonas" },
|
||||
{ value: "BA", label: "Bahia" },
|
||||
{ value: "CE", label: "Ceará" },
|
||||
{ value: "DF", label: "Distrito Federal" },
|
||||
{ value: "ES", label: "Espírito Santo" },
|
||||
{ value: "GO", label: "Goiás" },
|
||||
{ value: "MA", label: "Maranhão" },
|
||||
{ value: "MT", label: "Mato Grosso" },
|
||||
{ value: "MS", label: "Mato Grosso do Sul" },
|
||||
{ value: "MG", label: "Minas Gerais" },
|
||||
{ value: "PA", label: "Pará" },
|
||||
{ value: "PB", label: "Paraíba" },
|
||||
{ value: "PR", label: "Paraná" },
|
||||
{ value: "PE", label: "Pernambuco" },
|
||||
{ value: "PI", label: "Piauí" },
|
||||
{ value: "RJ", label: "Rio de Janeiro" },
|
||||
{ value: "RN", label: "Rio Grande do Norte" },
|
||||
{ value: "RS", label: "Rio Grande do Sul" },
|
||||
{ value: "RO", label: "Rondônia" },
|
||||
{ value: "RR", label: "Roraima" },
|
||||
{ value: "SC", label: "Santa Catarina" },
|
||||
{ value: "SP", label: "São Paulo" },
|
||||
{ value: "SE", label: "Sergipe" },
|
||||
{ value: "TO", label: "Tocantins" },
|
||||
];
|
||||
@@ -0,0 +1,21 @@
|
||||
import {
|
||||
HomeIcon,
|
||||
ScaleIcon,
|
||||
UserGroupIcon,
|
||||
UserIcon,
|
||||
ClipboardDocumentCheckIcon,
|
||||
DocumentTextIcon,
|
||||
UsersIcon,
|
||||
} from "@heroicons/react/24/outline";
|
||||
|
||||
export const Icons = {
|
||||
DashboardIcon: HomeIcon,
|
||||
ProcessIcon: ScaleIcon,
|
||||
ClientsIcon: UserGroupIcon,
|
||||
AtendimentoIcon: UserIcon,
|
||||
TaskIcon: ClipboardDocumentCheckIcon,
|
||||
DocumentIcon: DocumentTextIcon,
|
||||
UsersIcon: UsersIcon,
|
||||
} as const;
|
||||
|
||||
export type IconType = keyof typeof Icons;
|
||||
@@ -0,0 +1,35 @@
|
||||
export const DashboardIcon = ({ className }: { className?: string }) => (
|
||||
<svg className={className} fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z" />
|
||||
</svg>
|
||||
);
|
||||
|
||||
export const ProcessIcon = ({ className }: { className?: string }) => (
|
||||
<svg className={className} fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
|
||||
</svg>
|
||||
);
|
||||
|
||||
export const ClientsIcon = ({ className }: { className?: string }) => (
|
||||
<svg className={className} fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z" />
|
||||
</svg>
|
||||
);
|
||||
|
||||
export const DeadlineIcon = ({ className }: { className?: string }) => (
|
||||
<svg className={className} fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" />
|
||||
</svg>
|
||||
);
|
||||
|
||||
export const UsersIcon = ({ className }: { className?: string }) => (
|
||||
<svg className={className} fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z" />
|
||||
</svg>
|
||||
);
|
||||
|
||||
export const AtendimentoIcon = ({ className }: { className?: string }) => (
|
||||
<svg className={className} fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M8 10h.01M12 10h.01M16 10h.01M9 16H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-5l-5 5v-5z" />
|
||||
</svg>
|
||||
);
|
||||
@@ -0,0 +1,187 @@
|
||||
export const UF_BRASIL = [
|
||||
{ value: "SUPERIOR", label: "Tribunais Superiores" },
|
||||
{ value: "AC", label: "Acre" },
|
||||
{ value: "AL", label: "Alagoas" },
|
||||
{ value: "AP", label: "Amapá" },
|
||||
{ value: "AM", label: "Amazonas" },
|
||||
{ value: "BA", label: "Bahia" },
|
||||
{ value: "CE", label: "Ceará" },
|
||||
{ value: "DF", label: "Distrito Federal" },
|
||||
{ value: "ES", label: "Espírito Santo" },
|
||||
{ value: "GO", label: "Goiás" },
|
||||
{ value: "MA", label: "Maranhão" },
|
||||
{ value: "MT", label: "Mato Grosso" },
|
||||
{ value: "MS", label: "Mato Grosso do Sul" },
|
||||
{ value: "MG", label: "Minas Gerais" },
|
||||
{ value: "PA", label: "Pará" },
|
||||
{ value: "PB", label: "Paraíba" },
|
||||
{ value: "PR", label: "Paraná" },
|
||||
{ value: "PE", label: "Pernambuco" },
|
||||
{ value: "PI", label: "Piauí" },
|
||||
{ value: "RJ", label: "Rio de Janeiro" },
|
||||
{ value: "RN", label: "Rio Grande do Norte" },
|
||||
{ value: "RS", label: "Rio Grande do Sul" },
|
||||
{ value: "RO", label: "Rondônia" },
|
||||
{ value: "RR", label: "Roraima" },
|
||||
{ value: "SC", label: "Santa Catarina" },
|
||||
{ value: "SP", label: "São Paulo" },
|
||||
{ value: "SE", label: "Sergipe" },
|
||||
{ value: "TO", label: "Tocantins" },
|
||||
];
|
||||
|
||||
export const TRIBUNAIS = {
|
||||
SUPERIOR: [
|
||||
{ value: "STF", label: "Supremo Tribunal Federal" },
|
||||
{ value: "STJ", label: "Superior Tribunal de Justiça" },
|
||||
{ value: "TST", label: "Tribunal Superior do Trabalho" },
|
||||
{ value: "TSE", label: "Tribunal Superior Eleitoral" },
|
||||
{ value: "STM", label: "Superior Tribunal Militar" },
|
||||
{ value: "CJF", label: "Conselho da Justiça Federal" },
|
||||
{ value: "CSJT", label: "Conselho Superior da Justiça do Trabalho" },
|
||||
],
|
||||
// Região Norte
|
||||
AC: [
|
||||
{ value: "TJAC", label: "Tribunal de Justiça do Acre" },
|
||||
{ value: "TRF1", label: "Tribunal Regional Federal da 1ª Região" },
|
||||
{ value: "TRT14", label: "Tribunal Regional do Trabalho da 14ª Região" },
|
||||
{ value: "TRE_AC", label: "Tribunal Regional Eleitoral do Acre" },
|
||||
{ value: "SEEU_AC", label: "SEEU - Acre" },
|
||||
],
|
||||
AM: [
|
||||
{ value: "TJAM", label: "Tribunal de Justiça do Amazonas" },
|
||||
{ value: "TRF1", label: "Tribunal Regional Federal da 1ª Região" },
|
||||
{ value: "TRT11", label: "Tribunal Regional do Trabalho da 11ª Região" },
|
||||
{ value: "TRE_AM", label: "Tribunal Regional Eleitoral do Amazonas" },
|
||||
],
|
||||
AP: [
|
||||
{ value: "TJAP", label: "Tribunal de Justiça do Amapá" },
|
||||
{ value: "TRF1", label: "Tribunal Regional Federal da 1ª Região" },
|
||||
{ value: "TRT8", label: "Tribunal Regional do Trabalho da 8ª Região" },
|
||||
{ value: "TRE_AP", label: "Tribunal Regional Eleitoral do Amapá" },
|
||||
],
|
||||
PA: [
|
||||
{ value: "TJPA", label: "Tribunal de Justiça do Pará" },
|
||||
{ value: "TRF1", label: "Tribunal Regional Federal da 1ª Região" },
|
||||
{ value: "TRT8", label: "Tribunal Regional do Trabalho da 8ª Região" },
|
||||
{ value: "TRE_PA", label: "Tribunal Regional Eleitoral do Pará" },
|
||||
],
|
||||
RO: [
|
||||
{ value: "TJRO", label: "Tribunal de Justiça de Rondônia" },
|
||||
{ value: "TRF1", label: "Tribunal Regional Federal da 1ª Região" },
|
||||
{ value: "TRT14", label: "Tribunal Regional do Trabalho da 14ª Região" },
|
||||
{ value: "TRE_RO", label: "Tribunal Regional Eleitoral de Rondônia" },
|
||||
],
|
||||
RR: [
|
||||
{ value: "TJRR", label: "Tribunal de Justiça de Roraima" },
|
||||
{ value: "TRF1", label: "Tribunal Regional Federal da 1ª Região" },
|
||||
{ value: "TRT11", label: "Tribunal Regional do Trabalho da 11ª Região" },
|
||||
{ value: "TRE_RR", label: "Tribunal Regional Eleitoral de Roraima" },
|
||||
],
|
||||
TO: [
|
||||
{ value: "TJTO", label: "Tribunal de Justiça do Tocantins" },
|
||||
{ value: "TRF1", label: "Tribunal Regional Federal da 1ª Região" },
|
||||
{ value: "TRT10", label: "Tribunal Regional do Trabalho da 10ª Região" },
|
||||
{ value: "TRE_TO", label: "Tribunal Regional Eleitoral do Tocantins" },
|
||||
{ value: "SEEU_TO", label: "SEEU - Tocantins" },
|
||||
],
|
||||
|
||||
// Região Nordeste
|
||||
AL: [
|
||||
{ value: "TJAL", label: "Tribunal de Justiça de Alagoas" },
|
||||
{ value: "TRF5", label: "Tribunal Regional Federal da 5ª Região" },
|
||||
{ value: "TRT19", label: "Tribunal Regional do Trabalho da 19ª Região" },
|
||||
{ value: "TRE_AL", label: "Tribunal Regional Eleitoral de Alagoas" },
|
||||
],
|
||||
BA: [
|
||||
{ value: "TJBA", label: "Tribunal de Justiça da Bahia" },
|
||||
{ value: "TRF1", label: "Tribunal Regional Federal da 1ª Região" },
|
||||
{ value: "TRT5", label: "Tribunal Regional do Trabalho da 5ª Região" },
|
||||
{ value: "TRE_BA", label: "Tribunal Regional Eleitoral da Bahia" },
|
||||
],
|
||||
CE: [
|
||||
{ value: "TJCE", label: "Tribunal de Justiça do Ceará" },
|
||||
{ value: "TRF5", label: "Tribunal Regional Federal da 5ª Região" },
|
||||
{ value: "TRT7", label: "Tribunal Regional do Trabalho da 7ª Região" },
|
||||
{ value: "TRE_CE", label: "Tribunal Regional Eleitoral do Ceará" },
|
||||
],
|
||||
MA: [
|
||||
{ value: "TJMA", label: "Tribunal de Justiça do Maranhão" },
|
||||
{ value: "TRF1", label: "Tribunal Regional Federal da 1ª Região" },
|
||||
{ value: "TRT16", label: "Tribunal Regional do Trabalho da 16ª Região" },
|
||||
{ value: "TRE_MA", label: "Tribunal Regional Eleitoral do Maranhão" },
|
||||
],
|
||||
PB: [
|
||||
{ value: "TJPB", label: "Tribunal de Justiça da Paraíba" },
|
||||
{ value: "TRF5", label: "Tribunal Regional Federal da 5ª Região" },
|
||||
{ value: "TRT13", label: "Tribunal Regional do Trabalho da 13ª Região" },
|
||||
{ value: "TRE_PB", label: "Tribunal Regional Eleitoral da Paraíba" },
|
||||
],
|
||||
PE: [
|
||||
{ value: "TJPE", label: "Tribunal de Justiça de Pernambuco" },
|
||||
{ value: "TRF5", label: "Tribunal Regional Federal da 5ª Região" },
|
||||
{ value: "TRT6", label: "Tribunal Regional do Trabalho da 6ª Região" },
|
||||
{ value: "TRE_PE", label: "Tribunal Regional Eleitoral de Pernambuco" },
|
||||
],
|
||||
PI: [
|
||||
{ value: "TJPI", label: "Tribunal de Justiça do Piauí" },
|
||||
{ value: "TRF1", label: "Tribunal Regional Federal da 1ª Região" },
|
||||
{ value: "TRT22", label: "Tribunal Regional do Trabalho da 22ª Região" },
|
||||
{ value: "TRE_PI", label: "Tribunal Regional Eleitoral do Piauí" },
|
||||
],
|
||||
|
||||
// Centro-Oeste
|
||||
GO: [
|
||||
{ value: "TJGO", label: "Tribunal de Justiça de Goiás" },
|
||||
{ value: "TRF1", label: "Tribunal Regional Federal da 1ª Região" },
|
||||
{ value: "TRT18", label: "Tribunal Regional do Trabalho da 18ª Região" },
|
||||
{ value: "TRE_GO", label: "Tribunal Regional Eleitoral de Goiás" },
|
||||
{ value: "SEEU_GO", label: "SEEU - Goiás" },
|
||||
],
|
||||
MT: [
|
||||
{ value: "TJMT", label: "Tribunal de Justiça do Mato Grosso" },
|
||||
{ value: "TRF1", label: "Tribunal Regional Federal da 1ª Região" },
|
||||
{ value: "TRT23", label: "Tribunal Regional do Trabalho da 23ª Região" },
|
||||
{ value: "TRE_MT", label: "Tribunal Regional Eleitoral do Mato Grosso" },
|
||||
{ value: "SEEU_MT", label: "SEEU - Mato Grosso" },
|
||||
],
|
||||
MS: [
|
||||
{ value: "TJMS", label: "Tribunal de Justiça do Mato Grosso do Sul" },
|
||||
{ value: "TRF3", label: "Tribunal Regional Federal da 3ª Região" },
|
||||
{ value: "TRT24", label: "Tribunal Regional do Trabalho da 24ª Região" },
|
||||
{
|
||||
value: "TRE_MS",
|
||||
label: "Tribunal Regional Eleitoral do Mato Grosso do Sul",
|
||||
},
|
||||
{ value: "SEEU_MS", label: "SEEU - Mato Grosso do Sul" },
|
||||
],
|
||||
DF: [
|
||||
{
|
||||
value: "TJDFT",
|
||||
label: "Tribunal de Justiça do Distrito Federal e Territórios",
|
||||
},
|
||||
{ value: "TRF1", label: "Tribunal Regional Federal da 1ª Região" },
|
||||
{ value: "TRT10", label: "Tribunal Regional do Trabalho da 10ª Região" },
|
||||
{
|
||||
value: "TRE_DF",
|
||||
label: "Tribunal Regional Eleitoral do Distrito Federal",
|
||||
},
|
||||
{ value: "SEEU_DF", label: "SEEU - Distrito Federal" },
|
||||
],
|
||||
|
||||
// Sudeste
|
||||
SP: [
|
||||
{ value: "TJSP", label: "Tribunal de Justiça de São Paulo" },
|
||||
{ value: "TRF3", label: "Tribunal Regional Federal da 3ª Região" },
|
||||
{ value: "TRT2", label: "Tribunal Regional do Trabalho da 2ª Região" },
|
||||
{ value: "TRT15", label: "Tribunal Regional do Trabalho da 15ª Região" },
|
||||
{ value: "TRE_SP", label: "Tribunal Regional Eleitoral de São Paulo" },
|
||||
{ value: "SEEU_SP", label: "SEEU - São Paulo" },
|
||||
],
|
||||
RJ: [
|
||||
{ value: "TJRJ", label: "Tribunal de Justiça do Rio de Janeiro" },
|
||||
{ value: "TRF2", label: "Tribunal Regional Federal da 2ª Região" },
|
||||
{ value: "TRT1", label: "Tribunal Regional do Trabalho da 1ª Região" },
|
||||
{ value: "TRE_RJ", label: "Tribunal Regional Eleitoral do Rio de Janeiro" },
|
||||
{ value: "SEEU_RJ", label: "SEEU - Rio de Janeiro" },
|
||||
],
|
||||
};
|
||||
@@ -0,0 +1,202 @@
|
||||
export const TIPOS_DOCUMENTO = {
|
||||
PROCURACAO: 'PROCURACAO',
|
||||
CONTRATO: 'CONTRATO',
|
||||
DECLARACAO: 'DECLARACAO',
|
||||
PETICAO: 'PETICAO',
|
||||
OUTROS: 'OUTROS'
|
||||
} as const;
|
||||
|
||||
// Template base para todos os documentos
|
||||
const TEMPLATE_BASE = `
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; line-height: 1.6; }
|
||||
.header { text-align: center; margin-bottom: 30px; }
|
||||
.footer { text-align: center; margin-top: 50px; font-size: 12px; }
|
||||
.content { margin: 20px 40px; }
|
||||
.signature { margin-top: 50px; text-align: center; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="header">
|
||||
{{cabecalho}}
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
{{conteudo}}
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
{{rodape}}
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
`;
|
||||
|
||||
// Exemplo de template de procuração
|
||||
const TEMPLATE_PROCURACAO = `
|
||||
<h1>PROCURAÇÃO</h1>
|
||||
|
||||
<p><strong>OUTORGANTE:</strong> {{cliente.nome}}, {{cliente.nacionalidade}}, {{cliente.estadoCivil}},
|
||||
portador(a) do RG nº {{cliente.rg}}, CPF nº {{cliente.cpf}}, residente em {{cliente.endereco}}.</p>
|
||||
|
||||
<p><strong>OUTORGADO:</strong> {{advogado.nome}}, inscrito na OAB/{{advogado.oabUF}} sob nº {{advogado.oab}}.</p>
|
||||
|
||||
<p>Pelo presente instrumento particular de procuração, o(a) outorgante nomeia e constitui seu(sua)
|
||||
bastante procurador(a) o(a) outorgado(a) acima qualificado(a), conferindo-lhe os poderes da
|
||||
cláusula "ad judicia"...</p>
|
||||
|
||||
<div class="signature">
|
||||
{{cidade}}, {{data}}
|
||||
<br><br>
|
||||
____________________________________<br>
|
||||
{{cliente.nome}}
|
||||
</div>
|
||||
`;
|
||||
|
||||
export const documentTemplates = {
|
||||
base: TEMPLATE_BASE,
|
||||
templates: {
|
||||
[TIPOS_DOCUMENTO.PROCURACAO]: TEMPLATE_PROCURACAO,
|
||||
// Adicionar outros templates aqui
|
||||
}
|
||||
};
|
||||
|
||||
export const templates = {
|
||||
PROCURACAO: {
|
||||
nome: "Procuração Ad Judicia",
|
||||
html: `
|
||||
<div class="procuracao">
|
||||
<h1 class="text-center text-2xl font-bold mb-8">PROCURAÇÃO AD JUDICIA</h1>
|
||||
|
||||
<p class="text-justify mb-4">
|
||||
<strong>OUTORGANTE:</strong> {{cliente.nome}}, {{cliente.nacionalidade}}, {{cliente.estadoCivil}},
|
||||
portador(a) do RG nº {{cliente.rg}}, inscrito(a) no CPF sob nº {{cliente.cpf}},
|
||||
residente e domiciliado(a) na {{cliente.endereco}}, {{cliente.numero}}, {{cliente.bairro}},
|
||||
{{cliente.cidade}}/{{cliente.estado}}, CEP {{cliente.cep}}.
|
||||
</p>
|
||||
|
||||
<p class="text-justify mb-4">
|
||||
<strong>OUTORGADOS:</strong> {{advogado.nome}}, advogado(a) inscrito(a) na OAB/{{advogado.oabUF}}
|
||||
sob nº {{advogado.oab}}, com escritório profissional na {{escritorio.endereco}}.
|
||||
</p>
|
||||
|
||||
<p class="text-justify mb-8">
|
||||
Por este instrumento particular de mandato, o(a) outorgante nomeia e constitui seu(sua) bastante
|
||||
procurador(a) o(a) outorgado(a), conferindo-lhe os poderes da cláusula "ad judicia" para o foro
|
||||
em geral, podendo propor contra quem de direito as ações competentes e defendê-lo(a) nas contrárias,
|
||||
seguindo umas e outras, até final decisão, usando os recursos legais e acompanhando-os, conferindo-lhe,
|
||||
ainda, poderes especiais para confessar, desistir, transigir, firmar compromissos ou acordos,
|
||||
receber e dar quitação.
|
||||
</p>
|
||||
|
||||
<p class="text-right mb-8">
|
||||
{{cidade}}, {{dataExtenso}}
|
||||
</p>
|
||||
|
||||
<div class="text-center mb-4">
|
||||
____________________________________<br>
|
||||
{{cliente.nome}}
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
variaveis: [
|
||||
"cliente.nome", "cliente.nacionalidade", "cliente.estadoCivil", "cliente.rg",
|
||||
"cliente.cpf", "cliente.endereco", "cliente.numero", "cliente.bairro",
|
||||
"cliente.cidade", "cliente.estado", "cliente.cep", "advogado.nome",
|
||||
"advogado.oab", "advogado.oabUF", "escritorio.endereco", "cidade",
|
||||
"dataExtenso"
|
||||
]
|
||||
},
|
||||
CONTRATO_HONORARIOS: {
|
||||
nome: "Contrato de Honorários",
|
||||
html: `
|
||||
<div class="contrato">
|
||||
<h1 class="text-center text-2xl font-bold mb-8">CONTRATO DE HONORÁRIOS ADVOCATÍCIOS</h1>
|
||||
|
||||
<p class="text-justify mb-4">
|
||||
<strong>CONTRATANTE:</strong> {{cliente.nome}}, {{cliente.nacionalidade}}, {{cliente.estadoCivil}},
|
||||
portador(a) do RG nº {{cliente.rg}}, inscrito(a) no CPF sob nº {{cliente.cpf}},
|
||||
residente e domiciliado(a) na {{cliente.endereco}}, {{cliente.numero}}, {{cliente.bairro}},
|
||||
{{cliente.cidade}}/{{cliente.estado}}, CEP {{cliente.cep}}.
|
||||
</p>
|
||||
|
||||
<p class="text-justify mb-4">
|
||||
<strong>CONTRATADO:</strong> {{advogado.nome}}, advogado(a) inscrito(a) na OAB/{{advogado.oabUF}}
|
||||
sob nº {{advogado.oab}}, com escritório profissional na {{escritorio.endereco}}.
|
||||
</p>
|
||||
|
||||
<h2 class="font-bold mb-2">CLÁUSULA PRIMEIRA - DO OBJETO</h2>
|
||||
<p class="text-justify mb-4">
|
||||
O presente contrato tem por objeto a prestação de serviços advocatícios para {{objeto}}.
|
||||
</p>
|
||||
|
||||
<h2 class="font-bold mb-2">CLÁUSULA SEGUNDA - DOS HONORÁRIOS</h2>
|
||||
<p class="text-justify mb-4">
|
||||
Pelos serviços prestados, o CONTRATANTE pagará ao CONTRATADO o valor de {{honorarios.valor}}
|
||||
a título de honorários advocatícios, nas seguintes condições: {{honorarios.condicoes}}.
|
||||
</p>
|
||||
|
||||
<p class="text-right mt-8">
|
||||
{{cidade}}, {{dataExtenso}}
|
||||
</p>
|
||||
|
||||
<div class="mt-12 grid grid-cols-2 gap-8">
|
||||
<div class="text-center">
|
||||
____________________________________<br>
|
||||
<strong>CONTRATANTE</strong><br>
|
||||
{{cliente.nome}}
|
||||
</div>
|
||||
<div class="text-center">
|
||||
____________________________________<br>
|
||||
<strong>CONTRATADO</strong><br>
|
||||
{{advogado.nome}}<br>
|
||||
OAB/{{advogado.oabUF}} {{advogado.oab}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
variaveis: [
|
||||
"cliente.nome", "cliente.nacionalidade", "cliente.estadoCivil", "cliente.rg",
|
||||
"cliente.cpf", "cliente.endereco", "cliente.numero", "cliente.bairro",
|
||||
"cliente.cidade", "cliente.estado", "cliente.cep", "advogado.nome",
|
||||
"advogado.oab", "advogado.oabUF", "escritorio.endereco", "cidade",
|
||||
"dataExtenso", "objeto", "honorarios.valor", "honorarios.condicoes"
|
||||
]
|
||||
},
|
||||
DECLARACAO: {
|
||||
nome: "Declaração",
|
||||
html: `
|
||||
<div class="declaracao">
|
||||
<h1 class="text-center text-2xl font-bold mb-8">DECLARAÇÃO</h1>
|
||||
|
||||
<p class="text-justify mb-8">
|
||||
Eu, {{cliente.nome}}, {{cliente.nacionalidade}}, {{cliente.estadoCivil}},
|
||||
portador(a) do RG nº {{cliente.rg}}, inscrito(a) no CPF sob nº {{cliente.cpf}},
|
||||
residente e domiciliado(a) na {{cliente.endereco}}, {{cliente.numero}}, {{cliente.bairro}},
|
||||
{{cliente.cidade}}/{{cliente.estado}}, CEP {{cliente.cep}}, DECLARO, para os devidos fins que
|
||||
{{conteudoDeclaracao}}.
|
||||
</p>
|
||||
|
||||
<p class="text-right mb-8">
|
||||
{{cidade}}, {{dataExtenso}}
|
||||
</p>
|
||||
|
||||
<div class="text-center">
|
||||
____________________________________<br>
|
||||
{{cliente.nome}}<br>
|
||||
CPF: {{cliente.cpf}}
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
variaveis: [
|
||||
"cliente.nome", "cliente.nacionalidade", "cliente.estadoCivil", "cliente.rg",
|
||||
"cliente.cpf", "cliente.endereco", "cliente.numero", "cliente.bairro",
|
||||
"cliente.cidade", "cliente.estado", "cliente.cep", "advogado.nome",
|
||||
"advogado.oab", "advogado.oabUF", "escritorio.endereco", "cidade",
|
||||
"dataExtenso", "conteudoDeclaracao"
|
||||
]
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,43 @@
|
||||
export const DOCUMENT_VARIABLES = {
|
||||
CLIENTE: {
|
||||
NOME: '{{cliente.nome}}',
|
||||
CPF: '{{cliente.cpf}}', // Usar cpf como alias para cpfCnpj
|
||||
CPF_CNPJ: '{{cliente.cpfCnpj}}', // Manter opção com nome original
|
||||
RG: '{{cliente.rg}}',
|
||||
ENDERECO_COMPLETO: '{{cliente.enderecoCompleto}}',
|
||||
NOME_PAI: '{{cliente.nomePai}}',
|
||||
NOME_MAE: '{{cliente.nomeMae}}',
|
||||
ESTADO_CIVIL: '{{cliente.estadoCivil}}',
|
||||
PROFISSAO: '{{cliente.profissao}}',
|
||||
NACIONALIDADE: '{{cliente.nacionalidade}}',
|
||||
},
|
||||
ATENDIMENTO: {
|
||||
PROTOCOLO: '{{atendimento.protocolo}}',
|
||||
DATA: '{{atendimento.data}}',
|
||||
TITULO: '{{atendimento.titulo}}',
|
||||
},
|
||||
PROCESSO: {
|
||||
NUMERO: '{{processo.numero}}',
|
||||
VARA: '{{processo.vara}}',
|
||||
TRIBUNAL: '{{processo.tribunal}}',
|
||||
},
|
||||
ADVOGADO: {
|
||||
NOME: '{{advogado.nome}}',
|
||||
OAB: '{{advogado.oab}}',
|
||||
OAB_UF: '{{advogado.oabUF}}',
|
||||
},
|
||||
ESCRITORIO: {
|
||||
NOME: '{{escritorio.nome}}',
|
||||
ENDERECO: '{{escritorio.endereco}}',
|
||||
TELEFONE: '{{escritorio.telefone}}',
|
||||
EMAIL: '{{escritorio.email}}',
|
||||
},
|
||||
DATA: {
|
||||
ATUAL: '{{data.atual}}',
|
||||
ATUAL_EXTENSO: '{{data.atualExtenso}}',
|
||||
DIA: '{{data.dia}}',
|
||||
MES: '{{data.mes}}',
|
||||
MES_EXTENSO: '{{data.mesExtenso}}',
|
||||
ANO: '{{data.ano}}'
|
||||
}
|
||||
} as const;
|
||||
@@ -0,0 +1,43 @@
|
||||
export const configuracaoEscritorio = {
|
||||
cabecalhoHtml: `
|
||||
<div style="text-align: center; padding: 20px;">
|
||||
<img src="{{logoUrl}}" alt="Logo do Escritório" style="max-height: 60px; margin-bottom: 10px;">
|
||||
<div style="font-size: 20px; font-weight: bold; color: #1a365d;">{{escritorio.nome}}</div>
|
||||
<div style="font-size: 14px; color: #4a5568;">
|
||||
{{escritorio.endereco}} - {{escritorio.cidade}}/{{escritorio.estado}}<br>
|
||||
Tel: {{escritorio.telefone}} | E-mail: {{escritorio.email}}
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
rodapeHtml: `
|
||||
<div style="text-align: center; font-size: 12px; color: #4a5568; padding: 10px; border-top: 1px solid #e2e8f0;">
|
||||
{{escritorio.nome}} | CNPJ: {{escritorio.cnpj}}<br>
|
||||
{{escritorio.endereco}} - {{escritorio.cidade}}/{{escritorio.estado}} - CEP: {{escritorio.cep}}<br>
|
||||
Tel: {{escritorio.telefone}} | E-mail: {{escritorio.email}} | Website: {{escritorio.website}}
|
||||
</div>
|
||||
`,
|
||||
variaveis: {
|
||||
escritorio: {
|
||||
nome: "Martins e Vieira Advocacia",
|
||||
cnpj: "XX.XXX.XXX/0001-XX",
|
||||
endereco: "Rua Principal, 123",
|
||||
cidade: "São Paulo",
|
||||
estado: "SP",
|
||||
cep: "01234-567",
|
||||
telefone: "(11) 1234-5678",
|
||||
email: "contato@martinsevieira.adv.br",
|
||||
website: "www.martinsevieira.adv.br"
|
||||
},
|
||||
logoUrl: "/assets/logo.png"
|
||||
}
|
||||
};
|
||||
|
||||
export const preencherTemplate = (template: string, variaveis: Record<string, any>): string => {
|
||||
let resultado = template;
|
||||
const regex = /\{\{([\w.]+)\}\}/g;
|
||||
|
||||
return resultado.replace(regex, (match, path) => {
|
||||
const valor = path.split('.').reduce((obj: any, key: string) => obj?.[key], variaveis);
|
||||
return valor !== undefined ? valor : match;
|
||||
});
|
||||
};
|
||||
@@ -0,0 +1,50 @@
|
||||
import { jsPDF } from 'jspdf';
|
||||
import 'jspdf-autotable';
|
||||
import { format } from 'date-fns';
|
||||
import { ptBR } from 'date-fns/locale';
|
||||
|
||||
interface ExportOptions {
|
||||
titulo: string;
|
||||
subtitulo?: string;
|
||||
dados: any[];
|
||||
colunas: {
|
||||
header: string;
|
||||
dataKey: string;
|
||||
format?: (value: any) => string;
|
||||
}[];
|
||||
}
|
||||
|
||||
export const exportToPDF = ({ titulo, subtitulo, dados, colunas }: ExportOptions) => {
|
||||
const doc = new jsPDF();
|
||||
const dataAtual = format(new Date(), "dd 'de' MMMM 'de' yyyy", { locale: ptBR });
|
||||
|
||||
// Cabeçalho
|
||||
doc.setFontSize(16);
|
||||
doc.text(titulo, 14, 15);
|
||||
|
||||
if (subtitulo) {
|
||||
doc.setFontSize(12);
|
||||
doc.text(subtitulo, 14, 25);
|
||||
}
|
||||
|
||||
doc.setFontSize(10);
|
||||
doc.text(`Gerado em: ${dataAtual}`, 14, subtitulo ? 35 : 25);
|
||||
|
||||
// Tabela
|
||||
(doc as any).autoTable({
|
||||
startY: subtitulo ? 40 : 30,
|
||||
head: [colunas.map(col => col.header)],
|
||||
body: dados.map(row =>
|
||||
colunas.map(col => {
|
||||
const value = row[col.dataKey];
|
||||
return col.format ? col.format(value) : value;
|
||||
})
|
||||
),
|
||||
theme: 'striped',
|
||||
headStyles: { fillColor: [59, 130, 246] },
|
||||
styles: { fontSize: 8 },
|
||||
});
|
||||
|
||||
// Salvar
|
||||
doc.save(`${titulo.toLowerCase().replace(/\s+/g, '_')}_${format(new Date(), 'yyyyMMdd')}.pdf`);
|
||||
};
|
||||
@@ -0,0 +1,12 @@
|
||||
export const formatCurrency = (value: number | null | undefined): string => {
|
||||
if (value == null) return "R$ 0,00";
|
||||
return new Intl.NumberFormat("pt-BR", {
|
||||
style: "currency",
|
||||
currency: "BRL",
|
||||
}).format(value);
|
||||
};
|
||||
|
||||
export const formatDate = (date: Date | string | null | undefined): string => {
|
||||
if (!date) return "-";
|
||||
return new Date(date).toLocaleDateString("pt-BR");
|
||||
};
|
||||
@@ -0,0 +1,158 @@
|
||||
export const formatCPF = (cpf: string) => {
|
||||
if (!cpf) return "Não informado";
|
||||
const cleaned = cpf.replace(/\D/g, "");
|
||||
return cleaned.replace(/(\d{3})(\d{3})(\d{3})(\d{2})/, "$1.$2.$3-$4");
|
||||
};
|
||||
|
||||
export const formatTelefone = (telefone: string) => {
|
||||
const cleaned = telefone.replace(/\D/g, "");
|
||||
if (cleaned.length === 11) {
|
||||
return cleaned.replace(/(\d{2})(\d{5})(\d{4})/, "($1) $2-$3");
|
||||
}
|
||||
return cleaned.replace(/(\d{2})(\d{4})(\d{4})/, "($1) $2-$3");
|
||||
};
|
||||
|
||||
export const formatNome = (nome: string) => {
|
||||
return nome.toUpperCase();
|
||||
};
|
||||
|
||||
export const formatMoeda = (valor: number | null | undefined): string => {
|
||||
if (!valor) return "Não informado";
|
||||
return new Intl.NumberFormat("pt-BR", {
|
||||
style: "currency",
|
||||
currency: "BRL",
|
||||
}).format(valor);
|
||||
};
|
||||
|
||||
export const formatEmail = (email: string | undefined): string => {
|
||||
if (!email) return "Não informado";
|
||||
return email.toLowerCase();
|
||||
};
|
||||
|
||||
export const formatTextoSimples = (
|
||||
texto: string | undefined | null,
|
||||
): string => {
|
||||
if (!texto) return "Não informado";
|
||||
return texto;
|
||||
};
|
||||
|
||||
export const formatCampoObrigatorio = (
|
||||
texto: string | undefined | null,
|
||||
): string => {
|
||||
if (!texto) return "Não preenchido";
|
||||
return texto;
|
||||
};
|
||||
|
||||
export const formatData = (data: string | Date | null | undefined): string => {
|
||||
if (!data) return "Não informado";
|
||||
const date = new Date(data);
|
||||
// Ajusta o timezone para evitar o problema do dia anterior
|
||||
date.setMinutes(date.getMinutes() + date.getTimezoneOffset());
|
||||
return date.toLocaleDateString("pt-BR", {
|
||||
day: "2-digit",
|
||||
month: "2-digit",
|
||||
year: "numeric",
|
||||
timeZone: "UTC",
|
||||
});
|
||||
};
|
||||
|
||||
export const formatNumeroProcesso = (numero: string): string => {
|
||||
const cleaned = numero.replace(/\D/g, "");
|
||||
return cleaned.replace(
|
||||
/(\d{7})(\d{2})(\d{4})(\d{3})(\d{4})/,
|
||||
"$1-$2.$3.$4.$5",
|
||||
);
|
||||
};
|
||||
|
||||
export const validaNumeroProcesso = (numero: string): boolean => {
|
||||
const pattern = /^\d{7}-\d{2}\.\d{4}\.\d{3}\.\d{4}$/;
|
||||
return pattern.test(numero);
|
||||
};
|
||||
|
||||
export const formatCurrency = (value: number): string => {
|
||||
return new Intl.NumberFormat('pt-BR', {
|
||||
style: 'currency',
|
||||
currency: 'BRL'
|
||||
}).format(value);
|
||||
};
|
||||
|
||||
// Função para formatar um valor para moeda (R$)
|
||||
export const formatarMoeda = (valor: string | number): string => {
|
||||
// Se for string vazia, retorna vazia
|
||||
if (valor === '') return '';
|
||||
|
||||
// Converter para número
|
||||
let numero: number;
|
||||
if (typeof valor === 'string') {
|
||||
// Substituir vírgula por ponto para processamento
|
||||
numero = parseFloat(valor.replace(/\./g, '').replace(',', '.'));
|
||||
} else {
|
||||
numero = valor;
|
||||
}
|
||||
|
||||
// Se não for um número válido, retorna vazio
|
||||
if (isNaN(numero)) return '';
|
||||
|
||||
// Formatar o número como moeda brasileira
|
||||
return numero.toLocaleString('pt-BR', {
|
||||
minimumFractionDigits: 2,
|
||||
maximumFractionDigits: 2,
|
||||
});
|
||||
};
|
||||
|
||||
// Função para converter uma string formatada como moeda para número
|
||||
export const parseMoeda = (valor: string): number => {
|
||||
if (!valor) return 0;
|
||||
|
||||
// Remover símbolos de moeda e pontos de milhar, substituir vírgula por ponto
|
||||
const numeroStr = valor.replace(/[^\d,.-]/g, '').replace('.', '').replace(',', '.');
|
||||
return parseFloat(numeroStr);
|
||||
};
|
||||
|
||||
// Função para formatar um valor como percentual
|
||||
export const formatarPercentual = (valor: string | number): string => {
|
||||
// Se for string vazia, retorna vazia
|
||||
if (valor === '') return '';
|
||||
|
||||
// Converter para número
|
||||
let numero: number;
|
||||
if (typeof valor === 'string') {
|
||||
// Remover o símbolo de % e substituir vírgula por ponto
|
||||
numero = parseFloat(valor.replace('%', '').replace(/\./g, '').replace(',', '.'));
|
||||
} else {
|
||||
numero = valor;
|
||||
}
|
||||
|
||||
// Se não for um número válido, retorna vazio
|
||||
if (isNaN(numero)) return '';
|
||||
|
||||
// Formatar o número como percentual brasileiro
|
||||
return numero.toLocaleString('pt-BR', {
|
||||
minimumFractionDigits: 2,
|
||||
maximumFractionDigits: 2,
|
||||
}) + '%';
|
||||
};
|
||||
|
||||
// Função para converter uma string formatada como percentual para número decimal
|
||||
export const parsePercentual = (valor: string): number => {
|
||||
if (!valor) return 0;
|
||||
|
||||
// Remover símbolo de percentual, pontos de milhar, substituir vírgula por ponto
|
||||
const numeroStr = valor.replace(/%/g, '').replace(/\./g, '').replace(',', '.');
|
||||
const percentual = parseFloat(numeroStr);
|
||||
|
||||
// Converter para decimal (ex: 30% -> 0.3)
|
||||
return percentual / 100;
|
||||
};
|
||||
|
||||
// Função para formatar uma data no padrão brasileiro
|
||||
export const formatarData = (data: Date | string): string => {
|
||||
if (!data) return '';
|
||||
|
||||
const dataObj = data instanceof Date ? data : new Date(data);
|
||||
|
||||
// Verificar se é uma data válida
|
||||
if (isNaN(dataObj.getTime())) return '';
|
||||
|
||||
return dataObj.toLocaleDateString('pt-BR');
|
||||
};
|
||||
Reference in new issue
Block a user