@unlev/exeq 0.1.10 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -0
- package/dist/index.css +64 -16
- package/dist/index.css.map +1 -1
- package/dist/index.js +105 -57
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +97 -49
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -47,6 +47,21 @@ function Signer() {
|
|
|
47
47
|
/>
|
|
48
48
|
);
|
|
49
49
|
}
|
|
50
|
+
|
|
51
|
+
// Multi-party signing — signers complete sequentially
|
|
52
|
+
function MultiPartySigner() {
|
|
53
|
+
return (
|
|
54
|
+
<SignerView
|
|
55
|
+
apiKey="your-api-key"
|
|
56
|
+
initialPdfUrl="/contracts/template.pdf"
|
|
57
|
+
initialTemplate={template}
|
|
58
|
+
signerOrder={['Signer 1', 'Sender']} // recipient signs first, then sender
|
|
59
|
+
onComplete={(blob) => {
|
|
60
|
+
// final PDF with all signatures
|
|
61
|
+
}}
|
|
62
|
+
/>
|
|
63
|
+
);
|
|
64
|
+
}
|
|
50
65
|
```
|
|
51
66
|
|
|
52
67
|
## API
|
package/dist/index.css
CHANGED
|
@@ -407,6 +407,9 @@
|
|
|
407
407
|
border: none;
|
|
408
408
|
background: transparent;
|
|
409
409
|
padding: 2px 4px;
|
|
410
|
+
overflow: hidden;
|
|
411
|
+
text-overflow: ellipsis;
|
|
412
|
+
white-space: nowrap;
|
|
410
413
|
outline: none;
|
|
411
414
|
font-family: inherit;
|
|
412
415
|
}
|
|
@@ -703,6 +706,25 @@
|
|
|
703
706
|
border-radius: 4px;
|
|
704
707
|
font-size: 0.9rem;
|
|
705
708
|
}
|
|
709
|
+
.signer-font-size {
|
|
710
|
+
display: flex;
|
|
711
|
+
align-items: center;
|
|
712
|
+
gap: 0.35rem;
|
|
713
|
+
margin-top: 0.4rem;
|
|
714
|
+
font-size: 0.8rem;
|
|
715
|
+
color: #666;
|
|
716
|
+
}
|
|
717
|
+
.signer-font-size label {
|
|
718
|
+
white-space: nowrap;
|
|
719
|
+
}
|
|
720
|
+
.signer-font-size input {
|
|
721
|
+
width: 50px;
|
|
722
|
+
padding: 0.2rem 0.3rem;
|
|
723
|
+
border: 1px solid #ddd;
|
|
724
|
+
border-radius: 3px;
|
|
725
|
+
font-size: 0.8rem;
|
|
726
|
+
text-align: center;
|
|
727
|
+
}
|
|
706
728
|
.signer-checkbox-label {
|
|
707
729
|
display: flex;
|
|
708
730
|
align-items: center;
|
|
@@ -769,6 +791,40 @@
|
|
|
769
791
|
color: #888;
|
|
770
792
|
text-align: center;
|
|
771
793
|
}
|
|
794
|
+
.field-navigator-progress.clickable {
|
|
795
|
+
cursor: pointer;
|
|
796
|
+
}
|
|
797
|
+
.field-navigator-progress.clickable:hover {
|
|
798
|
+
color: #555;
|
|
799
|
+
}
|
|
800
|
+
.field-navigator-toggle {
|
|
801
|
+
margin-left: 0.3rem;
|
|
802
|
+
font-size: 0.6rem;
|
|
803
|
+
}
|
|
804
|
+
.incomplete-fields-list {
|
|
805
|
+
display: flex;
|
|
806
|
+
flex-direction: column;
|
|
807
|
+
max-height: 150px;
|
|
808
|
+
overflow-y: auto;
|
|
809
|
+
border: 1px solid #eee;
|
|
810
|
+
border-radius: 4px;
|
|
811
|
+
background: #fafafa;
|
|
812
|
+
}
|
|
813
|
+
.incomplete-field-item {
|
|
814
|
+
padding: 0.4rem 0.6rem;
|
|
815
|
+
border: none;
|
|
816
|
+
background: none;
|
|
817
|
+
text-align: left;
|
|
818
|
+
font-size: 0.8rem;
|
|
819
|
+
color: #c44;
|
|
820
|
+
cursor: pointer;
|
|
821
|
+
}
|
|
822
|
+
.incomplete-field-item:hover {
|
|
823
|
+
background: #fff0f0;
|
|
824
|
+
}
|
|
825
|
+
.incomplete-field-item:not(:last-child) {
|
|
826
|
+
border-bottom: 1px solid #f0f0f0;
|
|
827
|
+
}
|
|
772
828
|
.field-navigator-controls {
|
|
773
829
|
display: flex;
|
|
774
830
|
align-items: center;
|
|
@@ -790,28 +846,20 @@
|
|
|
790
846
|
opacity: 0.4;
|
|
791
847
|
cursor: default;
|
|
792
848
|
}
|
|
793
|
-
.
|
|
794
|
-
font-size: 0.85rem;
|
|
795
|
-
color: #888;
|
|
796
|
-
min-width: 50px;
|
|
797
|
-
text-align: center;
|
|
798
|
-
}
|
|
799
|
-
.complete-btn {
|
|
800
|
-
padding: 0.5rem;
|
|
849
|
+
.nav-btn-complete {
|
|
801
850
|
background: #111;
|
|
802
851
|
color: #fff;
|
|
803
|
-
border:
|
|
804
|
-
border-radius: 4px;
|
|
805
|
-
cursor: pointer;
|
|
806
|
-
font-size: 0.9rem;
|
|
852
|
+
border-color: #111;
|
|
807
853
|
font-weight: 500;
|
|
808
854
|
}
|
|
809
|
-
.
|
|
855
|
+
.nav-btn-complete:hover:not(:disabled) {
|
|
810
856
|
background: #333;
|
|
811
857
|
}
|
|
812
|
-
.
|
|
813
|
-
|
|
814
|
-
|
|
858
|
+
.field-navigator-position {
|
|
859
|
+
font-size: 0.85rem;
|
|
860
|
+
color: #888;
|
|
861
|
+
min-width: 50px;
|
|
862
|
+
text-align: center;
|
|
815
863
|
}
|
|
816
864
|
.loading-indicator {
|
|
817
865
|
text-align: center;
|
package/dist/index.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/styles/pdf-builder.css"],"sourcesContent":["/* ── Layout ────────────────────────────────── */\n\n.designer-layout,\n.signer-layout {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n font-family: system-ui, -apple-system, sans-serif;\n color: #222;\n background: #fafafa;\n}\n\n/* ── Designer Header ─────────────────────── */\n\n.designer-header {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 0 1rem;\n height: 48px;\n border-bottom: 1px solid #e5e5e5;\n background: #fff;\n gap: 0.5rem;\n flex-shrink: 0;\n}\n\n.designer-header-right {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.header-btn {\n padding: 0.4rem 1rem;\n border: 1px solid transparent;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 500;\n white-space: nowrap;\n line-height: 1.4;\n box-sizing: border-box;\n}\n\n.header-btn-primary {\n background: #111;\n color: #fff;\n border-color: #111;\n}\n.header-btn-primary:hover { background: #333; border-color: #333; }\n\n.header-btn-outline {\n background: #fff;\n color: #555;\n border-color: #ccc;\n}\n.header-btn-outline:hover { background: #f5f5f5; border-color: #999; }\n\n/* ── Designer Body (3-column) ────────────── */\n\n.designer-body {\n display: flex;\n flex: 1;\n overflow: hidden;\n}\n\n/* ── Left Palette ────────────────────────── */\n\n.designer-palette {\n width: 140px;\n flex-shrink: 0;\n border-right: 1px solid #e5e5e5;\n background: #fff;\n padding: 0.75rem 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n overflow-y: auto;\n}\n\n.palette-heading {\n font-size: 0.7rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: #999;\n padding: 0 0.75rem 0.5rem;\n}\n\n.palette-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 0.75rem;\n cursor: grab;\n font-size: 0.85rem;\n color: #555;\n border-left: 3px solid transparent;\n transition: all 0.1s;\n user-select: none;\n}\n\n.palette-item:hover {\n background: #f5f5f5;\n color: #222;\n}\n\n.palette-item.active {\n background: #f0f0f0;\n color: #111;\n border-left-color: #111;\n font-weight: 500;\n}\n\n.palette-item:active {\n cursor: grabbing;\n}\n\n.palette-item-icon {\n width: 22px;\n text-align: center;\n font-size: 0.9rem;\n flex-shrink: 0;\n}\n\n.palette-item-label {\n flex: 1;\n}\n\n.palette-divider {\n height: 1px;\n background: #e5e5e5;\n margin: 0.5rem 0.75rem;\n}\n\n.palette-role-section {\n padding: 0 0.75rem;\n display: flex;\n flex-direction: column;\n gap: 0.35rem;\n}\n\n.palette-role-select {\n width: 100%;\n padding: 0.3rem 0.4rem;\n border: 1.5px solid #ddd;\n border-radius: 4px;\n font-size: 0.8rem;\n font-weight: 500;\n background: #fff;\n cursor: pointer;\n}\n\n.palette-role-add-link {\n background: none;\n border: none;\n cursor: pointer;\n font-size: 0.75rem;\n color: #888;\n padding: 0;\n text-align: left;\n}\n.palette-role-add-link:hover { color: #555; }\n\n.palette-role-add-inline {\n display: flex;\n flex-wrap: wrap;\n gap: 0.25rem;\n}\n\n.palette-role-add-inline input {\n width: 100%;\n padding: 0.25rem 0.4rem;\n border: 1px solid #ccc;\n border-radius: 4px;\n font-size: 0.75rem;\n}\n\n.palette-role-add-inline button {\n padding: 0.2rem 0.4rem;\n border: 1px solid #ccc;\n border-radius: 4px;\n background: #fff;\n cursor: pointer;\n font-size: 0.75rem;\n}\n\n/* ── Signer toolbar (kept for backward compat) ── */\n\n.designer-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.5rem 1rem;\n border-bottom: 1px solid #e5e5e5;\n background: #fff;\n gap: 1rem;\n flex-wrap: wrap;\n}\n\n.toolbar-left,\n.toolbar-right {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.signer-content {\n display: flex;\n flex: 1;\n overflow: hidden;\n}\n\n.designer-pdf-area,\n.signer-pdf-area {\n flex: 1;\n overflow-y: auto;\n padding: 1rem;\n background: #eee;\n}\n\n.designer-panel,\n.signer-panel {\n width: 320px;\n overflow: hidden;\n border-left: 1px solid #e5e5e5;\n background: #fff;\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n}\n\n/* ── Panel Resize Handle ─────────────────── */\n\n.panel-resize-handle {\n width: 5px;\n cursor: col-resize;\n background: transparent;\n flex-shrink: 0;\n position: relative;\n z-index: 20;\n margin-right: -5px;\n transition: background 0.15s;\n}\n\n.panel-resize-handle:hover,\n.panel-resize-handle:active {\n background: #d0d0d0;\n}\n\n/* ── Ink Color Picker ────────────────────── */\n\n.ink-color-picker {\n display: flex;\n gap: 0.4rem;\n align-items: center;\n}\n\n.ink-color-swatch {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n border: 2px solid transparent;\n cursor: pointer;\n padding: 0;\n transition: border-color 0.1s;\n}\n\n.ink-color-swatch.active {\n border-color: #111;\n box-shadow: 0 0 0 2px #fff, 0 0 0 3px #111;\n}\n\n.ink-color-swatch:hover:not(.active) {\n border-color: #999;\n}\n\n/* ── Panel Role Selector ─────────────────── */\n\n.panel-role-section {\n padding: 0.75rem 1rem;\n border-bottom: 1px solid #eee;\n}\n\n.panel-role-label {\n display: block;\n font-size: 0.7rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: #999;\n margin-bottom: 0.35rem;\n}\n\n.panel-role-row {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n flex-wrap: wrap;\n}\n\n.panel-role-select {\n padding: 0.3rem 0.5rem;\n border: 1.5px solid #ddd;\n border-radius: 4px;\n font-size: 0.85rem;\n font-weight: 500;\n background: #fff;\n cursor: pointer;\n min-width: 100px;\n}\n\n.panel-role-add-link {\n background: none;\n border: none;\n cursor: pointer;\n font-size: 0.8rem;\n color: #888;\n padding: 0;\n white-space: nowrap;\n}\n.panel-role-add-link:hover { color: #555; }\n\n.panel-role-add-inline {\n display: flex;\n gap: 0.25rem;\n align-items: center;\n flex: 1;\n}\n\n.panel-role-add-inline input {\n padding: 0.25rem 0.4rem;\n border: 1px solid #ccc;\n border-radius: 4px;\n font-size: 0.8rem;\n width: 90px;\n}\n\n.panel-role-add-inline button {\n padding: 0.25rem 0.5rem;\n border: 1px solid #ccc;\n border-radius: 4px;\n background: #fff;\n cursor: pointer;\n font-size: 0.8rem;\n}\n\n/* ── Panel Tabs ──────────────────────────── */\n\n.panel-tabs {\n display: flex;\n border-bottom: 1px solid #e5e5e5;\n flex-shrink: 0;\n}\n\n.panel-tab {\n flex: 1;\n padding: 0.55rem 0;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 0.8rem;\n color: #888;\n font-weight: 500;\n text-align: center;\n transition: all 0.1s;\n}\n\n.panel-tab.active {\n color: #111;\n border-bottom-color: #111;\n}\n\n.panel-tab:hover:not(.active) {\n color: #555;\n}\n\n.panel-tab-content {\n flex: 1;\n overflow-y: auto;\n padding: 1rem;\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n/* ── PDF Viewer ───────────────────────────── */\n\n.pdf-viewer {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n align-items: center;\n}\n\n.pdf-page {\n position: relative;\n width: 100%;\n max-width: 800px;\n background: #fff;\n box-shadow: 0 1px 4px rgba(0,0,0,0.1);\n cursor: crosshair;\n}\n\n.pdf-page-image {\n width: 100%;\n height: 100%;\n display: block;\n pointer-events: none;\n}\n\n/* ── Field Overlays ───────────────────────── */\n\n.field-overlay {\n position: absolute;\n border: 1.5px solid;\n border-radius: 2px;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n transition: box-shadow 0.1s;\n}\n\n.field-overlay.selected {\n box-shadow: 0 0 0 2px rgba(0,0,0,0.2);\n z-index: 10;\n}\n\n.field-overlay.editable {\n cursor: text;\n}\n\n.field-overlay-label {\n position: absolute;\n top: -18px;\n left: -1px;\n font-size: 10px;\n color: #fff;\n padding: 1px 6px;\n border-radius: 2px 2px 0 0;\n white-space: nowrap;\n pointer-events: none;\n}\n\n.field-overlay-placeholder {\n color: #999;\n font-size: 11px;\n padding: 2px 4px;\n width: 100%;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n}\n\n.field-overlay-placeholder.readonly {\n color: #666;\n}\n\n.field-overlay-value {\n font-size: 11px;\n padding: 2px 4px;\n width: 100%;\n}\n\n.field-inline-input {\n width: 100%;\n height: 100%;\n border: none;\n background: transparent;\n padding: 2px 4px;\n outline: none;\n font-family: inherit;\n}\n\n.field-signature-preview {\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n.field-signature-filled {\n width: 100%;\n height: 100%;\n cursor: pointer;\n}\n\n.field-checkbox-display {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n font-weight: bold;\n}\n\n.field-checkbox-display.editable {\n cursor: pointer;\n}\n\n.field-resize-handle {\n position: absolute;\n bottom: 0;\n right: 0;\n width: 10px;\n height: 10px;\n background: #fff;\n border: 1px solid #999;\n cursor: nwse-resize;\n}\n\n/* ── Buttons ──────────────────────────────── */\n\n.upload-btn {\n display: inline-block;\n padding: 0.4rem 1rem;\n background: #111;\n color: #fff;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 500;\n}\n\n.upload-btn:hover { background: #333; }\n\n.upload-btn-small { font-size: 0.8rem; padding: 0.3rem 0.75rem; background: #555; }\n.upload-btn-large { font-size: 1rem; padding: 0.6rem 1.5rem; }\n\n.export-btn {\n padding: 0.4rem 1rem;\n background: #111;\n color: #fff;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 500;\n}\n\n.export-btn:hover { background: #333; }\n\n.field-type-selector {\n display: flex;\n gap: 2px;\n}\n\n.field-type-btn {\n padding: 0.3rem 0.6rem;\n background: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.8rem;\n color: #555;\n}\n\n.field-type-btn.active {\n background: #111;\n color: #fff;\n border-color: #111;\n}\n\n.field-type-btn:hover:not(.active) {\n background: #f5f5f5;\n}\n\n/* ── Signer Roles (legacy chip style) ─────── */\n\n.signer-role-selector {\n padding: 0.5rem 1rem;\n border-bottom: 1px solid #e5e5e5;\n background: #fff;\n}\n\n.signer-role-label {\n font-size: 0.75rem;\n color: #888;\n margin-bottom: 0.35rem;\n}\n\n.signer-role-list {\n display: flex;\n gap: 0.35rem;\n flex-wrap: wrap;\n align-items: center;\n}\n\n.signer-role-chip {\n padding: 0.2rem 0.6rem;\n border: 1.5px solid;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.8rem;\n font-weight: 500;\n background: transparent;\n transition: all 0.1s;\n}\n\n.signer-role-remove {\n margin-left: 0.3rem;\n cursor: pointer;\n font-size: 1rem;\n}\n\n.signer-role-add-btn {\n padding: 0.2rem 0.5rem;\n border: 1px dashed #ccc;\n border-radius: 4px;\n background: none;\n cursor: pointer;\n font-size: 0.8rem;\n color: #888;\n}\n\n.signer-role-add-input {\n display: flex;\n gap: 0.25rem;\n align-items: center;\n}\n\n.signer-role-add-input input {\n padding: 0.2rem 0.4rem;\n border: 1px solid #ccc;\n border-radius: 4px;\n font-size: 0.8rem;\n width: 120px;\n}\n\n.signer-role-add-input button {\n padding: 0.2rem 0.5rem;\n border: 1px solid #ccc;\n border-radius: 4px;\n background: #fff;\n cursor: pointer;\n font-size: 0.8rem;\n}\n\n/* ── Property Panel ───────────────────────── */\n\n.field-property-panel {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n.panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.panel-header h3 {\n margin: 0;\n font-size: 1rem;\n}\n\n.panel-delete-btn {\n padding: 0.2rem 0.5rem;\n background: none;\n border: 1px solid #e44;\n color: #e44;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.8rem;\n}\n\n.panel-delete-btn:hover {\n background: #e44;\n color: #fff;\n}\n\n.panel-field label {\n display: block;\n font-size: 0.75rem;\n color: #888;\n margin-bottom: 0.2rem;\n}\n\n.panel-field input[type=\"text\"],\n.panel-field input[type=\"number\"],\n.panel-field input[type=\"email\"],\n.panel-field input[type=\"tel\"],\n.panel-field input[type=\"date\"],\n.panel-field select {\n width: 100%;\n padding: 0.35rem 0.5rem;\n border: 1px solid #ddd;\n border-radius: 4px;\n font-size: 0.85rem;\n background: #fff;\n}\n\n.panel-field-group {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 0.5rem;\n}\n\n.panel-checkbox-label {\n display: flex;\n align-items: center;\n gap: 0.4rem;\n font-size: 0.85rem;\n cursor: pointer;\n}\n\n.panel-empty {\n color: #888;\n font-size: 0.85rem;\n padding: 2rem 0.5rem;\n text-align: center;\n}\n\n/* ── Pre-fill ─────────────────────────────── */\n\n.prefill-section {\n border-top: 1px solid #eee;\n padding-top: 0.75rem;\n}\n\n.prefill-section h4 {\n margin: 0 0 0.5rem;\n font-size: 0.85rem;\n color: #555;\n}\n\n.prefill-input {\n width: 100%;\n padding: 0.35rem 0.5rem;\n border: 1px solid #ddd;\n border-radius: 4px;\n font-size: 0.85rem;\n}\n\n/* ── Field List ───────────────────────────── */\n\n.field-list {\n display: flex;\n flex-direction: column;\n}\n\n.field-list h4 {\n margin: 0 0 0.5rem;\n font-size: 0.85rem;\n color: #555;\n}\n\n.field-list-item {\n display: flex;\n align-items: center;\n gap: 0.4rem;\n padding: 0.35rem 0.5rem;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.8rem;\n}\n\n.field-list-item:hover { background: #f5f5f5; }\n.field-list-item.active { background: #eee; }\n\n.field-list-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.field-list-name {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.field-list-page {\n color: #aaa;\n font-size: 0.75rem;\n}\n\n.field-list-required {\n color: #e44;\n font-weight: bold;\n}\n\n/* ── Signer Panel ─────────────────────────── */\n\n.signer-field-input h3 {\n margin: 0 0 0.5rem;\n font-size: 1rem;\n}\n\n.required-badge {\n display: inline-block;\n font-size: 0.7rem;\n background: #fee;\n color: #c33;\n padding: 1px 6px;\n border-radius: 3px;\n margin-bottom: 0.5rem;\n}\n\n.signer-text-input {\n width: 100%;\n padding: 0.4rem 0.5rem;\n border: 1px solid #ddd;\n border-radius: 4px;\n font-size: 0.9rem;\n}\n\n.signer-checkbox-label {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.9rem;\n cursor: pointer;\n}\n\n.signer-date-display {\n font-size: 0.9rem;\n color: #555;\n padding: 0.4rem 0;\n}\n\n.signer-field-readonly {\n color: #888;\n font-size: 0.85rem;\n}\n\n.signer-field-readonly h3 {\n margin: 0 0 0.25rem;\n font-size: 1rem;\n color: #555;\n}\n\n/* ── Signature Canvas ─────────────────────── */\n\n.signature-canvas-wrapper {\n display: flex;\n flex-direction: column;\n gap: 0.35rem;\n}\n\n.signature-canvas {\n border: 1px solid #ddd;\n border-radius: 4px;\n background: #fff;\n cursor: crosshair;\n width: 100%;\n height: auto;\n display: block;\n box-sizing: border-box;\n}\n\n.signature-canvas-actions {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.signature-clear-btn {\n padding: 0.2rem 0.5rem;\n background: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.8rem;\n color: #888;\n}\n\n.signature-hint {\n font-size: 0.75rem;\n color: #aaa;\n}\n\n/* ── Field Navigator ──────────────────────── */\n\n.field-navigator {\n border-top: 1px solid #eee;\n padding-top: 0.75rem;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.field-navigator-progress {\n font-size: 0.8rem;\n color: #888;\n text-align: center;\n}\n\n.field-navigator-controls {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 1rem;\n}\n\n.nav-btn {\n padding: 0.35rem 1rem;\n border: 1px solid #ddd;\n border-radius: 4px;\n background: #fff;\n cursor: pointer;\n font-size: 0.85rem;\n}\n\n.nav-btn:hover:not(:disabled) { background: #f5f5f5; }\n.nav-btn:disabled { opacity: 0.4; cursor: default; }\n\n.field-navigator-position {\n font-size: 0.85rem;\n color: #888;\n min-width: 50px;\n text-align: center;\n}\n\n.complete-btn {\n padding: 0.5rem;\n background: #111;\n color: #fff;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.9rem;\n font-weight: 500;\n}\n\n.complete-btn:hover:not(:disabled) { background: #333; }\n.complete-btn:disabled { opacity: 0.4; cursor: default; }\n\n/* ── States ───────────────────────────────── */\n\n.loading-indicator {\n text-align: center;\n padding: 2rem;\n color: #888;\n font-size: 0.9rem;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n gap: 0.75rem;\n color: #888;\n}\n\n.empty-state h2 {\n margin: 0;\n font-size: 1.25rem;\n color: #555;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 0.9rem;\n}\n\n/* ── Powered By ───────────────────────────── */\n\n.powered-by {\n text-align: center;\n padding: 0.4rem;\n font-size: 0.7rem;\n color: #aaa;\n border-top: 1px solid #eee;\n background: #fff;\n}\n\n.powered-by a {\n color: #888;\n text-decoration: none;\n}\n\n.powered-by a:hover {\n text-decoration: underline;\n}\n\n/* ── Signer Panel Structure ──────────────── */\n\n.signer-panel-header {\n border-bottom: 1px solid #e5e5e5;\n padding: 0.75rem;\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-shrink: 0;\n}\n\n.signer-panel-body {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n}\n\n.signer-panel-footer {\n margin-top: auto;\n flex-shrink: 0;\n}\n\n.signer-role-indicator {\n display: flex;\n flex-direction: column;\n gap: 0.1rem;\n font-size: 0.95rem;\n color: #333;\n}\n\n.signer-role-indicator-label {\n font-size: 0.65rem;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: #999;\n font-weight: 500;\n}\n\n.signer-step-badge {\n font-size: 0.7rem;\n color: #888;\n background: #f0f0f0;\n padding: 0.2rem 0.5rem;\n border-radius: 10px;\n white-space: nowrap;\n}\n\n/* ── Inactive signer fields ──────────────── */\n\n.field-overlay.inactive-signer {\n opacity: 0.5;\n}\n\n.field-overlay.inactive-signer .field-overlay-placeholder,\n.field-overlay.inactive-signer .field-overlay-value,\n.field-overlay.inactive-signer .field-checkbox-display {\n color: #bbb;\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/styles/pdf-builder.css"],"sourcesContent":["/* ── Layout ────────────────────────────────── */\n\n.designer-layout,\n.signer-layout {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n font-family: system-ui, -apple-system, sans-serif;\n color: #222;\n background: #fafafa;\n}\n\n/* ── Designer Header ─────────────────────── */\n\n.designer-header {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 0 1rem;\n height: 48px;\n border-bottom: 1px solid #e5e5e5;\n background: #fff;\n gap: 0.5rem;\n flex-shrink: 0;\n}\n\n.designer-header-right {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.header-btn {\n padding: 0.4rem 1rem;\n border: 1px solid transparent;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 500;\n white-space: nowrap;\n line-height: 1.4;\n box-sizing: border-box;\n}\n\n.header-btn-primary {\n background: #111;\n color: #fff;\n border-color: #111;\n}\n.header-btn-primary:hover { background: #333; border-color: #333; }\n\n.header-btn-outline {\n background: #fff;\n color: #555;\n border-color: #ccc;\n}\n.header-btn-outline:hover { background: #f5f5f5; border-color: #999; }\n\n/* ── Designer Body (3-column) ────────────── */\n\n.designer-body {\n display: flex;\n flex: 1;\n overflow: hidden;\n}\n\n/* ── Left Palette ────────────────────────── */\n\n.designer-palette {\n width: 140px;\n flex-shrink: 0;\n border-right: 1px solid #e5e5e5;\n background: #fff;\n padding: 0.75rem 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n overflow-y: auto;\n}\n\n.palette-heading {\n font-size: 0.7rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: #999;\n padding: 0 0.75rem 0.5rem;\n}\n\n.palette-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 0.75rem;\n cursor: grab;\n font-size: 0.85rem;\n color: #555;\n border-left: 3px solid transparent;\n transition: all 0.1s;\n user-select: none;\n}\n\n.palette-item:hover {\n background: #f5f5f5;\n color: #222;\n}\n\n.palette-item.active {\n background: #f0f0f0;\n color: #111;\n border-left-color: #111;\n font-weight: 500;\n}\n\n.palette-item:active {\n cursor: grabbing;\n}\n\n.palette-item-icon {\n width: 22px;\n text-align: center;\n font-size: 0.9rem;\n flex-shrink: 0;\n}\n\n.palette-item-label {\n flex: 1;\n}\n\n.palette-divider {\n height: 1px;\n background: #e5e5e5;\n margin: 0.5rem 0.75rem;\n}\n\n.palette-role-section {\n padding: 0 0.75rem;\n display: flex;\n flex-direction: column;\n gap: 0.35rem;\n}\n\n.palette-role-select {\n width: 100%;\n padding: 0.3rem 0.4rem;\n border: 1.5px solid #ddd;\n border-radius: 4px;\n font-size: 0.8rem;\n font-weight: 500;\n background: #fff;\n cursor: pointer;\n}\n\n.palette-role-add-link {\n background: none;\n border: none;\n cursor: pointer;\n font-size: 0.75rem;\n color: #888;\n padding: 0;\n text-align: left;\n}\n.palette-role-add-link:hover { color: #555; }\n\n.palette-role-add-inline {\n display: flex;\n flex-wrap: wrap;\n gap: 0.25rem;\n}\n\n.palette-role-add-inline input {\n width: 100%;\n padding: 0.25rem 0.4rem;\n border: 1px solid #ccc;\n border-radius: 4px;\n font-size: 0.75rem;\n}\n\n.palette-role-add-inline button {\n padding: 0.2rem 0.4rem;\n border: 1px solid #ccc;\n border-radius: 4px;\n background: #fff;\n cursor: pointer;\n font-size: 0.75rem;\n}\n\n/* ── Signer toolbar (kept for backward compat) ── */\n\n.designer-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.5rem 1rem;\n border-bottom: 1px solid #e5e5e5;\n background: #fff;\n gap: 1rem;\n flex-wrap: wrap;\n}\n\n.toolbar-left,\n.toolbar-right {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.signer-content {\n display: flex;\n flex: 1;\n overflow: hidden;\n}\n\n.designer-pdf-area,\n.signer-pdf-area {\n flex: 1;\n overflow-y: auto;\n padding: 1rem;\n background: #eee;\n}\n\n.designer-panel,\n.signer-panel {\n width: 320px;\n overflow: hidden;\n border-left: 1px solid #e5e5e5;\n background: #fff;\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n}\n\n/* ── Panel Resize Handle ─────────────────── */\n\n.panel-resize-handle {\n width: 5px;\n cursor: col-resize;\n background: transparent;\n flex-shrink: 0;\n position: relative;\n z-index: 20;\n margin-right: -5px;\n transition: background 0.15s;\n}\n\n.panel-resize-handle:hover,\n.panel-resize-handle:active {\n background: #d0d0d0;\n}\n\n/* ── Ink Color Picker ────────────────────── */\n\n.ink-color-picker {\n display: flex;\n gap: 0.4rem;\n align-items: center;\n}\n\n.ink-color-swatch {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n border: 2px solid transparent;\n cursor: pointer;\n padding: 0;\n transition: border-color 0.1s;\n}\n\n.ink-color-swatch.active {\n border-color: #111;\n box-shadow: 0 0 0 2px #fff, 0 0 0 3px #111;\n}\n\n.ink-color-swatch:hover:not(.active) {\n border-color: #999;\n}\n\n/* ── Panel Role Selector ─────────────────── */\n\n.panel-role-section {\n padding: 0.75rem 1rem;\n border-bottom: 1px solid #eee;\n}\n\n.panel-role-label {\n display: block;\n font-size: 0.7rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: #999;\n margin-bottom: 0.35rem;\n}\n\n.panel-role-row {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n flex-wrap: wrap;\n}\n\n.panel-role-select {\n padding: 0.3rem 0.5rem;\n border: 1.5px solid #ddd;\n border-radius: 4px;\n font-size: 0.85rem;\n font-weight: 500;\n background: #fff;\n cursor: pointer;\n min-width: 100px;\n}\n\n.panel-role-add-link {\n background: none;\n border: none;\n cursor: pointer;\n font-size: 0.8rem;\n color: #888;\n padding: 0;\n white-space: nowrap;\n}\n.panel-role-add-link:hover { color: #555; }\n\n.panel-role-add-inline {\n display: flex;\n gap: 0.25rem;\n align-items: center;\n flex: 1;\n}\n\n.panel-role-add-inline input {\n padding: 0.25rem 0.4rem;\n border: 1px solid #ccc;\n border-radius: 4px;\n font-size: 0.8rem;\n width: 90px;\n}\n\n.panel-role-add-inline button {\n padding: 0.25rem 0.5rem;\n border: 1px solid #ccc;\n border-radius: 4px;\n background: #fff;\n cursor: pointer;\n font-size: 0.8rem;\n}\n\n/* ── Panel Tabs ──────────────────────────── */\n\n.panel-tabs {\n display: flex;\n border-bottom: 1px solid #e5e5e5;\n flex-shrink: 0;\n}\n\n.panel-tab {\n flex: 1;\n padding: 0.55rem 0;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 0.8rem;\n color: #888;\n font-weight: 500;\n text-align: center;\n transition: all 0.1s;\n}\n\n.panel-tab.active {\n color: #111;\n border-bottom-color: #111;\n}\n\n.panel-tab:hover:not(.active) {\n color: #555;\n}\n\n.panel-tab-content {\n flex: 1;\n overflow-y: auto;\n padding: 1rem;\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n/* ── PDF Viewer ───────────────────────────── */\n\n.pdf-viewer {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n align-items: center;\n}\n\n.pdf-page {\n position: relative;\n width: 100%;\n max-width: 800px;\n background: #fff;\n box-shadow: 0 1px 4px rgba(0,0,0,0.1);\n cursor: crosshair;\n}\n\n.pdf-page-image {\n width: 100%;\n height: 100%;\n display: block;\n pointer-events: none;\n}\n\n/* ── Field Overlays ───────────────────────── */\n\n.field-overlay {\n position: absolute;\n border: 1.5px solid;\n border-radius: 2px;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n transition: box-shadow 0.1s;\n}\n\n.field-overlay.selected {\n box-shadow: 0 0 0 2px rgba(0,0,0,0.2);\n z-index: 10;\n}\n\n.field-overlay.editable {\n cursor: text;\n}\n\n.field-overlay-label {\n position: absolute;\n top: -18px;\n left: -1px;\n font-size: 10px;\n color: #fff;\n padding: 1px 6px;\n border-radius: 2px 2px 0 0;\n white-space: nowrap;\n pointer-events: none;\n}\n\n.field-overlay-placeholder {\n color: #999;\n font-size: 11px;\n padding: 2px 4px;\n width: 100%;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n}\n\n.field-overlay-placeholder.readonly {\n color: #666;\n}\n\n.field-overlay-value {\n font-size: 11px;\n padding: 2px 4px;\n width: 100%;\n}\n\n.field-inline-input {\n width: 100%;\n height: 100%;\n border: none;\n background: transparent;\n padding: 2px 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n outline: none;\n font-family: inherit;\n}\n\n.field-signature-preview {\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n.field-signature-filled {\n width: 100%;\n height: 100%;\n cursor: pointer;\n}\n\n.field-checkbox-display {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n font-weight: bold;\n}\n\n.field-checkbox-display.editable {\n cursor: pointer;\n}\n\n.field-resize-handle {\n position: absolute;\n bottom: 0;\n right: 0;\n width: 10px;\n height: 10px;\n background: #fff;\n border: 1px solid #999;\n cursor: nwse-resize;\n}\n\n/* ── Buttons ──────────────────────────────── */\n\n.upload-btn {\n display: inline-block;\n padding: 0.4rem 1rem;\n background: #111;\n color: #fff;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 500;\n}\n\n.upload-btn:hover { background: #333; }\n\n.upload-btn-small { font-size: 0.8rem; padding: 0.3rem 0.75rem; background: #555; }\n.upload-btn-large { font-size: 1rem; padding: 0.6rem 1.5rem; }\n\n.export-btn {\n padding: 0.4rem 1rem;\n background: #111;\n color: #fff;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 500;\n}\n\n.export-btn:hover { background: #333; }\n\n.field-type-selector {\n display: flex;\n gap: 2px;\n}\n\n.field-type-btn {\n padding: 0.3rem 0.6rem;\n background: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.8rem;\n color: #555;\n}\n\n.field-type-btn.active {\n background: #111;\n color: #fff;\n border-color: #111;\n}\n\n.field-type-btn:hover:not(.active) {\n background: #f5f5f5;\n}\n\n/* ── Signer Roles (legacy chip style) ─────── */\n\n.signer-role-selector {\n padding: 0.5rem 1rem;\n border-bottom: 1px solid #e5e5e5;\n background: #fff;\n}\n\n.signer-role-label {\n font-size: 0.75rem;\n color: #888;\n margin-bottom: 0.35rem;\n}\n\n.signer-role-list {\n display: flex;\n gap: 0.35rem;\n flex-wrap: wrap;\n align-items: center;\n}\n\n.signer-role-chip {\n padding: 0.2rem 0.6rem;\n border: 1.5px solid;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.8rem;\n font-weight: 500;\n background: transparent;\n transition: all 0.1s;\n}\n\n.signer-role-remove {\n margin-left: 0.3rem;\n cursor: pointer;\n font-size: 1rem;\n}\n\n.signer-role-add-btn {\n padding: 0.2rem 0.5rem;\n border: 1px dashed #ccc;\n border-radius: 4px;\n background: none;\n cursor: pointer;\n font-size: 0.8rem;\n color: #888;\n}\n\n.signer-role-add-input {\n display: flex;\n gap: 0.25rem;\n align-items: center;\n}\n\n.signer-role-add-input input {\n padding: 0.2rem 0.4rem;\n border: 1px solid #ccc;\n border-radius: 4px;\n font-size: 0.8rem;\n width: 120px;\n}\n\n.signer-role-add-input button {\n padding: 0.2rem 0.5rem;\n border: 1px solid #ccc;\n border-radius: 4px;\n background: #fff;\n cursor: pointer;\n font-size: 0.8rem;\n}\n\n/* ── Property Panel ───────────────────────── */\n\n.field-property-panel {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n.panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.panel-header h3 {\n margin: 0;\n font-size: 1rem;\n}\n\n.panel-delete-btn {\n padding: 0.2rem 0.5rem;\n background: none;\n border: 1px solid #e44;\n color: #e44;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.8rem;\n}\n\n.panel-delete-btn:hover {\n background: #e44;\n color: #fff;\n}\n\n.panel-field label {\n display: block;\n font-size: 0.75rem;\n color: #888;\n margin-bottom: 0.2rem;\n}\n\n.panel-field input[type=\"text\"],\n.panel-field input[type=\"number\"],\n.panel-field input[type=\"email\"],\n.panel-field input[type=\"tel\"],\n.panel-field input[type=\"date\"],\n.panel-field select {\n width: 100%;\n padding: 0.35rem 0.5rem;\n border: 1px solid #ddd;\n border-radius: 4px;\n font-size: 0.85rem;\n background: #fff;\n}\n\n.panel-field-group {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 0.5rem;\n}\n\n.panel-checkbox-label {\n display: flex;\n align-items: center;\n gap: 0.4rem;\n font-size: 0.85rem;\n cursor: pointer;\n}\n\n.panel-empty {\n color: #888;\n font-size: 0.85rem;\n padding: 2rem 0.5rem;\n text-align: center;\n}\n\n/* ── Pre-fill ─────────────────────────────── */\n\n.prefill-section {\n border-top: 1px solid #eee;\n padding-top: 0.75rem;\n}\n\n.prefill-section h4 {\n margin: 0 0 0.5rem;\n font-size: 0.85rem;\n color: #555;\n}\n\n.prefill-input {\n width: 100%;\n padding: 0.35rem 0.5rem;\n border: 1px solid #ddd;\n border-radius: 4px;\n font-size: 0.85rem;\n}\n\n/* ── Field List ───────────────────────────── */\n\n.field-list {\n display: flex;\n flex-direction: column;\n}\n\n.field-list h4 {\n margin: 0 0 0.5rem;\n font-size: 0.85rem;\n color: #555;\n}\n\n.field-list-item {\n display: flex;\n align-items: center;\n gap: 0.4rem;\n padding: 0.35rem 0.5rem;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.8rem;\n}\n\n.field-list-item:hover { background: #f5f5f5; }\n.field-list-item.active { background: #eee; }\n\n.field-list-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.field-list-name {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.field-list-page {\n color: #aaa;\n font-size: 0.75rem;\n}\n\n.field-list-required {\n color: #e44;\n font-weight: bold;\n}\n\n/* ── Signer Panel ─────────────────────────── */\n\n.signer-field-input h3 {\n margin: 0 0 0.5rem;\n font-size: 1rem;\n}\n\n.required-badge {\n display: inline-block;\n font-size: 0.7rem;\n background: #fee;\n color: #c33;\n padding: 1px 6px;\n border-radius: 3px;\n margin-bottom: 0.5rem;\n}\n\n.signer-text-input {\n width: 100%;\n padding: 0.4rem 0.5rem;\n border: 1px solid #ddd;\n border-radius: 4px;\n font-size: 0.9rem;\n}\n\n.signer-font-size {\n display: flex;\n align-items: center;\n gap: 0.35rem;\n margin-top: 0.4rem;\n font-size: 0.8rem;\n color: #666;\n}\n\n.signer-font-size label {\n white-space: nowrap;\n}\n\n.signer-font-size input {\n width: 50px;\n padding: 0.2rem 0.3rem;\n border: 1px solid #ddd;\n border-radius: 3px;\n font-size: 0.8rem;\n text-align: center;\n}\n\n.signer-checkbox-label {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.9rem;\n cursor: pointer;\n}\n\n.signer-date-display {\n font-size: 0.9rem;\n color: #555;\n padding: 0.4rem 0;\n}\n\n.signer-field-readonly {\n color: #888;\n font-size: 0.85rem;\n}\n\n.signer-field-readonly h3 {\n margin: 0 0 0.25rem;\n font-size: 1rem;\n color: #555;\n}\n\n/* ── Signature Canvas ─────────────────────── */\n\n.signature-canvas-wrapper {\n display: flex;\n flex-direction: column;\n gap: 0.35rem;\n}\n\n.signature-canvas {\n border: 1px solid #ddd;\n border-radius: 4px;\n background: #fff;\n cursor: crosshair;\n width: 100%;\n height: auto;\n display: block;\n box-sizing: border-box;\n}\n\n.signature-canvas-actions {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.signature-clear-btn {\n padding: 0.2rem 0.5rem;\n background: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.8rem;\n color: #888;\n}\n\n.signature-hint {\n font-size: 0.75rem;\n color: #aaa;\n}\n\n/* ── Field Navigator ──────────────────────── */\n\n.field-navigator {\n border-top: 1px solid #eee;\n padding-top: 0.75rem;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.field-navigator-progress {\n font-size: 0.8rem;\n color: #888;\n text-align: center;\n}\n\n.field-navigator-progress.clickable {\n cursor: pointer;\n}\n\n.field-navigator-progress.clickable:hover {\n color: #555;\n}\n\n.field-navigator-toggle {\n margin-left: 0.3rem;\n font-size: 0.6rem;\n}\n\n.incomplete-fields-list {\n display: flex;\n flex-direction: column;\n max-height: 150px;\n overflow-y: auto;\n border: 1px solid #eee;\n border-radius: 4px;\n background: #fafafa;\n}\n\n.incomplete-field-item {\n padding: 0.4rem 0.6rem;\n border: none;\n background: none;\n text-align: left;\n font-size: 0.8rem;\n color: #c44;\n cursor: pointer;\n}\n\n.incomplete-field-item:hover {\n background: #fff0f0;\n}\n\n.incomplete-field-item:not(:last-child) {\n border-bottom: 1px solid #f0f0f0;\n}\n\n.field-navigator-controls {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 1rem;\n}\n\n.nav-btn {\n padding: 0.35rem 1rem;\n border: 1px solid #ddd;\n border-radius: 4px;\n background: #fff;\n cursor: pointer;\n font-size: 0.85rem;\n}\n\n.nav-btn:hover:not(:disabled) { background: #f5f5f5; }\n.nav-btn:disabled { opacity: 0.4; cursor: default; }\n\n.nav-btn-complete {\n background: #111;\n color: #fff;\n border-color: #111;\n font-weight: 500;\n}\n\n.nav-btn-complete:hover:not(:disabled) { background: #333; }\n\n.field-navigator-position {\n font-size: 0.85rem;\n color: #888;\n min-width: 50px;\n text-align: center;\n}\n\n/* ── States ───────────────────────────────── */\n\n.loading-indicator {\n text-align: center;\n padding: 2rem;\n color: #888;\n font-size: 0.9rem;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n gap: 0.75rem;\n color: #888;\n}\n\n.empty-state h2 {\n margin: 0;\n font-size: 1.25rem;\n color: #555;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 0.9rem;\n}\n\n/* ── Powered By ───────────────────────────── */\n\n.powered-by {\n text-align: center;\n padding: 0.4rem;\n font-size: 0.7rem;\n color: #aaa;\n border-top: 1px solid #eee;\n background: #fff;\n}\n\n.powered-by a {\n color: #888;\n text-decoration: none;\n}\n\n.powered-by a:hover {\n text-decoration: underline;\n}\n\n/* ── Signer Panel Structure ──────────────── */\n\n.signer-panel-header {\n border-bottom: 1px solid #e5e5e5;\n padding: 0.75rem;\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-shrink: 0;\n}\n\n.signer-panel-body {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n}\n\n.signer-panel-footer {\n margin-top: auto;\n flex-shrink: 0;\n}\n\n.signer-role-indicator {\n display: flex;\n flex-direction: column;\n gap: 0.1rem;\n font-size: 0.95rem;\n color: #333;\n}\n\n.signer-role-indicator-label {\n font-size: 0.65rem;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: #999;\n font-weight: 500;\n}\n\n.signer-step-badge {\n font-size: 0.7rem;\n color: #888;\n background: #f0f0f0;\n padding: 0.2rem 0.5rem;\n border-radius: 10px;\n white-space: nowrap;\n}\n\n/* ── Inactive signer fields ──────────────── */\n\n.field-overlay.inactive-signer {\n opacity: 0.5;\n}\n\n.field-overlay.inactive-signer .field-overlay-placeholder,\n.field-overlay.inactive-signer .field-overlay-value,\n.field-overlay.inactive-signer .field-checkbox-display {\n color: #bbb;\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.js
CHANGED
|
@@ -1160,7 +1160,7 @@ function DesignerView({
|
|
|
1160
1160
|
}
|
|
1161
1161
|
|
|
1162
1162
|
// src/components/pdf-builder/SignerView.tsx
|
|
1163
|
-
var
|
|
1163
|
+
var import_react5 = require("react");
|
|
1164
1164
|
|
|
1165
1165
|
// src/utils/pdfFiller.ts
|
|
1166
1166
|
var import_pdf_lib = require("pdf-lib");
|
|
@@ -1234,14 +1234,20 @@ async function generateFilledPdf(pdfSource, fields) {
|
|
|
1234
1234
|
});
|
|
1235
1235
|
}
|
|
1236
1236
|
} else {
|
|
1237
|
-
const
|
|
1237
|
+
const maxFontSize = Math.min(field.fontSize, h * 0.7);
|
|
1238
|
+
let fontSize = maxFontSize;
|
|
1239
|
+
const padding = 4;
|
|
1240
|
+
while (fontSize > 4) {
|
|
1241
|
+
const textWidth = font.widthOfTextAtSize(field.value, fontSize);
|
|
1242
|
+
if (textWidth <= w - padding) break;
|
|
1243
|
+
fontSize -= 0.5;
|
|
1244
|
+
}
|
|
1238
1245
|
page.drawText(field.value, {
|
|
1239
1246
|
x: x + 2,
|
|
1240
1247
|
y: y + h * 0.3,
|
|
1241
1248
|
size: fontSize,
|
|
1242
1249
|
font,
|
|
1243
|
-
color: inkColor
|
|
1244
|
-
maxWidth: w - 4
|
|
1250
|
+
color: inkColor
|
|
1245
1251
|
});
|
|
1246
1252
|
}
|
|
1247
1253
|
}
|
|
@@ -1267,7 +1273,13 @@ async function postPdfToCallback(bytes, callbackUrl, filename) {
|
|
|
1267
1273
|
}
|
|
1268
1274
|
|
|
1269
1275
|
// src/components/pdf-builder/FieldNavigator.tsx
|
|
1276
|
+
var import_react4 = require("react");
|
|
1270
1277
|
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
1278
|
+
function isFieldFilled(f) {
|
|
1279
|
+
if (!f.required) return true;
|
|
1280
|
+
if (f.type === "checkbox") return true;
|
|
1281
|
+
return !!f.value;
|
|
1282
|
+
}
|
|
1271
1283
|
function FieldNavigator({
|
|
1272
1284
|
fields,
|
|
1273
1285
|
currentFieldId,
|
|
@@ -1276,6 +1288,7 @@ function FieldNavigator({
|
|
|
1276
1288
|
onComplete,
|
|
1277
1289
|
completeLabel = "Complete"
|
|
1278
1290
|
}) {
|
|
1291
|
+
const [showIncomplete, setShowIncomplete] = (0, import_react4.useState)(false);
|
|
1279
1292
|
const currentIndex = fields.findIndex((f) => f.id === currentFieldId);
|
|
1280
1293
|
const hasPrev = currentIndex > 0;
|
|
1281
1294
|
const hasNext = currentIndex < fields.length - 1;
|
|
@@ -1289,18 +1302,36 @@ function FieldNavigator({
|
|
|
1289
1302
|
onNavigate(fields[currentIndex + 1].id);
|
|
1290
1303
|
}
|
|
1291
1304
|
};
|
|
1292
|
-
const filledCount = fields.filter(
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
return !!f.value;
|
|
1296
|
-
}).length;
|
|
1305
|
+
const filledCount = fields.filter(isFieldFilled).length;
|
|
1306
|
+
const incompleteFields = fields.filter((f) => !isFieldFilled(f));
|
|
1307
|
+
const showCompleteAsNext = !hasNext && allRequiredFilled;
|
|
1297
1308
|
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "field-navigator", children: [
|
|
1298
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1309
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
1310
|
+
"div",
|
|
1311
|
+
{
|
|
1312
|
+
className: `field-navigator-progress ${incompleteFields.length > 0 ? "clickable" : ""}`,
|
|
1313
|
+
onClick: () => incompleteFields.length > 0 && setShowIncomplete(!showIncomplete),
|
|
1314
|
+
children: [
|
|
1315
|
+
filledCount,
|
|
1316
|
+
" of ",
|
|
1317
|
+
fields.length,
|
|
1318
|
+
" fields completed",
|
|
1319
|
+
incompleteFields.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "field-navigator-toggle", children: showIncomplete ? "\u25B2" : "\u25BC" })
|
|
1320
|
+
]
|
|
1321
|
+
}
|
|
1322
|
+
),
|
|
1323
|
+
showIncomplete && incompleteFields.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "incomplete-fields-list", children: incompleteFields.map((f) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1324
|
+
"button",
|
|
1325
|
+
{
|
|
1326
|
+
className: "incomplete-field-item",
|
|
1327
|
+
onClick: () => {
|
|
1328
|
+
onNavigate(f.id);
|
|
1329
|
+
setShowIncomplete(false);
|
|
1330
|
+
},
|
|
1331
|
+
children: f.label
|
|
1332
|
+
},
|
|
1333
|
+
f.id
|
|
1334
|
+
)) }),
|
|
1304
1335
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "field-navigator-controls", children: [
|
|
1305
1336
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1306
1337
|
"button",
|
|
@@ -1312,7 +1343,14 @@ function FieldNavigator({
|
|
|
1312
1343
|
}
|
|
1313
1344
|
),
|
|
1314
1345
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "field-navigator-position", children: currentIndex >= 0 ? `${currentIndex + 1} / ${fields.length}` : "-" }),
|
|
1315
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1346
|
+
showCompleteAsNext ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1347
|
+
"button",
|
|
1348
|
+
{
|
|
1349
|
+
onClick: onComplete,
|
|
1350
|
+
className: "nav-btn nav-btn-complete",
|
|
1351
|
+
children: completeLabel
|
|
1352
|
+
}
|
|
1353
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1316
1354
|
"button",
|
|
1317
1355
|
{
|
|
1318
1356
|
onClick: handleNext,
|
|
@@ -1321,16 +1359,7 @@ function FieldNavigator({
|
|
|
1321
1359
|
children: "Next"
|
|
1322
1360
|
}
|
|
1323
1361
|
)
|
|
1324
|
-
] })
|
|
1325
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1326
|
-
"button",
|
|
1327
|
-
{
|
|
1328
|
-
onClick: onComplete,
|
|
1329
|
-
disabled: !allRequiredFilled,
|
|
1330
|
-
className: "complete-btn",
|
|
1331
|
-
children: completeLabel
|
|
1332
|
-
}
|
|
1333
|
-
)
|
|
1362
|
+
] })
|
|
1334
1363
|
] });
|
|
1335
1364
|
}
|
|
1336
1365
|
|
|
@@ -1357,28 +1386,28 @@ function SignerView({
|
|
|
1357
1386
|
] })
|
|
1358
1387
|
] }) });
|
|
1359
1388
|
}
|
|
1360
|
-
const [pages, setPages] = (0,
|
|
1361
|
-
const [fields, setFields] = (0,
|
|
1362
|
-
const [selectedFieldId, setSelectedFieldId] = (0,
|
|
1363
|
-
const [signerRoles, setSignerRoles] = (0,
|
|
1364
|
-
const [currentSignerIndex, setCurrentSignerIndex] = (0,
|
|
1389
|
+
const [pages, setPages] = (0, import_react5.useState)([]);
|
|
1390
|
+
const [fields, setFields] = (0, import_react5.useState)([]);
|
|
1391
|
+
const [selectedFieldId, setSelectedFieldId] = (0, import_react5.useState)(null);
|
|
1392
|
+
const [signerRoles, setSignerRoles] = (0, import_react5.useState)([]);
|
|
1393
|
+
const [currentSignerIndex, setCurrentSignerIndex] = (0, import_react5.useState)(() => {
|
|
1365
1394
|
if (initialSigner && signerOrderProp) {
|
|
1366
1395
|
const idx = signerOrderProp.indexOf(initialSigner);
|
|
1367
1396
|
return idx >= 0 ? idx : 0;
|
|
1368
1397
|
}
|
|
1369
1398
|
return 0;
|
|
1370
1399
|
});
|
|
1371
|
-
const initializedRef = (0,
|
|
1372
|
-
const [loading, setLoading] = (0,
|
|
1373
|
-
const [submitting, setSubmitting] = (0,
|
|
1374
|
-
const [pdfSource, setPdfSource] = (0,
|
|
1375
|
-
const [callbackUrl, setCallbackUrl] = (0,
|
|
1376
|
-
const containerRef = (0,
|
|
1400
|
+
const initializedRef = (0, import_react5.useRef)(false);
|
|
1401
|
+
const [loading, setLoading] = (0, import_react5.useState)(false);
|
|
1402
|
+
const [submitting, setSubmitting] = (0, import_react5.useState)(false);
|
|
1403
|
+
const [pdfSource, setPdfSource] = (0, import_react5.useState)(null);
|
|
1404
|
+
const [callbackUrl, setCallbackUrl] = (0, import_react5.useState)(initialCallbackUrl || "");
|
|
1405
|
+
const containerRef = (0, import_react5.useRef)(null);
|
|
1377
1406
|
const signerOrder = signerOrderProp || (signerRoles.length > 0 ? [...signerRoles.filter((r) => r !== "Sender"), ...signerRoles.filter((r) => r === "Sender")] : [initialSigner || "Signer 1"]);
|
|
1378
1407
|
const signer = signerOrder[currentSignerIndex] || signerOrder[0] || "Signer 1";
|
|
1379
1408
|
const isLastSigner = currentSignerIndex >= signerOrder.length - 1;
|
|
1380
1409
|
const isMultiSigner = signerOrder.length > 1;
|
|
1381
|
-
(0,
|
|
1410
|
+
(0, import_react5.useEffect)(() => {
|
|
1382
1411
|
if (initialTemplate) {
|
|
1383
1412
|
let templateFields = initialTemplate.fields;
|
|
1384
1413
|
if (initialTemplate.signerRoles) setSignerRoles(initialTemplate.signerRoles);
|
|
@@ -1448,7 +1477,7 @@ function SignerView({
|
|
|
1448
1477
|
window.addEventListener("message", handleMessage);
|
|
1449
1478
|
return () => window.removeEventListener("message", handleMessage);
|
|
1450
1479
|
}, [initialTemplate, initialPdfUrl]);
|
|
1451
|
-
const loadPdf = (0,
|
|
1480
|
+
const loadPdf = (0, import_react5.useCallback)(async (source) => {
|
|
1452
1481
|
setLoading(true);
|
|
1453
1482
|
try {
|
|
1454
1483
|
const rendered = await renderPdfPages(source);
|
|
@@ -1468,10 +1497,13 @@ function SignerView({
|
|
|
1468
1497
|
});
|
|
1469
1498
|
const selectedField = fields.find((f) => f.id === selectedFieldId) || null;
|
|
1470
1499
|
const isFieldEditable = selectedField ? selectedField.assignee === signer && selectedField.type !== "blackout" && selectedField.type !== "whiteout" : false;
|
|
1471
|
-
const handleFieldUpdate = (0,
|
|
1500
|
+
const handleFieldUpdate = (0, import_react5.useCallback)((id, value) => {
|
|
1472
1501
|
setFields((prev) => prev.map((f) => f.id === id ? { ...f, value } : f));
|
|
1473
1502
|
}, []);
|
|
1474
|
-
const
|
|
1503
|
+
const handleFieldPropertyUpdate = (0, import_react5.useCallback)((id, updates) => {
|
|
1504
|
+
setFields((prev) => prev.map((f) => f.id === id ? { ...f, ...updates } : f));
|
|
1505
|
+
}, []);
|
|
1506
|
+
const handleNavigate = (0, import_react5.useCallback)((fieldId) => {
|
|
1475
1507
|
setSelectedFieldId(fieldId);
|
|
1476
1508
|
const field = fields.find((f) => f.id === fieldId);
|
|
1477
1509
|
if (field && containerRef.current) {
|
|
@@ -1486,7 +1518,7 @@ function SignerView({
|
|
|
1486
1518
|
if (f.type === "checkbox") return true;
|
|
1487
1519
|
return !!f.value;
|
|
1488
1520
|
});
|
|
1489
|
-
const handleAdvanceOrSubmit = (0,
|
|
1521
|
+
const handleAdvanceOrSubmit = (0, import_react5.useCallback)(async () => {
|
|
1490
1522
|
if (!allRequiredFilled) return;
|
|
1491
1523
|
if (!isLastSigner) {
|
|
1492
1524
|
setCurrentSignerIndex((prev) => prev + 1);
|
|
@@ -1518,7 +1550,7 @@ function SignerView({
|
|
|
1518
1550
|
setSubmitting(false);
|
|
1519
1551
|
}
|
|
1520
1552
|
}, [pdfSource, fields, callbackUrl, allRequiredFilled, onComplete, isLastSigner]);
|
|
1521
|
-
const renderFieldContent = (0,
|
|
1553
|
+
const renderFieldContent = (0, import_react5.useCallback)((field) => {
|
|
1522
1554
|
if (field.type === "blackout" || field.type === "whiteout") {
|
|
1523
1555
|
return null;
|
|
1524
1556
|
}
|
|
@@ -1568,7 +1600,7 @@ function SignerView({
|
|
|
1568
1600
|
}
|
|
1569
1601
|
);
|
|
1570
1602
|
}, [signer, handleFieldUpdate, setSelectedFieldId]);
|
|
1571
|
-
(0,
|
|
1603
|
+
(0, import_react5.useEffect)(() => {
|
|
1572
1604
|
const sigFields = fields.filter((f) => f.assignee === signer && f.type === "signature" && f.value);
|
|
1573
1605
|
if (sigFields.length > 0) {
|
|
1574
1606
|
const dateStr = (/* @__PURE__ */ new Date()).toLocaleDateString();
|
|
@@ -1621,16 +1653,32 @@ function SignerView({
|
|
|
1621
1653
|
initialValue: selectedField.value
|
|
1622
1654
|
}
|
|
1623
1655
|
),
|
|
1624
|
-
selectedField.type === "text" && /* @__PURE__ */ (0, import_jsx_runtime6.
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1656
|
+
selectedField.type === "text" && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
1657
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1658
|
+
"input",
|
|
1659
|
+
{
|
|
1660
|
+
type: selectedField.textSubtype === "email" ? "email" : selectedField.textSubtype === "number" ? "number" : selectedField.textSubtype === "phone" ? "tel" : selectedField.textSubtype === "date" ? "date" : "text",
|
|
1661
|
+
value: selectedField.value,
|
|
1662
|
+
onChange: (e) => handleFieldUpdate(selectedField.id, e.target.value),
|
|
1663
|
+
placeholder: selectedField.placeholder,
|
|
1664
|
+
className: "signer-text-input"
|
|
1665
|
+
}
|
|
1666
|
+
),
|
|
1667
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "signer-font-size", children: [
|
|
1668
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("label", { children: "Font Size" }),
|
|
1669
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1670
|
+
"input",
|
|
1671
|
+
{
|
|
1672
|
+
type: "number",
|
|
1673
|
+
min: "6",
|
|
1674
|
+
max: "72",
|
|
1675
|
+
value: selectedField.fontSize,
|
|
1676
|
+
onChange: (e) => handleFieldPropertyUpdate(selectedField.id, { fontSize: Number(e.target.value) })
|
|
1677
|
+
}
|
|
1678
|
+
),
|
|
1679
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { children: "pt" })
|
|
1680
|
+
] })
|
|
1681
|
+
] }),
|
|
1634
1682
|
selectedField.type === "checkbox" && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("label", { className: "signer-checkbox-label", children: [
|
|
1635
1683
|
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1636
1684
|
"input",
|
|
@@ -1674,7 +1722,7 @@ function SignerView({
|
|
|
1674
1722
|
}
|
|
1675
1723
|
|
|
1676
1724
|
// src/components/pdf-builder/SignerRoleSelector.tsx
|
|
1677
|
-
var
|
|
1725
|
+
var import_react6 = require("react");
|
|
1678
1726
|
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
1679
1727
|
function SignerRoleSelector({
|
|
1680
1728
|
roles,
|
|
@@ -1683,8 +1731,8 @@ function SignerRoleSelector({
|
|
|
1683
1731
|
onAddRole,
|
|
1684
1732
|
onRemoveRole
|
|
1685
1733
|
}) {
|
|
1686
|
-
const [isAdding, setIsAdding] = (0,
|
|
1687
|
-
const [newRoleName, setNewRoleName] = (0,
|
|
1734
|
+
const [isAdding, setIsAdding] = (0, import_react6.useState)(false);
|
|
1735
|
+
const [newRoleName, setNewRoleName] = (0, import_react6.useState)("");
|
|
1688
1736
|
const handleAdd = () => {
|
|
1689
1737
|
if (newRoleName.trim()) {
|
|
1690
1738
|
onAddRole(newRoleName.trim());
|