@arslankhan/doc-forge 0.0.0-stage → 0.1.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 (246) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/LICENSE +13 -0
  3. package/LICENSING.md +80 -0
  4. package/README.md +547 -2
  5. package/RELEASE.md +50 -0
  6. package/dist/binding-path.d.ts +15 -0
  7. package/dist/binding-path.d.ts.map +1 -0
  8. package/dist/binding-path.js +37 -0
  9. package/dist/binding-path.js.map +1 -0
  10. package/dist/binding.d.ts +91 -0
  11. package/dist/binding.d.ts.map +1 -0
  12. package/dist/binding.js +229 -0
  13. package/dist/binding.js.map +1 -0
  14. package/dist/designer/Canvas.d.ts +51 -0
  15. package/dist/designer/Canvas.d.ts.map +1 -0
  16. package/dist/designer/Canvas.js +188 -0
  17. package/dist/designer/Canvas.js.map +1 -0
  18. package/dist/designer/DocumentDesigner.d.ts +14 -0
  19. package/dist/designer/DocumentDesigner.d.ts.map +1 -0
  20. package/dist/designer/DocumentDesigner.js +351 -0
  21. package/dist/designer/DocumentDesigner.js.map +1 -0
  22. package/dist/designer/HtmlPreview.d.ts +9 -0
  23. package/dist/designer/HtmlPreview.d.ts.map +1 -0
  24. package/dist/designer/HtmlPreview.js +20 -0
  25. package/dist/designer/HtmlPreview.js.map +1 -0
  26. package/dist/designer/ImageBindingFields.d.ts +11 -0
  27. package/dist/designer/ImageBindingFields.d.ts.map +1 -0
  28. package/dist/designer/ImageBindingFields.js +106 -0
  29. package/dist/designer/ImageBindingFields.js.map +1 -0
  30. package/dist/designer/InvoiceFields.d.ts +13 -0
  31. package/dist/designer/InvoiceFields.d.ts.map +1 -0
  32. package/dist/designer/InvoiceFields.js +85 -0
  33. package/dist/designer/InvoiceFields.js.map +1 -0
  34. package/dist/designer/PreviewDataDialog.d.ts +13 -0
  35. package/dist/designer/PreviewDataDialog.d.ts.map +1 -0
  36. package/dist/designer/PreviewDataDialog.js +16 -0
  37. package/dist/designer/PreviewDataDialog.js.map +1 -0
  38. package/dist/designer/PropertiesPanel.d.ts +15 -0
  39. package/dist/designer/PropertiesPanel.d.ts.map +1 -0
  40. package/dist/designer/PropertiesPanel.js +63 -0
  41. package/dist/designer/PropertiesPanel.js.map +1 -0
  42. package/dist/designer/ReportFields.d.ts +14 -0
  43. package/dist/designer/ReportFields.d.ts.map +1 -0
  44. package/dist/designer/ReportFields.js +257 -0
  45. package/dist/designer/ReportFields.js.map +1 -0
  46. package/dist/designer/StyleFields.d.ts +16 -0
  47. package/dist/designer/StyleFields.d.ts.map +1 -0
  48. package/dist/designer/StyleFields.js +138 -0
  49. package/dist/designer/StyleFields.js.map +1 -0
  50. package/dist/designer/TextBindingFields.d.ts +11 -0
  51. package/dist/designer/TextBindingFields.d.ts.map +1 -0
  52. package/dist/designer/TextBindingFields.js +105 -0
  53. package/dist/designer/TextBindingFields.js.map +1 -0
  54. package/dist/designer/Toolbar.d.ts +52 -0
  55. package/dist/designer/Toolbar.d.ts.map +1 -0
  56. package/dist/designer/Toolbar.js +62 -0
  57. package/dist/designer/Toolbar.js.map +1 -0
  58. package/dist/designer/Toolbox.d.ts +8 -0
  59. package/dist/designer/Toolbox.d.ts.map +1 -0
  60. package/dist/designer/Toolbox.js +43 -0
  61. package/dist/designer/Toolbox.js.map +1 -0
  62. package/dist/designer/border-preview.d.ts +15 -0
  63. package/dist/designer/border-preview.d.ts.map +1 -0
  64. package/dist/designer/border-preview.js +34 -0
  65. package/dist/designer/border-preview.js.map +1 -0
  66. package/dist/designer/history.d.ts +13 -0
  67. package/dist/designer/history.d.ts.map +1 -0
  68. package/dist/designer/history.js +51 -0
  69. package/dist/designer/history.js.map +1 -0
  70. package/dist/designer/index.d.ts +5 -0
  71. package/dist/designer/index.d.ts.map +1 -0
  72. package/dist/designer/index.js +3 -0
  73. package/dist/designer/index.js.map +1 -0
  74. package/dist/designer/page-geometry.d.ts +35 -0
  75. package/dist/designer/page-geometry.d.ts.map +1 -0
  76. package/dist/designer/page-geometry.js +123 -0
  77. package/dist/designer/page-geometry.js.map +1 -0
  78. package/dist/designer/styles.d.ts +3 -0
  79. package/dist/designer/styles.d.ts.map +1 -0
  80. package/dist/designer/styles.js +594 -0
  81. package/dist/designer/styles.js.map +1 -0
  82. package/dist/designer/template-edits.d.ts +26 -0
  83. package/dist/designer/template-edits.d.ts.map +1 -0
  84. package/dist/designer/template-edits.js +323 -0
  85. package/dist/designer/template-edits.js.map +1 -0
  86. package/dist/designer/theme.d.ts +31 -0
  87. package/dist/designer/theme.d.ts.map +1 -0
  88. package/dist/designer/theme.js +92 -0
  89. package/dist/designer/theme.js.map +1 -0
  90. package/dist/examples/bound-invoice.d.ts +143 -0
  91. package/dist/examples/bound-invoice.d.ts.map +1 -0
  92. package/dist/examples/bound-invoice.js +99 -0
  93. package/dist/examples/bound-invoice.js.map +1 -0
  94. package/dist/examples/full-invoice-data.d.ts +81 -0
  95. package/dist/examples/full-invoice-data.d.ts.map +1 -0
  96. package/dist/examples/full-invoice-data.js +86 -0
  97. package/dist/examples/full-invoice-data.js.map +1 -0
  98. package/dist/examples/full-invoice.d.ts +402 -0
  99. package/dist/examples/full-invoice.d.ts.map +1 -0
  100. package/dist/examples/full-invoice.js +199 -0
  101. package/dist/examples/full-invoice.js.map +1 -0
  102. package/dist/examples/invoice-data.d.ts +51 -0
  103. package/dist/examples/invoice-data.d.ts.map +1 -0
  104. package/dist/examples/invoice-data.js +51 -0
  105. package/dist/examples/invoice-data.js.map +1 -0
  106. package/dist/examples/invoice.d.ts +90 -0
  107. package/dist/examples/invoice.d.ts.map +1 -0
  108. package/dist/examples/invoice.js +62 -0
  109. package/dist/examples/invoice.js.map +1 -0
  110. package/dist/examples/jobs-report-data.d.ts +84 -0
  111. package/dist/examples/jobs-report-data.d.ts.map +1 -0
  112. package/dist/examples/jobs-report-data.js +79 -0
  113. package/dist/examples/jobs-report-data.js.map +1 -0
  114. package/dist/examples/jobs-report.d.ts +182 -0
  115. package/dist/examples/jobs-report.d.ts.map +1 -0
  116. package/dist/examples/jobs-report.js +96 -0
  117. package/dist/examples/jobs-report.js.map +1 -0
  118. package/dist/index.d.ts +31 -0
  119. package/dist/index.d.ts.map +1 -0
  120. package/dist/index.js +21 -0
  121. package/dist/index.js.map +1 -0
  122. package/dist/invoice/calculate.d.ts +59 -0
  123. package/dist/invoice/calculate.d.ts.map +1 -0
  124. package/dist/invoice/calculate.js +270 -0
  125. package/dist/invoice/calculate.js.map +1 -0
  126. package/dist/invoice/context.d.ts +15 -0
  127. package/dist/invoice/context.d.ts.map +1 -0
  128. package/dist/invoice/context.js +79 -0
  129. package/dist/invoice/context.js.map +1 -0
  130. package/dist/invoice/format.d.ts +10 -0
  131. package/dist/invoice/format.d.ts.map +1 -0
  132. package/dist/invoice/format.js +95 -0
  133. package/dist/invoice/format.js.map +1 -0
  134. package/dist/license/capabilities.d.ts +17 -0
  135. package/dist/license/capabilities.d.ts.map +1 -0
  136. package/dist/license/capabilities.js +46 -0
  137. package/dist/license/capabilities.js.map +1 -0
  138. package/dist/license/client.d.ts +109 -0
  139. package/dist/license/client.d.ts.map +1 -0
  140. package/dist/license/client.js +346 -0
  141. package/dist/license/client.js.map +1 -0
  142. package/dist/license/codec.d.ts +5 -0
  143. package/dist/license/codec.d.ts.map +1 -0
  144. package/dist/license/codec.js +26 -0
  145. package/dist/license/codec.js.map +1 -0
  146. package/dist/license/errors.d.ts +11 -0
  147. package/dist/license/errors.d.ts.map +1 -0
  148. package/dist/license/errors.js +19 -0
  149. package/dist/license/errors.js.map +1 -0
  150. package/dist/license/features.d.ts +20 -0
  151. package/dist/license/features.d.ts.map +1 -0
  152. package/dist/license/features.js +28 -0
  153. package/dist/license/features.js.map +1 -0
  154. package/dist/license/index.d.ts +16 -0
  155. package/dist/license/index.d.ts.map +1 -0
  156. package/dist/license/index.js +9 -0
  157. package/dist/license/index.js.map +1 -0
  158. package/dist/license/provider.d.ts +59 -0
  159. package/dist/license/provider.d.ts.map +1 -0
  160. package/dist/license/provider.js +150 -0
  161. package/dist/license/provider.js.map +1 -0
  162. package/dist/license/redact.d.ts +4 -0
  163. package/dist/license/redact.d.ts.map +1 -0
  164. package/dist/license/redact.js +15 -0
  165. package/dist/license/redact.js.map +1 -0
  166. package/dist/license/store.d.ts +26 -0
  167. package/dist/license/store.d.ts.map +1 -0
  168. package/dist/license/store.js +90 -0
  169. package/dist/license/store.js.map +1 -0
  170. package/dist/license/token.d.ts +45 -0
  171. package/dist/license/token.d.ts.map +1 -0
  172. package/dist/license/token.js +195 -0
  173. package/dist/license/token.js.map +1 -0
  174. package/dist/pdf/browser-blocked.d.ts +12 -0
  175. package/dist/pdf/browser-blocked.d.ts.map +1 -0
  176. package/dist/pdf/browser-blocked.js +25 -0
  177. package/dist/pdf/browser-blocked.js.map +1 -0
  178. package/dist/pdf/browser.d.ts +12 -0
  179. package/dist/pdf/browser.d.ts.map +1 -0
  180. package/dist/pdf/browser.js +69 -0
  181. package/dist/pdf/browser.js.map +1 -0
  182. package/dist/pdf/errors.d.ts +6 -0
  183. package/dist/pdf/errors.d.ts.map +1 -0
  184. package/dist/pdf/errors.js +11 -0
  185. package/dist/pdf/errors.js.map +1 -0
  186. package/dist/pdf/index.d.ts +10 -0
  187. package/dist/pdf/index.d.ts.map +1 -0
  188. package/dist/pdf/index.js +9 -0
  189. package/dist/pdf/index.js.map +1 -0
  190. package/dist/pdf/options.d.ts +143 -0
  191. package/dist/pdf/options.d.ts.map +1 -0
  192. package/dist/pdf/options.js +322 -0
  193. package/dist/pdf/options.js.map +1 -0
  194. package/dist/pdf/render-pdf.d.ts +13 -0
  195. package/dist/pdf/render-pdf.d.ts.map +1 -0
  196. package/dist/pdf/render-pdf.js +195 -0
  197. package/dist/pdf/render-pdf.js.map +1 -0
  198. package/dist/render/appearance.d.ts +25 -0
  199. package/dist/render/appearance.d.ts.map +1 -0
  200. package/dist/render/appearance.js +149 -0
  201. package/dist/render/appearance.js.map +1 -0
  202. package/dist/render/css.d.ts +17 -0
  203. package/dist/render/css.d.ts.map +1 -0
  204. package/dist/render/css.js +170 -0
  205. package/dist/render/css.js.map +1 -0
  206. package/dist/render/errors.d.ts +6 -0
  207. package/dist/render/errors.d.ts.map +1 -0
  208. package/dist/render/errors.js +11 -0
  209. package/dist/render/errors.js.map +1 -0
  210. package/dist/render/escape.d.ts +7 -0
  211. package/dist/render/escape.d.ts.map +1 -0
  212. package/dist/render/escape.js +27 -0
  213. package/dist/render/escape.js.map +1 -0
  214. package/dist/render/image-policy.d.ts +21 -0
  215. package/dist/render/image-policy.d.ts.map +1 -0
  216. package/dist/render/image-policy.js +62 -0
  217. package/dist/render/image-policy.js.map +1 -0
  218. package/dist/render/render-html.d.ts +28 -0
  219. package/dist/render/render-html.d.ts.map +1 -0
  220. package/dist/render/render-html.js +364 -0
  221. package/dist/render/render-html.js.map +1 -0
  222. package/dist/render/render-report.d.ts +23 -0
  223. package/dist/render/render-report.d.ts.map +1 -0
  224. package/dist/render/render-report.js +313 -0
  225. package/dist/render/render-report.js.map +1 -0
  226. package/dist/report/process.d.ts +48 -0
  227. package/dist/report/process.d.ts.map +1 -0
  228. package/dist/report/process.js +347 -0
  229. package/dist/report/process.js.map +1 -0
  230. package/dist/schema.d.ts +30 -0
  231. package/dist/schema.d.ts.map +1 -0
  232. package/dist/schema.js +8 -0
  233. package/dist/schema.js.map +1 -0
  234. package/dist/serialize.d.ts +13 -0
  235. package/dist/serialize.d.ts.map +1 -0
  236. package/dist/serialize.js +42 -0
  237. package/dist/serialize.js.map +1 -0
  238. package/dist/types.d.ts +335 -0
  239. package/dist/types.d.ts.map +1 -0
  240. package/dist/types.js +40 -0
  241. package/dist/types.js.map +1 -0
  242. package/dist/validate.d.ts +15 -0
  243. package/dist/validate.d.ts.map +1 -0
  244. package/dist/validate.js +977 -0
  245. package/dist/validate.js.map +1 -0
  246. package/package.json +97 -4
@@ -0,0 +1,594 @@
1
+ export const STYLE_ID = "doc-forge-designer-styles";
2
+ export const DESIGNER_CSS = `
3
+ .df-shell {
4
+ --df-app: #e7ebf0;
5
+ --df-surface: #ffffff;
6
+ --df-surface-muted: #f7f8fa;
7
+ --df-text: #1c2430;
8
+ --df-text-secondary: #3d4858;
9
+ --df-text-muted: #5c6778;
10
+ --df-border: #d5dbe3;
11
+ --df-input-bg: #ffffff;
12
+ --df-input-border: #c5ceda;
13
+ --df-hover: #e8eef6;
14
+ --df-selected: #e5eefc;
15
+ --df-selected-border: #c5d7f5;
16
+ --df-selected-text: #174f9e;
17
+ --df-primary: #1b5fbf;
18
+ --df-primary-hover: #174f9e;
19
+ --df-primary-text: #ffffff;
20
+ --df-focus: #1b5fbf;
21
+ --df-workspace: #c5cad3;
22
+ --df-shadow: rgba(20, 28, 40, 0.18);
23
+ --df-overlay: rgba(20, 28, 40, 0.45);
24
+ --df-danger: #9f1d1d;
25
+ --df-danger-border: #e4b4b4;
26
+ --df-warning: #8a5a00;
27
+ --df-success: #0f7b4c;
28
+ color-scheme: light;
29
+ height: 100%;
30
+ min-height: 560px;
31
+ display: flex;
32
+ flex-direction: column;
33
+ background: var(--df-app);
34
+ color: var(--df-text);
35
+ font-family: "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
36
+ font-size: 13px;
37
+ line-height: 1.4;
38
+ }
39
+ .df-shell[data-theme="dark"] {
40
+ --df-app: #12161c;
41
+ --df-surface: #1c232d;
42
+ --df-surface-muted: #171d26;
43
+ --df-text: #e8eef6;
44
+ --df-text-secondary: #c5d0de;
45
+ --df-text-muted: #a8b3c2;
46
+ --df-border: #313a48;
47
+ --df-input-bg: #121820;
48
+ --df-input-border: #465266;
49
+ --df-hover: #283140;
50
+ --df-selected: #1d3a5f;
51
+ --df-selected-border: #3d6eab;
52
+ --df-selected-text: #d6e6ff;
53
+ --df-primary: #3d8bfd;
54
+ --df-primary-hover: #69a6ff;
55
+ --df-primary-text: #061018;
56
+ --df-focus: #9ec1ff;
57
+ --df-workspace: #0c1016;
58
+ --df-shadow: rgba(0, 0, 0, 0.45);
59
+ --df-overlay: rgba(0, 0, 0, 0.62);
60
+ --df-danger: #ffb4b4;
61
+ --df-danger-border: #8a3d3d;
62
+ --df-warning: #f0c674;
63
+ --df-success: #7dcea0;
64
+ color-scheme: dark;
65
+ }
66
+ @media (prefers-reduced-motion: reduce) {
67
+ .df-shell,
68
+ .df-shell * {
69
+ transition: none !important;
70
+ }
71
+ }
72
+ .df-shell *,
73
+ .df-shell *::before,
74
+ .df-shell *::after {
75
+ box-sizing: border-box;
76
+ }
77
+ .df-shell button,
78
+ .df-shell input,
79
+ .df-shell select,
80
+ .df-shell textarea {
81
+ font: inherit;
82
+ }
83
+ .df-shell input,
84
+ .df-shell select,
85
+ .df-shell textarea {
86
+ color: var(--df-text);
87
+ }
88
+ .df-shell button:focus-visible,
89
+ .df-shell input:focus-visible,
90
+ .df-shell select:focus-visible,
91
+ .df-shell textarea:focus-visible {
92
+ outline: 2px solid var(--df-focus);
93
+ outline-offset: 1px;
94
+ }
95
+ .df-toolbar {
96
+ display: flex;
97
+ flex-wrap: wrap;
98
+ align-items: center;
99
+ gap: 8px;
100
+ padding: 8px 12px;
101
+ background: var(--df-surface);
102
+ border-bottom: 1px solid var(--df-border);
103
+ }
104
+ .df-toolbar-group {
105
+ display: flex;
106
+ align-items: center;
107
+ gap: 4px;
108
+ }
109
+ .df-name {
110
+ flex: 1 1 180px;
111
+ min-width: 160px;
112
+ }
113
+ .df-name input,
114
+ .df-select,
115
+ .df-custom input,
116
+ .df-field input,
117
+ .df-field select,
118
+ .df-field textarea {
119
+ width: 100%;
120
+ border: 1px solid var(--df-input-border);
121
+ border-radius: 6px;
122
+ background: var(--df-input-bg);
123
+ color: var(--df-text);
124
+ }
125
+ .df-name input,
126
+ .df-select,
127
+ .df-custom input,
128
+ .df-field input,
129
+ .df-field select {
130
+ height: 32px;
131
+ padding: 0 8px;
132
+ }
133
+ .df-select {
134
+ width: auto;
135
+ }
136
+ .df-custom {
137
+ display: flex;
138
+ align-items: center;
139
+ gap: 8px;
140
+ }
141
+ .df-custom label {
142
+ display: flex;
143
+ align-items: center;
144
+ gap: 4px;
145
+ }
146
+ .df-custom input {
147
+ width: 72px;
148
+ }
149
+ .df-button {
150
+ height: 32px;
151
+ padding: 0 10px;
152
+ border: 1px solid var(--df-input-border);
153
+ border-radius: 6px;
154
+ background: var(--df-surface);
155
+ color: var(--df-text);
156
+ cursor: pointer;
157
+ }
158
+ .df-button:hover:not(:disabled) {
159
+ background: var(--df-hover);
160
+ }
161
+ .df-button:disabled {
162
+ opacity: 0.45;
163
+ cursor: default;
164
+ }
165
+ .df-button--primary {
166
+ background: var(--df-primary);
167
+ border-color: var(--df-primary-hover);
168
+ color: var(--df-primary-text);
169
+ }
170
+ .df-button--primary:hover:not(:disabled) {
171
+ background: var(--df-primary-hover);
172
+ }
173
+ .df-button--pressed {
174
+ background: var(--df-selected);
175
+ border-color: var(--df-primary);
176
+ color: var(--df-selected-text);
177
+ }
178
+ .df-button--danger {
179
+ width: 100%;
180
+ color: var(--df-danger);
181
+ border-color: var(--df-danger-border);
182
+ background: var(--df-surface);
183
+ }
184
+ .df-theme {
185
+ display: flex;
186
+ align-items: center;
187
+ gap: 2px;
188
+ }
189
+ .df-theme-button {
190
+ width: 32px;
191
+ height: 32px;
192
+ display: grid;
193
+ place-items: center;
194
+ padding: 0;
195
+ }
196
+ .df-theme-button svg {
197
+ display: block;
198
+ }
199
+ .df-zoom {
200
+ min-width: 52px;
201
+ text-align: center;
202
+ font-variant-numeric: tabular-nums;
203
+ color: var(--df-text-secondary);
204
+ }
205
+ .df-status {
206
+ flex: 1 1 160px;
207
+ min-height: 1.2em;
208
+ font-size: 12px;
209
+ }
210
+ .df-status--ok { color: var(--df-success); }
211
+ .df-status--error { color: var(--df-danger); }
212
+ .df-body {
213
+ flex: 1;
214
+ min-height: 0;
215
+ display: flex;
216
+ }
217
+ .df-side {
218
+ width: 240px;
219
+ flex: 0 0 240px;
220
+ background: var(--df-surface-muted);
221
+ overflow: auto;
222
+ padding: 12px;
223
+ }
224
+ .df-side--left { border-right: 1px solid var(--df-border); }
225
+ .df-side--right { border-left: 1px solid var(--df-border); }
226
+ .df-side-title {
227
+ margin: 0 0 4px;
228
+ font-size: 12px;
229
+ font-weight: 650;
230
+ letter-spacing: 0.04em;
231
+ text-transform: uppercase;
232
+ color: var(--df-text-muted);
233
+ }
234
+ .df-side-note {
235
+ margin: 0 0 12px;
236
+ color: var(--df-text-muted);
237
+ font-size: 12px;
238
+ }
239
+ .df-tool {
240
+ display: flex;
241
+ align-items: center;
242
+ gap: 10px;
243
+ width: 100%;
244
+ margin-bottom: 6px;
245
+ padding: 8px;
246
+ border: 1px solid transparent;
247
+ border-radius: 8px;
248
+ background: transparent;
249
+ text-align: left;
250
+ cursor: pointer;
251
+ }
252
+ .df-tool:hover { background: var(--df-hover); }
253
+ .df-tool-icon {
254
+ width: 32px;
255
+ height: 32px;
256
+ display: grid;
257
+ place-items: center;
258
+ border: 1px solid var(--df-border);
259
+ border-radius: 6px;
260
+ background: var(--df-surface);
261
+ color: var(--df-text);
262
+ flex: 0 0 auto;
263
+ }
264
+ .df-tool strong { display: block; font-weight: 600; color: var(--df-text); }
265
+ .df-tool span { display: block; color: var(--df-text-muted); font-size: 12px; }
266
+ .df-viewport {
267
+ flex: 1;
268
+ min-width: 0;
269
+ min-height: 0;
270
+ display: flex;
271
+ flex-direction: column;
272
+ background: var(--df-workspace);
273
+ }
274
+ .df-viewport-stage {
275
+ flex: 1;
276
+ min-height: 0;
277
+ overflow: auto;
278
+ display: grid;
279
+ place-content: safe center;
280
+ padding: 24px;
281
+ }
282
+ .df-preview-banner {
283
+ flex: 0 0 auto;
284
+ padding: 8px 12px;
285
+ background: var(--df-selected);
286
+ color: var(--df-selected-text);
287
+ border-bottom: 1px solid var(--df-selected-border);
288
+ text-align: center;
289
+ }
290
+ .df-viewport-stage--html {
291
+ display: flex;
292
+ flex-direction: column;
293
+ padding: 0;
294
+ }
295
+ .df-html-note {
296
+ flex: 0 0 auto;
297
+ margin: 0;
298
+ padding: 8px 12px;
299
+ background: var(--df-surface);
300
+ color: var(--df-text-muted);
301
+ border-bottom: 1px solid var(--df-border);
302
+ }
303
+ .df-html-frame {
304
+ flex: 1;
305
+ width: 100%;
306
+ min-height: 0;
307
+ border: 0;
308
+ background: var(--df-workspace);
309
+ }
310
+ .df-page-slot { position: relative; }
311
+ /* Document surface. These colors stay with the template and do not follow the editor theme. */
312
+ .df-page {
313
+ position: absolute;
314
+ top: 0;
315
+ left: 0;
316
+ background: #fff;
317
+ color: #1c2430;
318
+ box-shadow: 0 12px 40px var(--df-shadow);
319
+ transform-origin: top left;
320
+ }
321
+ .df-grid,
322
+ .df-margins,
323
+ .df-empty {
324
+ position: absolute;
325
+ pointer-events: none;
326
+ }
327
+ .df-grid {
328
+ inset: 0;
329
+ background-image:
330
+ linear-gradient(to right, rgba(28, 36, 48, 0.12) 1px, transparent 1px),
331
+ linear-gradient(to bottom, rgba(28, 36, 48, 0.12) 1px, transparent 1px);
332
+ }
333
+ .df-margins {
334
+ border: 1px dashed rgba(27, 95, 191, 0.7);
335
+ }
336
+ .df-empty {
337
+ left: 50%;
338
+ top: 50%;
339
+ transform: translate(-50%, -50%);
340
+ color: #8b95a5;
341
+ font-size: 14px;
342
+ white-space: nowrap;
343
+ }
344
+ .df-element {
345
+ position: absolute;
346
+ touch-action: none;
347
+ cursor: move;
348
+ user-select: none;
349
+ }
350
+ .df-element--selected {
351
+ box-shadow: 0 0 0 2px #1b5fbf;
352
+ z-index: 2;
353
+ }
354
+ .df-text {
355
+ overflow: hidden;
356
+ white-space: pre-wrap;
357
+ word-break: break-word;
358
+ }
359
+ .df-image {
360
+ display: flex;
361
+ align-items: center;
362
+ justify-content: center;
363
+ overflow: hidden;
364
+ padding: 4px;
365
+ text-align: center;
366
+ color: #5c6778;
367
+ font-size: 11px;
368
+ background:
369
+ repeating-linear-gradient(-45deg, #f7f8fa, #f7f8fa 6px, #eef1f5 6px, #eef1f5 12px);
370
+ border: 1px dashed #9aa3b2;
371
+ }
372
+ .df-items,
373
+ .df-report,
374
+ .df-totals {
375
+ width: 100%;
376
+ height: 100%;
377
+ overflow: hidden;
378
+ background: #ffffff;
379
+ color: #1c2430;
380
+ font-size: 10px;
381
+ pointer-events: none;
382
+ }
383
+ .df-items table,
384
+ .df-report table,
385
+ .df-totals table {
386
+ width: 100%;
387
+ border-collapse: collapse;
388
+ }
389
+ .df-items th,
390
+ .df-items td,
391
+ .df-report th,
392
+ .df-report td,
393
+ .df-totals td {
394
+ padding: 2px 4px;
395
+ text-align: left;
396
+ }
397
+ .df-totals td:last-child { text-align: right; }
398
+ .df-report tr[data-kind="group"],
399
+ .df-report tr[data-kind="subtotal"],
400
+ .df-report tr[data-kind="grand"] { font-weight: 700; }
401
+ .df-column {
402
+ margin: 0 0 8px;
403
+ padding: 8px;
404
+ border: 1px solid var(--df-border);
405
+ border-radius: 6px;
406
+ }
407
+ .df-column legend { padding: 0 4px; font-size: 12px; }
408
+ .df-image-photo {
409
+ width: 100%;
410
+ height: 100%;
411
+ object-fit: contain;
412
+ pointer-events: none;
413
+ }
414
+ .df-rect { overflow: hidden; }
415
+ .df-line { overflow: visible; }
416
+ .df-handle {
417
+ position: absolute;
418
+ width: 10px;
419
+ height: 10px;
420
+ right: -5px;
421
+ bottom: -5px;
422
+ padding: 0;
423
+ border: 1px solid #1b5fbf;
424
+ border-radius: 2px;
425
+ background: #fff;
426
+ cursor: nwse-resize;
427
+ z-index: 3;
428
+ }
429
+ .df-style {
430
+ border: 1px solid var(--df-border);
431
+ border-radius: 8px;
432
+ background: var(--df-surface);
433
+ }
434
+ .df-style > summary {
435
+ cursor: pointer;
436
+ padding: 8px 10px;
437
+ font-size: 12px;
438
+ font-weight: 650;
439
+ }
440
+ .df-style-body {
441
+ display: grid;
442
+ gap: 8px;
443
+ padding: 0 10px 10px;
444
+ }
445
+ .df-reset { justify-self: start; font-size: 11px; }
446
+ .df-props {
447
+ display: grid;
448
+ gap: 12px;
449
+ align-content: start;
450
+ }
451
+ .df-props-head {
452
+ display: flex;
453
+ justify-content: space-between;
454
+ align-items: center;
455
+ gap: 8px;
456
+ }
457
+ .df-props-head h3 {
458
+ margin: 0;
459
+ font-size: 14px;
460
+ }
461
+ .df-link {
462
+ border: 0;
463
+ background: transparent;
464
+ color: var(--df-primary);
465
+ cursor: pointer;
466
+ padding: 0;
467
+ }
468
+ .df-link:hover { color: var(--df-primary-hover); }
469
+ .df-field {
470
+ display: grid;
471
+ gap: 4px;
472
+ }
473
+ .df-check {
474
+ display: flex;
475
+ align-items: center;
476
+ gap: 6px;
477
+ margin: 6px 0;
478
+ font-size: 12px;
479
+ }
480
+ .df-field > span,
481
+ .df-custom span {
482
+ font-size: 11px;
483
+ font-weight: 650;
484
+ color: var(--df-text-muted);
485
+ }
486
+ .df-field-row {
487
+ display: grid;
488
+ grid-template-columns: 1fr 1fr;
489
+ gap: 8px;
490
+ }
491
+ .df-field textarea {
492
+ min-height: 72px;
493
+ padding: 8px;
494
+ resize: vertical;
495
+ }
496
+ .df-color {
497
+ display: flex;
498
+ gap: 6px;
499
+ align-items: center;
500
+ }
501
+ .df-color input[type="color"] {
502
+ width: 32px;
503
+ height: 32px;
504
+ padding: 2px;
505
+ flex: 0 0 auto;
506
+ }
507
+ .df-meta {
508
+ margin: 0;
509
+ color: var(--df-text-muted);
510
+ font-size: 12px;
511
+ }
512
+ .df-error {
513
+ margin: 24px;
514
+ padding: 16px;
515
+ border: 1px solid var(--df-danger-border);
516
+ border-radius: 8px;
517
+ background: var(--df-surface);
518
+ color: var(--df-danger);
519
+ }
520
+ .df-error ul { margin: 8px 0 0; padding-left: 18px; }
521
+ .df-binding {
522
+ margin: 0;
523
+ padding: 8px;
524
+ border: 1px solid var(--df-border);
525
+ border-radius: 8px;
526
+ display: grid;
527
+ gap: 8px;
528
+ }
529
+ .df-binding legend {
530
+ padding: 0 4px;
531
+ font-size: 11px;
532
+ font-weight: 650;
533
+ color: var(--df-text-muted);
534
+ }
535
+ .df-choice {
536
+ display: grid;
537
+ gap: 4px;
538
+ }
539
+ .df-choice label {
540
+ display: flex;
541
+ align-items: center;
542
+ gap: 6px;
543
+ }
544
+ .df-path-note {
545
+ margin: 0;
546
+ font-size: 12px;
547
+ }
548
+ .df-path-note--ok { color: var(--df-success); }
549
+ .df-path-note--error { color: var(--df-danger); }
550
+ .df-path-note--muted { color: var(--df-text-muted); }
551
+ .df-dialog-backdrop {
552
+ position: fixed;
553
+ inset: 0;
554
+ z-index: 30;
555
+ background: var(--df-overlay);
556
+ display: grid;
557
+ place-items: center;
558
+ padding: 16px;
559
+ }
560
+ .df-dialog {
561
+ width: min(520px, 100%);
562
+ max-height: min(640px, 100%);
563
+ overflow: auto;
564
+ background: var(--df-surface);
565
+ color: var(--df-text);
566
+ border-radius: 10px;
567
+ padding: 16px;
568
+ display: grid;
569
+ gap: 10px;
570
+ box-shadow: 0 16px 48px var(--df-shadow);
571
+ }
572
+ .df-dialog h3 {
573
+ margin: 0;
574
+ font-size: 16px;
575
+ }
576
+ .df-dialog textarea {
577
+ min-height: 240px;
578
+ padding: 8px;
579
+ border: 1px solid var(--df-input-border);
580
+ border-radius: 6px;
581
+ background: var(--df-input-bg);
582
+ color: var(--df-text);
583
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
584
+ font-size: 12px;
585
+ resize: vertical;
586
+ }
587
+ .df-dialog-actions {
588
+ display: flex;
589
+ flex-wrap: wrap;
590
+ gap: 8px;
591
+ justify-content: flex-end;
592
+ }
593
+ `;
594
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/designer/styles.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,2BAA2B,CAAC;AAEpD,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+kB3B,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { DocumentTemplate, DocumentType } from "../schema.js";
2
+ import type { DocumentElement, ElementDimensions, ElementPosition, ElementType, ImageElement, ReportOptions, PageConfiguration, PageDimensions, PageMargins, PageOrientation, PaperSize } from "../types.js";
3
+ import { type ResolvedPage } from "./page-geometry.js";
4
+ export declare function nextElementId(type: ElementType, elements: readonly DocumentElement[]): string;
5
+ export declare function createDefaultElement(type: ElementType, page: ResolvedPage, elements: readonly DocumentElement[], snap: boolean): DocumentElement;
6
+ export declare function setDocumentType(template: DocumentTemplate, documentType: DocumentType): DocumentTemplate | null;
7
+ export declare function appendElement(template: DocumentTemplate, type: ElementType, snap: boolean): {
8
+ template: DocumentTemplate;
9
+ id: string;
10
+ } | null;
11
+ export declare function replaceElement(template: DocumentTemplate, id: string, element: DocumentElement): DocumentTemplate | null;
12
+ export declare function moveElement(template: DocumentTemplate, id: string, position: ElementPosition): DocumentTemplate | null;
13
+ export declare function resizeElement(template: DocumentTemplate, id: string, dimensions: ElementDimensions): DocumentTemplate | null;
14
+ export declare function deleteElement(template: DocumentTemplate, id: string): DocumentTemplate | null;
15
+ export declare function renameTemplate(template: DocumentTemplate, name: string): DocumentTemplate | null;
16
+ export interface PageSettingsUpdate {
17
+ paperSize?: PaperSize;
18
+ orientation?: PageOrientation;
19
+ layoutMode?: PageConfiguration["layoutMode"];
20
+ margins?: PageMargins;
21
+ dimensions?: PageDimensions;
22
+ }
23
+ export declare function withReport(template: DocumentTemplate, report: ReportOptions | undefined): DocumentTemplate | null;
24
+ export declare function applyPageSettings(template: DocumentTemplate, update: PageSettingsUpdate): DocumentTemplate | null;
25
+ export declare function withoutImageSrc(element: ImageElement): ImageElement;
26
+ //# sourceMappingURL=template-edits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-edits.d.ts","sourceRoot":"","sources":["../../src/designer/template-edits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,YAAY,EAGZ,aAAa,EAEb,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,eAAe,EACf,SAAS,EACV,MAAM,aAAa,CAAC;AAGrB,OAAO,EAQL,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAE5B,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,CAS7F;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,SAAS,eAAe,EAAE,EACpC,IAAI,EAAE,OAAO,GACZ,eAAe,CA6IjB;AAuCD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,GAAG,gBAAgB,GAAG,IAAI,CAG/G;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,OAAO,GACZ;IAAE,QAAQ,EAAE,gBAAgB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOnD;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,gBAAgB,EAC1B,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,eAAe,GACvB,gBAAgB,GAAG,IAAI,CASzB;AAED,wBAAgB,WAAW,CACzB,QAAQ,EAAE,gBAAgB,EAC1B,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,eAAe,GACxB,gBAAgB,GAAG,IAAI,CAUzB;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,gBAAgB,EAC1B,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,iBAAiB,GAC5B,gBAAgB,GAAG,IAAI,CAezB;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAS7F;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAMhG;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,UAAU,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,gBAAgB,GAAG,IAAI,CAQjH;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,kBAAkB,GAAG,gBAAgB,GAAG,IAAI,CAgCjH;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,CAInE"}