@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.
- package/LICENSE +21 -0
- package/README.md +59 -2
- package/dist/admin/components/InvoiceSectionTabs.d.ts +22 -0
- package/dist/admin/components/InvoiceSectionTabs.d.ts.map +1 -0
- package/dist/admin/components/InvoiceSectionTabs.js +34 -0
- package/dist/admin/components/InvoiceSectionTabs.js.map +1 -0
- package/dist/admin/index.d.ts +34 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +69 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/pages/InvoiceDetail.d.ts +10 -0
- package/dist/admin/pages/InvoiceDetail.d.ts.map +1 -0
- package/dist/admin/pages/InvoiceDetail.js +111 -0
- package/dist/admin/pages/InvoiceDetail.js.map +1 -0
- package/dist/admin/pages/InvoiceTemplateEditor.d.ts +11 -0
- package/dist/admin/pages/InvoiceTemplateEditor.d.ts.map +1 -0
- package/dist/admin/pages/InvoiceTemplateEditor.js +188 -0
- package/dist/admin/pages/InvoiceTemplateEditor.js.map +1 -0
- package/dist/admin/pages/InvoiceTemplatesPage.d.ts +10 -0
- package/dist/admin/pages/InvoiceTemplatesPage.d.ts.map +1 -0
- package/dist/admin/pages/InvoiceTemplatesPage.js +60 -0
- package/dist/admin/pages/InvoiceTemplatesPage.js.map +1 -0
- package/dist/admin/pages/InvoicesList.d.ts +9 -0
- package/dist/admin/pages/InvoicesList.d.ts.map +1 -0
- package/dist/admin/pages/InvoicesList.js +116 -0
- package/dist/admin/pages/InvoicesList.js.map +1 -0
- package/dist/admin/templates/described-blocks.d.ts +67 -0
- package/dist/admin/templates/described-blocks.d.ts.map +1 -0
- package/dist/admin/templates/described-blocks.js +83 -0
- package/dist/admin/templates/described-blocks.js.map +1 -0
- package/dist/admin/templates/invoice-builder-plugin.d.ts +4 -0
- package/dist/admin/templates/invoice-builder-plugin.d.ts.map +1 -0
- package/dist/admin/templates/invoice-builder-plugin.js +12 -0
- package/dist/admin/templates/invoice-builder-plugin.js.map +1 -0
- package/dist/admin/templates/invoice-puck-config.d.ts +37 -0
- package/dist/admin/templates/invoice-puck-config.d.ts.map +1 -0
- package/dist/admin/templates/invoice-puck-config.js +733 -0
- package/dist/admin/templates/invoice-puck-config.js.map +1 -0
- package/dist/backend/email-templates/invoice-issued.default.d.ts +10 -0
- package/dist/backend/email-templates/invoice-issued.default.d.ts.map +1 -0
- package/dist/backend/email-templates/invoice-issued.default.js +45 -0
- package/dist/backend/email-templates/invoice-issued.default.js.map +1 -0
- package/dist/backend/entities/invoice-external-attachment.entity.d.ts +20 -0
- package/dist/backend/entities/invoice-external-attachment.entity.d.ts.map +1 -0
- package/dist/backend/entities/invoice-external-attachment.entity.js +77 -0
- package/dist/backend/entities/invoice-external-attachment.entity.js.map +1 -0
- package/dist/backend/entities/invoice-line.entity.d.ts +20 -0
- package/dist/backend/entities/invoice-line.entity.d.ts.map +1 -0
- package/dist/backend/entities/invoice-line.entity.js +82 -0
- package/dist/backend/entities/invoice-line.entity.js.map +1 -0
- package/dist/backend/entities/invoice-number-counter.entity.d.ts +18 -0
- package/dist/backend/entities/invoice-number-counter.entity.d.ts.map +1 -0
- package/dist/backend/entities/invoice-number-counter.entity.js +63 -0
- package/dist/backend/entities/invoice-number-counter.entity.js.map +1 -0
- package/dist/backend/entities/invoice-template.entity.d.ts +22 -0
- package/dist/backend/entities/invoice-template.entity.d.ts.map +1 -0
- package/dist/backend/entities/invoice-template.entity.js +84 -0
- package/dist/backend/entities/invoice-template.entity.js.map +1 -0
- package/dist/backend/entities/invoice.entity.d.ts +64 -0
- package/dist/backend/entities/invoice.entity.d.ts.map +1 -0
- package/dist/backend/entities/invoice.entity.js +202 -0
- package/dist/backend/entities/invoice.entity.js.map +1 -0
- package/dist/backend/index.d.ts +111 -0
- package/dist/backend/index.d.ts.map +1 -0
- package/dist/backend/index.js +291 -0
- package/dist/backend/index.js.map +1 -0
- package/dist/backend/pdf-components/descriptor.d.ts +29 -0
- package/dist/backend/pdf-components/descriptor.d.ts.map +1 -0
- package/dist/backend/pdf-components/descriptor.js +227 -0
- package/dist/backend/pdf-components/descriptor.js.map +1 -0
- package/dist/backend/pdf-components/embed-logo-images.d.ts +35 -0
- package/dist/backend/pdf-components/embed-logo-images.d.ts.map +1 -0
- package/dist/backend/pdf-components/embed-logo-images.js +101 -0
- package/dist/backend/pdf-components/embed-logo-images.js.map +1 -0
- package/dist/backend/pdf-components/sample.d.ts +4 -0
- package/dist/backend/pdf-components/sample.d.ts.map +1 -0
- package/dist/backend/pdf-components/sample.js +75 -0
- package/dist/backend/pdf-components/sample.js.map +1 -0
- package/dist/backend/pdf-components/sections.d.ts +34 -0
- package/dist/backend/pdf-components/sections.d.ts.map +1 -0
- package/dist/backend/pdf-components/sections.js +445 -0
- package/dist/backend/pdf-components/sections.js.map +1 -0
- package/dist/backend/pdf-components/tree-mapper.d.ts +37 -0
- package/dist/backend/pdf-components/tree-mapper.d.ts.map +1 -0
- package/dist/backend/pdf-components/tree-mapper.js +76 -0
- package/dist/backend/pdf-components/tree-mapper.js.map +1 -0
- package/dist/backend/plugin.d.ts +124 -0
- package/dist/backend/plugin.d.ts.map +1 -0
- package/dist/backend/plugin.js +87 -0
- package/dist/backend/plugin.js.map +1 -0
- package/dist/backend/routes.admin.d.ts +41 -0
- package/dist/backend/routes.admin.d.ts.map +1 -0
- package/dist/backend/routes.admin.js +219 -0
- package/dist/backend/routes.admin.js.map +1 -0
- package/dist/backend/routes.customer.d.ts +33 -0
- package/dist/backend/routes.customer.d.ts.map +1 -0
- package/dist/backend/routes.customer.js +124 -0
- package/dist/backend/routes.customer.js.map +1 -0
- package/dist/backend/seeds/generic-invoice-template.d.ts +18 -0
- package/dist/backend/seeds/generic-invoice-template.d.ts.map +1 -0
- package/dist/backend/seeds/generic-invoice-template.js +174 -0
- package/dist/backend/seeds/generic-invoice-template.js.map +1 -0
- package/dist/backend/services/amount-to-words.d.ts +20 -0
- package/dist/backend/services/amount-to-words.d.ts.map +1 -0
- package/dist/backend/services/amount-to-words.js +232 -0
- package/dist/backend/services/amount-to-words.js.map +1 -0
- package/dist/backend/services/auto-issue-reactor.d.ts +53 -0
- package/dist/backend/services/auto-issue-reactor.d.ts.map +1 -0
- package/dist/backend/services/auto-issue-reactor.js +122 -0
- package/dist/backend/services/auto-issue-reactor.js.map +1 -0
- package/dist/backend/services/corrective-invoice.d.ts +38 -0
- package/dist/backend/services/corrective-invoice.d.ts.map +1 -0
- package/dist/backend/services/corrective-invoice.js +257 -0
- package/dist/backend/services/corrective-invoice.js.map +1 -0
- package/dist/backend/services/cross-module-context.d.ts +82 -0
- package/dist/backend/services/cross-module-context.d.ts.map +1 -0
- package/dist/backend/services/cross-module-context.js +93 -0
- package/dist/backend/services/cross-module-context.js.map +1 -0
- package/dist/backend/services/duplicate-number-refusal.d.ts +33 -0
- package/dist/backend/services/duplicate-number-refusal.d.ts.map +1 -0
- package/dist/backend/services/duplicate-number-refusal.js +92 -0
- package/dist/backend/services/duplicate-number-refusal.js.map +1 -0
- package/dist/backend/services/erp-sale-document-write-port.d.ts +37 -0
- package/dist/backend/services/erp-sale-document-write-port.d.ts.map +1 -0
- package/dist/backend/services/erp-sale-document-write-port.js +192 -0
- package/dist/backend/services/erp-sale-document-write-port.js.map +1 -0
- package/dist/backend/services/invoice-attachment-fetch-registry.d.ts +75 -0
- package/dist/backend/services/invoice-attachment-fetch-registry.d.ts.map +1 -0
- package/dist/backend/services/invoice-attachment-fetch-registry.js +81 -0
- package/dist/backend/services/invoice-attachment-fetch-registry.js.map +1 -0
- package/dist/backend/services/invoice-copy-host.service.d.ts +9 -0
- package/dist/backend/services/invoice-copy-host.service.d.ts.map +1 -0
- package/dist/backend/services/invoice-copy-host.service.js +52 -0
- package/dist/backend/services/invoice-copy-host.service.js.map +1 -0
- package/dist/backend/services/invoice-email-dispatch.d.ts +89 -0
- package/dist/backend/services/invoice-email-dispatch.d.ts.map +1 -0
- package/dist/backend/services/invoice-email-dispatch.js +138 -0
- package/dist/backend/services/invoice-email-dispatch.js.map +1 -0
- package/dist/backend/services/invoice-line-builder.d.ts +29 -0
- package/dist/backend/services/invoice-line-builder.d.ts.map +1 -0
- package/dist/backend/services/invoice-line-builder.js +46 -0
- package/dist/backend/services/invoice-line-builder.js.map +1 -0
- package/dist/backend/services/invoice-number-collisions.d.ts +17 -0
- package/dist/backend/services/invoice-number-collisions.d.ts.map +1 -0
- package/dist/backend/services/invoice-number-collisions.js +154 -0
- package/dist/backend/services/invoice-number-collisions.js.map +1 -0
- package/dist/backend/services/invoice-number-generator.d.ts +96 -0
- package/dist/backend/services/invoice-number-generator.d.ts.map +1 -0
- package/dist/backend/services/invoice-number-generator.js +157 -0
- package/dist/backend/services/invoice-number-generator.js.map +1 -0
- package/dist/backend/services/invoice-pdf-block-registry.d.ts +65 -0
- package/dist/backend/services/invoice-pdf-block-registry.d.ts.map +1 -0
- package/dist/backend/services/invoice-pdf-block-registry.js +94 -0
- package/dist/backend/services/invoice-pdf-block-registry.js.map +1 -0
- package/dist/backend/services/invoice-pdf-renderer.d.ts +57 -0
- package/dist/backend/services/invoice-pdf-renderer.d.ts.map +1 -0
- package/dist/backend/services/invoice-pdf-renderer.js +158 -0
- package/dist/backend/services/invoice-pdf-renderer.js.map +1 -0
- package/dist/backend/services/invoice-pdf.d.ts +24 -0
- package/dist/backend/services/invoice-pdf.d.ts.map +1 -0
- package/dist/backend/services/invoice-pdf.js +52 -0
- package/dist/backend/services/invoice-pdf.js.map +1 -0
- package/dist/backend/services/invoice-placement-apply-port.d.ts +29 -0
- package/dist/backend/services/invoice-placement-apply-port.d.ts.map +1 -0
- package/dist/backend/services/invoice-placement-apply-port.js +40 -0
- package/dist/backend/services/invoice-placement-apply-port.js.map +1 -0
- package/dist/backend/services/invoice-read-port.d.ts +44 -0
- package/dist/backend/services/invoice-read-port.d.ts.map +1 -0
- package/dist/backend/services/invoice-read-port.js +95 -0
- package/dist/backend/services/invoice-read-port.js.map +1 -0
- package/dist/backend/services/invoice-service.d.ts +94 -0
- package/dist/backend/services/invoice-service.d.ts.map +1 -0
- package/dist/backend/services/invoice-service.js +374 -0
- package/dist/backend/services/invoice-service.js.map +1 -0
- package/dist/backend/services/invoice-template-service.d.ts +43 -0
- package/dist/backend/services/invoice-template-service.d.ts.map +1 -0
- package/dist/backend/services/invoice-template-service.js +147 -0
- package/dist/backend/services/invoice-template-service.js.map +1 -0
- package/dist/backend/services/numbering-configuration.d.ts +76 -0
- package/dist/backend/services/numbering-configuration.d.ts.map +1 -0
- package/dist/backend/services/numbering-configuration.js +176 -0
- package/dist/backend/services/numbering-configuration.js.map +1 -0
- package/dist/backend/services/numbering-write-validator.d.ts +22 -0
- package/dist/backend/services/numbering-write-validator.d.ts.map +1 -0
- package/dist/backend/services/numbering-write-validator.js +82 -0
- package/dist/backend/services/numbering-write-validator.js.map +1 -0
- package/dist/backend/services/seller-settings.d.ts +24 -0
- package/dist/backend/services/seller-settings.d.ts.map +1 -0
- package/dist/backend/services/seller-settings.js +38 -0
- package/dist/backend/services/seller-settings.js.map +1 -0
- package/dist/backend/services/vendor-number-hold.d.ts +10 -0
- package/dist/backend/services/vendor-number-hold.d.ts.map +1 -0
- package/dist/backend/services/vendor-number-hold.js +14 -0
- package/dist/backend/services/vendor-number-hold.js.map +1 -0
- package/dist/manifest.d.ts +203 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +390 -0
- package/dist/manifest.js.map +1 -0
- package/dist/migrations/20260629T125121_invoices_module.d.ts +17 -0
- package/dist/migrations/20260629T125121_invoices_module.d.ts.map +1 -0
- package/dist/migrations/20260629T125121_invoices_module.js +117 -0
- package/dist/migrations/20260629T125121_invoices_module.js.map +1 -0
- package/dist/migrations/20260801T111000_invoices_generic_template_reseed.d.ts +6 -0
- package/dist/migrations/20260801T111000_invoices_generic_template_reseed.d.ts.map +1 -0
- package/dist/migrations/20260801T111000_invoices_generic_template_reseed.js +25 -0
- package/dist/migrations/20260801T111000_invoices_generic_template_reseed.js.map +1 -0
- package/dist/migrations/20260817T201110_invoices_correction_idempotency_key.d.ts +20 -0
- package/dist/migrations/20260817T201110_invoices_correction_idempotency_key.d.ts.map +1 -0
- package/dist/migrations/20260817T201110_invoices_correction_idempotency_key.js +33 -0
- package/dist/migrations/20260817T201110_invoices_correction_idempotency_key.js.map +1 -0
- package/dist/migrations/20260903T101756_invoices_namespace_block_names.d.ts +6 -0
- package/dist/migrations/20260903T101756_invoices_namespace_block_names.d.ts.map +1 -0
- package/dist/migrations/20260903T101756_invoices_namespace_block_names.js +56 -0
- package/dist/migrations/20260903T101756_invoices_namespace_block_names.js.map +1 -0
- package/dist/migrations/20260914T133603_invoices_erp_imported_sale_documents.d.ts +12 -0
- package/dist/migrations/20260914T133603_invoices_erp_imported_sale_documents.d.ts.map +1 -0
- package/dist/migrations/20260914T133603_invoices_erp_imported_sale_documents.js +87 -0
- package/dist/migrations/20260914T133603_invoices_erp_imported_sale_documents.js.map +1 -0
- package/dist/migrations/20260926T230239_invoices_import_identity.d.ts +33 -0
- package/dist/migrations/20260926T230239_invoices_import_identity.d.ts.map +1 -0
- package/dist/migrations/20260926T230239_invoices_import_identity.js +83 -0
- package/dist/migrations/20260926T230239_invoices_import_identity.js.map +1 -0
- package/dist/migrations/index.d.ts +32 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +39 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/ports/index.d.ts +93 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +2 -0
- package/dist/ports/index.js.map +1 -0
- package/docs/invoices.md +113 -0
- package/i18n/en.json +45 -0
- package/i18n/pl.json +45 -0
- package/package.json +119 -3
- 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 @@
|
|
|
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"}
|