<script setup lang="ts">
import { EmbedSignDocument } from '@sajn/embed-vue';
import type { SignerCompletedData, SignerRejectedData } from '@sajn/embed-vue';
const props = defineProps<{
documentId: string;
token: string;
}>();
const cssVars = {
primary: '#2563eb',
background: '#ffffff',
foreground: '#1f2937',
mutedForeground: '#6b7280',
};
function handleReady() {
console.log('Signing interface loaded');
}
function handleComplete(data: SignerCompletedData) {
if (data.failed) {
console.error('Signing failed:', data.failed);
return;
}
console.log('Document signed successfully!');
// Navigate to success page
}
function handleRejected(data: SignerRejectedData) {
console.log('Document rejected:', data.reason);
}
function handleError(error: { code: string; message: string }) {
console.error('Error:', error.code, error.message);
}
</script>
<template>
<div class="signing-container">
<EmbedSignDocument
:document-id="props.documentId"
:token="props.token"
:css-vars="cssVars"
:allow-document-rejection="true"
class="signing-iframe"
@document-ready="handleReady"
@signer-completed="handleComplete"
@signer-rejected="handleRejected"
@document-error="handleError"
/>
</div>
</template>
<style scoped>
.signing-container {
width: 100%;
height: 100vh;
}
.signing-iframe {
border-radius: 8px;
overflow: hidden;
}
</style>