@endora-commerce/mod-invoices 0.0.0-stage → 0.100.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +59 -2
  3. package/dist/admin/components/InvoiceSectionTabs.d.ts +22 -0
  4. package/dist/admin/components/InvoiceSectionTabs.d.ts.map +1 -0
  5. package/dist/admin/components/InvoiceSectionTabs.js +34 -0
  6. package/dist/admin/components/InvoiceSectionTabs.js.map +1 -0
  7. package/dist/admin/index.d.ts +34 -0
  8. package/dist/admin/index.d.ts.map +1 -0
  9. package/dist/admin/index.js +69 -0
  10. package/dist/admin/index.js.map +1 -0
  11. package/dist/admin/pages/InvoiceDetail.d.ts +10 -0
  12. package/dist/admin/pages/InvoiceDetail.d.ts.map +1 -0
  13. package/dist/admin/pages/InvoiceDetail.js +111 -0
  14. package/dist/admin/pages/InvoiceDetail.js.map +1 -0
  15. package/dist/admin/pages/InvoiceTemplateEditor.d.ts +11 -0
  16. package/dist/admin/pages/InvoiceTemplateEditor.d.ts.map +1 -0
  17. package/dist/admin/pages/InvoiceTemplateEditor.js +188 -0
  18. package/dist/admin/pages/InvoiceTemplateEditor.js.map +1 -0
  19. package/dist/admin/pages/InvoiceTemplatesPage.d.ts +10 -0
  20. package/dist/admin/pages/InvoiceTemplatesPage.d.ts.map +1 -0
  21. package/dist/admin/pages/InvoiceTemplatesPage.js +60 -0
  22. package/dist/admin/pages/InvoiceTemplatesPage.js.map +1 -0
  23. package/dist/admin/pages/InvoicesList.d.ts +9 -0
  24. package/dist/admin/pages/InvoicesList.d.ts.map +1 -0
  25. package/dist/admin/pages/InvoicesList.js +116 -0
  26. package/dist/admin/pages/InvoicesList.js.map +1 -0
  27. package/dist/admin/templates/described-blocks.d.ts +67 -0
  28. package/dist/admin/templates/described-blocks.d.ts.map +1 -0
  29. package/dist/admin/templates/described-blocks.js +83 -0
  30. package/dist/admin/templates/described-blocks.js.map +1 -0
  31. package/dist/admin/templates/invoice-builder-plugin.d.ts +4 -0
  32. package/dist/admin/templates/invoice-builder-plugin.d.ts.map +1 -0
  33. package/dist/admin/templates/invoice-builder-plugin.js +12 -0
  34. package/dist/admin/templates/invoice-builder-plugin.js.map +1 -0
  35. package/dist/admin/templates/invoice-puck-config.d.ts +37 -0
  36. package/dist/admin/templates/invoice-puck-config.d.ts.map +1 -0
  37. package/dist/admin/templates/invoice-puck-config.js +733 -0
  38. package/dist/admin/templates/invoice-puck-config.js.map +1 -0
  39. package/dist/backend/email-templates/invoice-issued.default.d.ts +10 -0
  40. package/dist/backend/email-templates/invoice-issued.default.d.ts.map +1 -0
  41. package/dist/backend/email-templates/invoice-issued.default.js +45 -0
  42. package/dist/backend/email-templates/invoice-issued.default.js.map +1 -0
  43. package/dist/backend/entities/invoice-external-attachment.entity.d.ts +20 -0
  44. package/dist/backend/entities/invoice-external-attachment.entity.d.ts.map +1 -0
  45. package/dist/backend/entities/invoice-external-attachment.entity.js +77 -0
  46. package/dist/backend/entities/invoice-external-attachment.entity.js.map +1 -0
  47. package/dist/backend/entities/invoice-line.entity.d.ts +20 -0
  48. package/dist/backend/entities/invoice-line.entity.d.ts.map +1 -0
  49. package/dist/backend/entities/invoice-line.entity.js +82 -0
  50. package/dist/backend/entities/invoice-line.entity.js.map +1 -0
  51. package/dist/backend/entities/invoice-number-counter.entity.d.ts +18 -0
  52. package/dist/backend/entities/invoice-number-counter.entity.d.ts.map +1 -0
  53. package/dist/backend/entities/invoice-number-counter.entity.js +63 -0
  54. package/dist/backend/entities/invoice-number-counter.entity.js.map +1 -0
  55. package/dist/backend/entities/invoice-template.entity.d.ts +22 -0
  56. package/dist/backend/entities/invoice-template.entity.d.ts.map +1 -0
  57. package/dist/backend/entities/invoice-template.entity.js +84 -0
  58. package/dist/backend/entities/invoice-template.entity.js.map +1 -0
  59. package/dist/backend/entities/invoice.entity.d.ts +64 -0
  60. package/dist/backend/entities/invoice.entity.d.ts.map +1 -0
  61. package/dist/backend/entities/invoice.entity.js +202 -0
  62. package/dist/backend/entities/invoice.entity.js.map +1 -0
  63. package/dist/backend/index.d.ts +111 -0
  64. package/dist/backend/index.d.ts.map +1 -0
  65. package/dist/backend/index.js +291 -0
  66. package/dist/backend/index.js.map +1 -0
  67. package/dist/backend/pdf-components/descriptor.d.ts +29 -0
  68. package/dist/backend/pdf-components/descriptor.d.ts.map +1 -0
  69. package/dist/backend/pdf-components/descriptor.js +227 -0
  70. package/dist/backend/pdf-components/descriptor.js.map +1 -0
  71. package/dist/backend/pdf-components/embed-logo-images.d.ts +35 -0
  72. package/dist/backend/pdf-components/embed-logo-images.d.ts.map +1 -0
  73. package/dist/backend/pdf-components/embed-logo-images.js +101 -0
  74. package/dist/backend/pdf-components/embed-logo-images.js.map +1 -0
  75. package/dist/backend/pdf-components/sample.d.ts +4 -0
  76. package/dist/backend/pdf-components/sample.d.ts.map +1 -0
  77. package/dist/backend/pdf-components/sample.js +75 -0
  78. package/dist/backend/pdf-components/sample.js.map +1 -0
  79. package/dist/backend/pdf-components/sections.d.ts +34 -0
  80. package/dist/backend/pdf-components/sections.d.ts.map +1 -0
  81. package/dist/backend/pdf-components/sections.js +445 -0
  82. package/dist/backend/pdf-components/sections.js.map +1 -0
  83. package/dist/backend/pdf-components/tree-mapper.d.ts +37 -0
  84. package/dist/backend/pdf-components/tree-mapper.d.ts.map +1 -0
  85. package/dist/backend/pdf-components/tree-mapper.js +76 -0
  86. package/dist/backend/pdf-components/tree-mapper.js.map +1 -0
  87. package/dist/backend/plugin.d.ts +124 -0
  88. package/dist/backend/plugin.d.ts.map +1 -0
  89. package/dist/backend/plugin.js +87 -0
  90. package/dist/backend/plugin.js.map +1 -0
  91. package/dist/backend/routes.admin.d.ts +41 -0
  92. package/dist/backend/routes.admin.d.ts.map +1 -0
  93. package/dist/backend/routes.admin.js +219 -0
  94. package/dist/backend/routes.admin.js.map +1 -0
  95. package/dist/backend/routes.customer.d.ts +33 -0
  96. package/dist/backend/routes.customer.d.ts.map +1 -0
  97. package/dist/backend/routes.customer.js +124 -0
  98. package/dist/backend/routes.customer.js.map +1 -0
  99. package/dist/backend/seeds/generic-invoice-template.d.ts +18 -0
  100. package/dist/backend/seeds/generic-invoice-template.d.ts.map +1 -0
  101. package/dist/backend/seeds/generic-invoice-template.js +174 -0
  102. package/dist/backend/seeds/generic-invoice-template.js.map +1 -0
  103. package/dist/backend/services/amount-to-words.d.ts +20 -0
  104. package/dist/backend/services/amount-to-words.d.ts.map +1 -0
  105. package/dist/backend/services/amount-to-words.js +232 -0
  106. package/dist/backend/services/amount-to-words.js.map +1 -0
  107. package/dist/backend/services/auto-issue-reactor.d.ts +53 -0
  108. package/dist/backend/services/auto-issue-reactor.d.ts.map +1 -0
  109. package/dist/backend/services/auto-issue-reactor.js +122 -0
  110. package/dist/backend/services/auto-issue-reactor.js.map +1 -0
  111. package/dist/backend/services/corrective-invoice.d.ts +38 -0
  112. package/dist/backend/services/corrective-invoice.d.ts.map +1 -0
  113. package/dist/backend/services/corrective-invoice.js +257 -0
  114. package/dist/backend/services/corrective-invoice.js.map +1 -0
  115. package/dist/backend/services/cross-module-context.d.ts +82 -0
  116. package/dist/backend/services/cross-module-context.d.ts.map +1 -0
  117. package/dist/backend/services/cross-module-context.js +93 -0
  118. package/dist/backend/services/cross-module-context.js.map +1 -0
  119. package/dist/backend/services/duplicate-number-refusal.d.ts +33 -0
  120. package/dist/backend/services/duplicate-number-refusal.d.ts.map +1 -0
  121. package/dist/backend/services/duplicate-number-refusal.js +92 -0
  122. package/dist/backend/services/duplicate-number-refusal.js.map +1 -0
  123. package/dist/backend/services/erp-sale-document-write-port.d.ts +37 -0
  124. package/dist/backend/services/erp-sale-document-write-port.d.ts.map +1 -0
  125. package/dist/backend/services/erp-sale-document-write-port.js +192 -0
  126. package/dist/backend/services/erp-sale-document-write-port.js.map +1 -0
  127. package/dist/backend/services/invoice-attachment-fetch-registry.d.ts +75 -0
  128. package/dist/backend/services/invoice-attachment-fetch-registry.d.ts.map +1 -0
  129. package/dist/backend/services/invoice-attachment-fetch-registry.js +81 -0
  130. package/dist/backend/services/invoice-attachment-fetch-registry.js.map +1 -0
  131. package/dist/backend/services/invoice-copy-host.service.d.ts +9 -0
  132. package/dist/backend/services/invoice-copy-host.service.d.ts.map +1 -0
  133. package/dist/backend/services/invoice-copy-host.service.js +52 -0
  134. package/dist/backend/services/invoice-copy-host.service.js.map +1 -0
  135. package/dist/backend/services/invoice-email-dispatch.d.ts +89 -0
  136. package/dist/backend/services/invoice-email-dispatch.d.ts.map +1 -0
  137. package/dist/backend/services/invoice-email-dispatch.js +138 -0
  138. package/dist/backend/services/invoice-email-dispatch.js.map +1 -0
  139. package/dist/backend/services/invoice-line-builder.d.ts +29 -0
  140. package/dist/backend/services/invoice-line-builder.d.ts.map +1 -0
  141. package/dist/backend/services/invoice-line-builder.js +46 -0
  142. package/dist/backend/services/invoice-line-builder.js.map +1 -0
  143. package/dist/backend/services/invoice-number-collisions.d.ts +17 -0
  144. package/dist/backend/services/invoice-number-collisions.d.ts.map +1 -0
  145. package/dist/backend/services/invoice-number-collisions.js +154 -0
  146. package/dist/backend/services/invoice-number-collisions.js.map +1 -0
  147. package/dist/backend/services/invoice-number-generator.d.ts +96 -0
  148. package/dist/backend/services/invoice-number-generator.d.ts.map +1 -0
  149. package/dist/backend/services/invoice-number-generator.js +157 -0
  150. package/dist/backend/services/invoice-number-generator.js.map +1 -0
  151. package/dist/backend/services/invoice-pdf-block-registry.d.ts +65 -0
  152. package/dist/backend/services/invoice-pdf-block-registry.d.ts.map +1 -0
  153. package/dist/backend/services/invoice-pdf-block-registry.js +94 -0
  154. package/dist/backend/services/invoice-pdf-block-registry.js.map +1 -0
  155. package/dist/backend/services/invoice-pdf-renderer.d.ts +57 -0
  156. package/dist/backend/services/invoice-pdf-renderer.d.ts.map +1 -0
  157. package/dist/backend/services/invoice-pdf-renderer.js +158 -0
  158. package/dist/backend/services/invoice-pdf-renderer.js.map +1 -0
  159. package/dist/backend/services/invoice-pdf.d.ts +24 -0
  160. package/dist/backend/services/invoice-pdf.d.ts.map +1 -0
  161. package/dist/backend/services/invoice-pdf.js +52 -0
  162. package/dist/backend/services/invoice-pdf.js.map +1 -0
  163. package/dist/backend/services/invoice-placement-apply-port.d.ts +29 -0
  164. package/dist/backend/services/invoice-placement-apply-port.d.ts.map +1 -0
  165. package/dist/backend/services/invoice-placement-apply-port.js +40 -0
  166. package/dist/backend/services/invoice-placement-apply-port.js.map +1 -0
  167. package/dist/backend/services/invoice-read-port.d.ts +44 -0
  168. package/dist/backend/services/invoice-read-port.d.ts.map +1 -0
  169. package/dist/backend/services/invoice-read-port.js +95 -0
  170. package/dist/backend/services/invoice-read-port.js.map +1 -0
  171. package/dist/backend/services/invoice-service.d.ts +94 -0
  172. package/dist/backend/services/invoice-service.d.ts.map +1 -0
  173. package/dist/backend/services/invoice-service.js +374 -0
  174. package/dist/backend/services/invoice-service.js.map +1 -0
  175. package/dist/backend/services/invoice-template-service.d.ts +43 -0
  176. package/dist/backend/services/invoice-template-service.d.ts.map +1 -0
  177. package/dist/backend/services/invoice-template-service.js +147 -0
  178. package/dist/backend/services/invoice-template-service.js.map +1 -0
  179. package/dist/backend/services/numbering-configuration.d.ts +76 -0
  180. package/dist/backend/services/numbering-configuration.d.ts.map +1 -0
  181. package/dist/backend/services/numbering-configuration.js +176 -0
  182. package/dist/backend/services/numbering-configuration.js.map +1 -0
  183. package/dist/backend/services/numbering-write-validator.d.ts +22 -0
  184. package/dist/backend/services/numbering-write-validator.d.ts.map +1 -0
  185. package/dist/backend/services/numbering-write-validator.js +82 -0
  186. package/dist/backend/services/numbering-write-validator.js.map +1 -0
  187. package/dist/backend/services/seller-settings.d.ts +24 -0
  188. package/dist/backend/services/seller-settings.d.ts.map +1 -0
  189. package/dist/backend/services/seller-settings.js +38 -0
  190. package/dist/backend/services/seller-settings.js.map +1 -0
  191. package/dist/backend/services/vendor-number-hold.d.ts +10 -0
  192. package/dist/backend/services/vendor-number-hold.d.ts.map +1 -0
  193. package/dist/backend/services/vendor-number-hold.js +14 -0
  194. package/dist/backend/services/vendor-number-hold.js.map +1 -0
  195. package/dist/manifest.d.ts +203 -0
  196. package/dist/manifest.d.ts.map +1 -0
  197. package/dist/manifest.js +390 -0
  198. package/dist/manifest.js.map +1 -0
  199. package/dist/migrations/20260629T125121_invoices_module.d.ts +17 -0
  200. package/dist/migrations/20260629T125121_invoices_module.d.ts.map +1 -0
  201. package/dist/migrations/20260629T125121_invoices_module.js +117 -0
  202. package/dist/migrations/20260629T125121_invoices_module.js.map +1 -0
  203. package/dist/migrations/20260801T111000_invoices_generic_template_reseed.d.ts +6 -0
  204. package/dist/migrations/20260801T111000_invoices_generic_template_reseed.d.ts.map +1 -0
  205. package/dist/migrations/20260801T111000_invoices_generic_template_reseed.js +25 -0
  206. package/dist/migrations/20260801T111000_invoices_generic_template_reseed.js.map +1 -0
  207. package/dist/migrations/20260817T201110_invoices_correction_idempotency_key.d.ts +20 -0
  208. package/dist/migrations/20260817T201110_invoices_correction_idempotency_key.d.ts.map +1 -0
  209. package/dist/migrations/20260817T201110_invoices_correction_idempotency_key.js +33 -0
  210. package/dist/migrations/20260817T201110_invoices_correction_idempotency_key.js.map +1 -0
  211. package/dist/migrations/20260903T101756_invoices_namespace_block_names.d.ts +6 -0
  212. package/dist/migrations/20260903T101756_invoices_namespace_block_names.d.ts.map +1 -0
  213. package/dist/migrations/20260903T101756_invoices_namespace_block_names.js +56 -0
  214. package/dist/migrations/20260903T101756_invoices_namespace_block_names.js.map +1 -0
  215. package/dist/migrations/20260914T133603_invoices_erp_imported_sale_documents.d.ts +12 -0
  216. package/dist/migrations/20260914T133603_invoices_erp_imported_sale_documents.d.ts.map +1 -0
  217. package/dist/migrations/20260914T133603_invoices_erp_imported_sale_documents.js +87 -0
  218. package/dist/migrations/20260914T133603_invoices_erp_imported_sale_documents.js.map +1 -0
  219. package/dist/migrations/20260926T230239_invoices_import_identity.d.ts +33 -0
  220. package/dist/migrations/20260926T230239_invoices_import_identity.d.ts.map +1 -0
  221. package/dist/migrations/20260926T230239_invoices_import_identity.js +83 -0
  222. package/dist/migrations/20260926T230239_invoices_import_identity.js.map +1 -0
  223. package/dist/migrations/index.d.ts +32 -0
  224. package/dist/migrations/index.d.ts.map +1 -0
  225. package/dist/migrations/index.js +39 -0
  226. package/dist/migrations/index.js.map +1 -0
  227. package/dist/ports/index.d.ts +93 -0
  228. package/dist/ports/index.d.ts.map +1 -0
  229. package/dist/ports/index.js +2 -0
  230. package/dist/ports/index.js.map +1 -0
  231. package/docs/invoices.md +113 -0
  232. package/i18n/en.json +45 -0
  233. package/i18n/pl.json +45 -0
  234. package/package.json +119 -3
  235. package/tailwind.css +14 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvoiceTemplateEditor.js","sourceRoot":"","sources":["../../../src/admin/pages/InvoiceTemplateEditor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type ReactNode } from 'react';
2
+ /** Admin invoice templates list + create (feature 047, US6). */
3
+ export declare function InvoiceTemplatesPage(): ReactNode;
4
+ /**
5
+ * The registry loads a route component through a dynamic-import factory and
6
+ * reads its default export (feature 091, FR-013). The named export stays: it is
7
+ * the spelling this module's own code and its tests use.
8
+ */
9
+ export default InvoiceTemplatesPage;
10
+ //# sourceMappingURL=InvoiceTemplatesPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvoiceTemplatesPage.d.ts","sourceRoot":"","sources":["../../../src/admin/pages/InvoiceTemplatesPage.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAiBzE,gEAAgE;AAChE,wBAAgB,oBAAoB,IAAI,SAAS,CA4HhD;AAED;;;;GAIG;AACH,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useState } from 'react';
3
+ import { Link } from 'react-router-dom';
4
+ import { ApiError, apiClient } from '@endora-commerce/admin-kit/lib';
5
+ import { Alert, AlertDescription, Badge, Button, Card, CardContent, Input, Label, PageHeader, Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@endora-commerce/admin-kit/ui';
6
+ import { SalesChannelPicker } from '@endora-commerce/admin-kit/components';
7
+ import { InvoiceSectionTabs } from '../components/InvoiceSectionTabs.js';
8
+ import { useTranslation } from '@endora-commerce/admin-kit/i18n';
9
+ /** Admin invoice templates list + create (feature 047, US6). */
10
+ export function InvoiceTemplatesPage() {
11
+ const t = useTranslation('core');
12
+ const [rows, setRows] = useState([]);
13
+ const [loading, setLoading] = useState(true);
14
+ const [error, setError] = useState(null);
15
+ const [code, setCode] = useState('');
16
+ const [name, setName] = useState('');
17
+ const [channelId, setChannelId] = useState('');
18
+ const refresh = useCallback(async () => {
19
+ setLoading(true);
20
+ setError(null);
21
+ try {
22
+ const res = await apiClient.get('/api/v1/admin/invoice-templates');
23
+ setRows(res.data);
24
+ }
25
+ catch (err) {
26
+ setError(err instanceof ApiError ? err.envelope.error.message : 'Failed to load.');
27
+ }
28
+ finally {
29
+ setLoading(false);
30
+ }
31
+ }, []);
32
+ useEffect(() => {
33
+ void refresh();
34
+ }, [refresh]);
35
+ const create = useCallback(async () => {
36
+ setError(null);
37
+ try {
38
+ await apiClient.post('/api/v1/admin/invoice-templates', {
39
+ code,
40
+ name,
41
+ salesChannelId: channelId.trim() ? channelId.trim() : null,
42
+ });
43
+ setCode('');
44
+ setName('');
45
+ setChannelId('');
46
+ await refresh();
47
+ }
48
+ catch (err) {
49
+ setError(err instanceof ApiError ? err.envelope.error.message : 'Failed to create.');
50
+ }
51
+ }, [code, name, channelId, refresh]);
52
+ return (_jsxs(_Fragment, { children: [_jsx(PageHeader, { title: t('invoiceTemplates.title'), description: t('invoiceTemplates.description') }), _jsx(InvoiceSectionTabs, {}), error ? (_jsx(Alert, { variant: "destructive", className: "mb-4", children: _jsx(AlertDescription, { children: error }) })) : null, _jsx(Card, { className: "mb-4", children: _jsxs(CardContent, { className: "grid gap-3 pt-6 md:grid-cols-4", children: [_jsxs("div", { className: "space-y-1", children: [_jsx(Label, { htmlFor: "tcode", children: t('invoiceTemplates.fields.code') }), _jsx(Input, { id: "tcode", value: code, onChange: (e) => setCode(e.target.value) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx(Label, { htmlFor: "tname", children: t('invoiceTemplates.fields.name') }), _jsx(Input, { id: "tname", value: name, onChange: (e) => setName(e.target.value) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx(Label, { htmlFor: "tchan", children: t('invoiceTemplates.fields.channel') }), _jsx(SalesChannelPicker, { id: "tchan", value: channelId.trim() ? channelId : null, onChange: (id) => setChannelId(id ?? ''), placeholder: t('invoiceTemplates.fields.channelHint'), clearable: true })] }), _jsx("div", { className: "flex items-end", children: _jsx(Button, { onClick: () => void create(), disabled: !code || !name, children: t('invoiceTemplates.create') }) })] }) }), _jsx(Card, { children: _jsx(CardContent, { className: "pt-6", children: loading ? (_jsx("p", { className: "text-sm text-muted-foreground", children: t('common.state.loading') })) : (_jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: t('invoiceTemplates.columns.name') }), _jsx(TableHead, { children: t('invoiceTemplates.columns.scope') }), _jsx(TableHead, { children: t('invoiceTemplates.columns.active') }), _jsx(TableHead, {})] }) }), _jsx(TableBody, { children: rows.map((r) => (_jsxs(TableRow, { children: [_jsxs(TableCell, { className: "font-medium", children: [r.name, r.isSystem ? _jsx(Badge, { className: "ml-2", variant: "secondary", children: "system" }) : null] }), _jsx(TableCell, { className: "font-mono text-xs", children: r.salesChannelId ? r.salesChannelId.slice(0, 8) : t('invoiceTemplates.global') }), _jsx(TableCell, { children: r.active ? _jsx(Badge, { variant: "success", children: t('invoiceTemplates.active') }) : null }), _jsx(TableCell, { children: _jsx(Button, { asChild: true, variant: "outline", size: "sm", children: _jsx(Link, { to: `/invoices/templates/${r.id}`, children: t('common.action.edit') }) }) })] }, r.id))) })] })) }) })] }));
53
+ }
54
+ /**
55
+ * The registry loads a route component through a dynamic-import factory and
56
+ * reads its default export (feature 091, FR-013). The named export stays: it is
57
+ * the spelling this module's own code and its tests use.
58
+ */
59
+ export default InvoiceTemplatesPage;
60
+ //# sourceMappingURL=InvoiceTemplatesPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvoiceTemplatesPage.js","sourceRoot":"","sources":["../../../src/admin/pages/InvoiceTemplatesPage.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type ReactNode } from 'react';
2
+ export declare function InvoicesList(): ReactNode;
3
+ /**
4
+ * The registry loads a route component through a dynamic-import factory and
5
+ * reads its default export (feature 091, FR-013). The named export stays: it is
6
+ * the spelling this module's own code and its tests use.
7
+ */
8
+ export default InvoicesList;
9
+ //# sourceMappingURL=InvoicesList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvoicesList.d.ts","sourceRoot":"","sources":["../../../src/admin/pages/InvoicesList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AA8BzE,wBAAgB,YAAY,IAAI,SAAS,CA0RxC;AAED;;;;GAIG;AACH,eAAe,YAAY,CAAC"}
@@ -0,0 +1,116 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useState } from 'react';
3
+ import { Link } from 'react-router-dom';
4
+ import { FileDown, Mail } from 'lucide-react';
5
+ import { apiBaseUrl, apiClient, ApiError, formatDateTime, formatMoney, sendInvoiceEmailMessage } from '@endora-commerce/admin-kit/lib';
6
+ import { Alert, AlertDescription, Badge, Button, Card, CardContent, Input, Label, PageHeader, Select, Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@endora-commerce/admin-kit/ui';
7
+ import { InvoiceSectionTabs } from '../components/InvoiceSectionTabs.js';
8
+ import { useTranslation } from '@endora-commerce/admin-kit/i18n';
9
+ const STATUSES = ['pending', 'ready', 'cancelled'];
10
+ const KINDS = ['proforma', 'invoice', 'correction'];
11
+ const STATUS_VARIANT = {
12
+ pending: 'warning',
13
+ ready: 'success',
14
+ cancelled: 'destructive',
15
+ };
16
+ export function InvoicesList() {
17
+ const t = useTranslation('core');
18
+ const [rows, setRows] = useState([]);
19
+ const [loading, setLoading] = useState(true);
20
+ const [error, setError] = useState(null);
21
+ const [notice, setNotice] = useState(null);
22
+ const [status, setStatus] = useState('');
23
+ const [kind, setKind] = useState('');
24
+ const [orderNumber, setOrderNumber] = useState('');
25
+ const [issuedFrom, setIssuedFrom] = useState('');
26
+ const [issuedTo, setIssuedTo] = useState('');
27
+ const [totalMin, setTotalMin] = useState('');
28
+ const [totalMax, setTotalMax] = useState('');
29
+ const hasFilters = status !== '' ||
30
+ kind !== '' ||
31
+ orderNumber.trim() !== '' ||
32
+ issuedFrom !== '' ||
33
+ issuedTo !== '' ||
34
+ totalMin !== '' ||
35
+ totalMax !== '';
36
+ const clearFilters = useCallback(() => {
37
+ setStatus('');
38
+ setKind('');
39
+ setOrderNumber('');
40
+ setIssuedFrom('');
41
+ setIssuedTo('');
42
+ setTotalMin('');
43
+ setTotalMax('');
44
+ }, []);
45
+ const refresh = useCallback(async () => {
46
+ setLoading(true);
47
+ setError(null);
48
+ try {
49
+ const params = new URLSearchParams();
50
+ if (status)
51
+ params.set('filter[status]', status);
52
+ if (kind)
53
+ params.set('filter[kind]', kind);
54
+ if (orderNumber.trim())
55
+ params.set('filter[orderNumber]', orderNumber.trim());
56
+ if (issuedFrom)
57
+ params.set('filter[issuedFrom]', `${issuedFrom}T00:00:00.000Z`);
58
+ if (issuedTo)
59
+ params.set('filter[issuedTo]', `${issuedTo}T23:59:59.999Z`);
60
+ if (totalMin.trim())
61
+ params.set('filter[totalMin]', totalMin.trim());
62
+ if (totalMax.trim())
63
+ params.set('filter[totalMax]', totalMax.trim());
64
+ const path = '/api/v1/admin/invoices' + (params.toString() ? `?${params.toString()}` : '');
65
+ const res = await apiClient.get(path);
66
+ setRows(res.data);
67
+ }
68
+ catch (err) {
69
+ setError(err instanceof ApiError ? err.envelope.error.message : 'Failed to load.');
70
+ }
71
+ finally {
72
+ setLoading(false);
73
+ }
74
+ }, [status, kind, orderNumber, issuedFrom, issuedTo, totalMin, totalMax]);
75
+ // Debounced so typing in the order-number / total inputs doesn't refetch
76
+ // on every keystroke.
77
+ useEffect(() => {
78
+ const id = setTimeout(() => void refresh(), 300);
79
+ return () => clearTimeout(id);
80
+ }, [refresh]);
81
+ /**
82
+ * `apiBaseUrl` and not `import.meta.env`: this file compiles under `tsc`
83
+ * inside its own package, where Vite's client types are not in scope, and the
84
+ * kit publishes the resolved value for exactly this (feature 091). The
85
+ * fallback moves with it — this read defaulted to `''` while the `apiClient`
86
+ * beside it has always defaulted to `http://localhost:3001`, so the download
87
+ * href now points where the fetch that lists it already went.
88
+ */
89
+ const baseUrl = apiBaseUrl;
90
+ const resendEmail = useCallback(async (invoiceId) => {
91
+ setError(null);
92
+ setNotice(null);
93
+ try {
94
+ const res = await apiClient.post(`/api/v1/admin/invoices/${invoiceId}/send-email`, {});
95
+ // Issue #149 — the route has named the reason since #103; announcing
96
+ // "sent" over an answer that says otherwise is the same defect the
97
+ // issue route had, on the surface next door.
98
+ const outcome = sendInvoiceEmailMessage(res.data, t);
99
+ if (outcome.ok)
100
+ setNotice(outcome.message);
101
+ else
102
+ setError(outcome.message);
103
+ }
104
+ catch (err) {
105
+ setError(err instanceof ApiError ? err.envelope.error.message : 'Failed to send.');
106
+ }
107
+ }, [t]);
108
+ return (_jsxs(_Fragment, { children: [_jsx(PageHeader, { title: t('invoices.title'), description: t('invoices.description') }), _jsx(InvoiceSectionTabs, {}), error ? (_jsx(Alert, { variant: "destructive", className: "mb-4", children: _jsx(AlertDescription, { children: error }) })) : null, notice ? (_jsx(Alert, { className: "mb-4", children: _jsx(AlertDescription, { children: notice }) })) : null, _jsx(Card, { className: "mb-4", children: _jsx(CardContent, { className: "pt-6", children: _jsxs("div", { className: "grid gap-4 md:grid-cols-3 lg:grid-cols-4", children: [_jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "iorder", children: t('invoices.fields.orderNumber') }), _jsx(Input, { id: "iorder", value: orderNumber, onChange: (e) => setOrderNumber(e.target.value), placeholder: t('invoices.filters.orderNumberPlaceholder') })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "ikind", children: t('invoices.fields.kind') }), _jsxs(Select, { id: "ikind", value: kind, onChange: (e) => setKind(e.target.value), children: [_jsx("option", { value: "", children: t('invoices.kind.all') }), KINDS.map((k) => (_jsx("option", { value: k, children: t(`invoices.kind.${k}`) }, k)))] })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "istatus", children: t('invoices.fields.status') }), _jsxs(Select, { id: "istatus", value: status, onChange: (e) => setStatus(e.target.value), children: [_jsx("option", { value: "", children: t('invoices.status.all') }), STATUSES.map((s) => (_jsx("option", { value: s, children: t(`invoices.status.${s}`) }, s)))] })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "ifrom", children: t('invoices.fields.issuedFrom') }), _jsx(Input, { id: "ifrom", type: "date", value: issuedFrom, onChange: (e) => setIssuedFrom(e.target.value) })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "ito", children: t('invoices.fields.issuedTo') }), _jsx(Input, { id: "ito", type: "date", value: issuedTo, onChange: (e) => setIssuedTo(e.target.value) })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "itmin", children: t('invoices.fields.totalMin') }), _jsx(Input, { id: "itmin", type: "number", step: "0.01", min: "0", value: totalMin, onChange: (e) => setTotalMin(e.target.value) })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "itmax", children: t('invoices.fields.totalMax') }), _jsx(Input, { id: "itmax", type: "number", step: "0.01", min: "0", value: totalMax, onChange: (e) => setTotalMax(e.target.value) })] }), _jsx("div", { className: "flex items-end", children: _jsx(Button, { type: "button", variant: "outline", disabled: !hasFilters, onClick: clearFilters, children: t('invoices.filters.clear') }) })] }) }) }), _jsx(Card, { children: _jsx(CardContent, { className: "pt-6", children: loading ? (_jsx("p", { className: "text-sm text-muted-foreground", children: t('common.state.loading') })) : rows.length === 0 ? (_jsx("p", { className: "text-sm text-muted-foreground", children: t('invoices.empty') })) : (_jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: t('invoices.columns.number') }), _jsx(TableHead, { children: t('invoices.columns.kind') }), _jsx(TableHead, { children: t('invoices.columns.issued') }), _jsx(TableHead, { children: t('invoices.columns.order') }), _jsx(TableHead, { children: t('invoices.columns.total') }), _jsx(TableHead, { children: t('invoices.columns.status') }), _jsx(TableHead, {})] }) }), _jsx(TableBody, { children: rows.map((i) => (_jsxs(TableRow, { children: [_jsx(TableCell, { className: "font-medium", children: _jsx(Link, { to: `/invoices/${i.id}`, className: "underline underline-offset-2", children: i.number }) }), _jsx(TableCell, { children: t(`invoices.kind.${i.kind}`) }), _jsx(TableCell, { children: formatDateTime(i.issuedAt) }), _jsx(TableCell, { children: _jsx(Link, { to: `/orders/${i.orderId}`, className: "font-mono text-xs underline underline-offset-2", children: i.orderBusinessId ?? i.orderId.slice(0, 8) }) }), _jsx(TableCell, { className: "tabular-nums", children: formatMoney(i.total, i.currency) }), _jsx(TableCell, { children: _jsx(Badge, { variant: STATUS_VARIANT[i.status], children: t(`invoices.status.${i.status}`) }) }), _jsx(TableCell, { children: _jsxs("div", { className: "flex items-center gap-2", children: [i.pdfReady ? (_jsx(Button, { asChild: true, variant: "outline", size: "sm", children: _jsxs("a", { href: `${baseUrl}/api/v1/admin/invoices/${i.id}/pdf`, target: "_blank", rel: "noreferrer", children: [_jsx(FileDown, {}), "PDF"] }) })) : (_jsx("span", { className: "text-xs text-muted-foreground", children: t('invoices.pdfNotReady') })), _jsx(Button, { variant: "ghost", size: "sm", onClick: () => void resendEmail(i.id), title: t('invoices.resendEmail'), children: _jsx(Mail, {}) })] }) })] }, i.id))) })] })) }) })] }));
109
+ }
110
+ /**
111
+ * The registry loads a route component through a dynamic-import factory and
112
+ * reads its default export (feature 091, FR-013). The named export stays: it is
113
+ * the spelling this module's own code and its tests use.
114
+ */
115
+ export default InvoicesList;
116
+ //# sourceMappingURL=InvoicesList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvoicesList.js","sourceRoot":"","sources":["../../../src/admin/pages/InvoicesList.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import type { Config } from '@measured/puck';
2
+ import type { InvoiceTemplateBlockField } from '@endora-commerce/contracts';
3
+ /**
4
+ * The invoice editor's view of blocks it has no React binding for —
5
+ * `specs/134-paid-module-extraction/` T138 (`research.md` D22 §3(b)).
6
+ *
7
+ * `invoicePuckConfig` binds this module's own ten blocks. A block another
8
+ * module declares reaches the editor as **data**: the served descriptor
9
+ * (`GET /api/v1/admin/invoice-templates/page-builder/config`) lists every
10
+ * present contributor's block with its label and fields, and this merge turns
11
+ * each one the local map does not bind into a config Puck can insert and
12
+ * configure. Its canvas render is a neutral stand-in; the *Preview PDF* button
13
+ * renders it for real, server-side, through the contributor's registration.
14
+ *
15
+ * **This is not a contribution kind (α).** No module hands this editor React;
16
+ * the keys come from the descriptor at runtime, so this module's admin names no
17
+ * other module's block. The shape is the CMS editor's `mergeConfig` and
18
+ * FR-019's degradation merge, applied to this surface.
19
+ *
20
+ * **A stored name nothing covers** — its module off, not installed, or a name
21
+ * nobody recognises (`specs/096-page-builder-block-ownership/` FR-019, FR-020,
22
+ * identical for all three) — gets a visible, data-preserving placeholder that
23
+ * is **not** in the palette: it stays where it is, and nobody may insert it.
24
+ * It is built here rather than taken from `@endora-commerce/cms-components`,
25
+ * whose placeholder speaks about storefront builds and would bring that
26
+ * package's peers into this module.
27
+ *
28
+ * Strings arrive through `text` so they are translated by the caller, and both
29
+ * are statements of fact on the surface where the block sits (D-265): no link,
30
+ * no action, and a palette that only ever lists present contributors.
31
+ */
32
+ /** One block as the served descriptor describes it. */
33
+ export interface InvoiceBuilderDescriptorEntry {
34
+ readonly name: string;
35
+ readonly ownerModule: string;
36
+ readonly label: string;
37
+ readonly fields: Readonly<Record<string, InvoiceTemplateBlockField>>;
38
+ }
39
+ /** The served descriptor, as the editor reads it. */
40
+ export interface InvoiceBuilderDescriptor {
41
+ readonly components: readonly InvoiceBuilderDescriptorEntry[];
42
+ }
43
+ /** The two sentences this merge renders, already translated. */
44
+ export interface DescribedBlockText {
45
+ /** A present contributor's block on the canvas. */
46
+ standIn(input: {
47
+ readonly label: string;
48
+ readonly owner: string;
49
+ }): string;
50
+ /** A stored block nothing covers; `owner` is `null` for a name that states none. */
51
+ placeholder(input: {
52
+ readonly owner: string | null;
53
+ readonly name: string;
54
+ }): string;
55
+ }
56
+ /** The one palette section this editor has. */
57
+ export declare const INVOICE_PALETTE_CATEGORY = "invoice";
58
+ /**
59
+ * `config` plus every present contributor's described block (insertable, in
60
+ * the invoice category) and a placeholder for every stored name neither covers
61
+ * (not in any category). `descriptor` is `null` when it could not be fetched:
62
+ * nothing is then described, and every stored unknown name is kept.
63
+ *
64
+ * Entries the local map already binds are left exactly as they are.
65
+ */
66
+ export declare function withDescribedInvoiceBlocks(config: Config, descriptor: InvoiceBuilderDescriptor | null, storedNames: Iterable<string>, text: DescribedBlockText): Config;
67
+ //# sourceMappingURL=described-blocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"described-blocks.d.ts","sourceRoot":"","sources":["../../../src/admin/templates/described-blocks.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAmB,MAAM,EAAS,MAAM,gBAAgB,CAAC;AACrE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAG5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,uDAAuD;AACvD,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAC;CACtE;AAED,qDAAqD;AACrD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,UAAU,EAAE,SAAS,6BAA6B,EAAE,CAAC;CAC/D;AAED,gEAAgE;AAChE,MAAM,WAAW,kBAAkB;IACjC,mDAAmD;IACnD,OAAO,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;IAC3E,oFAAoF;IACpF,WAAW,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;CACtF;AAED,+CAA+C;AAC/C,eAAO,MAAM,wBAAwB,YAAY,CAAC;AAmDlD;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,wBAAwB,GAAG,IAAI,EAC3C,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC7B,IAAI,EAAE,kBAAkB,GACvB,MAAM,CA4BR"}
@@ -0,0 +1,83 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createColorField, ownerOf } from '@endora-commerce/page-builder-core';
3
+ /** The one palette section this editor has. */
4
+ export const INVOICE_PALETTE_CATEGORY = 'invoice';
5
+ const noteStyle = {
6
+ fontFamily: 'system-ui, sans-serif',
7
+ fontSize: 12,
8
+ color: '#475569',
9
+ background: '#f8fafc',
10
+ border: '1px dashed #cbd5e1',
11
+ borderRadius: 4,
12
+ padding: '8px 10px',
13
+ margin: '6px 0',
14
+ };
15
+ function Note({ text }) {
16
+ return (_jsx("div", { role: "note", style: noteStyle, children: text }));
17
+ }
18
+ function puckField(field) {
19
+ if (field.type === 'color')
20
+ return createColorField({ label: field.label });
21
+ if (field.type === 'select' || field.type === 'radio') {
22
+ return { type: field.type, label: field.label, options: [...(field.options ?? [])] };
23
+ }
24
+ return { type: field.type, label: field.label };
25
+ }
26
+ function describedBlock(entry, text) {
27
+ const sentence = text.standIn({ label: entry.label, owner: entry.ownerModule });
28
+ const fields = {};
29
+ for (const [key, field] of Object.entries(entry.fields))
30
+ fields[key] = puckField(field);
31
+ return {
32
+ label: entry.label,
33
+ fields,
34
+ render: () => _jsx(Note, { text: sentence }),
35
+ };
36
+ }
37
+ function placeholderBlock(name, text) {
38
+ const sentence = text.placeholder({ owner: ownerOf(name), name });
39
+ // No fields and no defaults: Puck neither offers nor writes a prop, so every
40
+ // stored prop goes back through a save exactly as it came.
41
+ return {
42
+ label: name,
43
+ fields: {},
44
+ render: () => _jsx(Note, { text: sentence }),
45
+ };
46
+ }
47
+ /**
48
+ * `config` plus every present contributor's described block (insertable, in
49
+ * the invoice category) and a placeholder for every stored name neither covers
50
+ * (not in any category). `descriptor` is `null` when it could not be fetched:
51
+ * nothing is then described, and every stored unknown name is kept.
52
+ *
53
+ * Entries the local map already binds are left exactly as they are.
54
+ */
55
+ export function withDescribedInvoiceBlocks(config, descriptor, storedNames, text) {
56
+ const local = (config.components ?? {});
57
+ const components = { ...local };
58
+ const described = [];
59
+ for (const entry of descriptor?.components ?? []) {
60
+ if (entry.name in components)
61
+ continue;
62
+ components[entry.name] = describedBlock(entry, text);
63
+ described.push(entry.name);
64
+ }
65
+ for (const name of new Set(storedNames)) {
66
+ if (name in components)
67
+ continue;
68
+ components[name] = placeholderBlock(name, text);
69
+ }
70
+ const categories = { ...(config.categories ?? {}) };
71
+ const section = categories[INVOICE_PALETTE_CATEGORY];
72
+ if (described.length > 0) {
73
+ categories[INVOICE_PALETTE_CATEGORY] = {
74
+ ...section,
75
+ components: [...(section?.components ?? []), ...described],
76
+ };
77
+ }
78
+ // A placeholder belongs to no category, and Puck would otherwise list every
79
+ // uncategorised name under "Other" — which would make it insertable.
80
+ categories.other = { ...categories.other, visible: false };
81
+ return { ...config, components, categories };
82
+ }
83
+ //# sourceMappingURL=described-blocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"described-blocks.js","sourceRoot":"","sources":["../../../src/admin/templates/described-blocks.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Plugin } from '@measured/puck';
2
+ /** Invoice builder plugin — Outline like CMS/email, without viewport fields. */
3
+ export declare function createInvoiceBuilderEditorPlugin(): Plugin;
4
+ //# sourceMappingURL=invoice-builder-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoice-builder-plugin.d.ts","sourceRoot":"","sources":["../../../src/admin/templates/invoice-builder-plugin.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAG7C,gFAAgF;AAChF,wBAAgB,gCAAgC,IAAI,MAAM,CAQzD"}
@@ -0,0 +1,12 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { PageBuilderOutline } from '@endora-commerce/page-builder-core/editor';
4
+ /** Invoice builder plugin — Outline like CMS/email, without viewport fields. */
5
+ export function createInvoiceBuilderEditorPlugin() {
6
+ return {
7
+ overrides: {
8
+ outline: ({ children }) => (_jsx(PageBuilderOutline, { children: children })),
9
+ },
10
+ };
11
+ }
12
+ //# sourceMappingURL=invoice-builder-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoice-builder-plugin.js","sourceRoot":"","sources":["../../../src/admin/templates/invoice-builder-plugin.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAIb,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAE/E,gFAAgF;AAChF,MAAM,UAAU,gCAAgC;IAC9C,OAAO;QACL,SAAS,EAAE;YACT,OAAO,EAAE,CAAC,EAAE,QAAQ,EAA2B,EAAgB,EAAE,CAAC,CAChE,KAAC,kBAAkB,cAAE,QAAQ,GAAsB,CACpD;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { Config } from '@measured/puck';
2
+ /**
3
+ * The invoice renderer map — **the React half only**, keyed by namespaced block
4
+ * name (feature 096, T303; `contracts/block-definition.md` §4.3).
5
+ *
6
+ * **The `invoice` category is gone.** It is declared by `invoices` (with a
7
+ * `weight`, which is what makes `invoices` the namer) and jointly by `ksef`,
8
+ * and served merged by `GET /api/v1/admin/cms/page-builder/config`. Switching
9
+ * `invoices` off therefore leaves the section titled by `ksef`'s declaration
10
+ * with `ksef.InvoiceSection` still insertable — which a category list in this
11
+ * file could not express.
12
+ *
13
+ * **Every entry is this module's own.** A block another module declares is not
14
+ * bound here: its binding lives with its declarant, and no page-builder
15
+ * component contribution kind (α, F7's roadmap row) is built. The editor
16
+ * reaches such a block through the served descriptor instead —
17
+ * `withDescribedInvoiceBlocks` (`./described-blocks.tsx`,
18
+ * `specs/134-paid-module-extraction/` T138) makes a present contributor's block
19
+ * insertable and configurable with a neutral canvas stand-in, and keeps a stored
20
+ * block nothing covers as FR-019's placeholder. The PDF — the legal document —
21
+ * renders it through the contributor's registration on the backend.
22
+ */
23
+ export declare const invoicePuckConfig: Config;
24
+ /**
25
+ * The invoice palette's one section.
26
+ *
27
+ * **Derived from the renderer map rather than written out** (FR-008, SC-005):
28
+ * this file no longer holds a mapping from a category to a list of block names,
29
+ * which is what let a section list five of another module's blocks. The
30
+ * *authoritative* declarations are `invoices`' and `ksef`'s `blockCategories`,
31
+ * merged and presence-filtered by
32
+ * `GET /api/v1/admin/cms/page-builder/config`; this local derivation is what
33
+ * the editor renders until the invoice builder reads that descriptor, and it
34
+ * carries no name of its own.
35
+ */
36
+ export declare const invoicePuckPalette: NonNullable<Config['categories']>;
37
+ //# sourceMappingURL=invoice-puck-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoice-puck-config.d.ts","sourceRoot":"","sources":["../../../src/admin/templates/invoice-puck-config.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAmB,MAAM,gBAAgB,CAAC;AAujC9D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAa/B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAKhE,CAAC"}