@hed-hog/core 0.0.400 → 0.0.402

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 (274) hide show
  1. package/dist/access-log/access-log.interceptor.d.ts +10 -0
  2. package/dist/access-log/access-log.interceptor.d.ts.map +1 -1
  3. package/dist/access-log/access-log.interceptor.js +15 -1
  4. package/dist/access-log/access-log.interceptor.js.map +1 -1
  5. package/dist/ai/ai.controller.d.ts +2 -0
  6. package/dist/ai/ai.controller.d.ts.map +1 -1
  7. package/dist/ai/ai.service.d.ts +86 -2
  8. package/dist/ai/ai.service.d.ts.map +1 -1
  9. package/dist/ai/ai.service.js +304 -23
  10. package/dist/ai/ai.service.js.map +1 -1
  11. package/dist/ai-instruction/ai-prompt-resolver.service.d.ts +12 -0
  12. package/dist/ai-instruction/ai-prompt-resolver.service.d.ts.map +1 -1
  13. package/dist/ai-instruction/ai-prompt-resolver.service.js +26 -0
  14. package/dist/ai-instruction/ai-prompt-resolver.service.js.map +1 -1
  15. package/dist/core.module.d.ts.map +1 -1
  16. package/dist/core.module.js +3 -0
  17. package/dist/core.module.js.map +1 -1
  18. package/dist/document-kit/document-kit.module.d.ts +3 -0
  19. package/dist/document-kit/document-kit.module.d.ts.map +1 -0
  20. package/dist/document-kit/document-kit.module.js +24 -0
  21. package/dist/document-kit/document-kit.module.js.map +1 -0
  22. package/dist/document-kit/document-kit.registry.d.ts +55 -0
  23. package/dist/document-kit/document-kit.registry.d.ts.map +1 -0
  24. package/dist/document-kit/document-kit.registry.js +91 -0
  25. package/dist/document-kit/document-kit.registry.js.map +1 -0
  26. package/dist/document-kit/document-kit.service.d.ts +49 -0
  27. package/dist/document-kit/document-kit.service.d.ts.map +1 -0
  28. package/dist/document-kit/document-kit.service.js +135 -0
  29. package/dist/document-kit/document-kit.service.js.map +1 -0
  30. package/dist/file/file-upload-ticket.service.d.ts +1 -1
  31. package/dist/file/file.controller.d.ts +3 -3
  32. package/dist/file/file.service.d.ts +136 -13
  33. package/dist/file/file.service.d.ts.map +1 -1
  34. package/dist/file/file.service.js +297 -27
  35. package/dist/file/file.service.js.map +1 -1
  36. package/dist/file/mcp-file-source.schema.d.ts.map +1 -1
  37. package/dist/file/mcp-file-source.schema.js +8 -5
  38. package/dist/file/mcp-file-source.schema.js.map +1 -1
  39. package/dist/file/provider/abstract.provider.d.ts +33 -0
  40. package/dist/file/provider/abstract.provider.d.ts.map +1 -1
  41. package/dist/file/provider/abstract.provider.js +9 -0
  42. package/dist/file/provider/abstract.provider.js.map +1 -1
  43. package/dist/file/provider/s3-multipart.util.d.ts +17 -0
  44. package/dist/file/provider/s3-multipart.util.d.ts.map +1 -0
  45. package/dist/file/provider/s3-multipart.util.js +88 -0
  46. package/dist/file/provider/s3-multipart.util.js.map +1 -0
  47. package/dist/file/provider/s3.provider.d.ts +9 -1
  48. package/dist/file/provider/s3.provider.d.ts.map +1 -1
  49. package/dist/file/provider/s3.provider.js +16 -0
  50. package/dist/file/provider/s3.provider.js.map +1 -1
  51. package/dist/file/provider/spaces.provider.d.ts +10 -1
  52. package/dist/file/provider/spaces.provider.d.ts.map +1 -1
  53. package/dist/file/provider/spaces.provider.js +17 -0
  54. package/dist/file/provider/spaces.provider.js.map +1 -1
  55. package/dist/index.d.ts +5 -0
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +5 -0
  58. package/dist/index.js.map +1 -1
  59. package/dist/integration-profile/integration-profile.controller.d.ts +1 -0
  60. package/dist/integration-profile/integration-profile.controller.d.ts.map +1 -1
  61. package/dist/integration-profile/integration-profile.secrets.d.ts.map +1 -1
  62. package/dist/integration-profile/integration-profile.secrets.js +26 -0
  63. package/dist/integration-profile/integration-profile.secrets.js.map +1 -1
  64. package/dist/integration-profile/integration-profile.service.d.ts +1 -0
  65. package/dist/integration-profile/integration-profile.service.d.ts.map +1 -1
  66. package/dist/integration-profile/integration-profile.service.js +3 -3
  67. package/dist/integration-profile/integration-profile.service.js.map +1 -1
  68. package/dist/integration-profile/testers/ai.testers.d.ts.map +1 -1
  69. package/dist/integration-profile/testers/ai.testers.js +46 -8
  70. package/dist/integration-profile/testers/ai.testers.js.map +1 -1
  71. package/dist/integration-profile/testers/http-probe.d.ts.map +1 -1
  72. package/dist/integration-profile/testers/http-probe.js +5 -3
  73. package/dist/integration-profile/testers/http-probe.js.map +1 -1
  74. package/dist/integration-profile/testers/integration-tester.types.d.ts +5 -0
  75. package/dist/integration-profile/testers/integration-tester.types.d.ts.map +1 -1
  76. package/dist/mail/mail.service.d.ts.map +1 -1
  77. package/dist/mail/mail.service.js +16 -1
  78. package/dist/mail/mail.service.js.map +1 -1
  79. package/dist/mcp/mcp-server.service.d.ts.map +1 -1
  80. package/dist/mcp/mcp-server.service.js +10 -1
  81. package/dist/mcp/mcp-server.service.js.map +1 -1
  82. package/dist/mcp/mcp.module.d.ts.map +1 -1
  83. package/dist/mcp/mcp.module.js +2 -0
  84. package/dist/mcp/mcp.module.js.map +1 -1
  85. package/dist/mcp/tools/core-access-log.mcp-tools.d.ts +17 -0
  86. package/dist/mcp/tools/core-access-log.mcp-tools.d.ts.map +1 -0
  87. package/dist/mcp/tools/core-access-log.mcp-tools.js +74 -0
  88. package/dist/mcp/tools/core-access-log.mcp-tools.js.map +1 -0
  89. package/dist/mcp/tools/core-files.mcp-tools.js +4 -4
  90. package/dist/mcp/tools/core-files.mcp-tools.js.map +1 -1
  91. package/dist/meeting/meeting-provider.registry.d.ts +72 -0
  92. package/dist/meeting/meeting-provider.registry.d.ts.map +1 -1
  93. package/dist/meeting/meeting-provider.registry.js.map +1 -1
  94. package/dist/oauth/oauth-token-broker.service.d.ts +50 -1
  95. package/dist/oauth/oauth-token-broker.service.d.ts.map +1 -1
  96. package/dist/oauth/oauth-token-broker.service.js +105 -3
  97. package/dist/oauth/oauth-token-broker.service.js.map +1 -1
  98. package/dist/oauth/providers/microsoft-entra-id.provider.d.ts +6 -0
  99. package/dist/oauth/providers/microsoft-entra-id.provider.d.ts.map +1 -1
  100. package/dist/oauth/providers/microsoft-entra-id.provider.js +30 -4
  101. package/dist/oauth/providers/microsoft-entra-id.provider.js.map +1 -1
  102. package/dist/pdf/document/charts/chart-bar.d.ts +24 -0
  103. package/dist/pdf/document/charts/chart-bar.d.ts.map +1 -0
  104. package/dist/pdf/document/charts/chart-bar.js +117 -0
  105. package/dist/pdf/document/charts/chart-bar.js.map +1 -0
  106. package/dist/pdf/document/charts/chart-donut.d.ts +16 -0
  107. package/dist/pdf/document/charts/chart-donut.d.ts.map +1 -0
  108. package/dist/pdf/document/charts/chart-donut.js +89 -0
  109. package/dist/pdf/document/charts/chart-donut.js.map +1 -0
  110. package/dist/pdf/document/charts/chart-gauge.d.ts +15 -0
  111. package/dist/pdf/document/charts/chart-gauge.d.ts.map +1 -0
  112. package/dist/pdf/document/charts/chart-gauge.js +60 -0
  113. package/dist/pdf/document/charts/chart-gauge.js.map +1 -0
  114. package/dist/pdf/document/charts/chart-line.d.ts +29 -0
  115. package/dist/pdf/document/charts/chart-line.d.ts.map +1 -0
  116. package/dist/pdf/document/charts/chart-line.js +89 -0
  117. package/dist/pdf/document/charts/chart-line.js.map +1 -0
  118. package/dist/pdf/document/charts/chart-primitives.d.ts +64 -0
  119. package/dist/pdf/document/charts/chart-primitives.d.ts.map +1 -0
  120. package/dist/pdf/document/charts/chart-primitives.js +110 -0
  121. package/dist/pdf/document/charts/chart-primitives.js.map +1 -0
  122. package/dist/pdf/document/charts/chart-radar.d.ts +13 -0
  123. package/dist/pdf/document/charts/chart-radar.d.ts.map +1 -0
  124. package/dist/pdf/document/charts/chart-radar.js +83 -0
  125. package/dist/pdf/document/charts/chart-radar.js.map +1 -0
  126. package/dist/pdf/document/charts/chart-scale.d.ts +39 -0
  127. package/dist/pdf/document/charts/chart-scale.d.ts.map +1 -0
  128. package/dist/pdf/document/charts/chart-scale.js +118 -0
  129. package/dist/pdf/document/charts/chart-scale.js.map +1 -0
  130. package/dist/pdf/document/charts/index.d.ts +8 -0
  131. package/dist/pdf/document/charts/index.d.ts.map +1 -0
  132. package/dist/pdf/document/charts/index.js +24 -0
  133. package/dist/pdf/document/charts/index.js.map +1 -0
  134. package/dist/pdf/document/index.d.ts +8 -0
  135. package/dist/pdf/document/index.d.ts.map +1 -0
  136. package/dist/pdf/document/index.js +24 -0
  137. package/dist/pdf/document/index.js.map +1 -0
  138. package/dist/pdf/document/pdf-document.chrome.d.ts +20 -0
  139. package/dist/pdf/document/pdf-document.chrome.d.ts.map +1 -0
  140. package/dist/pdf/document/pdf-document.chrome.js +36 -0
  141. package/dist/pdf/document/pdf-document.chrome.js.map +1 -0
  142. package/dist/pdf/document/pdf-document.css.d.ts +20 -0
  143. package/dist/pdf/document/pdf-document.css.d.ts.map +1 -0
  144. package/dist/pdf/document/pdf-document.css.js +327 -0
  145. package/dist/pdf/document/pdf-document.css.js.map +1 -0
  146. package/dist/pdf/document/pdf-document.renderer.d.ts +10 -0
  147. package/dist/pdf/document/pdf-document.renderer.d.ts.map +1 -0
  148. package/dist/pdf/document/pdf-document.renderer.js +226 -0
  149. package/dist/pdf/document/pdf-document.renderer.js.map +1 -0
  150. package/dist/pdf/document/pdf-document.service.d.ts +27 -0
  151. package/dist/pdf/document/pdf-document.service.d.ts.map +1 -0
  152. package/dist/pdf/document/pdf-document.service.js +81 -0
  153. package/dist/pdf/document/pdf-document.service.js.map +1 -0
  154. package/dist/pdf/document/pdf-document.theme.d.ts +41 -0
  155. package/dist/pdf/document/pdf-document.theme.d.ts.map +1 -0
  156. package/dist/pdf/document/pdf-document.theme.js +105 -0
  157. package/dist/pdf/document/pdf-document.theme.js.map +1 -0
  158. package/dist/pdf/document/pdf-document.types.d.ts +164 -0
  159. package/dist/pdf/document/pdf-document.types.d.ts.map +1 -0
  160. package/dist/pdf/document/pdf-document.types.js +18 -0
  161. package/dist/pdf/document/pdf-document.types.js.map +1 -0
  162. package/dist/pdf/pdf.module.d.ts.map +1 -1
  163. package/dist/pdf/pdf.module.js +3 -2
  164. package/dist/pdf/pdf.module.js.map +1 -1
  165. package/dist/pdf/pdf.service.d.ts +75 -1
  166. package/dist/pdf/pdf.service.d.ts.map +1 -1
  167. package/dist/pdf/pdf.service.js +167 -63
  168. package/dist/pdf/pdf.service.js.map +1 -1
  169. package/dist/pdf/templates/commercial-proposal.template.d.ts +96 -0
  170. package/dist/pdf/templates/commercial-proposal.template.d.ts.map +1 -0
  171. package/dist/pdf/templates/commercial-proposal.template.js +276 -0
  172. package/dist/pdf/templates/commercial-proposal.template.js.map +1 -0
  173. package/dist/setting/favicon.controller.d.ts +26 -0
  174. package/dist/setting/favicon.controller.d.ts.map +1 -0
  175. package/dist/setting/favicon.controller.js +130 -0
  176. package/dist/setting/favicon.controller.js.map +1 -0
  177. package/dist/setting/setting.module.d.ts.map +1 -1
  178. package/dist/setting/setting.module.js +2 -1
  179. package/dist/setting/setting.module.js.map +1 -1
  180. package/dist/setting/setting.service.d.ts.map +1 -1
  181. package/dist/setting/setting.service.js +3 -0
  182. package/dist/setting/setting.service.js.map +1 -1
  183. package/dist/task/task.service.d.ts +6 -0
  184. package/dist/task/task.service.d.ts.map +1 -1
  185. package/dist/task/task.service.js +44 -13
  186. package/dist/task/task.service.js.map +1 -1
  187. package/dist/whatsapp-sender/whatsapp-sender.service.d.ts +35 -2
  188. package/dist/whatsapp-sender/whatsapp-sender.service.d.ts.map +1 -1
  189. package/dist/whatsapp-sender/whatsapp-sender.service.js +107 -22
  190. package/dist/whatsapp-sender/whatsapp-sender.service.js.map +1 -1
  191. package/hedhog/data/integration_type.yaml +6 -0
  192. package/hedhog/data/route.yaml +8 -0
  193. package/hedhog/data/setting_group.yaml +52 -0
  194. package/hedhog/frontend/app/configurations/[slug]/components/setting-field.test.tsx.ejs +85 -2
  195. package/hedhog/frontend/app/configurations/[slug]/components/setting-field.tsx.ejs +576 -491
  196. package/hedhog/frontend/app/users/simulate-access-dialog.test.tsx.ejs +29 -50
  197. package/hedhog/frontend/app/users/simulate-access-dialog.tsx.ejs +146 -50
  198. package/hedhog/frontend/messages/en.json +81 -2
  199. package/hedhog/frontend/messages/pt.json +81 -2
  200. package/hedhog/table/file.yaml +3 -1
  201. package/package.json +5 -5
  202. package/src/access-log/access-log.interceptor.spec.ts +50 -0
  203. package/src/access-log/access-log.interceptor.ts +18 -0
  204. package/src/ai/ai-attachment.fragments.spec.ts +56 -3
  205. package/src/ai/ai.service.responses.spec.ts +429 -0
  206. package/src/ai/ai.service.ts +409 -27
  207. package/src/ai-instruction/ai-prompt-resolver.service.spec.ts +44 -0
  208. package/src/ai-instruction/ai-prompt-resolver.service.ts +29 -0
  209. package/src/core.module.ts +3 -0
  210. package/src/document-kit/document-kit.module.ts +12 -0
  211. package/src/document-kit/document-kit.registry.ts +125 -0
  212. package/src/document-kit/document-kit.service.spec.ts +156 -0
  213. package/src/document-kit/document-kit.service.ts +173 -0
  214. package/src/file/file-direct-upload.spec.ts +344 -0
  215. package/src/file/file.service.spec.ts +168 -1
  216. package/src/file/file.service.ts +435 -36
  217. package/src/file/mcp-file-source.schema.ts +8 -5
  218. package/src/file/provider/abstract.provider.ts +57 -0
  219. package/src/file/provider/s3-multipart.spec.ts +123 -0
  220. package/src/file/provider/s3-multipart.util.ts +126 -0
  221. package/src/file/provider/s3.provider.ts +65 -1
  222. package/src/file/provider/spaces.provider.ts +67 -1
  223. package/src/index.ts +5 -0
  224. package/src/integration-profile/integration-profile.secrets.ts +26 -0
  225. package/src/integration-profile/integration-profile.service.ts +1 -0
  226. package/src/integration-profile/testers/ai.testers.ts +70 -5
  227. package/src/integration-profile/testers/http-probe.ts +5 -3
  228. package/src/integration-profile/testers/integration-tester.types.ts +5 -0
  229. package/src/integration-profile/testers/oauth.testers.spec.ts +13 -0
  230. package/src/integration-profile/testers/remaining.testers.spec.ts +65 -1
  231. package/src/integration-profile/testers/tester-coverage.spec.ts +12 -0
  232. package/src/mail/mail.service.spec.ts +25 -0
  233. package/src/mail/mail.service.ts +18 -1
  234. package/src/mcp/mcp-server.service.spec.ts +16 -0
  235. package/src/mcp/mcp-server.service.ts +10 -1
  236. package/src/mcp/mcp.module.ts +2 -0
  237. package/src/mcp/tools/core-access-log.mcp-tools.ts +66 -0
  238. package/src/mcp/tools/core-files.mcp-tools.ts +4 -4
  239. package/src/meeting/meeting-provider.registry.ts +80 -0
  240. package/src/oauth/oauth-token-broker.service.spec.ts +108 -0
  241. package/src/oauth/oauth-token-broker.service.ts +129 -2
  242. package/src/oauth/providers/microsoft-entra-id.provider.spec.ts +133 -0
  243. package/src/oauth/providers/microsoft-entra-id.provider.ts +29 -2
  244. package/src/pdf/document/charts/chart-bar.ts +217 -0
  245. package/src/pdf/document/charts/chart-donut.ts +163 -0
  246. package/src/pdf/document/charts/chart-gauge.ts +94 -0
  247. package/src/pdf/document/charts/chart-line.ts +159 -0
  248. package/src/pdf/document/charts/chart-primitives.ts +188 -0
  249. package/src/pdf/document/charts/chart-radar.ts +136 -0
  250. package/src/pdf/document/charts/chart-scale.spec.ts +93 -0
  251. package/src/pdf/document/charts/chart-scale.ts +141 -0
  252. package/src/pdf/document/charts/charts.spec.ts +157 -0
  253. package/src/pdf/document/charts/index.ts +7 -0
  254. package/src/pdf/document/index.ts +7 -0
  255. package/src/pdf/document/pdf-document.chrome.ts +38 -0
  256. package/src/pdf/document/pdf-document.css.ts +326 -0
  257. package/src/pdf/document/pdf-document.renderer.spec.ts +172 -0
  258. package/src/pdf/document/pdf-document.renderer.ts +317 -0
  259. package/src/pdf/document/pdf-document.service.ts +77 -0
  260. package/src/pdf/document/pdf-document.theme.ts +146 -0
  261. package/src/pdf/document/pdf-document.types.ts +149 -0
  262. package/src/pdf/pdf.module.ts +3 -2
  263. package/src/pdf/pdf.service.spec.ts +131 -0
  264. package/src/pdf/pdf.service.ts +256 -82
  265. package/src/pdf/templates/commercial-proposal.template.spec.ts +177 -0
  266. package/src/pdf/templates/commercial-proposal.template.ts +400 -0
  267. package/src/setting/favicon.controller.spec.ts +92 -0
  268. package/src/setting/favicon.controller.ts +135 -0
  269. package/src/setting/setting.module.ts +2 -1
  270. package/src/setting/setting.service.ts +3 -0
  271. package/src/task/task.service.spec.ts +77 -1
  272. package/src/task/task.service.ts +58 -14
  273. package/src/whatsapp-sender/whatsapp-sender.service.spec.ts +263 -0
  274. package/src/whatsapp-sender/whatsapp-sender.service.ts +154 -16
@@ -0,0 +1,327 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildDocumentCss = buildDocumentCss;
4
+ /**
5
+ * O CSS do documento padrão — o mesmo acabamento da proposta comercial do CRM
6
+ * (`libraries/crm/src/proposal/proposal.service.ts`), com três acréscimos que
7
+ * a proposta não precisava e um relatório precisa:
8
+ *
9
+ * 1. `thead { display: table-header-group }` — sem isso a tabela perde o
10
+ * cabeçalho a partir da segunda página, e um relatório de 15 páginas fica
11
+ * ilegível da página 2 em diante.
12
+ * 2. `tbody tr { break-inside: avoid }` — linha não parte no meio.
13
+ * 3. Nada de wrapper com `break-inside: avoid`, `overflow` ou borda arredondada
14
+ * em volta da tabela: foi o que fez a folha de impressão da tela sair com
15
+ * uma primeira página vazia e conteúdo cortado.
16
+ *
17
+ * A barra laranja do topo e o "X / N" do rodapé **não estão aqui** — são
18
+ * templates do Chromium (ver ./pdf-document.chrome.ts), porque só eles repetem
19
+ * em toda página e só eles sabem o total de páginas.
20
+ */
21
+ function buildDocumentCss(theme, landscape = false) {
22
+ const { primary, mutedBg, mutedFg, ink, line, fontFamily } = theme;
23
+ return `
24
+ @page {
25
+ size: A4${landscape ? ' landscape' : ''};
26
+ margin: 72px 56px 56px 56px;
27
+ }
28
+ * { box-sizing: border-box; }
29
+ html, body {
30
+ -webkit-print-color-adjust: exact;
31
+ print-color-adjust: exact;
32
+ }
33
+ body {
34
+ color: ${ink};
35
+ font-family: ${fontFamily};
36
+ font-size: 11.5px;
37
+ line-height: 1.55;
38
+ margin: 0;
39
+ }
40
+
41
+ /* ── Letterhead ── */
42
+ header {
43
+ display: flex;
44
+ justify-content: space-between;
45
+ align-items: flex-start;
46
+ gap: 24px;
47
+ margin-bottom: 24px;
48
+ padding-bottom: 20px;
49
+ border-bottom: 1px solid ${line};
50
+ }
51
+ .brand { display: flex; align-items: center; gap: 14px; }
52
+ .brand img { height: 44px; max-width: 150px; object-fit: contain; }
53
+ .brand-text .eyebrow {
54
+ color: ${primary};
55
+ font-size: 9px;
56
+ font-weight: 700;
57
+ letter-spacing: 0.14em;
58
+ text-transform: uppercase;
59
+ margin-bottom: 3px;
60
+ }
61
+ .brand-text h1 {
62
+ font-size: 20px;
63
+ font-weight: 700;
64
+ color: ${ink};
65
+ margin: 0 0 2px;
66
+ line-height: 1.2;
67
+ }
68
+ .brand-text .company-name { font-size: 11px; color: ${mutedFg}; }
69
+ .meta-block {
70
+ text-align: right;
71
+ font-size: 11px;
72
+ color: ${mutedFg};
73
+ line-height: 1.7;
74
+ white-space: nowrap;
75
+ }
76
+ .meta-block .meta-value { font-weight: 600; color: ${ink}; }
77
+
78
+ /* ── Cards ── */
79
+ .cards {
80
+ display: grid;
81
+ gap: 12px;
82
+ margin-bottom: 18px;
83
+ break-inside: avoid;
84
+ }
85
+ .cards-2 { grid-template-columns: repeat(2, 1fr); }
86
+ .cards-3 { grid-template-columns: repeat(3, 1fr); }
87
+ .cards-4 { grid-template-columns: repeat(4, 1fr); }
88
+ .cards-5 { grid-template-columns: repeat(5, 1fr); }
89
+ .card {
90
+ background: ${mutedBg};
91
+ border: 1px solid ${line};
92
+ border-top: 2px solid ${primary};
93
+ border-radius: 10px;
94
+ padding: 10px 12px;
95
+ }
96
+ .card .card-label {
97
+ font-size: 8.5px;
98
+ font-weight: 700;
99
+ letter-spacing: 0.12em;
100
+ text-transform: uppercase;
101
+ color: ${mutedFg};
102
+ margin-bottom: 4px;
103
+ }
104
+ .card .card-value { font-size: 12px; font-weight: 600; color: ${ink}; }
105
+ .cards-metric .card .card-value { font-size: 17px; font-weight: 700; }
106
+ .card .card-hint { font-size: 9px; color: ${mutedFg}; margin-top: 2px; }
107
+
108
+ /* ── Seções ── */
109
+ h2 {
110
+ font-size: 12.5px;
111
+ font-weight: 700;
112
+ color: ${ink};
113
+ margin: 22px 0 10px;
114
+ padding-bottom: 6px;
115
+ border-bottom: 1px solid ${line};
116
+ text-transform: uppercase;
117
+ letter-spacing: 0.06em;
118
+ break-after: avoid;
119
+ }
120
+ h2 .section-hint {
121
+ float: right;
122
+ font-size: 9.5px;
123
+ font-weight: 400;
124
+ letter-spacing: 0;
125
+ text-transform: none;
126
+ color: ${mutedFg};
127
+ }
128
+
129
+ /* ── Tabela ── */
130
+ .doc-table {
131
+ border-collapse: collapse;
132
+ width: 100%;
133
+ font-size: 10.5px;
134
+ }
135
+ .doc-table.compact { font-size: 9px; }
136
+ .doc-table thead { display: table-header-group; }
137
+ .doc-table thead tr { border-bottom: 1px solid ${line}; }
138
+ .doc-table th {
139
+ background: ${mutedBg};
140
+ color: ${mutedFg};
141
+ font-size: 9px;
142
+ font-weight: 700;
143
+ letter-spacing: 0.08em;
144
+ text-transform: uppercase;
145
+ padding: 7px 8px;
146
+ text-align: left;
147
+ vertical-align: middle;
148
+ }
149
+ .doc-table td {
150
+ border-bottom: 1px solid ${line};
151
+ padding: 6px 8px;
152
+ text-align: left;
153
+ vertical-align: top;
154
+ color: ${ink};
155
+ }
156
+ /*
157
+ * Os tons precisam vencer o color da propria celula: ".doc-table td" tem
158
+ * especificidade 0-1-1 e ".tone-accent" sozinho tem 0-1-0, entao a cor do
159
+ * tom era descartada em toda tabela do sistema — so o font-weight passava,
160
+ * porque a regra da celula nao mexe nele. Quem marca um valor como "warn"
161
+ * quer que ele salte aos olhos, nao que fique so em negrito igual ao resto.
162
+ */
163
+ .doc-table td.tone-muted { color: ${mutedFg}; }
164
+ .doc-table td.tone-accent { color: ${primary}; }
165
+ .doc-table td.tone-warn { color: #b45309; }
166
+ .doc-table tbody tr { break-inside: avoid; }
167
+ .doc-table tbody tr:last-child td { border-bottom: none; }
168
+ .doc-table.zebra tbody tr:nth-child(even) td { background: ${mutedBg}; }
169
+ .doc-table .align-right { text-align: right; }
170
+ .doc-table .align-center { text-align: center; }
171
+ /* Valor numérico não quebra: "1h 00min" partido em duas linhas dobra a
172
+ altura da linha e desalinha a leitura de cima a baixo. O cabeçalho pode
173
+ quebrar à vontade — é o que mantém "On demand" numa coluna estreita. */
174
+ .doc-table td.align-right,
175
+ .doc-table td.align-center { white-space: nowrap; }
176
+ /* A coluna "#" é numerada no servidor: contador de CSS reiniciaria a cada
177
+ repetição do <thead>. */
178
+ .doc-table .idx {
179
+ width: 30px;
180
+ color: ${mutedFg};
181
+ text-align: right;
182
+ font-variant-numeric: tabular-nums;
183
+ }
184
+ .cell-sub { font-size: 8.5px; color: ${mutedFg}; margin-top: 1px; }
185
+ .tone-muted { color: ${mutedFg}; }
186
+ .tone-bold { font-weight: 700; }
187
+ .tone-accent { color: ${primary}; font-weight: 600; }
188
+ .tone-warn { color: #b45309; font-weight: 600; }
189
+ .table-empty {
190
+ border: 1px dashed ${line};
191
+ border-radius: 10px;
192
+ padding: 18px;
193
+ text-align: center;
194
+ font-size: 10.5px;
195
+ color: ${mutedFg};
196
+ }
197
+
198
+ /* ── Gráficos ── */
199
+ .chart { margin: 4px 0 18px; break-inside: avoid; }
200
+ .chart-title {
201
+ font-size: 10.5px;
202
+ font-weight: 700;
203
+ color: ${ink};
204
+ margin-bottom: 6px;
205
+ }
206
+ .chart svg { width: 100%; height: auto; }
207
+ .chart-caption { font-size: 9px; color: ${mutedFg}; margin-top: 4px; }
208
+ .chart-grid {
209
+ display: grid;
210
+ grid-template-columns: repeat(2, 1fr);
211
+ gap: 16px;
212
+ margin-bottom: 18px;
213
+ }
214
+
215
+ /* ── Notas e legenda ── */
216
+ .note {
217
+ background: ${mutedBg};
218
+ border: 1px solid ${line};
219
+ border-radius: 8px;
220
+ padding: 9px 12px;
221
+ font-size: 10px;
222
+ color: ${mutedFg};
223
+ margin: 12px 0;
224
+ break-inside: avoid;
225
+ }
226
+ .note-accent { border-left: 3px solid ${primary}; }
227
+ .legend {
228
+ margin-top: 18px;
229
+ padding-top: 10px;
230
+ border-top: 1px solid ${line};
231
+ font-size: 9px;
232
+ line-height: 1.6;
233
+ color: ${mutedFg};
234
+ }
235
+ .legend p { margin: 0 0 3px; }
236
+ .page-break { break-before: page; }
237
+
238
+ /* ── Barra empilhada e cartões de progresso ── */
239
+ .seg-bar {
240
+ display: flex;
241
+ height: 6px;
242
+ border-radius: 999px;
243
+ overflow: hidden;
244
+ background: ${line};
245
+ margin: 8px 0;
246
+ }
247
+ .seg { display: block; height: 100%; }
248
+ .seg-ink, .dot-ink { background: ${ink}; }
249
+ .seg-muted, .dot-muted { background: #8f8f94; }
250
+ .seg-light, .dot-light { background: #cfcfd4; }
251
+ .seg-accent, .dot-accent { background: ${primary}; }
252
+ .seg-danger, .dot-danger { background: #dc2626; }
253
+ .dot {
254
+ display: inline-block;
255
+ width: 7px;
256
+ height: 7px;
257
+ border-radius: 50%;
258
+ margin-right: 5px;
259
+ vertical-align: middle;
260
+ }
261
+ .seg-block {
262
+ border: 1px solid ${line};
263
+ border-radius: 12px;
264
+ padding: 12px 16px;
265
+ margin-bottom: 18px;
266
+ break-inside: avoid;
267
+ }
268
+ .seg-title { font-size: 13px; font-weight: 700; color: ${ink}; }
269
+ .seg-legend { display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: 10px; color: ${ink}; }
270
+ .seg-legend-item { white-space: nowrap; }
271
+ .seg-caption { font-size: 10.5px; color: ${ink}; margin-top: 8px; }
272
+ .pc-legend {
273
+ display: flex;
274
+ flex-wrap: wrap;
275
+ gap: 6px 18px;
276
+ font-size: 10px;
277
+ color: ${mutedFg};
278
+ margin-bottom: 12px;
279
+ }
280
+ .pc-grid { display: grid; gap: 12px; align-items: start; }
281
+ .pc-grid-1 { grid-template-columns: 1fr; }
282
+ .pc-grid-2 { grid-template-columns: repeat(2, 1fr); }
283
+ .pc-card {
284
+ border: 1px solid ${line};
285
+ border-radius: 12px;
286
+ padding: 12px 14px;
287
+ break-inside: avoid;
288
+ }
289
+ .pc-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
290
+ .pc-title { font-size: 13px; font-weight: 700; color: ${ink}; line-height: 1.25; }
291
+ .pc-subtitle { font-size: 9.5px; color: ${mutedFg}; margin-top: 2px; }
292
+ .pc-value { text-align: right; white-space: nowrap; }
293
+ .pc-value-num { font-size: 22px; font-weight: 700; color: ${ink}; line-height: 1; }
294
+ .pc-value-hint { font-size: 9px; color: ${mutedFg}; margin-top: 2px; }
295
+ .pc-list-title { font-size: 10px; font-weight: 700; color: ${ink}; margin: 4px 0 6px; }
296
+ .pc-entry {
297
+ border: 1px solid ${line};
298
+ border-radius: 8px;
299
+ padding: 6px 10px;
300
+ margin-bottom: 6px;
301
+ break-inside: avoid;
302
+ }
303
+ .pc-entry-hl { border-color: transparent; }
304
+ .pc-entry-hl-accent { background: color-mix(in srgb, ${primary} 16%, white); }
305
+ .pc-entry-hl-danger { background: #fee2e2; }
306
+ .pc-entry-text { font-size: 10.5px; color: ${ink}; }
307
+ .pc-entry-meta {
308
+ display: flex;
309
+ justify-content: space-between;
310
+ gap: 8px;
311
+ font-size: 9.5px;
312
+ margin-top: 1px;
313
+ }
314
+ .pc-entry-status { font-weight: 700; color: ${ink}; }
315
+ .pc-entry-aside { color: ${mutedFg}; white-space: nowrap; }
316
+ .pc-entry-sub { font-size: 9px; color: ${mutedFg}; margin-top: 2px; }
317
+ .pc-entry-sub-danger { color: #b91c1c; font-weight: 700; }
318
+ .pc-empty {
319
+ background: ${mutedBg};
320
+ border-radius: 8px;
321
+ padding: 8px 10px;
322
+ font-size: 10px;
323
+ color: ${ink};
324
+ }
325
+ `;
326
+ }
327
+ //# sourceMappingURL=pdf-document.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf-document.css.js","sourceRoot":"","sources":["../../../src/pdf/document/pdf-document.css.ts"],"names":[],"mappings":";;AAmBA,4CAkTC;AAnUD;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,gBAAgB,CAAC,KAAuB,EAAE,SAAS,GAAG,KAAK;IACzE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAEnE,OAAO;;gBAEO,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;;;;;;;;;eAS9B,GAAG;qBACG,UAAU;;;;;;;;;;;;;;iCAcE,IAAI;;;;;eAKtB,OAAO;;;;;;;;;;eAUP,GAAG;;;;0DAIwC,OAAO;;;;eAIlD,OAAO;;;;yDAImC,GAAG;;;;;;;;;;;;;;oBAcxC,OAAO;0BACD,IAAI;8BACA,OAAO;;;;;;;;;eAStB,OAAO;;;oEAG8C,GAAG;;gDAEvB,OAAO;;;;;;eAMxC,GAAG;;;iCAGe,IAAI;;;;;;;;;;;eAWtB,OAAO;;;;;;;;;;;qDAW+B,IAAI;;oBAErC,OAAO;eACZ,OAAO;;;;;;;;;;iCAUW,IAAI;;;;eAItB,GAAG;;;;;;;;;wCASsB,OAAO;yCACN,OAAO;;;;iEAIiB,OAAO;;;;;;;;;;;;eAYzD,OAAO;;;;2CAIqB,OAAO;2BACvB,OAAO;;4BAEN,OAAO;;;2BAGR,IAAI;;;;;eAKhB,OAAO;;;;;;;;eAQP,GAAG;;;;8CAI4B,OAAO;;;;;;;;;;oBAUjC,OAAO;0BACD,IAAI;;;;eAIf,OAAO;;;;4CAIsB,OAAO;;;;8BAIrB,IAAI;;;eAGnB,OAAO;;;;;;;;;;;oBAWF,IAAI;;;;uCAIe,GAAG;;;6CAGG,OAAO;;;;;;;;;;;0BAW1B,IAAI;;;;;;6DAM+B,GAAG;2FAC2B,GAAG;;+CAE/C,GAAG;;;;;;eAMnC,OAAO;;;;;;;0BAOI,IAAI;;;;;;4DAM8B,GAAG;8CACjB,OAAO;;gEAEW,GAAG;8CACrB,OAAO;iEACY,GAAG;;0BAE1C,IAAI;;;;;;;2DAO6B,OAAO;;iDAEjB,GAAG;;;;;;;;kDAQF,GAAG;+BACtB,OAAO;6CACO,OAAO;;;oBAGhC,OAAO;;;;eAIZ,GAAG;;GAEf,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { PdfDocumentTheme } from './pdf-document.theme';
2
+ import { PdfDocumentBlock, PdfDocumentInput } from './pdf-document.types';
3
+ /**
4
+ * Único ponto por onde texto entra no HTML. Nome de aluno, título de curso e
5
+ * rótulo de tarefa são dados de usuário indo para um Chromium headless.
6
+ */
7
+ export declare function escapeHtml(value: unknown): string;
8
+ export declare function renderBlock(block: PdfDocumentBlock): string;
9
+ export declare function renderDocumentHtml(input: PdfDocumentInput, theme: PdfDocumentTheme): string;
10
+ //# sourceMappingURL=pdf-document.renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf-document.renderer.d.ts","sourceRoot":"","sources":["../../../src/pdf/document/pdf-document.renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EACL,gBAAgB,EAEhB,gBAAgB,EAOjB,MAAM,sBAAsB,CAAC;AAE9B;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CASjD;AA8LD,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CA0D3D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAuC3F"}
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.escapeHtml = escapeHtml;
4
+ exports.renderBlock = renderBlock;
5
+ exports.renderDocumentHtml = renderDocumentHtml;
6
+ const pdf_document_css_1 = require("./pdf-document.css");
7
+ /**
8
+ * Único ponto por onde texto entra no HTML. Nome de aluno, título de curso e
9
+ * rótulo de tarefa são dados de usuário indo para um Chromium headless.
10
+ */
11
+ function escapeHtml(value) {
12
+ if (value === null || value === undefined)
13
+ return '';
14
+ return String(value)
15
+ .replace(/&/g, '&amp;')
16
+ .replace(/</g, '&lt;')
17
+ .replace(/>/g, '&gt;')
18
+ .replace(/"/g, '&quot;')
19
+ .replace(/'/g, '&#39;');
20
+ }
21
+ const formatGeneratedAt = (date, locale) => new Intl.DateTimeFormat(locale, {
22
+ day: '2-digit',
23
+ month: 'long',
24
+ year: 'numeric',
25
+ hour: '2-digit',
26
+ minute: '2-digit',
27
+ }).format(date);
28
+ const toCell = (value) => {
29
+ if (value === null || value === undefined)
30
+ return { text: '—', tone: 'muted' };
31
+ if (typeof value === 'object')
32
+ return value;
33
+ return { text: String(value) };
34
+ };
35
+ const alignClass = (column) => column.align === 'right'
36
+ ? ' class="align-right"'
37
+ : column.align === 'center'
38
+ ? ' class="align-center"'
39
+ : '';
40
+ function renderCards(items, columns, variant) {
41
+ const cards = items
42
+ .map((item) => `<div class="card"><div class="card-label">${escapeHtml(item.label)}</div>` +
43
+ `<div class="card-value">${escapeHtml(item.value)}</div>` +
44
+ (item.hint ? `<div class="card-hint">${escapeHtml(item.hint)}</div>` : '') +
45
+ '</div>')
46
+ .join('');
47
+ return `<div class="cards cards-${columns} cards-${variant}">${cards}</div>`;
48
+ }
49
+ function renderTable(block) {
50
+ const { columns, rows, numbered = false, numberHeader = '#', zebra = true, compact = false, emptyText = 'Nenhum registro no recorte selecionado.', truncatedNote, } = block;
51
+ if (rows.length === 0) {
52
+ return `<div class="table-empty">${escapeHtml(emptyText)}</div>`;
53
+ }
54
+ const head = (numbered ? `<th class="idx">${escapeHtml(numberHeader)}</th>` : '') +
55
+ columns
56
+ .map((column) => `<th${alignClass(column)}${column.width ? ` style="width:${escapeHtml(column.width)}"` : ''}>` +
57
+ `${escapeHtml(column.header)}</th>`)
58
+ .join('');
59
+ // `push` + `join` em vez de concatenar em laço: uma conta grande gera milhares
60
+ // de linhas, e a string intermediária de cada passo é o que faz o render
61
+ // arrastar.
62
+ const body = [];
63
+ rows.forEach((row, index) => {
64
+ const cells = [];
65
+ if (numbered)
66
+ cells.push(`<td class="idx">${index + 1}</td>`);
67
+ columns.forEach((column, columnIndex) => {
68
+ const cell = toCell(row[columnIndex]);
69
+ const tone = cell.tone && cell.tone !== 'default' ? ` tone-${cell.tone}` : '';
70
+ const align = column.align === 'right' ? ' align-right' : column.align === 'center' ? ' align-center' : '';
71
+ cells.push(`<td class="${(tone + align).trim()}">${escapeHtml(cell.text)}` +
72
+ (cell.sub ? `<div class="cell-sub">${escapeHtml(cell.sub)}</div>` : '') +
73
+ '</td>');
74
+ });
75
+ body.push(`<tr>${cells.join('')}</tr>`);
76
+ });
77
+ const table = `<table class="doc-table${zebra ? ' zebra' : ''}${compact ? ' compact' : ''}">` +
78
+ `<thead><tr>${head}</tr></thead><tbody>${body.join('')}</tbody></table>`;
79
+ return truncatedNote ? `${table}<div class="note">${escapeHtml(truncatedNote)}</div>` : table;
80
+ }
81
+ /** Barra fina empilhada. Largura em % do total; total zero vira barra vazia. */
82
+ function renderSegments(segments) {
83
+ const total = segments.reduce((sum, segment) => sum + Math.max(0, segment.value), 0);
84
+ const parts = total > 0
85
+ ? segments
86
+ .filter((segment) => segment.value > 0)
87
+ .map((segment) => `<span class="seg seg-${segment.tone}" style="width:${((segment.value / total) * 100).toFixed(2)}%"></span>`)
88
+ .join('')
89
+ : '';
90
+ return `<div class="seg-bar">${parts}</div>`;
91
+ }
92
+ const dot = (tone) => `<span class="dot dot-${tone}"></span>`;
93
+ function renderSegmentBar(block) {
94
+ const total = block.segments.reduce((sum, segment) => sum + Math.max(0, segment.value), 0);
95
+ const legend = block.segments
96
+ .map((segment) => {
97
+ var _a;
98
+ const pct = total > 0 ? Math.round((segment.value / total) * 100) : 0;
99
+ return (`<span class="seg-legend-item">${dot(segment.tone)}${escapeHtml((_a = segment.label) !== null && _a !== void 0 ? _a : '')} ` +
100
+ `<strong>${segment.value} (${pct}%)</strong></span>`);
101
+ })
102
+ .join('');
103
+ return ('<div class="seg-block">' +
104
+ (block.title ? `<div class="seg-title">${escapeHtml(block.title)}</div>` : '') +
105
+ renderSegments(block.segments) +
106
+ `<div class="seg-legend">${legend}</div>` +
107
+ (block.caption ? `<div class="seg-caption">${escapeHtml(block.caption)}</div>` : '') +
108
+ '</div>');
109
+ }
110
+ function renderProgressCard(card) {
111
+ const entries = card.entries
112
+ .map((entry) => `<div class="pc-entry${entry.highlight ? ` pc-entry-hl pc-entry-hl-${entry.tone}` : ''}">` +
113
+ `<div class="pc-entry-text">${escapeHtml(entry.text)}</div>` +
114
+ '<div class="pc-entry-meta">' +
115
+ `<span class="pc-entry-status">${dot(entry.tone)}${escapeHtml(entry.status)}</span>` +
116
+ (entry.aside ? `<span class="pc-entry-aside">${escapeHtml(entry.aside)}</span>` : '') +
117
+ '</div>' +
118
+ (entry.sub
119
+ ? `<div class="pc-entry-sub${entry.subTone === 'danger' ? ' pc-entry-sub-danger' : ''}">${escapeHtml(entry.sub)}</div>`
120
+ : '') +
121
+ '</div>')
122
+ .join('');
123
+ const body = card.entries.length > 0
124
+ ? (card.listTitle ? `<div class="pc-list-title">${escapeHtml(card.listTitle)}</div>` : '') + entries
125
+ : card.emptyText
126
+ ? `<div class="pc-empty">${escapeHtml(card.emptyText)}</div>`
127
+ : '';
128
+ return ('<div class="pc-card">' +
129
+ '<div class="pc-head">' +
130
+ `<div class="pc-head-text"><div class="pc-title">${escapeHtml(card.title)}</div>` +
131
+ (card.subtitle ? `<div class="pc-subtitle">${escapeHtml(card.subtitle)}</div>` : '') +
132
+ '</div>' +
133
+ `<div class="pc-value"><div class="pc-value-num">${escapeHtml(card.value)}</div>` +
134
+ (card.valueHint ? `<div class="pc-value-hint">${escapeHtml(card.valueHint)}</div>` : '') +
135
+ '</div></div>' +
136
+ renderSegments(card.segments) +
137
+ body +
138
+ '</div>');
139
+ }
140
+ function renderProgressCards(block) {
141
+ var _a, _b;
142
+ const legend = ((_a = block.legend) === null || _a === void 0 ? void 0 : _a.length)
143
+ ? `<div class="pc-legend">${block.legend
144
+ .map((item) => `<span class="seg-legend-item">${dot(item.tone)}${escapeHtml(item.label)}</span>`)
145
+ .join('')}</div>`
146
+ : '';
147
+ return (legend +
148
+ `<div class="pc-grid pc-grid-${(_b = block.columns) !== null && _b !== void 0 ? _b : 2}">${block.items.map(renderProgressCard).join('')}</div>`);
149
+ }
150
+ function renderBlock(block) {
151
+ var _a, _b;
152
+ switch (block.kind) {
153
+ case 'section':
154
+ return (`<h2>${escapeHtml(block.title)}` +
155
+ (block.hint ? `<span class="section-hint">${escapeHtml(block.hint)}</span>` : '') +
156
+ '</h2>');
157
+ case 'cards':
158
+ return renderCards(block.items, (_a = block.columns) !== null && _a !== void 0 ? _a : 4, (_b = block.variant) !== null && _b !== void 0 ? _b : 'metric');
159
+ case 'table':
160
+ return renderTable(block);
161
+ case 'chart':
162
+ return ('<div class="chart">' +
163
+ (block.title ? `<div class="chart-title">${escapeHtml(block.title)}</div>` : '') +
164
+ block.svg +
165
+ (block.caption ? `<div class="chart-caption">${escapeHtml(block.caption)}</div>` : '') +
166
+ '</div>');
167
+ case 'chartGrid':
168
+ return ('<div class="chart-grid">' +
169
+ block.items
170
+ .map((item) => '<div class="chart">' +
171
+ (item.title ? `<div class="chart-title">${escapeHtml(item.title)}</div>` : '') +
172
+ item.svg +
173
+ (item.caption ? `<div class="chart-caption">${escapeHtml(item.caption)}</div>` : '') +
174
+ '</div>')
175
+ .join('') +
176
+ '</div>');
177
+ case 'segmentBar':
178
+ return renderSegmentBar(block);
179
+ case 'progressCards':
180
+ return renderProgressCards(block);
181
+ case 'note':
182
+ return `<div class="note${block.tone === 'accent' ? ' note-accent' : ''}">${escapeHtml(block.text)}</div>`;
183
+ case 'legend':
184
+ return `<div class="legend">${block.lines.map((l) => `<p>${escapeHtml(l)}</p>`).join('')}</div>`;
185
+ case 'pageBreak':
186
+ return '<div class="page-break"></div>';
187
+ default:
188
+ return '';
189
+ }
190
+ }
191
+ function renderDocumentHtml(input, theme) {
192
+ var _a, _b, _c, _d;
193
+ const locale = (_a = input.locale) !== null && _a !== void 0 ? _a : 'pt-BR';
194
+ const generatedAt = (_b = input.generatedAt) !== null && _b !== void 0 ? _b : new Date();
195
+ const logo = input.logoDataUri || theme.logoUrl;
196
+ const meta = ((_c = input.meta) !== null && _c !== void 0 ? _c : [])
197
+ .map((item) => `<div>${escapeHtml(item.label)}: <span class="meta-value">${escapeHtml(item.value)}</span></div>`)
198
+ .join('');
199
+ const body = input.blocks.map((block) => renderBlock(block)).join('\n');
200
+ return `<!DOCTYPE html>
201
+ <html lang="${escapeHtml(locale)}">
202
+ <head>
203
+ <meta charset="utf-8" />
204
+ <title>${escapeHtml(input.title)}</title>
205
+ <style>${(0, pdf_document_css_1.buildDocumentCss)(theme, (_d = input.landscape) !== null && _d !== void 0 ? _d : false)}</style>
206
+ </head>
207
+ <body>
208
+ <header>
209
+ <div class="brand">
210
+ <img src="${escapeHtml(logo)}" alt="${escapeHtml(theme.companyName)}" />
211
+ <div class="brand-text">
212
+ ${input.eyebrow ? `<div class="eyebrow">${escapeHtml(input.eyebrow)}</div>` : ''}
213
+ <h1>${escapeHtml(input.title)}</h1>
214
+ ${input.subtitle ? `<div class="company-name">${escapeHtml(input.subtitle)}</div>` : ''}
215
+ </div>
216
+ </div>
217
+ <div class="meta-block">
218
+ <div>Gerado em: <span class="meta-value">${escapeHtml(formatGeneratedAt(generatedAt, locale))}</span></div>
219
+ ${meta}
220
+ </div>
221
+ </header>
222
+ ${body}
223
+ </body>
224
+ </html>`;
225
+ }
226
+ //# sourceMappingURL=pdf-document.renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf-document.renderer.js","sourceRoot":"","sources":["../../../src/pdf/document/pdf-document.renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { BrandAssetService } from '../../setting/brand-asset.service';
2
+ import { SettingService } from '../../setting/setting.service';
3
+ import { PdfService } from '../pdf.service';
4
+ import { PdfDocumentTheme, PdfDocumentThemeOverrides } from './pdf-document.theme';
5
+ import { PdfDocumentInput } from './pdf-document.types';
6
+ /**
7
+ * Gera o documento PDF padrão do sistema: letterhead com logo, cards, tabelas,
8
+ * gráficos, barra de destaque no topo de toda página e paginação "X / N".
9
+ *
10
+ * Quem chama entrega blocos de dados ({@link PdfDocumentInput}); o HTML e o
11
+ * Chromium são responsabilidade daqui.
12
+ */
13
+ export declare class PdfDocumentService {
14
+ private readonly pdf;
15
+ private readonly settingService;
16
+ private readonly brandAsset;
17
+ constructor(pdf: PdfService, settingService: SettingService, brandAsset: BrandAssetService);
18
+ loadTheme(overrides?: PdfDocumentThemeOverrides): Promise<PdfDocumentTheme>;
19
+ /** HTML puro, sem Chromium — serve aos testes e a quem quiser inspecionar. */
20
+ buildHtml(input: PdfDocumentInput, theme?: PdfDocumentTheme): Promise<string>;
21
+ render(input: PdfDocumentInput, options?: {
22
+ theme?: PdfDocumentTheme;
23
+ label?: string;
24
+ timeoutMs?: number;
25
+ }): Promise<Buffer>;
26
+ }
27
+ //# sourceMappingURL=pdf-document.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf-document.service.d.ts","sourceRoot":"","sources":["../../../src/pdf/document/pdf-document.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAO5C,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EAE1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD;;;;;;GAMG;AACH,qBACa,kBAAkB;IAG3B,OAAO,CAAC,QAAQ,CAAC,GAAG;IAEpB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAJV,GAAG,EAAE,UAAU,EAEf,cAAc,EAAE,cAAc,EAE9B,UAAU,EAAE,iBAAiB;IAGhD,SAAS,CAAC,SAAS,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAI3E,8EAA8E;IACxE,SAAS,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAI7E,MAAM,CACV,KAAK,EAAE,gBAAgB,EACvB,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,gBAAgB,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GAC7E,OAAO,CAAC,MAAM,CAAC;CA4BnB"}