@unlev/exeq 0.1.1 → 0.1.3

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 CHANGED
@@ -1,33 +1,46 @@
1
1
  # Exeq
2
2
 
3
- Embeddable PDF form builder and document signing for the browser. Design form templates on any PDF, then let users fill and sign them — all client-side, no backend required.
3
+ Embeddable PDF form builder and document signing for the browser. Design form templates on any PDF, then let users fill and sign them — all client-side, no backend required. Your documents never leave the device.
4
4
 
5
5
  ## Install
6
6
 
7
7
  ```bash
8
8
  npm install @unlev/exeq
9
+ # or
10
+ yarn add @unlev/exeq
9
11
  ```
10
12
 
11
13
  ## Quick Start
12
14
 
13
- ### React Components
14
-
15
15
  ```tsx
16
16
  import { DesignerView, SignerView } from '@unlev/exeq';
17
17
  import '@unlev/exeq/styles';
18
18
 
19
- // Template editor — upload a PDF, place form fields, export template JSON
19
+ // Template editor — open a PDF, place fields, export template
20
20
  function Editor() {
21
- return <DesignerView />;
21
+ return (
22
+ <DesignerView
23
+ apiKey="your-api-key"
24
+ initialPdfUrl="/contracts/blank.pdf"
25
+ onSave={(template) => {
26
+ // store the template JSON on your server
27
+ }}
28
+ />
29
+ );
22
30
  }
23
31
 
24
- // Signing UI — load a template, fill fields, download signed PDF
32
+ // Signing UI — load a template, pre-fill values, collect signed PDF
25
33
  function Signer() {
26
34
  return (
27
35
  <SignerView
36
+ apiKey="your-api-key"
28
37
  initialPdfUrl="/contracts/template.pdf"
29
38
  initialTemplate={template}
30
39
  initialSigner="Signer 1"
40
+ initialValues={{
41
+ "Full Name": "Jane Smith",
42
+ "Email": "jane@example.com",
43
+ }}
31
44
  onComplete={(blob) => {
32
45
  // upload the signed PDF
33
46
  }}
@@ -36,42 +49,28 @@ function Signer() {
36
49
  }
37
50
  ```
38
51
 
39
- ### Script Tag (CDN / iframe)
40
-
41
- ```html
42
- <script src="https://unpkg.com/@unlev/exeq/dist/embed.global.js"></script>
43
- <link rel="stylesheet" href="https://unpkg.com/@unlev/exeq/dist/styles.css" />
44
-
45
- <div id="editor" style="width: 100%; height: 800px;"></div>
46
-
47
- <script>
48
- Exeq.editor({ target: '#editor', pdf: '/blank.pdf' });
49
- </script>
50
- ```
51
-
52
52
  ## API
53
53
 
54
- ### Components
54
+ ### `DesignerView` Props
55
55
 
56
- | Component | Description |
57
- |-----------|-------------|
58
- | `DesignerView` | Full template editor PDF upload, field placement, role assignment, template export |
59
- | `SignerView` | Signing UI displays PDF with fields for the signer to fill and sign |
60
- | `PdfViewer` | Low-level PDF page renderer with draggable field overlays |
61
- | `SignatureCanvas` | Freehand signature/initials drawing canvas |
62
- | `FieldPropertyPanel` | Field property editor (type, label, dimensions, assignee) |
63
- | `FieldNavigator` | Prev/Next navigation through signer fields |
64
- | `SignerRoleSelector` | Manage signer roles (add, remove, switch active role) |
56
+ | Prop | Type | Required | Description |
57
+ |------|------|----------|-------------|
58
+ | `apiKey` | `string` | Yes | Your Exeq API key |
59
+ | `initialPdfUrl` | `string` | No | URL to a PDF to pre-load |
60
+ | `initialTemplate` | `Template` | No | Existing template to resume editing |
61
+ | `onSave` | `(template: Template) => void` | No | Called on "Export Template". If omitted, downloads JSON. |
65
62
 
66
63
  ### `SignerView` Props
67
64
 
68
- | Prop | Type | Description |
69
- |------|------|-------------|
70
- | `initialPdfUrl` | `string` | URL to the PDF |
71
- | `initialTemplate` | `Template` | Template object with fields and signer roles |
72
- | `initialSigner` | `string` | Signer role name (default: `"Signer 1"`) |
73
- | `callbackUrl` | `string` | URL to POST the signed PDF to |
74
- | `onComplete` | `(blob: Blob) => void` | Callback with the signed PDF |
65
+ | Prop | Type | Required | Description |
66
+ |------|------|----------|-------------|
67
+ | `apiKey` | `string` | Yes | Your Exeq API key |
68
+ | `initialPdfUrl` | `string` | No | URL to the PDF |
69
+ | `initialTemplate` | `Template` | No | Template with fields and signer roles |
70
+ | `initialSigner` | `string` | No | Signer role name (default: `"Signer 1"`) |
71
+ | `initialValues` | `Record<string, string>` | No | Pre-fill fields by label (case-insensitive) or ID |
72
+ | `callbackUrl` | `string` | No | URL to POST the signed PDF to |
73
+ | `onComplete` | `(blob: Blob) => void` | No | Callback with the signed PDF Blob |
75
74
 
76
75
  ### Utilities
77
76
 
@@ -94,61 +93,63 @@ downloadPdf(bytes, 'signed-document.pdf');
94
93
  import type { FormField, Template, FieldType, RenderedPage } from '@unlev/exeq';
95
94
  ```
96
95
 
97
- **Field types:** `text`, `signature`, `initials`, `signed-date`, `checkbox`
98
-
99
- **Text subtypes:** `freeform`, `number`, `date`, `email`, `phone`
100
-
101
- ### Template JSON
102
-
103
- The template exported by the editor:
104
-
105
- ```json
106
- {
107
- "pdfUrl": "https://example.com/contract.pdf",
108
- "signerRoles": ["Sender", "Signer 1"],
109
- "fields": [
110
- {
111
- "id": "uuid",
112
- "type": "text",
113
- "label": "Full Name",
114
- "placeholder": "Enter your full name",
115
- "required": true,
116
- "assignee": "Signer 1",
117
- "page": 0,
118
- "x": 15.5,
119
- "y": 42.3,
120
- "width": 25,
121
- "height": 3,
122
- "fontSize": 12,
123
- "value": ""
124
- }
125
- ]
126
- }
127
- ```
96
+ ### Field Types
97
+
98
+ | Type | Description |
99
+ |------|-------------|
100
+ | `text` | Text input (subtypes: `freeform`, `number`, `date`, `email`, `phone`) |
101
+ | `signature` | Freehand signature drawing (supports ink color) |
102
+ | `initials` | Smaller freehand drawing for initials |
103
+ | `signed-date` | Auto-filled date when signer signs |
104
+ | `checkbox` | Toggle checkbox |
105
+ | `blackout` | Black redaction rectangle (designer only) |
106
+ | `whiteout` | White redaction rectangle (designer only) |
107
+
108
+ ### Additional Components
128
109
 
129
- Coordinates (`x`, `y`, `width`, `height`) are percentages of the page dimensions (0-100). Origin is top-left.
110
+ | Component | Description |
111
+ |-----------|-------------|
112
+ | `PdfViewer` | Low-level PDF page renderer with draggable field overlays |
113
+ | `SignatureCanvas` | Freehand signature/initials drawing canvas |
114
+ | `FieldPropertyPanel` | Field property editor (type, label, assignee) |
115
+ | `FieldNavigator` | Prev/Next navigation through signer fields |
116
+ | `SignerRoleSelector` | Manage signer roles |
117
+
118
+ ## Privacy
119
+
120
+ All PDF processing happens client-side in the browser. Documents are never uploaded to any server. The npm package is self-hosted — it bundles into your app and serves from your infrastructure.
130
121
 
131
122
  ## Workflow
132
123
 
133
- 1. **Design** — Use `DesignerView` (or `Exeq.editor()`) to place fields on a PDF
124
+ 1. **Design** — Use `<DesignerView />` to open a PDF and place form fields
134
125
  2. **Pre-fill** — Fill Sender fields (company name, your signature, etc.)
135
- 3. **Export** — Save the template JSON and host the PDF
136
- 4. **Sign** — Embed `SignerView` (or `Exeq.sign()`) for end users to fill and sign
137
- 5. **Collect** — Receive the signed PDF via `onComplete` or `callbackUrl`
126
+ 3. **Export** — Capture the template JSON via `onSave`
127
+ 4. **Sign** — Render `<SignerView />` with the template. Use `initialValues` for mail-merge.
128
+ 5. **Collect** — Receive the signed PDF via `onComplete`
138
129
 
139
- ## Development
130
+ ## CDN Usage
140
131
 
141
- ```bash
142
- # Run the demo site
143
- npm run dev
132
+ For non-React apps, use the embed script:
144
133
 
145
- # Build the npm package
146
- npm run build:lib
134
+ ```html
135
+ <script src="https://unpkg.com/@unlev/exeq/dist/embed.global.js"></script>
147
136
 
148
- # Build everything (package + Next.js site)
149
- npm run build
137
+ <div id="signer" style="width:100%;height:800px"></div>
138
+ <script>
139
+ Exeq.sign({
140
+ target: '#signer',
141
+ apiKey: 'your-api-key',
142
+ pdf: '/contract.pdf',
143
+ fields: '/template.json',
144
+ onComplete: (blob) => { /* signed PDF */ }
145
+ });
146
+ </script>
150
147
  ```
151
148
 
149
+ ## Documentation
150
+
151
+ Full docs at [exeq.org/docs](https://exeq.org/docs)
152
+
152
153
  ## License
153
154
 
154
- MIT
155
+ MIT — [Unleavened LLC](https://unlev.com)
package/dist/index.css CHANGED
@@ -11,6 +11,162 @@
11
11
  color: #222;
12
12
  background: #fafafa;
13
13
  }
14
+ .designer-header {
15
+ display: flex;
16
+ align-items: center;
17
+ justify-content: flex-end;
18
+ padding: 0 1rem;
19
+ height: 48px;
20
+ border-bottom: 1px solid #e5e5e5;
21
+ background: #fff;
22
+ gap: 0.5rem;
23
+ flex-shrink: 0;
24
+ }
25
+ .designer-header-right {
26
+ display: flex;
27
+ align-items: center;
28
+ gap: 0.5rem;
29
+ }
30
+ .header-btn {
31
+ padding: 0.4rem 1rem;
32
+ border: 1px solid transparent;
33
+ border-radius: 4px;
34
+ cursor: pointer;
35
+ font-size: 0.85rem;
36
+ font-weight: 500;
37
+ white-space: nowrap;
38
+ line-height: 1.4;
39
+ box-sizing: border-box;
40
+ }
41
+ .header-btn-primary {
42
+ background: #111;
43
+ color: #fff;
44
+ border-color: #111;
45
+ }
46
+ .header-btn-primary:hover {
47
+ background: #333;
48
+ border-color: #333;
49
+ }
50
+ .header-btn-outline {
51
+ background: #fff;
52
+ color: #555;
53
+ border-color: #ccc;
54
+ }
55
+ .header-btn-outline:hover {
56
+ background: #f5f5f5;
57
+ border-color: #999;
58
+ }
59
+ .designer-body {
60
+ display: flex;
61
+ flex: 1;
62
+ overflow: hidden;
63
+ }
64
+ .designer-palette {
65
+ width: 140px;
66
+ flex-shrink: 0;
67
+ border-right: 1px solid #e5e5e5;
68
+ background: #fff;
69
+ padding: 0.75rem 0;
70
+ display: flex;
71
+ flex-direction: column;
72
+ gap: 2px;
73
+ overflow-y: auto;
74
+ }
75
+ .palette-heading {
76
+ font-size: 0.7rem;
77
+ font-weight: 600;
78
+ text-transform: uppercase;
79
+ letter-spacing: 0.05em;
80
+ color: #999;
81
+ padding: 0 0.75rem 0.5rem;
82
+ }
83
+ .palette-item {
84
+ display: flex;
85
+ align-items: center;
86
+ gap: 0.5rem;
87
+ padding: 0.5rem 0.75rem;
88
+ cursor: grab;
89
+ font-size: 0.85rem;
90
+ color: #555;
91
+ border-left: 3px solid transparent;
92
+ transition: all 0.1s;
93
+ user-select: none;
94
+ }
95
+ .palette-item:hover {
96
+ background: #f5f5f5;
97
+ color: #222;
98
+ }
99
+ .palette-item.active {
100
+ background: #f0f0f0;
101
+ color: #111;
102
+ border-left-color: #111;
103
+ font-weight: 500;
104
+ }
105
+ .palette-item:active {
106
+ cursor: grabbing;
107
+ }
108
+ .palette-item-icon {
109
+ width: 22px;
110
+ text-align: center;
111
+ font-size: 0.9rem;
112
+ flex-shrink: 0;
113
+ }
114
+ .palette-item-label {
115
+ flex: 1;
116
+ }
117
+ .palette-divider {
118
+ height: 1px;
119
+ background: #e5e5e5;
120
+ margin: 0.5rem 0.75rem;
121
+ }
122
+ .palette-role-section {
123
+ padding: 0 0.75rem;
124
+ display: flex;
125
+ flex-direction: column;
126
+ gap: 0.35rem;
127
+ }
128
+ .palette-role-select {
129
+ width: 100%;
130
+ padding: 0.3rem 0.4rem;
131
+ border: 1.5px solid #ddd;
132
+ border-radius: 4px;
133
+ font-size: 0.8rem;
134
+ font-weight: 500;
135
+ background: #fff;
136
+ cursor: pointer;
137
+ }
138
+ .palette-role-add-link {
139
+ background: none;
140
+ border: none;
141
+ cursor: pointer;
142
+ font-size: 0.75rem;
143
+ color: #888;
144
+ padding: 0;
145
+ text-align: left;
146
+ }
147
+ .palette-role-add-link:hover {
148
+ color: #555;
149
+ }
150
+ .palette-role-add-inline {
151
+ display: flex;
152
+ flex-wrap: wrap;
153
+ gap: 0.25rem;
154
+ }
155
+ .palette-role-add-inline input {
156
+ width: 100%;
157
+ padding: 0.25rem 0.4rem;
158
+ border: 1px solid #ccc;
159
+ border-radius: 4px;
160
+ font-size: 0.75rem;
161
+ }
162
+ .palette-role-add-inline button {
163
+ padding: 0.2rem 0.4rem;
164
+ border: 1px solid #ccc;
165
+ border-radius: 4px;
166
+ background: #fff;
167
+ cursor: pointer;
168
+ font-size: 0.75rem;
169
+ }
14
170
  .designer-toolbar {
15
171
  display: flex;
16
172
  justify-content: space-between;
@@ -27,7 +183,6 @@
27
183
  align-items: center;
28
184
  gap: 0.5rem;
29
185
  }
30
- .designer-content,
31
186
  .signer-content {
32
187
  display: flex;
33
188
  flex: 1;
@@ -46,10 +201,139 @@
46
201
  overflow-y: auto;
47
202
  border-left: 1px solid #e5e5e5;
48
203
  background: #fff;
204
+ display: flex;
205
+ flex-direction: column;
206
+ flex-shrink: 0;
207
+ }
208
+ .panel-resize-handle {
209
+ width: 5px;
210
+ cursor: col-resize;
211
+ background: transparent;
212
+ flex-shrink: 0;
213
+ position: relative;
214
+ z-index: 20;
215
+ margin-right: -5px;
216
+ transition: background 0.15s;
217
+ }
218
+ .panel-resize-handle:hover,
219
+ .panel-resize-handle:active {
220
+ background: #d0d0d0;
221
+ }
222
+ .ink-color-picker {
223
+ display: flex;
224
+ gap: 0.4rem;
225
+ align-items: center;
226
+ }
227
+ .ink-color-swatch {
228
+ width: 24px;
229
+ height: 24px;
230
+ border-radius: 50%;
231
+ border: 2px solid transparent;
232
+ cursor: pointer;
233
+ padding: 0;
234
+ transition: border-color 0.1s;
235
+ }
236
+ .ink-color-swatch.active {
237
+ border-color: #111;
238
+ box-shadow: 0 0 0 2px #fff, 0 0 0 3px #111;
239
+ }
240
+ .ink-color-swatch:hover:not(.active) {
241
+ border-color: #999;
242
+ }
243
+ .panel-role-section {
244
+ padding: 0.75rem 1rem;
245
+ border-bottom: 1px solid #eee;
246
+ }
247
+ .panel-role-label {
248
+ display: block;
249
+ font-size: 0.7rem;
250
+ font-weight: 600;
251
+ text-transform: uppercase;
252
+ letter-spacing: 0.05em;
253
+ color: #999;
254
+ margin-bottom: 0.35rem;
255
+ }
256
+ .panel-role-row {
257
+ display: flex;
258
+ align-items: center;
259
+ gap: 0.5rem;
260
+ flex-wrap: wrap;
261
+ }
262
+ .panel-role-select {
263
+ padding: 0.3rem 0.5rem;
264
+ border: 1.5px solid #ddd;
265
+ border-radius: 4px;
266
+ font-size: 0.85rem;
267
+ font-weight: 500;
268
+ background: #fff;
269
+ cursor: pointer;
270
+ min-width: 100px;
271
+ }
272
+ .panel-role-add-link {
273
+ background: none;
274
+ border: none;
275
+ cursor: pointer;
276
+ font-size: 0.8rem;
277
+ color: #888;
278
+ padding: 0;
279
+ white-space: nowrap;
280
+ }
281
+ .panel-role-add-link:hover {
282
+ color: #555;
283
+ }
284
+ .panel-role-add-inline {
285
+ display: flex;
286
+ gap: 0.25rem;
287
+ align-items: center;
288
+ flex: 1;
289
+ }
290
+ .panel-role-add-inline input {
291
+ padding: 0.25rem 0.4rem;
292
+ border: 1px solid #ccc;
293
+ border-radius: 4px;
294
+ font-size: 0.8rem;
295
+ width: 90px;
296
+ }
297
+ .panel-role-add-inline button {
298
+ padding: 0.25rem 0.5rem;
299
+ border: 1px solid #ccc;
300
+ border-radius: 4px;
301
+ background: #fff;
302
+ cursor: pointer;
303
+ font-size: 0.8rem;
304
+ }
305
+ .panel-tabs {
306
+ display: flex;
307
+ border-bottom: 1px solid #e5e5e5;
308
+ flex-shrink: 0;
309
+ }
310
+ .panel-tab {
311
+ flex: 1;
312
+ padding: 0.55rem 0;
313
+ background: none;
314
+ border: none;
315
+ border-bottom: 2px solid transparent;
316
+ cursor: pointer;
317
+ font-size: 0.8rem;
318
+ color: #888;
319
+ font-weight: 500;
320
+ text-align: center;
321
+ transition: all 0.1s;
322
+ }
323
+ .panel-tab.active {
324
+ color: #111;
325
+ border-bottom-color: #111;
326
+ }
327
+ .panel-tab:hover:not(.active) {
328
+ color: #555;
329
+ }
330
+ .panel-tab-content {
331
+ flex: 1;
332
+ overflow-y: auto;
49
333
  padding: 1rem;
50
334
  display: flex;
51
335
  flex-direction: column;
52
- gap: 1rem;
336
+ gap: 0.75rem;
53
337
  }
54
338
  .pdf-viewer {
55
339
  display: flex;
@@ -335,7 +619,7 @@
335
619
  .panel-empty {
336
620
  color: #888;
337
621
  font-size: 0.85rem;
338
- padding: 2rem 1rem;
622
+ padding: 2rem 0.5rem;
339
623
  text-align: center;
340
624
  }
341
625
  .prefill-section {
@@ -355,8 +639,8 @@
355
639
  font-size: 0.85rem;
356
640
  }
357
641
  .field-list {
358
- border-top: 1px solid #eee;
359
- padding-top: 0.75rem;
642
+ display: flex;
643
+ flex-direction: column;
360
644
  }
361
645
  .field-list h4 {
362
646
  margin: 0 0 0.5rem;
@@ -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: 100vh;\n font-family: system-ui, -apple-system, sans-serif;\n color: #222;\n background: #fafafa;\n}\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.designer-content,\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-y: auto;\n border-left: 1px solid #e5e5e5;\n background: #fff;\n padding: 1rem;\n display: flex;\n flex-direction: column;\n gap: 1rem;\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 ─────────────────────────── */\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 1rem;\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 border-top: 1px solid #eee;\n padding-top: 0.75rem;\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}\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 margin-top: auto;\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.submit-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.submit-btn:hover:not(:disabled) { background: #333; }\n.submit-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"],"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: 100vh;\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-y: auto;\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}\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 margin-top: auto;\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.submit-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.submit-btn:hover:not(:disabled) { background: #333; }\n.submit-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"],"mappings":"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","names":[]}