@signature.digital/catalog 1.3.0

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.
Files changed (71) hide show
  1. package/.smartconfig.json +82 -0
  2. package/dist_bundle/bundle.js +6077 -0
  3. package/dist_bundle/bundle.js.map +7 -0
  4. package/dist_bundle/index.html +28 -0
  5. package/dist_ts_web/00_commitinfo_data.d.ts +8 -0
  6. package/dist_ts_web/00_commitinfo_data.js +9 -0
  7. package/dist_ts_web/elements/index.d.ts +3 -0
  8. package/dist_ts_web/elements/index.js +6 -0
  9. package/dist_ts_web/elements/sdig-signbox/index.d.ts +1 -0
  10. package/dist_ts_web/elements/sdig-signbox/index.js +2 -0
  11. package/dist_ts_web/elements/sdig-signbox/sdig-signbox.d.ts +13 -0
  12. package/dist_ts_web/elements/sdig-signbox/sdig-signbox.js +153 -0
  13. package/dist_ts_web/elements/sdig-signpad/index.d.ts +1 -0
  14. package/dist_ts_web/elements/sdig-signpad/index.js +2 -0
  15. package/dist_ts_web/elements/sdig-signpad/sdig-signpad.d.ts +22 -0
  16. package/dist_ts_web/elements/sdig-signpad/sdig-signpad.js +149 -0
  17. package/dist_ts_web/elements/sdig-workspace/index.d.ts +8 -0
  18. package/dist_ts_web/elements/sdig-workspace/index.js +9 -0
  19. package/dist_ts_web/elements/sdig-workspace/sdig-workspace-audit.d.ts +12 -0
  20. package/dist_ts_web/elements/sdig-workspace/sdig-workspace-audit.js +81 -0
  21. package/dist_ts_web/elements/sdig-workspace/sdig-workspace-compose.d.ts +44 -0
  22. package/dist_ts_web/elements/sdig-workspace/sdig-workspace-compose.js +418 -0
  23. package/dist_ts_web/elements/sdig-workspace/sdig-workspace-developers.d.ts +12 -0
  24. package/dist_ts_web/elements/sdig-workspace/sdig-workspace-developers.js +91 -0
  25. package/dist_ts_web/elements/sdig-workspace/sdig-workspace-inbox.d.ts +19 -0
  26. package/dist_ts_web/elements/sdig-workspace/sdig-workspace-inbox.js +181 -0
  27. package/dist_ts_web/elements/sdig-workspace/sdig-workspace-placeholder.d.ts +14 -0
  28. package/dist_ts_web/elements/sdig-workspace/sdig-workspace-placeholder.js +84 -0
  29. package/dist_ts_web/elements/sdig-workspace/sdig-workspace-sign.d.ts +18 -0
  30. package/dist_ts_web/elements/sdig-workspace/sdig-workspace-sign.js +152 -0
  31. package/dist_ts_web/elements/sdig-workspace/sdig-workspace.d.ts +31 -0
  32. package/dist_ts_web/elements/sdig-workspace/sdig-workspace.js +245 -0
  33. package/dist_ts_web/elements/sdig-workspace/sdig-workspace.shared.d.ts +53 -0
  34. package/dist_ts_web/elements/sdig-workspace/sdig-workspace.shared.js +385 -0
  35. package/dist_ts_web/index.d.ts +1 -0
  36. package/dist_ts_web/index.js +2 -0
  37. package/dist_ts_web/pages/index.d.ts +2 -0
  38. package/dist_ts_web/pages/index.js +3 -0
  39. package/dist_ts_web/pages/page1.d.ts +1 -0
  40. package/dist_ts_web/pages/page1.js +5 -0
  41. package/dist_ts_web/pages/page2.d.ts +1 -0
  42. package/dist_ts_web/pages/page2.js +5 -0
  43. package/dist_ts_web/plugins.d.ts +3 -0
  44. package/dist_ts_web/plugins.js +5 -0
  45. package/dist_watch/bundle.js +135319 -0
  46. package/dist_watch/bundle.js.map +7 -0
  47. package/dist_watch/index.html +28 -0
  48. package/license +19 -0
  49. package/package.json +63 -0
  50. package/readme.hints.md +31 -0
  51. package/readme.md +172 -0
  52. package/ts_web/00_commitinfo_data.ts +8 -0
  53. package/ts_web/elements/index.ts +6 -0
  54. package/ts_web/elements/sdig-signbox/index.ts +1 -0
  55. package/ts_web/elements/sdig-signbox/sdig-signbox.ts +109 -0
  56. package/ts_web/elements/sdig-signpad/index.ts +1 -0
  57. package/ts_web/elements/sdig-signpad/sdig-signpad.ts +115 -0
  58. package/ts_web/elements/sdig-workspace/index.ts +8 -0
  59. package/ts_web/elements/sdig-workspace/sdig-workspace-audit.ts +37 -0
  60. package/ts_web/elements/sdig-workspace/sdig-workspace-compose.ts +369 -0
  61. package/ts_web/elements/sdig-workspace/sdig-workspace-developers.ts +47 -0
  62. package/ts_web/elements/sdig-workspace/sdig-workspace-inbox.ts +117 -0
  63. package/ts_web/elements/sdig-workspace/sdig-workspace-placeholder.ts +22 -0
  64. package/ts_web/elements/sdig-workspace/sdig-workspace-sign.ts +91 -0
  65. package/ts_web/elements/sdig-workspace/sdig-workspace.shared.ts +440 -0
  66. package/ts_web/elements/sdig-workspace/sdig-workspace.ts +175 -0
  67. package/ts_web/index.ts +1 -0
  68. package/ts_web/pages/index.ts +2 -0
  69. package/ts_web/pages/page1.ts +5 -0
  70. package/ts_web/pages/page2.ts +5 -0
  71. package/ts_web/plugins.ts +8 -0
@@ -0,0 +1,418 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import { DeesElement, state, html, customElement, css } from '@design.estate/dees-element';
36
+ import { actionButton, demoFields, demoRecipients, fakeDocument, icon, pill, topBar, workspaceBaseStyles, workspaceDemoFrame } from './sdig-workspace.shared.js';
37
+ const fieldDefinitions = [
38
+ { type: 'signature', icon: 'sign', label: 'Signature', w: 200, h: 50 },
39
+ { type: 'initials', icon: 'type', label: 'Initials', w: 120, h: 32 },
40
+ { type: 'date', icon: 'calendar', label: 'Date', w: 120, h: 32 },
41
+ { type: 'text', icon: 'type', label: 'Text field', w: 220, h: 32 },
42
+ { type: 'check', icon: 'check', label: 'Checkbox', w: 120, h: 32 },
43
+ ];
44
+ const resizeHandles = ['n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw'];
45
+ let SdigWorkspaceCompose = (() => {
46
+ let _classDecorators = [customElement('sdig-workspace-compose')];
47
+ let _classDescriptor;
48
+ let _classExtraInitializers = [];
49
+ let _classThis;
50
+ let _classSuper = DeesElement;
51
+ let _step_decorators;
52
+ let _step_initializers = [];
53
+ let _step_extraInitializers = [];
54
+ let _activeRecipient_decorators;
55
+ let _activeRecipient_initializers = [];
56
+ let _activeRecipient_extraInitializers = [];
57
+ let _draggedRecipientId_decorators;
58
+ let _draggedRecipientId_initializers = [];
59
+ let _draggedRecipientId_extraInitializers = [];
60
+ let _selectedFieldId_decorators;
61
+ let _selectedFieldId_initializers = [];
62
+ let _selectedFieldId_extraInitializers = [];
63
+ let _recipients_decorators;
64
+ let _recipients_initializers = [];
65
+ let _recipients_extraInitializers = [];
66
+ let _fields_decorators;
67
+ let _fields_initializers = [];
68
+ let _fields_extraInitializers = [];
69
+ var SdigWorkspaceCompose = class extends _classSuper {
70
+ static { _classThis = this; }
71
+ static {
72
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
73
+ _step_decorators = [state()];
74
+ _activeRecipient_decorators = [state()];
75
+ _draggedRecipientId_decorators = [state()];
76
+ _selectedFieldId_decorators = [state()];
77
+ _recipients_decorators = [state()];
78
+ _fields_decorators = [state()];
79
+ __esDecorate(this, null, _step_decorators, { kind: "accessor", name: "step", static: false, private: false, access: { has: obj => "step" in obj, get: obj => obj.step, set: (obj, value) => { obj.step = value; } }, metadata: _metadata }, _step_initializers, _step_extraInitializers);
80
+ __esDecorate(this, null, _activeRecipient_decorators, { kind: "accessor", name: "activeRecipient", static: false, private: false, access: { has: obj => "activeRecipient" in obj, get: obj => obj.activeRecipient, set: (obj, value) => { obj.activeRecipient = value; } }, metadata: _metadata }, _activeRecipient_initializers, _activeRecipient_extraInitializers);
81
+ __esDecorate(this, null, _draggedRecipientId_decorators, { kind: "accessor", name: "draggedRecipientId", static: false, private: false, access: { has: obj => "draggedRecipientId" in obj, get: obj => obj.draggedRecipientId, set: (obj, value) => { obj.draggedRecipientId = value; } }, metadata: _metadata }, _draggedRecipientId_initializers, _draggedRecipientId_extraInitializers);
82
+ __esDecorate(this, null, _selectedFieldId_decorators, { kind: "accessor", name: "selectedFieldId", static: false, private: false, access: { has: obj => "selectedFieldId" in obj, get: obj => obj.selectedFieldId, set: (obj, value) => { obj.selectedFieldId = value; } }, metadata: _metadata }, _selectedFieldId_initializers, _selectedFieldId_extraInitializers);
83
+ __esDecorate(this, null, _recipients_decorators, { kind: "accessor", name: "recipients", static: false, private: false, access: { has: obj => "recipients" in obj, get: obj => obj.recipients, set: (obj, value) => { obj.recipients = value; } }, metadata: _metadata }, _recipients_initializers, _recipients_extraInitializers);
84
+ __esDecorate(this, null, _fields_decorators, { kind: "accessor", name: "fields", static: false, private: false, access: { has: obj => "fields" in obj, get: obj => obj.fields, set: (obj, value) => { obj.fields = value; } }, metadata: _metadata }, _fields_initializers, _fields_extraInitializers);
85
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
86
+ SdigWorkspaceCompose = _classThis = _classDescriptor.value;
87
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
88
+ }
89
+ static demo = () => workspaceDemoFrame(html `<sdig-workspace-compose></sdig-workspace-compose>`);
90
+ static demoGroups = ['Signature Digital Workspace'];
91
+ #step_accessor_storage = __runInitializers(this, _step_initializers, 2);
92
+ get step() { return this.#step_accessor_storage; }
93
+ set step(value) { this.#step_accessor_storage = value; }
94
+ #activeRecipient_accessor_storage = (__runInitializers(this, _step_extraInitializers), __runInitializers(this, _activeRecipient_initializers, 0));
95
+ get activeRecipient() { return this.#activeRecipient_accessor_storage; }
96
+ set activeRecipient(value) { this.#activeRecipient_accessor_storage = value; }
97
+ #draggedRecipientId_accessor_storage = (__runInitializers(this, _activeRecipient_extraInitializers), __runInitializers(this, _draggedRecipientId_initializers, null));
98
+ get draggedRecipientId() { return this.#draggedRecipientId_accessor_storage; }
99
+ set draggedRecipientId(value) { this.#draggedRecipientId_accessor_storage = value; }
100
+ #selectedFieldId_accessor_storage = (__runInitializers(this, _draggedRecipientId_extraInitializers), __runInitializers(this, _selectedFieldId_initializers, null));
101
+ get selectedFieldId() { return this.#selectedFieldId_accessor_storage; }
102
+ set selectedFieldId(value) { this.#selectedFieldId_accessor_storage = value; }
103
+ #recipients_accessor_storage = (__runInitializers(this, _selectedFieldId_extraInitializers), __runInitializers(this, _recipients_initializers, [...demoRecipients]));
104
+ get recipients() { return this.#recipients_accessor_storage; }
105
+ set recipients(value) { this.#recipients_accessor_storage = value; }
106
+ #fields_accessor_storage = (__runInitializers(this, _recipients_extraInitializers), __runInitializers(this, _fields_initializers, [...demoFields]));
107
+ get fields() { return this.#fields_accessor_storage; }
108
+ set fields(value) { this.#fields_accessor_storage = value; }
109
+ draggedFieldDefinition = (__runInitializers(this, _fields_extraInitializers), null);
110
+ draggedFieldGrabOffset = null;
111
+ fieldInteraction = null;
112
+ static styles = [workspaceBaseStyles, css `
113
+ .stepper { height: 44px; flex-shrink: 0; border-bottom: 1px solid var(--border-subtle); display: flex; align-items: center; padding: 0 24px; gap: 24px; overflow-x: auto; }
114
+ .step { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--text-muted); white-space: nowrap; background: transparent; }
115
+ .step-number { width: 20px; height: 20px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: var(--bg-input); border: 1px solid var(--border); color: var(--text-muted); font-size: 10px; font-weight: 700; }
116
+ .step.active { color: var(--text); font-weight: 500; }
117
+ .step.active .step-number { background: var(--accent); border-color: var(--accent); color: white; }
118
+ .step.done .step-number { background: var(--success); border-color: var(--success); color: white; }
119
+ .compose-workspace { flex: 1; display: flex; overflow: hidden; }
120
+ .palette { width: 260px; border-right: 1px solid var(--border-subtle); padding: 16px; background: var(--bg-el); overflow-y: auto; flex-shrink: 0; }
121
+ .right-panel { width: 280px; border-left: 1px solid var(--border-subtle); padding: 16px; background: var(--bg-el); overflow-y: auto; flex-shrink: 0; }
122
+ .field-tool { width: var(--tool-w); height: var(--tool-h); display: flex; align-items: center; gap: 8px; padding: 0 10px; background: color-mix(in srgb, var(--recipient-color) 8%, var(--bg-card)); border: 1.5px dashed var(--recipient-color); border-radius: 4px; font-size: 12px; color: var(--recipient-color); margin-bottom: 8px; cursor: grab; }
123
+ .field-tool:active { cursor: grabbing; }
124
+ .field-tool span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
125
+ .swatch { width: 10px; height: 10px; border-radius: 2px; background: var(--recipient-color, var(--accent)); flex-shrink: 0; }
126
+ .document-stage { flex: 1; overflow: auto; background: hsl(0 0% 8%); display: flex; flex-direction: column; align-items: center; padding: 32px; gap: 20px; }
127
+ :host-context(sdig-workspace[theme='light']) .document-stage { background: hsl(0 0% 92%); }
128
+ .recipient-line { cursor: grab; }
129
+ .recipient-line.dragging { opacity: 0.45; border-color: var(--accent); }
130
+ .page-drop-target { outline: 1px dashed transparent; outline-offset: 8px; }
131
+ .page-drop-target.drag-over { outline-color: var(--accent); }
132
+ .field-box { user-select: none; touch-action: none; }
133
+ .field-box.selected { z-index: 5; cursor: move; }
134
+ .field-content { width: 100%; height: 100%; display: flex; align-items: center; gap: 6px; pointer-events: none; overflow: hidden; }
135
+ .field-content span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
136
+ .resize-handle { position: absolute; z-index: 2; width: 9px; height: 9px; border-radius: 50%; background: var(--bg-card); border: 1.5px solid var(--field-color); box-shadow: 0 0 0 2px var(--bg-card); touch-action: none; }
137
+ .resize-handle.n { top: -6px; left: 50%; transform: translateX(-50%); cursor: ns-resize; }
138
+ .resize-handle.ne { top: -6px; right: -6px; cursor: nesw-resize; }
139
+ .resize-handle.e { right: -6px; top: 50%; transform: translateY(-50%); cursor: ew-resize; }
140
+ .resize-handle.se { right: -6px; bottom: -6px; cursor: nwse-resize; }
141
+ .resize-handle.s { bottom: -6px; left: 50%; transform: translateX(-50%); cursor: ns-resize; }
142
+ .resize-handle.sw { left: -6px; bottom: -6px; cursor: nesw-resize; }
143
+ .resize-handle.w { left: -6px; top: 50%; transform: translateY(-50%); cursor: ew-resize; }
144
+ .resize-handle.nw { left: -6px; top: -6px; cursor: nwse-resize; }
145
+ .field-editor { margin-top: 16px; padding: 12px; }
146
+ .field-editor-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
147
+ .field-control { display: flex; flex-direction: column; gap: 4px; font-size: 10px; color: var(--text-muted); }
148
+ .field-control.full { grid-column: 1 / -1; }
149
+ .field-control input, .field-control select { width: 100%; height: 30px; padding: 0 8px; border: 1px solid var(--border); border-radius: 5px; background: var(--bg-input); color: var(--text); font-size: 12px; outline: none; }
150
+ .field-control input:focus, .field-control select:focus { border-color: var(--accent); }
151
+ @media (max-width: 920px) { .compose-workspace { flex-direction: column; overflow: auto; } .palette, .right-panel { width: 100%; border: 0; border-bottom: 1px solid var(--border-subtle); } .document-page { width: 560px; } }
152
+ `];
153
+ disconnectedCallback = async () => {
154
+ this.stopFieldInteraction();
155
+ await super.disconnectedCallback();
156
+ };
157
+ recipientColor(id) {
158
+ return this.recipients.find((recipient) => recipient.id === id)?.color || 'var(--accent)';
159
+ }
160
+ fieldIcon(type) {
161
+ if (type === 'signature')
162
+ return 'sign';
163
+ if (type === 'date')
164
+ return 'calendar';
165
+ if (type === 'check')
166
+ return 'check';
167
+ return 'type';
168
+ }
169
+ fieldDefinition(type) {
170
+ return fieldDefinitions.find((definition) => definition.type === type) || fieldDefinitions[0];
171
+ }
172
+ clamp(value, min, max) {
173
+ return Math.max(min, Math.min(max, value));
174
+ }
175
+ updateField(fieldId, patch) {
176
+ this.fields = this.fields.map((field) => field.id === fieldId ? { ...field, ...patch } : field);
177
+ }
178
+ updateSelectedField(patch) {
179
+ if (!this.selectedFieldId)
180
+ return;
181
+ this.updateField(this.selectedFieldId, patch);
182
+ }
183
+ updateSelectedFieldNumber(property, event) {
184
+ const value = Number(event.target.value);
185
+ if (!Number.isFinite(value))
186
+ return;
187
+ const min = property === 'w' || property === 'h' ? 16 : 0;
188
+ this.updateSelectedField({ [property]: Math.max(min, Math.round(value)) });
189
+ }
190
+ resetSelectedFieldSize(field) {
191
+ const definition = this.fieldDefinition(field.type);
192
+ this.updateSelectedField({ w: definition.w, h: definition.h });
193
+ }
194
+ removeSelectedField() {
195
+ if (!this.selectedFieldId)
196
+ return;
197
+ this.fields = this.fields.filter((field) => field.id !== this.selectedFieldId);
198
+ this.selectedFieldId = null;
199
+ }
200
+ handleDocumentClick = (event) => {
201
+ const target = event.target;
202
+ if (target?.closest('.field-box'))
203
+ return;
204
+ this.selectedFieldId = null;
205
+ };
206
+ startFieldInteraction(event, field, mode, handle) {
207
+ if (event.button !== 0)
208
+ return;
209
+ const page = this.shadowRoot?.querySelector('.document-page');
210
+ if (!page)
211
+ return;
212
+ const pageRect = page.getBoundingClientRect();
213
+ this.selectedFieldId = field.id;
214
+ this.fieldInteraction = {
215
+ fieldId: field.id,
216
+ mode,
217
+ handle,
218
+ startClientX: event.clientX,
219
+ startClientY: event.clientY,
220
+ startField: { ...field },
221
+ pageWidth: pageRect.width,
222
+ pageHeight: pageRect.height,
223
+ };
224
+ event.preventDefault();
225
+ event.stopPropagation();
226
+ window.addEventListener('pointermove', this.handleFieldPointerMove, { passive: false });
227
+ window.addEventListener('pointerup', this.stopFieldInteraction);
228
+ window.addEventListener('pointercancel', this.stopFieldInteraction);
229
+ }
230
+ startFieldMove(event, field) {
231
+ this.startFieldInteraction(event, field, 'move');
232
+ }
233
+ startFieldResize(event, field, handle) {
234
+ this.startFieldInteraction(event, field, 'resize', handle);
235
+ }
236
+ handleFieldPointerMove = (event) => {
237
+ if (!this.fieldInteraction)
238
+ return;
239
+ event.preventDefault();
240
+ const interaction = this.fieldInteraction;
241
+ const dx = event.clientX - interaction.startClientX;
242
+ const dy = event.clientY - interaction.startClientY;
243
+ const start = interaction.startField;
244
+ if (interaction.mode === 'move') {
245
+ this.updateField(interaction.fieldId, {
246
+ x: Math.round(this.clamp(start.x + dx, 0, interaction.pageWidth - start.w)),
247
+ y: Math.round(this.clamp(start.y + dy, 0, interaction.pageHeight - start.h)),
248
+ });
249
+ return;
250
+ }
251
+ const minWidth = 32;
252
+ const minHeight = 24;
253
+ let x = start.x;
254
+ let y = start.y;
255
+ let w = start.w;
256
+ let h = start.h;
257
+ const handle = interaction.handle || 'se';
258
+ if (handle.includes('e')) {
259
+ w = this.clamp(start.w + dx, minWidth, interaction.pageWidth - start.x);
260
+ }
261
+ if (handle.includes('s')) {
262
+ h = this.clamp(start.h + dy, minHeight, interaction.pageHeight - start.y);
263
+ }
264
+ if (handle.includes('w')) {
265
+ x = this.clamp(start.x + dx, 0, start.x + start.w - minWidth);
266
+ w = start.x + start.w - x;
267
+ }
268
+ if (handle.includes('n')) {
269
+ y = this.clamp(start.y + dy, 0, start.y + start.h - minHeight);
270
+ h = start.y + start.h - y;
271
+ }
272
+ this.updateField(interaction.fieldId, {
273
+ x: Math.round(x),
274
+ y: Math.round(y),
275
+ w: Math.round(w),
276
+ h: Math.round(h),
277
+ });
278
+ };
279
+ stopFieldInteraction = () => {
280
+ this.fieldInteraction = null;
281
+ window.removeEventListener('pointermove', this.handleFieldPointerMove);
282
+ window.removeEventListener('pointerup', this.stopFieldInteraction);
283
+ window.removeEventListener('pointercancel', this.stopFieldInteraction);
284
+ };
285
+ reorderRecipient(targetId) {
286
+ if (this.draggedRecipientId === null || this.draggedRecipientId === targetId)
287
+ return;
288
+ const next = [...this.recipients];
289
+ const fromIndex = next.findIndex((recipient) => recipient.id === this.draggedRecipientId);
290
+ const toIndex = next.findIndex((recipient) => recipient.id === targetId);
291
+ if (fromIndex === -1 || toIndex === -1)
292
+ return;
293
+ const [moved] = next.splice(fromIndex, 1);
294
+ next.splice(toIndex, 0, moved);
295
+ this.recipients = next.map((recipient, index) => ({ ...recipient, order: index + 1 }));
296
+ this.draggedRecipientId = null;
297
+ }
298
+ addFieldFromDrop(event) {
299
+ event.preventDefault();
300
+ const page = event.currentTarget;
301
+ page.classList.remove('drag-over');
302
+ const transferredType = event.dataTransfer?.getData('application/x-signature-field');
303
+ if (!this.draggedFieldDefinition && !transferredType)
304
+ return;
305
+ const definition = this.draggedFieldDefinition || this.fieldDefinition(transferredType);
306
+ const transferredOffset = event.dataTransfer?.getData('application/x-signature-field-offset');
307
+ const offset = this.draggedFieldGrabOffset || (transferredOffset ? JSON.parse(transferredOffset) : { x: definition.w / 2, y: definition.h / 2 });
308
+ const rect = page.getBoundingClientRect();
309
+ const x = Math.round(event.clientX - rect.left - offset.x);
310
+ const y = Math.round(event.clientY - rect.top - offset.y);
311
+ const nextField = {
312
+ id: `field_${Date.now()}`,
313
+ type: definition.type,
314
+ x: Math.max(0, Math.min(Math.max(0, rect.width - definition.w), x)),
315
+ y: Math.max(0, Math.min(Math.max(0, rect.height - definition.h), y)),
316
+ w: definition.w,
317
+ h: definition.h,
318
+ page: 1,
319
+ recipient: this.activeRecipient,
320
+ label: definition.label,
321
+ };
322
+ this.fields = [...this.fields, nextField];
323
+ this.selectedFieldId = nextField.id;
324
+ this.draggedFieldDefinition = null;
325
+ this.draggedFieldGrabOffset = null;
326
+ }
327
+ startFieldToolDrag(event, fieldType) {
328
+ const toolRect = event.currentTarget.getBoundingClientRect();
329
+ const offset = {
330
+ x: Math.round(event.clientX - toolRect.left),
331
+ y: Math.round(event.clientY - toolRect.top),
332
+ };
333
+ this.draggedFieldDefinition = fieldType;
334
+ this.draggedFieldGrabOffset = offset;
335
+ event.dataTransfer?.setData('application/x-signature-field', fieldType.type);
336
+ event.dataTransfer?.setData('application/x-signature-field-offset', JSON.stringify(offset));
337
+ if (event.dataTransfer)
338
+ event.dataTransfer.effectAllowed = 'copy';
339
+ }
340
+ endFieldToolDrag() {
341
+ this.draggedFieldDefinition = null;
342
+ this.draggedFieldGrabOffset = null;
343
+ }
344
+ renderFieldEditor(field) {
345
+ return html `
346
+ <div class="card field-editor">
347
+ <div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px;">
348
+ <div style="font-size: 11px; font-weight: 600;">Field editor</div>
349
+ ${pill(this.fieldDefinition(field.type).label, 'info', true)}
350
+ </div>
351
+ <div class="field-editor-grid">
352
+ <label class="field-control full">Label<input .value=${field.label} @input=${(event) => this.updateSelectedField({ label: event.target.value })} /></label>
353
+ <label class="field-control full">Assigned signer<select .value=${String(field.recipient)} @change=${(event) => this.updateSelectedField({ recipient: Number(event.target.value) })}>${this.recipients.map((recipient) => html `<option value=${String(recipient.id)}>${recipient.order}. ${recipient.name}</option>`)}</select></label>
354
+ <label class="field-control">X<input type="number" min="0" .value=${String(field.x)} @input=${(event) => this.updateSelectedFieldNumber('x', event)} /></label>
355
+ <label class="field-control">Y<input type="number" min="0" .value=${String(field.y)} @input=${(event) => this.updateSelectedFieldNumber('y', event)} /></label>
356
+ <label class="field-control">Width<input type="number" min="16" .value=${String(field.w)} @input=${(event) => this.updateSelectedFieldNumber('w', event)} /></label>
357
+ <label class="field-control">Height<input type="number" min="16" .value=${String(field.h)} @input=${(event) => this.updateSelectedFieldNumber('h', event)} /></label>
358
+ </div>
359
+ <div style="display: flex; gap: 8px; margin-top: 12px;">
360
+ <button class="btn outline small" style="flex: 1;" @click=${() => this.resetSelectedFieldSize(field)}>Reset size</button>
361
+ <button class="btn ghost small" style="color: var(--error);" @click=${() => this.removeSelectedField()}>Delete</button>
362
+ </div>
363
+ </div>
364
+ `;
365
+ }
366
+ renderResizeHandles(field) {
367
+ return html `${resizeHandles.map((handle) => html `<span class="resize-handle ${handle}" @pointerdown=${(event) => this.startFieldResize(event, field, handle)}></span>`)}`;
368
+ }
369
+ renderStepper() {
370
+ const labels = ['Upload', 'Place fields', 'Recipients & routing', 'Review & send'];
371
+ return html `
372
+ <div class="stepper">
373
+ ${labels.map((label, index) => {
374
+ const stepNumber = index + 1;
375
+ return html `<button class="step ${stepNumber === this.step ? 'active' : stepNumber < this.step ? 'done' : ''}" @click=${() => this.step = stepNumber}><span class="step-number">${stepNumber < this.step ? '✓' : stepNumber}</span><span>${label}</span>${index < labels.length - 1 ? html `<span style="width: 24px; height: 1px; background: var(--border); margin-left: 8px;"></span>` : ''}</button>`;
376
+ })}
377
+ <div style="flex: 1;"></div><span class="mono" style="font-size: 11px; color: var(--text-muted);">doc_8mK3pL · 14 pages · 2.4 MB</span>
378
+ </div>
379
+ `;
380
+ }
381
+ render() {
382
+ const selectedField = this.fields.find((field) => field.id === this.selectedFieldId);
383
+ return html `
384
+ ${topBar({ breadcrumb: ['signature.digital', 'Inbox', 'Compose'], title: 'Master Services Agreement', subtitle: pill('Draft · auto-saved'), actions: html `${actionButton('Save draft', 'ghost')}${actionButton('Preview', 'outline', 'eye')}${actionButton('Send for signature', 'primary', 'send')}` })}
385
+ ${this.renderStepper()}
386
+ <div class="compose-workspace">
387
+ <div class="palette">
388
+ <div class="label-upper">Drag onto document</div>
389
+ ${fieldDefinitions.map((fieldType) => html `<div class="field-tool" style="--tool-w: ${fieldType.w}px; --tool-h: ${fieldType.h}px; --recipient-color: ${this.recipientColor(this.activeRecipient)};" draggable="true" @dragstart=${(event) => this.startFieldToolDrag(event, fieldType)} @dragend=${() => this.endFieldToolDrag()}>${icon(fieldType.icon, 14)}<span style="flex: 1;">${fieldType.label}</span></div>`)}
390
+ <div style="height: 1px; background: var(--border-subtle); margin: 20px 0 16px;"></div>
391
+ <div class="label-upper">Active for</div>
392
+ ${this.recipients.map((recipient) => html `<div class="recipient-line ${this.activeRecipient === recipient.id ? 'active' : ''}" @click=${() => this.activeRecipient = recipient.id}><span class="swatch" style="--recipient-color: ${recipient.color};"></span><span style="flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;">${recipient.name.split(' ')[0]}</span><span class="mono" style="font-size: 10px; color: var(--text-muted);">${this.fields.filter((field) => field.recipient === recipient.id).length}</span></div>`)}
393
+ </div>
394
+ <div class="document-stage">
395
+ <div class="document-page page-drop-target" @click=${this.handleDocumentClick} @dragover=${(event) => { event.preventDefault(); if (event.dataTransfer)
396
+ event.dataTransfer.dropEffect = 'copy'; event.currentTarget.classList.add('drag-over'); }} @dragleave=${(event) => event.currentTarget.classList.remove('drag-over')} @drop=${(event) => this.addFieldFromDrop(event)}>
397
+ ${fakeDocument()}
398
+ ${this.fields.map((field) => html `<div class="field-box ${this.selectedFieldId === field.id ? 'selected' : ''}" style="--x: ${field.x}px; --y: ${field.y}px; --w: ${field.w}px; --h: ${field.h}px; --field-color: ${this.recipientColor(field.recipient)};" @click=${() => this.selectedFieldId = field.id} @pointerdown=${(event) => this.startFieldMove(event, field)}><div class="field-content">${icon(this.fieldIcon(field.type), 12)}<span>${field.label}</span></div>${this.selectedFieldId === field.id ? this.renderResizeHandles(field) : ''}</div>`)}
399
+ <div class="mono" style="position: absolute; bottom: 12px; right: 16px; font-size: 9px; color: hsl(0 0% 60%);">Page 1 of 14</div>
400
+ </div>
401
+ <div style="display: flex; align-items: center; gap: 10px; font-size: 11px; color: var(--text-muted);">${actionButton('Prev', 'outline')}${html `<span class="mono">1 / 14</span>`}${actionButton('Next', 'outline')}</div>
402
+ </div>
403
+ <div class="right-panel">
404
+ <div class="label-upper">Signing order · drag to reorder</div>
405
+ ${this.recipients.map((recipient) => html `<div class="recipient-line ${this.draggedRecipientId === recipient.id ? 'dragging' : ''}" draggable="true" @dragstart=${() => this.draggedRecipientId = recipient.id} @dragover=${(event) => event.preventDefault()} @drop=${() => this.reorderRecipient(recipient.id)} @dragend=${() => this.draggedRecipientId = null}><span class="mono" style="width: 14px; font-size: 10px; color: var(--text-muted);">${recipient.order}</span><span class="avatar" style="background: ${recipient.color};">${recipient.name.split(' ').map((part) => part[0]).slice(0, 2).join('')}</span><div style="flex: 1; min-width: 0;"><div style="font-size: 12px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap;">${recipient.name}</div><div class="mono" style="font-size: 10px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap;">${recipient.email}</div></div>${icon('more', 12)}</div>`)}
406
+ ${selectedField ? this.renderFieldEditor(selectedField) : ''}
407
+ </div>
408
+ </div>
409
+ `;
410
+ }
411
+ static {
412
+ __runInitializers(_classThis, _classExtraInitializers);
413
+ }
414
+ };
415
+ return SdigWorkspaceCompose = _classThis;
416
+ })();
417
+ export { SdigWorkspaceCompose };
418
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RpZy13b3Jrc3BhY2UtY29tcG9zZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy9zZGlnLXdvcmtzcGFjZS9zZGlnLXdvcmtzcGFjZS1jb21wb3NlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUF1QixHQUFHLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoSCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUF5QyxNQUFNLDRCQUE0QixDQUFDO0FBNkJ4TSxNQUFNLGdCQUFnQixHQUF1QjtJQUMzQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtJQUN0RSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtJQUNwRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtJQUNoRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtJQUNsRSxFQUFFLElBQUksRUFB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
@@ -0,0 +1,12 @@
1
+ import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
+ declare global {
3
+ interface HTMLElementTagNameMap {
4
+ 'sdig-workspace-developers': SdigWorkspaceDevelopers;
5
+ }
6
+ }
7
+ export declare class SdigWorkspaceDevelopers extends DeesElement {
8
+ static demo: () => TemplateResult;
9
+ static demoGroups: string[];
10
+ static styles: import("@design.estate/dees-element").CSSResult[];
11
+ render(): TemplateResult;
12
+ }
@@ -0,0 +1,91 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import { DeesElement, html, customElement, css } from '@design.estate/dees-element';
36
+ import { actionButton, icon, pill, topBar, workspaceBaseStyles, workspaceDemoFrame } from './sdig-workspace.shared.js';
37
+ let SdigWorkspaceDevelopers = (() => {
38
+ let _classDecorators = [customElement('sdig-workspace-developers')];
39
+ let _classDescriptor;
40
+ let _classExtraInitializers = [];
41
+ let _classThis;
42
+ let _classSuper = DeesElement;
43
+ var SdigWorkspaceDevelopers = class extends _classSuper {
44
+ static { _classThis = this; }
45
+ static {
46
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
47
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
48
+ SdigWorkspaceDevelopers = _classThis = _classDescriptor.value;
49
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
50
+ }
51
+ static demo = () => workspaceDemoFrame(html `<sdig-workspace-developers></sdig-workspace-developers>`);
52
+ static demoGroups = ['Signature Digital Workspace'];
53
+ static styles = [workspaceBaseStyles, css `
54
+ .developer-grid { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 20px; }
55
+ .stats-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
56
+ .metric-card { padding: 14px; }
57
+ .metric-value { font-family: 'Plus Jakarta Sans', Inter, sans-serif; font-size: 22px; font-weight: 600; letter-spacing: -0.02em; }
58
+ pre.code { margin: 0; padding: 16px; background: var(--bg-el); border: 1px solid var(--border-subtle); border-radius: 6px; font-size: 12px; line-height: 1.7; color: var(--text-sec); overflow: auto; }
59
+ @media (max-width: 920px) { .developer-grid, .stats-grid { grid-template-columns: 1fr; } }
60
+ `];
61
+ render() {
62
+ return html `
63
+ ${topBar({ breadcrumb: ['signature.digital', 'Developers'], title: 'Developers', subtitle: pill('API · v0.42', 'info', true), actions: html `${actionButton('View on GitHub', 'outline', 'github')}${actionButton('New API key', 'primary', 'plus')}` })}
64
+ <div class="content-scroll developer-grid">
65
+ <div style="display: flex; flex-direction: column; gap: 16px;">
66
+ <div class="card" style="padding: 20px;"><div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px;"><span style="font-size: 14px; font-weight: 600;">Send a document in 8 lines</span><span class="pill">node</span></div><pre class="code mono">import { Signature } from '@signature.digital/sdk';
67
+
68
+ const sig = new Signature(process.env.SIGD_KEY);
69
+
70
+ await sig.documents.send({
71
+ file: './msa.pdf',
72
+ recipients: [{ name: 'Sarah Chen', email: 'sarah@acme.com' }],
73
+ fields: 'auto',
74
+ });</pre></div>
75
+ <div class="stats-grid">${[['Requests this month', '14,892', '+8.2%'], ['P95 latency', '142ms', '-12ms'], ['Error rate', '0.04%', '✓']].map((metric) => html `<div class="card metric-card"><div class="metric-value">${metric[1]}</div><div style="font-size: 10px; color: var(--text-muted); margin-top: 2px;">${metric[0]}</div><div class="mono" style="font-size: 10px; color: var(--success); margin-top: 6px;">${metric[2]}</div></div>`)}</div>
76
+ </div>
77
+ <div style="display: flex; flex-direction: column; gap: 16px;">
78
+ <div class="card" style="padding: 16px;"><div style="display: flex; align-items: center; gap: 8px; margin-bottom: 10px;">${icon('github', 14)}<span style="font-size: 12px; font-weight: 600;">signature-digital/core</span></div><div style="font-size: 11px; color: var(--text-muted); line-height: 1.5;">MIT-licensed. Self-host on your own infra, or use signature.digital cloud.</div></div>
79
+ <div class="card" style="padding: 16px;"><div class="label-upper">Self-host status</div>${[['Docker image', 'ghcr.io/signature-digital'], ['Helm chart', 'v0.42.1'], ['Postgres ≥ 14', 'required'], ['S3-compatible', 'optional']].map((row) => html `<div style="display: flex; justify-content: space-between; font-size: 11px; margin-bottom: 6px;"><span style="color: var(--text-muted);">${row[0]}</span><span class="mono" style="color: var(--text-sec);">${row[1]}</span></div>`)}</div>
80
+ </div>
81
+ </div>
82
+ `;
83
+ }
84
+ static {
85
+ __runInitializers(_classThis, _classExtraInitializers);
86
+ }
87
+ };
88
+ return SdigWorkspaceDevelopers = _classThis;
89
+ })();
90
+ export { SdigWorkspaceDevelopers };
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RpZy13b3Jrc3BhY2UtZGV2ZWxvcGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy9zZGlnLXdvcmtzcGFjZS9zZGlnLXdvcmtzcGFjZS1kZXZlbG9wZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQXVCLEdBQUcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztJQVMxRyx1QkFBdUI7NEJBRG5DLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQzs7OztzQkFDRSxXQUFXO3VDQUFuQixTQUFRLFdBQVc7Ozs7WUFBeEQsNktBb0NDOzs7O1FBbkNRLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFBLHlEQUF5RCxDQUFDLENBQUM7UUFDdEcsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFFcEQsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLG1CQUFtQixFQUFFLEdBQUcsQ0FBQTs7Ozs7OztHQU8vQyxDQUFDLENBQUM7UUFFSSxNQUFNO1lBQ1gsT0FBTyxJQUFJLENBQUE7UUFDUCxNQUFNLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxZQUFZLENBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFBLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsR0FBRyxZQUFZLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7Ozs7Ozs7Ozs7OztvQ0FZek4sQ0FBQyxDQUFDLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUEsMkRBQTJELE1BQU0sQ0FBQyxDQUFDLENBQUMsa0ZBQWtGLE1BQU0sQ0FBQyxDQUFDLENBQUMsNEZBQTRGLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDOzs7cUlBR3BULElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO29HQUNuRCxDQUFDLENBQUMsY0FBYyxFQUFFLDJCQUEyQixDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQSw0SUFBNEksR0FBRyxDQUFDLENBQUMsQ0FBQyw2REFBNkQsR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7OztLQUc5ZCxDQUFDO1FBQ0osQ0FBQzs7WUFuQ1UsdURBQXVCOzs7OztTQUF2Qix1QkFBdUIifQ==
@@ -0,0 +1,19 @@
1
+ import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
+ import { type TDensity } from './sdig-workspace.shared.js';
3
+ declare global {
4
+ interface HTMLElementTagNameMap {
5
+ 'sdig-workspace-inbox': SdigWorkspaceInbox;
6
+ }
7
+ }
8
+ export declare class SdigWorkspaceInbox extends DeesElement {
9
+ static demo: () => TemplateResult;
10
+ static demoGroups: string[];
11
+ accessor density: TDensity;
12
+ private accessor filter;
13
+ private accessor search;
14
+ static styles: import("@design.estate/dees-element").CSSResult[];
15
+ private get filteredDocuments();
16
+ private statusPill;
17
+ private openDocument;
18
+ render(): TemplateResult;
19
+ }