@open-mercato/core 0.6.8-develop.6924.1.a8d208fcdc → 0.6.8-develop.6930.1.1e5976efc3

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 (453) hide show
  1. package/.turbo/turbo-build.log +2 -2
  2. package/dist/generated/entities/eudr_due_diligence_statement/index.js +47 -0
  3. package/dist/generated/entities/eudr_due_diligence_statement/index.js.map +7 -0
  4. package/dist/generated/entities/eudr_evidence_submission/index.js +51 -0
  5. package/dist/generated/entities/eudr_evidence_submission/index.js.map +7 -0
  6. package/dist/generated/entities/eudr_mitigation_action/index.js +31 -0
  7. package/dist/generated/entities/eudr_mitigation_action/index.js.map +7 -0
  8. package/dist/generated/entities/eudr_plot/index.js +39 -0
  9. package/dist/generated/entities/eudr_plot/index.js.map +7 -0
  10. package/dist/generated/entities/eudr_product_mapping/index.js +31 -0
  11. package/dist/generated/entities/eudr_product_mapping/index.js.map +7 -0
  12. package/dist/generated/entities/eudr_risk_assessment/index.js +35 -0
  13. package/dist/generated/entities/eudr_risk_assessment/index.js.map +7 -0
  14. package/dist/generated/entities/role/index.js +2 -0
  15. package/dist/generated/entities/role/index.js.map +2 -2
  16. package/dist/generated/entities.ids.generated.js +9 -0
  17. package/dist/generated/entities.ids.generated.js.map +2 -2
  18. package/dist/generated/entity-fields-registry.js +121 -0
  19. package/dist/generated/entity-fields-registry.js.map +2 -2
  20. package/dist/helpers/integration/api.js +4 -0
  21. package/dist/helpers/integration/api.js.map +2 -2
  22. package/dist/modules/attachments/fields/attachment.js +5 -1
  23. package/dist/modules/attachments/fields/attachment.js.map +2 -2
  24. package/dist/modules/attachments/lib/crud.js +3 -1
  25. package/dist/modules/attachments/lib/crud.js.map +2 -2
  26. package/dist/modules/audit_logs/api/audit-logs/actions/redo/route.js +5 -0
  27. package/dist/modules/audit_logs/api/audit-logs/actions/redo/route.js.map +2 -2
  28. package/dist/modules/audit_logs/api/audit-logs/actions/undo/route.js +5 -0
  29. package/dist/modules/audit_logs/api/audit-logs/actions/undo/route.js.map +2 -2
  30. package/dist/modules/audit_logs/backend/audit-logs/page.js +4 -4
  31. package/dist/modules/audit_logs/backend/audit-logs/page.js.map +2 -2
  32. package/dist/modules/audit_logs/components/AuditLogsActions.js +9 -2
  33. package/dist/modules/audit_logs/components/AuditLogsActions.js.map +2 -2
  34. package/dist/modules/auth/api/login.js +5 -2
  35. package/dist/modules/auth/api/login.js.map +2 -2
  36. package/dist/modules/auth/api/users/route.js +8 -5
  37. package/dist/modules/auth/api/users/route.js.map +2 -2
  38. package/dist/modules/auth/backend/users/[id]/edit/page.js +15 -1
  39. package/dist/modules/auth/backend/users/[id]/edit/page.js.map +2 -2
  40. package/dist/modules/auth/backend/users/page.js +7 -1
  41. package/dist/modules/auth/backend/users/page.js.map +2 -2
  42. package/dist/modules/auth/commands/users.js +175 -76
  43. package/dist/modules/auth/commands/users.js.map +2 -2
  44. package/dist/modules/auth/data/entities.js +4 -0
  45. package/dist/modules/auth/data/entities.js.map +2 -2
  46. package/dist/modules/auth/lib/sessionIntegrity.js +1 -1
  47. package/dist/modules/auth/lib/sessionIntegrity.js.map +2 -2
  48. package/dist/modules/auth/lib/setup-app.js +1 -1
  49. package/dist/modules/auth/lib/setup-app.js.map +2 -2
  50. package/dist/modules/auth/migrations/Migration20260728134212_auth.js +14 -0
  51. package/dist/modules/auth/migrations/Migration20260728134212_auth.js.map +7 -0
  52. package/dist/modules/eudr/acl.js +43 -0
  53. package/dist/modules/eudr/acl.js.map +7 -0
  54. package/dist/modules/eudr/ai-agents.js +205 -0
  55. package/dist/modules/eudr/ai-agents.js.map +7 -0
  56. package/dist/modules/eudr/ai-tools/compliance-pack.js +495 -0
  57. package/dist/modules/eudr/ai-tools/compliance-pack.js.map +7 -0
  58. package/dist/modules/eudr/ai-tools/types.js +10 -0
  59. package/dist/modules/eudr/ai-tools/types.js.map +7 -0
  60. package/dist/modules/eudr/ai-tools.js +10 -0
  61. package/dist/modules/eudr/ai-tools.js.map +7 -0
  62. package/dist/modules/eudr/api/dashboard/widgets/compliance-overview/route.js +386 -0
  63. package/dist/modules/eudr/api/dashboard/widgets/compliance-overview/route.js.map +7 -0
  64. package/dist/modules/eudr/api/evidence-submissions/route.js +318 -0
  65. package/dist/modules/eudr/api/evidence-submissions/route.js.map +7 -0
  66. package/dist/modules/eudr/api/mitigation-actions/route.js +249 -0
  67. package/dist/modules/eudr/api/mitigation-actions/route.js.map +7 -0
  68. package/dist/modules/eudr/api/openapi.js +27 -0
  69. package/dist/modules/eudr/api/openapi.js.map +7 -0
  70. package/dist/modules/eudr/api/plots/import/route.js +294 -0
  71. package/dist/modules/eudr/api/plots/import/route.js.map +7 -0
  72. package/dist/modules/eudr/api/plots/route.js +279 -0
  73. package/dist/modules/eudr/api/plots/route.js.map +7 -0
  74. package/dist/modules/eudr/api/product-mappings/route.js +257 -0
  75. package/dist/modules/eudr/api/product-mappings/route.js.map +7 -0
  76. package/dist/modules/eudr/api/product-mappings/suggestions/apply/route.js +298 -0
  77. package/dist/modules/eudr/api/product-mappings/suggestions/apply/route.js.map +7 -0
  78. package/dist/modules/eudr/api/product-mappings/suggestions/route.js +132 -0
  79. package/dist/modules/eudr/api/product-mappings/suggestions/route.js.map +7 -0
  80. package/dist/modules/eudr/api/reports/annual/route.js +266 -0
  81. package/dist/modules/eudr/api/reports/annual/route.js.map +7 -0
  82. package/dist/modules/eudr/api/risk-assessments/route.js +300 -0
  83. package/dist/modules/eudr/api/risk-assessments/route.js.map +7 -0
  84. package/dist/modules/eudr/api/statements/[id]/export/route.js +631 -0
  85. package/dist/modules/eudr/api/statements/[id]/export/route.js.map +7 -0
  86. package/dist/modules/eudr/api/statements/[id]/readiness/route.js +111 -0
  87. package/dist/modules/eudr/api/statements/[id]/readiness/route.js.map +7 -0
  88. package/dist/modules/eudr/api/statements/route.js +314 -0
  89. package/dist/modules/eudr/api/statements/route.js.map +7 -0
  90. package/dist/modules/eudr/api/suppliers/compliance/route.js +173 -0
  91. package/dist/modules/eudr/api/suppliers/compliance/route.js.map +7 -0
  92. package/dist/modules/eudr/backend/eudr/evidence-submissions/[id]/page.js +468 -0
  93. package/dist/modules/eudr/backend/eudr/evidence-submissions/[id]/page.js.map +7 -0
  94. package/dist/modules/eudr/backend/eudr/evidence-submissions/[id]/page.meta.js +16 -0
  95. package/dist/modules/eudr/backend/eudr/evidence-submissions/[id]/page.meta.js.map +7 -0
  96. package/dist/modules/eudr/backend/eudr/evidence-submissions/create/page.js +351 -0
  97. package/dist/modules/eudr/backend/eudr/evidence-submissions/create/page.js.map +7 -0
  98. package/dist/modules/eudr/backend/eudr/evidence-submissions/create/page.meta.js +17 -0
  99. package/dist/modules/eudr/backend/eudr/evidence-submissions/create/page.meta.js.map +7 -0
  100. package/dist/modules/eudr/backend/eudr/evidence-submissions/page.js +313 -0
  101. package/dist/modules/eudr/backend/eudr/evidence-submissions/page.js.map +7 -0
  102. package/dist/modules/eudr/backend/eudr/evidence-submissions/page.meta.js +16 -0
  103. package/dist/modules/eudr/backend/eudr/evidence-submissions/page.meta.js.map +7 -0
  104. package/dist/modules/eudr/backend/eudr/page.js +360 -0
  105. package/dist/modules/eudr/backend/eudr/page.js.map +7 -0
  106. package/dist/modules/eudr/backend/eudr/page.meta.js +16 -0
  107. package/dist/modules/eudr/backend/eudr/page.meta.js.map +7 -0
  108. package/dist/modules/eudr/backend/eudr/plots/[id]/page.js +346 -0
  109. package/dist/modules/eudr/backend/eudr/plots/[id]/page.js.map +7 -0
  110. package/dist/modules/eudr/backend/eudr/plots/[id]/page.meta.js +16 -0
  111. package/dist/modules/eudr/backend/eudr/plots/[id]/page.meta.js.map +7 -0
  112. package/dist/modules/eudr/backend/eudr/plots/create/page.js +253 -0
  113. package/dist/modules/eudr/backend/eudr/plots/create/page.js.map +7 -0
  114. package/dist/modules/eudr/backend/eudr/plots/create/page.meta.js +17 -0
  115. package/dist/modules/eudr/backend/eudr/plots/create/page.meta.js.map +7 -0
  116. package/dist/modules/eudr/backend/eudr/plots/page.js +386 -0
  117. package/dist/modules/eudr/backend/eudr/plots/page.js.map +7 -0
  118. package/dist/modules/eudr/backend/eudr/plots/page.meta.js +16 -0
  119. package/dist/modules/eudr/backend/eudr/plots/page.meta.js.map +7 -0
  120. package/dist/modules/eudr/backend/eudr/product-mappings/[id]/page.js +253 -0
  121. package/dist/modules/eudr/backend/eudr/product-mappings/[id]/page.js.map +7 -0
  122. package/dist/modules/eudr/backend/eudr/product-mappings/[id]/page.meta.js +16 -0
  123. package/dist/modules/eudr/backend/eudr/product-mappings/[id]/page.meta.js.map +7 -0
  124. package/dist/modules/eudr/backend/eudr/product-mappings/create/page.js +174 -0
  125. package/dist/modules/eudr/backend/eudr/product-mappings/create/page.js.map +7 -0
  126. package/dist/modules/eudr/backend/eudr/product-mappings/create/page.meta.js +17 -0
  127. package/dist/modules/eudr/backend/eudr/product-mappings/create/page.meta.js.map +7 -0
  128. package/dist/modules/eudr/backend/eudr/product-mappings/page.js +306 -0
  129. package/dist/modules/eudr/backend/eudr/product-mappings/page.js.map +7 -0
  130. package/dist/modules/eudr/backend/eudr/product-mappings/page.meta.js +16 -0
  131. package/dist/modules/eudr/backend/eudr/product-mappings/page.meta.js.map +7 -0
  132. package/dist/modules/eudr/backend/eudr/risk-assessments/[id]/page.js +335 -0
  133. package/dist/modules/eudr/backend/eudr/risk-assessments/[id]/page.js.map +7 -0
  134. package/dist/modules/eudr/backend/eudr/risk-assessments/[id]/page.meta.js +16 -0
  135. package/dist/modules/eudr/backend/eudr/risk-assessments/[id]/page.meta.js.map +7 -0
  136. package/dist/modules/eudr/backend/eudr/risk-assessments/create/page.js +220 -0
  137. package/dist/modules/eudr/backend/eudr/risk-assessments/create/page.js.map +7 -0
  138. package/dist/modules/eudr/backend/eudr/risk-assessments/create/page.meta.js +17 -0
  139. package/dist/modules/eudr/backend/eudr/risk-assessments/create/page.meta.js.map +7 -0
  140. package/dist/modules/eudr/backend/eudr/risk-assessments/page.js +324 -0
  141. package/dist/modules/eudr/backend/eudr/risk-assessments/page.js.map +7 -0
  142. package/dist/modules/eudr/backend/eudr/risk-assessments/page.meta.js +16 -0
  143. package/dist/modules/eudr/backend/eudr/risk-assessments/page.meta.js.map +7 -0
  144. package/dist/modules/eudr/backend/eudr/statements/[id]/page.js +648 -0
  145. package/dist/modules/eudr/backend/eudr/statements/[id]/page.js.map +7 -0
  146. package/dist/modules/eudr/backend/eudr/statements/[id]/page.meta.js +16 -0
  147. package/dist/modules/eudr/backend/eudr/statements/[id]/page.meta.js.map +7 -0
  148. package/dist/modules/eudr/backend/eudr/statements/create/page.js +432 -0
  149. package/dist/modules/eudr/backend/eudr/statements/create/page.js.map +7 -0
  150. package/dist/modules/eudr/backend/eudr/statements/create/page.meta.js +17 -0
  151. package/dist/modules/eudr/backend/eudr/statements/create/page.meta.js.map +7 -0
  152. package/dist/modules/eudr/backend/eudr/statements/page.js +309 -0
  153. package/dist/modules/eudr/backend/eudr/statements/page.js.map +7 -0
  154. package/dist/modules/eudr/backend/eudr/statements/page.meta.js +16 -0
  155. package/dist/modules/eudr/backend/eudr/statements/page.meta.js.map +7 -0
  156. package/dist/modules/eudr/ce.js +56 -0
  157. package/dist/modules/eudr/ce.js.map +7 -0
  158. package/dist/modules/eudr/commands/evidence-submissions.js +571 -0
  159. package/dist/modules/eudr/commands/evidence-submissions.js.map +7 -0
  160. package/dist/modules/eudr/commands/index.js +7 -0
  161. package/dist/modules/eudr/commands/index.js.map +7 -0
  162. package/dist/modules/eudr/commands/lifecycle-events.js +19 -0
  163. package/dist/modules/eudr/commands/lifecycle-events.js.map +7 -0
  164. package/dist/modules/eudr/commands/mitigation-actions.js +488 -0
  165. package/dist/modules/eudr/commands/mitigation-actions.js.map +7 -0
  166. package/dist/modules/eudr/commands/plots.js +517 -0
  167. package/dist/modules/eudr/commands/plots.js.map +7 -0
  168. package/dist/modules/eudr/commands/product-mappings.js +468 -0
  169. package/dist/modules/eudr/commands/product-mappings.js.map +7 -0
  170. package/dist/modules/eudr/commands/risk-assessments.js +599 -0
  171. package/dist/modules/eudr/commands/risk-assessments.js.map +7 -0
  172. package/dist/modules/eudr/commands/statements.js +747 -0
  173. package/dist/modules/eudr/commands/statements.js.map +7 -0
  174. package/dist/modules/eudr/components/CountrySelectField.js +64 -0
  175. package/dist/modules/eudr/components/CountrySelectField.js.map +7 -0
  176. package/dist/modules/eudr/components/GeometryInput.js +133 -0
  177. package/dist/modules/eudr/components/GeometryInput.js.map +7 -0
  178. package/dist/modules/eudr/components/MappingSuggestionsDialog.js +307 -0
  179. package/dist/modules/eudr/components/MappingSuggestionsDialog.js.map +7 -0
  180. package/dist/modules/eudr/components/MitigationActionsSection.js +345 -0
  181. package/dist/modules/eudr/components/MitigationActionsSection.js.map +7 -0
  182. package/dist/modules/eudr/components/OrderSelectField.js +88 -0
  183. package/dist/modules/eudr/components/OrderSelectField.js.map +7 -0
  184. package/dist/modules/eudr/components/PlotImportDialog.js +229 -0
  185. package/dist/modules/eudr/components/PlotImportDialog.js.map +7 -0
  186. package/dist/modules/eudr/components/PlotMapPreview.js +35 -0
  187. package/dist/modules/eudr/components/PlotMapPreview.js.map +7 -0
  188. package/dist/modules/eudr/components/PlotMapPreviewImpl.js +97 -0
  189. package/dist/modules/eudr/components/PlotMapPreviewImpl.js.map +7 -0
  190. package/dist/modules/eudr/components/PlotMultiSelectField.js +198 -0
  191. package/dist/modules/eudr/components/PlotMultiSelectField.js.map +7 -0
  192. package/dist/modules/eudr/components/RiskCriteriaField.js +128 -0
  193. package/dist/modules/eudr/components/RiskCriteriaField.js.map +7 -0
  194. package/dist/modules/eudr/components/StatementLifecycleBar.js +274 -0
  195. package/dist/modules/eudr/components/StatementLifecycleBar.js.map +7 -0
  196. package/dist/modules/eudr/components/StatementReadinessChecklist.js +56 -0
  197. package/dist/modules/eudr/components/StatementReadinessChecklist.js.map +7 -0
  198. package/dist/modules/eudr/components/StatementRiskSection.js +179 -0
  199. package/dist/modules/eudr/components/StatementRiskSection.js.map +7 -0
  200. package/dist/modules/eudr/components/crudErrorI18n.js +31 -0
  201. package/dist/modules/eudr/components/crudErrorI18n.js.map +7 -0
  202. package/dist/modules/eudr/components/formConfig.js +593 -0
  203. package/dist/modules/eudr/components/formConfig.js.map +7 -0
  204. package/dist/modules/eudr/components/plotForm.js +68 -0
  205. package/dist/modules/eudr/components/plotForm.js.map +7 -0
  206. package/dist/modules/eudr/data/enrichers.js +62 -0
  207. package/dist/modules/eudr/data/enrichers.js.map +7 -0
  208. package/dist/modules/eudr/data/entities.js +437 -0
  209. package/dist/modules/eudr/data/entities.js.map +7 -0
  210. package/dist/modules/eudr/data/validators.js +271 -0
  211. package/dist/modules/eudr/data/validators.js.map +7 -0
  212. package/dist/modules/eudr/encryption.js +33 -0
  213. package/dist/modules/eudr/encryption.js.map +7 -0
  214. package/dist/modules/eudr/events.js +38 -0
  215. package/dist/modules/eudr/events.js.map +7 -0
  216. package/dist/modules/eudr/index.js +15 -0
  217. package/dist/modules/eudr/index.js.map +7 -0
  218. package/dist/modules/eudr/lib/annual-report.js +104 -0
  219. package/dist/modules/eudr/lib/annual-report.js.map +7 -0
  220. package/dist/modules/eudr/lib/completeness.js +64 -0
  221. package/dist/modules/eudr/lib/completeness.js.map +7 -0
  222. package/dist/modules/eudr/lib/detail-read-scope.js +16 -0
  223. package/dist/modules/eudr/lib/detail-read-scope.js.map +7 -0
  224. package/dist/modules/eudr/lib/geometry.js +142 -0
  225. package/dist/modules/eudr/lib/geometry.js.map +7 -0
  226. package/dist/modules/eudr/lib/notifications.js +56 -0
  227. package/dist/modules/eudr/lib/notifications.js.map +7 -0
  228. package/dist/modules/eudr/lib/plural.js +26 -0
  229. package/dist/modules/eudr/lib/plural.js.map +7 -0
  230. package/dist/modules/eudr/lib/reference-data.js +240 -0
  231. package/dist/modules/eudr/lib/reference-data.js.map +7 -0
  232. package/dist/modules/eudr/lib/species.js +10 -0
  233. package/dist/modules/eudr/lib/species.js.map +7 -0
  234. package/dist/modules/eudr/lib/statement-lifecycle.js +84 -0
  235. package/dist/modules/eudr/lib/statement-lifecycle.js.map +7 -0
  236. package/dist/modules/eudr/lib/statement-seeding.js +49 -0
  237. package/dist/modules/eudr/lib/statement-seeding.js.map +7 -0
  238. package/dist/modules/eudr/migrations/Migration20260706102002_eudr.js +15 -0
  239. package/dist/modules/eudr/migrations/Migration20260706102002_eudr.js.map +7 -0
  240. package/dist/modules/eudr/migrations/Migration20260706152612_eudr.js +24 -0
  241. package/dist/modules/eudr/migrations/Migration20260706152612_eudr.js.map +7 -0
  242. package/dist/modules/eudr/migrations/Migration20260722100000_eudr.js +15 -0
  243. package/dist/modules/eudr/migrations/Migration20260722100000_eudr.js.map +7 -0
  244. package/dist/modules/eudr/notifications.js +58 -0
  245. package/dist/modules/eudr/notifications.js.map +7 -0
  246. package/dist/modules/eudr/search.js +186 -0
  247. package/dist/modules/eudr/search.js.map +7 -0
  248. package/dist/modules/eudr/setup.js +12 -0
  249. package/dist/modules/eudr/setup.js.map +7 -0
  250. package/dist/modules/eudr/subscribers/notify-mitigation-completed.js +34 -0
  251. package/dist/modules/eudr/subscribers/notify-mitigation-completed.js.map +7 -0
  252. package/dist/modules/eudr/subscribers/notify-risk-concluded.js +35 -0
  253. package/dist/modules/eudr/subscribers/notify-risk-concluded.js.map +7 -0
  254. package/dist/modules/eudr/subscribers/notify-statement-reference-issued.js +37 -0
  255. package/dist/modules/eudr/subscribers/notify-statement-reference-issued.js.map +7 -0
  256. package/dist/modules/eudr/subscribers/notify-statement-submitted.js +34 -0
  257. package/dist/modules/eudr/subscribers/notify-statement-submitted.js.map +7 -0
  258. package/dist/modules/eudr/subscribers/notify-statement-withdrawn.js +34 -0
  259. package/dist/modules/eudr/subscribers/notify-statement-withdrawn.js.map +7 -0
  260. package/dist/modules/eudr/subscribers/recompute-completeness-on-attachment-created.js +124 -0
  261. package/dist/modules/eudr/subscribers/recompute-completeness-on-attachment-created.js.map +7 -0
  262. package/dist/modules/eudr/subscribers/recompute-completeness-on-attachment-deleted.js +22 -0
  263. package/dist/modules/eudr/subscribers/recompute-completeness-on-attachment-deleted.js.map +7 -0
  264. package/dist/modules/eudr/widgets/dashboard/compliance-overview/widget.client.js +203 -0
  265. package/dist/modules/eudr/widgets/dashboard/compliance-overview/widget.client.js.map +7 -0
  266. package/dist/modules/eudr/widgets/dashboard/compliance-overview/widget.js +23 -0
  267. package/dist/modules/eudr/widgets/dashboard/compliance-overview/widget.js.map +7 -0
  268. package/dist/modules/eudr/widgets/injection/eudr-product-column/widget.client.js +19 -0
  269. package/dist/modules/eudr/widgets/injection/eudr-product-column/widget.client.js.map +7 -0
  270. package/dist/modules/eudr/widgets/injection/eudr-product-column/widget.js +31 -0
  271. package/dist/modules/eudr/widgets/injection/eudr-product-column/widget.js.map +7 -0
  272. package/dist/modules/eudr/widgets/injection/order-compliance/widget.client.js +100 -0
  273. package/dist/modules/eudr/widgets/injection/order-compliance/widget.client.js.map +7 -0
  274. package/dist/modules/eudr/widgets/injection/order-compliance/widget.js +17 -0
  275. package/dist/modules/eudr/widgets/injection/order-compliance/widget.js.map +7 -0
  276. package/dist/modules/eudr/widgets/injection/supplier-compliance/widget.client.js +116 -0
  277. package/dist/modules/eudr/widgets/injection/supplier-compliance/widget.client.js.map +7 -0
  278. package/dist/modules/eudr/widgets/injection/supplier-compliance/widget.js +17 -0
  279. package/dist/modules/eudr/widgets/injection/supplier-compliance/widget.js.map +7 -0
  280. package/dist/modules/eudr/widgets/injection-table.js +32 -0
  281. package/dist/modules/eudr/widgets/injection-table.js.map +7 -0
  282. package/dist/modules/notifications/lib/notificationService.js +67 -3
  283. package/dist/modules/notifications/lib/notificationService.js.map +2 -2
  284. package/dist/modules/query_index/lib/engine.js +121 -48
  285. package/dist/modules/query_index/lib/engine.js.map +2 -2
  286. package/dist/modules/sales/api/documents/factory.js +17 -0
  287. package/dist/modules/sales/api/documents/factory.js.map +2 -2
  288. package/dist/modules/sales/commands/documents.js +32 -18
  289. package/dist/modules/sales/commands/documents.js.map +2 -2
  290. package/dist/modules/sales/data/entities.js +1 -0
  291. package/dist/modules/sales/data/entities.js.map +2 -2
  292. package/dist/modules/sales/migrations/Migration20260806120000_sales_tag_assignment_document_idx.js +17 -0
  293. package/dist/modules/sales/migrations/Migration20260806120000_sales_tag_assignment_document_idx.js.map +7 -0
  294. package/generated/entities/eudr_due_diligence_statement/index.ts +22 -0
  295. package/generated/entities/eudr_evidence_submission/index.ts +24 -0
  296. package/generated/entities/eudr_mitigation_action/index.ts +14 -0
  297. package/generated/entities/eudr_plot/index.ts +18 -0
  298. package/generated/entities/eudr_product_mapping/index.ts +14 -0
  299. package/generated/entities/eudr_risk_assessment/index.ts +16 -0
  300. package/generated/entities/role/index.ts +1 -0
  301. package/generated/entities.ids.generated.ts +9 -0
  302. package/generated/entity-fields-registry.ts +121 -0
  303. package/package.json +7 -7
  304. package/src/helpers/integration/api.ts +13 -0
  305. package/src/modules/attachments/fields/attachment.tsx +5 -0
  306. package/src/modules/attachments/lib/crud.ts +2 -0
  307. package/src/modules/audit_logs/api/audit-logs/actions/redo/route.ts +7 -0
  308. package/src/modules/audit_logs/api/audit-logs/actions/undo/route.ts +9 -0
  309. package/src/modules/audit_logs/backend/audit-logs/page.tsx +4 -4
  310. package/src/modules/audit_logs/components/AuditLogsActions.tsx +20 -4
  311. package/src/modules/auth/api/login.ts +9 -2
  312. package/src/modules/auth/api/users/route.ts +8 -4
  313. package/src/modules/auth/backend/users/[id]/edit/page.tsx +17 -1
  314. package/src/modules/auth/backend/users/page.tsx +11 -0
  315. package/src/modules/auth/commands/users.ts +251 -85
  316. package/src/modules/auth/data/entities.ts +3 -0
  317. package/src/modules/auth/i18n/de.json +6 -0
  318. package/src/modules/auth/i18n/en.json +6 -0
  319. package/src/modules/auth/i18n/es.json +6 -0
  320. package/src/modules/auth/i18n/ko.json +6 -0
  321. package/src/modules/auth/i18n/pl.json +6 -0
  322. package/src/modules/auth/lib/sessionIntegrity.ts +1 -1
  323. package/src/modules/auth/lib/setup-app.ts +1 -1
  324. package/src/modules/auth/migrations/.snapshot-open-mercato.json +16 -0
  325. package/src/modules/auth/migrations/Migration20260728134212_auth.ts +14 -0
  326. package/src/modules/eudr/acl.ts +39 -0
  327. package/src/modules/eudr/ai-agents.ts +258 -0
  328. package/src/modules/eudr/ai-tools/compliance-pack.ts +618 -0
  329. package/src/modules/eudr/ai-tools/types.ts +44 -0
  330. package/src/modules/eudr/ai-tools.ts +15 -0
  331. package/src/modules/eudr/api/dashboard/widgets/compliance-overview/route.ts +481 -0
  332. package/src/modules/eudr/api/evidence-submissions/route.ts +335 -0
  333. package/src/modules/eudr/api/mitigation-actions/route.ts +263 -0
  334. package/src/modules/eudr/api/openapi.ts +28 -0
  335. package/src/modules/eudr/api/plots/import/route.ts +369 -0
  336. package/src/modules/eudr/api/plots/route.ts +296 -0
  337. package/src/modules/eudr/api/product-mappings/route.ts +269 -0
  338. package/src/modules/eudr/api/product-mappings/suggestions/apply/route.ts +382 -0
  339. package/src/modules/eudr/api/product-mappings/suggestions/route.ts +169 -0
  340. package/src/modules/eudr/api/reports/annual/route.ts +457 -0
  341. package/src/modules/eudr/api/risk-assessments/route.ts +323 -0
  342. package/src/modules/eudr/api/statements/[id]/export/route.ts +713 -0
  343. package/src/modules/eudr/api/statements/[id]/readiness/route.ts +129 -0
  344. package/src/modules/eudr/api/statements/route.ts +329 -0
  345. package/src/modules/eudr/api/suppliers/compliance/route.ts +241 -0
  346. package/src/modules/eudr/backend/eudr/evidence-submissions/[id]/page.meta.ts +12 -0
  347. package/src/modules/eudr/backend/eudr/evidence-submissions/[id]/page.tsx +545 -0
  348. package/src/modules/eudr/backend/eudr/evidence-submissions/create/page.meta.ts +13 -0
  349. package/src/modules/eudr/backend/eudr/evidence-submissions/create/page.tsx +383 -0
  350. package/src/modules/eudr/backend/eudr/evidence-submissions/page.meta.ts +12 -0
  351. package/src/modules/eudr/backend/eudr/evidence-submissions/page.tsx +379 -0
  352. package/src/modules/eudr/backend/eudr/page.meta.ts +12 -0
  353. package/src/modules/eudr/backend/eudr/page.tsx +477 -0
  354. package/src/modules/eudr/backend/eudr/plots/[id]/page.meta.ts +12 -0
  355. package/src/modules/eudr/backend/eudr/plots/[id]/page.tsx +404 -0
  356. package/src/modules/eudr/backend/eudr/plots/create/page.meta.ts +13 -0
  357. package/src/modules/eudr/backend/eudr/plots/create/page.tsx +267 -0
  358. package/src/modules/eudr/backend/eudr/plots/page.meta.ts +12 -0
  359. package/src/modules/eudr/backend/eudr/plots/page.tsx +442 -0
  360. package/src/modules/eudr/backend/eudr/product-mappings/[id]/page.meta.ts +12 -0
  361. package/src/modules/eudr/backend/eudr/product-mappings/[id]/page.tsx +311 -0
  362. package/src/modules/eudr/backend/eudr/product-mappings/create/page.meta.ts +13 -0
  363. package/src/modules/eudr/backend/eudr/product-mappings/create/page.tsx +190 -0
  364. package/src/modules/eudr/backend/eudr/product-mappings/page.meta.ts +12 -0
  365. package/src/modules/eudr/backend/eudr/product-mappings/page.tsx +344 -0
  366. package/src/modules/eudr/backend/eudr/risk-assessments/[id]/page.meta.ts +12 -0
  367. package/src/modules/eudr/backend/eudr/risk-assessments/[id]/page.tsx +421 -0
  368. package/src/modules/eudr/backend/eudr/risk-assessments/create/page.meta.ts +13 -0
  369. package/src/modules/eudr/backend/eudr/risk-assessments/create/page.tsx +247 -0
  370. package/src/modules/eudr/backend/eudr/risk-assessments/page.meta.ts +12 -0
  371. package/src/modules/eudr/backend/eudr/risk-assessments/page.tsx +383 -0
  372. package/src/modules/eudr/backend/eudr/statements/[id]/page.meta.ts +12 -0
  373. package/src/modules/eudr/backend/eudr/statements/[id]/page.tsx +777 -0
  374. package/src/modules/eudr/backend/eudr/statements/create/page.meta.ts +13 -0
  375. package/src/modules/eudr/backend/eudr/statements/create/page.tsx +511 -0
  376. package/src/modules/eudr/backend/eudr/statements/page.meta.ts +12 -0
  377. package/src/modules/eudr/backend/eudr/statements/page.tsx +372 -0
  378. package/src/modules/eudr/ce.ts +52 -0
  379. package/src/modules/eudr/commands/evidence-submissions.ts +699 -0
  380. package/src/modules/eudr/commands/index.ts +6 -0
  381. package/src/modules/eudr/commands/lifecycle-events.ts +28 -0
  382. package/src/modules/eudr/commands/mitigation-actions.ts +574 -0
  383. package/src/modules/eudr/commands/plots.ts +627 -0
  384. package/src/modules/eudr/commands/product-mappings.ts +556 -0
  385. package/src/modules/eudr/commands/risk-assessments.ts +728 -0
  386. package/src/modules/eudr/commands/statements.ts +933 -0
  387. package/src/modules/eudr/components/CountrySelectField.tsx +77 -0
  388. package/src/modules/eudr/components/GeometryInput.tsx +170 -0
  389. package/src/modules/eudr/components/MappingSuggestionsDialog.tsx +385 -0
  390. package/src/modules/eudr/components/MitigationActionsSection.tsx +417 -0
  391. package/src/modules/eudr/components/OrderSelectField.tsx +116 -0
  392. package/src/modules/eudr/components/PlotImportDialog.tsx +277 -0
  393. package/src/modules/eudr/components/PlotMapPreview.tsx +46 -0
  394. package/src/modules/eudr/components/PlotMapPreviewImpl.tsx +111 -0
  395. package/src/modules/eudr/components/PlotMultiSelectField.tsx +238 -0
  396. package/src/modules/eudr/components/RiskCriteriaField.tsx +173 -0
  397. package/src/modules/eudr/components/StatementLifecycleBar.tsx +363 -0
  398. package/src/modules/eudr/components/StatementReadinessChecklist.tsx +82 -0
  399. package/src/modules/eudr/components/StatementRiskSection.tsx +242 -0
  400. package/src/modules/eudr/components/crudErrorI18n.ts +36 -0
  401. package/src/modules/eudr/components/formConfig.tsx +717 -0
  402. package/src/modules/eudr/components/plotForm.ts +75 -0
  403. package/src/modules/eudr/data/enrichers.ts +82 -0
  404. package/src/modules/eudr/data/entities.ts +369 -0
  405. package/src/modules/eudr/data/validators.ts +357 -0
  406. package/src/modules/eudr/encryption.ts +31 -0
  407. package/src/modules/eudr/events.ts +38 -0
  408. package/src/modules/eudr/i18n/de.json +747 -0
  409. package/src/modules/eudr/i18n/en.json +747 -0
  410. package/src/modules/eudr/i18n/es.json +747 -0
  411. package/src/modules/eudr/i18n/ko.json +747 -0
  412. package/src/modules/eudr/i18n/pl.json +747 -0
  413. package/src/modules/eudr/index.ts +13 -0
  414. package/src/modules/eudr/lib/annual-report.ts +120 -0
  415. package/src/modules/eudr/lib/completeness.ts +90 -0
  416. package/src/modules/eudr/lib/detail-read-scope.ts +44 -0
  417. package/src/modules/eudr/lib/geometry.ts +191 -0
  418. package/src/modules/eudr/lib/notifications.ts +85 -0
  419. package/src/modules/eudr/lib/plural.ts +36 -0
  420. package/src/modules/eudr/lib/reference-data.ts +128 -0
  421. package/src/modules/eudr/lib/species.ts +12 -0
  422. package/src/modules/eudr/lib/statement-lifecycle.ts +109 -0
  423. package/src/modules/eudr/lib/statement-seeding.ts +86 -0
  424. package/src/modules/eudr/migrations/.snapshot-open-mercato.json +2046 -0
  425. package/src/modules/eudr/migrations/Migration20260706102002_eudr.ts +16 -0
  426. package/src/modules/eudr/migrations/Migration20260706152612_eudr.ts +30 -0
  427. package/src/modules/eudr/migrations/Migration20260722100000_eudr.ts +17 -0
  428. package/src/modules/eudr/notifications.ts +56 -0
  429. package/src/modules/eudr/search.ts +212 -0
  430. package/src/modules/eudr/setup.ts +10 -0
  431. package/src/modules/eudr/subscribers/notify-mitigation-completed.ts +56 -0
  432. package/src/modules/eudr/subscribers/notify-risk-concluded.ts +58 -0
  433. package/src/modules/eudr/subscribers/notify-statement-reference-issued.ts +59 -0
  434. package/src/modules/eudr/subscribers/notify-statement-submitted.ts +49 -0
  435. package/src/modules/eudr/subscribers/notify-statement-withdrawn.ts +49 -0
  436. package/src/modules/eudr/subscribers/recompute-completeness-on-attachment-created.ts +189 -0
  437. package/src/modules/eudr/subscribers/recompute-completeness-on-attachment-deleted.ts +31 -0
  438. package/src/modules/eudr/widgets/dashboard/compliance-overview/widget.client.tsx +271 -0
  439. package/src/modules/eudr/widgets/dashboard/compliance-overview/widget.ts +24 -0
  440. package/src/modules/eudr/widgets/injection/eudr-product-column/widget.client.tsx +37 -0
  441. package/src/modules/eudr/widgets/injection/eudr-product-column/widget.ts +30 -0
  442. package/src/modules/eudr/widgets/injection/order-compliance/widget.client.tsx +131 -0
  443. package/src/modules/eudr/widgets/injection/order-compliance/widget.ts +16 -0
  444. package/src/modules/eudr/widgets/injection/supplier-compliance/widget.client.tsx +168 -0
  445. package/src/modules/eudr/widgets/injection/supplier-compliance/widget.ts +16 -0
  446. package/src/modules/eudr/widgets/injection-table.ts +31 -0
  447. package/src/modules/notifications/lib/notificationService.ts +83 -4
  448. package/src/modules/query_index/lib/engine.ts +139 -51
  449. package/src/modules/sales/api/documents/factory.ts +29 -0
  450. package/src/modules/sales/commands/documents.ts +65 -18
  451. package/src/modules/sales/data/entities.ts +1 -0
  452. package/src/modules/sales/migrations/.snapshot-open-mercato.json +10 -0
  453. package/src/modules/sales/migrations/Migration20260806120000_sales_tag_assignment_document_idx.ts +59 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/eudr/backend/eudr/statements/%5Bid%5D/page.tsx"],
4
+ "sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport Link from 'next/link'\nimport { useRouter } from 'next/navigation'\nimport { Copy, Download } from 'lucide-react'\nimport { Page, PageBody } from '@open-mercato/ui/backend/Page'\nimport { CrudForm, type CrudField, type CrudFormGroup } from '@open-mercato/ui/backend/CrudForm'\nimport { DataTable } from '@open-mercato/ui/backend/DataTable'\nimport { deleteCrud, updateCrud } from '@open-mercato/ui/backend/utils/crud'\nimport { createCrudFormError } from '@open-mercato/ui/backend/utils/serverErrors'\nimport { apiCall } from '@open-mercato/ui/backend/utils/apiCall'\nimport { ErrorMessage, LoadingMessage, RecordNotFoundState } from '@open-mercato/ui/backend/detail'\nimport { flash } from '@open-mercato/ui/backend/FlashMessages'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { EmptyState } from '@open-mercato/ui/primitives/empty-state'\nimport { StatusBadge } from '@open-mercato/ui/primitives/status-badge'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport type { LegacyColumnDef as ColumnDef } from '@tanstack/react-table/legacy'\nimport {\n OrderSelectField,\n ReferencedStatementsField,\n actorRoleOptions,\n activityTypeOptions,\n commodityOptions,\n statusBadgeVariant,\n type CompanySnapshot,\n type OrderSnapshot,\n type ReferencedStatementValue,\n translateEudrCrudError,\n} from '../../../../components/formConfig'\nimport { StatementLifecycleBar } from '../../../../components/StatementLifecycleBar'\nimport { StatementReadinessChecklist } from '../../../../components/StatementReadinessChecklist'\nimport { StatementRiskSection, type StatementLatestRisk } from '../../../../components/StatementRiskSection'\nimport { PlotMapPreview } from '../../../../components/PlotMapPreview'\nimport type {\n EudrActivityType,\n EudrActorRole,\n EudrCommodity,\n EudrStatementStatus,\n EudrSubmissionStatus,\n} from '../../../../data/validators'\nimport { hasMissingSpecies } from '../../../../lib/species'\n\ntype StatementRecord = {\n id: string\n title: string\n commodity: EudrCommodity\n referenceNumber: string | null\n verificationNumber: string | null\n status: EudrStatementStatus\n activityType: EudrActivityType | null\n actorRole: EudrActorRole | null\n referencedStatements: ReferencedStatementValue[]\n quantityKg: number | string | null\n supplementaryUnit: string | null\n supplementaryQuantity: number | string | null\n orderId: string | null\n submittedAt: string | null\n referenceIssuedAt: string | null\n orderSnapshot: OrderSnapshot | null\n notes: string | null\n latestRisk: StatementLatestRisk\n createdAt: string\n updatedAt: string\n}\n\ntype StatementDetailResponse = {\n items?: StatementRecord[]\n}\n\ntype StatementFormValues = {\n id: string\n title: string\n commodity: string\n referenceNumber: string\n verificationNumber: string\n activityType: string\n actorRole: string\n referencedStatements: ReferencedStatementValue[]\n quantityKg: string\n supplementaryUnit: string\n supplementaryQuantity: string\n orderId: string\n orderSnapshot: OrderSnapshot | null\n notes: string\n updatedAt: string\n} & Record<string, unknown>\n\ntype LinkedSubmissionRow = {\n id: string\n supplierEntityId: string\n supplierSnapshot: CompanySnapshot | null\n commodity: EudrCommodity\n productMappingId: string | null\n status: EudrSubmissionStatus\n completenessScore: number\n plotIds?: string[]\n}\n\ntype LinkedSubmissionsResponse = {\n items?: LinkedSubmissionRow[]\n}\n\ntype ProductMappingRow = {\n commodity: EudrCommodity\n speciesScientificName?: string | null\n speciesCommonName?: string | null\n}\n\ntype ProductMappingsResponse = {\n items?: ProductMappingRow[]\n}\n\ntype PlotRow = {\n id: string\n geometry: unknown\n}\n\ntype PlotsResponse = {\n items?: PlotRow[]\n}\n\nfunction optionalText(value: unknown): string | null {\n if (typeof value !== 'string') return null\n const trimmed = value.trim()\n return trimmed.length ? trimmed : null\n}\n\nfunction optionalNumber(value: unknown, translate: ReturnType<typeof useT>): number | null {\n const text = optionalText(value)\n if (!text) return null\n const parsedNumber = Number(text)\n if (!Number.isFinite(parsedNumber)) {\n const message = translate('eudr.statements.form.quantityKgInvalid')\n throw createCrudFormError(message, { quantityKg: message })\n }\n return parsedNumber\n}\n\nfunction optionalSupplementaryNumber(value: unknown, translate: ReturnType<typeof useT>): number | null {\n const text = optionalText(value)\n if (!text) return null\n const parsedNumber = Number(text)\n if (!Number.isFinite(parsedNumber)) {\n const message = translate('eudr.statements.form.supplementaryQuantityInvalid')\n throw createCrudFormError(message, { supplementaryQuantity: message })\n }\n return parsedNumber\n}\n\nfunction isOrderSnapshot(value: unknown): value is OrderSnapshot {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nfunction normalizeReferencedStatements(value: unknown): ReferencedStatementValue[] {\n if (!Array.isArray(value)) return []\n return value\n .map((entry) => {\n if (entry === null || typeof entry !== 'object' || Array.isArray(entry)) return null\n const record = entry as Record<string, unknown>\n const referenceNumber = optionalText(record.referenceNumber)\n if (!referenceNumber) return null\n const verificationNumber = optionalText(record.verificationNumber)\n return verificationNumber ? { referenceNumber, verificationNumber } : { referenceNumber }\n })\n .filter((entry): entry is ReferencedStatementValue => entry !== null)\n}\n\nfunction getRouteId(params?: { id?: string }): string | null {\n const rawId = params?.id\n return typeof rawId === 'string' && rawId.trim().length ? rawId : null\n}\n\nfunction formatQuantityKg(value: number | string | null): string {\n if (value === null || value === undefined) return ''\n return String(value)\n}\n\nfunction formatOptionalNumber(value: number | string | null): string {\n if (value === null || value === undefined) return ''\n return String(value)\n}\n\nfunction supplierLabel(row: LinkedSubmissionRow, unavailableLabel: string): string {\n return row.supplierSnapshot?.displayName || unavailableLabel\n}\n\nexport default function EditEudrStatementPage({ params }: { params?: { id?: string } }) {\n const translate = useT()\n const router = useRouter()\n const statementId = React.useMemo(() => getRouteId(params), [params])\n const [record, setRecord] = React.useState<StatementRecord | null>(null)\n const [loading, setLoading] = React.useState(true)\n const [error, setError] = React.useState<string | null>(null)\n const [notFound, setNotFound] = React.useState(false)\n const [submissionRows, setSubmissionRows] = React.useState<LinkedSubmissionRow[]>([])\n const [submissionsLoading, setSubmissionsLoading] = React.useState(false)\n const [submissionsError, setSubmissionsError] = React.useState<string | null>(null)\n const [speciesMissing, setSpeciesMissing] = React.useState(false)\n const [plotFeatures, setPlotFeatures] = React.useState<unknown[]>([])\n const [plotsLoading, setPlotsLoading] = React.useState(false)\n const [exportingFormat, setExportingFormat] = React.useState<'json' | 'geojson' | null>(null)\n const [reloadToken, setReloadToken] = React.useState(0)\n\n React.useEffect(() => {\n let cancelled = false\n async function loadRecord() {\n if (!statementId) {\n setNotFound(true)\n setLoading(false)\n return\n }\n setLoading(true)\n setError(null)\n setNotFound(false)\n try {\n const call = await apiCall<StatementDetailResponse>(\n `/api/eudr/statements?id=${encodeURIComponent(statementId)}`,\n undefined,\n { fallback: { items: [] } },\n )\n if (!call.ok) {\n if (!cancelled) setError(translate('eudr.statements.form.loadError'))\n return\n }\n const items = Array.isArray(call.result?.items) ? call.result.items : []\n if (cancelled) return\n if (items.length === 0) {\n setNotFound(true)\n setRecord(null)\n return\n }\n setRecord(items[0])\n } catch {\n if (!cancelled) setError(translate('eudr.statements.form.loadError'))\n } finally {\n if (!cancelled) setLoading(false)\n }\n }\n loadRecord()\n return () => {\n cancelled = true\n }\n }, [reloadToken, statementId, translate])\n\n React.useEffect(() => {\n let cancelled = false\n async function loadSubmissions() {\n if (!statementId) return\n setSubmissionsLoading(true)\n setSubmissionsError(null)\n try {\n const call = await apiCall<LinkedSubmissionsResponse>(\n `/api/eudr/evidence-submissions?statementId=${encodeURIComponent(statementId)}&pageSize=100`,\n undefined,\n { fallback: { items: [] } },\n )\n if (!call.ok) {\n if (!cancelled) setSubmissionsError(translate('eudr.statements.detail.loadSubmissionsError'))\n return\n }\n if (!cancelled) setSubmissionRows(Array.isArray(call.result?.items) ? call.result.items : [])\n } catch {\n if (!cancelled) setSubmissionsError(translate('eudr.statements.detail.loadSubmissionsError'))\n } finally {\n if (!cancelled) setSubmissionsLoading(false)\n }\n }\n loadSubmissions()\n return () => {\n cancelled = true\n }\n }, [statementId, translate])\n\n React.useEffect(() => {\n const productMappingIds = Array.from(\n new Set(\n submissionRows\n .map((submission) => submission.productMappingId)\n .filter((mappingId): mappingId is string => typeof mappingId === 'string' && mappingId.length > 0),\n ),\n )\n if (!productMappingIds.length) {\n setSpeciesMissing(false)\n return\n }\n setSpeciesMissing(false)\n let cancelled = false\n async function loadProductMappings() {\n try {\n const call = await apiCall<ProductMappingsResponse>(\n `/api/eudr/product-mappings?ids=${encodeURIComponent(productMappingIds.join(','))}&pageSize=100`,\n {\n headers: {\n 'x-om-forbidden-redirect': '0',\n 'x-om-unauthorized-redirect': '0',\n },\n },\n { fallback: { items: [] } },\n )\n if (!cancelled) {\n const mappings = call.ok && Array.isArray(call.result?.items) ? call.result.items : []\n setSpeciesMissing(mappings.some((mapping) => hasMissingSpecies(mapping)))\n }\n } catch {\n if (!cancelled) setSpeciesMissing(false)\n }\n }\n void loadProductMappings()\n return () => {\n cancelled = true\n }\n }, [submissionRows])\n\n React.useEffect(() => {\n const plotIds = Array.from(\n new Set(\n submissionRows\n .flatMap((submission) => Array.isArray(submission.plotIds) ? submission.plotIds : [])\n .filter((plotId): plotId is string => typeof plotId === 'string' && plotId.trim().length > 0),\n ),\n )\n if (!plotIds.length) {\n setPlotFeatures([])\n setPlotsLoading(false)\n return\n }\n let cancelled = false\n async function loadPlots() {\n setPlotsLoading(true)\n try {\n const call = await apiCall<PlotsResponse>(\n `/api/eudr/plots?ids=${encodeURIComponent(plotIds.join(','))}&pageSize=100`,\n {\n headers: {\n 'x-om-forbidden-redirect': '0',\n 'x-om-unauthorized-redirect': '0',\n },\n },\n { fallback: { items: [] } },\n )\n if (!call.ok) {\n if (!cancelled) setPlotFeatures([])\n return\n }\n const features = (Array.isArray(call.result?.items) ? call.result.items : [])\n .map((plot) => plot.geometry)\n .filter((geometry) => geometry !== null && geometry !== undefined)\n if (!cancelled) setPlotFeatures(features)\n } catch {\n if (!cancelled) setPlotFeatures([])\n } finally {\n if (!cancelled) setPlotsLoading(false)\n }\n }\n loadPlots()\n return () => {\n cancelled = true\n }\n }, [submissionRows])\n\n const refreshRecord = React.useCallback(() => {\n setReloadToken((currentToken) => currentToken + 1)\n }, [])\n\n const fields = React.useMemo<CrudField[]>(() => [\n {\n id: 'title',\n label: translate('eudr.statements.form.title'),\n type: 'text',\n required: true,\n },\n {\n id: 'commodity',\n layout: 'half',\n label: translate('eudr.statements.form.commodity'),\n type: 'select',\n required: true,\n options: commodityOptions(translate),\n },\n {\n id: 'activityType',\n layout: 'half',\n label: translate('eudr.statements.form.activityType'),\n type: 'select',\n options: activityTypeOptions(translate),\n },\n {\n id: 'actorRole',\n layout: 'half',\n label: translate('eudr.statements.form.actorRole'),\n type: 'select',\n options: actorRoleOptions(translate),\n },\n {\n id: 'referenceNumber',\n label: translate('eudr.statements.form.referenceNumber'),\n type: 'text',\n },\n {\n id: 'verificationNumber',\n label: translate('eudr.statements.form.verificationNumber'),\n type: 'text',\n },\n {\n id: 'quantityKg',\n layout: 'half',\n label: translate('eudr.statements.form.quantityKg'),\n type: 'text',\n },\n {\n id: 'supplementaryUnit',\n layout: 'half',\n label: translate('eudr.statements.form.supplementaryUnit'),\n type: 'text',\n },\n {\n id: 'supplementaryQuantity',\n layout: 'half',\n label: translate('eudr.statements.form.supplementaryQuantity'),\n type: 'text',\n },\n {\n id: 'orderId',\n label: translate('eudr.statements.form.order'),\n type: 'custom',\n component: ({ id, value, setValue, setFormValue }) => (\n <OrderSelectField\n id={id}\n value={typeof value === 'string' ? value : null}\n onChange={(nextValue) => setValue(nextValue ?? '')}\n onSnapshot={(snapshot) => setFormValue?.('orderSnapshot', snapshot)}\n placeholder={translate('eudr.statements.form.orderPlaceholder')}\n emptyLabel={translate('eudr.common.empty')}\n loadError={translate('eudr.statements.form.orderLoadError')}\n />\n ),\n },\n {\n id: 'referencedStatements',\n label: translate('eudr.statements.form.referencedStatements'),\n type: 'custom',\n component: ({ id, value, setValue, disabled }) => (\n <ReferencedStatementsField\n id={id}\n value={value}\n onChange={(nextValue) => setValue(nextValue)}\n disabled={disabled}\n />\n ),\n },\n {\n id: 'notes',\n label: translate('eudr.statements.form.notes'),\n type: 'textarea',\n },\n ], [translate])\n\n const groups = React.useMemo<CrudFormGroup[]>(() => [\n {\n id: 'details',\n title: translate('eudr.statements.form.details'),\n column: 1,\n fields: [\n 'title',\n 'commodity',\n 'activityType',\n 'actorRole',\n ],\n },\n {\n id: 'quantities',\n title: translate('eudr.statements.form.quantities'),\n column: 1,\n fields: [\n 'quantityKg',\n 'supplementaryUnit',\n 'supplementaryQuantity',\n ],\n },\n {\n id: 'referenced',\n title: translate('eudr.statements.form.referencedStatements'),\n column: 1,\n fields: [\n 'referencedStatements',\n ],\n },\n {\n id: 'registration',\n title: translate('eudr.statements.form.registration'),\n column: 2,\n fields: [\n 'referenceNumber',\n 'verificationNumber',\n ],\n },\n {\n id: 'order',\n title: translate('eudr.statements.form.order'),\n column: 2,\n fields: [\n 'orderId',\n ],\n },\n {\n id: 'notes',\n title: translate('eudr.common.notes'),\n column: 2,\n fields: [\n 'notes',\n ],\n },\n ], [translate])\n\n const submissionColumns = React.useMemo<ColumnDef<LinkedSubmissionRow>[]>(() => [\n {\n accessorKey: 'supplierEntityId',\n header: translate('eudr.statements.detail.columns.supplier'),\n cell: ({ row }) => supplierLabel(row.original, translate('eudr.common.recordUnavailable')),\n },\n {\n accessorKey: 'status',\n header: translate('eudr.statements.detail.columns.status'),\n cell: ({ row }) => (\n <StatusBadge variant={statusBadgeVariant(row.original.status)} dot>\n {translate(`eudr.submissionStatus.${row.original.status}`)}\n </StatusBadge>\n ),\n },\n {\n accessorKey: 'completenessScore',\n header: translate('eudr.statements.detail.columns.completeness'),\n cell: ({ row }) => `${row.original.completenessScore}%`,\n },\n ], [translate])\n\n const initialValues = React.useMemo<StatementFormValues | null>(() => {\n if (!record) return null\n return {\n id: record.id,\n title: record.title,\n commodity: record.commodity,\n referenceNumber: record.referenceNumber ?? '',\n verificationNumber: record.verificationNumber ?? '',\n activityType: record.activityType ?? '',\n actorRole: record.actorRole ?? '',\n referencedStatements: Array.isArray(record.referencedStatements) ? record.referencedStatements : [],\n quantityKg: formatQuantityKg(record.quantityKg),\n supplementaryUnit: record.supplementaryUnit ?? '',\n supplementaryQuantity: formatOptionalNumber(record.supplementaryQuantity),\n orderId: record.orderId ?? '',\n orderSnapshot: record.orderSnapshot,\n notes: record.notes ?? '',\n updatedAt: record.updatedAt,\n }\n }, [record])\n\n const handleExport = React.useCallback(async (format: 'json' | 'geojson') => {\n if (!statementId) return\n setExportingFormat(format)\n try {\n const suffix = format === 'geojson' ? '?format=geojson' : ''\n const call = await apiCall<unknown>(`/api/eudr/statements/${encodeURIComponent(statementId)}/export${suffix}`)\n if (!call.ok) throw new Error('[internal] eudr statement export failed')\n const blob = new Blob([JSON.stringify(call.result ?? {}, null, 2)], {\n type: format === 'geojson' ? 'application/geo+json' : 'application/json',\n })\n const objectUrl = URL.createObjectURL(blob)\n const link = document.createElement('a')\n link.href = objectUrl\n link.download = format === 'geojson' ? `eudr-dds-${statementId}.geojson` : `eudr-dds-${statementId}.json`\n document.body.appendChild(link)\n link.click()\n link.remove()\n URL.revokeObjectURL(objectUrl)\n } catch {\n flash(translate('eudr.statements.detail.exportError'), 'error')\n } finally {\n setExportingFormat(null)\n }\n }, [statementId, translate])\n\n if (loading) {\n return (\n <Page>\n <PageBody>\n <LoadingMessage label={translate('eudr.statements.form.loading')} />\n </PageBody>\n </Page>\n )\n }\n\n if (notFound) {\n return (\n <Page>\n <PageBody>\n <RecordNotFoundState\n label={translate('eudr.statements.form.notFound')}\n backHref=\"/backend/eudr/statements\"\n backLabel={translate('eudr.statements.form.backToList')}\n />\n </PageBody>\n </Page>\n )\n }\n\n if (error || !record || !initialValues) {\n return (\n <Page>\n <PageBody>\n <ErrorMessage label={error ?? translate('eudr.statements.form.loadError')} />\n </PageBody>\n </Page>\n )\n }\n\n return (\n <Page>\n <PageBody>\n <StatementLifecycleBar\n statement={{\n id: record.id,\n status: record.status,\n referenceNumber: record.referenceNumber,\n verificationNumber: record.verificationNumber,\n referenceIssuedAt: record.referenceIssuedAt,\n submittedAt: record.submittedAt,\n updatedAt: record.updatedAt,\n }}\n speciesMissing={speciesMissing}\n onChanged={refreshRecord}\n />\n\n <StatementReadinessChecklist\n statementId={record.id}\n status={record.status}\n updatedAt={record.updatedAt}\n />\n\n <CrudForm<StatementFormValues>\n title={translate('eudr.statements.edit.title')}\n backHref=\"/backend/eudr/statements\"\n cancelHref=\"/backend/eudr/statements\"\n deleteRedirect=\"/backend/eudr/statements\"\n submitLabel={translate('eudr.statements.form.submitUpdate')}\n fields={fields}\n groups={groups}\n initialValues={initialValues}\n extraActions={(\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => router.push(\n `/backend/eudr/statements/create?duplicateFrom=${encodeURIComponent(record.id)}`,\n )}\n >\n <Copy className=\"mr-2 h-4 w-4\" aria-hidden />\n {translate('eudr.statements.duplicateAction')}\n </Button>\n )}\n onSubmit={async (values) => {\n const title = optionalText(values.title)\n if (!title) {\n const message = translate('eudr.statements.form.titleRequired')\n throw createCrudFormError(message, { title: message })\n }\n const commodity = optionalText(values.commodity)\n if (!commodity) {\n const message = translate('eudr.statements.form.commodityRequired')\n throw createCrudFormError(message, { commodity: message })\n }\n await updateCrud('eudr/statements', {\n id: record.id,\n title,\n commodity,\n referenceNumber: optionalText(values.referenceNumber),\n verificationNumber: optionalText(values.verificationNumber),\n activityType: optionalText(values.activityType),\n actorRole: optionalText(values.actorRole),\n referencedStatements: normalizeReferencedStatements(values.referencedStatements),\n quantityKg: optionalNumber(values.quantityKg, translate),\n supplementaryUnit: optionalText(values.supplementaryUnit),\n supplementaryQuantity: optionalSupplementaryNumber(values.supplementaryQuantity, translate),\n orderId: optionalText(values.orderId),\n orderSnapshot: isOrderSnapshot(values.orderSnapshot) ? values.orderSnapshot : null,\n notes: optionalText(values.notes),\n }, {\n errorMessage: translate('eudr.statements.form.updateError'),\n }).catch((err) => {\n throw translateEudrCrudError(err, translate)\n })\n flash(translate('eudr.statements.form.updateSuccess'), 'success')\n router.push('/backend/eudr/statements')\n }}\n onDelete={async () => {\n await deleteCrud('eudr/statements', record.id, {\n errorMessage: translate('eudr.statements.form.deleteError'),\n }).catch((err) => {\n throw translateEudrCrudError(err, translate)\n })\n }}\n />\n\n <StatementRiskSection\n statementId={record.id}\n latestRisk={record.latestRisk}\n />\n\n <section className=\"space-y-3\">\n <h2 className=\"text-lg font-semibold\">{translate('eudr.statements.detail.submissions')}</h2>\n <DataTable<LinkedSubmissionRow>\n title={translate('eudr.statements.detail.submissionsTableTitle')}\n columns={submissionColumns}\n data={submissionRows}\n isLoading={submissionsLoading}\n error={submissionsError}\n emptyState={(\n <EmptyState\n size=\"sm\"\n variant=\"subtle\"\n title={translate('eudr.statements.detail.submissionsEmpty')}\n description={translate('eudr.statements.detail.submissionsEmptyHint')}\n actions={(\n <Button asChild type=\"button\" variant=\"outline\">\n <Link href={`/backend/eudr/evidence-submissions/create?statementId=${encodeURIComponent(record.id)}`}>\n {translate('eudr.statements.detail.createSubmission')}\n </Link>\n </Button>\n )}\n />\n )}\n perspective={{ tableId: 'eudr.statements.detail.submissions' }}\n disableRowClick\n />\n </section>\n\n {plotFeatures.length > 0 ? (\n <section className=\"space-y-3\">\n <div className=\"flex items-center justify-between gap-3\">\n <h2 className=\"text-lg font-semibold\">{translate('eudr.statements.detail.plotMap')}</h2>\n {plotsLoading ? (\n <span className=\"text-sm text-muted-foreground\">{translate('eudr.statements.detail.plotMapLoading')}</span>\n ) : null}\n </div>\n <PlotMapPreview features={plotFeatures} />\n </section>\n ) : null}\n\n <section className=\"space-y-3 rounded-lg border border-border bg-card p-4\">\n <h2 className=\"text-lg font-semibold\">{translate('eudr.statements.detail.exports')}</h2>\n <div className=\"flex flex-wrap items-center gap-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => void handleExport('json')}\n disabled={exportingFormat !== null}\n >\n <Download className=\"mr-2 h-4 w-4\" aria-hidden />\n {translate('eudr.statements.detail.export')}\n </Button>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => void handleExport('geojson')}\n disabled={exportingFormat !== null}\n >\n <Download className=\"mr-2 h-4 w-4\" aria-hidden />\n {translate('eudr.statements.detail.exportGeoJson')}\n </Button>\n </div>\n </section>\n </PageBody>\n </Page>\n )\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,16 @@
1
+ const metadata = {
2
+ requireAuth: true,
3
+ requireFeatures: ["eudr.statements.manage"],
4
+ pageTitle: "Edit statement",
5
+ pageTitleKey: "eudr.statements.edit.title",
6
+ pageGroup: "Compliance",
7
+ pageGroupKey: "eudr.nav.group",
8
+ navHidden: true,
9
+ breadcrumb: [
10
+ { label: "Statements", labelKey: "eudr.nav.statements", href: "/backend/eudr/statements" }
11
+ ]
12
+ };
13
+ export {
14
+ metadata
15
+ };
16
+ //# sourceMappingURL=page.meta.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/eudr/backend/eudr/statements/%5Bid%5D/page.meta.ts"],
4
+ "sourcesContent": ["export const metadata = {\n requireAuth: true,\n requireFeatures: ['eudr.statements.manage'],\n pageTitle: 'Edit statement',\n pageTitleKey: 'eudr.statements.edit.title',\n pageGroup: 'Compliance',\n pageGroupKey: 'eudr.nav.group',\n navHidden: true,\n breadcrumb: [\n { label: 'Statements', labelKey: 'eudr.nav.statements', href: '/backend/eudr/statements' },\n ],\n}\n"],
5
+ "mappings": "AAAO,MAAM,WAAW;AAAA,EACtB,aAAa;AAAA,EACb,iBAAiB,CAAC,wBAAwB;AAAA,EAC1C,WAAW;AAAA,EACX,cAAc;AAAA,EACd,WAAW;AAAA,EACX,cAAc;AAAA,EACd,WAAW;AAAA,EACX,YAAY;AAAA,IACV,EAAE,OAAO,cAAc,UAAU,uBAAuB,MAAM,2BAA2B;AAAA,EAC3F;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,432 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { useRouter, useSearchParams } from "next/navigation";
5
+ import { LoadingMessage } from "@open-mercato/ui/backend/detail";
6
+ import { Page, PageBody } from "@open-mercato/ui/backend/Page";
7
+ import { CrudForm } from "@open-mercato/ui/backend/CrudForm";
8
+ import { apiCall } from "@open-mercato/ui/backend/utils/apiCall";
9
+ import { createCrud } from "@open-mercato/ui/backend/utils/crud";
10
+ import { createCrudFormError } from "@open-mercato/ui/backend/utils/serverErrors";
11
+ import { flash } from "@open-mercato/ui/backend/FlashMessages";
12
+ import { useT } from "@open-mercato/shared/lib/i18n/context";
13
+ import {
14
+ OrderSelectField,
15
+ ReferencedStatementsField,
16
+ actorRoleOptions,
17
+ activityTypeOptions,
18
+ commodityOptions,
19
+ translateEudrCrudError
20
+ } from "../../../../components/formConfig.js";
21
+ import {
22
+ buildDuplicateSeed,
23
+ pickUnambiguousCommodity,
24
+ resolveSeedingParams
25
+ } from "../../../../lib/statement-seeding.js";
26
+ const SEEDING_REQUEST_INIT = {
27
+ headers: {
28
+ "x-om-forbidden-redirect": "0",
29
+ "x-om-unauthorized-redirect": "0"
30
+ }
31
+ };
32
+ const ORDER_LINES_PAGE_SIZE = 100;
33
+ const ORDER_LINES_PAGE_CAP = 3;
34
+ function createEmptyStatementValues() {
35
+ return {
36
+ title: "",
37
+ commodity: "",
38
+ activityType: "",
39
+ actorRole: "",
40
+ referenceNumber: "",
41
+ verificationNumber: "",
42
+ quantityKg: "",
43
+ supplementaryUnit: "",
44
+ supplementaryQuantity: "",
45
+ orderId: "",
46
+ orderSnapshot: null,
47
+ referencedStatements: [],
48
+ notes: ""
49
+ };
50
+ }
51
+ async function loadOrderCommodity(orderId) {
52
+ const productIds = /* @__PURE__ */ new Set();
53
+ let reachedLastPage = false;
54
+ try {
55
+ for (let page = 1; page <= ORDER_LINES_PAGE_CAP; page += 1) {
56
+ const call = await apiCall(
57
+ `/api/sales/order-lines?orderId=${encodeURIComponent(orderId)}&page=${page}&pageSize=${ORDER_LINES_PAGE_SIZE}`,
58
+ SEEDING_REQUEST_INIT,
59
+ { fallback: { items: [] } }
60
+ );
61
+ if (!call.ok) return null;
62
+ const items = Array.isArray(call.result?.items) ? call.result.items : [];
63
+ for (const item of items) {
64
+ if (typeof item.product_id === "string" && item.product_id.trim()) {
65
+ productIds.add(item.product_id.trim());
66
+ }
67
+ }
68
+ const totalPages = typeof call.result?.totalPages === "number" && Number.isFinite(call.result.totalPages) ? Math.max(0, Math.floor(call.result.totalPages)) : null;
69
+ if (totalPages !== null && page >= totalPages || items.length < ORDER_LINES_PAGE_SIZE) {
70
+ reachedLastPage = true;
71
+ break;
72
+ }
73
+ }
74
+ if (!reachedLastPage || productIds.size === 0) return null;
75
+ const allProductIds = Array.from(productIds);
76
+ const mappings = [];
77
+ for (let offset = 0; offset < allProductIds.length; offset += 100) {
78
+ const chunk = allProductIds.slice(offset, offset + 100);
79
+ const call = await apiCall(
80
+ `/api/eudr/product-mappings?productId=${encodeURIComponent(chunk.join(","))}&pageSize=100`,
81
+ SEEDING_REQUEST_INIT,
82
+ { fallback: { items: [] } }
83
+ );
84
+ if (!call.ok) return null;
85
+ for (const item of Array.isArray(call.result?.items) ? call.result.items : []) {
86
+ if (typeof item.commodity === "string" && typeof item.isInScope === "boolean") {
87
+ mappings.push({ commodity: item.commodity, isInScope: item.isInScope });
88
+ }
89
+ }
90
+ }
91
+ return pickUnambiguousCommodity(mappings);
92
+ } catch {
93
+ return null;
94
+ }
95
+ }
96
+ function optionalText(value) {
97
+ if (typeof value !== "string") return null;
98
+ const trimmed = value.trim();
99
+ return trimmed.length ? trimmed : null;
100
+ }
101
+ function optionalNumber(value, translate) {
102
+ const text = optionalText(value);
103
+ if (!text) return null;
104
+ const parsedNumber = Number(text);
105
+ if (!Number.isFinite(parsedNumber)) {
106
+ const message = translate("eudr.statements.form.quantityKgInvalid");
107
+ throw createCrudFormError(message, { quantityKg: message });
108
+ }
109
+ return parsedNumber;
110
+ }
111
+ function optionalSupplementaryNumber(value, translate) {
112
+ const text = optionalText(value);
113
+ if (!text) return null;
114
+ const parsedNumber = Number(text);
115
+ if (!Number.isFinite(parsedNumber)) {
116
+ const message = translate("eudr.statements.form.supplementaryQuantityInvalid");
117
+ throw createCrudFormError(message, { supplementaryQuantity: message });
118
+ }
119
+ return parsedNumber;
120
+ }
121
+ function isOrderSnapshot(value) {
122
+ return value !== null && typeof value === "object" && !Array.isArray(value);
123
+ }
124
+ function normalizeReferencedStatements(value) {
125
+ if (!Array.isArray(value)) return [];
126
+ return value.map((entry) => {
127
+ if (entry === null || typeof entry !== "object" || Array.isArray(entry)) return null;
128
+ const record = entry;
129
+ const referenceNumber = optionalText(record.referenceNumber);
130
+ if (!referenceNumber) return null;
131
+ const verificationNumber = optionalText(record.verificationNumber);
132
+ return verificationNumber ? { referenceNumber, verificationNumber } : { referenceNumber };
133
+ }).filter((entry) => entry !== null);
134
+ }
135
+ function CreateEudrStatementPage() {
136
+ const translate = useT();
137
+ const router = useRouter();
138
+ const searchParams = useSearchParams();
139
+ const seedingParams = resolveSeedingParams(searchParams);
140
+ const seedingMode = seedingParams.mode;
141
+ const seedingId = seedingMode === "none" ? null : seedingParams.id;
142
+ const ignoredOrder = seedingMode === "duplicate" && seedingParams.ignoredOrder === true;
143
+ const [initialValues, setInitialValues] = React.useState(createEmptyStatementValues);
144
+ const [seeding, setSeeding] = React.useState(seedingMode !== "none");
145
+ React.useEffect(() => {
146
+ let cancelled = false;
147
+ const flashUnavailable = () => {
148
+ if (!cancelled) flash(translate("eudr.statements.prefillUnavailable"), "info");
149
+ };
150
+ const flashIgnoredOrder = () => {
151
+ if (!cancelled && ignoredOrder) {
152
+ flash(translate("eudr.statements.prefillOrderIgnored"), "info");
153
+ }
154
+ };
155
+ async function seedForm() {
156
+ setInitialValues(createEmptyStatementValues());
157
+ if (!seedingId || seedingMode === "none") return;
158
+ if (seedingMode === "duplicate") {
159
+ try {
160
+ const call = await apiCall(
161
+ `/api/eudr/statements?id=${encodeURIComponent(seedingId)}`,
162
+ SEEDING_REQUEST_INIT,
163
+ { fallback: { items: [] } }
164
+ );
165
+ if (cancelled) return;
166
+ flashIgnoredOrder();
167
+ const items = Array.isArray(call.result?.items) ? call.result.items : [];
168
+ const source = call.ok ? items.find((item) => item.id === seedingId) : null;
169
+ if (!source) {
170
+ flashUnavailable();
171
+ return;
172
+ }
173
+ const seed = buildDuplicateSeed(source);
174
+ const sourceTitle = typeof seed.title === "string" ? seed.title : "";
175
+ if (!sourceTitle.trim()) {
176
+ flashUnavailable();
177
+ return;
178
+ }
179
+ setInitialValues({
180
+ ...createEmptyStatementValues(),
181
+ ...seed,
182
+ title: translate(
183
+ "eudr.statements.duplicateTitle",
184
+ "{title} (copy)",
185
+ { title: sourceTitle }
186
+ )
187
+ });
188
+ } catch {
189
+ flashIgnoredOrder();
190
+ flashUnavailable();
191
+ }
192
+ return;
193
+ }
194
+ try {
195
+ const call = await apiCall(
196
+ `/api/sales/orders?id=${encodeURIComponent(seedingId)}`,
197
+ SEEDING_REQUEST_INIT,
198
+ { fallback: { items: [] } }
199
+ );
200
+ if (cancelled) return;
201
+ const items = Array.isArray(call.result?.items) ? call.result.items : [];
202
+ const source = call.ok ? items.find((item) => item.id === seedingId) : null;
203
+ const orderNumber = typeof source?.orderNumber === "string" ? source.orderNumber.trim() : "";
204
+ if (!source || !orderNumber) {
205
+ flashUnavailable();
206
+ return;
207
+ }
208
+ const commodity = await loadOrderCommodity(seedingId);
209
+ if (cancelled) return;
210
+ setInitialValues({
211
+ ...createEmptyStatementValues(),
212
+ title: translate(
213
+ "eudr.statements.titleFromOrder",
214
+ "DDS \u2014 {orderNumber}",
215
+ { orderNumber }
216
+ ),
217
+ orderId: seedingId,
218
+ orderSnapshot: { orderNumber },
219
+ ...commodity ? { commodity } : {}
220
+ });
221
+ } catch {
222
+ flashUnavailable();
223
+ }
224
+ }
225
+ void seedForm().finally(() => {
226
+ if (!cancelled) setSeeding(false);
227
+ });
228
+ return () => {
229
+ cancelled = true;
230
+ };
231
+ }, [ignoredOrder, seedingId, seedingMode, translate]);
232
+ const fields = React.useMemo(() => [
233
+ {
234
+ id: "title",
235
+ label: translate("eudr.statements.form.title"),
236
+ type: "text",
237
+ required: true
238
+ },
239
+ {
240
+ id: "commodity",
241
+ layout: "half",
242
+ label: translate("eudr.statements.form.commodity"),
243
+ type: "select",
244
+ required: true,
245
+ options: commodityOptions(translate)
246
+ },
247
+ {
248
+ id: "activityType",
249
+ layout: "half",
250
+ label: translate("eudr.statements.form.activityType"),
251
+ type: "select",
252
+ options: activityTypeOptions(translate)
253
+ },
254
+ {
255
+ id: "actorRole",
256
+ layout: "half",
257
+ label: translate("eudr.statements.form.actorRole"),
258
+ type: "select",
259
+ options: actorRoleOptions(translate)
260
+ },
261
+ {
262
+ id: "referenceNumber",
263
+ label: translate("eudr.statements.form.referenceNumber"),
264
+ type: "text"
265
+ },
266
+ {
267
+ id: "verificationNumber",
268
+ label: translate("eudr.statements.form.verificationNumber"),
269
+ type: "text"
270
+ },
271
+ {
272
+ id: "quantityKg",
273
+ layout: "half",
274
+ label: translate("eudr.statements.form.quantityKg"),
275
+ type: "text"
276
+ },
277
+ {
278
+ id: "supplementaryUnit",
279
+ layout: "half",
280
+ label: translate("eudr.statements.form.supplementaryUnit"),
281
+ type: "text"
282
+ },
283
+ {
284
+ id: "supplementaryQuantity",
285
+ layout: "half",
286
+ label: translate("eudr.statements.form.supplementaryQuantity"),
287
+ type: "text"
288
+ },
289
+ {
290
+ id: "orderId",
291
+ label: translate("eudr.statements.form.order"),
292
+ type: "custom",
293
+ component: ({ id, value, setValue, setFormValue }) => /* @__PURE__ */ jsx(
294
+ OrderSelectField,
295
+ {
296
+ id,
297
+ value: typeof value === "string" ? value : null,
298
+ onChange: (nextValue) => setValue(nextValue ?? ""),
299
+ onSnapshot: (snapshot) => setFormValue?.("orderSnapshot", snapshot),
300
+ placeholder: translate("eudr.statements.form.orderPlaceholder"),
301
+ emptyLabel: translate("eudr.common.empty"),
302
+ loadError: translate("eudr.statements.form.orderLoadError")
303
+ }
304
+ )
305
+ },
306
+ {
307
+ id: "referencedStatements",
308
+ label: translate("eudr.statements.form.referencedStatements"),
309
+ type: "custom",
310
+ component: ({ id, value, setValue, disabled }) => /* @__PURE__ */ jsx(
311
+ ReferencedStatementsField,
312
+ {
313
+ id,
314
+ value,
315
+ onChange: (nextValue) => setValue(nextValue),
316
+ disabled
317
+ }
318
+ )
319
+ },
320
+ {
321
+ id: "notes",
322
+ label: translate("eudr.statements.form.notes"),
323
+ type: "textarea"
324
+ }
325
+ ], [translate]);
326
+ const groups = React.useMemo(() => [
327
+ {
328
+ id: "details",
329
+ title: translate("eudr.statements.form.details"),
330
+ column: 1,
331
+ fields: [
332
+ "title",
333
+ "commodity",
334
+ "activityType",
335
+ "actorRole"
336
+ ]
337
+ },
338
+ {
339
+ id: "quantities",
340
+ title: translate("eudr.statements.form.quantities"),
341
+ column: 1,
342
+ fields: [
343
+ "quantityKg",
344
+ "supplementaryUnit",
345
+ "supplementaryQuantity"
346
+ ]
347
+ },
348
+ {
349
+ id: "referenced",
350
+ title: translate("eudr.statements.form.referencedStatements"),
351
+ column: 1,
352
+ fields: [
353
+ "referencedStatements"
354
+ ]
355
+ },
356
+ {
357
+ id: "registration",
358
+ title: translate("eudr.statements.form.registration"),
359
+ column: 2,
360
+ fields: [
361
+ "referenceNumber",
362
+ "verificationNumber"
363
+ ]
364
+ },
365
+ {
366
+ id: "order",
367
+ title: translate("eudr.statements.form.order"),
368
+ column: 2,
369
+ fields: [
370
+ "orderId"
371
+ ]
372
+ },
373
+ {
374
+ id: "notes",
375
+ title: translate("eudr.common.notes"),
376
+ column: 2,
377
+ fields: [
378
+ "notes"
379
+ ]
380
+ }
381
+ ], [translate]);
382
+ return /* @__PURE__ */ jsx(Page, { children: /* @__PURE__ */ jsx(PageBody, { children: seeding ? /* @__PURE__ */ jsx(LoadingMessage, { label: translate("eudr.statements.create.title") }) : /* @__PURE__ */ jsx(
383
+ CrudForm,
384
+ {
385
+ title: translate("eudr.statements.create.title"),
386
+ backHref: "/backend/eudr/statements",
387
+ cancelHref: "/backend/eudr/statements",
388
+ submitLabel: translate("eudr.statements.form.submitCreate"),
389
+ fields,
390
+ groups,
391
+ initialValues,
392
+ onSubmit: async (values) => {
393
+ const title = optionalText(values.title);
394
+ if (!title) {
395
+ const message = translate("eudr.statements.form.titleRequired");
396
+ throw createCrudFormError(message, { title: message });
397
+ }
398
+ const commodity = optionalText(values.commodity);
399
+ if (!commodity) {
400
+ const message = translate("eudr.statements.form.commodityRequired");
401
+ throw createCrudFormError(message, { commodity: message });
402
+ }
403
+ await createCrud("eudr/statements", {
404
+ title,
405
+ commodity,
406
+ referenceNumber: optionalText(values.referenceNumber),
407
+ verificationNumber: optionalText(values.verificationNumber),
408
+ status: "draft",
409
+ activityType: optionalText(values.activityType),
410
+ actorRole: optionalText(values.actorRole),
411
+ quantityKg: optionalNumber(values.quantityKg, translate),
412
+ supplementaryUnit: optionalText(values.supplementaryUnit),
413
+ supplementaryQuantity: optionalSupplementaryNumber(values.supplementaryQuantity, translate),
414
+ orderId: optionalText(values.orderId),
415
+ orderSnapshot: isOrderSnapshot(values.orderSnapshot) ? values.orderSnapshot : null,
416
+ referencedStatements: normalizeReferencedStatements(values.referencedStatements),
417
+ notes: optionalText(values.notes)
418
+ }, {
419
+ errorMessage: translate("eudr.statements.form.createError")
420
+ }).catch((err) => {
421
+ throw translateEudrCrudError(err, translate);
422
+ });
423
+ flash(translate("eudr.statements.form.createSuccess"), "success");
424
+ router.push("/backend/eudr/statements");
425
+ }
426
+ }
427
+ ) }) });
428
+ }
429
+ export {
430
+ CreateEudrStatementPage as default
431
+ };
432
+ //# sourceMappingURL=page.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/eudr/backend/eudr/statements/create/page.tsx"],
4
+ "sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport { useRouter, useSearchParams } from 'next/navigation'\nimport { LoadingMessage } from '@open-mercato/ui/backend/detail'\nimport { Page, PageBody } from '@open-mercato/ui/backend/Page'\nimport { CrudForm, type CrudField, type CrudFormGroup } from '@open-mercato/ui/backend/CrudForm'\nimport { apiCall } from '@open-mercato/ui/backend/utils/apiCall'\nimport { createCrud } from '@open-mercato/ui/backend/utils/crud'\nimport { createCrudFormError } from '@open-mercato/ui/backend/utils/serverErrors'\nimport { flash } from '@open-mercato/ui/backend/FlashMessages'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport {\n OrderSelectField,\n ReferencedStatementsField,\n actorRoleOptions,\n activityTypeOptions,\n commodityOptions,\n type OrderSnapshot,\n type ReferencedStatementValue,\n translateEudrCrudError,\n} from '../../../../components/formConfig'\nimport {\n buildDuplicateSeed,\n pickUnambiguousCommodity,\n resolveSeedingParams,\n type StatementSeedSource,\n} from '../../../../lib/statement-seeding'\n\ntype StatementFormValues = {\n title: string\n commodity: string\n activityType: string\n actorRole: string\n referenceNumber: string\n verificationNumber: string\n quantityKg: string\n supplementaryUnit: string\n supplementaryQuantity: string\n orderId: string\n orderSnapshot: OrderSnapshot | null\n referencedStatements: ReferencedStatementValue[]\n notes: string\n} & Record<string, unknown>\n\ntype StatementListResponse = {\n items?: StatementSeedSource[]\n}\n\ntype OrderListItem = {\n id?: string | null\n orderNumber?: string | null\n}\n\ntype OrderListResponse = {\n items?: OrderListItem[]\n}\n\ntype OrderLineItem = {\n product_id?: string | null\n}\n\ntype OrderLinesResponse = {\n items?: OrderLineItem[]\n totalPages?: number\n}\n\ntype ProductMappingItem = {\n commodity?: string | null\n isInScope?: boolean | null\n}\n\ntype ProductMappingsResponse = {\n items?: ProductMappingItem[]\n}\n\nconst SEEDING_REQUEST_INIT: RequestInit = {\n headers: {\n 'x-om-forbidden-redirect': '0',\n 'x-om-unauthorized-redirect': '0',\n },\n}\n\nconst ORDER_LINES_PAGE_SIZE = 100\nconst ORDER_LINES_PAGE_CAP = 3\n\nfunction createEmptyStatementValues(): StatementFormValues {\n return {\n title: '',\n commodity: '',\n activityType: '',\n actorRole: '',\n referenceNumber: '',\n verificationNumber: '',\n quantityKg: '',\n supplementaryUnit: '',\n supplementaryQuantity: '',\n orderId: '',\n orderSnapshot: null,\n referencedStatements: [],\n notes: '',\n }\n}\n\nasync function loadOrderCommodity(orderId: string): Promise<string | null> {\n const productIds = new Set<string>()\n let reachedLastPage = false\n\n try {\n for (let page = 1; page <= ORDER_LINES_PAGE_CAP; page += 1) {\n const call = await apiCall<OrderLinesResponse>(\n `/api/sales/order-lines?orderId=${encodeURIComponent(orderId)}&page=${page}&pageSize=${ORDER_LINES_PAGE_SIZE}`,\n SEEDING_REQUEST_INIT,\n { fallback: { items: [] } },\n )\n if (!call.ok) return null\n\n const items = Array.isArray(call.result?.items) ? call.result.items : []\n for (const item of items) {\n if (typeof item.product_id === 'string' && item.product_id.trim()) {\n productIds.add(item.product_id.trim())\n }\n }\n\n const totalPages = typeof call.result?.totalPages === 'number'\n && Number.isFinite(call.result.totalPages)\n ? Math.max(0, Math.floor(call.result.totalPages))\n : null\n if ((totalPages !== null && page >= totalPages) || items.length < ORDER_LINES_PAGE_SIZE) {\n reachedLastPage = true\n break\n }\n }\n\n if (!reachedLastPage || productIds.size === 0) return null\n const allProductIds = Array.from(productIds)\n const mappings: Array<{ commodity: string; isInScope: boolean }> = []\n for (let offset = 0; offset < allProductIds.length; offset += 100) {\n const chunk = allProductIds.slice(offset, offset + 100)\n const call = await apiCall<ProductMappingsResponse>(\n `/api/eudr/product-mappings?productId=${encodeURIComponent(chunk.join(','))}&pageSize=100`,\n SEEDING_REQUEST_INIT,\n { fallback: { items: [] } },\n )\n if (!call.ok) return null\n for (const item of (Array.isArray(call.result?.items) ? call.result.items : [])) {\n if (typeof item.commodity === 'string' && typeof item.isInScope === 'boolean') {\n mappings.push({ commodity: item.commodity, isInScope: item.isInScope })\n }\n }\n }\n return pickUnambiguousCommodity(mappings)\n } catch {\n return null\n }\n}\n\nfunction optionalText(value: unknown): string | null {\n if (typeof value !== 'string') return null\n const trimmed = value.trim()\n return trimmed.length ? trimmed : null\n}\n\nfunction optionalNumber(value: unknown, translate: ReturnType<typeof useT>): number | null {\n const text = optionalText(value)\n if (!text) return null\n const parsedNumber = Number(text)\n if (!Number.isFinite(parsedNumber)) {\n const message = translate('eudr.statements.form.quantityKgInvalid')\n throw createCrudFormError(message, { quantityKg: message })\n }\n return parsedNumber\n}\n\nfunction optionalSupplementaryNumber(value: unknown, translate: ReturnType<typeof useT>): number | null {\n const text = optionalText(value)\n if (!text) return null\n const parsedNumber = Number(text)\n if (!Number.isFinite(parsedNumber)) {\n const message = translate('eudr.statements.form.supplementaryQuantityInvalid')\n throw createCrudFormError(message, { supplementaryQuantity: message })\n }\n return parsedNumber\n}\n\nfunction isOrderSnapshot(value: unknown): value is OrderSnapshot {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nfunction normalizeReferencedStatements(value: unknown): ReferencedStatementValue[] {\n if (!Array.isArray(value)) return []\n return value\n .map((entry) => {\n if (entry === null || typeof entry !== 'object' || Array.isArray(entry)) return null\n const record = entry as Record<string, unknown>\n const referenceNumber = optionalText(record.referenceNumber)\n if (!referenceNumber) return null\n const verificationNumber = optionalText(record.verificationNumber)\n return verificationNumber ? { referenceNumber, verificationNumber } : { referenceNumber }\n })\n .filter((entry): entry is ReferencedStatementValue => entry !== null)\n}\n\nexport default function CreateEudrStatementPage() {\n const translate = useT()\n const router = useRouter()\n const searchParams = useSearchParams()\n const seedingParams = resolveSeedingParams(searchParams)\n const seedingMode = seedingParams.mode\n const seedingId = seedingMode === 'none' ? null : seedingParams.id\n const ignoredOrder = seedingMode === 'duplicate' && seedingParams.ignoredOrder === true\n const [initialValues, setInitialValues] = React.useState<StatementFormValues>(createEmptyStatementValues)\n const [seeding, setSeeding] = React.useState<boolean>(seedingMode !== 'none')\n\n React.useEffect(() => {\n let cancelled = false\n\n const flashUnavailable = () => {\n if (!cancelled) flash(translate('eudr.statements.prefillUnavailable'), 'info')\n }\n const flashIgnoredOrder = () => {\n if (!cancelled && ignoredOrder) {\n flash(translate('eudr.statements.prefillOrderIgnored'), 'info')\n }\n }\n\n async function seedForm() {\n setInitialValues(createEmptyStatementValues())\n if (!seedingId || seedingMode === 'none') return\n\n if (seedingMode === 'duplicate') {\n try {\n const call = await apiCall<StatementListResponse>(\n `/api/eudr/statements?id=${encodeURIComponent(seedingId)}`,\n SEEDING_REQUEST_INIT,\n { fallback: { items: [] } },\n )\n if (cancelled) return\n flashIgnoredOrder()\n const items = Array.isArray(call.result?.items) ? call.result.items : []\n const source = call.ok ? items.find((item) => item.id === seedingId) : null\n if (!source) {\n flashUnavailable()\n return\n }\n const seed = buildDuplicateSeed(source)\n const sourceTitle = typeof seed.title === 'string' ? seed.title : ''\n if (!sourceTitle.trim()) {\n flashUnavailable()\n return\n }\n setInitialValues({\n ...createEmptyStatementValues(),\n ...seed,\n title: translate(\n 'eudr.statements.duplicateTitle',\n '{title} (copy)',\n { title: sourceTitle },\n ),\n })\n } catch {\n flashIgnoredOrder()\n flashUnavailable()\n }\n return\n }\n\n try {\n const call = await apiCall<OrderListResponse>(\n `/api/sales/orders?id=${encodeURIComponent(seedingId)}`,\n SEEDING_REQUEST_INIT,\n { fallback: { items: [] } },\n )\n if (cancelled) return\n const items = Array.isArray(call.result?.items) ? call.result.items : []\n const source = call.ok ? items.find((item) => item.id === seedingId) : null\n const orderNumber = typeof source?.orderNumber === 'string' ? source.orderNumber.trim() : ''\n if (!source || !orderNumber) {\n flashUnavailable()\n return\n }\n const commodity = await loadOrderCommodity(seedingId)\n if (cancelled) return\n setInitialValues({\n ...createEmptyStatementValues(),\n title: translate(\n 'eudr.statements.titleFromOrder',\n 'DDS \u2014 {orderNumber}',\n { orderNumber },\n ),\n orderId: seedingId,\n orderSnapshot: { orderNumber },\n ...(commodity ? { commodity } : {}),\n })\n } catch {\n flashUnavailable()\n }\n }\n\n void seedForm().finally(() => {\n if (!cancelled) setSeeding(false)\n })\n return () => {\n cancelled = true\n }\n }, [ignoredOrder, seedingId, seedingMode, translate])\n\n const fields = React.useMemo<CrudField[]>(() => [\n {\n id: 'title',\n label: translate('eudr.statements.form.title'),\n type: 'text',\n required: true,\n },\n {\n id: 'commodity',\n layout: 'half',\n label: translate('eudr.statements.form.commodity'),\n type: 'select',\n required: true,\n options: commodityOptions(translate),\n },\n {\n id: 'activityType',\n layout: 'half',\n label: translate('eudr.statements.form.activityType'),\n type: 'select',\n options: activityTypeOptions(translate),\n },\n {\n id: 'actorRole',\n layout: 'half',\n label: translate('eudr.statements.form.actorRole'),\n type: 'select',\n options: actorRoleOptions(translate),\n },\n {\n id: 'referenceNumber',\n label: translate('eudr.statements.form.referenceNumber'),\n type: 'text',\n },\n {\n id: 'verificationNumber',\n label: translate('eudr.statements.form.verificationNumber'),\n type: 'text',\n },\n {\n id: 'quantityKg',\n layout: 'half',\n label: translate('eudr.statements.form.quantityKg'),\n type: 'text',\n },\n {\n id: 'supplementaryUnit',\n layout: 'half',\n label: translate('eudr.statements.form.supplementaryUnit'),\n type: 'text',\n },\n {\n id: 'supplementaryQuantity',\n layout: 'half',\n label: translate('eudr.statements.form.supplementaryQuantity'),\n type: 'text',\n },\n {\n id: 'orderId',\n label: translate('eudr.statements.form.order'),\n type: 'custom',\n component: ({ id, value, setValue, setFormValue }) => (\n <OrderSelectField\n id={id}\n value={typeof value === 'string' ? value : null}\n onChange={(nextValue) => setValue(nextValue ?? '')}\n onSnapshot={(snapshot) => setFormValue?.('orderSnapshot', snapshot)}\n placeholder={translate('eudr.statements.form.orderPlaceholder')}\n emptyLabel={translate('eudr.common.empty')}\n loadError={translate('eudr.statements.form.orderLoadError')}\n />\n ),\n },\n {\n id: 'referencedStatements',\n label: translate('eudr.statements.form.referencedStatements'),\n type: 'custom',\n component: ({ id, value, setValue, disabled }) => (\n <ReferencedStatementsField\n id={id}\n value={value}\n onChange={(nextValue) => setValue(nextValue)}\n disabled={disabled}\n />\n ),\n },\n {\n id: 'notes',\n label: translate('eudr.statements.form.notes'),\n type: 'textarea',\n },\n ], [translate])\n\n const groups = React.useMemo<CrudFormGroup[]>(() => [\n {\n id: 'details',\n title: translate('eudr.statements.form.details'),\n column: 1,\n fields: [\n 'title',\n 'commodity',\n 'activityType',\n 'actorRole',\n ],\n },\n {\n id: 'quantities',\n title: translate('eudr.statements.form.quantities'),\n column: 1,\n fields: [\n 'quantityKg',\n 'supplementaryUnit',\n 'supplementaryQuantity',\n ],\n },\n {\n id: 'referenced',\n title: translate('eudr.statements.form.referencedStatements'),\n column: 1,\n fields: [\n 'referencedStatements',\n ],\n },\n {\n id: 'registration',\n title: translate('eudr.statements.form.registration'),\n column: 2,\n fields: [\n 'referenceNumber',\n 'verificationNumber',\n ],\n },\n {\n id: 'order',\n title: translate('eudr.statements.form.order'),\n column: 2,\n fields: [\n 'orderId',\n ],\n },\n {\n id: 'notes',\n title: translate('eudr.common.notes'),\n column: 2,\n fields: [\n 'notes',\n ],\n },\n ], [translate])\n\n return (\n <Page>\n <PageBody>\n {seeding ? (\n <LoadingMessage label={translate('eudr.statements.create.title')} />\n ) : (\n <CrudForm<StatementFormValues>\n title={translate('eudr.statements.create.title')}\n backHref=\"/backend/eudr/statements\"\n cancelHref=\"/backend/eudr/statements\"\n submitLabel={translate('eudr.statements.form.submitCreate')}\n fields={fields}\n groups={groups}\n initialValues={initialValues}\n onSubmit={async (values) => {\n const title = optionalText(values.title)\n if (!title) {\n const message = translate('eudr.statements.form.titleRequired')\n throw createCrudFormError(message, { title: message })\n }\n const commodity = optionalText(values.commodity)\n if (!commodity) {\n const message = translate('eudr.statements.form.commodityRequired')\n throw createCrudFormError(message, { commodity: message })\n }\n await createCrud('eudr/statements', {\n title,\n commodity,\n referenceNumber: optionalText(values.referenceNumber),\n verificationNumber: optionalText(values.verificationNumber),\n status: 'draft',\n activityType: optionalText(values.activityType),\n actorRole: optionalText(values.actorRole),\n quantityKg: optionalNumber(values.quantityKg, translate),\n supplementaryUnit: optionalText(values.supplementaryUnit),\n supplementaryQuantity: optionalSupplementaryNumber(values.supplementaryQuantity, translate),\n orderId: optionalText(values.orderId),\n orderSnapshot: isOrderSnapshot(values.orderSnapshot) ? values.orderSnapshot : null,\n referencedStatements: normalizeReferencedStatements(values.referencedStatements),\n notes: optionalText(values.notes),\n }, {\n errorMessage: translate('eudr.statements.form.createError'),\n }).catch((err) => {\n throw translateEudrCrudError(err, translate)\n })\n flash(translate('eudr.statements.form.createSuccess'), 'success')\n router.push('/backend/eudr/statements')\n }}\n />\n )}\n </PageBody>\n </Page>\n )\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,17 @@
1
+ const metadata = {
2
+ requireAuth: true,
3
+ requireFeatures: ["eudr.statements.manage"],
4
+ pageTitle: "Create statement",
5
+ pageTitleKey: "eudr.statements.create.title",
6
+ pageGroup: "Compliance",
7
+ pageGroupKey: "eudr.nav.group",
8
+ navHidden: true,
9
+ breadcrumb: [
10
+ { label: "Statements", labelKey: "eudr.nav.statements", href: "/backend/eudr/statements" },
11
+ { label: "Create", labelKey: "eudr.statements.create.title" }
12
+ ]
13
+ };
14
+ export {
15
+ metadata
16
+ };
17
+ //# sourceMappingURL=page.meta.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/eudr/backend/eudr/statements/create/page.meta.ts"],
4
+ "sourcesContent": ["export const metadata = {\n requireAuth: true,\n requireFeatures: ['eudr.statements.manage'],\n pageTitle: 'Create statement',\n pageTitleKey: 'eudr.statements.create.title',\n pageGroup: 'Compliance',\n pageGroupKey: 'eudr.nav.group',\n navHidden: true,\n breadcrumb: [\n { label: 'Statements', labelKey: 'eudr.nav.statements', href: '/backend/eudr/statements' },\n { label: 'Create', labelKey: 'eudr.statements.create.title' },\n ],\n}\n"],
5
+ "mappings": "AAAO,MAAM,WAAW;AAAA,EACtB,aAAa;AAAA,EACb,iBAAiB,CAAC,wBAAwB;AAAA,EAC1C,WAAW;AAAA,EACX,cAAc;AAAA,EACd,WAAW;AAAA,EACX,cAAc;AAAA,EACd,WAAW;AAAA,EACX,YAAY;AAAA,IACV,EAAE,OAAO,cAAc,UAAU,uBAAuB,MAAM,2BAA2B;AAAA,IACzF,EAAE,OAAO,UAAU,UAAU,+BAA+B;AAAA,EAC9D;AACF;",
6
+ "names": []
7
+ }