React
Incorpore a assinatura da KivoSign no seu sistema React usando o SDK.
Instalação
npm install @documenso/embed-reactModelo direto
import { EmbedDirectTemplate } from '@documenso/embed-react';
const SigningPage = () => {
return (
<EmbedDirectTemplate
token="token-do-seu-modelo"
host="https://app.kivosign.com.br"
name="João Silva"
email="joao@exemplo.com"
lockEmail={true}
externalId="pedido-12345"
onDocumentReady={() => console.log('Pronto')}
onDocumentCompleted={(data) => {
console.log('Assinado:', data.documentId);
}}
onDocumentError={() => console.error('Erro')}
/>
);
};Token de assinatura
import { EmbedSignDocument } from '@documenso/embed-react';
const SigningPage = ({ token }: { token: string }) => {
return (
<EmbedSignDocument
token={token}
host="https://app.kivosign.com.br"
onDocumentCompleted={(data) => {
console.log('Assinado:', data.documentId);
}}
/>
);
};Lembrando a assinatura do signatário
Passe um clientUserId opaco para pré-preencher e guardar a assinatura do signatário entre as incorporações. Nunca use e-mail
ou outro dado pessoal aqui, pois ele aparece nos logs de requisição. Veja
Assinaturas salvas.
<EmbedSignDocument host="https://app.kivosign.com.br" token={token} clientUserId={user.id} />Estilo personalizado
import { EmbedDirectTemplate } from '@documenso/embed-react';
const StyledEmbed = () => {
return (
<EmbedDirectTemplate
token="seu-token"
host="https://app.kivosign.com.br"
css={`
.documenso-embed {
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
`}
cssVars={{
primary: '#0000FF',
background: '#F5F5F5',
radius: '8px',
}}
darkModeDisabled={true}
/>
);
};Veja Variáveis CSS para todas as variáveis disponíveis.
Exemplo completo
import { useState } from 'react';
import { EmbedDirectTemplate } from '@documenso/embed-react';
type Status = 'loading' | 'ready' | 'completed' | 'error';
const DocumentSigning = ({ token }: { token: string }) => {
const [status, setStatus] = useState<Status>('loading');
if (status === 'completed') {
return <p>Obrigado por assinar o documento.</p>;
}
if (status === 'error') {
return <p>Ocorreu um erro. Tente novamente.</p>;
}
return (
<div style={{ position: 'relative', height: '100vh' }}>
{status === 'loading' && (
<div style={{ position: 'absolute', inset: 0, display: 'grid', placeItems: 'center' }}>
Carregando...
</div>
)}
<EmbedDirectTemplate
token={token}
host="https://app.kivosign.com.br"
onDocumentReady={() => setStatus('ready')}
onDocumentCompleted={() => setStatus('completed')}
onDocumentError={() => setStatus('error')}
/>
</div>
);
};Veja também
- Visão geral da incorporação - Propriedades e conceitos
- Variáveis CSS - Personalize a aparência
- Editor - Incorpore a criação de documentos

